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 'conditions': [ 6 ['OS=="mac" or OS=="win"', { 7 'targets': [ 8 { 9 'target_name': 'chrome_dll', 10 'type': 'none', 11 'dependencies': [ 12 'chrome_main_dll', 13 ], 14 'conditions': [ 15 ['OS=="mac" and component=="shared_library"', { 16 'type': 'shared_library', 17 'includes': [ 'chrome_dll_bundle.gypi' ], 18 'xcode_settings': { 19 'OTHER_LDFLAGS': [ 20 '-Wl,-reexport_library,<(PRODUCT_DIR)/libchrome_main_dll.dylib', 21 ], 22 }, 23 }], # OS=="mac" 24 ['chrome_multiple_dll==1', { 25 'dependencies': [ 26 'chrome_child_dll', 27 ], 28 }], 29 ['incremental_chrome_dll==1', { 30 # Linking to a different directory and then hardlinking back 31 # to OutDir is a workaround to avoid having the .ilk for 32 # chrome.exe and chrome.dll conflicting. See crbug.com/92528 33 # for more information. Done on the dll instead of the exe so 34 # that people launching from VS don't need to modify 35 # $(TargetPath) for the exe. 36 'actions': [ 37 { 38 'action_name': 'hardlink_to_output', 39 'inputs': [ 40 '$(OutDir)\\initial\\chrome.dll', 41 ], 42 'outputs': [ 43 '$(OutDir)\\chrome.dll', 44 ], 45 'action': ['tools\\build\\win\\hardlink_failsafe.bat', 46 '$(OutDir)\\initial\\chrome.dll', 47 '$(OutDir)\\chrome.dll'], 48 }, 49 ], 50 'conditions': [ 51 # Only hardlink pdb if we're generating debug info. 52 ['fastbuild==0 or win_z7!=0', { 53 'actions': [ 54 { 55 'action_name': 'hardlink_pdb_to_output', 56 'inputs': [ 57 # Not the pdb, since gyp doesn't know about it 58 '$(OutDir)\\initial\\chrome.dll', 59 ], 60 'outputs': [ 61 '$(OutDir)\\chrome.dll.pdb', 62 ], 63 'action': ['tools\\build\\win\\hardlink_failsafe.bat', 64 '$(OutDir)\\initial\\chrome.dll.pdb', 65 '$(OutDir)\\chrome.dll.pdb'], 66 } 67 ] 68 }] 69 ], 70 }], 71 ] 72 }, 73 { 74 # GN version: //chrome:main_dll 75 'target_name': 'chrome_main_dll', 76 'type': 'shared_library', 77 'variables': { 78 'enable_wexit_time_destructors': 1, 79 }, 80 'sources': [ 81 'app/chrome_command_ids.h', 82 'app/chrome_dll_resource.h', 83 'app/chrome_main.cc', 84 'app/chrome_main_delegate.cc', 85 'app/chrome_main_delegate.h', 86 'app/chrome_main_mac.mm', 87 'app/chrome_main_mac.h', 88 'app/close_handle_hook_win.cc', 89 'app/close_handle_hook_win.h', 90 'app/delay_load_hook_win.cc', 91 'app/delay_load_hook_win.h', 92 '../base/win/dllmain.cc', 93 ], 94 'dependencies': [ 95 '<@(chromium_browser_dependencies)', 96 '../content/content.gyp:content_app_browser', 97 ], 98 'conditions': [ 99 ['OS=="win"', { 100 'dependencies': [ 101 '<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_elf', 102 ], 103 }], 104 ['OS=="win" and configuration_policy==1', { 105 'dependencies': [ 106 '<(DEPTH)/components/components.gyp:policy', 107 ], 108 }], 109 ['use_aura==1', { 110 'dependencies': [ 111 '../ui/compositor/compositor.gyp:compositor', 112 ], 113 }], 114 ['OS=="win" and target_arch=="ia32"', { 115 # Add a dependency to custom import library for user32 delay 116 # imports only in x86 builds. 117 'dependencies': [ 118 'chrome_user32_delay_imports', 119 ], 120 },], 121 ['OS=="win"', { 122 'product_name': 'chrome', 123 'dependencies': [ 124 # On Windows, link the dependencies (libraries) that make 125 # up actual Chromium functionality into this .dll. 126 'chrome_version_resources', 127 '../chrome/chrome_resources.gyp:chrome_unscaled_resources', 128 '../content/app/resources/content_resources.gyp:content_resources', 129 '../crypto/crypto.gyp:crypto', 130 '../net/net.gyp:net_resources', 131 '../ui/views/views.gyp:views', 132 ], 133 'sources': [ 134 'app/chrome_dll.rc', 135 136 '<(SHARED_INTERMEDIATE_DIR)/chrome_version/chrome_dll_version.rc', 137 138 # Cursors. 139 '<(SHARED_INTERMEDIATE_DIR)/ui/resources/ui_unscaled_resources.rc', 140 ], 141 'include_dirs': [ 142 '<(DEPTH)/third_party/wtl/include', 143 ], 144 'configurations': { 145 'Debug_Base': { 146 'msvs_settings': { 147 'VCLinkerTool': { 148 'LinkIncremental': '<(msvs_large_module_debug_link_mode)', 149 }, 150 }, 151 }, 152 }, 153 'msvs_settings': { 154 'VCLinkerTool': { 155 'ImportLibrary': '$(OutDir)\\lib\\chrome_dll.lib', 156 # Set /SUBSYSTEM:WINDOWS for chrome.dll (for consistency). 157 'SubSystem': '2', 158 'conditions': [ 159 ['incremental_chrome_dll==1', { 160 'OutputFile': '$(OutDir)\\initial\\chrome.dll', 161 'UseLibraryDependencyInputs': "true", 162 }], 163 ['target_arch=="ia32"', { 164 # Don't set an x64 base address (to avoid breaking HE-ASLR). 165 'BaseAddress': '0x01c30000', 166 # Link against the XP-constrained user32 import library 167 # instead of the platform-SDK provided one to avoid 168 # inadvertently taking dependencies on post-XP user32 169 # exports. 170 'AdditionalDependencies!': [ 171 'user32.lib', 172 ], 173 'IgnoreDefaultLibraryNames': [ 174 'user32.lib', 175 ], 176 # Remove user32 delay load for chrome.dll. 177 'DelayLoadDLLs!': [ 178 'user32.dll', 179 ], 180 'AdditionalDependencies': [ 181 'user32.winxp.lib', 182 ], 183 'DelayLoadDLLs': [ 184 'user32-delay.dll', 185 ], 186 'AdditionalLibraryDirectories': [ 187 '<(DEPTH)/build/win/importlibs/x86', 188 ], 189 'ForceSymbolReferences': [ 190 # Force the inclusion of the delay load hook in this 191 # binary. 192 '_ChromeDelayLoadHook@8', 193 ], 194 }], 195 ], 196 'DelayLoadDLLs': [ 197 'comdlg32.dll', 198 'crypt32.dll', 199 'cryptui.dll', 200 'dhcpcsvc.dll', 201 'imagehlp.dll', 202 'imm32.dll', 203 'iphlpapi.dll', 204 'setupapi.dll', 205 'urlmon.dll', 206 'winhttp.dll', 207 'wininet.dll', 208 'winspool.drv', 209 'ws2_32.dll', 210 'wsock32.dll', 211 ], 212 }, 213 'VCManifestTool': { 214 'AdditionalManifestFiles': [ 215 '$(ProjectDir)\\app\\chrome.dll.manifest', 216 ], 217 }, 218 }, 219 'conditions': [ 220 ['win_use_allocator_shim==1', { 221 'dependencies': [ 222 '<(allocator_target)', 223 ], 224 }], 225 ['enable_printing!=0', { 226 'dependencies': [ 227 '../printing/printing.gyp:printing', 228 ], 229 }], 230 ['chrome_pgo_phase==1', { 231 'msvs_settings': { 232 'VCLinkerTool': { 233 'LinkTimeCodeGeneration': '2', 234 }, 235 }, 236 }], 237 ['chrome_pgo_phase==2', { 238 'msvs_settings': { 239 'VCLinkerTool': { 240 'LinkTimeCodeGeneration': '3', 241 }, 242 }, 243 }], 244 ] 245 }], 246 ['chrome_multiple_dll==1', { 247 'defines': [ 248 'CHROME_MULTIPLE_DLL_BROWSER', 249 ], 250 }, { 251 'dependencies': [ 252 '<@(chromium_child_dependencies)', 253 '../content/content.gyp:content_app_both', 254 ], 255 'dependencies!': [ 256 '../content/content.gyp:content_app_browser', 257 ], 258 }], 259 ['cld_version==0 or cld_version==1', { 260 'dependencies': [ 261 '../third_party/cld/cld.gyp:cld', 262 ], 263 }], 264 ['cld_version==0 or cld_version==2', { 265 'dependencies': [ 266 '../third_party/cld_2/cld_2.gyp:cld_2', 267 ], 268 }], 269 ['OS=="mac" and component!="shared_library"', { 270 'includes': [ 'chrome_dll_bundle.gypi' ], 271 }], 272 ['OS=="mac" and component=="shared_library"', { 273 'xcode_settings': { 'OTHER_LDFLAGS': [ '-Wl,-ObjC' ], }, 274 }], 275 ['OS=="mac"', { 276 'xcode_settings': { 277 # Define the order of symbols within the framework. This 278 # sets -order_file. 279 'ORDER_FILE': 'app/framework.order', 280 }, 281 'dependencies': [ 282 '../pdf/pdf.gyp:pdf', 283 ], 284 'include_dirs': [ 285 '<(grit_out_dir)', 286 ], 287 'postbuilds': [ 288 { 289 # This step causes an error to be raised if the .order file 290 # does not account for all global text symbols. It 291 # validates the completeness of the .order file. 292 'postbuild_name': 'Verify global text symbol order', 293 'variables': { 294 'verify_order_path': 'tools/build/mac/verify_order', 295 }, 296 'action': [ 297 '<(verify_order_path)', 298 '_ChromeMain', 299 '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}', 300 ], 301 }, 302 ], 303 'conditions': [ 304 ['mac_breakpad_compiled_in==1', { 305 'dependencies': [ 306 '../breakpad/breakpad.gyp:breakpad', 307 '../components/components.gyp:crash_component', 308 '../components/components.gyp:policy', 309 ], 310 'sources': [ 311 'app/chrome_crash_reporter_client.cc', 312 'app/chrome_crash_reporter_client.h', 313 'app/chrome_crash_reporter_client_mac.mm', 314 ], 315 }, { # else: mac_breakpad_compiled_in!=1 316 # No Breakpad, put in the stubs. 317 'dependencies': [ 318 '../components/components.gyp:breakpad_stubs', 319 ], 320 }], # mac_breakpad_compiled_in 321 ], # conditions 322 }], # OS=="mac" 323 ], # conditions 324 }, # target chrome_main_dll 325 ], # targets 326 }], # OS=="mac" or OS=="win" 327 ['chrome_multiple_dll', { 328 'targets': [ 329 { 330 'target_name': 'chrome_child_dll', 331 'type': 'shared_library', 332 'product_name': 'chrome_child', 333 'variables': { 334 'enable_wexit_time_destructors': 1, 335 }, 336 'dependencies': [ 337 '<@(chromium_child_dependencies)', 338 '../content/content.gyp:content_app_child', 339 'chrome_version_resources', 340 'policy_path_parser', 341 ], 342 'defines': [ 343 'CHROME_MULTIPLE_DLL_CHILD', 344 ], 345 'sources': [ 346 '<(SHARED_INTERMEDIATE_DIR)/chrome_version/chrome_dll_version.rc', 347 'app/chrome_main.cc', 348 'app/chrome_main_delegate.cc', 349 'app/chrome_main_delegate.h', 350 'app/close_handle_hook_win.cc', 351 'app/close_handle_hook_win.h', 352 ], 353 'conditions': [ 354 ['OS=="win"', { 355 'dependencies': [ 356 '<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_elf', 357 ], 358 'conditions': [ 359 ['chrome_pgo_phase==1', { 360 'msvs_settings': { 361 'VCLinkerTool': { 362 'LinkTimeCodeGeneration': '2', 363 }, 364 }, 365 }], 366 ['chrome_pgo_phase==2', { 367 'msvs_settings': { 368 'VCLinkerTool': { 369 'LinkTimeCodeGeneration': '3', 370 }, 371 }, 372 }], 373 ] 374 }], 375 ], 376 }, # target chrome_child_dll 377 ], 378 }], 379 ], 380 } 381