diff options
author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2021-05-30 23:58:41 +0900 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2021-05-31 10:21:15 +0200 |
commit | 663894d99c64fb74b012864366ca6b30088fc1b5 (patch) | |
tree | 168f012409b9ab82b15bf13e53b2a2cba238bdd7 /firmware | |
parent | bd9313ebbf9765cd49842a94a9d81de13fa56981 (diff) | |
download | barebox-663894d99c64fb74b012864366ca6b30088fc1b5.tar.gz barebox-663894d99c64fb74b012864366ca6b30088fc1b5.tar.xz |
firmware: refactor firmware/Makefile
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@socionext.com>
Signed-off-by: Masahiro Yamada <masahiroy@kernel.org>
Link: https://lore.barebox.org/20210530145842.2610109-1-masahiroy@kernel.org
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/Makefile | 56 |
1 files changed, 20 insertions, 36 deletions
diff --git a/firmware/Makefile b/firmware/Makefile index cc28c0fc39..3a38c40079 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)) |