Re: make .SUFFIXES bug?

From: Thomas Dickey <dickey_at_his.com>
Date: Sat, 19 Dec 2015 10:10:06 -0500
On Tue, Dec 15, 2015 at 04:01:41PM +0100, Carsten Kunze wrote:
> Hello,
> 
> current groff doesn't build on FreeBSD.  I had noticed the same issue some months ago on NetBSD and cross checked on FreeBSD and it had worked on FreeBSD.  There must have somethig changed since then.  How to reproduce:
> 
> When there is a file "test.1.man" and a makefile:
> 
> .SUFFIXES:
> .SUFFIXES: .roff .in .ps .mom .pdf .me .ms .ps .html .txt .texi .dvi .pdf .xhtml .man .c .cpp .log .o .obj .sed .sin .test .test$(EXEEXT) .trs .ypp

According to POSIX

http://pubs.opengroup.org/onlinepubs/9699919799/utilities/make.html

.SUFFIXES
    Prerequisites of .SUFFIXES shall be appended to the list of known suffixes
    and are used in conjunction with the inference rules (see Inference Rules). 
    If .SUFFIXES does not have any prerequisites, the list of known suffixes
    shall be cleared.

and goes on to list the expected suffixes:

.SUFFIXES: .o .c .y .l .a .sh .f .c˜ .y˜ .l˜ .sh˜ .f˜

> .man:
>         _at_echo Making $_at_ from $<
>         rm -f $_at_
>         _at_LC_ALL=C \
>          sed -e "s|foo|bar|g" \
>          $< >$_at_
> 
> "make test.1" results in "make: don't know how to make test.1. Stop".
> 
> When ".man" is put to the start of the list it works.  It also works when the first .SUFFIXES line is removed.
> 
> The answer from NetBSD is that this is very likely a bug in make.  May this
> also be the case for FreeBSD?

That's ironic, considering that a while back they were adamant that if
the suffix wasn't in the list cited in POSIX, then it was a bug in the
makefile.

Your example does not list a suffix for ".1".  It would be harmless to
update groff's makefile to provide that, and a corresponding suffix-rule.

-- 
Thomas E. Dickey <dickey_at_invisible-island.net>
http://invisible-island.net
ftp://invisible-island.net

Received on Sat Dec 19 2015 - 14:17:13 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:01 UTC