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 if (current_cpu == "arm") { | 7 if (current_cpu == "arm") { |
8 import("//build/config/arm.gni") | 8 import("//build/config/arm.gni") |
9 } | 9 } |
10 if (current_cpu == "mipsel" || current_cpu == "mips64el") { | 10 if (current_cpu == "mipsel" || current_cpu == "mips64el") { |
(...skipping 1073 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1084 # Note that BUILDCONFIG.gn sets up a variable "default_optimization_config" | 1084 # Note that BUILDCONFIG.gn sets up a variable "default_optimization_config" |
1085 # which it will assign to the config it implicitly applies to every target. If | 1085 # which it will assign to the config it implicitly applies to every target. If |
1086 # you want to override the optimization level for your target, remove this | 1086 # you want to override the optimization level for your target, remove this |
1087 # config (which will expand differently for debug or release builds), and then | 1087 # config (which will expand differently for debug or release builds), and then |
1088 # add back the one you want to override it with: | 1088 # add back the one you want to override it with: |
1089 # | 1089 # |
1090 # configs -= default_optimization_config | 1090 # configs -= default_optimization_config |
1091 # configs += [ "//build/config/compiler/optimize_max" ] | 1091 # configs += [ "//build/config/compiler/optimize_max" ] |
1092 | 1092 |
1093 # Shared settings for both "optimize" and "optimize_max" configs. | 1093 # Shared settings for both "optimize" and "optimize_max" configs. |
| 1094 # IMPORTANT: On Windows "/O1" and "/O2" must go before the common flags. |
1094 if (is_win) { | 1095 if (is_win) { |
1095 common_optimize_on_cflags = [ | 1096 common_optimize_on_cflags = [ |
1096 "/O2", | 1097 "/Ob2", # Both explicit and auto inlining. |
1097 "/Ob2", # both explicit and auto inlining. | 1098 "/Oy-", # Disable omitting frame pointers, must be after /O2. |
1098 "/Oy-", # disable omitting frame pointers, must be after /o2. | |
1099 "/Os", # favor size over speed. | |
1100 ] | 1099 ] |
1101 if (!is_asan) { | 1100 if (!is_asan) { |
1102 common_optimize_on_cflags += [ | 1101 common_optimize_on_cflags += [ |
1103 # Put data in separate COMDATs. This allows the linker | 1102 # Put data in separate COMDATs. This allows the linker |
1104 # to put bit-identical constants at the same address even if | 1103 # to put bit-identical constants at the same address even if |
1105 # they're unrelated constants, which saves binary size. | 1104 # they're unrelated constants, which saves binary size. |
1106 # This optimization can't be used when ASan is enabled because | 1105 # This optimization can't be used when ASan is enabled because |
1107 # it is not compatible with the ASan ODR checker. | 1106 # it is not compatible with the ASan ODR checker. |
1108 "/Gw", | 1107 "/Gw", |
1109 ] | 1108 ] |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1155 # Functions interposed by the sanitizers can make ld think | 1154 # Functions interposed by the sanitizers can make ld think |
1156 # that some libraries aren't needed when they actually are, | 1155 # that some libraries aren't needed when they actually are, |
1157 # http://crbug.com/234010. As workaround, disable --as-needed. | 1156 # http://crbug.com/234010. As workaround, disable --as-needed. |
1158 common_optimize_on_ldflags += [ "-Wl,--as-needed" ] | 1157 common_optimize_on_ldflags += [ "-Wl,--as-needed" ] |
1159 } | 1158 } |
1160 } | 1159 } |
1161 } | 1160 } |
1162 | 1161 |
1163 # Default "optimization on" config. On Windows, this favors size over speed. | 1162 # Default "optimization on" config. On Windows, this favors size over speed. |
1164 config("optimize") { | 1163 config("optimize") { |
1165 cflags = common_optimize_on_cflags | 1164 if (is_win) { |
| 1165 # Favor size over speed, /O1 must be before the common flags. The GYP |
| 1166 # build also specifies /Os and /GF but these are implied by /O1. |
| 1167 cflags = [ "/O1" ] + common_optimize_on_cflags + [ "/Oi" ] |
| 1168 } else if (is_android || is_ios) { |
| 1169 cflags = [ "-Os" ] + common_optimize_on_cflags # Favor size over speed. |
| 1170 } else { |
| 1171 cflags = [ "-O2" ] + common_optimize_on_cflags |
| 1172 } |
1166 ldflags = common_optimize_on_ldflags | 1173 ldflags = common_optimize_on_ldflags |
1167 if (is_win) { | |
1168 cflags += [ "/Os" ] # favor size over speed. | |
1169 } else if (is_android || is_ios) { | |
1170 cflags += [ "-Os" ] # Favor size over speed. | |
1171 } else { | |
1172 cflags += [ "-O2" ] | |
1173 } | |
1174 } | 1174 } |
1175 | 1175 |
1176 # Turn off optimizations. | 1176 # Turn off optimizations. |
1177 config("no_optimize") { | 1177 config("no_optimize") { |
1178 if (is_win) { | 1178 if (is_win) { |
1179 cflags = [ | 1179 cflags = [ |
1180 "/Od", # Disable optimization. | 1180 "/Od", # Disable optimization. |
1181 "/Ob0", # Disable all inlining (on by default). | 1181 "/Ob0", # Disable all inlining (on by default). |
1182 "/RTC1", # Runtime checks for stack frame and uninitialized variables. | 1182 "/RTC1", # Runtime checks for stack frame and uninitialized variables. |
1183 ] | 1183 ] |
(...skipping 11 matching lines...) Expand all Loading... |
1195 ldflags = common_optimize_on_ldflags | 1195 ldflags = common_optimize_on_ldflags |
1196 } else { | 1196 } else { |
1197 cflags = [ "-O0" ] | 1197 cflags = [ "-O0" ] |
1198 } | 1198 } |
1199 } | 1199 } |
1200 | 1200 |
1201 # Turns up the optimization level. On Windows, this implies whole program | 1201 # Turns up the optimization level. On Windows, this implies whole program |
1202 # optimization and link-time code generation which is very expensive and should | 1202 # optimization and link-time code generation which is very expensive and should |
1203 # be used sparingly. | 1203 # be used sparingly. |
1204 config("optimize_max") { | 1204 config("optimize_max") { |
1205 cflags = common_optimize_on_cflags | |
1206 ldflags = common_optimize_on_ldflags | 1205 ldflags = common_optimize_on_ldflags |
1207 if (is_win) { | 1206 if (is_win) { |
1208 cflags -= [ "/Os" ] | 1207 # Favor speed over size, /O2 must be before the common flags. The GYP |
1209 cflags += [ "/Ot" ] # Favor speed over size. | 1208 # build also specifies /Ot, /Oi, and /GF, but these are implied by /O2. |
| 1209 cflags = [ "/O2" ] + common_optimize_on_cflags |
1210 if (is_official_build) { | 1210 if (is_official_build) { |
1211 # TODO(GYP): TODO(dpranke): Should these only be on in an official | 1211 # TODO(GYP): TODO(dpranke): Should these only be on in an official |
1212 # build, or on all the time? For now we'll require official build so | 1212 # build, or on all the time? For now we'll require official build so |
1213 # that the compile is clean. | 1213 # that the compile is clean. |
1214 cflags += [ | 1214 cflags += [ |
1215 "/GL", # Whole program optimization. | 1215 "/GL", # Whole program optimization. |
1216 | 1216 |
1217 # Disable Warning 4702 ("Unreachable code") for the WPO/PGO builds. | 1217 # Disable Warning 4702 ("Unreachable code") for the WPO/PGO builds. |
1218 # Probably anything that this would catch that wouldn't be caught in a | 1218 # Probably anything that this would catch that wouldn't be caught in a |
1219 # normal build isn't going to actually be a bug, so the incremental | 1219 # normal build isn't going to actually be a bug, so the incremental |
1220 # value of C4702 for PGO builds is likely very small. | 1220 # value of C4702 for PGO builds is likely very small. |
1221 "/wd4702", | 1221 "/wd4702", |
1222 ] | 1222 ] |
1223 ldflags += [ "/LTCG" ] | 1223 ldflags += [ "/LTCG" ] |
1224 } | 1224 } |
1225 } else { | 1225 } else { |
1226 cflags += [ "-O2" ] | 1226 cflags = [ "-O2" ] + common_optimize_on_cflags |
1227 } | 1227 } |
1228 } | 1228 } |
1229 | 1229 |
1230 # Symbols ---------------------------------------------------------------------- | 1230 # Symbols ---------------------------------------------------------------------- |
1231 | 1231 |
1232 config("symbols") { | 1232 config("symbols") { |
1233 if (is_win) { | 1233 if (is_win) { |
1234 import("//build/toolchain/goma.gni") | 1234 import("//build/toolchain/goma.gni") |
1235 if (use_goma) { | 1235 if (use_goma) { |
1236 cflags = [ "/Z7" ] # No PDB file | 1236 cflags = [ "/Z7" ] # No PDB file |
(...skipping 19 matching lines...) Expand all Loading... |
1256 cflags += [ "-gsplit-dwarf" ] | 1256 cflags += [ "-gsplit-dwarf" ] |
1257 } | 1257 } |
1258 } | 1258 } |
1259 } | 1259 } |
1260 | 1260 |
1261 config("no_symbols") { | 1261 config("no_symbols") { |
1262 if (!is_win) { | 1262 if (!is_win) { |
1263 cflags = [ "-g0" ] | 1263 cflags = [ "-g0" ] |
1264 } | 1264 } |
1265 } | 1265 } |
OLD | NEW |