chromium-src-build/split_link_partition.py

185 строки
6.6 KiB
Python

# 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'
}