mirror of
https://github.com/torvalds/linux.git
synced 2026-01-12 00:42:35 +08:00
kbuild: fix compilation of dtb specified on command-line without make rule
Since commite7e2941300("kbuild: split device tree build rules into scripts/Makefile.dtbs"), it is no longer possible to compile a device tree blob that is not specified in a make rule like: dtb-$(CONFIG_FOO) += foo.dtb Before the mentioned commit, one could copy a dts file to e.g. arch/arm64/boot/dts/ (or a new subdirectory) and then convert it to a dtb file using: make ARCH=arm64 foo.dtb In this scenario, both 'dtb-y' and 'dtb-' are empty, and the inclusion of scripts/Makefile.dtbs relies on 'targets' to contain the MAKECMDGOALS. The value of 'targets', however, is only final later in the code. Move the conditional include of scripts/Makefile.dtbs down to where the value of 'targets' is final. Since Makefile.dtbs updates 'always-y' which is used as a prerequisite in the build rule, the build rule also needs to move down. Fixes:e7e2941300("kbuild: split device tree build rules into scripts/Makefile.dtbs") Signed-off-by: Thomas De Schampheleire <thomas.de_schampheleire@nokia.com> Reviewed-by: Nathan Chancellor <nathan@kernel.org> Tested-by: Nathan Chancellor <nathan@kernel.org> Acked-by: Rob Herring (Arm) <robh@kernel.org> Link: https://patch.msgid.link/20251126100017.1162330-1-thomas.de_schampheleire@nokia.com Signed-off-by: Nicolas Schier <nsc@kernel.org>
This commit is contained in:
committed by
Nicolas Schier
parent
07fe35b766
commit
b08fc4d0ec
@@ -527,18 +527,6 @@ ifneq ($(userprogs),)
|
||||
include $(srctree)/scripts/Makefile.userprogs
|
||||
endif
|
||||
|
||||
ifneq ($(need-dtbslist)$(dtb-y)$(dtb-)$(filter %.dtb %.dtb.o %.dtbo.o,$(targets)),)
|
||||
include $(srctree)/scripts/Makefile.dtbs
|
||||
endif
|
||||
|
||||
# Build
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
$(obj)/: $(if $(KBUILD_BUILTIN), $(targets-for-builtin)) \
|
||||
$(if $(KBUILD_MODULES), $(targets-for-modules)) \
|
||||
$(subdir-ym) $(always-y)
|
||||
@:
|
||||
|
||||
# Single targets
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@@ -568,6 +556,20 @@ FORCE:
|
||||
targets += $(filter-out $(single-subdir-goals), $(MAKECMDGOALS))
|
||||
targets := $(filter-out $(PHONY), $(targets))
|
||||
|
||||
# Now that targets is fully known, include dtb rules if needed
|
||||
ifneq ($(need-dtbslist)$(dtb-y)$(dtb-)$(filter %.dtb %.dtb.o %.dtbo.o,$(targets)),)
|
||||
include $(srctree)/scripts/Makefile.dtbs
|
||||
endif
|
||||
|
||||
# Build
|
||||
# Needs to be after the include of Makefile.dtbs, which updates always-y
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
$(obj)/: $(if $(KBUILD_BUILTIN), $(targets-for-builtin)) \
|
||||
$(if $(KBUILD_MODULES), $(targets-for-modules)) \
|
||||
$(subdir-ym) $(always-y)
|
||||
@:
|
||||
|
||||
# Read all saved command lines and dependencies for the $(targets) we
|
||||
# may be building above, using $(if_changed{,_dep}). As an
|
||||
# optimization, we don't need to read them if the target does not
|
||||
|
||||
Reference in New Issue
Block a user