]>
Commit | Line | Data |
---|---|---|
39653d75 RK |
1 | AC_PREREQ([2.61]) |
2 | ||
ba1a571d CH |
3 | dnl The following lines may be patched by set-version-auth. |
4 | AC_INIT([pdns], [git]) | |
5 | dnl AC_SUBST([DIST_HOST], [TO_BE_PATCHED]) | |
6 | dnl End patch area. | |
39653d75 | 7 | |
6707cb12 | 8 | AC_CONFIG_SRCDIR([pdns/receiver.cc]) |
39653d75 RK |
9 | AC_CONFIG_MACRO_DIR([m4]) |
10 | AC_CONFIG_HEADERS([config.h]) | |
11 | AC_CONFIG_AUX_DIR([build-aux]) | |
12 | ||
62423be7 | 13 | AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip tar-ustar -Wno-portability subdir-objects 1.11]) |
dcf224eb | 14 | AM_SILENT_RULES([yes]) |
39653d75 | 15 | |
92a4978f | 16 | AC_CANONICAL_HOST |
5801cd92 | 17 | : ${CXXFLAGS="-Wall -g -O2"} |
39653d75 | 18 | |
92a4978f | 19 | AC_PROG_CC |
dd50be34 | 20 | AM_PROG_CC_C_O |
92a4978f BH |
21 | AC_PROG_YACC |
22 | AM_PROG_LEX | |
23 | AC_PROG_INSTALL | |
24 | AC_PROG_MAKE_SET | |
39653d75 | 25 | |
27a4e655 RK |
26 | AC_PROG_CXX |
27 | AS_IF([test "x$CXX" = "xno" || test "x$CXX:x$GXX" = "xg++:x"], | |
28 | AC_MSG_ERROR([no C++ compiler found]) | |
29 | ) | |
30 | ||
66da2833 | 31 | AC_LANG([C++]) |
92a4978f | 32 | |
d6e5e940 AT |
33 | AC_CC_PIE |
34 | AC_CC_STACK_PROTECTOR | |
1a761e27 | 35 | AC_CC_PARAM_SSP_BUFFER_SIZE([4]) |
5801cd92 | 36 | AC_CC_D_FORTIFY_SOURCE |
d6e5e940 | 37 | |
9d44a523 AT |
38 | AC_CHECK_FUNC([socket], [], [ |
39 | AC_CHECK_LIB([socket], [socket], [LIBS="-lsocket $LIBS"]) | |
40 | ]) | |
41 | ||
42 | AC_CHECK_FUNC([gethostent], [], [ | |
43 | AC_CHECK_LIB([nsl], [gethostent], [LIBS="-lnsl $LIBS"]) | |
44 | ]) | |
45 | ||
59414d0e | 46 | m4_ifndef([LT_INIT],[ |
dbff3daf | 47 | AC_PROG_LIBTOOL([disable-static]) |
59414d0e | 48 | ],[ |
dbff3daf | 49 | LT_INIT([disable-static]) |
59414d0e RK |
50 | ]) |
51 | ||
d6e5e940 AT |
52 | AC_LD_RELRO |
53 | ||
96ae9a2e KM |
54 | MC_TM_GMTOFF |
55 | ||
39653d75 RK |
56 | AM_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. | |
61 | eval full_libdir="\"$libdir\"" | |
39653d75 | 62 | |
4ae885ac PD |
63 | # detect pkg-config explicitly |
64 | PKG_PROG_PKG_CONFIG | |
65 | ||
e3881b46 | 66 | PDNS_CHECK_RAGEL |
051f0aaa | 67 | AC_CHECK_PROG([ASCIIDOC], [asciidoc], [asciidoc]) |
d81a3e14 | 68 | |
051f0aaa | 69 | PDNS_WITH_LUA |
d81a3e14 | 70 | |
4d220500 | 71 | BOOST_REQUIRE([1.35]) |
92a4978f | 72 | BOOST_FOREACH |
92a4978f BH |
73 | BOOST_PROGRAM_OPTIONS([mt]) |
74 | BOOST_SERIALIZATION([mt]) | |
051f0aaa | 75 | |
fedea66a | 76 | PDNS_ENABLE_UNIT_TESTS |
051f0aaa | 77 | |
32869e14 | 78 | dnl Allow user to require SQLite3 |
39653d75 RK |
79 | AC_MSG_CHECKING([whether user requires sqlite3]) |
80 | AC_ARG_WITH([sqlite3], | |
81 | [AS_HELP_STRING([--with-sqlite3],[include sqlite3 driver @<:@default=no@:>@])], | |
82 | [WITH_SQLITE3=$withval], | |
83 | [WITH_SQLITE3=no] | |
84 | ) | |
85 | AC_MSG_RESULT([$WITH_SQLITE3]) | |
32869e14 PD |
86 | SQLITE3PC=sqlite3 |
87 | if test "$WITH_SQLITE3" != "no"; then | |
88 | needsqlite3=yes | |
89 | if test "$WITH_SQLITE3" != "yes"; then | |
90 | SQLITE3PC=$WITH_SQLITE3 | |
91 | fi | |
92 | fi | |
93 | ||
92a4978f BH |
94 | dnl Checks for typedefs, structures, and compiler characteristics. |
95 | AC_TYPE_SIZE_T | |
92a4978f BH |
96 | |
97 | dnl Checks for library functions. | |
39653d75 | 98 | AC_CHECK_FUNCS([strcasestr]) |
92a4978f BH |
99 | |
100 | # Check for libdl | |
92a4978f BH |
101 | my_save_LIBS="$LIBS" |
102 | LIBS="" | |
103 | AC_CHECK_LIB(dl,dlopen) | |
104 | LIBDL=$LIBS | |
105 | LIBS="$my_save_LIBS" | |
106 | AC_SUBST(LIBDL) | |
107 | ||
108 | AC_MSG_CHECKING([for RTLD_NOW]); | |
109 | ac_save_LIBS="$LIBS" | |
110 | LIBS="$LIBS $LIBDL" | |
67e8df4c RK |
111 | AC_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 | 116 | AC_MSG_RESULT([$has_RTLD_NOW]) |
39653d75 RK |
117 | if test "$has_RTLD_NOW" = "no"; then |
118 | AC_DEFINE(NEED_RTLD_NOW,,[If host OS misses RTLD_NOW]) | |
92a4978f BH |
119 | fi |
120 | LIBS=$ac_save_LIBS | |
121 | ||
c2a155b1 PD |
122 | # Check for libcrypt |
123 | ||
124 | my_save_LIBS="$LIBS" | |
125 | LIBS="" | |
126 | AC_CHECK_LIB(crypt, crypt) | |
127 | LIBCRYPT=$LIBS | |
128 | LIBS="$my_save_LIBS" | |
129 | AC_SUBST(LIBCRYPT) | |
130 | ||
92a4978f BH |
131 | DYNLINKFLAGS="" |
132 | THREADFLAGS="" | |
133 | ||
642fb7d7 | 134 | AM_CONDITIONAL([OS_MACOSX], false) |
92a4978f BH |
135 | case "$host_os" in |
136 | solaris2.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 | 142 | solaris2.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 | 149 | solaris2.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 | 155 | linux*) |
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 | 162 | darwin*) |
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 |
175 | esac |
176 | ||
177 | AC_SUBST(THREADFLAGS) | |
92a4978f BH |
178 | AC_SUBST(DYNLINKFLAGS) |
179 | ||
8ffe1c55 | 180 | PDNS_ENABLE_VERBOSE_LOGGING |
08bc56f4 | 181 | PDNS_WITH_SYSTEM_POLARSSL |
5b117c5e | 182 | PDNS_ENABLE_BOTAN |
8daea594 | 183 | PDNS_ENABLE_PKCS11 |
1f0f33bc | 184 | PDNS_WITH_CRYPTOPP |
2239e91b | 185 | PDNS_ENABLE_REMOTEBACKEND_ZEROMQ |
a7db8aa6 | 186 | |
39653d75 | 187 | AC_MSG_CHECKING([whether we should build static binaries]) |
92a4978f | 188 | |
39653d75 RK |
189 | AC_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 | ) | |
198 | AC_MSG_RESULT([$static]) | |
92a4978f | 199 | |
39653d75 | 200 | AM_CONDITIONAL([ALLSTATIC], [test "x$static" = "xtrue"]) |
92a4978f | 201 | |
39653d75 RK |
202 | if test "x$static" = "xtrue"; then |
203 | LDFLAGS="-all-static $LDFLAGS" | |
92a4978f BH |
204 | fi |
205 | ||
e53a4bf6 | 206 | modules="bind gmysql geo random" |
39653d75 | 207 | AC_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 | |
212 | dynmodules="pipe" | |
39653d75 RK |
213 | AC_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 | |
218 | AC_SUBST(socketdir) | |
219 | socketdir="/var/run" | |
39653d75 RK |
220 | AC_ARG_WITH([socketdir], |
221 | [AS_HELP_STRING([--with-socketdir],[where the controlsocket lives @<:@default=/var/run@:>@])], | |
222 | [socketdir="$withval"] | |
223 | ) | |
92a4978f BH |
224 | |
225 | AC_SUBST(moduledirs) | |
226 | AC_SUBST(moduleobjects) | |
227 | AC_SUBST(modulelibs) | |
39653d75 | 228 | AC_DEFINE_UNQUOTED([PDNS_MODULES],"$modules", [Built-in modules]) |
92a4978f | 229 | |
39653d75 RK |
230 | AC_MSG_CHECKING([whether we will be building the server]) |
231 | AC_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 | ) | |
236 | AC_MSG_RESULT([$enable_pdns_server]) | |
92a4978f | 237 | |
39653d75 RK |
238 | AS_IF([test "x$enable_pdns_server" = "xyes"], |
239 | [programdescend=pdns] | |
240 | ) | |
92a4978f BH |
241 | |
242 | AC_SUBST(programdescend) | |
243 | ||
39653d75 RK |
244 | AC_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 | ||
249 | AC_MSG_CHECKING([whether we will be building and installing the extra tools]) | |
250 | AC_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 | ||
256 | AC_MSG_RESULT([$enable_tools]) | |
fd9b086f | 257 | AM_CONDITIONAL([TOOLS],[test "x$enable_tools" != "xno"]) |
39653d75 RK |
258 | |
259 | for 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 |
288 | done |
289 | ||
39653d75 RK |
290 | AM_CONDITIONAL([ORACLE],[test "x$needoracle" = "xyes"]) |
291 | ||
cec11b41 KM |
292 | AM_CONDITIONAL([LMDB],[test "x$needlmdb" = "xyes"]) |
293 | ||
39653d75 RK |
294 | AM_CONDITIONAL([SQLITE3], [test "x$needsqlite3" = "xyes"]) |
295 | if 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 |
303 | fi |
304 | ||
64e3aade AT |
305 | AC_CHECK_FUNCS([localtime_r]) |
306 | ||
39653d75 RK |
307 | for 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 |
329 | done |
330 | ||
39653d75 RK |
331 | for a in $dynmodules; do |
332 | moduledirs="$moduledirs ${a}backend" | |
92a4978f BH |
333 | done |
334 | ||
d6e5e940 AT |
335 | CFLAGS="$CFLAGS $PIE_CFLAGS" |
336 | CXXFLAGS="$CXXFLAGS $PIE_CFLAGS" | |
337 | LDFLAGS="$LDFLAGS $RELRO_LDFLAGS" | |
338 | ||
92a4978f BH |
339 | AC_SUBST(LIBS) |
340 | ||
bf491b87 RK |
341 | AC_SUBST([AM_CPPFLAGS], ['-I$(top_builddir) -I$(top_srcdir)']) |
342 | AC_SUBST([AM_CXXFLAGS], ['-I$(top_builddir) -I$(top_srcdir)']) | |
343 | ||
92a4978f BH |
344 | export moduledirs moduleobjects modulelibs |
345 | ||
39653d75 RK |
346 | AC_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 | 376 | AC_OUTPUT |
39653d75 | 377 |