05d292b2 (kx 2023-03-24 03:51:10 +0300 1) # iconv.m4 serial 19 (gettext-0.18.2)
05d292b2 (kx 2023-03-24 03:51:10 +0300 2) dnl Copyright (C) 2000-2002, 2007-2014, 2016 Free Software Foundation, Inc.
05d292b2 (kx 2023-03-24 03:51:10 +0300 3) dnl This file is free software; the Free Software Foundation
05d292b2 (kx 2023-03-24 03:51:10 +0300 4) dnl gives unlimited permission to copy and/or distribute it,
05d292b2 (kx 2023-03-24 03:51:10 +0300 5) dnl with or without modifications, as long as this notice is preserved.
05d292b2 (kx 2023-03-24 03:51:10 +0300 6)
05d292b2 (kx 2023-03-24 03:51:10 +0300 7) dnl From Bruno Haible.
05d292b2 (kx 2023-03-24 03:51:10 +0300 8)
05d292b2 (kx 2023-03-24 03:51:10 +0300 9) AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
05d292b2 (kx 2023-03-24 03:51:10 +0300 10) [
05d292b2 (kx 2023-03-24 03:51:10 +0300 11) dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
05d292b2 (kx 2023-03-24 03:51:10 +0300 12) AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
05d292b2 (kx 2023-03-24 03:51:10 +0300 13) AC_REQUIRE([AC_LIB_RPATH])
05d292b2 (kx 2023-03-24 03:51:10 +0300 14)
05d292b2 (kx 2023-03-24 03:51:10 +0300 15) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
05d292b2 (kx 2023-03-24 03:51:10 +0300 16) dnl accordingly.
05d292b2 (kx 2023-03-24 03:51:10 +0300 17) AC_LIB_LINKFLAGS_BODY([iconv])
05d292b2 (kx 2023-03-24 03:51:10 +0300 18) ])
05d292b2 (kx 2023-03-24 03:51:10 +0300 19)
05d292b2 (kx 2023-03-24 03:51:10 +0300 20) AC_DEFUN([AM_ICONV_LINK],
05d292b2 (kx 2023-03-24 03:51:10 +0300 21) [
05d292b2 (kx 2023-03-24 03:51:10 +0300 22) dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
05d292b2 (kx 2023-03-24 03:51:10 +0300 23) dnl those with the standalone portable GNU libiconv installed).
05d292b2 (kx 2023-03-24 03:51:10 +0300 24) AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
05d292b2 (kx 2023-03-24 03:51:10 +0300 25)
05d292b2 (kx 2023-03-24 03:51:10 +0300 26) dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
05d292b2 (kx 2023-03-24 03:51:10 +0300 27) dnl accordingly.
05d292b2 (kx 2023-03-24 03:51:10 +0300 28) AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
05d292b2 (kx 2023-03-24 03:51:10 +0300 29)
05d292b2 (kx 2023-03-24 03:51:10 +0300 30) dnl Add $INCICONV to CPPFLAGS before performing the following checks,
05d292b2 (kx 2023-03-24 03:51:10 +0300 31) dnl because if the user has installed libiconv and not disabled its use
05d292b2 (kx 2023-03-24 03:51:10 +0300 32) dnl via --without-libiconv-prefix, he wants to use it. The first
05d292b2 (kx 2023-03-24 03:51:10 +0300 33) dnl AC_LINK_IFELSE will then fail, the second AC_LINK_IFELSE will succeed.
05d292b2 (kx 2023-03-24 03:51:10 +0300 34) am_save_CPPFLAGS="$CPPFLAGS"
05d292b2 (kx 2023-03-24 03:51:10 +0300 35) AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
05d292b2 (kx 2023-03-24 03:51:10 +0300 36)
05d292b2 (kx 2023-03-24 03:51:10 +0300 37) AC_CACHE_CHECK([for iconv], [am_cv_func_iconv], [
05d292b2 (kx 2023-03-24 03:51:10 +0300 38) am_cv_func_iconv="no, consider installing GNU libiconv"
05d292b2 (kx 2023-03-24 03:51:10 +0300 39) am_cv_lib_iconv=no
05d292b2 (kx 2023-03-24 03:51:10 +0300 40) AC_LINK_IFELSE(
05d292b2 (kx 2023-03-24 03:51:10 +0300 41) [AC_LANG_PROGRAM(
05d292b2 (kx 2023-03-24 03:51:10 +0300 42) [[
05d292b2 (kx 2023-03-24 03:51:10 +0300 43) #include <stdlib.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 44) #include <iconv.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 45) ]],
05d292b2 (kx 2023-03-24 03:51:10 +0300 46) [[iconv_t cd = iconv_open("","");
05d292b2 (kx 2023-03-24 03:51:10 +0300 47) iconv(cd,NULL,NULL,NULL,NULL);
05d292b2 (kx 2023-03-24 03:51:10 +0300 48) iconv_close(cd);]])],
05d292b2 (kx 2023-03-24 03:51:10 +0300 49) [am_cv_func_iconv=yes])
05d292b2 (kx 2023-03-24 03:51:10 +0300 50) if test "$am_cv_func_iconv" != yes; then
05d292b2 (kx 2023-03-24 03:51:10 +0300 51) am_save_LIBS="$LIBS"
05d292b2 (kx 2023-03-24 03:51:10 +0300 52) LIBS="$LIBS $LIBICONV"
05d292b2 (kx 2023-03-24 03:51:10 +0300 53) AC_LINK_IFELSE(
05d292b2 (kx 2023-03-24 03:51:10 +0300 54) [AC_LANG_PROGRAM(
05d292b2 (kx 2023-03-24 03:51:10 +0300 55) [[
05d292b2 (kx 2023-03-24 03:51:10 +0300 56) #include <stdlib.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 57) #include <iconv.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 58) ]],
05d292b2 (kx 2023-03-24 03:51:10 +0300 59) [[iconv_t cd = iconv_open("","");
05d292b2 (kx 2023-03-24 03:51:10 +0300 60) iconv(cd,NULL,NULL,NULL,NULL);
05d292b2 (kx 2023-03-24 03:51:10 +0300 61) iconv_close(cd);]])],
05d292b2 (kx 2023-03-24 03:51:10 +0300 62) [am_cv_lib_iconv=yes]
05d292b2 (kx 2023-03-24 03:51:10 +0300 63) [am_cv_func_iconv=yes])
05d292b2 (kx 2023-03-24 03:51:10 +0300 64) LIBS="$am_save_LIBS"
05d292b2 (kx 2023-03-24 03:51:10 +0300 65) fi
05d292b2 (kx 2023-03-24 03:51:10 +0300 66) ])
05d292b2 (kx 2023-03-24 03:51:10 +0300 67) if test "$am_cv_func_iconv" = yes; then
05d292b2 (kx 2023-03-24 03:51:10 +0300 68) AC_CACHE_CHECK([for working iconv], [am_cv_func_iconv_works], [
05d292b2 (kx 2023-03-24 03:51:10 +0300 69) dnl This tests against bugs in AIX 5.1, AIX 6.1..7.1, HP-UX 11.11,
05d292b2 (kx 2023-03-24 03:51:10 +0300 70) dnl Solaris 10.
05d292b2 (kx 2023-03-24 03:51:10 +0300 71) am_save_LIBS="$LIBS"
05d292b2 (kx 2023-03-24 03:51:10 +0300 72) if test $am_cv_lib_iconv = yes; then
05d292b2 (kx 2023-03-24 03:51:10 +0300 73) LIBS="$LIBS $LIBICONV"
05d292b2 (kx 2023-03-24 03:51:10 +0300 74) fi
05d292b2 (kx 2023-03-24 03:51:10 +0300 75) am_cv_func_iconv_works=no
05d292b2 (kx 2023-03-24 03:51:10 +0300 76) for ac_iconv_const in '' 'const'; do
05d292b2 (kx 2023-03-24 03:51:10 +0300 77) AC_RUN_IFELSE(
05d292b2 (kx 2023-03-24 03:51:10 +0300 78) [AC_LANG_PROGRAM(
05d292b2 (kx 2023-03-24 03:51:10 +0300 79) [[
05d292b2 (kx 2023-03-24 03:51:10 +0300 80) #include <iconv.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 81) #include <string.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 82)
05d292b2 (kx 2023-03-24 03:51:10 +0300 83) #ifndef ICONV_CONST
05d292b2 (kx 2023-03-24 03:51:10 +0300 84) # define ICONV_CONST $ac_iconv_const
05d292b2 (kx 2023-03-24 03:51:10 +0300 85) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 86) ]],
05d292b2 (kx 2023-03-24 03:51:10 +0300 87) [[int result = 0;
05d292b2 (kx 2023-03-24 03:51:10 +0300 88) /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
05d292b2 (kx 2023-03-24 03:51:10 +0300 89) returns. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 90) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 91) iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
05d292b2 (kx 2023-03-24 03:51:10 +0300 92) if (cd_utf8_to_88591 != (iconv_t)(-1))
05d292b2 (kx 2023-03-24 03:51:10 +0300 93) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 94) static ICONV_CONST char input[] = "\342\202\254"; /* EURO SIGN */
05d292b2 (kx 2023-03-24 03:51:10 +0300 95) char buf[10];
05d292b2 (kx 2023-03-24 03:51:10 +0300 96) ICONV_CONST char *inptr = input;
05d292b2 (kx 2023-03-24 03:51:10 +0300 97) size_t inbytesleft = strlen (input);
05d292b2 (kx 2023-03-24 03:51:10 +0300 98) char *outptr = buf;
05d292b2 (kx 2023-03-24 03:51:10 +0300 99) size_t outbytesleft = sizeof (buf);
05d292b2 (kx 2023-03-24 03:51:10 +0300 100) size_t res = iconv (cd_utf8_to_88591,
05d292b2 (kx 2023-03-24 03:51:10 +0300 101) &inptr, &inbytesleft,
05d292b2 (kx 2023-03-24 03:51:10 +0300 102) &outptr, &outbytesleft);
05d292b2 (kx 2023-03-24 03:51:10 +0300 103) if (res == 0)
05d292b2 (kx 2023-03-24 03:51:10 +0300 104) result |= 1;
05d292b2 (kx 2023-03-24 03:51:10 +0300 105) iconv_close (cd_utf8_to_88591);
05d292b2 (kx 2023-03-24 03:51:10 +0300 106) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 107) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 108) /* Test against Solaris 10 bug: Failures are not distinguishable from
05d292b2 (kx 2023-03-24 03:51:10 +0300 109) successful returns. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 110) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 111) iconv_t cd_ascii_to_88591 = iconv_open ("ISO8859-1", "646");
05d292b2 (kx 2023-03-24 03:51:10 +0300 112) if (cd_ascii_to_88591 != (iconv_t)(-1))
05d292b2 (kx 2023-03-24 03:51:10 +0300 113) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 114) static ICONV_CONST char input[] = "\263";
05d292b2 (kx 2023-03-24 03:51:10 +0300 115) char buf[10];
05d292b2 (kx 2023-03-24 03:51:10 +0300 116) ICONV_CONST char *inptr = input;
05d292b2 (kx 2023-03-24 03:51:10 +0300 117) size_t inbytesleft = strlen (input);
05d292b2 (kx 2023-03-24 03:51:10 +0300 118) char *outptr = buf;
05d292b2 (kx 2023-03-24 03:51:10 +0300 119) size_t outbytesleft = sizeof (buf);
05d292b2 (kx 2023-03-24 03:51:10 +0300 120) size_t res = iconv (cd_ascii_to_88591,
05d292b2 (kx 2023-03-24 03:51:10 +0300 121) &inptr, &inbytesleft,
05d292b2 (kx 2023-03-24 03:51:10 +0300 122) &outptr, &outbytesleft);
05d292b2 (kx 2023-03-24 03:51:10 +0300 123) if (res == 0)
05d292b2 (kx 2023-03-24 03:51:10 +0300 124) result |= 2;
05d292b2 (kx 2023-03-24 03:51:10 +0300 125) iconv_close (cd_ascii_to_88591);
05d292b2 (kx 2023-03-24 03:51:10 +0300 126) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 127) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 128) /* Test against AIX 6.1..7.1 bug: Buffer overrun. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 129) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 130) iconv_t cd_88591_to_utf8 = iconv_open ("UTF-8", "ISO-8859-1");
05d292b2 (kx 2023-03-24 03:51:10 +0300 131) if (cd_88591_to_utf8 != (iconv_t)(-1))
05d292b2 (kx 2023-03-24 03:51:10 +0300 132) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 133) static ICONV_CONST char input[] = "\304";
05d292b2 (kx 2023-03-24 03:51:10 +0300 134) static char buf[2] = { (char)0xDE, (char)0xAD };
05d292b2 (kx 2023-03-24 03:51:10 +0300 135) ICONV_CONST char *inptr = input;
05d292b2 (kx 2023-03-24 03:51:10 +0300 136) size_t inbytesleft = 1;
05d292b2 (kx 2023-03-24 03:51:10 +0300 137) char *outptr = buf;
05d292b2 (kx 2023-03-24 03:51:10 +0300 138) size_t outbytesleft = 1;
05d292b2 (kx 2023-03-24 03:51:10 +0300 139) size_t res = iconv (cd_88591_to_utf8,
05d292b2 (kx 2023-03-24 03:51:10 +0300 140) &inptr, &inbytesleft,
05d292b2 (kx 2023-03-24 03:51:10 +0300 141) &outptr, &outbytesleft);
05d292b2 (kx 2023-03-24 03:51:10 +0300 142) if (res != (size_t)(-1) || outptr - buf > 1 || buf[1] != (char)0xAD)
05d292b2 (kx 2023-03-24 03:51:10 +0300 143) result |= 4;
05d292b2 (kx 2023-03-24 03:51:10 +0300 144) iconv_close (cd_88591_to_utf8);
05d292b2 (kx 2023-03-24 03:51:10 +0300 145) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 146) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 147) #if 0 /* This bug could be worked around by the caller. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 148) /* Test against HP-UX 11.11 bug: Positive return value instead of 0. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 149) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 150) iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
05d292b2 (kx 2023-03-24 03:51:10 +0300 151) if (cd_88591_to_utf8 != (iconv_t)(-1))
05d292b2 (kx 2023-03-24 03:51:10 +0300 152) {
05d292b2 (kx 2023-03-24 03:51:10 +0300 153) static ICONV_CONST char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
05d292b2 (kx 2023-03-24 03:51:10 +0300 154) char buf[50];
05d292b2 (kx 2023-03-24 03:51:10 +0300 155) ICONV_CONST char *inptr = input;
05d292b2 (kx 2023-03-24 03:51:10 +0300 156) size_t inbytesleft = strlen (input);
05d292b2 (kx 2023-03-24 03:51:10 +0300 157) char *outptr = buf;
05d292b2 (kx 2023-03-24 03:51:10 +0300 158) size_t outbytesleft = sizeof (buf);
05d292b2 (kx 2023-03-24 03:51:10 +0300 159) size_t res = iconv (cd_88591_to_utf8,
05d292b2 (kx 2023-03-24 03:51:10 +0300 160) &inptr, &inbytesleft,
05d292b2 (kx 2023-03-24 03:51:10 +0300 161) &outptr, &outbytesleft);
05d292b2 (kx 2023-03-24 03:51:10 +0300 162) if ((int)res > 0)
05d292b2 (kx 2023-03-24 03:51:10 +0300 163) result |= 8;
05d292b2 (kx 2023-03-24 03:51:10 +0300 164) iconv_close (cd_88591_to_utf8);
05d292b2 (kx 2023-03-24 03:51:10 +0300 165) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 166) }
05d292b2 (kx 2023-03-24 03:51:10 +0300 167) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 168) /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
05d292b2 (kx 2023-03-24 03:51:10 +0300 169) provided. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 170) if (/* Try standardized names. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 171) iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
05d292b2 (kx 2023-03-24 03:51:10 +0300 172) /* Try IRIX, OSF/1 names. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 173) && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
05d292b2 (kx 2023-03-24 03:51:10 +0300 174) /* Try AIX names. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 175) && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
05d292b2 (kx 2023-03-24 03:51:10 +0300 176) /* Try HP-UX names. */
05d292b2 (kx 2023-03-24 03:51:10 +0300 177) && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
05d292b2 (kx 2023-03-24 03:51:10 +0300 178) result |= 16;
05d292b2 (kx 2023-03-24 03:51:10 +0300 179) return result;
05d292b2 (kx 2023-03-24 03:51:10 +0300 180) ]])],
05d292b2 (kx 2023-03-24 03:51:10 +0300 181) [am_cv_func_iconv_works=yes], ,
05d292b2 (kx 2023-03-24 03:51:10 +0300 182) [case "$host_os" in
05d292b2 (kx 2023-03-24 03:51:10 +0300 183) aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
05d292b2 (kx 2023-03-24 03:51:10 +0300 184) *) am_cv_func_iconv_works="guessing yes" ;;
05d292b2 (kx 2023-03-24 03:51:10 +0300 185) esac])
05d292b2 (kx 2023-03-24 03:51:10 +0300 186) test "$am_cv_func_iconv_works" = no || break
05d292b2 (kx 2023-03-24 03:51:10 +0300 187) done
05d292b2 (kx 2023-03-24 03:51:10 +0300 188) LIBS="$am_save_LIBS"
05d292b2 (kx 2023-03-24 03:51:10 +0300 189) ])
05d292b2 (kx 2023-03-24 03:51:10 +0300 190) case "$am_cv_func_iconv_works" in
05d292b2 (kx 2023-03-24 03:51:10 +0300 191) *no) am_func_iconv=no am_cv_lib_iconv=no ;;
05d292b2 (kx 2023-03-24 03:51:10 +0300 192) *) am_func_iconv=yes ;;
05d292b2 (kx 2023-03-24 03:51:10 +0300 193) esac
05d292b2 (kx 2023-03-24 03:51:10 +0300 194) else
05d292b2 (kx 2023-03-24 03:51:10 +0300 195) am_func_iconv=no am_cv_lib_iconv=no
05d292b2 (kx 2023-03-24 03:51:10 +0300 196) fi
05d292b2 (kx 2023-03-24 03:51:10 +0300 197) if test "$am_func_iconv" = yes; then
05d292b2 (kx 2023-03-24 03:51:10 +0300 198) AC_DEFINE([HAVE_ICONV], [1],
05d292b2 (kx 2023-03-24 03:51:10 +0300 199) [Define if you have the iconv() function and it works.])
05d292b2 (kx 2023-03-24 03:51:10 +0300 200) fi
05d292b2 (kx 2023-03-24 03:51:10 +0300 201) if test "$am_cv_lib_iconv" = yes; then
05d292b2 (kx 2023-03-24 03:51:10 +0300 202) AC_MSG_CHECKING([how to link with libiconv])
05d292b2 (kx 2023-03-24 03:51:10 +0300 203) AC_MSG_RESULT([$LIBICONV])
05d292b2 (kx 2023-03-24 03:51:10 +0300 204) else
05d292b2 (kx 2023-03-24 03:51:10 +0300 205) dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
05d292b2 (kx 2023-03-24 03:51:10 +0300 206) dnl either.
05d292b2 (kx 2023-03-24 03:51:10 +0300 207) CPPFLAGS="$am_save_CPPFLAGS"
05d292b2 (kx 2023-03-24 03:51:10 +0300 208) LIBICONV=
05d292b2 (kx 2023-03-24 03:51:10 +0300 209) LTLIBICONV=
05d292b2 (kx 2023-03-24 03:51:10 +0300 210) fi
05d292b2 (kx 2023-03-24 03:51:10 +0300 211) AC_SUBST([LIBICONV])
05d292b2 (kx 2023-03-24 03:51:10 +0300 212) AC_SUBST([LTLIBICONV])
05d292b2 (kx 2023-03-24 03:51:10 +0300 213) ])
05d292b2 (kx 2023-03-24 03:51:10 +0300 214)
05d292b2 (kx 2023-03-24 03:51:10 +0300 215) dnl Define AM_ICONV using AC_DEFUN_ONCE for Autoconf >= 2.64, in order to
05d292b2 (kx 2023-03-24 03:51:10 +0300 216) dnl avoid warnings like
05d292b2 (kx 2023-03-24 03:51:10 +0300 217) dnl "warning: AC_REQUIRE: `AM_ICONV' was expanded before it was required".
05d292b2 (kx 2023-03-24 03:51:10 +0300 218) dnl This is tricky because of the way 'aclocal' is implemented:
05d292b2 (kx 2023-03-24 03:51:10 +0300 219) dnl - It requires defining an auxiliary macro whose name ends in AC_DEFUN.
05d292b2 (kx 2023-03-24 03:51:10 +0300 220) dnl Otherwise aclocal's initial scan pass would miss the macro definition.
05d292b2 (kx 2023-03-24 03:51:10 +0300 221) dnl - It requires a line break inside the AC_DEFUN_ONCE and AC_DEFUN expansions.
05d292b2 (kx 2023-03-24 03:51:10 +0300 222) dnl Otherwise aclocal would emit many "Use of uninitialized value $1"
05d292b2 (kx 2023-03-24 03:51:10 +0300 223) dnl warnings.
05d292b2 (kx 2023-03-24 03:51:10 +0300 224) m4_define([gl_iconv_AC_DEFUN],
05d292b2 (kx 2023-03-24 03:51:10 +0300 225) m4_version_prereq([2.64],
05d292b2 (kx 2023-03-24 03:51:10 +0300 226) [[AC_DEFUN_ONCE(
05d292b2 (kx 2023-03-24 03:51:10 +0300 227) [$1], [$2])]],
05d292b2 (kx 2023-03-24 03:51:10 +0300 228) [m4_ifdef([gl_00GNULIB],
05d292b2 (kx 2023-03-24 03:51:10 +0300 229) [[AC_DEFUN_ONCE(
05d292b2 (kx 2023-03-24 03:51:10 +0300 230) [$1], [$2])]],
05d292b2 (kx 2023-03-24 03:51:10 +0300 231) [[AC_DEFUN(
05d292b2 (kx 2023-03-24 03:51:10 +0300 232) [$1], [$2])]])]))
05d292b2 (kx 2023-03-24 03:51:10 +0300 233) gl_iconv_AC_DEFUN([AM_ICONV],
05d292b2 (kx 2023-03-24 03:51:10 +0300 234) [
05d292b2 (kx 2023-03-24 03:51:10 +0300 235) AM_ICONV_LINK
05d292b2 (kx 2023-03-24 03:51:10 +0300 236) if test "$am_cv_func_iconv" = yes; then
05d292b2 (kx 2023-03-24 03:51:10 +0300 237) AC_MSG_CHECKING([for iconv declaration])
05d292b2 (kx 2023-03-24 03:51:10 +0300 238) AC_CACHE_VAL([am_cv_proto_iconv], [
05d292b2 (kx 2023-03-24 03:51:10 +0300 239) AC_COMPILE_IFELSE(
05d292b2 (kx 2023-03-24 03:51:10 +0300 240) [AC_LANG_PROGRAM(
05d292b2 (kx 2023-03-24 03:51:10 +0300 241) [[
05d292b2 (kx 2023-03-24 03:51:10 +0300 242) #include <stdlib.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 243) #include <iconv.h>
05d292b2 (kx 2023-03-24 03:51:10 +0300 244) extern
05d292b2 (kx 2023-03-24 03:51:10 +0300 245) #ifdef __cplusplus
05d292b2 (kx 2023-03-24 03:51:10 +0300 246) "C"
05d292b2 (kx 2023-03-24 03:51:10 +0300 247) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 248) #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus)
05d292b2 (kx 2023-03-24 03:51:10 +0300 249) size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
05d292b2 (kx 2023-03-24 03:51:10 +0300 250) #else
05d292b2 (kx 2023-03-24 03:51:10 +0300 251) size_t iconv();
05d292b2 (kx 2023-03-24 03:51:10 +0300 252) #endif
05d292b2 (kx 2023-03-24 03:51:10 +0300 253) ]],
05d292b2 (kx 2023-03-24 03:51:10 +0300 254) [[]])],
05d292b2 (kx 2023-03-24 03:51:10 +0300 255) [am_cv_proto_iconv_arg1=""],
05d292b2 (kx 2023-03-24 03:51:10 +0300 256) [am_cv_proto_iconv_arg1="const"])
05d292b2 (kx 2023-03-24 03:51:10 +0300 257) am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"])
05d292b2 (kx 2023-03-24 03:51:10 +0300 258) am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
05d292b2 (kx 2023-03-24 03:51:10 +0300 259) AC_MSG_RESULT([
05d292b2 (kx 2023-03-24 03:51:10 +0300 260) $am_cv_proto_iconv])
05d292b2 (kx 2023-03-24 03:51:10 +0300 261) AC_DEFINE_UNQUOTED([ICONV_CONST], [$am_cv_proto_iconv_arg1],
05d292b2 (kx 2023-03-24 03:51:10 +0300 262) [Define as const if the declaration of iconv() needs const.])
05d292b2 (kx 2023-03-24 03:51:10 +0300 263) dnl Also substitute ICONV_CONST in the gnulib generated <iconv.h>.
05d292b2 (kx 2023-03-24 03:51:10 +0300 264) m4_ifdef([gl_ICONV_H_DEFAULTS],
05d292b2 (kx 2023-03-24 03:51:10 +0300 265) [AC_REQUIRE([gl_ICONV_H_DEFAULTS])
05d292b2 (kx 2023-03-24 03:51:10 +0300 266) if test -n "$am_cv_proto_iconv_arg1"; then
05d292b2 (kx 2023-03-24 03:51:10 +0300 267) ICONV_CONST="const"
05d292b2 (kx 2023-03-24 03:51:10 +0300 268) fi
05d292b2 (kx 2023-03-24 03:51:10 +0300 269) ])
05d292b2 (kx 2023-03-24 03:51:10 +0300 270) fi
05d292b2 (kx 2023-03-24 03:51:10 +0300 271) ])