]>
Commit | Line | Data |
---|---|---|
39653d75 RK |
1 | AC_PREREQ([2.61]) |
2 | ||
f19fe465 | 3 | AC_INIT([pdns], m4_esyscmd([builder-support/gen-version])) |
39653d75 | 4 | |
6707cb12 | 5 | AC_CONFIG_SRCDIR([pdns/receiver.cc]) |
39653d75 RK |
6 | AC_CONFIG_MACRO_DIR([m4]) |
7 | AC_CONFIG_HEADERS([config.h]) | |
8 | AC_CONFIG_AUX_DIR([build-aux]) | |
9 | ||
8c8b9197 | 10 | AC_SUBST([pdns_configure_args], ["$ac_configure_args"]) |
0060b613 RK |
11 | AC_DEFINE_UNQUOTED([PDNS_CONFIG_ARGS], |
12 | ["$pdns_configure_args"], | |
13 | [pdns configure arguments] | |
14 | ) | |
15 | ||
afbdd9f0 | 16 | AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar -Wno-portability subdir-objects parallel-tests 1.11]) |
dcf224eb | 17 | AM_SILENT_RULES([yes]) |
39653d75 | 18 | |
92a4978f | 19 | AC_CANONICAL_HOST |
46a09ebd | 20 | : ${CFLAGS="-Wall -g -O2"} |
5801cd92 | 21 | : ${CXXFLAGS="-Wall -g -O2"} |
39653d75 | 22 | |
92a4978f | 23 | AC_PROG_CC |
dd50be34 | 24 | AM_PROG_CC_C_O |
44362487 | 25 | PDNS_CHECK_BISON |
33086d97 | 26 | PDNS_CHECK_FLEX |
92a4978f BH |
27 | AC_PROG_INSTALL |
28 | AC_PROG_MAKE_SET | |
26870de7 | 29 | |
27a4e655 RK |
30 | AC_PROG_CXX |
31 | AS_IF([test "x$CXX" = "xno" || test "x$CXX:x$GXX" = "xg++:x"], | |
49983d9a | 32 | [AC_MSG_ERROR([no C++ compiler found])] |
27a4e655 RK |
33 | ) |
34 | ||
66da2833 | 35 | AC_LANG([C++]) |
92a4978f | 36 | |
f33c1fff RK |
37 | AC_DEFINE([_GNU_SOURCE], [1], |
38 | [Define _GNU_SOURCE so that we get all necessary prototypes] | |
39 | ) | |
40 | ||
ad313e37 | 41 | # Warn when pkg.m4 is missing |
8c8b9197 | 42 | m4_pattern_forbid([^_?PKG_[A-Z_]+$], [*** pkg.m4 missing, please install pkg-config]) |
ad313e37 | 43 | |
03571f7a | 44 | PDNS_CHECK_OS |
519f5484 | 45 | PTHREAD_SET_NAME |
03571f7a | 46 | |
026090e8 | 47 | PDNS_WITH_LUA |
9a927586 | 48 | PDNS_CHECK_LUA_HPP |
4f6c5ee6 | 49 | |
8c8b9197 | 50 | AX_CXX_COMPILE_STDCXX_11 |
0b61c633 T |
51 | |
52 | AC_MSG_CHECKING([whether we will enable compiler security checks]) | |
53 | AC_ARG_ENABLE([hardening], | |
8c8b9197 | 54 | [AS_HELP_STRING([--disable-hardening], [disable compiler security checks @<:@default=no@:>@])], |
0b61c633 T |
55 | [enable_hardening=$enableval], |
56 | [enable_hardening=yes] | |
57 | ) | |
58 | AC_MSG_RESULT([$enable_hardening]) | |
59 | ||
c77252b6 RK |
60 | AS_IF([test "x$enable_hardening" != "xno"], [ |
61 | AC_CC_PIE | |
62 | AC_CC_STACK_PROTECTOR | |
63 | AC_CC_PARAM_SSP_BUFFER_SIZE([4]) | |
64 | AC_CC_D_FORTIFY_SOURCE | |
65 | AC_LD_RELRO | |
66 | ]) | |
d6e5e940 | 67 | |
e97cb679 AT |
68 | PDNS_ENABLE_KISS |
69 | ||
020b39f3 | 70 | PDNS_CHECK_NETWORK_LIBS |
9d44a523 | 71 | |
28bb0d13 | 72 | LT_PREREQ([2.2.2]) |
a596b8e9 | 73 | LT_INIT([disable-static dlopen]) |
59414d0e | 74 | |
d6e5e940 | 75 | |
96ae9a2e KM |
76 | MC_TM_GMTOFF |
77 | ||
0949b8ae CH |
78 | # Define full_libdir to be the fully expanded (${exec_prefix}, etc.) |
79 | # "system" library path. | |
80 | # We use this to search for other libraries. | |
81 | eval full_libdir="\"$libdir\"" | |
39653d75 | 82 | |
27fe16bd RK |
83 | # detect pkg-config explicitly |
84 | PKG_PROG_PKG_CONFIG | |
85 | ||
709ca59f AT |
86 | AC_CHECK_HEADERS( |
87 | [sys/mman.h], | |
88 | [AC_CHECK_FUNC( | |
89 | [mmap], | |
90 | [AC_DEFINE(HAVE_MMAP, [1], [Define to 1 if you have mmap])], | |
91 | [have_mmap=no] | |
92 | )], | |
93 | [have_mmap=no] | |
94 | ) | |
95 | ||
cb264691 | 96 | PDNS_WITH_LIBSODIUM |
ee89ca58 | 97 | PDNS_WITH_LIBDECAF |
74d83458 | 98 | PDNS_CHECK_LIBCRYPTO([ |
df85a9a0 | 99 | ],[ |
74d83458 | 100 | AC_MSG_ERROR([OpenSSL/libcrypto not found]) |
df85a9a0 | 101 | ] |
7581a35b | 102 | ) |
74d83458 | 103 | PDNS_CHECK_LIBCRYPTO_ECDSA |
439974d7 | 104 | PDNS_CHECK_LIBCRYPTO_EDDSA |
1d026a23 | 105 | |
29e13421 | 106 | PDNS_CHECK_RAGEL([pdns/dnslabeltext.cc], [www.powerdns.com]) |
bcd17c71 | 107 | PDNS_CHECK_CLOCK_GETTIME |
d81a3e14 | 108 | |
94ac5f34 | 109 | BOOST_REQUIRE([1.35]) |
6cedc26d RG |
110 | # Boost accumulators, as used by dnsbulktest and dnstcpbench, need 1.48+ |
111 | # to be compatible with C++11 | |
112 | AM_CONDITIONAL([HAVE_BOOST_GE_148], [test "$boost_major_version" -ge 148]) | |
2b962740 RG |
113 | AS_IF([test "$boost_major_version" -ge 148], [ |
114 | AC_DEFINE(HAVE_BOOST_GE_148, [1], [Define to 1 if you have boost >= 1.48]) | |
115 | ]) | |
6cedc26d | 116 | |
94ac5f34 | 117 | BOOST_PROGRAM_OPTIONS([mt]) |
b2ab38c3 PL |
118 | AS_IF([test "$boost_cv_lib_program_options" = "no"], [ |
119 | AC_MSG_ERROR([Boost Program Options library not found]) | |
120 | ]) | |
fedea66a | 121 | PDNS_ENABLE_UNIT_TESTS |
662d9972 | 122 | PDNS_ENABLE_BACKEND_UNIT_TESTS |
5e6a3d93 | 123 | PDNS_ENABLE_REPRODUCIBLE |
af6f3d53 | 124 | PDNS_ENABLE_FUZZ_TARGETS |
051f0aaa | 125 | |
13305eb1 | 126 | PDNS_WITH_SQLITE3 |
32869e14 | 127 | |
0e2063c3 | 128 | PDNS_CHECK_VIRTUALENV |
154fd082 | 129 | PDNS_FROM_GIT |
e9046dbc | 130 | |
92a4978f | 131 | dnl Checks for library functions. |
8d5ca609 | 132 | AC_CHECK_FUNCS_ONCE([strcasestr localtime_r recvmmsg getrandom arc4random]) |
4ab95bea RK |
133 | |
134 | AM_CONDITIONAL([HAVE_RECVMMSG], [test "x$ac_cv_func_recvmmsg" = "xyes"]) | |
92a4978f | 135 | |
b6be1d3b RK |
136 | AS_IF([test "x$lt_cv_dlopen" = "xno"], |
137 | [AC_MSG_ERROR([Your system does not support dlopen])] | |
138 | ) | |
139 | ||
a596b8e9 | 140 | AC_SUBST([LIBDL], [$lt_cv_dlopen_libs]) |
92a4978f | 141 | |
8ffe1c55 | 142 | PDNS_ENABLE_VERBOSE_LOGGING |
8daea594 | 143 | PDNS_ENABLE_PKCS11 |
fcc4170a | 144 | PDNS_ENABLE_GSS_TSIG |
a7db8aa6 | 145 | |
87ddd1b1 PL |
146 | AC_SUBST([socketdir]) |
147 | socketdir="/var/run" | |
148 | AC_ARG_WITH([socketdir], | |
149 | [AS_HELP_STRING([--with-socketdir], [where the controlsocket lives @<:@default=/var/run@:>@])], | |
150 | [socketdir="$withval"] | |
151 | ) | |
152 | ||
a7285d5a | 153 | modules="bind gmysql random" |
39653d75 | 154 | AC_ARG_WITH([modules], |
8c8b9197 | 155 | [AS_HELP_STRING([--with-modules], [which backends to compile with @<:@default=bind gmysql random@:>@])], |
39653d75 RK |
156 | [modules="$withval"] |
157 | ) | |
92a4978f BH |
158 | |
159 | dynmodules="pipe" | |
39653d75 | 160 | AC_ARG_WITH([dynmodules], |
8c8b9197 | 161 | [AS_HELP_STRING([--with-dynmodules], [which backends to build for dynamic loading @<:@default=pipe@:>@])], |
39653d75 RK |
162 | [dynmodules="$withval"] |
163 | ) | |
92a4978f | 164 | |
8c8b9197 RK |
165 | AC_SUBST([moduledirs]) |
166 | AC_SUBST([moduleobjects]) | |
167 | AC_SUBST([modulelibs]) | |
168 | AC_DEFINE_UNQUOTED([PDNS_MODULES], "$modules", [Built-in modules]) | |
92a4978f | 169 | |
87ddd1b1 PL |
170 | AS_IF([test x"$modules" = "xno"], [modules=""]) |
171 | AS_IF([test x"$dynmodules" = "xno"], [dynmodules=""]) | |
26870de7 | 172 | |
39653d75 RK |
173 | for a in $modules $dynmodules; do |
174 | case "$a" in | |
175 | oracle|goracle) | |
176 | PDNS_WITH_ORACLE | |
177 | needoracle=yes | |
178 | ;; | |
4f983d1b PD |
179 | godbc) |
180 | PDNS_WITH_UNIXODBC | |
181 | ;; | |
75a8642f | 182 | mydns|gmysql) |
39653d75 RK |
183 | PDNS_WITH_MYSQL |
184 | ;; | |
185 | gpgsql) | |
186 | PDNS_WITH_POSTGRESQL | |
187 | ;; | |
188 | gsqlite3) | |
189 | needsqlite3=yes | |
190 | ;; | |
191 | ldap) | |
192 | PDNS_CHECK_LDAP | |
b63843d9 | 193 | needldap=yes |
39653d75 RK |
194 | ;; |
195 | opendbx) | |
196 | PDNS_CHECK_OPENDBX | |
197 | ;; | |
e29ece13 | 198 | remote) |
98540f9f T |
199 | AS_IF([test "x$enable_unit_tests" = "xyes"], |
200 | [PDNS_CHECK_CURL_PROGRAM] | |
201 | ) | |
e29ece13 T |
202 | have_remotebackend=yes |
203 | ;; | |
39653d75 RK |
204 | tinydns) |
205 | PDNS_CHECK_CDB | |
206 | ;; | |
709ca59f AT |
207 | geoip) |
208 | PDNS_CHECK_GEOIP | |
209 | ;; | |
5cd429ec | 210 | lua*) |
a20adc10 | 211 | AS_IF([test "x$with_lua" = "xno"], |
5cd429ec | 212 | [AC_MSG_ERROR([${a} backend needs lua, run ./configure --with-lua])] |
a20adc10 | 213 | ) |
026090e8 | 214 | AS_IF([test "x$LUAPC" = "x"], |
5cd429ec | 215 | [AC_MSG_ERROR([${a} backend needs lua but we cannot find it])] |
a20adc10 RK |
216 | ) |
217 | ;; | |
42f1f726 | 218 | lmdb) |
219 | PDNS_CHECK_LMDB | |
220 | BOOST_SERIALIZATION | |
221 | ;; | |
39653d75 | 222 | esac |
92a4978f BH |
223 | done |
224 | ||
e29ece13 T |
225 | PDNS_ENABLE_REMOTEBACKEND_ZEROMQ |
226 | ||
87ddd1b1 PL |
227 | AC_MSG_CHECKING([whether we will be building and installing the extra tools]) |
228 | AC_ARG_ENABLE([tools], | |
229 | [AS_HELP_STRING([--enable-tools], [if we should build and install the tools @<:@default=no@:>@])], | |
230 | [enable_tools=$enableval], | |
231 | [enable_tools=no] | |
232 | ) | |
233 | ||
234 | AC_MSG_RESULT([$enable_tools]) | |
235 | AM_CONDITIONAL([TOOLS], [test "x$enable_tools" != "xno"]) | |
ca28add0 | 236 | PDNS_ENABLE_IXFRDIST |
87ddd1b1 PL |
237 | |
238 | PDNS_WITH_PROTOBUF | |
239 | ||
8900e2e3 | 240 | PDNS_WITH_LUA_RECORDS |
87ddd1b1 | 241 | |
8c8b9197 | 242 | AM_CONDITIONAL([ORACLE], [test "x$needoracle" = "xyes"]) |
39653d75 | 243 | |
8c8b9197 | 244 | AM_CONDITIONAL([LDAP], [test "x$needldap" = "xyes"]) |
b63843d9 | 245 | |
13305eb1 | 246 | PDNS_CHECK_SQLITE3 |
39653d75 | 247 | AM_CONDITIONAL([SQLITE3], [test "x$needsqlite3" = "xyes"]) |
64e3aade | 248 | |
39653d75 | 249 | for a in $modules; do |
8a32d90d T |
250 | AC_MSG_CHECKING([whether we can build module "${a}"]) |
251 | if [[ -d "$srcdir/modules/${a}backend" ]]; then | |
252 | AC_MSG_RESULT([yes]) | |
253 | moduledirs="$moduledirs ${a}backend" | |
254 | ||
255 | for b in `cat $srcdir/modules/${a}backend/OBJECTFILES`; do | |
256 | moduleobjects="$moduleobjects ../modules/${a}backend/$b" | |
257 | done | |
258 | modulelibs="$modulelibs `cat $srcdir/modules/${a}backend/OBJECTLIBS`" | |
259 | else | |
260 | AC_MSG_RESULT([no]) | |
a59ccf7a | 261 | AC_MSG_ERROR([Do not know how to build module "$a", "$srcdir/modules/${a}backend" does not exist! Please review --with-modules parameter for supported values.]) |
8a32d90d | 262 | fi |
92a4978f BH |
263 | done |
264 | ||
39653d75 | 265 | for a in $dynmodules; do |
09acf546 T |
266 | AC_MSG_CHECKING([whether we can build dynamic module "${a}"]) |
267 | if [[ -d "$srcdir/modules/${a}backend" ]]; then | |
268 | AC_MSG_RESULT([yes]) | |
269 | moduledirs="$moduledirs ${a}backend" | |
270 | else | |
271 | AC_MSG_RESULT([no]) | |
a59ccf7a | 272 | AC_MSG_ERROR([Do not know how to build module "$a", "$srcdir/modules/${a}backend" does not exist! Please review --with-dynmodules parameter for supported values.]) |
09acf546 | 273 | fi |
92a4978f BH |
274 | done |
275 | ||
6988eae9 | 276 | AX_AVAILABLE_SYSTEMD |
a3dfb540 | 277 | AX_CHECK_SYSTEMD_FEATURES |
6988eae9 PL |
278 | AM_CONDITIONAL([HAVE_SYSTEMD], [ test x"$systemd" = "xy" ]) |
279 | ||
3cc618c5 | 280 | LDFLAGS="$RELRO_LDFLAGS $LDFLAGS" |
d6e5e940 | 281 | |
b0e68161 RK |
282 | CFLAGS="$PIE_CFLAGS $CFLAGS" |
283 | CXXFLAGS="$PIE_CFLAGS $CXXFLAGS" | |
284 | PROGRAM_LDFLAGS="$PIE_LDFLAGS $PROGRAM_LDFLAGS" | |
b2053c28 | 285 | AC_SUBST([PROGRAM_LDFLAGS]) |
62e6530a | 286 | |
366c610a | 287 | PDNS_ENABLE_COVERAGE |
4c69af87 | 288 | PDNS_ENABLE_SANITIZERS |
8f7473d7 | 289 | PDNS_ENABLE_MALLOC_TRACE |
62e6530a | 290 | |
92a4978f BH |
291 | AC_SUBST(LIBS) |
292 | ||
aa357125 RK |
293 | AC_SUBST([AM_CPPFLAGS], |
294 | ["AS_ESCAPE([-I$(top_builddir) -I$(top_srcdir)]) $THREADFLAGS $BOOST_CPPFLAGS"] | |
295 | ) | |
bf491b87 | 296 | |
d4cc4c4a | 297 | AC_SUBST([YAHTTP_CFLAGS], ['-I$(top_srcdir)/ext/yahttp']) |
23448838 | 298 | AC_SUBST([YAHTTP_LIBS], ['$(top_builddir)/ext/yahttp/yahttp/libyahttp.la']) |
1f974019 | 299 | |
4c69af87 RK |
300 | CXXFLAGS="$SANITIZER_FLAGS $CXXFLAGS" |
301 | ||
8c8b9197 | 302 | AC_ARG_VAR(PACKAGEVERSION, [The version used in secpoll queries]) |
722ac035 RK |
303 | AS_IF([test "x$PACKAGEVERSION" != "x"], |
304 | [AC_DEFINE_UNQUOTED([PACKAGEVERSION], "$PACKAGEVERSION", [Set to the package version used for secpoll])] | |
305 | ) | |
306 | ||
d9a44db5 | 307 | export moduledirs moduleobjects modulelibs |
e9046dbc | 308 | |
39653d75 RK |
309 | AC_CONFIG_FILES([ |
310 | Makefile | |
311 | modules/Makefile | |
312 | pdns/Makefile | |
313 | codedocs/Makefile | |
21557318 | 314 | docs/Makefile |
cd42e98f | 315 | pdns/pdns.init |
d4cc4c4a | 316 | ext/Makefile |
d4cc4c4a RK |
317 | ext/yahttp/Makefile |
318 | ext/yahttp/yahttp/Makefile | |
76c758c4 | 319 | ext/json11/Makefile |
39653d75 | 320 | modules/bindbackend/Makefile |
709ca59f | 321 | modules/geoipbackend/Makefile |
39653d75 | 322 | modules/gmysqlbackend/Makefile |
4f983d1b | 323 | modules/godbcbackend/Makefile |
39653d75 RK |
324 | modules/goraclebackend/Makefile |
325 | modules/gpgsqlbackend/Makefile | |
326 | modules/gsqlite3backend/Makefile | |
327 | modules/ldapbackend/Makefile | |
42f1f726 | 328 | modules/lmdbbackend/Makefile |
39653d75 | 329 | modules/luabackend/Makefile |
63c1a37c | 330 | modules/lua2backend/Makefile |
39653d75 RK |
331 | modules/mydnsbackend/Makefile |
332 | modules/opendbxbackend/Makefile | |
333 | modules/oraclebackend/Makefile | |
334 | modules/pipebackend/Makefile | |
335 | modules/randombackend/Makefile | |
336 | modules/remotebackend/Makefile | |
337 | modules/tinydnsbackend/Makefile | |
338 | ]) | |
6867a5ad | 339 | AC_OUTPUT |
39653d75 | 340 | |
06d0f550 RK |
341 | AC_MSG_NOTICE([]) |
342 | AC_MSG_NOTICE([Configuration summary]) | |
343 | AC_MSG_NOTICE([=====================]) | |
344 | AC_MSG_NOTICE([]) | |
b43b4a67 | 345 | AC_MSG_NOTICE([Configured with: $pdns_configure_args]) |
80b2fad2 | 346 | AC_MSG_NOTICE([]) |
06d0f550 RK |
347 | AC_MSG_NOTICE([CC: $CC]) |
348 | AC_MSG_NOTICE([CXX: $CXX]) | |
349 | AC_MSG_NOTICE([LD: $LD]) | |
350 | AC_MSG_NOTICE([CFLAGS: $CFLAGS]) | |
351 | AC_MSG_NOTICE([CPPFLAGS: $CPPFLAGS]) | |
352 | AC_MSG_NOTICE([CXXFLAGS: $CXXFLAGS]) | |
353 | AC_MSG_NOTICE([LDFLAGS: $LDFLAGS]) | |
ea80a933 | 354 | AC_MSG_NOTICE([LIBS: $LIBS]) |
19cedc4b | 355 | AC_MSG_NOTICE([BOOST_CPPFLAGS: $BOOST_CPPFLAGS]) |
19cedc4b | 356 | AC_MSG_NOTICE([]) |
b43b4a67 PL |
357 | AC_MSG_NOTICE([Features enabled]) |
358 | AC_MSG_NOTICE([----------------]) | |
359 | AC_MSG_NOTICE([Built-in modules: $modules]) | |
360 | AC_MSG_NOTICE([Dynamic modules: $dynmodules]) | |
361 | AC_MSG_NOTICE([]) | |
8189c881 | 362 | AS_IF([test "x$libcrypto_ecdsa" = "xyes"], |
b43b4a67 PL |
363 | [AC_MSG_NOTICE([OpenSSL ecdsa: yes])], |
364 | [AC_MSG_NOTICE([OpenSSL ecdsa: no])] | |
de4e1d0d | 365 | ) |
439974d7 | 366 | AS_IF([test "x$LIBSODIUM_LIBS" != "x" || test "x$LIBDECAF_LIBS" != "x" || test "x$libcrypto_ed25519" = "xyes"], |
21a8834a KM |
367 | [AC_MSG_NOTICE([ed25519: yes])], |
368 | [AC_MSG_NOTICE([ed25519: no])] | |
369 | ) | |
439974d7 | 370 | AS_IF([test "x$LIBDECAF_LIBS" != "x" || test "x$libcrypto_ed448" = "xyes"], |
21a8834a KM |
371 | [AC_MSG_NOTICE([ed448: yes])], |
372 | [AC_MSG_NOTICE([ed448: no])] | |
a613e8b6 | 373 | ) |
786d771e | 374 | AS_IF([test "x$needsqlite3" != "x"], |
b43b4a67 PL |
375 | [AC_MSG_NOTICE([SQLite3: yes])], |
376 | [AC_MSG_NOTICE([SQLite3: no])] | |
786d771e | 377 | ) |
c92ada53 | 378 | AS_IF([test "x$LUAPC" != "x"], |
b43b4a67 PL |
379 | [AC_MSG_NOTICE([Lua: $LUAPC])], |
380 | [AS_IF([test "x$LUAJITPC" != "x"], | |
381 | [AC_MSG_NOTICE([LuaJit: $LUAJITPC])], | |
382 | [AC_MSG_NOTICE([Lua/LuaJit: no])]) | |
383 | ]) | |
91bc549f PL |
384 | AS_IF([test "x$enable_experimental_pkcs11" = "xyes"], |
385 | [AC_MSG_NOTICE([PKCS-11: yes])] | |
386 | ) | |
df27c113 | 387 | AS_IF([test "x$enable_experimental_gss_tsig" = "xyes"], |
b43b4a67 PL |
388 | [AC_MSG_NOTICE([GSS-TSIG: yes])] |
389 | ) | |
390 | AS_IF([test "x$systemd" != "xn"], | |
391 | [AC_MSG_NOTICE([systemd: yes])], | |
392 | [AC_MSG_NOTICE([systemd: no])] | |
393 | ) | |
394 | AS_IF([test "x$enable_remotebackend_zeromq" != "xno"], | |
395 | [AC_MSG_NOTICE([ZeroMQ connector for remotebackend: yes])] | |
fcc4170a | 396 | ) |
06d0f550 | 397 | AC_MSG_NOTICE([]) |