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