diff options
Diffstat (limited to '')
-rw-r--r-- | configure.ac | 254 |
1 files changed, 254 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..8bda61b --- /dev/null +++ b/configure.ac @@ -0,0 +1,254 @@ +AC_PREREQ([2.69]) + +AC_INIT([dnsdist], [1.8.3]) +AM_INIT_AUTOMAKE([foreign tar-ustar dist-bzip2 no-dist-gzip parallel-tests 1.11 subdir-objects]) +AM_SILENT_RULES([yes]) +AC_CONFIG_MACRO_DIR([m4]) +AC_CONFIG_HEADERS([config.h]) +AC_PROG_CC +AC_PROG_CXX +AC_LANG([C++]) + +AC_DEFINE([DNSDIST], [1], + [This is dnsdist] +) + +LT_PREREQ([2.2.2]) +LT_INIT([disable-static]) + +CFLAGS="-g -O3 -Wall -Wextra -Wshadow -Wno-unused-parameter -fvisibility=hidden $CFLAGS" +CXXFLAGS="-g -O3 -Wall -Wextra -Wshadow -Wno-unused-parameter -Wmissing-declarations -Wredundant-decls -fvisibility=hidden $CXXFLAGS" + +PDNS_WITH_LIBSODIUM +PDNS_CHECK_DNSTAP([auto]) +PDNS_CHECK_RAGEL([dnslabeltext.cc], [www.dnsdist.org]) +PDNS_WITH_LIBEDIT +PDNS_CHECK_CLOCK_GETTIME + +PDNS_CHECK_OS +PTHREAD_SET_NAME +PDNS_CHECK_NETWORK_LIBS +PDNS_CHECK_PTHREAD_NP +PDNS_CHECK_SECURE_MEMSET +AC_FUNC_STRERROR_R + +BOOST_REQUIRE([1.42]) + +PDNS_ENABLE_UNIT_TESTS +PDNS_WITH_RE2 +DNSDIST_ENABLE_DNSCRYPT +PDNS_WITH_EBPF +PDNS_WITH_NET_SNMP +PDNS_WITH_LIBCAP + +AX_AVAILABLE_SYSTEMD +AX_CHECK_SYSTEMD_FEATURES +AM_CONDITIONAL([HAVE_SYSTEMD], [ test x"$systemd" = "xy" ]) +PDNS_WITH_SERVICE_USER([dnsdist]) + +dnl the *_r functions are in posix so we can use them unconditionally, but the ext/yahttp code is +dnl using the defines. +AC_CHECK_FUNCS_ONCE([localtime_r gmtime_r getrandom]) +AC_SUBST([YAHTTP_CFLAGS], ['-I$(top_srcdir)/ext/yahttp']) +AC_SUBST([YAHTTP_LIBS], ['$(top_builddir)/ext/yahttp/yahttp/libyahttp.la']) +AC_SUBST([IPCRYPT_CFLAGS], ['-I$(top_srcdir)/ext/ipcrypt']) +AC_SUBST([IPCRYPT_LIBS], ['$(top_builddir)/ext/ipcrypt/libipcrypt.la']) + +PDNS_WITH_LUA([mandatory]) +AS_IF([test "x$LUAPC" = "xluajit"], [ + # export all symbols with default visibility, to be able to use the Lua FFI interface + AC_MSG_NOTICE([Adding -rdynamic to export all symbols for the Lua FFI interface]) + LDFLAGS="$LDFLAGS -rdynamic" +]) +PDNS_CHECK_LUA_HPP + +AM_CONDITIONAL([HAVE_GNUTLS], [false]) +AM_CONDITIONAL([HAVE_LIBSSL], [false]) +AM_CONDITIONAL([HAVE_LMDB], [false]) +AM_CONDITIONAL([HAVE_CDB], [false]) + +PDNS_CHECK_LIBCRYPTO + +DNSDIST_ENABLE_TLS_PROVIDERS + +PDNS_ENABLE_DNS_OVER_TLS +DNSDIST_ENABLE_DNS_OVER_HTTPS + +AS_IF([test "x$enable_dns_over_tls" != "xno" -o "x$enable_dns_over_https" != "xno"], [ + PDNS_WITH_LIBSSL +]) + +AS_IF([test "x$enable_dns_over_tls" != "xno"], [ + PDNS_WITH_GNUTLS + + AS_IF([test "x$HAVE_GNUTLS" != "x1" -a "x$HAVE_LIBSSL" != "x1"], [ + AC_MSG_ERROR([DNS over TLS support requested but neither GnuTLS nor OpenSSL are available]) + ]) +]) + +PDNS_CHECK_LIBH2OEVLOOP +AS_IF([test "x$enable_dns_over_https" != "xno"], [ + AS_IF([test "x$HAVE_LIBH2OEVLOOP" != "x1"], [ + AC_MSG_ERROR([DNS over HTTPS support requested but libh2o-evloop was not found]) + ]) + + AS_IF([test "x$HAVE_LIBSSL" != "x1"], [ + AC_MSG_ERROR([DNS over HTTPS support requested but OpenSSL was not found]) + ]) +]) + +PDNS_WITH_NGHTTP2 + +DNSDIST_WITH_CDB +PDNS_CHECK_LMDB +PDNS_ENABLE_IPCIPHER + +AX_CXX_COMPILE_STDCXX_17([noext], [mandatory]) + +AC_MSG_CHECKING([whether we will enable compiler security checks]) +AC_ARG_ENABLE([hardening], + [AS_HELP_STRING([--disable-hardening], [disable compiler security checks @<:@default=no@:>@])], + [enable_hardening=$enableval], + [enable_hardening=yes] +) +AC_MSG_RESULT([$enable_hardening]) + +AS_IF([test "x$enable_hardening" != "xno"], [ + AC_CC_PIE + AC_CC_STACK_PROTECTOR + AC_CC_PARAM_SSP_BUFFER_SIZE([4]) + AC_CC_D_FORTIFY_SOURCE + AC_LD_RELRO +]) + +PDNS_INIT_AUTO_VARS + +PDNS_ENABLE_SANITIZERS +PDNS_ENABLE_LTO + +PDNS_CHECK_PYTHON_VENV + +AM_CONDITIONAL([HAVE_MANPAGES], [test -e "$srcdir/dnsdist.1"]) +AM_COND_IF([HAVE_MANPAGES],[],[ + AM_COND_IF([HAVE_VENV],[],[ + AC_MSG_WARN([Python 3 and/or venv module are not available, documentation will not be built.]) + ]) +]) + +LDFLAGS="$RELRO_LDFLAGS $LDFLAGS" + +CFLAGS="$SANITIZER_FLAGS $PIE_CFLAGS $CFLAGS" +CXXFLAGS="$SANITIZER_FLAGS $PIE_CFLAGS $CXXFLAGS" + +CCVERSION=`$CC --version | head -1` +CXXVERSION=`$CXX --version | head -1` + +PROGRAM_LDFLAGS="$PIE_LDFLAGS $PROGRAM_LDFLAGS" +AC_SUBST([PROGRAM_LDFLAGS]) + +AC_SUBST([AM_CPPFLAGS], + ["AS_ESCAPE([-I$(top_builddir) -I$(top_srcdir)]) $THREADFLAGS $BOOST_CPPFLAGS"] +) + +AC_ARG_VAR(PACKAGEVERSION, [The version used in secpoll queries]) +AS_IF([test "x$PACKAGEVERSION" != "x"], + [AC_DEFINE_UNQUOTED([PACKAGEVERSION], "$PACKAGEVERSION", [Set to the package version used for secpoll])] +) + +AC_CONFIG_FILES([Makefile + ext/yahttp/Makefile + ext/yahttp/yahttp/Makefile + ext/ipcrypt/Makefile]) + +AC_OUTPUT + +AC_MSG_NOTICE([]) +AC_MSG_NOTICE([Configuration summary]) +AC_MSG_NOTICE([=====================]) +AC_MSG_NOTICE([]) +AS_IF([test "x$ac_configure_args" != "x"], + [summary_conf_opts=$ac_configure_args], + [summary_conf_opts="(no options)"] +) +AC_MSG_NOTICE([dnsdist configured with: $summary_conf_opts]) +AC_MSG_NOTICE([]) +AC_MSG_NOTICE([CC: $CC ($CCVERSION)]) +AC_MSG_NOTICE([CXX: $CXX ($CXXVERSION)]) +AC_MSG_NOTICE([LD: $LD]) +AC_MSG_NOTICE([CFLAGS: $CFLAGS]) +AC_MSG_NOTICE([CPPFLAGS: $CPPFLAGS]) +AC_MSG_NOTICE([CXXFLAGS: $CXXFLAGS]) +AC_MSG_NOTICE([LDFLAGS: $LDFLAGS]) +AC_MSG_NOTICE([LIBS: $LIBS]) +AC_MSG_NOTICE([BOOST_CPPFLAGS: $BOOST_CPPFLAGS]) +AC_MSG_NOTICE([]) +AC_MSG_NOTICE([Features enabled]) +AC_MSG_NOTICE([----------------]) +AC_MSG_NOTICE([Lua: $LUAPC]) +AC_MSG_NOTICE([Protobuf: yes]) +AS_IF([test "x$systemd" != "xn"], + [AC_MSG_NOTICE([systemd: yes])], + [AC_MSG_NOTICE([systemd: no])] +) +AS_IF([test "x$HAVE_IPCIPHER" = "x1"], + [AC_MSG_NOTICE([ipcipher: yes])], + [AC_MSG_NOTICE([ipcipher: no])] +) +AS_IF([test "x$LIBEDIT_LIBS" != "x"], + [AC_MSG_NOTICE([libedit: yes])], + [AC_MSG_NOTICE([libedit: no])] +) +AS_IF([test "x$LIBSODIUM_LIBS" != "x"], + [AC_MSG_NOTICE([libsodium: yes])], + [AC_MSG_NOTICE([libsodium: no])] +) +AS_IF([test "x$enable_dnscrypt" != "xno"], + [AC_MSG_NOTICE([DNSCrypt: yes])], + [AC_MSG_NOTICE([DNSCrypt: no])] +) +AS_IF([test "x$FSTRM_LIBS" != "x"], + [AC_MSG_NOTICE([dnstap: yes])], + [AC_MSG_NOTICE([dnstap: no])] +) +AS_IF([test "x$RE2_LIBS" != "x"], + [AC_MSG_NOTICE([re2: yes])], + [AC_MSG_NOTICE([re2: no])] +) +AS_IF([test "x$NET_SNMP_LIBS" != "x"], + [AC_MSG_NOTICE([SNMP: yes])], + [AC_MSG_NOTICE([SNMP: no])] +) +AS_IF([test "x$enable_dns_over_tls" != "xno"], + [AC_MSG_NOTICE([DNS over TLS: yes])], + [AC_MSG_NOTICE([DNS over TLS: no])] +) +AS_IF([test "x$enable_dns_over_https" != "xno"], + [AC_MSG_NOTICE([DNS over HTTPS (DoH): yes])], + [AC_MSG_NOTICE([DNS over HTTPS (DoH): no])] +) +AS_IF([test "x$enable_dns_over_tls" != "xno"], [ + AS_IF([test "x$GNUTLS_LIBS" != "x"], + [AC_MSG_NOTICE([GnuTLS: yes])], + [AC_MSG_NOTICE([GnuTLS: no])] + )] +) +AS_IF([test "x$enable_dns_over_tls" != "xno" -o "x$enable_dns_over_https" != "xno"], [ + AS_IF([test "x$LIBSSL_LIBS" != "x"], + [AC_MSG_NOTICE([OpenSSL: yes])], + [AC_MSG_NOTICE([OpenSSL: no])] + )] +) +AS_IF([test "x$NGHTTP2_LIBS" != "x"], + [AC_MSG_NOTICE([nghttp2: yes])], + [AC_MSG_NOTICE([nghttp2: no])] +) +AS_IF([test "x$CDB_LIBS" != "x"], + [AC_MSG_NOTICE([cdb: yes])], + [AC_MSG_NOTICE([cdb: no])] +) +AS_IF([test "x$LMDB_LIBS" != "x"], + [AC_MSG_NOTICE([lmdb: yes])], + [AC_MSG_NOTICE([lmdb: no])] +) + +AC_MSG_NOTICE([]) |