path: root/Makefile
diff options
authorGravatar Peter Seiderer <ps.report@gmx.net>2017-11-21 20:13:30 +0100
committerGravatar Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>2017-11-24 00:08:23 +0100
commitb9d2d4cb4ebc7a2290c4683dd9667b8f0a9e3cdf (patch)
tree3ce25e2d2dd30c4dd4ddb4ce94fc9bf2378f8bee /Makefile
parentca4009fc24e3a283fc44327dbd20579bde6cc323 (diff)
Fix makefile include order by using sort/wildcard.
The 'include' directive in GNU make supports wildcards, but their expansion has no defined sort order (GLOB_NOSORT is passed to glob()). Usually this doesn't matter. However, there is at least one case where it does make a difference: toolchain/*/*.mk includes both the definitions of the external toolchain packages and pkg-toolchain-external.mk, but pkg-toolchain-external.mk must be included first. For predictability, use ordered 'include $(sort $(wildcard ...))' instead of unordered direct 'include */*.mk' everywhere. Fixes [1] reported by Petr Vorel: make: *** No rule to make target 'toolchain-external-custom', needed by '.../build/toolchain-external/.stamp_configured'. Stop. [1] http://lists.busybox.net/pipermail/buildroot/2017-November/206969.html Signed-off-by: Peter Seiderer <ps.report@gmx.net> Tested-by: Petr Vorel <petr.vorel@gmail.com> [Arnout: also sort the one remaining include, of the external docs] Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
Diffstat (limited to 'Makefile')
1 files changed, 4 insertions, 4 deletions
diff --git a/Makefile b/Makefile
index 55409b99af..3ee6abe026 100644
--- a/Makefile
+++ b/Makefile
@@ -483,13 +483,13 @@ include system/system.mk
include package/Makefile.in
# arch/arch.mk.* must be after package/Makefile.in because it may need to
# complement variables defined therein, like BR_NO_CHECK_HASH_FOR.
--include $(wildcard arch/arch.mk.*)
+-include $(sort $(wildcard arch/arch.mk.*))
include support/dependencies/dependencies.mk
-include toolchain/*.mk
-include toolchain/*/*.mk
+include $(sort $(wildcard toolchain/*.mk))
+include $(sort $(wildcard toolchain/*/*.mk))
# Include the package override file if one has been provided in the
# configuration.
@@ -1109,7 +1109,7 @@ print-version:
./support/testing/run-tests -l 2>&1 | sed -r -e '/^test_run \((.*)\).*/!d; s//\1: *runtime_test/' | LC_ALL=C sort >> $@
include docs/manual/manual.mk
--include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(dir)/docs/*/*.mk)
+-include $(foreach dir,$(BR2_EXTERNAL_DIRS),$(sort $(wildcard $(dir)/docs/*/*.mk)))
.PHONY: $(noconfig_targets)