Chromium Code Reviews| 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") { |
| 11 import("//build/config/mips.gni") | 11 import("//build/config/mips.gni") |
| 12 } | 12 } |
| 13 if (is_posix) { | 13 if (is_posix) { |
| 14 import("//build/config/gcc/gcc_version.gni") | 14 import("//build/config/gcc/gcc_version.gni") |
| 15 } | 15 } |
| 16 | 16 import("//build/config/nacl/config.gni") |
| 17 import("//build/toolchain/ccache.gni") | 17 import("//build/toolchain/ccache.gni") |
| 18 import("//build/config/sanitizers/sanitizers.gni") | 18 import("//build/config/sanitizers/sanitizers.gni") |
| 19 | 19 |
| 20 declare_args() { | 20 declare_args() { |
| 21 # Normally, Android builds are lightly optimized, even for debug builds, to | 21 # Normally, Android builds are lightly optimized, even for debug builds, to |
| 22 # keep binary size down. Setting this flag to true disables such optimization | 22 # keep binary size down. Setting this flag to true disables such optimization |
| 23 android_full_debug = false | 23 android_full_debug = false |
| 24 | 24 |
| 25 # Whether to use the binary binutils checked into third_party/binutils. | 25 # Whether to use the binary binutils checked into third_party/binutils. |
| 26 # These are not multi-arch so cannot be used except on x86 and x86-64 (the | 26 # These are not multi-arch so cannot be used except on x86 and x86-64 (the |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 77 } | 77 } |
| 78 | 78 |
| 79 # compiler --------------------------------------------------------------------- | 79 # compiler --------------------------------------------------------------------- |
| 80 # | 80 # |
| 81 # Base compiler configuration. | 81 # Base compiler configuration. |
| 82 # | 82 # |
| 83 # See also "runtime_library" below for related stuff and a discussion about | 83 # See also "runtime_library" below for related stuff and a discussion about |
| 84 # where stuff should go. Put warning related stuff in the "warnings" config. | 84 # where stuff should go. Put warning related stuff in the "warnings" config. |
| 85 | 85 |
| 86 config("compiler") { | 86 config("compiler") { |
| 87 asmflags = [] | |
| 87 cflags = [] | 88 cflags = [] |
| 88 cflags_c = [] | 89 cflags_c = [] |
| 89 cflags_cc = [] | 90 cflags_cc = [] |
| 90 ldflags = [] | 91 ldflags = [] |
| 91 defines = [] | 92 defines = [] |
| 92 | 93 |
| 93 # In general, Windows is totally different, but all the other builds share | 94 # In general, Windows is totally different, but all the other builds share |
| 94 # some common GCC configuration. This section sets up Windows and the common | 95 # some common GCC configuration. This section sets up Windows and the common |
| 95 # GCC flags, and then we handle the other non-Windows platforms specifically | 96 # GCC flags, and then we handle the other non-Windows platforms specifically |
| 96 # below. | 97 # below. |
| (...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 567 if (is_clang) { | 568 if (is_clang) { |
| 568 if (current_cpu == "arm") { | 569 if (current_cpu == "arm") { |
| 569 cflags += [ "-target arm-linux-androideabi" ] | 570 cflags += [ "-target arm-linux-androideabi" ] |
| 570 ldflags += [ "-target arm-linux-androideabi" ] | 571 ldflags += [ "-target arm-linux-androideabi" ] |
| 571 } else if (current_cpu == "x86") { | 572 } else if (current_cpu == "x86") { |
| 572 cflags += [ "-target x86-linux-androideabi" ] | 573 cflags += [ "-target x86-linux-androideabi" ] |
| 573 ldflags += [ "-target x86-linux-androideabi" ] | 574 ldflags += [ "-target x86-linux-androideabi" ] |
| 574 } | 575 } |
| 575 } | 576 } |
| 576 } | 577 } |
| 578 | |
| 579 # Assign any flags set for the C compiler to asmflags so that they are sent | |
| 580 # to the assembler. The Windows assembler takes different types of flags | |
| 581 # so only do so for posix platforms | |
| 582 if (is_posix) { | |
|
jamesr
2015/10/21 00:32:10
kinda silly, all of the platforms we target are po
Petr Hosek
2015/10/21 02:23:42
Removed the check.
| |
| 583 asmflags += cflags | |
| 584 asmflags += cflags_c | |
| 585 } | |
| 586 } | |
| 587 | |
| 588 # This provides the basic options to select the target CPU and ABI. | |
| 589 # It is factored out of "compiler" so that special cases can use this | |
| 590 # without using everything that "compiler" brings in. Options that | |
| 591 # tweak code generation for a particular CPU do not belong here! | |
| 592 # See "compiler_codegen", below. | |
| 593 config("compiler_cpu_abi") { | |
| 594 cflags = [] | |
| 595 ldflags = [] | |
| 596 | |
| 597 if (is_posix && !(is_mac || is_ios)) { | |
| 598 # CPU architecture. We may or may not be doing a cross compile now, so for | |
| 599 # simplicity we always explicitly set the architecture. | |
| 600 if (current_cpu == "x64") { | |
| 601 cflags += [ | |
| 602 "-m64", | |
| 603 "-march=x86-64", | |
| 604 ] | |
| 605 ldflags += [ "-m64" ] | |
| 606 } else if (current_cpu == "x86") { | |
| 607 cflags += [ "-m32" ] | |
| 608 ldflags += [ "-m32" ] | |
| 609 } else if (current_cpu == "arm") { | |
| 610 if (is_clang && !is_android && !is_nacl) { | |
| 611 cflags += [ | |
| 612 "-target", | |
| 613 "arm-linux-gnueabihf", | |
| 614 ] | |
| 615 ldflags += [ | |
| 616 "-target", | |
| 617 "arm-linux-gnueabihf", | |
| 618 ] | |
| 619 } | |
| 620 if (!is_nacl) { | |
| 621 cflags += [ | |
| 622 "-march=$arm_arch", | |
| 623 "-mfloat-abi=$arm_float_abi", | |
| 624 ] | |
| 625 if (arm_use_thumb) { | |
| 626 cflags += [ "-mthumb" ] | |
| 627 if (is_android && !is_clang) { | |
| 628 # Clang doesn't support this option. | |
| 629 cflags += [ "-mthumb-interwork" ] | |
| 630 } | |
| 631 } | |
| 632 } | |
| 633 if (arm_tune != "") { | |
| 634 cflags += [ "-mtune=$arm_tune" ] | |
| 635 } | |
| 636 } else if (current_cpu == "mipsel") { | |
| 637 if (mips_arch_variant == "r6") { | |
| 638 cflags += [ | |
| 639 "-mips32r6", | |
| 640 "-Wa,-mips32r6", | |
| 641 ] | |
| 642 if (is_android) { | |
| 643 ldflags += [ | |
| 644 "-mips32r6", | |
| 645 "-Wl,-melf32ltsmip", | |
| 646 ] | |
| 647 } | |
| 648 } else if (mips_arch_variant == "r2") { | |
| 649 cflags += [ | |
| 650 "-mips32r2", | |
| 651 "-Wa,-mips32r2", | |
| 652 ] | |
| 653 if (mips_float_abi == "hard" && mips_fpu_mode != "") { | |
| 654 cflags += [ "-m$mips_fpu_mode" ] | |
| 655 } | |
| 656 } else if (mips_arch_variant == "r1") { | |
| 657 cflags += [ | |
| 658 "-mips32", | |
| 659 "-Wa,-mips32", | |
| 660 ] | |
| 661 } | |
| 662 | |
| 663 if (mips_dsp_rev == 1) { | |
| 664 cflags += [ "-mdsp" ] | |
| 665 } else if (mips_dsp_rev == 2) { | |
| 666 cflags += [ "-mdspr2" ] | |
| 667 } | |
| 668 | |
| 669 cflags += [ "-m${mips_float_abi}-float" ] | |
| 670 } else if (current_cpu == "mips64el") { | |
| 671 if (mips_arch_variant == "r6") { | |
| 672 cflags += [ | |
| 673 "-mips64r6", | |
| 674 "-Wa,-mips64r6", | |
| 675 ] | |
| 676 ldflags += [ "-mips64r6" ] | |
| 677 } else if (mips_arch_variant == "r2") { | |
| 678 cflags += [ | |
| 679 "-mips64r2", | |
| 680 "-Wa,-mips64r2", | |
| 681 ] | |
| 682 ldflags += [ "-mips64r2" ] | |
| 683 } | |
| 684 } | |
| 685 } | |
| 686 | |
| 687 asmflags = cflags | |
| 577 } | 688 } |
| 578 | 689 |
| 579 config("compiler_arm_fpu") { | 690 config("compiler_arm_fpu") { |
| 580 if (current_cpu == "arm" && !is_ios) { | 691 if (current_cpu == "arm" && !is_ios) { |
| 581 cflags = [ "-mfpu=$arm_fpu" ] | 692 cflags = [ "-mfpu=$arm_fpu" ] |
| 693 asmflags = cflags | |
| 582 } | 694 } |
| 583 } | 695 } |
| 584 | 696 |
| 585 # runtime_library ------------------------------------------------------------- | 697 # runtime_library ------------------------------------------------------------- |
| 586 # | 698 # |
| 587 # Sets the runtime library and associated options. | 699 # Sets the runtime library and associated options. |
| 588 # | 700 # |
| 589 # How do you determine what should go in here vs. "compiler" above? Consider if | 701 # How do you determine what should go in here vs. "compiler" above? Consider if |
| 590 # a target might choose to use a different runtime library (ignore for a moment | 702 # a target might choose to use a different runtime library (ignore for a moment |
| 591 # if this is possible or reasonable on your system). If such a target would want | 703 # if this is possible or reasonable on your system). If such a target would want |
| (...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1227 # value of C4702 for PGO builds is likely very small. | 1339 # value of C4702 for PGO builds is likely very small. |
| 1228 "/wd4702", | 1340 "/wd4702", |
| 1229 ] | 1341 ] |
| 1230 ldflags += [ "/LTCG" ] | 1342 ldflags += [ "/LTCG" ] |
| 1231 } | 1343 } |
| 1232 } else { | 1344 } else { |
| 1233 cflags += [ "-O2" ] | 1345 cflags += [ "-O2" ] |
| 1234 } | 1346 } |
| 1235 } | 1347 } |
| 1236 | 1348 |
| 1349 # The default optimization applied to all targets. This will be equivalent to | |
| 1350 # either "optimize" or "no_optimize", depending on the build flags. | |
| 1351 config("default_optimization") { | |
| 1352 if (is_nacl_irt) { | |
| 1353 # The NaCl IRT is a special case and always wants its own config. | |
| 1354 # It gets optimized the same way regardless of the type of build. | |
| 1355 configs = [ "//build/config/nacl:irt_optimize" ] | |
| 1356 } else if (is_debug) { | |
| 1357 configs = [ ":no_optimize" ] | |
| 1358 } else { | |
| 1359 configs = [ ":optimize" ] | |
| 1360 } | |
| 1361 } | |
| 1362 | |
| 1237 # Symbols ---------------------------------------------------------------------- | 1363 # Symbols ---------------------------------------------------------------------- |
| 1238 | 1364 |
| 1239 config("symbols") { | 1365 config("symbols") { |
| 1240 if (is_win) { | 1366 if (is_win) { |
| 1241 import("//build/toolchain/goma.gni") | 1367 import("//build/toolchain/goma.gni") |
| 1242 if (use_goma) { | 1368 if (use_goma) { |
| 1243 cflags = [ "/Z7" ] # No PDB file | 1369 cflags = [ "/Z7" ] # No PDB file |
| 1244 } else { | 1370 } else { |
| 1245 cflags = [ "/Zi" ] # Produce PDB file, no edit and continue. | 1371 cflags = [ "/Zi" ] # Produce PDB file, no edit and continue. |
| 1246 } | 1372 } |
| 1247 ldflags = [ "/DEBUG" ] | 1373 ldflags = [ "/DEBUG" ] |
| 1248 } else { | 1374 } else { |
| 1249 cflags = [ "-g2" ] | 1375 cflags = [ "-g2" ] |
| 1250 if (use_debug_fission) { | 1376 if (use_debug_fission) { |
| 1251 cflags += [ "-gsplit-dwarf" ] | 1377 cflags += [ "-gsplit-dwarf" ] |
| 1252 } | 1378 } |
| 1379 asmflags = cflags | |
| 1380 ldflags = [] | |
| 1253 } | 1381 } |
| 1254 } | 1382 } |
| 1255 | 1383 |
| 1256 config("minimal_symbols") { | 1384 config("minimal_symbols") { |
| 1257 if (is_win) { | 1385 if (is_win) { |
| 1258 # Linker symbols for backtraces only. | 1386 # Linker symbols for backtraces only. |
| 1259 ldflags = [ "/DEBUG" ] | 1387 ldflags = [ "/DEBUG" ] |
| 1260 } else { | 1388 } else { |
| 1261 cflags = [ "-g1" ] | 1389 cflags = [ "-g1" ] |
| 1262 if (use_debug_fission) { | 1390 if (use_debug_fission) { |
| 1263 cflags += [ "-gsplit-dwarf" ] | 1391 cflags += [ "-gsplit-dwarf" ] |
| 1264 } | 1392 } |
| 1393 asmflags = cflags | |
| 1394 ldflags = [] | |
| 1265 } | 1395 } |
| 1266 } | 1396 } |
| 1267 | 1397 |
| 1268 config("no_symbols") { | 1398 config("no_symbols") { |
| 1269 if (!is_win) { | 1399 if (!is_win) { |
| 1270 cflags = [ "-g0" ] | 1400 cflags = [ "-g0" ] |
| 1401 asmflags = cflags | |
| 1271 } | 1402 } |
| 1272 } | 1403 } |
| 1404 | |
| 1405 # Default symbols. | |
| 1406 config("default_symbols") { | |
| 1407 if (symbol_level == 0) { | |
| 1408 configs = [ ":no_symbols" ] | |
| 1409 } else if (symbol_level == 1) { | |
| 1410 configs = [ ":minimal_symbols" ] | |
| 1411 } else if (symbol_level == 2) { | |
| 1412 configs = [ ":symbols" ] | |
| 1413 } else { | |
| 1414 assert(false) | |
| 1415 } | |
| 1416 } | |
| OLD | NEW |