blob: 8f0a4814dff61947b1622dac9c0a13f20512634b [file] [log] [blame]
[email protected]23bb71f2011-04-21 22:22:101# Copyright (c) 2011 The Chromium Authors. All rights reserved.
[email protected]dd363682009-12-28 20:30:462# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5{
6 'target_defaults': {
7 'variables': {
8 'chrome_exe_target': 0,
9 },
10 'target_conditions': [
11 ['chrome_exe_target==1', {
12 'sources': [
13 # .cc, .h, and .mm files under app that are used on all
14 # platforms, including both 32-bit and 64-bit Windows.
15 # Test files are not included.
16 'app/breakpad_win.cc',
17 'app/breakpad_win.h',
[email protected]dd363682009-12-28 20:30:4618 'app/chrome_exe_main_gtk.cc',
[email protected]f8ce4652010-11-04 00:33:2419 'app/chrome_exe_main_mac.mm',
20 'app/chrome_exe_main_win.cc',
[email protected]dd363682009-12-28 20:30:4621 'app/chrome_exe_resource.h',
22 'app/client_util.cc',
23 'app/client_util.h',
24 'app/hard_error_handler_win.cc',
25 'app/hard_error_handler_win.h',
26 'app/scoped_ole_initializer.h',
[email protected]cc9a9a882011-03-03 20:09:1027 # TODO(bradnelson): once automatic generation of 64 bit targets on
28 # Windows is ready, take this out and add a dependency on
29 # content_common.gypi.
30 '../content/common/content_switches.cc',
31 '../content/common/content_switches.h',
[email protected]dd363682009-12-28 20:30:4632 ],
33 'mac_bundle_resources': [
34 'app/app-Info.plist',
35 ],
36 # TODO(mark): Come up with a fancier way to do this. It should only
37 # be necessary to list app-Info.plist once, not the three times it is
38 # listed here.
39 'mac_bundle_resources!': [
40 'app/app-Info.plist',
41 ],
42 'xcode_settings': {
[email protected]c39df1b2010-03-26 20:46:0643 'CHROMIUM_STRIP_SAVE_FILE': 'app/app.saves',
[email protected]dd363682009-12-28 20:30:4644 'INFOPLIST_FILE': 'app/app-Info.plist',
45 },
46 'conditions': [
47 ['OS=="win"', {
[email protected]b332f93f2010-10-12 22:21:4048 # TODO(scottbyer): This is a temporary workaround. The right fix
49 # is to change the output file to be in $(IntDir) for this project
50 # and the .dll project and use the hardlink script to link it back
51 # to $(OutDir).
52 'configurations': {
53 'Debug_Base': {
54 'msvs_settings': {
55 'VCLinkerTool': {
56 'LinkIncremental': '1',
57 },
58 },
59 },
60 },
[email protected]dd363682009-12-28 20:30:4661 'msvs_settings': {
62 'VCLinkerTool': {
63 'DelayLoadDLLs': [
64 'dbghelp.dll',
65 'dwmapi.dll',
66 'uxtheme.dll',
67 'ole32.dll',
68 'oleaut32.dll',
69 ],
70 # Set /SUBSYSTEM:WINDOWS for chrome.exe itself.
71 'SubSystem': '2',
72 },
73 'VCManifestTool': {
74 'AdditionalManifestFiles': '$(ProjectDir)\\app\\chrome.exe.manifest',
75 },
76 },
77 'actions': [
78 {
[email protected]dd363682009-12-28 20:30:4679 'action_name': 'first_run',
80 'inputs': [
81 'app/FirstRun',
82 ],
83 'outputs': [
84 '<(PRODUCT_DIR)/First Run',
85 ],
86 'action': ['cp', '-f', '<@(_inputs)', '<@(_outputs)'],
87 'message': 'Copy first run complete sentinel file',
88 },
89 ],
90 }, { # 'OS!="win"
91 'sources!': [
[email protected]dd363682009-12-28 20:30:4692 'app/client_util.cc',
93 ]
94 }],
95 ],
96 }],
97 ],
98 },
99 'targets': [
100 {
101 'target_name': 'chrome',
102 'type': 'executable',
103 'mac_bundle': 1,
[email protected]dd363682009-12-28 20:30:46104 'variables': {
105 'chrome_exe_target': 1,
[email protected]ce04cfd2011-01-18 18:36:55106 'use_system_xdg_utils%': 0,
[email protected]771e1452011-05-12 19:07:20107 'disable_pie%': 0,
[email protected]dd363682009-12-28 20:30:46108 },
109 'conditions': [
[email protected]cb5e5072011-05-19 21:49:41110 ['os_posix == 1 and OS != "mac"', {
[email protected]dd363682009-12-28 20:30:46111 'actions': [
112 {
113 'action_name': 'manpage',
114 'conditions': [
115 [ 'branding == "Chrome"', {
116 'variables': {
117 'name': 'Google Chrome',
118 'filename': 'google-chrome',
119 'confdir': 'google-chrome',
120 },
121 }, { # else branding!="Chrome"
122 'variables': {
123 'name': 'Chromium',
124 'filename': 'chromium-browser',
125 'confdir': 'chromium',
126 },
127 }],
128 ],
129 'inputs': [
130 'tools/build/linux/sed.sh',
131 'app/resources/manpage.1.in',
132 ],
133 'outputs': [
134 '<(PRODUCT_DIR)/chrome.1',
135 ],
136 'action': [
137 'tools/build/linux/sed.sh',
138 'app/resources/manpage.1.in',
139 '<@(_outputs)',
140 '-e', 's/@@NAME@@/<(name)/',
141 '-e', 's/@@FILENAME@@/<(filename)/',
142 '-e', 's/@@CONFDIR@@/<(confdir)/',
143 ],
144 'message': 'Generating manpage'
145 },
146 ],
147 'conditions': [
[email protected]771e1452011-05-12 19:07:20148 ['linux_use_tcmalloc==1', {
[email protected]dd363682009-12-28 20:30:46149 'dependencies': [
150 '<(allocator_target)',
151 ],
152 },
153 ],
[email protected]16d71b0d2011-06-22 00:43:53154 # TODO(rkc): Remove disable_pie (and instead always use
155 # -pie) once we have a fix for remote gdb and are able to
156 # correctly get section header offsets for pie
157 # executables. Currently -pie breaks remote debugging.
[email protected]771e1452011-05-12 19:07:20158 ['disable_pie==1', {
[email protected]16d71b0d2011-06-22 00:43:53159 'ldflags': ['-nopie'],
160 }, {
[email protected]1ad5a7b2011-06-24 03:15:13161 # Building with -pie needs investigating on ARM.
162 # For now, at least use it on Linux Intel.
[email protected]16d71b0d2011-06-22 00:43:53163 'conditions': [
[email protected]1ad5a7b2011-06-24 03:15:13164 ['target_arch=="x64" or target_arch=="ia32"', {
[email protected]16d71b0d2011-06-22 00:43:53165 'ldflags': ['-pie'],
166 }],
167 ],
[email protected]771e1452011-05-12 19:07:20168 }],
[email protected]ce04cfd2011-01-18 18:36:55169 ['use_system_xdg_utils==0', {
170 'copies': [
171 {
172 'destination': '<(PRODUCT_DIR)',
173 'files': ['tools/build/linux/chrome-wrapper',
174 '../third_party/xdg-utils/scripts/xdg-mime',
175 '../third_party/xdg-utils/scripts/xdg-settings',
176 ],
177 # The wrapper script above may need to generate a .desktop
178 # file, which requires an icon. So, copy one next to the
179 # script.
180 'conditions': [
181 ['branding=="Chrome"', {
182 'files': ['app/theme/google_chrome/product_logo_48.png']
183 }, { # else: 'branding!="Chrome"
184 'files': ['app/theme/chromium/product_logo_48.png']
185 }],
186 ],
187 },
188 ],
189 }],
[email protected]dd363682009-12-28 20:30:46190 ],
191 'dependencies': [
192 # On Linux, link the dependencies (libraries) that make up actual
193 # Chromium functionality directly into the executable.
194 '<@(chromium_dependencies)',
[email protected]8da36682010-11-18 19:29:00195 # Needed for chrome_main.cc initialization of libraries.
[email protected]971a718b2010-06-23 22:07:52196 '../build/linux/system.gyp:dbus-glib',
[email protected]dd363682009-12-28 20:30:46197 '../build/linux/system.gyp:gtk',
198 'packed_resources',
[email protected]f9886382010-03-10 04:45:54199 # Needed to use the master_preferences functions
[email protected]5c14951a2010-05-24 00:35:46200 'installer_util',
[email protected]dd363682009-12-28 20:30:46201 ],
202 'sources': [
[email protected]dd363682009-12-28 20:30:46203 'app/chrome_dll_resource.h',
[email protected]a09270ae2011-02-28 22:21:32204 'app/chrome_main.cc',
205 'app/chrome_main_posix.cc',
[email protected]dd363682009-12-28 20:30:46206 ],
[email protected]dd363682009-12-28 20:30:46207 }],
[email protected]dd363682009-12-28 20:30:46208 ['OS=="mac"', {
[email protected]dd363682009-12-28 20:30:46209 # 'branding' is a variable defined in common.gypi
210 # (e.g. "Chromium", "Chrome")
211 'conditions': [
212 ['branding=="Chrome"', {
213 'mac_bundle_resources': [
214 'app/theme/google_chrome/app.icns',
215 'app/theme/google_chrome/document.icns',
[email protected]7d791652010-12-01 16:34:49216 'browser/ui/cocoa/applescript/scripting.sdef',
[email protected]dd363682009-12-28 20:30:46217 ],
218 }, { # else: 'branding!="Chrome"
219 'mac_bundle_resources': [
220 'app/theme/chromium/app.icns',
221 'app/theme/chromium/document.icns',
[email protected]7d791652010-12-01 16:34:49222 'browser/ui/cocoa/applescript/scripting.sdef',
[email protected]dd363682009-12-28 20:30:46223 ],
224 }],
225 ['mac_breakpad==1', {
226 'variables': {
227 # A real .dSYM is needed for dump_syms to operate on.
228 'mac_real_dsym': 1,
229 },
[email protected]c8dc7e62011-06-27 21:31:44230 'xcode_settings': {
231 # With mac_real_dsym set, strip_from_xcode won't be used.
232 # Specify CHROMIUM_STRIP_SAVE_FILE directly to Xcode.
233 'STRIPFLAGS': '-s $(CHROMIUM_STRIP_SAVE_FILE)',
234 },
[email protected]dd363682009-12-28 20:30:46235 'dependencies': [
236 '../breakpad/breakpad.gyp:dump_syms',
237 '../breakpad/breakpad.gyp:symupload',
238 ],
239 # The "Dump Symbols" post-build step is in a target_conditions
240 # block so that it will follow the "Strip If Needed" step if that
241 # is also being used. There is no standard configuration where
242 # both of these steps occur together, but Mark likes to use this
243 # configuraiton sometimes when testing Breakpad-enabled builds
244 # without the time overhead of creating real .dSYM files. When
245 # both "Dump Symbols" and "Strip If Needed" are present, "Dump
246 # Symbols" must come second because "Strip If Needed" creates
247 # a fake .dSYM that dump_syms needs to fake dump. Since
248 # "Strip If Needed" is added in a target_conditions block in
249 # common.gypi, "Dump Symbols" needs to be in an (always true)
250 # target_conditions block.
251 'target_conditions': [
252 ['1 == 1', {
253 'postbuilds': [
254 {
255 'postbuild_name': 'Dump Symbols',
256 'variables': {
257 'dump_product_syms_path':
258 'tools/build/mac/dump_product_syms',
259 },
260 'action': ['<(dump_product_syms_path)',
261 '<(branding)'],
262 },
263 ],
264 }],
265 ],
266 }], # mac_breakpad
[email protected]dd363682009-12-28 20:30:46267 ],
268 'product_name': '<(mac_product_name)',
269 'xcode_settings': {
270 # chrome/app/app-Info.plist has:
271 # CFBundleIdentifier of CHROMIUM_BUNDLE_ID
272 # CFBundleName of CHROMIUM_SHORT_NAME
273 # CFBundleSignature of CHROMIUM_CREATOR
274 # Xcode then replaces these values with the branded values we set
275 # as settings on the target.
276 'CHROMIUM_BUNDLE_ID': '<(mac_bundle_id)',
277 'CHROMIUM_CREATOR': '<(mac_creator)',
278 'CHROMIUM_SHORT_NAME': '<(branding)',
279 },
280 'dependencies': [
281 'helper_app',
282 'infoplist_strings_tool',
[email protected]9a5e72862010-09-02 16:16:58283 'chrome_manifest_bundle',
284 ],
285 'mac_bundle_resources': [
286 '<(PRODUCT_DIR)/<(mac_bundle_id).manifest',
[email protected]dd363682009-12-28 20:30:46287 ],
288 'actions': [
289 {
290 # Generate the InfoPlist.strings file
[email protected]47d20942010-07-16 18:46:52291 'action_name': 'Generate InfoPlist.strings files',
[email protected]dd363682009-12-28 20:30:46292 'variables': {
293 'tool_path': '<(PRODUCT_DIR)/infoplist_strings_tool',
294 # Unique dir to write to so the [lang].lproj/InfoPlist.strings
295 # for the main app and the helper app don't name collide.
296 'output_path': '<(INTERMEDIATE_DIR)/app_infoplist_strings',
297 },
298 'conditions': [
299 [ 'branding == "Chrome"', {
300 'variables': {
301 'branding_name': 'google_chrome_strings',
302 },
303 }, { # else branding!="Chrome"
304 'variables': {
305 'branding_name': 'chromium_strings',
306 },
307 }],
308 ],
309 'inputs': [
310 '<(tool_path)',
311 '<(version_path)',
312 # TODO: remove this helper when we have loops in GYP
313 '>!@(<(apply_locales_cmd) \'<(grit_out_dir)/<(branding_name)_ZZLOCALE.pak\' <(locales))',
314 ],
315 'outputs': [
316 # TODO: remove this helper when we have loops in GYP
317 '>!@(<(apply_locales_cmd) -d \'<(output_path)/ZZLOCALE.lproj/InfoPlist.strings\' <(locales))',
318 ],
319 'action': [
320 '<(tool_path)',
321 '-b', '<(branding_name)',
322 '-v', '<(version_path)',
323 '-g', '<(grit_out_dir)',
324 '-o', '<(output_path)',
325 '-t', 'main',
326 '<@(locales)',
327 ],
328 'message': 'Generating the language InfoPlist.strings files',
329 'process_outputs_as_mac_bundle_resources': 1,
330 },
331 ],
332 'copies': [
333 {
334 'destination': '<(PRODUCT_DIR)/<(mac_product_name).app/Contents/Versions/<(version_full)',
335 'files': [
336 '<(PRODUCT_DIR)/<(mac_product_name) Helper.app',
337 ],
338 },
339 ],
340 'postbuilds': [
341 {
342 'postbuild_name': 'Copy <(mac_product_name) Framework.framework',
343 'action': [
344 'tools/build/mac/copy_framework_unversioned',
345 '${BUILT_PRODUCTS_DIR}/<(mac_product_name) Framework.framework',
346 '${BUILT_PRODUCTS_DIR}/${CONTENTS_FOLDER_PATH}/Versions/<(version_full)',
347 ],
348 },
349 {
350 # Modify the Info.plist as needed. The script explains why this
351 # is needed. This is also done in the helper_app and chrome_dll
352 # targets. Use -b0 to not include any Breakpad information; that
353 # all goes into the framework's Info.plist. Keystone information
[email protected]02a46a32010-06-09 22:39:17354 # is included if Keystone is enabled. The application reads
355 # Keystone keys from this plist and not the framework's, and
356 # the ticket will reference this Info.plist to determine the tag
357 # of the installed product. Use -s1 to include Subversion
[email protected]0ada4ca2011-05-18 19:10:45358 # information. The -p flag controls whether to insert PDF as a
359 # supported type identifier that can be opened.
[email protected]dd363682009-12-28 20:30:46360 'postbuild_name': 'Tweak Info.plist',
361 'action': ['<(tweak_info_plist_path)',
362 '-b0',
363 '-k<(mac_keystone)',
364 '-s1',
[email protected]0ada4ca2011-05-18 19:10:45365 '-p<(internal_pdf)',
[email protected]dd363682009-12-28 20:30:46366 '<(branding)',
367 '<(mac_bundle_id)'],
368 },
369 {
370 'postbuild_name': 'Clean up old versions',
371 'action': [
372 'tools/build/mac/clean_up_old_versions',
373 '<(version_full)'
374 ],
375 },
376 ], # postbuilds
377 }],
378 ['OS=="linux"', {
379 'conditions': [
380 ['branding=="Chrome"', {
381 'dependencies': [
[email protected]5c14951a2010-05-24 00:35:46382 'linux_installer_configs',
[email protected]dd363682009-12-28 20:30:46383 ],
384 }],
385 ['selinux==0', {
386 'dependencies': [
387 '../sandbox/sandbox.gyp:sandbox',
388 ],
389 }],
[email protected]dd363682009-12-28 20:30:46390 ],
391 }],
392 ['OS != "mac"', {
393 'conditions': [
[email protected]27b1d0622011-06-09 18:42:00394 # TODO: add a:
395 # 'product_name': 'chromium'
396 # whenever we convert the rest of the infrastructure
397 # (buildbots etc.) to understand the branding gyp define.
398 # NOTE: chrome/app/theme/chromium/BRANDING and
399 # chrome/app/theme/google_chrome/BRANDING have the short name
400 # "chrome" etc.; should we try to extract from there instead?
401
[email protected]a8d61ff2010-06-15 02:16:24402 # On Mac, this is done in chrome_dll.gypi.
403 ['internal_pdf', {
404 'dependencies': [
405 '../pdf/pdf.gyp:pdf',
406 ],
407 }],
[email protected]dd363682009-12-28 20:30:46408 ],
[email protected]275538b92010-06-11 07:18:23409 'dependencies': [
410 'packed_extra_resources',
[email protected]cd1e4cd2010-06-14 23:30:06411 # Copy Flash Player files to PRODUCT_DIR if applicable. Let the .gyp
412 # file decide what to do on a per-OS basis; on Mac, internal plugins
413 # go inside the framework, so this dependency is in chrome_dll.gypi.
414 '../third_party/adobe/flash/flash_player.gyp:flash_player',
[email protected]275538b92010-06-11 07:18:23415 ],
[email protected]dd363682009-12-28 20:30:46416 }],
417 ['OS=="mac" or OS=="win"', {
418 'dependencies': [
419 # On Windows and Mac, make sure we've built chrome_dll, which
420 # contains all of the library code with Chromium functionality.
421 'chrome_dll',
422 ],
423 }],
424 ['OS=="win"', {
425 'dependencies': [
[email protected]5e0a9172011-07-19 23:24:37426 'chrome_version_resources',
[email protected]5c14951a2010-05-24 00:35:46427 'installer_util',
428 'installer_util_strings',
[email protected]23bb71f2011-04-21 22:22:10429 '../base/base.gyp:base',
[email protected]dd363682009-12-28 20:30:46430 '../breakpad/breakpad.gyp:breakpad_handler',
431 '../breakpad/breakpad.gyp:breakpad_sender',
432 '../sandbox/sandbox.gyp:sandbox',
433 'app/locales/locales.gyp:*',
[email protected]f86369722011-02-17 13:25:23434 'app/policy/cloud_policy_codegen.gyp:policy',
[email protected]dd363682009-12-28 20:30:46435 ],
[email protected]5e0a9172011-07-19 23:24:37436 'sources': [
437 'app/chrome_exe.rc',
438 '<(SHARED_INTERMEDIATE_DIR)/chrome_version/chrome_exe_version.rc',
439 ],
[email protected]dd363682009-12-28 20:30:46440 'msvs_settings': {
441 'VCLinkerTool': {
442 'ImportLibrary': '$(OutDir)\\lib\\chrome_exe.lib',
443 'ProgramDatabaseFile': '$(OutDir)\\chrome_exe.pdb',
444 },
445 },
446 }],
447 ],
448 },
449 ],
450 'conditions': [
451 ['OS=="win"', {
452 'targets': [
453 {
454 'target_name': 'chrome_nacl_win64',
455 'type': 'executable',
[email protected]55995882010-02-25 21:02:26456 'product_name': 'nacl64',
[email protected]dd363682009-12-28 20:30:46457 'variables': {
458 'chrome_exe_target': 1,
459 },
460 'dependencies': [
461 # On Windows make sure we've built Win64 version of chrome_dll,
462 # which contains all of the library code with Chromium
463 # functionality.
[email protected]5e0a9172011-07-19 23:24:37464 'chrome_version_resources',
[email protected]1e16fd462011-02-16 14:37:00465 'chrome_dll_nacl_win64',
[email protected]f86369722011-02-17 13:25:23466 'common_constants_win64',
467 'installer_util_nacl_win64',
468 'app/policy/cloud_policy_codegen.gyp:policy_win64',
[email protected]dd363682009-12-28 20:30:46469 '../breakpad/breakpad.gyp:breakpad_handler_win64',
470 '../breakpad/breakpad.gyp:breakpad_sender_win64',
471 '../base/base.gyp:base_nacl_win64',
[email protected]63e39a282011-07-13 20:41:28472 '../base/base.gyp:base_static_win64',
[email protected]d77ada42010-03-24 23:10:37473 '../sandbox/sandbox.gyp:sandbox_win64',
[email protected]dd363682009-12-28 20:30:46474 ],
475 'defines': [
476 '<@(nacl_win64_defines)',
477 ],
478 'include_dirs': [
479 '<(SHARED_INTERMEDIATE_DIR)/chrome',
480 ],
[email protected]5e0a9172011-07-19 23:24:37481 'sources': [
482 '<(SHARED_INTERMEDIATE_DIR)/chrome_version/nacl64_exe_version.rc',
483 ],
[email protected]dd363682009-12-28 20:30:46484 'msvs_settings': {
485 'VCLinkerTool': {
[email protected]55995882010-02-25 21:02:26486 'ImportLibrary': '$(OutDir)\\lib\\nacl64_exe.lib',
487 'ProgramDatabaseFile': '$(OutDir)\\nacl64_exe.pdb',
[email protected]dd363682009-12-28 20:30:46488 },
489 },
[email protected]dd363682009-12-28 20:30:46490 'configurations': {
491 'Common_Base': {
492 'msvs_target_platform': 'x64',
493 },
494 },
495 },
496 ],
497 }],
[email protected]dd363682009-12-28 20:30:46498 ],
499}