[GRASS-dev] [GRASS-windows] RE: Compiling WINGrass

Glynn Clements glynn at gclements.plus.com
Mon Nov 14 15:14:48 EST 2011


Hamish wrote:

> It just sort of works so I don't rebuild grass on it very often (nor
> have had the motivation to upgrade to a newer CentOS or RHEL) but it
> would be nice if the grass 6.x line continued to support older
> configurations. Even if no one else is interested I'm happy to support
> that if pointed in the right direction.

The main issue is that versions before 3.81 don't support order-only
dependencies, e.g. (from lib/python/Makefile):

	$(GDIR): | $(PYDIR)
		$(MKDIR) $@

Any dependencies listed after the "|" won't cause the target to be
re-made if the dependency is newer. If the target is going to be
re-made anyhow, then the dependencies will be made before the rule's
commands are executed.

3.80 treats the "|" as the name of a dependency; it doesn't exist, so
it attempts to re-make it, fails to find a rule, and reports an error.

For 6.x, the above rule should have been written as:

	$(GDIR):
		$(MAKE) $(PYDIR)
		$(MKDIR) $@

This works with earlier versions of make, at the expense of adding
some "noise" to the output and executing additional commands.

Such rules invariably arise from back-porting Makefiles verbatim from
7.0, which requires make 3.81 (for more reasons than just order-only
dependencies).

-- 
Glynn Clements <glynn at gclements.plus.com>


More information about the grass-dev mailing list