1 ## Clang configurations. 2 3 LLVM_RTLIB_PATH := $(LLVM_PREBUILTS_PATH)/../lib64/clang/$(LLVM_RELEASE_VERSION)/lib/linux/ 4 5 CLANG_TBLGEN := $(BUILD_OUT_EXECUTABLES)/clang-tblgen$(BUILD_EXECUTABLE_SUFFIX) 6 LLVM_TBLGEN := $(BUILD_OUT_EXECUTABLES)/llvm-tblgen$(BUILD_EXECUTABLE_SUFFIX) 7 8 define convert-to-clang-flags 9 $(strip $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(1))) 10 endef 11 12 CLANG_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 39 clang_2nd_arch_prefix := 40 include $(BUILD_SYSTEM)/clang/HOST_$(HOST_ARCH).mk 41 42 # HOST_2ND_ARCH config 43 ifdef HOST_2ND_ARCH 44 clang_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX) 45 include $(BUILD_SYSTEM)/clang/HOST_$(HOST_2ND_ARCH).mk 46 endif 47 48 ifdef HOST_CROSS_ARCH 49 clang_2nd_arch_prefix := 50 include $(BUILD_SYSTEM)/clang/HOST_CROSS_$(HOST_CROSS_ARCH).mk 51 ifdef HOST_CROSS_2ND_ARCH 52 clang_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX) 53 include $(BUILD_SYSTEM)/clang/HOST_CROSS_$(HOST_CROSS_2ND_ARCH).mk 54 endif 55 endif 56 57 # TARGET config 58 clang_2nd_arch_prefix := 59 include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_ARCH).mk 60 61 # TARGET_2ND_ARCH config 62 ifdef TARGET_2ND_ARCH 63 clang_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 64 include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_2ND_ARCH).mk 65 endif 66 67 # This allows us to use the superset of functionality that compiler-rt 68 # provides to Clang (for supporting features like -ftrapv). 69 COMPILER_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. 73 LOCAL_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. 86 define find_in_local_clang_exception_projects 87 $(subst $(space),, \ 88 $(foreach project,$(LOCAL_CLANG_EXCEPTION_PROJECTS), \ 89 $(if $(filter $(project)%,$(1)),$(project)) \ 90 ) \ 91 ) 92 endef 93 94 include $(BUILD_SYSTEM)/clang/tidy.mk 95