Skip to content

Commit afa974b

Browse files
committed
kbuild: add real-prereqs shorthand for $(filter-out FORCE,$^)
In Kbuild, if_changed and friends must have FORCE as a prerequisite. Hence, $(filter-out FORCE,$^) or $(filter-out $(PHONY),$^) is a common idiom to get the names of all the prerequisites except phony targets. Add real-prereqs as a shorthand. Note: We cannot replace $(filter %.o,$^) in cmd_link_multi-m because $^ may include auto-generated dependencies from the .*.cmd file when a single object module is changed into a multi object module. Refer to commit 69ea912 ("kbuild: remove unneeded link_multi_deps"). I added some comment to avoid accidental breakage. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Acked-by: Rob Herring <robh@kernel.org>
1 parent 5d68005 commit afa974b

File tree

9 files changed

+25
-19
lines changed

9 files changed

+25
-19
lines changed

Documentation/devicetree/bindings/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ DT_TMP_SCHEMA := processed-schema.yaml
1515
extra-y += $(DT_TMP_SCHEMA)
1616

1717
quiet_cmd_mk_schema = SCHEMA $@
18-
cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(filter-out FORCE, $^)
18+
cmd_mk_schema = $(DT_MK_SCHEMA) $(DT_MK_SCHEMA_FLAGS) -o $@ $(real-prereqs)
1919

2020
DT_DOCS = $(shell cd $(srctree)/$(src) && find * -name '*.yaml')
2121
DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))

arch/mips/boot/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ endif
115115
targets += vmlinux.its.S
116116

117117
quiet_cmd_its_cat = CAT $@
118-
cmd_its_cat = cat $(filter-out $(PHONY), $^) >$@
118+
cmd_its_cat = cat $(real-prereqs) >$@
119119

120120
$(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE
121121
$(call if_changed,its_cat)

arch/powerpc/boot/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ quiet_cmd_bootas = BOOTAS $@
218218
cmd_bootas = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $<
219219

220220
quiet_cmd_bootar = BOOTAR $@
221-
cmd_bootar = $(BOOTAR) $(BOOTARFLAGS) $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@
221+
cmd_bootar = $(BOOTAR) $(BOOTARFLAGS) $@.$$$$ $(real-prereqs); mv $@.$$$$ $@
222222

223223
$(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE
224224
$(call if_changed_dep,bootcc)

arch/s390/boot/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ $(obj)/compressed/vmlinux: $(obj)/startup.a FORCE
5858
$(Q)$(MAKE) $(build)=$(obj)/compressed $@
5959

6060
quiet_cmd_ar = AR $@
61-
cmd_ar = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(filter $(OBJECTS), $^)
61+
cmd_ar = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
6262

6363
$(obj)/startup.a: $(OBJECTS) FORCE
6464
$(call if_changed,ar)

arch/x86/realmode/rm/Makefile

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ REALMODE_OBJS = $(addprefix $(obj)/,$(realmode-y))
3737
sed-pasyms := -n -r -e 's/^([0-9a-fA-F]+) [ABCDGRSTVW] (.+)$$/pa_\2 = \2;/p'
3838

3939
quiet_cmd_pasyms = PASYMS $@
40-
cmd_pasyms = $(NM) $(filter-out FORCE,$^) | \
41-
sed $(sed-pasyms) | sort | uniq > $@
40+
cmd_pasyms = $(NM) $(real-prereqs) | sed $(sed-pasyms) | sort | uniq > $@
4241

4342
targets += pasyms.h
4443
$(obj)/pasyms.h: $(REALMODE_OBJS) FORCE

scripts/Kbuild.include

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ depfile = $(subst $(comma),_,$(dot-target).d)
2323
# filename of target with directory and extension stripped
2424
basetarget = $(basename $(notdir $@))
2525

26+
###
27+
# real prerequisites without phony targets
28+
real-prereqs = $(filter-out $(PHONY), $^)
29+
2630
###
2731
# Escape single quote for use in echo statements
2832
escsq = $(subst $(squote),'\$(squote)',$1)

scripts/Makefile.build

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -399,8 +399,7 @@ $(sort $(subdir-obj-y)): $(subdir-ym) ;
399399
ifdef builtin-target
400400

401401
quiet_cmd_ar_builtin = AR $@
402-
cmd_ar_builtin = rm -f $@; \
403-
$(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(filter $(real-obj-y), $^)
402+
cmd_ar_builtin = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
404403

405404
$(builtin-target): $(real-obj-y) FORCE
406405
$(call if_changed,ar_builtin)
@@ -428,7 +427,7 @@ ifdef lib-target
428427
quiet_cmd_link_l_target = AR $@
429428

430429
# lib target archives do get a symbol table and index
431-
cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(lib-y)
430+
cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(real-prereqs)
432431

433432
$(lib-target): $(lib-y) FORCE
434433
$(call if_changed,link_l_target)
@@ -453,6 +452,10 @@ targets += $(obj)/lib-ksyms.o
453452

454453
endif
455454

455+
# NOTE:
456+
# Do not replace $(filter %.o,^) with $(real-prereqs). When a single object
457+
# module is turned into a multi object module, $^ will contain header file
458+
# dependencies recorded in the .*.cmd file.
456459
quiet_cmd_link_multi-m = LD [M] $@
457460
cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) $(cmd_secanalysis)
458461

scripts/Makefile.lib

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -231,7 +231,7 @@ $(obj)/%: $(src)/%_shipped
231231
# ---------------------------------------------------------------------------
232232

233233
quiet_cmd_ld = LD $@
234-
cmd_ld = $(LD) $(ld_flags) $(filter-out FORCE,$^) -o $@
234+
cmd_ld = $(LD) $(ld_flags) $(real-prereqs) -o $@
235235

236236
# Objcopy
237237
# ---------------------------------------------------------------------------
@@ -243,7 +243,7 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@
243243
# ---------------------------------------------------------------------------
244244

245245
quiet_cmd_gzip = GZIP $@
246-
cmd_gzip = cat $(filter-out FORCE,$^) | gzip -n -f -9 > $@
246+
cmd_gzip = cat $(real-prereqs) | gzip -n -f -9 > $@
247247

248248
# DTC
249249
# ---------------------------------------------------------------------------
@@ -321,7 +321,7 @@ dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp)
321321
# append the size as a 32-bit littleendian number as gzip does.
322322
size_append = printf $(shell \
323323
dec_size=0; \
324-
for F in $(filter-out FORCE,$^); do \
324+
for F in $(real-prereqs); do \
325325
fsize=$$($(CONFIG_SHELL) $(srctree)/scripts/file-size.sh $$F); \
326326
dec_size=$$(expr $$dec_size + $$fsize); \
327327
done; \
@@ -335,19 +335,19 @@ printf "%08x\n" $$dec_size | \
335335
)
336336

337337
quiet_cmd_bzip2 = BZIP2 $@
338-
cmd_bzip2 = (cat $(filter-out FORCE,$^) | bzip2 -9 && $(size_append)) > $@
338+
cmd_bzip2 = (cat $(real-prereqs) | bzip2 -9 && $(size_append)) > $@
339339

340340
# Lzma
341341
# ---------------------------------------------------------------------------
342342

343343
quiet_cmd_lzma = LZMA $@
344-
cmd_lzma = (cat $(filter-out FORCE,$^) | lzma -9 && $(size_append)) > $@
344+
cmd_lzma = (cat $(real-prereqs) | lzma -9 && $(size_append)) > $@
345345

346346
quiet_cmd_lzo = LZO $@
347-
cmd_lzo = (cat $(filter-out FORCE,$^) | lzop -9 && $(size_append)) > $@
347+
cmd_lzo = (cat $(real-prereqs) | lzop -9 && $(size_append)) > $@
348348

349349
quiet_cmd_lz4 = LZ4 $@
350-
cmd_lz4 = (cat $(filter-out FORCE,$^) | lz4c -l -c1 stdin stdout && \
350+
cmd_lz4 = (cat $(real-prereqs) | lz4c -l -c1 stdin stdout && \
351351
$(size_append)) > $@
352352

353353
# U-Boot mkimage
@@ -390,11 +390,11 @@ quiet_cmd_uimage = UIMAGE $@
390390
# big dictionary would increase the memory usage too much in the multi-call
391391
# decompression mode. A BCJ filter isn't used either.
392392
quiet_cmd_xzkern = XZKERN $@
393-
cmd_xzkern = (cat $(filter-out FORCE,$^) | \
393+
cmd_xzkern = (cat $(real-prereqs) | \
394394
sh $(srctree)/scripts/xz_wrap.sh && $(size_append)) > $@
395395

396396
quiet_cmd_xzmisc = XZMISC $@
397-
cmd_xzmisc = (cat $(filter-out FORCE,$^) | \
397+
cmd_xzmisc = (cat $(real-prereqs) | \
398398
xz --check=crc32 --lzma2=dict=1MiB) > $@
399399

400400
# ASM offsets

scripts/Makefile.modpost

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ quiet_cmd_ld_ko_o = LD [M] $@
122122
cmd_ld_ko_o = \
123123
$(LD) -r $(KBUILD_LDFLAGS) \
124124
$(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \
125-
-o $@ $(filter-out FORCE,$^) ; \
125+
-o $@ $(real-prereqs) ; \
126126
$(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
127127

128128
$(modules): %.ko :%.o %.mod.o FORCE

0 commit comments

Comments
 (0)