• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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