• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/callback_work_item_unittest.cc',
99            'installer/util/channel_info_unittest.cc',
100            'installer/util/copy_reg_key_work_item_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/logging_installer_unittest.cc',
123            'installer/util/lzma_util_unittest.cc',
124            'installer/util/master_preferences_unittest.cc',
125            'installer/util/move_tree_work_item_unittest.cc',
126            'installer/util/product_state_unittest.cc',
127            'installer/util/product_unittest.cc',
128            'installer/util/product_unittest.h',
129            'installer/util/registry_key_backup_unittest.cc',
130            'installer/util/registry_test_data.cc',
131            'installer/util/registry_test_data.h',
132            'installer/util/run_all_unittests.cc',
133            'installer/util/self_cleaning_temp_dir_unittest.cc',
134            'installer/util/set_reg_value_work_item_unittest.cc',
135            'installer/util/shell_util_unittest.cc',
136            'installer/util/uninstall_metrics_unittest.cc',
137            'installer/util/wmi_unittest.cc',
138            'installer/util/work_item_list_unittest.cc',
139            '<(SHARED_INTERMEDIATE_DIR)/chrome_version/other_version.rc',
140          ],
141          'msvs_settings': {
142            'VCManifestTool': {
143              'AdditionalManifestFiles': [
144                '$(ProjectDir)\\installer\\mini_installer\\mini_installer.exe.manifest',
145              ],
146            },
147          },
148          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
149          'msvs_disabled_warnings': [ 4267, ],
150        },
151        {
152          'target_name': 'installer_util_strings',
153          'type': 'none',
154          'rules': [
155            {
156              'rule_name': 'installer_util_strings',
157              'extension': 'grd',
158              'variables': {
159                'create_string_rc_py' : 'installer/util/prebuild/create_string_rc.py',
160              },
161              'inputs': [
162                '<(create_string_rc_py)',
163                '<(RULE_INPUT_PATH)',
164              ],
165              'outputs': [
166                # Don't use <(RULE_INPUT_ROOT) to create the output file
167                # name, because the base name of the input
168                # (generated_resources.grd) doesn't match the generated file
169                # (installer_util_strings.h).
170                '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings/installer_util_strings.h',
171                '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings/installer_util_strings.rc',
172              ],
173              'action': ['python',
174                         '<(create_string_rc_py)',
175                         '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings',
176                         '<(branding)',],
177              'message': 'Generating resources from <(RULE_INPUT_PATH)',
178              'msvs_cygwin_shell': 1,
179            },
180          ],
181          'sources': [
182            'app/chromium_strings.grd',
183          ],
184          'direct_dependent_settings': {
185            'include_dirs': [
186              '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings',
187            ],
188          },
189        },
190        {
191          'target_name': 'launcher_support',
192          'type': 'static_library',
193          'include_dirs': [
194            '..',
195          ],
196          'direct_dependent_settings': {
197            'include_dirs': [
198              '..',
199            ],
200          },
201          'dependencies': [
202            '<(DEPTH)/base/base.gyp:base',
203          ],
204          'sources': [
205            'installer/launcher_support/chrome_launcher_support.cc',
206            'installer/launcher_support/chrome_launcher_support.h',
207          ],
208        },
209        {
210          'target_name': 'mini_installer_test',
211          'type': 'executable',
212          'dependencies': [
213            'installer_util',
214            'installer_util_strings',
215            '../base/base.gyp:base',
216            '../base/base.gyp:base_i18n',
217            '../base/base.gyp:test_support_base',
218            '../chrome/chrome.gyp:test_support_common',
219            '../testing/gtest.gyp:gtest',
220          ],
221          'include_dirs': [
222            '..',
223          ],
224          'sources': [
225            '<(SHARED_INTERMEDIATE_DIR)/installer_util_strings/installer_util_strings.rc',
226            'installer/util/installation_validation_helper.cc',
227            'installer/util/installation_validation_helper.h',
228            'test/mini_installer_test/installer_path_provider.cc',
229            'test/mini_installer_test/installer_path_provider.h',
230            'test/mini_installer_test/installer_test_util.cc',
231            'test/mini_installer_test/installer_test_util.h',
232            'test/mini_installer_test/mini_installer_test_constants.cc',
233            'test/mini_installer_test/mini_installer_test_constants.h',
234            'test/mini_installer_test/run_all_unittests.cc',
235            'test/mini_installer_test/switch_builder.cc',
236            'test/mini_installer_test/switch_builder.h',
237            'test/mini_installer_test/test.cc',
238          ],
239          'msvs_settings': {
240            'VCManifestTool': {
241              'AdditionalManifestFiles': [
242                '$(ProjectDir)\\installer\\mini_installer\\mini_installer.exe.manifest',
243              ],
244            },
245          },
246        },
247        {
248          'target_name': 'setup',
249          'type': 'executable',
250          'dependencies': [
251            'installer_util',
252            'installer_util_strings',
253            'launcher_support',
254            '../base/base.gyp:base',
255            '../breakpad/breakpad.gyp:breakpad_handler',
256            '../chrome/common_constants.gyp:common_constants',
257            '../rlz/rlz.gyp:rlz_lib',
258            '../third_party/zlib/zlib.gyp:zlib',
259          ],
260          'include_dirs': [
261            '..',
262            '<(INTERMEDIATE_DIR)',
263            '<(SHARED_INTERMEDIATE_DIR)/setup',
264          ],
265          'direct_dependent_settings': {
266            'include_dirs': [
267              '<(SHARED_INTERMEDIATE_DIR)/setup',
268            ],
269          },
270          'sources': [
271            'installer/mini_installer/chrome.release',
272            'installer/setup/archive_patch_helper.cc',
273            'installer/setup/archive_patch_helper.h',
274            'installer/setup/install.cc',
275            'installer/setup/install.h',
276            'installer/setup/install_worker.cc',
277            'installer/setup/install_worker.h',
278            'installer/setup/setup_main.cc',
279            'installer/setup/setup_main.h',
280            'installer/setup/setup.ico',
281            'installer/setup/setup.rc',
282            'installer/setup/setup_constants.cc',
283            'installer/setup/setup_constants.h',
284            'installer/setup/setup_exe_version.rc.version',
285            'installer/setup/setup_resource.h',
286            'installer/setup/setup_util.cc',
287            'installer/setup/setup_util.h',
288            'installer/setup/uninstall.cc',
289            'installer/setup/uninstall.h',
290          ],
291          'msvs_settings': {
292            'VCLinkerTool': {
293              'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
294            },
295            'VCManifestTool': {
296              'AdditionalManifestFiles': [
297                '$(ProjectDir)\\installer\\setup\\setup.exe.manifest',
298              ],
299            },
300          },
301          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
302          'msvs_disabled_warnings': [ 4267, ],
303          'rules': [
304            {
305              'rule_name': 'setup_version',
306              'extension': 'version',
307              'variables': {
308                'version_py_path': '../chrome/tools/build/version.py',
309                'template_input_path': 'installer/setup/setup_exe_version.rc.version',
310              },
311              'inputs': [
312                '<(template_input_path)',
313                '<(version_path)',
314                '<(lastchange_path)',
315                '<(branding_dir)/BRANDING',
316              ],
317              'outputs': [
318                '<(SHARED_INTERMEDIATE_DIR)/setup/setup_exe_version.rc',
319              ],
320              'action': [
321                'python', '<(version_py_path)',
322                '-f', '<(version_path)',
323                '-f', '<(lastchange_path)',
324                '-f', '<(branding_dir)/BRANDING',
325                '<(template_input_path)',
326                '<@(_outputs)',
327              ],
328              'process_outputs_as_sources': 1,
329              'message': 'Generating version information'
330            },
331            {
332              'rule_name': 'server_dlls',
333              'extension': 'release',
334              'variables': {
335                'scan_server_dlls_py' : 'tools/build/win/scan_server_dlls.py',
336                'template_file': 'installer/mini_installer/chrome.release',
337              },
338              'inputs': [
339                '<(scan_server_dlls_py)',
340                '<(template_file)'
341              ],
342              'outputs': [
343                '<(INTERMEDIATE_DIR)/registered_dlls.h',
344              ],
345              'action': [
346                'python',
347                '<(scan_server_dlls_py)',
348                '--output_dir=<(PRODUCT_DIR)',
349                '--input_file=<(RULE_INPUT_PATH)',
350                '--header_output_dir=<(INTERMEDIATE_DIR)',
351                # TODO(sgk):  may just use environment variables
352                #'--distribution=$(CHROMIUM_BUILD)',
353                '--distribution=_google_chrome',
354              ],
355              'msvs_cygwin_shell': 1,
356            },
357          ],
358          'conditions': [
359            ['component == "shared_library"', {
360              'variables': {
361                'win_use_external_manifest': 1,
362              },
363            }],
364            # TODO(mark):  <(branding_dir) should be defined by the
365            # global condition block at the bottom of the file, but
366            # this doesn't work due to the following issue:
367            #
368            #   http://code.google.com/p/gyp/issues/detail?id=22
369            #
370            # Remove this block once the above issue is fixed.
371            [ 'branding == "Chrome"', {
372              'variables': {
373                 'branding_dir': 'app/theme/google_chrome',
374                 'branding_dir_100': 'app/theme/default_100_percent/google_chrome',
375              },
376            }, { # else branding!="Chrome"
377              'variables': {
378                 'branding_dir': 'app/theme/chromium',
379                 'branding_dir_100': 'app/theme/default_100_percent/chromium',
380              },
381            }],
382          ],
383        },
384        {
385          'target_name': 'setup_unittests',
386          'type': 'executable',
387          'dependencies': [
388            'installer_util',
389            'installer_util_strings',
390            'launcher_support',
391            '../base/base.gyp:base',
392            '../base/base.gyp:base_i18n',
393            '../base/base.gyp:test_support_base',
394            '../testing/gmock.gyp:gmock',
395            '../testing/gtest.gyp:gtest',
396          ],
397          'include_dirs': [
398            '..',
399            '<(INTERMEDIATE_DIR)',
400          ],
401          # TODO(robertshield): Move the items marked with "Move to lib"
402          # below into a separate lib and then link both setup.exe and
403          # setup_unittests.exe against that.
404          'sources': [
405            'installer/mini_installer/chrome.release',  # Move to lib
406            'installer/mini_installer/appid.h',
407            'installer/mini_installer/chrome_appid.cc',
408            'installer/mini_installer/configuration.cc',
409            'installer/mini_installer/configuration.h',
410            'installer/mini_installer/configuration_test.cc',
411            'installer/mini_installer/decompress.cc',
412            'installer/mini_installer/decompress.h',
413            'installer/mini_installer/decompress_test.cc',
414            'installer/mini_installer/mini_string.cc',
415            'installer/mini_installer/mini_string.h',
416            'installer/mini_installer/mini_string_test.cc',
417            'installer/setup/archive_patch_helper.cc',  # Move to lib
418            'installer/setup/archive_patch_helper.h',   # Move to lib
419            'installer/setup/archive_patch_helper_unittest.cc',
420            'installer/setup/install.cc',               # Move to lib
421            'installer/setup/install.h',                # Move to lib
422            'installer/setup/install_unittest.cc',
423            'installer/setup/install_worker.cc',        # Move to lib
424            'installer/setup/install_worker.h',         # Move to lib
425            'installer/setup/install_worker_unittest.cc',
426            'installer/setup/run_all_unittests.cc',
427            'installer/setup/setup_constants.cc',       # Move to lib
428            'installer/setup/setup_constants.h',        # Move to lib
429            'installer/setup/setup_unittests.rc',
430            'installer/setup/setup_unittests_resource.h',
431            'installer/setup/setup_util.cc',
432            'installer/setup/setup_util_unittest.cc',
433            'installer/setup/setup_util_unittest.h',
434          ],
435          'rules': [
436            {
437              'rule_name': 'server_dlls',               # Move to lib
438              'extension': 'release',
439              'variables': {
440                'scan_server_dlls_py' : 'tools/build/win/scan_server_dlls.py',
441                'template_file': 'installer/mini_installer/chrome.release',
442              },
443              'inputs': [
444                '<(scan_server_dlls_py)',
445                '<(template_file)'
446              ],
447              'outputs': [
448                '<(INTERMEDIATE_DIR)/registered_dlls.h',
449              ],
450              'action': [
451                'python',
452                '<(scan_server_dlls_py)',
453                '--output_dir=<(PRODUCT_DIR)',
454                '--input_file=<(RULE_INPUT_PATH)',
455                '--header_output_dir=<(INTERMEDIATE_DIR)',
456                # TODO(sgk):  may just use environment variables
457                #'--distribution=$(CHROMIUM_BUILD)',
458                '--distribution=_google_chrome',
459              ],
460              'msvs_cygwin_shell': 1,
461            },
462          ],
463          # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
464          'msvs_disabled_warnings': [ 4267, ],
465        },
466      ],
467    }],
468    ['OS=="win" and target_arch=="ia32"', {
469      'targets': [
470        {
471          'target_name': 'launcher_support64',
472          'type': 'static_library',
473          'include_dirs': [
474            '..',
475          ],
476          'direct_dependent_settings': {
477            'include_dirs': [
478              '..',
479            ],
480          },
481          'defines': [
482              '<@(nacl_win64_defines)',
483          ],
484              'dependencies': [
485              '<(DEPTH)/base/base.gyp:base_nacl_win64',
486          ],
487          'configurations': {
488            'Common_Base': {
489              'msvs_target_platform': 'x64',
490            },
491          },
492          'sources': [
493            'installer/launcher_support/chrome_launcher_support.cc',
494            'installer/launcher_support/chrome_launcher_support.h',
495          ],
496        },
497      ],
498    }],
499    ['OS=="linux" and branding=="Chrome"', {
500      'variables': {
501        # Always google_chrome since this only applies to branding==Chrome.
502        'branding_dir': 'app/theme/google_chrome',
503        'branding_dir_100': 'app/theme/default_100_percent/google_chrome',
504        'version' : '<!(python <(version_py_path) -f ../chrome/VERSION -t "@MAJOR@.@MINOR@.@BUILD@.@PATCH@")',
505        'revision' : '<!(python ../build/util/lastchange.py --revision-only)',
506        'packaging_files_common': [
507          'installer/linux/common/apt.include',
508          'installer/linux/common/default-app.template',
509          'installer/linux/common/default-app-block.template',
510          'installer/linux/common/desktop.template',
511          'installer/linux/common/google-chrome/google-chrome.info',
512          'installer/linux/common/installer.include',
513          'installer/linux/common/postinst.include',
514          'installer/linux/common/prerm.include',
515          'installer/linux/common/repo.cron',
516          'installer/linux/common/rpm.include',
517          'installer/linux/common/rpmrepo.cron',
518          'installer/linux/common/symlinks.include',
519          'installer/linux/common/variables.include',
520          'installer/linux/common/wrapper',
521        ],
522        'packaging_files_deb': [
523          'installer/linux/debian/build.sh',
524          'installer/linux/debian/changelog.template',
525          'installer/linux/debian/control.template',
526          'installer/linux/debian/debian.menu',
527          'installer/linux/debian/expected_deps',
528          'installer/linux/debian/postinst',
529          'installer/linux/debian/postrm',
530          'installer/linux/debian/prerm',
531        ],
532        'packaging_files_rpm': [
533          'installer/linux/rpm/build.sh',
534          'installer/linux/rpm/chrome.spec.template',
535          'installer/linux/rpm/expected_deps_i386',
536          'installer/linux/rpm/expected_deps_x86_64',
537        ],
538        'packaging_files_binaries': [
539          # TODO(mmoss) Any convenient way to get all the relevant build
540          # files? (e.g. all locales, resources, etc.)
541          '<(PRODUCT_DIR)/chrome',
542          '<(PRODUCT_DIR)/chrome_sandbox',
543          '<(PRODUCT_DIR)/libffmpegsumo.so',
544          '<(PRODUCT_DIR)/libppGoogleNaClPluginChrome.so',
545          '<(PRODUCT_DIR)/xdg-mime',
546          '<(PRODUCT_DIR)/xdg-settings',
547          '<(PRODUCT_DIR)/locales/en-US.pak',
548          '<(PRODUCT_DIR)/nacl_helper',
549          '<(PRODUCT_DIR)/nacl_helper_bootstrap',
550          '<(PRODUCT_DIR)/PepperFlash/libpepflashplayer.so',
551          '<(PRODUCT_DIR)/PepperFlash/manifest.json',
552          '<@(default_apps_list_linux_dest)',
553        ],
554        'flock_bash': ['flock', '--', '/tmp/linux_package_lock', 'bash'],
555        'deb_build': '<(PRODUCT_DIR)/installer/debian/build.sh',
556        'rpm_build': '<(PRODUCT_DIR)/installer/rpm/build.sh',
557        'deb_cmd': ['<@(flock_bash)', '<(deb_build)', '-o' '<(PRODUCT_DIR)',
558                    '-b', '<(PRODUCT_DIR)', '-a', '<(target_arch)'],
559        'rpm_cmd': ['<@(flock_bash)', '<(rpm_build)', '-o' '<(PRODUCT_DIR)',
560                    '-b', '<(PRODUCT_DIR)', '-a', '<(target_arch)'],
561        'conditions': [
562          ['target_arch=="ia32"', {
563            'deb_arch': 'i386',
564            'rpm_arch': 'i386',
565            'packaging_files_binaries': [
566              '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
567              '<(PRODUCT_DIR)/libwidevinecdmadapter.so',
568              '<(PRODUCT_DIR)/libwidevinecdm.so',
569            ],
570          }],
571          ['target_arch=="x64"', {
572            'deb_arch': 'amd64',
573            'rpm_arch': 'x86_64',
574            'packaging_files_binaries': [
575              '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
576              '<(PRODUCT_DIR)/libwidevinecdmadapter.so',
577              '<(PRODUCT_DIR)/libwidevinecdm.so',
578            ],
579          }],
580          ['target_arch=="arm"', {
581            'deb_arch': 'arm',
582            'rpm_arch': 'arm',
583          }],
584          ['internal_pdf', {
585            'packaging_files_binaries': [
586              '<(PRODUCT_DIR)/libpdf.so',
587            ],
588          }],
589          ['libpeer_target_type!="static_library"', {
590            'packaging_files_binaries': [
591              '<(PRODUCT_DIR)/lib/libpeerconnection.so',
592            ],
593          }],
594        ],
595      },
596      'targets': [
597        {
598          'target_name': 'linux_installer_configs',
599          'type': 'none',
600          # Add these files to the build output so the build archives will be
601          # "hermetic" for packaging. This is only for branding="Chrome" since
602          # we only create packages for official builds.
603          'copies': [
604            {
605              'destination': '<(PRODUCT_DIR)/installer/debian/',
606              'files': [
607                '<@(packaging_files_deb)',
608              ]
609            },
610            {
611              'destination': '<(PRODUCT_DIR)/installer/rpm/',
612              'files': [
613                '<@(packaging_files_rpm)',
614              ]
615            },
616            {
617              'destination': '<(PRODUCT_DIR)/installer/common/',
618              'files': [
619                '<@(packaging_files_common)',
620              ]
621            },
622            # Additional theme resources needed for package building.
623            {
624              'destination': '<(PRODUCT_DIR)/installer/theme/',
625              'files': [
626                '<(branding_dir_100)/product_logo_16.png',
627                '<(branding_dir)/product_logo_22.png',
628                '<(branding_dir)/product_logo_24.png',
629                '<(branding_dir_100)/product_logo_32.png',
630                '<(branding_dir)/product_logo_48.png',
631                '<(branding_dir)/product_logo_64.png',
632                '<(branding_dir)/product_logo_128.png',
633                '<(branding_dir)/product_logo_256.png',
634                '<(branding_dir)/product_logo_32.xpm',
635                '<(branding_dir)/BRANDING',
636              ],
637            },
638          ],
639          'actions': [
640            {
641              'action_name': 'save_build_info',
642              'inputs': [
643                '<(branding_dir)/BRANDING',
644                '<(version_path)',
645                '<(lastchange_path)',
646              ],
647              'outputs': [
648                '<(PRODUCT_DIR)/installer/version.txt',
649              ],
650              # Just output the default version info variables.
651              'action': [
652                'python', '<(version_py_path)',
653                '-f', '<(branding_dir)/BRANDING',
654                '-f', '<(version_path)',
655                '-f', '<(lastchange_path)',
656                '-o', '<@(_outputs)'
657              ],
658            },
659          ],
660        },
661        {
662          'target_name': 'linux_packages_all',
663          'suppress_wildcard': 1,
664          'type': 'none',
665          'dependencies': [
666            'linux_packages_unstable',
667            'linux_packages_beta',
668            'linux_packages_stable',
669          ],
670        },
671        {
672          # 'asan' is a developer, testing-only package, so it shouldn't be
673          # included in the 'linux_packages_all' collection.
674          'target_name': 'linux_packages_asan',
675          'suppress_wildcard': 1,
676          'type': 'none',
677          'dependencies': [
678            'linux_packages_asan_deb',
679          ],
680          # ChromeOS doesn't care about RPM packages.
681          'conditions': [
682            ['chromeos==0', {
683              'dependencies': [
684                'linux_packages_asan_rpm',
685              ],
686            }],
687          ],
688        },
689        {
690          # 'trunk' is a developer, testing-only package, so it shouldn't be
691          # included in the 'linux_packages_all' collection.
692          'target_name': 'linux_packages_trunk',
693          'suppress_wildcard': 1,
694          'type': 'none',
695          'dependencies': [
696            'linux_packages_trunk_deb',
697          ],
698          # ChromeOS doesn't care about RPM packages.
699          'conditions': [
700            ['chromeos==0', {
701              'dependencies': [
702                'linux_packages_trunk_rpm',
703              ],
704            }],
705          ],
706        },
707        {
708          'target_name': 'linux_packages_unstable',
709          'suppress_wildcard': 1,
710          'type': 'none',
711          'dependencies': [
712            'linux_packages_unstable_deb',
713          ],
714          # ChromeOS doesn't care about RPM packages.
715          'conditions': [
716            ['chromeos==0', {
717              'dependencies': [
718                'linux_packages_unstable_rpm',
719              ],
720            }],
721          ],
722        },
723        {
724          'target_name': 'linux_packages_beta',
725          'suppress_wildcard': 1,
726          'type': 'none',
727          'dependencies': [
728            'linux_packages_beta_deb',
729          ],
730          # ChromeOS doesn't care about RPM packages.
731          'conditions': [
732            ['chromeos==0', {
733              'dependencies': [
734                'linux_packages_beta_rpm',
735              ],
736            }],
737          ],
738        },
739        {
740          'target_name': 'linux_packages_stable',
741          'suppress_wildcard': 1,
742          'type': 'none',
743          'dependencies': [
744            'linux_packages_stable_deb',
745          ],
746          # ChromeOS doesn't care about RPM packages.
747          'conditions': [
748            ['chromeos==0', {
749              'dependencies': [
750                'linux_packages_stable_rpm',
751              ],
752            }],
753          ],
754        },
755        # TODO(mmoss) gyp looping construct would be handy here ...
756        # These package actions are the same except for the 'channel' variable.
757        {
758          'target_name': 'linux_packages_asan_deb',
759          'suppress_wildcard': 1,
760          'type': 'none',
761          'dependencies': [
762            'chrome',
763            'linux_installer_configs',
764          ],
765          'actions': [
766            {
767              'variables': {
768                'channel': 'asan',
769              },
770              'action_name': 'deb_packages_<(channel)',
771              'process_outputs_as_sources': 1,
772              'inputs': [
773                '<(deb_build)',
774                '<@(packaging_files_binaries)',
775                '<@(packaging_files_common)',
776                '<@(packaging_files_deb)',
777              ],
778              'outputs': [
779                '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
780              ],
781              'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
782            },
783          ],
784        },
785        {
786          'target_name': 'linux_packages_trunk_deb',
787          'suppress_wildcard': 1,
788          'type': 'none',
789          'dependencies': [
790            'chrome',
791            'linux_installer_configs',
792          ],
793          'actions': [
794            {
795              'variables': {
796                'channel': 'trunk',
797              },
798              'action_name': 'deb_packages_<(channel)',
799              'process_outputs_as_sources': 1,
800              'inputs': [
801                '<(deb_build)',
802                '<@(packaging_files_binaries)',
803                '<@(packaging_files_common)',
804                '<@(packaging_files_deb)',
805              ],
806              'outputs': [
807                '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
808              ],
809              'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
810            },
811          ],
812        },
813        {
814          'target_name': 'linux_packages_unstable_deb',
815          'suppress_wildcard': 1,
816          'type': 'none',
817          'dependencies': [
818            'chrome',
819            'linux_installer_configs',
820          ],
821          'actions': [
822            {
823              'variables': {
824                'channel': 'unstable',
825              },
826              'action_name': 'deb_packages_<(channel)',
827              'process_outputs_as_sources': 1,
828              'inputs': [
829                '<(deb_build)',
830                '<@(packaging_files_binaries)',
831                '<@(packaging_files_common)',
832                '<@(packaging_files_deb)',
833              ],
834              'outputs': [
835                '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
836              ],
837              'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
838            },
839          ],
840        },
841        {
842          'target_name': 'linux_packages_beta_deb',
843          'suppress_wildcard': 1,
844          'type': 'none',
845          'dependencies': [
846            'chrome',
847            'linux_installer_configs',
848          ],
849          'actions': [
850            {
851              'variables': {
852                'channel': 'beta',
853              },
854              'action_name': 'deb_packages_<(channel)',
855              'process_outputs_as_sources': 1,
856              'inputs': [
857                '<(deb_build)',
858                '<@(packaging_files_binaries)',
859                '<@(packaging_files_common)',
860                '<@(packaging_files_deb)',
861              ],
862              'outputs': [
863                '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
864              ],
865              'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
866            },
867          ],
868        },
869        {
870          'target_name': 'linux_packages_stable_deb',
871          'suppress_wildcard': 1,
872          'type': 'none',
873          'dependencies': [
874            'chrome',
875            'linux_installer_configs',
876          ],
877          'actions': [
878            {
879              'variables': {
880                'channel': 'stable',
881              },
882              'action_name': 'deb_packages_<(channel)',
883              'process_outputs_as_sources': 1,
884              'inputs': [
885                '<(deb_build)',
886                '<@(packaging_files_binaries)',
887                '<@(packaging_files_common)',
888                '<@(packaging_files_deb)',
889              ],
890              'outputs': [
891                '<(PRODUCT_DIR)/google-chrome-<(channel)_<(version)-1_<(deb_arch).deb',
892              ],
893              'action': [ '<@(deb_cmd)', '-c', '<(channel)', ],
894            },
895          ],
896        },
897        {
898          'target_name': 'linux_packages_asan_rpm',
899          'suppress_wildcard': 1,
900          'type': 'none',
901          'dependencies': [
902            'chrome',
903            'linux_installer_configs',
904          ],
905          'actions': [
906            {
907              'variables': {
908                'channel': 'asan',
909              },
910              'action_name': 'rpm_packages_<(channel)',
911              'process_outputs_as_sources': 1,
912              'inputs': [
913                '<(rpm_build)',
914                '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
915                '<@(packaging_files_binaries)',
916                '<@(packaging_files_common)',
917                '<@(packaging_files_rpm)',
918              ],
919              'outputs': [
920                '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
921              ],
922              'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
923            },
924          ],
925        },
926        {
927          'target_name': 'linux_packages_trunk_rpm',
928          'suppress_wildcard': 1,
929          'type': 'none',
930          'dependencies': [
931            'chrome',
932            'linux_installer_configs',
933          ],
934          'actions': [
935            {
936              'variables': {
937                'channel': 'trunk',
938              },
939              'action_name': 'rpm_packages_<(channel)',
940              'process_outputs_as_sources': 1,
941              'inputs': [
942                '<(rpm_build)',
943                '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
944                '<@(packaging_files_binaries)',
945                '<@(packaging_files_common)',
946                '<@(packaging_files_rpm)',
947              ],
948              'outputs': [
949                '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
950              ],
951              'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
952            },
953          ],
954        },
955        {
956          'target_name': 'linux_packages_unstable_rpm',
957          'suppress_wildcard': 1,
958          'type': 'none',
959          'dependencies': [
960            'chrome',
961            'linux_installer_configs',
962          ],
963          'actions': [
964            {
965              'variables': {
966                'channel': 'unstable',
967              },
968              'action_name': 'rpm_packages_<(channel)',
969              'process_outputs_as_sources': 1,
970              'inputs': [
971                '<(rpm_build)',
972                '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
973                '<@(packaging_files_binaries)',
974                '<@(packaging_files_common)',
975                '<@(packaging_files_rpm)',
976              ],
977              'outputs': [
978                '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
979              ],
980              'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
981            },
982          ],
983        },
984        {
985          'target_name': 'linux_packages_beta_rpm',
986          'suppress_wildcard': 1,
987          'type': 'none',
988          'dependencies': [
989            'chrome',
990            'linux_installer_configs',
991          ],
992          'actions': [
993            {
994              'variables': {
995                'channel': 'beta',
996              },
997              'action_name': 'rpm_packages_<(channel)',
998              'process_outputs_as_sources': 1,
999              'inputs': [
1000                '<(rpm_build)',
1001                '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
1002                '<@(packaging_files_binaries)',
1003                '<@(packaging_files_common)',
1004                '<@(packaging_files_rpm)',
1005              ],
1006              'outputs': [
1007                '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
1008              ],
1009              'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
1010            },
1011          ],
1012        },
1013        {
1014          'target_name': 'linux_packages_stable_rpm',
1015          'suppress_wildcard': 1,
1016          'type': 'none',
1017          'dependencies': [
1018            'chrome',
1019            'linux_installer_configs',
1020          ],
1021          'actions': [
1022            {
1023              'variables': {
1024                'channel': 'stable',
1025              },
1026              'action_name': 'rpm_packages_<(channel)',
1027              'process_outputs_as_sources': 1,
1028              'inputs': [
1029                '<(rpm_build)',
1030                '<(PRODUCT_DIR)/installer/rpm/chrome.spec.template',
1031                '<@(packaging_files_binaries)',
1032                '<@(packaging_files_common)',
1033                '<@(packaging_files_rpm)',
1034              ],
1035              'outputs': [
1036                '<(PRODUCT_DIR)/google-chrome-<(channel)-<(version)-1.<(rpm_arch).rpm',
1037              ],
1038              'action': [ '<@(rpm_cmd)', '-c', '<(channel)', ],
1039            },
1040          ],
1041        },
1042      ],
1043    }],
1044    ['OS=="mac"', {
1045      'variables': {
1046        'mac_packaging_dir':
1047            '<(PRODUCT_DIR)/<(mac_product_name) Packaging',
1048        # <(PRODUCT_DIR) expands to $(BUILT_PRODUCTS_DIR), which doesn't
1049        # work properly in a shell script, where ${BUILT_PRODUCTS_DIR} is
1050        # needed.
1051        'mac_packaging_sh_dir':
1052            '${BUILT_PRODUCTS_DIR}/<(mac_product_name) Packaging',
1053      }, # variables
1054      'targets': [
1055        {
1056          'target_name': 'installer_packaging',
1057          'type': 'none',
1058          'dependencies': [
1059            'installer/mac/third_party/bsdiff/goobsdiff.gyp:*',
1060            'installer/mac/third_party/xz/xz.gyp:*',
1061          ],
1062          'conditions': [
1063            ['buildtype=="Official"', {
1064              'actions': [
1065                {
1066                  # Create sign.sh, the script that the packaging system will
1067                  # use to sign the .app bundle.
1068                  'action_name': 'Make sign.sh',
1069                  'variables': {
1070                    'make_signers_sh_path': 'installer/mac/make_signers.sh',
1071                  },
1072                  'inputs': [
1073                    '<(make_signers_sh_path)',
1074                    'installer/mac/sign_app.sh.in',
1075                    'installer/mac/sign_versioned_dir.sh.in',
1076                    'installer/mac/app_resource_rules.plist.in',
1077                    '<(version_path)',
1078                  ],
1079                  'outputs': [
1080                    '<(mac_packaging_dir)/sign_app.sh',
1081                    '<(mac_packaging_dir)/sign_versioned_dir.sh',
1082                    '<(mac_packaging_dir)/app_resource_rules.plist',
1083                  ],
1084                  'action': [
1085                    '<(make_signers_sh_path)',
1086                    '<(mac_packaging_sh_dir)',
1087                    '<(mac_product_name)',
1088                    '<(version_full)',
1089                  ],
1090                },
1091              ],  # actions
1092            }],  # buildtype=="Official"
1093            ['branding=="Chrome" and buildtype=="Official"', {
1094              'actions': [
1095                {
1096                  # copy_keychain_reauthorize.sh explains why this isn't in a
1097                  # 'copies' block, but briefly: this is a prebuilt signed
1098                  # binary component that relies on a correct signature to
1099                  # function properly, and a normal 'copies' block sadly makes
1100                  # a trivial modification to the file such that its signature
1101                  # is no longer valid.
1102                  'action_name': 'Copy keychain_reauthorize',
1103                  'variables': {
1104                    'keychain_reauthorize_path': 'tools/build/mac/copy_keychain_reauthorize.sh',
1105                    'keychain_reauthorize_normal_path': 'installer/mac/internal/keychain_reauthorize/com.google.Chrome',
1106                    'keychain_reauthorize_canary_path': 'installer/mac/internal/keychain_reauthorize/com.google.Chrome.canary',
1107                    'keychain_reauthorize_output_dir': '<(mac_packaging_dir)/.keychain_reauthorize',
1108                  },
1109                  'inputs': [
1110                    '<(keychain_reauthorize_path)',
1111                    '<(keychain_reauthorize_normal_path)',
1112                    '<(keychain_reauthorize_canary_path)',
1113                  ],
1114                  'outputs': [
1115                    '<(keychain_reauthorize_output_dir)/com.google.Chrome',
1116                    '<(keychain_reauthorize_output_dir)/com.google.Chrome.canary',
1117                  ],
1118                  'action': [
1119                    '<(keychain_reauthorize_path)',
1120                    '<(keychain_reauthorize_output_dir)',
1121                    '<(keychain_reauthorize_normal_path)',
1122                    '<(keychain_reauthorize_canary_path)',
1123                  ],
1124                },
1125              ],  # actions
1126            }],  # branding=="Chrome" and buildtype=="Official"
1127          ],  # conditions
1128          'copies': [
1129            {
1130              # Put the files where the packaging system will find them. The
1131              # packager will use these when building the "full installer"
1132              # disk images and delta/differential update disk images.
1133              'destination': '<(mac_packaging_dir)',
1134              'files': [
1135                '<(PRODUCT_DIR)/goobsdiff',
1136                '<(PRODUCT_DIR)/goobspatch',
1137                '<(PRODUCT_DIR)/liblzma_decompress.dylib',
1138                '<(PRODUCT_DIR)/xz',
1139                '<(PRODUCT_DIR)/xzdec',
1140                'installer/mac/dirdiffer.sh',
1141                'installer/mac/dirpatcher.sh',
1142                'installer/mac/dmgdiffer.sh',
1143                'installer/mac/pkg-dmg',
1144              ],
1145              'conditions': [
1146                ['mac_keystone==1', {
1147                  'files': [
1148                    'installer/mac/keystone_install.sh',
1149                  ],
1150                }],  # mac_keystone
1151                ['branding=="Chrome" and buildtype=="Official"', {
1152                  'files': [
1153                    'app/theme/google_chrome/app_canary.icns',
1154                    'app/theme/google_chrome/document_canary.icns',
1155                    'installer/mac/internal/chrome_canary_dmg_dsstore',
1156                    'installer/mac/internal/chrome_canary_dmg_icon.icns',
1157                    'installer/mac/internal/chrome_dmg_background.png',
1158                    'installer/mac/internal/chrome_dmg_dsstore',
1159                    'installer/mac/internal/chrome_dmg_icon.icns',
1160                    'installer/mac/internal/generate_dmgs',
1161                  ],
1162                }],  # branding=="Chrome" and buildtype=="Official"
1163              ],  # conditions
1164            },
1165          ],  # copies
1166        },  # target: installer_packaging
1167        {
1168          'target_name': 'gcapi_lib',
1169          'type': 'static_library',
1170          'include_dirs': [
1171            '..',
1172          ],
1173          'sources': [
1174            'installer/gcapi_mac/gcapi.h',
1175            'installer/gcapi_mac/gcapi.mm',
1176          ],
1177          'link_settings': {
1178            'libraries': [
1179              '$(SDKROOT)/System/Library/Frameworks/Cocoa.framework',
1180            ],
1181          },
1182          'xcode_settings': {
1183            'ARCHS': [ 'i386', 'x86_64' ],
1184            'MACOSX_DEPLOYMENT_TARGET': '10.4',
1185            'GCC_ENABLE_OBJC_GC': 'supported',
1186          },
1187        },
1188        {
1189          'target_name': 'gcapi_example',
1190          'type': 'executable',
1191          'dependencies': [
1192            'gcapi_lib',
1193          ],
1194          'include_dirs': [
1195            '..',
1196          ],
1197          'sources': [
1198            'installer/gcapi_mac/gcapi_example_client.mm',
1199          ],
1200        },
1201      ],  # targets
1202    }],  # OS=="mac"
1203    [ 'branding == "Chrome"', {
1204      'variables': {
1205         'branding_dir': 'app/theme/google_chrome',
1206         'branding_dir_100': 'app/theme/default_100_percent/google_chrome',
1207      },
1208    }, { # else branding!="Chrome"
1209      'variables': {
1210         'branding_dir': 'app/theme/chromium',
1211         'branding_dir_100': 'app/theme/default_100_percent/chromium',
1212      },
1213    }],
1214  ],
1215}
1216