Make duplicate COPY_HEADERS an error
Test: on internal device that has warnings, test with
BUILD_BROKEN_DUP_COPY_HEADERS true and unset.
Test: build_test on downstream branches
Change-Id: I2cebd99b10f13fb75167dc8370ba762f94c41c2a
diff --git a/core/Makefile b/core/Makefile
index d5621d7..3d5d045 100644
--- a/core/Makefile
+++ b/core/Makefile
@@ -69,15 +69,24 @@
# If more than one makefile declared a header, print a warning,
# then copy the last one defined. This matches the previous make
# behavior.
+has_dup_copy_headers :=
$(foreach dest,$(ALL_COPIED_HEADERS), \
$(eval _srcs := $(ALL_COPIED_HEADERS.$(dest).SRC)) \
$(eval _src := $(word $(words $(_srcs)),$(_srcs))) \
$(if $(call streq,$(_src),$(_srcs)),, \
$(warning Duplicate header copy: $(dest)) \
- $(warning Defined in: $(ALL_COPIED_HEADERS.$(dest).MAKEFILE))) \
+ $(warning Defined in: $(ALL_COPIED_HEADERS.$(dest).MAKEFILE)) \
+ $(eval has_dup_copy_headers := true)) \
$(eval $(call copy-one-header,$(_src),$(dest))))
all_copied_headers: $(ALL_COPIED_HEADERS)
+ifdef has_dup_copy_headers
+ has_dup_copy_headers :=
+ ifneq ($(BUILD_BROKEN_DUP_COPY_HEADERS),true)
+ $(error duplicate header copies are no longer allowed. For more information about headers, see: https://android.googlesource.com/platform/build/soong/+/master/docs/best_practices.md#headers)
+ endif
+endif
+
# -----------------------------------------------------------------
# docs/index.html
ifeq (,$(TARGET_BUILD_APPS))