2 # Process this file with autoconf to produce a configure script.
5 AC_INIT(ldns, 1.6.13, libdns@nlnetlabs.nl,libdns)
6 AC_CONFIG_SRCDIR([ldns-read-zone.c])
7 sinclude(../acx_nlnetlabs.m4)
10 CPPFLAGS=${CPPFLAGS:-${OURCPPFLAGS}}
12 CFLAGS=${CFLAGS:-${OURCFLAGS}}
13 AC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled])
16 # Checks for programs.
19 AC_CHECK_PROGS(libtool, [glibtool libtool15 libtool], [../libtool])
21 ACX_CHECK_COMPILER_FLAG(std=c99, [C99FLAG="-std=c99"])
22 ACX_CHECK_COMPILER_FLAG(xc99, [C99FLAG="-xc99"])
25 [AC_HELP_STRING([--disable-rpath], [Disable hardcoded rpath (default=enabled)])],
26 enable_rpath=$enableval, enable_rpath=yes)
28 if test "x$enable_rpath" = xyes; then
29 RPATH_VAL="-Wl,-rpath=\${libdir}"
34 ACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"])
36 ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600,
57 t = ctime_r(&time, buf);
60 a = getopt(2, opts, "a");
64 ], [CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600"])
67 ACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG, [#include <stdbool.h>], [CFLAGS="$CFLAGS $C99FLAG"])
70 AC_CHECK_TYPE(int8_t, char)
71 AC_CHECK_TYPE(int16_t, short)
72 AC_CHECK_TYPE(int32_t, int)
73 AC_CHECK_TYPE(int64_t, long long)
74 AC_CHECK_TYPE(uint8_t, unsigned char)
75 AC_CHECK_TYPE(uint16_t, unsigned short)
76 AC_CHECK_TYPE(uint32_t, unsigned int)
77 AC_CHECK_TYPE(uint64_t, unsigned long long)
78 AC_CHECK_TYPE(ssize_t, int)
80 AC_CHECK_HEADERS([sys/types.h getopt.h stdlib.h stdio.h assert.h netinet/in.h ctype.h time.h pcap.h arpa/inet.h sys/time.h sys/socket.h sys/select.h netdb.h],,, [AC_INCLUDES_DEFAULT])
81 AC_CHECK_HEADERS([winsock2.h ws2tcpip.h],,, [AC_INCLUDES_DEFAULT])
82 AC_CHECK_HEADERS([netinet/in_systm.h net/if.h netinet/ip.h netinet/udp.h netinet/igmp.h netinet/if_ether.h netinet/ip6.h],,, [
84 #ifdef HAVE_NETINET_IN_SYSTM_H
85 #include <netinet/in_systm.h>
87 #ifdef HAVE_NETINET_IN_H
88 #include <netinet/in.h>
90 #ifdef HAVE_SYS_SOCKET_H
91 #include <sys/socket.h>
98 AC_CHECK_HEADERS([sys/param.h sys/mount.h],,,
103 # include <sys/param.h>
107 AC_CHECK_TYPE(in_addr_t, [], [AC_DEFINE([in_addr_t], [uint32_t], [in_addr_t])], [
109 # include <sys/types.h>
111 #if HAVE_NETINET_IN_H
112 # include <netinet/in.h>
114 AC_CHECK_TYPE(in_port_t, [], [AC_DEFINE([in_port_t], [uint16_t], [in_port_t])], [
116 # include <sys/types.h>
118 #if HAVE_NETINET_IN_H
119 # include <netinet/in.h>
122 # check to see if libraries are needed for these functions.
123 AC_SEARCH_LIBS(socket, socket)
126 AC_SEARCH_LIBS(inet_pton, nsl)
127 AC_SUBST(LIBNSL_LIBS,$LIBS)
130 tmp_CPPFLAGS="$CPPFLAGS"
131 tmp_LDFLAGS="$LDFLAGS"
134 ACX_WITH_SSL_OPTIONAL
136 AC_SUBST(LIBSSL_CPPFLAGS)
137 AC_SUBST(LIBSSL_LDFLAGS)
138 AC_SUBST(LIBSSL_LIBS)
140 CPPFLAGS="$tmp_CPPFLAGS"
141 LDFLAGS="$tmp_LDFLAGS"
144 # use libcrypto to check the following:
145 tmp_LDFLAGS="$LDFLAGS"
147 LDFLAGS="$LDFLAGS $LIBSSL_LDFLAGS"
148 LIBS="$LIBS $LIBSSL_LIBS"
149 AC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support]))
150 case "$enable_sha2" in
154 AC_MSG_CHECKING(for SHA256 and SHA512)
155 AC_CHECK_FUNC(SHA256_Init,, [
156 AC_MSG_ERROR([SHA2 enabled, but no SHA2 functions found in OpenSSL])
158 AC_DEFINE_UNQUOTED([USE_SHA2], [1], [Define this to enable SHA256 and SHA512 support.])
162 AC_ARG_ENABLE(gost, AC_HELP_STRING([--disable-gost], [Disable GOST support]))
163 case "$enable_gost" in
167 if test "x$HAVE_SSL" != "xyes"; then
168 AC_MSG_ERROR([GOST enabled, but no SSL support])
170 AC_MSG_CHECKING(for GOST)
171 AC_CHECK_FUNC(EVP_PKEY_set_type_str, [],[AC_MSG_ERROR([OpenSSL >= 1.0.0 is needed for GOST support or rerun with --disable-gost])])
172 AC_CHECK_FUNC(EC_KEY_new, [], [AC_MSG_ERROR([No ECC functions found in OpenSSL: please upgrade OpenSSL or rerun with --disable-gost])])
173 AC_DEFINE_UNQUOTED([USE_GOST], [1], [Define this to enable GOST support.])
177 AC_ARG_ENABLE(ecdsa, AC_HELP_STRING([--enable-ecdsa], [Enable ECDSA support, experimental]))
178 case "$enable_ecdsa" in
180 AC_CHECK_FUNC(ECDSA_sign,,[AC_MSG_ERROR([OpenSSL does not support ECDSA])])
181 AC_DEFINE_UNQUOTED([USE_ECDSA], [1], [Define this to enable ECDSA support.])
183 *****************************************************************
184 *** YOU HAVE ENABLED ECDSA WHICH IS EXPERIMENTAL AT THIS TIME ***
185 *** PLEASE DO NOT USE THIS ON THE PUBLIC INTERNET ***
186 *****************************************************************])
192 LDFLAGS="$tmp_LDFLAGS"
195 #AC_CHECK_HEADER(ldns/ldns.h,, [
196 # AC_MSG_ERROR([Can't find ldns headers (make copy-headers in devel source.)])
197 # ], [AC_INCLUDES_DEFAULT]
200 AC_CHECK_LIB(pcap, pcap_open_offline,, [
201 AC_MSG_WARN([Can't find pcap library (needed for ldns-dpa, will not build dpa now.)])
206 AC_DEFUN([AC_CHECK_GETADDRINFO_WITH_INCLUDES],
207 [AC_REQUIRE([AC_PROG_CC])
208 AC_MSG_CHECKING(for getaddrinfo)
209 AC_CACHE_VAL(ac_cv_func_getaddrinfo,
210 [ac_cv_func_getaddrinfo=no
218 char* (*f) () = getaddrinfo;
227 dnl this case on linux, solaris, bsd
228 [ac_cv_func_getaddrinfo="yes"],
229 dnl no quick getaddrinfo, try mingw32 and winsock2 library.
231 LIBS="$LIBS -lws2_32"
235 #ifdef HAVE_WS2TCPIP_H
236 #include <ws2tcpip.h>
240 (void)getaddrinfo(NULL, NULL, NULL, NULL);
243 [ac_cv_func_getaddrinfo="yes"
244 LDFLAGS="$LDFLAGS -lws2_32"
246 [ac_cv_func_getaddrinfo="no"
252 AC_MSG_RESULT($ac_cv_func_getaddrinfo)
253 if test $ac_cv_func_getaddrinfo = yes; then
254 AC_DEFINE(HAVE_GETADDRINFO, 1, [Whether getaddrinfo is available])
258 AC_CHECK_GETADDRINFO_WITH_INCLUDES
261 AC_CHECK_FUNCS(isblank srandom random sleep)
262 AC_CHECK_DECLS([in6addr_any],,,[AC_INCLUDES_DEFAULT
263 #ifdef HAVE_SYS_SOCKET_H
264 #include <sys/socket.h>
269 #ifdef HAVE_SYS_TIME_H
270 #include <sys/time.h>
272 #ifdef HAVE_SYS_SELECT_H
273 #include <sys/select.h>
275 #ifdef HAVE_ARPA_INET_H
276 #include <arpa/inet.h>
278 #ifdef HAVE_NETINET_IN_H
279 #include <netinet/in.h>
281 #ifdef HAVE_NETINET_UDP_H
282 #include <netinet/udp.h>
284 #ifdef HAVE_NETINET_IGMP_H
285 #include <netinet/igmp.h>
291 AC_HELP_STRING([--with-ldns=PATH specify prefix of path of ldns library to use])
294 specialldnsdir="$withval"
295 CPPFLAGS="$CPPFLAGS -I$withval/include"
296 LDFLAGS="-L$withval -L$withval/lib $LDFLAGS"
301 # check for ldns development source tree
302 AC_MSG_CHECKING([for ldns devel source])
304 if test -f $ldns_dev_dir/ldns/util.h && \
305 grep LDNS_VERSION $ldns_dev_dir/ldns/util.h >/dev/null; then
306 ldns_version=`grep LDNS_VERSION $ldns_dev_dir/ldns/util.h | sed -e 's/^.*"\(.*\)".*$/\1/'`
307 AC_MSG_RESULT([using $ldns_dev_dir with $ldns_version])
308 CPPFLAGS="$CPPFLAGS -I$ldns_dev_dir/include"
309 LDFLAGS="-L$ldns_dev_dir -L$ldns_dev_dir/lib $LDFLAGS"
311 AC_DEFINE(HAVE_LIBLDNS, 1, [If the ldns library is available.])
312 LDNSDIR="$ldns_dev_dir"
315 AC_CHECK_LIB(ldns, ldns_rr_new,, [
316 AC_MSG_ERROR([Can't find ldns library])
340 #ifdef HAVE_SYS_SOCKET_H
341 #include <sys/socket.h>
344 #ifdef HAVE_NETINET_IN_H
345 #include <netinet/in.h>
348 #ifdef HAVE_ARPA_INET_H
349 #include <arpa/inet.h>
352 #ifdef HAVE_NETINET_UDP_H
353 #include <netinet/udp.h>
364 #ifdef HAVE_NETINET_IN_SYSTM_H
365 #include <netinet/in_systm.h>
368 #ifdef HAVE_NETINET_IP_H
369 #include <netinet/ip.h>
376 #ifdef HAVE_NETINET_IF_ETHER_H
377 #include <netinet/if_ether.h>
380 #ifdef HAVE_WINSOCK2_H
381 #define USE_WINSOCK 1
382 #include <winsock2.h>
385 #ifdef HAVE_WS2TCPIP_H
386 #include <ws2tcpip.h>
389 #ifndef HAVE_GETADDRINFO
390 #include <fake-rfc2553.h>
394 /* random can be replaced by rand for ldnsexamples */
399 /* srandom can be replaced by srand for ldnsexamples */
400 #define srandom srand
404 extern int optind, opterr;
407 #define EXIT_FAILURE 1
410 #define EXIT_SUCCESS 0
414 #define FD_ZERO(a) /* a */
415 #define FD_SET(a,b) /* a, b */
419 AC_CONFIG_FILES([Makefile])
420 AC_CONFIG_HEADER([config.h])