blob: 98e01da5574ce670c5a778a4376d9e0214a384f1 [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 Hsieh460171a2016-04-21 15:37:24 -070071include $(BUILD_SYSTEM)/clang/tidy.mk