bootstrap_go_package { name: "soong-art", pkgPath: "android/soong/art", deps: [ "blueprint", "blueprint-pathtools", "soong", "soong-android", "soong-cc", ], srcs: [ "art.go", "codegen.go", "makevars.go", ], pluginFor: ["soong_build"], } art_global_defaults { // Additional flags are computed by art.go name: "art_defaults", clang: true, cflags: [ // Base set of cflags used by all things ART. "-fno-rtti", "-ggdb3", "-Wall", "-Werror", "-Wextra", "-Wstrict-aliasing", "-fstrict-aliasing", "-Wunreachable-code", "-Wredundant-decls", "-Wshadow", "-Wunused", "-fvisibility=protected", // Warn about thread safety violations with clang. "-Wthread-safety", "-Wthread-safety-negative", // Warn if switch fallthroughs aren't annotated. "-Wimplicit-fallthrough", // Enable float equality warnings. "-Wfloat-equal", // Enable warning of converting ints to void*. "-Wint-to-void-pointer-cast", // Enable warning of wrong unused annotations. "-Wused-but-marked-unused", // Enable warning for deprecated language features. "-Wdeprecated", // Enable warning for unreachable break & return. "-Wunreachable-code-break", "-Wunreachable-code-return", // Enable thread annotations for std::mutex, etc. "-D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS", ], target: { android: { cflags: [ "-DART_TARGET", // Enable missing-noreturn only on non-Mac. As lots of things are not implemented // for Apple, it's a pain. "-Wmissing-noreturn", // To use oprofile_android --callgraph, uncomment this and recompile with // mmma -j art // "-fno-omit-frame-pointer", // "-marm", // "-mapcs", ], include_dirs: [ // We optimize Thread::Current() with a direct TLS access. This requires access to a // private Bionic header. "bionic/libc/private", ], }, linux: { cflags: [ // Enable missing-noreturn only on non-Mac. As lots of things are not implemented for // Apple, it's a pain. "-Wmissing-noreturn", ], host_ldlibs: [ "-lrt", ], }, host: { cflags: [ // Bug: 15446488. We don't omit the frame pointer to work around // clang/libunwind bugs that cause SEGVs in run-test-004-ThreadStress. "-fno-omit-frame-pointer", ], host_ldlibs: [ "-ldl", "-lpthread", ], }, }, codegen: { arm: { cflags: ["-DART_ENABLE_CODEGEN_arm"], }, arm64: { cflags: ["-DART_ENABLE_CODEGEN_arm64"], }, mips: { cflags: ["-DART_ENABLE_CODEGEN_mips"], }, mips64: { cflags: ["-DART_ENABLE_CODEGEN_mips64"], }, x86: { cflags: ["-DART_ENABLE_CODEGEN_x86"], }, x86_64: { cflags: ["-DART_ENABLE_CODEGEN_x86_64"], }, }, include_dirs: [ "external/icu/icu4c/source/common", "external/lz4/lib", "external/valgrind/include", "external/valgrind", "external/vixl/src", "external/zlib", "libnativehelper/platform_include" ], tidy_checks: [ "-google-default-arguments", // We have local stores that are only used for debug checks. "-clang-analyzer-deadcode.DeadStores", // We are OK with some static globals and that they can, in theory, throw. "-cert-err58-cpp", // We have lots of C-style variadic functions, and are OK with them. JNI ensures // that working around this warning would be extra-painful. "-cert-dcl50-cpp", // No exceptions. "-misc-noexcept-move-constructor", ], tidy_flags: [ // The static analyzer treats DCHECK as always enabled; we sometimes get // false positives when we use DCHECKs with code that relies on NDEBUG. "-extra-arg=-UNDEBUG", // clang-tidy complains about functions like: // void foo() { CHECK(kIsFooEnabled); /* do foo... */ } // not being marked noreturn if kIsFooEnabled is false. "-extra-arg=-Wno-missing-noreturn", ], } art_debug_defaults { name: "art_debug_defaults", cflags: [ "-DDYNAMIC_ANNOTATIONS_ENABLED=1", "-DVIXL_DEBUG", "-UNDEBUG", ], asflags: [ "-UNDEBUG", ], target: { // This has to be duplicated for android and host to make sure it // comes after the -Wframe-larger-than warnings inserted by art.go // target-specific properties android: { cflags: ["-Wno-frame-larger-than="], }, host: { cflags: ["-Wno-frame-larger-than="], }, }, }