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