]> git.ipfire.org Git - thirdparty/pdns.git/blob - pdns/dnsdistdist/configure.ac
Use Python 3 in build system
[thirdparty/pdns.git] / pdns / dnsdistdist / configure.ac
1 AC_PREREQ([2.61])
2
3 AC_INIT([dnsdist], m4_esyscmd(build-aux/gen-version))
4 AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip parallel-tests 1.11 subdir-objects])
5 AM_SILENT_RULES([yes])
6 AC_CONFIG_MACRO_DIR([m4])
7 AC_CONFIG_HEADERS([config.h])
8 AC_PROG_CC
9 AC_PROG_CXX
10 AC_LANG([C++])
11 AC_GNU_SOURCE
12
13 AC_DEFINE([DNSDIST], [1],
14 [This is dnsdist]
15 )
16
17 LT_PREREQ([2.2.2])
18 LT_INIT([disable-static])
19
20 CFLAGS="-g -O3 -Wall -Wextra -Wshadow -Wno-unused-parameter $CFLAGS"
21 CXXFLAGS="-std=c++11 -g -O3 -Wall -Wextra -Wshadow -Wno-unused-parameter -Wmissing-declarations -Wredundant-decls $CXXFLAGS"
22
23 PDNS_WITH_LIBSODIUM
24 PDNS_CHECK_DNSTAP([auto])
25 PDNS_CHECK_RAGEL([dnslabeltext.cc], [www.dnsdist.org])
26 PDNS_CHECK_LIBEDIT
27 PDNS_CHECK_CLOCK_GETTIME
28
29 PDNS_CHECK_OS
30 PTHREAD_SET_NAME
31 PDNS_CHECK_NETWORK_LIBS
32 PDNS_CHECK_PTHREAD_NP
33 PDNS_CHECK_SECURE_MEMSET
34
35
36 PDNS_WITH_PROTOBUF
37
38 BOOST_REQUIRE([1.42])
39
40 PDNS_ENABLE_UNIT_TESTS
41 PDNS_WITH_RE2
42 DNSDIST_ENABLE_DNSCRYPT
43 PDNS_WITH_EBPF
44 PDNS_WITH_NET_SNMP
45 PDNS_WITH_LIBCAP
46
47 AX_AVAILABLE_SYSTEMD
48 AX_CHECK_SYSTEMD_FEATURES
49 AM_CONDITIONAL([HAVE_SYSTEMD], [ test x"$systemd" = "xy" ])
50 PDNS_WITH_SERVICE_USER([dnsdist])
51
52 dnl the *_r functions are in posix so we can use them unconditionally, but the ext/yahttp code is
53 dnl using the defines.
54 AC_CHECK_FUNCS_ONCE([localtime_r gmtime_r])
55 AC_SUBST([YAHTTP_CFLAGS], ['-I$(top_srcdir)/ext/yahttp'])
56 AC_SUBST([YAHTTP_LIBS], ['$(top_builddir)/ext/yahttp/yahttp/libyahttp.la'])
57 AC_SUBST([IPCRYPT_CFLAGS], ['-I$(top_srcdir)/ext/ipcrypt'])
58 AC_SUBST([IPCRYPT_LIBS], ['$(top_builddir)/ext/ipcrypt/libipcrypt.la'])
59
60 PDNS_WITH_LUA([mandatory])
61 AS_IF([test "x$LUAPC" = "xluajit"], [
62 # export all symbols to be able to use the Lua FFI interface
63 AC_MSG_NOTICE([Adding -rdynamic to export all symbols for the Lua FFI interface])
64 LDFLAGS="$LDFLAGS -rdynamic"
65 ])
66 PDNS_CHECK_LUA_HPP
67
68 AM_CONDITIONAL([HAVE_GNUTLS], [false])
69 AM_CONDITIONAL([HAVE_LIBSSL], [false])
70 AM_CONDITIONAL([HAVE_LMDB], [false])
71 AM_CONDITIONAL([HAVE_CDB], [false])
72
73 PDNS_CHECK_LIBCRYPTO
74
75 DNSDIST_ENABLE_DNS_OVER_TLS
76 DNSDIST_ENABLE_DNS_OVER_HTTPS
77
78 AS_IF([test "x$enable_dns_over_tls" != "xno" -o "x$enable_dns_over_https" != "xno"], [
79 DNSDIST_WITH_LIBSSL
80 ])
81
82 AS_IF([test "x$enable_dns_over_tls" != "xno"], [
83 DNSDIST_WITH_GNUTLS
84
85 AS_IF([test "x$HAVE_GNUTLS" != "x1" -a "x$HAVE_LIBSSL" != "x1"], [
86 AC_MSG_ERROR([DNS over TLS support requested but neither GnuTLS nor OpenSSL are available])
87 ])
88 ])
89
90 PDNS_CHECK_LIBH2OEVLOOP
91 AS_IF([test "x$enable_dns_over_https" != "xno"], [
92 AS_IF([test "x$HAVE_LIBH2OEVLOOP" != "x1"], [
93 AC_MSG_ERROR([DNS over HTTPS support requested but libh2o-evloop was not found])
94 ])
95
96 AS_IF([test "x$HAVE_LIBSSL" != "x1"], [
97 AC_MSG_ERROR([DNS over HTTPS support requested but OpenSSL was not found])
98 ])
99 ])
100
101 PDNS_CHECK_CDB
102 PDNS_CHECK_LMDB
103
104 AX_CXX_COMPILE_STDCXX_11([noext], [mandatory])
105
106 AC_MSG_CHECKING([whether we will enable compiler security checks])
107 AC_ARG_ENABLE([hardening],
108 [AS_HELP_STRING([--disable-hardening], [disable compiler security checks @<:@default=no@:>@])],
109 [enable_hardening=$enableval],
110 [enable_hardening=yes]
111 )
112 AC_MSG_RESULT([$enable_hardening])
113
114 AS_IF([test "x$enable_hardening" != "xno"], [
115 AC_CC_PIE
116 AC_CC_STACK_PROTECTOR
117 AC_CC_PARAM_SSP_BUFFER_SIZE([4])
118 AC_CC_D_FORTIFY_SOURCE
119 AC_LD_RELRO
120 ])
121
122 PDNS_ENABLE_SANITIZERS
123
124 PDNS_CHECK_PYTHON_VENV
125
126 AM_CONDITIONAL([HAVE_MANPAGES], [test -e "$srcdir/dnsdist.1"])
127 AM_COND_IF([HAVE_MANPAGES],[],[
128 AM_COND_IF([HAVE_VENV],[],[
129 AC_MSG_WARN([Python 3 and/or venv module are not available, documentation will not be built.])
130 ])
131 ])
132
133 LDFLAGS="$RELRO_LDFLAGS $LDFLAGS"
134
135 CFLAGS="$PIE_CFLAGS $CFLAGS"
136 CXXFLAGS="$PIE_CFLAGS $CXXFLAGS"
137
138 PROGRAM_LDFLAGS="$PIE_LDFLAGS $PROGRAM_LDFLAGS"
139 AC_SUBST([PROGRAM_LDFLAGS])
140
141 AC_SUBST([AM_CPPFLAGS],
142 ["AS_ESCAPE([-I$(top_builddir) -I$(top_srcdir)]) $THREADFLAGS $BOOST_CPPFLAGS"]
143 )
144
145 AC_ARG_VAR(PACKAGEVERSION, [The version used in secpoll queries])
146 AS_IF([test "x$PACKAGEVERSION" != "x"],
147 [AC_DEFINE_UNQUOTED([PACKAGEVERSION], "$PACKAGEVERSION", [Set to the package version used for secpoll])]
148 )
149
150 AC_CONFIG_FILES([Makefile
151 ext/yahttp/Makefile
152 ext/yahttp/yahttp/Makefile
153 ext/ipcrypt/Makefile])
154
155 AC_OUTPUT
156
157 AC_MSG_NOTICE([])
158 AC_MSG_NOTICE([Configuration summary])
159 AC_MSG_NOTICE([=====================])
160 AC_MSG_NOTICE([])
161 AS_IF([test "x$ac_configure_args" != "x"],
162 [summary_conf_opts=$ac_configure_args],
163 [summary_conf_opts="(no options)"]
164 )
165 AC_MSG_NOTICE([dnsdist configured with: $summary_conf_opts])
166 AC_MSG_NOTICE([])
167 AC_MSG_NOTICE([CC: $CC])
168 AC_MSG_NOTICE([CXX: $CXX])
169 AC_MSG_NOTICE([LD: $LD])
170 AC_MSG_NOTICE([CFLAGS: $CFLAGS])
171 AC_MSG_NOTICE([CPPFLAGS: $CPPFLAGS])
172 AC_MSG_NOTICE([CXXFLAGS: $CXXFLAGS])
173 AC_MSG_NOTICE([LDFLAGS: $LDFLAGS])
174 AC_MSG_NOTICE([LIBS: $LIBS])
175 AC_MSG_NOTICE([BOOST_CPPFLAGS: $BOOST_CPPFLAGS])
176 AC_MSG_NOTICE([])
177 AC_MSG_NOTICE([Features enabled])
178 AC_MSG_NOTICE([----------------])
179 AC_MSG_NOTICE([Lua: $LUAPC])
180 AS_IF([test "x$PROTOBUF_LIBS" != "x" -a x"$PROTOC" != "x"],
181 [AC_MSG_NOTICE([Protobuf: yes])],
182 [AC_MSG_NOTICE([Protobuf: no])]
183 )
184 AS_IF([test "x$systemd" != "xn"],
185 [AC_MSG_NOTICE([systemd: yes])],
186 [AC_MSG_NOTICE([systemd: no])]
187 )
188 AS_IF([test "x$LIBCRYPTO_LIBS" != "x"],
189 [AC_MSG_NOTICE([ipcipher: yes])],
190 [AC_MSG_NOTICE([ipcipher: no])]
191 )
192 AS_IF([test "x$LIBSODIUM_LIBS" != "x"],
193 [AC_MSG_NOTICE([libsodium: yes])],
194 [AC_MSG_NOTICE([libsodium: no])]
195 )
196 AS_IF([test "x$enable_dnscrypt" != "xno"],
197 [AC_MSG_NOTICE([DNSCrypt: yes])],
198 [AC_MSG_NOTICE([DNSCrypt: no])]
199 )
200 AS_IF([test "x$FSTRM_LIBS" != "x"],
201 [AC_MSG_NOTICE([dnstap: yes])],
202 [AC_MSG_NOTICE([dnstap: no])]
203 )
204 AS_IF([test "x$RE2_LIBS" != "x"],
205 [AC_MSG_NOTICE([re2: yes])],
206 [AC_MSG_NOTICE([re2: no])]
207 )
208 AS_IF([test "x$NET_SNMP_LIBS" != "x"],
209 [AC_MSG_NOTICE([SNMP: yes])],
210 [AC_MSG_NOTICE([SNMP: no])]
211 )
212 AS_IF([test "x$enable_dns_over_tls" != "xno"],
213 [AC_MSG_NOTICE([DNS over TLS: yes])],
214 [AC_MSG_NOTICE([DNS over TLS: no])]
215 )
216 AS_IF([test "x$enable_dns_over_https" != "xno"],
217 [AC_MSG_NOTICE([DNS over HTTPS (DoH): yes])],
218 [AC_MSG_NOTICE([DNS over HTTPS (DoH): no])]
219 )
220 AS_IF([test "x$enable_dns_over_tls" != "xno"], [
221 AS_IF([test "x$GNUTLS_LIBS" != "x"],
222 [AC_MSG_NOTICE([GnuTLS: yes])],
223 [AC_MSG_NOTICE([GnuTLS: no])]
224 )]
225 )
226 AS_IF([test "x$enable_dns_over_tls" != "xno" -o "x$enable_dns_over_https" != "xno"], [
227 AS_IF([test "x$LIBSSL_LIBS" != "x"],
228 [AC_MSG_NOTICE([OpenSSL: yes])],
229 [AC_MSG_NOTICE([OpenSSL: no])]
230 )]
231 )
232 AS_IF([test "x$CDB_LIBS" != "x"],
233 [AC_MSG_NOTICE([cdb: yes])],
234 [AC_MSG_NOTICE([cdb: no])]
235 )
236 AS_IF([test "x$LMDB_LIBS" != "x"],
237 [AC_MSG_NOTICE([lmdb: yes])],
238 [AC_MSG_NOTICE([lmdb: no])]
239 )
240
241 AC_MSG_NOTICE([])