Home | History | Annotate | Download | only in chrome
      1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 # Use of this source code is governed by a BSD-style license that can be
      3 # found in the LICENSE file.
      4 
      5 {
      6   'variables': {
      7     'lastchange_path': '../build/util/LASTCHANGE',
      8     'libpeer_target_type%': 'static_library',
      9     # 'branding_dir' is set in the 'conditions' section at the bottom.
     10   },
     11   'conditions': [
     12     ['OS=="win"', {
     13       'targets': [
     14         {
     15           'target_name': 'gcapi_dll',
     16           'type': 'loadable_module',
     17           'dependencies': [
     18             'gcapi_lib',
     19           ],
     20           'include_dirs': [
     21             '..',
     22           ],
     23           'sources': [
     24             'installer/gcapi/gcapi.def',
     25             'installer/gcapi/gcapi_dll.cc',
     26           ],
     27         },
     28         {
     29           'target_name': 'gcapi_lib',
     30           'type': 'static_library',
     31           'dependencies': [
     32             'installer_util',
     33             '../base/base.gyp:base',
     34             '../chrome/chrome.gyp:launcher_support',
     35             '../google_update/google_update.gyp:google_update',
     36           ],
     37           'include_dirs': [
     38             '..',
     39           ],
     40           'sources': [
     41             'installer/gcapi/gcapi.cc',
     42             'installer/gcapi/gcapi.h',
     43             'installer/gcapi/gcapi_omaha_experiment.cc',
     44             'installer/gcapi/gcapi_omaha_experiment.h',
     45             'installer/gcapi/gcapi_reactivation.cc',
     46             'installer/gcapi/gcapi_reactivation.h',
     47           ],
     48           # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
     49           'msvs_disabled_warnings': [ 4267, ],
     50         },
     51         {
     52           'target_name': 'gcapi_test',
     53           'type': 'executable',
     54           'dependencies': [
     55             'common',
     56             'gcapi_dll',
     57             'gcapi_lib',
     58             'installer_util',
     59             '../base/base.gyp:base',
     60             '../base/base.gyp:test_support_base',
     61             '../testing/gtest.gyp:gtest',
     62           ],
     63           'include_dirs': [
     64             '..',
     65           ],
     66           'sources': [
     67             'installer/gcapi/gcapi_last_run_test.cc',
     68             'installer/gcapi/gcapi_omaha_experiment_test.cc',
     69             'installer/gcapi/gcapi_reactivation_test.cc',
     70             'installer/gcapi/gcapi_test_registry_overrider.cc',
     71             'installer/gcapi/gcapi_test_registry_overrider.h',
     72             'installer/gcapi/gcapi_test.cc',
     73             'installer/gcapi/gcapi_test.rc',
     74             'installer/gcapi/resource.h',
     75           ],
     76         },
     77         {
     78           'target_name': 'installer_util_unittests',
     79           'type': 'executable',
     80           'dependencies': [
     81             'installer_util',
     82             'installer_util_strings',
     83             'installer/upgrade_test.gyp:alternate_version_generator_lib',
     84             '../base/base.gyp:base',
     85             '../base/base.gyp:base_i18n',
     86             '../base/base.gyp:test_support_base',
     87             '../chrome/chrome.gyp:chrome_version_resources',
     88             '../content/content.gyp:content_common',
     89             '../testing/gmock.gyp:gmock',
     90             '../testing/gtest.gyp:gtest',
     91           ],
     92           'include_dirs': [
     93             '..',
     94           ],
     95           'sources': [
     96             'installer/setup/compat_checks_unittest.cc',
     97             'installer/setup/setup_constants.cc',
     98             'installer/util/advanced_firewall_manager_win_unittest.cc',
     99             'installer/util/callback_work_item_unittest.cc',
    100             'installer/util/channel_info_unittest.cc',
    101             'installer/util/copy_tree_work_item_unittest.cc',
    102             'installer/util/create_dir_work_item_unittest.cc',
    103             'installer/util/create_reg_key_work_item_unittest.cc',
    104             'installer/util/delete_after_reboot_helper_unittest.cc',
    105             'installer/util/delete_reg_key_work_item_unittest.cc',
    106             'installer/util/delete_reg_value_work_item_unittest.cc',
    107             'installer/util/delete_tree_work_item_unittest.cc',
    108             'installer/util/duplicate_tree_detector_unittest.cc',
    109             'installer/util/fake_installation_state.h',
    110             'installer/util/fake_product_state.h',
    111             'installer/util/google_update_settings_unittest.cc',
    112             'installer/util/install_util_unittest.cc',
    113             'installer/util/installation_validation_helper.cc',
    114             'installer/util/installation_validation_helper.h',
    115             'installer/util/installation_validator_unittest.cc',
    116             'installer/util/installer_state_unittest.cc',
    117             'installer/util/installer_util_test_common.cc',
    118             'installer/util/installer_util_test_common.h',
    119             'installer/util/installer_util_unittests.rc',
    120             'installer/util/installer_util_unittests_resource.h',
    121             'installer/util/language_selector_unittest.cc',
    122             'installer/util/legacy_firewall_manager_win_unittest.cc',
    123             'installer/util/logging_installer_unittest.cc',
    124             'installer/util/lzma_util_unittest.cc',
    125             'installer/util/master_preferences_unittest.cc',
    126             'installer/util/move_tree_work_item_unittest.cc',
    127             'installer/util/product_state_unittest.cc',
    128             'installer/util/product_unittest.cc',
    129             'installer/util/product_unittest.h',
    130             'installer/util/registry_key_backup_unittest.cc',
    131             'installer/util/registry_test_data.cc',
    132             'installer/util/registry_test_data.h',
    133             'installer/util/run_all_unittests.cc',
    134             'installer/util/self_cleaning_temp_dir_unittest.cc',
    135             'installer/util/set_reg_value_work_item_unittest.cc',
    136             'installer/util/shell_util_unittest.cc',
    137             'installer/util/uninstall_metrics_unittest.cc',
    138             'installer/util/wmi_unittest.cc',
    139             'installer/util/work_item_list_unittest.cc',
    140             '<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
    141           ],
    142           'msvs_settings': {
    143             'VCManifestTool': {
    144               'AdditionalManifestFiles': [
    145                 '$(ProjectDir)\\installer\\mini_installer\\mini_installer.exe.manifest',
    146               ],
    147             },
    148           },
    149           # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    150           'msvs_disabled_warnings': [ 4267, ],
    151         },
    152         {
    153           # GN version: //chrome/installer/util:strings
    154           'target_name': 'installer_util_strings',
    155           'type': 'none',
    156           'actions': [
    157             {
    158               'action_name': 'installer_util_strings',
    159               'variables': {
    160                 'create_string_rc_py': 'installer/util/prebuild/create_string_rc.py',
    161               },
    162               'conditions': [
    163                 ['branding=="Chrome"', {
    164                   'variables': {
    165                     'brand_strings': 'google_chrome_strings',
    166                   },
    167                 }, {
    168                   'variables': {
    169                     'brand_strings': 'chromium_strings',
    170                   },
    171                 }],
    172               ],
    173               'inputs': [
    174                 '<(create_string_rc_py)',
    175                 'app/<(brand_strings).grd',
    176               ],
    177               'outputs': [
    178                 '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings/installer_util_strings.h',
    179                 '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings/installer_util_strings.rc',
    180               ],
    181               'action': ['python',
    182                          '<(create_string_rc_py)',
    183                          '-i', 'app/<(brand_strings).grd:resources',
    184                          '-n', 'installer_util_strings',
    185                          '-o', '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings',],
    186               'message': 'Generating installer_util_strings',
    187             },
    188           ],
    189           'direct_dependent_settings': {
    190             'include_dirs': [
    191               '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings',
    192             ],
    193           },
    194         },
    195         {
    196           'target_name': 'launcher_support',
    197           'type': 'static_library',
    198           'include_dirs': [
    199             '..',
    200           ],
    201           'direct_dependent_settings': {
    202             'include_dirs': [
    203               '..',
    204             ],
    205           },
    206           'dependencies': [
    207             '<(DEPTH)/base/base.gyp:base',
    208           ],
    209           'sources': [
    210             'installer/launcher_support/chrome_launcher_support.cc',
    211             'installer/launcher_support/chrome_launcher_support.h',
    212           ],
    213         },
    214         {
    215           'target_name': 'setup',
    216           'type': 'executable',
    217           'dependencies': [
    218             'installer_util',
    219             'installer_util_strings',
    220             '../base/base.gyp:base',
    221             '../breakpad/breakpad.gyp:breakpad_handler',
    222             '../chrome/common_constants.gyp:common_constants',
    223             '../chrome_elf/chrome_elf.gyp:chrome_elf_constants',
    224             '../rlz/rlz.gyp:rlz_lib',
    225             '../third_party/zlib/zlib.gyp:zlib',
    226           ],
    227           'include_dirs': [
    228             '..',
    229             '<(INTERMEDIATE_DIR)',
    230             '<(SHARED_INTERMEDIATE_DIR)/setup',
    231           ],
    232           'direct_dependent_settings': {
    233             'include_dirs': [
    234               '<(SHARED_INTERMEDIATE_DIR)/setup',
    235             ],
    236           },
    237           'sources': [
    238             '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings/installer_util_strings.rc',
    239             'installer/mini_installer/chrome.release',
    240             'installer/setup/archive_patch_helper.cc',
    241             'installer/setup/archive_patch_helper.h',
    242             'installer/setup/install.cc',
    243             'installer/setup/install.h',
    244             'installer/setup/install_worker.cc',
    245             'installer/setup/install_worker.h',
    246             'installer/setup/setup_main.cc',
    247             'installer/setup/setup_main.h',
    248             'installer/setup/setup.ico',
    249             'installer/setup/setup.rc',
    250             'installer/setup/setup_constants.cc',
    251             'installer/setup/setup_constants.h',
    252             'installer/setup/setup_exe_version.rc.version',
    253             'installer/setup/setup_resource.h',
    254             'installer/setup/setup_util.cc',
    255             'installer/setup/setup_util.h',
    256             'installer/setup/uninstall.cc',
    257             'installer/setup/uninstall.h',
    258           ],
    259           'msvs_settings': {
    260             'VCLinkerTool': {
    261               'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
    262             },
    263             'VCManifestTool': {
    264               'AdditionalManifestFiles': [
    265                 '$(ProjectDir)\\installer\\setup\\setup.exe.manifest',
    266               ],
    267             },
    268           },
    269           # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    270           'msvs_disabled_warnings': [ 4267, ],
    271           'rules': [
    272             {
    273               'rule_name': 'setup_version',
    274               'extension': 'version',
    275               'variables': {
    276                 'version_py_path': '<(DEPTH)/build/util/version.py',
    277                 'template_input_path': 'installer/setup/setup_exe_version.rc.version',
    278               },
    279               'inputs': [
    280                 '<(template_input_path)',
    281                 '<(version_path)',
    282                 '<(lastchange_path)',
    283                 '<(branding_dir)/BRANDING',
    284               ],
    285               'outputs': [
    286                 '<(SHARED_INTERMEDIATE_DIR)/setup/setup_exe_version.rc',
    287               ],
    288               'action': [
    289                 'python', '<(version_py_path)',
    290                 '-f', '<(version_path)',
    291                 '-f', '<(lastchange_path)',
    292                 '-f', '<(branding_dir)/BRANDING',
    293                 '<(template_input_path)',
    294                 '<@(_outputs)',
    295               ],
    296               'process_outputs_as_sources': 1,
    297               'message': 'Generating version information'
    298             },
    299           ],
    300           'conditions': [
    301             # TODO(mark):  <(branding_dir) should be defined by the
    302             # global condition block at the bottom of the file, but
    303             # this doesn't work due to the following issue:
    304             #
    305             #   http://code.google.com/p/gyp/issues/detail?id=22
    306             #
    307             # Remove this block once the above issue is fixed.
    308             [ 'branding == "Chrome"', {
    309               'variables': {
    310                  'branding_dir': 'app/theme/google_chrome',
    311                  'branding_dir_100': 'app/theme/default_100_percent/google_chrome',
    312               },
    313             }, { # else branding!="Chrome"
    314               'variables': {
    315                  'branding_dir': 'app/theme/chromium',
    316                  'branding_dir_100': 'app/theme/default_100_percent/chromium',
    317               },
    318             }],
    319             ['target_arch=="ia32"', {
    320               'msvs_settings': {
    321                 'VCCLCompilerTool': {
    322                   'EnableEnhancedInstructionSet': '4',  # NoExtensions
    323                 },
    324               },
    325             }],
    326           ],
    327         },
    328         {
    329           'target_name': 'setup_unittests',
    330           'type': 'executable',
    331           'dependencies': [
    332             'installer_util',
    333             'installer_util_strings',
    334             '../base/base.gyp:base',
    335             '../base/base.gyp:base_i18n',
    336             '../base/base.gyp:test_support_base',
    337             '../testing/gmock.gyp:gmock',
    338             '../testing/gtest.gyp:gtest',
    339           ],
    340           'include_dirs': [
    341             '..',
    342             '<(INTERMEDIATE_DIR)',
    343           ],
    344           # TODO(robertshield): Move the items marked with "Move to lib"
    345           # below into a separate lib and then link both setup.exe and
    346           # setup_unittests.exe against that.
    347           'sources': [
    348             'installer/mini_installer/chrome.release',  # Move to lib
    349             'installer/mini_installer/appid.h',
    350             'installer/mini_installer/chrome_appid.cc',
    351             'installer/mini_installer/configuration.cc',
    352             'installer/mini_installer/configuration.h',
    353             'installer/mini_installer/configuration_test.cc',
    354             'installer/mini_installer/decompress.cc',
    355             'installer/mini_installer/decompress.h',
    356             'installer/mini_installer/decompress_test.cc',
    357             'installer/mini_installer/mini_string.cc',
    358             'installer/mini_installer/mini_string.h',
    359             'installer/mini_installer/mini_string_test.cc',
    360             'installer/setup/archive_patch_helper.cc',  # Move to lib
    361             'installer/setup/archive_patch_helper.h',   # Move to lib
    362             'installer/setup/archive_patch_helper_unittest.cc',
    363             'installer/setup/install.cc',               # Move to lib
    364             'installer/setup/install.h',                # Move to lib
    365             'installer/setup/install_unittest.cc',
    366             'installer/setup/install_worker.cc',        # Move to lib
    367             'installer/setup/install_worker.h',         # Move to lib
    368             'installer/setup/install_worker_unittest.cc',
    369             'installer/setup/run_all_unittests.cc',
    370             'installer/setup/setup_constants.cc',       # Move to lib
    371             'installer/setup/setup_constants.h',        # Move to lib
    372             'installer/setup/setup_unittests.rc',
    373             'installer/setup/setup_unittests_resource.h',
    374             'installer/setup/setup_util.cc',
    375             'installer/setup/setup_util_unittest.cc',
    376             'installer/setup/setup_util_unittest.h',
    377           ],
    378           # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
    379           'msvs_disabled_warnings': [ 4267, ],
    380         },
    381       ],
    382     }],
    383     ['OS=="win" and target_arch=="ia32"', {
    384       'targets': [
    385         {
    386           'target_name': 'launcher_support64',
    387           'type': 'static_library',
    388           'include_dirs': [
    389             '..',
    390           ],
    391           'direct_dependent_settings': {
    392             'include_dirs': [
    393               '..',
    394             ],
    395           },
    396           'defines': [
    397               '<@(nacl_win64_defines)',
    398           ],
    399               'dependencies': [
    400               '<(DEPTH)/base/base.gyp:base_win64',
    401           ],
    402           'configurations': {
    403             'Common_Base': {
    404               'msvs_target_platform': 'x64',
    405             },
    406           },
    407           'sources': [
    408             'installer/launcher_support/chrome_launcher_support.cc',
    409             'installer/launcher_support/chrome_launcher_support.h',
    410           ],
    411         },
    412       ],
    413     }],
    414     ['OS=="linux" and branding=="Chrome"', {
    415       'variables': {
    416         # Always google_chrome since this only applies to branding==Chrome.
    417         'branding_dir': 'app/theme/google_chrome',
    418         'branding_dir_100': 'app/theme/default_100_percent/google_chrome',
    419         'version' : '<!(python <(version_py_path) -f ../chrome/VERSION -t "@MAJOR@.@MINOR@.@BUILD@.@PATCH@")',
    420         'revision' : '<!(python ../build/util/lastchange.py --revision-only)',
    421         'packaging_files_common': [
    422           'installer/linux/common/apt.include',
    423           'installer/linux/common/default-app.template',
    424           'installer/linux/common/default-app-block.template',
    425           'installer/linux/common/desktop.template',
    426           'installer/linux/common/google-chrome/google-chrome.info',
    427           'installer/linux/common/installer.include',
    428           'installer/linux/common/postinst.include',
    429           'installer/linux/common/prerm.include',
    430           'installer/linux/common/repo.cron',
    431           'installer/linux/common/rpm.include',
    432           'installer/linux/common/rpmrepo.cron',
    433           'installer/linux/common/symlinks.include',
    434           'installer/linux/common/variables.include',
    435           'installer/linux/common/wrapper',
    436         ],
    437         'packaging_files_deb': [
    438           'installer/linux/debian/build.sh',
    439           'installer/linux/debian/changelog.template',
    440           'installer/linux/debian/control.template',
    441           'installer/linux/debian/debian.menu',
    442           'installer/linux/debian/expected_deps_ia32',
    443           'installer/linux/debian/expected_deps_x64',
    444           'installer/linux/debian/postinst',
    445           'installer/linux/debian/postrm',
    446           'installer/linux/debian/prerm',
    447         ],
    448         'packaging_files_rpm': [
    449           'installer/linux/rpm/build.sh',
    450           'installer/linux/rpm/chrome.spec.template',
    451           'installer/linux/rpm/expected_deps_i386',
    452           'installer/linux/rpm/expected_deps_x86_64',
    453         ],
    454         'packaging_files_binaries': [
    455           # TODO(mmoss) Any convenient way to get all the relevant build
    456           # files? (e.g. all locales, resources, etc.)
    457           '<(PRODUCT_DIR)/chrome',
    458           '<(PRODUCT_DIR)/chrome_sandbox',
    459           '<(PRODUCT_DIR)/libffmpegsumo.so',
    460           '<(PRODUCT_DIR)/libpdf.so',
    461           '<(PRODUCT_DIR)/xdg-mime',
    462           '<(PRODUCT_DIR)/xdg-settings',
    463           '<(PRODUCT_DIR)/locales/en-US.pak',
    464           '<(PRODUCT_DIR)/nacl_helper',
    465           '<(PRODUCT_DIR)/nacl_helper_bootstrap',
    466           '<(PRODUCT_DIR)/PepperFlash/libpepflashplayer.so',
    467           '<(PRODUCT_DIR)/PepperFlash/manifest.json',
    468           '<@(default_apps_list_linux_dest)',
    469         ],
    470         'flock_bash': ['flock', '--', '/tmp/linux_package_lock', 'bash'],
    471         'deb_build': '<(PRODUCT_DIR)/installer/debian/build.sh',
    472         'rpm_build': '<(PRODUCT_DIR)/installer/rpm/build.sh',
    473         'deb_cmd': ['<@(flock_bash)', '<(deb_build)', '-o' '<(PRODUCT_DIR)',
    474                     '-b', '<(PRODUCT_DIR)', '-a', '<(target_arch)'],
    475         'rpm_cmd': ['<@(flock_bash)', '<(rpm_build)', '-o' '<(PRODUCT_DIR)',
    476                     '-b', '<(PRODUCT_DIR)', '-a', '<(target_arch)'],
    477         'conditions': [
    478           ['target_arch=="ia32"', {
    479             'deb_arch': 'i386',
    480             'rpm_arch': 'i386',
    481             'packaging_files_binaries': [
    482               '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
    483               '<(PRODUCT_DIR)/libwidevinecdmadapter.so',
    484               '<(PRODUCT_DIR)/libwidevinecdm.so',
    485             ],
    486             'packaging_files_common': [
    487               '<(DEPTH)/build/linux/bin/eu-strip',
    488             ],
    489           }],
    490           ['target_arch=="x64"', {
    491             'deb_arch': 'amd64',
    492             'rpm_arch': 'x86_64',
    493             'packaging_files_binaries': [
    494               '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
    495               '<(PRODUCT_DIR)/libwidevinecdmadapter.so',
    496               '<(PRODUCT_DIR)/libwidevinecdm.so',
    497             ],
    498             'packaging_files_common': [
    499               '<!(which eu-strip)',
    500             ],
    501           }],
    502           ['target_arch=="arm"', {
    503             'deb_arch': 'arm',
    504             'rpm_arch': 'arm',
    505           }],
    506           ['libpeer_target_type!="static_library"', {
    507             'packaging_files_binaries': [
    508               '<(PRODUCT_DIR)/lib/libpeerconnection.so',
    509             ],
    510           }],
    511         ],
    512       },
    513       'targets': [
    514         {
    515           'target_name': 'linux_installer_configs',
    516           'type': 'none',
    517           # Add these files to the build output so the build archives will be
    518           # "hermetic" for packaging. This is only for branding="Chrome" since
    519           # we only create packages for official builds.
    520           'copies': [
    521             {
    522               'destination': '<(PRODUCT_DIR)/installer/debian/',
    523               'files': [
    524                 '<@(packaging_files_deb)',
    525               ]
    526             },
    527             {
    528               'destination': '<(PRODUCT_DIR)/installer/rpm/',
    529               'files': [
    530                 '<@(packaging_files_rpm)',
    531               ]
    532             },
    533             {
    534               'destination': '<(PRODUCT_DIR)/installer/common/',
    535               'files': [
    536                 '<@(packaging_files_common)',
    537               ]
    538             },
    539             # Additional theme resources needed for package building.
    540             {
    541               'destination': '<(PRODUCT_DIR)/installer/theme/',
    542               'files': [
    543                 '<(branding_dir_100)/product_logo_16.png',
    544                 '<(branding_dir)/product_logo_22.png',
    545                 '<(branding_dir)/product_logo_24.png',
    546                 '<(branding_dir_100)/product_logo_32.png',
    547                 '<(branding_dir)/product_logo_48.png',
    548                 '<(branding_dir)/product_logo_64.png',
    549                 '<(branding_dir)/product_logo_128.png',
    550                 '<(branding_dir)/product_logo_256.png',
    551                 '<(branding_dir)/product_logo_32.xpm',
    552                 '<(branding_dir)/BRANDING',
    553               ],
    554             },
    555           ],
    556           'actions': [
    557             {
    558               'action_name': 'save_build_info',
    559               'inputs': [
    560                 '<(branding_dir)/BRANDING',
    561                 '<(version_path)',
    562                 '<(lastchange_path)',
    563               ],
    564               'outputs': [
    565                 '<(PRODUCT_DIR)/installer/version.txt',
    566               ],
    567               # Just output the default version info variables.
    568               'action': [
    569                 'python', '<(version_py_path)',
    570                 '-f', '<(branding_dir)/BRANDING',
    571                 '-f', '<(version_path)',
    572                 '-f', '<(lastchange_path)',
    573                 '-o', '<@(_outputs)'
    574               ],
    575             },
    576           ],
    577         },
    578         {
    579           'target_name': 'linux_packages_all',
    580           'suppress_wildcard': 1,
    581           'type': 'none',
    582           'dependencies': [
    583             'linux_packages_unstable',
    584             'linux_packages_beta',
    585             'linux_packages_stable',
    586           ],
    587         },
    588         {
    589           # 'asan' is a developer, testing-only package, so it shouldn't be
    590           # included in the 'linux_packages_all' collection.
    591           'target_name': 'linux_packages_asan',
    592           'suppress_wildcard': 1,
    593           'type': 'none',
    594           'dependencies': [
    595             'linux_packages_asan_deb',
    596           ],
    597           # ChromeOS doesn't care about RPM packages.
    598           'conditions': [
    599             ['chromeos==0', {
    600               'dependencies': [
    601                 'linux_packages_asan_rpm',
    602               ],
    603             }],
    604           ],
    605         },
    606         {
    607           # 'trunk' is a developer, testing-only package, so it shouldn't be
    608           # included in the 'linux_packages_all' collection.
    609           'target_name': 'linux_packages_trunk',
    610           'suppress_wildcard': 1,
    611           'type': 'none',
    612           'dependencies': [
    613             'linux_packages_trunk_deb',
    614           ],
    615           # ChromeOS doesn't care about RPM packages.
    616           'conditions': [
    617             ['chromeos==0', {
    618               'dependencies': [
    619                 'linux_packages_trunk_rpm',
    620               ],
    621             }],
    622           ],
    623         },
    624         {
    625           'target_name': 'linux_packages_unstable',
    626           'suppress_wildcard': 1,
    627           'type': 'none',
    628           'dependencies': [
    629             'linux_packages_unstable_deb',
    630           ],
    631           # ChromeOS doesn't care about RPM packages.
    632           'conditions': [
    633             ['chromeos==0', {
    634               'dependencies': [
    635                 'linux_packages_unstable_rpm',
    636               ],
    637             }],
    638           ],
    639         },
    640         {
    641           'target_name': 'linux_packages_beta',
    642           'suppress_wildcard': 1,
    643           'type': 'none',
    644           'dependencies': [
    645             'linux_packages_beta_deb',
    646           ],
    647           # ChromeOS doesn't care about RPM packages.
    648           'conditions': [
    649             ['chromeos==0', {
    650               'dependencies': [
    651                 'linux_packages_beta_rpm',
    652               ],
    653             }],
    654           ],
    655         },
    656         {
    657           'target_name': 'linux_packages_stable',
    658           'suppress_wildcard': 1,
    659           'type': 'none',
    660           'dependencies': [
    661             'linux_packages_stable_deb',
    662           ],
    663           # ChromeOS doesn't care about RPM packages.
    664           'conditions': [
    665             ['chromeos==0', {
    666               'dependencies': [
    667                 'linux_packages_stable_rpm',
    668               ],
    669             }],
    670           ],
    671         },
    672         # TODO(mmoss) gyp looping construct would be handy here ...
    673         # These package actions are the same except for the 'channel' variable.
    674         {
    675           'target_name': 'linux_packages_asan_deb',
    676           'suppress_wildcard': 1,
    677           'type': 'none',
    678           'dependencies': [
    679             'chrome',
    680             'linux_installer_configs',
    681           ],
    682           'actions': [
    683             {
    684               'variables': {
    685                 'channel': 'asan',
    686               },
    687               'action_name': 'deb_packages_<(channel)',
    688               'process_outputs_as_sources': 1,
    689               'inputs': [
    690                 '<(deb_build)',
    691                 '<@(packaging_files_binaries)',
    692                 '<@(packaging_files_common)',
    693                 '<@(packaging_files_deb)',
    694               ],
    695               'outputs': [
    696                 '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
    697               ],
    698               'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
    699             },
    700           ],
    701         },
    702         {
    703           'target_name': 'linux_packages_trunk_deb',
    704           'suppress_wildcard': 1,
    705           'type': 'none',
    706           'dependencies': [
    707             'chrome',
    708             'linux_installer_configs',
    709           ],
    710           'actions': [
    711             {
    712               'variables': {
    713                 'channel': 'trunk',
    714               },
    715               'action_name': 'deb_packages_<(channel)',
    716               'process_outputs_as_sources': 1,
    717               'inputs': [
    718                 '<(deb_build)',
    719                 '<@(packaging_files_binaries)',
    720                 '<@(packaging_files_common)',
    721                 '<@(packaging_files_deb)',
    722               ],
    723               'outputs': [
    724                 '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
    725               ],
    726               'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
    727             },
    728           ],
    729         },
    730         {
    731           'target_name': 'linux_packages_unstable_deb',
    732           'suppress_wildcard': 1,
    733           'type': 'none',
    734           'dependencies': [
    735             'chrome',
    736             'linux_installer_configs',
    737           ],
    738           'actions': [
    739             {
    740               'variables': {
    741                 'channel': 'unstable',
    742               },
    743               'action_name': 'deb_packages_<(channel)',
    744               'process_outputs_as_sources': 1,
    745               'inputs': [
    746                 '<(deb_build)',
    747                 '<@(packaging_files_binaries)',
    748                 '<@(packaging_files_common)',
    749                 '<@(packaging_files_deb)',
    750               ],
    751               'outputs': [
    752                 '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
    753               ],
    754               'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
    755             },
    756           ],
    757         },
    758         {
    759           'target_name': 'linux_packages_beta_deb',
    760           'suppress_wildcard': 1,
    761           'type': 'none',
    762           'dependencies': [
    763             'chrome',
    764             'linux_installer_configs',
    765           ],
    766           'actions': [
    767             {
    768               'variables': {
    769                 'channel': 'beta',
    770               },
    771               'action_name': 'deb_packages_<(channel)',
    772               'process_outputs_as_sources': 1,
    773               'inputs': [
    774                 '<(deb_build)',
    775                 '<@(packaging_files_binaries)',
    776                 '<@(packaging_files_common)',
    777                 '<@(packaging_files_deb)',
    778               ],
    779               'outputs': [
    780                 '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
    781               ],
    782               'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
    783             },
    784           ],
    785         },
    786         {
    787           'target_name': 'linux_packages_stable_deb',
    788           'suppress_wildcard': 1,
    789           'type': 'none',
    790           'dependencies': [
    791             'chrome',
    792             'linux_installer_configs',
    793           ],
    794           'actions': [
    795             {
    796               'variables': {
    797                 'channel': 'stable',
    798               },
    799               'action_name': 'deb_packages_<(channel)',
    800               'process_outputs_as_sources': 1,
    801               'inputs': [
    802                 '<(deb_build)',
    803                 '<@(packaging_files_binaries)',
    804                 '<@(packaging_files_common)',
    805                 '<@(packaging_files_deb)',
    806               ],
    807               'outputs': [
    808                 '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
    809               ],
    810               'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
    811             },
    812           ],
    813         },
    814         {
    815           'target_name': 'linux_packages_asan_rpm',
    816           'suppress_wildcard': 1,
    817           'type': 'none',
    818           'dependencies': [
    819             'chrome',
    820             'linux_installer_configs',
    821           ],
    822           'actions': [
    823             {
    824               'variables': {
    825                 'channel': 'asan',
    826               },
    827               'action_name': 'rpm_packages_<(channel)',
    828               'process_outputs_as_sources': 1,
    829               'inputs': [
    830                 '<(rpm_build)',
    831                 '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
    832                 '<@(packaging_files_binaries)',
    833                 '<@(packaging_files_common)',
    834                 '<@(packaging_files_rpm)',
    835               ],
    836               'outputs': [
    837                 '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
    838               ],
    839               'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
    840             },
    841           ],
    842         },
    843         {
    844           'target_name': 'linux_packages_trunk_rpm',
    845           'suppress_wildcard': 1,
    846           'type': 'none',
    847           'dependencies': [
    848             'chrome',
    849             'linux_installer_configs',
    850           ],
    851           'actions': [
    852             {
    853               'variables': {
    854                 'channel': 'trunk',
    855               },
    856               'action_name': 'rpm_packages_<(channel)',
    857               'process_outputs_as_sources': 1,
    858               'inputs': [
    859                 '<(rpm_build)',
    860                 '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
    861                 '<@(packaging_files_binaries)',
    862                 '<@(packaging_files_common)',
    863                 '<@(packaging_files_rpm)',
    864               ],
    865               'outputs': [
    866                 '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
    867               ],
    868               'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
    869             },
    870           ],
    871         },
    872         {
    873           'target_name': 'linux_packages_unstable_rpm',
    874           'suppress_wildcard': 1,
    875           'type': 'none',
    876           'dependencies': [
    877             'chrome',
    878             'linux_installer_configs',
    879           ],
    880           'actions': [
    881             {
    882               'variables': {
    883                 'channel': 'unstable',
    884               },
    885               'action_name': 'rpm_packages_<(channel)',
    886               'process_outputs_as_sources': 1,
    887               'inputs': [
    888                 '<(rpm_build)',
    889                 '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
    890                 '<@(packaging_files_binaries)',
    891                 '<@(packaging_files_common)',
    892                 '<@(packaging_files_rpm)',
    893               ],
    894               'outputs': [
    895                 '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
    896               ],
    897               'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
    898             },
    899           ],
    900         },
    901         {
    902           'target_name': 'linux_packages_beta_rpm',
    903           'suppress_wildcard': 1,
    904           'type': 'none',
    905           'dependencies': [
    906             'chrome',
    907             'linux_installer_configs',
    908           ],
    909           'actions': [
    910             {
    911               'variables': {
    912                 'channel': 'beta',
    913               },
    914               'action_name': 'rpm_packages_<(channel)',
    915               'process_outputs_as_sources': 1,
    916               'inputs': [
    917                 '<(rpm_build)',
    918                 '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
    919                 '<@(packaging_files_binaries)',
    920                 '<@(packaging_files_common)',
    921                 '<@(packaging_files_rpm)',
    922               ],
    923               'outputs': [
    924                 '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
    925               ],
    926               'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
    927             },
    928           ],
    929         },
    930         {
    931           'target_name': 'linux_packages_stable_rpm',
    932           'suppress_wildcard': 1,
    933           'type': 'none',
    934           'dependencies': [
    935             'chrome',
    936             'linux_installer_configs',
    937           ],
    938           'actions': [
    939             {
    940               'variables': {
    941                 'channel': 'stable',
    942               },
    943               'action_name': 'rpm_packages_<(channel)',
    944               'process_outputs_as_sources': 1,
    945               'inputs': [
    946                 '<(rpm_build)',
    947                 '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
    948                 '<@(packaging_files_binaries)',
    949                 '<@(packaging_files_common)',
    950                 '<@(packaging_files_rpm)',
    951               ],
    952               'outputs': [
    953                 '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
    954               ],
    955               'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
    956             },
    957           ],
    958         },
    959       ],
    960     }],
    961     ['OS=="mac"', {
    962       'variables': {
    963         'mac_packaging_dir':
    964             '<(PRODUCT_DIR)/<(mac_product_name) Packaging',
    965         # <(PRODUCT_DIR) expands to $(BUILT_PRODUCTS_DIR), which doesn't
    966         # work properly in a shell script, where ${BUILT_PRODUCTS_DIR} is
    967         # needed.
    968         'mac_packaging_sh_dir':
    969             '${BUILT_PRODUCTS_DIR}/<(mac_product_name) Packaging',
    970       }, # variables
    971       'targets': [
    972         {
    973           'target_name': 'installer_packaging',
    974           'type': 'none',
    975           'dependencies': [
    976             'installer/mac/third_party/bsdiff/goobsdiff.gyp:*',
    977             'installer/mac/third_party/xz/xz.gyp:*',
    978           ],
    979           'conditions': [
    980             ['buildtype=="Official"', {
    981               'actions': [
    982                 {
    983                   # Create sign.sh, the script that the packaging system will
    984                   # use to sign the .app bundle.
    985                   'action_name': 'Make sign.sh',
    986                   'variables': {
    987                     'make_signers_sh_path': 'installer/mac/make_signers.sh',
    988                   },
    989                   'inputs': [
    990                     '<(make_signers_sh_path)',
    991                     'installer/mac/sign_app.sh.in',
    992                     'installer/mac/sign_versioned_dir.sh.in',
    993                     'installer/mac/app_resource_rules.plist.in',
    994                     '<(version_path)',
    995                   ],
    996                   'outputs': [
    997                     '<(mac_packaging_dir)/sign_app.sh',
    998                     '<(mac_packaging_dir)/sign_versioned_dir.sh',
    999                     '<(mac_packaging_dir)/app_resource_rules.plist',
   1000                   ],
   1001                   'action': [
   1002                     '<(make_signers_sh_path)',
   1003                     '<(mac_packaging_sh_dir)',
   1004                     '<(mac_product_name)',
   1005                     '<(version_full)',
   1006                   ],
   1007                 },
   1008               ],  # actions
   1009             }],  # buildtype=="Official"
   1010           ],  # conditions
   1011           'copies': [
   1012             {
   1013               # Put the files where the packaging system will find them. The
   1014               # packager will use these when building the "full installer"
   1015               # disk images and delta/differential update disk images.
   1016               'destination': '<(mac_packaging_dir)',
   1017               'files': [
   1018                 '<(PRODUCT_DIR)/goobsdiff',
   1019                 '<(PRODUCT_DIR)/goobspatch',
   1020                 '<(PRODUCT_DIR)/liblzma_decompress.dylib',
   1021                 '<(PRODUCT_DIR)/xz',
   1022                 '<(PRODUCT_DIR)/xzdec',
   1023                 'installer/mac/dirdiffer.sh',
   1024                 'installer/mac/dirpatcher.sh',
   1025                 'installer/mac/dmgdiffer.sh',
   1026                 'installer/mac/pkg-dmg',
   1027               ],
   1028               'conditions': [
   1029                 ['mac_keystone==1', {
   1030                   'files': [
   1031                     'installer/mac/keystone_install.sh',
   1032                   ],
   1033                 }],  # mac_keystone
   1034                 ['branding=="Chrome" and buildtype=="Official"', {
   1035                   'files': [
   1036                     'app/theme/google_chrome/mac/app_canary.icns',
   1037                     'app/theme/google_chrome/mac/document_canary.icns',
   1038                     'installer/mac/internal/chrome_canary_dmg_dsstore',
   1039                     'installer/mac/internal/chrome_canary_dmg_icon.icns',
   1040                     'installer/mac/internal/chrome_dmg_background.png',
   1041                     'installer/mac/internal/chrome_dmg_dsstore',
   1042                     'installer/mac/internal/chrome_dmg_icon.icns',
   1043                     'installer/mac/internal/generate_dmgs',
   1044                   ],
   1045                 }],  # branding=="Chrome" and buildtype=="Official"
   1046               ],  # conditions
   1047             },
   1048           ],  # copies
   1049         },  # target: installer_packaging
   1050         {
   1051           'target_name': 'gcapi_lib',
   1052           'type': 'static_library',
   1053           'include_dirs': [
   1054             '..',
   1055           ],
   1056           'sources': [
   1057             'installer/gcapi_mac/gcapi.h',
   1058             'installer/gcapi_mac/gcapi.mm',
   1059           ],
   1060           'link_settings': {
   1061             'libraries': [
   1062               '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
   1063             ],
   1064           },
   1065           'xcode_settings': {
   1066             'ARCHS': [ 'i386', 'x86_64' ],
   1067             'MACOSX_DEPLOYMENT_TARGET': '10.4',
   1068             'GCC_ENABLE_OBJC_GC': 'supported',
   1069           },
   1070         },
   1071         {
   1072           'target_name': 'gcapi_example',
   1073           'type': 'executable',
   1074           'dependencies': [
   1075             'gcapi_lib',
   1076           ],
   1077           'include_dirs': [
   1078             '..',
   1079           ],
   1080           'sources': [
   1081             'installer/gcapi_mac/gcapi_example_client.mm',
   1082           ],
   1083         },
   1084       ],  # targets
   1085     }],  # OS=="mac"
   1086     [ 'branding == "Chrome"', {
   1087       'variables': {
   1088          'branding_dir': 'app/theme/google_chrome',
   1089          'branding_dir_100': 'app/theme/default_100_percent/google_chrome',
   1090       },
   1091     }, { # else branding!="Chrome"
   1092       'variables': {
   1093          'branding_dir': 'app/theme/chromium',
   1094          'branding_dir_100': 'app/theme/default_100_percent/chromium',
   1095       },
   1096     }],
   1097   ],
   1098 }
   1099