Re: M= modules build w/ objects in different directory

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Mar 21, 2024 at 12:01:23AM +0900, Masahiro Yamada wrote:
> On Wed, Mar 20, 2024 at 8:20 AM Daniel Walker (danielwa)
> <danielwa@xxxxxxxxx> wrote:
> >
> >
> > Masahiro,
> >
> > I found this commit,
> >
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=23a0cb8e3225122496bfa79172005c587c2d64bf
> >
> > It had this note,
> >
> > [masahiro: I do not think "M=$(OUT_DIR) src=$(PWD)" is the official way,
> > but this patch is a nice clean up anyway.]
> >
> > Is there an official way or recommended way to build objects in a directory
> > outside the external modules source directory and outside the original kernel
> > source directory ?
> >
> > Daniel
> 
> 
> There is no official way.
> One known tip is to use a relative path for M=.
> 
> For example, the relative path from your kernel source
> to your external module directory is  ../path/to/module
> 
>  $ make O=path/to/output  M=../path/to/module
> 
> 
> The module objects will be output into
> path/to/output/../path/to/module/.

It seems that this does place objects into the output directory, but there is an
issue where the build system expects include files to exist inside the output
directory as well. For example if the modules includes linux/module.h this file
exists and is found, but module.h also includes asm/rwonce.h which is not found.
I think it's located in include/asm-generic/rwonce.h . I think these asm location
are linked or added as special -I additions during the build but using O=
results in these asm directories not appearing to exist correctly.

Daniel




[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux