On Sun, May 30, 2021 at 11:58:41PM +0900, Masahiro Yamada wrote: > From: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > > Linux commit 3470d9eb638722212ac44787eaf13486823fa011 > > Clean up the Makefile. Equivalent *.gen.S files are still produced. > > - Use filechk to remove ugly wordsize_deps > > - Get FWNAME, FWSTR, ASM_WORD, ASM_ALIGN, and PROGBITS out of the > recipe for readability > > - Remove 'mkdir' because filechk takes care of it > > Signed-off-by: Masahiro Yamada <yamada.masahiro@xxxxxxxxxxxxx> > Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx> > --- > > firmware/Makefile | 56 +++++++++++++++++------------------------------ > 1 file changed, 20 insertions(+), 36 deletions(-) Applied, thanks Sascha > > diff --git a/firmware/Makefile b/firmware/Makefile > index cc28c0fc3..3a38c4007 100644 > --- a/firmware/Makefile > +++ b/firmware/Makefile > @@ -1,7 +1,4 @@ > # SPDX-License-Identifier: GPL-2.0 > -# > -# kbuild file for firmware/ > -# > > firmware-$(CONFIG_FIRMWARE_IMX_LPDDR4_PMU_TRAIN) += \ > lpddr4_pmu_train_1d_dmem.bin \ > @@ -19,52 +16,39 @@ firmware-$(CONFIG_ARCH_LAYERSCAPE_PPA) += ppa-ls1046a.bin > > firmware-$(CONFIG_FIRMWARE_CCBV2_OPTEE) += ccbv2_optee.bin > > -# Create $(fwabs) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a > +# Create $(fwdir) from $(CONFIG_EXTRA_FIRMWARE_DIR) -- if it doesn't have a > # leading /, it's relative to $(srctree). > fwdir := $(subst $(quote),,$(CONFIG_EXTRA_FIRMWARE_DIR)) > -fwabs := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir)) > +fwdir := $(addprefix $(srctree)/,$(filter-out /%,$(fwdir)))$(filter /%,$(fwdir)) > > -fw-external-y := $(firmware-y) > +obj-pbl-y := $(addsuffix .gen.o, $(firmware-y)) > > -quiet_cmd_fwbin = MK_FW $@ > - cmd_fwbin = FWNAME="$(patsubst firmware/%.gen.S,%,$@)"; \ > - FWSTR="$(subst /,_,$(subst .,_,$(subst -,_,$(patsubst \ > - firmware/%.gen.S,%,$@))))"; \ > - ASM_WORD=$(if $(CONFIG_64BIT),.quad,.long); \ > - ASM_ALIGN=$(if $(CONFIG_64BIT),3,2); \ > - PROGBITS=$(if $(CONFIG_ARM),%,@)progbits; \ > - echo "/* Generated by firmware/Makefile */" > $@;\ > - echo " .section .rodata.$${FWSTR}" >>$@;\ > - echo " .p2align $${ASM_ALIGN}" >>$@;\ > - echo ".global _fw_$${FWSTR}_start" >>$@;\ > - echo "_fw_$${FWSTR}_start:" >>$@;\ > - echo " .incbin \"$(2)\"" >>$@;\ > - echo ".global _fw_$${FWSTR}_end" >>$@;\ > - echo "_fw_$${FWSTR}_end:" >>$@; > +FWNAME = $(patsubst $(obj)/%.gen.S,%,$@) > +FWSTR = $(subst /,_,$(subst .,_,$(subst -,_,$(FWNAME)))) > +ASM_ALIGN = $(if $(CONFIG_64BIT),3,2) > > -# One of these files will change, or come into existence, whenever > -# the configuration changes between 32-bit and 64-bit. The .S files > -# need to change when that happens. > -wordsize_deps := $(wildcard include/config/64bit.h include/config/32bit.h) > +filechk_fwbin = { \ > + echo "/* Generated by $(src)/Makefile */" ;\ > + echo " .section .rodata.$(FWSTR)" ;\ > + echo " .p2align $(ASM_ALIGN)" ;\ > + echo ".global _fw_$(FWSTR)_start" ;\ > + echo "_fw_$(FWSTR)_start:" ;\ > + echo " .incbin \"$(fwdir)/$(FWNAME)\"" ;\ > + echo ".global _fw_$(FWSTR)_end" ;\ > + echo "_fw_$(FWSTR)_end:" ;\ > +} > > -$(patsubst %,$(obj)/%.gen.S, $(fw-external-y)): %: $(wordsize_deps) \ > - include/config/extra/firmware/dir.h > - $(call cmd,fwbin,$(fwabs)/$(patsubst $(obj)/%.gen.S,%,$@)) > +$(obj)/%.gen.S: FORCE > + $(call filechk,fwbin) > > # The .o files depend on the binaries directly; the .S files don't. > -$(patsubst %,$(obj)/%.gen.o, $(fw-external-y)): $(obj)/%.gen.o: $(fwdir)/% > +$(patsubst %,$(obj)/%.gen.o, $(obj-pbl-y)): $(obj)/%.gen.o: $(fwdir)/% > > # The same for pbl: > -$(patsubst %,$(obj)/%.gen.pbl.o, $(fw-external-y)): $(obj)/%.gen.pbl.o: $(fwdir)/% > +$(patsubst %,$(obj)/%.gen.pbl.o, $(obj-pbl-y)): $(obj)/%.gen.pbl.o: $(fwdir)/% > > obj-pbl-y += $(patsubst %,%.gen.o, $(fw-external-y)) > > -ifndef building_out_of_srctree > -# Makefile.build only creates subdirectories for O= builds, but external > -# firmware might live outside the kernel source tree > -_dummy := $(foreach d,$(addprefix $(obj)/,$(dir $(fw-external-y))), $(shell [ -d $(d) ] || mkdir -p $(d))) > -endif > - > targets := $(patsubst $(obj)/%,%, \ > $(shell find $(obj) -name \*.gen.S 2>/dev/null)) > > -- > 2.27.0 > > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox > -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox