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