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