]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++-v3: Handle iconv as optional for newlib builds [PR116362]
authorHans-Peter Nilsson <hp@axis.com>
Tue, 13 Aug 2024 17:23:43 +0000 (19:23 +0200)
committerHans-Peter Nilsson <hp@bitrange.com>
Fri, 16 Aug 2024 01:07:16 +0000 (03:07 +0200)
Support for iconv in newlib seems to have been always
assumed present by libstdc++-v3, but is default off.

Though, it hasn't been used before recent libstdc++ changes
that actually call iconv functions.  This now leads to
failures exposed by running the test-suite, unless the
newlib being used has been explicitly configured with
--enable-newlib-iconv.  When failing, there are undefined
references to iconv, iconv_open or iconv_close for multiple
tests.

Thankfully there's a macro in newlib.h that we can check to
detect presence of iconv support for the newlib build that's
used.

libstdc++-v3:
PR libstdc++/116362
* configure.ac: Check newlib configuration whether iconv is enabled.
* configure: Regenerate.

libstdc++-v3/configure
libstdc++-v3/configure.ac

index fe525308ae28c4f135735f02216637486350aee0..305675eaa1e1129d875fda867ee83670c1cda883 100755 (executable)
@@ -28571,7 +28571,31 @@ _ACEOF
 
 
 
-    $as_echo "#define HAVE_ICONV 1" >>confdefs.h
+    # Support for iconv in newlib is configurable.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <newlib.h>
+int
+main ()
+{
+
+      #ifndef _ICONV_ENABLED
+      #error
+      #endif
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_newlib_iconv_enabled=yes
+else
+  ac_newlib_iconv_enabled=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test "$ac_newlib_iconv_enabled" = yes; then
+      $as_echo "#define HAVE_ICONV 1" >>confdefs.h
+
+    fi
 
     $as_echo "#define HAVE_MEMALIGN 1" >>confdefs.h
 
index ccb24a82be7993da5468ade43b03c01b6142a25f..4049f54bd5a37d98e80a4231d53014937ee07d93 100644 (file)
@@ -376,7 +376,15 @@ dnl # rather than hardcoding that information.
       frexpl hypotl ldexpl log10l logl modfl powl sinhl sinl sqrtl
       tanhl tanl])
 
-    AC_DEFINE(HAVE_ICONV)
+    # Support for iconv in newlib is configurable.
+    AC_TRY_COMPILE([#include <newlib.h>], [
+      #ifndef _ICONV_ENABLED
+      #error
+      #endif], [ac_newlib_iconv_enabled=yes], [ac_newlib_iconv_enabled=no])
+    if test "$ac_newlib_iconv_enabled" = yes; then
+      AC_DEFINE(HAVE_ICONV)
+    fi
+
     AC_DEFINE(HAVE_MEMALIGN)
 
     case "${target}" in