diff options
Diffstat (limited to 'bdb/dist/configure.in')
-rw-r--r-- | bdb/dist/configure.in | 501 |
1 files changed, 501 insertions, 0 deletions
diff --git a/bdb/dist/configure.in b/bdb/dist/configure.in new file mode 100644 index 00000000000..6c2a0c5d0bf --- /dev/null +++ b/bdb/dist/configure.in @@ -0,0 +1,501 @@ +dnl $Id: configure.in,v 11.77 2001/01/18 19:05:25 bostic Exp $ +dnl Process this file with autoconf to produce a configure script. + +AC_INIT(../db/db.c) +AC_CONFIG_HEADER(db_config.h:config.hin) + +dnl Configure setup. +AC_PROG_INSTALL() +AC_CANONICAL_HOST +AC_ARG_PROGRAM() + +dnl We cannot build in the top-level directory. +AC_MSG_CHECKING(if building in the top-level directory) +[ test -d db_archive ] && AC_MSG_ERROR([ +Berkeley DB cannot be built in the top-level distribution directory.]) +AC_MSG_RESULT(no) + +dnl Substitution variables. +AC_SUBST(ADDITIONAL_INCS) +AC_SUBST(ADDITIONAL_LANG) +AC_SUBST(ADDITIONAL_LIBS) +AC_SUBST(ADDITIONAL_OBJS) +AC_SUBST(ADDITIONAL_PROGS) +AC_SUBST(CFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(CXX) +AC_SUBST(CXXFLAGS) +AC_SUBST(DBS_LIBS) +AC_SUBST(DEFAULT_INSTALL) +AC_SUBST(DEFAULT_LIB) +AC_SUBST(INSTALLER) +AC_SUBST(INSTALL_LIBS) +AC_SUBST(JAR) +AC_SUBST(JAVAC) +AC_SUBST(JAVACFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(LIBDB_ARGS) +AC_SUBST(LIBJSO_LIBS) +AC_SUBST(LIBS) +AC_SUBST(LIBSO_LIBS) +AC_SUBST(LIBTOOL) +AC_SUBST(LIBTSO_LIBS) +AC_SUBST(LIBXSO_LIBS) +AC_SUBST(MAKEFILE_CC) +AC_SUBST(MAKEFILE_CCLINK) +AC_SUBST(MAKEFILE_CXX) +AC_SUBST(POSTLINK) +AC_SUBST(RPC_OBJS) +AC_SUBST(SOFLAGS) +AC_SUBST(SOLINK) +AC_SUBST(SOSUFFIX) + +dnl $o is set to ".o" or ".lo", and is the file suffix used in the +dnl Makefile instead of .o +AC_SUBST(o) +o=.o +INSTALLER="\$(cp)" +DEFAULT_LIB="\$(libdb)" +DEFAULT_INSTALL="install_static" + +dnl Set the version. +AM_VERSION_SET + +dnl Set the default installation location. +AC_PREFIX_DEFAULT(/usr/local/BerkeleyDB.@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@) + +dnl Process all options before using them. This is necessary because there +dnl are dependencies among them. +AM_OPTIONS_SET + +dnl This is where we handle stuff that autoconf can't handle: compiler, +dnl preprocessor and load flags, libraries that the standard tests don't +dnl look for. The default optimization is -O. We would like to set the +dnl default optimization for systems using gcc to -O2, but we can't. By +dnl the time we know we're using gcc, it's too late to set optimization +dnl flags. +dnl +dnl There are additional libraries we need for some compiler/architecture +dnl combinations. +dnl +dnl Some architectures require DB to be compiled with special flags and/or +dnl libraries for threaded applications +dnl +dnl The makefile CC may be different than the CC used in config testing, +dnl because the makefile CC may be set to use $(LIBTOOL). +dnl +dnl XXX +dnl Don't override anything if it's already set from the environment. +optimize_def="-O" +case "$host_os" in +aix4.*) optimize_def="-O2" + CC=${CC-"xlc_r"} + CPPFLAGS="-D_THREAD_SAFE $CPPFLAGS" + LIBTSO_LIBS="\$(LIBS)";; +bsdi3*) CC=${CC-"shlicc2"} + optimize_def="-O2" + LIBS="-lipc $LIBS";; +bsdi*) optimize_def="-O2";; +freebsd*) optimize_def="-O2" + CPPFLAGS="-D_THREAD_SAFE $CPPFLAGS" + LIBS="-pthread";; +hpux*) CPPFLAGS="-D_REENTRANT $CPPFLAGS";; +irix*) optimize_def="-O2" + CPPFLAGS="-D_SGI_MP_SOURCE $CPPFLAGS";; +linux*) optimize_def="-O2" + CFLAGS="-D_GNU_SOURCE" + CPPFLAGS="-D_REENTRANT $CPPFLAGS";; +mpeix*) CPPFLAGS="-D_POSIX_SOURCE -D_SOCKET_SOURCE $CPPFLAGS" + LIBS="-lsocket -lsvipc $LIBS";; +osf*) CPPFLAGS="-D_REENTRANT $CPPFLAGS";; +*qnx) AC_DEFINE(HAVE_QNX);; +sco3.2v4*) CC=${CC-"cc -belf"} + LIBS="-lsocket -lnsl_s $LIBS";; +sco*) CC=${CC-"cc -belf"} + LIBS="-lsocket -lnsl $LIBS";; +solaris*) CPPFLAGS="-D_REENTRANT $CPPFLAGS";; +esac + +dnl Set CFLAGS/CXXFLAGS. We MUST set the flags before we call autoconf +dnl compiler configuration macros, because if we don't, they set CFLAGS +dnl to no optimization and -g, which isn't what we want. +CFLAGS=${CFLAGS-$optimize_def} +CXXFLAGS=${CXXFLAGS-"$CFLAGS"} + +dnl If the user wants a debugging environment, add -g to the CFLAGS value. +dnl +dnl XXX +dnl Some compilers can't mix optimizing and debug flags. The only way to +dnl handle this is to specify CFLAGS in the environment before configuring. +if test "$db_cv_debug" = yes; then + AC_DEFINE(DEBUG) + CFLAGS="$CFLAGS -g" + CXXFLAGS="$CXXFLAGS -g" +fi + +dnl The default compiler is cc (NOT gcc), the default CFLAGS is as specified +dnl above, NOT what is set by AC_PROG_CC, as it won't set optimization flags. +dnl We still call AC_PROG_CC so that we get the other side-effects. +AC_CHECK_PROG(CC, cc, cc) +AC_CHECK_PROG(CC, gcc, gcc) +AC_PROG_CC + +dnl Because of dynamic library building, the ${CC} used for config tests +dnl may be different than the ${CC} we want to put in the Makefile. +dnl The latter is known as ${MAKEFILE_CC} in this script. +MAKEFILE_CC=${CC} +MAKEFILE_CCLINK="\$(CC)" +MAKEFILE_CXX="nocxx" + +dnl Set some #defines based on configuration options. +if test "$db_cv_diagnostic" = yes; then + AC_DEFINE(DIAGNOSTIC) +fi +if test "$db_cv_debug_rop" = yes; then + AC_DEFINE(DEBUG_ROP) +fi +if test "$db_cv_debug_wop" = yes; then + AC_DEFINE(DEBUG_WOP) +fi +if test "$db_cv_umrw" = yes; then + AC_DEFINE(UMRW) +fi +if test "$db_cv_test" = yes; then + AC_DEFINE(CONFIG_TEST) +fi + +dnl See if we need the C++ compiler at all. If so, we'd like to find one that +dnl interoperates with the C compiler we chose. Since we prefered cc over gcc, +dnl we'll also prefer the vendor's compiler over g++/gcc. If we're wrong, the +dnl user can set CC and CXX in their environment before running configure. +dnl +dnl AC_PROG_CXX sets CXX, but it uses $CXX and $CCC (in that order) as its +dnl first choices. +if test "$db_cv_cxx" = "yes"; then + if test "$GCC" != "yes"; then + case "$host_os" in + aix*) AC_CHECK_PROG(CCC, xlC_r, xlC_r);; + hpux*) AC_CHECK_PROG(CCC, aCC, aCC);; + osf*) AC_CHECK_PROG(CCC, cxx, cxx);; + solaris*) AC_CHECK_PROG(CCC, CC, CC);; + esac + fi + AC_PROG_CXX + MAKEFILE_CXX=${CXX} +fi + +dnl XXX +dnl Versions of GCC up to 2.8.0 required -fhandle-exceptions, but it is +dnl renamed as -fexceptions and is the default in versions 2.8.0 and after. +dnl +dnl $GXX may be set as a result of enabling C++ or Java. +if test "$GXX" = "yes"; then + CXXVERSION=`${MAKEFILE_CXX} --version` + case ${CXXVERSION} in + 1.*|2.[[01234567]].*|*-1.*|*-2.[[01234567]].* ) + CXXFLAGS="-fhandle-exceptions $CXXFLAGS";; + * ) CXXFLAGS="-fexceptions $CXXFLAGS";; + esac +fi + +dnl Export our compiler preferences for the libtool configuration. +export CC CCC +CCC=CXX + +dnl Dynamic library and libtool configuration; optional, but required for +dnl Tcl or Java support. +LIBDB_ARGS="libdb.a" +LIBTOOL="nolibtool" +POSTLINK="@true" +SOSUFFIX="so" +if test "$db_cv_dynamic" = "yes"; then + SAVE_CC="${MAKEFILE_CC}" + SAVE_CXX="${MAKEFILE_CXX}" + + # Configure libtool. + AC_MSG_CHECKING(libtool configuration) + AC_MSG_RESULT([]) + ${CONFIG_SHELL-/bin/sh} $srcdir/ltconfig \ + --no-verify $srcdir/ltmain.sh \ + --output=./libtool $host_os \ + --disable-static \ + || AC_MSG_ERROR([libtool configure failed]) + + SOSUFFIX=`sed -e '/^library_names_spec=/!d' -e 's/.*\.\([[a-zA-Z0-9_]]*\).*/\1/' ./libtool` + DEFAULT_LIB="\$(libso_target)" + DEFAULT_INSTALL="install_dynamic" + LIBDB_ARGS="\$(libso_linkname)" + LIBTOOL="\$(SHELL) ./libtool" + + MAKEFILE_CC="\$(LIBTOOL) --mode=compile ${SAVE_CC}" + MAKEFILE_CXX="\$(LIBTOOL) --mode=compile ${SAVE_CXX}" + MAKEFILE_CCLINK="\$(LIBTOOL) --mode=link ${SAVE_CC}" + + INSTALLER="\$(LIBTOOL) --mode=install cp" + POSTLINK="\$(LIBTOOL) --mode=execute true" + SOLINK="\$(LIBTOOL) --mode=link ${SAVE_CC} -avoid-version" + SOFLAGS="-rpath \$(libdir)" + o=".lo" +fi + +dnl Optional C++ API. +if test "$db_cv_cxx" = "yes"; then + if test "$db_cv_dynamic" = "yes"; then + ADDITIONAL_LIBS="$ADDITIONAL_LIBS \$(libxso_target)" + DEFAULT_INSTALL="${DEFAULT_INSTALL} install_dynamic_cxx" + else + ADDITIONAL_LIBS="$ADDITIONAL_LIBS \$(libcxx)" + DEFAULT_INSTALL="${DEFAULT_INSTALL} install_static_cxx" + fi +fi + +dnl Optional Java API. +if test "$db_cv_java" = "yes"; then + if test "$db_cv_dynamic" != "yes"; then + AC_MSG_ERROR([--enable-java requires --enable-dynamic]) + fi + + AC_CHECK_PROG(JAVAC, javac, javac, nojavac) + if test "$JAVAC" = "nojavac"; then + AC_MSG_ERROR([no javac compiler in PATH]) + fi + AC_CHECK_PROG(JAR, jar, jar, nojar) + if test "$JAR" = "nojar"; then + AC_MSG_ERROR([no jar utility in PATH]) + fi + AC_PATH_PROG(JAVACABS, javac, nojavac) + ADDITIONAL_LIBS="$ADDITIONAL_LIBS \$(libjso_target)" + ADDITIONAL_LANG="$ADDITIONAL_LANG java" + DEFAULT_INSTALL="${DEFAULT_INSTALL} install_java" + +dnl find the include directory relative to the javac executable + while ls -ld "$JAVACABS" 2>/dev/null | grep " -> " >/dev/null; do + AC_MSG_CHECKING(symlink for $JAVACABS) + JAVACLINK=`ls -ld $JAVACABS | sed 's/.* -> //'` + case "$JAVACLINK" in + /*) JAVACABS="$JAVACLINK";; +dnl 'X' avoids triggering unwanted echo options. + *) JAVACABS=`echo "X$JAVACABS" | sed -e 's/^X//' -e 's:[[^/]]*$::'`"$JAVACLINK";; + esac + AC_MSG_RESULT($JAVACABS) + done + JTOPDIR=`echo "$JAVACABS" | sed -e 's://*:/:g' -e 's:/[[^/]]*$::'` + if test -f "$JTOPDIR/include/jni.h"; then + CPPFLAGS="$CPPFLAGSS -I$JTOPDIR/include" + else + JTOPDIR=`echo "$JTOPDIR" | sed -e 's:/[[^/]]*$::'` + if test -f "$JTOPDIR/include/jni.h"; then + CPPFLAGS="$CPPFLAGS -I$JTOPDIR/include" + else + AC_MSG_ERROR([cannot find java include files]) + fi + fi + +dnl get the likely subdirectories for system specific java includes + case "$host_os" in + solaris*) JINCSUBDIRS="solaris";; + linux*) JINCSUBDIRS="linux genunix";; + *) JINCSUBDIRS="genunix";; + esac + + for JINCSUBDIR in $JINCSUBDIRS + do + if test -d "$JTOPDIR/include/$JINCSUBDIR"; then + CPPFLAGS="$CPPFLAGS -I$JTOPDIR/include/$JINCSUBDIR" + fi + done +else + JAVAC=nojavac +fi + +dnl Optional RPC client/server. +if test "$db_cv_rpc" = "yes"; then + AC_DEFINE(HAVE_RPC) + + RPC_OBJS="\$(RPC_OBJS)" + ADDITIONAL_PROGS="berkeley_db_svc $ADDITIONAL_PROGS" + + case "$host_os" in + hpux*) + AC_CHECK_FUNC(svc_run,, + AC_CHECK_LIB(nsl, svc_run, + LIBS="-lnsl $LIBS"; LIBTSO_LIBS="-lnsl $LIBTSO_LIBS"));; + solaris*) + AC_CHECK_FUNC(svc_run,, AC_CHECK_LIB(nsl, svc_run));; + esac +fi + +AM_TCL_LOAD + +dnl Optional DB 1.85 compatibility API. +if test "$db_cv_compat185" = "yes"; then + ADDITIONAL_INCS="db_185.h $ADDITIONAL_INCS" + ADDITIONAL_OBJS="db185${o} $ADDITIONAL_OBJS" +fi + +dnl Optional utilities. +if test "$db_cv_dump185" = "yes"; then + ADDITIONAL_PROGS="db_dump185 $ADDITIONAL_PROGS" +fi + +dnl Test Server. +dnl Include -lpthread if the library exists. +AC_CHECK_LIB(pthread, pthread_create, DBS_LIBS=-lpthread) + +dnl Checks for typedefs, structures, and system/compiler characteristics. +AC_C_BIGENDIAN +AC_C_CONST +AC_HEADER_STAT +AC_HEADER_TIME +AC_STRUCT_ST_BLKSIZE +AC_TYPE_MODE_T +AC_TYPE_OFF_T +AC_TYPE_PID_T +AC_TYPE_SIZE_T + +dnl Define any short-hand types we're missing. +AM_SHORTHAND_TYPES + +dnl Checks for header files. +AC_HEADER_DIRENT +AC_CHECK_HEADERS(sys/select.h) +AC_CHECK_HEADERS(sys/time.h) + +dnl Check for mutexes. We do this here because it changes $LIBS. +AM_DEFINE_MUTEXES + +dnl Checks for system functions for which we have replacements. +dnl +dnl XXX +dnl The only portable getcwd call is getcwd(char *, size_t), where the +dnl buffer is non-NULL -- Solaris can't handle a NULL buffer, and they +dnl deleted getwd(). +AC_REPLACE_FUNCS(getcwd getopt memcmp memcpy memmove) +AC_REPLACE_FUNCS(raise snprintf strcasecmp strerror vsnprintf) + +dnl XXX +dnl Nasty hack. AC_REPLACE_FUNCS added entries of the form xxx.o to the +dnl LIBOBJS variable. They have to be xxx.lo if we are building shared +dnl libraries. Use sed, configure already requires it. +tmp="`echo \"$LIBOBJS\" | sed \"s/\.o/${o}/g\"`" +LIBOBJS="$tmp" + +dnl Check for system functions we optionally use. +AC_CHECK_FUNCS(getuid pstat_getdynamic sysconf sched_yield strtoul yield) + +dnl Pread/pwrite. +dnl +dnl HP-UX has pread/pwrite, but it doesn't work with bigfile support. +case "$host_os" in +hpux*) + AC_MSG_WARN([pread/pwrite interfaces ignored on $host_os.]);; +*) AC_CHECK_FUNCS(pread pwrite) +esac + +dnl Check for fcntl(2) to deny child process access to file descriptors. +AC_CACHE_CHECK([for fcntl/F_SETFD], db_cv_fcntl_f_setfd, [dnl +AC_TRY_RUN([ +#include <sys/types.h> +#include <fcntl.h> +main(){exit(fcntl(1, F_SETFD, 1) == -1);}], + [db_cv_fcntl_f_setfd=yes], [db_cv_fcntl_f_setfd=no])]) +if test "$db_cv_fcntl_f_setfd" = yes; then + AC_DEFINE(HAVE_FCNTL_F_SETFD) +fi + +dnl A/UX has a broken getopt(3). +case "$host_os" in +aux*) ADDITIONAL_OBJS="getopt${o} $ADDITIONAL_OBJS";; +esac + +dnl Checks for system functions for which we don't have replacements. + +dnl We require qsort(3) and select(2). +AC_CHECK_FUNCS(qsort, , AC_MSG_ERROR([No qsort library function.])) +AC_CHECK_FUNCS(select, , AC_MSG_ERROR([No select library function.])) + +dnl Some versions of sprintf return a pointer to the first argument instead +dnl of a character count. We assume that the return value of snprintf and +dnl vsprintf etc. will be the same as sprintf, and check the easy one. +AC_CACHE_CHECK([for int type sprintf return value], db_cv_sprintf_count, [dnl +AC_TRY_RUN([main(){char buf[20]; exit(sprintf(buf, "XXX") != 3);}], + [db_cv_sprintf_count=yes], [db_cv_sprintf_count=no])]) +if test "$db_cv_sprintf_count" = no; then + AC_DEFINE(SPRINTF_RET_CHARPNT) +fi + +dnl Vendors are doing 64-bit lseek in different ways. +dnl AIX, HP/UX, Solaris and Linux all use _FILE_OFFSET_BITS +dnl to specify a "big-file" environment. +dnl +dnl You can't build C++ with big-file support on HP-UX, the include files +dnl are wrong. On Solaris 8, <fcntl.h> included with big-file support +dnl is not compatible with C++. +if test "$db_cv_bigfile" = no; then + case "$host_os" in + solaris2.8|hpux*) + if test "$db_cv_cxx" = "yes"; then + AC_MSG_WARN([Large file and C++ API support are incompatible on HP-UX]) + AC_MSG_WARN([and Solaris 8; large file support has been turned off.]) + else + AC_DEFINE(HAVE_FILE_OFFSET_BITS) + fi;; + aix*|solaris*|linux*) + AC_DEFINE(HAVE_FILE_OFFSET_BITS);; + esac +fi + +dnl Figure out how to create shared regions. +dnl +dnl First, we look for mmap. +dnl +dnl BSD/OS has mlock(2), but it doesn't work until the 4.1 release. +dnl +dnl Nextstep (version 3.3) apparently supports mmap(2) (the mmap symbol +dnl is defined in the C library) but does not support munmap(2). Don't +dnl try to use mmap if we can't find munmap. +dnl +dnl Ultrix has mmap(2), but it doesn't work. +mmap_ok=no +case "$host_os" in +bsdi3*|bsdi4.0) + AC_MSG_WARN([mlock(2) interface ignored on BSD/OS 3.X and 4.0.]) + mmap_ok=yes + AC_CHECK_FUNCS(mmap munmap, , mmap_ok=no);; +ultrix*) + AC_MSG_WARN([mmap(2) interface ignored on Ultrix.]);; +*) + mmap_ok=yes + AC_CHECK_FUNCS(mlock munlock) + AC_CHECK_FUNCS(mmap munmap, , mmap_ok=no);; +esac + +dnl Second, we look for shmget. +dnl +dnl SunOS has the shmget(2) interfaces, but there appears to be a missing +dnl #include <debug/debug.h> file, so we ignore them. +shmget_ok=no +case "$host_os" in +sunos*) + AC_MSG_WARN([shmget(2) interface ignored on SunOS.]);; +*) + shmget_ok=yes + AC_CHECK_FUNCS(shmget, , shmget_ok=no);; +esac + +dnl We require either mmap/munmap(2) or shmget(2). +if test "$mmap_ok" = no -a "$shmget_ok" = no; then + AC_MSG_WARN([Neither mmap/munmap(2) or shmget(2) library functions.]) +fi + +dnl Check for programs used in building and installation. +AM_PROGRAMS_SET + +CREATE_LIST="Makefile + include.tcl:../test/include.tcl + db.h:../include/db.src + db_int.h:../include/db_int.src" +if test "$db_cv_compat185" = "yes"; then + CREATE_LIST="${CREATE_LIST} db_185.h:../include/db_185.h" +fi +AC_OUTPUT(${CREATE_LIST}) |