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

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

Issue 1001833005: Update from https://crrev.com/320343 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Supress Created 5 years, 9 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
« no previous file with comments | « build/config/BUILD.gn ('k') | build/config/features.gni » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 if (current_cpu == "arm") { 6 if (current_cpu == "arm") {
7 import("//build/config/arm.gni") 7 import("//build/config/arm.gni")
8 } 8 }
9 if (current_cpu == "mipsel" || current_cpu == "mips64el") { 9 if (current_cpu == "mipsel" || current_cpu == "mips64el") {
10 import("//build/config/mips.gni") 10 import("//build/config/mips.gni")
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 71
72 # TODO(GYP): is_ubsan, is_ubsan_vptr 72 # TODO(GYP): is_ubsan, is_ubsan_vptr
73 if (!is_win) { 73 if (!is_win) {
74 using_sanitizer = is_asan || is_lsan || is_tsan || is_msan 74 using_sanitizer = is_asan || is_lsan || is_tsan || is_msan
75 } 75 }
76 76
77 # compiler --------------------------------------------------------------------- 77 # compiler ---------------------------------------------------------------------
78 # 78 #
79 # Base compiler configuration. 79 # Base compiler configuration.
80 # 80 #
81 # See also "runtime_library" below for related stuff and a discusison about 81 # See also "runtime_library" below for related stuff and a discussion about
82 # where stuff should go. Put warning related stuff in the "warnings" config. 82 # where stuff should go. Put warning related stuff in the "warnings" config.
83 83
84 config("compiler") { 84 config("compiler") {
85 cflags = [] 85 cflags = []
86 cflags_c = [] 86 cflags_c = []
87 cflags_cc = [] 87 cflags_cc = []
88 ldflags = [] 88 ldflags = []
89 defines = [] 89 defines = []
90 90
91 # In general, Windows is totally different, but all the other builds share 91 # In general, Windows is totally different, but all the other builds share
92 # some common GCC configuration. This section sets up Windows and the common 92 # some common GCC configuration. This section sets up Windows and the common
93 # GCC flags, and then we handle the other non-Windows platforms specifically 93 # GCC flags, and then we handle the other non-Windows platforms specifically
94 # below. 94 # below.
95 if (is_win) { 95 if (is_win) {
96 # Windows compiler flags setup. 96 # Windows compiler flags setup.
97 # ----------------------------- 97 # -----------------------------
98 cflags += [ 98 cflags += [
99 "/Gy", # Enable function-level linking. 99 "/Gy", # Enable function-level linking.
100 "/GS", # Enable buffer security checking. 100 "/GS", # Enable buffer security checking.
101 "/FS", # Preserve previous PDB behavior. 101 "/FS", # Preserve previous PDB behavior.
102 ] 102 ]
103 if (is_component_build) {
104 cflags += [ "/EHsc" ] # Assume C functions can't throw exceptions and don 't catch
105 # structured exceptions (only C++ ones).
106 }
107 } else { 103 } else {
108 # Common GCC compiler flags setup. 104 # Common GCC compiler flags setup.
109 # -------------------------------- 105 # --------------------------------
110 cflags += [ "-fno-strict-aliasing" ] # See http://crbug.com/32204 106 cflags += [ "-fno-strict-aliasing" ] # See http://crbug.com/32204
111 cflags_cc += [ 107 cflags_cc += [
112 "-fno-threadsafe-statics", 108 "-fno-threadsafe-statics",
113 109
114 # Not exporting C++ inline functions can generally be applied anywhere 110 # Not exporting C++ inline functions can generally be applied anywhere
115 # so we do so here. Normal function visibility is controlled by 111 # so we do so here. Normal function visibility is controlled by
116 # //build/config/gcc:symbol_visibility_hidden. 112 # //build/config/gcc:symbol_visibility_hidden.
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
154 # Allow comparing the address of references and 'this' against 0 150 # Allow comparing the address of references and 'this' against 0
155 # in debug builds. Technically, these can never be null in 151 # in debug builds. Technically, these can never be null in
156 # well-defined C/C++ and Clang can optimize such checks away in 152 # well-defined C/C++ and Clang can optimize such checks away in
157 # release builds, but they may be used in asserts in debug builds. 153 # release builds, but they may be used in asserts in debug builds.
158 cflags_cc += [ 154 cflags_cc += [
159 "-Wno-undefined-bool-conversion", 155 "-Wno-undefined-bool-conversion",
160 "-Wno-tautological-undefined-compare", 156 "-Wno-tautological-undefined-compare",
161 ] 157 ]
162 } 158 }
163 159
164 if (is_clang && !is_win) { 160 if (is_clang && !is_win && !is_nacl) {
165 # This is here so that all files get recompiled after a clang roll and 161 # This is here so that all files get recompiled after a clang roll and
166 # when turning clang on or off. (defines are passed via the command line, 162 # when turning clang on or off. (defines are passed via the command line,
167 # and build system rebuild things when their commandline changes). Nothing 163 # and build system rebuild things when their commandline changes). Nothing
168 # should ever read this define. 164 # should ever read this define.
169 defines += [ "CR_CLANG_REVISION=" + 165 defines += [ "CR_CLANG_REVISION=" +
170 exec_script("//tools/clang/scripts/posix-print-revision.py", 166 exec_script("//tools/clang/scripts/posix-print-revision.py",
171 [], 167 [],
172 "value") ] 168 "value") ]
173 } 169 }
174 170
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
396 # Experimentation found that using four linking threads 392 # Experimentation found that using four linking threads
397 # saved ~20% of link time. 393 # saved ~20% of link time.
398 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_threa d/thread/281527606915bb36 394 # https://groups.google.com/a/chromium.org/group/chromium-dev/browse_threa d/thread/281527606915bb36
399 # Only apply this to the target linker, since the host 395 # Only apply this to the target linker, since the host
400 # linker might not be gold, but isn't used much anyway. 396 # linker might not be gold, but isn't used much anyway.
401 # TODO(raymes): Disable threading because gold is frequently 397 # TODO(raymes): Disable threading because gold is frequently
402 # crashing on the bots: crbug.com/161942. 398 # crashing on the bots: crbug.com/161942.
403 #"-Wl,--threads", 399 #"-Wl,--threads",
404 #"-Wl,--thread-count=4", 400 #"-Wl,--thread-count=4",
405 ] 401 ]
402
403 # TODO(thestig): Make this flag work with GN.
404 #if (!is_official_build && !is_chromeos && !(is_asan || is_lsan || is_tsan | | is_msan)) {
405 # ldflags += [
406 # "-Wl,--detect-odr-violations",
407 # ]
408 #}
406 } 409 }
407 410
408 if (linux_use_bundled_binutils) { 411 if (linux_use_bundled_binutils) {
409 binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin", 412 binutils_path = rebase_path("//third_party/binutils/Linux_x64/Release/bin",
410 root_build_dir) 413 root_build_dir)
411 cflags += [ "-B$binutils_path" ] 414 cflags += [ "-B$binutils_path" ]
412 } 415 }
413 416
414 # Clang-specific compiler flags setup. 417 # Clang-specific compiler flags setup.
415 # ------------------------------------ 418 # ------------------------------------
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
527 # about things not matching, so keep exceptions on. 530 # about things not matching, so keep exceptions on.
528 if (is_debug) { 531 if (is_debug) {
529 cflags += [ "/MDd" ] 532 cflags += [ "/MDd" ]
530 } else { 533 } else {
531 cflags += [ "/MD" ] 534 cflags += [ "/MD" ]
532 } 535 }
533 } 536 }
534 } else { 537 } else {
535 # Static CRT. 538 # Static CRT.
536 if (is_win) { 539 if (is_win) {
537 # We don't use exceptions, and when we link statically we can just get
538 # rid of them entirely.
539 defines += [ "_HAS_EXCEPTIONS=0" ]
540 if (is_debug) { 540 if (is_debug) {
541 cflags += [ "/MTd" ] 541 cflags += [ "/MTd" ]
542 } else { 542 } else {
543 cflags += [ "/MT" ] 543 cflags += [ "/MT" ]
544 } 544 }
545 } 545 }
546 } 546 }
547 547
548 if (is_win) { 548 if (is_win) {
549 defines += [ 549 defines += [
550 "__STD_C", 550 "__STD_C",
551 "__STDC_CONSTANT_MACROS",
552 "__STDC_FORMAT_MACROS",
553 "_CRT_RAND_S", 551 "_CRT_RAND_S",
554 "_CRT_SECURE_NO_DEPRECATE", 552 "_CRT_SECURE_NO_DEPRECATE",
553 "_HAS_EXCEPTIONS=0",
555 "_SCL_SECURE_NO_DEPRECATE", 554 "_SCL_SECURE_NO_DEPRECATE",
556 ] 555 ]
557 } 556 }
558 557
559 # Stlport setup. Android uses a different (smaller) version of the STL. 558 # Stlport setup. Android uses a different (smaller) version of the STL.
560 if (is_android) { 559 if (is_android) {
561 if (is_clang) { 560 if (is_clang) {
562 # Work around incompatibilities between bionic and clang headers. 561 # Work around incompatibilities between bionic and clang headers.
563 defines += [ 562 defines += [
564 "__compiler_offsetof=__builtin_offsetof", 563 "__compiler_offsetof=__builtin_offsetof",
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 719
721 # Warnings --------------------------------------------------------------------- 720 # Warnings ---------------------------------------------------------------------
722 # 721 #
723 # This is where we disable various warnings that we've decided aren't 722 # This is where we disable various warnings that we've decided aren't
724 # worthwhile, and enable special warnings. 723 # worthwhile, and enable special warnings.
725 724
726 config("default_warnings") { 725 config("default_warnings") {
727 if (is_win) { 726 if (is_win) {
728 cflags = [ 727 cflags = [
729 "/WX", # Treat warnings as errors. 728 "/WX", # Treat warnings as errors.
730
731 # Warnings permanently disabled: 729 # Warnings permanently disabled:
732 730
733 # TODO(GYP) The GYP build doesn't have this globally enabled but disabled 731 # TODO(GYP) The GYP build doesn't have this globally enabled but disabled
734 # for a bunch of individual targets. Re-enable this globally when those 732 # for a bunch of individual targets. Re-enable this globally when those
735 # targets are fixed. 733 # targets are fixed.
736 "/wd4018", # Comparing signed and unsigned values. 734 "/wd4018", # Comparing signed and unsigned values.
737 735
738 # C4127: conditional expression is constant 736 # C4127: conditional expression is constant
739 # This warning can in theory catch dead code and other problems, but 737 # This warning can in theory catch dead code and other problems, but
740 # triggers in far too many desirable cases where the conditional 738 # triggers in far too many desirable cases where the conditional
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
775 773
776 # C4611: interaction between 'function' and C++ object destruction is 774 # C4611: interaction between 'function' and C++ object destruction is
777 # non-portable 775 # non-portable
778 # This warning is unavoidable when using e.g. setjmp/longjmp. MSDN 776 # This warning is unavoidable when using e.g. setjmp/longjmp. MSDN
779 # suggests using exceptions instead of setjmp/longjmp for C++, but 777 # suggests using exceptions instead of setjmp/longjmp for C++, but
780 # Chromium code compiles without exception support. We therefore have to 778 # Chromium code compiles without exception support. We therefore have to
781 # use setjmp/longjmp for e.g. JPEG decode error handling, which means we 779 # use setjmp/longjmp for e.g. JPEG decode error handling, which means we
782 # have to turn off this warning (and be careful about how object 780 # have to turn off this warning (and be careful about how object
783 # destruction happens in such cases). 781 # destruction happens in such cases).
784 "/wd4611", 782 "/wd4611",
785
786 # Warnings to evaluate and possibly fix/reenable later: 783 # Warnings to evaluate and possibly fix/reenable later:
787 784
788 "/wd4100", # Unreferenced formal function parameter. 785 "/wd4100", # Unreferenced formal function parameter.
789 "/wd4121", # Alignment of a member was sensitive to packing. 786 "/wd4121", # Alignment of a member was sensitive to packing.
790 "/wd4244", # Conversion: possible loss of data. 787 "/wd4244", # Conversion: possible loss of data.
791 "/wd4481", # Nonstandard extension: override specifier. 788 "/wd4481", # Nonstandard extension: override specifier.
792 "/wd4505", # Unreferenced local function has been removed. 789 "/wd4505", # Unreferenced local function has been removed.
793 "/wd4510", # Default constructor could not be generated. 790 "/wd4510", # Default constructor could not be generated.
794 "/wd4512", # Assignment operator could not be generated. 791 "/wd4512", # Assignment operator could not be generated.
795 "/wd4610", # Class can never be instantiated, constructor required. 792 "/wd4610", # Class can never be instantiated, constructor required.
(...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after
1109 cflags += [ "-gsplit-dwarf" ] 1106 cflags += [ "-gsplit-dwarf" ]
1110 } 1107 }
1111 } 1108 }
1112 } 1109 }
1113 1110
1114 config("no_symbols") { 1111 config("no_symbols") {
1115 if (!is_win) { 1112 if (!is_win) {
1116 cflags = [ "-g0" ] 1113 cflags = [ "-g0" ]
1117 } 1114 }
1118 } 1115 }
OLDNEW
« no previous file with comments | « build/config/BUILD.gn ('k') | build/config/features.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698