]> git.ipfire.org Git - thirdparty/pdns.git/blame - configure.ac
remove 'bert hubert' from manpages
[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
92a4978f
BH
22AM_PROG_LEX
23AC_PROG_INSTALL
24AC_PROG_MAKE_SET
39653d75 25
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
9d44a523
AT
42AC_CHECK_FUNC([socket], [], [
43 AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket $LIBS"])
44])
45
46AC_CHECK_FUNC([gethostent], [], [
47 AC_CHECK_LIB([nsl], [gethostent], [LIBS="-lnsl $LIBS"])
48])
49
59414d0e 50m4_ifndef([LT_INIT],[
dbff3daf 51AC_PROG_LIBTOOL([disable-static])
59414d0e 52],[
dbff3daf 53LT_INIT([disable-static])
59414d0e
RK
54])
55
d6e5e940
AT
56AC_LD_RELRO
57
96ae9a2e
KM
58MC_TM_GMTOFF
59
39653d75
RK
60AM_CONDITIONAL([RELEASE_BUILD], [test "$PACKAGE_VERSION" != "git"])
61
0949b8ae
CH
62# Define full_libdir to be the fully expanded (${exec_prefix}, etc.)
63# "system" library path.
64# We use this to search for other libraries.
65eval full_libdir="\"$libdir\""
39653d75 66
4ae885ac
PD
67# detect pkg-config explicitly
68PKG_PROG_PKG_CONFIG
69
709ca59f
AT
70AC_CHECK_HEADERS(
71 [sys/mman.h],
72 [AC_CHECK_FUNC(
73 [mmap],
74 [AC_DEFINE(HAVE_MMAP, [1], [Define to 1 if you have mmap])],
75 [have_mmap=no]
76 )],
77 [have_mmap=no]
78)
79
e3881b46 80PDNS_CHECK_RAGEL
d81a3e14 81
051f0aaa 82PDNS_WITH_LUA
d81a3e14 83
39107229
RK
84AX_BOOST_BASE([1.35], [], [AC_MSG_ERROR([Boost not found])])
85AX_BOOST_PROGRAM_OPTIONS
86AX_BOOST_SERIALIZATION
051f0aaa 87
fedea66a 88PDNS_ENABLE_UNIT_TESTS
051f0aaa 89
935be639
PD
90dnl Allow user to require SQLite3
91AC_MSG_CHECKING([whether user requires sqlite3])
92AC_ARG_WITH([sqlite3],
93 [AS_HELP_STRING([--with-sqlite3],[include sqlite3 driver @<:@default=no@:>@])],
94 [with_sqlite3=$withval],
95 [with_sqlite3=no]
96)
97AC_MSG_RESULT([$with_sqlite3])
98
99AS_IF([test "x$with_sqlite3" != "xno"], [
100 needsqlite3=yes
101])
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)
39653d75
RK
147 LIBS="-lposix4 -lresolv -lnsl -lsocket -lpthread -lrt $LIBS"
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])
153 LIBS="-lposix4 -lresolv -lnsl -lsocket -lpthread $LIBS"
154 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
155 ;;
92a4978f 156linux*)
39653d75 157 THREADFLAGS="-pthread"
39653d75 158 ;;
bf5a4844 159darwin*)
625f59db 160 CXXFLAGS="-D__APPLE_USE_RFC_3542 $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
2239e91b 176PDNS_ENABLE_REMOTEBACKEND_ZEROMQ
a7db8aa6 177
fe8ef8d9 178AC_MSG_CHECKING([whether we will be building static binaries])
92a4978f 179
39653d75 180AC_ARG_ENABLE([static-binaries],
fe8ef8d9
RK
181 [AS_HELP_STRING([--enable-static-binaries],[build static binaries @<:@default=no@:>@])],
182 [static=$enableval],
183 [static=no],
39653d75
RK
184)
185AC_MSG_RESULT([$static])
fe8ef8d9
RK
186AS_IF([test "x$static" != "xno"],
187 [LDFLAGS="-all-static $LDFLAGS"]
7181b2fd 188)
92a4978f 189
e53a4bf6 190modules="bind gmysql geo random"
39653d75 191AC_ARG_WITH([modules],
ae2f3feb 192 [AS_HELP_STRING([--with-modules],[which backends to compile with @<:@default=bind gmysql geo random@:>@])],
39653d75
RK
193 [modules="$withval"]
194)
92a4978f
BH
195
196dynmodules="pipe"
39653d75
RK
197AC_ARG_WITH([dynmodules],
198 [AS_HELP_STRING([--with-dynmodules],[which backends to build for dynamic loading @<:@default=pipe@:>@])],
199 [dynmodules="$withval"]
200)
92a4978f
BH
201
202AC_SUBST(socketdir)
203socketdir="/var/run"
39653d75
RK
204AC_ARG_WITH([socketdir],
205 [AS_HELP_STRING([--with-socketdir],[where the controlsocket lives @<:@default=/var/run@:>@])],
206 [socketdir="$withval"]
207)
92a4978f
BH
208
209AC_SUBST(moduledirs)
210AC_SUBST(moduleobjects)
211AC_SUBST(modulelibs)
39653d75 212AC_DEFINE_UNQUOTED([PDNS_MODULES],"$modules", [Built-in modules])
92a4978f 213
39653d75
RK
214AC_MSG_CHECKING([whether we will be building the server])
215AC_ARG_ENABLE([pdns-server],
216 [AS_HELP_STRING([--enable-pdns_server],[if we should build the server @<:@default=yes@:>@])],
217 [enable_pdns_server=$enableval],
218 [enable_pdns_server=yes]
219)
220AC_MSG_RESULT([$enable_pdns_server])
0ff5c0a3 221AM_CONDITIONAL([WITH_PDNS_SERVER],[test "x$enable_pdns_server" != "xno"])
92a4978f 222
39653d75
RK
223AC_ARG_ENABLE([gcc-skip-locking],
224 [AS_HELP_STRING([--enable-gcc-skip-locking],[if we should forcefully skip gcc locking @<:@default=no@:>@])],
225 [AC_DEFINE(GCC_SKIP_LOCKING,[],[Skip gcc locking])],
226)
227
228AC_MSG_CHECKING([whether we will be building and installing the extra tools])
229AC_ARG_ENABLE([tools],
230 [AS_HELP_STRING([--enable-tools],[if we should build and install the tools @<:@default=no@:>@])],
231 [enable_tools=$enableval],
232 [enable_tools=no]
233)
234
235AC_MSG_RESULT([$enable_tools])
fd9b086f 236AM_CONDITIONAL([TOOLS],[test "x$enable_tools" != "xno"])
39653d75
RK
237
238for a in $modules $dynmodules; do
239 case "$a" in
240 oracle|goracle)
241 PDNS_WITH_ORACLE
242 needoracle=yes
243 ;;
6a85d81e
MZ
244 lmdb)
245 PDNS_WITH_LMDB
cec11b41 246 needlmdb=yes
6a85d81e 247 ;;
39653d75
RK
248 mydns|gmysql|pdns)
249 PDNS_WITH_MYSQL
250 ;;
251 gpgsql)
252 PDNS_WITH_POSTGRESQL
253 ;;
254 gsqlite3)
255 needsqlite3=yes
256 ;;
257 ldap)
258 PDNS_CHECK_LDAP
259 ;;
260 opendbx)
261 PDNS_CHECK_OPENDBX
262 ;;
263 tinydns)
264 PDNS_CHECK_CDB
265 ;;
709ca59f
AT
266 geoip)
267 PDNS_CHECK_GEOIP
268 ;;
a20adc10
RK
269 lua)
270 AS_IF([test "x$with_lua" = "xno"],
271 AC_MSG_ERROR([Lua backend needs lua, run ./configure --with-lua])
272 )
273 AS_IF([test "x$LUAPC" = "x"],
274 AC_MSG_ERROR([Lua backend needs lua but we cannot find it])
275 )
276 ;;
39653d75 277 esac
92a4978f
BH
278done
279
39653d75
RK
280AM_CONDITIONAL([ORACLE],[test "x$needoracle" = "xyes"])
281
cec11b41
KM
282AM_CONDITIONAL([LMDB],[test "x$needlmdb" = "xyes"])
283
39653d75 284AM_CONDITIONAL([SQLITE3], [test "x$needsqlite3" = "xyes"])
935be639
PD
285AS_IF([test "x$needsqlite3" = "xyes"], [
286 PKG_CHECK_MODULES([SQLITE3], [sqlite3],
287 [AC_DEFINE([HAVE_SQLITE3], [1], [Define to 1 if you have sqlite3])],
288 [AC_MSG_ERROR([Could not find libsqlite3])]
289 )
290])
64e3aade 291
39653d75
RK
292for a in $modules; do
293 moduledirs="$moduledirs ${a}backend"
294
295 for b in `cat $srcdir/modules/${a}backend/OBJECTFILES`; do
296 moduleobjects="$moduleobjects ../modules/${a}backend/$b"
297 done
298 modulelibs="$modulelibs `cat $srcdir/modules/${a}backend/OBJECTLIBS`"
299
300 if test ${a} = "gpgsql"; then
301 LIBS="$LIBS $LIBCRYPT"
302
303 case "$host_os" in
304 freebsd*)
305 ;;
306 darwin*)
307 modulelibs="$modulelibs -lresolv"
308 ;;
309 *)
310 modulelibs="$modulelibs -lresolv -lnsl"
311 ;;
312 esac
313 fi
92a4978f
BH
314done
315
39653d75
RK
316for a in $dynmodules; do
317 moduledirs="$moduledirs ${a}backend"
92a4978f
BH
318done
319
0ed6ba22
RK
320CFLAGS="$PIE_CFLAGS $CFLAGS"
321CXXFLAGS="$PIE_CFLAGS $CXXFLAGS"
5e71d414 322LDFLAGS="$RELRO_LDFLAGS $BOOST_LDFLAGS $LDFLAGS"
d6e5e940 323
92a4978f
BH
324AC_SUBST(LIBS)
325
aa357125
RK
326AC_SUBST([AM_CPPFLAGS],
327 ["AS_ESCAPE([-I$(top_builddir) -I$(top_srcdir)]) $THREADFLAGS $BOOST_CPPFLAGS"]
328)
bf491b87 329
1f974019
RK
330AC_SUBST([YAHTTP_CFLAGS], ['-I$(top_srcdir)/pdns/ext/yahttp'])
331AC_SUBST([YAHTTP_LIBS], ['-L$(top_builddir)/pdns/ext/yahttp/yahttp -lyahttp'])
332
e9046dbc 333
39653d75
RK
334AC_CONFIG_FILES([
335 Makefile
336 modules/Makefile
337 pdns/Makefile
338 codedocs/Makefile
21557318 339 docs/Makefile
cd42e98f 340 pdns/pdns.init
c5077b4c 341 pdns/ext/Makefile
f1d2eede
CH
342 pdns/ext/yahttp/Makefile
343 pdns/ext/yahttp/yahttp/Makefile
f4b482a0
RK
344 pdns/ext/polarssl/Makefile
345 pdns/ext/polarssl/library/Makefile
d0371c7d 346 pdns/ext/rapidjson/Makefile
39653d75 347 modules/bindbackend/Makefile
39653d75 348 modules/geobackend/Makefile
709ca59f 349 modules/geoipbackend/Makefile
39653d75
RK
350 modules/gmysqlbackend/Makefile
351 modules/goraclebackend/Makefile
352 modules/gpgsqlbackend/Makefile
353 modules/gsqlite3backend/Makefile
354 modules/ldapbackend/Makefile
355 modules/luabackend/Makefile
356 modules/mydnsbackend/Makefile
357 modules/opendbxbackend/Makefile
358 modules/oraclebackend/Makefile
359 modules/pipebackend/Makefile
360 modules/randombackend/Makefile
361 modules/remotebackend/Makefile
362 modules/tinydnsbackend/Makefile
6a85d81e 363 modules/lmdbbackend/Makefile
39653d75 364])
6867a5ad 365AC_OUTPUT
39653d75 366
06d0f550
RK
367AC_MSG_NOTICE([])
368AC_MSG_NOTICE([Configuration summary])
369AC_MSG_NOTICE([=====================])
370AC_MSG_NOTICE([])
371AC_MSG_NOTICE([Modules: $modules])
372AC_MSG_NOTICE([Dynamic Modules: $dynmodules])
373AC_MSG_NOTICE([])
374AC_MSG_NOTICE([CC: $CC])
375AC_MSG_NOTICE([CXX: $CXX])
376AC_MSG_NOTICE([LD: $LD])
377AC_MSG_NOTICE([CFLAGS: $CFLAGS])
378AC_MSG_NOTICE([CPPFLAGS: $CPPFLAGS])
379AC_MSG_NOTICE([CXXFLAGS: $CXXFLAGS])
380AC_MSG_NOTICE([LDFLAGS: $LDFLAGS])
381AC_MSG_NOTICE([])
382AC_MSG_NOTICE([SQLite3 support: $with_sqlite3])
383AC_MSG_NOTICE([Lua support: $with_lua])
384AC_MSG_NOTICE([])