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.
6 ['OS=="mac" or OS=="win"', {
9 'target_name': 'chrome_dll',
15 ['OS=="mac" and component=="shared_library"', {
16 'type': 'shared_library',
17 'includes': [ 'chrome_dll_bundle.gypi' ],
20 '-Wl,-reexport_library,<(PRODUCT_DIR)/libchrome_main_dll.dylib',
24 ['chrome_multiple_dll==1', {
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.
38 'action_name': 'hardlink_to_output',
40 '$(OutDir)\\initial\\chrome.dll',
43 '$(OutDir)\\chrome.dll',
45 'action': ['tools\\build\\win\\hardlink_failsafe.bat',
46 '$(OutDir)\\initial\\chrome.dll',
47 '$(OutDir)\\chrome.dll'],
51 # Only hardlink pdb if we're generating debug info.
52 ['fastbuild==0 or win_z7!=0', {
55 'action_name': 'hardlink_pdb_to_output',
57 # Not the pdb, since gyp doesn't know about it
58 '$(OutDir)\\initial\\chrome.dll',
61 '$(OutDir)\\chrome.dll.pdb',
63 'action': ['tools\\build\\win\\hardlink_failsafe.bat',
64 '$(OutDir)\\initial\\chrome.dll.pdb',
65 '$(OutDir)\\chrome.dll.pdb'],
74 # GN version: //chrome:main_dll
75 'target_name': 'chrome_main_dll',
76 'type': 'shared_library',
78 'enable_wexit_time_destructors': 1,
81 '../base/win/dllmain.cc',
82 'app/chrome_command_ids.h',
83 'app/chrome_dll_resource.h',
85 'app/chrome_main_delegate.cc',
86 'app/chrome_main_delegate.h',
87 'app/chrome_main_mac.h',
88 'app/chrome_main_mac.mm',
89 'app/close_handle_hook_win.cc',
90 'app/close_handle_hook_win.h',
91 'app/delay_load_hook_win.cc',
92 'app/delay_load_hook_win.h',
95 '<@(chromium_browser_dependencies)',
96 '../content/content.gyp:content_app_browser',
101 '<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_elf',
104 ['OS=="win" and configuration_policy==1', {
106 '<(DEPTH)/components/components.gyp:policy',
111 '../ui/compositor/compositor.gyp:compositor',
114 ['OS=="win" and target_arch=="ia32"', {
115 # Add a dependency to custom import library for user32 delay
116 # imports only in x86 builds.
118 'chrome_user32_delay_imports',
122 'product_name': 'chrome',
124 # On Windows, link the dependencies (libraries) that make
125 # up actual Chromium functionality into this .dll.
126 'chrome_version_resources',
127 '../base/trace_event/etw_manifest/etw_manifest.gyp:etw_manifest',
128 '../chrome/chrome_resources.gyp:chrome_unscaled_resources',
129 '../content/app/resources/content_resources.gyp:content_resources',
130 '../crypto/crypto.gyp:crypto',
131 '../net/net.gyp:net_resources',
132 '../ui/views/views.gyp:views',
138 '<(SHARED_INTERMEDIATE_DIR)/base/trace_event/etw_manifest/chrome_events_win.rc',
140 '<(SHARED_INTERMEDIATE_DIR)/chrome_version/chrome_dll_version.rc',
143 '<(SHARED_INTERMEDIATE_DIR)/ui/resources/ui_unscaled_resources.rc',
146 '<(DEPTH)/third_party/wtl/include',
152 'LinkIncremental': '<(msvs_large_module_debug_link_mode)',
159 'ImportLibrary': '$(OutDir)\\lib\\chrome_dll.lib',
160 # Set /SUBSYSTEM:WINDOWS for chrome.dll (for consistency).
163 ['incremental_chrome_dll==1', {
164 'OutputFile': '$(OutDir)\\initial\\chrome.dll',
165 'UseLibraryDependencyInputs': "true",
167 ['target_arch=="ia32"', {
168 # Don't set an x64 base address (to avoid breaking HE-ASLR).
169 'BaseAddress': '0x01c30000',
170 # Link against the XP-constrained user32 import library
171 # instead of the platform-SDK provided one to avoid
172 # inadvertently taking dependencies on post-XP user32
174 'AdditionalDependencies!': [
177 'IgnoreDefaultLibraryNames': [
180 # Remove user32 delay load for chrome.dll.
184 'AdditionalDependencies': [
190 'AdditionalLibraryDirectories': [
191 '<(DEPTH)/build/win/importlibs/x86',
193 'ForceSymbolReferences': [
194 # Force the inclusion of the delay load hook in this
196 '_ChromeDelayLoadHook@8',
218 'AdditionalManifestFiles': [
219 '$(ProjectDir)\\app\\chrome.dll.manifest',
224 ['win_use_allocator_shim==1', {
226 '<(allocator_target)',
229 ['enable_basic_printing==1 or enable_print_preview==1', {
231 '../printing/printing.gyp:printing',
234 ['chrome_pgo_phase==1', {
237 'LinkTimeCodeGeneration': '2',
241 ['chrome_pgo_phase==2', {
244 'LinkTimeCodeGeneration': '3',
250 ['chrome_multiple_dll==1', {
252 'CHROME_MULTIPLE_DLL_BROWSER',
256 '<@(chromium_child_dependencies)',
257 '../content/content.gyp:content_app_both',
260 '../content/content.gyp:content_app_browser',
263 ['chrome_multiple_dll==0 and enable_plugins==1', {
265 '../pdf/pdf.gyp:pdf',
270 '<(DEPTH)/third_party/cld/cld.gyp:cld',
273 ['cld_version==0 or cld_version==2', {
275 '<(DEPTH)/third_party/cld_2/cld_2.gyp:cld_2',
278 ['OS=="mac" and component!="shared_library"', {
279 'includes': [ 'chrome_dll_bundle.gypi' ],
281 ['OS=="mac" and component=="shared_library"', {
282 'xcode_settings': { 'OTHER_LDFLAGS': [ '-Wl,-ObjC' ], },
286 '../components/components.gyp:crash_component',
287 '../components/components.gyp:policy',
290 'app/chrome_crash_reporter_client.cc',
291 'app/chrome_crash_reporter_client.h',
292 'app/chrome_crash_reporter_client_mac.mm',
295 # Define the order of symbols within the framework. This
297 'ORDER_FILE': 'app/framework.order',
303 # This step currently fails when using LTO. TODO(pcc): Re-enable.
304 ['OS=="mac" and use_lto==0', {
307 # This step causes an error to be raised if the .order file
308 # does not account for all global text symbols. It
309 # validates the completeness of the .order file.
310 'postbuild_name': 'Verify global text symbol order',
312 'verify_order_path': 'tools/build/mac/verify_order',
315 '<(verify_order_path)',
317 '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
323 }, # target chrome_main_dll
325 }], # OS=="mac" or OS=="win"
326 ['chrome_multiple_dll', {
329 # GN version: //chrome:chrome_child
330 'target_name': 'chrome_child_dll',
331 'type': 'shared_library',
332 'product_name': 'chrome_child',
334 'enable_wexit_time_destructors': 1,
337 '<@(chromium_child_dependencies)',
338 '../content/content.gyp:content_app_child',
339 'chrome_version_resources',
340 'policy_path_parser',
343 'CHROME_MULTIPLE_DLL_CHILD',
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',
356 '<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_elf',
359 ['chrome_pgo_phase==1', {
362 'LinkTimeCodeGeneration': '2',
366 ['chrome_pgo_phase==2', {
369 'LinkTimeCodeGeneration': '3',
375 ['enable_plugins==1', {
377 '../pdf/pdf.gyp:pdf',
381 }, # target chrome_child_dll