Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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
69ea912fda74 ("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>

+25 -19
+1 -1
Documentation/devicetree/bindings/Makefile
··· 15 15 extra-y += $(DT_TMP_SCHEMA) 16 16 17 17 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) 19 19 20 20 DT_DOCS = $(shell cd $(srctree)/$(src) && find * -name '*.yaml') 21 21 DT_SCHEMA_FILES ?= $(addprefix $(src)/,$(DT_DOCS))
+1 -1
arch/mips/boot/Makefile
··· 115 115 targets += vmlinux.its.S 116 116 117 117 quiet_cmd_its_cat = CAT $@ 118 - cmd_its_cat = cat $(filter-out $(PHONY), $^) >$@ 118 + cmd_its_cat = cat $(real-prereqs) >$@ 119 119 120 120 $(obj)/vmlinux.its.S: $(addprefix $(srctree)/arch/mips/$(PLATFORM)/,$(ITS_INPUTS)) FORCE 121 121 $(call if_changed,its_cat)
+1 -1
arch/powerpc/boot/Makefile
··· 218 218 cmd_bootas = $(BOOTCC) -Wp,-MD,$(depfile) $(BOOTAFLAGS) -c -o $@ $< 219 219 220 220 quiet_cmd_bootar = BOOTAR $@ 221 - cmd_bootar = $(BOOTAR) $(BOOTARFLAGS) $@.$$$$ $(filter-out FORCE,$^); mv $@.$$$$ $@ 221 + cmd_bootar = $(BOOTAR) $(BOOTARFLAGS) $@.$$$$ $(real-prereqs); mv $@.$$$$ $@ 222 222 223 223 $(obj-libfdt): $(obj)/%.o: $(srctree)/scripts/dtc/libfdt/%.c FORCE 224 224 $(call if_changed_dep,bootcc)
+1 -1
arch/s390/boot/Makefile
··· 58 58 $(Q)$(MAKE) $(build)=$(obj)/compressed $@ 59 59 60 60 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) 62 62 63 63 $(obj)/startup.a: $(OBJECTS) FORCE 64 64 $(call if_changed,ar)
+1 -2
arch/x86/realmode/rm/Makefile
··· 37 37 sed-pasyms := -n -r -e 's/^([0-9a-fA-F]+) [ABCDGRSTVW] (.+)$$/pa_\2 = \2;/p' 38 38 39 39 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 > $@ 42 41 43 42 targets += pasyms.h 44 43 $(obj)/pasyms.h: $(REALMODE_OBJS) FORCE
+4
scripts/Kbuild.include
··· 24 24 basetarget = $(basename $(notdir $@)) 25 25 26 26 ### 27 + # real prerequisites without phony targets 28 + real-prereqs = $(filter-out $(PHONY), $^) 29 + 30 + ### 27 31 # Escape single quote for use in echo statements 28 32 escsq = $(subst $(squote),'\$(squote)',$1) 29 33
+6 -3
scripts/Makefile.build
··· 399 399 ifdef builtin-target 400 400 401 401 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) 404 403 405 404 $(builtin-target): $(real-obj-y) FORCE 406 405 $(call if_changed,ar_builtin) ··· 427 428 quiet_cmd_link_l_target = AR $@ 428 429 429 430 # lib target archives do get a symbol table and index 430 - cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(lib-y) 431 + cmd_link_l_target = rm -f $@; $(AR) rcsTP$(KBUILD_ARFLAGS) $@ $(real-prereqs) 431 432 432 433 $(lib-target): $(lib-y) FORCE 433 434 $(call if_changed,link_l_target) ··· 452 453 453 454 endif 454 455 456 + # NOTE: 457 + # Do not replace $(filter %.o,^) with $(real-prereqs). When a single object 458 + # module is turned into a multi object module, $^ will contain header file 459 + # dependencies recorded in the .*.cmd file. 455 460 quiet_cmd_link_multi-m = LD [M] $@ 456 461 cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) $(cmd_secanalysis) 457 462
+9 -9
scripts/Makefile.lib
··· 231 231 # --------------------------------------------------------------------------- 232 232 233 233 quiet_cmd_ld = LD $@ 234 - cmd_ld = $(LD) $(ld_flags) $(filter-out FORCE,$^) -o $@ 234 + cmd_ld = $(LD) $(ld_flags) $(real-prereqs) -o $@ 235 235 236 236 # Objcopy 237 237 # --------------------------------------------------------------------------- ··· 243 243 # --------------------------------------------------------------------------- 244 244 245 245 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 > $@ 247 247 248 248 # DTC 249 249 # --------------------------------------------------------------------------- ··· 321 321 # append the size as a 32-bit littleendian number as gzip does. 322 322 size_append = printf $(shell \ 323 323 dec_size=0; \ 324 - for F in $(filter-out FORCE,$^); do \ 324 + for F in $(real-prereqs); do \ 325 325 fsize=$$($(CONFIG_SHELL) $(srctree)/scripts/file-size.sh $$F); \ 326 326 dec_size=$$(expr $$dec_size + $$fsize); \ 327 327 done; \ ··· 335 335 ) 336 336 337 337 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)) > $@ 339 339 340 340 # Lzma 341 341 # --------------------------------------------------------------------------- 342 342 343 343 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)) > $@ 345 345 346 346 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)) > $@ 348 348 349 349 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 && \ 351 351 $(size_append)) > $@ 352 352 353 353 # U-Boot mkimage ··· 390 390 # big dictionary would increase the memory usage too much in the multi-call 391 391 # decompression mode. A BCJ filter isn't used either. 392 392 quiet_cmd_xzkern = XZKERN $@ 393 - cmd_xzkern = (cat $(filter-out FORCE,$^) | \ 393 + cmd_xzkern = (cat $(real-prereqs) | \ 394 394 sh $(srctree)/scripts/xz_wrap.sh && $(size_append)) > $@ 395 395 396 396 quiet_cmd_xzmisc = XZMISC $@ 397 - cmd_xzmisc = (cat $(filter-out FORCE,$^) | \ 397 + cmd_xzmisc = (cat $(real-prereqs) | \ 398 398 xz --check=crc32 --lzma2=dict=1MiB) > $@ 399 399 400 400 # ASM offsets
+1 -1
scripts/Makefile.modpost
··· 122 122 cmd_ld_ko_o = \ 123 123 $(LD) -r $(KBUILD_LDFLAGS) \ 124 124 $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \ 125 - -o $@ $(filter-out FORCE,$^) ; \ 125 + -o $@ $(real-prereqs) ; \ 126 126 $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) 127 127 128 128 $(modules): %.ko :%.o %.mod.o FORCE