diff --git a/core/Makefile b/core/Makefile index 6c5870be05..30a41d179c 100644 --- a/core/Makefile +++ b/core/Makefile @@ -40,6 +40,10 @@ $(if $(filter true,$(BUILD_BROKEN_VINTF_PRODUCT_COPY_FILES)),, \ ) endef +# Phony target to check PRODUCT_COPY_FILES copy pairs don't contain ELF files +.PHONY: check-elf-prebuilt-product-copy-files +check-elf-prebuilt-product-copy-files: + check_elf_prebuilt_product_copy_files := true ifneq (,$(filter true,$(BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES))) check_elf_prebuilt_product_copy_files := diff --git a/core/definitions.mk b/core/definitions.mk index 8219f82129..02303400d8 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -2493,15 +2493,25 @@ endef # $(2): destination file # $(3): message to print on error define copy-non-elf-file-checked -$(2): $(1) $(LLVM_READOBJ) - @echo "Copy non-ELF: $$@" +$(eval check_non_elf_file_timestamp := \ + $(call intermediates-dir-for,FAKE,check-non-elf-file-timestamps)/$(2).timestamp) +$(check_non_elf_file_timestamp): $(1) $(LLVM_READOBJ) + @echo "Check non-ELF: $$<" + $(hide) mkdir -p "$$(dir $$@)" + $(hide) rm -f "$$@" $(hide) \ - if $(LLVM_READOBJ) -h $$< >/dev/null 2>&1; then \ - $(call echo-error,$$@,$(3)); \ - $(call echo-error,$$@,found ELF file: $$<); \ + if $(LLVM_READOBJ) -h "$$<" >/dev/null 2>&1; then \ + $(call echo-error,$(2),$(3)); \ + $(call echo-error,$(2),found ELF file: $$<); \ false; \ fi + $(hide) touch "$$@" + +$(2): $(1) $(check_non_elf_file_timestamp) + @echo "Copy non-ELF: $$@" $$(copy-file-to-target) + +check-elf-prebuilt-product-copy-files: $(check_non_elf_file_timestamp) endef # The -t option to acp and the -p option to cp is