1 AC_DEFUN([AC_CHECK_ICONV],
4 dnl #################################################
5 dnl # check for libiconv support
6 saved_CPPFLAGS="$CPPFLAGS"
8 savedldflags="$LDFLAGS"
13 [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include [[default=auto]]],
20 ICONV_CFLAGS="-I$withval/include"
21 ICONV_LIBS="-L$withval/$atalk_libname"
27 CFLAGS="$ICONV_CFLAGS $CFLAGS"
28 LDFLAGS="$LDFLAGS $ICONV_LIBS -liconv"
30 AC_CACHE_CHECK([for libiconv],netatalk_cv_iconv,[
35 iconv_t cd = iconv_open("","");
36 iconv(cd,NULL,NULL,NULL,NULL);
38 ], netatalk_cv_iconv=yes, netatalk_cv_iconv=no, netatalk_cv_iconv=cross)])
40 if test x"$netatalk_cv_iconv" = x"yes"; then
41 ICONV_LIBS="$ICONV_LIBS -liconv"
43 dnl # unset C-/LDFLAGS so we can detect glibc iconv, if available
45 LDFLAGS="$savedldflags"
48 if test x"$withval" != x"no"; then
49 AC_MSG_ERROR([libiconv not found])
54 CFLAGS_REMOVE_USR_INCLUDE(ICONV_CFLAGS)
55 LIB_REMOVE_USR_LIB(ICONV_LIBS)
56 AC_SUBST(ICONV_CFLAGS)
60 dnl # check for iconv usability
62 AC_CACHE_CHECK([for working iconv],netatalk_cv_HAVE_USABLE_ICONV,[
66 iconv_t cd = iconv_open("ASCII", "UTF-8");
67 if (cd == 0 || cd == (iconv_t)-1) return -1;
70 ], netatalk_cv_HAVE_USABLE_ICONV=yes,netatalk_cv_HAVE_USABLE_ICONV=no,netatalk_cv_HAVE_USABLE_ICONV=cross)])
72 if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then
73 AC_DEFINE(HAVE_USABLE_ICONV,1,[Whether to use native iconv])
77 dnl # check if iconv needs const
78 if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then
79 AC_CACHE_VAL(am_cv_proto_iconv, [
87 #if defined(__STDC__) || defined(__cplusplus)
88 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
92 ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
93 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);"])
94 AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
95 [Define as const if the declaration of iconv() needs const.])
99 dnl # check if (lib)iconv supports UCS-2-INTERNAL
100 if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then
101 AC_CACHE_CHECK([whether iconv supports UCS-2-INTERNAL],netatalk_cv_HAVE_UCS2INTERNAL,[
105 iconv_t cd = iconv_open("ASCII", "UCS-2-INTERNAL");
106 if (cd == 0 || cd == (iconv_t)-1) return -1;
109 ], netatalk_cv_HAVE_UCS2INTERNAL=yes,netatalk_cv_HAVE_UCS2INTERNAL=no,netatalk_cv_HAVEUCS2INTERNAL=cross)])
111 if test x"$netatalk_cv_HAVE_UCS2INTERNAL" = x"yes"; then
112 AC_DEFINE(HAVE_UCS2INTERNAL,1,[Whether UCS-2-INTERNAL is supported])
116 CFLAGS="$savedcflags"
117 LDFLAGS="$savedldflags"
118 CPPFLAGS="$saved_CPPFLAGS"