]> 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 8a0fffdfcb95a877e632513203cb98200683bc30..c7c91034b6f190193be7bb409a564b5a0d9f8b2a 100644 (file)
@@ -1,30 +1,54 @@
-AC_DEFUN([AM_ICONV],
+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)
@@ -33,11 +57,12 @@ dnl # check for libiconv support
 
 dnl    ############
 dnl    # check for iconv usability
+
        AC_CACHE_CHECK([for working iconv],netatalk_cv_HAVE_USABLE_ICONV,[
                AC_TRY_RUN([\
 #include <iconv.h>
 main() {
-       iconv_t cd = iconv_open("MAC", "UTF8");
+       iconv_t cd = iconv_open("ASCII", "UTF-8");
        if (cd == 0 || cd == (iconv_t)-1) return -1;
        return 0;
 }
@@ -49,7 +74,7 @@ main() {
 
 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 <stdlib.h>
@@ -68,7 +93,27 @@ 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"
        
 ])