2014-01-09 16:33:55 +00:00
|
|
|
AC_INIT(nix, m4_esyscmd([bash -c "echo -n $(cat ./version)$VERSION_SUFFIX"]))
|
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
|
|
|
|
2003-12-01 14:36:50 +00:00
|
|
|
# Construct a Nix system name (like "i686-linux").
|
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
|
|
|
|
2004-05-18 09:45:46 +00:00
|
|
|
AC_ARG_WITH(system, AC_HELP_STRING([--with-system=SYSTEM],
|
2008-06-09 13:52:45 +00:00
|
|
|
[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])
|
|
|
|
|
2011-11-21 12:23:48 +00:00
|
|
|
sys_name=$(uname -s | tr 'A-Z ' 'a-z_')
|
|
|
|
|
|
|
|
case $sys_name in
|
|
|
|
cygwin*)
|
|
|
|
sys_name=cygwin
|
|
|
|
;;
|
|
|
|
esac
|
2012-08-27 15:28:48 +00:00
|
|
|
|
2003-12-01 14:36:50 +00:00
|
|
|
AC_MSG_RESULT($system)
|
|
|
|
AC_SUBST(system)
|
2004-04-23 15:16:08 +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
|
|
|
|
|
|
|
|
|
2009-10-08 14:50:37 +00:00
|
|
|
# Solaris-specific stuff.
|
2015-11-07 03:51:33 +00:00
|
|
|
AC_STRUCT_DIRENT_D_TYPE
|
2011-11-21 13:22:34 +00:00
|
|
|
if test "$sys_name" = sunos; then
|
2009-10-08 14:50:37 +00:00
|
|
|
# Solaris requires -lsocket -lnsl for network functions
|
2010-02-24 12:25:48 +00:00
|
|
|
LIBS="-lsocket -lnsl $LIBS"
|
2009-10-08 14:50:37 +00:00
|
|
|
fi
|
2006-05-31 11:50:14 +00:00
|
|
|
|
2010-03-02 16:40:40 +00:00
|
|
|
|
2016-01-12 12:51:38 +00:00
|
|
|
CFLAGS=
|
|
|
|
CXXFLAGS=
|
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
|
2018-03-20 16:25:13 +00:00
|
|
|
AX_CXX_COMPILE_STDCXX_14
|
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
|
|
|
|
|
|
|
|
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)
|
2006-09-20 15:28:47 +00:00
|
|
|
NEED_PROG(patch, patch)
|
2004-04-06 08:40:19 +00:00
|
|
|
AC_PATH_PROG(xmllint, xmllint, false)
|
|
|
|
AC_PATH_PROG(xsltproc, xsltproc, false)
|
2004-01-30 16:32:14 +00:00
|
|
|
AC_PATH_PROG(flex, flex, false)
|
|
|
|
AC_PATH_PROG(bison, bison, false)
|
2010-03-05 18:26:47 +00:00
|
|
|
NEED_PROG(sed, sed)
|
2005-03-15 12:03:15 +00:00
|
|
|
NEED_PROG(tar, tar)
|
2012-03-18 22:54:57 +00:00
|
|
|
NEED_PROG(bzip2, bzip2)
|
2013-05-14 13:10:14 +00:00
|
|
|
NEED_PROG(gzip, gzip)
|
2012-06-29 18:26:31 +00:00
|
|
|
NEED_PROG(xz, xz)
|
2006-02-22 13:55:41 +00:00
|
|
|
AC_PATH_PROG(dot, dot)
|
2012-04-13 12:41:33 +00:00
|
|
|
AC_PATH_PROG(pv, pv, pv)
|
2017-12-29 20:42:14 +00:00
|
|
|
AC_PATH_PROGS(brotli, brotli bro, bro)
|
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
|
|
|
|
2005-03-21 10:06:11 +00:00
|
|
|
NEED_PROG(cat, cat)
|
2007-05-01 23:16:38 +00:00
|
|
|
NEED_PROG(tr, tr)
|
2005-03-15 12:03:15 +00:00
|
|
|
AC_ARG_WITH(coreutils-bin, AC_HELP_STRING([--with-coreutils-bin=PATH],
|
2005-03-21 10:06:11 +00:00
|
|
|
[path of cat, mkdir, etc.]),
|
|
|
|
coreutils=$withval, coreutils=$(dirname $cat))
|
2005-03-15 12:03:15 +00:00
|
|
|
AC_SUBST(coreutils)
|
2003-11-26 10:41:21 +00:00
|
|
|
|
2011-04-11 10:13:53 +00:00
|
|
|
|
2004-02-16 15:23:19 +00:00
|
|
|
AC_ARG_WITH(store-dir, AC_HELP_STRING([--with-store-dir=PATH],
|
2011-07-13 15:57:44 +00:00
|
|
|
[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
|
|
|
|
2015-11-04 15:07:09 +00:00
|
|
|
# Look for OpenSSL, a required dependency.
|
|
|
|
PKG_CHECK_MODULES([OPENSSL], [libcrypto], [CXXFLAGS="$OPENSSL_CFLAGS $CXXFLAGS"])
|
2011-04-11 10:13:53 +00:00
|
|
|
|
2012-03-18 22:54:57 +00:00
|
|
|
|
|
|
|
# Look for libbz2, a required dependency.
|
|
|
|
AC_CHECK_LIB([bz2], [BZ2_bzWriteOpen], [true],
|
2018-09-03 15:57:13 +00:00
|
|
|
[AC_MSG_ERROR([Nix requires libbz2, which is part of bzip2. See https://web.archive.org/web/20180624184756/http://www.bzip.org/.])])
|
2012-03-18 22:54:57 +00:00
|
|
|
AC_CHECK_HEADERS([bzlib.h], [true],
|
2018-09-03 15:57:13 +00:00
|
|
|
[AC_MSG_ERROR([Nix requires libbz2, which is part of bzip2. See https://web.archive.org/web/20180624184756/http://www.bzip.org/.])])
|
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
|
|
|
|
2011-04-11 10:13:53 +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.
|
|
|
|
PKG_CHECK_MODULES([EDITLINE], [libeditline], [CXXFLAGS="$EDITLINE_CFLAGS $CXXFLAGS"])
|
2015-03-27 11:27:36 +00:00
|
|
|
|
2015-02-10 10:54:06 +00:00
|
|
|
# Look for libsodium, an optional dependency.
|
|
|
|
PKG_CHECK_MODULES([SODIUM], [libsodium],
|
|
|
|
[AC_DEFINE([HAVE_SODIUM], [1], [Whether to use libsodium for cryptography.])
|
|
|
|
CXXFLAGS="$SODIUM_CFLAGS $CXXFLAGS"
|
|
|
|
have_sodium=1], [have_sodium=])
|
|
|
|
AC_SUBST(HAVE_SODIUM, [$have_sodium])
|
2015-02-04 15:43:32 +00:00
|
|
|
|
|
|
|
|
2015-10-30 11:33:40 +00:00
|
|
|
# Look for liblzma, a required dependency.
|
|
|
|
PKG_CHECK_MODULES([LIBLZMA], [liblzma], [CXXFLAGS="$LIBLZMA_CFLAGS $CXXFLAGS"])
|
2018-02-10 02:57:31 +00:00
|
|
|
AC_CHECK_LIB([lzma], [lzma_stream_encoder_mt],
|
|
|
|
[AC_DEFINE([HAVE_LZMA_MT], [1], [xz multithreaded compression support])])
|
2015-10-30 11:33:40 +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"])
|
|
|
|
|
2017-12-29 20:42:14 +00:00
|
|
|
|
2017-05-29 09:34:24 +00:00
|
|
|
# Look for libseccomp, required for Linux sandboxing.
|
|
|
|
if test "$sys_name" = linux; then
|
2018-02-18 07:35:01 +00:00
|
|
|
AC_ARG_ENABLE([seccomp-sandboxing],
|
|
|
|
AC_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
|
2018-02-19 18:13:51 +00:00
|
|
|
AC_DEFINE([HAVE_SECCOMP], [1], [Whether seccomp is available and should be used for sandboxing.])
|
2018-02-18 07:35:01 +00:00
|
|
|
else
|
|
|
|
have_seccomp=
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
have_seccomp=
|
2017-05-29 09:34:24 +00:00
|
|
|
fi
|
2018-02-18 07:35:01 +00:00
|
|
|
AC_SUBST(HAVE_SECCOMP, [$have_seccomp])
|
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],
|
2017-12-22 11:05:13 +00:00
|
|
|
[AC_DEFINE([ENABLE_S3], [1], [Whether to enable S3 support via aws-sdk-cpp.])
|
2016-05-04 15:16:48 +00:00
|
|
|
enable_s3=1], [enable_s3=])
|
|
|
|
AC_SUBST(ENABLE_S3, [$enable_s3])
|
|
|
|
AC_LANG_POP(C++)
|
|
|
|
|
2017-12-22 11:05:13 +00:00
|
|
|
if test -n "$enable_s3"; then
|
2018-12-30 01:32:29 +00:00
|
|
|
aws_version_tokens="$(printf '#include <aws/core/VersionConfig.h>\nAWS_SDK_VERSION_STRING' | $CPP $CPPFLAGS - | grep -v '^#.*' | sed 's/"//g' | tr '.' ' ')"
|
|
|
|
aws_major_version="$(awk -v ver="${aws_version_tokens}" '{print $1}')"
|
|
|
|
aws_minor_version="$(awk -v ver="${aws_version_tokens}" '{print $2}')"
|
|
|
|
AC_DEFINE_UNQUOTED([AWS_VERSION_MAJOR], ${aws_major_version}, [Major version of aws-sdk-cpp.])
|
|
|
|
AC_DEFINE_UNQUOTED([AWS_VERSION_MINOR], ${aws_minor_version}, [Minor 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.
|
2010-10-29 14:00:47 +00:00
|
|
|
AC_ARG_ENABLE(gc, AC_HELP_STRING([--enable-gc],
|
2012-05-10 23:03:23 +00:00
|
|
|
[enable garbage collection in the Nix expression evaluator (requires Boehm GC) [default=no]]),
|
2012-01-04 12:45:40 +00:00
|
|
|
gc=$enableval, gc=no)
|
|
|
|
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
|
|
|
|
2006-05-31 11:50:14 +00:00
|
|
|
|
2016-09-20 14:31:23 +00:00
|
|
|
# documentation generation switch
|
|
|
|
AC_ARG_ENABLE(doc-gen, AC_HELP_STRING([--disable-doc-gen],
|
|
|
|
[disable documentation generation]),
|
|
|
|
doc_generate=$enableval, doc_generate=yes)
|
|
|
|
AC_SUBST(doc_generate)
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
|
|
|
2012-03-18 22:54:57 +00:00
|
|
|
# This is needed if bzip2 is a static library, and the Nix libraries
|
|
|
|
# are dynamic.
|
2005-09-21 11:12:43 +00:00
|
|
|
if test "$(uname)" = "Darwin"; then
|
2006-05-31 11:50:14 +00:00
|
|
|
LDFLAGS="-all_load $LDFLAGS"
|
2005-09-21 11:12:43 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
|
2012-01-11 15:41:42 +00:00
|
|
|
# Figure out the extension of dynamic libraries.
|
|
|
|
eval dynlib_suffix=$shrext_cmds
|
|
|
|
AC_SUBST(dynlib_suffix)
|
|
|
|
|
|
|
|
|
2012-08-01 20:42:51 +00:00
|
|
|
# Do we have GNU tar?
|
2012-09-14 14:18:27 +00:00
|
|
|
AC_MSG_CHECKING([if you have a recent GNU tar])
|
2012-10-10 09:10:28 +00:00
|
|
|
if $tar --version 2> /dev/null | grep -q GNU && tar cvf /dev/null --warning=no-timestamp ./config.log > /dev/null; then
|
2012-08-01 20:42:51 +00:00
|
|
|
AC_MSG_RESULT(yes)
|
|
|
|
tarFlags="--warning=no-timestamp"
|
|
|
|
else
|
|
|
|
AC_MSG_RESULT(no)
|
|
|
|
fi
|
|
|
|
AC_SUBST(tarFlags)
|
|
|
|
|
|
|
|
|
2017-05-15 15:30:33 +00:00
|
|
|
AC_ARG_WITH(sandbox-shell, AC_HELP_STRING([--with-sandbox-shell=PATH],
|
|
|
|
[path of a statically-linked shell to use as /bin/sh in sandboxes]),
|
|
|
|
sandbox_shell=$withval)
|
|
|
|
AC_SUBST(sandbox_shell)
|
|
|
|
|
|
|
|
|
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
|
2018-12-30 01:32:29 +00:00
|
|
|
for _ in 1 2 3; do
|
|
|
|
if printf '%s' "${name}" | egrep '^[_[:alpha:]][_[:alnum:]]*$'
|
|
|
|
then
|
|
|
|
eval "${name}"="$(eval echo "\${${name}}")"
|
|
|
|
fi
|
|
|
|
done
|
2013-11-25 15:51:22 +00:00
|
|
|
done
|
|
|
|
|
2014-09-22 10:50:38 +00:00
|
|
|
rm -f Makefile.config
|
|
|
|
|
2013-11-22 19:30:24 +00:00
|
|
|
AC_CONFIG_HEADER([config.h])
|
2013-11-25 10:56:14 +00:00
|
|
|
AC_CONFIG_FILES([])
|
2003-04-08 15:36:54 +00:00
|
|
|
AC_OUTPUT
|