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