mini_installer.gypi revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
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.
4{
5  'dependencies': [
6    '<@(chrome_dll_project)',
7    '../chrome.gyp:chrome',
8    '../chrome.gyp:chrome_nacl_win64',
9    '../chrome.gyp:default_extensions',
10    '../chrome.gyp:setup',
11  ],
12  'include_dirs': [
13    '../..',
14    '<(INTERMEDIATE_DIR)',
15    '<(SHARED_INTERMEDIATE_DIR)/chrome',
16  ],
17  'sources': [
18    'mini_installer/appid.h',
19    'mini_installer/chrome.release',
20    'mini_installer/chrome_appid.cc',
21    'mini_installer/configuration.cc',
22    'mini_installer/configuration.h',
23    'mini_installer/decompress.cc',
24    'mini_installer/decompress.h',
25    'mini_installer/mini_installer.cc',
26    'mini_installer/mini_installer.h',
27    'mini_installer/mini_installer.ico',
28    'mini_installer/mini_installer.rc',
29    'mini_installer/mini_installer_exe_version.rc.version',
30    'mini_installer/mini_installer_resource.h',
31    'mini_installer/mini_string.cc',
32    'mini_installer/mini_string.h',
33    'mini_installer/pe_resource.cc',
34    'mini_installer/pe_resource.h',
35    '<(INTERMEDIATE_DIR)/packed_files.rc',
36  ],
37  # Disable precompiled headers for this project, to avoid
38  # linker errors when building with VS 2008.
39  'msvs_precompiled_header': '',
40  'msvs_precompiled_source': '',
41  'msvs_settings': {
42    'VCCLCompilerTool': {
43      'EnableIntrinsicFunctions': 'true',
44      'BufferSecurityCheck': 'false',
45      'BasicRuntimeChecks': '0',
46      'ExceptionHandling': '0',
47    },
48    'VCLinkerTool': {
49      'OutputFile': '<(output_dir)/mini_installer.exe',
50      'RandomizedBaseAddress': '1',
51      'DataExecutionPrevention': '0',
52      'AdditionalLibraryDirectories': [
53        '<(PRODUCT_DIR)/lib'
54      ],
55      'DelayLoadDLLs': [],
56      'EntryPointSymbol': 'MainEntryPoint',
57      'IgnoreAllDefaultLibraries': 'true',
58      'OptimizeForWindows98': '1',
59      'SubSystem': '2',  # Set /SUBSYSTEM:WINDOWS
60      'AdditionalDependencies': [
61        'shlwapi.lib',
62        'setupapi.lib',
63      ],
64      'conditions': [
65        ['MSVS_VERSION=="2005e"', {
66          'AdditionalDependencies': [  # Must explicitly link in VC2005E
67            'advapi32.lib',
68            'shell32.lib',
69          ],
70        }],
71      ],
72    },
73    'VCManifestTool': {
74      'AdditionalManifestFiles': [
75        '$(ProjectDir)\\mini_installer\\mini_installer.exe.manifest',
76      ],
77    },
78  },
79  'configurations': {
80    'Debug_Base': {
81      'msvs_settings': {
82        'VCCLCompilerTool': {
83          'BasicRuntimeChecks': '0',
84          'BufferSecurityCheck': 'false',
85          'ExceptionHandling': '0',
86        },
87        'VCLinkerTool': {
88          'SubSystem': '2',  # Set /SUBSYSTEM:WINDOWS
89          'AdditionalOptions': [
90            '/safeseh:no',
91            '/dynamicbase:no',
92            '/ignore:4199',
93            '/ignore:4221',
94            '/nxcompat',
95          ],
96        },
97      },
98    },
99    'Release_Base': {
100      'includes': ['../../build/internal/release_defaults.gypi'],
101      'msvs_settings': {
102        'VCCLCompilerTool': {
103          'EnableIntrinsicFunctions': 'true',
104          'BasicRuntimeChecks': '0',
105          'BufferSecurityCheck': 'false',
106          'ExceptionHandling': '0',
107        },
108        'VCLinkerTool': {
109          'SubSystem': '2',  # Set /SUBSYSTEM:WINDOWS
110          'Profile': 'false',  # Conflicts with /FIXED
111          'AdditionalOptions': [
112            '/SAFESEH:NO',
113            '/NXCOMPAT',
114            '/DYNAMICBASE:NO',
115            '/FIXED',
116          ],
117        },
118      },
119    },
120  },
121  'rules': [
122    {
123      'rule_name': 'mini_installer_version',
124      'extension': 'version',
125      'variables': {
126        'template_input_path':
127            'mini_installer/mini_installer_exe_version.rc.version',
128      },
129      'inputs': [
130        '<(template_input_path)',
131        '<(version_path)',
132        '<(lastchange_path)',
133        '<(branding_dir)/BRANDING',
134      ],
135      'outputs': [
136        '<(INTERMEDIATE_DIR)/mini_installer_exe_version.rc',
137      ],
138      'action': [
139        'python', '<(version_py)',
140        '-f', '<(version_path)',
141        '-f', '<(lastchange_path)',
142        '-f', '<(branding_dir)/BRANDING',
143        '<(template_input_path)',
144        '<@(_outputs)',
145      ],
146      'process_outputs_as_sources': 1,
147      'message': 'Generating version information'
148    },
149    {
150      'rule_name': 'installer_archive',
151      'extension': 'release',
152      'variables': {
153        'create_installer_archive_py_path':
154          '../tools/build/win/create_installer_archive.py',
155      },
156      'conditions': [
157        ['enable_hidpi == 1', {
158          'variables': {
159            'enable_hidpi_flag': '--enable_hidpi=1',
160          },
161        }, {
162          'variables': {
163            'enable_hidpi_flag': '',
164          },
165        }],
166        ['target_arch=="x64"', {
167          'inputs!': [
168            '<(PRODUCT_DIR)/nacl64.exe',
169            '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
170          ],
171          'variables': {
172            'target_arch_flag': '--target_arch=x64',
173          },
174        }, {
175          'variables': {
176            'target_arch_flag': '--target_arch=x86',
177          },
178        }],
179        ['icu_use_data_file_flag == 0', {
180          'inputs': [
181            '<(PRODUCT_DIR)/icudt.dll',
182          ],
183        }, { # else icu_use_data_file_flag != 0
184          'inputs': [
185            '<(PRODUCT_DIR)/icudtl.dat',
186          ],
187        }],
188        ['use_mojo==0', {
189          'inputs!': [
190            '<(PRODUCT_DIR)/mojo_system.dll',
191          ],
192        }],
193      ],
194      'inputs': [
195        '<(create_installer_archive_py_path)',
196        '<(PRODUCT_DIR)/chrome.exe',
197        '<@(chrome_dll_path)',
198        '<(PRODUCT_DIR)/mojo_system.dll',
199        '<(PRODUCT_DIR)/nacl64.exe',
200        '<(PRODUCT_DIR)/ppGoogleNaClPluginChrome.dll',
201        '<(PRODUCT_DIR)/nacl_irt_x86_32.nexe',
202        '<(PRODUCT_DIR)/nacl_irt_x86_64.nexe',
203        '<(PRODUCT_DIR)/locales/en-US.pak',
204      ],
205      'outputs': [
206        'xxx.out',
207        '<(output_dir)/<(RULE_INPUT_NAME).7z',
208        '<(output_dir)/<(RULE_INPUT_NAME).packed.7z',
209        '<(output_dir)/setup.ex_',
210        '<(INTERMEDIATE_DIR)/packed_files.rc',
211      ],
212      'action': [
213        'python',
214        '<(create_installer_archive_py_path)',
215        '--build_dir=<(PRODUCT_DIR)',
216        '--output_dir=<(output_dir)',
217        '--staging_dir=<(INTERMEDIATE_DIR)',
218        '--input_file=<(RULE_INPUT_PATH)',
219        '--resource_file_path=<(INTERMEDIATE_DIR)/packed_files.rc',
220        '<(enable_hidpi_flag)',
221        '<(target_arch_flag)',
222        # TODO(sgk):  may just use environment variables
223        #'--distribution=$(CHROMIUM_BUILD)',
224        '--distribution=_google_chrome',
225        # Optional arguments to generate diff installer
226        #'--last_chrome_installer=C:/Temp/base',
227        #'--setup_exe_format=DIFF',
228        #'--diff_algorithm=COURGETTE',
229      ],
230      'message': 'Create installer archive',
231    },
232  ],
233  # TODO(mark):  <(branding_dir) should be defined by the
234  # global condition block at the bottom of the file, but
235  # this doesn't work due to the following issue:
236  #
237  #   http://code.google.com/p/gyp/issues/detail?id=22
238  #
239  # Remove this block once the above issue is fixed.
240  'conditions': [
241    [ 'branding == "Chrome"', {
242      'variables': {
243         'branding_dir': '../app/theme/google_chrome',
244      },
245    }, { # else branding!="Chrome"
246      'variables': {
247         'branding_dir': '../app/theme/chromium',
248      },
249    }],
250  ],
251}
252