Message ID | 20240917141725.466514-23-masahiroy@kernel.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | kbuild: support building external modules in a separate build directory | expand |
On Tue, Sep 17, 2024 at 11:16:50PM +0900, Masahiro Yamada wrote: > When Kbuild starts building in a separate output directory, it generates > a wrapper Makefile, allowing you to invoke 'make' from the output > directory. > > This commit makes it more convenient, so you can invoke 'make' without > M= or MO=. > > First, you need to build external modules in a separate directory: > > $ make M=/path/to/module/source/dir MO=/path/to/module/build/dir > > Once the wrapper Makefile is generated in /path/to/module/build/dir, > you can proceed as follows: > > $ cd /path/to/module/build/dir > $ make > > Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> > --- > > Makefile | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/Makefile b/Makefile > index 9f0ba07e8f25..81603a50c757 100644 > --- a/Makefile > +++ b/Makefile > @@ -641,10 +641,20 @@ ifdef building_out_of_srctree > # At the same time when output Makefile generated, generate .gitignore to > # ignore whole output directory > > +ifdef KBUILD_EXTMOD > +print_env_for_makefile = \ > + echo "export KBUILD_OUTPUT = $(objtree)"; \ > + echo "export KBUILD_EXTMOD = $(_vpath)" ; \ > + echo "export KBUILD_EXTMOD_OUTPUT = $(CURDIR)" > +else > +print_env_for_makefile = \ > + echo "export KBUILD_OUTPUT = $(CURDIR)" > +endif > + > quiet_cmd_makefile = GEN Makefile > cmd_makefile = { \ > echo "\# Automatically generated by $(abs_srctree)/Makefile: don't edit"; \ > - echo "export KBUILD_OUTPUT = $(CURDIR)"; \ > + $(print_env_for_makefile); \ > echo "include $(abs_srctree)/Makefile"; \ > } > Makefile > > -- > 2.43.0 Nice idea, thanks! Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>
diff --git a/Makefile b/Makefile index 9f0ba07e8f25..81603a50c757 100644 --- a/Makefile +++ b/Makefile @@ -641,10 +641,20 @@ ifdef building_out_of_srctree # At the same time when output Makefile generated, generate .gitignore to # ignore whole output directory +ifdef KBUILD_EXTMOD +print_env_for_makefile = \ + echo "export KBUILD_OUTPUT = $(objtree)"; \ + echo "export KBUILD_EXTMOD = $(_vpath)" ; \ + echo "export KBUILD_EXTMOD_OUTPUT = $(CURDIR)" +else +print_env_for_makefile = \ + echo "export KBUILD_OUTPUT = $(CURDIR)" +endif + quiet_cmd_makefile = GEN Makefile cmd_makefile = { \ echo "\# Automatically generated by $(abs_srctree)/Makefile: don't edit"; \ - echo "export KBUILD_OUTPUT = $(CURDIR)"; \ + $(print_env_for_makefile); \ echo "include $(abs_srctree)/Makefile"; \ } > Makefile
When Kbuild starts building in a separate output directory, it generates a wrapper Makefile, allowing you to invoke 'make' from the output directory. This commit makes it more convenient, so you can invoke 'make' without M= or MO=. First, you need to build external modules in a separate directory: $ make M=/path/to/module/source/dir MO=/path/to/module/build/dir Once the wrapper Makefile is generated in /path/to/module/build/dir, you can proceed as follows: $ cd /path/to/module/build/dir $ make Signed-off-by: Masahiro Yamada <masahiroy@kernel.org> --- Makefile | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)