76b6d9
commit 1f67d8286b5da9266a138198ef1f15c27cbb0010
76b6d9
Author: H.J. Lu <hjl.tools@gmail.com>
76b6d9
Date:   Mon Nov 15 16:28:39 2021 -0800
76b6d9
76b6d9
    elf: Use a temporary file to generate Makefile fragments [BZ #28550]
76b6d9
    
76b6d9
    1. Use a temporary file to generate Makefile fragments for DSO sorting
76b6d9
    tests and use -include on them.
76b6d9
    2. Add Makefile fragments to postclean-generated so that a "make clean"
76b6d9
    removes the autogenerated fragments and a subsequent "make" regenerates
76b6d9
    them.
76b6d9
    
76b6d9
    This partially fixes BZ #28550.
76b6d9
    
76b6d9
    Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
76b6d9
76b6d9
diff --git a/elf/Makefile b/elf/Makefile
76b6d9
index 3b5e1f59e6696a2b..22a8060f7d3bb1a1 100644
76b6d9
--- a/elf/Makefile
76b6d9
+++ b/elf/Makefile
76b6d9
@@ -986,6 +986,7 @@ tests-special += \
76b6d9
   # tests-special
76b6d9
 endif
76b6d9
 
76b6d9
+ifndef avoid-generated
76b6d9
 # DSO sorting tests:
76b6d9
 # The dso-ordering-test.py script generates testcase source files in $(objpfx),
76b6d9
 # creating a $(objpfx)<testcase-name>-dir for each testcase, and creates a
76b6d9
@@ -993,9 +994,14 @@ endif
76b6d9
 define include_dsosort_tests
76b6d9
 $(objpfx)$(1).generated-makefile: $(1)
76b6d9
 	$(PYTHON) $(..)scripts/dso-ordering-test.py \
76b6d9
-	--description-file $$< --objpfx $(objpfx) --output-makefile $$@
76b6d9
-include $(objpfx)$(1).generated-makefile
76b6d9
+	--description-file $$< --objpfx $(objpfx) --output-makefile $$@T
76b6d9
+	mv $$@T $$@
76b6d9
+-include $(objpfx)$(1).generated-makefile
76b6d9
 endef
76b6d9
+endif
76b6d9
+
76b6d9
+postclean-generated += $(objpfx)/dso-sort-tests-2.generated-makefile \
76b6d9
+		       $(objpfx)/dso-sort-tests-2.generated-makefile
76b6d9
 
76b6d9
 # Generate from each testcase description file
76b6d9
 ifeq (yes,$(have-tunables))