diff --git a/scripts/Makefile.build b/scripts/Makefile.build index 1c2a3d057b40e94f62174c75470d9272fe70adb1..c6fa85d29c1c1bcfc7d069f48b0ba11669319c71 100644 --- a/scripts/Makefile.build +++ b/scripts/Makefile.build @@ -236,11 +236,20 @@ endif # # Rule to link composite objects # +# Composite objects are specified in kbuild makefile as follows: +# <composite-object>-objs := <list of .o files> +# or +# <composite-object>-y := <list of .o files> +link_multi_deps = \ +$(filter $(addprefix $(obj)/, \ +$($(subst $(obj)/,,$(@:.o=-objs))) \ +$($(subst $(obj)/,,$(@:.o=-y)))), $^) + quiet_cmd_link_multi-y = LD $@ -cmd_link_multi-y = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) -r -o $@ $(filter $(addprefix $(obj)/,$($(subst $(obj)/,,$(@:.o=-objs))) $($(subst $(obj)/,,$(@:.o=-y)))),$^) +cmd_link_multi-y = $(LD) $(ld_flags) -r -o $@ $(link_multi_deps) quiet_cmd_link_multi-m = LD [M] $@ -cmd_link_multi-m = $(LD) $(LDFLAGS) $(EXTRA_LDFLAGS) $(LDFLAGS_MODULE) -o $@ $(filter $(addprefix $(obj)/,$($(subst $(obj)/,,$(@:.o=-objs))) $($(subst $(obj)/,,$(@:.o=-y)))),$^) +cmd_link_multi-m = $(LD) $(ld_flags) $(LDFLAGS_MODULE) -o $@ $(link_multi_deps) # We would rather have a list of rules like # foo.o: $(foo-objs) diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib index 8a19e96881589793375635aaf96223650976d669..96eef1a89ebc6bdd990f422d6dae5684d8244286 100644 --- a/scripts/Makefile.lib +++ b/scripts/Makefile.lib @@ -128,6 +128,7 @@ hostc_flags = -Wp,-MD,$(depfile) $(HOSTCFLAGS) $(HOST_EXTRACFLAGS)\ $(HOSTCFLAGS_$(*F).o) hostcxx_flags = -Wp,-MD,$(depfile) $(HOSTCXXFLAGS) $(HOST_EXTRACXXFLAGS)\ $(HOSTCXXFLAGS_$(*F).o) +ld_flags = $(LDFLAGS) $(EXTRA_LDFLAGS) # Finds the multi-part object the current object will be linked into modname-multi = $(sort $(foreach m,$(multi-used),\