]> git.ipfire.org Git - thirdparty/pdns.git/blame - configure.ac
Revert "Fix compiling mydns module without gmysql module"
[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"
39653d75
RK
168 THREADFLAGS="-pthread"
169 CXXFLAGS="-D_GNU_SOURCE $CXXFLAGS"
170 ;;
bf5a4844 171darwin*)
39653d75
RK
172 AC_DEFINE(HAVE_IPV6,1,[If the host operating system understands IPv6])
173 DYNLINKFLAGS="-rdynamic"
625f59db 174 CXXFLAGS="-D__APPLE_USE_RFC_3542 $CXXFLAGS"
39653d75
RK
175 AM_CONDITIONAL([OS_MACOSX], true)
176 ;;
92a4978f 177*)
39653d75
RK
178 AC_DEFINE(HAVE_IPV6,1,[If the host operating system understands IPv6])
179 DYNLINKFLAGS="-rdynamic"
180 LDFLAGS="-pthread $LDFLAGS"
181 CXXFLAGS="-pthread $CXXFLAGS"
182 ;;
92a4978f
BH
183esac
184
185AC_SUBST(THREADFLAGS)
92a4978f
BH
186AC_SUBST(DYNLINKFLAGS)
187
8ffe1c55 188PDNS_ENABLE_VERBOSE_LOGGING
08bc56f4 189PDNS_WITH_SYSTEM_POLARSSL
5b117c5e 190PDNS_ENABLE_BOTAN
8daea594 191PDNS_ENABLE_PKCS11
1f0f33bc 192PDNS_WITH_CRYPTOPP
2239e91b 193PDNS_ENABLE_REMOTEBACKEND_ZEROMQ
a7db8aa6 194
fe8ef8d9 195AC_MSG_CHECKING([whether we will be building static binaries])
92a4978f 196
39653d75 197AC_ARG_ENABLE([static-binaries],
fe8ef8d9
RK
198 [AS_HELP_STRING([--enable-static-binaries],[build static binaries @<:@default=no@:>@])],
199 [static=$enableval],
200 [static=no],
39653d75
RK
201)
202AC_MSG_RESULT([$static])
fe8ef8d9
RK
203AM_CONDITIONAL([ALLSTATIC], [test "x$static" != "xno"])
204AS_IF([test "x$static" != "xno"],
205 [LDFLAGS="-all-static $LDFLAGS"]
7181b2fd 206)
92a4978f 207
e53a4bf6 208modules="bind gmysql geo random"
39653d75 209AC_ARG_WITH([modules],
ae2f3feb 210 [AS_HELP_STRING([--with-modules],[which backends to compile with @<:@default=bind gmysql geo random@:>@])],
39653d75
RK
211 [modules="$withval"]
212)
92a4978f
BH
213
214dynmodules="pipe"
39653d75
RK
215AC_ARG_WITH([dynmodules],
216 [AS_HELP_STRING([--with-dynmodules],[which backends to build for dynamic loading @<:@default=pipe@:>@])],
217 [dynmodules="$withval"]
218)
92a4978f
BH
219
220AC_SUBST(socketdir)
221socketdir="/var/run"
39653d75
RK
222AC_ARG_WITH([socketdir],
223 [AS_HELP_STRING([--with-socketdir],[where the controlsocket lives @<:@default=/var/run@:>@])],
224 [socketdir="$withval"]
225)
92a4978f
BH
226
227AC_SUBST(moduledirs)
228AC_SUBST(moduleobjects)
229AC_SUBST(modulelibs)
39653d75 230AC_DEFINE_UNQUOTED([PDNS_MODULES],"$modules", [Built-in modules])
92a4978f 231
39653d75
RK
232AC_MSG_CHECKING([whether we will be building the server])
233AC_ARG_ENABLE([pdns-server],
234 [AS_HELP_STRING([--enable-pdns_server],[if we should build the server @<:@default=yes@:>@])],
235 [enable_pdns_server=$enableval],
236 [enable_pdns_server=yes]
237)
238AC_MSG_RESULT([$enable_pdns_server])
92a4978f 239
39653d75
RK
240AS_IF([test "x$enable_pdns_server" = "xyes"],
241 [programdescend=pdns]
242)
92a4978f
BH
243
244AC_SUBST(programdescend)
245
39653d75
RK
246AC_ARG_ENABLE([gcc-skip-locking],
247 [AS_HELP_STRING([--enable-gcc-skip-locking],[if we should forcefully skip gcc locking @<:@default=no@:>@])],
248 [AC_DEFINE(GCC_SKIP_LOCKING,[],[Skip gcc locking])],
249)
250
251AC_MSG_CHECKING([whether we will be building and installing the extra tools])
252AC_ARG_ENABLE([tools],
253 [AS_HELP_STRING([--enable-tools],[if we should build and install the tools @<:@default=no@:>@])],
254 [enable_tools=$enableval],
255 [enable_tools=no]
256)
257
258AC_MSG_RESULT([$enable_tools])
fd9b086f 259AM_CONDITIONAL([TOOLS],[test "x$enable_tools" != "xno"])
39653d75
RK
260
261for a in $modules $dynmodules; do
262 case "$a" in
263 oracle|goracle)
264 PDNS_WITH_ORACLE
265 needoracle=yes
266 ;;
6a85d81e
MZ
267 lmdb)
268 PDNS_WITH_LMDB
cec11b41 269 needlmdb=yes
6a85d81e 270 ;;
39653d75
RK
271 mydns|gmysql|pdns)
272 PDNS_WITH_MYSQL
273 ;;
274 gpgsql)
275 PDNS_WITH_POSTGRESQL
276 ;;
277 gsqlite3)
278 needsqlite3=yes
279 ;;
280 ldap)
281 PDNS_CHECK_LDAP
282 ;;
283 opendbx)
284 PDNS_CHECK_OPENDBX
285 ;;
286 tinydns)
287 PDNS_CHECK_CDB
288 ;;
709ca59f
AT
289 geoip)
290 PDNS_CHECK_GEOIP
291 ;;
a20adc10
RK
292 lua)
293 AS_IF([test "x$with_lua" = "xno"],
294 AC_MSG_ERROR([Lua backend needs lua, run ./configure --with-lua])
295 )
296 AS_IF([test "x$LUAPC" = "x"],
297 AC_MSG_ERROR([Lua backend needs lua but we cannot find it])
298 )
299 ;;
39653d75 300 esac
92a4978f
BH
301done
302
39653d75
RK
303AM_CONDITIONAL([ORACLE],[test "x$needoracle" = "xyes"])
304
cec11b41
KM
305AM_CONDITIONAL([LMDB],[test "x$needlmdb" = "xyes"])
306
39653d75
RK
307AM_CONDITIONAL([SQLITE3], [test "x$needsqlite3" = "xyes"])
308if test "$needsqlite3"; then
309 PKG_CHECK_MODULES([SQLITE3], $SQLITE3PC,
310 [HAVE_SQLITE3=yes],
311 [AC_MSG_ERROR([Could not find sqlite3])]
312 )
313 AC_SUBST(SQLITE3_LIBS)
314 AC_SUBST(SQLITE3_CFLAGS)
315 AC_DEFINE([HAVE_SQLITE3],[1],[If we have sqlite3])
92a4978f
BH
316fi
317
64e3aade
AT
318AC_CHECK_FUNCS([localtime_r])
319
39653d75
RK
320for a in $modules; do
321 moduledirs="$moduledirs ${a}backend"
322
323 for b in `cat $srcdir/modules/${a}backend/OBJECTFILES`; do
324 moduleobjects="$moduleobjects ../modules/${a}backend/$b"
325 done
326 modulelibs="$modulelibs `cat $srcdir/modules/${a}backend/OBJECTLIBS`"
327
328 if test ${a} = "gpgsql"; then
329 LIBS="$LIBS $LIBCRYPT"
330
331 case "$host_os" in
332 freebsd*)
333 ;;
334 darwin*)
335 modulelibs="$modulelibs -lresolv"
336 ;;
337 *)
338 modulelibs="$modulelibs -lresolv -lnsl"
339 ;;
340 esac
341 fi
92a4978f
BH
342done
343
39653d75
RK
344for a in $dynmodules; do
345 moduledirs="$moduledirs ${a}backend"
92a4978f
BH
346done
347
0ed6ba22
RK
348CFLAGS="$PIE_CFLAGS $CFLAGS"
349CXXFLAGS="$PIE_CFLAGS $CXXFLAGS"
350LDFLAGS="$RELRO_LDFLAGS $LDFLAGS"
d6e5e940 351
92a4978f
BH
352AC_SUBST(LIBS)
353
aa357125
RK
354AC_SUBST([AM_CPPFLAGS],
355 ["AS_ESCAPE([-I$(top_builddir) -I$(top_srcdir)]) $THREADFLAGS $BOOST_CPPFLAGS"]
356)
bf491b87 357
92a4978f
BH
358export moduledirs moduleobjects modulelibs
359
39653d75
RK
360AC_CONFIG_FILES([
361 Makefile
362 modules/Makefile
363 pdns/Makefile
364 codedocs/Makefile
cd42e98f 365 pdns/pdns.init
c5077b4c 366 pdns/ext/Makefile
f1d2eede
CH
367 pdns/ext/yahttp/Makefile
368 pdns/ext/yahttp/yahttp/Makefile
c5077b4c
AT
369 pdns/ext/polarssl-1.3.2/Makefile
370 pdns/ext/polarssl-1.3.2/library/Makefile
d0371c7d 371 pdns/ext/rapidjson/Makefile
39653d75
RK
372 modules/bindbackend/Makefile
373 modules/db2backend/Makefile
374 modules/geobackend/Makefile
709ca59f 375 modules/geoipbackend/Makefile
39653d75
RK
376 modules/gmysqlbackend/Makefile
377 modules/goraclebackend/Makefile
378 modules/gpgsqlbackend/Makefile
379 modules/gsqlite3backend/Makefile
380 modules/ldapbackend/Makefile
381 modules/luabackend/Makefile
382 modules/mydnsbackend/Makefile
383 modules/opendbxbackend/Makefile
384 modules/oraclebackend/Makefile
385 modules/pipebackend/Makefile
386 modules/randombackend/Makefile
387 modules/remotebackend/Makefile
388 modules/tinydnsbackend/Makefile
6a85d81e 389 modules/lmdbbackend/Makefile
39653d75 390])
6867a5ad 391AC_OUTPUT
39653d75 392