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