| Index: base/BUILD.gn
|
| diff --git a/base/BUILD.gn b/base/BUILD.gn
|
| index 94c7a86104140110c63c165207da975fef54774e..90716ba43d1c162907a194bb40589ec9ad6eccc0 100644
|
| --- a/base/BUILD.gn
|
| +++ b/base/BUILD.gn
|
| @@ -48,42 +48,58 @@ 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" ]
|
| + }
|
|
|
| - deps = [
|
| - "//base/memory",
|
| - "//base/process",
|
| - ]
|
| + configs += [ ":base_implementation" ]
|
|
|
| - visibility = [ ":base" ]
|
| + deps = [
|
| + "//base/memory",
|
| + "//base/process",
|
| + ]
|
| +
|
| + visibility = [ ":base" ]
|
| + }
|
| }
|
|
|
| -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 {
|
| + base_target_type = "static_library"
|
| +}
|
| +target(base_target_type, "base") {
|
| sources = [
|
| "allocator/allocator_extension.cc",
|
| "allocator/allocator_extension.h",
|
| @@ -985,7 +1001,7 @@ component("base") {
|
| # 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",
|
|
|