1238104Sdes#                                               -*- Autoconf -*-
2238104Sdes# Process this file with autoconf to produce a configure script.
3238104Sdes
4238104SdesAC_PREREQ(2.56)
5269257SdesAC_INIT(ldns, 1.6.17, libdns@nlnetlabs.nl,libdns)
6238104SdesAC_CONFIG_SRCDIR([drill.c])
7238104Sdessinclude(../acx_nlnetlabs.m4)
8238104Sdes
9238104SdesOURCPPFLAGS=''
10238104SdesCPPFLAGS=${CPPFLAGS:-${OURCPPFLAGS}}
11238104SdesOURCFLAGS='-g'
12238104SdesCFLAGS=${CFLAGS:-${OURCFLAGS}}
13238104SdesAC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled])
14238104Sdes
15238104SdesAC_AIX
16238104Sdes# Checks for programs.
17238104SdesAC_PROG_CC
18238104SdesAC_PROG_MAKE_SET
19238104SdesAC_CHECK_PROGS(libtool, [glibtool libtool15 libtool], [../libtool])
20238104Sdes
21238104Sdes# add option to disable the evil rpath
22238104Sdesdnl Check whether to use rpath or not
23238104SdesAC_ARG_ENABLE(rpath,
24238104Sdes        [  --disable-rpath                disable hardcoded rpath (default=enabled)],
25238104Sdes	enable_rpath=$enableval, enable_rpath=yes)
26238104Sdes
27238104Sdesif test "x$enable_rpath" = xyes; then
28238104Sdes    RPATH_VAL="-Wl,-rpath=\${libdir}"
29238104Sdesfi
30238104Sdes
31238104Sdes
32238104SdesACX_CHECK_COMPILER_FLAG(std=c99, [C99FLAG="-std=c99"])
33238104SdesACX_CHECK_COMPILER_FLAG(xc99, [C99FLAG="-xc99"])
34238104Sdes
35238104SdesAC_TYPE_SIZE_T
36238104SdesACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="$CFLAGS -O2"])
37238104Sdes
38238104SdesACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600,
39238104Sdes[
40238104Sdes#include "confdefs.h"
41238104Sdes#include <stdlib.h>
42238104Sdes#include <ctype.h>
43238104Sdes#include <sys/time.h>
44238104Sdes#ifdef HAVE_TIME_H
45238104Sdes#include <time.h>
46238104Sdes#endif
47238104Sdes#include <unistd.h>
48238104Sdes#ifdef HAVE_GETOPT_H
49238104Sdes#include <getopt.h>
50238104Sdes#endif
51238104Sdes
52238104Sdesint test() {
53238104Sdes	int a;
54238104Sdes	char **opts = NULL;
55238104Sdes	struct timeval tv;
56238104Sdes	char *t;
57238104Sdes	time_t time = 0;
58238104Sdes	char *buf = NULL;
59238104Sdes	t = ctime_r(&time, buf);
60238104Sdes	tv.tv_usec = 10;
61238104Sdes	srandom(32);
62238104Sdes	a = getopt(2, opts, "a");
63238104Sdes	a = isascii(32);
64238104Sdes	return a;
65238104Sdes}
66238104Sdes], [CFLAGS="$CFLAGS $C99FLAG -D__EXTENSIONS__ -D_BSD_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600"])
67238104Sdes
68238104Sdes
69238104SdesACX_CHECK_COMPILER_FLAG_NEEDED($C99FLAG, [#include <stdbool.h>], [CFLAGS="$CFLAGS $C99FLAG"])
70238104Sdes
71238104SdesAC_C_INLINE
72238104SdesAC_CHECK_TYPE(int8_t, char)
73238104SdesAC_CHECK_TYPE(int16_t, short)
74238104SdesAC_CHECK_TYPE(int32_t, int)
75238104SdesAC_CHECK_TYPE(int64_t, long long)
76238104SdesAC_CHECK_TYPE(uint8_t, unsigned char)
77238104SdesAC_CHECK_TYPE(uint16_t, unsigned short)
78238104SdesAC_CHECK_TYPE(uint32_t, unsigned int)
79238104SdesAC_CHECK_TYPE(uint64_t, unsigned long long)
80238104SdesAC_CHECK_TYPE(ssize_t, int)
81238104Sdes
82238104SdesAC_CHECK_HEADERS([sys/types.h getopt.h stdlib.h stdio.h assert.h netinet/in.h ctype.h time.h arpa/inet.h sys/time.h sys/socket.h sys/select.h],,, [AC_INCLUDES_DEFAULT])
83238104SdesAC_CHECK_HEADERS([netinet/in_systm.h net/if.h netinet/ip.h netinet/udp.h netinet/if_ether.h netinet/ip6.h],,, [
84238104SdesAC_INCLUDES_DEFAULT 
85238104Sdes#ifdef HAVE_NETINET_IN_SYSTM_H
86238104Sdes#include <netinet/in_systm.h>
87238104Sdes#endif
88238104Sdes#ifdef HAVE_NETINET_IN_H
89238104Sdes#include <netinet/in.h>
90238104Sdes#endif
91238104Sdes#ifdef HAVE_SYS_SOCKET_H
92238104Sdes#include <sys/socket.h>
93238104Sdes#endif
94238104Sdes#ifdef HAVE_NET_IF_H
95238104Sdes#include <net/if.h>
96238104Sdes#endif])
97238104Sdes# MinGW32 tests
98238104SdesAC_CHECK_HEADERS([winsock2.h ws2tcpip.h],,, [AC_INCLUDES_DEFAULT])
99238104Sdes
100238104SdesACX_TYPE_SOCKLEN_T
101238104SdesAC_CHECK_HEADERS([sys/param.h sys/mount.h],,,
102238104Sdes[AC_INCLUDES_DEFAULT]
103238104Sdes[
104238104Sdes  [
105238104Sdes   #if HAVE_SYS_PARAM_H
106238104Sdes   # include <sys/param.h>
107238104Sdes   #endif
108238104Sdes  ]
109238104Sdes])
110238104SdesAC_CHECK_TYPE(in_addr_t, [], [AC_DEFINE([in_addr_t], [uint32_t], [in_addr_t])], [
111238104Sdes#if HAVE_SYS_TYPES_H
112238104Sdes# include <sys/types.h>
113238104Sdes#endif
114238104Sdes#if HAVE_NETINET_IN_H
115238104Sdes# include <netinet/in.h>
116238104Sdes#endif])
117238104SdesAC_CHECK_TYPE(in_port_t, [], [AC_DEFINE([in_port_t], [uint16_t], [in_port_t])], [
118238104Sdes#if HAVE_SYS_TYPES_H
119238104Sdes# include <sys/types.h>
120238104Sdes#endif
121238104Sdes#if HAVE_NETINET_IN_H
122238104Sdes# include <netinet/in.h>
123238104Sdes#endif])
124238104Sdes
125238104Sdes# check to see if libraries are needed for these functions.
126238104SdesAC_SEARCH_LIBS(socket, socket)
127238104SdesAC_SEARCH_LIBS([inet_pton], [nsl])
128238104Sdes
129238104SdesACX_WITH_SSL_OPTIONAL
130238104Sdes
131238104SdesACX_CHECK_GETADDRINFO_WITH_INCLUDES
132238104Sdes
133238104SdesLIBS_STC="$LIBS"
134238104SdesAC_SUBST(LIBS_STC)
135238104Sdes
136238104Sdes# check for ldns
137238104SdesAC_ARG_WITH(ldns, 
138238104Sdes	AC_HELP_STRING([--with-ldns=PATH        specify prefix of path of ldns library to use])
139238104Sdes	,
140238104Sdes	[
141238104Sdes		specialldnsdir="$withval"
142238104Sdes		CPPFLAGS="$CPPFLAGS -I$withval/include"
143238104Sdes		LDFLAGS="-L$withval -L$withval/lib $LDFLAGS"
144238104Sdes		LDNSDIR="$withval"
145238104Sdes		LIBS="-lldns $LIBS"
146238104Sdes		LIBS_STC="$withval/lib/libldns.a $LIBS_STC"
147238104Sdes	]
148238104Sdes)
149238104Sdes
150238104Sdes#AC_CHECK_HEADER(ldns/ldns.h,,  [
151238104Sdes#	AC_MSG_ERROR([Can't find ldns headers (make copy-headers in devel source.)])
152238104Sdes#	], [AC_INCLUDES_DEFAULT]
153238104Sdes#)
154238104Sdes
155238104SdesAC_CHECK_FUNCS(isblank)
156238104Sdes
157238104Sdes# check for ldns development source tree
158238104SdesAC_MSG_CHECKING([for ldns devel source])
159238104Sdesldns_dev_dir=..
160238104Sdesif test -f $ldns_dev_dir/ldns/util.h && \
161238104Sdes	grep LDNS_VERSION $ldns_dev_dir/ldns/util.h >/dev/null; then
162238104Sdes	ldns_version=`grep LDNS_VERSION $ldns_dev_dir/ldns/util.h | sed -e 's/^.*"\(.*\)".*$/\1/'`
163238104Sdes	AC_MSG_RESULT([using $ldns_dev_dir with $ldns_version])
164238104Sdes	CPPFLAGS="$CPPFLAGS -I$ldns_dev_dir/include"
165238104Sdes	LDFLAGS="-L$ldns_dev_dir -L$ldns_dev_dir/lib $LDFLAGS"
166238104Sdes	LIBS="-lldns $LIBS"
167238104Sdes	AC_DEFINE(HAVE_LIBLDNS, 1, [If the ldns library is available.])
168238104Sdes	LDNSDIR="$ldns_dev_dir"
169238104Sdes	LIBS_STC="$ldns_dev_dir/lib/libldns.a $LIBS_STC"
170238104Sdeselse
171238104Sdes	AC_MSG_RESULT([no])
172238104Sdes	AC_CHECK_LIB(ldns, ldns_rr_new, , [
173246854Sdes			AC_MSG_ERROR([Can't find ldns library])dnl '
174238104Sdes		]
175238104Sdes	)
176238104Sdesfi
177238104Sdes
178238104SdesAC_SUBST(LDNSDIR)
179238104Sdes
180246854SdesAC_ARG_WITH(trust-anchor, AC_HELP_STRING([--with-trust-anchor=KEYFILE],
181246854Sdes[Default location of the trust anchor file. [default=SYSCONFDIR/unbound/root.key]]), [
182246854Sdes LDNS_TRUST_ANCHOR_FILE="$withval"
183246854Sdes],[
184246854Sdes if test "x$LDNS_TRUST_ANCHOR_FILE" = "x"; then
185246854Sdes  if test "x$sysconfdir" = 'x${prefix}/etc' ; then
186246854Sdes   if test "x$prefix" = 'xNONE' ; then
187246854Sdes    LDNS_TRUST_ANCHOR_FILE="/etc/unbound/root.key"
188246854Sdes   else
189246854Sdes    LDNS_TRUST_ANCHOR_FILE="${prefix}/etc/unbound/root.key"
190246854Sdes   fi
191246854Sdes  else
192246854Sdes    LDNS_TRUST_ANCHOR_FILE="${sysconfdir}/unbound/root.key"
193246854Sdes  fi
194246854Sdes fi
195246854Sdes])
196246854SdesAC_DEFINE_UNQUOTED([LDNS_TRUST_ANCHOR_FILE], ["$LDNS_TRUST_ANCHOR_FILE"], [Default trust anchor file])
197246854SdesAC_SUBST(LDNS_TRUST_ANCHOR_FILE)
198246854SdesAC_MSG_NOTICE([Default trust anchor: $LDNS_TRUST_ANCHOR_FILE])
199246854Sdes
200238104SdesAH_BOTTOM([
201238104Sdes
202238104Sdes#include <stdio.h>
203238104Sdes#include <string.h>
204238104Sdes#include <unistd.h>
205238104Sdes#include <assert.h>
206238104Sdes
207238104Sdes#if STDC_HEADERS
208238104Sdes#include <stdlib.h>
209238104Sdes#include <stddef.h>
210238104Sdes#endif
211238104Sdes
212238104Sdes#ifdef HAVE_STDINT_H
213238104Sdes#include <stdint.h>
214238104Sdes#endif
215238104Sdes
216238104Sdes#ifdef HAVE_SYS_SOCKET_H
217238104Sdes#include <sys/socket.h>
218238104Sdes#endif
219238104Sdes
220238104Sdes#ifdef HAVE_NETINET_IN_H
221238104Sdes#include <netinet/in.h>
222238104Sdes#endif
223238104Sdes
224238104Sdes#ifdef HAVE_ARPA_INET_H
225238104Sdes#include <arpa/inet.h>
226238104Sdes#endif
227238104Sdes
228238104Sdes#ifdef HAVE_NETINET_UDP_H
229238104Sdes#include <netinet/udp.h>
230238104Sdes#endif
231238104Sdes
232238104Sdes#ifdef HAVE_TIME_H
233238104Sdes#include <time.h>
234238104Sdes#endif
235238104Sdes
236238104Sdes#ifdef HAVE_NETINET_IN_SYSTM_H
237238104Sdes#include <netinet/in_systm.h>
238238104Sdes#endif
239238104Sdes
240238104Sdes#ifdef HAVE_NETINET_IP_H
241238104Sdes#include <netinet/ip.h>
242238104Sdes#endif
243238104Sdes
244238104Sdes#ifdef HAVE_NET_IF_H
245238104Sdes#include <net/if.h>
246238104Sdes#endif
247238104Sdes
248238104Sdes#ifdef HAVE_NETINET_IF_ETHER_H
249238104Sdes#include <netinet/if_ether.h>
250238104Sdes#endif
251238104Sdes
252238104Sdes#ifdef HAVE_WINSOCK2_H
253238104Sdes#define USE_WINSOCK 1
254238104Sdes#include <winsock2.h>
255238104Sdes#endif
256238104Sdes
257238104Sdes#ifdef HAVE_WS2TCPIP_H
258238104Sdes#include <ws2tcpip.h>
259238104Sdes#endif
260238104Sdes
261238104Sdesextern char *optarg;
262238104Sdesextern int optind, opterr;
263238104Sdes
264238104Sdes#ifndef EXIT_FAILURE
265238104Sdes#define EXIT_FAILURE  1
266238104Sdes#endif
267238104Sdes#ifndef EXIT_SUCCESS
268238104Sdes#define EXIT_SUCCESS  0
269238104Sdes#endif
270238104Sdes
271238104Sdes#ifdef S_SPLINT_S
272238104Sdes#define FD_ZERO(a) /* a */
273238104Sdes#define FD_SET(a,b) /* a, b */
274238104Sdes#endif
275238104Sdes])
276238104Sdes
277246854SdesAC_CONFIG_FILES([Makefile drill.1])
278238104SdesAC_CONFIG_HEADER([config.h])
279238104SdesAC_OUTPUT
280