make .SUFFIXES bug?

Simon J. Gerraty sjg at juniper.net
Tue Dec 15 17:44:00 UTC 2015


Carsten Kunze <carsten.kunze at arcor.de> wrote:

> 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:

FreeBSD now uses same make as NetBSD ;-)

> 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

What is the value of EXEEXT at this point?

> .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?

Since the make is the same, the answer would be yes.
But it may not be a bug in make itself:

$ echo hi > test.1.man
$ make -r -f /homes/sjg/make-tests/suffix2 test.1
Making test.1 from test.1.man
$ make  -f /homes/sjg/make-tests/suffix2 test.1
make: don't know how to make test.1. Stop

make: stopped in /tmp
$

Will look deeper...


More information about the freebsd-current mailing list