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