blob: 408f688c6627d8a347cbc0fb395e2d1b800c8d78 [file] [log] [blame]
Ying Wangba8b3772014-03-10 18:23:08 -07001## Clang configurations.
2
Stephen Hinescdb52b52016-02-04 11:43:41 -08003LLVM_RTLIB_PATH := $(LLVM_PREBUILTS_PATH)/../lib64/clang/$(LLVM_RELEASE_VERSION)/lib/linux/
Ying Wang1f982832014-02-06 18:08:44 -08004
Stephen Hinesb34b7ae2014-09-30 02:37:20 -07005CLANG_TBLGEN := $(BUILD_OUT_EXECUTABLES)/clang-tblgen$(BUILD_EXECUTABLE_SUFFIX)
6LLVM_TBLGEN := $(BUILD_OUT_EXECUTABLES)/llvm-tblgen$(BUILD_EXECUTABLE_SUFFIX)
Stephen Hines7bc754b2014-02-19 09:03:00 -08007
Dan Willemsen02268f02016-05-19 14:39:25 -07008define convert-to-clang-flags
9$(strip $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(1)))
10endef
Ying Wang1f982832014-02-06 18:08:44 -080011
Dan Albertb5b2ffe2015-04-16 18:07:07 -070012CLANG_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
Ying Wang1f982832014-02-06 18:08:44 -080038# HOST config
Ying Wang6feb6d52014-04-17 10:03:35 -070039clang_2nd_arch_prefix :=
Ying Wang1f982832014-02-06 18:08:44 -080040include $(BUILD_SYSTEM)/clang/HOST_$(HOST_ARCH).mk
Ying Wang6feb6d52014-04-17 10:03:35 -070041
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
Tim Murray02cefc92014-03-20 13:48:35 -070046endif
Ying Wang1f982832014-02-06 18:08:44 -080047
Dan Willemsen9ecbf832016-02-05 16:20:19 -080048ifdef 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
Dan Willemsen057aaea2015-08-14 12:59:50 -070055endif
56
Ying Wang1f982832014-02-06 18:08:44 -080057# 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
Ying Wang1f982832014-02-06 18:08:44 -080067# 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
Ying Wange5d4e742014-11-06 14:11:33 -080070
Chih-Hung Hsiehd9cd1fa2016-08-02 14:22:06 -070071# A list of projects that are allowed to set LOCAL_CLANG to false.
Chih-Hung Hsieh3ea1e512016-08-03 11:39:02 -070072# INTERNAL_LOCAL_CLANG_EXCEPTION_PROJECTS is defined later in other config.mk.
73LOCAL_CLANG_EXCEPTION_PROJECTS = \
Chih-Hung Hsieh82c78c52016-08-03 10:42:10 -070074 bionic/tests/ \
Dmitry Shmidt795bed92017-02-21 16:13:01 -080075 device/google/contexthub/ \
Chih-Hung Hsiehd9cd1fa2016-08-02 14:22:06 -070076 device/huawei/angler/ \
77 device/lge/bullhead/ \
Chih-Hung Hsieh2ee4c1a2016-08-04 15:35:51 -070078 external/gentoo/integration/ \
Chih-Hung Hsiehd9cd1fa2016-08-02 14:22:06 -070079 hardware/qcom/ \
Chih-Hung Hsieh3d723c32016-08-03 14:44:27 -070080 test/vts/hals/camera/bullhead/ \
81 test/vts/hals/etc/libqdutils/ \
Ed Tamfa8d8232017-03-21 12:21:28 -070082 vendor/huawei/angler/ \
83 vendor/lge/bullhead/ \
Chih-Hung Hsiehd9cd1fa2016-08-02 14:22:06 -070084 $(INTERNAL_LOCAL_CLANG_EXCEPTION_PROJECTS)
85
86# Find $1 in the exception project list.
87define find_in_local_clang_exception_projects
88$(subst $(space),, \
89 $(foreach project,$(LOCAL_CLANG_EXCEPTION_PROJECTS), \
90 $(if $(filter $(project)%,$(1)),$(project)) \
91 ) \
92)
93endef
94
Chih-Hung Hsieh460171a2016-04-21 15:37:24 -070095include $(BUILD_SYSTEM)/clang/tidy.mk