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