]> arthur.barton.de Git - netatalk.git/blob - macros/iconv.m4
big merge for db frontend and unicode.
[netatalk.git] / macros / iconv.m4
1 AC_DEFUN([AM_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         AC_ARG_WITH(libiconv,
10         [  --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ],
11         [ case "$withval" in
12           no)
13             AC_MSG_RESULT(no)
14             ;;
15           *)
16             AC_MSG_RESULT(yes)
17             CFLAGS="$CFLAGS -I$withval/include"
18             LDFLAGS="$LDFLAGS -L$withval/lib"
19             AC_CHECK_LIB(iconv, iconv_open, [
20                                 if test "$withval" != "/usr" && test "$withval" != ""; then
21                                     ICONV_CFLAGS="-I$withval/include"
22                                     ICONV_LIBS ="-L$withval/lib"
23                                 fi
24                                 ICONV_LIBS="$ICONV_LIBS -liconv"
25                         ])
26             AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv])
27             ;;
28           esac ],
29           AC_MSG_RESULT(no)
30         )
31
32         CFLAGS_REMOVE_USR_INCLUDE(ICONV_CFLAGS)
33         LIB_REMOVE_USR_LIB(ICONV_LIBS)
34         AC_SUBST(ICONV_CFLAGS)
35         AC_SUBST(ICONV_LIBS)
36
37 dnl     ############
38 dnl     # check for iconv usability
39         AC_CACHE_CHECK([for working iconv],netatalk_cv_HAVE_USABLE_ICONV,[
40                 AC_TRY_RUN([
41         #include <iconv.h>
42         main() {
43                iconv_t cd = iconv_open("MAC", "UTF8");
44                if (cd == 0 || cd == (iconv_t)-1) return -1;
45                return 0;
46         }
47         ], netatalk_cv_HAVE_USABLE_ICONV=yes,netatalk_cv_HAVE_USABLE_ICONV=no,netatalk_cv_HAVE_USABLE_ICONV=cross)])
48
49         if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then
50             AC_DEFINE(HAVE_USABLE_ICONV,1,[Whether to use native iconv])
51         fi
52
53 dnl     ###########
54 dnl     # check if iconv needs const
55         if test x"$cv_HAVE_USABLE_ICONV" = x"yes"; then
56                 AC_CACHE_VAL(am_cv_proto_iconv, [
57                 AC_TRY_COMPILE([
58                 #include <stdlib.h>
59                 #include <iconv.h>
60                 extern
61                 #ifdef __cplusplus
62                 "C"
63                 #endif
64                 #if defined(__STDC__) || defined(__cplusplus)
65                 size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
66                 #else
67                 size_t iconv();
68                 #endif
69                 ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const")
70                 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);"])
71                 AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1,
72                         [Define as const if the declaration of iconv() needs const.])
73         fi
74         CFLAGS="$savedcflags"
75         LDFLAGS="$savedldflags"
76         
77 ])