• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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