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

Unified Diff: build/config/compiler/BUILD.gn

Issue 1341373002: Use GN subconfigs for Android, optimization, and symbols. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@configs
Patch Set: Created 5 years, 3 months 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 | « build/config/android/BUILD.gn ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/config/compiler/BUILD.gn
diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
index 05c7d13f0edc35b1c03ed952c94fd498fbfa4dec..aad4da4c0f792a15e0f5795c3721490f71adbf87 100644
--- a/build/config/compiler/BUILD.gn
+++ b/build/config/compiler/BUILD.gn
@@ -99,6 +99,7 @@ config("compiler") {
cflags_objcc = []
ldflags = []
defines = []
+ configs = []
# In general, Windows is totally different, but all the other builds share
# some common GCC configuration. This section sets up Windows and the common
@@ -588,105 +589,7 @@ config("compiler") {
# Android-specific flags setup.
# -----------------------------
if (is_android) {
- cflags += [
- "-ffunction-sections",
- "-funwind-tables",
- "-fno-short-enums",
- ]
- if (!is_clang) {
- # Clang doesn't support these flags.
- cflags += [ "-finline-limit=64" ]
- }
- if (is_clang) {
- rebased_android_toolchain_root =
- rebase_path(android_toolchain_root, root_build_dir)
- if (current_cpu == "arm") {
- cflags += [
- # TODO(hans) Enable integrated-as (crbug.com/124610).
- "-no-integrated-as",
- "-B${rebased_android_toolchain_root}/bin", # Else /usr/bin/as gets picked up.
- ]
- }
- }
- if (is_asan) {
- # Android build relies on -Wl,--gc-sections removing unreachable code.
- # ASan instrumentation for globals inhibits this and results in a library
- # with unresolvable relocations.
- # TODO(eugenis): find a way to reenable this.
- cflags += [ "-mllvm -asan-globals=0" ]
- }
-
- defines += [ "ANDROID" ]
-
- # The NDK has these things, but doesn't define the constants
- # to say that it does. Define them here instead.
- defines += [ "HAVE_SYS_UIO_H" ]
-
- # Use gold for Android for most CPU architectures.
- if (current_cpu == "x86" || current_cpu == "x64" || current_cpu == "arm") {
- ldflags += [ "-fuse-ld=gold" ]
- if (is_clang) {
- # Let clang find the ld.gold in the NDK.
- ldflags += [ "--gcc-toolchain=$rebased_android_toolchain_root" ]
- }
-
- # Use -mstackrealign due to a bug on ia32 Jelly Bean.
- # See crbug.com/521527
- if (current_cpu == "x86") {
- cflags += [ "-mstackrealign" ]
- }
- }
-
- ldflags += [
- "-Wl,--no-undefined",
-
- # Don't allow visible symbols from libgcc or libc++ to be
- # re-exported.
- "-Wl,--exclude-libs=libgcc.a",
- "-Wl,--exclude-libs=libc++_static.a",
-
- # Don't allow visible symbols from libraries that contain
- # assembly code with symbols that aren't hidden properly.
- # http://crbug.com/448386
- "-Wl,--exclude-libs=libvpx_assembly_arm.a",
- ]
- if (current_cpu == "arm") {
- ldflags += [
- # Enable identical code folding to reduce size.
- "-Wl,--icf=safe",
- ]
- }
-
- if (is_clang) {
- if (current_cpu == "arm") {
- _abi_target = "arm-linux-androideabi"
- } else if (current_cpu == "x86") {
- _abi_target = "i686-linux-androideabi"
- } else if (current_cpu == "arm64") {
- # Place holder for arm64 support, not tested.
- _abi_target = "aarch64-linux-androideabi"
- } else if (current_cpu == "x64") {
- # Place holder for x64 support, not tested.
- # TODO: Enable clang support for Android x64. http://crbug.com/346626
- _abi_target = "x86_64-linux-androideabi"
- } else if (current_cpu == "mipsel") {
- # Place holder for mips support, not tested.
- _abi_target = "mipsel-linux-androideabi"
- } else if (current_cpu == "mips64el") {
- # Place holder for mips64 support, not tested.
- _abi_target = "mips64el-linux-androideabi"
- } else {
- assert(false, "Architecture not supported")
- }
- cflags += [
- "-target",
- _abi_target,
- ]
- ldflags += [
- "-target",
- _abi_target,
- ]
- }
+ configs += [ "//build/config/android:compiler" ]
}
# Pass the same C/C++ flags to the objective C/C++ compiler.
@@ -1311,57 +1214,48 @@ if (is_win) {
}
}
-# Default "optimization on" config. Set up variables so the
-# "default_optimization" config can re-use these settings.
-if (is_win) {
- # Favor size over speed, /O1 must be before the common flags. The GYP
- # build also specifies /Os and /GF but these are implied by /O1.
- optimize_cflags = [ "/O1" ] + common_optimize_on_cflags + [ "/Oi" ]
-} else if (is_android || is_ios) {
- # Favor size over speed.
- optimize_cflags = [ "-Os" ] + common_optimize_on_cflags
-} else {
- # Linux & Mac favor speed over size.
- # TODO(brettw) it's weird that Mac and desktop Linux are different. We should
- # explore favoring size over speed in this case as well.
- optimize_cflags = [ "-O2" ] + common_optimize_on_cflags
-}
-optimize_ldflags = common_optimize_on_ldflags
-
+# Default "optimization on" config.
config("optimize") {
- cflags = optimize_cflags
- ldflags = optimize_ldflags
-}
-
-# Turn off optimizations. Set up variables so the
-# "default_optimization" config can re-use these settings.
-if (is_win) {
- no_optimize_cflags = [
- "/Od", # Disable optimization.
- "/Ob0", # Disable all inlining (on by default).
- "/RTC1", # Runtime checks for stack frame and uninitialized variables.
- ]
- no_optimize_ldflags = []
-} else if (is_android && !android_full_debug) {
- # On Android we kind of optimize some things that don't affect debugging
- # much even when optimization is disabled to get the binary size down.
- no_optimize_cflags = [
- "-Os",
- "-fdata-sections",
- "-ffunction-sections",
- ]
- if (!using_sanitizer) {
- no_optimize_cflags += [ "-fomit-frame-pointer" ]
+ if (is_win) {
+ # Favor size over speed, /O1 must be before the common flags. The GYP
+ # build also specifies /Os and /GF but these are implied by /O1.
+ cflags = [ "/O1" ] + common_optimize_on_cflags + [ "/Oi" ]
+ } else if (is_android || is_ios) {
+ # Favor size over speed.
+ cflags = [ "-Os" ] + common_optimize_on_cflags
+ } else {
+ # Linux & Mac favor speed over size.
+ # TODO(brettw) it's weird that Mac and desktop Linux are different. We should
+ # explore favoring size over speed in this case as well.
+ cflags = [ "-O2" ] + common_optimize_on_cflags
}
- no_optimize_ldflags = common_optimize_on_ldflags
-} else {
- no_optimize_cflags = [ "-O0" ]
- no_optimize_ldflags = []
+ ldflags = common_optimize_on_ldflags
}
+# Turn off optimizations.
config("no_optimize") {
- cflags = no_optimize_cflags
- ldflags = no_optimize_ldflags
+ if (is_win) {
+ cflags = [
+ "/Od", # Disable optimization.
+ "/Ob0", # Disable all inlining (on by default).
+ "/RTC1", # Runtime checks for stack frame and uninitialized variables.
+ ]
+ } else if (is_android && !android_full_debug) {
+ # On Android we kind of optimize some things that don't affect debugging
+ # much even when optimization is disabled to get the binary size down.
+ cflags = [
+ "-Os",
+ "-fdata-sections",
+ "-ffunction-sections",
+ ]
+ if (!using_sanitizer) {
+ cflags += [ "-fomit-frame-pointer" ]
+ }
+ ldflags = common_optimize_on_ldflags
+ } else {
+ cflags = [ "-O0" ]
+ ldflags = []
+ }
}
# Turns up the optimization level. On Windows, this implies whole program
@@ -1396,11 +1290,9 @@ config("optimize_max") {
# either "optimize" or "no_optimize", depending on the build flags.
config("default_optimization") {
if (is_debug) {
- cflags = no_optimize_cflags
- ldflags = no_optimize_ldflags
+ configs = [ ":no_optimize" ]
} else {
- cflags = optimize_cflags
- ldflags = optimize_ldflags
+ configs = [ ":optimize" ]
}
}
@@ -1416,80 +1308,68 @@ config("default_optimization") {
# configs += [ "//build/config/compiler:symbols" ]
# Full symbols.
-if (is_win) {
- import("//build/toolchain/goma.gni")
- if (use_goma) {
- symbols_cflags = [ "/Z7" ] # No PDB file
- } else {
- symbols_cflags = [ "/Zi" ] # Produce PDB file, no edit and continue.
- }
- if (is_win_fastlink) {
- # Tell VS 2015+ to create a PDB that references debug
- # information in .obj and .lib files instead of copying
- # it all. This flag is incompatible with /PROFILE
- symbols_ldflags = [ "/DEBUG:FASTLINK" ]
+config("symbols") {
Dirk Pranke 2015/09/16 21:07:31 nit: I wonder if this would be better named as "fu
brettw 2015/09/16 21:34:32 I'm not opposed to renaming it but it's in like 5
+ if (is_win) {
+ import("//build/toolchain/goma.gni")
+ if (use_goma) {
+ cflags = [ "/Z7" ] # No PDB file
+ } else {
+ cflags = [ "/Zi" ] # Produce PDB file, no edit and continue.
+ }
+ if (is_win_fastlink) {
+ # Tell VS 2015+ to create a PDB that references debug
+ # information in .obj and .lib files instead of copying
+ # it all. This flag is incompatible with /PROFILE
+ ldflags = [ "/DEBUG:FASTLINK" ]
+ } else {
+ ldflags = [ "/DEBUG" ]
+ }
} else {
- symbols_ldflags = [ "/DEBUG" ]
- }
-} else {
- symbols_cflags = [ "-g2" ]
- if (use_debug_fission) {
- symbols_cflags += [ "-gsplit-dwarf" ]
+ cflags = [ "-g2" ]
+ if (use_debug_fission) {
+ cflags += [ "-gsplit-dwarf" ]
+ }
+ ldflags = []
}
- symbols_ldflags = []
-}
-
-config("symbols") {
- cflags = symbols_cflags
- ldflags = symbols_ldflags
}
# Minimal symbols.
-if (is_win) {
- # Linker symbols for backtraces only.
- minimal_symbols_cflags = []
- if (is_win_fastlink) {
- # Tell VS 2015+ to create a PDB that references debug
- # information in .obj and .lib files instead of copying
- # it all. This flag is incompatible with /PROFILE
- minimal_symbols_ldflags = [ "/DEBUG:FASTLINK" ]
+config("minimal_symbols") {
+ if (is_win) {
+ # Linker symbols for backtraces only.
+ cflags = []
+ if (is_win_fastlink) {
+ # Tell VS 2015+ to create a PDB that references debug
+ # information in .obj and .lib files instead of copying
+ # it all. This flag is incompatible with /PROFILE
+ ldflags = [ "/DEBUG:FASTLINK" ]
+ } else {
+ ldflags = [ "/DEBUG" ]
+ }
} else {
- minimal_symbols_ldflags = [ "/DEBUG" ]
- }
-} else {
- minimal_symbols_cflags = [ "-g1" ]
- if (use_debug_fission) {
- minimal_symbols_cflags += [ "-gsplit-dwarf" ]
+ cflags = [ "-g1" ]
+ if (use_debug_fission) {
+ cflags += [ "-gsplit-dwarf" ]
+ }
+ ldflags = []
}
- minimal_symbols_ldflags = []
-}
-
-config("minimal_symbols") {
- cflags = minimal_symbols_cflags
- ldflags = minimal_symbols_ldflags
}
# No symbols.
-if (is_win) {
- no_symbols_cflags = []
-} else {
- no_symbols_cflags = [ "-g0" ]
-}
-
config("no_symbols") {
- cflags = no_symbols_cflags
+ if (!is_win) {
+ cflags = [ "-g0" ]
+ }
}
# Default symbols.
config("default_symbols") {
if (symbol_level == 0) {
- cflags = no_symbols_cflags
+ configs = [ ":no_symbols" ]
} else if (symbol_level == 1) {
- cflags = minimal_symbols_cflags
- ldflags = minimal_symbols_ldflags
+ configs = [ ":minimal_symbols" ]
} else if (symbol_level == 2) {
- cflags = symbols_cflags
- ldflags = symbols_ldflags
+ configs = [ ":symbols" ]
} else {
assert(false)
}
« no previous file with comments | « build/config/android/BUILD.gn ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698