[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    [W:0.022 / U:6.100 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site