A pbl is not rebuilt when the firmware file specified in fw-external-y changes. $(patsubst %.gen.o,$(obj)/%.extgen.pbl.o, $(pbl-y)) is executed before pbl-y actually contains the contents of fw-external-y. Also we want to do the subsitution only for the external firmware files, not for pbl-y. To fix this use a intermediate variable pbl-fwext-y instead of pbl-y and initialize it before usage. Also, use $$(wildcard $(fwdir)/%) instead of $(fwdir)/% to successfully compile when the external firmware file is missing. Signed-off-by: Sascha Hauer <s.hauer@xxxxxxxxxxxxxx> --- firmware/Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/firmware/Makefile b/firmware/Makefile index 4c68817fc6..27504e9442 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -42,6 +42,7 @@ fwobjdir := $(objtree)/firmware pbl-y := $(addsuffix .gen.o, $(pbl-firmware-y)) obj-pbl-y := $(addsuffix .gen.o, $(firmware-y)) +pbl-fwext-y := $(addsuffix .extgen.o, $(fw-external-y)) FWNAME = $(patsubst $(obj)/%.extgen.S,%,$(patsubst $(obj)/%.gen.S,%,$@)) FWSTR = $(subst /,_,$(subst .,_,$(subst -,_,$(FWNAME)))) @@ -104,9 +105,9 @@ $(patsubst %.gen.o,$(obj)/%.gen.o, $(obj-pbl-y)): $(obj)/%.gen.o: $(fwdir)/% # The same for pbl: .SECONDEXPANSION: $(patsubst %.gen.o,$(obj)/%.gen.pbl.o, $(obj-pbl-y) $(pbl-y)): $(obj)/%.gen.pbl.o: $$(wildcard $(fwdir)/%) -$(patsubst %.gen.o,$(obj)/%.extgen.pbl.o, $(pbl-y)): $(obj)/%.extgen.pbl.o: $(fwdir)/% +$(patsubst %.extgen.o,$(obj)/%.extgen.pbl.o, $(pbl-fwext-y)): $(obj)/%.extgen.pbl.o: $$(wildcard $(fwdir)/%) -pbl-y += $(addsuffix .extgen.o, $(fw-external-y)) +pbl-y += $(pbl-fwext-y) targets := $(patsubst $(obj)/%,%, \ $(shell find $(obj) -name \*.gen.S 2>/dev/null)) -- 2.39.2