[lkml]   [2007]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
Subjectmodule builds need improvement / top Makefile not good enough
Hello list,

I am unhappy with the direction the 2.6 kernel builds have taken.
Very much like Micro$loth DDKs we (linux users) are being forced to
modules by plugging into a framework that doesn't respect the fine
of dependency generation and analysis.

Two problems I've identified
1. module builds are forcing me to use a particular make program (gnu
Well, what if someone uses a different tool to express the DAG (dep.

2. gnu make is a somewhat dated program and can't do profound dependency
generation and analysis like some newer tools. All it can do is
.d from .c with the -MM option using an idiom like this
-include f1.d f2.d
%.d: %.c
$(CC) -MM <whatever>

But that's not good enough for 2 reasons.
a) version rollback that causes timestamp rollback in time does NOT
trigger regeneration of dependencies (e.g. clearcase based
b) dependencies on order of things can't be expressed in gnu make,
example -Iinc1 -Iinc2 causes different results from -Iinc2 -Iinc1
if you have 2 different header files that have the same name in
directories. Same goes for "ld -r -o mod.o f1.o f2.o" vs
"ld -r -o mod.o f2.o f1.o" if order mattered (which it doesn't in
this case).

Bottom line - there exist free tools that are vastly superior to gnu
one such example is omake, and I don't want you to force me to switch
inferior dependency analysis with gnu make.

My suggestion how to solve this problem is the following.
Instead of
gnumake -C /lib/modules/`uname -r`/build M=`pwd` modules
it's better to be able to do
gnumake -C /lib/modules/`uname -r`/build M=`pwd` MYMAKE=mymake modules
and then inside your gnu Makefile you'd call mymake like so

chdir $(M)
mymake MODFLAGS="whatever modflags" INCFLAGS="whatever incflags" modules
and pass on whatever flags are necessary.

You can set MYMAKE to gmake if unspecified thus "MYMAKE ?= make"

That would make the callback into the user's build environment clean and
unbind it from gnu make.

Any replies, critique -- cc me, as I am not on this list.
-- - And now for something completely different…

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2007-03-02 18:19    [from the cache]
©2003-2014 Jasper Spaans. hosted at Digital Ocean