llvm_config.mk revision 6e86a57b0f1331a2143346becc96be68cc8c3302
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),mips)
43  CLANG_CONFIG_EXTRA_CFLAGS += \
44    -target mipsel-linux-android \
45    -nostdlibinc \
46    -B$(TARGET_TOOLCHAIN_ROOT)/mipsel-linux-android/bin
47  CLANG_CONFIG_EXTRA_LDFLAGS += \
48    -target mipsel-linux-android \
49    -B$(TARGET_TOOLCHAIN_ROOT)/mipsel-linux-android/bin
50  CLANG_CONFIG_UNKNOWN_CFLAGS += \
51    -EL \
52    -mips32r2 \
53    -mhard-float \
54    -fno-strict-volatile-bitfields \
55    -fgcse-after-reload \
56    -frerun-cse-after-loop \
57    -frename-registers \
58    -march=mips32r2 \
59    -mtune=mips32r2
60endif
61ifeq ($(TARGET_ARCH),x86)
62  CLANG_CONFIG_EXTRA_CFLAGS += \
63    -target i686-linux-android \
64    -nostdlibinc \
65    -B$(TARGET_TOOLCHAIN_ROOT)/i686-linux-android/bin
66  CLANG_CONFIG_EXTRA_LDFLAGS += \
67    -target i686-linux-android \
68    -B$(TARGET_TOOLCHAIN_ROOT)/i686-linux-android/bin
69  CLANG_CONFIG_UNKNOWN_CFLAGS += \
70    -finline-limit=300 \
71    -fno-inline-functions-called-once \
72    -mfpmath=sse \
73    -mbionic
74endif
75
76CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES := external/clang/lib/include $(TARGET_OUT_HEADERS)/clang
77
78# remove unknown flags to define CLANG_FLAGS
79TARGET_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_GLOBAL_CFLAGS))
80HOST_GLOBAL_CLANG_FLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(HOST_GLOBAL_CFLAGS))
81
82TARGET_arm_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_arm_CFLAGS))
83TARGET_thumb_CLANG_CFLAGS += $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(TARGET_thumb_CFLAGS))
84
85# llvm does not yet support -march=armv5e nor -march=armv5te, fall back to armv5 or armv5t
86$(call clang-flags-subst,-march=armv5te,-march=armv5t)
87$(call clang-flags-subst,-march=armv5e,-march=armv5)
88
89# clang does not support -Wno-psabi and -Wno-unused-but-set-variable
90$(call clang-flags-subst,-Wno-psabi,)
91$(call clang-flags-subst,-Wno-unused-but-set-variable,)
92
93ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -faddress-sanitizer
94ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit
95ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES := libdl libasan_preload
96ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan
97
98# This allows us to use the superset of functionality that compiler-rt
99# provides to Clang (for supporting features like -ftrapv).
100COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES := libcompiler-rt-extras
101