Home | History | Annotate | Download | only in installer
      1 {
      2   'variables': {
      3     'version_py': '../../chrome/tools/build/version.py',
      4     'version_path': '../../chrome/VERSION',
      5     'lastchange_path': '<(DEPTH)/build/util/LASTCHANGE',
      6     # 'branding_dir' is set in the 'conditions' section at the bottom.
      7     'msvs_use_common_release': 0,
      8     'msvs_use_common_linker_extras': 0,
      9     'mini_installer_internal_deps%': 0,
     10     'mini_installer_official_deps%': 0,
     11   },
     12   'includes': [
     13     '../../build/win_precompile.gypi',
     14   ],
     15   'conditions': [
     16     ['OS=="win"', {
     17       'targets': [
     18         {
     19           'target_name': 'mini_installer',
     20           'type': 'executable',
     21 
     22           'dependencies': [
     23             '../chrome.gyp:chrome',
     24             '../chrome.gyp:chrome_nacl_win64',
     25             '../chrome.gyp:chrome_dll',
     26             '../chrome.gyp:default_extensions',
     27             '../chrome.gyp:setup',
     28           ],
     29           'include_dirs': [
     30             '../..',
     31             '<(INTERMEDIATE_DIR)',
     32             '<(SHARED_INTERMEDIATE_DIR)/chrome',
     33           ],
     34           'sources': [
     35             'mini_installer/appid.h',
     36             'mini_installer/chrome.release',
     37             'mini_installer/chrome_appid.cc',
     38             'mini_installer/configuration.cc',
     39             'mini_installer/configuration.h',
     40             'mini_installer/decompress.cc',
     41             'mini_installer/decompress.h',
     42             'mini_installer/mini_installer.cc',
     43             'mini_installer/mini_installer.h',
     44             'mini_installer/mini_installer.ico',
     45             'mini_installer/mini_installer.rc',
     46             'mini_installer/mini_installer_exe_version.rc.version',
     47             'mini_installer/mini_installer_resource.h',
     48             'mini_installer/mini_string.cc',
     49             'mini_installer/mini_string.h',
     50             'mini_installer/pe_resource.cc',
     51             'mini_installer/pe_resource.h',
     52             '<(INTERMEDIATE_DIR)/packed_files.rc',
     53           ],
     54           'msvs_settings': {
     55             'VCCLCompilerTool': {
     56               'EnableIntrinsicFunctions': 'true',
     57               'BufferSecurityCheck': 'false',
     58               'BasicRuntimeChecks': '0',
     59               'ExceptionHandling': '0',
     60             },
     61             'VCLinkerTool': {
     62               'RandomizedBaseAddress': '1',
     63               'DataExecutionPrevention': '0',
     64               'AdditionalLibraryDirectories': [
     65                 '<(PRODUCT_DIR)/lib'
     66               ],
     67               'DelayLoadDLLs': [],
     68               'EntryPointSymbol': 'MainEntryPoint',
     69               'IgnoreAllDefaultLibraries': 'true',
     70               'OptimizeForWindows98': '1',
     71               'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
     72               'AdditionalDependencies': [
     73                 'shlwapi.lib',
     74                 'setupapi.lib',
     75               ],
     76             },
     77             'VCManifestTool': {
     78               'AdditionalManifestFiles': [
     79                 '$(ProjectDir)\\mini_installer\\mini_installer.exe.manifest',
     80               ],
     81             },
     82           },
     83           'configurations': {
     84             'Debug_Base': {
     85               'msvs_settings': {
     86                 'VCCLCompilerTool': {
     87                   'BasicRuntimeChecks': '0',
     88                   'BufferSecurityCheck': 'false',
     89                   'ExceptionHandling': '0',
     90                 },
     91                 'VCLinkerTool': {
     92                   'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
     93                   'AdditionalOptions': [
     94                     '/safeseh:no',
     95                     '/dynamicbase:no',
     96                     '/ignore:4199',
     97                     '/ignore:4221',
     98                     '/nxcompat',
     99                   ],
    100                 },
    101               },
    102             },
    103             'Release_Base': {
    104               'includes': ['../../build/internal/release_defaults.gypi'],
    105               'msvs_settings': {
    106                 'VCCLCompilerTool': {
    107                   'EnableIntrinsicFunctions': 'true',
    108                   'BasicRuntimeChecks': '0',
    109                   'BufferSecurityCheck': 'false',
    110                   'ExceptionHandling': '0',
    111                 },
    112                 'VCLinkerTool': {
    113                   'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
    114                   'Profile': 'false',   # Conflicts with /FIXED
    115                   'AdditionalOptions': [
    116                     '/SAFESEH:NO',
    117                     '/NXCOMPAT',
    118                     '/DYNAMICBASE:NO',
    119                     '/FIXED',
    120                   ],
    121                 },
    122               },
    123             },
    124           },
    125 
    126           # Disable precompiled headers for this project, to avoid
    127           # linker errors when building with VS 2008.
    128           'msvs_precompiled_header': '',
    129           'msvs_precompiled_source': '',
    130 
    131           # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    132           'msvs_disabled_warnings': [ 4267, ],
    133 
    134           'variables': {
    135             # Opt out the common compatibility manifest to work around
    136             # crbug.com/272660.
    137             # TODO(yukawa): Enable the common compatibility manifest again.
    138             'win_exe_compatibility_manifest': '',
    139           },
    140           'rules': [
    141             {
    142               'rule_name': 'mini_installer_version',
    143               'extension': 'version',
    144               'variables': {
    145                 'template_input_path': 'mini_installer/mini_installer_exe_version.rc.version',
    146               },
    147               'inputs': [
    148                 '<(template_input_path)',
    149                 '<(version_path)',
    150                 '<(lastchange_path)',
    151                 '<(branding_dir)/BRANDING',
    152               ],
    153               'outputs': [
    154                 '<(PRODUCT_DIR)/mini_installer_exe_version.rc',
    155               ],
    156               'action': [
    157                 'python', '<(version_py)',
    158                 '-f', '<(version_path)',
    159                 '-f', '<(lastchange_path)',
    160                 '-f', '<(branding_dir)/BRANDING',
    161                 '<(template_input_path)',
    162                 '<@(_outputs)',
    163               ],
    164               'process_outputs_as_sources': 1,
    165               'message': 'Generating version information'
    166             },
    167             {
    168               'rule_name': 'installer_archive',
    169               'extension': 'release',
    170               'variables': {
    171                 'create_installer_archive_py_path':
    172                   '../tools/build/win/create_installer_archive.py',
    173               },
    174               'conditions': [
    175                 ['enable_hidpi == 1', {
    176                   'variables': {
    177                     'enable_hidpi_flag': '--enable_hidpi=1',
    178                   },
    179                 }, {
    180                   'variables': {
    181                     'enable_hidpi_flag': '',
    182                   },
    183                 }],
    184                 ['enable_touch_ui == 1', {
    185                   'variables': {
    186                     'enable_touch_ui_flag': '--enable_touch_ui=1',
    187                   },
    188                 }, {
    189                   'variables': {
    190                     'enable_touch_ui_flag': '',
    191                   },
    192                 }],
    193                 ['component == "shared_library"', {
    194                   'variables': {
    195                     'component_build_flag': '--component_build=1',
    196                   },
    197                 }, {
    198                   'variables': {
    199                     'component_build_flag': '',
    200                   },
    201                   'outputs': [
    202                     '<(PRODUCT_DIR)/<(RULE_INPUT_NAME).packed.7z',
    203                   ],
    204                 }],
    205                 ['disable_nacl==1', {
    206                   'inputs!': [
    207                     '<(PRODUCT_DIR)/nacl64.exe',
    208                     '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll',
    209                     '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
    210                     '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
    211                   ],
    212                 }],
    213                 ['target_arch=="x64"', {
    214                   'inputs!': [
    215                     '<(PRODUCT_DIR)/nacl64.exe',
    216                     '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
    217                   ],
    218                   'variables': {
    219                     'target_arch_flag': '--target_arch=x64',
    220                   },
    221                 }, {
    222                   'variables': {
    223                     'target_arch_flag': '--target_arch=x86',
    224                   },
    225                 }],
    226               ],
    227               'inputs': [
    228                 '<(create_installer_archive_py_path)',
    229                 '<(PRODUCT_DIR)/chrome.exe',
    230                 '<(PRODUCT_DIR)/chrome.dll',
    231                 '<(PRODUCT_DIR)/nacl64.exe',
    232                 '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll',
    233                 '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
    234                 '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
    235                 '<(PRODUCT_DIR)/locales/en-US.pak',
    236                 '<(PRODUCT_DIR)/icudt.dll',
    237               ],
    238               'outputs': [
    239                 # Also note that chrome.packed.7z is defined as an output in a
    240                 # conditional above.
    241                 'xxx2.out',
    242                 '<(PRODUCT_DIR)/<(RULE_INPUT_NAME).7z',
    243                 '<(PRODUCT_DIR)/setup.ex_',
    244                 '<(INTERMEDIATE_DIR)/packed_files.rc',
    245               ],
    246               'action': [
    247                 'python',
    248                 '<(create_installer_archive_py_path)',
    249                 '--build_dir', '<(PRODUCT_DIR)',
    250                 '--staging_dir', '<(INTERMEDIATE_DIR)',
    251                 '--input_file', '<(RULE_INPUT_PATH)',
    252                 '--resource_file_path', '<(INTERMEDIATE_DIR)/packed_files.rc',
    253                 '<(enable_hidpi_flag)',
    254                 '<(enable_touch_ui_flag)',
    255                 '<(component_build_flag)',
    256                 '<(target_arch_flag)',
    257                 # TODO(sgk):  may just use environment variables
    258                 #'--distribution=$(CHROMIUM_BUILD)',
    259                 '--distribution=_google_chrome',
    260                 # Optional arguments to generate diff installer
    261                 #'--last_chrome_installer=C:/Temp/base',
    262                 #'--setup_exe_format=DIFF',
    263                 #'--diff_algorithm=COURGETTE',
    264               ],
    265               'message': 'Create installer archive',
    266               'msvs_cygwin_shell': 1,
    267             },
    268           ],
    269           # TODO(mark):  <(branding_dir) should be defined by the
    270           # global condition block at the bottom of the file, but
    271           # this doesn't work due to the following issue:
    272           #
    273           #   http://code.google.com/p/gyp/issues/detail?id=22
    274           #
    275           # Remove this block once the above issue is fixed.
    276           'conditions': [
    277             [ 'branding == "Chrome"', {
    278               'variables': {
    279                  'branding_dir': '../app/theme/google_chrome',
    280               },
    281             }, { # else branding!="Chrome"
    282               'variables': {
    283                  'branding_dir': '../app/theme/chromium',
    284               },
    285             }],
    286           ],
    287         },
    288       ],
    289       'conditions': [
    290         ['test_isolation_mode != "noop"', {
    291           'targets': [
    292             {
    293               'target_name': 'mini_installer_tests_run',
    294               'type': 'none',
    295               'dependencies': [
    296                 'mini_installer',
    297               ],
    298               'includes': [
    299                 '../../build/isolate.gypi',
    300                 'mini_installer_tests.isolate',
    301               ],
    302               'sources': [
    303                 'mini_installer_tests.isolate',
    304               ],
    305             },
    306           ],
    307         }],
    308       ],
    309     }],
    310     [ 'branding == "Chrome"', {
    311       'variables': {
    312          'branding_dir': '../app/theme/google_chrome',
    313       },
    314     }, { # else branding!="Chrome"
    315       'variables': {
    316          'branding_dir': '../app/theme/chromium',
    317       },
    318     }],
    319   ],
    320 }
    321