There has been a long-standing request to support building external modules in a separate build directory. In v2, 05/11 introduces a 'srcroot' variable. (I am not sure if this is the best name, though) $(srcroot) points to the top of the source directory. - When M= is not given, it is the top of the kernel source - When M= is given, it is the top of the external module source Masahiro Yamada (11): kbuild: replace two $(abs_objtree) with $(CURDIR) in top Makefile kbuild: add $(objtree)/ prefix to some in-kernel build artifacts kbuild: rename abs_objtree to abs_output kbuild: use 'output' variable to create the output directory kbuild: change working directory to external module directory with M= kbuild: remove extmod_prefix, MODORDER, MODULES_NSDEPS variables kbuild: support building external modules in a separate build directory kbuild: support -fmacro-prefix-map for external modules kbuild: use absolute path in the generated wrapper Makefile kbuild: make wrapper Makefile more convenient for external modules kbuild: allow to start building external modules in any directory Documentation/dev-tools/coccinelle.rst | 20 +-- Documentation/kbuild/kbuild.rst | 8 +- Documentation/kbuild/makefiles.rst | 14 ++ Documentation/kbuild/modules.rst | 29 ++++- Makefile | 173 ++++++++++++++++--------- arch/arm/Makefile | 4 +- arch/arm64/Makefile | 2 +- arch/powerpc/Makefile | 4 +- arch/riscv/Makefile | 2 +- rust/Makefile | 4 +- scripts/Kbuild.include | 2 +- scripts/Makefile.build | 6 +- scripts/Makefile.clean | 2 +- scripts/Makefile.compiler | 2 +- scripts/Makefile.host | 8 +- scripts/Makefile.lib | 2 - scripts/Makefile.modfinal | 20 +-- scripts/Makefile.modinst | 8 +- scripts/Makefile.modpost | 24 ++-- scripts/coccicheck | 6 +- scripts/depmod.sh | 4 +- scripts/nsdeps | 10 +- scripts/package/install-extmod-build | 7 + 23 files changed, 220 insertions(+), 141 deletions(-) -- 2.43.0