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 if (cpu_arch == "arm") { | 6 if (cpu_arch == "arm") { |
7 import("//build/config/arm.gni") | 7 import("//build/config/arm.gni") |
8 } | 8 } |
9 if (is_posix) { | 9 if (is_posix) { |
10 import("//build/config/gcc/gcc_version.gni") | 10 import("//build/config/gcc/gcc_version.gni") |
(...skipping 27 matching lines...) Expand all Loading... |
38 # This is a separate config so that third_party code (which would not use the | 38 # This is a separate config so that third_party code (which would not use the |
39 # source root and might have conflicting versions of some headers) can remove | 39 # source root and might have conflicting versions of some headers) can remove |
40 # this and specify their own include paths. | 40 # this and specify their own include paths. |
41 config("default_include_dirs") { | 41 config("default_include_dirs") { |
42 include_dirs = [ | 42 include_dirs = [ |
43 "//", | 43 "//", |
44 root_gen_dir, | 44 root_gen_dir, |
45 ] | 45 ] |
46 } | 46 } |
47 | 47 |
| 48 # TODO(GYP): is_ubsan, is_ubsan_vptr |
| 49 using_sanitizer = is_asan || is_lsan || is_tsan || is_msan |
| 50 |
48 # compiler --------------------------------------------------------------------- | 51 # compiler --------------------------------------------------------------------- |
49 # | 52 # |
50 # Base compiler configuration. | 53 # Base compiler configuration. |
51 # | 54 # |
52 # See also "runtime_library" below for related stuff and a discusison about | 55 # See also "runtime_library" below for related stuff and a discusison about |
53 # where stuff should go. Put warning related stuff in the "warnings" config. | 56 # where stuff should go. Put warning related stuff in the "warnings" config. |
54 | 57 |
55 config("compiler") { | 58 config("compiler") { |
56 cflags = [] | 59 cflags = [] |
57 cflags_c = [] | 60 cflags_c = [] |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 cflags += [ "-fstack-protector-all" ] | 99 cflags += [ "-fstack-protector-all" ] |
97 } else if (is_linux) { | 100 } else if (is_linux) { |
98 cflags += [ "-fstack-protector", "--param=ssp-buffer-size=4" ] | 101 cflags += [ "-fstack-protector", "--param=ssp-buffer-size=4" ] |
99 } | 102 } |
100 | 103 |
101 # Linker warnings. | 104 # Linker warnings. |
102 if (!(is_chromeos && cpu_arch == "arm") && !is_mac) { | 105 if (!(is_chromeos && cpu_arch == "arm") && !is_mac) { |
103 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 | 106 # TODO(jochen): Enable this on chromeos on arm. http://crbug.com/356580 |
104 ldflags += [ "-Wl,--fatal-warnings" ] | 107 ldflags += [ "-Wl,--fatal-warnings" ] |
105 } | 108 } |
| 109 |
| 110 # Common options for AddressSanitizer, LeakSanitizer, ThreadSanitizer and |
| 111 # MemorySanitizer |
| 112 if (using_sanitizer) { |
| 113 cflags += [ |
| 114 "-fno-omit-frame-pointer", |
| 115 "-gline-tables-only", |
| 116 ] |
| 117 } |
| 118 if (is_asan) { |
| 119 cflags += [ "-fsanitize=address" ] |
| 120 if (is_mac) { |
| 121 cflags += [ "-mllvm -asan-globals=0" ] # http://crbug.com/352073 |
| 122 # TODO(GYP): deal with mac_bundles. |
| 123 } |
| 124 } |
106 } | 125 } |
107 | 126 |
108 if (is_clang && is_debug) { | 127 if (is_clang && is_debug) { |
109 # Allow comparing the address of references and 'this' against 0 | 128 # Allow comparing the address of references and 'this' against 0 |
110 # in debug builds. Technically, these can never be null in | 129 # in debug builds. Technically, these can never be null in |
111 # well-defined C/C++ and Clang can optimize such checks away in | 130 # well-defined C/C++ and Clang can optimize such checks away in |
112 # release builds, but they may be used in asserts in debug builds. | 131 # release builds, but they may be used in asserts in debug builds. |
113 cflags_cc += [ | 132 cflags_cc += [ |
114 "-Wno-undefined-bool-conversion", | 133 "-Wno-undefined-bool-conversion", |
115 "-Wno-tautological-undefined-compare", | 134 "-Wno-tautological-undefined-compare", |
(...skipping 691 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 # .comment section taking up binary size. | 826 # .comment section taking up binary size. |
808 "-fno-ident", | 827 "-fno-ident", |
809 # Put data and code in their own sections, so that unused symbols | 828 # Put data and code in their own sections, so that unused symbols |
810 # can be removed at link time with --gc-sections. | 829 # can be removed at link time with --gc-sections. |
811 "-fdata-sections", | 830 "-fdata-sections", |
812 "-ffunction-sections", | 831 "-ffunction-sections", |
813 ] | 832 ] |
814 common_optimize_on_ldflags = [] | 833 common_optimize_on_ldflags = [] |
815 | 834 |
816 if (is_android) { | 835 if (is_android) { |
817 common_optimize_on_cflags += [ | 836 if (!using_sanitizer) { |
818 "-fomit-frame-pointer", | 837 common_optimize_on_cflags += [ "-fomit-frame-pointer" ] |
819 ] | 838 } |
820 common_optimize_on_ldflags += [ | 839 common_optimize_on_ldflags += [ |
821 # Warn in case of text relocations. | 840 # Warn in case of text relocations. |
822 "-Wl,--warn-shared-textrel", | 841 "-Wl,--warn-shared-textrel", |
823 ] | 842 ] |
824 } | 843 } |
825 | 844 |
826 if (is_mac) { | 845 if (is_mac) { |
827 if (symbol_level == 2) { | 846 if (symbol_level == 2) { |
828 # Mac dead code stripping requires symbols. | 847 # Mac dead code stripping requires symbols. |
829 common_optimize_on_ldflags += [ | 848 common_optimize_on_ldflags += [ |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
867 cflags = [ | 886 cflags = [ |
868 "/Od", # Disable optimization. | 887 "/Od", # Disable optimization. |
869 "/Ob0", # Disable all inlining (on by default). | 888 "/Ob0", # Disable all inlining (on by default). |
870 "/RTC1", # Runtime checks for stack frame and uninitialized variables. | 889 "/RTC1", # Runtime checks for stack frame and uninitialized variables. |
871 ] | 890 ] |
872 } else if (is_android && !android_full_debug) { | 891 } else if (is_android && !android_full_debug) { |
873 # On Android we kind of optimize some things that don't affect debugging | 892 # On Android we kind of optimize some things that don't affect debugging |
874 # much even when optimization is disabled to get the binary size down. | 893 # much even when optimization is disabled to get the binary size down. |
875 cflags = [ | 894 cflags = [ |
876 "-Os", | 895 "-Os", |
877 "-fomit-frame-pointer", | |
878 "-fdata-sections", | 896 "-fdata-sections", |
879 "-ffunction-sections", | 897 "-ffunction-sections", |
880 ] | 898 ] |
| 899 if (!using_sanitizer) { |
| 900 cflags += [ "-fomit-frame-pointer" ] |
| 901 } |
881 ldflags = common_optimize_on_ldflags | 902 ldflags = common_optimize_on_ldflags |
882 } else { | 903 } else { |
883 cflags = [ "-O0" ] | 904 cflags = [ "-O0" ] |
884 } | 905 } |
885 } | 906 } |
886 | 907 |
887 # Turns up the optimization level. On Windows, this implies whole program | 908 # Turns up the optimization level. On Windows, this implies whole program |
888 # optimization and link-time code generation which is very expensive and should | 909 # optimization and link-time code generation which is very expensive and should |
889 # be used sparingly. | 910 # be used sparingly. |
890 config("optimize_max") { | 911 config("optimize_max") { |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
931 cflags += [ "-gsplit-dwarf" ] | 952 cflags += [ "-gsplit-dwarf" ] |
932 } | 953 } |
933 } | 954 } |
934 } | 955 } |
935 | 956 |
936 config("no_symbols") { | 957 config("no_symbols") { |
937 if (!is_win) { | 958 if (!is_win) { |
938 cflags = [ "-g0" ] | 959 cflags = [ "-g0" ] |
939 } | 960 } |
940 } | 961 } |
OLD | NEW |