Towards 3.0.2.
[yaz-moved-to-github.git] / configure.ac
index 84119e4..e87b59b 100644 (file)
@@ -1,8 +1,8 @@
 dnl YAZ Toolkit, Index Data 1995-2007
 dnl See the file LICENSE for details.
-dnl $Id: configure.ac,v 1.59 2007-01-24 10:09:31 adam Exp $
+dnl $Id: configure.ac,v 1.78 2007-05-08 08:27:13 adam Exp $
 AC_PREREQ(2.59)
-AC_INIT([yaz],[2.1.49],[yaz-help@indexdata.dk])
+AC_INIT([yaz],[3.0.2],[yaz-help@indexdata.dk])
 AC_CONFIG_SRCDIR(configure.ac)
 AC_CONFIG_AUX_DIR([config])
 AM_INIT_AUTOMAKE([1.8])
@@ -23,7 +23,21 @@ YAZ_DOC
 dnl 
 dnl
 dnl ------ Headers
-AC_CHECK_HEADERS(dirent.h fnmatch.h wchar.h locale.h langinfo.h pwd.h sys/select.h sys/socket.h sys/stat.h sys/time.h sys/times.h sys/types.h sys/un.h sys/wait.h unistd.h netinet/if_ether.h netinet/in_systm.h)
+AC_CHECK_HEADERS([dirent.h fnmatch.h wchar.h locale.h langinfo.h pwd.h unistd.h sys/select.h sys/socket.h sys/stat.h sys/time.h sys/times.h sys/types.h sys/un.h sys/wait.h netdb.h arpa/inet.h netinet/tcp.h netinet/in_systm.h])
+AC_CHECK_HEADERS([net/if.h netinet/in.h netinet/if_ether.h],[],[],[
+ #if HAVE_SYS_TYPES_H
+ #include <sys/types.h>
+ #endif
+ #if HAVE_SYS_SOCKET_H
+ #include <sys/socket.h>
+ #endif
+ #if HAVE_NET_IF_H
+ #include <net/if.h>
+ #endif
+ #if HAVE_NETINET_IN_H
+ #include <netinet/in.h>
+ #endif
+])
 AC_HEADER_STDC
 if test "$ac_cv_header_stdc" = "no"; then
     AC_MSG_WARN([Your system doesn not seem to support ANSI C])
@@ -173,28 +187,28 @@ AC_ARG_WITH(pcap, [  --with-pcap[=DIR]         libpcap root dir located in (dir)
 
 AC_MSG_CHECKING([for libpcap (required for ziffy)])
 if test "${PCAP_DIR}" != "no"; then
-    if test "${PCAP_DIR}" != "yes" && test "${PCAP_DIR}" != "default"; then
+    if test "${ac_cv_header_netinet_if_ether_h}" = "no"; then
+       :
+    elif test "${PCAP_DIR}" != "yes" && test "${PCAP_DIR}" != "default"; then
        if test -r $PCAP_DIR/libpcap.a && test -r $PCAP_DIR/pcap.h; then
            PCAP_DIR="$PCAP_DIR"
            PCAP_LIBS="${LIBS} -L$PCAP_DIR -lpcap"
            PCAP_CFLAGS="${INCS} -I$PCAP_DIR"
            ZIFFY_PROG=ziffy
        fi
-    else
-       if test -d /usr/local &&
-           test -r /usr/local/lib/libpcap.a &&
-           test -r /usr/local/include/pcap.h; then
-           PCAP_DIR="/usr/local"
-           PCAP_LIBS="${LIBS} -L$PCAP_DIR/lib -lpcap"
-           PCAP_CFLAGS="${INCS} -I$PCAP_DIR/include"
-           ZIFFY_PROG=ziffy
-       elif test -d /usr &&
-           test -r /usr/lib/libpcap.a &&
-           test -r /usr/include/pcap.h; then
-           PCAP_DIR="/usr"
-           PCAP_LIBS="${LIBS} -lpcap"
-           ZIFFY_PROG=ziffy
-       fi
+    elif test -d /usr/local &&
+       test -r /usr/local/lib/libpcap.a &&
+       test -r /usr/local/include/pcap.h; then
+       PCAP_DIR="/usr/local"
+       PCAP_LIBS="${LIBS} -L$PCAP_DIR/lib -lpcap"
+       PCAP_CFLAGS="${INCS} -I$PCAP_DIR/include"
+       ZIFFY_PROG=ziffy
+    elif test -d /usr &&
+       test -r /usr/lib/libpcap.a &&
+       test -r /usr/include/pcap.h; then
+       PCAP_DIR="/usr"
+       PCAP_LIBS="${LIBS} -lpcap"
+       ZIFFY_PROG=ziffy
     fi
 fi
 if test -z "$ZIFFY_PROG"; then
@@ -300,72 +314,55 @@ if test "$enable_tcpd" -a "$enable_tcpd" != "no"; then
     fi
 fi
 dnl
-AC_SUBST(THREAD_CFLAGS)
+AC_SUBST(YAZ_CONFIG_CFLAGS)
+dnl
 HAVETHREADS=0
-THREAD_CFLAGS=""
-LIBTHREAD=""
 dnl
 dnl ------ GNU threads
 AC_ARG_ENABLE(pth, [  --enable-pth            enable GNU threads],[enable_pth=$enableval],[enable_pth=no])
 AC_SUBST(LIBPTH)
 if test "$enable_pth" = "yes"; then
+    PTH_LIBS=""
     OLIBS=$LIBS
     AC_CHECK_LIB(pth,main)
     if test "$ac_cv_lib_pth_main" = "yes"; then
        AC_CHECK_HEADERS(pth.h)
        if test "$ac_cv_header_pth_h" = "yes"; then
-           LIBTHREAD="-lpth"
-           THREAD_CFLAGS="-DYAZ_GNU_THREADS=1"
+           PTH_LIBS="-lpth"
+           CFLAGS="$CFLAGS -DYAZ_GNU_THREADS=1"
            HAVETHREADS=1
        fi
     fi 
-    LIBS="$OLIBS $LIBTHREAD"
+    LIBS="$OLIBS $PTH_LIBS"
 fi
 dnl
 dnl ------ POSIX Threads
 AC_ARG_ENABLE(threads, [  --disable-threads       disable POSIX threads],[enable_threads=$enableval],[enable_threads=yes])
 if test "$enable_threads" = "yes" -a "$HAVETHREADS" = "0"; then
-    OLIBS=$LIBS
-    OCC=$CC
-    AC_CHECK_LIB(pthread,main)
-    AC_MSG_CHECKING(for working POSIX Threads)
-    AC_TRY_LINK([#include <pthread.h>
-           void *func(void *p) { return 0; }
-           ],[
-           pthread_t pthread_id;
-           pthread_create (&pthread_id, 0, func, 0);],
-       thread_ok=yes,thread_ok=no)
-    if test "$thread_ok" = "yes"; then
-       AC_MSG_RESULT(yes)
-       LIBTHREAD="-lpthread"
-       THREAD_CFLAGS="-DYAZ_POSIX_THREADS=1 -D_REENTRANT"
-       HAVETHREADS=1
-    else
-       CC="$CC -pthread"
-       AC_TRY_LINK([#include <pthread.h>
-               void *func(void *p) { return 0; }
-               ],[
-               pthread_t pthread_id;
-               pthread_create (&pthread_id, 0, func, 0);],
-           thread_ok=yes,thread_ok=no)
-       if test "$thread_ok" = "yes"; then
-           AC_MSG_RESULT([yes,BSD])
-           THREAD_CFLAGS="-pthread -DYAZ_POSIX_THREADS=1 -D_REENTRANT"
-           LIBTHREAD="-pthread"
-           HAVETHREADS=1
-       fi
-    fi
-    if test "$thread_ok" = "no"; then
-       AC_MSG_RESULT(no)
-    fi
-    CC=$OCC
-    LIBS="$OLIBS $LIBTHREAD"
+    ACX_PTHREAD([
+           OCFLAGS=$CFLAGS
+           CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+           dnl unfortunately empty thread lib spec is problematic because 
+            dnl 'yaz-config --cflags' is not always passed to linker in 
+            dnl applications using YAZ (such as Zebra).
+           if test "x$PTHREAD_LIBS" = "x"; then
+               OLIBS=$LIBS
+               for lib in -lpthread -lpthreads -lc_r; do
+                   LIBS="$lib $OLIBS"
+                   AC_TRY_LINK([ #include <pthread.h> ],
+                           [ pthread_t id; pthread_join(id, 0); ],
+                           [ PTHREAD_LIBS=$lib; break ]
+                       )
+               done
+               LIBS=$OLIBS
+           fi
+           CFLAGS=$OCFLAGS
+           PTHREAD_CFLAGS="$PTHREAD_CFLAGS -DYAZ_POSIX_THREADS=1"
+           ])
 fi
 
 dnl ----- libXSLT/libEXLT/libXML2
 AC_SUBST(XML2_CFLAGS)
-AC_SUBST(YAZ_CONFIG_CFLAGS)
-YAZ_CONFIG_CFLAGS=""
 
 YAZ_LIBXML2(
     [