OLD | NEW |
1 # Copyright 2016 Google Inc. | 1 # Copyright 2016 Google Inc. |
2 # | 2 # |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 declare_args() { | 6 declare_args() { |
7 ar = "ar" | 7 ar = "ar" |
8 cc = "cc" | 8 cc = "cc" |
9 cxx = "c++" | 9 cxx = "c++" |
10 | 10 |
11 if (is_android) { | 11 if (is_android) { |
12 ar = "$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin/ar" | 12 ar = "$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin/ar" |
13 cc = "$ndk/toolchains/llvm/prebuilt/$ndk_host/bin/clang" | 13 cc = "$ndk/toolchains/llvm/prebuilt/$ndk_host/bin/clang" |
14 cxx = "$ndk/toolchains/llvm/prebuilt/$ndk_host/bin/clang++" | 14 cxx = "$ndk/toolchains/llvm/prebuilt/$ndk_host/bin/clang++" |
15 } | 15 } |
16 | 16 |
17 extra_cflags = "" | 17 extra_cflags = "" |
18 extra_cflags_c = "" | 18 extra_cflags_c = "" |
19 extra_cflags_cc = "" | 19 extra_cflags_cc = "" |
20 extra_ldflags = "" | 20 extra_ldflags = "" |
21 | 21 |
22 compiler_prefix = "" | 22 compiler_prefix = "" |
23 } | 23 } |
24 | 24 |
25 config("no_rtti") { | 25 config("no_rtti") { |
26 cflags_cc = [ "-fno-rtti" ] | 26 if (sanitize != "ASAN") { # -fsanitize=vptr requires RTTI |
| 27 cflags_cc = [ "-fno-rtti" ] |
| 28 } |
27 } | 29 } |
28 | 30 |
29 config("default") { | 31 config("default") { |
30 cflags = [ | 32 cflags = [ |
31 "-O1", | 33 "-O1", |
32 "-g", | 34 "-g", |
33 "-fstrict-aliasing", | 35 "-fstrict-aliasing", |
34 "-fPIC", | 36 "-fPIC", |
35 "-fvisibility=hidden", | 37 "-fvisibility=hidden", |
36 | 38 |
37 "-Werror", | 39 "-Werror", |
38 "-Wall", | 40 "-Wall", |
39 "-Wextra", | 41 "-Wextra", |
40 "-Winit-self", | 42 "-Winit-self", |
41 "-Wpointer-arith", | 43 "-Wpointer-arith", |
42 "-Wsign-compare", | 44 "-Wsign-compare", |
43 "-Wvla", | 45 "-Wvla", |
44 | 46 |
45 "-Wno-deprecated-declarations", | 47 "-Wno-deprecated-declarations", |
46 "-Wno-unused-parameter", | 48 "-Wno-unused-parameter", |
47 ] | 49 ] |
48 cflags_cc = [ | 50 cflags_cc = [ |
49 "-std=c++11", | 51 "-std=c++11", |
50 "-fno-exceptions", | 52 "-fno-exceptions", |
51 "-fno-threadsafe-statics", | 53 "-fno-threadsafe-statics", |
52 "-fvisibility-inlines-hidden", | 54 "-fvisibility-inlines-hidden", |
53 | 55 |
54 "-Wnon-virtual-dtor", | 56 "-Wnon-virtual-dtor", |
55 ] | 57 ] |
| 58 ldflags = [] |
| 59 |
56 if (current_cpu == "arm") { | 60 if (current_cpu == "arm") { |
57 cflags += [ | 61 cflags += [ |
58 "-march=armv7-a", | 62 "-march=armv7-a", |
59 "-mfpu=neon", | 63 "-mfpu=neon", |
60 "-mthumb", | 64 "-mthumb", |
61 ] | 65 ] |
62 } else if (current_cpu == "mipsel") { | 66 } else if (current_cpu == "mipsel") { |
63 cflags += [ | 67 cflags += [ |
64 "-march=mips32r2", | 68 "-march=mips32r2", |
65 "-mdspr2", | 69 "-mdspr2", |
66 ] | 70 ] |
67 } | 71 } |
68 | 72 |
69 if (is_android) { | 73 if (is_android) { |
70 asmflags = [ | 74 asmflags = [ |
71 "--target=$ndk_target", | 75 "--target=$ndk_target", |
72 "-B$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin", | 76 "-B$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin", |
73 ] | 77 ] |
74 cflags += [ | 78 cflags += [ |
75 "--sysroot=$ndk/platforms/$ndk_platform", | 79 "--sysroot=$ndk/platforms/$ndk_platform", |
76 "--target=$ndk_target", | 80 "--target=$ndk_target", |
77 "-B$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin", | 81 "-B$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin", |
78 ] | 82 ] |
79 cflags_cc += [ | 83 cflags_cc += [ |
80 "-isystem$ndk/sources/android/support/include", | 84 "-isystem$ndk/sources/android/support/include", |
81 "-isystem$ndk/sources/cxx-stl/llvm-libc++/libcxx/include", | 85 "-isystem$ndk/sources/cxx-stl/llvm-libc++/libcxx/include", |
82 ] | 86 ] |
83 ldflags = [ | 87 ldflags += [ |
84 "--sysroot=$ndk/platforms/$ndk_platform", | 88 "--sysroot=$ndk/platforms/$ndk_platform", |
85 "--target=$ndk_target", | 89 "--target=$ndk_target", |
86 "-B$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin", | 90 "-B$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/$ndk_target/bin", |
87 "-pie", | 91 "-pie", |
88 ] | 92 ] |
89 lib_dirs = [ | 93 lib_dirs = [ |
90 "$ndk/sources/cxx-stl/llvm-libc++/libs/$ndk_stdlib", | 94 "$ndk/sources/cxx-stl/llvm-libc++/libs/$ndk_stdlib", |
91 "$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/lib/gcc/$ndk_target/4.
9.x", | 95 "$ndk/toolchains/$ndk_gccdir-4.9/prebuilt/$ndk_host/lib/gcc/$ndk_target/4.
9.x", |
92 ] | 96 ] |
93 libs = [ | 97 libs = [ |
94 # Order matters here! Keep these three in exactly this order. | 98 # Order matters here! Keep these three in exactly this order. |
95 "c++_static", | 99 "c++_static", |
96 "c++abi", | 100 "c++abi", |
97 "android_support", | 101 "android_support", |
98 ] | 102 ] |
99 if (target_cpu == "arm") { | 103 if (target_cpu == "arm") { |
100 libs += [ "unwind" ] | 104 libs += [ "unwind" ] |
101 } | 105 } |
102 } | 106 } |
103 | 107 |
104 if (is_linux) { | 108 if (is_linux) { |
105 libs = [ "pthread" ] | 109 libs = [ "pthread" ] |
106 } | 110 } |
| 111 |
| 112 if (sanitize != "") { |
| 113 # You can either pass the sanitizers directly, e.g. "address,undefined", |
| 114 # or pass one of the couple common aliases used by the bots. |
| 115 sanitizers = sanitize |
| 116 if (sanitize == "ASAN") { |
| 117 sanitizers = "address,bool,function,integer-divide-by-zero,nonnull-attribu
te,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overfl
ow,unreachable,vla-bound,vptr" |
| 118 } else if (sanitize == "TSAN") { |
| 119 sanitizers = "thread" |
| 120 } else if (sanitize == "MSAN") { |
| 121 sanitizers = "memory" |
| 122 } |
| 123 |
| 124 cflags += [ |
| 125 "-fsanitize=$sanitizers", |
| 126 "-fno-sanitize-recover=$sanitizers", |
| 127 "-fsanitize-blacklist=" + rebase_path("../tools/xsan.blacklist"), |
| 128 ] |
| 129 ldflags += [ "-fsanitize=$sanitizers" ] |
| 130 if (sanitizers == "memory") { |
| 131 cflags += [ "-fsanitize-memory-track-origins" ] |
| 132 cflags_cc += [ "-stdlib=libc++" ] |
| 133 ldflags += [ "-stdlib=libc++" ] |
| 134 } |
| 135 } |
107 } | 136 } |
108 | 137 |
109 config("release") { | 138 config("release") { |
110 cflags = [ "-O3" ] | 139 cflags = [ "-O3" ] |
111 defines = [ "NDEBUG" ] | 140 defines = [ "NDEBUG" ] |
112 } | 141 } |
113 | 142 |
114 config("executable") { | 143 config("executable") { |
115 if (is_mac) { | 144 if (is_mac) { |
116 ldflags = [ "-Wl,-rpath,@loader_path/." ] | 145 ldflags = [ "-Wl,-rpath,@loader_path/." ] |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 } | 221 } |
193 | 222 |
194 tool("stamp") { | 223 tool("stamp") { |
195 command = "touch {{output}}" | 224 command = "touch {{output}}" |
196 } | 225 } |
197 | 226 |
198 tool("copy") { | 227 tool("copy") { |
199 command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} &&
cp -af {{source}} {{output}})" | 228 command = "ln -f {{source}} {{output}} 2>/dev/null || (rm -rf {{output}} &&
cp -af {{source}} {{output}})" |
200 } | 229 } |
201 } | 230 } |
OLD | NEW |