aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2024-08-13 19:23:43 +0200
committerHans-Peter Nilsson <hp@bitrange.com>2024-08-16 03:07:16 +0200
commit1b8b53ef75c143cddc114705c97c74d9c8f7a64b (patch)
tree6cece7a6dce32fb5c2b71f55019412652eabb1ce
parent98e1b19f6690f5e19031ba4f843c22208bbfb14a (diff)
downloadgcc-1b8b53ef75c143cddc114705c97c74d9c8f7a64b.zip
gcc-1b8b53ef75c143cddc114705c97c74d9c8f7a64b.tar.gz
gcc-1b8b53ef75c143cddc114705c97c74d9c8f7a64b.tar.bz2
libstdc++-v3: Handle iconv as optional for newlib builds [PR116362]
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.
-rwxr-xr-xlibstdc++-v3/configure26
-rw-r--r--libstdc++-v3/configure.ac10
2 files changed, 34 insertions, 2 deletions
diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure
index fe52530..305675e 100755
--- a/libstdc++-v3/configure
+++ b/libstdc++-v3/configure
@@ -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
diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac
index ccb24a8..4049f54 100644
--- a/libstdc++-v3/configure.ac
+++ b/libstdc++-v3/configure.ac
@@ -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