Hi Paul,
Paul Eggert <[email protected]> writes:
> @@ -82,7 +82,7 @@ AC_DEFUN([AM_ICONV_LINK]
> LIBS="$LIBS $LIBICONV"
> fi
> am_cv_func_iconv_works=no
> - for ac_iconv_const in '' 'const'; do
> + for ac_iconv_const in '/*empty*/' 'const'; do
> AC_RUN_IFELSE(
> [AC_LANG_PROGRAM(
> [[
This change breaks building GNU libiconv on some systems. On Fedora 42
with GCC 15.0, for example, you will get the following:
/bin/sh ../libtool --mode=compile gcc -I. -I. -I../include -I./../include
-I.. -I./.. -g -O2 -fvisibility=hidden -DBUILDING_LIBICONV
-DBUILDING_LIBCHARSET -DHAVE_CONFIG_H -c ./iconv.c
libtool: compile: gcc -I. -I. -I../include -I./../include -I.. -I./.. -g
-O2 -fvisibility=hidden -DBUILDING_LIBICONV -DBUILDING_LIBCHARSET
-DHAVE_CONFIG_H -c ./iconv.c -fPIC -DPIC -o .libs/iconv.o
In file included from ./iconv.c:20:
../include/iconv.h:101:15: error: conflicting types for 'libiconv'; have
'size_t(void *, char **, size_t *, char **, size_t *)' {aka 'long unsigned
int(void *, char **, long unsigned int *, char **, long unsigned int *)'}
101 | #define iconv libiconv
| ^~~~~~~~
./iconv.c:264:8: note: in expansion of macro 'iconv'
264 | size_t iconv (iconv_t icd,
| ^~~~~
../include/iconv.h:101:15: note: previous declaration of 'libiconv' with
type 'size_t(void *, const char **, size_t *, char **, size_t *)' {aka 'long
unsigned int(void *, const char **, long unsigned int *, char **, long unsigned
int *)'}
101 | #define iconv libiconv
| ^~~~~~~~
../include/iconv.h:102:39: note: in expansion of macro 'iconv'
102 | extern LIBICONV_SHLIB_EXPORTED size_t iconv (iconv_t cd, const
char* * inbuf, size_t *inbytesleft, char* * outbuf, size_t *outbytesleft);
| ^~~~~
make[1]: *** [Makefile:80: iconv.lo] Error 1
This is because in libiconv's configure.ac there is:
AM_ICONV
[...]
if test "$am_cv_func_iconv" = yes -a -n "$iconv_arg1"; then
ICONV_CONST="const"
else
ICONV_CONST=""
fi
AC_SUBST([ICONV_CONST])
But now test -n "$iconv_arg1" will always be true.
Bruno, I have attached a patch to adjust libiconv to this change.
Also, another patch since ACLOCAL was updated in Makefile.devel to
aclocal-1.17. But libcharset/Makefile.devel had it set to aclocal-1.16.
I assume this was unintentional, feel free to ignore if it was though.
Collin
>From d4da8510b4cc6f09ede9a3787e334b0326872b4d Mon Sep 17 00:00:00 2001
From: Collin Funk <[email protected]>
Date: Thu, 17 Apr 2025 22:06:24 -0700
Subject: [PATCH 1/2] Switch to automake 1.17, part 3.
* autogen.sh (ACLOCAL): Use Automake 1.17.
---
libcharset/ChangeLog | 5 +++++
libcharset/Makefile.devel | 2 +-
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/libcharset/ChangeLog b/libcharset/ChangeLog
index 2ee84bb..89abb4a 100644
--- a/libcharset/ChangeLog
+++ b/libcharset/ChangeLog
@@ -1,3 +1,8 @@
+2025-04-17 Collin Funk <[email protected]>
+
+ Switch to automake 1.17, part 3.
+ * autogen.sh (ACLOCAL): Use Automake 1.17.
+
2024-12-14 Bruno Haible <[email protected]>
Switch to automake 1.17.
diff --git a/libcharset/Makefile.devel b/libcharset/Makefile.devel
index 7f237a4..ef90e85 100644
--- a/libcharset/Makefile.devel
+++ b/libcharset/Makefile.devel
@@ -5,7 +5,7 @@ SHELL = /bin/sh
MAKE = make
AUTOCONF = autoconf
AUTOHEADER = autoheader
-ACLOCAL = aclocal-1.16
+ACLOCAL = aclocal-1.17
CP = cp
RM = rm -f
--
2.49.0
>From 1077f8fbe777357a3081d44e139f71fc93c37fc3 Mon Sep 17 00:00:00 2001
From: Collin Funk <[email protected]>
Date: Thu, 17 Apr 2025 23:00:38 -0700
Subject: [PATCH 2/2] Update after gnulib changed.
* configure.ac: Check if $iconv_arg1 is set to '/*empty*/' instead of an
empty string.
---
ChangeLog | 6 ++++++
configure.ac | 2 +-
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 16c0d05..70e0582 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2025-04-17 Collin Funk <[email protected]>
+
+ Update after gnulib changed.
+ * configure.ac: Check if $iconv_arg1 is set to '/*empty*/' instead of an
+ empty string.
+
2025-04-16 Bruno Haible <[email protected]>
Update after gnulib changed.
diff --git a/configure.ac b/configure.ac
index 25af6a5..f13331d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -104,7 +104,7 @@ AC_TYPE_MBSTATE_T
dnl checks for header files, functions and declarations
-if test "$am_cv_func_iconv" = yes -a -n "$iconv_arg1"; then
+if test "$am_cv_func_iconv" = yes && test "$iconv_arg1" != '/*empty*/'; then
ICONV_CONST="const"
else
ICONV_CONST=""
--
2.49.0