Index: chrome/BUILD.gn |
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn |
index dd1d7b50acd8640ec113377d46c0f57b85837f7d..97f7ac91c1cb16f38861f0c9e348e4f55e9d91ea 100644 |
--- a/chrome/BUILD.gn |
+++ b/chrome/BUILD.gn |
@@ -231,25 +231,6 @@ if (!is_android && !is_mac) { |
} |
} # !is_android && !is_mac |
-if (is_mac) { |
- if (is_component_build) { |
- # On Mac component builds, this target is the bundle, and the main dll is |
- # just another shared library. This speeds up incremental builds by |
- # not requiring re-doing the bundle every time main_dll changes. |
- # See https://codereview.chromium.org/11420019 |
- |
- # TODO(GYP) chrome_dll for Mac component build. |
- assert(false) |
- } else { |
- # On Mac non-component builds, this is a no-op forwarding target. |
- group("chrome_dll") { |
- public_deps = [ |
- ":chrome_framework", |
- ] |
- } |
- } |
-} |
- |
if (is_win) { |
# This target is a forwarding target to compile the necessary DLLs used |
# by Chrome. |
@@ -402,12 +383,6 @@ if (is_win) { |
group("chrome") { |
deps = [ |
- ":chrome_initial", |
- ] |
- } |
- |
- group("chrome_initial") { |
- deps = [ |
":chrome_app", |
] |
} |
@@ -571,6 +546,13 @@ if (is_win) { |
deps = [ |
"//chrome/common:version_header", |
] |
+ |
+ ldflags = [ |
+ # The helper is in Chromium.app/Contents/Versions/X/Chromium Helper.app/Conents/MacOS/ |
+ # so set rpath up to the base. |
+ "-rpath", |
+ "@loader_path/../../../../../../..", |
+ ] |
} |
bundle_data("chrome_framework_locales") { |
@@ -665,10 +647,20 @@ if (is_win) { |
] |
} |
- mac_framework_bundle("chrome_framework") { |
- output_name = chrome_framework_name |
- |
- configs += [ "//build/config/compiler:wexit_time_destructors" ] |
+ # On Mac, speed up the component build by not re-bundling the framework |
+ # every time it changes. Instead, place all the sources and their deps in |
+ # a library that the bundled framework links (and re-exports). That way |
+ # only the library needs to be re-linked when it changes. |
+ if (is_component_build) { |
+ _dll_target_type = "shared_library" |
+ } else { |
+ _dll_target_type = "source_set" |
+ } |
+ target(_dll_target_type, "chrome_dll") { |
+ visibility = [ |
+ ":chrome_framework", |
+ ":chrome_framework_shared_library", |
+ ] |
sources = [ |
"app/chrome_command_ids.h", |
@@ -683,20 +675,9 @@ if (is_win) { |
"app/chrome_main_mac.mm", |
] |
- info_plist_target = ":chrome_framework_plist" |
- extra_substitutions = [ |
- "CHROMIUM_BUNDLE_ID=$chrome_mac_bundle_id", |
- "CHROMIUM_SHORT_NAME=$chrome_product_short_name", |
- ] |
- |
deps = [ |
":browser_dependencies", |
":child_dependencies", |
- ":chrome_framework_helpers", |
- ":chrome_framework_locales", |
- ":chrome_framework_resources", |
- "//build/config/sanitizers:deps", |
- "//chrome/app/nibs:chrome_xibs", |
"//chrome/common:features", |
"//components/crash/content/app", |
"//components/policy", |
@@ -704,15 +685,14 @@ if (is_win) { |
"//third_party/cld_2", |
] |
+ if (is_component_build) { |
+ libs = [ "Carbon.framework" ] |
+ } |
+ |
ldflags = [ |
"-Wl,-order_file", |
"-Wl," + rebase_path("app/framework.order", root_build_dir), |
- "-install_name", |
- "@executable_path/../Versions/$chrome_version_full/$chrome_framework_name.framework/$chrome_framework_name", |
- "-compatibility_version", |
- chrome_dylib_version, |
- "-current_version", |
- chrome_dylib_version, |
+ "-ObjC", |
] |
if (enable_plugins && enable_pdf) { |
@@ -723,6 +703,46 @@ if (is_win) { |
deps += [ "//chrome/app/mash" ] |
} |
} |
+ |
+ mac_framework_bundle("chrome_framework") { |
+ output_name = chrome_framework_name |
+ |
+ configs += [ "//build/config/compiler:wexit_time_destructors" ] |
+ |
+ info_plist_target = ":chrome_framework_plist" |
+ extra_substitutions = [ |
+ "CHROMIUM_BUNDLE_ID=$chrome_mac_bundle_id", |
+ "CHROMIUM_SHORT_NAME=$chrome_product_short_name", |
+ ] |
+ |
+ public_deps = [ |
+ ":chrome_dll", |
+ ] |
+ |
+ deps = [ |
+ ":chrome_framework_helpers", |
+ ":chrome_framework_locales", |
+ ":chrome_framework_resources", |
+ "//build/config/sanitizers:deps", |
+ "//chrome/app/nibs:chrome_xibs", |
+ ] |
+ |
+ ldflags = [ |
+ "-Wl,-install_name,@executable_path/../Versions/$chrome_version_full/$chrome_framework_name.framework/$chrome_framework_name", |
+ "-compatibility_version", |
+ chrome_dylib_version, |
+ "-current_version", |
+ chrome_dylib_version, |
+ ] |
+ |
+ if (is_component_build) { |
+ ldflags += [ |
+ "-rpath", |
+ "@loader_path/../../../../..", |
+ "-Wl,-reexport_library,libchrome_dll.dylib", |
+ ] |
+ } |
+ } |
} |
# GYP version: chromium_browser_dependencies variable in chrome.gyp |