{ 'variables': { 'version_py': '../../chrome/tools/build/version.py', 'version_path': '../../chrome/VERSION', 'lastchange_path': '<(DEPTH)/build/util/LASTCHANGE', # 'branding_dir' is set in the 'conditions' section at the bottom. 'msvs_use_common_release': 0, 'msvs_use_common_linker_extras': 0, 'mini_installer_internal_deps%': 0, 'mini_installer_official_deps%': 0, }, 'includes': [ '../../build/win_precompile.gypi', ], 'conditions': [ ['OS=="win"', { 'targets': [ { 'target_name': 'mini_installer', 'type': 'executable', 'dependencies': [ '../chrome.gyp:chrome', '../chrome.gyp:chrome_nacl_win64', '../chrome.gyp:chrome_dll', '../chrome.gyp:default_extensions', '../chrome.gyp:setup', ], 'include_dirs': [ '../..', '<(INTERMEDIATE_DIR)', '<(SHARED_INTERMEDIATE_DIR)/chrome', ], 'sources': [ 'mini_installer/appid.h', 'mini_installer/chrome.release', 'mini_installer/chrome_appid.cc', 'mini_installer/configuration.cc', 'mini_installer/configuration.h', 'mini_installer/decompress.cc', 'mini_installer/decompress.h', 'mini_installer/mini_installer.cc', 'mini_installer/mini_installer.h', 'mini_installer/mini_installer.ico', 'mini_installer/mini_installer.rc', 'mini_installer/mini_installer_exe_version.rc.version', 'mini_installer/mini_installer_resource.h', 'mini_installer/mini_string.cc', 'mini_installer/mini_string.h', 'mini_installer/pe_resource.cc', 'mini_installer/pe_resource.h', '<(INTERMEDIATE_DIR)/packed_files.rc', ], 'msvs_settings': { 'VCCLCompilerTool': { 'EnableIntrinsicFunctions': 'true', 'BufferSecurityCheck': 'false', 'BasicRuntimeChecks': '0', 'ExceptionHandling': '0', }, 'VCLinkerTool': { 'RandomizedBaseAddress': '1', 'DataExecutionPrevention': '0', 'AdditionalLibraryDirectories': [ '<(PRODUCT_DIR)/lib' ], 'DelayLoadDLLs': [], 'EntryPointSymbol': 'MainEntryPoint', 'IgnoreAllDefaultLibraries': 'true', 'OptimizeForWindows98': '1', 'SubSystem': '2', # Set /SUBSYSTEM:WINDOWS 'AdditionalDependencies': [ 'shlwapi.lib', 'setupapi.lib', ], }, 'VCManifestTool': { 'AdditionalManifestFiles': [ '$(ProjectDir)\\mini_installer\\mini_installer.exe.manifest', ], }, }, 'configurations': { 'Debug_Base': { 'msvs_settings': { 'VCCLCompilerTool': { 'BasicRuntimeChecks': '0', 'BufferSecurityCheck': 'false', 'ExceptionHandling': '0', }, 'VCLinkerTool': { 'SubSystem': '2', # Set /SUBSYSTEM:WINDOWS 'AdditionalOptions': [ '/safeseh:no', '/dynamicbase:no', '/ignore:4199', '/ignore:4221', '/nxcompat', ], }, }, }, 'Release_Base': { 'includes': ['../../build/internal/release_defaults.gypi'], 'msvs_settings': { 'VCCLCompilerTool': { 'EnableIntrinsicFunctions': 'true', 'BasicRuntimeChecks': '0', 'BufferSecurityCheck': 'false', 'ExceptionHandling': '0', }, 'VCLinkerTool': { 'SubSystem': '2', # Set /SUBSYSTEM:WINDOWS 'Profile': 'false', # Conflicts with /FIXED 'AdditionalOptions': [ '/SAFESEH:NO', '/NXCOMPAT', '/DYNAMICBASE:NO', '/FIXED', ], }, }, }, }, # Disable precompiled headers for this project, to avoid # linker errors when building with VS 2008. 'msvs_precompiled_header': '', 'msvs_precompiled_source': '', # TODO(jschuh): crbug.com/167187 fix size_t to int truncations. 'msvs_disabled_warnings': [ 4267, ], 'variables': { # Opt out the common compatibility manifest to work around # crbug.com/272660. # TODO(yukawa): Enable the common compatibility manifest again. 'win_exe_compatibility_manifest': '', }, 'rules': [ { 'rule_name': 'mini_installer_version', 'extension': 'version', 'variables': { 'template_input_path': 'mini_installer/mini_installer_exe_version.rc.version', }, 'inputs': [ '<(template_input_path)', '<(version_path)', '<(lastchange_path)', '<(branding_dir)/BRANDING', ], 'outputs': [ '<(PRODUCT_DIR)/mini_installer_exe_version.rc', ], 'action': [ 'python', '<(version_py)', '-f', '<(version_path)', '-f', '<(lastchange_path)', '-f', '<(branding_dir)/BRANDING', '<(template_input_path)', '<@(_outputs)', ], 'process_outputs_as_sources': 1, 'message': 'Generating version information' }, { 'rule_name': 'installer_archive', 'extension': 'release', 'variables': { 'create_installer_archive_py_path': '../tools/build/win/create_installer_archive.py', }, 'conditions': [ ['enable_hidpi == 1', { 'variables': { 'enable_hidpi_flag': '--enable_hidpi=1', }, }, { 'variables': { 'enable_hidpi_flag': '', }, }], ['component == "shared_library"', { 'variables': { 'component_build_flag': '--component_build=1', }, }, { 'variables': { 'component_build_flag': '', }, 'outputs': [ '<(PRODUCT_DIR)/<(RULE_INPUT_NAME).packed.7z', ], }], ['disable_nacl==1', { 'inputs!': [ '<(PRODUCT_DIR)/nacl64.exe', '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll', '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe', '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe', ], }], ['target_arch=="x64"', { 'inputs!': [ '<(PRODUCT_DIR)/nacl64.exe', '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe', ], 'variables': { 'target_arch_flag': '--target_arch=x64', }, }, { 'variables': { 'target_arch_flag': '--target_arch=x86', }, }], ['icu_use_data_file_flag == 0', { 'inputs': [ '<(PRODUCT_DIR)/icudt.dll', ], }, { # else icu_use_data_file_flag != 0 'inputs': [ '<(PRODUCT_DIR)/icudtl.dat', ], }], ], 'inputs': [ '<(create_installer_archive_py_path)', '<(PRODUCT_DIR)/chrome.exe', '<(PRODUCT_DIR)/chrome.dll', '<(PRODUCT_DIR)/nacl64.exe', '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll', '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe', '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe', '<(PRODUCT_DIR)/locales/en-US.pak', ], 'outputs': [ # Also note that chrome.packed.7z is defined as an output in a # conditional above. 'xxx2.out', '<(PRODUCT_DIR)/<(RULE_INPUT_NAME).7z', '<(PRODUCT_DIR)/setup.ex_', '<(INTERMEDIATE_DIR)/packed_files.rc', ], 'action': [ 'python', '<(create_installer_archive_py_path)', '--build_dir', '<(PRODUCT_DIR)', '--staging_dir', '<(INTERMEDIATE_DIR)', '--input_file', '<(RULE_INPUT_PATH)', '--resource_file_path', '<(INTERMEDIATE_DIR)/packed_files.rc', '<(enable_hidpi_flag)', '<(component_build_flag)', '<(target_arch_flag)', # TODO(sgk): may just use environment variables #'--distribution=$(CHROMIUM_BUILD)', '--distribution=_google_chrome', # Optional arguments to generate diff installer #'--last_chrome_installer=C:/Temp/base', #'--setup_exe_format=DIFF', #'--diff_algorithm=COURGETTE', ], 'message': 'Create installer archive', }, ], # TODO(mark): <(branding_dir) should be defined by the # global condition block at the bottom of the file, but # this doesn't work due to the following issue: # # http://code.google.com/p/gyp/issues/detail?id=22 # # Remove this block once the above issue is fixed. 'conditions': [ [ 'branding == "Chrome"', { 'variables': { 'branding_dir': '../app/theme/google_chrome', }, }, { # else branding!="Chrome" 'variables': { 'branding_dir': '../app/theme/chromium', }, }], ], }, ], 'conditions': [ ['test_isolation_mode != "noop"', { 'targets': [ { 'target_name': 'mini_installer_tests_run', 'type': 'none', 'dependencies': [ 'mini_installer', ], 'includes': [ '../../build/isolate.gypi', 'mini_installer_tests.isolate', ], 'sources': [ 'mini_installer_tests.isolate', ], }, ], }], ], }], [ 'branding == "Chrome"', { 'variables': { 'branding_dir': '../app/theme/google_chrome', }, }, { # else branding!="Chrome" 'variables': { 'branding_dir': '../app/theme/chromium', }, }], ], }