# Copyright (c) 2013 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. # This dict determines how chrome.dll is split into multiple parts. { 'parts': [ # These sections are matched in order, and a matching input will go into # the part for the last block that matches. Inputs are lower()d before # the regex is run. # chrome.dll. [ r'.*', ], # chrome1.dll. [ r'\\libwebp\\.*\.lib$', r'\\media\\.*\.lib$', r'bindings', r'content_worker\.lib$', r'hunspell\.lib$', r'hyphen\.lib$', r'renderer\.lib$', r'v8.*\.lib$', r'webcore.*\.lib$', r'webkit.*\.lib$', r'webkit.*modules\.lib$', r'wtf\.lib$', ], ], # These go into all parts. 'all': [ # Duplicated code. Be sure that you really want N copies of your code # before adding it here. Hopefully we don't really need all of these. #r'_common\.lib$', # TODO: This might be a bit general. #r'\\base\\base.*\.lib$', #r'modp_b64\.lib$', #r'\\icu\\icu.*\.lib$', #r'\\skia\\skia.*\.lib$', #r'ipc\.lib$', ## TODO: These image/coded related things should probably be renderer only? #r'\\libvpx\\.*\.lib$', #r'opus\.lib$', #r'libjpeg\.lib$', #r'qcms\.lib$', #r'libpng\.lib$', #r'zlib\\.*\.lib$', #r'libxml2\.lib$', #r'libxslt\.lib$', #r'\\sdch\\.*\.lib$', #r'\\net\\.*\.lib$', #r'\\nss\\.*\.lib$', #r'\\crypto\\.*\.lib$', #r'googleurl\.lib$', # TODO: renaming. #r'\\sql\\.*\.lib$', #r'sqlite3\.lib$', # See comment in .cc for explanation. r'split_dll_fake_entry\.obj$', # To get DLL version information in all. r'chrome_dll_version.*\.res$', # System and third party import libs. r'^advapi32\.lib$', r'^atlthunk\.lib$', r'^chrome\.user32\.delay\.lib$', r'^comctl32\.lib$', r'^comdlg32\.lib$', r'^crypt32\.lib$', r'^d2d1\.lib$', r'^d3d9\.lib$', r'^dbghelp\.lib$', r'^delayimp\.lib$', r'^dinput8\.lib$', r'^dnsapi\.lib$', r'^dwmapi\.lib$', r'^dxva2\.lib$', r'ffmpegsumo\.lib$', r'^gdi32\.lib$', r'libcmt\.lib$', # No ^ so it matches gen/allocator, etc. r'^imm32\.lib$', r'^iphlpapi\.lib$', r'^kernel32\.lib$', r'^locationapi\.lib$', r'^mf\.lib$', r'^mfplat\.lib$', r'^mfreadwrite\.lib$', r'^mfuuid\.lib$', r'^msimg32\.lib$', r'^odbc32\.lib$', r'^odbccp32\.lib$', r'^ole32\.lib$', r'^oleacc\.lib$', r'^oleaut32\.lib$', r'^portabledeviceguids\.lib$', r'^psapi\.lib$', r'^secur32\.lib$', r'^sensorsapi\.lib$', r'^setupapi\.lib$', r'^shell32\.lib$', r'^shlwapi\.lib$', r'^strmiids\.lib$', r'^user32\.winxp\.lib$', r'^usp10\.lib$', r'^uuid\.lib$', r'^version\.lib$', r'^wininet\.lib$', r'^winmm\.lib$', r'^winspool\.lib$', r'^ws2_32\.lib$', ], # objs split out of libs. These will be extracted from whichever side # they're not on according to the 'parts' split, and then just the obj # linked into the other side. Each should be a 2-tuple, where the first is # a regex for the .lib name, and the second is a regex for the .obj from # that lib. The lib should not match anything in 'all'. # # Note: If you're considering adding something that isn't a _switches or a # _constants file, it'd probably be better to break the target into separate # .lib files. 'all_from_libs': [ (r'autofill_core_common\.lib$', r'switches\.obj$'), (r'autofill_core_common\.lib$', r'autofill_constants\.obj$'), (r'\bbase\.lib$', r'scoped_variant\.obj$'), (r'\bbase\.lib$', r'string_util_constants\.obj$'), (r'\bbase\.lib$', r'trace_event_impl_constants\.obj$'), (r'\bbase_i18n\.lib$', r'i18n_constants\.obj$'), (r'base_static\.lib$', r'base_switches\.obj$'), (r'\bbase\.lib$', r'file_path_constants\.obj$'), (r'\bcc\.lib$', r'switches\.obj$'), (r'\bcommon\.lib$', r'constants\.obj$'), (r'\bcommon\.lib$', r'extension_manifest_constants\.obj$'), (r'\bcommon\.lib$', r'localized_error\.obj$'), (r'\bcommon\.lib$', r'url_constants\.obj$'), (r'\bcommon\.lib$', r'view_type\.obj$'), # It sort of looks like most of this lib could go in 'all', but there's a # couple registration/initialization functions that make me a bit nervous. (r'common_constants\.lib$', r'chrome_constants\.obj$'), (r'common_constants\.lib$', r'chrome_switches\.obj$'), (r'common_constants\.lib$', r'pref_names\.obj$'), (r'content_common\.lib$', r'browser_plugin_constants\.obj$'), (r'content_common\.lib$', r'content_constants\.obj$'), (r'content_common\.lib$', r'content_switches\.obj$'), (r'content_common\.lib$', r'media_stream_options\.obj$'), (r'content_common\.lib$', r'page_zoom\.obj$'), (r'content_common\.lib$', r'url_constants\.obj$'), (r'gl_wrapper\.lib$', r'gl_switches\.obj$'), # TODO(scottmg): These are not solely constants, but look safe. (r'libjingle_webrtc_common\.lib$', r'localaudiosource\.obj$'), (r'libjingle_webrtc_common\.lib$', r'mediaconstraintsinterface\.obj$'), (r'\bmedia\.lib$', r'audio_manager_base\.obj$'), (r'\bmedia\.lib$', r'media_switches\.obj$'), # TODO(scottmg): This one is not solely constants, but looks safe. (r'\bnet\.lib$', r'http_request_headers\.obj$'), (r'\bnet\.lib$', r'net_errors\.obj$'), (r'ppapi_shared\.lib$', r'id_assignment\.obj$'), (r'ppapi_shared\.lib$', r'ppapi_switches\.obj$'), (r'ppapi_shared\.lib$', r'ppb_instance_shared\.obj$'), (r'ppapi_shared\.lib$', r'net_address_private_impl_constants\.obj$'), (r'printing\.lib$', r'print_job_constants\.obj$'), (r'protobuf_lite\.lib$', r'generated_message_util\.obj$'), (r'skia\.lib$', r'skunpremultiply\.obj$'), (r'skia\.lib$', r'skblitter\.obj$'), (r'\bui\.lib$', r'clipboard_constants\.obj$'), (r'\bui\.lib$', r'favicon_size\.obj$'), (r'\bui\.lib$', r'ui_base_switches\.obj$'), (r'webkit.*plugins_common\.lib$', r'plugin_switches\.obj$'), (r'webkit.*plugins_common\.lib$', r'plugin_constants'), (r'webkit.*storage_common\.lib$', r'appcache_interfaces\.obj$'), (r'webkit.*storage_browser\.lib$', r'database_tracker\.obj$'), (r'webkit.*storage_browser\.lib$', r'database_util\.obj$'), (r'webkit.*storage_browser\.lib$', r'file_permission_policy\.obj$'), (r'webkit.*storage_browser\.lib$', r'file_system_task_runners\.obj$'), ], # This manifest will be merged with the intermediate one from the linker, # and embedded in both DLLs. 'manifest': '..\\..\\chrome\\app\\chrome.dll.manifest' }