| OLD | NEW |
| 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
| 3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
| 4 | 4 |
| 5 import("//build/config/android/config.gni") | 5 import("//build/config/android/config.gni") |
| 6 import("//build/config/chrome_build.gni") | 6 import("//build/config/chrome_build.gni") |
| 7 import("//build/config/compiler/compiler.gni") | 7 import("//build/config/compiler/compiler.gni") |
| 8 import("//build/config/nacl/config.gni") |
| 8 import("//build/toolchain/ccache.gni") | 9 import("//build/toolchain/ccache.gni") |
| 9 | 10 |
| 10 if (current_cpu == "arm") { | 11 if (current_cpu == "arm") { |
| 11 import("//build/config/arm.gni") | 12 import("//build/config/arm.gni") |
| 12 } | 13 } |
| 13 if (current_cpu == "mipsel" || current_cpu == "mips64el") { | 14 if (current_cpu == "mipsel" || current_cpu == "mips64el") { |
| 14 import("//build/config/mips.gni") | 15 import("//build/config/mips.gni") |
| 15 } | 16 } |
| 16 if (is_posix) { | 17 if (is_posix) { |
| 17 import("//build/config/gcc/gcc_version.gni") | 18 import("//build/config/gcc/gcc_version.gni") |
| (...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 120 | 121 |
| 121 # System-specific flags. If your compiler flags apply to one of the | 122 # System-specific flags. If your compiler flags apply to one of the |
| 122 # categories here, add it to the associated file to keep this shared config | 123 # categories here, add it to the associated file to keep this shared config |
| 123 # smaller. | 124 # smaller. |
| 124 if (is_win) { | 125 if (is_win) { |
| 125 configs += [ "//build/config/win:compiler" ] | 126 configs += [ "//build/config/win:compiler" ] |
| 126 } else if (is_android) { | 127 } else if (is_android) { |
| 127 configs += [ "//build/config/android:compiler" ] | 128 configs += [ "//build/config/android:compiler" ] |
| 128 } else if (is_linux) { | 129 } else if (is_linux) { |
| 129 configs += [ "//build/config/linux:compiler" ] | 130 configs += [ "//build/config/linux:compiler" ] |
| 131 } else if (is_nacl) { |
| 132 configs += [ "//build/config/nacl:compiler" ] |
| 130 } else if (is_ios || is_mac) { | 133 } else if (is_ios || is_mac) { |
| 131 configs += [ "//build/config/mac:compiler" ] | 134 configs += [ "//build/config/mac:compiler" ] |
| 132 } | 135 } |
| 133 | 136 |
| 134 # See the definitions below. | 137 # See the definitions below. |
| 135 configs += [ | 138 configs += [ |
| 136 ":compiler_cpu_abi", | 139 ":compiler_cpu_abi", |
| 137 ":compiler_codegen", | 140 ":compiler_codegen", |
| 138 ] | 141 ] |
| 139 | 142 |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 221 | 224 |
| 222 defines += [ "_FILE_OFFSET_BITS=64" ] | 225 defines += [ "_FILE_OFFSET_BITS=64" ] |
| 223 | 226 |
| 224 if (!is_android) { | 227 if (!is_android) { |
| 225 defines += [ | 228 defines += [ |
| 226 "_LARGEFILE_SOURCE", | 229 "_LARGEFILE_SOURCE", |
| 227 "_LARGEFILE64_SOURCE", | 230 "_LARGEFILE64_SOURCE", |
| 228 ] | 231 ] |
| 229 } | 232 } |
| 230 | 233 |
| 231 # Omit unwind support in official builds to save space. We can use breakpad | 234 if (!is_nacl) { |
| 232 # for these builds. | 235 # Omit unwind support in official builds to save space. |
| 233 if (is_chrome_branded && is_official_build) { | 236 # We can use breakpad for these builds. |
| 234 cflags += [ | 237 if (is_chrome_branded && is_official_build) { |
| 235 "-fno-unwind-tables", | 238 cflags += [ |
| 236 "-fno-asynchronous-unwind-tables", | 239 "-fno-unwind-tables", |
| 237 ] | 240 "-fno-asynchronous-unwind-tables", |
| 238 defines += [ "NO_UNWIND_TABLES" ] | 241 ] |
| 239 } else { | 242 defines += [ "NO_UNWIND_TABLES" ] |
| 240 cflags += [ "-funwind-tables" ] | 243 } else { |
| 244 cflags += [ "-funwind-tables" ] |
| 245 } |
| 241 } | 246 } |
| 242 } | 247 } |
| 243 | 248 |
| 244 # Linux/Android common flags setup. | 249 # Linux/Android common flags setup. |
| 245 # --------------------------------- | 250 # --------------------------------- |
| 246 if (is_linux || is_android) { | 251 if (is_linux || is_android) { |
| 247 cflags += [ | 252 cflags += [ |
| 248 "-fPIC", | 253 "-fPIC", |
| 249 "-pipe", # Use pipes for communicating between sub-processes. Faster. | 254 "-pipe", # Use pipes for communicating between sub-processes. Faster. |
| 250 ] | 255 ] |
| (...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 433 } | 438 } |
| 434 } | 439 } |
| 435 | 440 |
| 436 asmflags = cflags | 441 asmflags = cflags |
| 437 } | 442 } |
| 438 | 443 |
| 439 # This provides options to tweak code generation that are necessary | 444 # This provides options to tweak code generation that are necessary |
| 440 # for particular Chromium code or for working around particular | 445 # for particular Chromium code or for working around particular |
| 441 # compiler bugs (or the combination of the two). | 446 # compiler bugs (or the combination of the two). |
| 442 config("compiler_codegen") { | 447 config("compiler_codegen") { |
| 448 configs = [] |
| 443 cflags = [] | 449 cflags = [] |
| 444 | 450 |
| 445 if (is_posix && !is_mac && !is_ios && !is_nacl) { | 451 if (is_nacl) { |
| 452 configs += [ "//build/config/nacl:compiler_codegen" ] |
| 453 } else if (is_posix && !is_mac && !is_ios) { |
| 446 if (current_cpu == "x86") { | 454 if (current_cpu == "x86") { |
| 447 if (is_clang) { | 455 if (is_clang) { |
| 448 cflags += [ | 456 cflags += [ |
| 449 # Else building libyuv gives clang's register allocator issues, | 457 # Else building libyuv gives clang's register allocator issues, |
| 450 # see llvm.org/PR15798 / crbug.com/233709 | 458 # see llvm.org/PR15798 / crbug.com/233709 |
| 451 "-momit-leaf-frame-pointer", | 459 "-momit-leaf-frame-pointer", |
| 452 | 460 |
| 453 # Align the stack on 16-byte boundaries, http://crbug.com/418554. | 461 # Align the stack on 16-byte boundaries, http://crbug.com/418554. |
| 454 "-mstack-alignment=16", | 462 "-mstack-alignment=16", |
| 455 "-mstackrealign", | 463 "-mstackrealign", |
| (...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1048 } else { | 1056 } else { |
| 1049 cflags = [ "-O0" ] | 1057 cflags = [ "-O0" ] |
| 1050 ldflags = [] | 1058 ldflags = [] |
| 1051 } | 1059 } |
| 1052 } | 1060 } |
| 1053 | 1061 |
| 1054 # Turns up the optimization level. On Windows, this implies whole program | 1062 # Turns up the optimization level. On Windows, this implies whole program |
| 1055 # optimization and link-time code generation which is very expensive and should | 1063 # optimization and link-time code generation which is very expensive and should |
| 1056 # be used sparingly. | 1064 # be used sparingly. |
| 1057 config("optimize_max") { | 1065 config("optimize_max") { |
| 1058 ldflags = common_optimize_on_ldflags | 1066 if (is_nacl_irt) { |
| 1059 if (is_win) { | 1067 # The NaCl IRT is a special case and always wants its own config. |
| 1060 # Favor speed over size, /O2 must be before the common flags. The GYP | 1068 # Various components do: |
| 1061 # build also specifies /Ot, /Oi, and /GF, but these are implied by /O2. | 1069 # if (!is_debug) { |
| 1062 cflags = [ "/O2" ] + common_optimize_on_cflags | 1070 # configs -= [ "//build/config/compiler:default_optimization" ] |
| 1063 if (is_official_build) { | 1071 # configs += [ "//build/config/compiler:optimize_max" ] |
| 1064 # TODO(GYP): TODO(dpranke): Should these only be on in an official | 1072 # } |
| 1065 # build, or on all the time? For now we'll require official build so | 1073 # So this config has to have the selection logic just like |
| 1066 # that the compile is clean. | 1074 # "default_optimization", below. |
| 1067 cflags += [ | 1075 configs = [ "//build/config/nacl:irt_optimize" ] |
| 1068 "/GL", # Whole program optimization. | 1076 } else { |
| 1077 ldflags = common_optimize_on_ldflags |
| 1078 if (is_win) { |
| 1079 # Favor speed over size, /O2 must be before the common flags. The GYP |
| 1080 # build also specifies /Ot, /Oi, and /GF, but these are implied by /O2. |
| 1081 cflags = [ "/O2" ] + common_optimize_on_cflags |
| 1082 if (is_official_build) { |
| 1083 # TODO(GYP): TODO(dpranke): Should these only be on in an official |
| 1084 # build, or on all the time? For now we'll require official build so |
| 1085 # that the compile is clean. |
| 1086 cflags += [ |
| 1087 "/GL", # Whole program optimization. |
| 1069 | 1088 |
| 1070 # Disable Warning 4702 ("Unreachable code") for the WPO/PGO builds. | 1089 # Disable Warning 4702 ("Unreachable code") for the WPO/PGO builds. |
| 1071 # Probably anything that this would catch that wouldn't be caught in a | 1090 # Probably anything that this would catch that wouldn't be caught in a |
| 1072 # normal build isn't going to actually be a bug, so the incremental | 1091 # normal build isn't going to actually be a bug, so the incremental |
| 1073 # value of C4702 for PGO builds is likely very small. | 1092 # value of C4702 for PGO builds is likely very small. |
| 1074 "/wd4702", | 1093 "/wd4702", |
| 1075 ] | 1094 ] |
| 1095 } |
| 1096 } else { |
| 1097 cflags = [ "-O2" ] + common_optimize_on_cflags |
| 1076 } | 1098 } |
| 1077 } else { | |
| 1078 cflags = [ "-O2" ] + common_optimize_on_cflags | |
| 1079 } | 1099 } |
| 1080 } | 1100 } |
| 1081 | 1101 |
| 1082 # The default optimization applied to all targets. This will be equivalent to | 1102 # The default optimization applied to all targets. This will be equivalent to |
| 1083 # either "optimize" or "no_optimize", depending on the build flags. | 1103 # either "optimize" or "no_optimize", depending on the build flags. |
| 1084 config("default_optimization") { | 1104 config("default_optimization") { |
| 1085 if (is_debug) { | 1105 if (is_nacl_irt) { |
| 1106 # The NaCl IRT is a special case and always wants its own config. |
| 1107 # It gets optimized the same way regardless of the type of build. |
| 1108 configs = [ "//build/config/nacl:irt_optimize" ] |
| 1109 } else if (is_debug) { |
| 1086 configs = [ ":no_optimize" ] | 1110 configs = [ ":no_optimize" ] |
| 1087 } else { | 1111 } else { |
| 1088 configs = [ ":optimize" ] | 1112 configs = [ ":optimize" ] |
| 1089 } | 1113 } |
| 1090 } | 1114 } |
| 1091 | 1115 |
| 1092 # Symbols ---------------------------------------------------------------------- | 1116 # Symbols ---------------------------------------------------------------------- |
| 1093 | 1117 |
| 1094 # The BUILDCONFIG file sets the "default_symbols" config on targets by | 1118 # The BUILDCONFIG file sets the "default_symbols" config on targets by |
| 1095 # default. It will be equivalent to one the three specific symbol levels. | 1119 # default. It will be equivalent to one the three specific symbol levels. |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1163 if (symbol_level == 0) { | 1187 if (symbol_level == 0) { |
| 1164 configs = [ ":no_symbols" ] | 1188 configs = [ ":no_symbols" ] |
| 1165 } else if (symbol_level == 1) { | 1189 } else if (symbol_level == 1) { |
| 1166 configs = [ ":minimal_symbols" ] | 1190 configs = [ ":minimal_symbols" ] |
| 1167 } else if (symbol_level == 2) { | 1191 } else if (symbol_level == 2) { |
| 1168 configs = [ ":symbols" ] | 1192 configs = [ ":symbols" ] |
| 1169 } else { | 1193 } else { |
| 1170 assert(false) | 1194 assert(false) |
| 1171 } | 1195 } |
| 1172 } | 1196 } |
| OLD | NEW |