| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| # Generated with autoscan, then modified appropriately. |
| # Process this file with autoconf to produce a configure script. |
| |
| AC_PREREQ([2.61]) |
| AC_INIT([mesos], [1.11.1]) |
| |
| # Have autoconf setup some variables related to the system. |
| AC_CANONICAL_HOST |
| AC_CANONICAL_BUILD |
| AC_CANONICAL_TARGET |
| AC_DISABLE_STATIC |
| |
| AC_LANG([C++]) |
| |
| # Default to gcc toolchain (we rely on some atomic builtins for now, |
| # that are also present with clang). |
| AC_PROG_CXX([g++]) |
| AC_PROG_CC([gcc]) |
| |
| AC_PROG_LN_S |
| |
| AX_COMPILER_VERSION |
| AX_COMPILER_VENDOR |
| |
| AC_CONFIG_MACRO_DIR([m4]) |
| |
| # Initialize automake. |
| # -Wno-portability, since we require GNU Make for % patterns |
| # Removal of -Werror due warnings introduced by automake 1.14. |
| AM_INIT_AUTOMAKE([-Wall -Wno-portability foreign tar-pax]) |
| AM_MAINTAINER_MODE([enable]) |
| |
| # This is required for linking non-POSIX libs. |
| m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) |
| |
| # Initialize libtool (LT_OUTPUT builds ./libtool immediately, needed |
| # if we want to do tests with libtool during configuration). |
| LT_PREREQ([2.2]) |
| LT_INIT |
| LT_LANG([C++]) |
| LT_OUTPUT |
| |
| # Save the configure arguments so we can pass them to any third-party |
| # libraries that we might run configure on (see 3rdparty/Makefile.am). |
| # One downside of our strategy for shipping and building third-party |
| # libraries is that we can't expose options from nested third-party |
| # configure scripts. |
| CONFIGURE_ARGS="$ac_configure_args" |
| AC_SUBST(CONFIGURE_ARGS) |
| |
| AM_CONDITIONAL([STANDALONE_LIBPROCESS], [false]) |
| AM_CONDITIONAL([STANDALONE_STOUT], [false]) |
| |
| AC_CONFIG_FILES([Makefile mesos.pc]) |
| AC_CONFIG_FILES([src/Makefile]) |
| AC_CONFIG_FILES([3rdparty/Makefile]) |
| AC_CONFIG_FILES([3rdparty/libprocess/Makefile]) |
| AC_CONFIG_FILES([3rdparty/libprocess/include/Makefile]) |
| AC_CONFIG_FILES([3rdparty/stout/Makefile]) |
| AC_CONFIG_FILES([3rdparty/stout/include/Makefile]) |
| AC_CONFIG_FILES([3rdparty/gmock_sources.cc]) |
| |
| AC_CONFIG_FILES( |
| [bin/mesos.sh], |
| [chmod +x bin/mesos.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-agent.sh], |
| [chmod +x bin/mesos-agent.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-local.sh], |
| [chmod +x bin/mesos-local.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-master.sh], |
| [chmod +x bin/mesos-master.sh]) |
| # TODO(tomxing): Remove this script once the |
| # slave->agent rename is complete(MESOS-3782). |
| AC_CONFIG_FILES( |
| [bin/mesos-slave.sh:bin/mesos-agent.sh.in], |
| [chmod +x bin/mesos-slave.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-tests.sh], |
| [chmod +x bin/mesos-tests.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-agent-flags.sh], |
| [chmod +x bin/mesos-agent-flags.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-local-flags.sh], |
| [chmod +x bin/mesos-local-flags.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-master-flags.sh], |
| [chmod +x bin/mesos-master-flags.sh]) |
| # TODO(tomxing): Remove this script once the |
| # slave->agent rename is complete(MESOS-3782). |
| AC_CONFIG_FILES( |
| [bin/mesos-slave-flags.sh:bin/mesos-agent-flags.sh.in], |
| [chmod +x bin/mesos-slave-flags.sh]) |
| AC_CONFIG_FILES( |
| [bin/mesos-tests-flags.sh], |
| [chmod +x bin/mesos-tests-flags.sh]) |
| AC_CONFIG_FILES( |
| [bin/gdb-mesos-agent.sh], |
| [chmod +x bin/gdb-mesos-agent.sh]) |
| AC_CONFIG_FILES( |
| [bin/gdb-mesos-local.sh], |
| [chmod +x bin/gdb-mesos-local.sh]) |
| AC_CONFIG_FILES( |
| [bin/gdb-mesos-master.sh], |
| [chmod +x bin/gdb-mesos-master.sh]) |
| # TODO(tomxing): Remove this script once the |
| # slave->agent rename is complete(MESOS-3782). |
| AC_CONFIG_FILES( |
| [bin/gdb-mesos-slave.sh:bin/gdb-mesos-agent.sh.in], |
| [chmod +x bin/gdb-mesos-slave.sh]) |
| AC_CONFIG_FILES( |
| [bin/gdb-mesos-tests.sh], |
| [chmod +x bin/gdb-mesos-tests.sh]) |
| AC_CONFIG_FILES( |
| [bin/lldb-mesos-agent.sh], |
| [chmod +x bin/lldb-mesos-agent.sh]) |
| AC_CONFIG_FILES( |
| [bin/lldb-mesos-local.sh], |
| [chmod +x bin/lldb-mesos-local.sh]) |
| AC_CONFIG_FILES( |
| [bin/lldb-mesos-master.sh], |
| [chmod +x bin/lldb-mesos-master.sh]) |
| # TODO(tomxing): Remove this script once the |
| # slave->agent rename is complete(MESOS-3782). |
| AC_CONFIG_FILES( |
| [bin/lldb-mesos-slave.sh:bin/lldb-mesos-agent.sh.in], |
| [chmod +x bin/lldb-mesos-slave.sh]) |
| AC_CONFIG_FILES( |
| [bin/lldb-mesos-tests.sh], |
| [chmod +x bin/lldb-mesos-tests.sh]) |
| AC_CONFIG_FILES( |
| [bin/valgrind-mesos-agent.sh], |
| [chmod +x bin/valgrind-mesos-agent.sh]) |
| AC_CONFIG_FILES( |
| [bin/valgrind-mesos-local.sh], |
| [chmod +x bin/valgrind-mesos-local.sh]) |
| AC_CONFIG_FILES( |
| [bin/valgrind-mesos-master.sh], |
| [chmod +x bin/valgrind-mesos-master.sh]) |
| # TODO(tomxing): Remove this script once the |
| # slave->agent rename is complete(MESOS-3782). |
| AC_CONFIG_FILES( |
| [bin/valgrind-mesos-slave.sh:bin/valgrind-mesos-agent.sh.in], |
| [chmod +x bin/valgrind-mesos-slave.sh]) |
| AC_CONFIG_FILES( |
| [bin/valgrind-mesos-tests.sh], |
| [chmod +x bin/valgrind-mesos-tests.sh]) |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-daemon.sh], |
| [chmod +x src/deploy/mesos-daemon.sh]) |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-start-agents.sh], |
| [chmod +x src/deploy/mesos-start-agents.sh]) |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-start-cluster.sh], |
| [chmod +x src/deploy/mesos-start-cluster.sh]) |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-start-masters.sh], |
| [chmod +x src/deploy/mesos-start-masters.sh]) |
| # TODO(tomxing): Remove this script once the |
| # slave->agent rename is complete(MESOS-3782). |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-start-slaves.sh:src/deploy/mesos-start-agents.sh.in], |
| [chmod +x src/deploy/mesos-start-slaves.sh]) |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-stop-agents.sh], |
| [chmod +x src/deploy/mesos-stop-agents.sh]) |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-stop-cluster.sh], |
| [chmod +x src/deploy/mesos-stop-cluster.sh]) |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-stop-masters.sh], |
| [chmod +x src/deploy/mesos-stop-masters.sh]) |
| # TODO(tomxing): Remove this script once the |
| # slave->agent rename is complete(MESOS-3782). |
| AC_CONFIG_FILES( |
| [src/deploy/mesos-stop-slaves.sh:src/deploy/mesos-stop-agents.sh.in], |
| [chmod +x src/deploy/mesos-stop-slaves.sh]) |
| |
| AC_CONFIG_FILES([include/mesos/version.hpp]) |
| |
| AC_CONFIG_FILES([src/java/generated/org/apache/mesos/MesosNativeLibrary.java]) |
| |
| |
| ############################################################################### |
| # Optional features. |
| ############################################################################### |
| |
| |
| AC_ARG_ENABLE([bundled], |
| AS_HELP_STRING([--disable-bundled], |
| [build against preinstalled dependencies instead |
| of bundled libraries]), |
| [], [enable_bundled=yes]) |
| |
| AC_ARG_ENABLE([bundled-pip], |
| AS_HELP_STRING([--disable-bundled-pip], |
| [excludes building and using the bundled pip |
| package in lieu of an installed version in |
| PYTHONPATH]), |
| [], [enable_bundled_pip=yes]) |
| |
| AC_ARG_ENABLE([bundled-setuptools], |
| AS_HELP_STRING([--disable-bundled-setuptools], |
| [excludes building and using the bundled setuptools |
| package in lieu of an installed version in |
| PYTHONPATH]), |
| [], [enable_bundled_setuptools=yes]) |
| |
| AC_ARG_ENABLE([bundled-wheel], |
| AS_HELP_STRING([--disable-bundled-wheel], |
| [excludes building and using the bundled wheel |
| package in lieu of an installed version in |
| PYTHONPATH]), |
| [], [enable_bundled_wheel=yes]) |
| |
| AC_ARG_ENABLE([debug], |
| AS_HELP_STRING([--enable-debug], |
| [enable debugging. If CFLAGS/CXXFLAGS are set, this |
| option will not change them]), |
| [], [enable_debug=no]) |
| |
| AC_ARG_ENABLE([gc-unused], |
| AS_HELP_STRING([--enable-gc-unused], |
| [enable garbage collection of unused program segments]), |
| [], [enable_gc_unused=no]) |
| |
| AC_ARG_ENABLE([hardening], |
| AS_HELP_STRING([--disable-hardening], |
| [disables security measures such as stack |
| protection and position independent library code]), |
| [], [enable_hardening=yes]) |
| |
| AC_ARG_ENABLE([install-module-dependencies], |
| AS_HELP_STRING([--enable-install-module-dependencies], |
| [Install third-party bundled dependencies required |
| for module development]), |
| [], [enable_install_module_dependencies=no]) |
| |
| AC_ARG_ENABLE([network-ports-isolator], |
| AS_HELP_STRING([--enable-network-ports-isolator], |
| [enable network ports isolator]), |
| [], [enable_network_ports_isolator=no]) |
| |
| AC_ARG_ENABLE([java], |
| AS_HELP_STRING([--disable-java], |
| [do not build Java bindings]), |
| [], [enable_java=yes]) |
| |
| AC_ARG_ENABLE([nvml], |
| AS_HELP_STRING([--disable-nvml], |
| [do not use the NVML headers]), |
| [], [enable_nvml=yes]) |
| |
| # TODO(bevers): Eventually make this enabled by default. |
| AC_ARG_ENABLE([jemalloc-allocator], |
| AS_HELP_STRING([--enable-jemalloc-allocator], |
| [Use jemalloc as the default memory allocator for the |
| mesos-master and mesos-agent binaries.]), |
| [], [enable_jemalloc_allocator=no]) |
| |
| # TODO(benh): Eventually make this enabled by default. |
| AC_ARG_ENABLE([last_in_first_out_fixed_size_semaphore], |
| AS_HELP_STRING([--enable-last-in-first-out-fixed-size-semaphore], |
| [enables the optimized LIFO fixed-size semaphore in libprocess]), |
| [], [enable_last_in_first_out_fixed_size_semaphore=no]) |
| |
| AC_ARG_ENABLE([launcher_sealing], |
| AS_HELP_STRING([--enable-launcher-sealing], |
| [Enables sealing of launcher binary during |
| initialization of Mesos containerizer. |
| A copy of launcher's binary is cloned into |
| memory and sealed to prevent overwriting of |
| launcher's executable by containers. |
| This is a Linux-specific feature and requires |
| the support of memfd by the kernel.]), |
| [], [enable_launcher_sealing=no]) |
| |
| AC_ARG_ENABLE([libevent], |
| AS_HELP_STRING([--enable-libevent], |
| [use libevent instead of libev]), |
| [], [enable_libevent=no]) |
| |
| # TODO(benh): Eventually make this enabled by default. |
| AC_ARG_ENABLE([lock_free_event_queue], |
| AS_HELP_STRING([--enable-lock-free-event-queue], |
| [enables the lock-free event queue in libprocess]), |
| [], [enable_lock_free_event_queue=no]) |
| |
| # TODO(benh): Eventually make this enabled by default. |
| AC_ARG_ENABLE([lock_free_run_queue], |
| AS_HELP_STRING([--enable-lock-free-run-queue], |
| [enables the lock-free run queue in libprocess]), |
| [], [enable_lock_free_run_queue=no]) |
| |
| AC_ARG_ENABLE([new_cli], |
| AS_HELP_STRING([--enable-new-cli], |
| [enable building the new CLI instead of the old one]), |
| [], [enable_new_cli=no]) |
| |
| AC_ARG_ENABLE([libtool-wrappers], |
| AS_HELP_STRING([--disable-libtool-wrappers], |
| [Directly create binaries instead of libtool |
| wrapper scripts to prevent relinking when first |
| executing binaries from the build directory. This |
| flag leads to binaries with the build directory |
| encoded in the executables' RPATH which makes them |
| in general unfit for installation. |
| USE WITH CARE.])) |
| |
| AC_ARG_ENABLE([optimize], |
| AS_HELP_STRING([--enable-optimize], |
| [enable optimizations. If CFLAGS/CXXFLAGS are set, |
| this option will not change them]), |
| [], [enable_optimize=no]) |
| |
| AC_ARG_ENABLE([parallel_test_execution], |
| AS_HELP_STRING([--disable-parallel-test-execution], |
| [disable the parallel runner used during make check]), |
| [], [enable_parallel_test_execution=yes]) |
| |
| AC_ARG_ENABLE([perftools], |
| AS_HELP_STRING([--enable-perftools], |
| [enable Google perftools]), |
| [], [enable_perftools=no]) |
| |
| AC_ARG_ENABLE([port-mapping-isolator], |
| AS_HELP_STRING([--enable-port-mapping-isolator], |
| [enable port mapping network isolator]), |
| [], [enable_port_mapping_isolator=no]) |
| |
| AC_ARG_ENABLE([python], |
| AS_HELP_STRING([--disable-python], |
| [do not build Python bindings]), |
| [], [enable_python=yes]) |
| |
| # This is used to make distcheck and python install work together. For more |
| # information, see the comment above AM_DISTCHECK_CONFIGURE_FLAGS in |
| # Makefile.am. |
| AC_ARG_ENABLE([python-dependency-install], |
| AS_HELP_STRING([--disable-python-dependency-install], |
| [when the python packages are installed during |
| make install, no external dependencies are |
| downloaded or installed]), |
| [], [enable_python_dependency_install=yes]) |
| |
| AC_ARG_ENABLE([seccomp-isolator], |
| AS_HELP_STRING([--enable-seccomp-isolator], |
| [Builds the Seccomp isolator which depends on |
| libseccomp and requires Linux kernel 3.5+ |
| This flag will be deprecated in the future when |
| we drop support for the outdated Linux kernels.]), |
| [], [enable_seccomp_isolator=no]) |
| |
| AC_ARG_ENABLE([ssl], |
| AS_HELP_STRING([--enable-ssl], |
| [use ssl for libprocess communication]), |
| [], [enable_ssl=no]) |
| |
| AC_ARG_ENABLE([static-unimplemented], |
| AS_HELP_STRING([--enable-static-unimplemented], |
| [generate static assertion errors for unimplemented |
| functions]), |
| [], [enable_static_unimplemented=no]) |
| |
| AC_ARG_ENABLE([tests-install], |
| AS_HELP_STRING([--enable-tests-install], |
| [build and install tests and their helper tools]), |
| [], [enable_tests_install=no]) |
| |
| AC_ARG_ENABLE([werror], |
| AS_HELP_STRING([--disable-werror], |
| [do not treat compiler warnings as fatal errors])) |
| |
| AC_ARG_ENABLE([xfs-disk-isolator], |
| AS_HELP_STRING([--enable-xfs-disk-isolator], |
| [builds the XFS disk isolator]), |
| [], [enable_xfs_disk_isolator=no]) |
| |
| ############################################################################### |
| # Optional packages. |
| ############################################################################### |
| |
| AC_ARG_WITH([apr], |
| AS_HELP_STRING([--with-apr=@<:@=DIR@:>@], |
| [specify where to locate the apr-1 library]), |
| [], []) |
| |
| AC_ARG_WITH([boost], |
| AS_HELP_STRING([--with-boost@<:@=DIR@:>@], |
| [excludes building and using the bundled Boost |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_boost=yes], []) |
| |
| AC_ARG_WITH([concurrentqueue], |
| AS_HELP_STRING([--with-concurrentqueue@<:@=DIR@:>@], |
| [excludes building and using the bundled concurrentqueue |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_concurrentqueue=yes], []) |
| |
| AC_ARG_WITH([curl], |
| AS_HELP_STRING([--with-curl=@<:@=DIR@:>@], |
| [specify where to locate the curl library]), |
| [], []) |
| |
| AC_ARG_WITH([elfio], |
| AS_HELP_STRING([--with-elfio@<:@=DIR@:>@], |
| [excludes building and using the bundled ELFIO |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_elfio=yes], []) |
| |
| AC_ARG_WITH([glog], |
| AS_HELP_STRING([--with-glog@<:@=DIR@:>@], |
| [excludes building and using the bundled glog |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_glog=yes], []) |
| |
| AC_ARG_WITH([gmock], |
| AS_HELP_STRING([--with-gmock@<:@=DIR@:>@], |
| [excludes building and using the bundled gmock |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_gmock=yes], []) |
| |
| AC_ARG_WITH([grpc], |
| AS_HELP_STRING([--with-grpc@<:@=DIR@:>@], |
| [excludes building and using the bundled grpc |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_grpc=yes], []) |
| |
| AC_ARG_WITH([http-parser], |
| AS_HELP_STRING([--with-http-parser@<:@=DIR@:>@], |
| [excludes building and using the bundled http-parser |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_http_parser=yes], []) |
| |
| AC_ARG_WITH([jemalloc], |
| AS_HELP_STRING([--with-jemalloc@<:@=DIR@:>@], |
| [excludes building and using the bundled jemalloc |
| package in lieu of an installed version at a |
| location prefixed by the given path.]), |
| [without_bundled_jemalloc=yes], []) |
| |
| AC_ARG_WITH([leveldb], |
| AS_HELP_STRING([--with-leveldb@<:@=DIR@:>@], |
| [excludes building and using the bundled LevelDB |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_leveldb=yes], []) |
| |
| AC_ARG_WITH([libev], |
| AS_HELP_STRING([--with-libev@<:@=DIR@:>@], |
| [excludes building and using the bundled libev |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_libev=yes], []) |
| |
| AC_ARG_WITH([libevent], |
| AS_HELP_STRING([--with-libevent=@<:@=DIR@:>@], |
| [specify where to locate the libevent library]), |
| [without_bundled_libevent=yes], []) |
| |
| AC_ARG_WITH([libarchive], |
| AS_HELP_STRING([--with-libarchive=@<:@=DIR@:>@], |
| [specify where to locate the libarchive library]), |
| [without_bundled_libarchive=yes], []) |
| |
| AC_ARG_WITH([libprocess], |
| AS_HELP_STRING([--with-libprocess=@<:@=DIR@:>@], |
| [specify where to locate the libprocess library]), |
| [], []) |
| |
| AC_ARG_WITH([libseccomp], |
| AS_HELP_STRING([--with-libseccomp=@<:@=DIR@:>@], |
| [specify where to locate the libseccomp library]), |
| [without_bundled_libseccomp=yes], []) |
| |
| AC_ARG_WITH([network-isolator], |
| AS_HELP_STRING([--with-network-isolator], |
| [builds the network isolator]), |
| [AC_MSG_WARN([--with-network-isolator is being deprecated, please use --enable-port-mapping-isolator instead.]); |
| enable_port_mapping_isolator=yes], |
| []) |
| |
| AC_ARG_WITH([nvml], |
| AS_HELP_STRING([--with-nvml@<:@=DIR@:>@], |
| [excludes building and using the bundled NVML headers |
| in lieu of an installed version at a location |
| prefixed by the given path]), |
| [without_bundled_nvml=yes], []) |
| |
| AC_ARG_WITH([picojson], |
| AS_HELP_STRING([--with-picojson@<:@=DIR@:>@], |
| [excludes building and using the bundled picojson |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_picojson=yes], []) |
| |
| AC_ARG_WITH([rapidjson], |
| AS_HELP_STRING([--with-rapidjson@<:@=DIR@:>@], |
| [excludes building and using the bundled rapidjson |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_rapidjson=yes], []) |
| |
| AC_ARG_WITH([re2], |
| AS_HELP_STRING([--with-re2@<:@=DIR@:>@], |
| [excludes building and using the bundled re2 |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_re2=yes], []) |
| |
| AC_ARG_WITH([protobuf], |
| AS_HELP_STRING([--with-protobuf@<:@=DIR@:>@], |
| [excludes building and using the bundled protobuf |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_protobuf=yes], []) |
| |
| AC_ARG_WITH([sasl], |
| AS_HELP_STRING([--with-sasl=@<:@=DIR@:>@], |
| [specify where to locate the sasl2 library]), |
| [], []) |
| |
| AC_ARG_WITH([ssl], |
| AS_HELP_STRING([--with-ssl=@<:@=DIR@:>@], |
| [specify where to locate the ssl library]), |
| [], []) |
| |
| AC_ARG_WITH([stout], |
| AS_HELP_STRING([--with-stout=@<:@=DIR@:>@], |
| [specify where to locate stout library]), |
| [], []) |
| |
| AC_ARG_WITH([svn], |
| AS_HELP_STRING([--with-svn=@<:@=DIR@:>@], |
| [specify where to locate the svn-1 library]), |
| [], []) |
| |
| AC_ARG_WITH([zlib], |
| AS_HELP_STRING([--with-zlib=@<:@=DIR@:>@], |
| [specify where to locate the zlib library]), |
| [], []) |
| |
| AC_ARG_WITH([zookeeper], |
| AS_HELP_STRING([--with-zookeeper@<:@=DIR@:>@], |
| [excludes building and using the bundled ZooKeeper |
| package in lieu of an installed version at a |
| location prefixed by the given path]), |
| [without_bundled_zookeeper=yes], []) |
| |
| |
| ############################################################################### |
| # Debug/Optimization checks. |
| ############################################################################### |
| |
| # Check if we should enable debugging, optimization. Note we only |
| # update CFLAGS and CXXFLAGS if none are provided. |
| AM_CONDITIONAL([DEBUG], [test x"$enable_debug" = "xyes"]) |
| AM_CONDITIONAL([OPTIMIZE], [test x"$enable_optimize" = "xyes"]) |
| |
| debug_flags="-g1" |
| if test "x$enable_debug" = "xyes"; then |
| debug_flags="-g -fno-omit-frame-pointer" |
| elif test "x$enable_optimize" = "xyes"; then |
| debug_flags="" |
| fi |
| |
| if test "x$enable_optimize" = "xyes"; then |
| optimize_flags="-O2" |
| else |
| optimize_flags="-O0" |
| fi |
| |
| AS_IF([test "x${ac_cv_env_CFLAGS_set}" = "x"], |
| [CFLAGS="$debug_flags $optimize_flags"]) |
| AS_IF([test "x${ac_cv_env_CXXFLAGS_set}" = "x"], |
| [CXXFLAGS="$debug_flags $optimize_flags"]) |
| |
| |
| ############################################################################### |
| # Compiler checks. |
| ############################################################################### |
| |
| # Check if we should use the LIFO fixed-size semaphore. |
| AS_IF([test "x$enable_last_in_first_out_fixed_size_semaphore" = "xyes"], |
| [AC_DEFINE([LAST_IN_FIRST_OUT_FIXED_SIZE_SEMAPHORE])]) |
| |
| # Check if we should use the lock-free event queue. |
| AS_IF([test "x$enable_lock_free_event_queue" = "xyes"], |
| [AC_DEFINE([LOCK_FREE_EVENT_QUEUE])]) |
| |
| # Check if we should use the lock-free run queue. |
| AS_IF([test "x$enable_lock_free_run_queue" = "xyes"], |
| [AC_DEFINE([LOCK_FREE_RUN_QUEUE])]) |
| |
| # Check if we should link the mesos binaries against jemalloc. |
| AM_CONDITIONAL([ENABLE_JEMALLOC_ALLOCATOR], |
| [test x"$enable_jemalloc_allocator" = "xyes"]) |
| |
| # Check to see if we should harden or not. |
| AM_CONDITIONAL([ENABLE_HARDENING], [test x"$enable_hardening" = "xyes"]) |
| |
| AC_MSG_CHECKING([whether to enable GC of unused sections]) |
| AC_MSG_RESULT([$enable_gc_unused]) |
| |
| AS_IF([test "x$enable_gc_unused" = "xyes"], [ |
| AC_LANG_PUSH([C++]) |
| saved_CXXFLAGS="$CXXFLAGS" |
| saved_LDFLAGS="$LDFLAGS" |
| |
| CXXFLAGS="-ffunction-sections -fdata-sections" |
| LDFLAGS="-Wl,--gc-sections" |
| AC_LINK_IFELSE( |
| [ AC_LANG_PROGRAM([], [return 0;]) ], |
| [], |
| [ |
| AC_MSG_ERROR([cannot enable GC of unused sections |
| ------------------------------------------------------------------- |
| The current toolchain does not support the necessary options to |
| enable garbage collection of unused sections. |
| ------------------------------------------------------------------- |
| ]) |
| ] |
| ) |
| |
| CXXFLAGS="$saved_CXXFLAGS" |
| LDFLAGS="$saved_LDFLAGS" |
| AC_LANG_POP() |
| ]) |
| |
| AS_IF([test "x${enable_gc_unused}" = "xyes"], [ |
| CCFLAGS="$CCFLAGS -ffunction-sections -fdata-sections" |
| CXXFLAGS="$CXXFLAGS -ffunction-sections -fdata-sections" |
| LDFLAGS="$LDFLAGS -Wl,--gc-sections" |
| ]) |
| |
| AS_CASE($ax_cv_cxx_compiler_vendor, |
| [clang], [ |
| # Upstream Clang 3.6 emits `-Wunused-local-typedef` warnings when compiling |
| # Boost so we suppress them here. Apple LLVM based on Clang 3.6 doesn't have |
| # the same behavior. See: https://reviews.apache.org/r/32749/ |
| # NOTE(chhsiao): Clang 3.6.0 from the link below seems to compile Boost |
| # 1.53.0/1.65.0 just fine: http://releases.llvm.org/download.html#3.6.0 |
| # |
| # Clang 3.6+ emits `-Winconsistent-missing-override` warnings for most uses |
| # of the Google Mock `MOCK_METHOD` family of macros so we suppress them |
| # here. See: https://github.com/google/googletest/issues/533 |
| AX_APPEND_COMPILE_FLAGS([-Wno-unused-local-typedef \ |
| -Wno-inconsistent-missing-override], |
| [CXXFLAGS], [-Werror]) |
| ], [gnu], [ |
| # Check for GCC version >= 4.8. |
| AX_COMPARE_VERSION([$ax_cv_cxx_compiler_version], [ge], [4.8], |
| [is_ge_gxx48=yes], [is_ge_gxx48=no]) |
| if test "x$is_ge_gxx48" != "xyes"; then |
| # GCC < 4.8 is not supported. |
| AC_MSG_ERROR([GCC 4.8 or higher required (found $ax_cv_cxx_compiler_version)]) |
| fi |
| |
| AC_MSG_NOTICE([Setting up CXXFLAGS for g++ version >= 4.8]) |
| # Boost fails to compile with GCC 4.8+ without `-Wno-unused-local-typedefs`, |
| # and automake does not recognize the flag. |
| # TODO(brenden): Remove this when Boost has a resolution. |
| CFLAGS="${CFLAGS} -Wno-unused-local-typedefs" |
| CXXFLAGS="${CXXFLAGS} -Wno-unused-local-typedefs" |
| |
| # Disable 'maybe-uninitialized' warning when "-O2" is enabled due |
| # to MESOS-2690. This is short term fix until the GCC bug is fixed. |
| case $CXXFLAGS in |
| *-O2*) CXXFLAGS="${CXXFLAGS} -Wno-maybe-uninitialized" ;; |
| *) ;; |
| esac |
| ], [ |
| AC_MSG_WARN([$ax_cv_cxx_compiler_vendor is an unsupported compiler]) |
| ] |
| ) |
| |
| # If our compiler supports strong stack protection, use it. |
| # If not, use a lesser form of stack protection. |
| AX_CHECK_COMPILE_FLAG([-fstack-protector-strong], |
| [AC_SUBST(STACK_PROTECTOR, "-fstack-protector-strong")], |
| [AC_SUBST(STACK_PROTECTOR, "-fstack-protector")]) |
| |
| # Ensure that CXX supports C++11 (with "strict" conformance), and set |
| # "--std=" flag and CXXFLAGS environment variable as appropriate. |
| AX_CXX_COMPILE_STDCXX([11], [noext], [mandatory]) |
| |
| # Blacklist known incompatible C++ standard libraries to reduce chance |
| # of users accidentally using them. |
| # - libstdc++ (Pre 4.8.0, version datestamp 20130322) |
| # - libc++ (Pre 3.5.0, version string 1101) |
| AC_LANG_PUSH([C++]) |
| AC_COMPILE_IFELSE( |
| [AC_LANG_SOURCE([[ |
| #include <vector> |
| |
| #ifdef __GLIBCXX__ |
| #if __GLIBCXX__ < 20130322 |
| #error Force the compiler to fail and set COMPATIBLE_CXX_STDLIB=no. |
| #endif |
| #elif _LIBCPP_VERSION < 1101 |
| #error Force the compiler to fail and set COMPATIBLE_CXX_STDLIB=no. |
| #endif |
| ]])], |
| [COMPATIBLE_CXX_STDLIB=yes], [COMPATIBLE_CXX_STDLIB=no]) |
| AC_LANG_POP([C++]) |
| |
| if test "x$COMPATIBLE_CXX_STDLIB" = "xno"; then |
| AC_MSG_ERROR([known incompatible C++ Standard library in use |
| ------------------------------------------------------------------- |
| libstdc++ from GCC 4.8.0+ or libc++ from LLVM/Clang 3.5+ is required. |
| |
| If a new enough GCC installed (4.8.0+) it should automatically find |
| the right libstdc++. If clang is in use, it will automatically find |
| the newest libstdc++ on the host. |
| |
| If you are trying to use a different compiler from (clang, gcc) or a |
| alternate C++ Standard Library implementation, likely the flags being |
| passed to the compiler (CXXFLAGS) are not currently correct / being |
| picked up. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| |
| case "$host_os" in |
| darwin* ) |
| # If we're using clang, we need to pass -stdlib=libc++ too. |
| if test "x$ax_cv_cxx_compiler_vendor" = "xclang"; then |
| CXXFLAGS="$CXXFLAGS -stdlib=libc++" |
| fi |
| ;; |
| freebsd* ) |
| # If we're using clang, we need to pass -stdlib=libc++ too. |
| if test "x$ax_cv_cxx_compiler_vendor" = "xclang"; then |
| CXXFLAGS="$CXXFLAGS -stdlib=libc++" |
| fi |
| |
| # FreeBSD needs GTEST_HAS_PTHREAD for this version of gmock/gtest and |
| # _WITH_GETLINE for getline(). |
| CXXFLAGS="$CXXFLAGS -DGTEST_HAS_PTHREAD -D_WITH_GETLINE" |
| |
| # Add no-sentinal so that stout builds with system clang on 11.0 and later |
| # (3.8+). |
| CXXFLAGS="$CXXFLAGS -Wno-sentinel" |
| ;; |
| esac |
| |
| |
| ############################################################################### |
| # Miscellaneous flags/library/tool checks. |
| ############################################################################### |
| |
| AC_ARG_VAR([JAVA_HOME], [location of Java Development Kit (JDK)]) |
| |
| AC_ARG_VAR([JAVA_CPPFLAGS], [preprocessor flags for JNI]) |
| |
| AC_ARG_VAR([JAVA_JVM_LIBRARY], [full path to libjvm.so]) |
| |
| AC_ARG_VAR([MAVEN_HOME], [looks for mvn at MAVEN_HOME/bin/mvn]) |
| |
| AC_ARG_VAR([PROTOBUF_JAR], [full path to protobuf jar on prefixed builds]) |
| |
| AC_ARG_VAR([PYTHON], [which Python 2 interpreter to use]) |
| |
| AC_ARG_VAR([PYTHON_3], [which Python 3 interpreter to use]) |
| |
| AC_ARG_VAR([TEST_DRIVER], [executable and arguments of a test driver]) |
| |
| # Check for pthreads (uses m4/ax_pthread.m4). |
| AX_PTHREAD([], [AC_MSG_ERROR([failed to find pthreads])]) |
| |
| if test "x$enable_static_unimplemented" = "xyes"; then |
| AC_DEFINE([ENABLE_STATIC_UNIMPLEMENTED], [1]) |
| fi |
| |
| # Build libprocess as a static library with position independent code so |
| # that we can produce a final shared library which includes everything |
| # necessary (and only install that). |
| AM_CONDITIONAL([ENABLE_STATIC_LIBPROCESS], [true]) |
| |
| AC_MSG_NOTICE([Setting up build environment for ${target_cpu} ${target_os}]) |
| # Determine the current OS (TODO(benh): Does autotools do this for us?). |
| case "${host_os}" in |
| linux*) |
| OS_NAME=linux |
| LIBS="$LIBS -lrt" |
| ;; |
| darwin*) |
| OS_NAME=darwin |
| ;; |
| freebsd*) |
| OS_NAME=freebsd |
| ;; |
| *) |
| AC_MSG_ERROR("Mesos is currently unsupported on your platform.") |
| esac |
| |
| AM_CONDITIONAL([DISABLE_LIBTOOL_WRAPPERS], |
| [test x"$enable_libtool_wrappers" = "xno"]) |
| |
| # Used for conditionally including source files. |
| AM_CONDITIONAL([OS_LINUX], [test "x$OS_NAME" = "xlinux"]) |
| AM_CONDITIONAL([OS_FREEBSD], [test "x$OS_NAME" = "xfreebsd"]) |
| |
| AM_CONDITIONAL([HAS_GPERFTOOLS], [test "x$enable_perftools" = "xyes"]) |
| |
| AM_CONDITIONAL([INSTALL_MODULE_DEPENDENCIES], |
| [test x"$enable_install_module_dependencies" = "xyes"]) |
| AS_IF([test "x$enable_install_module_dependencies" = "xyes"], |
| [AC_SUBST(MODULE_CFLAGS, "-I${libdir}/mesos/3rdparty/include") |
| AC_SUBST(MODULE_LDFLAGS, "-L${libdir}/mesos/3rdparty/lib64 -L${libdir}/mesos/3rdparty/lib")]) |
| |
| AM_CONDITIONAL([INSTALL_TESTS], [test x"$enable_tests_install" = "xyes"]) |
| AS_IF([test x"$enable_tests_install" = "xyes"], |
| [AC_DEFINE([MESOS_INSTALL_TESTS], [1])]) |
| |
| # If we use our own test runner to parallelize gtests we can run |
| # everything but ROOT tests in parallel. |
| # We here set up `TEST_DRIVER` to contain an unexpanded automake |
| # variable name; this allows us to reuse the test runner to run bundled |
| # 3rdparty checks. The special quoting ensures that this containing a |
| # space is not expanded by autoconf. |
| # TODO(bbannier): Make this more readible by using autoconf/m4 magic. |
| AS_IF([test "x$enable_parallel_test_execution" = "xyes"], |
| [AC_SUBST([TEST_DRIVER], |
| '${abs_top_srcdir}/support/mesos-gtest-runner.py'[' --sequential='*ROOT_*'']])) |
| |
| # Define `WERROR` if the use of `-Werror` was not disabled, leave |
| # unset otherwise. An unset variable evaluates to an empty string |
| # in autoconf's substitution. |
| AS_IF([test "x$enable_werror" != "xno"], |
| [AC_SUBST([WERROR], [-Werror])]) |
| |
| # Check for libunwind, and link it in if present. |
| if test "x$OS_NAME" = "xfreebsd"; then |
| AC_CHECK_LIB(execinfo, backtrace, LIBS="$LIBS -lexecinfo") |
| else |
| AC_CHECK_LIB(unwind, backtrace, LIBS="$LIBS -lunwind") |
| fi |
| |
| |
| # Check if libssl prefix path was provided, and if so, add it to |
| # the CPPFLAGS and LDFLAGS with respective /include and /lib path |
| # suffixes. |
| if test -z "`echo $with_ssl`" && |
| test "$OS_NAME" = "darwin" && |
| test -n "`command -v brew`" && |
| test -n "`brew list --versions openssl`"; then |
| with_ssl=`brew --prefix openssl` |
| fi |
| |
| if test -n "`echo $with_ssl`"; then |
| SSL_CPPFLAGS="-I${with_ssl}/include" |
| SSL_LINKERFLAGS="-L${with_ssl}/lib" |
| |
| CPPFLAGS="$SSL_CPPFLAGS $CPPFLAGS" |
| LDFLAGS="$SSL_LINKERFLAGS $LDFLAGS" |
| fi |
| |
| AC_CHECK_LIB([crypto], [RAND_poll], [found_crypto=yes]) |
| |
| AC_CHECK_HEADERS([openssl/ssl.h], |
| [AC_CHECK_LIB([ssl], |
| [SSL_CTX_new], |
| [found_ssl=yes], |
| [], |
| [-lcrypto])]) |
| |
| if test "x$enable_ssl" = "xyes"; then |
| if test "x$found_ssl" != "xyes"; then |
| AC_MSG_ERROR([cannot find libssl |
| ------------------------------------------------------------------- |
| libssl is required for an SSL-enabled build. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| |
| if test "x$found_crypto" != "xyes"; then |
| AC_MSG_ERROR([cannot find libcrypto |
| ------------------------------------------------------------------- |
| libcrypto is required for an SSL-enabled build. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| |
| LIBS="-lssl -lcrypto $LIBS" |
| |
| AC_DEFINE([USE_SSL_SOCKET], [1]) |
| fi |
| |
| AM_CONDITIONAL([ENABLE_SSL], |
| [test "x$enable_ssl" = "xyes"]) |
| |
| AC_SUBST([SSL_CPPFLAGS]) |
| AC_SUBST([SSL_LINKERFLAGS]) |
| |
| |
| # Check if gflags are present. If so, make sure we link against them |
| # when building the Python module. |
| AC_CHECK_LIB([gflags], |
| [main], |
| [found_gflags=yes]) |
| if test "x$found_gflags" = "xyes"; then |
| GFLAGS_LIBS="-lgflags" |
| else |
| GFLAGS_LIBS="" |
| fi |
| |
| AC_CHECK_TOOL([PATCHCOMMAND_TEST], [patch], [], [$PATH]) |
| if test -z "`echo $PATCHCOMMAND_TEST`"; then |
| AC_MSG_ERROR([patch command not found in PATH]) |
| fi |
| |
| # Check if we need to do anything special to use the fts_* |
| # functions. On some systems (e.g., those that use musl instead of |
| # glibc), FTS support requires linking against an additional library. |
| AC_CHECK_HEADERS([fts.h], [], [AC_MSG_ERROR([cannot find fts.h |
| ------------------------------------------------------------------- |
| Failed to find fts.h. If this header file is not provided by libc |
| on this system (e.g., musl), a separate FTS package must be installed. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| AC_SEARCH_LIBS(fts_close, fts, [], [AC_MSG_ERROR([cannot find libfts |
| ------------------------------------------------------------------- |
| Failed to find fts_close. If this function is not provided by libc |
| on this system (e.g., musl), a separate FTS package must be installed. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| ############################################################################### |
| # Miscellaneous checks related to (un)bundled software. |
| ############################################################################### |
| |
| # Attempt to use preinstalled dependencies instead of the bundled |
| # versions in cases where the user specified their location |
| # (--with-XXX=DIR) or asked us to attempt to detect them |
| # (--disable-bundled). |
| |
| |
| # On OS X, if `--with-apr` was not provided, we try to use an available |
| # brew installed version. |
| if test -z "`echo $with_apr`" && |
| test "$OS_NAME" = "darwin" && |
| test -n "`command -v brew`" && |
| test -n "`brew list --versions apr`"; then |
| with_apr=`brew --prefix apr`/libexec |
| fi |
| |
| # Check if libapr-1 prefix path was provided, and if so, add it to |
| # the CPPFLAGS and LDFLAGS with respective /include/apr-1 and /lib path |
| # suffixes. We include /include/apr-1 because we include <apr*> |
| # headers directly. |
| if test -n "`echo $with_apr`" ; then |
| CPPFLAGS="-I${with_apr}/include/apr-1 \ |
| -I${with_apr}/include/apr-1.0 $CPPFLAGS" |
| LDFLAGS="-L${with_apr}/lib $LDFLAGS" |
| else |
| CPPFLAGS="-I/usr/include/apr-1 -I/usr/include/apr-1.0 \ |
| $CPPFLAGS" |
| fi |
| |
| AC_CHECK_HEADERS([apr_pools.h], |
| [AC_CHECK_LIB([apr-1], [apr_initialize], [], |
| [AC_MSG_ERROR([cannot find libapr-1 |
| ------------------------------------------------------------------- |
| libapr-1 is required for mesos to build. |
| ------------------------------------------------------------------- |
| ])])], [AC_MSG_ERROR([cannot find libapr-1 headers |
| ------------------------------------------------------------------- |
| libapr-1 is required for mesos to build. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| if test -n "`echo $with_boost`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_boost}/include" |
| fi |
| |
| # Check if user has asked us to use a preinstalled Boost, or if they |
| # asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_boost" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([boost/version.hpp], [found_boost=yes]) |
| |
| if test "x$found_boost" = "xyes"; then |
| with_bundled_boost=no |
| else |
| AC_MSG_ERROR([cannot find Boost |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled Boost but no suitable |
| Boost could be found. |
| |
| You may want specify the location of Boost by providing a prefix |
| path via --with-boost=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_boost=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_BOOST], [test "x$with_bundled_boost" = "xyes"]) |
| |
| if test -n "`echo $with_concurrentqueue`"; then |
| CPPFLAGS="-I${with_concurrentqueue} $CPPFLAGS" |
| fi |
| |
| |
| # Check if user has asked us to use a preinstalled concurrentqueue, |
| # or if they asked us to ignore all bundled libraries while compiling |
| # and linking. |
| if test "x$without_bundled_concurrentqueue" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([concurrentqueue.h], [found_concurrentqueue=yes]) |
| |
| if test "x$found_concurrentqueue" = "xyes"; then |
| with_bundled_concurrentqueue=no |
| else |
| AC_MSG_ERROR([cannot find concurrentqueue |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled concurrentqueue but no |
| suitable concurrentqueue could be found. |
| |
| You may want specify the location of concurrentqueue by providing a |
| prefix path via --with-concurrentqueue=DIR, or check that the path |
| you provided is correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_concurrentqueue=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_CONCURRENTQUEUE], |
| [test "x$with_bundled_concurrentqueue" = "xyes"]) |
| |
| |
| # Check if Libcurl prefix path was provided, and if so, add it to |
| # the CPPFLAGS and LDFLAGS with respective /include and /lib path |
| # suffixes. |
| if test -n "`echo $with_curl`" ; then |
| CPPFLAGS="-I${with_curl}/include $CPPFLAGS" |
| LDFLAGS="-L${with_curl}/lib $LDFLAGS" |
| fi |
| |
| AC_CHECK_LIB([curl], [curl_global_init], [], |
| [AC_MSG_ERROR([cannot find libcurl |
| ------------------------------------------------------------------- |
| libcurl is required for mesos to build. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| |
| # If the user has asked not to include the bundled ELFIO headers, |
| # check to see if the path to the ELFIO headers has been specified. If |
| # it has, make sure that the path is absolute. If everything is in |
| # order, add this path to the CPPFLAGS. |
| if test "x$without_bundled_elfio" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| if test -n "`echo $with_elfio`"; then |
| if test "$with_elfio" = "${with_elfio#/}"; then |
| AC_MSG_ERROR([The path passed to --with-elfio must be absolute.]) |
| fi |
| CPPFLAGS="-I${with_elfio} $CPPFLAGS" |
| fi |
| |
| AC_CHECK_HEADERS([elfio/elfio.hpp], [], |
| [AC_MSG_ERROR([Cannot find the ELFIO headers |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled ELFIO but no suitable |
| ELFIO headers could be found. Make sure these headers are either |
| installed on the system or the path passed via --with-elfio is correct. |
| ------------------------------------------------------------------- |
| ])]) |
| else |
| with_bundled_elfio=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_ELFIO], [test "x$with_bundled_elfio" = "xyes"]) |
| |
| |
| # Check if glog prefix path was supplied and if so, add it to CPPFLAGS |
| # while extending it by /include and to LDFLAGS while extending it by |
| # /lib. |
| if test -n "`echo $with_glog`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_glog}/include" |
| LDFLAGS="$LDFLAGS -L${with_glog}/lib" |
| fi |
| |
| # Check if user has asked us to use a preinstalled glog, or if they |
| # asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_glog" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([glog/logging.h], |
| [AC_LINK_IFELSE( |
| [AC_LANG_PROGRAM([#include <glog/logging.h>], [])], |
| [TEST_LIBS="$TEST_LIBS -lglog"] [found_glog=yes], |
| [AC_MSG_WARN([glog is not installed.])])]) |
| |
| if test "x$found_glog" = "xyes"; then |
| with_bundled_glog=no |
| else |
| AC_MSG_ERROR([cannot find glog |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled glog but no suitable |
| glog could be found. |
| |
| You may want specify the location of glog by providing a prefix |
| path via --with-glog=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_glog=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_GLOG], |
| [test "x$with_bundled_glog" = "xyes"]) |
| |
| |
| GMOCKSRC="gmock-all.cc" |
| GTESTSRC="gtest-all.cc" |
| |
| if test -n "`echo $with_gmock`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_gmock} -I${with_gmock}/include \ |
| -I${with_gmock}/src -I${with_gmock}/gtest \ |
| -I${with_gmock}/gtest/include -I${with_gmock}/gtest/src" |
| |
| elif test "x$enable_bundled" != "xyes"; then |
| CPPFLAGS="$CPPFLAGS -I/usr/src/gmock" |
| # On system installations the deps are handled separately. |
| # So insert a placeholder for substitution. |
| GTESTSRC="stdio.h" |
| check_gtest=yes |
| fi |
| |
| # Check if user has asked us to use a preinstalled gmock, or if they |
| # asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_gmock" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADER($GMOCKSRC, |
| [found_gmock=yes], |
| []) |
| |
| if test "x$found_gmock" = "xyes"; then |
| if test "x$check_gtest" = "xyes"; then |
| # TODO(jieyu): Symbol _init is not availble for libs on OS X. |
| AC_CHECK_LIB([gtest], |
| [_init], |
| [], |
| [AC_MSG_ERROR([gtest missing])]) |
| fi |
| with_bundled_gmock=no |
| else |
| AC_MSG_ERROR([cannot find gmock |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled gmock but no suitable |
| gmock could be found. |
| |
| You may want specify the location of gmock by providing a prefix |
| path via --with-gmock=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_gmock=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_GMOCK], [test "x$with_bundled_gmock" = "xyes"]) |
| AM_CONDITIONAL([LINKGTEST], [test "check_gtest" = "xyes"]) |
| AC_SUBST([GMOCKSRC]) |
| AC_SUBST([GTESTSRC]) |
| |
| |
| if test -n "`echo $with_http_parser`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_http_parser}/include" |
| LDFLAGS="$LDFLAGS -L${with_http_parser}/lib" |
| fi |
| |
| # Check if user has asked us to use a preinstalled http-parser, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_http_parser" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([http_parser.h], |
| [AC_CHECK_LIB([http_parser], |
| [http_parser_init], |
| [found_http_parser=yes])]) |
| |
| if test "x$found_http_parser" = "xyes"; then |
| with_bundled_http_parser=no |
| else |
| AC_MSG_ERROR([cannot find http-parser |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled http-parser but no suitable |
| http-parser could be found. |
| |
| You may want specify the location of http-parser by providing a prefix |
| path via --with-http-parser=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_http_parser=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_HTTP_PARSER], |
| [test "x$with_bundled_http_parser" = "xyes"]) |
| |
| |
| # NB: Since malloc() and free() are declared in stdlib.h, and the |
| # jemalloc-specific api is detected at runtime, we dont need any |
| # jemalloc headers or modify CPPFLAGS here. |
| if test "x$enable_jemalloc_allocator" = "xyes"; then |
| if test "x$OS_NAME" != "xlinux"; then |
| # Building and linking against jemalloc is actually not a problem |
| # on OSX even now, but to make it actually *useful* we would have |
| # have to re-route all existing malloc/free calls through jemalloc. |
| # The recommended way of doing that on Mac seems to be call |
| # `malloc_default_zone()` and to overwrite the hooks in the |
| # returned `malloc_zone_t`. |
| AC_MSG_ERROR([ |
| -------------------------------------------------------------------- |
| You have requested the default memory allocator to be replaced by |
| jemalloc, but your operating system was detected to be $OS_NAME. |
| |
| This feature is currently only supported on linux. |
| -------------------------------------------------------------------- |
| ]) |
| fi |
| |
| if test -n "`echo $with_jemalloc`"; then |
| WITH_JEMALLOC="${with_jemalloc}" |
| fi |
| |
| # Check if the user asked us to use a preinstalled jemalloc, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_jemalloc" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| |
| # Avoid AC_SEARCH_LIBS here because it would implicitly add jemalloc |
| # to LIBS, but we dont want to link it against libmesos, only the |
| # individual binaries |
| AC_CHECK_LIB([jemalloc], [malloc_stats_print], [found_jemalloc=yes]) |
| if test "x$found_jemalloc" = "xyes"; then |
| with_bundled_jemalloc=no |
| else |
| AC_MSG_ERROR([cannot find jemalloc |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled jemalloc but no suitable |
| library could be found. |
| |
| You may want specify the location of jemalloc by providing a prefix |
| path via --with-jemalloc=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_jemalloc=yes |
| fi |
| fi |
| |
| AC_SUBST(WITH_JEMALLOC) |
| AM_CONDITIONAL([WITH_BUNDLED_JEMALLOC], |
| [test "x$with_bundled_jemalloc" = "xyes"]) |
| |
| # TODO(benh): Consider using AS_IF instead of just shell 'if' |
| # statements for better autoconf style (the AS_IF macros also make |
| # sure variable dependencies are handled appropriately). |
| |
| # A helper for checking whether we can compile and link using JNI with |
| # the current JAVA_CPPFLAGS (and JAVA_TEST_LDFLAGS which we setup |
| # ourselves below). |
| # TRY_LINK_JNI([ACTION-SUCCESS], [ACTION-FAILURE]) |
| AC_DEFUN([TRY_LINK_JNI], [ |
| cat <<__EOF__ >conftest.cpp [ |
| #include <jni.h> |
| int main(int argc, char** argv) |
| { |
| JNIEnv* env; |
| JavaVM* jvm; |
| JavaVMInitArgs vmArgs; |
| return JNI_CreateJavaVM(&jvm, (void**) &env, &vmArgs); |
| }] |
| __EOF__ |
| |
| # Try to compile and link via libtool (the one we generate). |
| ./libtool --tag=CXX --mode=link $CXX -Wall -Werror $JAVA_CPPFLAGS \ |
| -o conftest conftest.cpp $JAVA_TEST_LDFLAGS >&5 |
| |
| if test $? != 0; then |
| rm -f conftest # Cleanup after ourselves. |
| $2 # Expand failure action. |
| else |
| rm -f conftest # Cleanup after ourselves. |
| $1 # Expand success action. |
| fi |
| ]) |
| |
| |
| # Perform necessary configuration for building with Java. |
| if test "x$enable_java" = "xyes"; then |
| # First let's try and determine JAVA_HOME if it hasn't been set. We |
| # do this by checking to see if the directory found at the |
| # 'java.home' system property for the java found on the path |
| # includes javac. If so, then we'll guess that this is a JDK |
| # installation rather than a JRE installation. |
| if test -z "$JAVA_HOME"; then |
| AC_PATH_PROG([JAVAC], [javac], [$JAVAC]) |
| AC_PATH_PROG([JAVA], [java], [$JAVA]) |
| |
| if test "x$JAVA" = "x" || test "x$JAVAC" = "x"; then |
| AC_MSG_ERROR([cannot guess JAVA_HOME (no 'java' or 'javac' found)]) |
| fi |
| |
| AC_MSG_CHECKING([value of Java system property 'java.home']) |
| cat <<__EOF__ >conftest.java [ |
| public class conftest { |
| public static void main(String[] args) { |
| System.out.print(System.getProperty("java.home")); |
| } |
| }] |
| __EOF__ |
| |
| # Now build and run the code. |
| $JAVAC conftest.java && JAVA_DOT_HOME="`$JAVA -cp . conftest`" |
| |
| if test $? = 0 && test ! -z "$JAVA_DOT_HOME"; then |
| AC_MSG_RESULT($JAVA_DOT_HOME) |
| else |
| JAVA_DOT_HOME="" |
| AC_MSG_RESULT([not found]) |
| fi |
| |
| # Clean up after ourselves. |
| rm -f conftest.java conftest.class |
| |
| # Check if 'java.home' looks like a JDK installation, or if |
| # 'java.home'/.. looks like a JDK installation (e.g., Linux). |
| if test -f $JAVA_DOT_HOME/bin/javac; then |
| JAVA_HOME=$JAVA_DOT_HOME |
| elif test -f `dirname $JAVA_DOT_HOME`/bin/javac; then |
| JAVA_HOME=`dirname $JAVA_DOT_HOME` |
| fi |
| |
| if test -z "$JAVA_HOME"; then |
| AC_MSG_ERROR([could not guess JAVA_HOME]) |
| else |
| AC_MSG_NOTICE([using JAVA_HOME=$JAVA_HOME]) |
| fi |
| fi |
| |
| # Determine linker flags for Java if not set. |
| if test "$OS_NAME" = "darwin"; then |
| dir="$JAVA_HOME/jre/lib/server" |
| for dir in "$JAVA_HOME/lib/server" "$JAVA_HOME/jre/lib/server"; do |
| if test -e "$dir"; then |
| # Note that these are libtool specific flags. |
| JAVA_TEST_LDFLAGS="-framework JavaVM" |
| JAVA_JVM_LIBRARY=$dir/libjvm.dylib |
| break; |
| fi |
| done |
| elif test "$OS_NAME" = "linux"; then |
| for dir in \ |
| "$JAVA_HOME/lib/server" \ |
| "$JAVA_HOME/jre/lib/"{amd64,i386,arm,aarch64,ppc64,ppc64le,s390,s390x}"/server" |
| do |
| if test -e "$dir"; then |
| # Note that these are libtool specific flags. |
| JAVA_TEST_LDFLAGS="-L$dir -R$dir -Wl,-ljvm" |
| JAVA_JVM_LIBRARY=$dir/libjvm.so |
| break; |
| fi |
| done |
| elif test "$OS_NAME" = "freebsd"; then |
| for arch in amd64 i386 arm; do |
| dir="$JAVA_HOME/jre/lib/$arch/server" |
| if test -e "$dir"; then |
| # Note that these are libtool specific flags. |
| JAVA_TEST_LDFLAGS="-L$dir -R$dir -pthread -Wl,-ljvm" |
| JAVA_JVM_LIBRARY=$dir/libjvm.so |
| break; |
| fi |
| done |
| fi |
| |
| if test -z "$JAVA_TEST_LDFLAGS"; then |
| AC_MSG_ERROR([failed to determine linker flags for using Java \ |
| (bad JAVA_HOME or missing support for your architecture?)]) |
| fi |
| |
| # Now try and build with JNI, looping through possible compiler |
| # flags as necessary (provided JAVA_CPPFLAGS was not set). |
| AC_MSG_CHECKING([whether or not we can build with JNI]) |
| if test -z "$JAVA_CPPFLAGS"; then |
| if test "$OS_NAME" = "darwin"; then |
| while true; do # Loop until sucessful (via break) or exhausted options. |
| m4_foreach([java_cppflags], |
| [["-I$JAVA_HOME/include -I$JAVA_HOME/include/$OS_NAME"], |
| ["-I/System/Library/Frameworks/JavaVM.framework/Headers"]], |
| [JAVA_CPPFLAGS=java_cppflags |
| TRY_LINK_JNI([break])]) |
| # Exhausted options. |
| AC_MSG_ERROR([failed to build with JNI |
| ------------------------------------------------------------------- |
| It appears we were unable to compile against the JNI. This is most |
| likely due to one of the following issues: |
| 1. You do not have a JDK installed on your system. |
| 2. All JDKs installed on your system have deprecated JNI headers. |
| It is advised to install OpenJDK on your system, as the JDK that |
| ships with OS X has deprecated JNI headers. |
| ------------------------------------------------------------------- |
| ]) |
| done |
| else |
| while true; do # Loop until sucessful (via break) or exhausted options. |
| m4_foreach([java_cppflags], |
| [["-I$JAVA_HOME/include -I$JAVA_HOME/include/$OS_NAME"]], |
| [JAVA_CPPFLAGS=java_cppflags |
| TRY_LINK_JNI([break])]) |
| # Exhausted options. |
| AC_MSG_ERROR([failed to build with JNI]) |
| done |
| fi |
| else |
| TRY_LINK_JNI([], [AC_MSG_ERROR([failed to build with JNI])]) |
| fi |
| AC_MSG_RESULT([yes]) |
| |
| AC_CONFIG_FILES([src/examples/java/test-exception-framework], |
| [chmod +x src/examples/java/test-exception-framework]) |
| AC_CONFIG_FILES([src/examples/java/test-executor], |
| [chmod +x src/examples/java/test-executor]) |
| AC_CONFIG_FILES([src/examples/java/test-framework], |
| [chmod +x src/examples/java/test-framework]) |
| AC_CONFIG_FILES([src/examples/java/test-multiple-executors-framework], |
| [chmod +x src/examples/java/test-multiple-executors-framework]) |
| AC_CONFIG_FILES([src/examples/java/test-log], |
| [chmod +x src/examples/java/test-log]) |
| AC_CONFIG_FILES([src/examples/java/v1-test-framework], |
| [chmod +x src/examples/java/v1-test-framework]) |
| AC_CONFIG_FILES([src/java/mesos.pom]) |
| |
| AC_DEFINE([MESOS_HAS_JAVA]) |
| |
| has_java=yes |
| |
| # Test for Maven so we can build the jar. |
| if test -z "$MAVEN_HOME"; then |
| AC_PATH_PROG([MVN], [mvn], [$MVN]) |
| |
| if test "x$MVN" = "x"; then |
| AC_MSG_ERROR([cannot find mvn on your path |
| ------------------------------------------------------------------- |
| You may want verify that Maven has been correctly installed and |
| added to your PATH or set the MAVEN_HOME environment variable |
| to point to your Maven installation. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| AC_PATH_PROGS([MVN], [mvn], [$MVN], [$MAVEN_HOME/bin]) |
| |
| if test "x$MVN" = "x"; then |
| AC_MSG_ERROR([cannot find mvn inside $MAVEN_HOME/bin |
| ------------------------------------------------------------------- |
| You may want verify the MAVEN_HOME validity or check that Maven |
| has been correctly installed. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| fi |
| fi |
| |
| AM_CONDITIONAL([HAS_JAVA], [test "x$has_java" = "xyes"]) |
| AC_PATH_PROG([JAVAH], [javah], [$JAVAH], [$JAVA_HOME/bin]) |
| AM_CONDITIONAL([HAS_JAVAH], [test "x$JAVAH" != "x"]) |
| |
| |
| # Check if LevelDB prefix path was supplied and if so, add it to |
| # CPPFLAGS while extending it by /include and to LDFLAGS while |
| # extending it by /lib. |
| if test -n "`echo $with_leveldb`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_leveldb}/include" |
| LDFLAGS="$LDFLAGS -L${with_leveldb}/lib" |
| fi |
| |
| # Check if user has asked us to use a preinstalled LevelDB, or if they |
| # asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_leveldb" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([leveldb/db.h], |
| [AC_CHECK_LIB([leveldb], |
| [leveldb_open], |
| [found_leveldb=yes])]) |
| |
| if test "x$found_leveldb" = "xyes"; then |
| with_bundled_leveldb=no |
| else |
| AC_MSG_ERROR([cannot find LevelDB |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled LevelDB but no suitable |
| LevelDB could be found. |
| |
| You may want specify the location of LevelDB by providing a prefix |
| path via --with-leveldb=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_leveldb=yes |
| fi |
| |
| |
| AM_CONDITIONAL([WITH_BUNDLED_LEVELDB], |
| [test "x$with_bundled_leveldb" = "xyes"]) |
| |
| |
| # Check if we should use containerizer launcher sealing. |
| AC_MSG_CHECKING([whether to enable launcher sealing]) |
| AC_MSG_RESULT([$enable_launcher_sealing]) |
| |
| AS_IF([test "x$enable_launcher_sealing" = "xyes"], [ |
| # We only support launcher sealing on Linux. |
| AS_IF([test "$OS_NAME" = "linux"], |
| [], |
| [AC_MSG_ERROR([no launcher sealing support on $OS_NAME |
| ------------------------------------------------------------------- |
| Launcher sealing is only supported on Linux. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| AC_DEFINE([ENABLE_LAUNCHER_SEALING]) |
| ]) |
| |
| AM_CONDITIONAL([ENABLE_LAUNCHER_SEALING], [test "x$enable_launcher_sealing" = "xyes"]) |
| |
| |
| # Check if libevent prefix path was provided, and if so, add it to |
| # the CPPFLAGS and LDFLAGS with respective /include and /lib path |
| # suffixes. |
| if test -z "`echo $with_libevent`" && |
| test "$OS_NAME" = "darwin" && |
| test -n "`command -v brew`" && |
| test -n "`brew list --versions libevent`"; then |
| with_libevent=`brew --prefix libevent` |
| fi |
| |
| if test -n "`echo $with_libevent`"; then |
| CPPFLAGS="-I${with_libevent}/include $CPPFLAGS" |
| LDFLAGS="-L${with_libevent}/lib $LDFLAGS" |
| fi |
| |
| if test "x$enable_libevent" = "xyes"; then |
| # Check if user has asked us to use a preinstalled libevent, or if they |
| # asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_libevent" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| MESOS_HAVE_LIBEVENT() |
| else |
| with_bundled_libevent=yes |
| fi |
| |
| AC_DEFINE([USE_LIBEVENT], [1]) |
| fi |
| |
| if test "x$enable_ssl" = "xyes"; then |
| if test "x$enable_libevent" = "xyes"; then |
| if test "x$with_bundled_libevent" != "xyes"; then |
| MESOS_HAVE_LIBEVENT_SSL() |
| fi |
| fi |
| fi |
| |
| AM_CONDITIONAL([ENABLE_LIBEVENT], |
| [test "x$enable_libevent" = "xyes"]) |
| AM_CONDITIONAL([WITH_BUNDLED_LIBEVENT], |
| [test "x$with_bundled_libevent" = "xyes"]) |
| |
| |
| # Check if user has asked us to use a preinstalled libarchive, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test -n "`echo $with_libarchive`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_libarchive}/include" |
| LDFLAGS="$LDFLAGS -L${with_libarchive}/lib" |
| fi |
| |
| if test "x$without_bundled_libarchive" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([archive.h], [found_libarchive=yes]) |
| |
| if test "x$found_libarchive" = "xyes"; then |
| with_bundled_libarchive=no |
| else |
| AC_MSG_ERROR([cannot find libarchive |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled libarchive but no suitable |
| libarchive could be found. |
| |
| You may want specify the location of libarchive by providing a prefix |
| path via --with-libarchive=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| |
| else |
| with_bundled_libarchive=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_LIBARCHIVE], [test "x$with_bundled_libarchive" = "xyes"]) |
| |
| |
| # Check if user has asked us to use a preinstalled libprocess, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_libprocess" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([process/process.hpp], [found_libprocess=yes]) |
| |
| if test "x$found_libprocess" = "xyes"; then |
| with_bundled_libprocess=no |
| else |
| AC_MSG_ERROR([cannot find libprocess |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled libprocess but no suitable |
| libprocess could be found. |
| |
| You may want specify the location of libprocess by providing a prefix |
| path via --with-libprocess=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| |
| # TODO(kapil): Check for linkability of libprocess.so. |
| else |
| with_bundled_libprocess=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_LIBPROCESS], [test "x$with_bundled_libprocess" = "xyes"]) |
| |
| |
| AC_MSG_CHECKING([whether to enable the Seccomp isolator]) |
| AS_IF([test "x$enable_seccomp_isolator" = "xyes"], |
| [AC_MSG_RESULT([yes])], |
| [AC_MSG_RESULT([no])]) |
| |
| AS_IF([test "x$enable_seccomp_isolator" = "xyes"], [ |
| # We only support Seccomp on Linux. |
| AS_IF([test "$OS_NAME" = "linux"], |
| [], |
| [AC_MSG_ERROR([no Seccomp support on $OS_NAME |
| ------------------------------------------------------------------- |
| The Seccomp isolator is only supported on Linux. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| # Check if libseccomp prefix path was supplied and if so, add it to |
| # CPPFLAGS while extending it by /include and to LDFLAGS while |
| # extending it by /lib. |
| if test -n "`echo $with_libseccomp`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_libseccomp}/include" |
| LDFLAGS="$LDFLAGS -L${with_libseccomp}/lib" |
| fi |
| |
| # Check if user has asked us to use a bundled libseccomp, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_libseccomp" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([seccomp.h], [found_libseccomp=yes]) |
| |
| if test "x$found_libseccomp" = "xyes"; then |
| with_bundled_libseccomp=no |
| else |
| AC_MSG_ERROR([cannot find libseccomp |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled libseccomp but no suitable |
| libseccomp could be found. |
| |
| You may want specify the location of libseccomp by providing a prefix |
| path via --with-libseccomp=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_libseccomp=yes |
| fi |
| |
| AC_DEFINE([ENABLE_SECCOMP_ISOLATOR]) |
| ]) |
| |
| AM_CONDITIONAL([ENABLE_SECCOMP_ISOLATOR], [test "x$enable_seccomp_isolator" = "xyes"]) |
| AM_CONDITIONAL([WITH_BUNDLED_LIBSECCOMP], [test "x$with_bundled_libseccomp" = "xyes"]) |
| |
| |
| # Perform necessary configuration for port mapping isolator. |
| if test "x$enable_port_mapping_isolator" = "xyes"; then |
| # Check for OS support. |
| AS_IF([test "$OS_NAME" = "linux"], |
| [], |
| [AC_MSG_ERROR([cannot build port mapping isolator |
| ------------------------------------------------------------------- |
| The port mapping isolator is only supported on Linux |
| ------------------------------------------------------------------- |
| ])]) |
| |
| MESOS_HAVE_LIBNL3([], [ |
| MESOS_MSG_LIBNL3_ERROR([libnl-3 is required for building the port mapping isolator]) |
| ]) |
| |
| AC_DEFINE([ENABLE_PORT_MAPPING_ISOLATOR]) |
| fi |
| |
| AM_CONDITIONAL([ENABLE_PORT_MAPPING_ISOLATOR], |
| [test "x$enable_port_mapping_isolator" = "xyes"]) |
| |
| |
| if test "x$enable_network_ports_isolator" = "xyes"; then |
| |
| AS_IF([test "$OS_NAME" = "linux"], |
| [], |
| [AC_MSG_ERROR([cannot build network/ports isolator |
| ------------------------------------------------------------------- |
| The network/ports isolator is only supported on Linux |
| ------------------------------------------------------------------- |
| ])]) |
| |
| MESOS_HAVE_LIBNL3([], [ |
| MESOS_MSG_LIBNL3_ERROR([libnl-3 is required for building the network/ports isolator]) |
| ]) |
| |
| AC_DEFINE([ENABLE_NETWORK_PORTS_ISOLATOR]) |
| fi |
| |
| AM_CONDITIONAL([ENABLE_NETWORK_PORTS_ISOLATOR], |
| [test "x$enable_network_ports_isolator" = "xyes"]) |
| |
| |
| AM_CONDITIONAL( |
| [ENABLE_LINUX_ROUTING], |
| [test "x$enable_network_ports_isolator" = "xyes" -o "x$enable_port_mapping_isolator" = "xyes"]) |
| |
| |
| AM_CONDITIONAL( |
| [ENABLE_NVML], |
| [test "x$enable_nvml" = "xyes"]) |
| |
| AM_COND_IF([ENABLE_NVML], [AC_DEFINE([ENABLE_NVML])]) |
| |
| # If the user has asked not to include the bundled NVML headers for |
| # Nvidia GPU support, check to see if the path to the NVML headers has |
| # been specified. If it has, make sure that the path is absolute. If |
| # everything is in order, add this path to the CPPFLAGS. |
| if test "x$enable_nvml" = "xyes"; then |
| if test "x$without_bundled_nvml" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| if test -n "`echo $with_nvml`"; then |
| if test "$with_nvml" = "${with_nvml#/}"; then |
| AC_MSG_ERROR([The path passed to --with-nvml must be absolute.]) |
| fi |
| CPPFLAGS="-I${with_nvml} $CPPFLAGS" |
| fi |
| |
| AC_CHECK_HEADERS([nvidia/gdk/nvml.h], [], |
| [AC_MSG_ERROR([Cannot find the Nvidia NVML headers |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled NVML but no suitable |
| NVML headers could be found. Make sure these headers are either |
| installed on the system or the path passed via --with-nvml is correct. |
| ------------------------------------------------------------------- |
| ])]) |
| else |
| with_bundled_nvml=yes |
| fi |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_NVML], |
| [test "x$with_bundled_nvml" = "xyes"]) |
| |
| |
| # Check if protobuf prefix path was supplied and if so, add it to |
| # CPPFLAGS while extending it by /include and to LDFLAGS while |
| # extending it by /lib. |
| if test -n "`echo $with_protobuf`"; then |
| PROTOBUF_CPPFLAGS="-I${with_protobuf}/include" |
| PROTOBUF_LINKERFLAGS="-L${with_protobuf}/lib" |
| |
| CPPFLAGS="$PROTOBUF_CPPFLAGS $CPPFLAGS" |
| LDFLAGS="$PROTOBUF_LINKERFLAGS $LDFLAGS" |
| fi |
| |
| # Check if user has asked us to use a preinstalled protobuf, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_protobuf" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Use the system default prefix if not specified. |
| if test -n "`echo $with_protobuf`"; then |
| PROTOBUFPREFIX="${with_protobuf}" |
| elif test "x$enable_bundled" != "xyes"; then |
| PROTOBUFPREFIX="/usr" |
| fi |
| |
| # Check for protobuf. |
| |
| AC_CHECK_HEADERS([google/protobuf/map.h], [found_protobuf=yes], |
| [found_protobuf=no]) |
| |
| if test "x$found_protobuf" = "xyes"; then |
| saved_LIBS="$LIBS" |
| LIBS="-lprotobuf $LIBS" |
| AC_LANG_PUSH([C++]) |
| AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <google/protobuf/stubs/common.h>], |
| [ google::protobuf::ShutdownProtobufLibrary(); ])], |
| [ found_protobuf=yes ], |
| [ found_protobuf=no ]) |
| AC_LANG_POP() |
| LIBS="$saved_LIBS" |
| fi |
| |
| if test "x$found_protobuf" = "xyes"; then |
| with_bundled_protobuf=no |
| if test -z "`echo $PROTOBUF_JAR`"; then |
| PROTOBUF_JAR="${PROTOBUFPREFIX}/share/java/protobuf.jar" |
| fi |
| |
| if test "x$enable_java" = "xyes"; then |
| AC_CHECK_FILE([$PROTOBUF_JAR], |
| [], |
| [AC_MSG_ERROR([cannot find PROTOBUF_JAR=$PROTOBUF_JAR])]) |
| fi |
| |
| AC_CHECK_FILE([$PROTOBUFPREFIX/include/google/protobuf/wrappers.proto], |
| [], |
| [AC_MSG_ERROR([cannot find protobuf proto files])]) |
| |
| PROTOBUF_PROTOCFLAGS="-I${PROTOBUFPREFIX}/include" |
| |
| AC_CHECK_TOOL([PROTOCOMPILER_TEST], [protoc], [], [$PROTOBUFPREFIX/bin]) |
| |
| if test -z "`echo $PROTOCOMPILER_TEST`"; then |
| AC_MSG_ERROR([protoc not found in PATH]) |
| fi |
| |
| PROTOCOMPILER="$PROTOBUFPREFIX/bin/protoc" |
| |
| if test "x$enable_python" = "xyes"; then |
| AC_PYTHON_MODULE([google.protobuf], [yes]) |
| fi |
| else |
| AC_MSG_ERROR([cannot find protobuf |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled protobuf but no suitable |
| protobuf (version 3+) could be found. |
| |
| You may want specify the location of protobuf by providing a prefix |
| path via --with-protobuf=DIR, or check that the path you provided is |
| correct if youre already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_protobuf=yes |
| PROTOBUF_JAR="\${MESOS_BUILD_DIR}/src/java/target/protobuf-java-3.5.0.jar" |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_PROTOBUF], |
| [test "x$with_bundled_protobuf" = "xyes"]) |
| |
| AC_SUBST([PROTOBUF_CPPFLAGS]) |
| AC_SUBST([PROTOBUF_JAR]) |
| AC_SUBST([PROTOBUF_LINKERFLAGS]) |
| AC_SUBST([PROTOBUF_PROTOCFLAGS]) |
| AC_SUBST([PROTOCOMPILER]) |
| |
| |
| if test -n "`echo $with_libev`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_libev}/include" |
| LDFLAGS="$LDFLAGS -L${with_libev}/lib" |
| fi |
| |
| # Check if user has asked us to use a preinstalled libev, or if they |
| # asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_libev" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([ev.h], [found_libev=yes]) |
| |
| if test "x$found_libev" = "xyes"; then |
| with_bundled_libev=no |
| AC_MSG_WARN([libev found must have been built with -DEV_CHILD_ENABLE=0]) |
| else |
| AC_MSG_ERROR([cannot find libev |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled libev but no suitable |
| libev could be found. |
| |
| You may want specify the location of libev by providing a prefix |
| path via --with-libev=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_libev=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_LIBEV], [test "x$with_bundled_libev" = "xyes"]) |
| |
| |
| if test -n "`echo $with_picojson`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_picojson}/include" |
| fi |
| |
| # Check if user has asked us to use a preinstalled picojson, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_picojson" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([picojson.h], [found_picojson=yes]) |
| |
| if test "x$found_picojson" = "xyes"; then |
| with_bundled_picojson=no |
| else |
| AC_MSG_ERROR([cannot find picojson |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled picojson but no suitable |
| picojson could be found. |
| |
| You may want specify the location of picojson by providing a prefix |
| path via --with-picojson=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_picojson=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_PICOJSON], [test "x$with_bundled_picojson" = "xyes"]) |
| |
| |
| if test -n "`echo $with_rapidjson`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_rapidjson}/include" |
| fi |
| |
| # Check if user has asked us to use a preinstalled rapidjson, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_rapidjson" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([rapidjson/rapidjson.h], [found_rapidjson=yes]) |
| |
| if test "x$found_rapidjson" = "xyes"; then |
| with_bundled_rapidjson=no |
| else |
| AC_MSG_ERROR([cannot find rapidjson |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled rapidjson but no suitable |
| rapidjson could be found. |
| |
| You may want specify the location of rapidjson by providing a prefix |
| path via --with-rapidjson=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_rapidjson=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_RAPIDJSON], [test "x$with_bundled_rapidjson" = "xyes"]) |
| |
| # Check if re2 prefix path was supplied and if so, add it to CPPFLAGS |
| # while extending it by /include and to LDFLAGS while extending it by |
| # /lib. |
| if test -n "`echo $with_re2`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_re2}/include" |
| LDFLAGS="$LDFLAGS -L${with_re2}/lib" |
| fi |
| |
| # Check if user has asked us to use a preinstalled re2, or if they |
| # asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_re2" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([re2/re2.h], |
| [AC_LINK_IFELSE( |
| [AC_LANG_PROGRAM([#include <re2/re2.h>], [])], |
| [TEST_LIBS="$TEST_LIBS -lre2"] [found_re2=yes], |
| [AC_MSG_WARN([re2 is not installed.])])]) |
| |
| if test "x$found_re2" = "xyes"; then |
| with_bundled_re2=no |
| else |
| AC_MSG_ERROR([cannot find re2 |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled re2 but no suitable |
| re2 could be found. |
| |
| You may want specify the location of re2 by providing a prefix |
| path via --with-re2=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_re2=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_RE2], |
| [test "x$with_bundled_re2" = "xyes"]) |
| |
| |
| |
| |
| # Check if Sasl2 prefix path was provided, and if so, add it to |
| # the CPPFLAGS and LDFLAGS with respective /include and /lib path |
| # suffixes. |
| if test -n "`echo $with_sasl`" ; then |
| CPPFLAGS="-I${with_sasl}/include $CPPFLAGS" |
| LDFLAGS="-L${with_sasl}/lib $LDFLAGS" |
| fi |
| |
| AC_CHECK_LIB([sasl2], [sasl_done], [], |
| [AC_MSG_ERROR([cannot find libsasl2 |
| ------------------------------------------------------------------- |
| We need libsasl2 for authentication! |
| ------------------------------------------------------------------- |
| ])]) |
| |
| AC_MSG_CHECKING([SASL CRAM-MD5 support]) |
| |
| # Render a test binary for checking if the SASL client supports CRAM-MD5. |
| cat <<__EOF__ >crammd5_installed.c [ |
| #include <stdio.h> |
| #include <string.h> |
| #include <stdlib.h> |
| |
| #include <sasl/sasl.h> |
| #include <sasl/saslplug.h> |
| #include <sasl/saslutil.h> |
| |
| // We need to disable the deprecation warnings as Apple has decided |
| // to deprecate all of CyrusSASL's functions with OS 10.11 |
| // (see MESOS-3030). We are using GCC pragmas also for covering clang. |
| #ifdef __APPLE__ |
| #pragma GCC diagnostic push |
| #pragma GCC diagnostic ignored "-Wdeprecated-declarations" |
| #endif |
| |
| static void search_crammd5( |
| client_sasl_mechanism_t *m, |
| sasl_info_callback_stage_t stage, |
| void *rock) |
| { |
| if (stage == SASL_INFO_LIST_START || stage == SASL_INFO_LIST_END) { |
| return; |
| } |
| if (m->plug != NULL) { |
| if (!strcmp("CRAM-MD5", m->plug->mech_name)) { |
| printf("found"); |
| } |
| } |
| } |
| |
| int main(int argc, char** argv) |
| { |
| int result = sasl_client_init(NULL); |
| if (result != SASL_OK) { |
| return 1; |
| } |
| sasl_client_plugin_info(NULL, &search_crammd5, NULL); |
| return 0; |
| }] |
| |
| #ifdef __APPLE__ |
| #pragma GCC diagnostic pop |
| #endif |
| __EOF__ |
| |
| # Build the SASL client check test binary. Prevent the use of possibly |
| # activated debug symbols in executables (cc -g) as those cause a |
| # distcheck failure on OSX by leaking build artefacts (.dsym). |
| AS_IF([test "x${ac_cv_env_CFLAGS_set}" = "x"], |
| [SASL_TEST_CFLAGS=""], [SASL_TEST_CFLAGS=$CFLAGS]) |
| $CC crammd5_installed.c $CPPFLAGS $SASL_TEST_CFLAGS $LDFLAGS -lsasl2 \ |
| -o crammd5_installed 2>&1 >/dev/null |
| |
| # Run the test binary and get its output. |
| crammd5test=`./crammd5_installed 2>&1` |
| |
| # Clean up all leftovers from this test. |
| rm -f crammd5_installed.c crammd5_installed |
| |
| AS_IF([test "x$crammd5test" = "xfound"], |
| [AC_MSG_RESULT([yes])], |
| [AC_MSG_ERROR([no |
| ------------------------------------------------------------------- |
| We need CRAM-MD5 support for SASL authentication. |
| -------------------------------------------------------------------])]) |
| |
| |
| # Check if user has asked us to use a preinstalled stout, or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_stout" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([stout/try.hpp], [found_stout=yes]) |
| |
| if test "x$found_stout" = "xyes"; then |
| with_bundled_stout=no |
| else |
| AC_MSG_ERROR([cannot find stout |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled stout but no suitable |
| stout could be found. |
| |
| You may want specify the location of stout by providing a prefix |
| path via --with-stout=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_stout=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_STOUT], [test "x$with_bundled_stout" = "xyes"]) |
| |
| |
| # Check if libsvn-1 prefix path was provided, and if so, add it to |
| # the CPPFLAGS and LDFLAGS with respective /include and /lib path |
| # suffixes. We include /include/subversion-1 because we include |
| # <svn_*> directly. |
| if test -z "`echo $with_svn`" && |
| test "$OS_NAME" = "darwin" && |
| test -n "`command -v brew`" && |
| test -n "`brew list --versions subversion`"; then |
| with_svn=`brew --prefix subversion` |
| fi |
| |
| if test -n "`echo $with_svn`"; then |
| CPPFLAGS="-I${with_svn}/include/subversion-1 $CPPFLAGS" |
| LDFLAGS="-L${with_svn}/lib $LDFLAGS" |
| else |
| CPPFLAGS="-I/usr/include/subversion-1 $CPPFLAGS" |
| fi |
| |
| AC_CHECK_HEADERS([svn_version.h], |
| [AC_CHECK_LIB([svn_subr-1], [svn_stringbuf_create_ensure], [], |
| [AC_MSG_ERROR([cannot find libsvn_subr-1 |
| ------------------------------------------------------------------- |
| libsubversion-1 is required for mesos to build. |
| ------------------------------------------------------------------- |
| ])])], [AC_MSG_ERROR([cannot find libsvn_subr-1 headers |
| ------------------------------------------------------------------- |
| libsubversion-1 is required for mesos to build. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| AC_CHECK_HEADERS([svn_delta.h], |
| [AC_CHECK_LIB([svn_delta-1], [svn_txdelta], [], |
| [AC_MSG_ERROR([cannot find libsvn_delta-1 |
| ------------------------------------------------------------------- |
| libsubversion-1 is required for mesos to build. |
| ------------------------------------------------------------------- |
| ])])], [AC_MSG_ERROR([cannot find libsvn_delta-1 headers |
| ------------------------------------------------------------------- |
| libsubversion-1 is required for mesos to build. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| |
| AC_MSG_CHECKING([whether to enable the XFS disk isolator]) |
| AS_IF([test "x$enable_xfs_disk_isolator" = "xyes"], |
| [AC_MSG_RESULT([yes])], |
| [AC_MSG_RESULT([no])]) |
| |
| AS_IF([test "x$enable_xfs_disk_isolator" = "xyes"], [ |
| # We only support XFS on Linux. |
| AS_IF([test "$OS_NAME" = "linux"], |
| [], |
| [AC_MSG_ERROR([no XFS support on $OS_NAME |
| ------------------------------------------------------------------- |
| The XFS disk isolator is only supported on Linux. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| # Check for build dependencies for the XFS disk isolator. We only |
| # enable this if all the needed headers and libraries are present. |
| AC_CHECK_HEADERS([xfs/xfs.h linux/dqblk_xfs.h linux/quota.h sys/quota.h], |
| [], [AC_MSG_ERROR([missing XFS quota headers |
| ------------------------------------------------------------------- |
| Please install the Linux kernel headers and xfsprogs development |
| packages for XFS disk isolator support. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| # xfs_types.h is optional, depending on the build OS. |
| AC_CHECK_HEADERS([xfs/xfs_types.h]) |
| |
| AC_CHECK_HEADERS([blkid/blkid.h], [], [AC_MSG_ERROR([missing libblkid headers |
| ------------------------------------------------------------------- |
| Please install the libblkid development package for XFS disk |
| isolator support. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| # Note that AC_SEARCH_LIBS causes libblkid to be added to each binary. In |
| # this case, that is what we want, since the dependency will be in libmesos. |
| AC_SEARCH_LIBS(blkid_devno_to_devname, blkid, [], [AC_MSG_ERROR([missing libblkid |
| ------------------------------------------------------------------- |
| Please install the libblkid package for XFS disk isolator support. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| AC_DEFINE([ENABLE_XFS_DISK_ISOLATOR]) |
| ]) |
| |
| AM_CONDITIONAL([ENABLE_XFS_DISK_ISOLATOR], [test "x$enable_xfs_disk_isolator" = "xyes"]) |
| |
| |
| # Check if zlib prefix path was provided, and if so, add it to |
| # the CPPFLAGS and LDFLAGS with respective /include and /lib path |
| # suffixes. |
| if test -n "`echo $with_zlib`" ; then |
| ZLIB_CPPFLAGS="-I${with_zlib}/include" |
| ZLIB_LINKERFLAGS="-L${with_zlib}/lib" |
| |
| CPPFLAGS="$ZLIB_CPPFLAGS $CPPFLAGS" |
| LDFLAGS="$ZLIB_LINKERFLAGS $LDFLAGS" |
| fi |
| |
| AC_CHECK_HEADERS([zlib.h], |
| [AC_CHECK_LIB([z], [deflate, gzread, gzwrite, inflate], [], |
| [AC_MSG_ERROR([cannot find libz |
| ------------------------------------------------------------------- |
| libz is required for Mesos to build. |
| ------------------------------------------------------------------- |
| ])])], |
| [AC_MSG_ERROR([cannot find libz headers |
| ------------------------------------------------------------------- |
| libz headers are required for Mesos to build. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| AC_SUBST([ZLIB_CPPFLAGS]) |
| AC_SUBST([ZLIB_LINKERFLAGS]) |
| |
| |
| # Check if grpc prefix path was supplied and if so, add it to the |
| # CPPFLAGS and LDFLAGS with respective /include and /lib path suffixes. |
| if test -n "`echo $with_grpc`"; then |
| if test "x$without_bundled_protobuf" != "xyes"; then |
| AC_MSG_ERROR([protobuf not specified |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled grpc without specifying |
| the protobuf library it uses. This is prohibited to avoid using |
| conflicting versions of protobuf libraries. Please specify the |
| location of protobuf used by grpc by providing a prefix path via |
| --with-protobuf=DIR. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| |
| CPPFLAGS="$CPPFLAGS -I${with_grpc}/include" |
| LDFLAGS="$LDFLAGS -L${with_grpc}/lib" |
| fi |
| |
| # Check if user has asked us to use a preinstalled grpc, or if they |
| # asked us to ignore all bundled libraries while compiling and linking. |
| if test "x$without_bundled_grpc" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Use the system default prefix if not specified. |
| if test -n "`echo $with_grpc`"; then |
| GRPCPREFIX="${with_grpc}" |
| elif test "x$enable_bundled" != "xyes"; then |
| GRPCPREFIX="/usr" |
| fi |
| |
| if test "x$enable_ssl" = "xno"; then |
| GRPC_VARIANT="_unsecure" |
| fi |
| |
| # Check if headers and library were located. |
| saved_LIBS="$LIBS" |
| LIBS="-lgrpc++$GRPC_VARIANT -lgrpc$GRPC_VARIANT -lgpr $LIBS" |
| AC_LANG_PUSH([C++]) |
| AC_CHECK_HEADERS([grpcpp/grpcpp.h], |
| [AC_LINK_IFELSE( |
| [AC_LANG_PROGRAM([#include <grpcpp/grpcpp.h>], |
| [grpc::Version();])], |
| [found_grpc=yes], |
| [found_grpc=no])], |
| [found_grpc=no]) |
| AC_LANG_POP() |
| LIBS="$saved_LIBS" |
| |
| if test "x$found_grpc" = "xyes"; then |
| with_bundled_grpc=no |
| |
| AC_CHECK_TOOL([GRPC_CXX_PLUGIN_TEST], |
| [grpc_cpp_plugin], |
| [], |
| [$GRPCPREFIX/bin]) |
| |
| if test -z "`echo $GRPC_CXX_PLUGIN_TEST`"; then |
| AC_MSG_ERROR([grpc_cpp_plugin not found in PATH]) |
| fi |
| |
| GRPC_CXX_PLUGIN="$GRPCPREFIX/bin/grpc_cpp_plugin" |
| |
| else |
| AC_MSG_ERROR([cannot find grpc |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled grpc but no suitable |
| grpc could be found. |
| |
| You may want specify the location of grpc by providing a prefix |
| path via --with-grpc=DIR, or check that the path you provided is |
| correct if you are already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_grpc=yes |
| fi |
| |
| AM_CONDITIONAL([WITH_BUNDLED_GRPC], |
| [test "x$with_bundled_grpc" = "xyes"]) |
| |
| AC_SUBST([GRPC_CXX_PLUGIN]) |
| |
| |
| # Check if ZooKeeper prefix path was supplied and if so, add it to |
| # CPPFLAGS while extending it by /include/zookeeper and to LDFLAGS |
| # while extending it by /lib. |
| # NOTE: The reason we append /include/zookeeper is because in mesos, |
| # we include <zookeeper.h> rather than <zookeeper/zookeeper.h>. |
| if test -n "`echo $with_zookeeper`"; then |
| CPPFLAGS="$CPPFLAGS -I${with_zookeeper}/include/zookeeper" |
| LDFLAGS="$LDFLAGS -L${with_zookeeper}/lib" |
| elif test "x$enable_bundled" != "xyes"; then |
| CPPFLAGS="$CPPFLAGS -I/usr/include/zookeeper" |
| fi |
| |
| |
| # Check if user has asked us to use a preinstalled ZooKeeper or if |
| # they asked us to ignore all bundled libraries while compiling and |
| # linking. |
| if test "x$without_bundled_zookeeper" = "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| # Check if headers and library were located. |
| AC_CHECK_HEADERS([zookeeper.h], |
| [AC_CHECK_LIB([zookeeper_mt], |
| [zookeeper_init], |
| [found_zookeeper=yes])]) |
| |
| if test "x$found_zookeeper" = "xyes"; then |
| with_bundled_zookeeper=no |
| else |
| AC_MSG_ERROR([cannot find ZooKeeper |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled ZooKeeper but no suitable |
| ZooKeeper could be found. |
| |
| You may want specify the location of ZooKeeper by providing a prefix |
| path via --with-zookeeper=DIR, or check that the path you provided is |
| correct if you're already doing this |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_zookeeper=yes |
| fi |
| |
| |
| AM_CONDITIONAL([WITH_BUNDLED_ZOOKEEPER], |
| [test "x$with_bundled_zookeeper" = "xyes"]) |
| |
| |
| # Once all CXXFLAGS are completely assembled, make sure the we are not |
| # affected by libcxx undefined behavior, |
| # https://llvm.org/bugs/show_bug.cgi?id=28469. |
| AC_MSG_CHECKING([C++ standard library for undefined behaviour with selected optimization level]) |
| # NOTE: We clear `LIBS` here to prevent linking in libraries unrelated |
| # to the test. These libraries might not be in the linker lookup paths. |
| saved_LIBS="$LIBS" |
| LIBS="" |
| AC_LANG_PUSH([C++]) |
| AC_RUN_IFELSE([ |
| AC_LANG_SOURCE([[ |
| #include <functional> |
| #include <map> |
| |
| struct F { |
| std::map<int, std::function<void()>> m; |
| F() { m[42] = []() {}; } |
| }; |
| |
| int main() { |
| F f; |
| f = F{}; |
| } |
| ]])], |
| [ |
| AC_MSG_RESULT([no]) |
| ], [ |
| AC_MSG_RESULT([yes]) |
| AC_MSG_ERROR([Mesos cannot be built with optimizations against this version of libcxx (MESOS-5745). |
| Consider building without optimizations, or changing the used C++ standard library.]) |
| ] |
| ) |
| AC_LANG_POP([C++]) |
| LIBS="$saved_LIBS" |
| |
| |
| # NOTE: Do not update any compiler or linker settings (e.g. CXXFLAGS, |
| # LDFLAGS, ...) beyond this line. |
| |
| # Perform necessary configuration for building with Python. |
| if test "x$enable_python" = "xyes" || \ |
| test "x$enable_new_cli" = "xyes"; then |
| # Ensure PYTHON and PYTHON_VERSION are both set appropriately. We need |
| # to ensure this either when these variables are passed in the |
| # environment or when set via AM_PATH_PYTHON. If we don't do this, |
| # it's possible that a user will specify PYTHON_VERSION which will get |
| # ignored (and likely replaced) via AM_PATH_PYTHON. |
| # TODO(benh): Consolidate AM_PATH_PYTHON and AC_PYTHON_DEVEL into a |
| # single macro that both iterates through potential 'python' options |
| # looking for an acceptable version (i.e., AM_PATH_PYTHON) and |
| # checks for Python.h (i.e., AC_PYTHON_DEVEL). |
| if test -n "$PYTHON" && test -n "$PYTHON_VERSION"; then |
| AC_MSG_ERROR([only specify one of PYTHON or PYTHON_VERSION]) |
| fi |
| |
| if test -n "$PYTHON"; then |
| PYTHON_VERSION=`$PYTHON -c "import sys; sys.stdout.write(sys.version[[:3]])"` |
| fi |
| |
| if test -n "$PYTHON_VERSION"; then |
| AC_SUBST([PYTHON], [python$PYTHON_VERSION]) |
| fi |
| |
| if test -z "$PYTHON" && test -z "$PYTHON_VERSION"; then |
| AM_PATH_PYTHON() |
| fi |
| fi |
| |
| if test "x$enable_python" = "xyes"; then |
| # Check if PYTHON is at least 2.6 or try and find one that is if |
| # PYTHON is not set (necessary to run our examples). |
| AM_PYTHON_CHECK_VERSION([$PYTHON], [2.6], [], |
| [AC_MSG_ERROR([Mesos requires Python >= 2.6 |
| ------------------------------------------------------------------- |
| The detected Python version is $PYTHON_VERSION. |
| |
| If you already have Python 2.6+ installed (and it's the default python |
| on the path), you might want to check if you have the PYTHON environment |
| variable set to an older version of Python. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| AM_PYTHON_CHECK_VERSION([$PYTHON], [3.0], |
| [AC_MSG_ERROR([Mesos requires Python < 3.0 |
| ------------------------------------------------------------------- |
| The detected Python version is $PYTHON_VERSION. |
| |
| If you already have Python 2.6+ installed (and it's the default python |
| on the path), you might want to check if you have the PYTHON environment |
| variable set to a version of Python greater than 3.0. |
| ------------------------------------------------------------------- |
| ])], []) |
| |
| if test "x$enable_new_cli" = "xyes" && test -z "$PYTHON_3"; then |
| AC_MSG_ERROR([Missing PYTHON_3 environment variable |
| ------------------------------------------------------------------- |
| The detected Python version is $PYTHON_VERSION. Python 3 not detected. |
| |
| When building both the Python bindings and the CLI, the detected Python |
| version is used to build the bindings and PYTHON_3 must be set |
| explicitely in order to build the CLI. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| fi |
| |
| if test "x$enable_new_cli" = "xyes"; then |
| if test -z "$PYTHON_3"; then |
| AC_SUBST([PYTHON_3], [$PYTHON]) |
| fi |
| |
| PYTHON_3_VERSION=`$PYTHON_3 -c 'import sys; print(sys.version[[0:3]])'` |
| |
| AM_PYTHON_CHECK_VERSION([$PYTHON_3], [3.6], [], |
| [AC_MSG_ERROR([The Mesos CLI requires Python >= 3.6 |
| ------------------------------------------------------------------- |
| The detected Python 3 version is $PYTHON_3_VERSION. |
| |
| The new CLI requires Python version 3.6 or newer in order to build. |
| You may wish to set the PYTHON_3 environment variable to make sure |
| that the right Python executable is found. |
| ------------------------------------------------------------------- |
| ])]) |
| |
| # Find `tox` for testing `src/python/lib/`. |
| AC_CHECK_PROGS([tox], [tox]) |
| if test "x$tox" = "x"; then |
| AC_MSG_ERROR(['tox' is required in order to run Mesos Python library tests.]) |
| fi |
| fi |
| |
| if test "x$enable_python" = "xyes"; then |
| # Next we ensure we have the Python development libraries for Python 2. |
| AX_PYTHON_DEVEL([>= '2.6']) |
| |
| # Ensure that we can build a native Python egg linking against a |
| # static library that imports from the standard C++ library. |
| # This was added due to MESOS-799. |
| AC_MSG_CHECKING([whether we can build usable Python eggs]) |
| |
| # Render code that imports from the standard C++ library. |
| cat <<__EOF__ >testlib.cpp [ |
| #include <string> |
| std::string test() |
| { |
| return std::string("42"); |
| }] |
| __EOF__ |
| |
| # Build a static library from the above code. |
| $CXX -x c++ -fPIC -c testlib.cpp $CPPFLAGS $CFLAGS $CXXFLAGS \ |
| $LDFLAGS -o testlib.o |
| ar rcs libtest.a testlib.o |
| |
| # Render a native Python module that imports from that library. |
| cat <<__EOF__ >testpyegg.cpp [ |
| #include <Python.h> |
| #include <string> |
| |
| std::string test(); |
| PyMODINIT_FUNC initminimal(); |
| |
| static PyObject *minimal_test(PyObject *self, PyObject* args) |
| { |
| return PyString_FromString(test().c_str()); |
| } |
| |
| static PyMethodDef minimal_methods[] = { |
| { "test", minimal_test, METH_NOARGS, "Test." }, |
| { NULL, NULL } |
| }; |
| |
| PyMODINIT_FUNC initminimal() |
| { |
| PyImport_AddModule("minimal"); |
| Py_InitModule("minimal", minimal_methods); |
| }] |
| __EOF__ |
| |
| # Render a distutils setup for building the Python egg. |
| cat <<__EOF__ >setup.py [ |
| from distutils.core import setup, Extension; |
| setup(name = 'MinimalTest', |
| version = '1.0', |
| description = 'foo', |
| ext_modules = [ Extension('minimal', |
| extra_objects = ['libtest.a'], |
| sources = ['testpyegg.cpp'] ) ] ) |
| ] |
| __EOF__ |
| |
| # Build that Python egg that links against that library. The build |
| # settings are propagated to distutils. |
| # NOTE: We need to embed our CXXFLAGS in CFLAGS because distutils |
| # doesn't pull out CXXFLAGS automagically. |
| CXX="$CXX" CC="$CC" CFLAGS="$CFLAGS $CXXFLAGS" \ |
| LDFLAGS="$LDFLAGS" $PYTHON setup.py build_ext --inplace \ |
| --build-temp ./ 2>&1 >/dev/null |
| |
| # Run a test-script that makes use of the Python egg. |
| pyeggtest=`$PYTHON -c "import minimal; print(minimal.test())" 2>&1` |
| |
| # Validate the test-script output. |
| AS_IF([test "x$pyeggtest" = "x42"], [pyeggbuild=yes]) |
| |
| # Clean up all leftovers from this test. |
| rm -f testlib.cpp testlib.o libtest.a |
| rm -f testpyegg.cpp testpyegg.o setup.py minimal.so |
| |
| AS_IF([test "x$pyeggbuild" = "xyes"], |
| [AC_MSG_RESULT([yes])], |
| [AS_IF([test "x$OS_NAME" = "xdarwin"], |
| [AC_MSG_ERROR([no |
| ------------------------------------------------------------------- |
| It appears we were unable to build a usable native Python egg. You |
| might be using the default Mac OS X Python distribution which is |
| incompatible for building native eggs using this compiler setup. |
| For more details, see: |
| https://issues.apache.org/jira/browse/MESOS-799 |
| |
| There are two possible workarounds for this issue: |
| 1. Disable python bindings by configuring with --disable-python. |
| 2. Use an alternative Python installation that was built using |
| the same build setup as Mesos. |
| -------------------------------------------------------------------])], |
| [AC_MSG_ERROR([no |
| ------------------------------------------------------------------- |
| It appears we were unable to build a usable native Python egg. |
| |
| There are two possible workarounds for this issue: |
| 1. Disable python bindings by configuring with --disable-python. |
| 2. Use an alternative Python installation that was built using |
| the same build setup as Mesos. |
| -------------------------------------------------------------------])]) |
| ]) |
| |
| AC_MSG_CHECKING([for an old installation of the Mesos egg (before 0.20.0)]) |
| |
| $PYTHON -c "import mesos; mesos._mesos" &> /dev/null |
| |
| if test $? = 0; then |
| pymodulelocation=`$PYTHON -c \ |
| "import mesos; import os; print os.path.dirname(mesos.__path__[[0]])" \ |
| 2> /dev/null` |
| fi |
| |
| AS_IF([test -z "$pymodulelocation"], |
| [AC_MSG_RESULT([no])], |
| [AC_MSG_ERROR([yes |
| ------------------------------------------------------------------- |
| It appears that you currently have a native Python egg installed |
| from a version before 0.20.0. This conflicts with the egg in this |
| version. |
| |
| There are two possible workarounds for this issue: |
| 1. Disable Python bindings by configuring with --disable-python. |
| 2. Uninstall the legacy egg from your Python installation. This |
| might require you doing: |
| rm -rf $pymodulelocation |
| -------------------------------------------------------------------])]) |
| |
| # Determine how the generated Python egg's will get named, used in |
| # the Makefile to keep the targets from being rerun. |
| PYTHON_EGG_POSTFIX=`$PYTHON -c \ |
| 'import sys; \ |
| from distutils.util import get_platform; \ |
| print "-py" + sys.version[[0:3]] + "-" + get_platform()'` |
| |
| PYTHON_EGG_PUREPY_POSTFIX=`$PYTHON -c \ |
| 'import sys; \ |
| from distutils.util import get_platform; \ |
| print "-py" + sys.version[[0:3]]'` |
| |
| PYTHON_WHL_POSTFIX=`$PYTHON -c \ |
| 'import sys; \ |
| from distutils.util import get_platform; \ |
| print "-cp" + sys.version[[0:3]].replace(".", "") + "-none-" \ |
| + get_platform().replace(".", "_").replace("-", "_")'` |
| |
| PYTHON_WHL_PUREPY_POSTFIX=`$PYTHON -c \ |
| 'import sys; \ |
| print "-py" + sys.version[[0]] + "-none-any"'` |
| |
| AC_CONFIG_FILES([src/examples/python/test-executor], |
| [chmod +x src/examples/python/test-executor]) |
| AC_CONFIG_FILES([src/examples/python/test-framework], |
| [chmod +x src/examples/python/test-framework]) |
| AC_CONFIG_FILES([src/python/setup.py]) |
| AC_CONFIG_FILES([src/python/cli/setup.py]) |
| AC_CONFIG_FILES([src/python/interface/setup.py]) |
| AC_CONFIG_FILES([src/python/native_common/ext_modules.py]) |
| AC_CONFIG_FILES([src/python/executor/setup.py]) |
| AC_CONFIG_FILES([src/python/native/setup.py]) |
| AC_CONFIG_FILES([src/python/scheduler/setup.py]) |
| |
| AC_CONFIG_LINKS([src/python/executor/ext_modules.py:src/python/native_common/ext_modules.py]) |
| AC_CONFIG_LINKS([src/python/scheduler/ext_modules.py:src/python/native_common/ext_modules.py]) |
| |
| # When clang is being used, make sure that the distutils python- |
| # config cflags extraction does not cause build errors (MESOS-1079). |
| # TODO(tillt): Remove this once Apple distributed an updated Python. |
| PYTHON_CPPFLAGS="$CPPFLAGS" |
| PYTHON_CFLAGS="$CFLAGS $CXXFLAGS" # distutils requires we embed CXXFLAGS. |
| PYTHON_LDFLAGS="$LDFLAGS $GFLAGS_LIBS" |
| |
| AS_IF([test "x$ax_cv_cxx_compiler_vendor" = "xclang"], |
| [PYTHON_CPPFLAGS="$PYTHON_CPPFLAGS -Qunused-arguments" |
| PYTHON_CFLAGS="$PYTHON_CFLAGS -Qunused-arguments"]) |
| |
| AC_SUBST([PYTHON_CPPFLAGS]) |
| AC_SUBST([PYTHON_CFLAGS]) |
| AC_SUBST([PYTHON_EGG_POSTFIX]) |
| AC_SUBST([PYTHON_EGG_PUREPY_POSTFIX]) |
| AC_SUBST([PYTHON_WHL_POSTFIX]) |
| AC_SUBST([PYTHON_WHL_PUREPY_POSTFIX]) |
| AC_SUBST([PYTHON]) # Used by the example shell scripts and src/Makefile.am. |
| |
| AC_DEFINE([MESOS_HAS_PYTHON]) |
| |
| # Check if user has asked us to use a preinstalled setuptools, or if |
| # they asked us to ignore all bundled libraries while compiling and linking. |
| if test "x$enable_bundled_setuptools" != "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| |
| AC_PYTHON_MODULE([distutils], [no]) |
| if test "x$HAVE_PYMOD_distutils" = "xno"; then |
| AC_PYTHON_MODULE([setuptools], [no]) |
| |
| if test "x$HAVE_PYMOD_setuptools" = "xyes"; then |
| found_setuptools=yes |
| fi |
| |
| else |
| found_setuptools=yes |
| fi |
| |
| if test "x$found_setuptools" = "xyes"; then |
| with_bundled_setuptools=no |
| else |
| AC_MSG_ERROR([cannot find setuptools |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled setuptools but no suitable |
| setuptools could be found. |
| |
| You may want specify the location of setuptools by providing a prefix |
| path via --with-setuptools=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| fi |
| else |
| with_bundled_setuptools=yes |
| fi |
| |
| # Check if user has asked us to use a preinstalled pip, or if |
| # they asked us to ignore all bundled libraries while compiling and linking. |
| if test "x$enable_bundled_pip" != "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| |
| AC_PYTHON_MODULE([pip], [no]) |
| if test "x$HAVE_PYMOD_pip" = "xno"; then |
| AC_MSG_ERROR([cannot find pip |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled pip but no suitable |
| pip could be found. |
| |
| You may want specify the location of pip by providing a prefix |
| path via --with-pip=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| else |
| with_bundled_pip=no |
| fi |
| else |
| with_bundled_pip=yes |
| fi |
| |
| # Check if user has asked us to use a preinstalled wheel, or if |
| # they asked us to ignore all bundled libraries while compiling and linking. |
| if test "x$enable_bundled_wheel" != "xyes" || \ |
| test "x$enable_bundled" != "xyes"; then |
| |
| AC_PYTHON_MODULE([wheel], [no]) |
| if test "x$HAVE_PYMOD_wheel" = "xno"; then |
| AC_MSG_ERROR([cannot find wheel |
| ------------------------------------------------------------------- |
| You have requested the use of a non-bundled wheel but no suitable |
| wheel could be found. |
| |
| You may want specify the location of wheel by providing a prefix |
| path via --with-wheel=DIR, or check that the path you provided is |
| correct if you're already doing this. |
| ------------------------------------------------------------------- |
| ]) |
| else |
| with_bundled_wheel=no |
| fi |
| else |
| with_bundled_wheel=yes |
| fi |
| |
| has_python=yes |
| fi |
| |
| AC_MSG_CHECKING([whether to enable new CLI]) |
| AS_IF([test "x$enable_new_cli" = "xyes"], |
| [AC_MSG_RESULT([yes])], |
| [AC_MSG_RESULT([no])]) |
| |
| AM_CONDITIONAL([ENABLE_NEW_CLI], [test "x$enable_new_cli" = "xyes"]) |
| |
| AM_CONDITIONAL([HAS_PYTHON], [test "x$has_python" = "xyes"]) |
| |
| AM_CONDITIONAL([WITH_BUNDLED_SETUPTOOLS], |
| [test "x$with_bundled_setuptools" = "xyes"]) |
| AM_CONDITIONAL([WITH_BUNDLED_PIP], |
| [test "x$with_bundled_pip" = "xyes"]) |
| AM_CONDITIONAL([WITH_BUNDLED_WHEEL], |
| [test "x$with_bundled_wheel" = "xyes"]) |
| |
| AM_CONDITIONAL([ENABLE_PYTHON_DEPENDENCY_INSTALL], |
| [test "x$enable_python_dependency_install" = "xyes"]) |
| |
| |
| ############################################################################### |
| # Configure args to be passed to 3rdparty libraries. |
| ############################################################################### |
| |
| CONFIGURE_ARGS="$CONFIGURE_ARGS CXXFLAGS='$CXXFLAGS'" |
| |
| |
| ############################################################################### |
| # Mesos version definitions. |
| ############################################################################### |
| |
| # Provide more granular version numbers based on the version string, |
| # using the format MAJOR.MINOR.PATCH[-SUFFIX], where SUFFIX can itself |
| # contain dashes. |
| # |
| # NOTE: This definition must not be named such that it conflicts with |
| # existing definitions, e.g., 'version', 'ver'. |
| m4_define([major_minor_patch], |
| m4_split(m4_translit(AC_PACKAGE_VERSION, [-], [.]), [\.])) |
| |
| AC_SUBST(MESOS_MAJOR_VERSION, m4_car(major_minor_patch)) |
| AC_SUBST(MESOS_MINOR_VERSION, m4_car(m4_shift(major_minor_patch))) |
| AC_SUBST(MESOS_PATCH_VERSION, m4_car(m4_shift2(major_minor_patch))) |
| |
| |
| ############################################################################### |
| # Configure libbuild definitions passed into 'src/common/git_version.hpp'. |
| ############################################################################### |
| |
| git_dir="${srcdir}/.git/" |
| git_config=src/common/git_version.hpp |
| |
| # Create 'src/common/git_version.hpp' only if we did not do so before. This |
| # protects the results from getting overwritten by additional configure runs |
| # outside the reach of the git repository, as for example done by |
| # 'support/packaging/centos/build_rpm.sh'. |
| |
| AC_MSG_CHECKING([${git_config} presence]) |
| |
| AS_IF([test -f ${srcdir}/${git_config} || test -f ${git_config}], [AC_MSG_RESULT([yes])], [ |
| AC_MSG_RESULT([no]) |
| |
| AC_MSG_NOTICE([generating ${git_config}]) |
| |
| # When building from a git clone, the definitions BUILD_GIT_SHA, |
| # BUILD_GIT_BRANCH, and BUILD_GIT_TAG will be emitted. |
| |
| AS_IF([test -d ${git_dir}], [ |
| # Optionally set BUILD_GIT_SHA. |
| DEFINE_BUILD_GIT_SHA="" |
| |
| git_sha=$(git --git-dir=${git_dir} rev-parse HEAD 2>/dev/null) |
| |
| AS_IF([test $? = 0], [ |
| DEFINE_BUILD_GIT_SHA="#define BUILD_GIT_SHA \"${git_sha}\"" |
| ]) |
| AC_SUBST([DEFINE_BUILD_GIT_SHA]) |
| |
| # Optionally set BUILD_GIT_BRANCH. |
| DEFINE_BUILD_GIT_BRANCH="" |
| |
| git_branch=$(git --git-dir=${git_dir} symbolic-ref HEAD 2>/dev/null) |
| |
| AS_IF([test $? = 0], [ |
| DEFINE_BUILD_GIT_BRANCH="#define BUILD_GIT_BRANCH \"${git_branch}\"" |
| ]) |
| AC_SUBST([DEFINE_BUILD_GIT_BRANCH]) |
| |
| # Optionally set BUILD_GIT_TAG. |
| DEFINE_BUILD_GIT_TAG="" |
| |
| git_tag=$(git --git-dir=${git_dir} describe --exact --tags 2>/dev/null) |
| |
| AS_IF([test $? = 0], [ |
| DEFINE_BUILD_GIT_TAG="#define BUILD_GIT_TAG \"${git_tag}\"" |
| ]) |
| AC_SUBST([DEFINE_BUILD_GIT_TAG]) |
| ]) |
| |
| AC_CONFIG_FILES([${git_config}]) |
| ]) |
| |
| |
| AC_OUTPUT |
| |
| AC_MSG_NOTICE([Build option summary: |
| CXX: $CXX |
| CXXFLAGS: $CXXFLAGS |
| CPPFLAGS: $CPPFLAGS |
| LDFLAGS: $LDFLAGS |
| LIBS: $LIBS |
| JAVA_TEST_LDFLAGS: $JAVA_TEST_LDFLAGS |
| JAVA_JVM_LIBRARY: $JAVA_JVM_LIBRARY |
| ]) |