can't build modules after clean for powerpc
According to the Makefile comments and Documentation/kconfig/makefile.txt, make clean should leave enough intact to build modules with:
###
# Cleaning is done on three levels.
# make clean Delete most generated files # Leave enough to build external modules
The following line in the arch/powerpc/Makefile prevents that from working:
KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
External module compilation fails to link as it can't find arch/powerpc/lib/crtsavres.o.
It appears from the make logs that crtsavres.o is linked in to built-in.o, and thus vmlinux. If that is the case, it doesn't seem like crtsavres.o should need to be singled out. What am I missing here?
If I comment it out:
#KBUILD_LDFLAGS_MODULE += arch/powerpc/lib/crtsavres.o
my example module builds successfully.
If it is necessary, then we need a means to instruct the top level makefile to not delete it during "clean". Is there such a directive?
KBUILD_CLEAN_EXCLUDE_MODULES or something?
Thanks,
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel
Quoted 22 lines · Darren Hart
According to the
Makefilecomments andDocumentation/kconfig/makefile.txt, make clean should leave enough intact to build modules with:###
# Cleaning is done on three levels.# make clean Delete most generated files # Leave enough to build external modulesThe following line in the
arch/powerpc/Makefileprevents that from working:
KBUILD_LDFLAGS_MODULE+=arch/powerpc/lib/crtsavres.oExternal module compilation fails to link as it can't find
arch/powerpc/lib/crtsavres.o.It appears from the make logs that crtsavres.o is linked in to built-in.o, and thus vmlinux. If that is the case, it doesn't seem like crtsavres.o should need to be singled out. What am I missing here?
If I comment it out:
Quoted 8 lines
#KBUILD_LDFLAGS_MODULE +=
arch/powerpc/lib/crtsavres.omy example module builds successfully.
If it is necessary, then we need a means to instruct the top level makefile to not delete it during "clean". Is there such a directive?
KBUILD_CLEAN_EXCLUDE_MODULESor something?
Hi Darren.
Try this small patch. Untested and cut'n'pasted...
Sam
arch/powerpc/lib/Makefile +3 -0
@@ -30,3 +30,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o obj-y += code-patching.o obj-y += feature-fixups.o obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o + +# crtsavres is used by modules - so we need it after "make clean" +no-clean-files := crtsavres.o
Quoted 14 lines
Thanks,
Signature · 8 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Quoted 30 lines · Sam Ravnborg
Quoted 29 lines · Darren Hart
According to the
Makefilecomments andDocumentation/kconfig/makefile.txt, make clean should leave enough intact to build modules with:###
# Cleaning is done on three levels.# make clean Delete most generated files # Leave enough to build external modulesThe following line in the
arch/powerpc/Makefileprevents that from working:
KBUILD_LDFLAGS_MODULE+=arch/powerpc/lib/crtsavres.oExternal module compilation fails to link as it can't find
arch/powerpc/lib/crtsavres.o.It appears from the make logs that crtsavres.o is linked in to built-in.o, and thus vmlinux. If that is the case, it doesn't seem like crtsavres.o should need to be singled out. What am I missing here?
If I comment it out:
#KBUILD_LDFLAGS_MODULE +=
arch/powerpc/lib/crtsavres.omy example module builds successfully.
If it is necessary, then we need a means to instruct the top level makefile to not delete it during "clean". Is there such a directive?
Quoted 7 lines
Quoted 1 line
KBUILD_CLEAN_EXCLUDE_MODULESor something?Hi Darren.
Try this small patch. Untested and cut'n'pasted...Sam
Hi Sam,
arch/powerpc/lib/Makefile obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o · line 35
Quoted 12 lines
arch/powerpc/lib/Makefile +3
-0@@ -30,3 +30,6 @@ obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o obj-y += code-patching.o obj-y += feature-fixups.o obj-$(CONFIG_FTR_FIXUP_SELFTEST) += feature-fixups-test.o + +# crtsavres is used by modules - so we need it after "make clean" +no-clean-files := crtsavres.o
This doesn't cut it unfortunately:
linux-powerpc-poky-linux-ld: cannot find arch/powerpc/lib/crtsavres.o:
No such file or directory
The .o file is purged by the top level Makefile here:
clean: $(clean-dirs)
$(call cmd,rmdirs) $(call cmd,rmfiles) @find $(if $(KBUILD_EXTMOD), $(KBUILD_EXTMOD), .) $(RCS_FIND_IGNORE) \ \( -name '*.[oas]' -o -name '*.ko' -o -name '.*.cmd' \ -o -name '.*.d' -o -name '.*.tmp' -o -name '*.mod.c' \ -o -name '*.symtypes' -o -name 'modules.order' \ -o -name modules.builtin -o -name '.tmp_*.o.*' \ -o -name '*.gcno' \) -type f -print | xargs rm -f
Which is why I was thinking of something similar to RCS_FIND_IGNORE that we could use, like KBUILD_FIND_IGNORE_MODULE.
--
Darren
Quoted 15 lines
Quoted 15 lines
Thanks,
Signature · 8 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Signature · 3 lines
Darren Hart Intel Open Source Technology Center Yocto Project - Linux Kernel