Basil L. Contovounesios wrote:
> I understand that projects using Automake can use VERSION in place of
> PACKAGE_VERSION, but I'm not aware of anything analogous to other
> PACKAGE_* definitions, such as PACKAGE_STRING or PACKAGE_URL.
> ...
> AC_INIT is documented as taking two mandatory arguments.
> 
> - One small consequence of following this pattern is that uses of
>   PACKAGE_* variables have to be adapted.

The patch below
  - removes the need to change your package if it uses PACKAGE_STRING
    etc. or if it passes more than 2 arguments to AC_INIT,
  - fixes a bug: AC_PACKAGE_NAME would expand to empty or (in Autoconf
    2.69) trigger an error.


2025-01-24  Bruno Haible  <br...@clisp.org>

        package-version: Simplify its use.
        Reported by Basil L. Contovounesios <ba...@contovou.net> in
        <https://lists.gnu.org/archive/html/bug-gnulib/2025-01/msg00195.html>.
        * doc/package-version.texi (Propagating the package version): Recommend
        to pass the usual arguments to AC_INIT.
        * m4/init-package-version.m4: Likewise.
        (gl_INIT_PACKAGE): Define PACKAGE_VERSION and PACKAGE_STRING as needed.
        (gl_RPL_INIT_AUTOMAKE): Improve quoting.

diff --git a/doc/package-version.texi b/doc/package-version.texi
index fb050a8fcf..4075b98d03 100644
--- a/doc/package-version.texi
+++ b/doc/package-version.texi
@@ -118,7 +118,7 @@
 
 The recommended code pattern is
 @example
-AC_INIT
+AC_INIT([@var{package}], [dummy])
 AC_CONFIG_SRCDIR([@var{unique-file-in-source-dir}])
 AC_CONFIG_AUX_DIR([build-aux])
 VERSION_NUMBER=`cd $srcdir \
diff --git a/m4/init-package-version.m4 b/m4/init-package-version.m4
index 525dfe5bf5..69f7764892 100644
--- a/m4/init-package-version.m4
+++ b/m4/init-package-version.m4
@@ -1,5 +1,5 @@
 # init-package-version.m4
-# serial 3
+# serial 4
 dnl Copyright (C) 1992-2025 Free Software Foundation, Inc.
 dnl This file is free software, distributed under the terms of the GNU
 dnl General Public License.  As a special exception to the GNU General
@@ -57,7 +57,7 @@
 #
 # With the macro defined in this file, the approach can be coded like this:
 #
-#   AC_INIT
+#   AC_INIT(PACKAGE, [dummy], [MORE OPTIONS])
 #   AC_CONFIG_SRCDIR(WITNESS)
 #   . $srcdir/../version.sh
 #   gl_INIT_PACKAGE(PACKAGE, $VERSION_NUMBER)
@@ -102,8 +102,16 @@ AC_DEFUN([gl_INIT_PACKAGE]
               [AC_PACKAGE_NAME], [gl_INIT_DUMMY])),
           [AC_PACKAGE_TARNAME], [gl_INIT_EMPTY])),
       [AC_PACKAGE_VERSION], [gl_INIT_DUMMY])
-    [AC_SUBST([PACKAGE], [$1])
-     AC_SUBST([VERSION], [$2])
+    [dnl Set variables documented in Automake.
+     AC_SUBST([PACKAGE], [$1])
+     AC_SUBST([VERSION], ["$2"])
+     dnl Set variables documented in Autoconf.
+     AC_SUBST([PACKAGE_VERSION], ["$2"])
+     AC_SUBST([PACKAGE_STRING], ["$1 $2"])
+     AC_DEFINE_UNQUOTED([PACKAGE_VERSION], ["$2"],
+       [Define to the version of this package.])
+     AC_DEFINE_UNQUOTED([PACKAGE_STRING], ["$1 $2"],
+       [Define to the full name and version of this package.])
     ])
   m4_define([AM_INIT_AUTOMAKE],
     m4_defn([gl_RPL_INIT_AUTOMAKE]))
@@ -118,7 +126,7 @@ AC_DEFUN([gl_RPL_INIT_AUTOMAKE]
     [m4_fatal([After gl_INIT_PACKAGE, the two-argument form of 
AM_INIT_AUTOMAKE cannot be used.])])
   gl_AM_INIT_AUTOMAKE([$1 no-define])
   m4_if(m4_index([ $1 ], [ no-define ]), [-1],
-    [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
-     AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])
+    [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package])
+     AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])
     ])
 ])




Reply via email to