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