Fix linking modules against crtsavres.o Previously we got CC drivers/char/hw_random/rng-core.mod.o LD [M] drivers/char/hw_random/rng-core.ko /there/src/buildroot.git.ppc/build_powerpc_nofpu/staging_dir/usr/bin/powerpc-linux-uclibc-ld: arch/powerpc/lib/crtsavres.o: No such file: No such file or directory * Makefile (LDFLAGS_MODULE_PREREQ): New variable to hold prerequisite files for modules. * arch/powerpc/Makefile: add crtsavres.o to LDFLAGS_MODULE_PREREQ. * scripts/Makefile.modpost (cmd_as_o_S): Copy from Makefile.build. (cmd_ld_ko_o): Also link LDFLAGS_MODULE_PREREQ. Provide rule to build objects from assembler. Signed-off-by: Bernhard Reutner-Fischer diff -rup ../../x/linux-2.6.26.5.old/arch/powerpc/Makefile linux-2.6.26.5/arch/powerpc/Makefile --- ../../x/linux-2.6.26.5.old/arch/powerpc/Makefile 2008-09-08 19:40:20.000000000 +0200 +++ linux-2.6.26.5/arch/powerpc/Makefile 2008-10-07 14:28:08.000000000 +0200 @@ -97,7 +97,7 @@ else KBUILD_CFLAGS += $(call cc-option,-mtune=power4) endif else -LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o +LDFLAGS_MODULE_PREREQ += arch/powerpc/lib/crtsavres.o endif ifeq ($(CONFIG_TUNE_CELL),y) diff -rup ../../x/linux-2.6.26.5.old/Makefile linux-2.6.26.5/Makefile --- ../../x/linux-2.6.26.5.old/Makefile 2008-09-08 19:40:20.000000000 +0200 +++ linux-2.6.26.5/Makefile 2008-10-07 14:15:59.000000000 +0200 @@ -318,6 +318,7 @@ MODFLAGS = -DMODULE CFLAGS_MODULE = $(MODFLAGS) AFLAGS_MODULE = $(MODFLAGS) LDFLAGS_MODULE = +LDFLAGS_MODULE_PREREQ = CFLAGS_KERNEL = AFLAGS_KERNEL = @@ -342,7 +343,7 @@ KERNELVERSION = $(VERSION).$(PATCHLEVEL) export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE -export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS +export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE LDFLAGS_MODULE_PREREQ CHECK CHECKFLAGS export KBUILD_CPPFLAGS NOSTDINC_FLAGS LINUXINCLUDE OBJCOPYFLAGS LDFLAGS export KBUILD_CFLAGS CFLAGS_KERNEL CFLAGS_MODULE diff -rup ../../x/linux-2.6.26.5.old/scripts/Makefile.modpost linux-2.6.26.5/scripts/Makefile.modpost --- ../../x/linux-2.6.26.5.old/scripts/Makefile.modpost 2008-09-08 19:40:20.000000000 +0200 +++ linux-2.6.26.5/scripts/Makefile.modpost 2008-10-07 14:24:34.000000000 +0200 @@ -122,14 +122,21 @@ quiet_cmd_cc_o_c = CC $@ cmd_cc_o_c = $(CC) $(c_flags) $(CFLAGS_MODULE) \ -c -o $@ $< -$(modules:.ko=.mod.o): %.mod.o: %.mod.c FORCE +quiet_cmd_as_o_S = AS $(quiet_modtag) $@ +cmd_as_o_S = $(CC) $(a_flags) $(AFLAGS_MODULE) -c -o $@ $< + +$(LDFLAGS_MODULE_PREREQ): %.o: %.S FORCE + $(call if_changed_dep,as_o_S) + +$(modules:.ko=.mod.o): %.mod.o: %.mod.c $(LDFLAGS_MODULE_PREREQ) FORCE $(call if_changed_dep,cc_o_c) targets += $(modules:.ko=.mod.o) # Step 6), final link of the modules quiet_cmd_ld_ko_o = LD [M] $@ - cmd_ld_ko_o = $(LD) -r $(LDFLAGS) $(LDFLAGS_MODULE) -o $@ \ + cmd_ld_ko_o = $(LD) -r $(LDFLAGS) $(LDFLAGS_MODULE_PREREQ) \ + $(LDFLAGS_MODULE) -o $@ \ $(filter-out FORCE,$^) $(modules): %.ko :%.o %.mod.o FORCE