Subject: kbuild support to build one module with multiple separate components?

From: Song Wang <[email-masked]>
Date: Tue, 6 Jul 2004 16:00:50 -0700 (PDT)

Hi, Folks

I'm puzzled by the kbuild system in 2.6 kernel.
I want to write a kernel module, which consists of
several components. The module is produced by
linking these components. These components are located
in separate subdirectories (for example A, B,C). 
Each component is generated also by linking 
multiple files. (For example, a_1.c, a_2.c for
building A.o, b_1.c, b_2.c for building B.o, then A.o
and B.o
should be linked to produce mymodule.o) 

I know if I put all the files in a single directory
The makefile of the module looks like

obj-$(CONFIG_MYMODULE) += mymodule.o
mymodule-objs := a_1.o a_2.o b_1.o b_2.o c_1.o c_2.o

It should work. But it is really messy, especially
there are a lot of files or each component requires
different EXTRA_CFLAGS. However, if I write
separate Makefiles for each component in their own
subdirectory, the Makefile of component A looks like

obj-y := A.o (or obj-$(CONFIG_MYMODULE) +=  A.o)
A-objs := a_1.o a_2.o

And the Makefile of mymodule looks like
obj-$(CONFIG_MYMODULE) +=  A/

This is wrong, because kbuild will treat A as
independent module. All I want is to treat
A as component of the only module mymodule.o. It
should be linked to mymodule.o

Any idea on how to write a kbuild Makefile to
support such kind of single module produced
by linking multiple components and each component
is located in separate directory? Thanks.

-Song

__________________________________
Do you Yahoo!?
Yahoo! Mail - Helps protect you from nasty viruses.
http://promotions.yahoo.com/new_mail

---

From: Ralf Baechle <[email-masked]>
Date: Fri, 9 Jul 2004 23:57:00 +0200

> is located in separate directory? Thanks.

That's a limitation in the current kbuild system.  You either have to put
all files into a single directory or if you don't want that split your
module into several independant modules.  What I haven't tried is using
.a libraries but they're generally deprecated in kbuild.

  Ralf