1## Clang configurations. 2 3LLVM_RTLIB_PATH := $(LLVM_PREBUILTS_PATH)/../lib64/clang/$(LLVM_RELEASE_VERSION)/lib/linux/ 4 5CLANG_TBLGEN := $(BUILD_OUT_EXECUTABLES)/clang-tblgen$(BUILD_EXECUTABLE_SUFFIX) 6LLVM_TBLGEN := $(BUILD_OUT_EXECUTABLES)/llvm-tblgen$(BUILD_EXECUTABLE_SUFFIX) 7 8define convert-to-clang-flags 9$(strip $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(1))) 10endef 11 12CLANG_DEFAULT_UB_CHECKS := \ 13 bool \ 14 integer-divide-by-zero \ 15 return \ 16 returns-nonnull-attribute \ 17 shift-exponent \ 18 unreachable \ 19 vla-bound \ 20 21# TODO(danalbert): The following checks currently have compiler performance 22# issues. 23# CLANG_DEFAULT_UB_CHECKS += alignment 24# CLANG_DEFAULT_UB_CHECKS += bounds 25# CLANG_DEFAULT_UB_CHECKS += enum 26# CLANG_DEFAULT_UB_CHECKS += float-cast-overflow 27# CLANG_DEFAULT_UB_CHECKS += float-divide-by-zero 28# CLANG_DEFAULT_UB_CHECKS += nonnull-attribute 29# CLANG_DEFAULT_UB_CHECKS += null 30# CLANG_DEFAULT_UB_CHECKS += shift-base 31# CLANG_DEFAULT_UB_CHECKS += signed-integer-overflow 32 33# TODO(danalbert): Fix UB in libc++'s __tree so we can turn this on. 34# https://llvm.org/PR19302 35# http://reviews.llvm.org/D6974 36# CLANG_DEFAULT_UB_CHECKS += object-size 37 38# HOST config 39clang_2nd_arch_prefix := 40include $(BUILD_SYSTEM)/clang/HOST_$(HOST_ARCH).mk 41 42# HOST_2ND_ARCH config 43ifdef HOST_2ND_ARCH 44clang_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX) 45include $(BUILD_SYSTEM)/clang/HOST_$(HOST_2ND_ARCH).mk 46endif 47 48ifdef HOST_CROSS_ARCH 49clang_2nd_arch_prefix := 50include $(BUILD_SYSTEM)/clang/HOST_CROSS_$(HOST_CROSS_ARCH).mk 51ifdef HOST_CROSS_2ND_ARCH 52clang_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX) 53include $(BUILD_SYSTEM)/clang/HOST_CROSS_$(HOST_CROSS_2ND_ARCH).mk 54endif 55endif 56 57# TARGET config 58clang_2nd_arch_prefix := 59include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_ARCH).mk 60 61# TARGET_2ND_ARCH config 62ifdef TARGET_2ND_ARCH 63clang_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 64include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_2ND_ARCH).mk 65endif 66 67# This allows us to use the superset of functionality that compiler-rt 68# provides to Clang (for supporting features like -ftrapv). 69COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES := libcompiler_rt-extras 70 71# A list of projects that are allowed to set LOCAL_CLANG to false. 72# INTERNAL_LOCAL_CLANG_EXCEPTION_PROJECTS is defined later in other config.mk. 73LOCAL_CLANG_EXCEPTION_PROJECTS = \ 74 bionic/tests/ \ 75 device/huawei/angler/ \ 76 device/lge/bullhead/ \ 77 external/gentoo/integration/ \ 78 hardware/qcom/ \ 79 test/vts/hals/camera/bullhead/ \ 80 test/vts/hals/etc/libqdutils/ \ 81 vendor/huawei/angler/ \ 82 vendor/lge/bullhead/ \ 83 $(INTERNAL_LOCAL_CLANG_EXCEPTION_PROJECTS) 84 85# Find $1 in the exception project list. 86define find_in_local_clang_exception_projects 87$(subst $(space),, \ 88 $(foreach project,$(LOCAL_CLANG_EXCEPTION_PROJECTS), \ 89 $(if $(filter $(project)%,$(1)),$(project)) \ 90 ) \ 91) 92endef 93 94include $(BUILD_SYSTEM)/clang/tidy.mk 95