link: "Recursive Make Considered Harmful"

Andrew Hacking ahacking at
Wed Jan 12 20:37:00 PST 2005

On Wed, 2005-01-12 at 23:24, Jonas Sundström wrote:
> Andrew Hacking <ahacking at xxxxxxxxxxxxxxx> wrote:
>  ...
> > My interpretation of the documentation was that it is impossible to
> > invoke an external tool and assign the output of a command to a
> > variable.  This seemed a serious limitation _if_ that is the case, 
> > and
> > rules out interfacing source code control systems, or whatever.
> It looks possible, but I'm not that familiar with Jam.
> actions AbsSymLink
> {
> 	target="$(2)"
> 	case "$target" in
> 		/*) ;;
> 		*) target=`pwd`/"$target";;
> 	esac
> 	$(RM) "$(1)" && $(LN) -s "$target" "$(1)"
> }
> Snippet taken from here:
> (top level Jamfile and Jamrules)
> Two sub Jamfiles. Looks simple enough:
> /Jonas Sundström.         
Jam actions are used during the updating/construction phase, not the
parsing phase, so the above does not allow variables to be assigned that
could affect the dependency graph which is built _prior_ to the
update/construction phase.

This would appear to inhibit the possibility of any dependency handling
where source code and/or additional jam files need to be checked out or
fetched as part of the build. It would prevent fetching code, extracting
tar-balls, patching and building like the ports system does.

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.

-Andrew Hacking.

More information about the Kernel mailing list