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