blob: a269839df0619af6b6fbdcc4e9b3f4e4718b7cb2 [file] [log] [blame]
Ying Wangba8b3772014-03-10 18:23:08 -07001## Clang configurations.
2
Dan Albert8b1d1772015-11-13 23:06:07 -08003LLVM_PREBUILTS_PATH := $(LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(LLVM_PREBUILTS_VERSION)/bin
Stephen Hinescdb52b52016-02-04 11:43:41 -08004LLVM_RTLIB_PATH := $(LLVM_PREBUILTS_PATH)/../lib64/clang/$(LLVM_RELEASE_VERSION)/lib/linux/
Ying Wang1f982832014-02-06 18:08:44 -08005
Stephen Hinesb34b7ae2014-09-30 02:37:20 -07006CLANG_TBLGEN := $(BUILD_OUT_EXECUTABLES)/clang-tblgen$(BUILD_EXECUTABLE_SUFFIX)
7LLVM_TBLGEN := $(BUILD_OUT_EXECUTABLES)/llvm-tblgen$(BUILD_EXECUTABLE_SUFFIX)
Stephen Hines7bc754b2014-02-19 09:03:00 -08008
Stephen Hines96d2a8c2016-01-21 23:50:53 -08009# RenderScript-specific tools
10# These are tied to the version of LLVM directly in external/, so they might
11# trail the host prebuilts being used for the rest of the build process.
Stephen Hines348b81a2016-04-29 16:50:48 -070012RS_LLVM_PREBUILTS_VERSION := clang-2812033
Stephen Hines96d2a8c2016-01-21 23:50:53 -080013RS_LLVM_PREBUILTS_BASE := prebuilts/clang/host
14RS_LLVM_PREBUILTS_PATH := $(RS_LLVM_PREBUILTS_BASE)/$(BUILD_OS)-x86/$(RS_LLVM_PREBUILTS_VERSION)/bin
Stephen Hines49b69532016-01-22 15:11:34 -080015RS_CLANG := $(RS_LLVM_PREBUILTS_PATH)/clang$(BUILD_EXECUTABLE_SUFFIX)
Stephen Hines96d2a8c2016-01-21 23:50:53 -080016RS_LLVM_AS := $(RS_LLVM_PREBUILTS_PATH)/llvm-as$(BUILD_EXECUTABLE_SUFFIX)
17RS_LLVM_LINK := $(RS_LLVM_PREBUILTS_PATH)/llvm-link$(BUILD_EXECUTABLE_SUFFIX)
18
Ying Wang1f982832014-02-06 18:08:44 -080019CLANG_CONFIG_UNKNOWN_CFLAGS := \
Stephen Hines433f1612014-11-26 00:57:34 -080020 -finline-functions \
Bernhard Rosenkraenzerd6e11822014-05-12 16:05:14 +020021 -finline-limit=64 \
Chih-Hung Hsiehfb482c62014-08-26 16:37:00 -070022 -fno-canonical-system-headers \
Chih-Hung Hsieh0ba68ba2015-05-01 14:53:59 -070023 -Wno-clobbered \
24 -fno-devirtualize \
Chih-Hung Hsiehfb482c62014-08-26 16:37:00 -070025 -fno-tree-sra \
Chih-Hung Hsieh78df8322015-03-05 16:02:04 -080026 -fprefetch-loop-arrays \
Chih-Hung Hsiehfb482c62014-08-26 16:37:00 -070027 -funswitch-loops \
Chih-Hung Hsieh7e44d7f2015-03-19 15:17:06 -070028 -Werror=unused-but-set-parameter \
Elliott Hughes3101e612015-04-03 07:43:46 -070029 -Werror=unused-but-set-variable \
Chih-Hung Hsiehfb482c62014-08-26 16:37:00 -070030 -Wmaybe-uninitialized \
Chih-Hung Hsieh0ba68ba2015-05-01 14:53:59 -070031 -Wno-error=clobbered \
Chih-Hung Hsiehfb482c62014-08-26 16:37:00 -070032 -Wno-error=maybe-uninitialized \
Chih-Hung Hsieh7e44d7f2015-03-19 15:17:06 -070033 -Wno-error=unused-but-set-parameter \
Chih-Hung Hsieh9205bc12015-04-02 14:42:20 -070034 -Wno-error=unused-but-set-variable \
Chih-Hung Hsieh22b6c5c2014-10-23 16:39:09 -070035 -Wno-free-nonheap-object \
Chih-Hung Hsiehfb482c62014-08-26 16:37:00 -070036 -Wno-literal-suffix \
37 -Wno-maybe-uninitialized \
38 -Wno-old-style-declaration \
Ying Wang1f982832014-02-06 18:08:44 -080039 -Wno-psabi \
Andrew Hsieh48f239c2014-05-09 14:13:13 +080040 -Wno-unused-but-set-parameter \
Chih-Hung Hsieh9205bc12015-04-02 14:42:20 -070041 -Wno-unused-but-set-variable \
42 -Wno-unused-local-typedefs \
43 -Wunused-but-set-parameter \
Colin Cross63e3b022015-09-24 22:14:25 -070044 -Wunused-but-set-variable \
Dan Willemsen6a66a882015-10-14 16:44:53 -070045 -fdiagnostics-color \
Dan Willemsen02268f02016-05-19 14:39:25 -070046 -mthumb-interwork \
47 -fgcse-after-reload \
48 -frerun-cse-after-loop \
49 -frename-registers \
50 -fno-align-jumps \
51 -fno-builtin-sin \
52 -fno-caller-saves \
53 -fno-early-inlining \
54 -fno-move-loop-invariants \
55 -fno-partial-inlining \
56 -fno-strict-volatile-bitfields \
57 -fno-tree-copy-prop \
58 -fno-tree-loop-optimize \
59 -msynci \
60 -mno-synci \
61 -mno-fused-madd \
62 -finline-limit=300 \
63 -fno-inline-functions-called-once \
64 -mfpmath=sse \
65 -mbionic
66
67define convert-to-clang-flags
68$(strip $(filter-out $(CLANG_CONFIG_UNKNOWN_CFLAGS),$(1)))
69endef
Ying Wang1f982832014-02-06 18:08:44 -080070
Dan Albertb5b2ffe2015-04-16 18:07:07 -070071CLANG_DEFAULT_UB_CHECKS := \
72 bool \
73 integer-divide-by-zero \
74 return \
75 returns-nonnull-attribute \
76 shift-exponent \
77 unreachable \
78 vla-bound \
79
80# TODO(danalbert): The following checks currently have compiler performance
81# issues.
82# CLANG_DEFAULT_UB_CHECKS += alignment
83# CLANG_DEFAULT_UB_CHECKS += bounds
84# CLANG_DEFAULT_UB_CHECKS += enum
85# CLANG_DEFAULT_UB_CHECKS += float-cast-overflow
86# CLANG_DEFAULT_UB_CHECKS += float-divide-by-zero
87# CLANG_DEFAULT_UB_CHECKS += nonnull-attribute
88# CLANG_DEFAULT_UB_CHECKS += null
89# CLANG_DEFAULT_UB_CHECKS += shift-base
90# CLANG_DEFAULT_UB_CHECKS += signed-integer-overflow
91
92# TODO(danalbert): Fix UB in libc++'s __tree so we can turn this on.
93# https://llvm.org/PR19302
94# http://reviews.llvm.org/D6974
95# CLANG_DEFAULT_UB_CHECKS += object-size
96
Ying Wang1f982832014-02-06 18:08:44 -080097# HOST config
Ying Wang6feb6d52014-04-17 10:03:35 -070098clang_2nd_arch_prefix :=
Ying Wang1f982832014-02-06 18:08:44 -080099include $(BUILD_SYSTEM)/clang/HOST_$(HOST_ARCH).mk
Ying Wang6feb6d52014-04-17 10:03:35 -0700100
101# HOST_2ND_ARCH config
102ifdef HOST_2ND_ARCH
103clang_2nd_arch_prefix := $(HOST_2ND_ARCH_VAR_PREFIX)
104include $(BUILD_SYSTEM)/clang/HOST_$(HOST_2ND_ARCH).mk
Tim Murray02cefc92014-03-20 13:48:35 -0700105endif
Ying Wang1f982832014-02-06 18:08:44 -0800106
Dan Willemsen9ecbf832016-02-05 16:20:19 -0800107ifdef HOST_CROSS_ARCH
108clang_2nd_arch_prefix :=
109include $(BUILD_SYSTEM)/clang/HOST_CROSS_$(HOST_CROSS_ARCH).mk
110ifdef HOST_CROSS_2ND_ARCH
111clang_2nd_arch_prefix := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)
112include $(BUILD_SYSTEM)/clang/HOST_CROSS_$(HOST_CROSS_2ND_ARCH).mk
113endif
Dan Willemsen057aaea2015-08-14 12:59:50 -0700114endif
115
Ying Wang1f982832014-02-06 18:08:44 -0800116# TARGET config
117clang_2nd_arch_prefix :=
118include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_ARCH).mk
119
120# TARGET_2ND_ARCH config
121ifdef TARGET_2ND_ARCH
122clang_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX)
123include $(BUILD_SYSTEM)/clang/TARGET_$(TARGET_2ND_ARCH).mk
124endif
125
Dan Albert08cca282014-12-11 18:56:26 -0800126ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS := -fno-omit-frame-pointer
Ying Wang1f982832014-02-06 18:08:44 -0800127ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS := -Wl,-u,__asan_preinit
Dan Albert2daceaa2014-10-20 11:37:18 -0700128
Dan Albertb58fb4a2014-11-14 17:15:00 -0800129ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES := libasan
Ying Wang1f982832014-02-06 18:08:44 -0800130
131# This allows us to use the superset of functionality that compiler-rt
132# provides to Clang (for supporting features like -ftrapv).
133COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES := libcompiler_rt-extras
Ying Wange5d4e742014-11-06 14:11:33 -0800134
135ifeq ($(HOST_PREFER_32_BIT),true)
136# We don't have 32-bit prebuilt libLLVM/libclang, so force to build them from source.
137FORCE_BUILD_LLVM_COMPONENTS := true
138endif
Chih-Hung Hsieh460171a2016-04-21 15:37:24 -0700139
140include $(BUILD_SYSTEM)/clang/tidy.mk