2021-06-01 09:42:38 +00:00
AC_INIT([nix],[m4_esyscmd(bash -c "echo -n $(cat ./.version)$VERSION_SUFFIX")])
2019-07-01 17:04:03 +00:00
AC_CONFIG_MACRO_DIRS([m4])
2016-05-30 14:31:32 +00:00
AC_CONFIG_SRCDIR(README.md)
2003-04-04 16:14:56 +00:00
AC_CONFIG_AUX_DIR(config)
2006-03-01 12:15:33 +00:00
2011-11-16 20:39:59 +00:00
AC_PROG_SED
2006-05-31 11:50:14 +00:00
2023-05-11 13:51:48 +00:00
# Construct a Nix system name (like "i686-linux"):
# https://www.gnu.org/software/autoconf/manual/html_node/Canonicalizing.html#index-AC_005fCANONICAL_005fHOST-1
2023-06-20 12:10:30 +00:00
# The inital value is produced by the `config/config.guess` script:
# upstream: https://git.savannah.gnu.org/cgit/config.git/tree/config.guess
2023-05-11 13:51:48 +00:00
# It has the following form, which is not documented anywhere:
# <cpu>-<vendor>-<os>[<version>][-<abi>]
2023-06-20 12:10:30 +00:00
# If `./configure` is passed any of the `--host`, `--build`, `--target` options, the value comes from `config/config.sub` instead:
# upstream: https://git.savannah.gnu.org/cgit/config.git/tree/config.sub
2011-11-16 20:39:59 +00:00
AC_CANONICAL_HOST
2003-12-01 14:36:50 +00:00
AC_MSG_CHECKING([for the canonical Nix system name])
2006-05-31 11:50:14 +00:00
2021-06-01 09:42:38 +00:00
AC_ARG_WITH(system, AS_HELP_STRING([--with-system=SYSTEM],[Platform identifier (e.g., `i686-linux').]),
2011-11-16 20:39:59 +00:00
[system=$withval],
2011-11-16 20:58:21 +00:00
[case "$host_cpu" in
i*86)
machine_name="i686";;
2011-11-18 17:25:40 +00:00
amd64)
machine_name="x86_64";;
2016-03-11 20:53:06 +00:00
armv6|armv7)
machine_name="${host_cpu}l";;
2011-11-16 20:58:21 +00:00
*)
machine_name="$host_cpu";;
esac
case "$host_os" in
2016-02-29 11:50:47 +00:00
linux-gnu*|linux-musl*)
2012-08-27 15:28:48 +00:00
# For backward compatibility, strip the `-gnu' part.
system="$machine_name-linux";;
2011-11-16 20:39:59 +00:00
*)
# Strip the version number from names such as `gnu0.3',
# `darwin10.2.0', etc.
2012-08-27 15:28:48 +00:00
system="$machine_name-`echo $host_os | "$SED" -e's/@<:@0-9.@:>@*$//g'`";;
2011-11-16 20:39:59 +00:00
esac])
2003-12-01 14:36:50 +00:00
AC_MSG_RESULT($system)
AC_SUBST(system)
2019-07-02 01:11:52 +00:00
AC_DEFINE_UNQUOTED(SYSTEM, ["$system"], [platform identifier ('cpu-os')])
2003-12-01 14:36:50 +00:00
2006-05-31 11:50:14 +00:00
2008-11-20 14:14:35 +00:00
# State should be stored in /nix/var, unless the user overrides it explicitly.
test "$localstatedir" = '${prefix}/var' && localstatedir=/nix/var
2003-04-04 16:14:56 +00:00
AC_PROG_CC
AC_PROG_CXX
2018-01-28 19:19:56 +00:00
AC_PROG_CPP
2006-05-31 11:50:14 +00:00
2019-02-13 05:03:10 +00:00
AC_CHECK_TOOL([AR], [ar])
2006-05-31 11:50:14 +00:00
2006-09-22 11:13:12 +00:00
# Use 64-bit file system calls so that we can support files > 2 GiB.
2009-10-06 09:14:06 +00:00
AC_SYS_LARGEFILE
2006-09-22 11:13:12 +00:00
2019-07-02 20:28:30 +00:00
# Solaris-specific stuff.
AC_STRUCT_DIRENT_D_TYPE
2021-08-13 08:19:43 +00:00
case "$host_os" in
solaris*)
2019-07-02 20:28:30 +00:00
# Solaris requires -lsocket -lnsl for network functions
2021-06-04 11:25:36 +00:00
LDFLAGS="-lsocket -lnsl $LDFLAGS"
2021-08-13 08:19:43 +00:00
;;
esac
2019-07-02 20:28:30 +00:00
2023-10-31 16:01:13 +00:00
ENSURE_NO_GCC_BUG_80431
2003-12-22 16:40:46 +00:00
# Check for pubsetbuf.
AC_MSG_CHECKING([for pubsetbuf])
AC_LANG_PUSH(C++)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <iostream>
using namespace std;
static char buf[1024];]],
[[cerr.rdbuf()->pubsetbuf(buf, sizeof(buf));]])],
2008-06-09 13:52:45 +00:00
[AC_MSG_RESULT(yes) AC_DEFINE(HAVE_PUBSETBUF, 1, [Whether pubsetbuf is available.])],
2003-12-22 16:40:46 +00:00
AC_MSG_RESULT(no))
AC_LANG_POP(C++)
2006-05-31 11:50:14 +00:00
2016-06-09 14:15:58 +00:00
AC_CHECK_FUNCS([statvfs pipe2])
2007-10-27 16:51:55 +00:00
2012-07-23 20:52:25 +00:00
# Check for lutimes, optionally used for changing the mtime of
# symlinks.
AC_CHECK_FUNCS([lutimes])
2012-07-23 22:42:18 +00:00
# Check whether the store optimiser can optimise symlinks.
AC_MSG_CHECKING([whether it is possible to create a link to a symlink])
ln -s bla tmp_link
if ln tmp_link tmp_link2 2> /dev/null; then
AC_MSG_RESULT(yes)
AC_DEFINE(CAN_LINK_SYMLINK, 1, [Whether link() works on symlinks.])
else
AC_MSG_RESULT(no)
fi
rm -f tmp_link tmp_link2
2009-01-12 16:30:32 +00:00
# Check for <locale>.
2003-12-22 16:40:46 +00:00
AC_LANG_PUSH(C++)
2012-02-15 00:31:56 +00:00
AC_CHECK_HEADERS([locale])
2003-12-22 16:40:46 +00:00
AC_LANG_POP(C++)
2006-05-31 11:50:14 +00:00
2004-04-06 08:40:19 +00:00
AC_DEFUN([NEED_PROG],
2004-04-23 15:16:08 +00:00
[
AC_PATH_PROG($1, $2)
2004-04-06 08:40:19 +00:00
if test -z "$$1"; then
2004-07-18 21:07:27 +00:00
AC_MSG_ERROR([$2 is required])
2004-04-06 08:40:19 +00:00
fi
])
2008-04-10 09:54:23 +00:00
NEED_PROG(bash, bash)
2004-01-30 16:32:14 +00:00
AC_PATH_PROG(flex, flex, false)
AC_PATH_PROG(bison, bison, false)
2006-02-22 13:55:41 +00:00
AC_PATH_PROG(dot, dot)
2017-04-20 17:11:45 +00:00
AC_PATH_PROG(lsof, lsof, lsof)
2006-10-19 19:20:18 +00:00
2011-04-11 10:13:53 +00:00
2019-03-27 23:02:10 +00:00
AC_SUBST(coreutils, [$(dirname $(type -p cat))])
2003-11-26 10:41:21 +00:00
2011-04-11 10:13:53 +00:00
2021-06-01 09:42:38 +00:00
AC_ARG_WITH(store-dir, AS_HELP_STRING([--with-store-dir=PATH],[path of the Nix store (defaults to /nix/store)]),
2008-11-20 14:14:35 +00:00
storedir=$withval, storedir='/nix/store')
2004-02-16 15:23:19 +00:00
AC_SUBST(storedir)
2011-04-11 10:13:53 +00:00
2023-12-03 23:12:22 +00:00
# Running the functional tests without building Nix is useful for testing
# different pre-built versions of Nix against each other.
AC_ARG_ENABLE(build, AS_HELP_STRING([--disable-build],[Do not build nix]),
ENABLE_BUILD=$enableval, ENABLE_BUILD=yes)
AC_SUBST(ENABLE_BUILD)
2023-12-14 05:05:03 +00:00
# Building without unit tests is useful for bootstrapping with a smaller footprint
2023-12-03 23:12:22 +00:00
# or running the tests in a separate derivation. Otherwise, we do compile and
# run them.
2023-12-14 05:05:03 +00:00
AC_ARG_ENABLE(unit-tests, AS_HELP_STRING([--disable-unit-tests],[Do not build the tests]),
ENABLE_UNIT_TESTS=$enableval, ENABLE_UNIT_TESTS=$ENABLE_BUILD)
AC_SUBST(ENABLE_UNIT_TESTS)
AS_IF(
[test "$ENABLE_BUILD" == "no" && test "$ENABLE_UNIT_TESTS" == "yes"],
[AC_MSG_ERROR([Cannot enable unit tests when building overall is disabled. Please do not pass '--enable-unit-tests' or do not pass '--disable-build'.])])
AC_ARG_ENABLE(functional-tests, AS_HELP_STRING([--disable-functional-tests],[Do not build the tests]),
ENABLE_FUNCTIONAL_TESTS=$enableval, ENABLE_FUNCTIONAL_TESTS=yes)
AC_SUBST(ENABLE_FUNCTIONAL_TESTS)
# documentation generation switch
AC_ARG_ENABLE(doc-gen, AS_HELP_STRING([--disable-doc-gen],[disable documentation generation]),
ENABLE_DOC_GEN=$enableval, ENABLE_DOC_GEN=$ENABLE_BUILD)
AC_SUBST(ENABLE_DOC_GEN)
AS_IF(
[test "$ENABLE_BUILD" == "no" && test "$ENABLE_GENERATED_DOCS" == "yes"],
[AC_MSG_ERROR([Cannot enable generated docs when building overall is disabled. Please do not pass '--enable-doc-gen' or do not pass '--disable-build'.])])
2023-12-03 23:12:22 +00:00
# Building without API docs is the default as Nix' C++ interfaces are internal and unstable.
2023-12-14 05:05:03 +00:00
AC_ARG_ENABLE(internal-api-docs, AS_HELP_STRING([--enable-internal-api-docs],[Build API docs for Nix's internal unstable C++ interfaces]),
ENABLE_INTERNAL_API_DOCS=$enableval, ENABLE_INTERNAL_API_DOCS=no)
AC_SUBST(ENABLE_INTERNAL_API_DOCS)
2023-12-03 23:12:22 +00:00
AS_IF(
2023-12-14 05:05:03 +00:00
[test "$ENABLE_FUNCTIONAL_TESTS" == "yes" || test "$ENABLE_DOC_GEN" == "yes"],
2023-12-03 23:12:22 +00:00
[NEED_PROG(jq, jq)])
AS_IF([test "$ENABLE_BUILD" == "yes"],[
2019-07-02 01:12:58 +00:00
# Look for boost, a required dependency.
# Note that AX_BOOST_BASE only exports *CPP* BOOST_CPPFLAGS, no CXX flags,
# and CPPFLAGS are not passed to the C++ compiler automatically.
# Thus we append the returned CPPFLAGS to the CXXFLAGS here.
AX_BOOST_BASE([1.66], [CXXFLAGS="$BOOST_CPPFLAGS $CXXFLAGS"], [AC_MSG_ERROR([Nix requires boost.])])
2019-07-03 00:47:27 +00:00
# For unknown reasons, setting this directly in the ACTION-IF-FOUND above
# ends up with LDFLAGS being empty, so we set it afterwards.
LDFLAGS="$BOOST_LDFLAGS $LDFLAGS"
2019-07-02 01:12:58 +00:00
2019-10-02 01:22:18 +00:00
# On some platforms, new-style atomics need a helper library
AC_MSG_CHECKING(whether -latomic is needed)
AC_LINK_IFELSE([AC_LANG_SOURCE([[
#include <stdint.h>
uint64_t v;
int main() {
return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE);
}]])], GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=no, GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=yes)
AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC)
if test "x$GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC" = xyes; then
2021-06-04 11:25:36 +00:00
LDFLAGS="-latomic $LDFLAGS"
2019-10-02 01:22:18 +00:00
fi
2019-07-02 01:12:58 +00:00
2023-11-14 15:52:57 +00:00
AC_ARG_ENABLE(install-unit-tests, AS_HELP_STRING([--enable-install-unit-tests],[Install the unit tests for running later (default no)]),
INSTALL_UNIT_TESTS=$enableval, INSTALL_UNIT_TESTS=no)
AC_SUBST(INSTALL_UNIT_TESTS)
AC_ARG_WITH(check-bin-dir, AS_HELP_STRING([--with-check-bin-dir=PATH],[path to install unit tests for running later (defaults to $libexecdir/nix)]),
checkbindir=$withval, checkbindir=$libexecdir/nix)
AC_SUBST(checkbindir)
AC_ARG_WITH(check-lib-dir, AS_HELP_STRING([--with-check-lib-dir=PATH],[path to install unit tests for running later (defaults to $libdir)]),
checklibdir=$withval, checklibdir=$libdir)
AC_SUBST(checklibdir)
2021-12-21 18:34:40 +00:00
# LTO is currently broken with clang for unknown reasons; ld segfaults in the llvm plugin
AC_ARG_ENABLE(lto, AS_HELP_STRING([--enable-lto],[Enable LTO (only supported with GCC) [default=no]]),
lto=$enableval, lto=no)
if test "$lto" = yes; then
if $CXX --version | grep -q GCC; then
AC_SUBST(CXXLTO, [-flto=jobserver])
else
echo "error: LTO is only supported with GCC at the moment" >&2
exit 1
fi
else
AC_SUBST(CXXLTO, [""])
fi
2019-11-01 17:27:40 +00:00
PKG_PROG_PKG_CONFIG
2021-06-01 09:42:38 +00:00
AC_ARG_ENABLE(shared, AS_HELP_STRING([--enable-shared],[Build shared libraries for Nix [default=yes]]),
2019-11-01 17:27:40 +00:00
shared=$enableval, shared=yes)
if test "$shared" = yes; then
AC_SUBST(BUILD_SHARED_LIBS, 1, [Whether to build shared libraries.])
else
AC_SUBST(BUILD_SHARED_LIBS, 0, [Whether to build shared libraries.])
PKG_CONFIG="$PKG_CONFIG --static"
fi
2019-03-27 23:02:10 +00:00
# Look for OpenSSL, a required dependency. FIXME: this is only (maybe)
# used by S3BinaryCacheStore.
2023-02-03 17:07:47 +00:00
PKG_CHECK_MODULES([OPENSSL], [libcrypto >= 1.1.1], [CXXFLAGS="$OPENSSL_CFLAGS $CXXFLAGS"])
2011-04-11 10:13:53 +00:00
2012-03-18 22:54:57 +00:00
2022-12-07 11:58:58 +00:00
# Look for libarchive.
2019-12-09 11:39:37 +00:00
PKG_CHECK_MODULES([LIBARCHIVE], [libarchive >= 3.1.2], [CXXFLAGS="$LIBARCHIVE_CFLAGS $CXXFLAGS"])
2020-10-15 20:13:01 +00:00
# Workaround until https://github.com/libarchive/libarchive/issues/1446 is fixed
if test "$shared" != yes; then
LIBARCHIVE_LIBS+=' -lz'
fi
2012-03-18 22:54:57 +00:00
# Look for SQLite, a required dependency.
2012-05-04 21:21:43 +00:00
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.6.19], [CXXFLAGS="$SQLITE3_CFLAGS $CXXFLAGS"])
2003-07-28 14:13:42 +00:00
2015-03-27 11:27:36 +00:00
# Look for libcurl, a required dependency.
PKG_CHECK_MODULES([LIBCURL], [libcurl], [CXXFLAGS="$LIBCURL_CFLAGS $CXXFLAGS"])
2018-10-29 13:44:58 +00:00
# Look for editline, a required dependency.
2019-07-01 16:31:54 +00:00
# The the libeditline.pc file was added only in libeditline >= 1.15.2,
# see https://github.com/troglobit/editline/commit/0a8f2ef4203c3a4a4726b9dd1336869cd0da8607,
# but e.g. Ubuntu 16.04 has an older version, so we fall back to searching for
# editline.h when the pkg-config approach fails.
PKG_CHECK_MODULES([EDITLINE], [libeditline], [CXXFLAGS="$EDITLINE_CFLAGS $CXXFLAGS"], [
AC_CHECK_HEADERS([editline.h], [true],
[AC_MSG_ERROR([Nix requires libeditline; it was found neither via pkg-config nor its normal header.])])
AC_SEARCH_LIBS([readline read_history], [editline], [],
[AC_MSG_ERROR([Nix requires libeditline; it was not found via pkg-config, but via its header, but required functions do not work. Maybe it is too old? >= 1.14 is required.])])
])
2015-03-27 11:27:36 +00:00
2021-11-27 22:02:04 +00:00
# Look for libsodium.
2021-01-06 16:56:53 +00:00
PKG_CHECK_MODULES([SODIUM], [libsodium], [CXXFLAGS="$SODIUM_CFLAGS $CXXFLAGS"])
2015-02-04 15:43:32 +00:00
2018-08-06 09:48:35 +00:00
# Look for libbrotli{enc,dec}.
PKG_CHECK_MODULES([LIBBROTLI], [libbrotlienc libbrotlidec], [CXXFLAGS="$LIBBROTLI_CFLAGS $CXXFLAGS"])
2021-02-16 13:32:12 +00:00
# Look for libcpuid.
2021-11-27 23:48:04 +00:00
have_libcpuid=
2021-02-16 13:32:12 +00:00
if test "$machine_name" = "x86_64"; then
2021-11-27 23:48:04 +00:00
AC_ARG_ENABLE([cpuid],
AS_HELP_STRING([--disable-cpuid], [Do not determine microarchitecture levels with libcpuid (relevant to x86_64 only)]))
if test "x$enable_cpuid" != "xno"; then
PKG_CHECK_MODULES([LIBCPUID], [libcpuid],
[CXXFLAGS="$LIBCPUID_CFLAGS $CXXFLAGS"
have_libcpuid=1
AC_DEFINE([HAVE_LIBCPUID], [1], [Use libcpuid])]
)
fi
2021-02-16 13:32:12 +00:00
fi
AC_SUBST(HAVE_LIBCPUID, [$have_libcpuid])
2017-12-29 20:42:14 +00:00
2017-05-29 09:34:24 +00:00
# Look for libseccomp, required for Linux sandboxing.
2021-08-13 08:19:43 +00:00
case "$host_os" in
linux*)
AC_ARG_ENABLE([seccomp-sandboxing],
AS_HELP_STRING([--disable-seccomp-sandboxing],[Don't build support for seccomp sandboxing (only recommended if your arch doesn't support libseccomp yet!)
]))
if test "x$enable_seccomp_sandboxing" != "xno"; then
PKG_CHECK_MODULES([LIBSECCOMP], [libseccomp],
[CXXFLAGS="$LIBSECCOMP_CFLAGS $CXXFLAGS"])
have_seccomp=1
AC_DEFINE([HAVE_SECCOMP], [1], [Whether seccomp is available and should be used for sandboxing.])
else
have_seccomp=
fi
;;
*)
2018-02-18 07:35:01 +00:00
have_seccomp=
2021-08-13 08:19:43 +00:00
;;
esac
2018-02-18 07:35:01 +00:00
AC_SUBST(HAVE_SECCOMP, [$have_seccomp])
2017-05-29 09:34:24 +00:00
2023-11-30 02:03:56 +00:00
# Optional dependencies for better normalizing file system data
2023-12-09 00:52:08 +00:00
AC_CHECK_HEADERS([sys/xattr.h])
2024-01-02 17:33:51 +00:00
AS_IF([test "$ac_cv_header_sys_xattr_h" = "yes"],[
AC_CHECK_FUNCS([llistxattr lremovexattr])
AS_IF([test "$ac_cv_func_llistxattr" = "yes" && test "$ac_cv_func_lremovexattr" = "yes"],[
AC_DEFINE([HAVE_ACL_SUPPORT], [1], [Define if we can manipulate file system Access Control Lists])
])
])
2017-05-29 09:34:24 +00:00
2016-05-04 15:16:48 +00:00
# Look for aws-cpp-sdk-s3.
AC_LANG_PUSH(C++)
AC_CHECK_HEADERS([aws/s3/S3Client.h],
2021-06-25 20:51:02 +00:00
[AC_DEFINE([ENABLE_S3], [1], [Whether to enable S3 support via aws-sdk-cpp.]) enable_s3=1],
2021-04-23 06:30:05 +00:00
[AC_DEFINE([ENABLE_S3], [0], [Whether to enable S3 support via aws-sdk-cpp.]) enable_s3=])
2016-05-04 15:16:48 +00:00
AC_SUBST(ENABLE_S3, [$enable_s3])
AC_LANG_POP(C++)
2017-12-22 11:05:13 +00:00
if test -n "$enable_s3"; then
2019-01-10 09:10:44 +00:00
declare -a aws_version_tokens=($(printf '#include <aws/core/VersionConfig.h>\nAWS_SDK_VERSION_STRING' | $CPP $CPPFLAGS - | grep -v '^#.*' | sed 's/"//g' | tr '.' ' '))
AC_DEFINE_UNQUOTED([AWS_VERSION_MAJOR], ${aws_version_tokens@<:@0@:>@}, [Major version of aws-sdk-cpp.])
AC_DEFINE_UNQUOTED([AWS_VERSION_MINOR], ${aws_version_tokens@<:@1@:>@}, [Minor version of aws-sdk-cpp.])
2020-12-04 18:32:35 +00:00
AC_DEFINE_UNQUOTED([AWS_VERSION_PATCH], ${aws_version_tokens@<:@2@:>@}, [Patch version of aws-sdk-cpp.])
2017-12-22 11:05:13 +00:00
fi
2016-05-04 15:16:48 +00:00
2010-10-22 13:39:15 +00:00
# Whether to use the Boehm garbage collector.
2021-06-01 09:42:38 +00:00
AC_ARG_ENABLE(gc, AS_HELP_STRING([--enable-gc],[enable garbage collection in the Nix expression evaluator (requires Boehm GC) [default=yes]]),
2019-10-30 13:43:09 +00:00
gc=$enableval, gc=yes)
2012-01-04 12:45:40 +00:00
if test "$gc" = yes; then
2010-10-29 14:00:47 +00:00
PKG_CHECK_MODULES([BDW_GC], [bdw-gc])
CXXFLAGS="$BDW_GC_CFLAGS $CXXFLAGS"
2010-10-22 13:39:15 +00:00
AC_DEFINE(HAVE_BOEHMGC, 1, [Whether to use the Boehm garbage collector.])
fi
2010-10-29 14:00:47 +00:00
2023-12-14 05:05:03 +00:00
AS_IF([test "$ENABLE_UNIT_TESTS" == "yes"],[
2023-02-20 19:27:50 +00:00
2020-05-08 10:09:00 +00:00
# Look for gtest.
PKG_CHECK_MODULES([GTEST], [gtest_main])
2023-01-19 13:51:00 +00:00
# Look for rapidcheck.
2023-04-08 20:29:43 +00:00
AC_ARG_VAR([RAPIDCHECK_HEADERS], [include path of gtest headers shipped by RAPIDCHECK])
2023-01-19 13:51:00 +00:00
# No pkg-config yet, https://github.com/emil-e/rapidcheck/issues/302
2023-01-30 17:08:57 +00:00
AC_LANG_PUSH(C++)
2023-02-13 17:37:35 +00:00
AC_SUBST(RAPIDCHECK_HEADERS)
[CXXFLAGS="-I $RAPIDCHECK_HEADERS $CXXFLAGS"]
2023-04-08 20:29:43 +00:00
[LIBS="-lrapidcheck -lgtest $LIBS"]
2023-01-19 13:51:00 +00:00
AC_CHECK_HEADERS([rapidcheck/gtest.h], [], [], [#include <gtest/gtest.h>])
2023-04-08 20:29:43 +00:00
dnl AC_CHECK_LIB doesn't work for C++ libs with mangled symbols
AC_LINK_IFELSE([
AC_LANG_PROGRAM([[
#include <gtest/gtest.h>
#include <rapidcheck/gtest.h>
]], [[
return RUN_ALL_TESTS();
]])
],
[],
[AC_MSG_ERROR([librapidcheck is not found.])])
2023-01-30 17:08:57 +00:00
AC_LANG_POP(C++)
2023-01-19 13:51:00 +00:00
2023-12-03 23:12:22 +00:00
])
2023-01-19 13:51:00 +00:00
2022-01-26 10:41:51 +00:00
# Look for nlohmann/json.
PKG_CHECK_MODULES([NLOHMANN_JSON], [nlohmann_json >= 3.9])
2023-11-10 12:58:59 +00:00
2021-09-14 05:54:37 +00:00
# Look for lowdown library.
2022-02-01 09:44:19 +00:00
PKG_CHECK_MODULES([LOWDOWN], [lowdown >= 0.9.0], [CXXFLAGS="$LOWDOWN_CFLAGS $CXXFLAGS"])
2016-09-20 14:31:23 +00:00
2023-11-10 12:58:59 +00:00
# Look for libgit2.
PKG_CHECK_MODULES([LIBGIT2], [libgit2])
2006-05-31 11:50:14 +00:00
# Setuid installations.
2006-12-07 18:51:11 +00:00
AC_CHECK_FUNCS([setresuid setreuid lchown])
2006-12-03 14:32:22 +00:00
2006-11-29 21:06:58 +00:00
2007-12-14 14:49:35 +00:00
# Nice to have, but not essential.
2017-02-28 12:59:11 +00:00
AC_CHECK_FUNCS([strsignal posix_fallocate sysconf])
2007-12-14 14:49:35 +00:00
2021-06-01 09:42:38 +00:00
AC_ARG_WITH(sandbox-shell, AS_HELP_STRING([--with-sandbox-shell=PATH],[path of a statically-linked shell to use as /bin/sh in sandboxes]),
2017-05-15 15:30:33 +00:00
sandbox_shell=$withval)
AC_SUBST(sandbox_shell)
2022-05-24 15:00:27 +00:00
if test ${cross_compiling:-no} = no && ! test -z ${sandbox_shell+x}; then
2022-05-24 14:26:40 +00:00
AC_MSG_CHECKING([whether sandbox-shell has the standalone feature])
# busybox shell sometimes allows executing other busybox applets,
# even if they are not in the path, breaking our sandbox
if PATH= $sandbox_shell -c "busybox" 2>&1 | grep -qv "not found"; then
AC_MSG_RESULT(enabled)
AC_MSG_ERROR([Please disable busybox FEATURE_SH_STANDALONE])
else
AC_MSG_RESULT(disabled)
fi
fi
2017-05-15 15:30:33 +00:00
2022-06-22 16:21:37 +00:00
AC_ARG_ENABLE(embedded-sandbox-shell, AS_HELP_STRING([--enable-embedded-sandbox-shell],[include the sandbox shell in the Nix binary [default=no]]),
embedded_sandbox_shell=$enableval, embedded_sandbox_shell=no)
AC_SUBST(embedded_sandbox_shell)
if test "$embedded_sandbox_shell" = yes; then
AC_DEFINE(HAVE_EMBEDDED_SANDBOX_SHELL, 1, [Include the sandbox shell in the Nix binary.])
fi
2023-12-03 23:12:22 +00:00
])
2022-06-22 16:21:37 +00:00
2013-11-25 15:51:22 +00:00
# Expand all variables in config.status.
test "$prefix" = NONE && prefix=$ac_default_prefix
test "$exec_prefix" = NONE && exec_prefix='${prefix}'
for name in $ac_subst_vars; do
2019-01-10 09:10:44 +00:00
declare $name="$(eval echo "${!name}")"
declare $name="$(eval echo "${!name}")"
declare $name="$(eval echo "${!name}")"
2013-11-25 15:51:22 +00:00
done
2014-09-22 10:50:38 +00:00
rm -f Makefile.config
2021-06-01 09:42:38 +00:00
AC_CONFIG_HEADERS([config.h])
2013-11-25 10:56:14 +00:00
AC_CONFIG_FILES([])
2003-04-08 15:36:54 +00:00
AC_OUTPUT