Index: chrome/browser/BUILD.gn |
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn |
index 388532475c91952f7f5beda1a2527b648d08679e..2c628579c32d21c3f6a2cc94887219f782d3c8f1 100644 |
--- a/chrome/browser/BUILD.gn |
+++ b/chrome/browser/BUILD.gn |
@@ -78,7 +78,20 @@ if (is_desktop_linux) { |
} |
} |
-source_set("browser") { |
+# Use a static library here because many test binaries depend on this but don't |
+# require many files from it. This makes linking more efficient. However, on |
+# x64 official builds the static library will be too large (> 32-bits) so use |
+# source sets in that case. |
+if (is_mac || (current_cpu == "x64" && is_official_build)) { |
+ # TODO(brettw) bug 618797: Remove the mac condition. On Mac making this |
+ # target a static_library causes a crash on startup and the browser_tests all |
+ # fail. My guess is this is due to a required static initializer not being |
+ # brought in. |
+ chrome_browser_target_type = "source_set" |
+} else { |
+ chrome_browser_target_type = "static_library" |
+} |
+target(chrome_browser_target_type, "browser") { |
configs += [ |
"//build/config/compiler:wexit_time_destructors", |
"//build/config:precompiled_headers", |
@@ -1053,7 +1066,10 @@ if (is_chrome_branded) { |
} |
# In GYP this is part of test_support_common. |
-source_set("test_support") { |
+# |
+# Use a static library here because many test binaries depend on this but don't |
+# require many files from it. This makes linking more efficient. |
+static_library("test_support") { |
testonly = true |
# Always include this via the main test support target. |