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 .+",