Skip to content

Commit fe026a8

Browse files
npigginMichal Marek
authored andcommitted
kbuild: thin archives for multi-y targets
THIN_ARCHIVES builds archives for built-in.o targets, have it build multi-y targets as archives as well. This saves another ~15% of the size of intermediate artifacts in the build tree. After this patch, the linker is only used in final link, and special cases like vdsos. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michal Marek <mmarek@suse.com>
1 parent 7e2b37c commit fe026a8

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

scripts/Makefile.build

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -448,11 +448,18 @@ $($(subst $(obj)/,,$(@:.o=-objs))) \
448448
$($(subst $(obj)/,,$(@:.o=-y))) \
449449
$($(subst $(obj)/,,$(@:.o=-m)))), $^)
450450

451-
quiet_cmd_link_multi-y = LD $@
452-
cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis)
451+
cmd_link_multi-link = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) $(cmd_secanalysis)
452+
453+
ifdef CONFIG_THIN_ARCHIVES
454+
quiet_cmd_link_multi-y = AR $@
455+
cmd_link_multi-y = rm -f $@; $(AR) rcST$(KBUILD_ARFLAGS) $@ $(link_multi_deps)
456+
else
457+
quiet_cmd_link_multi-y = LD $@
458+
cmd_link_multi-y = $(cmd_link_multi-link)
459+
endif
453460

454461
quiet_cmd_link_multi-m = LD [M] $@
455-
cmd_link_multi-m = $(cmd_link_multi-y)
462+
cmd_link_multi-m = $(cmd_link_multi-link)
456463

457464
$(multi-used-y): FORCE
458465
$(call if_changed,link_multi-y)

0 commit comments

Comments
 (0)