llvm_config.mk revision 7e48e404b1a39c052ab47ea82678073d386fd333
1CLANG := $(HOST_OUT_EXECUTABLES)/clang$(HOST_EXECUTABLE_SUFFIX)
2CLANG_CXX := $(HOST_OUT_EXECUTABLES)/clang++$(HOST_EXECUTABLE_SUFFIX)
3LLVM_AS := $(HOST_OUT_EXECUTABLES)/llvm-as$(HOST_EXECUTABLE_SUFFIX)
4LLVM_LINK := $(HOST_OUT_EXECUTABLES)/llvm-link$(HOST_EXECUTABLE_SUFFIX)
5
6define do-clang-flags-subst
7  TARGET_GLOBAL_CLANG_FLAGS := $(subst $(1),$(2),$(TARGET_GLOBAL_CLANG_FLAGS))
8  HOST_GLOBAL_CLANG_FLAGS := $(subst $(1),$(2),$(HOST_GLOBAL_CLANG_FLAGS))
9endef
10
11define clang-flags-subst
12  $(eval $(call do-clang-flags-subst,$(1),$(2)))
13endef
14
15
16CLANG_CONFIG_EXTRA_CFLAGS := \
17  -D__compiler_offsetof=__builtin_offsetof \
18  -Dnan=__builtin_nan \
19
20CLANG_CONFIG_UNKNOWN_CFLAGS := \
21  -funswitch-loops
22
23ifeq ($(TARGET_ARCH),arm)
24  CLANG_CONFIG_EXTRA_CFLAGS += \
25    -target arm-linux-androideabi \
26    -nostdlibinc \
27    -B$(TARGET_TOOLCHAIN_ROOT)/arm-linux-androideabi/bin \
28    -mllvm -arm-enable-ehabi
29  CLANG_CONFIG_EXTRA_LDFLAGS += \
30    -target arm-linux-androideabi \
31    -B$(TARGET_TOOLCHAIN_ROOT)/arm-linux-androideabi/bin
32  CLANG_CONFIG_UNKNOWN_CFLAGS += \
33    -mthumb-interwork \
34    -fgcse-after-reload \
35    -frerun-cse-after-loop \
36    -frename-registers \
37    -fno-builtin-sin \
38    -fno-strict-volatile-bitfields \
39    -fno-align-jumps \
40    -Wa,--noexecstack
41endif
42ifeq ($(TARGET_ARCH),x86)
43  CLANG_CONFIG_EXTRA_CFLAGS += \
44    -target i686-android-linux \
45    -nostdlibinc \
46    -B$(TARGET_TOOLCHAIN_ROOT)/i686-android-linux/bin
47  CLANG_CONFIG_EXTRA_LDFLAGS += \
48    -target i686-android-linux \
49    -B$(TARGET_TOOLCHAIN_ROOT)/i686-android-linux/bin
50  CLANG_CONFIG_UNKNOWN_CFLAGS += \
51    -finline-limit=300 \
52    -fno-inline-functions-called-once \
53    -mfpmath=sse \
54    -mbionic
55endif
56
57CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES := external/clang/lib/include $(TARGET_OUT_HEADERS)/clang
58
59# remove unknown flags to define CLANG_FLAGS
60TARGET_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_GLOBAL_CFLAGS))
61HOST_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(HOST_GLOBAL_CFLAGS))
62
63TARGET_arm_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_arm_CFLAGS))
64TARGET_thumb_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_thumb_CFLAGS))
65
66# llvm does not yet support -march=armv5e nor -march=armv5te, fall back to armv5 or armv5t
67$(call clang-flags-subst,-march=armv5te,-march=armv5t)
68$(call clang-flags-subst,-march=armv5e,-march=armv5)
69
70ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -faddress-sanitizer
71ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit
72ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl libasan_preload
73ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan
74