]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/ldns/configure.ac
ifconfig(8): wordsmith -G and -g descriptions
[FreeBSD/FreeBSD.git] / contrib / ldns / configure.ac
1 #                                               -*- Autoconf -*-
2 # Process this file with autoconf to produce a configure script.
3 AC_PREREQ(2.56)
4 sinclude(acx_nlnetlabs.m4)
5
6 # must be numbers. ac_defun because of later processing.
7 m4_define([VERSION_MAJOR],[1])
8 m4_define([VERSION_MINOR],[8])
9 m4_define([VERSION_MICRO],[3])
10 AC_INIT(ldns, m4_defn([VERSION_MAJOR]).m4_defn([VERSION_MINOR]).m4_defn([VERSION_MICRO]), libdns@nlnetlabs.nl, libdns)
11 AC_CONFIG_SRCDIR([packet.c])
12 # needed to build correct soname
13 AC_SUBST(LDNS_VERSION_MAJOR, [VERSION_MAJOR])
14 AC_SUBST(LDNS_VERSION_MINOR, [VERSION_MINOR])
15 AC_SUBST(LDNS_VERSION_MICRO, [VERSION_MICRO])
16
17 # Library version
18 # ---------------
19 # current:revision:age
20 # (binary-api-number):(which-binary-api-version):(how-many-nrs-backwardscompat)
21 # if source code changes increment revision
22 # if any interfaces have been added/removed/changed since last update then
23 #   increment current and set revision to 0
24 # if any interfaces have been added since the last public release then increment age
25 # if any interfaces have been removed or changed since the last public release then
26 #   set age to 0
27 #
28 # ldns-1.6.17 and before had a .so with version same as VERSION_INFO
29 # ldns-1.7.0 had libversion 2:0:0
30 # ldns-1.7.1 had libversion 3:0:0 (though it should have had 3:0:1)
31 # ldns-1.8.0 had libversion 4:0:2 (though it should have had 4:0:1)
32 # ldns-1.8.1 had libversion 5:0:2
33 # ldns-1.8.1 had libversion 6:0:3
34 # ldns-1.8.2 had libversion 7:0:4
35 # ldns-1.8.3 has libversion 8:0:5
36 #
37 AC_SUBST(VERSION_INFO, [8:0:5])
38
39 AC_AIX
40 if test "$ac_cv_header_minix_config_h" = "yes"; then
41         AC_DEFINE(_NETBSD_SOURCE,1, [Enable for compile on Minix])
42 fi
43 LT_INIT
44 AC_CONFIG_MACRO_DIR([m4])
45
46 OURCPPFLAGS=''
47 CPPFLAGS=${CPPFLAGS:-${OURCPPFLAGS}}
48 CFLAGS="$CFLAGS"
49
50 # Checks for programs.
51 AC_PROG_CC
52 ACX_DEPFLAG
53 AC_PROG_MAKE_SET
54
55 # Extra (sp)lint flags for NetBSD
56 AC_CANONICAL_HOST
57 case "$host_os" in
58         netbsd*) LINTFLAGS="'-D__RENAME(x)=' -D_NETINET_IN_H_ $LINTFLAGS"
59                  ;;
60         *)       LINTFLAGS="$LINTFLAGS"
61                  ;;
62 esac
63 AC_SUBST(LINTFLAGS)
64
65 AC_DEFINE(WINVER, 0x0502, [the version of the windows API enabled])
66
67 ACX_CHECK_COMPILER_FLAG(std=c99, [C99FLAG="-std=c99"])
68 ACX_CHECK_COMPILER_FLAG(xc99, [C99FLAG="-xc99"])
69
70 # routine to copy files
71 # argument 1 is a list of files (relative to the source dir)
72 # argument 2 is a destination directory (relative to the current
73 # working directory
74 AC_DEFUN([COPY_FILES],
75 [
76 for file in $1; do
77         sh $srcdir/install-sh -m 644 $file $2
78 done
79 ])
80
81 # copy all .h files in the dir at argument 1
82 # (relative to source) to the dir at argument 2
83 # (relative to current dir)
84 AC_DEFUN([COPY_HEADER_FILES],
85 [
86 echo "copying header files"
87 COPY_FILES($srcdir/$1/*.h, $2)
88 ])
89
90 # Checks for typedefs, structures, and compiler characteristics.
91 AC_C_CONST
92 AC_LANG_C
93 if test "x$CFLAGS" = "x" ; then
94 ACX_CHECK_COMPILER_FLAG(g, [CFLAGS="-g"])
95 ACX_CHECK_COMPILER_FLAG(O2, [CFLAGS="-O2 $CFLAGS"])
96 fi
97 ACX_CHECK_COMPILER_FLAG(Wall, [CFLAGS="-Wall $CFLAGS"])
98 ACX_CHECK_COMPILER_FLAG(W, [CFLAGS="-W $CFLAGS"])
99 ACX_CHECK_COMPILER_FLAG(Wwrite-strings, [CFLAGS="-Wwrite-strings $CFLAGS"])
100 ACX_CHECK_COMPILER_FLAG(Wstrict-prototypes, [CFLAGS="-Wstrict-prototypes $CFLAGS"])
101 #ACX_CHECK_COMPILER_FLAG(Wshadow, [CFLAGS="-Wshadow $CFLAGS"])
102 ACX_CHECK_COMPILER_FLAG(Wunused-function, [CFLAGS="-Wunused-function $CFLAGS"])
103 ACX_CHECK_COMPILER_FLAG(Wmissing-prototypes, [CFLAGS="-Wmissing-prototypes $CFLAGS"])
104 ACX_CHECK_COMPILER_FLAG(fno-strict-aliasing, [CFLAGS="-fno-strict-aliasing $CFLAGS"])
105
106 AC_CHECK_HEADERS([getopt.h time.h],,, [AC_INCLUDES_DEFAULT])
107
108 # MinGW32 tests
109 AC_CHECK_HEADERS([winsock2.h ws2tcpip.h],,, [AC_INCLUDES_DEFAULT])
110 # end mingw32 tests
111
112 # Check for Apple header. This uncovers TARGET_OS_IPHONE, TARGET_OS_TV or TARGET_OS_WATCH
113 AC_CHECK_HEADERS([TargetConditionals.h])
114
115 ACX_DETERMINE_EXT_FLAGS_UNBOUND
116
117 AC_C_INLINE
118 AC_CHECK_TYPE(int8_t, char)
119 AC_CHECK_TYPE(int16_t, short)
120 AC_CHECK_TYPE(int32_t, int)
121 AC_CHECK_TYPE(int64_t, long long)
122 AC_CHECK_TYPE(uint8_t, unsigned char)
123 AC_CHECK_TYPE(uint16_t, unsigned short)
124 AC_CHECK_TYPE(uint32_t, unsigned int)
125 AC_CHECK_TYPE(uint64_t, unsigned long long)
126
127 # my own checks
128 AC_CHECK_PROG(doxygen, doxygen, doxygen)
129
130 # check to see if libraries are needed for these functions.
131 AC_CHECK_FUNC([socket],
132     [],
133     [AC_SEARCH_LIBS([socket], [socket])
134 ])
135
136 # modern Linux provides inet_ntop in -lsocket.
137 # modern OS X provides inet_ntop in -lc.
138 # modern Solaris provides inet_ntop in -lsocket -lnsl.
139 # older Solaris provides inet_ntop in -lresolv.
140 AC_CHECK_FUNC([inet_ntop],
141     [],
142     [AC_SEARCH_LIBS([inet_ntop], [socket c nsl resolv], [ac_cv_func_inet_ntop=yes])
143 ])
144
145 # modern Linux provides inet_pton in -lsocket.
146 # modern OS X provides inet_pton in -lc.
147 # modern Solaris provides inet_pton in -lsocket -lnsl.
148 # older Solaris provides inet_pton in -lresolv.
149 AC_CHECK_FUNC([inet_pton],
150     [],
151     [AC_SEARCH_LIBS([inet_pton], [socket c nsl resolv], [ac_cv_func_inet_pton=yes])
152 ])
153
154
155 AC_ARG_WITH(drill, AC_HELP_STRING([--with-drill],
156  [Also build drill.]),
157  [],[with_drill="no"])
158 if test x_$with_drill != x_no ; then
159         AC_SUBST(DRILL,[drill])
160         AC_SUBST(INSTALL_DRILL,[install-drill])
161         AC_SUBST(UNINSTALL_DRILL,[uninstall-drill])
162         AC_SUBST(CLEAN_DRILL,[clean-drill])
163         AC_SUBST(LINT_DRILL,[lint-drill])
164         if test -e $srcdir/drill/config.h -o -e drill/config.h ; then
165                 AC_MSG_ERROR([
166 A config.h was detected in the drill subdirectory.
167 This does not work with the --with-drill option.
168 Please remove the config.h from the drill subdirectory
169 or do not use the --with-drill option.])
170         fi
171 else
172         AC_SUBST(DRILL,[""])
173         AC_SUBST(INSTALL_DRILL,[""])
174         AC_SUBST(UNINSTALL_DRILL,[""])
175         AC_SUBST(CLEAN_DRILL,[""])
176         AC_SUBST(LINT_DRILL,[""])
177 fi
178
179
180 AC_ARG_WITH(examples, AC_HELP_STRING([--with-examples],
181  [Also build examples.]),
182  [],[with_examples="no"])
183 if test x_$with_examples != x_no ; then
184         AC_SUBST(EXAMPLES,[examples])
185         AC_SUBST(INSTALL_EXAMPLES,[install-examples])
186         AC_SUBST(UNINSTALL_EXAMPLES,[uninstall-examples])
187         AC_SUBST(CLEAN_EXAMPLES,[clean-examples])
188         AC_SUBST(LINT_EXAMPLES,[lint-examples])
189         if test -e $srcdir/examples/config.h -o -e examples/config.h ; then
190                 AC_MSG_ERROR([
191 A config.h was detected in the examples subdirectory.
192 This does not work with the --with-examples option.
193 Please remove the config.h from the examples subdirectory
194 or do not use the --with-examples option.])
195         fi
196 else
197         AC_SUBST(EXAMPLES,[""])
198         AC_SUBST(INSTALL_EXAMPLES,[""])
199         AC_SUBST(UNINSTALL_EXAMPLES,[""])
200         AC_SUBST(CLEAN_EXAMPLES,[""])
201         AC_SUBST(LINT_EXAMPLES,[""])
202 fi
203
204 # add option to disable installation of ldns-config script
205 AC_ARG_ENABLE(ldns-config, AC_HELP_STRING([--disable-ldns-config], [disable installation of ldns-config (default=enabled)]),
206         enable_ldns_config=$enableval, enable_ldns_config=yes)
207 if test "x$enable_ldns_config" = xyes; then
208         AC_SUBST(INSTALL_CONFIG, [install-config])
209         AC_SUBST(INSTALL_CONFIG_MANPAGE, [install-config-manpage])
210         AC_SUBST(UNINSTALL_CONFIG, [uninstall-config])
211         AC_SUBST(UNINSTALL_CONFIG_MANPAGE, [uninstall-config-manpage])
212 else
213         AC_SUBST(INSTALL_CONFIG, [""])
214         AC_SUBST(INSTALL_CONFIG_MANPAGE, [""])
215         AC_SUBST(UNINSTALL_CONFIG, [""])
216         AC_SUBST(UNINSTALL_CONFIG_MANPAGE, [""])
217 fi
218
219 # add option to disable library printing to stderr
220 AC_ARG_ENABLE(stderr-msgs, AC_HELP_STRING([--enable-stderr-msgs], [Enable printing to stderr (default=disabled)]), enable_stderr_msgs=$enableval, enable_stderr_msgs=no)
221 case "$enable_stderr_msgs" in
222     no) dnl default
223         ;;
224     *)
225         AC_DEFINE_UNQUOTED([STDERR_MSGS], [1], [Define this to enable messages to stderr.])
226         ;;
227 esac
228
229 AX_HAVE_POLL(
230   [AX_CONFIG_FEATURE_ENABLE(poll)],
231   [AX_CONFIG_FEATURE_DISABLE(poll)])
232 AX_CONFIG_FEATURE(
233   [poll], [This platform supports poll(7)],
234   [HAVE_POLL], [This platform supports poll(7).])
235
236 # check for python
237 PYTHON_X_CFLAGS=""
238 ldns_with_pyldns=no
239 ldns_with_pyldnsx=no
240 AC_ARG_WITH(pyldns, AC_HELP_STRING([--with-pyldns],
241  [generate python library, or --without-pyldns to disable Python support.]),
242  [],[ withval="no" ])
243 ldns_have_python=no
244 if test x_$withval != x_no; then
245    sinclude(ax_python_devel.m4)
246    ac_save_LIBS="$LIBS" dnl otherwise AC_PYTHON_DEVEL thrashes $LIBS
247
248    AX_PYTHON_DEVEL([>= '2.4.0'])
249    if test ! -z "$ac_python_version"; then
250         ldns_have_python=yes
251    fi
252
253    # pass additional Python 3 option to SWIG
254    if test `$PYTHON -c "import sys; \
255        ver = sys.version.split()[[0]]; \
256        print(ver >= '3')"` = "True"; then
257        AC_SUBST(SWIGPY3, ["-py3 -DPY3"])
258    fi
259
260    # check for SWIG
261    if test x_$ldns_have_python != x_no; then
262         sinclude(ax_pkg_swig.m4)
263
264         # check for >=SWIG-2.0.4 if Python 3.2 used
265         if test `$PYTHON -c "import sys; \
266             ver = sys.version.split()[[0]]; \
267             print(ver >= '3.2')"` = "True"; then
268             AX_PKG_SWIG(2.0.4, [], [AC_MSG_ERROR([SWIG-2.0.4 is required to build pyldns for Python 3.2 and greater.])])
269         else
270             AX_PKG_SWIG
271         fi
272
273         if test ! -x "$SWIG"; then
274                 AC_MSG_ERROR([failed to find SWIG tool, install it, or do not build pyldns])
275         else
276                 AC_DEFINE(HAVE_SWIG,1,[Define if you have SWIG libraries and header files.])
277                 AC_SUBST(PYLDNS, "pyldns")
278                 AC_SUBST(swig, "$SWIG")
279                 ldns_with_pyldns=yes
280         fi
281    else
282         AC_MSG_RESULT([*** don't have Python, skipping SWIG, no pyldns ***]) # '
283    fi
284
285    # xtra cflags for pyldns
286    if test x_$ldns_have_python != x_no; then
287         ACX_CHECK_COMPILER_FLAG(fno-strict-aliasing, [PYTHON_X_CFLAGS="-fno-strict-aliasing"])
288         ACX_CHECK_COMPILER_FLAG(Wno-missing-field-initializers, [PYTHON_X_CFLAGS="-Wno-missing-field-initializers $PYTHON_X_CFLAGS"])
289         ACX_CHECK_COMPILER_FLAG(Wno-unused-parameter, [PYTHON_X_CFLAGS="-Wno-unused-parameter $PYTHON_X_CFLAGS"])
290         ACX_CHECK_COMPILER_FLAG(Wno-unused-variable, [PYTHON_X_CFLAGS="-Wno-unused-variable $PYTHON_X_CFLAGS"])
291    fi
292 fi
293 AC_SUBST(PYTHON_X_CFLAGS)
294
295 # Check for pyldnsx
296 AC_ARG_WITH(pyldnsx, AC_HELP_STRING([--without-pyldnsx],
297   [Do not install the ldnsx python module, or --with-pyldnsx to install it.]),
298   [],[ withval="with_pyldns" ])
299 if test x_$withval != x_no; then
300   if test x_$ldns_with_pyldns != x_no; then
301     AC_SUBST(PYLDNSX, "pyldnsx")
302     ldns_with_pyldnsx=yes
303   else
304     if test x_$withval != x_with_pyldns; then
305       AC_MSG_ERROR([--with-pyldns is needed for the ldnsx python module])
306     fi
307   fi
308 fi
309
310 if test x_$ldns_with_pyldns != x_no; then
311   AC_SUBST(PYLDNSINST, "install-pyldns")dnl
312   AC_SUBST(PYLDNSUNINST, "uninstall-pyldns")
313 else
314   AC_SUBST(PYLDNSINST, "")dnl
315   AC_SUBST(PYLDNSUNINST, "")
316 fi
317 if test x_$ldns_with_pyldnsx != x_no; then
318   AC_SUBST(PYLDNSXINST, "install-pyldnsx")dnl
319   AC_SUBST(PYLDNSXUNINST, "uninstall-pyldnsx")
320 else
321   AC_SUBST(PYLDNSXINST, "")dnl
322   AC_SUBST(PYLDNSXUNINST, "")
323 fi
324
325 # check for perl
326 ldns_with_p5_dns_ldns=no
327 AC_ARG_WITH(p5-dns-ldns, AC_HELP_STRING([--with-p5-dns-ldns],
328  [generate DNS::LDNS perl bindings]),
329  [],[ withval="no" ])
330 ldns_have_perl=no
331 if test x_$withval != x_no; then
332    AC_PATH_PROG([PERL], [perl])
333    if test -z "$PERL"; then
334       AC_MSG_ERROR([Cannot find perl in your system path])
335    fi
336    AC_SUBST(P5_DNS_LDNS, "p5-dns-ldns")dnl
337    AC_SUBST(TEST_P5_DNS_LDNS, "test-p5-dns-ldns")dnl
338    AC_SUBST(INSTALL_P5_DNS_LDNS, "install-p5-dns-ldns")dnl
339    AC_SUBST(UNINSTALL_P5_DNS_LDNS, "uninstall-p5-dns-ldns")dnl
340    AC_SUBST(CLEAN_P5_DNS_LDNS, "clean-p5-dns-ldns")
341 else
342    AC_SUBST(P5_DNS_LDNS, "")dnl
343    AC_SUBST(TEST_P5_DNS_LDNS, "")dnl
344    AC_SUBST(INSTALL_P5_DNS_LDNS, "")dnl
345    AC_SUBST(UNINSTALL_P5_DNS_LDNS, "")dnl
346    AC_SUBST(CLEAN_P5_DNS_LDNS, "")
347 fi
348
349 # Use libtool
350 ACX_LIBTOOL_C_ONLY
351
352 tmp_CPPFLAGS=$CPPFLAGS
353 tmp_LDFLAGS=$LDFLAGS
354 tmp_LIBS=$LIBS
355
356 ACX_WITH_SSL_OPTIONAL
357 AC_MSG_CHECKING([for LibreSSL])
358 if grep VERSION_TEXT $ssldir/include/openssl/opensslv.h | grep "LibreSSL" >/dev/null; then
359         AC_MSG_RESULT([yes])
360         AC_DEFINE([HAVE_LIBRESSL], [1], [Define if we have LibreSSL])
361 else
362         AC_MSG_RESULT([no])
363 fi
364 AC_CHECK_HEADERS([openssl/ssl.h openssl/evp.h openssl/engine.h openssl/conf.h])
365 AC_CHECK_FUNCS([EVP_sha256 EVP_sha384 EVP_sha512 EVP_PKEY_keygen ECDSA_SIG_get0 EVP_MD_CTX_new DSA_SIG_set0 DSA_SIG_get0 EVP_dss1 DSA_get0_pqg DSA_get0_key EVP_cleanup ENGINE_cleanup ENGINE_free CRYPTO_cleanup_all_ex_data ERR_free_strings CONF_modules_unload OPENSSL_init_ssl OPENSSL_init_crypto ERR_load_crypto_strings CRYPTO_memcmp EVP_PKEY_get_base_id])
366 AC_CHECK_DECLS([EVP_PKEY_base_id], [
367         AC_DEFINE_UNQUOTED([HAVE_EVP_PKEY_BASE_ID], [1], [Define to 1 if you have the EVP_PKEY_base_id function or macro.])
368 ], [], [AC_INCLUDES_DEFAULT
369 #include <openssl/evp.h>
370 ])
371 AC_MSG_CHECKING([Checking for OpenSSL >= 3.0.0])
372 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
373 #include <openssl/ssl.h>
374 #if OPENSSL_VERSION_MAJOR >= 3
375 #define SOMETHING
376 #else
377 This fails compiling.
378 So either no OpenSSL at all (the include already failed), or the version < 3.0.0
379 #endif
380 ], [
381 ])], [
382         AC_MSG_RESULT(yes)
383         CFLAGS="-DOPENSSL_API_COMPAT=10100 $CFLAGS"
384 ], [    AC_MSG_RESULT(no)
385 ])
386
387
388 # for macosx, see if glibtool exists and use that
389 # BSD's need to know the version...
390 #AC_CHECK_PROG(glibtool, glibtool, [glibtool], )
391 #AC_CHECK_PROGS(libtool, [libtool15 libtool], [./libtool])
392
393 AC_ARG_ENABLE(sha2, AC_HELP_STRING([--disable-sha2], [Disable SHA256 and SHA512 RRSIG support]))
394 case "$enable_sha2" in
395     no)
396         ;;
397     yes|*)
398         if test "x$HAVE_SSL" != "xyes"; then
399             AC_MSG_ERROR([SHA2 enabled, but no SSL support])
400         fi
401         AC_MSG_CHECKING(for SHA256 and SHA512)
402         AC_CHECK_FUNC(SHA256_Init, [], [
403                 AC_MSG_ERROR([No SHA2 functions found in OpenSSL: please upgrade OpenSSL or rerun with --disable-sha2])
404                 ])
405         AC_DEFINE_UNQUOTED([USE_SHA2], [1], [Define this to enable SHA256 and SHA512 support.])
406         ;;
407 esac
408
409 # check whether gost also works
410 AC_DEFUN([AC_CHECK_GOST_WORKS],
411 [AC_REQUIRE([AC_PROG_CC])
412 AC_MSG_CHECKING([if GOST works])
413 if test c${cross_compiling} = cno; then
414 BAKCFLAGS="$CFLAGS"
415 if test -n "$ssldir"; then
416     if test ! -d "$ssldir/lib" -a -d "$ssldir/lib64"; then
417         CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib64"
418     else
419         CFLAGS="$CFLAGS -Wl,-rpath,$ssldir/lib"
420     fi
421 fi
422 AC_RUN_IFELSE([AC_LANG_SOURCE([[
423 #include <string.h>
424 #ifdef HAVE_OPENSSL_SSL_H
425 #include <openssl/ssl.h>
426 #endif
427 #ifdef HAVE_OPENSSL_EVP_H
428 #include <openssl/evp.h>
429 #endif
430 #ifdef HAVE_OPENSSL_ENGINE_H
431 #include <openssl/engine.h>
432 #endif
433 #ifdef HAVE_OPENSSL_CONF_H
434 #include <openssl/conf.h>
435 #endif
436 /* routine to load gost (from sldns) */
437 int load_gost_id(void)
438 {
439         static int gost_id = 0;
440         const EVP_PKEY_ASN1_METHOD* meth;
441         ENGINE* e;
442
443         if(gost_id) return gost_id;
444
445         /* see if configuration loaded gost implementation from other engine*/
446         meth = EVP_PKEY_asn1_find_str(NULL, "gost2001", -1);
447         if(meth) {
448                 EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth);
449                 return gost_id;
450         }
451
452         /* see if engine can be loaded already */
453         e = ENGINE_by_id("gost");
454         if(!e) {
455                 /* load it ourself, in case statically linked */
456                 ENGINE_load_builtin_engines();
457                 ENGINE_load_dynamic();
458                 e = ENGINE_by_id("gost");
459         }
460         if(!e) {
461                 /* no gost engine in openssl */
462                 return 0;
463         }
464         if(!ENGINE_set_default(e, ENGINE_METHOD_ALL)) {
465                 ENGINE_finish(e);
466                 ENGINE_free(e);
467                 return 0;
468         }
469
470         meth = EVP_PKEY_asn1_find_str(&e, "gost2001", -1);
471         if(!meth) {
472                 /* algo not found */
473                 ENGINE_finish(e);
474                 ENGINE_free(e);
475                 return 0;
476         }
477         EVP_PKEY_asn1_get0_info(&gost_id, NULL, NULL, NULL, NULL, meth);
478         return gost_id;
479 }
480 int main(void) {
481         EVP_MD_CTX* ctx;
482         const EVP_MD* md;
483         unsigned char digest[64]; /* its a 256-bit digest, so uses 32 bytes */
484         const char* str = "Hello world";
485         const unsigned char check[] = {
486                 0x40 , 0xed , 0xf8 , 0x56 , 0x5a , 0xc5 , 0x36 , 0xe1 ,
487                 0x33 , 0x7c , 0x7e , 0x87 , 0x62 , 0x1c , 0x42 , 0xe0 ,
488                 0x17 , 0x1b , 0x5e , 0xce , 0xa8 , 0x46 , 0x65 , 0x4d ,
489                 0x8d , 0x3e , 0x22 , 0x9b , 0xe1 , 0x30 , 0x19 , 0x9d
490         };
491         OPENSSL_config(NULL);
492         (void)load_gost_id();
493         md = EVP_get_digestbyname("md_gost94");
494         if(!md) return 1;
495         memset(digest, 0, sizeof(digest));
496         ctx = EVP_MD_CTX_create();
497         if(!ctx) return 2;
498         if(!EVP_DigestInit_ex(ctx, md, NULL)) return 3;
499         if(!EVP_DigestUpdate(ctx, str, 10)) return 4;
500         if(!EVP_DigestFinal_ex(ctx, digest, NULL)) return 5;
501         /* uncomment to see the hash calculated.
502                 {int i;
503                 for(i=0; i<32; i++)
504                         printf(" %2.2x", (int)digest[i]);
505                 printf("\n");}
506         */
507         if(memcmp(digest, check, sizeof(check)) != 0)
508                 return 6;
509         return 0;
510 }
511 ]])] , [eval "ac_cv_c_gost_works=yes"], [eval "ac_cv_c_gost_works=no"])
512 CFLAGS="$BAKCFLAGS"
513 else
514 eval "ac_cv_c_gost_works=maybe"
515 fi
516 ])dnl
517
518 AC_ARG_ENABLE(gost, AC_HELP_STRING([--disable-gost], [Disable GOST support]))
519 case "$enable_gost" in
520     no)
521         ;;
522     *)  dnl default
523         if test "x$HAVE_SSL" != "xyes"; then
524             AC_MSG_ERROR([GOST enabled, but no SSL support])
525         fi
526         AC_MSG_CHECKING(for GOST)
527         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])])
528         AC_CHECK_FUNC(EC_KEY_new, [], [AC_MSG_ERROR([No ECC functions found in OpenSSL: please upgrade OpenSSL or rerun with --disable-gost])])
529         AC_CHECK_GOST_WORKS
530         AC_ARG_ENABLE(gost-anyway, AC_HELP_STRING([--enable-gost-anyway], [Enable GOST even without a GOST engine installed]))
531         if test "$ac_cv_c_gost_works" != "no" -o "$enable_gost_anyway" = "yes"; then
532                 if test "$ac_cv_c_gost_works" = "no"; then
533                         AC_MSG_RESULT([no, but compiling with GOST support anyway])
534                 else
535                         AC_MSG_RESULT([yes])
536                 fi
537                 use_gost="yes"
538                 AC_DEFINE([USE_GOST], [1], [Define this to enable GOST support.])
539         else
540                 AC_MSG_RESULT([no])
541                 AC_MSG_WARN([Gost support does not work because the engine is missing.])
542                 AC_MSG_WARN([Install gost-engine first or use the --enable-gost-anyway to compile with GOST support anyway])
543                 AC_MSG_WARN([See also https://github.com/gost-engine/engine/wiki for information about gost-engine])
544         fi
545         ;;
546 esac
547
548 AC_ARG_ENABLE(ecdsa, AC_HELP_STRING([--disable-ecdsa], [Disable ECDSA support]))
549 case "$enable_ecdsa" in
550     no)
551       ;;
552     *) dnl default
553       if test "x$HAVE_SSL" != "xyes"; then
554         AC_MSG_ERROR([ECDSA enabled, but no SSL support])
555       fi
556       AC_CHECK_FUNC(ECDSA_sign, [], [AC_MSG_ERROR([OpenSSL does not support ECDSA: please upgrade OpenSSL or rerun with --disable-ecdsa])])
557       AC_CHECK_FUNC(SHA384_Init, [], [AC_MSG_ERROR([OpenSSL does not support SHA384: please upgrade OpenSSL or rerun with --disable-ecdsa])])
558       AC_CHECK_DECLS([NID_X9_62_prime256v1, NID_secp384r1], [], [AC_MSG_ERROR([OpenSSL does not support the ECDSA curves: please upgrade OpenSSL or rerun with --disable-ecdsa])], [AC_INCLUDES_DEFAULT
559 #include <openssl/evp.h>
560       ])
561       # we now know we have ECDSA and the required curves.
562       AC_DEFINE_UNQUOTED([USE_ECDSA], [1], [Define this to enable ECDSA support.])
563       ;;
564 esac
565
566 AC_ARG_ENABLE(dsa, AC_HELP_STRING([--disable-dsa], [Disable DSA support]))
567 case "$enable_dsa" in
568     no)
569       AC_SUBST(ldns_build_config_use_dsa, 0)
570       ;;
571     *) dnl default
572       # detect if DSA is supported, and turn it off if not.
573       AC_CHECK_FUNC(DSA_SIG_new, [
574         AC_DEFINE_UNQUOTED([USE_DSA], [1], [Define this to enable DSA support.])
575         AC_SUBST(ldns_build_config_use_dsa, 1)
576       ], [if test "x$enable_dsa" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support DSA and you used --enable-dsa.])
577           fi
578           AC_SUBST(ldns_build_config_use_dsa, 0)])
579       ;;
580 esac
581
582 AC_ARG_ENABLE(ed25519, AC_HELP_STRING([--disable-ed25519], [Disable (experimental) ED25519 support. Default is detect]))
583 case "$enable_ed25519" in
584     no)
585       AC_SUBST(ldns_build_config_use_ed25519, 0)
586       ;;
587     *) dnl default
588       AC_CHECK_DECLS([NID_ED25519], [
589         AC_DEFINE_UNQUOTED([USE_ED25519], [1], [Define this to enable ED25519 support.])
590         AC_SUBST(ldns_build_config_use_ed25519, 1)
591       ], [if test "x$enable_ed25519" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED25519 and you used --enable-ed25519.])
592           fi
593           AC_SUBST(ldns_build_config_use_ed25519, 0)], [AC_INCLUDES_DEFAULT
594 #include <openssl/evp.h>
595       ])
596       ;;
597 esac
598
599 AC_ARG_ENABLE(ed448, AC_HELP_STRING([--disable-ed448], [Disable (experimental) ED448 support. Default is detect]))
600 case "$enable_ed448" in
601     no)
602       AC_SUBST(ldns_build_config_use_ed448, 0)
603       ;;
604     *) dnl default
605       AC_CHECK_DECLS([NID_ED448], [
606         AC_DEFINE_UNQUOTED([USE_ED448], [1], [Define this to enable ED448 support.])
607         AC_SUBST(ldns_build_config_use_ed448, 1)
608       ], [if test "x$enable_ed448" = "xyes"; then AC_MSG_ERROR([OpenSSL does not support ED448 and you used --enable-ed448.])
609           fi
610           AC_SUBST(ldns_build_config_use_ed448, 0)], [AC_INCLUDES_DEFAULT
611 #include <openssl/evp.h>
612       ])
613       ;;
614 esac
615
616 AC_ARG_ENABLE(dane, AC_HELP_STRING([--disable-dane], [Disable DANE support]))
617 AC_ARG_ENABLE(dane-verify, AC_HELP_STRING([--disable-dane-verify], [Disable DANE verify support]))
618 AC_ARG_ENABLE(dane-ta-usage, AC_HELP_STRING([--disable-dane-ta-usage], [Disable DANE-TA usage type support]))
619
620 AC_ARG_ENABLE(full-dane,, [
621         enable_dane_ta_usage=yes
622         enable_dane_verify=yes
623         enable_dane=yes
624 ])
625 AC_ARG_ENABLE(no-dane-ta-usage,, [
626         enable_dane_ta_usage=no
627         enable_dane_verify=yes
628         enable_dane=yes
629 ])
630 AC_ARG_ENABLE(no-dane-verify,, [
631         enable_dane_ta_usage=no
632         enable_dane_verify=no
633         enable_dane=yes
634 ])
635 case "$enable_dane" in
636     no)
637       AC_SUBST(ldns_build_config_use_dane, 0)
638       AC_SUBST(ldns_build_config_use_dane_verify, 0)
639       AC_SUBST(ldns_build_config_use_dane_ta_usage, 0)
640       ;;
641     *) dnl default
642       if test "x$HAVE_SSL" != "xyes"; then
643         AC_MSG_ERROR([DANE enabled, but no SSL support])
644       fi
645       AC_CHECK_FUNC(X509_check_ca, [], [AC_MSG_ERROR([OpenSSL does not support DANE: please upgrade OpenSSL or rerun with --disable-dane])])
646       AC_SUBST(ldns_build_config_use_dane, 1)
647       AC_DEFINE_UNQUOTED([USE_DANE], [1], [Define this to enable DANE support.])
648       case "$enable_dane_verify" in
649           no)
650             AC_SUBST(ldns_build_config_use_dane_verify, 0)
651             AC_SUBST(ldns_build_config_use_dane_ta_usage, 0)
652             ;;
653           *)
654             AC_SUBST(ldns_build_config_use_dane_verify, 1)
655             AC_DEFINE_UNQUOTED([USE_DANE_VERIFY], [1], [Define this to enable DANE verify support.])
656             case "$enable_dane_ta_usage" in
657                 no)
658                   AC_SUBST(ldns_build_config_use_dane_ta_usage, 0)
659                   ;;
660                 *) dnl default
661                   danetmpLIBS="$LIBS"
662                   LIBS="-lssl -lcrypto $LIBS"
663                   AC_CHECK_FUNC(SSL_get0_dane, [], [AC_MSG_ERROR([OpenSSL does not support offline DANE verification (Needed for the DANE-TA usage type).  Please upgrade OpenSSL to version >= 1.1.0 or rerun with --disable-dane-verify or --disable-dane-ta-usage])])
664                   LIBSSL_LIBS="-lssl $LIBSSL_LIBS"
665                   LIBS="$danetmpLIBS"
666                   AC_SUBST(ldns_build_config_use_dane_ta_usage, 1)
667                   AC_DEFINE_UNQUOTED([USE_DANE_TA_USAGE], [1], [Define this to enable DANE-TA usage type support.])
668                   ;;
669             esac
670       esac
671       ;;
672 esac
673
674 AC_ARG_ENABLE(rrtype-ninfo, AC_HELP_STRING([--enable-rrtype-ninfo], [Enable draft RR type ninfo.]))
675 case "$enable_rrtype_ninfo" in
676         yes)
677                 AC_DEFINE_UNQUOTED([RRTYPE_NINFO], [], [Define this to enable RR type NINFO.])
678                 ;;
679         no|*)
680                 ;;
681 esac
682 AC_ARG_ENABLE(rrtype-rkey, AC_HELP_STRING([--enable-rrtype-rkey], [Enable draft RR type rkey.]))
683 case "$enable_rrtype_rkey" in
684         yes)
685                 AC_DEFINE_UNQUOTED([RRTYPE_RKEY], [], [Define this to enable RR type RKEY.])
686                 ;;
687         no|*)
688                 ;;
689 esac
690 AC_ARG_ENABLE(rrtype-openpgpkey, AC_HELP_STRING([--disable-rrtype-openpgpkey], [Disable openpgpkey RR type.]))
691 case "$enable_rrtype_openpgpkey" in
692         no)
693                 ;;
694         yes|*)
695                 AC_DEFINE_UNQUOTED([RRTYPE_OPENPGPKEY], [], [Define this to enable RR type OPENPGPKEY.])
696                 ;;
697 esac
698 AC_ARG_ENABLE(rrtype-ta, AC_HELP_STRING([--enable-rrtype-ta], [Enable draft RR type ta.]))
699 case "$enable_rrtype_ta" in
700         yes)
701                 AC_DEFINE_UNQUOTED([RRTYPE_TA], [], [Define this to enable RR type TA.])
702                 ;;
703         no|*)
704                 ;;
705 esac
706 AC_ARG_ENABLE(rrtype-avc, AC_HELP_STRING([--enable-rrtype-avc], [Enable draft RR type avc.]))
707 case "$enable_rrtype_avc" in
708         yes)
709                 AC_DEFINE_UNQUOTED([RRTYPE_AVC], [], [Define this to enable RR type AVC.])
710                 ;;
711         no|*)
712                 ;;
713 esac
714 AC_ARG_ENABLE(rrtype-doa, AC_HELP_STRING([--enable-rrtype-doa], [Enable draft RR type DOA.]))
715 case "$enable_rrtype_doa" in
716         yes)
717                 AC_DEFINE_UNQUOTED([RRTYPE_DOA], [], [Define this to enable RR type DOA.])
718                 ;;
719         no|*)
720                 ;;
721 esac
722 AC_ARG_ENABLE(rrtype-amtrelay, AC_HELP_STRING([--enable-rrtype-amtrelay], [Enable draft RR type AMTRELAY.]))
723 case "$enable_rrtype_amtrelay" in
724         yes)
725                 AC_DEFINE_UNQUOTED([RRTYPE_AMTRELAY], [], [Define this to enable RR type AMTRELAY.])
726                 ;;
727         no|*)
728                 ;;
729 esac
730 AC_ARG_ENABLE(rrtype-svcb-https, AC_HELP_STRING([--disable-rrtype-svcb-https], [Disable RR types SVCB and HTTPS.]))
731 case "$enable_rrtype_svcb_https" in
732         no)
733                 ;;
734         yes|*)
735                 AC_DEFINE_UNQUOTED([RRTYPE_SVCB_HTTPS], [], [Define this to enable RR types SVCB and HTTPS.])
736                 ;;
737 esac
738
739
740
741 AC_SUBST(LIBSSL_CPPFLAGS)
742 AC_SUBST(LIBSSL_LDFLAGS)
743 AC_SUBST(LIBSSL_LIBS)
744 if test "x$HAVE_SSL" = "xyes"; then
745     if echo "$LIBSSL_LIBS" | grep -- "-lssl" >/dev/null 2>&1; then
746         LIBSSL_SSL_LIBS="$LIBSSL_LIBS"
747     else
748         LIBSSL_SSL_LIBS="-lssl $LIBSSL_LIBS"
749     fi
750     AC_SUBST(LIBSSL_SSL_LIBS, "$LIBSSL_SSL_LIBS")
751 fi
752 CPPFLAGS=$tmp_CPPFLAGS
753 LDFLAGS=$tmp_LDFLAGS
754 LIBS=$tmp_LIBS
755
756
757 # add option to disable the evil rpath
758 ACX_ARG_RPATH
759
760 #AC_RUN_IFELSE([AC_LANG_SOURCE(
761 #[
762 #int main()
763 #{
764 #short one = 1;
765 #char *cp = (char*)&one;
766 #if ( *cp == 0 )
767 #return(0);
768 #else
769 #return(1);
770 #}
771 #])], [],[
772 #AC_DEFINE(CONFCHECK_LITTLE_ENDIAN, 1, [system appears to be little-endian])
773 #],[])
774
775 # should define WORDS_BIGENDIAN if the system is big-endian
776 AC_C_BIGENDIAN
777
778 # Checks for header files.
779 AC_HEADER_STDC
780 AC_HEADER_STDBOOL
781 #AC_HEADER_SYS_WAIT
782 #AC_CHECK_HEADERS([getopt.h fcntl.h stdlib.h string.h strings.h unistd.h])
783 # do the very minimum - we can always extend this
784 AC_CHECK_HEADERS([getopt.h stdarg.h openssl/ssl.h netinet/in.h time.h arpa/inet.h netdb.h],,, [AC_INCLUDES_DEFAULT])
785 AC_CHECK_HEADERS(sys/param.h sys/mount.h,,,
786 [AC_INCLUDES_DEFAULT
787   [
788    #if HAVE_SYS_PARAM_H
789    # include <sys/param.h>
790    #endif
791   ]
792 ])
793 AC_CHECK_HEADER(sys/socket.h,
794 [
795 include_sys_socket_h='#include <sys/socket.h>'
796 AC_DEFINE(HAVE_SYS_SOCKET_H, 1, [define if you have sys/socket.h])
797 ],[
798 include_sys_socket_h=''
799 ],[AC_INCLUDES_DEFAULT
800   [
801    #if HAVE_SYS_PARAM_H
802    # include <sys/param.h>
803    #endif
804   ]
805 ])
806 AC_SUBST(include_sys_socket_h)
807 AC_CHECK_HEADER(inttypes.h,
808 [
809 include_inttypes_h='#include <inttypes.h>'
810 AC_DEFINE(HAVE_INTTYPES_H, 1, [define if you have inttypes.h])
811 AC_SUBST(ldns_build_config_have_inttypes_h, 1)
812 ],[
813 include_inttypes_h=''
814 AC_SUBST(ldns_build_config_have_inttypes_h, 0)
815 ],[AC_INCLUDES_DEFAULT
816 ])
817 AC_SUBST(include_inttypes_h)
818 AC_CHECK_HEADER(sys/types.h,
819 [
820 include_systypes_h='#include <sys/types.h>'
821 AC_DEFINE(HAVE_SYS_TYPES_H, 1, [define if you have sys/types.h])
822 ],[
823 include_systypes_h=''
824 ],[AC_INCLUDES_DEFAULT
825 ])
826 AC_SUBST(include_systypes_h)
827 AC_CHECK_HEADER(unistd.h,
828 [
829 include_unistd_h='#include <unistd.h>'
830 AC_DEFINE(HAVE_UNISTD_H, 1, [define if you have unistd.h])
831 ],[
832 include_unistd_h=''
833 ],[AC_INCLUDES_DEFAULT
834 ])
835 AC_SUBST(include_unistd_h)
836
837 AC_CHECK_SIZEOF(time_t,,[
838 AC_INCLUDES_DEFAULT
839 #ifdef TIME_WITH_SYS_TIME
840 # include <sys/time.h>
841 # include <time.h>
842 #else
843 # ifdef HAVE_SYS_TIME_H
844 #  include <sys/time.h>
845 # else
846 #  include <time.h>
847 # endif
848 #endif
849 ])
850
851 if test x_$with_examples != x_no; then
852 AC_CHECK_HEADERS([pcap.h],,, [AC_INCLUDES_DEFAULT])
853 AC_CHECK_LIB(pcap, pcap_open_offline, [
854         AC_DEFINE([HAVE_LIBPCAP], [1], [Define to 1 if you have the `pcap' library (-lpcap).])dnl`
855         AC_SUBST([LIBPCAP_LIBS], [-lpcap])
856     ], [
857         AC_MSG_WARN([Can't find pcap library (needed for ldns-dpa, will not build dpa now.)])dnl'
858         AC_SUBST([LIBPCAP_LIBS], [])
859     ]
860 )
861 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 net/ethernet.h netinet/ip_compat.h],,, [
862 AC_INCLUDES_DEFAULT
863 #ifdef HAVE_NETINET_IN_SYSTM_H
864 #include <netinet/in_systm.h>
865 #endif
866 #ifdef HAVE_NETINET_IN_H
867 #include <netinet/in.h>
868 #endif
869 #ifdef HAVE_SYS_SOCKET_H
870 #include <sys/socket.h>
871 #endif
872 #ifdef HAVE_NET_IF_H
873 #include <net/if.h>
874 #endif])
875 fi
876
877 ACX_TYPE_SOCKLEN_T
878 if test "x$ac_cv_type_socklen_t" = xyes; then
879   AC_SUBST(ldns_build_config_have_socklen_t, 1)
880 else
881   AC_SUBST(ldns_build_config_have_socklen_t, 0)
882 fi
883 AC_TYPE_SIZE_T
884 AC_CHECK_TYPE(ssize_t, int)
885 dnl AC_TYPE_INTPTR_T does not work on all platforms (autoconf)
886 AC_CHECK_TYPE(intptr_t, size_t)
887 AC_CHECK_TYPE(in_addr_t, [], [AC_DEFINE([in_addr_t], [uint32_t], [in_addr_t])], [
888 #if HAVE_SYS_TYPES_H
889 # include <sys/types.h>
890 #endif
891 #if HAVE_NETINET_IN_H
892 # include <netinet/in.h>
893 #endif])
894 AC_CHECK_TYPE(in_port_t, [], [AC_DEFINE([in_port_t], [uint16_t], [in_port_t])], [
895 #if HAVE_SYS_TYPES_H
896 # include <sys/types.h>
897 #endif
898 #if HAVE_NETINET_IN_H
899 # include <netinet/in.h>
900 #endif])
901 ACX_CHECK_SS_FAMILY
902
903 # AC_FUNC_MALLOC suffers false failures and causes Asan failures.
904 # AC_FUNC_MALLOC
905 # AC_FUNC_REALLOC
906
907 AC_REPLACE_FUNCS(b64_pton)
908 AC_REPLACE_FUNCS(b64_ntop)
909 AC_REPLACE_FUNCS(calloc)
910 AC_REPLACE_FUNCS(timegm)
911 AC_REPLACE_FUNCS(gmtime_r)
912 AC_REPLACE_FUNCS(ctime_r)
913 AC_REPLACE_FUNCS(localtime_r)
914 AC_REPLACE_FUNCS(isblank)
915 AC_REPLACE_FUNCS(isascii)
916 AC_REPLACE_FUNCS(inet_aton)
917 AC_REPLACE_FUNCS(inet_pton)
918 AC_REPLACE_FUNCS(inet_ntop)
919 AC_REPLACE_FUNCS(snprintf)
920 AC_REPLACE_FUNCS(strlcpy)
921 AC_REPLACE_FUNCS(memmove)
922 AC_FUNC_FORK
923 AC_MSG_CHECKING([compile of fork])
924 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([
925 #include <unistd.h>
926 ], [
927         (void)fork();
928 ])], [
929         AC_MSG_RESULT(yes)
930         AC_DEFINE([HAVE_FORK_AVAILABLE], 1, [if fork is available for compile])
931 ], [    AC_MSG_RESULT(no)
932 ])
933 AC_CHECK_FUNCS([endprotoent endservent sleep random fcntl strtoul bzero memset b32_ntop b32_pton])
934 if test "x$HAVE_B32_NTOP" = "xyes"; then
935         AC_SUBST(ldns_build_config_have_b32_ntop, 1)
936 else
937         AC_SUBST(ldns_build_config_have_b32_ntop, 0)
938 fi
939 if test "x$HAVE_B32_PTON" = "xyes"; then
940         AC_SUBST(ldns_build_config_have_b32_pton, 1)
941 else
942         AC_SUBST(ldns_build_config_have_b32_pton, 0)
943 fi
944
945 ACX_CHECK_GETADDRINFO_WITH_INCLUDES
946 if test $ac_cv_func_getaddrinfo = no; then
947         AC_LIBOBJ([fake-rfc2553])
948 fi
949 if test "$USE_WINSOCK" = 1; then
950         AC_CHECK_TOOL(WINDRES, windres)
951 fi
952 ACX_FUNC_IOCTLSOCKET
953
954 #AC_SEARCH_LIBS(RSA_new, [crypto])
955
956 ACX_CHECK_FORMAT_ATTRIBUTE
957 ACX_CHECK_UNUSED_ATTRIBUTE
958
959 AC_ARG_WITH(xcode-sdk, AC_HELP_STRING([--with-xcode-sdk],
960  [Set xcode SDK version. Default is autodetect]),
961  [],[with_xcode_sdk="yes"])
962 if test "x_$with_xcode_sdk" != "x_no" ; then
963    # check OSX deployment target, if needed
964    if echo $target_os | grep darwin > /dev/null; then
965      sdk_p=`xcode-select -print-path`;
966      if test "x_$with_xcode_sdk" = "x_yes" ; then
967         sdk_v="$( /usr/bin/xcrun --show-sdk-version 2>/dev/null )"
968      else
969         sdk_v="$with_xcode_sdk"
970      fi
971      # xcrun only got that option in 10.7
972      if test -z "$sdk_v" ; then
973         sdk_c="10.6"
974         sdk_v="10.6"
975      fi
976      SYSROOT="$( find ${sdk_p} -name MacOSX${sdk_v}.sdk )"
977      case $sdk_v in
978           10.9|10.8)   sdk_c="10.7";;
979           10.11|10.10|*) sdk_c="10.10";;
980      esac
981      export MACOSX_DEPLOYMENT_TARGET="${sdk_c}";
982      export CFLAGS="$CFLAGS -mmacosx-version-min=${sdk_c} -isysroot ${SYSROOT}"
983    fi
984 fi
985
986 AC_DEFINE([SYSCONFDIR], [sysconfdir], [System configuration dir])
987
988 AC_ARG_WITH(trust-anchor, AC_HELP_STRING([--with-trust-anchor=KEYFILE], [Default location of the trust anchor file for drill and ldns-dane. [default=SYSCONFDIR/unbound/root.key]]), [
989  AC_SUBST([LDNS_TRUST_ANCHOR_FILE], ["$withval"])
990  AC_MSG_NOTICE([Default trust anchor: $withval])
991 ],[
992  AC_SUBST([LDNS_TRUST_ANCHOR_FILE], ["\$(sysconfdir)/unbound/root.key"])
993 ])
994
995 AC_ARG_WITH(ca-file, AC_HELP_STRING([--with-ca-file=CAFILE], [File containing CA certificates for ldns-dane]), [
996  AC_DEFINE([HAVE_DANE_CA_FILE], [1], [Is a CAFILE given at configure time])
997  AC_DEFINE_UNQUOTED([LDNS_DANE_CA_FILE], ["$withval"], [Is a CAFILE given at configure time])
998  AC_MSG_NOTICE([Using CAfile: $withval])
999  AC_SUBST(DEFAULT_CAFILE, ["Default is $withval"])
1000 ],[
1001  AC_DEFINE([HAVE_DANE_CA_FILE], [0], [Is a CAFILE given at configure time])
1002  AC_SUBST(DEFAULT_CAFILE, [])
1003 ])
1004
1005 AC_ARG_WITH(ca-path, AC_HELP_STRING([--with-ca-path=CAPATH], [Directory containing CA certificate files for ldns-dane]), [
1006  AC_DEFINE([HAVE_DANE_CA_PATH], [1], [Is a CAPATH given at configure time])
1007  AC_DEFINE_UNQUOTED([LDNS_DANE_CA_PATH], ["$withval"], [Is a CAPATH given at configure time])
1008  AC_MSG_NOTICE([Using CApath: $withval])
1009  AC_SUBST(DEFAULT_CAPATH, ["Default is $withval"])
1010 ],[
1011  AC_DEFINE([HAVE_DANE_CA_PATH], [0], [Is a CAPATH given at configure time])
1012  AC_SUBST(DEFAULT_CAPATH, [])
1013 ])
1014
1015 AH_BOTTOM([
1016 #include <stdio.h>
1017 #include <string.h>
1018 #include <unistd.h>
1019 #include <assert.h>
1020
1021 #ifndef LITTLE_ENDIAN
1022 #define LITTLE_ENDIAN 1234
1023 #endif
1024
1025 #ifndef BIG_ENDIAN
1026 #define BIG_ENDIAN 4321
1027 #endif
1028
1029 #ifndef BYTE_ORDER
1030 #ifdef WORDS_BIGENDIAN
1031 #define BYTE_ORDER BIG_ENDIAN
1032 #else
1033 #define BYTE_ORDER LITTLE_ENDIAN
1034 #endif /* WORDS_BIGENDIAN */
1035 #endif /* BYTE_ORDER */
1036
1037 #if STDC_HEADERS
1038 #include <stdlib.h>
1039 #include <stddef.h>
1040 #endif
1041
1042 #ifdef HAVE_STDINT_H
1043 #include <stdint.h>
1044 #endif
1045
1046 #ifdef HAVE_SYS_SOCKET_H
1047 #include <sys/socket.h>
1048 #endif
1049
1050 #ifdef HAVE_NETINET_IN_H
1051 #include <netinet/in.h>
1052 #endif
1053
1054 #ifdef HAVE_ARPA_INET_H
1055 #include <arpa/inet.h>
1056 #endif
1057
1058 #ifdef HAVE_WINSOCK2_H
1059 #include <winsock2.h>
1060 #endif
1061
1062 #ifdef HAVE_WS2TCPIP_H
1063 #include <ws2tcpip.h>
1064 #endif
1065 ]
1066 AHX_CONFIG_W32_FD_SET_T
1067 )
1068
1069 AH_BOTTOM([
1070 #ifdef __cplusplus
1071 extern "C" {
1072 #endif
1073
1074 int ldns_b64_ntop(uint8_t const *src, size_t srclength,
1075                   char *target, size_t targsize);
1076 /**
1077  * calculates the size needed to store the result of b64_ntop
1078  */
1079 /*@unused@*/
1080 static inline size_t ldns_b64_ntop_calculate_size(size_t srcsize)
1081 {
1082         return ((((srcsize + 2) / 3) * 4) + 1);
1083 }
1084 int ldns_b64_pton(char const *src, uint8_t *target, size_t targsize);
1085 /**
1086  * calculates the size needed to store the result of ldns_b64_pton
1087  */
1088 /*@unused@*/
1089 static inline size_t ldns_b64_pton_calculate_size(size_t srcsize)
1090 {
1091         return (((((srcsize + 3) / 4) * 3)) + 1);
1092 }
1093
1094 /**
1095  * Given in dnssec_zone.c, also used in dnssec_sign.c:w
1096
1097  */
1098 int ldns_dname_compare_v(const void *a, const void *b);
1099
1100 #ifndef HAVE_SLEEP
1101 /* use windows sleep, in millisecs, instead */
1102 #define sleep(x) Sleep((x)*1000)
1103 #endif
1104
1105 #ifndef HAVE_RANDOM
1106 #define srandom(x) srand(x)
1107 #define random(x) rand(x)
1108 #endif
1109
1110 #ifndef HAVE_TIMEGM
1111 #include <time.h>
1112 time_t timegm (struct tm *tm);
1113 #endif /* !TIMEGM */
1114 #ifndef HAVE_GMTIME_R
1115 struct tm *gmtime_r(const time_t *timep, struct tm *result);
1116 #endif
1117 #ifndef HAVE_LOCALTIME_R
1118 struct tm *localtime_r(const time_t *timep, struct tm *result);
1119 #endif
1120 #ifndef HAVE_ISBLANK
1121 int isblank(int c);
1122 #endif /* !HAVE_ISBLANK */
1123 #ifndef HAVE_ISASCII
1124 int isascii(int c);
1125 #endif /* !HAVE_ISASCII */
1126 #ifndef HAVE_SNPRINTF
1127 #include <stdarg.h>
1128 int snprintf (char *str, size_t count, const char *fmt, ...);
1129 int vsnprintf (char *str, size_t count, const char *fmt, va_list arg);
1130 #endif /* HAVE_SNPRINTF */
1131 #ifndef HAVE_INET_PTON
1132 int inet_pton(int af, const char* src, void* dst);
1133 #endif /* HAVE_INET_PTON */
1134 #ifndef HAVE_INET_NTOP
1135 const char *inet_ntop(int af, const void *src, char *dst, size_t size);
1136 #endif
1137 #ifndef HAVE_INET_ATON
1138 int inet_aton(const char *cp, struct in_addr *addr);
1139 #endif
1140 #ifndef HAVE_MEMMOVE
1141 void *memmove(void *dest, const void *src, size_t n);
1142 #endif
1143 #ifndef HAVE_STRLCPY
1144 size_t strlcpy(char *dst, const char *src, size_t siz);
1145 #endif
1146
1147 #ifdef USE_WINSOCK
1148 #define SOCK_INVALID INVALID_SOCKET
1149 #define close_socket(_s) do { if (_s != SOCK_INVALID) {closesocket(_s); _s = -1;} } while(0)
1150 #else
1151 #define SOCK_INVALID -1
1152 #define close_socket(_s) do { if (_s != SOCK_INVALID) {close(_s); _s = -1;} } while(0)
1153 #endif
1154
1155 #ifdef __cplusplus
1156 }
1157 #endif
1158 #ifndef HAVE_GETADDRINFO
1159 #include "compat/fake-rfc2553.h"
1160 #endif
1161 #ifndef HAVE_STRTOUL
1162 #define strtoul (unsigned long)strtol
1163 #endif
1164 ])
1165
1166 if test "x$HAVE_SSL" = "xyes"; then
1167         AC_SUBST(ldns_build_config_have_ssl, 1)
1168 else
1169         AC_SUBST(ldns_build_config_have_ssl, 0)
1170 fi
1171 if test "x$ac_cv_c_format_attribute" = "xyes"; then
1172   AC_SUBST(ldns_build_config_have_attr_format, 1)
1173 else
1174   AC_SUBST(ldns_build_config_have_attr_format, 0)
1175 fi
1176 if test "x$ac_cv_c_unused_attribute" = "xyes"; then
1177   AC_SUBST(ldns_build_config_have_attr_unused, 1)
1178 else
1179   AC_SUBST(ldns_build_config_have_attr_unused, 0)
1180 fi
1181
1182 CONFIG_FILES="Makefile libdns.doxygen ldns/common.h ldns/net.h ldns/util.h packaging/libldns.pc packaging/ldns-config"
1183 AC_SUBST(CONFIG_FILES)
1184 AC_CONFIG_FILES([$CONFIG_FILES])
1185
1186 AC_CONFIG_HEADER([ldns/config.h])
1187 AC_OUTPUT
1188 COPY_HEADER_FILES(ldns/, ldns/)
1189
1190 dnl AC_CONFIG_SUBDIRS([drill])