]> git.ipfire.org Git - thirdparty/pdns.git/blame - configure.ac
Merge pull request #2494 from pieterlexis/to-sh-and-beyond
[thirdparty/pdns.git] / configure.ac
CommitLineData
39653d75
RK
1AC_PREREQ([2.61])
2
ba1a571d
CH
3dnl The following lines may be patched by set-version-auth.
4AC_INIT([pdns], [git])
5dnl AC_SUBST([DIST_HOST], [TO_BE_PATCHED])
6dnl End patch area.
39653d75 7
6707cb12 8AC_CONFIG_SRCDIR([pdns/receiver.cc])
39653d75
RK
9AC_CONFIG_MACRO_DIR([m4])
10AC_CONFIG_HEADERS([config.h])
11AC_CONFIG_AUX_DIR([build-aux])
12
0060b613
RK
13AC_SUBST([pdns_configure_args],["$ac_configure_args"])
14AC_DEFINE_UNQUOTED([PDNS_CONFIG_ARGS],
15 ["$pdns_configure_args"],
16 [pdns configure arguments]
17)
18
afbdd9f0 19AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar -Wno-portability subdir-objects parallel-tests 1.11])
dcf224eb 20AM_SILENT_RULES([yes])
39653d75 21
92a4978f 22AC_CANONICAL_HOST
46a09ebd 23: ${CFLAGS="-Wall -g -O2"}
5801cd92 24: ${CXXFLAGS="-Wall -g -O2"}
39653d75 25
92a4978f 26AC_PROG_CC
dd50be34 27AM_PROG_CC_C_O
44362487 28PDNS_CHECK_BISON
33086d97 29PDNS_CHECK_FLEX
92a4978f
BH
30AC_PROG_INSTALL
31AC_PROG_MAKE_SET
26870de7 32
33
27a4e655
RK
34AC_PROG_CXX
35AS_IF([test "x$CXX" = "xno" || test "x$CXX:x$GXX" = "xg++:x"],
36 AC_MSG_ERROR([no C++ compiler found])
37)
38
66da2833 39AC_LANG([C++])
92a4978f 40
f33c1fff
RK
41AC_DEFINE([_GNU_SOURCE], [1],
42 [Define _GNU_SOURCE so that we get all necessary prototypes]
43)
44
ad313e37
RK
45# Warn when pkg.m4 is missing
46m4_pattern_forbid([^_?PKG_[A-Z_]+$],[*** pkg.m4 missing, please install pkg-config])
47
4f6c5ee6
RK
48PDNS_WITH_LUAJIT
49AS_IF([test "x$with_luajit" = "xno"], [
50 PDNS_WITH_LUA
51])
52
d064abb1 53AX_CXX_COMPILE_STDCXX_11()
0b61c633
T
54
55AC_MSG_CHECKING([whether we will enable compiler security checks])
56AC_ARG_ENABLE([hardening],
57 [AS_HELP_STRING([--disable-hardening],[disable compiler security checks @<:@default=no@:>@])],
58 [enable_hardening=$enableval],
59 [enable_hardening=yes]
60)
61AC_MSG_RESULT([$enable_hardening])
62
c77252b6
RK
63AS_IF([test "x$enable_hardening" != "xno"], [
64 AC_CC_PIE
65 AC_CC_STACK_PROTECTOR
66 AC_CC_PARAM_SSP_BUFFER_SIZE([4])
67 AC_CC_D_FORTIFY_SOURCE
68 AC_LD_RELRO
69])
d6e5e940 70
3bdd9625
RK
71AC_SEARCH_LIBS([socket], [socket])
72AC_SEARCH_LIBS([gethostent], [nsl])
73AC_SEARCH_LIBS([inet_aton], [resolv])
9d44a523 74
28bb0d13 75LT_PREREQ([2.2.2])
a596b8e9 76LT_INIT([disable-static dlopen])
59414d0e 77
d6e5e940 78
96ae9a2e
KM
79MC_TM_GMTOFF
80
39653d75
RK
81AM_CONDITIONAL([RELEASE_BUILD], [test "$PACKAGE_VERSION" != "git"])
82
0949b8ae
CH
83# Define full_libdir to be the fully expanded (${exec_prefix}, etc.)
84# "system" library path.
85# We use this to search for other libraries.
86eval full_libdir="\"$libdir\""
39653d75 87
27fe16bd
RK
88# detect pkg-config explicitly
89PKG_PROG_PKG_CONFIG
90
a49b3356
RK
91# check if we want a static build
92AC_MSG_CHECKING([whether we will be building static binaries])
93
94AC_ARG_ENABLE([static-binaries],
95 [AS_HELP_STRING([--enable-static-binaries],[build static binaries @<:@default=no@:>@])],
96 [static=$enableval],
97 [static=no],
98)
99AC_MSG_RESULT([$static])
100
101AS_IF([test "x$static" != "xno"], [
102 PKG_CONFIG="$PKG_CONFIG --static"
103])
104
709ca59f
AT
105AC_CHECK_HEADERS(
106 [sys/mman.h],
107 [AC_CHECK_FUNC(
108 [mmap],
109 [AC_DEFINE(HAVE_MMAP, [1], [Define to 1 if you have mmap])],
110 [have_mmap=no]
111 )],
112 [have_mmap=no]
113)
114
1d026a23 115
af32e666 116PDNS_CHECK_READLINE
e3881b46 117PDNS_CHECK_RAGEL
7b61d6f3 118PDNS_CHECK_LIBSODIUM
d81a3e14 119
94ac5f34
PD
120BOOST_REQUIRE([1.35])
121BOOST_FOREACH
122BOOST_PROGRAM_OPTIONS([mt])
123BOOST_SERIALIZATION([mt])
051f0aaa 124
fedea66a 125PDNS_ENABLE_UNIT_TESTS
051f0aaa 126
13305eb1 127PDNS_WITH_SQLITE3
32869e14 128
e9046dbc
PL
129PDNS_CHECK_PANDOC
130PDNS_CHECK_MKDOCS
b43f4f8a 131PDNS_CHECK_LINKCHECKER
e9046dbc 132
92a4978f 133dnl Checks for library functions.
f50617c9 134AC_CHECK_FUNCS_ONCE([strcasestr localtime_r])
92a4978f 135
b6be1d3b
RK
136AS_IF([test "x$lt_cv_dlopen" = "xno"],
137 [AC_MSG_ERROR([Your system does not support dlopen])]
138)
139
a596b8e9 140AC_SUBST([LIBDL], [$lt_cv_dlopen_libs])
92a4978f 141
92a4978f
BH
142THREADFLAGS=""
143
144case "$host_os" in
145solaris2.10)
29403f48 146 LIBS="-lposix4 -lpthread -lrt $LIBS"
39653d75 147 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
d4c30a75 148 have_solaris="yes"
39653d75 149 ;;
be1bd362 150solaris2.8 | solaris2.9 )
39653d75
RK
151 AC_DEFINE(NEED_POSIX_TYPEDEF,,[If POSIX typedefs need to be defined])
152 AC_DEFINE(NEED_INET_NTOP_PROTO,,[If your OS is so broken that it needs an additional prototype])
29403f48 153 LIBS="-lposix4 -lpthread $LIBS"
39653d75 154 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
d4c30a75 155 have_solaris="yes"
39653d75 156 ;;
92a4978f 157linux*)
39653d75 158 THREADFLAGS="-pthread"
df72c277 159 have_linux="yes"
39653d75 160 ;;
bf5a4844 161darwin*)
bded797d 162 CXXFLAGS="-D__APPLE_USE_RFC_3542 -D_XOPEN_SOURCE $CXXFLAGS"
39653d75 163 ;;
69f79f96 164freebsd*)
2ca3e75b 165 THREADFLAGS="-pthread"
69f79f96
RK
166 have_freebsd="yes"
167 ;;
92a4978f 168*)
39653d75
RK
169 LDFLAGS="-pthread $LDFLAGS"
170 CXXFLAGS="-pthread $CXXFLAGS"
171 ;;
92a4978f
BH
172esac
173
69f79f96 174AM_CONDITIONAL([HAVE_FREEBSD], [test "x$have_freebsd" = "xyes"])
df72c277 175AM_CONDITIONAL([HAVE_LINUX], [test "x$have_linux" = "xyes"])
d4c30a75 176AM_CONDITIONAL([HAVE_SOLARIS], [test "x$have_solaris" = "xyes"])
df72c277 177
92a4978f 178AC_SUBST(THREADFLAGS)
2cfb6b6e 179AC_SUBST([DYNLINKFLAGS], [-export-dynamic])
92a4978f 180
8ffe1c55 181PDNS_ENABLE_VERBOSE_LOGGING
08bc56f4 182PDNS_WITH_SYSTEM_POLARSSL
5b117c5e 183PDNS_ENABLE_BOTAN
8daea594 184PDNS_ENABLE_PKCS11
1f0f33bc 185PDNS_WITH_CRYPTOPP
fcc5d084 186PDNS_ENABLE_ED25519
a7db8aa6 187
a49b3356
RK
188AS_IF([test "x$static" != "xno"], [
189 LDFLAGS="-all-static $LDFLAGS"
190])
92a4978f 191
e53a4bf6 192modules="bind gmysql geo random"
39653d75 193AC_ARG_WITH([modules],
ae2f3feb 194 [AS_HELP_STRING([--with-modules],[which backends to compile with @<:@default=bind gmysql geo random@:>@])],
39653d75
RK
195 [modules="$withval"]
196)
92a4978f
BH
197
198dynmodules="pipe"
39653d75
RK
199AC_ARG_WITH([dynmodules],
200 [AS_HELP_STRING([--with-dynmodules],[which backends to build for dynamic loading @<:@default=pipe@:>@])],
201 [dynmodules="$withval"]
202)
92a4978f
BH
203
204AC_SUBST(socketdir)
205socketdir="/var/run"
39653d75
RK
206AC_ARG_WITH([socketdir],
207 [AS_HELP_STRING([--with-socketdir],[where the controlsocket lives @<:@default=/var/run@:>@])],
208 [socketdir="$withval"]
209)
92a4978f
BH
210
211AC_SUBST(moduledirs)
212AC_SUBST(moduleobjects)
213AC_SUBST(modulelibs)
39653d75 214AC_DEFINE_UNQUOTED([PDNS_MODULES],"$modules", [Built-in modules])
92a4978f 215
39653d75
RK
216AC_MSG_CHECKING([whether we will be building the server])
217AC_ARG_ENABLE([pdns-server],
218 [AS_HELP_STRING([--enable-pdns_server],[if we should build the server @<:@default=yes@:>@])],
219 [enable_pdns_server=$enableval],
220 [enable_pdns_server=yes]
221)
222AC_MSG_RESULT([$enable_pdns_server])
0ff5c0a3 223AM_CONDITIONAL([WITH_PDNS_SERVER],[test "x$enable_pdns_server" != "xno"])
92a4978f 224
39653d75
RK
225AC_ARG_ENABLE([gcc-skip-locking],
226 [AS_HELP_STRING([--enable-gcc-skip-locking],[if we should forcefully skip gcc locking @<:@default=no@:>@])],
227 [AC_DEFINE(GCC_SKIP_LOCKING,[],[Skip gcc locking])],
228)
229
230AC_MSG_CHECKING([whether we will be building and installing the extra tools])
231AC_ARG_ENABLE([tools],
232 [AS_HELP_STRING([--enable-tools],[if we should build and install the tools @<:@default=no@:>@])],
233 [enable_tools=$enableval],
234 [enable_tools=no]
235)
236
237AC_MSG_RESULT([$enable_tools])
fd9b086f 238AM_CONDITIONAL([TOOLS],[test "x$enable_tools" != "xno"])
39653d75 239
26870de7 240
39653d75
RK
241for a in $modules $dynmodules; do
242 case "$a" in
243 oracle|goracle)
244 PDNS_WITH_ORACLE
245 needoracle=yes
246 ;;
6a85d81e
MZ
247 lmdb)
248 PDNS_WITH_LMDB
cec11b41 249 needlmdb=yes
6a85d81e 250 ;;
39653d75
RK
251 mydns|gmysql|pdns)
252 PDNS_WITH_MYSQL
253 ;;
254 gpgsql)
255 PDNS_WITH_POSTGRESQL
256 ;;
257 gsqlite3)
258 needsqlite3=yes
259 ;;
260 ldap)
261 PDNS_CHECK_LDAP
b63843d9 262 needldap=yes
39653d75
RK
263 ;;
264 opendbx)
265 PDNS_CHECK_OPENDBX
266 ;;
e29ece13 267 remote)
98540f9f
T
268 AS_IF([test "x$enable_unit_tests" = "xyes"],
269 [PDNS_CHECK_CURL_PROGRAM]
270 )
271
e29ece13
T
272 have_remotebackend=yes
273 ;;
39653d75
RK
274 tinydns)
275 PDNS_CHECK_CDB
276 ;;
709ca59f
AT
277 geoip)
278 PDNS_CHECK_GEOIP
279 ;;
a20adc10
RK
280 lua)
281 AS_IF([test "x$with_lua" = "xno"],
282 AC_MSG_ERROR([Lua backend needs lua, run ./configure --with-lua])
283 )
284 AS_IF([test "x$LUAPC" = "x"],
285 AC_MSG_ERROR([Lua backend needs lua but we cannot find it])
286 )
287 ;;
39653d75 288 esac
92a4978f
BH
289done
290
e29ece13
T
291PDNS_ENABLE_REMOTEBACKEND_ZEROMQ
292
39653d75
RK
293AM_CONDITIONAL([ORACLE],[test "x$needoracle" = "xyes"])
294
b63843d9
RK
295AM_CONDITIONAL([LDAP],[test "x$needldap" = "xyes"])
296
cec11b41
KM
297AM_CONDITIONAL([LMDB],[test "x$needlmdb" = "xyes"])
298
13305eb1 299PDNS_CHECK_SQLITE3
39653d75 300AM_CONDITIONAL([SQLITE3], [test "x$needsqlite3" = "xyes"])
64e3aade 301
39653d75
RK
302for a in $modules; do
303 moduledirs="$moduledirs ${a}backend"
304
305 for b in `cat $srcdir/modules/${a}backend/OBJECTFILES`; do
306 moduleobjects="$moduleobjects ../modules/${a}backend/$b"
307 done
308 modulelibs="$modulelibs `cat $srcdir/modules/${a}backend/OBJECTLIBS`"
92a4978f
BH
309done
310
39653d75
RK
311for a in $dynmodules; do
312 moduledirs="$moduledirs ${a}backend"
92a4978f
BH
313done
314
3cc618c5 315LDFLAGS="$RELRO_LDFLAGS $LDFLAGS"
d6e5e940 316
62e6530a
RK
317AS_IF([test "x$static" != "xyes"], [
318 CFLAGS="$PIE_CFLAGS $CFLAGS"
319 CXXFLAGS="$PIE_CFLAGS $CXXFLAGS"
b2053c28 320 PROGRAM_LDFLAGS="$PIE_LDFLAGS $PROGRAM_LDFLAGS"
62e6530a 321])
b2053c28 322AC_SUBST([PROGRAM_LDFLAGS])
62e6530a 323
366c610a 324PDNS_ENABLE_COVERAGE
4c69af87 325PDNS_ENABLE_SANITIZERS
62e6530a 326
92a4978f
BH
327AC_SUBST(LIBS)
328
aa357125
RK
329AC_SUBST([AM_CPPFLAGS],
330 ["AS_ESCAPE([-I$(top_builddir) -I$(top_srcdir)]) $THREADFLAGS $BOOST_CPPFLAGS"]
331)
bf491b87 332
d4cc4c4a
RK
333AC_SUBST([YAHTTP_CFLAGS], ['-I$(top_srcdir)/ext/yahttp'])
334AC_SUBST([YAHTTP_LIBS], ['-L$(top_builddir)/ext/yahttp/yahttp -lyahttp'])
1f974019 335
4c69af87
RK
336CXXFLAGS="$SANITIZER_FLAGS $CXXFLAGS"
337
722ac035
RK
338AC_ARG_VAR(PACKAGEVERSION,[The version used in secpoll queries])
339AS_IF([test "x$PACKAGEVERSION" != "x"],
340 [AC_DEFINE_UNQUOTED([PACKAGEVERSION], "$PACKAGEVERSION", [Set to the package version used for secpoll])]
341)
342
d9a44db5 343export moduledirs moduleobjects modulelibs
e9046dbc 344
39653d75
RK
345AC_CONFIG_FILES([
346 Makefile
347 modules/Makefile
348 pdns/Makefile
349 codedocs/Makefile
21557318 350 docs/Makefile
cd42e98f 351 pdns/pdns.init
d4cc4c4a
RK
352 ext/Makefile
353 ext/ed25519/Makefile
354 ext/yahttp/Makefile
355 ext/yahttp/yahttp/Makefile
356 ext/polarssl/Makefile
357 ext/polarssl/library/Makefile
358 ext/rapidjson/Makefile
39653d75 359 modules/bindbackend/Makefile
39653d75 360 modules/geobackend/Makefile
709ca59f 361 modules/geoipbackend/Makefile
39653d75
RK
362 modules/gmysqlbackend/Makefile
363 modules/goraclebackend/Makefile
364 modules/gpgsqlbackend/Makefile
365 modules/gsqlite3backend/Makefile
366 modules/ldapbackend/Makefile
367 modules/luabackend/Makefile
368 modules/mydnsbackend/Makefile
369 modules/opendbxbackend/Makefile
370 modules/oraclebackend/Makefile
371 modules/pipebackend/Makefile
372 modules/randombackend/Makefile
373 modules/remotebackend/Makefile
374 modules/tinydnsbackend/Makefile
6a85d81e 375 modules/lmdbbackend/Makefile
39653d75 376])
6867a5ad 377AC_OUTPUT
39653d75 378
06d0f550
RK
379AC_MSG_NOTICE([])
380AC_MSG_NOTICE([Configuration summary])
381AC_MSG_NOTICE([=====================])
382AC_MSG_NOTICE([])
0060b613
RK
383AC_MSG_NOTICE([Configured with:$pdns_configure_args])
384AC_MSG_NOTICE([])
06d0f550
RK
385AC_MSG_NOTICE([Modules: $modules])
386AC_MSG_NOTICE([Dynamic Modules: $dynmodules])
387AC_MSG_NOTICE([])
80b2fad2
T
388AC_MSG_NOTICE([With ZeroMQ connector for remotebackend: $enable_remotebackend_zeromq])
389AC_MSG_NOTICE([])
06d0f550
RK
390AC_MSG_NOTICE([CC: $CC])
391AC_MSG_NOTICE([CXX: $CXX])
392AC_MSG_NOTICE([LD: $LD])
393AC_MSG_NOTICE([CFLAGS: $CFLAGS])
394AC_MSG_NOTICE([CPPFLAGS: $CPPFLAGS])
395AC_MSG_NOTICE([CXXFLAGS: $CXXFLAGS])
396AC_MSG_NOTICE([LDFLAGS: $LDFLAGS])
397AC_MSG_NOTICE([])
19cedc4b 398AC_MSG_NOTICE([BOOST_CPPFLAGS: $BOOST_CPPFLAGS])
19cedc4b 399AC_MSG_NOTICE([])
786d771e
PL
400AS_IF([test "x$needsqlite3" != "x"],
401 [AC_MSG_NOTICE([SQLite3 support: yes])],
402 [AC_MSG_NOTICE([SQLite3 support: no])]
403)
c92ada53
RK
404AS_IF([test "x$LUAPC" != "x"],
405 [AC_MSG_NOTICE([Lua support: $LUAPC])],
406 [AC_MSG_NOTICE([Lua support: no])]
407)
06d0f550 408AC_MSG_NOTICE([])