Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: base/BUILD.gn

Issue 1545493002: Make base a static ibrary (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: nonsfi Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | base/third_party/dynamic_annotations/BUILD.gn » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/BUILD.gn
diff --git a/base/BUILD.gn b/base/BUILD.gn
index e5b306cc275305a3ccb608ef503e84280e82f19a..b9463e0cef73da09972ebf1ebf01f6f03e8ac80d 100644
--- a/base/BUILD.gn
+++ b/base/BUILD.gn
@@ -64,41 +64,66 @@ if (is_nacl_nonsfi) {
}
}
-source_set("base_paths") {
- sources = [
- "base_paths.cc",
- "base_paths.h",
- "base_paths_android.cc",
- "base_paths_android.h",
- "base_paths_mac.h",
- "base_paths_mac.mm",
- "base_paths_posix.cc",
- "base_paths_posix.h",
- "base_paths_win.cc",
- "base_paths_win.h",
- ]
-
- if (is_android || is_mac || is_ios) {
- sources -= [ "base_paths_posix.cc" ]
+if (is_nacl) {
+ # None of the files apply to nacl, and we can't make an empty static library.
+ group("base_paths") {
}
-
- if (is_nacl) {
- sources -= [
+} else {
+ static_library("base_paths") {
+ sources = [
"base_paths.cc",
+ "base_paths.h",
+ "base_paths_android.cc",
+ "base_paths_android.h",
+ "base_paths_mac.h",
+ "base_paths_mac.mm",
"base_paths_posix.cc",
+ "base_paths_posix.h",
+ "base_paths_win.cc",
+ "base_paths_win.h",
]
- }
- configs += [ ":base_implementation" ]
+ if (is_android || is_mac || is_ios) {
+ sources -= [ "base_paths_posix.cc" ]
+ }
+
+ configs += [ ":base_implementation" ]
- visibility = [ ":base" ]
+ visibility = [ ":base" ]
+ }
}
config("android_system_libs") {
libs = [ "log" ] # Used by logging.cc.
}
-component("base") {
+# Base and everything it depends on should be a static library rather than
+# a source set. Base is more of a "library" in the classic sense in that many
+# small parts of it are used in many different contexts. This combined with a
+# few static initializers floating around means that dead code stripping
+# still leaves a lot of code behind that isn't always used. For example, this
+# saves more than 40K for a smaller target like chrome_elf.
+#
+# Use static libraries for the helper stuff as well like //base/debug since
+# those things refer back to base code, which will force base compilation units
+# to be linked in where they wouldn't have otherwise. This does not include
+# test code (test support and anything in the test directory) which should use
+# source_set as is recommended for GN targets).
+if (is_component_build) {
+ base_target_type = "shared_library"
+} else {
+ # TODO(phosek) bug 570839: If field_trial.cc is in a static library,
+ # hacl_helper_nonsfi doesn't link properly on Linux in debug builds. The
Dirk Pranke 2015/12/23 03:41:58 nit: s/hacl_helper_nonsfi/nacl_helper_nonsfi
+ # reasons for this seem to involve obscure toolchain bugs. This should be
+ # fixed and this target should always be a static_library in the
+ # non-component case.
+ if (is_nacl_nonsfi) {
+ base_target_type = "source_set"
+ } else {
+ base_target_type = "static_library"
+ }
+}
+target(base_target_type, "base") {
sources = [
"allocator/allocator_extension.cc",
"allocator/allocator_extension.h",
@@ -1312,7 +1337,7 @@ buildflag_header("debugging_flags") {
# This is the subset of files from base that should not be used with a dynamic
# library. Note that this library cannot depend on base because base depends on
# base_static.
-source_set("base_static") {
+static_library("base_static") {
sources = [
"base_switches.cc",
"base_switches.h",
« no previous file with comments | « no previous file | base/third_party/dynamic_annotations/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698