Merge "Add -Werror to compile warning free projects." am: 355e96774b am: 05388b7618
am: 9f82feb9e6
Change-Id: I2738360c847b6181756b46801d90d26de04933b0
diff --git a/core/binary.mk b/core/binary.mk
index 4dcb152..c682d4e 100644
--- a/core/binary.mk
+++ b/core/binary.mk
@@ -1596,6 +1596,16 @@
my_cflags += -DANDROID_STRICT
endif
+# Add -Werror if LOCAL_PATH is in the WARNING_DISALLOWED project list,
+# or not in the WARNING_ALLOWED project list.
+ifneq (,$(strip $(call find_warning_disallowed_projects,$(LOCAL_PATH))))
+ my_cflags_no_override += -Werror
+else
+ ifeq (,$(strip $(call find_warning_allowed_projects,$(LOCAL_PATH))))
+ my_cflags_no_override += -Werror
+ endif
+endif
+
# Disable clang-tidy if it is not found.
ifeq ($(PATH_TO_CLANG_TIDY),)
my_tidy_enabled := false
diff --git a/core/config.mk b/core/config.mk
index e791d05..a9cf18d 100644
--- a/core/config.mk
+++ b/core/config.mk
@@ -791,4 +791,39 @@
export PATH:=$(abspath $(BUILD_SYSTEM)/no_java_path):$(PATH)
endif
+# Projects clean of compiler warnings should be compiled with -Werror.
+# If most modules in a directory such as external/ have warnings,
+# the directory should be in ANDROID_WARNING_ALLOWED_PROJECTS list.
+# When some of its subdirectories are cleaned up, the subdirectories
+# can be added into ANDROID_WARNING_DISALLOWED_PROJECTS list, e.g.
+# external/fio/.
+ANDROID_WARNING_DISALLOWED_PROJECTS := \
+ art/% \
+ bionic/% \
+ external/fio/% \
+
+define find_warning_disallowed_projects
+ $(filter $(ANDROID_WARNING_DISALLOWED_PROJECTS),$(1)/)
+endef
+
+# Projects with compiler warnings are compiled without -Werror.
+ANDROID_WARNING_ALLOWED_PROJECTS := \
+ bootable/% \
+ cts/% \
+ dalvik/% \
+ development/% \
+ device/% \
+ external/% \
+ frameworks/% \
+ hardware/% \
+ packages/% \
+ system/% \
+ test/vts/% \
+ tools/adt/idea/android/ultimate/get_modification_time/jni/% \
+ vendor/% \
+
+define find_warning_allowed_projects
+ $(filter $(ANDROID_WARNING_ALLOWED_PROJECTS),$(1)/)
+endef
+
include $(BUILD_SYSTEM)/dumpvar.mk