Home | History | Annotate | Download | only in chrome
      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           'target_name': 'chrome_main_dll',
     75           'type': 'shared_library',
     76           'variables': {
     77             'enable_wexit_time_destructors': 1,
     78           },
     79           'dependencies': [
     80             '<@(chromium_browser_dependencies)',
     81             '../content/content.gyp:content_app_browser',
     82           ],
     83           'conditions': [
     84             ['OS=="win"', {
     85               'dependencies': [
     86                 '<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_elf',
     87               ],
     88             }],
     89             ['OS=="win" and configuration_policy==1', {
     90               'dependencies': [
     91                 '<(DEPTH)/components/components.gyp:policy',
     92               ],
     93             }],
     94             ['use_aura==1', {
     95               'dependencies': [
     96                 '../ui/compositor/compositor.gyp:compositor',
     97               ],
     98             }],
     99             ['OS=="win" and target_arch=="ia32"', {
    100               # Add a dependency to custom import library for user32 delay
    101               # imports only in x86 builds.
    102               'dependencies': [
    103                 'chrome_user32_delay_imports',
    104               ],
    105             },],
    106             ['OS=="win"', {
    107               'product_name': 'chrome',
    108               'dependencies': [
    109                 # On Windows, link the dependencies (libraries) that make
    110                 # up actual Chromium functionality into this .dll.
    111                 'chrome_version_resources',
    112                 '../chrome/chrome_resources.gyp:chrome_unscaled_resources',
    113                 '../crypto/crypto.gyp:crypto',
    114                 '../net/net.gyp:net_resources',
    115                 '../ui/views/views.gyp:views',
    116                 '../webkit/webkit_resources.gyp:webkit_resources',
    117               ],
    118               'sources': [
    119                 'app/chrome_command_ids.h',
    120                 'app/chrome_dll.rc',
    121                 'app/chrome_dll_resource.h',
    122                 'app/chrome_main.cc',
    123                 'app/chrome_main_delegate.cc',
    124                 'app/chrome_main_delegate.h',
    125                 'app/delay_load_hook_win.cc',
    126                 'app/delay_load_hook_win.h',
    127 
    128                 '<(SHARED_INTERMEDIATE_DIR)/chrome_version/chrome_dll_version.rc',
    129                 '../base/win/dllmain.cc',
    130 
    131                 # Cursors.
    132                 '<(SHARED_INTERMEDIATE_DIR)/ui/ui_resources/ui_unscaled_resources.rc',
    133               ],
    134               'include_dirs': [
    135                 '<(DEPTH)/third_party/wtl/include',
    136               ],
    137               'configurations': {
    138                 'Debug_Base': {
    139                   'msvs_settings': {
    140                     'VCLinkerTool': {
    141                       'LinkIncremental': '<(msvs_large_module_debug_link_mode)',
    142                     },
    143                   },
    144                 },
    145               },
    146               'msvs_settings': {
    147                 'VCLinkerTool': {
    148                   'ImportLibrary': '$(OutDir)\\lib\\chrome_dll.lib',
    149                   # Set /SUBSYSTEM:WINDOWS for chrome.dll (for consistency).
    150                   'SubSystem': '2',
    151                   'conditions': [
    152                     ['incremental_chrome_dll==1', {
    153                       'OutputFile': '$(OutDir)\\initial\\chrome.dll',
    154                       'UseLibraryDependencyInputs': "true",
    155                     }],
    156                     ['target_arch=="ia32"', {
    157                       # Don't set an x64 base address (to avoid breaking HE-ASLR).
    158                       'BaseAddress': '0x01c30000',
    159                       # Link against the XP-constrained user32 import library
    160                       # instead of the platform-SDK provided one to avoid
    161                       # inadvertently taking dependencies on post-XP user32
    162                       # exports.
    163                       'AdditionalDependencies!': [
    164                         'user32.lib',
    165                       ],
    166                       'IgnoreDefaultLibraryNames': [
    167                         'user32.lib',
    168                       ],
    169                       # Remove user32 delay load for chrome.dll.
    170                       'DelayLoadDLLs!': [
    171                         'user32.dll',
    172                       ],
    173                       'AdditionalDependencies': [
    174                         'user32.winxp.lib',
    175                       ],
    176                       'DelayLoadDLLs': [
    177                         'user32-delay.dll',
    178                       ],
    179                       'AdditionalLibraryDirectories': [
    180                         '<(DEPTH)/build/win/importlibs/x86',
    181                       ],
    182                       'ForceSymbolReferences': [
    183                         # Force the inclusion of the delay load hook in this
    184                         # binary.
    185                         '_ChromeDelayLoadHook@8',
    186                       ],
    187                     }],
    188                   ],
    189                   'DelayLoadDLLs': [
    190                     'comdlg32.dll',
    191                     'crypt32.dll',
    192                     'cryptui.dll',
    193                     'dhcpcsvc.dll',
    194                     'imagehlp.dll',
    195                     'imm32.dll',
    196                     'iphlpapi.dll',
    197                     'setupapi.dll',
    198                     'urlmon.dll',
    199                     'winhttp.dll',
    200                     'wininet.dll',
    201                     'winspool.drv',
    202                     'ws2_32.dll',
    203                     'wsock32.dll',
    204                   ],
    205                 },
    206                 'VCManifestTool': {
    207                   'AdditionalManifestFiles': [
    208                     '$(ProjectDir)\\app\\chrome.dll.manifest',
    209                   ],
    210                 },
    211               },
    212               'conditions': [
    213                 ['win_use_allocator_shim==1', {
    214                   'dependencies': [
    215                     '<(allocator_target)',
    216                   ],
    217                 }],
    218                 ['enable_printing!=0', {
    219                   'dependencies': [
    220                     '../printing/printing.gyp:printing',
    221                   ],
    222                 }],
    223                 ['chrome_pgo_phase==1', {
    224                   'msvs_settings': {
    225                     'VCLinkerTool': {
    226                       'LinkTimeCodeGeneration': '2',
    227                     },
    228                   },
    229                 }],
    230                 ['chrome_pgo_phase==2', {
    231                   'msvs_settings': {
    232                     'VCLinkerTool': {
    233                       'LinkTimeCodeGeneration': '3',
    234                     },
    235                   },
    236                 }],
    237               ]
    238             }],
    239             ['chrome_multiple_dll==1', {
    240               'defines': [
    241                 'CHROME_MULTIPLE_DLL_BROWSER',
    242               ],
    243             }, {
    244               'dependencies': [
    245                 '<@(chromium_child_dependencies)',
    246                 '../content/content.gyp:content_app_both',
    247                 '../content/content.gyp:content_worker',
    248               ],
    249               'dependencies!': [
    250                 '../content/content.gyp:content_app_browser',
    251               ],
    252             }],
    253             ['cld_version==0 or cld_version==1', {
    254               'dependencies': [
    255                 '../third_party/cld/cld.gyp:cld',
    256               ],
    257             }],
    258             ['cld_version==0 or cld_version==2', {
    259               'dependencies': [
    260                 '../third_party/cld_2/cld_2.gyp:cld_2',
    261               ],
    262             }],
    263             ['OS=="mac" and component!="shared_library"', {
    264               'includes': [ 'chrome_dll_bundle.gypi' ],
    265             }],
    266             ['OS=="mac" and component=="shared_library"', {
    267               'xcode_settings': { 'OTHER_LDFLAGS': [ '-Wl,-ObjC' ], },
    268             }],
    269             ['OS=="mac"', {
    270               'xcode_settings': {
    271                 # Define the order of symbols within the framework.  This
    272                 # sets -order_file.
    273                 'ORDER_FILE': 'app/framework.order',
    274               },
    275               'sources': [
    276                 'app/chrome_command_ids.h',
    277                 'app/chrome_dll_resource.h',
    278                 'app/chrome_main.cc',
    279                 'app/chrome_main_delegate.cc',
    280                 'app/chrome_main_delegate.h',
    281                 'app/chrome_main_mac.mm',
    282                 'app/chrome_main_mac.h',
    283               ],
    284               'dependencies': [
    285                 '../pdf/pdf.gyp:pdf',
    286               ],
    287               'include_dirs': [
    288                 '<(grit_out_dir)',
    289               ],
    290               'postbuilds': [
    291                 {
    292                   # This step causes an error to be raised if the .order file
    293                   # does not account for all global text symbols.  It
    294                   # validates the completeness of the .order file.
    295                   'postbuild_name': 'Verify global text symbol order',
    296                   'variables': {
    297                     'verify_order_path': 'tools/build/mac/verify_order',
    298                   },
    299                   'action': [
    300                     '<(verify_order_path)',
    301                     '_ChromeMain',
    302                     '${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}',
    303                   ],
    304                 },
    305               ],
    306               'conditions': [
    307                 ['mac_breakpad_compiled_in==1', {
    308                   'dependencies': [
    309                     '../breakpad/breakpad.gyp:breakpad',
    310                     '../components/components.gyp:breakpad_component',
    311                     '../components/components.gyp:policy',
    312                   ],
    313                   'sources': [
    314                     'app/chrome_breakpad_client.cc',
    315                     'app/chrome_breakpad_client.h',
    316                     'app/chrome_breakpad_client_mac.mm',
    317                   ],
    318                 }, {  # else: mac_breakpad_compiled_in!=1
    319                   # No Breakpad, put in the stubs.
    320                   'dependencies': [
    321                     '../components/components.gyp:breakpad_stubs',
    322                   ],
    323                 }],  # mac_breakpad_compiled_in
    324               ],  # conditions
    325             }],  # OS=="mac"
    326           ],  # conditions
    327         },  # target chrome_main_dll
    328       ],  # targets
    329     }],  # OS=="mac" or OS=="win"
    330     ['chrome_multiple_dll', {
    331       'targets': [
    332         {
    333           'target_name': 'chrome_child_dll',
    334           'type': 'shared_library',
    335           'product_name': 'chrome_child',
    336           'variables': {
    337             'enable_wexit_time_destructors': 1,
    338           },
    339           'dependencies': [
    340             '<@(chromium_child_dependencies)',
    341             '../content/content.gyp:content_app_child',
    342             '../content/content.gyp:content_worker',
    343             'chrome_version_resources',
    344             'policy_path_parser',
    345           ],
    346           'defines': [
    347             'CHROME_MULTIPLE_DLL_CHILD',
    348           ],
    349           'sources': [
    350             '<(SHARED_INTERMEDIATE_DIR)/chrome_version/chrome_dll_version.rc',
    351             'app/chrome_main.cc',
    352             'app/chrome_main_delegate.cc',
    353             'app/chrome_main_delegate.h',
    354           ],
    355           'conditions': [
    356             ['OS=="win"', {
    357               'dependencies': [
    358                 '<(DEPTH)/chrome_elf/chrome_elf.gyp:chrome_elf',
    359               ],
    360               'conditions': [
    361                 ['chrome_pgo_phase==1', {
    362                   'msvs_settings': {
    363                     'VCLinkerTool': {
    364                       'LinkTimeCodeGeneration': '2',
    365                     },
    366                   },
    367                 }],
    368                 ['chrome_pgo_phase==2', {
    369                   'msvs_settings': {
    370                     'VCLinkerTool': {
    371                       'LinkTimeCodeGeneration': '3',
    372                     },
    373                   },
    374                 }],
    375               ]
    376             }],
    377           ],
    378         },  # target chrome_child_dll
    379       ],
    380     }],
    381   ],
    382 }
    383