]> arthur.barton.de Git - netatalk.git/blob - macros/iconv.m4
fix a Solaris compile warning, missing include
[netatalk.git] / macros / iconv.m4
1 AC_DEFUN([AC_CHECK_ICONV],
2 [
3
4 dnl     #################################################
5 dnl     # check for libiconv support
6         AC_MSG_CHECKING(whether to use libiconv)
7         savedcflags="$CFLAGS"
8         savedldflags="$LDFLAGS"
9         netatalk_cv_libiconv=no
10         AC_ARG_WITH(libiconv,
11         [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include [[default=auto]]],
12         [ case "$withval" in
13           no)
14             AC_MSG_RESULT(no)
15             ;;
16           *)
17             AC_MSG_RESULT(yes)
18             CFLAGS="$CFLAGS -I$withval/include"
19             LDFLAGS="$LDFLAGS -L$withval/$atalk_libname"
20             AC_CHECK_LIB(iconv, iconv_open, [
21                         ICONV_CFLAGS="-I$withval/include"
22                         ICONV_LIBS="-L$withval/$atalk_libname -liconv"
23                         netatalk_cv_libiconv=yes
24                         AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv])
25                         ], [
26                         AC_MSG_ERROR([libiconv not found in specified path: $withval])
27             ])
28             ;;
29           esac ],
30           AC_MSG_RESULT(no)
31         )
32
33         CFLAGS_REMOVE_USR_INCLUDE(ICONV_CFLAGS)
34         LIB_REMOVE_USR_LIB(ICONV_LIBS)
35         AC_SUBST(ICONV_CFLAGS)
36         AC_SUBST(ICONV_LIBS)
37
38 dnl     ############
39 dnl     # check for iconv usability
40
41         saved_CPPFLAGS="$CPPFLAGS"
42         CPPFLAGS="$CFLAGS $ICONV_CFLAGS $ICONV_LIBS"
43         AC_CACHE_CHECK([for working iconv],netatalk_cv_HAVE_USABLE_ICONV,[
44                 AC_TRY_RUN([\
45 #include <iconv.h>
46 main() {
47        iconv_t cd = iconv_open("ASCII", "UTF-8");
48        if (cd == 0 || cd == (iconv_t)-1) return -1;
49        return 0;
50 }
51 ], netatalk_cv_HAVE_USABLE_ICONV=yes,netatalk_cv_HAVE_USABLE_ICONV=no,netatalk_cv_HAVE_USABLE_ICONV=cross)])
52
53         if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then
54             AC_DEFINE(HAVE_USABLE_ICONV,1,[Whether to use native iconv])
55         fi
56
57 dnl     ###########
58 dnl     # check if iconv needs const
59         if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then
60                 AC_CACHE_VAL(am_cv_proto_iconv, [
61                 AC_TRY_COMPILE([\
62 #include <stdlib.h>
63 #include <iconv.h>
64 extern
65 #ifdef __cplusplus
66 "C"
67 #endif
68 #if defined(__STDC__) || defined(__cplusplus)
69 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
70 #else
71 size_t iconv();
72 #endif
73 ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
74                 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);"])
75                 AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
76                         [Define as const if the declaration of iconv() needs const.])
77         fi
78
79 dnl     ###########
80 dnl     # check if libiconv supports UCS-2-INTERNAL
81         if test x"$netatalk_cv_libiconv" = x"yes"; then
82             AC_CACHE_CHECK([whether iconv supports UCS-2-INTERNAL],netatalk_cv_HAVE_UCS2INTERNAL,[
83                 AC_TRY_RUN([\
84 #include <iconv.h>
85 int main() {
86        iconv_t cd = iconv_open("ASCII", "UCS-2-INTERNAL");
87        if (cd == 0 || cd == (iconv_t)-1) return -1;
88        return 0;
89 }
90 ], netatalk_cv_HAVE_UCS2INTERNAL=yes,netatalk_cv_HAVE_UCS2INTERNAL=no,netatalk_cv_HAVEUCS2INTERNAL=cross)])
91
92         if test x"$netatalk_cv_HAVE_UCS2INTERNAL" = x"yes"; then
93                 AC_DEFINE(HAVE_UCS2INTERNAL,1,[Whether UCS-2-INTERNAL is supported])
94         fi
95         fi
96         CFLAGS="$savedcflags"
97         LDFLAGS="$savedldflags"
98         CPPFLAGS="$saved_CPPFLAGS"
99         
100 ])