Skip to content

Commit b08fc4d

Browse files
patrickdepinguinNicolas Schier
authored andcommitted
kbuild: fix compilation of dtb specified on command-line without make rule
Since commit e7e2941 ("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: e7e2941 ("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>
1 parent 07fe35b commit b08fc4d

1 file changed

Lines changed: 14 additions & 12 deletions

File tree

scripts/Makefile.build

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -527,18 +527,6 @@ ifneq ($(userprogs),)
527527
include $(srctree)/scripts/Makefile.userprogs
528528
endif
529529

530-
ifneq ($(need-dtbslist)$(dtb-y)$(dtb-)$(filter %.dtb %.dtb.o %.dtbo.o,$(targets)),)
531-
include $(srctree)/scripts/Makefile.dtbs
532-
endif
533-
534-
# Build
535-
# ---------------------------------------------------------------------------
536-
537-
$(obj)/: $(if $(KBUILD_BUILTIN), $(targets-for-builtin)) \
538-
$(if $(KBUILD_MODULES), $(targets-for-modules)) \
539-
$(subdir-ym) $(always-y)
540-
@:
541-
542530
# Single targets
543531
# ---------------------------------------------------------------------------
544532

@@ -568,6 +556,20 @@ FORCE:
568556
targets += $(filter-out $(single-subdir-goals), $(MAKECMDGOALS))
569557
targets := $(filter-out $(PHONY), $(targets))
570558

559+
# Now that targets is fully known, include dtb rules if needed
560+
ifneq ($(need-dtbslist)$(dtb-y)$(dtb-)$(filter %.dtb %.dtb.o %.dtbo.o,$(targets)),)
561+
include $(srctree)/scripts/Makefile.dtbs
562+
endif
563+
564+
# Build
565+
# Needs to be after the include of Makefile.dtbs, which updates always-y
566+
# ---------------------------------------------------------------------------
567+
568+
$(obj)/: $(if $(KBUILD_BUILTIN), $(targets-for-builtin)) \
569+
$(if $(KBUILD_MODULES), $(targets-for-modules)) \
570+
$(subdir-ym) $(always-y)
571+
@:
572+
571573
# Read all saved command lines and dependencies for the $(targets) we
572574
# may be building above, using $(if_changed{,_dep}). As an
573575
# optimization, we don't need to read them if the target does not

0 commit comments

Comments
 (0)