Date: Wed, 2 Mar 2011 13:42:23 +0000 From: Anton Shterenlikht <mexas@bristol.ac.uk> To: bf1783@gmail.com Cc: Anton Shterenlikht <mexas@bristol.ac.uk>, freebsd-questions@FreeBSD.org Subject: Re: GNU make doesn't understand .for? suffix rules obsolete? Message-ID: <20110302134222.GB86263@mech-cluster241.men.bris.ac.uk> In-Reply-To: <AANLkTimKi25ayCg9=oiPO04RzU9Qgd=RMkGqyove%2BU8B@mail.gmail.com> References: <AANLkTimKi25ayCg9=oiPO04RzU9Qgd=RMkGqyove%2BU8B@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20110302134222.GB86263>