diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2016-12-17 21:28:53 -0800 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2016-12-17 21:28:53 -0800 |
commit | 54df2afaa61c6a03cbb4a33c9b90fa572b6d07b8 (patch) | |
tree | 18147b92b969d25ffbe61935fb63035cac820dd0 /db-4.8.30/dist/configure.ac |
Berkeley DB 4.8 with rust build script for linux.
Diffstat (limited to 'db-4.8.30/dist/configure.ac')
-rw-r--r-- | db-4.8.30/dist/configure.ac | 902 |
1 files changed, 902 insertions, 0 deletions
diff --git a/db-4.8.30/dist/configure.ac b/db-4.8.30/dist/configure.ac new file mode 100644 index 0000000..4a99779 --- /dev/null +++ b/db-4.8.30/dist/configure.ac @@ -0,0 +1,902 @@ +# $Id$ +# Process this file with autoconf to produce a configure script. + +PACKAGE=db +AC_INIT(Berkeley DB, __EDIT_DB_VERSION__, + [Oracle Technology Network Berkeley DB forum], + db-__EDIT_DB_VERSION__) +AC_CONFIG_SRCDIR([../db/db.c]) +AC_CONFIG_HEADERS([db_config.h:config.hin]) + +AC_CONFIG_MACRO_DIR([aclocal]) + +# Configure setup. +AC_CANONICAL_HOST() +AC_ARG_PROGRAM() + +# Don't build in the top-level or dist directories. +AC_MSG_CHECKING(if building in the top-level or dist directories) +if [ test -d db_archive -o -f configure.ac ] ; then + AC_MSG_RESULT(yes) + AC_MSG_ERROR([\ +Berkeley DB should not be built in the top-level or "dist" directories. \ +Change directory to the build_unix directory and run ../dist/configure \ +from there.]) + +fi +AC_MSG_RESULT(no) + +# Substitution variables. +AC_SUBST(ADDITIONAL_INCS) +AC_SUBST(ADDITIONAL_LANG) +AC_SUBST(ADDITIONAL_OBJS) +AC_SUBST(ADDITIONAL_PROGS) +AC_SUBST(BUILD_TARGET) +AC_SUBST(CFLAGS) +AC_SUBST(CONFIGURATION_ARGS) +AC_SUBST(CONFIGURATION_PATH) +AC_SUBST(CPPFLAGS) +AC_SUBST(CRYPTO_OBJS) +AC_SUBST(CXX) +AC_SUBST(CXXFLAGS) +AC_SUBST(DB_CONST) +AC_SUBST(DB_PROTO1) +AC_SUBST(DB_PROTO2) +AC_SUBST(DEFAULT_LIB) +AC_SUBST(DEFAULT_LIB_CXX) +AC_SUBST(DEFAULT_LIB_STL) +AC_SUBST(INSTALLER) +AC_SUBST(INSTALL_LIBS) +AC_SUBST(INSTALL_TARGET) +AC_SUBST(JAR) +AC_SUBST(JAVACFLAGS) +AC_SUBST(LDFLAGS) +AC_SUBST(LIBCSO_LIBS) +AC_SUBST(LIBJSO_LIBS) +AC_SUBST(LIBS) +AC_SUBST(LIBSO_LIBS) +AC_SUBST(LIBTOOL) +AC_SUBST(LIBTSO_LIBS) +AC_SUBST(LIBTSO_MODSUFFIX) +AC_SUBST(LIBTSO_MODULE) +AC_SUBST(LIBXSO_LIBS) +AC_SUBST(MAKEFILE_CC) +AC_SUBST(MAKEFILE_CCLINK) +AC_SUBST(MAKEFILE_CXX) +AC_SUBST(MAKEFILE_CXXLINK) +AC_SUBST(MAKEFILE_SOLINK) +AC_SUBST(MAKEFILE_XSOLINK) +AC_SUBST(OSDIR) +AC_SUBST(PATH_SEPARATOR) +AC_SUBST(POSTLINK) +AC_SUBST(REPLACEMENT_OBJS) +AC_SUBST(RPC_CLIENT_OBJS) +AC_SUBST(RPC_SERVER_H) +AC_SUBST(SOFLAGS) +AC_SUBST(SWIGCFLAGS) +AC_SUBST(TEST_LIBS) +AC_SUBST(db_int_def) +AC_SUBST(o) + +# The Windows public header has two extra symbols we need to remove. +AC_SUBST(platform_header) +AC_SUBST(platform_footer) + +# Set the default installation location. +AC_PREFIX_DEFAULT(/usr/local/BerkeleyDB.__EDIT_DB_VERSION_MAJOR__.__EDIT_DB_VERSION_MINOR__) + +# Configure the version information. +AC_SUBST(DB_VERSION_MAJOR) +DB_VERSION_MAJOR="__EDIT_DB_VERSION_MAJOR__" +AC_SUBST(DB_VERSION_MINOR) +DB_VERSION_MINOR="__EDIT_DB_VERSION_MINOR__" +AC_SUBST(DB_VERSION_PATCH) +DB_VERSION_PATCH="__EDIT_DB_VERSION_PATCH__" +AC_SUBST(DB_VERSION_STRING) +DB_VERSION_STRING='"__EDIT_DB_VERSION_STRING__"' +AC_SUBST(DB_VERSION_UNIQUE_NAME) + +# Process all options before using them. +AM_OPTIONS_SET + +# Set some #defines based on configuration options. +if test "$db_cv_diagnostic" = "yes"; then + AC_DEFINE(DIAGNOSTIC) + AH_TEMPLATE(DIAGNOSTIC, + [Define to 1 if you want a version with run-time diagnostic checking.]) +fi +if test "$db_cv_debug_rop" = "yes"; then + AC_DEFINE(DEBUG_ROP) + AH_TEMPLATE(DEBUG_ROP, + [Define to 1 if you want a version that logs read operations.]) +fi +if test "$db_cv_debug_wop" = "yes"; then + AC_DEFINE(DEBUG_WOP) + AH_TEMPLATE(DEBUG_WOP, + [Define to 1 if you want a version that logs write operations.]) +fi +if test "$db_cv_umrw" = "yes"; then + AC_DEFINE(UMRW) + AH_TEMPLATE(UMRW, + [Define to 1 to mask harmless uninitialized memory read/writes.]) + +fi +if test "$db_cv_test" = "yes"; then + AC_DEFINE(CONFIG_TEST) + AH_TEMPLATE(CONFIG_TEST, + [Define to 1 if you want to build a version for running the test suite.]) +fi + +AH_TEMPLATE(HAVE_UPGRADE_SUPPORT, + [Define to 1 if port includes historic database upgrade support.]) +AC_DEFINE(HAVE_UPGRADE_SUPPORT) + +# Check for programs used in building and installation. +AM_PROGRAMS_SET +AC_PROG_INSTALL + +BUILD_TARGET="library_build" +INSTALL_TARGET="library_install" + +# Respect the environment LIBS settings +LIBSO_LIBS="$LIBS" + +# This is where we handle stuff that autoconf can't handle: compiler, +# preprocessor and load flags, libraries that the standard tests don't +# look for. +# +# There are additional libraries we need for some compiler/architecture +# combinations. +# +# Some architectures require DB to be compiled with special flags and/or +# libraries for threaded applications +# +# The makefile CC may be different than the CC used in config testing, +# because the makefile CC may be set to use $(LIBTOOL). +# +# Don't override anything if it's already set from the environment. +optimize_debug="-O" +case "$host_os" in +aix4.3.*|aix[[56]]*) + case "$host_os" in + aix4.3.*) + CPPFLAGS="$CPPFLAGS -D_LINUX_SOURCE_COMPAT";; + esac + # IBM's XLC compilers (at least versions 7/8/9) generate incorrect code + # when ordinary optimization is enabled because they make strong + # assumptions about the types held at each memory location, and some + # Berkeley DB code violates those assumptions. [#16141] + optimize_debug="-O2 -qalias=noansi" + CC=${CC-"xlc_r"} + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LDFLAGS="$LDFLAGS -Wl,-brtl";; +bsdi3*) CC=${CC-"shlicc2"} + LIBSO_LIBS="$LIBSO_LIBS -lipc";; +cygwin*) + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT";; +freebsd*) + CPPFLAGS="$CPPFLAGS -D_THREAD_SAFE" + LDFLAGS="$LDFLAGS -pthread";; +gnu*|k*bsd*-gnu|linux*) + CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE -D_REENTRANT";; +hpux*) CPPFLAGS="$CPPFLAGS -D_REENTRANT";; +irix*) optimize_debug="-O2" + CPPFLAGS="$CPPFLAGS -D_SGI_MP_SOURCE";; +mpeix*) CPPFLAGS="$CPPFLAGS -D_POSIX_SOURCE -D_SOCKET_SOURCE" + LIBSO_LIBS="$LIBSO_LIBS -lsocket -lsvipc";; +osf*) CPPFLAGS="$CPPFLAGS -pthread";; +*qnx*) qnx_build="yes" + AC_DEFINE(HAVE_QNX) + AH_TEMPLATE(HAVE_QNX, [Define to 1 if building on QNX.]);; +solaris*) + CPPFLAGS="$CPPFLAGS -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS ";; +esac + +# If the user wants a debugging environment, change any compiler optimization +# flags to -g. We used to add -g to the -O compiler flags, but compilers are +# good enough at code re-organization that debugging with -O no longer works. +# If you want to compile with a different set of flags, specify CFLAGS in the +# environment before configuring. +if test "$db_cv_debug" = "yes"; then + AC_DEFINE(DEBUG) + AH_TEMPLATE(DEBUG, [Define to 1 if you want a debugging version.]) + + optimize_debug="-g" +fi + +# Set CFLAGS/CXXFLAGS. We MUST set the flags before we call autoconf +# compiler configuration macros, because if we don't, they set CFLAGS +# to no optimization and -g, which isn't what we want. +CFLAGS=${CFLAGS-$optimize_debug} +CXXFLAGS=${CXXFLAGS-"$CFLAGS"} + +# The default compiler is cc (NOT gcc), the default CFLAGS is as specified +# above, NOT what is set by AC_PROG_CC, as it won't set optimization flags +# for any compiler other than gcc. +AC_PROG_CC(cc gcc) + +# We know what compiler we're going to use, now. Set per-compiler flags. +if test "$GCC" = "yes"; then + # Use -O3 if we're using gcc, unless we're doing a small build, in + # which case we use -Os alone. The code size for -O3 is quite a + # bit larger than -O2: a compromise is "-Os -finline-functions", + # it's smaller and explicitly inlining the functions helps Berkeley + # DB. + CFLAGS="$CFLAGS " + if test "$db_cv_smallbuild" = "yes"; then + CFLAGS=`echo "$CFLAGS" | sed 's/-O /-Os /g'` + else + CFLAGS=`echo "$CFLAGS" | sed 's/-O /-O3 /g'` + fi +else + case "$host_os" in + hpux11.0*) ;; + hpux11*) CPPFLAGS="$CPPFLAGS -mt";; + esac +fi + +# Check for "const" and "inline" keywords. +AC_C_CONST +AC_C_INLINE + +# We use prototypes and the keyword "const" in db.h which doesn't include +# db_config.h, so we have to figure out what to do there. +# +# There is an autoconf AC_C_PROTOTYPES macro, but as all it does is define +# db_config.h variables, it doesn't help us. +# +# We don't have much choice, we look at internal autoconf variables. +if test "$ac_cv_c_const" != "yes"; then + DB_CONST="#define const" +fi + +# Clear __P, some other systems use it too. +DB_PROTO1="#undef __P" +if test "$ac_cv_prog_cc_c89" = "no"; then + DB_PROTO2="#define __P(protos) ()" +else + DB_PROTO2="#define __P(protos) protos" +fi + +# Because of shared library building, the ${CC} used for config tests +# may be different than the ${CC} we want to put in the Makefile. +# The latter is known as ${MAKEFILE_CC} in this script. +MAKEFILE_CC="${CC}" +MAKEFILE_CCLINK="${CC}" +MAKEFILE_CXX="nocxx" +MAKEFILE_CXXLINK="nocxx" + +# See if we need the C++ compiler at all. If so, we'd like to find one that +# interoperates with the C compiler we chose. Since we prefered cc over gcc, +# we'll also prefer the vendor's compiler over g++/gcc. If we're wrong, the +# user can set CC and CXX in their environment before running configure. +# +# AC_PROG_CXX sets CXX, but it uses $CXX and $CCC (in that order) as its +# first choices. +if test "$db_cv_cxx" = "yes"; then + if test "$GCC" != "yes"; then + case "$host_os" in + aix*) AC_CHECK_TOOL(CCC, xlC_r) + LIBXSO_LIBS="-lC_r $LIBXSO_LIBS" + LIBSO_LIBS="-lC_r $LIBSO_LIBS";; + hpux*) AC_CHECK_TOOL(CCC, aCC);; + irix*) AC_CHECK_TOOL(CCC, CC);; + osf*) AC_CHECK_TOOL(CCC, cxx) + CXXFLAGS="$CXXFLAGS -D__USE_STD_IOSTREAM" + test -d /usr/include.dtk && + CXXFLAGS="$CXXFLAGS -I/usr/include.dtk";; + solaris*) AC_CHECK_TOOL(CCC, CC);; + esac + fi + AC_PROG_CXX + ###### WORKAROUND: SEE SR #7938 + AC_PROG_CXXCPP + ############################### + AC_CXX_STDHEADERS + MAKEFILE_CXX="${CXX}" + MAKEFILE_CXXLINK="${CXX}" +fi + +# Do some gcc specific configuration. +AC_GCC_CONFIG1 + +# We need the -Kthread/-pthread flag when compiling on SCO/Caldera's UnixWare +# and OpenUNIX releases. We can't make the test until we know which compiler +# we're using. +case "$host_os" in +sysv5UnixWare*|sysv5OpenUNIX8*) + if test "$GCC" == "yes"; then + CPPFLAGS="$CPPFLAGS -pthread" + LDFLAGS="$LDFLAGS -pthread" + else + CPPFLAGS="$CPPFLAGS -Kthread" + LDFLAGS="$LDFLAGS -Kthread" + fi;; +esac + +# Export our compiler preferences for the libtool configuration. +export CC CCC +CCC=CXX + +# Libtool configuration. +AC_PROG_LIBTOOL + +SOFLAGS="-rpath \$(libdir)" + +# Set SOSUFFIX and friends +SOSUFFIX_CONFIG +MODSUFFIX_CONFIG +JMODSUFFIX_CONFIG + +LIBTOOL="./libtool" + +INSTALLER="\$(LIBTOOL) --mode=install cp -p" + +MAKEFILE_CC="\$(LIBTOOL) --mode=compile ${MAKEFILE_CC}" +MAKEFILE_SOLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CCLINK} -avoid-version" +MAKEFILE_CCLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CCLINK}" +MAKEFILE_CXX="\$(LIBTOOL) --mode=compile ${MAKEFILE_CXX}" +MAKEFILE_XSOLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK} -avoid-version" +MAKEFILE_CXXLINK="\$(LIBTOOL) --mode=link ${MAKEFILE_CXXLINK}" + + +case "$host_os" in +cygwin* | mingw*) + MAKEFILE_SOLINK="$MAKEFILE_SOLINK -no-undefined" + MAKEFILE_XSOLINK="$MAKEFILE_XSOLINK -no-undefined";; +esac + +case "$host_os" in + darwin*) + LIBTSO_MODULE="" + LIBTSO_MODSUFFIX=".dylib";; + *qnx*) + LIBTSO_MODULE="" + LIBTSO_MODSUFFIX=$MODSUFFIX;; + *) + LIBTSO_MODULE="-module" + LIBTSO_MODSUFFIX=$MODSUFFIX;; +esac + +# C API. +if test "$enable_shared" = "no"; then + DEFAULT_LIB="\$(libdb_version)" + POSTLINK=": " + o=".o" +else + DEFAULT_LIB="\$(libso_target)" + POSTLINK="\$(LIBTOOL) --mode=execute true" + o=".lo" +fi +INSTALL_LIBS="$DEFAULT_LIB" +if test "$enable_static" = "yes"; then + INSTALL_LIBS="$INSTALL_LIBS \$(libdb)" +fi + +# Optional C++ API. +if test "$db_cv_cxx" = "yes"; then + if test "$enable_shared" = "no"; then + DEFAULT_LIB_CXX="\$(libcxx_version)" + fi + if test "$enable_shared" = "yes"; then + DEFAULT_LIB_CXX="\$(libxso_target)" + fi + INSTALL_LIBS="$INSTALL_LIBS $DEFAULT_LIB_CXX" + if test "$enable_static" = "yes"; then + INSTALL_LIBS="$INSTALL_LIBS \$(libcxx)" + fi +fi + +# Optional Java API. +if test "$db_cv_java" = "yes"; then + # Java requires shared libraries. + if test "$enable_shared" = "no"; then + AC_MSG_ERROR([Java requires shared libraries]) + fi + + # A classpath that includes . is needed to check for Java + # Since Cygwin uses Windows' javac, we need Windows path separators + case "$host_os" in + cygwin*) CLASSPATH=".;$CLASSPATH";; + *) CLASSPATH=".:$CLASSPATH";; + esac + export CLASSPATH + AC_PROG_JAVAC + AC_PROG_JAR + AC_PROG_JAVA + AC_JNI_INCLUDE_DIR + + AC_MSG_CHECKING(java version) + case "$JAVA" in + *kaffe* ) + JAVA_VERSION=`$JAVA -version 2>&1 | + sed -e '/Java Version:/!d' -e 's/.*Java Version: \([[^ ]]*\)[[ ]]*/\1/'` ;; + * ) JAVA_VERSION=`$JAVA -version 2>&1 | + sed -e '/ version /!d' -e 's/.*"\(.*\)".*/\1/'` ;; + esac + AC_MSG_RESULT($JAVA_VERSION) + case "$JAVA_VERSION" in + 1.[[3456789]]* | 1.[[1-9]][[0-9]]* | [[23456789]]* ) ;; + * ) + AC_MSG_ERROR([Java version 1.3 or higher required, got $JAVA_VERSION]) ;; + esac + + # Because of the code that SWIG generates to cast between pointers and + # integers, we need to add the flag "-fno-strict-aliasing" to the gcc + # command line when compiling the JNI code. This is documented in + # [#14953] and at http://www.swig.org/Doc1.3/Java.html + if test "${GCC}" = "yes"; then + SWIGCFLAGS="-fno-strict-aliasing" + fi + + for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS + do + CPPFLAGS="$CPPFLAGS -I$JNI_INCLUDE_DIR" + done + + ADDITIONAL_LANG="$ADDITIONAL_LANG java" + INSTALL_LIBS="$INSTALL_LIBS \$(libjso_target)" +else + JAVAC=nojavac +fi + +# MinGW support. +if test "$db_cv_mingw" = "yes"; then + OSDIR=os_windows + PATH_SEPARATOR="\\\\/:" + + AC_DEFINE(DB_WIN32) + AC_DEFINE(STDC_HEADERS) +else + OSDIR=os + PATH_SEPARATOR="/" + AC_DEFINE(HAVE_SYSTEM_INCLUDE_FILES) +fi + +# Optional STL API. +if test "$db_cv_stl" = "yes"; then + AC_CXX_SUPPORTS_TEMPLATES + AC_CXX_WSTRING + AX_TLS + if test "$enable_shared" = "no"; then + DEFAULT_LIB_STL="\$(libstl_version)" + fi + if test "$enable_shared" = "yes"; then + DEFAULT_LIB_STL="\$(libstlso_target)" + fi + ADDITIONAL_INCS="dbstl_common.h dbstl_set.h dbstl_vector.h dbstl_exception.h dbstl_map.h dbstl_utility.h dbstl_dbc.h dbstl_dbt.h dbstl_base_iterator.h dbstl_container.h dbstl_element_ref.h dbstl_inner_utility.h dbstl_resource_manager.h $ADDITIONAL_INCS" + INSTALL_LIBS="$INSTALL_LIBS $DEFAULT_LIB_STL" + if test "$enable_static" = "yes"; then + INSTALL_LIBS="$INSTALL_LIBS \$(libstl)" + fi +fi + +# Checks for include files, structures, C types. +AC_HEADER_STAT +AC_HEADER_TIME +AC_HEADER_DIRENT +AC_CHECK_HEADERS(execinfo.h sys/select.h sys/socket.h sys/time.h) +AC_CHECK_MEMBERS([struct stat.st_blksize]) +AM_TYPES + +AC_CACHE_CHECK([for ANSI C exit success/failure values], db_cv_exit_defines, [ +AC_TRY_COMPILE([#include <stdlib.h>], return (EXIT_SUCCESS);, + [db_cv_exit_defines=yes], [db_cv_exit_defines=no])]) +if test "$db_cv_exit_defines" = "yes"; then + AC_DEFINE(HAVE_EXIT_SUCCESS) + AH_TEMPLATE(HAVE_EXIT_SUCCESS, + [Define to 1 if platform has EXIT_SUCCESS/EXIT_FAILURE #defines.]) +fi + +AC_CACHE_CHECK([for getopt optreset variable], db_cv_optreset, [ +AC_TRY_LINK([#include <unistd.h>], extern int optreset; optreset = 1;, + [db_cv_optreset=yes], [db_cv_optreset=no])]) +if test "$db_cv_optreset" = "yes"; then + AC_DEFINE(HAVE_GETOPT_OPTRESET) + AH_TEMPLATE(HAVE_GETOPT_OPTRESET, + [Define to 1 if getopt supports the optreset variable.]) +fi + +# Check for mutexes. +# We do this first because it changes $LIBSO_LIBS. +AM_DEFINE_MUTEXES + +# Check for native (system call or instruction set) support for +# atomic increment, decrement, and compare & exchange. +AM_DEFINE_ATOMIC + +# Test for various functions/libraries -- do tests that change library values +# first. +# +# Update LIBS, so we're testing against the current list of libraries. +LIBS="$LIBSO_LIBS" + +# The yield function on Solaris is almost certainly pthread_yield (LWP threads +# or POSIX pthreads), or thr_yield (UI threads). There's an outside chance it +# is sched_yield() though, only available in -lrt on Solaris. +AC_SEARCH_LIBS(sched_yield, rt) + +# The Berkeley DB library calls fdatasync, only available in -lrt on Solaris. +AC_SEARCH_LIBS(fdatasync, rt) + +AC_SEARCH_LIBS(getaddrinfo, nsl socket) +AC_SEARCH_LIBS(hstrerror, resolv) + +# Those tests updated LIBS, update our internal list. +LIBSO_LIBS="$LIBS" + +# !!! +# We could be more exact about whether these libraries are needed, but don't +# bother -- if they exist, we load them, it's only the test programs anyway. +AC_HAVE_LIBRARY(m, TEST_LIBS="$TEST_LIBS -lm") +AC_HAVE_LIBRARY(nsl, TEST_LIBS="$TEST_LIBS -lnsl") +AC_HAVE_LIBRARY(socket, TEST_LIBS="$TEST_LIBS -lsocket") + +# Checks for system functions for which we have replacements. +# +# The only portable getcwd call is getcwd(char *, size_t), where the +# buffer is non-NULL -- Solaris can't handle a NULL buffer, and they +# deleted getwd(). +AC_REPLACE_FUNCS(\ + abort atoi atol getcwd getenv getopt isalpha isdigit isprint\ + isspace memcmp memcpy memmove printf qsort raise rand strcasecmp\ + strcat strchr strdup strerror strncat strncmp strrchr strsep\ + strtol strtoul) + +# Check for system functions we optionally use. +AC_CHECK_FUNCS(\ + _fstati64 backtrace backtrace_symbols directio fchmod fclose\ + fcntl fdatasync fgetc fgets fopen fwrite getgid\ + getrusage getuid hstrerror mprotect pstat_getdynamic\ + pthread_self pthread_yield random sched_yield select setgid setuid\ + sigaction snprintf stat sysconf vsnprintf yield) + +AC_TIMERS + +# Ftruncate. +# We've run into a problem with ftruncate on Alpha/Tru64, the issue is that +# after a truncate the last page of the file mmaps as all zeros. So just don't +# use ftruncate. +case "$host_os" in +osf*) + AC_MSG_WARN( + [ftruncate ignored on $host_os-$host_vendor.]);; +*) + AC_CHECK_FUNCS(ftruncate);; +esac + +# Pread/pwrite. +# HP-UX has pread/pwrite, but it doesn't work with largefile support. +# NCR's version of System V R 4.3 has pread/pwrite symbols, but no support. +case "$host_os-$host_vendor" in +hpux*|sysv4.3*-ncr) + AC_MSG_WARN( + [pread/pwrite interfaces ignored on $host_os-$host_vendor.]);; +*) + AC_CHECK_FUNCS(pread pwrite);; +esac + +# Check for getaddrinfo; do the test explicitly instead of using AC_CHECK_FUNCS +# because <netdb.h> isn't a standard include file. +AC_CACHE_CHECK([for getaddrinfo], db_cv_getaddrinfo, [ +AC_TRY_LINK([ +#include <sys/types.h> +#include <netdb.h>], [ + getaddrinfo(0, 0, 0, 0); +], [db_cv_getaddrinfo=yes], [db_cv_getaddrinfo=no])]) +if test "$db_cv_getaddrinfo" = "yes"; then + AC_DEFINE(HAVE_GETADDRINFO) + AH_TEMPLATE(HAVE_GETADDRINFO, + [Define to 1 if you have the `getaddrinfo' function.]) +fi + +# Check for the fcntl F_SETFD flag to deny child process access to file +# descriptors. +AC_CACHE_CHECK([for fcntl/F_SETFD], db_cv_fcntl_f_setfd, [ +AC_TRY_LINK([ +#include <sys/types.h> +#include <fcntl.h>], [ + fcntl(1, F_SETFD, 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) + AH_TEMPLATE(HAVE_FCNTL_F_SETFD, + [Define to 1 if fcntl/F_SETFD denies child access to file descriptors.]) +fi + +# A/UX has a broken getopt(3). +case "$host_os" in +aux*) AC_LIBOBJ([getopt]);; +esac + +# Linux has a broken O_DIRECT flag, but you can't detect it at configure time. +# Linux and SGI require buffer alignment we may not match, otherwise writes +# will fail. Default to not using the O_DIRECT flag. +if test "$db_cv_o_direct" = "yes"; then + AC_CACHE_CHECK([for open/O_DIRECT], db_cv_open_o_direct, [ + AC_TRY_LINK([ + #include <sys/types.h> + #include <fcntl.h>], [ + open("a", O_RDONLY | O_DIRECT, 0); + ], [db_cv_open_o_direct=yes], [db_cv_open_o_direct=no])]) + if test \ + "$db_cv_o_direct" = "yes" -a "$db_cv_open_o_direct" = "yes"; then + AC_DEFINE(HAVE_O_DIRECT) + AH_TEMPLATE(HAVE_O_DIRECT, + [Define to 1 if you have the O_DIRECT flag.]) + fi +fi + +# Check for largefile support. +AC_SYS_LARGEFILE + +# Figure out how to create shared regions. +# +# First, we look for mmap. +# +# BSD/OS has mlock(2), but it doesn't work until the 4.1 release. +# +# Nextstep (version 3.3) apparently supports mmap(2) (the mmap symbol +# is defined in the C library) but does not support munmap(2). Don't +# try to use mmap if we can't find munmap. +# +# 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 $host_os-$host_vendor.]) + mmap_ok=yes + AC_CHECK_FUNCS(mmap munmap, , mmap_ok=no);; +ultrix*) + AC_MSG_WARN([mmap(2) interface ignored on $host_os-$host_vendor.]);; +*) + mmap_ok=yes + AC_CHECK_FUNCS(mlock munlock) + AC_CHECK_FUNCS(mmap munmap, , mmap_ok=no);; +esac + +# Second, we look for shmget. +# +# SunOS has the shmget(2) interfaces, but there appears to be a missing +# #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 $host_os-$host_vendor.]);; +*) + shmget_ok=yes + AC_CHECK_FUNCS(shmget, , shmget_ok=no) + + # Check for shmctl to lock down shared memory segments. + AC_CACHE_CHECK([for shmctl], db_cv_shmctl_shm_lock, [ + AC_TRY_LINK([ +#include <sys/types.h> +#include <sys/ipc.h> +#include <sys/shm.h> +#include <stdio.h>], [ + shmctl(0, SHM_LOCK, NULL); + ], [db_cv_shmctl_shm_lock=yes], [db_cv_shmctl_shm_lock=no])]) + if test "$db_cv_shmctl_shm_lock" = "yes"; then + AC_DEFINE(HAVE_SHMCTL_SHM_LOCK) + AH_TEMPLATE(HAVE_SHMCTL_SHM_LOCK, + [Define to 1 if shmctl/SHM_LOCK locks down shared memory segments.]) + fi;; +esac + +# 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 + +# Optional RPC client/server. +if test "$db_cv_rpc" = "yes"; then + AM_RPC_CONFIGURE +fi + +# Optional Tcl support. +if test "$db_cv_tcl" = "yes"; then + AM_TCL_LOAD +fi + +# Optional sequence code. +AM_SEQUENCE_CONFIGURE + +# 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 + +# Optional utilities. +if test "$db_cv_dump185" = "yes"; then + ADDITIONAL_PROGS="db_dump185 $ADDITIONAL_PROGS" +fi + +# You can disable pieces of functionality to save space. +# +# Btree is always configured: it is the standard method, and Hash off-page +# duplicates require it. +ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(BTREE_OBJS)" + +# Compression can be disabled. +if test "$db_cv_build_compression" = "yes"; then + AC_DEFINE(HAVE_COMPRESSION) + AH_TEMPLATE(HAVE_COMPRESSION, [Define to 1 if building compression support.]) +fi + +# Partitioning can be disabled. +if test "$db_cv_build_partition" = "yes"; then + AC_DEFINE(HAVE_PARTITION) + AH_TEMPLATE(HAVE_PARTITION, [Define to 1 if building partitioned database support.]) +fi + +# Hash can be disabled. +if test "$db_cv_build_hash" = "yes"; then + AC_DEFINE(HAVE_HASH) + AH_TEMPLATE(HAVE_HASH, [Define to 1 if building Hash access method.]) + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(HASH_OBJS)" + if test "$db_cv_build_verify" = "yes"; then + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(HASH_VRFY_OBJS)" + fi +else + ADDITIONAL_OBJS="$ADDITIONAL_OBJS hash_stub${o}" +fi + +# Queue can be disabled. +if test "$db_cv_build_queue" = "yes"; then + AC_DEFINE(HAVE_QUEUE) + AH_TEMPLATE(HAVE_QUEUE, [Define to 1 if building Queue access method.]) + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(QUEUE_OBJS)" + if test "$db_cv_build_verify" = "yes"; then + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(QUEUE_VRFY_OBJS)" + fi +else + ADDITIONAL_OBJS="$ADDITIONAL_OBJS qam_stub${o}" +fi + +# Replication can be disabled. +if test "$db_cv_build_replication" = "yes"; then + AC_DEFINE(HAVE_REPLICATION) + AH_TEMPLATE(HAVE_REPLICATION, + [Define to 1 if building replication support.]) + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(REP_OBJS)" + + # If we're building replication and detected POSIX threads, build the + # replication manager. + AH_TEMPLATE(HAVE_REPLICATION_THREADS, + [Define to 1 if building the Berkeley DB replication framework.]) + + if test "$ac_cv_header_pthread_h" = yes; then + AC_DEFINE(HAVE_REPLICATION_THREADS) + + # Solaris requires the socket and nsl libraries to build the + # replication manager. Don't add nsl regardless of the OS, + # it causes RPC to fail on AIX 4.3.3. + case "$host_os" in + solaris*) + AC_HAVE_LIBRARY(nsl, LIBSO_LIBS="$LIBSO_LIBS -lnsl") + AC_HAVE_LIBRARY(socket, + LIBSO_LIBS="$LIBSO_LIBS -lsocket");; + esac + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(REPMGR_OBJS)" + else + ADDITIONAL_OBJS="$ADDITIONAL_OBJS repmgr_stub${o}" + fi +else + ADDITIONAL_OBJS="$ADDITIONAL_OBJS rep_stub${o} repmgr_stub${o}" +fi + +# The statistics code can be disabled. +if test "$db_cv_build_statistics" = "yes"; then + AC_DEFINE(HAVE_STATISTICS) + AH_TEMPLATE(HAVE_STATISTICS, + [Define to 1 if building statistics support.]) +fi + +# The verification code can be disabled. +if test "$db_cv_build_verify" = "yes"; then + AC_DEFINE(HAVE_VERIFY) + AH_TEMPLATE(HAVE_VERIFY, + [Define to 1 if building access method verification support.]) + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(BTREE_VRFY_OBJS)" +else + ADDITIONAL_OBJS="$ADDITIONAL_OBJS db_vrfy_stub${o}" +fi + +# The crypto code can be disabled. +if test -d "$srcdir/../crypto" -a "$db_cv_build_cryptography" = "yes"; then + AC_DEFINE(HAVE_CRYPTO) + AH_TEMPLATE(HAVE_CRYPTO, + [Define to 1 if Berkeley DB release includes strong cryptography.]) + + CRYPTO_OBJS="\$(CRYPTO_OBJS)" +else + CRYPTO_OBJS="crypto_stub${o}" +fi + +# The mutex code can be disabled, and if there aren't any mutexes, then there's +# no reason to include the locking code. +if test "$db_cv_build_mutexsupport" = "yes"; then + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(LOCK_OBJS) \$(MUTEX_OBJS)" +else + ADDITIONAL_OBJS="$ADDITIONAL_OBJS lock_stub${o} mut_stub${o}" +fi + +# If DIAGNOSTIC is defined, include the log print routines in the library +# itself, various diagnostic modes use them. +if test "$db_cv_diagnostic" = "yes"; then + ADDITIONAL_OBJS="$ADDITIONAL_OBJS \$(PRINT_OBJS)" +fi + +# If building for QNX, we need additional OS files. +if test "$qnx_build" = "yes"; then + ADDITIONAL_OBJS="$ADDITIONAL_OBJS os_qnx_fsync${o} os_qnx_open${o}" +fi + +# We need to add the additional object files into the Makefile with the correct +# suffix. We can't use $LTLIBOBJS itself, because that variable has $U encoded +# in it for automake, and that's not what we want. See SR #7227 for additional +# information. +# +# XXX: I'm not sure this is correct. +REPLACEMENT_OBJS=`echo "$LIB@&t@OBJS" | + sed "s,\.[[^.]]* ,$o ,g;s,\.[[^.]]*$,$o,"` + +# This is necessary so that .o files in LIBOBJS are also built via +# the ANSI2KNR-filtering rules. +LIB@&t@OBJS=`echo "$LIB@&t@OBJS" | + sed 's,\.[[^.]]* ,$U&,g;s,\.[[^.]]*$,$U&,'` +LTLIBOBJS=`echo "$LIB@&t@OBJS" | + sed 's,\.[[^.]]* ,.lo ,g;s,\.[[^.]]*$,.lo,'` +AC_SUBST(LTLIBOBJS) + +# Initial output file list. +CREATE_LIST="Makefile + db_cxx.h:$srcdir/../dbinc/db_cxx.in + db_int.h:$srcdir/../dbinc/db_int.in + clib_port.h:$srcdir/../dist/clib_port.in + include.tcl:$srcdir/../test/include.tcl" + +# Create the db.h file from a source file, a list of global function +# prototypes, and, if configured for unique names, a list of #defines +# to do DB_VERSION_UNIQUE_NAME substitution. +if test "$db_cv_uniquename" = "yes"; then + CREATE_LIST="$CREATE_LIST + db.h:$srcdir/../dbinc/db.in:$srcdir/../dbinc_auto/api_flags.in:$srcdir/../dbinc_auto/ext_def.in:$srcdir/../dbinc_auto/ext_prot.in" +else + CREATE_LIST="$CREATE_LIST + db.h:$srcdir/../dbinc/db.in:$srcdir/../dbinc_auto/api_flags.in:$srcdir/../dbinc_auto/ext_prot.in" +fi + +# If configured for unique names, create the db_int_uext.h file (which +# does the DB_VERSION_UNIQUE_NAME substitution), which is included by +# the db_int.h file. +if test "$db_cv_uniquename" = "yes"; then + CREATE_LIST="$CREATE_LIST + db_int_def.h:$srcdir/../dbinc_auto/int_def.in" + db_int_def='#include "db_int_def.h"' +fi + +# Create the db_185.h and db185_int.h files from source files, a list of +# global function prototypes, and, if configured for unique names, a list +# of #defines to do DB_VERSION_UNIQUE_NAME substitution. +if test "$db_cv_compat185" = "yes"; then + if test "$db_cv_uniquename" = "yes"; then + CREATE_LIST="$CREATE_LIST + db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in + db185_int.h:$srcdir/../db185/db185_int.in:$srcdir/../dbinc_auto/ext_185_def.in:$srcdir/../dbinc_auto/ext_185_prot.in" + else + CREATE_LIST="$CREATE_LIST + db_185.h:$srcdir/../dbinc/db_185.in:$srcdir/../dbinc_auto/ext_185_prot.in + db185_int.h:$srcdir/../db185/db185_int.in:$srcdir/../dbinc_auto/ext_185_prot.in" + fi +fi + +if test "$db_cv_stl" = "yes"; then + CREATE_LIST="$CREATE_LIST + dbstl_common.h:$srcdir/../stl/dbstl_common.in" +fi + +AC_CONFIG_FILES($CREATE_LIST) +AC_OUTPUT |