Currently, *.mod is created as a side-effect of obj-m. Split out *.mod as a dedicated build rule, which allows to unify the %.c -> %.o rule, and remove the single-used-m rule. This also makes the incremental build of allmodconfig faster because it saves $(NM) invocation when there is no change in the module.
Showing the changes to scripts (1 of 1 file). Show all
Unified · Split
| @@ -67,8 +67,10 @@ ifeq ($(CONFIG_MODULES)$(need-modorder),y1) · 66 unmodified lines | ||
| 67 | 67 | modorder-target := $(obj)/modules.order |
| 68 | 68 | endif |
| 69 | 69 | |
| 70 | +mod-targets := $(patsubst %.o, %.mod, $(obj-m)) | |
| 71 | + | |
| 70 | 72 | __build: $(if $(KBUILD_BUILTIN),$(builtin-target) $(lib-target) $(extra-y)) \ |
| 71 | − $(if $(KBUILD_MODULES),$(obj-m) $(modorder-target)) \ | |
| 73 | + $(if $(KBUILD_MODULES),$(obj-m) $(mod-targets) $(modorder-target)) \ | |
| 72 | 74 | $(subdir-ym) $(always) |
| 73 | 75 | @: |
| 74 | 76 | |
| @@ -261,7 +263,7 @@ endef · 186 unmodified lines | ||
| 261 | 263 | |
| 262 | 264 | # List module undefined symbols (or empty line if not enabled) |
| 263 | 265 | ifdef CONFIG_TRIM_UNUSED_KSYMS |
| 264 | −cmd_undef_syms = $(NM) $@ | sed -n 's/^ *U //p' | xargs echo | |
| 266 | +cmd_undef_syms = $(NM) $< | sed -n 's/^ *U //p' | xargs echo | |
| 265 | 267 | else |
| 266 | 268 | cmd_undef_syms = echo |
| 267 | 269 | endif |
| @@ -271,11 +273,15 @@ $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE · 3 unmodified lines | ||
| 271 | 273 | $(call cmd,force_checksrc) |
| 272 | 274 | $(call if_changed_rule,cc_o_c) |
| 273 | 275 | |
| 274 | −$(single-used-m): $(obj)/%.o: $(src)/%.c $(recordmcount_source) $(objtool_dep) FORCE | |
| 275 | − $(call cmd,force_checksrc) | |
| 276 | − $(call if_changed_rule,cc_o_c) | |
| 277 | − @{ echo $@; \ | |
| 278 | − $(cmd_undef_syms); } > $(patsubst %.o,%.mod,$@) | |
| 276 | +cmd_mod = { \ | |
| 277 | + echo $(if $($*-objs)$($*-y)$($*-m), $(addprefix $(obj)/, $($*-objs) $($*-y) $($*-m)), $(@:.mod=.o)); \ | |
| 278 | + $(cmd_undef_syms); \ | |
| 279 | + } > $@ | |
| 280 | + | |
| 281 | +$(obj)/%.mod: $(obj)/%.o FORCE | |
| 282 | + $(call if_changed,mod) | |
| 283 | + | |
| 284 | +targets += $(mod-targets) | |
| 279 | 285 | |
| 280 | 286 | quiet_cmd_cc_lst_c = MKLST $@ |
| 281 | 287 | cmd_cc_lst_c = $(CC) $(c_flags) -g -c -o $*.o $< && \ |
| @@ -456,8 +462,6 @@ quiet_cmd_link_multi-m = LD [M] $@ · 174 unmodified lines | ||
| 456 | 462 | |
| 457 | 463 | $(multi-used-m): FORCE |
| 458 | 464 | $(call if_changed,link_multi-m) |
| 459 | − @{ echo $(filter %.o,$^); \ | |
| 460 | − $(cmd_undef_syms); } > $(patsubst %.o,%.mod,$@) | |
| 461 | 465 | $(call multi_depend, $(multi-used-m), .o, -objs -y -m) |
| 462 | 466 | |
| 463 | 467 | targets += $(multi-used-m) |