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