[PATCH 1/2] firmware: refactor firmware/Makefile

Sascha Hauer sha at pengutronix.de
Mon May 31 01:21:27 PDT 2021


On Sun, May 30, 2021 at 11:58:41PM +0900, Masahiro Yamada wrote:
> From: Masahiro Yamada <yamada.masahiro at socionext.com>
> 
> 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 at socionext.com>
> Signed-off-by: Masahiro Yamada <masahiroy at kernel.org>
> ---
> 
>  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 at lists.infradead.org
> 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 |



More information about the barebox mailing list