Add ICU message format support
[chromium-blink-merge.git] / chrome / chrome_resources.gyp
blobfb3d93a4f8984250a6ff44f1d989da70af7e4f7f
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.
5   'variables': {
6     'grit_out_dir': '<(SHARED_INTERMEDIATE_DIR)/chrome',
7     'about_credits_file': '<(SHARED_INTERMEDIATE_DIR)/about_credits.html',
8     'additional_modules_list_file': '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/internal/additional_modules_list.txt',
9     'omnibox_mojom_file': '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/ui/webui/omnibox/omnibox.mojom.js',
10   },
11   'targets': [
12     {
13       # GN version: //chrome:extra_resources
14       'target_name': 'chrome_extra_resources',
15       'type': 'none',
16       # These resources end up in resources.pak because they are resources
17       # used by internal pages.  Putting them in a separate pak file makes
18       # it easier for us to reference them internally.
19       'actions': [
20         {
21           # GN version: //chrome/browser/resources:memory_internals_resources
22           'action_name': 'generate_memory_internals_resources',
23           'variables': {
24             'grit_grd_file': 'browser/resources/memory_internals_resources.grd',
25           },
26           'includes': [ '../build/grit_action.gypi' ],
27         },
28         {
29           # GN version: //chrome/browser/resources:net_internals_resources
30           'action_name': 'generate_net_internals_resources',
31           'variables': {
32             'grit_grd_file': 'browser/resources/net_internals_resources.grd',
33           },
34           'includes': [ '../build/grit_action.gypi' ],
35         },
36         {
37           # GN version: //chrome/browser/resources:invalidations_resources
38           'action_name': 'generate_invalidations_resources',
39           'variables': {
40             'grit_grd_file': 'browser/resources/invalidations_resources.grd',
41             },
42           'includes': ['../build/grit_action.gypi' ],
43         },
44         {
45           # GN version: //chrome/browser/resources:password_manager_internals_resources
46           'action_name': 'generate_password_manager_internals_resources',
47           'variables': {
48             'grit_grd_file': 'browser/resources/password_manager_internals_resources.grd',
49           },
50           'includes': [ '../build/grit_action.gypi' ],
51         },
52         {
53           # GN version: //chrome/browser/resources:signin_internals_resources
54           'action_name': 'generate_signin_internals_resources',
55           'variables': {
56             'grit_grd_file': 'browser/resources/signin_internals_resources.grd',
57             },
58           'includes': ['../build/grit_action.gypi' ],
59         },
60         {
61           # GN version: //chrome/browser/resources:sync_internals_resources
62           'action_name': 'generate_sync_internals_resources',
63           'variables': {
64             'grit_grd_file': 'browser/resources/sync_internals_resources.grd',
65           },
66           'includes': [ '../build/grit_action.gypi' ],
67         },
68         {
69           # GN version: //chrome/browser/resources:translate_internals_resources
70           'action_name': 'generate_translate_internals_resources',
71           'variables': {
72             'grit_grd_file': 'browser/resources/translate_internals_resources.grd',
73           },
74           'includes': [ '../build/grit_action.gypi' ],
75         },
76       ],
77       'includes': [ '../build/grit_target.gypi' ],
78       'conditions': [
79         ['OS != "ios"', {
80           'dependencies': [
81             '../components/components_resources.gyp:components_resources',
82             '../content/browser/devtools/devtools_resources.gyp:devtools_resources',
83             '../content/browser/tracing/tracing_resources.gyp:tracing_resources',
84             'browser/devtools/webrtc_device_provider_resources.gyp:webrtc_device_provider_resources',
85           ],
86           'actions': [
87             {
88               # GN version: //chrome/browser/resources:component_extension_resources
89               'action_name': 'generate_component_extension_resources',
90               'variables': {
91                 'grit_grd_file': 'browser/resources/component_extension_resources.grd',
92               },
93               'includes': [ '../build/grit_action.gypi' ],
94             },
95             {
96               # GN version: //chrome/browser/resources:options_resources
97               'action_name': 'generate_options_resources',
98               'variables': {
99                 'grit_grd_file': 'browser/resources/options_resources.grd',
100               },
101               'includes': [ '../build/grit_action.gypi' ],
102             },
103             {
104               # GN version: //chrome/browser/resources:settings_resources
105               'action_name': 'generate_settings_resources',
106               'variables': {
107                 'grit_grd_file': 'browser/resources/settings/settings_resources.grd',
108               },
109               'includes': [ '../build/grit_action.gypi' ],
110             },
111           ],
112           'copies': [
113             {
114               # GN version: //chrome/browser/resources:extension_resource_demo
115               'destination': '<(PRODUCT_DIR)/resources/extension/demo',
116               'files': [
117                 'browser/resources/extension_resource/demo/library.js',
118               ],
119             },
120           ],
121         }],
122         ['chromeos==1 and disable_nacl==0 and disable_nacl_untrusted==0', {
123           'dependencies': [
124             'browser/resources/chromeos/chromevox/chromevox.gyp:chromevox',
125           ],
126         }],
127         ['enable_extensions==1', {
128           'actions': [
129             {
130               # GN version: //chrome/browser/resources:quota_internals_resources
131               'action_name': 'generate_quota_internals_resources',
132               'variables': {
133                 'grit_grd_file': 'browser/resources/quota_internals_resources.grd',
134               },
135               'includes': [ '../build/grit_action.gypi' ],
136             },
137             {
138               # GN version: //chrome/browser/resources:sync_file_system_internals_resources
139               'action_name': 'generate_sync_file_system_internals_resources',
140               'variables': {
141                 'grit_grd_file': 'browser/resources/sync_file_system_internals_resources.grd',
142               },
143               'includes': [ '../build/grit_action.gypi' ],
144             },
145           ],
146         }],
147       ],
148     },
149     {
150       # GN version: //chrome/browser:chrome_internal_resources_gen
151       'target_name': 'chrome_internal_resources_gen',
152       'type': 'none',
153       'conditions': [
154         ['branding=="Chrome"', {
155           'actions': [
156             {
157               'action_name': 'generate_transform_additional_modules_list',
158               'variables': {
159                 'additional_modules_input_path':
160                   'browser/internal/resources/additional_modules_list.input',
161                 'additional_modules_py_path':
162                   'browser/internal/transform_additional_modules_list.py',
163               },
164               'inputs': [
165                 '<(additional_modules_input_path)',
166               ],
167               'outputs': [
168                 '<(additional_modules_list_file)',
169               ],
170               'action': [
171                 'python',
172                 '<(additional_modules_py_path)',
173                 '<(additional_modules_input_path)',
174                 '<@(_outputs)',
175               ],
176               'message': 'Transforming additional modules list',
177             }
178           ],
179         }],
180       ],
181     },
182     {
183       # TODO(mark): It would be better if each static library that needed
184       # to run grit would list its own .grd files, but unfortunately some
185       # of the static libraries currently have circular dependencies among
186       # generated headers.
187       #
188       # GN version: //chrome:resources
189       'target_name': 'chrome_resources',
190       'type': 'none',
191       'dependencies': [
192         'about_credits',
193         'chrome_internal_resources_gen',
194         'chrome_web_ui_mojo_bindings.gyp:web_ui_mojo_bindings',
195       ],
196       'actions': [
197         {
198           # GN version: //chrome/browser:resources
199           'action_name': 'generate_browser_resources',
200           'variables': {
201             'grit_grd_file': 'browser/browser_resources.grd',
202             'grit_additional_defines': [
203               '-E', 'about_credits_file=<(about_credits_file)',
204               '-E', 'additional_modules_list_file=<(additional_modules_list_file)',
205               '-E', 'omnibox_mojom_file=<(omnibox_mojom_file)',
206             ],
207           },
208           'includes': [ '../build/grit_action.gypi' ],
209         },
210         {
211           # GN version: //chrome/common:resources
212           'action_name': 'generate_common_resources',
213           'variables': {
214             'grit_grd_file': 'common/common_resources.grd',
215           },
216           'includes': [ '../build/grit_action.gypi' ],
217         },
218         {
219           # GN version: //chrome/renderer:resources
220           'action_name': 'generate_renderer_resources',
221           'variables': {
222             'grit_grd_file': 'renderer/resources/renderer_resources.grd',
223           },
224           'includes': [ '../build/grit_action.gypi' ],
225         },
226       ],
227       'conditions': [
228         ['enable_extensions==1', {
229           'actions': [
230             {
231               # GN version: //chrome/common:extensions_api_resources
232               'action_name': 'generate_extensions_api_resources',
233               'variables': {
234                 'grit_grd_file': 'common/extensions_api_resources.grd',
235               },
236               'includes': [ '../build/grit_action.gypi' ],
237             }
238           ],
239         }],
240       ],
241       'includes': [ '../build/grit_target.gypi' ],
242     },
243     {
244       # TODO(mark): It would be better if each static library that needed
245       # to run grit would list its own .grd files, but unfortunately some
246       # of the static libraries currently have circular dependencies among
247       # generated headers.
248       #
249       # GN version: //chrome:strings
250       'target_name': 'chrome_strings',
251       'type': 'none',
252       'actions': [
253         {
254           # GN version: //chrome/app/resources:locale_settings
255           'action_name': 'generate_locale_settings',
256           'variables': {
257             'grit_grd_file': 'app/resources/locale_settings.grd',
258           },
259           'includes': [ '../build/grit_action.gypi' ],
260         },
261         {
262           # GN version: //chrome/app:chromium_strings
263           'action_name': 'generate_chromium_strings',
264           'variables': {
265             'grit_grd_file': 'app/chromium_strings.grd',
266           },
267           'includes': [ '../build/grit_action.gypi' ],
268         },
269         {
270           # GN version: //chrome/app:generated_resources
271           'action_name': 'generate_generated_resources',
272           'variables': {
273             'grit_grd_file': 'app/generated_resources.grd',
274           },
275           'includes': [ '../build/grit_action.gypi' ],
276         },
277         {
278           # GN version: //chrome/app:google_chrome_strings
279           'action_name': 'generate_google_chrome_strings',
280           'variables': {
281             'grit_grd_file': 'app/google_chrome_strings.grd',
282           },
283           'includes': [ '../build/grit_action.gypi' ],
284         },
285       ],
286     },
287     {
288       # GN version: //chrome/app:make_generated_resources_map
289       'target_name': 'chrome_strings_map',
290       'type': 'none',
291       'dependencies': [ 'chrome_strings', ],
292       'actions': [
293         {
294           'action_name': 'generate_resources_map',
295           'inputs': [
296             'browser/metrics/variations/generate_resources_map.py',
297             '<(grit_out_dir)/grit/generated_resources.h'
298           ],
299           'outputs': [
300             '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/metrics/variations/generated_resources_map.cc',
301           ],
302           'action': [
303             'python',
304             'browser/metrics/variations/generate_resources_map.py',
305             '<(grit_out_dir)/grit/generated_resources.h',
306             '<(SHARED_INTERMEDIATE_DIR)/chrome/browser/metrics/variations/generated_resources_map.cc'
307           ],
308           'message': 'Generating generated resources map.',
309         }
310       ],
311     },
312     {
313       # GN version: //chrome/app/resources:platform_locale_settings
314       'target_name': 'platform_locale_settings',
315       'type': 'none',
316       'variables': {
317         'conditions': [
318           ['OS=="win"', {
319             'platform_locale_settings_grd':
320                 'app/resources/locale_settings_win.grd',
321           },],
322           ['OS=="linux"', {
323             'conditions': [
324               ['chromeos==1', {
325                 'platform_locale_settings_grd':
326                     'app/resources/locale_settings_<(branding_path_component)os.grd',
327               }, {  # chromeos==0
328                 'platform_locale_settings_grd':
329                     'app/resources/locale_settings_linux.grd',
330               }],
331             ],
332           },],
333           ['os_posix == 1 and OS != "mac" and OS != "ios" and OS != "linux"', {
334             'platform_locale_settings_grd':
335                 'app/resources/locale_settings_linux.grd',
336           },],
337           ['OS == "mac" or OS == "ios"', {
338             'platform_locale_settings_grd':
339                 'app/resources/locale_settings_mac.grd',
340           }],
341         ],  # conditions
342       },  # variables
343       'actions': [
344         {
345           'action_name': 'generate_platform_locale_settings',
346           'variables': {
347             'grit_grd_file': '<(platform_locale_settings_grd)',
348           },
349           'includes': [ '../build/grit_action.gypi' ],
350         },
351       ],
352       'includes': [ '../build/grit_target.gypi' ],
353     },
354     {
355       # GN version: //chrome/app/theme:theme_resources
356       'target_name': 'theme_resources',
357       'type': 'none',
358       'dependencies': [
359         '../ui/resources/ui_resources.gyp:ui_resources',
360         'chrome_unscaled_resources',
361       ],
362       'actions': [
363         {
364           'action_name': 'generate_theme_resources',
365           'variables': {
366             'grit_grd_file': 'app/theme/theme_resources.grd',
367           },
368           'includes': [ '../build/grit_action.gypi' ],
369         },
370       ],
371       'includes': [ '../build/grit_target.gypi' ],
372     },
373     {
374       # GN version: //chrome:packed_extra_resources
375       'target_name': 'packed_extra_resources',
376       'type': 'none',
377       'dependencies': [
378         'chrome_extra_resources',
379         'packed_resources',
380       ],
381       'actions': [
382         {
383           'includes': ['chrome_repack_resources.gypi']
384         },
385       ],
386       'conditions': [
387         ['OS != "mac" and OS != "ios"', {
388           # We'll install the resource files to the product directory.  The Mac
389           # copies the results over as bundle resources in its own special way.
390           'copies': [
391             {
392               'destination': '<(PRODUCT_DIR)',
393               'files': [
394                 '<(SHARED_INTERMEDIATE_DIR)/repack/resources.pak'
395               ],
396             },
397           ],
398         }],
399       ],
400     },
401     {
402       # GN version: //chrome:packed_resources
403       'target_name': 'packed_resources',
404       'type': 'none',
405       'dependencies': [  # Update duplicate logic in repack_locales.py
406         # MSVS needs the dependencies explictly named, Make is able to
407         # derive the dependencies from the output files.
408         'chrome_resources',
409         'chrome_strings',
410         'platform_locale_settings',
411         'theme_resources',
412         '<(DEPTH)/components/components_strings.gyp:components_strings',
413         '<(DEPTH)/net/net.gyp:net_resources',
414         '<(DEPTH)/ui/resources/ui_resources.gyp:ui_resources',
415         '<(DEPTH)/ui/strings/ui_strings.gyp:ui_strings',
416       ],
417       'actions': [
418         {
419           # GN version: //chrome:repack_locales_pack
420           'action_name': 'repack_locales_pack',
421           'variables': {
422             'pak_locales': '<(locales)',
423           },
424           'includes': ['chrome_repack_locales.gypi']
425         },
426         {
427           # GN version: //chrome:repack_pseudo_locales_pack
428           'action_name': 'repack_pseudo_locales_pack',
429           'variables': {
430             'pak_locales': '<(pseudo_locales)',
431           },
432           'includes': ['chrome_repack_locales.gypi']
433         },
434         {
435           'includes': ['chrome_repack_chrome_100_percent.gypi']
436         },
437         {
438           'includes': ['chrome_repack_chrome_200_percent.gypi']
439         },
440         {
441           'includes': ['chrome_repack_chrome_material_100_percent.gypi']
442         },
443         {
444           'includes': ['chrome_repack_chrome_material_200_percent.gypi']
445         },
446       ],
447       'conditions': [  # GN version: chrome_repack_locales.gni template("_repack_one_locale")
448         ['OS != "ios"', {
449           'dependencies': [  # Update duplicate logic in repack_locales.py
450             '<(DEPTH)/content/app/resources/content_resources.gyp:content_resources',
451             '<(DEPTH)/content/app/strings/content_strings.gyp:content_strings',
452             '<(DEPTH)/device/bluetooth/bluetooth_strings.gyp:device_bluetooth_strings',
453             '<(DEPTH)/third_party/WebKit/public/blink_resources.gyp:blink_resources',
454           ],
455         }, {  # else
456           'dependencies': [  # Update duplicate logic in repack_locales.py
457             '<(DEPTH)/ios/chrome/ios_chrome_resources.gyp:ios_strings_resources_gen',
458           ],
459           'actions': [
460             {
461               'includes': ['chrome_repack_chrome_300_percent.gypi']
462             },
463           ],
464         }],
465         ['use_ash==1', {
466           'dependencies': [  # Update duplicate logic in repack_locales.py
467              '<(DEPTH)/ash/ash_resources.gyp:ash_resources',
468              '<(DEPTH)/ash/ash_strings.gyp:ash_strings',
469           ],
470         }],
471         ['toolkit_views==1', {
472           'dependencies': [
473              '<(DEPTH)/ui/views/resources/views_resources.gyp:views_resources',
474           ],
475         }],
476         ['chromeos==1', {
477           'dependencies': [  # Update duplicate logic in repack_locales.py
478             '<(DEPTH)/remoting/remoting.gyp:remoting_resources',
479             '<(DEPTH)/ui/chromeos/ui_chromeos.gyp:ui_chromeos_resources',
480             '<(DEPTH)/ui/chromeos/ui_chromeos.gyp:ui_chromeos_strings',
481           ],
482         }],
483         ['enable_autofill_dialog==1 and OS!="android"', {
484           'dependencies': [  # Update duplicate logic in repack_locales.py
485             '<(DEPTH)/third_party/libaddressinput/libaddressinput.gyp:libaddressinput_strings',
486           ],
487         }],
488         ['enable_extensions==1', {
489           'dependencies': [  # Update duplicate logic in repack_locales.py
490             '<(DEPTH)/extensions/extensions_strings.gyp:extensions_strings',
491           ],
492         }],
493         ['OS != "mac" and OS != "ios"', {
494           # Copy pak files to the product directory. These files will be picked
495           # up by the following installer scripts:
496           #   - Windows: chrome/installer/mini_installer/chrome.release
497           #   - Linux: chrome/installer/linux/internal/common/installer.include
498           # Ensure that the above scripts are updated when adding or removing
499           # pak files.
500           # Copying files to the product directory is not needed on the Mac
501           # since the framework build phase will copy them into the framework
502           # bundle directly.
503           'copies': [
504             {
505               'destination': '<(PRODUCT_DIR)',
506               'files': [
507                 '<(SHARED_INTERMEDIATE_DIR)/repack/chrome_100_percent.pak'
508               ],
509             },
510             {
511               'destination': '<(PRODUCT_DIR)/locales',
512               'files': [
513                 '<!@pymod_do_main(repack_locales -o -p <(OS) -g <(grit_out_dir) -s <(SHARED_INTERMEDIATE_DIR) -x <(SHARED_INTERMEDIATE_DIR) <(locales))'
514               ],
515             },
516             {
517               'destination': '<(PRODUCT_DIR)/pseudo_locales',
518               'files': [
519                 '<!@pymod_do_main(repack_locales -o -p <(OS) -g <(grit_out_dir) -s <(SHARED_INTERMEDIATE_DIR) -x <(SHARED_INTERMEDIATE_DIR) <(pseudo_locales))'
520               ],
521             },
522           ],
523           'conditions': [
524             ['branding=="Chrome"', {
525               'copies': [
526                 {
527                   # This location is for the Windows and Linux builds. For
528                   # Windows, the chrome.release file ensures that these files
529                   # are copied into the installer. Note that we have a separate
530                   # section in chrome_dll.gyp to copy these files for Mac, as it
531                   # needs to be dropped inside the framework.
532                   'destination': '<(PRODUCT_DIR)/default_apps',
533                   'files': ['<@(default_apps_list)']
534                 },
535               ],
536             }],
537             ['enable_hidpi == 1', {
538               'copies': [
539                 {
540                   'destination': '<(PRODUCT_DIR)',
541                   'files': [
542                     '<(SHARED_INTERMEDIATE_DIR)/repack/chrome_200_percent.pak',
543                   ],
544                 },
545               ],
546             }],
547             ['enable_topchrome_md == 1', {
548               'copies': [
549                 {
550                   'destination': '<(PRODUCT_DIR)',
551                   'files': [
552                     '<(SHARED_INTERMEDIATE_DIR)/repack/chrome_material_100_percent.pak',
553                   ],
554                 },
555               ],
556             }],
557             ['enable_hidpi == 1 and enable_topchrome_md == 1', {
558               'copies': [
559                 {
560                   'destination': '<(PRODUCT_DIR)',
561                   'files': [
562                     '<(SHARED_INTERMEDIATE_DIR)/repack/chrome_material_200_percent.pak',
563                   ],
564                 },
565               ],
566             }],
567           ], # conditions
568         }], # end OS != "mac" and OS != "ios"
569       ], # conditions
570     },
571     {
572       # GN version: //chrome/app/theme:chrome_unscaled_resources
573       'target_name': 'chrome_unscaled_resources',
574       'type': 'none',
575       'actions': [
576         {
577           'action_name': 'generate_chrome_unscaled_resources',
578           'variables': {
579             'grit_grd_file': 'app/theme/chrome_unscaled_resources.grd',
580           },
581           'includes': [ '../build/grit_action.gypi' ],
582         },
583       ],
584       'includes': [ '../build/grit_target.gypi' ],
585     },
586     {
587       # GN version: //chrome/browser/resources:options_test_resources
588       'target_name': 'options_test_resources',
589       'type': 'none',
590       'actions': [
591         {
592           'action_name': 'generate_options_test_resources',
593           'variables': {
594             'grit_grd_file': 'browser/resources/options_test_resources.grd',
595           },
596           'includes': [ '../build/grit_action.gypi' ],
597         },
598       ],
599       'includes': [ '../build/grit_target.gypi' ],
600     },
601     {
602       # GN version: //chrome/test/data/resources:webui_test_resources
603       'target_name': 'webui_test_resources',
604       'type': 'none',
605       'actions': [
606         {
607           'action_name': 'generate_webui_test_resources',
608           'variables': {
609             'grit_grd_file': 'test/data/webui_test_resources.grd',
610           },
611           'includes': [ '../build/grit_action.gypi' ],
612         },
613       ],
614       'includes': [ '../build/grit_target.gypi' ],
615     },
616     {
617       # GN version: //chrome:browser_tests_pak
618       'target_name': 'browser_tests_pak',
619       'type': 'none',
620       'dependencies': [
621         'options_test_resources',
622         'webui_test_resources',
623       ],
624       'actions': [
625         {
626           'action_name': 'repack_browser_tests_pak',
627           'variables': {
628             'pak_inputs': [
629               '<(SHARED_INTERMEDIATE_DIR)/chrome/options_test_resources.pak',
630               '<(SHARED_INTERMEDIATE_DIR)/chrome/webui_test_resources.pak',
631             ],
632             'pak_output': '<(PRODUCT_DIR)/browser_tests.pak',
633           },
634           'includes': [ '../build/repack_action.gypi' ],
635         },
636       ],
637     },
638     {
639       # GN version: //chrome/browser:about_credits
640       'target_name': 'about_credits',
641       'type': 'none',
642       'actions': [
643         {
644           'variables': {
645             'generator_path': '../tools/licenses.py',
646           },
647           'action_name': 'generate_about_credits',
648           'inputs': [
649             # TODO(phajdan.jr): make licenses.py print license input files so
650             # about:credits gets rebuilt when one changes.
651             '<(generator_path)',
652             'browser/resources/about_credits.tmpl',
653             'browser/resources/about_credits_entry.tmpl',
654           ],
655           'outputs': [
656             '<(about_credits_file)',
657           ],
658           'hard_dependency': 1,
659           'action': ['python',
660                      '<(generator_path)',
661                      'credits',
662                      '<(about_credits_file)',
663           ],
664           'message': 'Generating about:credits',
665         },
666       ],
667     },
668   ], # targets