[prev in list] [next in list] [prev in thread] [next in thread] 

List:       linux-netdev
Subject:    Re: Makefile for linux modules
From:       Sam Ravnborg <sam () ravnborg ! org>
Date:       2006-09-30 8:55:32
Message-ID: 20060930085532.GA13745 () uranus ! ravnborg ! org
[Download RAW message or body]

Hi Robert.

>    I have a makefielt to make several driver modules:
> obj-$(CONFIG_FUSION_SPI)	+= mptbase.o mptscsih.o
> mptspi.o
> obj-$(CONFIG_FUSION_FC)		+= mptbase.o mptscsih.o
> mptfc.o
> obj-m				+= mptbase.o mptscsih.o mptsas.o
> obj-$(CONFIG_FUSION_LAN)	+= mptlan.o
> obj-m				+= mptctl.o
> obj-m                           += mptcfg.o
> obj-m                       +=mptstm.o

The above kbuild file snippet tells us that you are creating
a number of modules:
mptbase.ko mptscsih.ko mptsas.ko mptlan.ko mptctl.ko mtpcfg.ko and mptstm.ko
They are each build from a single .c file.

> mptbase-objs             := comfunc.o

Now you try to include confunc.o in every module.
To do so you need to tell kbuild that you are dealing with a module
based on composite .o files.
That would look like:
obj-$(CONFIG_FUSION_PCI) += mptbase-foo.o
mtpbase-foo-y := comfunc.o mptbase.o

This will result in a module named mtpbase-foo.ko which is hardly what
you try to achive. Likewise you will have duplicate symbols in the
modules due to comfunc.o being included more than once.

The only sane approce here is to compile comfunc.o as an independent
module and let the modutils pull in the comfunc (deservers a more
specific name) module as needed.

So what you need to do is simply:
obj-m += comfunc.o

And accept this is a module so all symbols that you needs must be properly
exported using EXPORT_SYMBOL*

	Sam
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic