link: "Recursive Make Considered Harmful"

Joerg Sonnenberger joerg at
Thu Jan 13 08:16:21 PST 2005

On Thu, Jan 13, 2005 at 02:35:49PM +1000, Andrew Hacking wrote:
> It would seem that systems which require *all dependency knowledge* up
> front are inappropriate where it is desirable to _not_ have a
> pre-patched universe checked out on your machine, unless of course you
> recursively used the build tool..and now we have come full circle to the
> typical recursive make approach.

Well, it certainly is possible to allow dependency tracking tools to
work increment to a certain degree. The problem with this comes from
the fact that certain a-priory assumptions become void. All build tools
I'm aware of depend on the "build-at-most-once" assumption, if only to
avoid recursions. Another problem is variable modification in the
dependency + build phase can lead to a lot of nasty problems.

For me, it is easier to do a recursion on demand, than an overdesigned
build tool. Jam would allow us to do a recursion-free buildworld without
any nasty tricks we need a recursion-free make buildworld, by proper
exploiting the target local variable name space. The issue about jam
not allowing running commands to read variables can be solved either by
adding this or avoiding it completely. The problem of filename as target
is avoided by the same way we already solve it for make: keep the
subdirectory structure for the object file space as well.
The problem of addiontal dependencies from external tools, which will come
up again once we start to split out certain parts of contrib even more,
can be solved by doing a full recursion there, they should by definition
be self-contained and just have a fixed list of dependencies on the


> -Andrew Hacking.

More information about the Kernel mailing list