]> arthur.barton.de Git - netatalk.git/blobdiff - macros/iconv.m4
Revert changes back to 1.16.6.8.2.1, the fix will only appear in HEAD
[netatalk.git] / macros / iconv.m4
index b750f4bcf9e251a2866056edeb0b754086a462f4..c7c91034b6f190193be7bb409a564b5a0d9f8b2a 100644 (file)
@@ -3,28 +3,52 @@ AC_DEFUN([AC_CHECK_ICONV],
 
 dnl    #################################################
 dnl    # check for libiconv support
-       AC_MSG_CHECKING(whether to use libiconv)
         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]]],
        [ case "$withval" in
          no)
-           AC_MSG_RESULT(no)
+           ;;
+         yes)
            ;;
          *)
-           AC_MSG_RESULT(yes)
-           CFLAGS="$CFLAGS -I$withval/include"
-           LDFLAGS="$LDFLAGS -L$withval/lib"
-           AC_CHECK_LIB(iconv, iconv_open, [
-                                ICONV_CFLAGS="-I$withval/include"
-                                ICONV_LIBS="-L$withval/lib -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 <stdlib.h>
+#include <iconv.h>
+],[
+       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)
@@ -34,8 +58,6 @@ dnl   # check for libiconv support
 dnl    ############
 dnl    # check for iconv usability
 
-       saved_CPPFLAGS="$CPPFLAGS"
-       CPPFLAGS="$CFLAGS $ICONV_CFLAGS $ICONV_LIBS"
        AC_CACHE_CHECK([for working iconv],netatalk_cv_HAVE_USABLE_ICONV,[
                AC_TRY_RUN([\
 #include <iconv.h>
@@ -71,6 +93,25 @@ size_t iconv();
                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 <iconv.h>
+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"