]> arthur.barton.de Git - netatalk.git/commitdiff
rework iconv detection, always check for libiconv. Make sure we use the right native...
authorbfernhomberg <bfernhomberg>
Wed, 11 Aug 2004 02:54:54 +0000 (02:54 +0000)
committerbfernhomberg <bfernhomberg>
Wed, 11 Aug 2004 02:54:54 +0000 (02:54 +0000)
libatalk/unicode/iconv.c
macros/iconv.m4

index af429e21589e2f50572ec762d4a56bc45036c7c4..c5657de66245ab1658ba6101704cfeba868ffa23 100644 (file)
  **/
 #define CHARSET_WIDECHAR    32
 
-#if defined(WITH_LIBICONV) && defined(HAVE_UCS2INTERNAL)
+#ifdef HAVE_USABLE_ICONV
+#ifdef HAVE_UCS2INTERNAL
 #define UCS2ICONV "UCS-2-INTERNAL"
-#else
+#else /* !HAVE_UCS2INTERNAL */
 #if BYTE_ORDER==LITTLE_ENDIAN
 #define UCS2ICONV "UCS-2LE"
-#else
+#else /* !LITTLE_ENDIAN */
 #define UCS2ICONV "UCS-2BE"
-#endif
-#endif
-
+#endif /* BYTE_ORDER */
+#endif /* HAVE_UCS2INTERNAL */
+#else /* !HAVE_USABLE_ICONV */
+#define UCS2ICONV "UCS-2"
+#endif /* HAVE_USABLE_ICONV */
 
 static size_t ascii_pull(void *,char **, size_t *, char **, size_t *);
 static size_t ascii_push(void *,char **, size_t *, char **, size_t *);
index 6f6e393c5f21596a30e78b9dc79a7fa24949370a..c7c91034b6f190193be7bb409a564b5a0d9f8b2a 100644 (file)
@@ -3,32 +3,52 @@ AC_DEFUN([AC_CHECK_ICONV],
 
 dnl    #################################################
 dnl    # check for libiconv support
-       AC_MSG_CHECKING(whether to use libiconv)
         savedcflags="$CFLAGS"
         savedldflags="$LDFLAGS"
-       netatalk_cv_libiconv=no
+       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/$atalk_libname"
-           AC_CHECK_LIB(iconv, iconv_open, [
-                       ICONV_CFLAGS="-I$withval/include"
-                       ICONV_LIBS="-L$withval/$atalk_libname -liconv"
-                       netatalk_cv_libiconv=yes
-                       AC_DEFINE_UNQUOTED(WITH_LIBICONV, "${withval}",[Path to iconv])
-                       ], [
-                       AC_MSG_ERROR([libiconv not found in specified path: $withval])
-           ])
+           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)
@@ -38,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>
@@ -77,8 +95,8 @@ size_t iconv();
        fi
 
 dnl     ###########
-dnl     # check if libiconv supports UCS-2-INTERNAL
-       if test x"$netatalk_cv_libiconv" = x"yes"; then
+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>
@@ -93,6 +111,7 @@ int main() {
                AC_DEFINE(HAVE_UCS2INTERNAL,1,[Whether UCS-2-INTERNAL is supported])
        fi
        fi
+
         CFLAGS="$savedcflags"
         LDFLAGS="$savedldflags"
        CPPFLAGS="$saved_CPPFLAGS"