Retrieve the list of *.dtb(o) files from arch/*/boot/dts/dtbs-list
instead of traversing the directory tree again.
Please note that 'make dtbs_install' installs *.dtb(o) files directly
added to dtb-y because scripts/Makefile.dtbinst installs $(dtb-y)
without expanding the -dtbs suffix.
This commit preserves this behavior.
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
---
Makefile | 2 +-
scripts/Kbuild.include | 6 ------
scripts/Makefile.dtbinst | 32 ++++++++++++++++++--------------
3 files changed, 19 insertions(+), 21 deletions(-)
diff --git a/Makefile b/Makefile
index db7f9e34a24e..dae6825b8082 100644
--- a/Makefile
+++ b/Makefile
@@ -1407,7 +1407,7 @@ endif
dtbs_check: dtbs
dtbs_install:
- $(Q)$(MAKE) $(dtbinst)=$(dtstree) dst=$(INSTALL_DTBS_PATH)
+ $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.dtbinst obj=$(dtstree)
ifdef CONFIG_OF_EARLY_FLATTREE
all: dtbs
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
index 7778cc97a4e0..2f331879816b 100644
--- a/scripts/Kbuild.include
+++ b/scripts/Kbuild.include
@@ -113,12 +113,6 @@ endef
# $(Q)$(MAKE) $(build)=dir
build := -f $(srctree)/scripts/Makefile.build obj
-###
-# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.dtbinst obj=
-# Usage:
-# $(Q)$(MAKE) $(dtbinst)=dir
-dtbinst := -f $(srctree)/scripts/Makefile.dtbinst obj
-
###
# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj=
# Usage:
diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst
index 4405d5b67578..67956f6496a5 100644
--- a/scripts/Makefile.dtbinst
+++ b/scripts/Makefile.dtbinst
@@ -8,32 +8,36 @@
# $INSTALL_PATH/dtbs/$KERNELRELEASE
# ==========================================================================
-src := $(obj)
-
PHONY := __dtbs_install
__dtbs_install:
include include/config/auto.conf
include $(srctree)/scripts/Kbuild.include
-include $(kbuild-file)
-dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-)))
-subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m))
-
-__dtbs_install: $(dtbs) $(subdirs)
- @:
+dst := $(INSTALL_DTBS_PATH)
quiet_cmd_dtb_install = INSTALL $@
cmd_dtb_install = install -D $< $@
-$(dst)/%.dtb: $(obj)/%.dtb
+$(dst)/%: $(obj)/%
$(call cmd,dtb_install)
-$(dst)/%.dtbo: $(obj)/%.dtbo
- $(call cmd,dtb_install)
+dtbs := $(patsubst $(obj)/%,%,$(call read-file, $(obj)/dtbs-list))
-PHONY += $(subdirs)
-$(subdirs):
- $(Q)$(MAKE) $(dtbinst)=$@ dst=$(if $(CONFIG_ARCH_WANT_FLAT_DTB_INSTALL),$(dst),$(patsubst $(obj)/%,$(dst)/%,$@))
+ifdef CONFIG_ARCH_WANT_FLAT_DTB_INSTALL
+
+define gen_install_rules
+$(dst)/%: $(obj)/$(1)%
+ $$(call cmd,dtb_install)
+endef
+
+$(foreach d, $(sort $(dir $(dtbs))), $(eval $(call gen_install_rules,$(d))))
+
+dtbs := $(notdir $(dtbs))
+
+endif # CONFIG_ARCH_WANT_FLAT_DTB_INSTALL
+
+__dtbs_install: $(addprefix $(dst)/, $(dtbs))
+ @:
.PHONY: $(PHONY)
--
2.40.1
On Tue, Jan 09, 2024 at 09:07:35PM +0900, Masahiro Yamada wrote: > Retrieve the list of *.dtb(o) files from arch/*/boot/dts/dtbs-list > instead of traversing the directory tree again. Don't you need dtbs-list in .gitignore? > > Please note that 'make dtbs_install' installs *.dtb(o) files directly > added to dtb-y because scripts/Makefile.dtbinst installs $(dtb-y) > without expanding the -dtbs suffix. > > This commit preserves this behavior. > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > --- > > Makefile | 2 +- > scripts/Kbuild.include | 6 ------ > scripts/Makefile.dtbinst | 32 ++++++++++++++++++-------------- > 3 files changed, 19 insertions(+), 21 deletions(-) > > diff --git a/Makefile b/Makefile > index db7f9e34a24e..dae6825b8082 100644 > --- a/Makefile > +++ b/Makefile > @@ -1407,7 +1407,7 @@ endif > dtbs_check: dtbs > > dtbs_install: > - $(Q)$(MAKE) $(dtbinst)=$(dtstree) dst=$(INSTALL_DTBS_PATH) > + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.dtbinst obj=$(dtstree) > > ifdef CONFIG_OF_EARLY_FLATTREE > all: dtbs > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include > index 7778cc97a4e0..2f331879816b 100644 > --- a/scripts/Kbuild.include > +++ b/scripts/Kbuild.include > @@ -113,12 +113,6 @@ endef > # $(Q)$(MAKE) $(build)=dir > build := -f $(srctree)/scripts/Makefile.build obj > > -### > -# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.dtbinst obj= > -# Usage: > -# $(Q)$(MAKE) $(dtbinst)=dir > -dtbinst := -f $(srctree)/scripts/Makefile.dtbinst obj > - > ### > # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= > # Usage: > diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst > index 4405d5b67578..67956f6496a5 100644 > --- a/scripts/Makefile.dtbinst > +++ b/scripts/Makefile.dtbinst > @@ -8,32 +8,36 @@ > # $INSTALL_PATH/dtbs/$KERNELRELEASE > # ========================================================================== > > -src := $(obj) > - > PHONY := __dtbs_install > __dtbs_install: > > include include/config/auto.conf > include $(srctree)/scripts/Kbuild.include > -include $(kbuild-file) > > -dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-))) > -subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m)) > - > -__dtbs_install: $(dtbs) $(subdirs) > - @: > +dst := $(INSTALL_DTBS_PATH) > > quiet_cmd_dtb_install = INSTALL $@ > cmd_dtb_install = install -D $< $@ > > -$(dst)/%.dtb: $(obj)/%.dtb > +$(dst)/%: $(obj)/% > $(call cmd,dtb_install) > > -$(dst)/%.dtbo: $(obj)/%.dtbo > - $(call cmd,dtb_install) > +dtbs := $(patsubst $(obj)/%,%,$(call read-file, $(obj)/dtbs-list)) > > -PHONY += $(subdirs) > -$(subdirs): > - $(Q)$(MAKE) $(dtbinst)=$@ dst=$(if $(CONFIG_ARCH_WANT_FLAT_DTB_INSTALL),$(dst),$(patsubst $(obj)/%,$(dst)/%,$@)) > +ifdef CONFIG_ARCH_WANT_FLAT_DTB_INSTALL > + > +define gen_install_rules > +$(dst)/%: $(obj)/$(1)% > + $$(call cmd,dtb_install) > +endef > + > +$(foreach d, $(sort $(dir $(dtbs))), $(eval $(call gen_install_rules,$(d)))) > + > +dtbs := $(notdir $(dtbs)) > + > +endif # CONFIG_ARCH_WANT_FLAT_DTB_INSTALL > + > +__dtbs_install: $(addprefix $(dst)/, $(dtbs)) > + @: > > .PHONY: $(PHONY) > -- > 2.40.1 >
On Wed, Jan 17, 2024 at 11:52 PM Rob Herring <robh@kernel.org> wrote: > > On Tue, Jan 09, 2024 at 09:07:35PM +0900, Masahiro Yamada wrote: > > Retrieve the list of *.dtb(o) files from arch/*/boot/dts/dtbs-list > > instead of traversing the directory tree again. > > Don't you need dtbs-list in .gitignore? Yes. 1/4 added it. > > > > Please note that 'make dtbs_install' installs *.dtb(o) files directly > > added to dtb-y because scripts/Makefile.dtbinst installs $(dtb-y) > > without expanding the -dtbs suffix. > > > > This commit preserves this behavior. > > > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > > --- > > > > Makefile | 2 +- > > scripts/Kbuild.include | 6 ------ > > scripts/Makefile.dtbinst | 32 ++++++++++++++++++-------------- > > 3 files changed, 19 insertions(+), 21 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index db7f9e34a24e..dae6825b8082 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -1407,7 +1407,7 @@ endif > > dtbs_check: dtbs > > > > dtbs_install: > > - $(Q)$(MAKE) $(dtbinst)=$(dtstree) dst=$(INSTALL_DTBS_PATH) > > + $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.dtbinst obj=$(dtstree) > > > > ifdef CONFIG_OF_EARLY_FLATTREE > > all: dtbs > > diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include > > index 7778cc97a4e0..2f331879816b 100644 > > --- a/scripts/Kbuild.include > > +++ b/scripts/Kbuild.include > > @@ -113,12 +113,6 @@ endef > > # $(Q)$(MAKE) $(build)=dir > > build := -f $(srctree)/scripts/Makefile.build obj > > > > -### > > -# Shorthand for $(Q)$(MAKE) -f scripts/Makefile.dtbinst obj= > > -# Usage: > > -# $(Q)$(MAKE) $(dtbinst)=dir > > -dtbinst := -f $(srctree)/scripts/Makefile.dtbinst obj > > - > > ### > > # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.clean obj= > > # Usage: > > diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst > > index 4405d5b67578..67956f6496a5 100644 > > --- a/scripts/Makefile.dtbinst > > +++ b/scripts/Makefile.dtbinst > > @@ -8,32 +8,36 @@ > > # $INSTALL_PATH/dtbs/$KERNELRELEASE > > # ========================================================================== > > > > -src := $(obj) > > - > > PHONY := __dtbs_install > > __dtbs_install: > > > > include include/config/auto.conf > > include $(srctree)/scripts/Kbuild.include > > -include $(kbuild-file) > > > > -dtbs := $(addprefix $(dst)/, $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS),$(dtb-))) > > -subdirs := $(addprefix $(obj)/, $(subdir-y) $(subdir-m)) > > - > > -__dtbs_install: $(dtbs) $(subdirs) > > - @: > > +dst := $(INSTALL_DTBS_PATH) > > > > quiet_cmd_dtb_install = INSTALL $@ > > cmd_dtb_install = install -D $< $@ > > > > -$(dst)/%.dtb: $(obj)/%.dtb > > +$(dst)/%: $(obj)/% > > $(call cmd,dtb_install) > > > > -$(dst)/%.dtbo: $(obj)/%.dtbo > > - $(call cmd,dtb_install) > > +dtbs := $(patsubst $(obj)/%,%,$(call read-file, $(obj)/dtbs-list)) > > > > -PHONY += $(subdirs) > > -$(subdirs): > > - $(Q)$(MAKE) $(dtbinst)=$@ dst=$(if $(CONFIG_ARCH_WANT_FLAT_DTB_INSTALL),$(dst),$(patsubst $(obj)/%,$(dst)/%,$@)) > > +ifdef CONFIG_ARCH_WANT_FLAT_DTB_INSTALL > > + > > +define gen_install_rules > > +$(dst)/%: $(obj)/$(1)% > > + $$(call cmd,dtb_install) > > +endef > > + > > +$(foreach d, $(sort $(dir $(dtbs))), $(eval $(call gen_install_rules,$(d)))) > > + > > +dtbs := $(notdir $(dtbs)) > > + > > +endif # CONFIG_ARCH_WANT_FLAT_DTB_INSTALL > > + > > +__dtbs_install: $(addprefix $(dst)/, $(dtbs)) > > + @: > > > > .PHONY: $(PHONY) > > -- > > 2.40.1 > > -- Best Regards Masahiro Yamada
© 2016 - 2025 Red Hat, Inc.