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 <[email protected]>
package-version: Simplify its use.
Reported by Basil L. Contovounesios <[email protected]> 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])
])
])