Add ICU message format support
[chromium-blink-merge.git] / chrome / installer / mini_installer.gyp
blob76e72ee30cded9e37d95418545d7674f848de88a
2   'variables': {
3     'version_py': '<(DEPTH)/build/util/version.py',
4     'version_path': '../../chrome/VERSION',
5     'lastchange_path': '<(DEPTH)/build/util/LASTCHANGE',
6     'branding_dir': '../app/theme/<(branding_path_component)',
7     'msvs_use_common_release': 0,
8     'msvs_use_common_linker_extras': 0,
9     'mini_installer_internal_deps%': 0,
10     'mini_installer_official_deps%': 0,
11   },
12   'includes': [
13     '../../build/win_precompile.gypi',
14   ],
15   'conditions': [
16     ['OS=="win"', {
17       'includes': [
18         '../test/mini_installer/test_installer.gypi',
19       ],
20       'targets': [
21         {
22           # A target that is outdated if any of the mini_installer test sources
23           # are modified.
24           'target_name': 'test_installer_sentinel',
25           'type': 'none',
26           'actions': [
27             {
28               'action_name': 'touch_sentinel',
29               'variables': {
30                 'touch_sentinel_py': '../tools/build/win/touch_sentinel.py',
31               },
32               'inputs': [
33                 '<@(test_installer_sources)',  # from test_installer.gypi
34                 '<(touch_sentinel_py)',
35               ],
36               'outputs': ['<(SHARED_INTERMEDIATE_DIR)/chrome/installer/test_installer_sentinel'],
37               'action': ['python', '<(touch_sentinel_py)', '<@(_outputs)'],
38             },
39           ],
40         },
41         {
42           'target_name': 'mini_installer',
43           'type': 'executable',
45           'dependencies': [
46             '../chrome.gyp:chrome',
47             '../chrome.gyp:chrome_nacl_win64',
48             '../chrome.gyp:chrome_dll',
49             '../chrome.gyp:default_extensions',
50             '../chrome.gyp:setup',
51             'test_installer_sentinel',
52           ],
53           'include_dirs': [
54             '../..',
55             '<(INTERMEDIATE_DIR)',
56             '<(SHARED_INTERMEDIATE_DIR)/chrome',
57           ],
58           'sources': [
59             '<(INTERMEDIATE_DIR)/packed_files.rc',
60             'mini_installer/appid.h',
61             'mini_installer/chrome.release',
62             'mini_installer/chrome_appid.cc',
63             'mini_installer/configuration.cc',
64             'mini_installer/configuration.h',
65             'mini_installer/decompress.cc',
66             'mini_installer/decompress.h',
67             'mini_installer/exit_code.h',
68             'mini_installer/mini_installer.cc',
69             'mini_installer/mini_installer.ico',
70             'mini_installer/mini_installer.rc',
71             'mini_installer/mini_installer_constants.cc',
72             'mini_installer/mini_installer_constants.h',
73             'mini_installer/mini_installer_exe_version.rc.version',
74             'mini_installer/mini_installer_resource.h',
75             'mini_installer/mini_string.cc',
76             'mini_installer/mini_string.h',
77             'mini_installer/pe_resource.cc',
78             'mini_installer/pe_resource.h',
79           ],
80           'msvs_settings': {
81             'VCCLCompilerTool': {
82               'EnableIntrinsicFunctions': 'true',
83               'BufferSecurityCheck': 'false',
84               'BasicRuntimeChecks': '0',
85               'ExceptionHandling': '0',
86             },
87             'VCLinkerTool': {
88               'RandomizedBaseAddress': '1',
89               'DataExecutionPrevention': '0',
90               'AdditionalLibraryDirectories': [
91                 '<(PRODUCT_DIR)/lib'
92               ],
93               'DelayLoadDLLs': [],
94               'EntryPointSymbol': 'MainEntryPoint',
95               'IgnoreAllDefaultLibraries': 'true',
96               'OptimizeForWindows98': '1',
97               'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
98               'AdditionalDependencies': [
99                 'shlwapi.lib',
100                 'setupapi.lib',
101               ],
102             },
103             'VCManifestTool': {
104               'AdditionalManifestFiles': [
105                 '$(ProjectDir)\\mini_installer\\mini_installer.exe.manifest',
106               ],
107             },
108           },
109           'configurations': {
110             'Debug_Base': {
111               'msvs_settings': {
112                 'VCCLCompilerTool': {
113                   'BasicRuntimeChecks': '0',
114                   'BufferSecurityCheck': 'false',
115                   'ExceptionHandling': '0',
116                 },
117                 'VCLinkerTool': {
118                   'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
119                   'AdditionalOptions': [
120                     '/safeseh:no',
121                     '/dynamicbase:no',
122                     '/ignore:4199',
123                     '/ignore:4221',
124                     '/nxcompat',
125                   ],
126                 },
127               },
128             },
129             'Release_Base': {
130               'includes': ['../../build/internal/release_defaults.gypi'],
131               'msvs_settings': {
132                 'VCCLCompilerTool': {
133                   'EnableIntrinsicFunctions': 'true',
134                   'BasicRuntimeChecks': '0',
135                   'BufferSecurityCheck': 'false',
136                   'ExceptionHandling': '0',
137                   'WholeProgramOptimization': 'false',
138                 },
139                 'VCLinkerTool': {
140                   'SubSystem': '2',     # Set /SUBSYSTEM:WINDOWS
141                   'Profile': 'false',   # Conflicts with /FIXED
142                   'AdditionalOptions': [
143                     '/SAFESEH:NO',
144                     '/NXCOMPAT',
145                     '/DYNAMICBASE:NO',
146                     '/FIXED',
147                   ],
148                 },
149               },
150             },
151           },
153           # Disable precompiled headers for this project, to avoid
154           # linker errors when building with VS 2008.
155           'msvs_precompiled_header': '',
156           'msvs_precompiled_source': '',
158           # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
159           'msvs_disabled_warnings': [ 4267, ],
161           'variables': {
162             # Opt out the common compatibility manifest to work around
163             # crbug.com/272660.
164             # TODO(yukawa): Enable the common compatibility manifest again.
165             'win_exe_compatibility_manifest': '',
166           },
167           'rules': [
168             {
169               'rule_name': 'mini_installer_version',
170               'extension': 'version',
171               'variables': {
172                 'template_input_path': 'mini_installer/mini_installer_exe_version.rc.version',
173               },
174               'inputs': [
175                 '<(template_input_path)',
176                 '<(version_path)',
177                 '<(lastchange_path)',
178                 '<(branding_dir)/BRANDING',
179               ],
180               'outputs': [
181                 '<(PRODUCT_DIR)/mini_installer_exe_version.rc',
182               ],
183               'action': [
184                 'python', '<(version_py)',
185                 '-f', '<(version_path)',
186                 '-f', '<(lastchange_path)',
187                 '-f', '<(branding_dir)/BRANDING',
188                 '<(template_input_path)',
189                 '<@(_outputs)',
190               ],
191               'process_outputs_as_sources': 1,
192               'message': 'Generating version information'
193             },
194           ],
195           'actions': [
196             {
197               'action_name': 'installer_archive',
198               'variables': {
199                 'create_installer_archive_py_path':
200                   '../tools/build/win/create_installer_archive.py',
201               },
202               'conditions': [
203                 ['enable_hidpi == 1', {
204                   'variables': {
205                     'enable_hidpi_flag': '--enable_hidpi=1',
206                   },
207                 }, {
208                   'variables': {
209                     'enable_hidpi_flag': '',
210                   },
211                 }],
212                 ['component == "shared_library"', {
213                   'variables': {
214                     'component_build_flag': '--component_build=1',
215                   },
216                 }, {
217                   'variables': {
218                     'component_build_flag': '',
219                   },
220                   'outputs': [
221                     '<(PRODUCT_DIR)/chrome.packed.7z',
222                   ],
223                 }],
224                 ['disable_nacl==1', {
225                   'inputs!': [
226                     '<(PRODUCT_DIR)/nacl64.exe',
227                     '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
228                     '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
229                   ],
230                 }],
231                 ['target_arch=="x64"', {
232                   'inputs!': [
233                     '<(PRODUCT_DIR)/nacl64.exe',
234                     '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
235                   ],
236                   'variables': {
237                     'target_arch_flag': '--target_arch=x64',
238                   },
239                 }, {
240                   'variables': {
241                     'target_arch_flag': '--target_arch=x86',
242                   },
243                 }],
244                 ['icu_use_data_file_flag == 0', {
245                   'inputs': [
246                     '<(PRODUCT_DIR)/icudt.dll',
247                   ],
248                 }, { # else icu_use_data_file_flag != 0
249                   'inputs': [
250                     '<(PRODUCT_DIR)/icudtl.dat',
251                   ],
252                 }],
253                 ['v8_use_external_startup_data == 1', {
254                   'inputs': [
255                     '<(PRODUCT_DIR)/natives_blob.bin',
256                     '<(PRODUCT_DIR)/snapshot_blob.bin',
257                   ],
258                 }],
259               ],
260               'inputs': [
261                 '<(create_installer_archive_py_path)',
262                 '<(PRODUCT_DIR)/chrome.exe',
263                 '<(PRODUCT_DIR)/chrome.dll',
264                 '<(PRODUCT_DIR)/nacl64.exe',
265                 '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
266                 '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
267                 '<(PRODUCT_DIR)/locales/en-US.pak',
268                 '<(PRODUCT_DIR)/setup.exe',
269                 'mini_installer/chrome.release',
270               ],
271               'outputs': [
272                 # Also note that chrome.packed.7z is defined as an output in a
273                 # conditional above.
274                 '<(PRODUCT_DIR)/chrome.7z',
275                 '<(PRODUCT_DIR)/setup.ex_',
276                 '<(INTERMEDIATE_DIR)/packed_files.rc',
277               ],
278               'depfile': '<(INTERMEDIATE_DIR)/installer_archive.d',
279               'action': [
280                 'python',
281                 '<(create_installer_archive_py_path)',
282                 '--build_dir', '<(PRODUCT_DIR)',
283                 '--staging_dir', '<(INTERMEDIATE_DIR)',
284                 '--input_file', 'mini_installer/chrome.release',
285                 '--resource_file_path', '<(INTERMEDIATE_DIR)/packed_files.rc',
286                 '--depfile', '<(INTERMEDIATE_DIR)/installer_archive.d',
287                 '<(enable_hidpi_flag)',
288                 '<(component_build_flag)',
289                 '<(target_arch_flag)',
290                 # TODO(sgk):  may just use environment variables
291                 #'--distribution=$(CHROMIUM_BUILD)',
292                 '--distribution=_google_chrome',
293                 # Optional arguments to generate diff installer
294                 #'--last_chrome_installer=C:/Temp/base',
295                 #'--setup_exe_format=DIFF',
296                 #'--diff_algorithm=COURGETTE',
297               ],
298               'message': 'Create installer archive',
299             },
300           ],
301         },
302       ],
303       'conditions': [
304         ['test_isolation_mode != "noop"', {
305           'targets': [
306             {
307               'target_name': 'mini_installer_tests_run',
308               'type': 'none',
309               'dependencies': [
310                 'mini_installer',
311               ],
312               'includes': [
313                 '../../build/isolate.gypi',
314               ],
315               'sources': [
316                 'mini_installer_tests.isolate',
317               ],
318             },
319           ],
320         }],
321       ],
322     }],
323   ],