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:
>         @echo Making $@ from $<
>         rm -f $@
>         @LC_ALL=C \
>          sed -e "s|foo|bar|g" \
>          $< >$@
> 
> "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 <dic...@invisible-island.net>
http://invisible-island.net
ftp://invisible-island.net

Attachment: signature.asc
Description: Digital signature

Reply via email to