2001-10-11 16:35:31

by Tom Rini

[permalink] [raw]
Subject: Export objs from an external Makefile?

Hey all. How do you do the 'export-objs' bits in a kernel module that's
outside of the kernel? Thanks..

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/


2001-10-11 23:41:56

by Keith Owens

[permalink] [raw]
Subject: Re: Export objs from an external Makefile?

On Thu, 11 Oct 2001 09:35:32 -0700,
Tom Rini <[email protected]> wrote:
>Hey all. How do you do the 'export-objs' bits in a kernel module that's
>outside of the kernel? Thanks..

Compile with -DMODULE -DEXPORT_SYMTAB. If the kernel has modversions,
add -DMODVERSIONS -include $(HPATH)/linux/modversions.h. The safest
way is to compile a module in the kernel that exports the objects then
copy the command, substituting the file names.

2001-10-11 23:58:08

by Tom Rini

[permalink] [raw]
Subject: Re: Export objs from an external Makefile?

On Fri, Oct 12, 2001 at 09:42:05AM +1000, Keith Owens wrote:
> On Thu, 11 Oct 2001 09:35:32 -0700,
> Tom Rini <[email protected]> wrote:
> >Hey all. How do you do the 'export-objs' bits in a kernel module that's
> >outside of the kernel? Thanks..
>
> Compile with -DMODULE -DEXPORT_SYMTAB. If the kernel has modversions,
> add -DMODVERSIONS -include $(HPATH)/linux/modversions.h. The safest
> way is to compile a module in the kernel that exports the objects then
> copy the command, substituting the file names.

I think I managed to get things right. I added -DEXPORT_SYMTAB to the
default flags and added:
CFLAGS_EXTRA += $(shell if [ -f $(KERNEL_HEADERS)/linux/modversions.h ]; \
then echo -include \
$(KERNEL_HEADERS)/linux/modversions.h; fi)

Thanks!

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/

2001-10-12 00:14:38

by Keith Owens

[permalink] [raw]
Subject: Re: Export objs from an external Makefile?

On Thu, 11 Oct 2001 16:57:34 -0700,
Tom Rini <[email protected]> wrote:
>On Fri, Oct 12, 2001 at 09:42:05AM +1000, Keith Owens wrote:
>> On Thu, 11 Oct 2001 09:35:32 -0700,
>> Tom Rini <[email protected]> wrote:
>> >Hey all. How do you do the 'export-objs' bits in a kernel module that's
>> >outside of the kernel? Thanks..
>>
>> Compile with -DMODULE -DEXPORT_SYMTAB. If the kernel has modversions,
>> add -DMODVERSIONS -include $(HPATH)/linux/modversions.h. The safest
>> way is to compile a module in the kernel that exports the objects then
>> copy the command, substituting the file names.
>
>I think I managed to get things right. I added -DEXPORT_SYMTAB to the
>default flags and added:
>CFLAGS_EXTRA += $(shell if [ -f $(KERNEL_HEADERS)/linux/modversions.h ]; \
> then echo -include \
> $(KERNEL_HEADERS)/linux/modversions.h; fi)

You need -DMODVERSIONS as well.

Testing for the presence of modversions.h will not work in kbuild 2.5,
that file is always created with error messages to catch people who
include it "by hand". OTOH, kbuild 2.5 has support for compiling
outside the standard kernel tree so who cares :)?

2001-10-12 00:23:40

by Tom Rini

[permalink] [raw]
Subject: Re: Export objs from an external Makefile?

On Fri, Oct 12, 2001 at 10:14:38AM +1000, Keith Owens wrote:
> On Thu, 11 Oct 2001 16:57:34 -0700,
> Tom Rini <[email protected]> wrote:
> >On Fri, Oct 12, 2001 at 09:42:05AM +1000, Keith Owens wrote:
> >> On Thu, 11 Oct 2001 09:35:32 -0700,
> >> Tom Rini <[email protected]> wrote:
> >> >Hey all. How do you do the 'export-objs' bits in a kernel module that's
> >> >outside of the kernel? Thanks..
> >>
> >> Compile with -DMODULE -DEXPORT_SYMTAB. If the kernel has modversions,
> >> add -DMODVERSIONS -include $(HPATH)/linux/modversions.h. The safest
> >> way is to compile a module in the kernel that exports the objects then
> >> copy the command, substituting the file names.
> >
> >I think I managed to get things right. I added -DEXPORT_SYMTAB to the
> >default flags and added:
> >CFLAGS_EXTRA += $(shell if [ -f $(KERNEL_HEADERS)/linux/modversions.h ]; \
> > then echo -include \
> > $(KERNEL_HEADERS)/linux/modversions.h; fi)
>
> You need -DMODVERSIONS as well.

D'oh...

> Testing for the presence of modversions.h will not work in kbuild 2.5,
> that file is always created with error messages to catch people who
> include it "by hand". OTOH, kbuild 2.5 has support for compiling
> outside the standard kernel tree so who cares :)?

Right. I'm sure some changes will have to be made for external modules
once 2.5 is underway...

--
Tom Rini (TR1265)
http://gate.crashing.org/~trini/