• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1bootstrap_go_package {
2    name: "soong-art",
3    pkgPath: "android/soong/art",
4    deps: [
5        "blueprint",
6        "blueprint-pathtools",
7        "soong",
8        "soong-android",
9        "soong-cc",
10    ],
11    srcs: [
12        "art.go",
13        "codegen.go",
14        "makevars.go",
15    ],
16    pluginFor: ["soong_build"],
17}
18
19art_global_defaults {
20    // Additional flags are computed by art.go
21
22    name: "art_defaults",
23    clang: true,
24    cflags: [
25        // Base set of cflags used by all things ART.
26        "-fno-rtti",
27        "-ggdb3",
28        "-Wall",
29        "-Werror",
30        "-Wextra",
31        "-Wstrict-aliasing",
32        "-fstrict-aliasing",
33        "-Wunreachable-code",
34        "-Wredundant-decls",
35        "-Wshadow",
36        "-Wunused",
37        "-fvisibility=protected",
38
39        // Warn about thread safety violations with clang.
40        "-Wthread-safety",
41        "-Wthread-safety-negative",
42
43        // Warn if switch fallthroughs aren't annotated.
44        "-Wimplicit-fallthrough",
45
46        // Enable float equality warnings.
47        "-Wfloat-equal",
48
49        // Enable warning of converting ints to void*.
50        "-Wint-to-void-pointer-cast",
51
52        // Enable warning of wrong unused annotations.
53        "-Wused-but-marked-unused",
54
55        // Enable warning for deprecated language features.
56        "-Wdeprecated",
57
58        // Enable warning for unreachable break & return.
59        "-Wunreachable-code-break",
60        "-Wunreachable-code-return",
61
62        // Bug: http://b/29823425  Disable -Wconstant-conversion and
63        // -Wundefined-var-template for Clang update to r271374
64        "-Wno-constant-conversion",
65        "-Wno-undefined-var-template",
66
67        "-DART_STACK_OVERFLOW_GAP_arm=8192",
68        "-DART_STACK_OVERFLOW_GAP_arm64=8192",
69        "-DART_STACK_OVERFLOW_GAP_mips=16384",
70        "-DART_STACK_OVERFLOW_GAP_mips64=16384",
71        "-DART_STACK_OVERFLOW_GAP_x86=8192",
72        "-DART_STACK_OVERFLOW_GAP_x86_64=8192",
73        // Enable thread annotations for std::mutex, etc.
74        "-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS",
75    ],
76
77    target: {
78        android: {
79            cflags: [
80                "-DART_TARGET",
81
82                // Enable missing-noreturn only on non-Mac. As lots of things are not implemented
83                // for Apple, it's a pain.
84                "-Wmissing-noreturn",
85
86                // To use oprofile_android --callgraph, uncomment this and recompile with
87                //    mmma -j art
88                // "-fno-omit-frame-pointer",
89                // "-marm",
90                // "-mapcs",
91            ],
92            include_dirs: [
93                // We optimize Thread::Current() with a direct TLS access. This requires access to a
94                //  private Bionic header.
95                "bionic/libc/private",
96            ],
97        },
98        linux: {
99            cflags: [
100                // Enable missing-noreturn only on non-Mac. As lots of things are not implemented for
101                // Apple, it's a pain.
102                "-Wmissing-noreturn",
103            ],
104            host_ldlibs: [
105                "-lrt",
106            ],
107        },
108        host: {
109            cflags: [
110                // Bug: 15446488. We don't omit the frame pointer to work around
111                // clang/libunwind bugs that cause SEGVs in run-test-004-ThreadStress.
112                "-fno-omit-frame-pointer",
113            ],
114            host_ldlibs: [
115                "-ldl",
116                "-lpthread",
117            ],
118        },
119    },
120
121    codegen: {
122        arm: {
123            cflags: ["-DART_ENABLE_CODEGEN_arm"],
124        },
125        arm64: {
126            cflags: ["-DART_ENABLE_CODEGEN_arm64"],
127        },
128        mips: {
129            cflags: ["-DART_ENABLE_CODEGEN_mips"],
130        },
131        mips64: {
132            cflags: ["-DART_ENABLE_CODEGEN_mips64"],
133        },
134        x86: {
135            cflags: ["-DART_ENABLE_CODEGEN_x86"],
136        },
137        x86_64: {
138            cflags: ["-DART_ENABLE_CODEGEN_x86_64"],
139        },
140    },
141
142    include_dirs: [
143        "external/icu/icu4c/source/common",
144        "external/lz4/lib",
145        "external/valgrind/include",
146        "external/valgrind",
147        "external/vixl/src",
148        "external/zlib",
149        "libnativehelper/platform_include"
150    ],
151
152    tidy_checks: [
153        "-google-default-arguments",
154    ],
155}
156
157art_debug_defaults {
158    name: "art_debug_defaults",
159    cflags: [
160        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
161        "-DVIXL_DEBUG",
162        "-UNDEBUG",
163    ],
164    asflags: [
165        "-UNDEBUG",
166    ],
167    target: {
168        // This has to be duplicated for android and host to make sure it
169        // comes after the -Wframe-larger-than warnings inserted by art.go
170        // target-specific properties
171        android: {
172            cflags: ["-Wno-frame-larger-than="],
173        },
174        host: {
175            cflags: ["-Wno-frame-larger-than="],
176        },
177    },
178}
179