Glynn Clements wrote:

> Note to self (and anyone else who it concerns): a dependency such as
> "foo: bar" does *not* make "foo" into an alias for "bar". Sure, making
> foo will make bar, but if foo has other prerequisites, they will be
> made in parallel with bar, not before it.
> 
> Ugh. I don't immediately know how to solve this, but I do at least
> know what's going on now. I'm fairly sure that that this is the cause
> of many of the outstanding problems with parallel builds.

One possibility is to avoid listing real files as prerequisites of
phony targets. E.g. instead of:

        shlib: $(SHLIB)
use:
        shlib:
                $(MAKE) $(SHLIB)

But that's going to significantly increase the number of recursive
make invocations, which can get quite ugly.

The other option is to avoid phony targets altogether and use
variables instead. I.e. change the Makefiles from e.g.:

        default: cmd
to:
        default: $(CMD)

where CMD would be defined in Module.make as:

        CMD = $(BIN)/$(PGM)$(EXE)

But that means rewriting every single Makefile.

-- 
Glynn Clements <[EMAIL PROTECTED]>

_______________________________________________
grass-dev mailing list
[email protected]
http://grass.itc.it/mailman/listinfo/grass-dev

Reply via email to