]> git.ipfire.org Git - thirdparty/pdns.git/blame - configure.ac
try to compile as c++2011 if we can
[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
62423be7 13AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar -Wno-portability subdir-objects 1.11])
dcf224eb 14AM_SILENT_RULES([yes])
39653d75 15
92a4978f 16AC_CANONICAL_HOST
5801cd92 17: ${CXXFLAGS="-Wall -g -O2"}
39653d75 18
92a4978f 19AC_PROG_CC
dd50be34 20AM_PROG_CC_C_O
44362487 21PDNS_CHECK_BISON
33086d97 22PDNS_CHECK_FLEX
92a4978f
BH
23AC_PROG_INSTALL
24AC_PROG_MAKE_SET
2f1d361a 25AX_CXX_COMPILE_STDCXX_11(,optional)
27a4e655
RK
26AC_PROG_CXX
27AS_IF([test "x$CXX" = "xno" || test "x$CXX:x$GXX" = "xg++:x"],
28 AC_MSG_ERROR([no C++ compiler found])
29)
30
66da2833 31AC_LANG([C++])
92a4978f 32
f33c1fff
RK
33AC_DEFINE([_GNU_SOURCE], [1],
34 [Define _GNU_SOURCE so that we get all necessary prototypes]
35)
36
d6e5e940
AT
37AC_CC_PIE
38AC_CC_STACK_PROTECTOR
1a761e27 39AC_CC_PARAM_SSP_BUFFER_SIZE([4])
5801cd92 40AC_CC_D_FORTIFY_SOURCE
d6e5e940 41
3bdd9625
RK
42AC_SEARCH_LIBS([socket], [socket])
43AC_SEARCH_LIBS([gethostent], [nsl])
44AC_SEARCH_LIBS([inet_aton], [resolv])
9d44a523 45
59414d0e 46m4_ifndef([LT_INIT],[
dbff3daf 47AC_PROG_LIBTOOL([disable-static])
59414d0e 48],[
dbff3daf 49LT_INIT([disable-static])
59414d0e
RK
50])
51
d6e5e940
AT
52AC_LD_RELRO
53
96ae9a2e
KM
54MC_TM_GMTOFF
55
39653d75
RK
56AM_CONDITIONAL([RELEASE_BUILD], [test "$PACKAGE_VERSION" != "git"])
57
0949b8ae
CH
58# Define full_libdir to be the fully expanded (${exec_prefix}, etc.)
59# "system" library path.
60# We use this to search for other libraries.
61eval full_libdir="\"$libdir\""
39653d75 62
27fe16bd
RK
63# detect pkg-config explicitly
64PKG_PROG_PKG_CONFIG
65
a49b3356
RK
66# check if we want a static build
67AC_MSG_CHECKING([whether we will be building static binaries])
68
69AC_ARG_ENABLE([static-binaries],
70 [AS_HELP_STRING([--enable-static-binaries],[build static binaries @<:@default=no@:>@])],
71 [static=$enableval],
72 [static=no],
73)
74AC_MSG_RESULT([$static])
75
76AS_IF([test "x$static" != "xno"], [
77 PKG_CONFIG="$PKG_CONFIG --static"
78])
79
709ca59f
AT
80AC_CHECK_HEADERS(
81 [sys/mman.h],
82 [AC_CHECK_FUNC(
83 [mmap],
84 [AC_DEFINE(HAVE_MMAP, [1], [Define to 1 if you have mmap])],
85 [have_mmap=no]
86 )],
87 [have_mmap=no]
88)
89
e3881b46 90PDNS_CHECK_RAGEL
d81a3e14 91
051f0aaa 92PDNS_WITH_LUA
d81a3e14 93
94ac5f34
PD
94BOOST_REQUIRE([1.35])
95BOOST_FOREACH
96BOOST_PROGRAM_OPTIONS([mt])
97BOOST_SERIALIZATION([mt])
051f0aaa 98
fedea66a 99PDNS_ENABLE_UNIT_TESTS
051f0aaa 100
13305eb1 101PDNS_WITH_SQLITE3
32869e14 102
e9046dbc
PL
103PDNS_CHECK_PANDOC
104PDNS_CHECK_MKDOCS
105
92a4978f
BH
106dnl Checks for typedefs, structures, and compiler characteristics.
107AC_TYPE_SIZE_T
92a4978f
BH
108
109dnl Checks for library functions.
f50617c9 110AC_CHECK_FUNCS_ONCE([strcasestr localtime_r])
92a4978f
BH
111
112# Check for libdl
92a4978f
BH
113my_save_LIBS="$LIBS"
114LIBS=""
115AC_CHECK_LIB(dl,dlopen)
116LIBDL=$LIBS
117LIBS="$my_save_LIBS"
118AC_SUBST(LIBDL)
119
120AC_MSG_CHECKING([for RTLD_NOW]);
121ac_save_LIBS="$LIBS"
122LIBS="$LIBS $LIBDL"
67e8df4c
RK
123AC_LINK_IFELSE(
124 [AC_LANG_PROGRAM([[#include <dlfcn.h>]],
125 [[(void) dlopen("",RTLD_NOW);]])],
126 [has_RTLD_NOW=yes],
127 [has_RTLD_NOW=no])
92a4978f 128AC_MSG_RESULT([$has_RTLD_NOW])
39653d75
RK
129if test "$has_RTLD_NOW" = "no"; then
130 AC_DEFINE(NEED_RTLD_NOW,,[If host OS misses RTLD_NOW])
92a4978f
BH
131fi
132LIBS=$ac_save_LIBS
133
c2a155b1
PD
134# Check for libcrypt
135
136my_save_LIBS="$LIBS"
137LIBS=""
138AC_CHECK_LIB(crypt, crypt)
139LIBCRYPT=$LIBS
140LIBS="$my_save_LIBS"
141AC_SUBST(LIBCRYPT)
142
92a4978f
BH
143THREADFLAGS=""
144
145case "$host_os" in
146solaris2.10)
29403f48 147 LIBS="-lposix4 -lpthread -lrt $LIBS"
39653d75
RK
148 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
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
RK
154 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
155 ;;
92a4978f 156linux*)
39653d75 157 THREADFLAGS="-pthread"
39653d75 158 ;;
bf5a4844 159darwin*)
bded797d 160 CXXFLAGS="-D__APPLE_USE_RFC_3542 -D_XOPEN_SOURCE $CXXFLAGS"
39653d75 161 ;;
92a4978f 162*)
39653d75
RK
163 LDFLAGS="-pthread $LDFLAGS"
164 CXXFLAGS="-pthread $CXXFLAGS"
165 ;;
92a4978f
BH
166esac
167
168AC_SUBST(THREADFLAGS)
2cfb6b6e 169AC_SUBST([DYNLINKFLAGS], [-export-dynamic])
92a4978f 170
8ffe1c55 171PDNS_ENABLE_VERBOSE_LOGGING
08bc56f4 172PDNS_WITH_SYSTEM_POLARSSL
5b117c5e 173PDNS_ENABLE_BOTAN
8daea594 174PDNS_ENABLE_PKCS11
1f0f33bc 175PDNS_WITH_CRYPTOPP
fcc5d084 176PDNS_ENABLE_ED25519
2239e91b 177PDNS_ENABLE_REMOTEBACKEND_ZEROMQ
a7db8aa6 178
a49b3356
RK
179AS_IF([test "x$static" != "xno"], [
180 LDFLAGS="-all-static $LDFLAGS"
181])
92a4978f 182
e53a4bf6 183modules="bind gmysql geo random"
39653d75 184AC_ARG_WITH([modules],
ae2f3feb 185 [AS_HELP_STRING([--with-modules],[which backends to compile with @<:@default=bind gmysql geo random@:>@])],
39653d75
RK
186 [modules="$withval"]
187)
92a4978f
BH
188
189dynmodules="pipe"
39653d75
RK
190AC_ARG_WITH([dynmodules],
191 [AS_HELP_STRING([--with-dynmodules],[which backends to build for dynamic loading @<:@default=pipe@:>@])],
192 [dynmodules="$withval"]
193)
92a4978f
BH
194
195AC_SUBST(socketdir)
196socketdir="/var/run"
39653d75
RK
197AC_ARG_WITH([socketdir],
198 [AS_HELP_STRING([--with-socketdir],[where the controlsocket lives @<:@default=/var/run@:>@])],
199 [socketdir="$withval"]
200)
92a4978f
BH
201
202AC_SUBST(moduledirs)
203AC_SUBST(moduleobjects)
204AC_SUBST(modulelibs)
39653d75 205AC_DEFINE_UNQUOTED([PDNS_MODULES],"$modules", [Built-in modules])
92a4978f 206
39653d75
RK
207AC_MSG_CHECKING([whether we will be building the server])
208AC_ARG_ENABLE([pdns-server],
209 [AS_HELP_STRING([--enable-pdns_server],[if we should build the server @<:@default=yes@:>@])],
210 [enable_pdns_server=$enableval],
211 [enable_pdns_server=yes]
212)
213AC_MSG_RESULT([$enable_pdns_server])
0ff5c0a3 214AM_CONDITIONAL([WITH_PDNS_SERVER],[test "x$enable_pdns_server" != "xno"])
92a4978f 215
39653d75
RK
216AC_ARG_ENABLE([gcc-skip-locking],
217 [AS_HELP_STRING([--enable-gcc-skip-locking],[if we should forcefully skip gcc locking @<:@default=no@:>@])],
218 [AC_DEFINE(GCC_SKIP_LOCKING,[],[Skip gcc locking])],
219)
220
221AC_MSG_CHECKING([whether we will be building and installing the extra tools])
222AC_ARG_ENABLE([tools],
223 [AS_HELP_STRING([--enable-tools],[if we should build and install the tools @<:@default=no@:>@])],
224 [enable_tools=$enableval],
225 [enable_tools=no]
226)
227
228AC_MSG_RESULT([$enable_tools])
fd9b086f 229AM_CONDITIONAL([TOOLS],[test "x$enable_tools" != "xno"])
39653d75
RK
230
231for a in $modules $dynmodules; do
232 case "$a" in
233 oracle|goracle)
234 PDNS_WITH_ORACLE
235 needoracle=yes
236 ;;
6a85d81e
MZ
237 lmdb)
238 PDNS_WITH_LMDB
cec11b41 239 needlmdb=yes
6a85d81e 240 ;;
39653d75
RK
241 mydns|gmysql|pdns)
242 PDNS_WITH_MYSQL
243 ;;
244 gpgsql)
245 PDNS_WITH_POSTGRESQL
246 ;;
247 gsqlite3)
248 needsqlite3=yes
249 ;;
250 ldap)
251 PDNS_CHECK_LDAP
b63843d9 252 needldap=yes
39653d75
RK
253 ;;
254 opendbx)
255 PDNS_CHECK_OPENDBX
256 ;;
257 tinydns)
258 PDNS_CHECK_CDB
259 ;;
709ca59f
AT
260 geoip)
261 PDNS_CHECK_GEOIP
262 ;;
a20adc10
RK
263 lua)
264 AS_IF([test "x$with_lua" = "xno"],
265 AC_MSG_ERROR([Lua backend needs lua, run ./configure --with-lua])
266 )
267 AS_IF([test "x$LUAPC" = "x"],
268 AC_MSG_ERROR([Lua backend needs lua but we cannot find it])
269 )
270 ;;
39653d75 271 esac
92a4978f
BH
272done
273
39653d75
RK
274AM_CONDITIONAL([ORACLE],[test "x$needoracle" = "xyes"])
275
b63843d9
RK
276AM_CONDITIONAL([LDAP],[test "x$needldap" = "xyes"])
277
cec11b41
KM
278AM_CONDITIONAL([LMDB],[test "x$needlmdb" = "xyes"])
279
13305eb1 280PDNS_CHECK_SQLITE3
39653d75 281AM_CONDITIONAL([SQLITE3], [test "x$needsqlite3" = "xyes"])
64e3aade 282
39653d75
RK
283for a in $modules; do
284 moduledirs="$moduledirs ${a}backend"
285
286 for b in `cat $srcdir/modules/${a}backend/OBJECTFILES`; do
287 moduleobjects="$moduleobjects ../modules/${a}backend/$b"
288 done
289 modulelibs="$modulelibs `cat $srcdir/modules/${a}backend/OBJECTLIBS`"
290
291 if test ${a} = "gpgsql"; then
292 LIBS="$LIBS $LIBCRYPT"
39653d75 293 fi
92a4978f
BH
294done
295
39653d75
RK
296for a in $dynmodules; do
297 moduledirs="$moduledirs ${a}backend"
92a4978f
BH
298done
299
3cc618c5 300LDFLAGS="$RELRO_LDFLAGS $LDFLAGS"
d6e5e940 301
62e6530a
RK
302AS_IF([test "x$static" != "xyes"], [
303 CFLAGS="$PIE_CFLAGS $CFLAGS"
304 CXXFLAGS="$PIE_CFLAGS $CXXFLAGS"
305 LDFLAGS="$PIE_LDFLAGS $LDFLAGS"
306])
307
92a4978f
BH
308AC_SUBST(LIBS)
309
aa357125
RK
310AC_SUBST([AM_CPPFLAGS],
311 ["AS_ESCAPE([-I$(top_builddir) -I$(top_srcdir)]) $THREADFLAGS $BOOST_CPPFLAGS"]
312)
bf491b87 313
1f974019
RK
314AC_SUBST([YAHTTP_CFLAGS], ['-I$(top_srcdir)/pdns/ext/yahttp'])
315AC_SUBST([YAHTTP_LIBS], ['-L$(top_builddir)/pdns/ext/yahttp/yahttp -lyahttp'])
316
d9a44db5 317export moduledirs moduleobjects modulelibs
e9046dbc 318
39653d75
RK
319AC_CONFIG_FILES([
320 Makefile
321 modules/Makefile
322 pdns/Makefile
323 codedocs/Makefile
21557318 324 docs/Makefile
cd42e98f 325 pdns/pdns.init
c5077b4c 326 pdns/ext/Makefile
fcc5d084 327 pdns/ext/ed25519/Makefile
f1d2eede
CH
328 pdns/ext/yahttp/Makefile
329 pdns/ext/yahttp/yahttp/Makefile
f4b482a0
RK
330 pdns/ext/polarssl/Makefile
331 pdns/ext/polarssl/library/Makefile
d0371c7d 332 pdns/ext/rapidjson/Makefile
39653d75 333 modules/bindbackend/Makefile
39653d75 334 modules/geobackend/Makefile
709ca59f 335 modules/geoipbackend/Makefile
39653d75
RK
336 modules/gmysqlbackend/Makefile
337 modules/goraclebackend/Makefile
338 modules/gpgsqlbackend/Makefile
339 modules/gsqlite3backend/Makefile
340 modules/ldapbackend/Makefile
341 modules/luabackend/Makefile
342 modules/mydnsbackend/Makefile
343 modules/opendbxbackend/Makefile
344 modules/oraclebackend/Makefile
345 modules/pipebackend/Makefile
346 modules/randombackend/Makefile
347 modules/remotebackend/Makefile
348 modules/tinydnsbackend/Makefile
6a85d81e 349 modules/lmdbbackend/Makefile
39653d75 350])
6867a5ad 351AC_OUTPUT
39653d75 352
06d0f550
RK
353AC_MSG_NOTICE([])
354AC_MSG_NOTICE([Configuration summary])
355AC_MSG_NOTICE([=====================])
356AC_MSG_NOTICE([])
357AC_MSG_NOTICE([Modules: $modules])
358AC_MSG_NOTICE([Dynamic Modules: $dynmodules])
359AC_MSG_NOTICE([])
360AC_MSG_NOTICE([CC: $CC])
361AC_MSG_NOTICE([CXX: $CXX])
362AC_MSG_NOTICE([LD: $LD])
363AC_MSG_NOTICE([CFLAGS: $CFLAGS])
364AC_MSG_NOTICE([CPPFLAGS: $CPPFLAGS])
365AC_MSG_NOTICE([CXXFLAGS: $CXXFLAGS])
366AC_MSG_NOTICE([LDFLAGS: $LDFLAGS])
367AC_MSG_NOTICE([])
19cedc4b 368AC_MSG_NOTICE([BOOST_CPPFLAGS: $BOOST_CPPFLAGS])
19cedc4b 369AC_MSG_NOTICE([])
06d0f550
RK
370AC_MSG_NOTICE([SQLite3 support: $with_sqlite3])
371AC_MSG_NOTICE([Lua support: $with_lua])
372AC_MSG_NOTICE([])