X-Git-Url: https://arthur.barton.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=macros%2Ficonv.m4;h=4805662d7e3933d04aa648c41cc0d322691e7a23;hb=d4fdc0119a3fd21571e27aad6c3e6ff5c56ac880;hp=43450bd236e500204763df0e61124af76c18d804;hpb=75f45443004506dc199b0b2f99252eb8223c8e5b;p=netatalk.git diff --git a/macros/iconv.m4 b/macros/iconv.m4 index 43450bd2..4805662d 100644 --- a/macros/iconv.m4 +++ b/macros/iconv.m4 @@ -1,47 +1,73 @@ -AC_DEFUN([AM_ICONV], +AC_DEFUN([AC_NETATALK_CHECK_ICONV], [ dnl ################################################# dnl # check for libiconv support - AC_MSG_CHECKING(whether to use libiconv) + saved_CPPFLAGS="$CPPFLAGS" + savedcflags="$CFLAGS" + savedldflags="$LDFLAGS" + ICONV_CFLAGS="" + ICONV_LIBS="" + AC_ARG_WITH(libiconv, - [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include (default=auto) ], + [ --with-libiconv=BASEDIR Use libiconv in BASEDIR/lib and BASEDIR/include [[default=auto]]], [ case "$withval" in no) - AC_MSG_RESULT(no) + ;; + yes) ;; *) - AC_MSG_RESULT(yes) - savedcflags="$CFLAGS" - savedldflags="$LDFLAGS" - CFLAGS="$CFLAGS -I$withval/include" - LDFLAGS="$LDFLAGS -L$withval/lib" - AC_CHECK_LIB(iconv, iconv_open, [ - if test "$withval" != "/usr" && "$withval" != ""; then - ICONV_CFLAGS="-I$withval/include" - ICONV_LIBS ="-L$withval/lib" - fi - ICONV_LIBS="$ICONV_LIBS -liconv" - ]) - AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv]) + ICONV_CFLAGS="-I$withval/include" + ICONV_LIBS="-L$withval/$atalk_libname" ;; esac ], - AC_MSG_RESULT(no) - ) + withval="no" + ) + + CFLAGS="$ICONV_CFLAGS $CFLAGS" + LDFLAGS="$LDFLAGS $ICONV_LIBS -liconv" + + AC_CACHE_CHECK([for libiconv],netatalk_cv_iconv,[ + AC_TRY_LINK([ +#include +#include +],[ + iconv_t cd = iconv_open("",""); + iconv(cd,NULL,NULL,NULL,NULL); + iconv_close(cd); +], netatalk_cv_iconv=yes, netatalk_cv_iconv=no, netatalk_cv_iconv=cross)]) + + if test x"$netatalk_cv_iconv" = x"yes"; then + ICONV_LIBS="$ICONV_LIBS -liconv" + else +dnl # unset C-/LDFLAGS so we can detect glibc iconv, if available + CFLAGS="$savedcflags" + LDFLAGS="$savedldflags" + ICONV_LIBS="" + ICONV_CFLAGS="" + if test x"$withval" != x"no"; then + AC_MSG_ERROR([libiconv not found]) + fi + fi + + + CFLAGS_REMOVE_USR_INCLUDE(ICONV_CFLAGS) + LIB_REMOVE_USR_LIB(ICONV_LIBS) AC_SUBST(ICONV_CFLAGS) AC_SUBST(ICONV_LIBS) dnl ############ dnl # check for iconv usability + AC_CACHE_CHECK([for working iconv],netatalk_cv_HAVE_USABLE_ICONV,[ - AC_TRY_RUN([ - #include - main() { - iconv_t cd = iconv_open("MAC", "UTF8"); - if (cd == 0 || cd == (iconv_t)-1) return -1; - return 0; - } - ], netatalk_cv_HAVE_USABLE_ICONV=yes,netatalk_cv_HAVE_USABLE_ICONV=no,netatalk_cv_HAVE_USABLE_ICONV=cross)]) + AC_TRY_RUN([\ +#include +main() { + iconv_t cd = iconv_open("ASCII", "UTF-8"); + if (cd == 0 || cd == (iconv_t)-1) return -1; + return 0; +} +], netatalk_cv_HAVE_USABLE_ICONV=yes,netatalk_cv_HAVE_USABLE_ICONV=no,netatalk_cv_HAVE_USABLE_ICONV=cross)]) if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then AC_DEFINE(HAVE_USABLE_ICONV,1,[Whether to use native iconv]) @@ -49,26 +75,46 @@ dnl # check for iconv usability dnl ########### dnl # check if iconv needs const - if test x"$cv_HAVE_USABLE_ICONV" = x"yes"; then + if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then AC_CACHE_VAL(am_cv_proto_iconv, [ - AC_TRY_COMPILE([ - #include - #include - extern - #ifdef __cplusplus - "C" - #endif - #if defined(__STDC__) || defined(__cplusplus) - size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); - #else - size_t iconv(); - #endif - ], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") + AC_TRY_COMPILE([\ +#include +#include +extern +#ifdef __cplusplus +"C" +#endif +#if defined(__STDC__) || defined(__cplusplus) +size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); +#else +size_t iconv(); +#endif +], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") 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);"]) AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, [Define as const if the declaration of iconv() needs const.]) fi + +dnl ########### +dnl # check if (lib)iconv supports UCS-2-INTERNAL + if test x"$netatalk_cv_HAVE_USABLE_ICONV" = x"yes"; then + AC_CACHE_CHECK([whether iconv supports UCS-2-INTERNAL],netatalk_cv_HAVE_UCS2INTERNAL,[ + AC_TRY_RUN([\ +#include +int main() { + iconv_t cd = iconv_open("ASCII", "UCS-2-INTERNAL"); + if (cd == 0 || cd == (iconv_t)-1) return -1; + return 0; +} +], netatalk_cv_HAVE_UCS2INTERNAL=yes,netatalk_cv_HAVE_UCS2INTERNAL=no,netatalk_cv_HAVEUCS2INTERNAL=cross)]) + + if test x"$netatalk_cv_HAVE_UCS2INTERNAL" = x"yes"; then + AC_DEFINE(HAVE_UCS2INTERNAL,1,[Whether UCS-2-INTERNAL is supported]) + fi + fi + CFLAGS="$savedcflags" LDFLAGS="$savedldflags" + CPPFLAGS="$saved_CPPFLAGS" ])