Bump version to 3.0.29.
[yaz-moved-to-github.git] / configure.ac
index 80f4d8e..917a122 100644 (file)
@@ -1,29 +1,41 @@
-dnl YAZ Toolkit, Index Data 1994-2006
-dnl See the file LICENSE for details.
-dnl $Id: configure.ac,v 1.41 2006-10-04 08:04:09 adam Exp $
-AC_PREREQ(2.59)
-AC_INIT([yaz],[2.1.34],[yaz-help@indexdata.dk])
-AC_CONFIG_SRCDIR(configure.ac)
+dnl This file is part of the YAZ toolkit.
+dnl Copyright (C) 1995-2008 Index Data
+AC_PREREQ([2.60])
+AC_INIT([yaz],[3.0.29],[yaz-help@indexdata.dk])
+AC_CONFIG_SRCDIR([configure.ac])
 AC_CONFIG_AUX_DIR([config])
-AM_INIT_AUTOMAKE([1.8])
+AM_INIT_AUTOMAKE([1.9])
 dnl
-AC_SUBST(READLINE_LIBS)
-AC_SUBST(YAZ_CONF_CFLAGS)
+AC_SUBST([READLINE_LIBS])
+AC_SUBST([YAZ_CONF_CFLAGS])
 dnl ------ Checking programs
 AC_PROG_CC
 AC_PROG_CPP
-AC_CHECK_PROGS(YACC, 'bison -y')
+AC_CHECK_PROGS([YACC], 'bison -y')
 test -z "$YACC" && AC_MSG_WARN([GNU bison not found])
-AC_CHECK_PROGS(TCLSH, tclsh8.5 tclsh8.4 tclsh8.3 tclsh8.2, tclsh)
+AC_CHECK_PROGS([TCLSH], [tclsh tclsh8.5 tclsh8.4 tclsh8.3 tclsh8.2], [tclsh])
 AC_PROG_INSTALL
 AM_PROG_LIBTOOL
-AC_PATH_PROG(pkgconfigpath, pkg-config, NONE)
+AC_PATH_PROG([pkgconfigpath],[pkg-config],[NONE])
 dnl
 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/types.h sys/un.h sys/wait.h unistd.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])
@@ -33,21 +45,21 @@ AC_CHECK_TYPES([long long])
 dnl
 dnl ----- Sockets
 checkBoth=0
-AC_CHECK_FUNC(connect)
+AC_CHECK_FUNC([connect])
 if test "$ac_cv_func_connect" = "no"; then
-    AC_CHECK_LIB(socket, main, LIBS="$LIBS -lsocket", checkBoth=1)
+    AC_CHECK_LIB([socket],[main], LIBS="$LIBS -lsocket", checkBoth=1)
 fi
 if test "$checkBoth" = "1"; then
     oldLibs=$LIBS
     LIBS="$LIBS -lsocket -lnsl"
-    AC_CHECK_FUNC(accept, , [LIBS=$oldLibs])
+    AC_CHECK_FUNC([accept], , [LIBS=$oldLibs])
 fi
-AC_CHECK_FUNC(gethostbyname, ,[AC_CHECK_LIB(nsl, main, [LIBS="$LIBS -lnsl"])])
+AC_CHECK_FUNC([gethostbyname], ,[AC_CHECK_LIB(nsl, main, [LIBS="$LIBS -lnsl"])])
 dnl
 dnl ------ OpenSSL
-AC_SUBST(SSL_CFLAGS)
+AC_SUBST([SSL_CFLAGS])
 openssl=default
-AC_ARG_WITH(openssl, [  --with-openssl[=PREFIX]   OpenSSL library in PREFIX], [openssl=$withval])
+AC_ARG_WITH([openssl], [  --with-openssl[=PREFIX]   OpenSSL library in PREFIX], [openssl=$withval])
 SSL_CFLAGS=""
 SSL_LIBPATH=""
 if test "$openssl" != "no"; then
@@ -80,10 +92,10 @@ if test "$openssl" != "no"; then
        xLIBS="$LIBS";
        xCPPFLAGS="$CPPFLAGS";
        CPPFLAGS="$CPPFLAGS $SSL_CFLAGS $SSL_LIBPATH"
-       AC_CHECK_LIB(crypto, main)
-       AC_CHECK_LIB(ssl, SSL_new)
+       AC_CHECK_LIB([crypto],[main])
+       AC_CHECK_LIB([ssl],[SSL_new])
        if test "$ac_cv_lib_ssl_SSL_new" = "yes"; then
-           AC_CHECK_HEADER(openssl/ssl.h,[sslver=yes])
+           AC_CHECK_HEADER([openssl/ssl.h],[sslver=yes])
            LIBS="$SSL_LIBPATH $LIBS"
        fi
        if test "$sslver" != "yes"; then
@@ -106,14 +118,14 @@ fi
 dnl
 dnl ------ GNU Readline
 READLINE_SHARED_LIBADD=""
-AC_CHECK_LIB(ncurses, tgetent, [READLINE_SHARED_LIBADD="-lncurses"],
-    AC_CHECK_LIB(termcap, tgetent, [READLINE_SHARED_LIBADD="-ltermcap"])
+AC_CHECK_LIB([ncurses],[tgetent],[READLINE_SHARED_LIBADD="-lncurses"],
+    AC_CHECK_LIB([termcap],[tgetent],[READLINE_SHARED_LIBADD="-ltermcap"])
 )
 READLINE_LIBS=""
-AC_CHECK_LIB(readline, readline, [READLINE_LIBS="$READLINE_LIBS -lreadline $READLINE_SHARED_LIBADD"],,$READLINE_SHARED_LIBADD)
-AC_CHECK_LIB(history, add_history, [READLINE_LIBS="$READLINE_LIBS -lhistory"])
+AC_CHECK_LIB([readline],[readline],[READLINE_LIBS="$READLINE_LIBS -lreadline $READLINE_SHARED_LIBADD"],,$READLINE_SHARED_LIBADD)
+AC_CHECK_LIB([history],[add_history],[READLINE_LIBS="$READLINE_LIBS -lhistory"])
 if test "$ac_cv_lib_readline_readline" = "yes"; then
-    AC_CHECK_HEADERS(readline/readline.h readline/history.h)
+    AC_CHECK_HEADERS([readline/readline.h readline/history.h])
     xLIBS=$LIBS
     LIBS="$LIBS $READLINE_LIBS"
     AC_TRY_LINK([
@@ -121,19 +133,19 @@ if test "$ac_cv_lib_readline_readline" = "yes"; then
        #include <readline/readline.h>
            ],[
            rl_attempted_completion_over = 0;
-           ],AC_DEFINE(HAVE_READLINE_COMPLETION_OVER))
+           ],AC_DEFINE([HAVE_READLINE_COMPLETION_OVER]))
     AC_TRY_LINK([
        #include <stdio.h>
        #include <readline/readline.h>
            ],[
            rl_completion_matches (0, 0);
-           ],[AC_DEFINE(HAVE_READLINE_RL_COMPLETION_MATCHES)])
+           ],[AC_DEFINE([HAVE_READLINE_RL_COMPLETION_MATCHES])])
     LIBS=$xLIBS
 fi
 dnl ------ iconv
-AC_ARG_WITH(iconv, [  --with-iconv[=PREFIX]     iconv library in PREFIX])
+AC_ARG_WITH([iconv],[  --with-iconv[=PREFIX]     iconv library in PREFIX])
 if test "$with_iconv" != "no"; then
-    AC_MSG_CHECKING(for iconv)
+    AC_MSG_CHECKING([for iconv])
     oldLIBS="$LIBS"
     oldCPPFLAGS="${CPPFLAGS}"
     if test "$with_iconv" != "yes" -a "$with_iconv" != ""; then
@@ -145,8 +157,8 @@ if test "$with_iconv" != "no"; then
            ],[
            iconv_t t = iconv_open("", "");
            ],[
-           AC_DEFINE(HAVE_ICONV_H)
-           AC_MSG_RESULT(yes)
+           AC_DEFINE([HAVE_ICONV_H])
+           AC_MSG_RESULT([yes])
            ],[
            LIBS="$LIBS -liconv"
            AC_TRY_LINK([
@@ -154,17 +166,17 @@ if test "$with_iconv" != "no"; then
                    ],[
            iconv_t t = iconv_open("", "");
                    ],[
-           AC_DEFINE(HAVE_ICONV_H)
-           AC_MSG_RESULT(yes)
+           AC_DEFINE([HAVE_ICONV_H])
+           AC_MSG_RESULT([yes])
                    ],[
            LIBS="$oldLIBS"
            CPPFLAGS="$oldCPPFLAGS"
-           AC_MSG_RESULT(no)
+           AC_MSG_RESULT([no])
            ])
     ])
 fi
 dnl ------ various functions
-AC_CHECK_FUNCS(getaddrinfo vsnprintf gettimeofday poll strerror_r localtime_r usleep fopen64)
+AC_CHECK_FUNCS([getaddrinfo vsnprintf gettimeofday poll strerror_r localtime_r usleep fopen64])
 case $host in
     *-*-darwin*)
        trypoll="no";
@@ -175,7 +187,7 @@ case $host in
 esac
 
 if test "$ac_cv_func_poll" = "yes" -a "$trypoll" = "yes"; then
-    AC_CHECK_HEADERS(sys/poll.h)
+    AC_CHECK_HEADERS([sys/poll.h])
 fi
 dnl ------ socklen_t
 dnl We check for socklen_t by making prototypes with the
@@ -224,12 +236,12 @@ extern int accept(int, struct sockaddr *, size_t t *);
 ],,[ac_cv_check_socklen_t=size_t],[ac_cv_check_socklen_t=int])
                ])
        ])
-AC_MSG_RESULT($ac_cv_check_socklen_t)
-AC_DEFINE_UNQUOTED(YAZ_SOCKLEN_T,$ac_cv_check_socklen_t)
-AC_DEFINE(YAZ_USE_NEW_LOG)
+AC_MSG_RESULT([$ac_cv_check_socklen_t])
+AC_DEFINE_UNQUOTED([YAZ_SOCKLEN_T],[$ac_cv_check_socklen_t])
+AC_DEFINE([YAZ_USE_NEW_LOG])
 dnl
 dnl ------ tcpd
-AC_ARG_ENABLE(tcpd,[  --enable-tcpd[=PREFIX]  enable TCP wrapper for server if available])
+AC_ARG_ENABLE([tcpd],[  --enable-tcpd[=PREFIX]  enable TCP wrapper for server if available])
 if test "$enable_tcpd" -a "$enable_tcpd" != "no"; then
     oldLibs=$LIBS
     oldCPPFLAGS=$CPPFLAGS
@@ -237,8 +249,8 @@ if test "$enable_tcpd" -a "$enable_tcpd" != "no"; then
        LIBS="$LIBS -L$enable_tcpd/lib"
        CPPFLAGS="$CPPFLAGS -I$enable_tcpd/include"
     fi
-    AC_MSG_CHECKING(for working tcpd.h)
-    LIBS="$LIBS -lwrap -lnsl"
+    AC_MSG_CHECKING([for working tcpd.h])
+    LIBS="$LIBS -lwrap"
     AC_TRY_LINK([#include <syslog.h>
 #include <tcpd.h>
            int allow_severity = LOG_INFO;
@@ -247,102 +259,62 @@ if test "$enable_tcpd" -a "$enable_tcpd" != "no"; then
            i = hosts_access(&request_info);],
        tcpd_ok=1, tcpd_ok=0)
     if test "$tcpd_ok" = "0"; then
-       AC_MSG_RESULT(no)
+       AC_MSG_RESULT([no])
        AC_MSG_ERROR([tcpd development libraries missing])
                LIBS=$oldLibs
                CPPFLAGS=$oldCPPFLAGS
     else
-       AC_MSG_RESULT(yes)
-       AC_DEFINE(HAVE_TCPD_H)
+       AC_MSG_RESULT([yes])
+       AC_DEFINE([HAVE_TCPD_H])
     fi
 fi
 dnl
-AC_SUBST(THREAD_CFLAGS)
-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
-    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"
-           HAVETHREADS=1
-       fi
-    fi 
-    LIBS="$OLIBS $LIBTHREAD"
-fi
+AC_SUBST([YAZ_CONFIG_CFLAGS])
 dnl
 dnl ------ POSIX Threads
-AC_ARG_ENABLE(threads, [  --disable-threads       disable POSIX threads],[enable_threads=$enableval],[enable_threads=yes])
+HAVETHREADS=0
+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=""
+AC_SUBST([XML2_CFLAGS])
 
-YAZ_LIBXML2(
-    [
+xml_enabled=false
+YAZ_LIBXML2([
        AC_DEFINE(YAZ_HAVE_XML2) 
        YAZ_CONFIG_CFLAGS="$YAZ_CONFIG_CFLAGS -DYAZ_HAVE_XML2=1"
-    ]
-)
+       xml_enabled=true
+    ])
 
-YAZ_LIBXSLT(
-    [
+YAZ_LIBXSLT([
        AC_DEFINE(YAZ_HAVE_XSLT)
        YAZ_CONFIG_CFLAGS="$YAZ_CONFIG_CFLAGS -DYAZ_HAVE_XSLT=1"
-    ]
-)
-YAZ_LIBEXSLT(
-    [
+    ])
+YAZ_LIBEXSLT([
        AC_DEFINE(YAZ_HAVE_EXSLT)
        YAZ_CONFIG_CFLAGS="$YAZ_CONFIG_CFLAGS -DYAZ_HAVE_EXSLT=1"
-    ]
-)
+    ])
        
 YAZ_CONFIG_CFLAGS="$YAZ_CONFIG_CFLAGS $XML2_CFLAGS"
 
@@ -351,19 +323,32 @@ if test "$XML2_LIBS"; then
 fi
 
 dnl
+dnl 
+AC_CHECK_ICU([3.6],[
+       if test "$xml_enabled" = "true"; then
+           ICU_CPPFLAGS="$ICU_CPPFLAGS -D YAZ_HAVE_ICU=1"
+       else
+           ICU_CPPFLAGS=""
+           AC_MSG_WARN([ICU support disabled because XML support is unavailable])
+       fi
+])
+dnl
 dnl ------ Memory debugging
-AC_ARG_ENABLE(memdebug, [  --enable-memdebug       enable memory debugging],[enable_memdebug=$enableval],[enable_memdebug=none])
+AC_ARG_ENABLE([memdebug],[  --enable-memdebug       enable memory debugging],[enable_memdebug=$enableval],[enable_memdebug=none])
 if test "$enable_memdebug" = "yes"; then
-    AC_DEFINE(TRACE_XMALLOC,2)
+    AC_DEFINE([TRACE_XMALLOC],[2])
 elif test "$enable_memdebug" = "no"; then
-    AC_DEFINE(TRACE_XMALLOC,0)
+    AC_DEFINE([TRACE_XMALLOC],[0])
 fi
 dnl
 dnl ------ Using this for "in-source" yaz-config
-AC_SUBST(YAZ_SRC_ROOT)
-AC_SUBST(YAZ_BUILD_ROOT)
+AC_SUBST([YAZ_SRC_ROOT])
+AC_SUBST([YAZ_BUILD_ROOT])
 YAZ_SRC_ROOT=`cd ${srcdir}; pwd`
 YAZ_BUILD_ROOT=`pwd`
+
+dnl ------ windows version files
+WIN_FILEVERSION=`echo $PACKAGE_VERSION|tr . ,`.1
 dnl
 dnl ------ Makefiles
 dnl
@@ -384,8 +369,12 @@ doc/common/Makefile
 doc/common/print.dsl
 etc/Makefile
 yaz-config
+yaz.pc
 Doxyfile
-],[sed s%yaz_echo_source=yes%yaz_echo_source=no%g < yaz-config > util/yaz-config && chmod +x yaz-config util/yaz-config])
+],[
+       sed s%yaz_echo_source=yes%yaz_echo_source=no%g < yaz-config > util/yaz-config && chmod +x yaz-config util/yaz-config
+    ]
+)
 
 
 echo \