On Sat, 11 Jan 2020 10:54:02 +0100
[email protected] (Niels Möller) wrote:

> Hi,
> 
> it's been pointed out to me that GNU make documentation of old-fashioned
> suffix rules say
> 
> :    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',

OpenBSD make(1) agrees that a suffix rule has "no prerequisites", but
doesn't enforce this.  The above rule, in OpenBSD make, is a suffix
rule:

$ make file.o
`file.o' is up to date.
$ touch foo.h
$ make file.o
cc -c -O2 -pipe   -o file.o file.c
$ make .c.o
make: don't know how to make .c.o
Stop in /tmp/proj

https://man.openbsd.org/make#INFERENCE_RULES says,

: A complete inference rule is a dependency line with such a target,
: the normal dependency operator, no prerequisites and a list of shell
: commands.

Over in NetBSD, https://netbsd.gw.com/cgi-bin/man-cgi?make seems not
to mention whether a suffix rule can have prerequisites.

> ...
> 
> To change this to a %-pattern rule, I wonder: Should we just drop
> support for non-GNU make programs?
> 
> Requiring GNU make makes a few things easier: We can use %-patterns
> everywhere. We can use -include unconditionally for dep-files, dropping the
> @DEP_INCLUDE@ variable and the dummy-dep-files configure step. We can
> most likely also drop all logic for the testsuite/.test-rules.make file.

I often install GNU make on OpenBSD, because I build software that
uses %-patterns, $(shell ...) calls, or GNU-style ifdef/endif in
Makefiles.  BSD make already has -include.

> Current status of make compatibility is that it's supposed to work with
> Solaris make (but likely not tested for a long time), and it should
> kind-of work with BSD make, provided one configures with
> --disable-dependency-tracking.

I don't know if BSD make can build Nettle; I used GNU make.

The BSDs appear to use GNU make to build their Nettle packages.  In
OpenBSD ports/security/libnettle [1], the line "USE_GMAKE= Yes" uses
GNU make.  FreeBSD [2] and NetBSD [3] appear to also use gmake.  It is
as if Nettle already requires GNU make.

I wonder if we can find anyone who doesn't use GNU make for Nettle.

--George

[1] 
https://cvsweb.openbsd.org/cgi-bin/cvsweb/ports/security/libnettle/Makefile?rev=1.25&content-type=text/x-cvsweb-markup
[2] 
https://svnweb.freebsd.org/ports/head/security/nettle/Makefile?revision=512232&view=markup
[3] 
http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/security/nettle/Makefile?rev=1.22&content-type=text/x-cvsweb-markup&only_with_tag=MAIN
_______________________________________________
nettle-bugs mailing list
[email protected]
http://lists.lysator.liu.se/mailman/listinfo/nettle-bugs

Reply via email to