Merge "Issue warning on projects with LOCAL_CLANG set to false."
diff --git a/core/binary.mk b/core/binary.mk
index 2424179..9181699 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -274,6 +274,13 @@
my_clang := false
endif
endif
+# Issue warning if LOCAL_CLANG* is set to false and the local makefile is not found
+# in the exception project list.
+ifeq ($(my_clang),false)
+ ifeq ($(call find_in_local_clang_exception_projects,$(LOCAL_MODULE_MAKEFILE)),)
+ $(warning $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): warning: LOCAL_CLANG is set to false)
+ endif
+endif
# clang is enabled by default for host builds
# enable it unless we've specifically disabled clang above
diff --git a/core/clang/config.mk b/core/clang/config.mk
index 4685514..e47c36a 100644
--- a/core/clang/config.mk
+++ b/core/clang/config.mk
@@ -143,4 +143,21 @@
FORCE_BUILD_LLVM_COMPONENTS := true
endif
+# A list of projects that are allowed to set LOCAL_CLANG to false.
+LOCAL_CLANG_EXCEPTION_PROJECTS := \
+ device/huawei/angler/ \
+ device/lge/bullhead/ \
+ external/valgrind/ \
+ hardware/qcom/ \
+ $(INTERNAL_LOCAL_CLANG_EXCEPTION_PROJECTS)
+
+# Find $1 in the exception project list.
+define find_in_local_clang_exception_projects
+$(subst $(space),, \
+ $(foreach project,$(LOCAL_CLANG_EXCEPTION_PROJECTS), \
+ $(if $(filter $(project)%,$(1)),$(project)) \
+ ) \
+)
+endef
+
include $(BUILD_SYSTEM)/clang/tidy.mk
diff --git a/tools/warn.py b/tools/warn.py
index f17e8ac..f118263 100755
--- a/tools/warn.py
+++ b/tools/warn.py
@@ -74,6 +74,9 @@
'description':'make: overriding commands/ignoring old commands',
'patterns':[r".*: warning: overriding commands for target .+",
r".*: warning: ignoring old commands for target .+"] },
+ { 'category':'make', 'severity':severity.HIGH, 'members':[], 'option':'',
+ 'description':'make: LOCAL_CLANG is false',
+ 'patterns':[r".*: warning: LOCAL_CLANG is set to false"] },
{ 'category':'C/C++', 'severity':severity.HIGH, 'members':[], 'option':'-Wimplicit-function-declaration',
'description':'Implicit function declaration',
'patterns':[r".*: warning: implicit declaration of function .+",