diff options
| author | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-01-17 05:02:43 -0500 |
|---|---|---|
| committer | Masahiro Yamada <yamada.masahiro@socionext.com> | 2019-01-27 19:11:17 -0500 |
| commit | afa974b771281fd89e8fdcb71152152f17fb8303 (patch) | |
| tree | b6a3de04148c2207d3cd094b70820160e24d0420 /scripts | |
| parent | 5d680056cb6de18f0221e321ee51d60ccd700781 (diff) | |
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>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/Kbuild.include | 4 | ||||
| -rw-r--r-- | scripts/Makefile.build | 9 | ||||
| -rw-r--r-- | scripts/Makefile.lib | 18 | ||||
| -rw-r--r-- | scripts/Makefile.modpost | 2 |
4 files changed, 20 insertions, 13 deletions
diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include index 30816037036e..d93250b33bf6 100644 --- a/scripts/Kbuild.include +++ b/scripts/Kbuild.include | |||
| @@ -24,6 +24,10 @@ depfile = $(subst $(comma),_,$(dot-target).d) | |||
| 24 | basetarget = $(basename $(notdir $@)) | 24 | basetarget = $(basename $(notdir $@)) |
| 25 | 25 | ||
| 26 | ### | 26 | ### |
| 27 | # real prerequisites without phony targets | ||
| 28 | real-prereqs = $(filter-out $(PHONY), $^) | ||
| 29 | |||
| 30 | ### | ||
| 27 | # Escape single quote for use in echo statements | 31 | # Escape single quote for use in echo statements |
| 28 | escsq = $(subst $(squote),'\$(squote)',$1) | 32 | escsq = $(subst $(squote),'\$(squote)',$1) |
| 29 | 33 | ||
diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 681ab58a1548..9800178fdcd2 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build | |||
| @@ -399,8 +399,7 @@ $(sort $(subdir-obj-y)): $(subdir-ym) ; | |||
| 399 | ifdef builtin-target | 399 | ifdef builtin-target |
| 400 | 400 | ||
| 401 | quiet_cmd_ar_builtin = AR $@ | 401 | quiet_cmd_ar_builtin = AR $@ |
| 402 | cmd_ar_builtin = rm -f $@; \ | 402 | cmd_ar_builtin = rm -f $@; $(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(real-prereqs) |
| 403 | $(AR) rcSTP$(KBUILD_ARFLAGS) $@ $(filter $(real-obj-y), $^) | ||
| 404 | 403 | ||
| 405 | $(builtin-target): $(real-obj-y) FORCE | 404 | $(builtin-target): $(real-obj-y) FORCE |
| 406 | $(call if_changed,ar_builtin) | 405 | $(call if_changed,ar_builtin) |
| @@ -428,7 +427,7 @@ ifdef lib-target | |||
| 428 | quiet_cmd_link_l_target = AR $@ | 427 | quiet_cmd_link_l_target = AR $@ |
| 429 | 428 | ||
| 430 | # lib target archives do get a symbol table and index | 429 | # 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) |
| 432 | 431 | ||
| 433 | $(lib-target): $(lib-y) FORCE | 432 | $(lib-target): $(lib-y) FORCE |
| 434 | $(call if_changed,link_l_target) | 433 | $(call if_changed,link_l_target) |
| @@ -453,6 +452,10 @@ targets += $(obj)/lib-ksyms.o | |||
| 453 | 452 | ||
| 454 | endif | 453 | endif |
| 455 | 454 | ||
| 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. | ||
| 456 | quiet_cmd_link_multi-m = LD [M] $@ | 459 | quiet_cmd_link_multi-m = LD [M] $@ |
| 457 | cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) $(cmd_secanalysis) | 460 | cmd_link_multi-m = $(LD) $(ld_flags) -r -o $@ $(filter %.o,$^) $(cmd_secanalysis) |
| 458 | 461 | ||
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index ebaa348c9981..c6fc295e0c48 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib | |||
| @@ -231,7 +231,7 @@ $(obj)/%: $(src)/%_shipped | |||
| 231 | # --------------------------------------------------------------------------- | 231 | # --------------------------------------------------------------------------- |
| 232 | 232 | ||
| 233 | quiet_cmd_ld = LD $@ | 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 | # Objcopy | 236 | # Objcopy |
| 237 | # --------------------------------------------------------------------------- | 237 | # --------------------------------------------------------------------------- |
| @@ -243,7 +243,7 @@ cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ | |||
| 243 | # --------------------------------------------------------------------------- | 243 | # --------------------------------------------------------------------------- |
| 244 | 244 | ||
| 245 | quiet_cmd_gzip = GZIP $@ | 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 | # DTC | 248 | # DTC |
| 249 | # --------------------------------------------------------------------------- | 249 | # --------------------------------------------------------------------------- |
| @@ -321,7 +321,7 @@ dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) | |||
| 321 | # append the size as a 32-bit littleendian number as gzip does. | 321 | # append the size as a 32-bit littleendian number as gzip does. |
| 322 | size_append = printf $(shell \ | 322 | size_append = printf $(shell \ |
| 323 | dec_size=0; \ | 323 | dec_size=0; \ |
| 324 | for F in $(filter-out FORCE,$^); do \ | 324 | for F in $(real-prereqs); do \ |
| 325 | fsize=$$($(CONFIG_SHELL) $(srctree)/scripts/file-size.sh $$F); \ | 325 | fsize=$$($(CONFIG_SHELL) $(srctree)/scripts/file-size.sh $$F); \ |
| 326 | dec_size=$$(expr $$dec_size + $$fsize); \ | 326 | dec_size=$$(expr $$dec_size + $$fsize); \ |
| 327 | done; \ | 327 | done; \ |
| @@ -335,19 +335,19 @@ printf "%08x\n" $$dec_size | \ | |||
| 335 | ) | 335 | ) |
| 336 | 336 | ||
| 337 | quiet_cmd_bzip2 = BZIP2 $@ | 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 | # Lzma | 340 | # Lzma |
| 341 | # --------------------------------------------------------------------------- | 341 | # --------------------------------------------------------------------------- |
| 342 | 342 | ||
| 343 | quiet_cmd_lzma = LZMA $@ | 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 | quiet_cmd_lzo = LZO $@ | 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 | quiet_cmd_lz4 = LZ4 $@ | 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 | $(size_append)) > $@ | 351 | $(size_append)) > $@ |
| 352 | 352 | ||
| 353 | # U-Boot mkimage | 353 | # U-Boot mkimage |
| @@ -390,11 +390,11 @@ quiet_cmd_uimage = UIMAGE $@ | |||
| 390 | # big dictionary would increase the memory usage too much in the multi-call | 390 | # big dictionary would increase the memory usage too much in the multi-call |
| 391 | # decompression mode. A BCJ filter isn't used either. | 391 | # decompression mode. A BCJ filter isn't used either. |
| 392 | quiet_cmd_xzkern = XZKERN $@ | 392 | quiet_cmd_xzkern = XZKERN $@ |
| 393 | cmd_xzkern = (cat $(filter-out FORCE,$^) | \ | 393 | cmd_xzkern = (cat $(real-prereqs) | \ |
| 394 | sh $(srctree)/scripts/xz_wrap.sh && $(size_append)) > $@ | 394 | sh $(srctree)/scripts/xz_wrap.sh && $(size_append)) > $@ |
| 395 | 395 | ||
| 396 | quiet_cmd_xzmisc = XZMISC $@ | 396 | quiet_cmd_xzmisc = XZMISC $@ |
| 397 | cmd_xzmisc = (cat $(filter-out FORCE,$^) | \ | 397 | cmd_xzmisc = (cat $(real-prereqs) | \ |
| 398 | xz --check=crc32 --lzma2=dict=1MiB) > $@ | 398 | xz --check=crc32 --lzma2=dict=1MiB) > $@ |
| 399 | 399 | ||
| 400 | # ASM offsets | 400 | # ASM offsets |
diff --git a/scripts/Makefile.modpost b/scripts/Makefile.modpost index 7d4af0d0accb..c0b7f526f95e 100644 --- a/scripts/Makefile.modpost +++ b/scripts/Makefile.modpost | |||
| @@ -122,7 +122,7 @@ quiet_cmd_ld_ko_o = LD [M] $@ | |||
| 122 | cmd_ld_ko_o = \ | 122 | cmd_ld_ko_o = \ |
| 123 | $(LD) -r $(KBUILD_LDFLAGS) \ | 123 | $(LD) -r $(KBUILD_LDFLAGS) \ |
| 124 | $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \ | 124 | $(KBUILD_LDFLAGS_MODULE) $(LDFLAGS_MODULE) \ |
| 125 | -o $@ $(filter-out FORCE,$^) ; \ | 125 | -o $@ $(real-prereqs) ; \ |
| 126 | $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) | 126 | $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true) |
| 127 | 127 | ||
| 128 | $(modules): %.ko :%.o %.mod.o FORCE | 128 | $(modules): %.ko :%.o %.mod.o FORCE |
