diff options
author | Peter Seiderer <ps.report@gmx.net> | 2017-11-21 20:13:30 +0100 |
---|---|---|
committer | Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be> | 2017-11-24 00:08:23 +0100 |
commit | b9d2d4cb4ebc7a2290c4683dd9667b8f0a9e3cdf (patch) | |
tree | 3ce25e2d2dd30c4dd4ddb4ce94fc9bf2378f8bee | |
parent | ca4009fc24e3a283fc44327dbd20579bde6cc323 (diff) | |
download | buildroot-b9d2d4cb4ebc7a2290c4683dd9667b8f0a9e3cdf.tar.gz buildroot-b9d2d4cb4ebc7a2290c4683dd9667b8f0a9e3cdf.zip |
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>
-rw-r--r-- | Makefile | 8 | ||||
-rw-r--r-- | package/gstreamer/gstreamer.mk | 2 | ||||
-rw-r--r-- | package/gstreamer1/gstreamer1.mk | 2 | ||||
-rw-r--r-- | toolchain/toolchain-external/toolchain-external.mk | 2 |
4 files changed, 7 insertions, 7 deletions
@@ -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 PACKAGES += $(DEPENDENCIES_HOST_PREREQ) -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) diff --git a/package/gstreamer/gstreamer.mk b/package/gstreamer/gstreamer.mk index bc886c78a2..22240bceea 100644 --- a/package/gstreamer/gstreamer.mk +++ b/package/gstreamer/gstreamer.mk @@ -1 +1 @@ -include package/gstreamer/*/*.mk +include $(sort $(wildcard package/gstreamer/*/*.mk)) diff --git a/package/gstreamer1/gstreamer1.mk b/package/gstreamer1/gstreamer1.mk index 5b748e33fb..8530ff027a 100644 --- a/package/gstreamer1/gstreamer1.mk +++ b/package/gstreamer1/gstreamer1.mk @@ -1 +1 @@ -include package/gstreamer1/*/*.mk +include $(sort $(wildcard package/gstreamer1/*/*.mk)) diff --git a/toolchain/toolchain-external/toolchain-external.mk b/toolchain/toolchain-external/toolchain-external.mk index 48de1e71f2..dd07884c7e 100644 --- a/toolchain/toolchain-external/toolchain-external.mk +++ b/toolchain/toolchain-external/toolchain-external.mk @@ -25,4 +25,4 @@ $(error No prefix selected for external toolchain package $(BR2_PACKAGE_PROVIDES endif endif -include toolchain/toolchain-external/*/*.mk +include $(sort $(wildcard toolchain/toolchain-external/*/*.mk)) |