PACKAGE=wiredtiger AC_PREREQ(2.63) AC_INIT(WiredTiger, m4_normalize(m4_include([build_posix/aclocal/version.m4])), [support@wiredtiger.com]) m4_include([build_posix/aclocal/version-set.m4]) AC_CONFIG_AUX_DIR([build_posix/gnu-support]) AC_CONFIG_MACRO_DIR([build_posix/aclocal]) AC_CONFIG_SRCDIR([RELEASE_INFO]) # We rely on some automake features for testing (like AM_TEST_ENVIRONMENT) # that didn't work before 1.11.6. AM_INIT_AUTOMAKE([1.11.6 foreign parallel-tests subdir-objects]) m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([no])]) # If CFLAGS/CXXFLAGS were not set on entry, default to "-O3 -g" : ${CFLAGS=-O3 -g} : ${CXXFLAGS=-O3 -g} AC_PROG_CC(cc gcc) AC_PROG_CXX(c++ g++) AM_PROG_AS(as gas) # Configure options. AM_OPTIONS define([AC_LIBTOOL_LANG_CXX_CONFIG], [:])dnl define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl LT_PREREQ(2.2.6) LT_INIT([pic-only]) AC_SUBST([LIBTOOL_DEPS]) # If enable-strict is configured, turn on as much error checking as we can for # this compiler. Intended for developers, and only works for gcc/clang, but it # fills a need. if test "$wt_cv_enable_strict" = "yes"; then wt_cv_cc_version="`$CC --version | sed -eq`" case "$wt_cv_cc_version" in *clang*) AM_CLANG_WARNINGS;; *gcc*|*GCC*) AM_GCC_WARNINGS;; *) AC_MSG_ERROR( [--enable-strict does not support "$wt_cv_cc_version".]);; esac AM_CFLAGS="$AM_CFLAGS $wt_cv_strict_warnings" fi AM_CONDITIONAL([POSIX_HOST], [true]) AM_CONDITIONAL([WINDOWS_HOST], [false]) AS_CASE([$host_cpu], [ppc64*], [wt_cv_powerpc="yes"], [elf64lppc], [wt_cv_powerpc="yes"], [powerpc*], [wt_cv_powerpc="yes"], [wt_cv_powerpc="no"]) AM_CONDITIONAL([POWERPC_HOST], [test "$wt_cv_powerpc" = "yes"]) # This is a workaround as part of WT-2459. Currently, clang (v3.7) does not # support compiling the ASM code we have to perform the CRC checks on PowerPC. # To compile with clang we need to override the ASM compiler with CCAS to use # gcc. Unfortunately, doing the compilation in this manner means libtool can't # determine what tag to use for that one .S file. If we catch that we are using # two different compilers for CC and CCAS and we are on a PowerPC system we # overload the libtool flags to provide CC by default. if test "$wt_cv_powerpc" = "yes" -a "$CC" != "$CCAS"; then [AM_LIBTOOLFLAGS+="--tag=CC"] fi AC_SUBST(AM_LIBTOOLFLAGS) if test "$GCC" = "yes"; then # The Solaris gcc compiler gets the additional -pthreads flag. if test "`uname -s`" = "SunOS"; then AM_CFLAGS="$AM_CFLAGS -pthreads" fi else # The Solaris native compiler gets the additional -mt flag. if test "`uname -s`" = "SunOS"; then AM_CFLAGS="$AM_CFLAGS -mt" fi fi # Java and Python APIs if test "$wt_cv_enable_java" = "yes" -o "$wt_cv_enable_python" = "yes"; then AX_PKG_SWIG(2.0.4, [], [AC_MSG_WARN([SWIG is required to rebuild Java or Python APIs.])]) fi if test "$wt_cv_enable_java" = "yes"; then JAVAC=${JAVAC-javac} AX_PROG_JAVAC AX_PROG_JAR AX_JNI_INCLUDE_DIR AX_CHECK_JUNIT for JNI_INCLUDE_DIR in $JNI_INCLUDE_DIRS ; do JNI_CPPFLAGS="$JNI_CPPFLAGS -I$JNI_INCLUDE_DIR" done AC_SUBST(JNI_CPPFLAGS) fi if test "$wt_cv_enable_python" = "yes"; then AM_PATH_PYTHON([2.6]) if test -n "$with_python_prefix" ; then PYTHON_INSTALL_ARG="-d $with_python_prefix" fi AC_SUBST(PYTHON_INSTALL_ARG) fi AM_TYPES AC_PROG_INSTALL AC_CHECK_HEADERS([x86intrin.h]) AC_CHECK_LIB(pthread, pthread_create) AC_CHECK_LIB(dl, dlopen) AC_CHECK_LIB(rt, sched_yield) AC_CHECK_FUNCS([\ clock_gettime fallocate fcntl fread_unlocked ftruncate gettimeofday\ posix_fadvise posix_fallocate posix_madvise\ strtouq sync_file_range]) # OS X wrongly reports that it has fdatasync AS_CASE([$host_os], [darwin*], [], [AC_CHECK_FUNCS([fdatasync])]) # Check for posix_memalign explicitly: it is a builtin in some compilers and # the generic declaration in AC_CHECK_FUNCS is incompatible. AX_FUNC_POSIX_MEMALIGN AC_SYS_LARGEFILE AC_C_BIGENDIAN AC_MSG_CHECKING([for a 64-bit build]) AC_COMPUTE_INT(ac_cv_sizeof_void_p, [sizeof(void *)]) if test "$ac_cv_sizeof_void_p" != "8" ; then AC_MSG_ERROR([WiredTiger requires a 64-bit build.]) fi AC_MSG_RESULT(yes) # Linux requires _GNU_SOURCE to be defined case "$host_os" in linux*) AM_CFLAGS="$AM_CFLAGS -D_GNU_SOURCE" ;; esac # Linux requires buffers aligned to 4KB boundaries for O_DIRECT to work. BUFFER_ALIGNMENT=0 if test "$ax_cv_func_posix_memalign_works" = "yes" ; then case "$host_os" in linux*) BUFFER_ALIGNMENT=4096 ;; esac fi AC_DEFINE_UNQUOTED(WT_BUFFER_ALIGNMENT_DEFAULT, $BUFFER_ALIGNMENT, [Default alignment of buffers used for I/O]) AC_SUBST(AM_CFLAGS) # test/format optionally uses a Oracle Berkeley DB release for verification. AC_MSG_CHECKING([if --with-berkeleydb=DIR option specified]) AC_ARG_WITH(berkeleydb, [AS_HELP_STRING([--with-berkeleydb=DIR], [Specify installed library directory of Berkeley DB])], [with_berkeleydb="$withval"], [with_berkeleydb="NO_BERKELEY_DB_LIBRARY"]) AC_MSG_RESULT($with_berkeleydb) AM_CONDITIONAL([HAVE_BERKELEY_DB], [test -d $with_berkeleydb]) AC_SUBST(BERKELEY_DB_PATH, [$with_berkeleydb]) # test/format optionally supports the Levyx/Helium key/value store. AC_MSG_CHECKING([if --with-helium=DIR option specified]) AC_ARG_WITH(helium, [AS_HELP_STRING([--with-helium=DIR], [Specify installed library directory of Helium])], [with_helium="$withval"], [with_helium="NO_HELIUM_LIBRARY"]) AC_MSG_RESULT($with_helium) AM_CONDITIONAL([HAVE_HELIUM], [test -d $with_helium]) AC_SUBST(HELIUM_PATH, [$with_helium]) # Sanity check the build AM_COND_IF([LEVELDB], [ AM_COND_IF([SNAPPY], [], [ AC_MSG_ERROR( [--enable-leveldb requires --enable-snappy or --with-builtins=snappy.]) ]) ]) # Warn that diagnostic builds should not be used in production if test "$wt_cv_enable_diagnostic" = "yes"; then AC_MSG_WARN( [DIAGNOSTIC BUILDS ARE NOT RECOMMENDED FOR PRODUCTION DEPLOYMENT.]) fi # If we are building in a tree without documentation, check if doxygen is # available. if test -f "$srcdir/docs/index.html" ; then wt_cv_docs_exist=yes else wt_cv_docs_exist=no fi if test "$wt_cv_docs_exist" = "no"; then AC_CHECK_PROG([DOXYGEN], [doxygen], [doxygen], [false]) fi if test "$wt_cv_docs_exist" = "yes" -o "$DOXYGEN" = "doxygen" ; then MAN1_PAGES="$srcdir/docs/man/man1/wt.1" AC_SUBST(MAN1_PAGES) MAN3_PAGES="$srcdir/docs/man/man3/wiredtiger.3" AC_SUBST(MAN3_PAGES) fi # Output files AC_CONFIG_HEADERS([wiredtiger_config.h:build_posix/config.hin]) # The LevelDB API needs some configuration knowledge AM_COND_IF([LEVELDB], AC_CONFIG_HEADERS([api/leveldb/leveldb_wt_config.h:api/leveldb/config.hin])) # BEGIN check existence -- maintained by reconf and Make.subdirs # END check existence AC_CONFIG_FILES([ Makefile wiredtiger.h:src/include/wiredtiger.in wiredtiger.pc:build_posix/wiredtiger.pc.in ]) AC_OUTPUT