dnl ============================================================================ dnl ArangoDB (c) triAGENS GmbH dnl ============================================================================ dnl ============================================================================ dnl --SECTION-- triAGENS GmbH Build Environment dnl ============================================================================ AC_INIT([triAGENS ArangoDB], [2.6.0-devel], [info@arangodb.com], [arangodb], [https://www.arangodb.com]) dnl ---------------------------------------------------------------------------- dnl auxillary directory for install-sh and missing dnl ---------------------------------------------------------------------------- AC_CONFIG_AUX_DIR([config]) AC_CONFIG_MACRO_DIR([m4]) CURRENT_DIR=`pwd` AC_MSG_NOTICE([configure started in '$CURRENT_DIR]) AC_MSG_NOTICE([with CC='$CC']) AC_MSG_NOTICE([with CXX='$CXX']) AC_MSG_NOTICE([with CPPFLAGS='$CPPFLAGS']) AC_MSG_NOTICE([with CFLAGS='$CFLAGS']) AC_MSG_NOTICE([with CXXFLAGS='$CXXFLAGS']) AC_MSG_NOTICE([with LDFLAGS='$LDFLAGS']) if python -c ' import sys if sys.version_info.major != 2: exit(0) else: exit(1) '; then echo "Compiling V8 requires a python version 2; please adjust your " `which python` exit 1 fi dnl ---------------------------------------------------------------------------- dnl grab the configure command, options and flags and store them in m4 variables dnl ---------------------------------------------------------------------------- if test `expr -- [$]0 : "'.*"` = 0; then TRI_CONFIGURE_COMMAND="$TRI_CONFIGURE_COMMAND '[$]0'" else TRI_CONFIGURE_COMMAND="$TRI_CONFIGURE_COMMAND [$]0" fi TRI_CONFIGURE_OPTIONS="$ac_configure_args" for var in CFLAGS CXXFLAGS CPPFLAGS LDFLAGS EXTRA_LDFLAGS_PROGRAM LIBS CC CXX; do eval val=\$$var if test -n "$val"; then TRI_CONFIGURE_FLAGS="$TRI_CONFIGURE_FLAGS $var='$val'" fi done AC_SUBST(TRI_CONFIGURE_COMMAND) AC_SUBST(TRI_CONFIGURE_OPTIONS) AC_SUBST(TRI_CONFIGURE_FLAGS) AC_DEFINE_UNQUOTED(TRI_CONFIGURE_COMMAND, "$TRI_CONFIGURE_COMMAND", "" , [configure command]) AC_DEFINE_UNQUOTED(TRI_CONFIGURE_OPTIONS, "$TRI_CONFIGURE_OPTIONS", "" , [configure options]) AC_DEFINE_UNQUOTED(TRI_CONFIGURE_FLAGS, "$TRI_CONFIGURE_FLAGS", "" , [configure flags]) dnl ---------------------------------------------------------------------------- dnl grab the git version number if available dnl ---------------------------------------------------------------------------- if test -d ".git"; then TRI_REPOSITORY_VERSION=`git describe --all --tags --long --abbrev=40 --dirty="-dirty" 2> /dev/null` else TRI_REPOSITORY_VERSION="" fi AC_SUBST(TRI_REPOSITORY_VERSION) AC_DEFINE_UNQUOTED(TRI_REPOSITORY_VERSION, "$TRI_REPOSITORY_VERSION", "" , [repository version]) dnl ============================================================================ dnl --SECTION-- 3RD-PARTY LIBRARIES dnl ============================================================================ dnl ---------------------------------------------------------------------------- dnl ETCD dnl ---------------------------------------------------------------------------- AC_ARG_ENABLE(all-in-one-etcd, AS_HELP_STRING([--enable-all-in-one-etcd], [use supplied etcd from 3rdParty directory (default: yes)]), [tr_ALL_IN_ONE_ETCD="${enableval:-yes}"], [tr_ALL_IN_ONE_ETCD=yes] ) AM_CONDITIONAL(ENABLE_ALL_IN_ONE_ETCD, test "x$tr_ALL_IN_ONE_ETCD" = xyes) dnl ---------------------------------------------------------------------------- dnl GO dnl ---------------------------------------------------------------------------- AC_ARG_ENABLE(internal-go, AS_HELP_STRING([--enable-internal-go], [use go binaries from 3rdParty directory (default: no)]), [tr_INTERNAL_GO="${enableval:-yes}"], [tr_INTERNAL_GO=no] ) AM_CONDITIONAL(ENABLE_INTERNAL_GO, test "x$tr_INTERNAL_GO" = xyes) if test "x$tr_INTERNAL_GO" = "xno"; then AC_CHECK_PROG(GO, go, go) if test "x$GO" = "x"; then AC_MSG_WARN([no go executable found.]) BASIC_INFO="$BASIC_INFO|GO BINARY: not found" else BASIC_INFO="$BASIC_INFO|GO BINARY: $GO" fi fi dnl ---------------------------------------------------------------------------- dnl tcmalloc dnl ---------------------------------------------------------------------------- AC_ARG_ENABLE(tcmalloc, AS_HELP_STRING([--enable-tcmalloc], [use system-installed tcmalloc library (default: no)]), [tr_TCMALLOC="${enableval:-yes}"], [tr_TCMALLOC=no] ) AM_CONDITIONAL(ENABLE_TCMALLOC, test "x$tr_TCMALLOC" = xyes) if test "x$tr_TCMALLOC" = "xyes"; then TCMALLOC_LIBS="-ltcmalloc" else TCMALLOC_LIBS="" fi AC_SUBST(TCMALLOC_LIBS) dnl ============================================================================ dnl --SECTION-- OPTIONS dnl ============================================================================ dnl ---------------------------------------------------------------------------- dnl RELATIVE PATH dnl ---------------------------------------------------------------------------- AC_ARG_ENABLE(relative, AS_HELP_STRING([--enable-relative], [all path are relative to the binary (default: no)]), [tr_RELATIVE="${enableval:-yes}"], [tr_RELATIVE=no] ) AM_CONDITIONAL(ENABLE_RELATIVE, test "x$tr_RELATIVE" = xyes) if test "x$tr_RELATIVE" != xno; then BASIC_INFO="$BASIC_INFO|RELATIVE PATHS: enabled" else BASIC_INFO="$BASIC_INFO|RELATIVE PATHS: disabled" fi dnl ============================================================================ dnl --SECTION-- CONFIGURATION dnl ============================================================================ m4_include([m4/configure.basics]) AC_PROG_RANLIB m4_include([m4/configure.logging]) m4_include([m4/configure.largefile]) m4_include([m4/configure.threads]) m4_include([m4/configure.documentation]) m4_include([m4/configure.coverage]) m4_include([m4/configure.maintainer]) AC_CHECK_FUNCS([futimes]) dnl ============================================================================ dnl --SECTION-- EXTERNAL LIBRARIES dnl ============================================================================ dnl ---------------------------------------------------------------------------- dnl -lrt dnl ---------------------------------------------------------------------------- m4_include([m4/clock_gettime]) AC_CLOCK() dnl ---------------------------------------------------------------------------- dnl MATH dnl ---------------------------------------------------------------------------- m4_include([m4/external.math]) dnl ---------------------------------------------------------------------------- dnl READLINE dnl ---------------------------------------------------------------------------- m4_include([m4/external.readline]) dnl ---------------------------------------------------------------------------- dnl OPENSSL dnl ---------------------------------------------------------------------------- m4_include([m4/external.openssl]) dnl ---------------------------------------------------------------------------- dnl V8 dnl ---------------------------------------------------------------------------- V8_VERSION="3.31.74.1" V8_DIR=V8-${V8_VERSION} V8_CPPFLAGS="-I${srcdir}/3rdParty/${V8_DIR}/include -DTRI_V8_VERSION='\"${V8_VERSION}\"'" V8_LDFLAGS="" V8_TARGET="native" v8_lib_dir="" AC_ARG_ENABLE(v8-debug, AS_HELP_STRING([--enable-v8-debug], [build debug version of V8 (default: no)]), [tr_V8_DEBUG="${enableval:-yes}"], [tr_V8_DEBUG=no] ) AM_CONDITIONAL(ENABLE_V8_DEBUG, test "x$tr_V8_DEBUG" = xyes) if test x$tr_ARM == xyes; then if test x$tr_V8_DEBUG == xyes; then V8_TARGET="arm.debug" else V8_TARGET="arm.release" fi v8_lib_dir="${srcdir}/3rdParty/${V8_DIR}/out/$V8_TARGET/obj.target/tools/gyp" elif test x$tr_DARWIN == xyes; then if test "x$tr_BITS" == x64; then if test x$tr_V8_DEBUG == xyes; then V8_TARGET="x64.debug" else V8_TARGET="x64.release" fi else if test x$tr_V8_DEBUG == xyes; then V8_TARGET="ia32.debug" else V8_TARGET="ia32.release" fi fi v8_lib_dir="${srcdir}/3rdParty/${V8_DIR}/out/$V8_TARGET" else if test "x$tr_BITS" == x64; then if test x$tr_V8_DEBUG == xyes; then V8_TARGET="x64.debug" else V8_TARGET="x64.release" fi else if test x$tr_V8_DEBUG == xyes; then V8_TARGET="ia32.debug" else V8_TARGET="ia32.release" fi fi v8_lib_dir="${srcdir}/3rdParty/${V8_DIR}/out/$V8_TARGET/obj.target/tools/gyp" fi V8_LIBS="${v8_lib_dir}/libv8_base.a ${v8_lib_dir}/libv8_libbase.a ${v8_lib_dir}/libv8_libplatform.a ${v8_lib_dir}/libv8_nosnapshot.a" if test "x$tr_FREEBSD" == xyes; then V8_LIBS="$V8_LIBS -lexecinfo" fi AC_SUBST(V8_VERSION) AC_SUBST(V8_DIR) AC_SUBST(V8_CPPFLAGS) AC_SUBST(V8_LDFLAGS) AC_SUBST(V8_LIBS) AC_SUBST(V8_TARGET) LIB_INFO="$LIB_INFO|V8: 3rdParty version" LIB_INFO="$LIB_INFO|V8 VERSION: ${V8_VERSION}" LIB_INFO="$LIB_INFO|V8_TARGET: ${V8_TARGET}" LIB_INFO="$LIB_INFO|V8_CPPFLAGS: ${V8_CPPFLAGS}" LIB_INFO="$LIB_INFO|V8_LDFLAGS: ${V8_LDFLAGS}" LIB_INFO="$LIB_INFO|V8_LIBS: ${V8_LIBS}" LIB_INFO="$LIB_INFO|." dnl ---------------------------------------------------------------------------- dnl ICU dnl ---------------------------------------------------------------------------- ICU_VERSION="52.2" ICU_CPPFLAGS="-D_REENTRANT -I${srcdir}/3rdParty/${V8_DIR}/third_party/icu/source/common -I${srcdir}/3rdParty/${V8_DIR}/third_party/icu/source/i18n -I${srcdir}/3rdParty/${V8_DIR}/third_party/icu/source/io" ICU_LDFLAGS="" if test "x$tr_DARWIN" = xyes; then icu_lib_dir="${srcdir}/3rdParty/${V8_DIR}/out/$V8_TARGET" else icu_lib_dir="${srcdir}/3rdParty/${V8_DIR}/out/$V8_TARGET/obj.target/third_party/icu" fi ICU_LIBS="-ldl -lm ${icu_lib_dir}/libicui18n.a ${icu_lib_dir}/libicuuc.a ${icu_lib_dir}/libicudata.a -ldl -lm" AC_SUBST(ICU_CPPFLAGS) AC_SUBST(ICU_LDFLAGS) AC_SUBST(ICU_LIBS) ICU_CPPFLAGS="${ICU_CPPFLAGS}" LIB_INFO="$LIB_INFO|ICU: 3rdParty version" LIB_INFO="$LIB_INFO|ICU VERSION: ${ICU_VERSION}" LIB_INFO="$LIB_INFO|ICU_CPPFLAGS: ${ICU_CPPFLAGS}" LIB_INFO="$LIB_INFO|ICU_LDFLAGS: ${ICU_LDFLAGS}" LIB_INFO="$LIB_INFO|ICU_LIBS: ${ICU_LIBS}" LIB_INFO="$LIB_INFO|." dnl ---------------------------------------------------------------------------- dnl LIBEV dnl ---------------------------------------------------------------------------- LIBEV_VERSION="4.11" LIBEV_CPPFLAGS="-I${srcdir}/3rdParty/libev -DTRI_LIBEV_VERSION='\"${LIBEV_VERSION}\"'" LIBEV_CPPFLAGS="${LIBEV_CPPFLAGS}" LIBEV_LDFLAGS="" LIBEV_LIBS="${srcdir}/3rdParty/libev/BUILD/.libs/libev.a" AC_SUBST(LIBEV_VERSION) AC_SUBST(LIBEV_CPPFLAGS) AC_SUBST(LIBEV_LDFLAGS) AC_SUBST(LIBEV_LIBS) LIB_INFO="$LIB_INFO|LIBEV: 3rdParty version" LIB_INFO="$LIB_INFO|LIBEV VERSION: ${LIBEV_VERSION}" LIB_INFO="$LIB_INFO|LIBEV_CPPFLAGS: ${LIBEV_CPPFLAGS}" LIB_INFO="$LIB_INFO|LIBEV_LDFLAGS: ${LIBEV_LDFLAGS}" LIB_INFO="$LIB_INFO|LIBEV_LIBS: ${LIBEV_LIBS}" LIB_INFO="$LIB_INFO|." dnl ---------------------------------------------------------------------------- dnl ZLIB dnl ---------------------------------------------------------------------------- ZLIB_VERSION="1.2.7" ZLIB_CPPFLAGS="" ZLIB_LDFLAGS="" ZLIB_LIBS="${srcdir}/3rdParty/zlib-${ZLIB_VERSION}/libz.a" AC_SUBST(ZLIB_VERSION) AC_SUBST(ZLIB_CPPFLAGS) AC_SUBST(ZLIB_LDFLAGS) AC_SUBST(ZLIB_LIBS) LIB_INFO="$LIB_INFO|ZLIB: 3rdParty version" LIB_INFO="$LIB_INFO|ZLIB VERSION: ${ZLIB_VERSION}" LIB_INFO="$LIB_INFO|ZLIB_CPPFLAGS: ${ZLIB_CPPFLAGS}" LIB_INFO="$LIB_INFO|ZLIB_LDFLAGS: ${ZLIB_LDFLAGS}" LIB_INFO="$LIB_INFO|ZLIB_LIBS: ${ZLIB_LIBS}" dnl ---------------------------------------------------------------------------- dnl SPLICE dnl ---------------------------------------------------------------------------- AC_MSG_CHECKING([whether your system knows about splice()]) AC_TRY_COMPILE([ #define _GNU_SOURCE #include #include ], [ ssize_t sent, pipesize; int fd, SplicePipe[2]; pipesize = splice(fd, NULL, SplicePipe[1], NULL, 1, SPLICE_F_MORE | SPLICE_F_MOVE|SPLICE_F_NONBLOCK); ], [ ok_splice=yes AC_DEFINE_UNQUOTED(TRI_LINUX_SPLICE, 1, [true if we have the linux splice api]) AC_MSG_RESULT([yes]) AC_SUBST(TRI_LINUX_SPLICE) ], [ ok_splice=no AC_MSG_RESULT([no]) ] ) dnl ============================================================================ dnl --SECTION-- GENERATE FILES dnl ============================================================================ BUILD_H="\$(top_srcdir)/build.h" AC_SUBST(BUILD_H) AC_CONFIG_FILES([Makefile Installation/MacOSX/Bundle/Info.plist]) AC_CONFIG_HEADER([config/config.h lib/Basics/local-configuration.h]) AC_OUTPUT dnl ============================================================================ dnl --SECTION-- GENERATE INFO dnl ============================================================================ m4_include([m4/configure.information]) dnl ============================================================================ dnl --SECTION-- END-OF-FILE dnl ============================================================================ dnl Local Variables: dnl mode: outline-minor dnl outline-regexp: "^\\(dnl [a-zA-Z]\\|dnl --SECTION--\\)" dnl End: