Subject: bug#67477: closed (Re: bug#67477: Automake warns that $(?D) is a non-POSIX variable name)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 27 Nov 2023 22:48:03 +0000

Your bug report

#67477: Automake warns that $(?D) is a non-POSIX variable name

which was filed against the automake package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
67477: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=67477
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#67477: Automake warns that $(?D) is a non-POSIX variable name
From: Karl Berry <[email-masked]>
To: [email-masked]
Cc: [email-masked]
Date: Mon, 27 Nov 2023 15:47:31 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi Quinn,

> Automake seems to be aware of $(@D) and $(@F), but not the others.

Thanks for the report. This was fixed not long ago, and will be in the
next release. The prior report, for the record:
https://debbugs.gnu.org/cgi/bugreport.cgi?bug=9587

All the best,
Karl

Subject: Automake warns that $(?D) is a non-POSIX variable name
From: Quinn Grier <[email-masked]>
To: [email-masked]
Date: Sun, 26 Nov 2023 21:42:52 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

POSIX Make allows the syntax $(@D) and $(@F) to be used to retrieve the
directory and filename parts of the $@ internal macro. It also allows
this syntax for the other four internal macros ($%, $?, $<, and $*).

Automake seems to be aware of $(@D) and $(@F), but not the others.

Here is an example:

       $ nl configure.ac
            1  AC_INIT([example], [1])
            2  AM_INIT_AUTOMAKE([-Wall foreign])
            3  AC_CONFIG_FILES([Makefile])
            4  AC_OUTPUT

       $ nl Makefile.am
            1  foo.a(foo.o): foo.o
            2          echo $(@D) # no warning
            3          echo $(@F) # no warning
            4          echo $(%D) # warning
            5          echo $(%F) # warning
            6          echo $(?D) # warning
            7          echo $(?F) # warning
            8          echo $(<D) # warning
            9          echo $(<F) # warning
           10          echo $(*D) # warning
           11          echo $(*F) # warning

       $ autoreconf -i
       Makefile.am:4: warning: %D: non-POSIX variable name
       Makefile.am:5: warning: %F: non-POSIX variable name
       Makefile.am:6: warning: ?D: non-POSIX variable name
       Makefile.am:7: warning: ?F: non-POSIX variable name
       Makefile.am:8: warning: <D: non-POSIX variable name
       Makefile.am:9: warning: <F: non-POSIX variable name
       Makefile.am:10: warning: *D: non-POSIX variable name
       Makefile.am:11: warning: *F: non-POSIX variable name

       $ autoconf --version | head -n 1
       autoconf (GNU Autoconf) 2.71

       $ automake --version | head -n 1
       automake (GNU automake) 1.16.5