]> git.ipfire.org Git - thirdparty/pdns.git/blame - configure.ac
Merge pull request #1786 from zeha/cleanup-debian-dir
[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
92a4978f
BH
21AC_PROG_YACC
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
d6e5e940
AT
33AC_CC_PIE
34AC_CC_STACK_PROTECTOR
1a761e27 35AC_CC_PARAM_SSP_BUFFER_SIZE([4])
5801cd92 36AC_CC_D_FORTIFY_SOURCE
d6e5e940 37
9d44a523
AT
38AC_CHECK_FUNC([socket], [], [
39 AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket $LIBS"])
40])
41
42AC_CHECK_FUNC([gethostent], [], [
43 AC_CHECK_LIB([nsl], [gethostent], [LIBS="-lnsl $LIBS"])
44])
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
4ae885ac
PD
63# detect pkg-config explicitly
64PKG_PROG_PKG_CONFIG
65
709ca59f
AT
66AC_CHECK_HEADERS(
67 [sys/mman.h],
68 [AC_CHECK_FUNC(
69 [mmap],
70 [AC_DEFINE(HAVE_MMAP, [1], [Define to 1 if you have mmap])],
71 [have_mmap=no]
72 )],
73 [have_mmap=no]
74)
75
e3881b46 76PDNS_CHECK_RAGEL
051f0aaa 77AC_CHECK_PROG([ASCIIDOC], [asciidoc], [asciidoc])
d81a3e14 78
051f0aaa 79PDNS_WITH_LUA
d81a3e14 80
4d220500 81BOOST_REQUIRE([1.35])
92a4978f 82BOOST_FOREACH
92a4978f
BH
83BOOST_PROGRAM_OPTIONS([mt])
84BOOST_SERIALIZATION([mt])
051f0aaa 85
fedea66a 86PDNS_ENABLE_UNIT_TESTS
051f0aaa 87
32869e14 88dnl Allow user to require SQLite3
39653d75
RK
89AC_MSG_CHECKING([whether user requires sqlite3])
90AC_ARG_WITH([sqlite3],
91 [AS_HELP_STRING([--with-sqlite3],[include sqlite3 driver @<:@default=no@:>@])],
92 [WITH_SQLITE3=$withval],
93 [WITH_SQLITE3=no]
94)
95AC_MSG_RESULT([$WITH_SQLITE3])
32869e14
PD
96SQLITE3PC=sqlite3
97if test "$WITH_SQLITE3" != "no"; then
98 needsqlite3=yes
99 if test "$WITH_SQLITE3" != "yes"; then
100 SQLITE3PC=$WITH_SQLITE3
101 fi
102fi
103
92a4978f
BH
104dnl Checks for typedefs, structures, and compiler characteristics.
105AC_TYPE_SIZE_T
92a4978f
BH
106
107dnl Checks for library functions.
39653d75 108AC_CHECK_FUNCS([strcasestr])
92a4978f
BH
109
110# Check for libdl
92a4978f
BH
111my_save_LIBS="$LIBS"
112LIBS=""
113AC_CHECK_LIB(dl,dlopen)
114LIBDL=$LIBS
115LIBS="$my_save_LIBS"
116AC_SUBST(LIBDL)
117
118AC_MSG_CHECKING([for RTLD_NOW]);
119ac_save_LIBS="$LIBS"
120LIBS="$LIBS $LIBDL"
67e8df4c
RK
121AC_LINK_IFELSE(
122 [AC_LANG_PROGRAM([[#include <dlfcn.h>]],
123 [[(void) dlopen("",RTLD_NOW);]])],
124 [has_RTLD_NOW=yes],
125 [has_RTLD_NOW=no])
92a4978f 126AC_MSG_RESULT([$has_RTLD_NOW])
39653d75
RK
127if test "$has_RTLD_NOW" = "no"; then
128 AC_DEFINE(NEED_RTLD_NOW,,[If host OS misses RTLD_NOW])
92a4978f
BH
129fi
130LIBS=$ac_save_LIBS
131
c2a155b1
PD
132# Check for libcrypt
133
134my_save_LIBS="$LIBS"
135LIBS=""
136AC_CHECK_LIB(crypt, crypt)
137LIBCRYPT=$LIBS
138LIBS="$my_save_LIBS"
139AC_SUBST(LIBCRYPT)
140
92a4978f
BH
141DYNLINKFLAGS=""
142THREADFLAGS=""
143
642fb7d7 144AM_CONDITIONAL([OS_MACOSX], false)
92a4978f
BH
145case "$host_os" in
146solaris2.10)
39653d75
RK
147 AC_DEFINE(HAVE_IPV6,1,[If the host operating system understands IPv6])
148 LIBS="-lposix4 -lresolv -lnsl -lsocket -lpthread -lrt $LIBS"
149 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
150 ;;
92a4978f 151
be1bd362 152solaris2.8 | solaris2.9 )
39653d75
RK
153 AC_DEFINE(NEED_POSIX_TYPEDEF,,[If POSIX typedefs need to be defined])
154 AC_DEFINE(NEED_INET_NTOP_PROTO,,[If your OS is so broken that it needs an additional prototype])
155 AC_DEFINE(HAVE_IPV6,1,[If the host operating system understands IPv6])
156 LIBS="-lposix4 -lresolv -lnsl -lsocket -lpthread $LIBS"
157 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
158 ;;
be1bd362 159solaris2.6 | solaris2.7)
39653d75
RK
160 AC_DEFINE(NEED_POSIX_TYPEDEF,,[If POSIX typedefs need to be defined])
161 AC_DEFINE(NEED_INET_NTOP_PROTO,,[If your OS is so broken that it needs an additional prototype])
162 LIBS="-lposix4 -lresolv -lnsl -lsocket -lpthread $LIBS"
163 CXXFLAGS="-D_REENTRANT $CXXFLAGS"
164 ;;
92a4978f 165linux*)
39653d75
RK
166 AC_DEFINE(HAVE_IPV6,1,[If the host operating system understands IPv6])
167 DYNLINKFLAGS="-rdynamic"
168 LDFLAGS="$LDFLAGS -lrt"
169 THREADFLAGS="-pthread"
170 CXXFLAGS="-D_GNU_SOURCE $CXXFLAGS"
171 ;;
bf5a4844 172darwin*)
39653d75
RK
173 AC_DEFINE(HAVE_IPV6,1,[If the host operating system understands IPv6])
174 DYNLINKFLAGS="-rdynamic"
175 LDFLAGS="-pthread $LDFLAGS"
176 CXXFLAGS="-pthread $CXXFLAGS -D__APPLE_USE_RFC_3542"
177 AM_CONDITIONAL([OS_MACOSX], true)
178 ;;
92a4978f 179*)
39653d75
RK
180 AC_DEFINE(HAVE_IPV6,1,[If the host operating system understands IPv6])
181 DYNLINKFLAGS="-rdynamic"
182 LDFLAGS="-pthread $LDFLAGS"
183 CXXFLAGS="-pthread $CXXFLAGS"
184 ;;
92a4978f
BH
185esac
186
187AC_SUBST(THREADFLAGS)
92a4978f
BH
188AC_SUBST(DYNLINKFLAGS)
189
8ffe1c55 190PDNS_ENABLE_VERBOSE_LOGGING
08bc56f4 191PDNS_WITH_SYSTEM_POLARSSL
5b117c5e 192PDNS_ENABLE_BOTAN
8daea594 193PDNS_ENABLE_PKCS11
1f0f33bc 194PDNS_WITH_CRYPTOPP
2239e91b 195PDNS_ENABLE_REMOTEBACKEND_ZEROMQ
a7db8aa6 196
fe8ef8d9 197AC_MSG_CHECKING([whether we will be building static binaries])
92a4978f 198
39653d75 199AC_ARG_ENABLE([static-binaries],
fe8ef8d9
RK
200 [AS_HELP_STRING([--enable-static-binaries],[build static binaries @<:@default=no@:>@])],
201 [static=$enableval],
202 [static=no],
39653d75
RK
203)
204AC_MSG_RESULT([$static])
fe8ef8d9
RK
205AM_CONDITIONAL([ALLSTATIC], [test "x$static" != "xno"])
206AS_IF([test "x$static" != "xno"],
207 [LDFLAGS="-all-static $LDFLAGS"]
208])
92a4978f 209
e53a4bf6 210modules="bind gmysql geo random"
39653d75 211AC_ARG_WITH([modules],
ae2f3feb 212 [AS_HELP_STRING([--with-modules],[which backends to compile with @<:@default=bind gmysql geo random@:>@])],
39653d75
RK
213 [modules="$withval"]
214)
92a4978f
BH
215
216dynmodules="pipe"
39653d75
RK
217AC_ARG_WITH([dynmodules],
218 [AS_HELP_STRING([--with-dynmodules],[which backends to build for dynamic loading @<:@default=pipe@:>@])],
219 [dynmodules="$withval"]
220)
92a4978f
BH
221
222AC_SUBST(socketdir)
223socketdir="/var/run"
39653d75
RK
224AC_ARG_WITH([socketdir],
225 [AS_HELP_STRING([--with-socketdir],[where the controlsocket lives @<:@default=/var/run@:>@])],
226 [socketdir="$withval"]
227)
92a4978f
BH
228
229AC_SUBST(moduledirs)
230AC_SUBST(moduleobjects)
231AC_SUBST(modulelibs)
39653d75 232AC_DEFINE_UNQUOTED([PDNS_MODULES],"$modules", [Built-in modules])
92a4978f 233
39653d75
RK
234AC_MSG_CHECKING([whether we will be building the server])
235AC_ARG_ENABLE([pdns-server],
236 [AS_HELP_STRING([--enable-pdns_server],[if we should build the server @<:@default=yes@:>@])],
237 [enable_pdns_server=$enableval],
238 [enable_pdns_server=yes]
239)
240AC_MSG_RESULT([$enable_pdns_server])
92a4978f 241
39653d75
RK
242AS_IF([test "x$enable_pdns_server" = "xyes"],
243 [programdescend=pdns]
244)
92a4978f
BH
245
246AC_SUBST(programdescend)
247
39653d75
RK
248AC_ARG_ENABLE([gcc-skip-locking],
249 [AS_HELP_STRING([--enable-gcc-skip-locking],[if we should forcefully skip gcc locking @<:@default=no@:>@])],
250 [AC_DEFINE(GCC_SKIP_LOCKING,[],[Skip gcc locking])],
251)
252
253AC_MSG_CHECKING([whether we will be building and installing the extra tools])
254AC_ARG_ENABLE([tools],
255 [AS_HELP_STRING([--enable-tools],[if we should build and install the tools @<:@default=no@:>@])],
256 [enable_tools=$enableval],
257 [enable_tools=no]
258)
259
260AC_MSG_RESULT([$enable_tools])
fd9b086f 261AM_CONDITIONAL([TOOLS],[test "x$enable_tools" != "xno"])
39653d75
RK
262
263for a in $modules $dynmodules; do
264 case "$a" in
265 oracle|goracle)
266 PDNS_WITH_ORACLE
267 needoracle=yes
268 ;;
6a85d81e
MZ
269 lmdb)
270 PDNS_WITH_LMDB
cec11b41 271 needlmdb=yes
6a85d81e 272 ;;
39653d75
RK
273 mydns|gmysql|pdns)
274 PDNS_WITH_MYSQL
275 ;;
276 gpgsql)
277 PDNS_WITH_POSTGRESQL
278 ;;
279 gsqlite3)
280 needsqlite3=yes
281 ;;
282 ldap)
283 PDNS_CHECK_LDAP
284 ;;
285 opendbx)
286 PDNS_CHECK_OPENDBX
287 ;;
288 tinydns)
289 PDNS_CHECK_CDB
290 ;;
709ca59f
AT
291 geoip)
292 PDNS_CHECK_GEOIP
293 ;;
39653d75 294 esac
92a4978f
BH
295done
296
39653d75
RK
297AM_CONDITIONAL([ORACLE],[test "x$needoracle" = "xyes"])
298
cec11b41
KM
299AM_CONDITIONAL([LMDB],[test "x$needlmdb" = "xyes"])
300
39653d75
RK
301AM_CONDITIONAL([SQLITE3], [test "x$needsqlite3" = "xyes"])
302if test "$needsqlite3"; then
303 PKG_CHECK_MODULES([SQLITE3], $SQLITE3PC,
304 [HAVE_SQLITE3=yes],
305 [AC_MSG_ERROR([Could not find sqlite3])]
306 )
307 AC_SUBST(SQLITE3_LIBS)
308 AC_SUBST(SQLITE3_CFLAGS)
309 AC_DEFINE([HAVE_SQLITE3],[1],[If we have sqlite3])
92a4978f
BH
310fi
311
64e3aade
AT
312AC_CHECK_FUNCS([localtime_r])
313
39653d75
RK
314for a in $modules; do
315 moduledirs="$moduledirs ${a}backend"
316
317 for b in `cat $srcdir/modules/${a}backend/OBJECTFILES`; do
318 moduleobjects="$moduleobjects ../modules/${a}backend/$b"
319 done
320 modulelibs="$modulelibs `cat $srcdir/modules/${a}backend/OBJECTLIBS`"
321
322 if test ${a} = "gpgsql"; then
323 LIBS="$LIBS $LIBCRYPT"
324
325 case "$host_os" in
326 freebsd*)
327 ;;
328 darwin*)
329 modulelibs="$modulelibs -lresolv"
330 ;;
331 *)
332 modulelibs="$modulelibs -lresolv -lnsl"
333 ;;
334 esac
335 fi
92a4978f
BH
336done
337
39653d75
RK
338for a in $dynmodules; do
339 moduledirs="$moduledirs ${a}backend"
92a4978f
BH
340done
341
d6e5e940
AT
342CFLAGS="$CFLAGS $PIE_CFLAGS"
343CXXFLAGS="$CXXFLAGS $PIE_CFLAGS"
344LDFLAGS="$LDFLAGS $RELRO_LDFLAGS"
345
92a4978f
BH
346AC_SUBST(LIBS)
347
bf491b87 348AC_SUBST([AM_CPPFLAGS], ['-I$(top_builddir) -I$(top_srcdir)'])
bf491b87 349
92a4978f
BH
350export moduledirs moduleobjects modulelibs
351
39653d75
RK
352AC_CONFIG_FILES([
353 Makefile
354 modules/Makefile
355 pdns/Makefile
356 codedocs/Makefile
cd42e98f 357 pdns/pdns.init
c5077b4c 358 pdns/ext/Makefile
f1d2eede
CH
359 pdns/ext/yahttp/Makefile
360 pdns/ext/yahttp/yahttp/Makefile
c5077b4c
AT
361 pdns/ext/polarssl-1.3.2/Makefile
362 pdns/ext/polarssl-1.3.2/library/Makefile
d0371c7d 363 pdns/ext/rapidjson/Makefile
39653d75
RK
364 modules/bindbackend/Makefile
365 modules/db2backend/Makefile
366 modules/geobackend/Makefile
709ca59f 367 modules/geoipbackend/Makefile
39653d75
RK
368 modules/gmysqlbackend/Makefile
369 modules/goraclebackend/Makefile
370 modules/gpgsqlbackend/Makefile
371 modules/gsqlite3backend/Makefile
372 modules/ldapbackend/Makefile
373 modules/luabackend/Makefile
374 modules/mydnsbackend/Makefile
375 modules/opendbxbackend/Makefile
376 modules/oraclebackend/Makefile
377 modules/pipebackend/Makefile
378 modules/randombackend/Makefile
379 modules/remotebackend/Makefile
380 modules/tinydnsbackend/Makefile
6a85d81e 381 modules/lmdbbackend/Makefile
39653d75 382])
6867a5ad 383AC_OUTPUT
39653d75 384