configure.in revision 362181
1dnl 2dnl Process this file with autoconf to produce a configure script 3dnl 4 5AC_PREREQ(2.59) 6AC_INIT(export_vars.sh.in) 7 8AC_CONFIG_HEADER(include/private/apu_config.h) 9AC_CONFIG_AUX_DIR(build) 10 11sinclude(build/apu-conf.m4) 12sinclude(build/apu-iconv.m4) 13sinclude(build/apu-hints.m4) 14sinclude(build/apr_common.m4) 15sinclude(build/find_apr.m4) 16sinclude(build/crypto.m4) 17sinclude(build/dbm.m4) 18sinclude(build/dbd.m4) 19sinclude(build/dso.m4) 20 21dnl Generate ./config.nice for reproducing runs of configure 22dnl 23APR_CONFIG_NICE(config.nice) 24 25dnl # Some initial steps for configuration. We setup the default directory 26dnl # and which files are to be configured. 27 28dnl Absolute source/build directory 29abs_srcdir=`(cd $srcdir && pwd)` 30abs_builddir=`pwd` 31 32if test "$abs_builddir" != "$abs_srcdir"; then 33 USE_VPATH=1 34 APU_CONFIG_LOCATION=build 35else 36 APU_CONFIG_LOCATION=source 37fi 38 39AC_SUBST(APU_CONFIG_LOCATION) 40 41AC_CANONICAL_SYSTEM 42 43AC_PROG_INSTALL 44 45# Use -no-install or -no-fast-install to link the test 46# programs on all platforms but Darwin, where it would cause 47# the programs to be linked against installed versions of 48# libapr instead of those just built. 49case $host in 50 *-apple-darwin*) 51 LT_NO_INSTALL="" 52 ;; 53 *-mingw*) 54 LT_NO_INSTALL="-no-fast-install" 55 ;; 56 *) 57 LT_NO_INSTALL="-no-install" 58 ;; 59esac 60AC_SUBST(LT_NO_INSTALL) 61 62dnl 63dnl compute the top directory of the build 64dnl note: this is needed for LIBTOOL and exporting the bundled Expat 65dnl 66top_builddir="$abs_builddir" 67AC_SUBST(top_builddir) 68AC_SUBST(abs_srcdir) 69AC_SUBST(abs_builddir) 70 71dnl Initialize mkdir -p functionality. 72APR_MKDIR_P_CHECK($abs_srcdir/build/mkdir.sh) 73 74dnl get our version information 75get_version="$abs_srcdir/build/get-version.sh" 76version_hdr="$abs_srcdir/include/apu_version.h" 77APRUTIL_MAJOR_VERSION="`$get_version major $version_hdr APU`" 78APRUTIL_DOTTED_VERSION="`$get_version all $version_hdr APU`" 79 80APU_LTVERSION="-version-info `$get_version libtool $version_hdr APU`" 81 82AC_SUBST(APRUTIL_DOTTED_VERSION) 83AC_SUBST(APRUTIL_MAJOR_VERSION) 84AC_SUBST(APU_LTVERSION) 85 86echo "APR-util Version: ${APRUTIL_DOTTED_VERSION}" 87 88dnl Enable the layout handling code, then reparse the prefix-style 89dnl arguments due to autoconf being a PITA. 90APR_ENABLE_LAYOUT(apr-util) 91APR_PARSE_ARGUMENTS 92 93dnl load os-specific hints for apr-util 94APU_PRELOAD 95 96dnl 97dnl set up the compilation flags and stuff 98dnl 99 100APRUTIL_INCLUDES="" 101APRUTIL_PRIV_INCLUDES="-I$top_builddir/include -I$top_builddir/include/private" 102if test -n "$USE_VPATH"; then 103 APRUTIL_PRIV_INCLUDES="$APRUTIL_PRIV_INCLUDES -I$abs_srcdir/include/private -I$abs_srcdir/include" 104fi 105 106dnl 107dnl Find the APR includes directory and (possibly) the source (base) dir. 108dnl 109APU_FIND_APR 110 111dnl 112dnl even though we use apr_rules.mk for building apr-util, we need 113dnl to grab CC and CPP ahead of time so that apr-util config tests 114dnl use the same compiler as APR; we need the same compiler options 115dnl and feature test macros as well 116dnl 117APR_SETIFNULL(CC, `$apr_config --cc`) 118APR_SETIFNULL(CPP, `$apr_config --cpp`) 119APR_ADDTO(CFLAGS, `$apr_config --cflags`) 120APR_ADDTO(CPPFLAGS, `$apr_config --cppflags`) 121apr_shlibpath_var=`$apr_config --shlib-path-var` 122AC_SUBST(apr_shlibpath_var) 123 124dnl 125dnl Find the APR-ICONV directory. 126dnl 127AC_ARG_WITH(apr-iconv, 128 [ --with-apr-iconv=DIR relative path to apr-iconv source], 129 [ apu_apriconv_dir="$withval" 130 if test "$apu_apriconv_dir" != "no"; then 131 if test -d "$apu_apriconv_dir"; then 132 APR_SUBDIR_CONFIG("$apu_apriconv_dir", 133 [$apache_apr_flags \ 134 --prefix=$prefix \ 135 --exec-prefix=$exec_prefix \ 136 --libdir=$libdir \ 137 --includedir=$includedir \ 138 --bindir=$bindir \ 139 --datadir=$datadir \ 140 --with-installbuilddir=$installbuilddir], 141 [--enable-layout=*|\'--enable-layout=*]) 142 APRUTIL_EXPORT_LIBS="$abs_srcdir/$apu_apriconv_dir/lib/libapriconv.la \ 143 $APRUTIL_EXPORT_LIBS" 144 APRUTIL_INCLUDES="-I$abs_srcdir/$apu_apriconv_dir/include \ 145 $APRUTIL_INCLUDES" 146 APR_ICONV_DIR="$apu_apriconv_dir" 147 else 148 APR_ICONV_DIR="" 149 fi 150 else 151 APR_ICONV_DIR="" 152 fi 153 ]) 154AC_SUBST(APR_ICONV_DIR) 155 156dnl Find LDAP library 157dnl Determine what DBM backend type to use. 158dnl Find Expat 159dnl Find an iconv library 160APU_CHECK_CRYPTO 161APU_FIND_LDAP 162APU_CHECK_DBM 163APU_CHECK_DBD 164APU_CHECK_DBD_MYSQL 165APU_CHECK_DBD_SQLITE3 166APU_CHECK_DBD_SQLITE2 167APU_CHECK_DBD_ORACLE 168APU_CHECK_DBD_ODBC 169APU_FIND_EXPAT 170APU_FIND_ICONV 171 172dnl Enable DSO build; must be last: 173APU_CHECK_UTIL_DSO 174 175AC_SEARCH_LIBS(crypt, crypt ufc) 176AC_MSG_CHECKING(if system crypt() function is threadsafe) 177if test "x$apu_crypt_threadsafe" = "x1"; then 178 AC_DEFINE(APU_CRYPT_THREADSAFE, 1, [Define if the system crypt() function is threadsafe]) 179 msg="yes" 180else 181 msg="no" 182fi 183AC_MSG_RESULT([$msg]) 184 185AC_CHECK_FUNCS(crypt_r, [ crypt_r="1" ], [ crypt_r="0" ]) 186if test "$crypt_r" = "1"; then 187 APU_CHECK_CRYPT_R_STYLE 188fi 189 190AC_CACHE_CHECK([whether the compiler handles weak symbols], [apu_cv_weak_symbols], 191[AC_TRY_RUN([ 192__attribute__ ((weak)) 193int weak_noop(void) 194{ 195 return 0; 196} 197int main() 198{ 199 return weak_noop(); 200}], [apu_cv_weak_symbols=yes], [apu_cv_weak_symbols=no], [apu_cv_weak_symbols=no])]) 201 202if test "$apu_cv_weak_symbols" = "yes"; then 203 AC_DEFINE(HAVE_WEAK_SYMBOLS, 1, [Define if compiler handles weak symbols]) 204fi 205 206AC_CACHE_CHECK([for memset_s support], [apu_cv_memset_s], 207[AC_TRY_RUN([ 208#ifdef HAVE_STRING_H 209#define __STDC_WANT_LIB_EXT1__ 1 210#include <string.h> 211#endif 212 213int main(int argc, const char **argv) 214{ 215 char buf[1] = {1}; 216 return memset_s(buf, sizeof buf, 0, sizeof buf) != 0 || *buf != '\0'; 217}], [apu_cv_memset_s=yes], [apu_cv_memset_s=no], [apu_cv_memset_s=no])]) 218 219if test "$apu_cv_memset_s" = "yes"; then 220 AC_DEFINE([HAVE_MEMSET_S], 1, [Define if memset_s function is supported]) 221fi 222 223AC_CACHE_CHECK([for explicit_bzero support], [apu_cv_explicit_bzero], 224[AC_TRY_RUN([ 225#ifdef HAVE_STRING_H 226#include <string.h> 227#endif 228#ifdef HAVE_STRINGS_H 229#include <strings.h> 230#endif 231 232int main(int argc, const char **argv) 233{ 234 char buf[1] = {1}; 235 explicit_bzero(buf, sizeof buf); 236 return *buf != '\0'; 237}], [apu_cv_explicit_bzero=yes], [apu_cv_explicit_bzero=no], [apu_cv_explicit_bzero=no])]) 238 239if test "$apu_cv_explicit_bzero" = "yes"; then 240 AC_DEFINE([HAVE_EXPLICIT_BZERO], 1, [Define if explicit_bzero function is supported]) 241fi 242 243so_ext=$APR_SO_EXT 244lib_target=$APR_LIB_TARGET 245AC_SUBST(so_ext) 246AC_SUBST(lib_target) 247 248APRUTIL_LIBNAME="aprutil${libsuffix}" 249AC_SUBST(APRUTIL_LIBNAME) 250 251# Set up destination directory for DSOs. 252APU_DSO_LIBDIR="\${libdir}/apr-util-${APRUTIL_MAJOR_VERSION}" 253# Set APU_HAVE_MODULES appropriately for the Makefile 254if test -n "$APU_MODULES"; then 255 APU_HAVE_MODULES=yes 256else 257 APU_HAVE_MODULES=no 258fi 259# Define expanded libdir for apu_config.h 260APR_EXPAND_VAR(abs_dso_libdir, $APU_DSO_LIBDIR) 261AC_DEFINE_UNQUOTED([APU_DSO_LIBDIR], ["$abs_dso_libdir"], 262 [Define to be absolute path to DSO directory]) 263AC_SUBST(APU_HAVE_MODULES) 264AC_SUBST(APU_DSO_LIBDIR) 265AC_SUBST(APU_MODULES) 266AC_SUBST(EXTRA_OBJECTS) 267 268dnl 269dnl Prep all the flags and stuff for compilation and export to other builds 270dnl 271APR_ADDTO(APRUTIL_LIBS, [$APR_LIBS]) 272 273AC_SUBST(APRUTIL_EXPORT_LIBS) 274AC_SUBST(APRUTIL_PRIV_INCLUDES) 275AC_SUBST(APRUTIL_INCLUDES) 276AC_SUBST(APRUTIL_LDFLAGS) 277AC_SUBST(APRUTIL_LIBS) 278AC_SUBST(LDFLAGS) 279 280dnl copy apr's rules.mk into our build directory. 281if test ! -d ./build; then 282 $mkdir_p build 283fi 284dnl 285dnl MinGW: If APR is shared, APR_DECLARE_EXPORT will be defined in the 286dnl internal CPPFLAGS, but APR-Util needs APU_DECLARE_EXPORT instead. 287dnl If APR is static, APR_DECLARE_STATIC will be defined in the 288dnl internal CPPFLAGS, but APR-Util needs APU_DECLARE_STATIC too. 289dnl 290case $host in 291 *-mingw*) 292 sed -e 's/-DAPR_DECLARE_EXPORT/-DAPU_DECLARE_EXPORT/' \ 293 -e 's/-DAPR_DECLARE_STATIC/-DAPU_DECLARE_STATIC -DAPR_DECLARE_STATIC/' \ 294 < $APR_BUILD_DIR/apr_rules.mk > $abs_builddir/build/rules.mk 295 ;; 296 *) 297 cp $APR_BUILD_DIR/apr_rules.mk $abs_builddir/build/rules.mk 298 ;; 299esac 300 301dnl 302dnl BSD/OS (BSDi) needs to use a different include syntax in the Makefiles 303dnl 304case "$host_alias" in 305*bsdi* | BSD/OS) 306 # Check whether they've installed GNU make 307 if make --version > /dev/null 2>&1; then 308 INCLUDE_RULES="include $abs_builddir/build/rules.mk" 309 INCLUDE_OUTPUTS="include $abs_srcdir/build-outputs.mk" 310 else 311 INCLUDE_RULES=".include \"$abs_builddir/build/rules.mk\"" 312 INCLUDE_OUTPUTS=".include \"$abs_srcdir/build-outputs.mk\"" 313 fi 314 ;; 315*) 316 INCLUDE_RULES="include $abs_builddir/build/rules.mk" 317 INCLUDE_OUTPUTS="include $abs_srcdir/build-outputs.mk" 318 ;; 319esac 320AC_SUBST(INCLUDE_RULES) 321AC_SUBST(INCLUDE_OUTPUTS) 322 323for d in include include/private; do 324 test -d $top_builddir/$d || mkdir $top_builddir/$d 325done 326 327AC_CONFIG_FILES([Makefile export_vars.sh 328 build/pkg/pkginfo apr-util.pc 329 apu-$APRUTIL_MAJOR_VERSION-config:apu-config.in 330 include/private/apu_select_dbm.h 331 include/apr_ldap.h 332 include/apu.h include/apu_want.h]) 333 334AC_CONFIG_COMMANDS([default], [ 335chmod +x apu-$APRUTIL_MAJOR_VERSION-config 336],[ 337APRUTIL_MAJOR_VERSION=$APRUTIL_MAJOR_VERSION 338]) 339 340if test -d $srcdir/test; then 341 AC_CONFIG_FILES([test/Makefile]) 342fi 343 344AC_OUTPUT 345