Define DEFAULT_TIDY_HEADER_DIRS.

Let clang-tidy report warnings in header files in the
system and current directories but not the external
and vendor directories.

Test: build with WITH_TIDY=1
Change-Id: I1723b8eb95948961fb7164a19989e0a926e5bf8a
diff --git a/core/binary.mk b/core/binary.mk
index fb31890..ad0bbcc 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -1649,7 +1649,7 @@
     endif
     # If tidy flags are not specified, default to check all header files.
     ifeq ($(my_tidy_flags),)
-      my_tidy_flags := -header-filter=.*
+      my_tidy_flags := $(call default_tidy_header_filter,$(LOCAL_PATH))
     endif
   endif
 endif
diff --git a/core/clang/tidy.mk b/core/clang/tidy.mk
index 3df0299..7ec9378 100644
--- a/core/clang/tidy.mk
+++ b/core/clang/tidy.mk
@@ -73,3 +73,25 @@
   ) \
 )
 endef
+
+# Give warnings to header files only in selected directories.
+# Do not give warnings to external or vendor header files,
+# which contain too many warnings.
+DEFAULT_TIDY_HEADER_DIRS := \
+     art/ \
+    |bionic/ \
+    |bootable/ \
+    |build/ \
+    |cts/ \
+    |dalvik/ \
+    |developers/ \
+    |development/ \
+    |frameworks/ \
+    |libcore/ \
+    |libnativehelper/ \
+    |system/
+
+# Default filter contains current directory $1 and DEFAULT_TIDY_HEADER_DIRS.
+define default_tidy_header_filter
+  -header-filter="($(subst $(space),,$1|$(DEFAULT_TIDY_HEADER_DIRS)))"
+endef