GNU make doesn't understand .for? suffix rules obsolete?

Anton Shterenlikht mexas at bristol.ac.uk
Wed Mar 2 13:42:27 UTC 2011


On Wed, Mar 02, 2011 at 01:27:22PM +0000, b. f. wrote:
> > In particular I was surprised
> > to find out that GNU make considers
> > suffix rules obsolete:
> > http://www.gnu.org/software/make/manual/html_node/Suffix-Rules.html#Suffix-Rules
> >
> > I didn't think the suffix rules are
> > obsolete in BSD make, are they?
> >
> 
> No (Although maybe some people will argue that BSD make itself is obsolete...).
> But what does it matter -- gnu make still understands them, doesn't it?

It seems the way suffix rules are impemented differs.
E.g. this construct

.SUFFIXES: .f90 .o

.f90.o: $(AUX).mod
	$(FC) $(FFLAGS) -c $<

meaning "compile all fortran files into objects, and
make sure $(AUX).mod file exists and up to date"
works in BSD make, while GNU make:

*quote*
Suffix rules cannot have any prerequisites of their own. If they have any, they are treated as normal files with funny names, not as suffix rules. Thus, the rule:

     .c.o: foo.h
             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

tells how to make the file .c.o from the prerequisite file foo.h, and is not at all like the pattern rule:

     %.o: %.c foo.h
             $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

which tells how to make `.o' files from `.c' files, and makes all `.o' files using this pattern rule also depend on foo.h.
*end quote*


> 
> There are some implicit rules, and variable expansions can be used,
> but many of the GNU constructs are not supported. See make(1), and:
> 
> http://www.freebsd.org/doc/en_US.ISO8859-1/books/pmake/index.html

Thanks for pmake, but I think I'll try
instead to use as simple constructs as I can.

> You can limit yourself to constructs common to both makes,

yes, will try.

Many thanks
Anton

-- 
Anton Shterenlikht
Room 2.6, Queen's Building
Mech Eng Dept
Bristol University
University Walk, Bristol BS8 1TR, UK
Tel: +44 (0)117 331 5944
Fax: +44 (0)117 929 4423


More information about the freebsd-questions mailing list