123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435 |
- dnl -------------------------------------------------------- -*- autoconf -*-
- dnl Copyright 2000-2005 The Apache Software Foundation or its licensors, as
- dnl applicable.
- dnl
- dnl Licensed under the Apache License, Version 2.0 (the "License");
- dnl you may not use this file except in compliance with the License.
- dnl You may obtain a copy of the License at
- dnl
- dnl http://www.apache.org/licenses/LICENSE-2.0
- dnl
- dnl Unless required by applicable law or agreed to in writing, software
- dnl distributed under the License is distributed on an "AS IS" BASIS,
- dnl WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- dnl See the License for the specific language governing permissions and
- dnl limitations under the License.
- dnl
- dnl custom autoconf rules for APRUTIL
- dnl
- dnl
- dnl APU_FIND_APR: figure out where APR is located
- dnl
- AC_DEFUN([APU_FIND_APR], [
- dnl use the find_apr.m4 script to locate APR. sets apr_found and apr_config
- APR_FIND_APR(,,,[1])
- if test "$apr_found" = "no"; then
- AC_MSG_ERROR(APR could not be located. Please use the --with-apr option.)
- fi
- APR_BUILD_DIR="`$apr_config --installbuilddir`"
- dnl make APR_BUILD_DIR an absolute directory (we'll need it in the
- dnl sub-projects in some cases)
- APR_BUILD_DIR="`cd $APR_BUILD_DIR && pwd`"
- APR_INCLUDES="`$apr_config --includes`"
- APR_LIBS="`$apr_config --link-libtool --libs`"
- APR_SO_EXT="`$apr_config --apr-so-ext`"
- APR_LIB_TARGET="`$apr_config --apr-lib-target`"
- AC_SUBST(APR_INCLUDES)
- AC_SUBST(APR_LIBS)
- AC_SUBST(APR_BUILD_DIR)
- ])
- dnl
- dnl APU_TEST_EXPAT(directory): test if Expat is located in the specified dir
- dnl
- dnl if present: sets expat_include_dir, expat_libs, possibly expat_old
- dnl
- AC_DEFUN([APU_TEST_EXPAT], [
- AC_MSG_CHECKING(for Expat in ifelse($2,,$1,$2))
- expat_libtool=""
- if test -r "$1/lib/expat.h.in"; then
- dnl Expat 1.95.* distribution
- expat_include_dir="$1/lib"
- expat_ldflags="-L$1/lib"
- expat_libs="-lexpat"
- expat_libtool="$1/lib/libexpat.la"
- elif test -r "$1/include/expat.h" -a \
- -r "$1/lib/libexpat.la"; then
- dnl Expat 1.95.* installation (with libtool)
- expat_include_dir="$1/include"
- expat_ldflags="-L$1/lib"
- expat_libs="-lexpat"
- expat_libtool="$1/lib/libexpat.la"
- elif test -r "$1/include/expat.h" -a \
- -r "$1/lib64/libexpat.la"; then
- dnl Expat 1.95.* installation on certain 64-bit platforms (with libtool)
- expat_include_dir="$1/include"
- expat_ldflags="-L$1/lib64"
- expat_libs="-lexpat"
- expat_libtool="$1/lib64/libexpat.la"
- elif test -r "$1/include/expat.h" -a \
- -r "$1/lib/libexpat.a"; then
- dnl Expat 1.95.* installation (without libtool)
- dnl FreeBSD textproc/expat2
- expat_include_dir="$1/include"
- expat_ldflags="-L$1/lib"
- expat_libs="-lexpat"
- elif test -r "$1/xmlparse.h"; then
- dnl maybe an expat-lite. use this dir for both includes and libs
- expat_include_dir="$1"
- expat_ldflags="-L$1"
- expat_libs="-lexpat"
- expat_libtool="$1/libexpat.la"
- expat_old=yes
- elif test -r "$1/include/xmlparse.h" -a \
- -r "$1/lib/libexpat.a"; then
- dnl previously installed expat
- expat_include_dir="$1/include"
- expat_ldflags="-L$1/lib"
- expat_libs="-lexpat"
- expat_old=yes
- elif test -r "$1/include/xml/xmlparse.h" -a \
- -r "$1/lib/xml/libexpat.a"; then
- dnl previously installed expat
- expat_include_dir="$1/include/xml"
- expat_ldflags="-L$1/lib"
- expat_libs="-lexpat"
- expat_old=yes
- elif test -r "$1/include/xmltok/xmlparse.h"; then
- dnl Debian distribution
- expat_include_dir="$1/include/xmltok"
- expat_ldflags="-L$1/lib"
- expat_libs="-lxmlparse -lxmltok"
- expat_old=yes
- elif test -r "$1/include/xml/xmlparse.h" -a \
- -r "$1/lib/libexpat.a"; then
- dnl FreeBSD textproc/expat package
- expat_include_dir="$1/include/xml"
- expat_ldflags="-L$1/lib"
- expat_libs="-lexpat"
- expat_old=yes
- elif test -r "$1/xmlparse/xmlparse.h"; then
- dnl Expat 1.0 or 1.1 source directory
- expat_include_dir="$1/xmlparse"
- expat_ldflags="-L$1"
- expat_libs="-lexpat"
- expat_old=yes
- fi
- dnl ### test for installed Expat 1.95.* distros
- if test -n "$expat_include_dir"; then
- dnl ### more info about what we found there? version? using .la?
- AC_MSG_RESULT(yes)
- else
- AC_MSG_RESULT(no)
- fi
- ])
- dnl
- dnl APU_FIND_EXPAT: figure out where EXPAT is located (or use bundled)
- dnl
- AC_DEFUN([APU_FIND_EXPAT], [
- AC_ARG_WITH([expat],
- [ --with-expat=DIR specify Expat location or 'builtin'], [
- if test "$withval" = "yes"; then
- AC_MSG_ERROR([a directory must be specified for --with-expat])
- elif test "$withval" = "no"; then
- AC_MSG_ERROR([Expat cannot be disabled (at this time)])
- elif test "$withval" = "builtin"; then
- abs_expatdir="`cd $srcdir/xml/expat && pwd`"
- if test -d $abs_expatdir/. -a ! -d xml/expat/.; then
- $mkdir_p xml/expat
- fi
- APU_TEST_EXPAT($abs_expatdir, xml/expat)
- else
- abs_expatdir="`cd $withval && pwd`"
- APU_TEST_EXPAT($abs_expatdir, $withval)
- if test -z "$expat_include_dir"; then
- AC_MSG_ERROR([Expat was not found (or recognized) in \"$withval\"])
- fi
- fi
- ])
- if test -z "$expat_include_dir"; then
- for d in /usr /usr/local xml/expat-cvs xml/expat $srcdir/xml/expat ; do
- APU_TEST_EXPAT($d)
- if test -n "$expat_include_dir"; then
- dnl For /usr installs of expat, we can't specify -L/usr/lib
- if test "$d" = "/usr"; then
- expat_ldflags=""
- fi
- break
- fi
- done
- fi
- if test -z "$expat_include_dir"; then
- AC_MSG_ERROR([could not locate Expat. use --with-expat])
- fi
- dnl If this expat doesn't use libtool natively, we'll mimic it for our
- dnl dependency library generation.
- if test -z "$expat_libtool"; then
- expat_libtool="$expat_ldflags $expat_libs"
- fi
- if test -n "$expat_old"; then
- AC_DEFINE(APR_HAVE_OLD_EXPAT, 1, [define if Expat 1.0 or 1.1 was found])
- fi
- dnl special-case the bundled distribution (use absolute dirs)
- if test "$expat_include_dir" = "xml/expat/lib" -o "$expat_include_dir" = "xml/expat-cvs/lib"; then
- bundled_subdir="`echo $expat_include_dir | sed -e 's%/lib%%'`"
- APR_SUBDIR_CONFIG($bundled_subdir, [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
- expat_include_dir=$top_builddir/$bundled_subdir/lib
- expat_ldflags="-L$top_builddir/$bundled_subdir/lib"
- expat_libs="-lexpat"
- expat_libtool=$top_builddir/$bundled_subdir/lib/libexpat.la
- APR_XML_SUBDIRS="`echo $bundled_subdir | sed -e 's%xml/%%'`"
- APR_ADDTO(APRUTIL_EXPORT_LIBS, [$expat_libtool])
- else
- if test "$expat_include_dir" = "$abs_srcdir/xml/expat/include" -o "$expat_include_dir" = "$abs_srcdir/xml/expat/lib"; then
- dnl This is a bit of a hack. This only works because we know that
- dnl we are working with the bundled version of the software.
- bundled_subdir="xml/expat"
- APR_SUBDIR_CONFIG($bundled_subdir, [--prefix=$prefix --exec-prefix=$exec_prefix --libdir=$libdir --includedir=$includedir --bindir=$bindir])
- expat_include_dir=$top_builddir/$bundled_subdir/lib
- expat_ldflags="-L$top_builddir/$bundled_subdir/lib"
- expat_libs="-lexpat"
- expat_libtool=$top_builddir/$bundled_subdir/lib/libexpat.la
- APR_XML_SUBDIRS="`echo $bundled_subdir | sed -e 's%xml/%%'`"
- APR_ADDTO(APRUTIL_EXPORT_LIBS, [$expat_libtool])
- else
- APR_ADDTO(APRUTIL_EXPORT_LIBS, [$expat_libs])
- fi
- fi
- APR_XML_DIR=$bundled_subdir
- APR_XML_EXPAT_OLD=$expat_old
- AC_SUBST(APR_XML_SUBDIRS)
- AC_SUBST(APR_XML_DIR)
- AC_SUBST(APR_XML_EXPAT_OLD)
- if test "$expat_include_dir" != "/usr/include"; then
- APR_ADDTO(APRUTIL_INCLUDES, [-I$expat_include_dir])
- fi
- APR_ADDTO(APRUTIL_LDFLAGS, [$expat_ldflags])
- APR_ADDTO(APRUTIL_LIBS, [$expat_libtool])
- ])
- dnl
- dnl Find a particular LDAP library
- dnl
- AC_DEFUN([APU_FIND_LDAPLIB], [
- if test ${apu_has_ldap} != "1"; then
- ldaplib=$1
- extralib=$2
- unset ac_cv_lib_${ldaplib}_ldap_init
- unset ac_cv_lib_${ldaplib}___ldap_init
- AC_CHECK_LIB(${ldaplib}, ldap_init,
- [
- APR_ADDTO(APRUTIL_EXPORT_LIBS,[-l${ldaplib} ${extralib}])
- APR_ADDTO(APRUTIL_LIBS,[-l${ldaplib} ${extralib}])
- AC_CHECK_LIB(${ldaplib}, ldapssl_client_init, apu_has_ldapssl_client_init="1", , ${extralib})
- AC_CHECK_LIB(${ldaplib}, ldapssl_client_deinit, apu_has_ldapssl_client_deinit="1", , ${extralib})
- AC_CHECK_LIB(${ldaplib}, ldapssl_add_trusted_cert, apu_has_ldapssl_add_trusted_cert="1", , ${extralib})
- AC_CHECK_LIB(${ldaplib}, ldap_start_tls_s, apu_has_ldap_start_tls_s="1", , ${extralib})
- AC_CHECK_LIB(${ldaplib}, ldap_sslinit, apu_has_ldap_sslinit="1", , ${extralib})
- AC_CHECK_LIB(${ldaplib}, ldapssl_init, apu_has_ldapssl_init="1", , ${extralib})
- AC_CHECK_LIB(${ldaplib}, ldapssl_install_routines, apu_has_ldapssl_install_routines="1", , ${extralib})
- apu_has_ldap="1";
- ], , ${extralib})
- fi
- ])
- dnl
- dnl APU_FIND_LDAP: figure out where LDAP is located
- dnl
- AC_DEFUN([APU_FIND_LDAP], [
- echo $ac_n "${nl}checking for ldap support..."
- apu_has_ldap="0";
- apu_has_ldapssl_client_init="0"
- apu_has_ldapssl_client_deinit="0"
- apu_has_ldapssl_add_trusted_cert="0"
- apu_has_ldap_start_tls_s="0"
- apu_has_ldapssl_init="0"
- apu_has_ldap_sslinit="0"
- apu_has_ldapssl_install_routines="0"
- apu_has_ldap_openldap="0"
- apu_has_ldap_solaris="0"
- apu_has_ldap_novell="0"
- apu_has_ldap_microsoft="0"
- apu_has_ldap_netscape="0"
- apu_has_ldap_mozilla="0"
- apu_has_ldap_other="0"
- AC_ARG_WITH(ldap-include,[ --with-ldap-include=path path to ldap include files with trailing slash])
- AC_ARG_WITH(ldap-lib,[ --with-ldap-lib=path path to ldap lib file])
- AC_ARG_WITH(ldap,[ --with-ldap=library ldap library to use],
- [
- save_cppflags="$CPPFLAGS"
- save_ldflags="$LDFLAGS"
- save_libs="$LIBS"
- if test -n "$with_ldap_include"; then
- CPPFLAGS="$CPPFLAGS -I$with_ldap_include"
- APR_ADDTO(APRUTIL_INCLUDES, [-I$with_ldap_include])
- fi
- if test -n "$with_ldap_lib"; then
- LDFLAGS="$LDFLAGS -L$with_ldap_lib"
- APR_ADDTO(APRUTIL_LDFLAGS, [-L$with_ldap_lib])
- fi
- LIBLDAP="$withval"
- if test "$LIBLDAP" = "yes"; then
- dnl The iPlanet C SDK 5.0 is as yet untested...
- APU_FIND_LDAPLIB("ldap50", "-lnspr4 -lplc4 -lplds4 -liutil50 -llber50 -lldif50 -lnss3 -lprldap50 -lssl3 -lssldap50")
- APU_FIND_LDAPLIB("ldapssl41", "-lnspr3 -lplc3 -lplds3")
- APU_FIND_LDAPLIB("ldapssl40")
- APU_FIND_LDAPLIB("ldapssl30")
- APU_FIND_LDAPLIB("ldapssl20")
- APU_FIND_LDAPLIB("ldapsdk", "-lldapx -lldapssl -lldapgss -lgssapi_krb5")
- APU_FIND_LDAPLIB("ldapsdk", "-lldapx -lldapssl -lldapgss -lgss -lresolv -lsocket")
- APU_FIND_LDAPLIB("ldap", "-llber")
- APU_FIND_LDAPLIB("ldap", "-llber -lresolv")
- APU_FIND_LDAPLIB("ldap", "-llber -lresolv -lsocket -lnsl")
- APU_FIND_LDAPLIB("ldap", "-ldl -lpthread")
- else
- APU_FIND_LDAPLIB($LIBLDAP)
- APU_FIND_LDAPLIB($LIBLDAP, "-lresolv")
- APU_FIND_LDAPLIB($LIBLDAP, "-lresolv -lsocket -lnsl")
- APU_FIND_LDAPLIB($LIBLDAP, "-ldl -lpthread")
- fi
- test ${apu_has_ldap} != "1" && AC_MSG_ERROR(could not find an LDAP library)
- AC_CHECK_LIB(lber, ber_init)
- AC_CHECK_HEADERS(lber.h, lber_h=["#include <lber.h>"])
- # Solaris has a problem in <ldap.h> which prevents it from
- # being included by itself. Check for <ldap.h> manually,
- # including lber.h first.
- AC_CACHE_CHECK([for ldap.h], [apr_cv_hdr_ldap_h],
- [AC_TRY_CPP(
- [#ifdef HAVE_LBER_H
- #include <lber.h>
- #endif
- #include <ldap.h>
- ], [apr_cv_hdr_ldap_h=yes], [apr_cv_hdr_ldap_h=no])])
- if test "$apr_cv_hdr_ldap_h" = "yes"; then
- ldap_h=["#include <ldap.h>"]
- AC_DEFINE([HAVE_LDAP_H], 1, [Defined if ldap.h is present])
- fi
- AC_CHECK_HEADERS(ldap_ssl.h, ldap_ssl_h=["#include <ldap_ssl.h>"])
- if test "$apr_cv_hdr_ldap_h" = "yes"; then
- AC_CACHE_CHECK([for LDAP toolkit],
- [apr_cv_ldap_toolkit], [
- if test "x$apr_cv_ldap_toolkit" = "x"; then
- AC_EGREP_CPP([OpenLDAP], [$lber_h
- $ldap_h
- LDAP_VENDOR_NAME], [apu_has_ldap_openldap="1"
- apr_cv_ldap_toolkit="OpenLDAP"])
- fi
- if test "x$apr_cv_ldap_toolkit" = "x"; then
- AC_EGREP_CPP([Sun Microsystems Inc.], [$lber_h
- $ldap_h
- LDAP_VENDOR_NAME], [apu_has_ldap_solaris="1"
- apr_cv_ldap_toolkit="Solaris"])
- fi
- if test "x$apr_cv_ldap_toolkit" = "x"; then
- AC_EGREP_CPP([Novell], [$lber_h
- $ldap_h
- LDAP_VENDOR_NAME], [apu_has_ldap_novell="1"
- apr_cv_ldap_toolkit="Novell"])
- fi
- if test "x$apr_cv_ldap_toolkit" = "x"; then
- AC_EGREP_CPP([Microsoft Corporation.], [$lber_h
- $ldap_h
- LDAP_VENDOR_NAME], [apu_has_ldap_microsoft="1"
- apr_cv_ldap_toolkit="Microsoft"])
- fi
- if test "x$apr_cv_ldap_toolkit" = "x"; then
- AC_EGREP_CPP([Netscape Communications Corp.], [$lber_h
- $ldap_h
- LDAP_VENDOR_NAME], [apu_has_ldap_netscape="1"
- apr_cv_ldap_toolkit="Netscape"])
- fi
- if test "x$apr_cv_ldap_toolkit" = "x"; then
- AC_EGREP_CPP([mozilla.org], [$lber_h
- $ldap_h
- LDAP_VENDOR_NAME], [apu_has_ldap_mozilla="1"
- apr_cv_ldap_toolkit="Mozilla"])
- fi
- if test "x$apr_cv_ldap_toolkit" = "x"; then
- apu_has_ldap_other="1"
- apr_cv_ldap_toolkit="unknown"
- fi
- ])
- fi
- CPPFLAGS=$save_cppflags
- LDFLAGS=$save_ldflags
- LIBS=$save_libs
- ])
- AC_SUBST(ldap_h)
- AC_SUBST(lber_h)
- AC_SUBST(ldap_ssl_h)
- AC_SUBST(apu_has_ldapssl_client_init)
- AC_SUBST(apu_has_ldapssl_client_deinit)
- AC_SUBST(apu_has_ldapssl_add_trusted_cert)
- AC_SUBST(apu_has_ldap_start_tls_s)
- AC_SUBST(apu_has_ldapssl_init)
- AC_SUBST(apu_has_ldap_sslinit)
- AC_SUBST(apu_has_ldapssl_install_routines)
- AC_SUBST(apu_has_ldap)
- AC_SUBST(apu_has_ldap_openldap)
- AC_SUBST(apu_has_ldap_solaris)
- AC_SUBST(apu_has_ldap_novell)
- AC_SUBST(apu_has_ldap_microsoft)
- AC_SUBST(apu_has_ldap_netscape)
- AC_SUBST(apu_has_ldap_mozilla)
- AC_SUBST(apu_has_ldap_other)
- ])
- dnl
- dnl APU_CHECK_CRYPT_R_STYLE
- dnl
- dnl Decide which of a couple of flavors of crypt_r() is necessary for
- dnl this platform.
- dnl
- AC_DEFUN([APU_CHECK_CRYPT_R_STYLE], [
- AC_CACHE_CHECK([style of crypt_r], apr_cv_crypt_r_style,
- [AC_TRY_COMPILE([#include <crypt.h>],
- [CRYPTD buffer;
- crypt_r("passwd", "hash", &buffer);],
- [apr_cv_crypt_r_style=cryptd],
- [AC_TRY_COMPILE([#include <crypt.h>],
- [struct crypt_data buffer;
- crypt_r("passwd", "hash", &buffer);],
- [apr_cv_crypt_r_style=struct_crypt_data],
- [apr_cv_crypt_r_style=none])])])
- if test "$apr_cv_crypt_r_style" = "cryptd"; then
- AC_DEFINE(CRYPT_R_CRYPTD, 1, [Define if crypt_r has uses CRYPTD])
- elif test "$apr_cv_crypt_r_style" = "struct_crypt_data"; then
- AC_DEFINE(CRYPT_R_STRUCT_CRYPT_DATA, 1, [Define if crypt_r uses struct crypt_data])
- fi
- ])
|