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 } 321