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

Side by Side Diff: build/config/compiler/BUILD.gn

Issue 2815453004: For building v8 using gn on aix_ppc64, linux_s390x and linux_ppc64. (Closed)
Patch Set: Created 3 years, 8 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 unified diff | Download patch
OLDNEW
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/chromecast_build.gni") 7 import("//build/config/chromecast_build.gni")
8 import("//build/config/compiler/compiler.gni") 8 import("//build/config/compiler/compiler.gni")
9 import("//build/config/nacl/config.gni") 9 import("//build/config/nacl/config.gni")
10 import("//build/toolchain/cc_wrapper.gni") 10 import("//build/toolchain/cc_wrapper.gni")
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
155 if (is_win) { 155 if (is_win) {
156 configs += [ "//build/config/win:compiler" ] 156 configs += [ "//build/config/win:compiler" ]
157 } else if (is_android) { 157 } else if (is_android) {
158 configs += [ "//build/config/android:compiler" ] 158 configs += [ "//build/config/android:compiler" ]
159 } else if (is_linux) { 159 } else if (is_linux) {
160 configs += [ "//build/config/linux:compiler" ] 160 configs += [ "//build/config/linux:compiler" ]
161 } else if (is_nacl) { 161 } else if (is_nacl) {
162 configs += [ "//build/config/nacl:compiler" ] 162 configs += [ "//build/config/nacl:compiler" ]
163 } else if (is_ios || is_mac) { 163 } else if (is_ios || is_mac) {
164 configs += [ "//build/config/mac:compiler" ] 164 configs += [ "//build/config/mac:compiler" ]
165 } else if (current_os == "aix") {
166 configs += [ "//build/config/aix:compiler" ]
165 } 167 }
166 168
167 # See the definitions below. 169 # See the definitions below.
168 configs += [ 170 configs += [
169 ":compiler_cpu_abi", 171 ":compiler_cpu_abi",
170 ":compiler_codegen", 172 ":compiler_codegen",
171 ] 173 ]
172 174
173 # In general, Windows is totally different, but all the other builds share 175 # In general, Windows is totally different, but all the other builds share
174 # some common GCC configuration. 176 # some common GCC configuration.
175 if (!is_win) { 177 if (!is_win) {
176 # Common GCC compiler flags setup. 178 # Common GCC compiler flags setup.
177 # -------------------------------- 179 # --------------------------------
178 cflags += [ "-fno-strict-aliasing" ] # See http://crbug.com/32204 180 if (current_os != "aix" &&
Michael Achenbach 2017/04/25 14:08:30 Just double-checking: You don't need the aix check
rayb 2017/04/25 17:28:48 We only support AIX on ppc64 BE. So further checki
179 cflags_cc += [ 181 !(is_linux && (current_cpu == "s390x" || current_cpu == "s390" ||
180 # Not exporting C++ inline functions can generally be applied anywhere 182 current_cpu == "ppc64" || current_cpu == "ppc"))) {
181 # so we do so here. Normal function visibility is controlled by 183 cflags_cc += [
Michael Achenbach 2017/04/18 13:46:04 This doesn't include -fno-strict-aliasing in cflag
rayb 2017/04/25 00:41:04 Acknowledged.
182 # //build/config/gcc:symbol_visibility_hidden. 184 "fno-strict-aliasing",
183 "-fvisibility-inlines-hidden", 185
184 ] 186 # Not exporting C++ inline functions can generally be applied anywhere
187 # so we do so here. Normal function visibility is controlled by
188 # //build/config/gcc:symbol_visibility_hidden.
189 "-fvisibility-inlines-hidden",
190 ]
191 }
185 192
186 # Stack protection. 193 # Stack protection.
187 if (is_mac) { 194 if (is_mac) {
188 # The strong variant of the stack protector significantly increases 195 # The strong variant of the stack protector significantly increases
189 # binary size, so only enable it in debug mode. 196 # binary size, so only enable it in debug mode.
190 if (is_debug) { 197 if (is_debug) {
191 cflags += [ "-fstack-protector-strong" ] 198 cflags += [ "-fstack-protector-strong" ]
192 } else { 199 } else {
193 cflags += [ "-fstack-protector" ] 200 cflags += [ "-fstack-protector" ]
194 } 201 }
195 } else if (is_posix && !is_chromeos && !is_nacl) { 202 } else if (is_posix && !is_chromeos && !is_nacl) {
196 # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc supports it. 203 # TODO(phajdan.jr): Use -fstack-protector-strong when our gcc supports it.
197 # See also https://crbug.com/533294 204 # See also https://crbug.com/533294
198 cflags += [ "--param=ssp-buffer-size=4" ] 205 cflags += [ "--param=ssp-buffer-size=4" ]
199 206
200 # The x86 toolchain currently has problems with stack-protector. 207 # The x86 toolchain currently has problems with stack-protector.
201 if (is_android && current_cpu == "x86") { 208 if (is_android && current_cpu == "x86") {
202 cflags += [ "-fno-stack-protector" ] 209 cflags += [ "-fno-stack-protector" ]
203 } else { 210 } else if (current_os != "aix") {
211 # Not available on aix.
204 cflags += [ "-fstack-protector" ] 212 cflags += [ "-fstack-protector" ]
205 } 213 }
206 } 214 }
207 215
208 # Linker warnings. 216 # Linker warnings.
209 if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") && 217 if (fatal_linker_warnings && !(is_chromeos && current_cpu == "arm") &&
210 !(is_android && use_order_profiling) && !is_mac && !is_ios) { 218 !(is_android && use_order_profiling) && !is_mac && !is_ios &&
219 current_os != "aix") {
211 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 220 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580
212 # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1 221 # TODO(lizeb,pasko): Fix link errors when linking with order_profiling=1
213 # crbug.com/485542 222 # crbug.com/485542
214 ldflags += [ "-Wl,--fatal-warnings" ] 223 ldflags += [ "-Wl,--fatal-warnings" ]
215 } 224 }
216 } 225 }
217 226
218 # Eliminate build metadata (__DATE__, __TIME__ and __TIMESTAMP__) for 227 # Eliminate build metadata (__DATE__, __TIME__ and __TIMESTAMP__) for
219 # deterministic build. See https://crbug.com/314403 228 # deterministic build. See https://crbug.com/314403
220 if (!is_official_build) { 229 if (!is_official_build) {
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
429 # clang-cl (used if is_win) doesn't expose this flag. 438 # clang-cl (used if is_win) doesn't expose this flag.
430 # Currently disabled for nacl since its toolchain lacks this flag (too old). 439 # Currently disabled for nacl since its toolchain lacks this flag (too old).
431 # TODO(zforman): Once nacl's toolchain is updated, remove check. 440 # TODO(zforman): Once nacl's toolchain is updated, remove check.
432 if (is_clang && is_linux && strip_absolute_paths_from_debug_symbols) { 441 if (is_clang && is_linux && strip_absolute_paths_from_debug_symbols) {
433 absolute_path = rebase_path("//.") 442 absolute_path = rebase_path("//.")
434 cflags += [ "-fdebug-prefix-map=$absolute_path=." ] 443 cflags += [ "-fdebug-prefix-map=$absolute_path=." ]
435 } 444 }
436 445
437 # C++11 compiler flags setup. 446 # C++11 compiler flags setup.
438 # --------------------------- 447 # ---------------------------
439 if (is_linux || is_android || (is_nacl && is_clang)) { 448 if (is_linux || is_android || (is_nacl && is_clang) || current_os == "aix") {
440 # gnu++11 instead of c++11 is needed because some code uses typeof() (a 449 # gnu++11 instead of c++11 is needed because some code uses typeof() (a
441 # GNU extension). 450 # GNU extension).
442 # TODO(thakis): Eventually switch this to c++11 instead, 451 # TODO(thakis): Eventually switch this to c++11 instead,
443 # http://crbug.com/427584 452 # http://crbug.com/427584
444 cflags_cc += [ "-std=gnu++11" ] 453 cflags_cc += [ "-std=gnu++11" ]
445 } else if (!is_win && !is_nacl) { 454 } else if (!is_win && !is_nacl) {
446 # TODO(mcgrathr) - the NaCl GCC toolchain doesn't support either gnu++11 455 # TODO(mcgrathr) - the NaCl GCC toolchain doesn't support either gnu++11
447 # or c++11; we technically don't need this toolchain any more, but there 456 # or c++11; we technically don't need this toolchain any more, but there
448 # are still a few buildbots using it, so until those are turned off 457 # are still a few buildbots using it, so until those are turned off
449 # we need the !is_nacl clause and the (is_nacl && is_clang) clause, above. 458 # we need the !is_nacl clause and the (is_nacl && is_clang) clause, above.
(...skipping 680 matching lines...) Expand 10 before | Expand all | Expand 10 after
1130 } 1139 }
1131 1140
1132 # In Chromium code, we define __STDC_foo_MACROS in order to get the 1141 # In Chromium code, we define __STDC_foo_MACROS in order to get the
1133 # C99 macros on Mac and Linux. 1142 # C99 macros on Mac and Linux.
1134 defines = [ 1143 defines = [
1135 "__STDC_CONSTANT_MACROS", 1144 "__STDC_CONSTANT_MACROS",
1136 "__STDC_FORMAT_MACROS", 1145 "__STDC_FORMAT_MACROS",
1137 ] 1146 ]
1138 1147
1139 if (!is_debug && !using_sanitizer && 1148 if (!is_debug && !using_sanitizer &&
1140 (!is_linux || !is_clang || is_official_build)) { 1149 (!is_linux || !is_clang || is_official_build) &&
1150 (current_cpu != "s390x" && current_cpu != "s390" &&
1151 current_cpu != "ppc64" && current_cpu != "ppc")) {
Michael Achenbach 2017/04/18 13:46:04 nit: For readability, maybe we could add a helper
rayb 2017/04/25 00:41:04 Done.
1141 # _FORTIFY_SOURCE isn't really supported by Clang now, see 1152 # _FORTIFY_SOURCE isn't really supported by Clang now, see
1142 # http://llvm.org/bugs/show_bug.cgi?id=16821. 1153 # http://llvm.org/bugs/show_bug.cgi?id=16821.
1143 # It seems to work fine with Ubuntu 12 headers though, so use it in 1154 # It seems to work fine with Ubuntu 12 headers though, so use it in
1144 # official builds. 1155 # official builds.
1145 # 1156 #
1146 # Non-chromium code is not guaranteed to compile cleanly with 1157 # Non-chromium code is not guaranteed to compile cleanly with
1147 # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are 1158 # _FORTIFY_SOURCE. Also, fortified build may fail when optimizations are
1148 # disabled, so only do that for Release build. 1159 # disabled, so only do that for Release build.
1149 defines += [ "_FORTIFY_SOURCE=2" ] 1160 defines += [ "_FORTIFY_SOURCE=2" ]
1150 } 1161 }
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
1350 "-Wl,--warn-shared-textrel", 1361 "-Wl,--warn-shared-textrel",
1351 ] 1362 ]
1352 } 1363 }
1353 } 1364 }
1354 1365
1355 if (is_mac || is_ios) { 1366 if (is_mac || is_ios) {
1356 if (symbol_level == 2) { 1367 if (symbol_level == 2) {
1357 # Mac dead code stripping requires symbols. 1368 # Mac dead code stripping requires symbols.
1358 common_optimize_on_ldflags += [ "-Wl,-dead_strip" ] 1369 common_optimize_on_ldflags += [ "-Wl,-dead_strip" ]
1359 } 1370 }
1360 } else { 1371 } else if (current_os != "aix") {
1361 # Non-Mac Posix flags. 1372 # Non-Mac Posix flags.
1362 1373
1363 common_optimize_on_cflags += [ 1374 common_optimize_on_cflags += [
1364 # Don't emit the GCC version ident directives, they just end up in the 1375 # Don't emit the GCC version ident directives, they just end up in the
1365 # .comment section taking up binary size. 1376 # .comment section taking up binary size.
1366 "-fno-ident", 1377 "-fno-ident",
1367 1378
1368 # Put data and code in their own sections, so that unused symbols 1379 # Put data and code in their own sections, so that unused symbols
1369 # can be removed at link time with --gc-sections. 1380 # can be removed at link time with --gc-sections.
1370 "-fdata-sections", 1381 "-fdata-sections",
1371 "-ffunction-sections", 1382 "-ffunction-sections",
1372 ] 1383 ]
1373 1384
1374 common_optimize_on_ldflags += [ 1385 if (current_os != "aix") {
Michael Achenbach 2017/04/18 13:46:03 This is already nested in a current_os != "aix" sc
rayb 2017/04/25 00:41:04 Done.
1375 # Specifically tell the linker to perform optimizations. 1386 common_optimize_on_ldflags += [
1376 # See http://lwn.net/Articles/192624/ . 1387 # Specifically tell the linker to perform optimizations.
1377 "-Wl,-O1", 1388 # See http://lwn.net/Articles/192624/ .
1378 "-Wl,--gc-sections", 1389 "-Wl,-O1",
1379 ] 1390 "-Wl,--gc-sections",
1391 ]
1392 }
1380 } 1393 }
1381 } 1394 }
1382 1395
1383 config("default_stack_frames") { 1396 config("default_stack_frames") {
1384 if (is_posix) { 1397 if (is_posix) {
1385 if (enabled_frame_pointers) { 1398 if (enabled_frame_pointers) {
1386 cflags = [ "-fno-omit-frame-pointer" ] 1399 cflags = [ "-fno-omit-frame-pointer" ]
1387 } else { 1400 } else {
1388 cflags = [ "-fomit-frame-pointer" ] 1401 cflags = [ "-fomit-frame-pointer" ]
1389 } 1402 }
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
1717 1730
1718 if (is_ios || is_mac) { 1731 if (is_ios || is_mac) {
1719 # On Mac and iOS, this enables support for ARC (automatic ref-counting). 1732 # On Mac and iOS, this enables support for ARC (automatic ref-counting).
1720 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html. 1733 # See http://clang.llvm.org/docs/AutomaticReferenceCounting.html.
1721 config("enable_arc") { 1734 config("enable_arc") {
1722 common_flags = [ "-fobjc-arc" ] 1735 common_flags = [ "-fobjc-arc" ]
1723 cflags_objc = common_flags 1736 cflags_objc = common_flags
1724 cflags_objcc = common_flags 1737 cflags_objcc = common_flags
1725 } 1738 }
1726 } 1739 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698