diff options
Diffstat (limited to '')
-rw-r--r-- | configure.in | 354 |
1 files changed, 354 insertions, 0 deletions
diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..a4384a8 --- /dev/null +++ b/configure.in @@ -0,0 +1,354 @@ +dnl +dnl Process this file with autoconf to produce a configure script +dnl + +AC_PREREQ(2.59) +AC_INIT(export_vars.sh.in) + +AC_CONFIG_HEADER(include/private/apu_config.h) +AC_CONFIG_AUX_DIR(build) + +sinclude(build/apu-conf.m4) +sinclude(build/apu-iconv.m4) +sinclude(build/apu-hints.m4) +sinclude(build/apr_common.m4) +sinclude(build/find_apr.m4) +sinclude(build/crypto.m4) +sinclude(build/dbm.m4) +sinclude(build/dbd.m4) +sinclude(build/dso.m4) + +dnl Generate ./config.nice for reproducing runs of configure +dnl +APR_CONFIG_NICE(config.nice) + +dnl # Some initial steps for configuration. We setup the default directory +dnl # and which files are to be configured. + +dnl Absolute source/build directory +abs_srcdir=`(cd $srcdir && pwd)` +abs_builddir=`pwd` + +if test "$abs_builddir" != "$abs_srcdir"; then + USE_VPATH=1 + APU_CONFIG_LOCATION=build +else + APU_CONFIG_LOCATION=source +fi + +AC_SUBST(APU_CONFIG_LOCATION) + +AC_CANONICAL_SYSTEM + +AC_PROG_INSTALL + +# Use -no-install or -no-fast-install to link the test +# programs on all platforms but Darwin, where it would cause +# the programs to be linked against installed versions of +# libapr instead of those just built. +case $host in + *-apple-darwin*) + LT_NO_INSTALL="" + ;; + *-mingw*) + LT_NO_INSTALL="-no-fast-install" + ;; + *) + LT_NO_INSTALL="-no-install" + ;; +esac +AC_SUBST(LT_NO_INSTALL) + +dnl +dnl compute the top directory of the build +dnl note: this is needed for LIBTOOL and exporting the bundled Expat +dnl +top_builddir="$abs_builddir" +AC_SUBST(top_builddir) +AC_SUBST(abs_srcdir) +AC_SUBST(abs_builddir) + +dnl Initialize mkdir -p functionality. +APR_MKDIR_P_CHECK($abs_srcdir/build/mkdir.sh) + +dnl get our version information +get_version="$abs_srcdir/build/get-version.sh" +version_hdr="$abs_srcdir/include/apu_version.h" +APRUTIL_MAJOR_VERSION="`$get_version major $version_hdr APU`" +APRUTIL_DOTTED_VERSION="`$get_version all $version_hdr APU`" + +APU_LTVERSION="-version-info `$get_version libtool $version_hdr APU`" + +AC_SUBST(APRUTIL_DOTTED_VERSION) +AC_SUBST(APRUTIL_MAJOR_VERSION) +AC_SUBST(APU_LTVERSION) + +echo "APR-util Version: ${APRUTIL_DOTTED_VERSION}" + +dnl Enable the layout handling code, then reparse the prefix-style +dnl arguments due to autoconf being a PITA. +APR_ENABLE_LAYOUT(apr-util) +dnl This must be synchronized to the prefix of the apr layout, to make +dnl configure --help print the correct default. +AC_PREFIX_DEFAULT([/usr/local/apr]) +APR_PARSE_ARGUMENTS + +dnl load os-specific hints for apr-util +APU_PRELOAD + +dnl +dnl set up the compilation flags and stuff +dnl + +APRUTIL_INCLUDES="" +APRUTIL_PRIV_INCLUDES="-I$top_builddir/include -I$top_builddir/include/private" +if test -n "$USE_VPATH"; then + APRUTIL_PRIV_INCLUDES="$APRUTIL_PRIV_INCLUDES -I$abs_srcdir/include/private -I$abs_srcdir/include" +fi + +dnl +dnl Find the APR includes directory and (possibly) the source (base) dir. +dnl +APU_FIND_APR + +dnl +dnl even though we use apr_rules.mk for building apr-util, we need +dnl to grab CC and CPP ahead of time so that apr-util config tests +dnl use the same compiler as APR; we need the same compiler options +dnl and feature test macros as well +dnl +APR_SETIFNULL(CC, `$apr_config --cc`) +APR_SETIFNULL(CPP, `$apr_config --cpp`) +APR_ADDTO(CFLAGS, `$apr_config --cflags`) +APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`) +apr_shlibpath_var=`$apr_config --shlib-path-var` +AC_SUBST(apr_shlibpath_var) + +dnl +dnl Find the APR-ICONV directory. +dnl +AC_ARG_WITH(apr-iconv, + [ --with-apr-iconv=DIR relative path to apr-iconv source], + [ apu_apriconv_dir="$withval" + if test "$apu_apriconv_dir" != "no"; then + if test -d "$apu_apriconv_dir"; then + APR_SUBDIR_CONFIG("$apu_apriconv_dir", + [$apache_apr_flags \ + --prefix=$prefix \ + --exec-prefix=$exec_prefix \ + --libdir=$libdir \ + --includedir=$includedir \ + --bindir=$bindir \ + --datadir=$datadir \ + --with-installbuilddir=$installbuilddir], + [--enable-layout=*|\'--enable-layout=*]) + APRUTIL_EXPORT_LIBS="$abs_srcdir/$apu_apriconv_dir/lib/libapriconv.la \ + $APRUTIL_EXPORT_LIBS" + APRUTIL_INCLUDES="-I$abs_srcdir/$apu_apriconv_dir/include \ + $APRUTIL_INCLUDES" + APR_ICONV_DIR="$apu_apriconv_dir" + else + APR_ICONV_DIR="" + fi + else + APR_ICONV_DIR="" + fi + ]) +AC_SUBST(APR_ICONV_DIR) + +dnl Find LDAP library +dnl Determine what DBM backend type to use. +dnl Find Expat +dnl Find an iconv library +APU_CHECK_CRYPTO +APU_FIND_LDAP +APU_CHECK_DBM +APU_CHECK_DBD +APU_CHECK_DBD_MYSQL +APU_CHECK_DBD_SQLITE3 +APU_CHECK_DBD_SQLITE2 +APU_CHECK_DBD_ORACLE +APU_CHECK_DBD_ODBC +APU_FIND_EXPAT +APU_FIND_ICONV + +dnl Enable DSO build; must be last: +APU_CHECK_UTIL_DSO + +AC_SEARCH_LIBS(crypt, crypt ufc) +case "$ac_cv_search_crypt" in +"no"|"none required") + ;; +*) + APR_ADDTO(APRUTIL_LIBS, [$ac_cv_search_crypt]) + ;; +esac +AC_MSG_CHECKING(if system crypt() function is threadsafe) +if test "x$apu_crypt_threadsafe" = "x1"; then + AC_DEFINE(APU_CRYPT_THREADSAFE, 1, [Define if the system crypt() function is threadsafe]) + msg="yes" +else + msg="no" +fi +AC_MSG_RESULT([$msg]) + +AC_CHECK_FUNCS(crypt_r, [ crypt_r="1" ], [ crypt_r="0" ]) +if test "$crypt_r" = "1"; then + APU_CHECK_CRYPT_R_STYLE +fi + +AC_CACHE_CHECK([whether the compiler handles weak symbols], [apu_cv_weak_symbols], +[AC_TRY_RUN([ +__attribute__ ((weak)) +int weak_noop(void) +{ + return 0; +} +int main() +{ + return weak_noop(); +}], [apu_cv_weak_symbols=yes], [apu_cv_weak_symbols=no], [apu_cv_weak_symbols=no])]) + +if test "$apu_cv_weak_symbols" = "yes"; then + AC_DEFINE(HAVE_WEAK_SYMBOLS, 1, [Define if compiler handles weak symbols]) +fi + +AC_CACHE_CHECK([for memset_s support], [apu_cv_memset_s], +[AC_TRY_RUN([ +#ifdef HAVE_STRING_H +#define __STDC_WANT_LIB_EXT1__ 1 +#include <string.h> +#endif + +int main(int argc, const char **argv) +{ + char buf[1] = {1}; + return memset_s(buf, sizeof buf, 0, sizeof buf) != 0 || *buf != '\0'; +}], [apu_cv_memset_s=yes], [apu_cv_memset_s=no], [apu_cv_memset_s=no])]) + +if test "$apu_cv_memset_s" = "yes"; then + AC_DEFINE([HAVE_MEMSET_S], 1, [Define if memset_s function is supported]) +fi + +AC_CACHE_CHECK([for explicit_bzero support], [apu_cv_explicit_bzero], +[AC_TRY_RUN([ +#ifdef HAVE_STRING_H +#include <string.h> +#endif +#ifdef HAVE_STRINGS_H +#include <strings.h> +#endif + +int main(int argc, const char **argv) +{ + char buf[1] = {1}; + explicit_bzero(buf, sizeof buf); + return *buf != '\0'; +}], [apu_cv_explicit_bzero=yes], [apu_cv_explicit_bzero=no], [apu_cv_explicit_bzero=no])]) + +if test "$apu_cv_explicit_bzero" = "yes"; then + AC_DEFINE([HAVE_EXPLICIT_BZERO], 1, [Define if explicit_bzero function is supported]) +fi + +so_ext=$APR_SO_EXT +lib_target=$APR_LIB_TARGET +AC_SUBST(so_ext) +AC_SUBST(lib_target) + +APRUTIL_LIBNAME="aprutil${libsuffix}" +AC_SUBST(APRUTIL_LIBNAME) + +# Set up destination directory for DSOs. +APU_DSO_LIBDIR="\${libdir}/apr-util-${APRUTIL_MAJOR_VERSION}" +# Set APU_HAVE_MODULES appropriately for the Makefile +if test -n "$APU_MODULES"; then + APU_HAVE_MODULES=yes +else + APU_HAVE_MODULES=no +fi +# Define expanded libdir for apu_config.h +APR_EXPAND_VAR(abs_dso_libdir, $APU_DSO_LIBDIR) +AC_DEFINE_UNQUOTED([APU_DSO_LIBDIR], ["$abs_dso_libdir"], + [Define to be absolute path to DSO directory]) +AC_SUBST(APU_HAVE_MODULES) +AC_SUBST(APU_DSO_LIBDIR) +AC_SUBST(APU_MODULES) +AC_SUBST(EXTRA_OBJECTS) + +dnl +dnl Prep all the flags and stuff for compilation and export to other builds +dnl +APR_ADDTO(APRUTIL_LIBS, [$APR_LIBS]) + +AC_SUBST(APRUTIL_EXPORT_LIBS) +AC_SUBST(APRUTIL_PRIV_INCLUDES) +AC_SUBST(APRUTIL_INCLUDES) +AC_SUBST(APRUTIL_LDFLAGS) +AC_SUBST(APRUTIL_LIBS) +AC_SUBST(LDFLAGS) + +dnl copy apr's rules.mk into our build directory. +if test ! -d ./build; then + $mkdir_p build +fi +dnl +dnl MinGW: If APR is shared, APR_DECLARE_EXPORT will be defined in the +dnl internal CPPFLAGS, but APR-Util needs APU_DECLARE_EXPORT instead. +dnl If APR is static, APR_DECLARE_STATIC will be defined in the +dnl internal CPPFLAGS, but APR-Util needs APU_DECLARE_STATIC too. +dnl +case $host in + *-mingw*) + sed -e 's/-DAPR_DECLARE_EXPORT/-DAPU_DECLARE_EXPORT/' \ + -e 's/-DAPR_DECLARE_STATIC/-DAPU_DECLARE_STATIC -DAPR_DECLARE_STATIC/' \ + < $APR_BUILD_DIR/apr_rules.mk > $abs_builddir/build/rules.mk + ;; + *) + cp $APR_BUILD_DIR/apr_rules.mk $abs_builddir/build/rules.mk + ;; +esac + +dnl +dnl BSD/OS (BSDi) needs to use a different include syntax in the Makefiles +dnl +case "$host_alias" in +*bsdi* | BSD/OS) + # Check whether they've installed GNU make + if make --version > /dev/null 2>&1; then + INCLUDE_RULES="include $abs_builddir/build/rules.mk" + INCLUDE_OUTPUTS="include $abs_srcdir/build-outputs.mk" + else + INCLUDE_RULES=".include \"$abs_builddir/build/rules.mk\"" + INCLUDE_OUTPUTS=".include \"$abs_srcdir/build-outputs.mk\"" + fi + ;; +*) + INCLUDE_RULES="include $abs_builddir/build/rules.mk" + INCLUDE_OUTPUTS="include $abs_srcdir/build-outputs.mk" + ;; +esac +AC_SUBST(INCLUDE_RULES) +AC_SUBST(INCLUDE_OUTPUTS) + +for d in include include/private; do + test -d $top_builddir/$d || mkdir $top_builddir/$d +done + +AC_CONFIG_FILES([Makefile export_vars.sh + build/pkg/pkginfo apr-util.pc + apu-$APRUTIL_MAJOR_VERSION-config:apu-config.in + include/private/apu_select_dbm.h + include/apr_ldap.h + include/apu.h include/apu_want.h]) + +AC_CONFIG_COMMANDS([default], [ +chmod +x apu-$APRUTIL_MAJOR_VERSION-config +],[ +APRUTIL_MAJOR_VERSION=$APRUTIL_MAJOR_VERSION +]) + +if test -d $srcdir/test; then + AC_CONFIG_FILES([test/Makefile]) +fi + +AC_OUTPUT |