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