Blame m4/iconv.m4

Packit Service 93d855
# iconv.m4 serial AM6 (gettext-0.17)
Packit Service 93d855
dnl Copyright (C) 2000-2002, 2007 Free Software Foundation, Inc.
Packit Service 93d855
dnl This file is free software; the Free Software Foundation
Packit Service 93d855
dnl gives unlimited permission to copy and/or distribute it,
Packit Service 93d855
dnl with or without modifications, as long as this notice is preserved.
Packit Service 93d855
Packit Service 93d855
dnl From Bruno Haible.
Packit Service 93d855
Packit Service 93d855
AC_DEFUN([AM_ICONV_LINKFLAGS_BODY],
Packit Service 93d855
[
Packit Service 93d855
  dnl Prerequisites of AC_LIB_LINKFLAGS_BODY.
Packit Service 93d855
  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
Packit Service 93d855
  AC_REQUIRE([AC_LIB_RPATH])
Packit Service 93d855
Packit Service 93d855
  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
Packit Service 93d855
  dnl accordingly.
Packit Service 93d855
  AC_LIB_LINKFLAGS_BODY([iconv])
Packit Service 93d855
])
Packit Service 93d855
Packit Service 93d855
AC_DEFUN([AM_ICONV_LINK],
Packit Service 93d855
[
Packit Service 93d855
  dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and
Packit Service 93d855
  dnl those with the standalone portable GNU libiconv installed).
Packit Service 93d855
  AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
Packit Service 93d855
Packit Service 93d855
  dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV
Packit Service 93d855
  dnl accordingly.
Packit Service 93d855
  AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY])
Packit Service 93d855
Packit Service 93d855
  dnl Add $INCICONV to CPPFLAGS before performing the following checks,
Packit Service 93d855
  dnl because if the user has installed libiconv and not disabled its use
Packit Service 93d855
  dnl via --without-libiconv-prefix, he wants to use it. The first
Packit Service 93d855
  dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed.
Packit Service 93d855
  am_save_CPPFLAGS="$CPPFLAGS"
Packit Service 93d855
  AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV])
Packit Service 93d855
Packit Service 93d855
  AC_CACHE_CHECK([for iconv], am_cv_func_iconv, [
Packit Service 93d855
    am_cv_func_iconv="no, consider installing GNU libiconv"
Packit Service 93d855
    am_cv_lib_iconv=no
Packit Service 93d855
    AC_TRY_LINK([#include <stdlib.h>
Packit Service 93d855
#include <iconv.h>],
Packit Service 93d855
      [iconv_t cd = iconv_open("","");
Packit Service 93d855
       iconv(cd,NULL,NULL,NULL,NULL);
Packit Service 93d855
       iconv_close(cd);],
Packit Service 93d855
      am_cv_func_iconv=yes)
Packit Service 93d855
    if test "$am_cv_func_iconv" != yes; then
Packit Service 93d855
      am_save_LIBS="$LIBS"
Packit Service 93d855
      LIBS="$LIBS $LIBICONV"
Packit Service 93d855
      AC_TRY_LINK([#include <stdlib.h>
Packit Service 93d855
#include <iconv.h>],
Packit Service 93d855
        [iconv_t cd = iconv_open("","");
Packit Service 93d855
         iconv(cd,NULL,NULL,NULL,NULL);
Packit Service 93d855
         iconv_close(cd);],
Packit Service 93d855
        am_cv_lib_iconv=yes
Packit Service 93d855
        am_cv_func_iconv=yes)
Packit Service 93d855
      LIBS="$am_save_LIBS"
Packit Service 93d855
    fi
Packit Service 93d855
  ])
Packit Service 93d855
  if test "$am_cv_func_iconv" = yes; then
Packit Service 93d855
    AC_CACHE_CHECK([for working iconv], am_cv_func_iconv_works, [
Packit Service 93d855
      dnl This tests against bugs in AIX 5.1 and HP-UX 11.11.
Packit Service 93d855
      am_save_LIBS="$LIBS"
Packit Service 93d855
      if test $am_cv_lib_iconv = yes; then
Packit Service 93d855
        LIBS="$LIBS $LIBICONV"
Packit Service 93d855
      fi
Packit Service 93d855
      AC_TRY_RUN([
Packit Service 93d855
#include <iconv.h>
Packit Service 93d855
#include <string.h>
Packit Service 93d855
int main ()
Packit Service 93d855
{
Packit Service 93d855
  /* Test against AIX 5.1 bug: Failures are not distinguishable from successful
Packit Service 93d855
     returns.  */
Packit Service 93d855
  {
Packit Service 93d855
    iconv_t cd_utf8_to_88591 = iconv_open ("ISO8859-1", "UTF-8");
Packit Service 93d855
    if (cd_utf8_to_88591 != (iconv_t)(-1))
Packit Service 93d855
      {
Packit Service 93d855
        static const char input[] = "\342\202\254"; /* EURO SIGN */
Packit Service 93d855
        char buf[10];
Packit Service 93d855
        const char *inptr = input;
Packit Service 93d855
        size_t inbytesleft = strlen (input);
Packit Service 93d855
        char *outptr = buf;
Packit Service 93d855
        size_t outbytesleft = sizeof (buf);
Packit Service 93d855
        size_t res = iconv (cd_utf8_to_88591,
Packit Service 93d855
                            (char **) &inptr, &inbytesleft,
Packit Service 93d855
                            &outptr, &outbytesleft);
Packit Service 93d855
        if (res == 0)
Packit Service 93d855
          return 1;
Packit Service 93d855
      }
Packit Service 93d855
  }
Packit Service 93d855
#if 0 /* This bug could be worked around by the caller.  */
Packit Service 93d855
  /* Test against HP-UX 11.11 bug: Positive return value instead of 0.  */
Packit Service 93d855
  {
Packit Service 93d855
    iconv_t cd_88591_to_utf8 = iconv_open ("utf8", "iso88591");
Packit Service 93d855
    if (cd_88591_to_utf8 != (iconv_t)(-1))
Packit Service 93d855
      {
Packit Service 93d855
        static const char input[] = "\304rger mit b\366sen B\374bchen ohne Augenma\337";
Packit Service 93d855
        char buf[50];
Packit Service 93d855
        const char *inptr = input;
Packit Service 93d855
        size_t inbytesleft = strlen (input);
Packit Service 93d855
        char *outptr = buf;
Packit Service 93d855
        size_t outbytesleft = sizeof (buf);
Packit Service 93d855
        size_t res = iconv (cd_88591_to_utf8,
Packit Service 93d855
                            (char **) &inptr, &inbytesleft,
Packit Service 93d855
                            &outptr, &outbytesleft);
Packit Service 93d855
        if ((int)res > 0)
Packit Service 93d855
          return 1;
Packit Service 93d855
      }
Packit Service 93d855
  }
Packit Service 93d855
#endif
Packit Service 93d855
  /* Test against HP-UX 11.11 bug: No converter from EUC-JP to UTF-8 is
Packit Service 93d855
     provided.  */
Packit Service 93d855
  if (/* Try standardized names.  */
Packit Service 93d855
      iconv_open ("UTF-8", "EUC-JP") == (iconv_t)(-1)
Packit Service 93d855
      /* Try IRIX, OSF/1 names.  */
Packit Service 93d855
      && iconv_open ("UTF-8", "eucJP") == (iconv_t)(-1)
Packit Service 93d855
      /* Try AIX names.  */
Packit Service 93d855
      && iconv_open ("UTF-8", "IBM-eucJP") == (iconv_t)(-1)
Packit Service 93d855
      /* Try HP-UX names.  */
Packit Service 93d855
      && iconv_open ("utf8", "eucJP") == (iconv_t)(-1))
Packit Service 93d855
    return 1;
Packit Service 93d855
  return 0;
Packit Service 93d855
}], [am_cv_func_iconv_works=yes], [am_cv_func_iconv_works=no],
Packit Service 93d855
        [case "$host_os" in
Packit Service 93d855
           aix* | hpux*) am_cv_func_iconv_works="guessing no" ;;
Packit Service 93d855
           *)            am_cv_func_iconv_works="guessing yes" ;;
Packit Service 93d855
         esac])
Packit Service 93d855
      LIBS="$am_save_LIBS"
Packit Service 93d855
    ])
Packit Service 93d855
    case "$am_cv_func_iconv_works" in
Packit Service 93d855
      *no) am_func_iconv=no am_cv_lib_iconv=no ;;
Packit Service 93d855
      *)   am_func_iconv=yes ;;
Packit Service 93d855
    esac
Packit Service 93d855
  else
Packit Service 93d855
    am_func_iconv=no am_cv_lib_iconv=no
Packit Service 93d855
  fi
Packit Service 93d855
  if test "$am_func_iconv" = yes; then
Packit Service 93d855
    AC_DEFINE(HAVE_ICONV, 1,
Packit Service 93d855
      [Define if you have the iconv() function and it works.])
Packit Service 93d855
  fi
Packit Service 93d855
  if test "$am_cv_lib_iconv" = yes; then
Packit Service 93d855
    AC_MSG_CHECKING([how to link with libiconv])
Packit Service 93d855
    AC_MSG_RESULT([$LIBICONV])
Packit Service 93d855
  else
Packit Service 93d855
    dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV
Packit Service 93d855
    dnl either.
Packit Service 93d855
    CPPFLAGS="$am_save_CPPFLAGS"
Packit Service 93d855
    LIBICONV=
Packit Service 93d855
    LTLIBICONV=
Packit Service 93d855
  fi
Packit Service 93d855
  AC_SUBST(LIBICONV)
Packit Service 93d855
  AC_SUBST(LTLIBICONV)
Packit Service 93d855
])
Packit Service 93d855
Packit Service 93d855
AC_DEFUN([AM_ICONV],
Packit Service 93d855
[
Packit Service 93d855
  AM_ICONV_LINK
Packit Service 93d855
  if test "$am_cv_func_iconv" = yes; then
Packit Service 93d855
    AC_MSG_CHECKING([for iconv declaration])
Packit Service 93d855
    AC_CACHE_VAL(am_cv_proto_iconv, [
Packit Service 93d855
      AC_TRY_COMPILE([
Packit Service 93d855
#include <stdlib.h>
Packit Service 93d855
#include <iconv.h>
Packit Service 93d855
extern
Packit Service 93d855
#ifdef __cplusplus
Packit Service 93d855
"C"
Packit Service 93d855
#endif
Packit Service 93d855
#if defined(__STDC__) || defined(__cplusplus)
Packit Service 93d855
size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
Packit Service 93d855
#else
Packit Service 93d855
size_t iconv();
Packit Service 93d855
#endif
Packit Service 93d855
], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
Packit Service 93d855
      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);"])
Packit Service 93d855
    am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'`
Packit Service 93d855
    AC_MSG_RESULT([$]{ac_t:-
Packit Service 93d855
         }[$]am_cv_proto_iconv)
Packit Service 93d855
    AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
Packit Service 93d855
      [Define as const if the declaration of iconv() needs const.])
Packit Service 93d855
  fi
Packit Service 93d855
])