1 dnl source: configure.ac
2 dnl Copyright Gerhard Rieger and contributors (see file CHANGES)
3 dnl Published under the GNU General Public License V.2, see file COPYING
5 dnl Process this file with autoconf to produce a configure script.
8 AC_CONFIG_HEADER(config.h)
10 if test -f /usr/xpg4/bin/fgrep; then
11 FGREP=/usr/xpg4/bin/fgrep # Solaris
16 # find out which defines gcc passes to cpp, so makedepend does not run into
17 # (harmless) "error architecture not supported"
18 AC_MSG_CHECKING(which defines needed for makedepend)
19 __cpp_defs=`gcc -v -E - </dev/null 2>&1 |$FGREP -e '/cpp ' -e '/cc1 '`
20 SYSDEFS=`aa=; for a in $__cpp_defs
21 do case "$a" in -D*) aa="$aa $a";; esac; done; echo "$aa"`
23 AC_MSG_RESULT($SYSDEFS)
26 # this must come before AC_PROG_CC
27 if test -z "$CFLAGS"; then
28 # if CFLAGS is not set, we preset it to -O
29 # with this setting, we prevent autoconf from defaulting to "-g -O2"
33 dnl Checks for programs.
34 AC_PROG_INSTALL(install)
38 AC_CHECK_PROG(AR, ar, ar, gar)
40 # we need to explicitely call this here; otherwise, with --disable-libwrap we
42 AC_LANG_COMPILER_REQUIRE()
44 if test "$GCC" = yes; then
45 CFLAGS="$CFLAGS -D_GNU_SOURCE -Wall -Wno-parentheses"
46 ERRONWARN="-Werror -O0"
47 elif test "$CC" = "clang"; then
48 CFLAGS="$CFLAGS -D_GNU_SOURCE -Wall -Wno-parentheses"
49 ERRONWARN="-Werror -O0"
51 # ERRONWARN="-errwarn"
58 dnl Checks for header files.
60 AC_CHECK_HEADERS(stdbool.h)
61 AC_CHECK_HEADERS(inttypes.h)
63 AC_CHECK_HEADERS(fcntl.h limits.h strings.h sys/param.h sys/ioctl.h sys/time.h syslog.h unistd.h)
64 AC_CHECK_HEADERS(pwd.h grp.h stdint.h sys/types.h poll.h sys/poll.h sys/socket.h sys/uio.h sys/stat.h netdb.h sys/un.h)
65 AC_CHECK_HEADERS(pty.h)
66 AC_CHECK_HEADERS(netinet/in.h netinet/in_systm.h)
67 AC_CHECK_HEADERS(netinet/ip.h, [], [], [AC_INCLUDES_DEFAULT
68 #if HAVE_NETINET_IN_H && HAVE_NETINET_IN_SYSTM_H
69 #include <netinet/in.h>
70 #include <netinet/in_systm.h>
71 #endif]) # Solaris prerequisites for netinet/ip.h
72 AC_CHECK_HEADERS(netinet/tcp.h)
73 AC_CHECK_HEADER(net/if.h, AC_DEFINE(HAVE_NET_IF_H), [], [AC_INCLUDES_DEFAULT
75 #include <sys/socket.h>
76 #endif]) # Mac OS X requires including sys/socket.h
77 AC_CHECK_HEADERS(arpa/nameser.h)
81 AC_CHECK_HEADERS(termios.h linux/if_tun.h)
82 AC_CHECK_HEADERS(net/if_dl.h)
83 AC_CHECK_HEADERS(linux/types.h)
84 AC_CHECK_HEADER(linux/errqueue.h, AC_DEFINE(HAVE_LINUX_ERRQUEUE_H), [], [#include <sys/time.h>
85 #include <linux/types.h>])
86 AC_CHECK_HEADERS(sys/utsname.h sys/select.h sys/file.h)
87 AC_CHECK_HEADERS(util.h bsd/libutil.h libutil.h sys/stropts.h regex.h)
88 AC_CHECK_HEADERS(linux/fs.h linux/ext2_fs.h)
90 dnl Checks for setgrent, getgrent and endgrent.
91 AC_CHECK_FUNCS(setgrent getgrent endgrent)
92 dnl Checks for getgrouplist() /* BSD */
93 AC_CHECK_FUNCS(getgrouplist)
94 AC_CHECK_FUNCS(cfmakeraw)
96 dnl Link libresolv if necessary (for Mac OS X)
97 AC_SEARCH_LIBS([res_9_init], [resolv])
100 dnl Check for extra socket library (for Solaris)
101 AC_CHECK_FUNC(hstrerror, , AC_CHECK_LIB(resolv, hstrerror, [LIBS="$LIBS -lresolv"; AC_DEFINE(HAVE_HSTRERROR)]))
102 AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent))
103 AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt))
105 dnl Check for function prototype and in lib
106 dnl arg1: function name
107 dnl arg2: required include files beyond sysincludes.h
108 define(AC_CHECK_PROTOTYPE_LIB,[
109 AC_MSG_CHECKING(for $1 prototype)
110 AC_CACHE_VAL(sc_cv_have_prototype_lib_$1,
111 [CFLAGS1="$CFLAGS"; CFLAGS="$ERRONWARN -Wall $CFLAGS1";
112 AC_TRY_LINK([#include "sysincludes.h"
113 $2],[return(&$1==(void *)&$1);],
114 [sc_cv_have_prototype_lib_$1=yes],
115 [sc_cv_have_prototype_lib_$1=no]);
117 if test $sc_cv_have_prototype_lib_$1 = yes; then
118 AC_DEFINE(HAVE_PROTOTYPE_LIB_$1)
120 AC_MSG_RESULT($sc_cv_have_prototype_lib_$1)
124 dnl Check for hstrerror prototype
125 AC_MSG_CHECKING(for hstrerror prototype)
126 AC_CACHE_VAL(sc_cv_have_prototype_hstrerror,
127 [CFLAGS1="$CFLAGS"; CFLAGS="$ERRONWARN $(echo "$CFLAGS1" | sed -e 's@-Wall@@g')";
128 AC_TRY_COMPILE([#include <netdb.h>],[hstrerror();],
129 [sc_cv_have_prototype_hstrerror=no],
130 [sc_cv_have_prototype_hstrerror=yes]);
132 if test $sc_cv_have_prototype_hstrerror = yes; then
133 AC_DEFINE(HAVE_PROTOTYPE_HSTRERROR)
135 AC_MSG_RESULT($sc_cv_have_prototype_hstrerror)
137 # getprotobynumber_r() is not standardized
138 AC_MSG_CHECKING(for getprotobynumber_r() variant)
139 AC_CACHE_VAL(sc_cv_getprotobynumber_r,
140 [AC_TRY_COMPILE([#include <stddef.h>
141 #include <netdb.h>],[getprotobynumber_r(1,NULL,NULL,1024,NULL);],
142 [sc_cv_getprotobynumber_r=1; tmp_bynum_variant=Linux],
143 [AC_TRY_COMPILE([#include <stddef.h>
144 #include <netdb.h>],[getprotobynumber_r(1,NULL,NULL,1024);],
145 [sc_cv_getprotobynumber_r=2; tmp_bynum_variant=Solaris],
146 [AC_TRY_COMPILE([#include <stddef.h>
147 #include <netdb.h>],[getprotobynumber_r(1,NULL,NULL);],
148 [sc_cv_getprotobynumber_r=3; tmp_bynum_variant=AIX],
150 [sc_cv_getprotobynumber_r=]
152 if test "$sc_cv_getprotobynumber_r"; then
153 AC_DEFINE_UNQUOTED(HAVE_GETPROTOBYNUMBER_R, $sc_cv_getprotobynumber_r)
155 AC_MSG_RESULT($sc_cv_getprotobynumber_r /* $tmp_bynum_variant */)
158 AC_MSG_CHECKING(whether to include help)
159 AC_ARG_ENABLE(help, [ --disable-help disable help],
160 [case "$enableval" in
161 no) AC_MSG_RESULT(no);;
162 *) AC_DEFINE(WITH_HELP) AC_MSG_RESULT(yes);;
164 [AC_DEFINE(WITH_HELP) AC_MSG_RESULT(yes)])
166 AC_MSG_CHECKING(whether to include STDIO support)
167 AC_ARG_ENABLE(stdio, [ --disable-stdio disable STDIO support],
168 [case "$enableval" in
169 no) AC_MSG_RESULT(no);;
170 *) AC_DEFINE(WITH_STDIO) AC_MSG_RESULT(yes);;
172 [AC_DEFINE(WITH_STDIO) AC_MSG_RESULT(yes)])
174 AC_MSG_CHECKING(whether to include FD-number support)
175 AC_ARG_ENABLE(fdnum, [ --disable-fdnum disable FD-number support],
176 [case "$enableval" in
177 no) AC_MSG_RESULT(no);;
178 *) AC_DEFINE(WITH_FDNUM) AC_MSG_RESULT(yes);;
180 [AC_DEFINE(WITH_FDNUM) AC_MSG_RESULT(yes)])
182 AC_MSG_CHECKING(whether to include direct file support)
183 AC_ARG_ENABLE(file, [ --disable-file disable direct file support],
184 [case "$enableval" in
185 no) AC_MSG_RESULT(no);;
186 *) AC_DEFINE(WITH_FILE) AC_MSG_RESULT(yes);;
188 [AC_DEFINE(WITH_FILE) AC_MSG_RESULT(yes)])
190 AC_MSG_CHECKING(whether to include direct create support)
191 AC_ARG_ENABLE(creat, [ --disable-creat disable direct create support],
192 [case "$enableval" in
193 no) AC_MSG_RESULT(no);;
194 *) AC_DEFINE(WITH_CREAT) AC_MSG_RESULT(yes);;
196 [AC_DEFINE(WITH_CREAT) AC_MSG_RESULT(yes)])
198 AC_MSG_CHECKING(whether to include gopen support)
199 AC_ARG_ENABLE(gopen, [ --disable-gopen disable open for UNIX socket support],
200 [case "$enableval" in
201 no) AC_MSG_RESULT(no);;
202 *) AC_DEFINE(WITH_GOPEN) AC_MSG_RESULT(yes);;
204 [AC_DEFINE(WITH_GOPEN) AC_MSG_RESULT(yes)])
206 AC_MSG_CHECKING(whether to include explicit pipe support)
207 AC_ARG_ENABLE(pipe, [ --disable-pipe disable pipe support],
208 [case "$enableval" in
209 no) AC_MSG_RESULT(no);;
210 *) AC_DEFINE(WITH_PIPE) AC_MSG_RESULT(yes);;
212 [AC_DEFINE(WITH_PIPE) AC_MSG_RESULT(yes)])
214 AC_MSG_CHECKING(whether to include explicit termios support)
215 AC_ARG_ENABLE(termios, [ --disable-termios disable termios support],
216 [case "$enableval" in
217 no) AC_MSG_RESULT(no);;
218 *) AC_DEFINE(WITH_TERMIOS) AC_MSG_RESULT(yes);;
220 [AC_DEFINE(WITH_TERMIOS) AC_MSG_RESULT(yes)])
222 AC_MSG_CHECKING(whether to include UNIX socket support)
223 AC_ARG_ENABLE(unix, [ --disable-unix disable UNIX domain socket support],
224 [case "$enableval" in
225 no) AC_MSG_RESULT(no);;
226 *) AC_DEFINE(WITH_UNIX) AC_MSG_RESULT(yes);;
228 [AC_DEFINE(WITH_UNIX) AC_MSG_RESULT(yes)])
230 AC_MSG_CHECKING(whether to include abstract UNIX socket support)
231 AC_ARG_ENABLE(abstract_unixsocket, [ --disable-abstract-unixsocket disable abstract UNIX domain socket support],
232 [case "$enableval" in
233 no) AC_MSG_RESULT(no);;
234 *) AC_DEFINE(WITH_ABSTRACT_UNIXSOCKET) AC_MSG_RESULT(yes);;
238 AC_DEFINE(WITH_ABSTRACT_UNIXSOCKET) AC_MSG_RESULT(yes);;
243 AC_MSG_CHECKING(whether to include IPv4 support)
244 AC_ARG_ENABLE(ip4, [ --disable-ip4 disable IPv4 support],
245 [case "$enableval" in
246 no) AC_MSG_RESULT(no);;
247 *) AC_DEFINE(WITH_IP4) AC_MSG_RESULT(yes);;
249 [AC_DEFINE(WITH_IP4) AC_MSG_RESULT(yes)])
251 AC_MSG_CHECKING(whether to include IPv6 support)
252 AC_ARG_ENABLE(ip6, [ --disable-ip6 disable IPv6 support],
253 [case "$enableval" in
254 no) AC_MSG_RESULT(no); WITH_IP6= ;;
255 *) AC_MSG_RESULT(yes); WITH_IP6=1 ;;
257 [ AC_MSG_RESULT(yes); WITH_IP6=1 ])
258 if test "$WITH_IP6"; then
259 AC_CHECK_HEADERS([netinet/ip6.h],
260 [AC_DEFINE(HAVE_NETINET_IP6_H) AC_DEFINE(WITH_IP6)],
261 [AC_MSG_WARN([include file netinet/ip6.h not found, disabling IP6])],
263 #ifdef HAVE_NETINET_IN_H
264 # include <netinet/in.h>
266 #ifdef HAVE_NETINET_IP_H
267 # include <netinet/ip.h>
269 AC_CHECK_HEADERS(netinet6/in6.h) # found on OpenBSD and Lion, used for IPV6_*
271 AC_MSG_CHECKING(if __APPLE_USE_RFC_2292 is helpful)
272 AC_CACHE_VAL(ac_cv_apple_use_rfc_2292,
273 [AC_TRY_COMPILE(,[#ifndef IPV6_HOPOPTS
276 [ac_cv_apple_use_rfc_2292=no],
277 [AC_TRY_COMPILE([#define __APPLE_USE_RFC_2292],
278 [#ifndef IPV6_HOPOPTS
281 [ac_cv_apple_use_rfc_2292=yes],
282 [ac_cv_apple_use_rfc_2292=no]
285 if test "$ac_cv_apple_use_rfc_2292" = yes; then
286 AC_DEFINE(__APPLE_USE_RFC_2292)
288 AC_MSG_RESULT($ac_cv_apple_use_rfc_2292)
292 AC_MSG_CHECKING(whether to include raw IP support)
293 AC_ARG_ENABLE(rawip, [ --disable-rawip disable raw IP support],
294 [case "$enableval" in
295 no) AC_MSG_RESULT(no);;
296 *) AC_DEFINE(WITH_RAWIP) AC_MSG_RESULT(yes);;
298 [AC_DEFINE(WITH_RAWIP) AC_MSG_RESULT(yes)])
300 AC_MSG_CHECKING(whether to include generic socket support)
301 AC_ARG_ENABLE(genericsocket, [ --disable-genericsocket disable generic socket support],
302 [case "$enableval" in
303 no) AC_MSG_RESULT(no);;
304 *) AC_DEFINE(WITH_GENERICSOCKET) AC_MSG_RESULT(yes);;
306 [AC_DEFINE(WITH_GENERICSOCKET) AC_MSG_RESULT(yes)])
307 AC_MSG_CHECKING(whether to include generic network interface support)
308 AC_ARG_ENABLE(interface, [ --disable-interface disable network interface support],
309 [case "$enableval" in
310 no) AC_MSG_RESULT(no); WITH_INTERFACE= ;;
311 *) AC_MSG_RESULT(yes); WITH_INTERFACE=1 ;;
313 [AC_MSG_RESULT(yes); WITH_INTERFACE=1 ])
314 if test "$WITH_INTERFACE"; then
315 AC_CHECK_HEADER(netpacket/packet.h,
316 AC_DEFINE(HAVE_NETPACKET_PACKET_H),
318 AC_MSG_WARN([include file netpacket/packet.h not found, disabling interface])])
320 if test "$WITH_INTERFACE"; then
321 AC_CHECK_HEADER(netinet/if_ether.h,
322 AC_DEFINE(HAVE_NETINET_IF_ETHER_H),
324 AC_MSG_WARN([include file netinet/if_ether.h not found, disabling interface])],
326 #if HAVE_NET_IF_H && HAVE_NETINET_IN_H
328 #include <netinet/in.h>
331 if test "$WITH_INTERFACE"; then
332 AC_DEFINE(WITH_INTERFACE)
335 AC_MSG_CHECKING(whether to include TCP support)
336 AC_ARG_ENABLE(tcp, [ --disable-tcp disable TCP support],
337 [case "$enableval" in
338 no) AC_MSG_RESULT(no);;
339 *) AC_DEFINE(WITH_TCP) AC_MSG_RESULT(yes);;
341 [AC_DEFINE(WITH_TCP) AC_MSG_RESULT(yes)])
343 AC_MSG_CHECKING(whether to include UDP support)
344 AC_ARG_ENABLE(udp, [ --disable-udp disable UDP support],
345 [case "$enableval" in
346 no) AC_MSG_RESULT(no);;
347 *) AC_DEFINE(WITH_UDP) AC_MSG_RESULT(yes);;
349 [AC_DEFINE(WITH_UDP) AC_MSG_RESULT(yes)])
351 AC_MSG_CHECKING(whether to include SCTP support)
352 AC_ARG_ENABLE(sctp, [ --disable-sctp disable SCTP support],
353 [case "$enableval" in
354 no) AC_MSG_RESULT(no); WITH_SCTP= ;;
355 *) AC_MSG_RESULT(yes); WITH_SCTP=1 ;;
357 [AC_MSG_RESULT(yes); WITH_SCTP=1 ])
359 if test -n "$WITH_SCTP"; then
360 AC_MSG_CHECKING(for IPPROTO_SCTP)
361 AC_CACHE_VAL(sc_cv_define_ipproto_sctp,
362 [AC_TRY_COMPILE([#include <sys/types.h>
363 #include <netinet/in.h>],
365 [sc_cv_define_ipproto_sctp=yes],
366 [sc_cv_define_ipproto_sctp=no])])
367 AC_MSG_RESULT($sc_cv_define_ipproto_sctp)
368 if test $sc_cv_define_ipproto_sctp = yes; then
371 AC_MSG_WARN([IPPROTO_SCTP undefined, disabling SCTP support])
375 AC_MSG_CHECKING(whether to include vsock support)
376 AC_ARG_ENABLE(vsock, [ --disable-vsock disable vsock support],
377 [case "$enableval" in
378 no) AC_MSG_RESULT(no); WITH_VSOCK= ;;
379 *) AC_MSG_RESULT(yes); WITH_VSOCK=1 ;;
381 [AC_MSG_RESULT(yes); WITH_VSOCK=1 ])
382 if test "$WITH_VSOCK"; then
383 AC_CHECK_HEADER(linux/vm_sockets.h,
384 AC_DEFINE(HAVE_LINUX_VM_SOCKETS_H),
386 AC_MSG_WARN([include file linux/vm_sockets.h not found, disabling vsock])],
388 #if HAVE_SYS_SOCKET_H
389 #include <sys/socket.h>
394 if test "$WITH_VSOCK"; then
395 AC_DEFINE(WITH_VSOCK)
398 AC_MSG_CHECKING(whether to include listen support)
399 AC_ARG_ENABLE(listen, [ --disable-listen disable listen support],
400 [case "$enableval" in
401 no) AC_MSG_RESULT(no);;
402 *) AC_DEFINE(WITH_LISTEN) AC_MSG_RESULT(yes);;
404 [AC_DEFINE(WITH_LISTEN) AC_MSG_RESULT(yes)])
406 AC_MSG_CHECKING(whether to include socks4 support)
407 AC_ARG_ENABLE(socks4, [ --disable-socks4 disable socks4 support],
408 [case "$enableval" in
409 no) AC_MSG_RESULT(no);;
410 *) AC_DEFINE(WITH_SOCKS4) AC_MSG_RESULT(yes);;
412 [AC_DEFINE(WITH_SOCKS4) AC_MSG_RESULT(yes)])
414 AC_MSG_CHECKING(whether to include socks4a support)
415 AC_ARG_ENABLE(socks4a, [ --disable-socks4a disable socks4a support],
416 [case "$enableval" in
417 no) AC_MSG_RESULT(no);;
418 *) AC_DEFINE(WITH_SOCKS4A) AC_MSG_RESULT(yes);;
420 [AC_DEFINE(WITH_SOCKS4A) AC_MSG_RESULT(yes)])
422 AC_MSG_CHECKING(whether to include proxy connect support)
423 AC_ARG_ENABLE(proxy, [ --disable-proxy disable proxy connect support],
424 [case "$enableval" in
425 no) AC_MSG_RESULT(no);;
426 *) AC_DEFINE(WITH_PROXY) AC_MSG_RESULT(yes);;
428 [AC_DEFINE(WITH_PROXY) AC_MSG_RESULT(yes)])
430 AC_MSG_CHECKING(whether to include exec support)
431 AC_ARG_ENABLE(exec, [ --disable-exec disable exec support],
432 [case "$enableval" in
433 no) AC_MSG_RESULT(no);;
434 *) AC_DEFINE(WITH_EXEC) AC_MSG_RESULT(yes);;
436 [AC_DEFINE(WITH_EXEC) AC_MSG_RESULT(yes)])
438 AC_MSG_CHECKING([whether to include system (shell) support])
439 AC_ARG_ENABLE(system, [ --disable-system disable system (shell) support],
440 [case "$enableval" in
441 no) AC_MSG_RESULT(no);;
442 *) AC_DEFINE(WITH_SYSTEM) AC_MSG_RESULT(yes);;
444 [AC_DEFINE(WITH_SYSTEM) AC_MSG_RESULT(yes)])
446 AC_MSG_CHECKING(whether to include pty address support)
447 AC_ARG_ENABLE(pty, [ --disable-pty disable pty support],
448 [case "$enableval" in
449 no) AC_MSG_RESULT(no);;
450 *) AC_DEFINE(WITH_PTY) AC_MSG_RESULT(yes);;
452 [AC_DEFINE(WITH_PTY) AC_MSG_RESULT(yes)])
454 AC_MSG_CHECKING(whether to include fs attributes support)
455 AC_ARG_ENABLE(fs, [ --disable-fs disable fs attributes support],
456 [case "$enableval" in
457 no) AC_MSG_RESULT(no);;
458 *) AC_DEFINE(WITH_FS) AC_MSG_RESULT(yes);;
460 [AC_DEFINE(WITH_FS) AC_MSG_RESULT(yes)])
462 AC_MSG_CHECKING(whether to include readline support)
463 AC_ARG_ENABLE(readline, [ --disable-readline disable readline support],
464 [case "$enableval" in
465 no) AC_MSG_RESULT(no); WITH_READLINE= ;;
466 *) AC_MSG_RESULT(yes); WITH_READLINE=1 ;;
468 [AC_MSG_RESULT(yes); WITH_READLINE=1 ])
470 if test -n "$WITH_READLINE"; then
471 CPPFLAGS_ORIG=$CPPFLAGS
474 sc_usable_readline_found=
476 for D in "" "/usr/local" "/opt/local" "/sw" "/opt/freeware" "/usr/sfw"; do
477 if test -n "$D" ; then
478 CPPFLAGS="$CPPFLAGS -I$D/include"
479 CFLAGS="$CFLAGS -L$D/lib"
480 DLOC="in location $D"
482 DLOC="in default location"
484 AC_MSG_CHECKING(for usable readline $DLOC)
486 # Some systems require -lcurses, some require -lncurses.
487 # Mac OS X 10.4 (and others) ships with libedit masquerading as readline,
488 # but it doesn't work well with socat. It can be recognized by the absence
491 for L in "" "-lcurses" "-lncurses"; do
492 LIBS="$LIBS_ORIG -lreadline $L"
495 #include <readline/readline.h>
496 #include <readline/history.h>],
498 append_history(0, NULL); ],
499 [ sc_usable_readline_found=1
503 if test -n "$sc_usable_readline_found"; then
505 AC_DEFINE(HAVE_READLINE_READLINE_H,1)
506 AC_DEFINE(HAVE_READLINE_HISTORY_H,1)
507 AC_DEFINE(HAVE_LIBREADLINE,1)
508 AC_DEFINE(WITH_READLINE,1)
512 CPPFLAGS=$CPPFLAGS_ORIG
518 if test -z "$sc_usable_readline_found"; then
519 AC_MSG_WARN([no suitable version of readline found; perhaps you need to install a newer version])
523 AC_MSG_CHECKING(whether to include openssl support)
524 AC_ARG_ENABLE(openssl, [ --disable-openssl disable OpenSSL support],
525 [ case "$enableval" in
526 no) AC_MSG_RESULT(no); WITH_OPENSSL= ;;
527 *) AC_MSG_RESULT(yes); WITH_OPENSSL=1 ;;
529 [ AC_MSG_RESULT(yes); WITH_OPENSSL=1 ])
530 AC_ARG_ENABLE(openssl_base, [ --enable-openssl-base specify directory with include/ and lib/],
531 [ OPENSSL_BASE="$enableval" ],
532 [ unset OPENSSL_BASE ])
534 if test -n "$WITH_OPENSSL"; then
535 if test -n "$OPENSSL_BASE"; then
536 sc_cv_have_openssl_ssl_h=yes; OPENSSL_BASE="$D"
538 AC_MSG_NOTICE(checking for components of OpenSSL)
539 # first, we need to find the include file <openssl/ssl.h>
540 AC_CACHE_VAL(sc_cv_have_openssl_ssl_h,
541 [AC_TRY_COMPILE([#include <openssl/ssl.h>],[;],
542 [sc_cv_have_openssl_ssl_h=yes; OPENSSL_BASE=""; ],
543 [sc_cv_have_openssl_ssl_h=no
544 if [ "$OPENSSL_BASE" ]; then
547 Ds="/sw /usr/local /opt/freeware /usr/sfw /usr/local/ssl"
552 if test -r "$i"; then
553 #V_INCL="$V_INCL -I$I"
554 CPPFLAGS="$CPPFLAGS -I$I"
555 AC_MSG_NOTICE(found $i)
556 sc_cv_have_openssl_ssl_h=yes; OPENSSL_BASE="$D"
561 if test "$sc_cv_have_openssl_ssl_h" = "yes"; then
562 AC_DEFINE(HAVE_OPENSSL_SSL_H)
564 AC_MSG_NOTICE(checked for openssl/ssl.h... $sc_cv_have_openssl_ssl_h)
566 fi # end checking for openssl/ssl.h
569 #if test -n "$WITH_OPENSSL"; then
570 # AC_CHECK_FUNCS(OPENSSL_init_ssl, SSL_library_init)
573 if test -n "$WITH_OPENSSL" -a "$sc_cv_have_openssl_ssl_h" = 'yes'; then
574 # next, we search for the openssl library (libssl.*)
575 # interesting: Linux only requires -lssl, FreeBSD requires -lssl -lcrypto
576 # Note, version OpenSSL 0.9.7j and higher requires -lcrypto even on Linux.
577 AC_MSG_CHECKING(for libssl)
578 AC_CACHE_VAL(sc_cv_have_libssl,
580 if test -n "$OPENSSL_BASE"; then
581 L="$OPENSSL_BASE/lib"; LIBS="$LIBS -L$L -lssl -lcrypto"
583 LIBS="$LIBS -lssl -lcrypto"
585 AC_TRY_LINK([#include <openssl/ssl.h>],
586 [SSL_library_init();ERR_error_string()],
587 [sc_cv_have_libssl='yes'],
588 [ LIBS="$LIBS -lcrypto"
589 AC_TRY_LINK([#include <openssl/ssl.h>],
590 [SSL_library_init()],
591 [sc_cv_have_libssl='yes'],
592 [sc_cv_have_libssl='no'])
594 if test "$sc_cv_have_libssl" != 'yes'; then
599 if test "$sc_cv_have_libssl" = 'yes'; then
600 AC_DEFINE(HAVE_LIBSSL)
602 AC_MSG_RESULT($sc_cv_have_libssl)
605 # # a possible location for openssl (on Sourceforge/Solaris)
606 # AC_CHECK_FILE(/usr/local/ssl/lib, LIBS="$LIBS -L/usr/local/ssl/lib/")
607 # # sometimes on Solaris:
608 # AC_CHECK_FILE(/pkgs/lib, LIBS="$LIBS -L/pkgs/lib/")
609 # # for AIX 5.1 with Linux toolbox:
610 # AC_CHECK_FILE(/opt/freeware/lib, LIBS="$LIBS -L/opt/freeware/lib/")
612 # AC_CHECK_LIB(crypto, main)
613 # AC_CHECK_LIB(ssl, main)
615 # # MacOSX has openssl includes in another directory
616 # if test -d /sw/include/; then
617 # V_INCL="$V_INCL -I/sw/include"
618 # # and Solaris at sourceforge here:
619 # elif test -d /usr/local/ssl/include/; then
620 # V_INCL="$V_INCL -I/usr/local/ssl/include"
621 # # and AIX 5.1 with Linux toolbox:
622 # elif test -d /opt/freeware/include; then
623 # V_INCL="$V_INCL -I/opt/freeware/include"
626 if test -n "$WITH_OPENSSL"; then
627 if test "$sc_cv_have_openssl_ssl_h" = "yes" -a "$sc_cv_have_libssl" = "yes"; then
628 AC_DEFINE(WITH_OPENSSL)
630 AC_MSG_WARN([not all components of OpenSSL found, disabling it]);
634 AC_CHECK_FUNCS(OPENSSL_init_ssl SSL_library_init)
636 #; sc_cv_have_SSL_library_init='yes'; AC_DEFINE(HAVE_SSL_library_init)
637 #if test -n "$WITH_OPENSSL"; then
638 # AC_CHECK_LIB(crypto, CRYPTO_new_ex_data, [], [AC_MSG_ERROR([library 'crypto' is required for OpenSSL])])
640 # AC_CHECK_LIB(ssl, OPENSSL_init_ssl, [FOUND_SSL_LIB="yes"])
641 # AC_CHECK_LIB(ssl, SSL_library_init, [FOUND_SSL_LIB="yes"])
642 # AS_IF([test "x$FOUND_SSL_LIB" = xno], [AC_MSG_ERROR([library 'ssl' is required for OpenSSL; WITH_OPENSSL=])])
643 # AS_IF([test "x$FOUND_SSL_LIB" = xyes], [LIBS="$LIBS -L$L -lssl -lcrypto"])
646 if test -n "$WITH_OPENSSL"; then
647 AC_MSG_CHECKING(whether to include OpenSSL method option)
648 AC_ARG_ENABLE(openssl-method, [ --enable-openssl-method enable OpenSSL method option],
649 [case "$enableval" in
650 no) AC_MSG_RESULT(no);;
651 *) AC_DEFINE(WITH_OPENSSL_METHOD) WITH_OPENSSL_METHOD=1; AC_MSG_RESULT(yes);;
656 AC_MSG_CHECKING(whether to include deprecated resolver option)
657 AC_ARG_ENABLE(res-deprecated, [ --enable-res-deprecated enable deprecated resolver options],
658 [case "$enableval" in
659 no) AC_MSG_RESULT(no);;
660 *) AC_DEFINE(WITH_RES_DEPRECATED) WITH_RES_DEPRECATED=1; AC_MSG_RESULT(yes);;
664 # check for fips support
665 AC_MSG_CHECKING(whether to include openssl fips support)
666 AC_ARG_ENABLE(fips, [ --enable-fips enable OpenSSL FIPS support],
667 [ case "$enableval" in
668 yes) AC_MSG_RESULT(yes); WITH_FIPS=1 ;;
669 *) AC_MSG_RESULT(no); WITH_FIPS= ;;
671 [ AC_MSG_RESULT(no); WITH_FIPS= ])
673 if test -n "$WITH_FIPS"; then
674 if test -n "$WITH_OPENSSL"; then
675 AC_CHECK_PROG(HAVE_FIPSLD, fipsld, 1)
676 if test "$sc_cv_have_openssl_ssl_h" != "yes" -o "$sc_cv_have_libssl" != "yes" -o ! "$HAVE_FIPSLD";
678 AC_MSG_WARN([not all components of OpenSSL found, disabling FIPS]);
682 AC_MSG_WARN([must enable OpenSSL to enable FIPS; use --enable-openssl]);
686 if test -n "$WITH_FIPS"; then
687 AC_MSG_CHECKING(for components of OpenSSL FIPS)
688 # first, we need to find the include file <openssl/fips.h>
689 AC_CACHE_VAL(sc_cv_have_openssl_fips_h,
690 [AC_TRY_COMPILE([#define OPENSSL_FIPS
692 #include <openssl/fips.h>],[;],
693 [sc_cv_have_openssl_fips_h=yes; ],
694 [sv_cv_have_openssl_fips_h=no
695 if test -n "$OPENSSL_BASE"; then
696 I="$OPENSSL_BASE/include"
697 i="$I/openssl/fips.h"
698 if test -r "$i"; then
699 AC_MSG_NOTICE(found $i)
700 sc_cv_have_openssl_fips_h=yes;
706 if test "$sv_cv_have_openssl_fips_h" = "yes"; then
707 AC_DEFINE(HAVE_OPENSSL_FIPS_H)
709 AC_MSG_NOTICE(checked for openssl/fips.h... $sc_cv_have_openssl_ssl_h)
712 if test -n "$WITH_FIPS" -a "$sc_cv_have_openssl_fips_h" = 'yes'; then
713 # check for the libcrypto library with fips support
714 AC_MSG_CHECKING(for libcrypto with FIPS support)
715 AC_CACHE_VAL(sc_cv_have_libcrypto,
717 echo $LIBS | grep -q "\-lcrypto"
718 if test $? -ne 0; then
719 if test -n "$OPENSSL_BASE"; then
720 L="$OPENSSL_BASE/lib"; LIBS="$LIBS -L$L -lcrypto"
722 LIBS="$LIBS -lcrypto"
725 AC_TRY_LINK([#define OPENSSL_FIPS
726 #include <openssl/ssl.h>
727 #include <openssl/fips.h>],
728 [int res = FIPS_mode_set(1);],
729 [sc_cv_have_libcrypto='yes'],
730 [sc_cv_have_libcrypto='no']
732 if test "$sc_cv_have_libcrypto" != 'yes'; then
737 if test "$sc_cv_have_libcrypto" = 'yes'; then
738 AC_DEFINE(HAVE_LIBCRYPTO)
740 AC_MSG_RESULT($sc_cv_have_libcrypto)
743 if test -n "$WITH_FIPS"; then
744 if test "$sc_cv_have_openssl_fips_h" = 'yes' -a "$sc_cv_have_libcrypto" = 'yes'; then
746 AC_DEFINE(OPENSSL_FIPS)
748 AC_MSG_WARN([not all components of OpenSSL FIPS found, disabling it]);
752 AC_MSG_CHECKING(whether to include tun/tap address support)
753 AC_ARG_ENABLE(tun, [ --disable-tun disable TUN/TAP support],
754 [case "$enableval" in
755 no) AC_MSG_RESULT(no); WITH_TUN= ;;
756 *) AC_MSG_RESULT(yes); WITH_TUN=1 ;;
758 [AC_MSG_RESULT(yes); WITH_TUN=1 ])
761 if ! test "$ac_cv_header_linux_if_tun_h" = 'yes'; then
762 AC_MSG_WARN(include file linux/if_tun.h not found, disabling TUN)
766 if test -n "$WITH_TUN"; then
770 AC_MSG_CHECKING(whether to include system call tracing)
771 AC_ARG_ENABLE(sycls, [ --disable-sycls disable system call tracing],
772 [case "$enableval" in
773 no) SYCLS=""; SSLCLS=""; AC_MSG_RESULT(no);;
774 *) AC_DEFINE(WITH_SYCLS)
775 SYCLS="sycls.c"; SSLCLS="sslcls.c"; AC_MSG_RESULT(yes);;
777 [AC_DEFINE(WITH_SYCLS)
778 SYCLS="sycls.c"; SSLCLS="sslcls.c"; AC_MSG_RESULT(yes)])
782 AC_MSG_CHECKING(whether to include file descriptor analyzer)
783 AC_ARG_ENABLE(filan, [ --disable-filan disable file descriptor analyzer],
784 [case "$enableval" in
785 no) FILAN=""; AC_MSG_RESULT(no);;
786 *) AC_DEFINE(WITH_FILAN) FILAN="filan.c"; AC_MSG_RESULT(yes);;
788 [AC_DEFINE(WITH_FILAN) FILAN="filan.c"; AC_MSG_RESULT(yes)])
791 AC_MSG_CHECKING(whether to include retry support)
792 AC_ARG_ENABLE(retry, [ --disable-retry disable retry support],
793 [case "$enableval" in
794 no) AC_MSG_RESULT(no);;
795 *) AC_DEFINE(WITH_RETRY) AC_MSG_RESULT(yes);;
797 [AC_DEFINE(WITH_RETRY) AC_MSG_RESULT(yes)])
799 AC_MSG_CHECKING(included message level)
800 AC_ARG_ENABLE(msglevel, [ --enable-msglevel=N set max verbosity to debug,info,notice,warn,error,fatal],
801 [case "$enableval" in
802 0|DEBUG|Debug|debug) AC_DEFINE(WITH_MSGLEVEL,0) AC_MSG_RESULT(debug);;
803 1|INFO|Info|info) AC_DEFINE(WITH_MSGLEVEL,1) AC_MSG_RESULT(info);;
804 2|NOTICE|Notice|notice) AC_DEFINE(WITH_MSGLEVEL,2) AC_MSG_RESULT(notice);;
805 3|WARN|Warn|warn) AC_DEFINE(WITH_MSGLEVEL,3) AC_MSG_RESULT(warn);;
806 4|ERROR|Error|error) AC_DEFINE(WITH_MSGLEVEL,4) AC_MSG_RESULT(error);;
807 5|FATAL|Fatal|fatal) AC_DEFINE(WITH_MSGLEVEL,5) AC_MSG_RESULT(fatal);;
808 *) AC_DEFINE(WITH_MSGLEVEL,0) AC_MSG_RESULT(debug);;
810 [AC_DEFINE(WITH_MSGLEVEL,0) AC_MSG_RESULT(debug)])
814 dnl Checks for typedefs, structures, and compiler characteristics.
826 dnl Check for extra realtime library (for Solaris)
827 AC_CHECK_FUNC(nanosleep, AC_DEFINE(HAVE_NANOSLEEP), AC_CHECK_LIB(rt, nanosleep, [LIBS="-lrt $LIBS"; AC_DEFINE(HAVE_NANOSLEEP)]))
828 #AC_CHECK_FUNC(nanosleep, , AC_CHECK_LIB(rt, nanosleep))
830 dnl Checks for library functions.
831 AC_PROG_GCC_TRADITIONAL
835 AC_CHECK_FUNCS(putenv select pselect poll socket strtod strtol)
836 AC_CHECK_FUNCS(strtoul uname getpgid getsid gethostbyname getaddrinfo)
837 AC_CHECK_FUNCS(getprotobynumber)
838 AC_CHECK_FUNCS(setgroups inet_aton)
840 AC_CHECK_FUNCS(grantpt unlockpt)
842 # GR AC_CHECK_FUNCS only checks linking, not prototype. This may lead to implicit
843 # function declarations and to SIGSEGV on systems with 32bit int and 64bit pointer
845 dnl Search for cfsetispeed(),cfgetispeed(),cfsetspeed(),cfgetospeed() functions
846 AC_CHECK_FUNCS(cfsetispeed cfgetispeed cfsetospeed cfgetospeed)
848 ###################################
849 # check for prototype and existence of functions that return a pointer
850 # defines in config.h: HAVE_PROTOTYPE_LIB_$1
851 AC_CHECK_PROTOTYPE_LIB(posix_memalign)
852 AC_CHECK_PROTOTYPE_LIB(strdup)
853 AC_CHECK_PROTOTYPE_LIB(strerror)
854 AC_CHECK_PROTOTYPE_LIB(strstr)
855 AC_CHECK_PROTOTYPE_LIB(getipnodebyname)
856 AC_CHECK_PROTOTYPE_LIB(strndup)
857 AC_CHECK_PROTOTYPE_LIB(memrchr)
858 AC_CHECK_PROTOTYPE_LIB(if_indextoname)
859 AC_CHECK_PROTOTYPE_LIB(ptsname)
861 AC_MSG_CHECKING(for long long)
862 AC_CACHE_VAL(sc_cv_type_longlong,
863 [AC_TRY_COMPILE([],[long long s;],
864 [sc_cv_type_longlong=yes],
865 [sc_cv_type_longlong=no])])
866 if test $sc_cv_type_longlong = yes; then
867 AC_DEFINE(HAVE_TYPE_LONGLONG)
869 AC_MSG_RESULT($sc_cv_type_longlong)
871 AC_CHECK_TYPE(sig_atomic_t,AC_DEFINE(HAVE_TYPE_SIG_ATOMIC_T),,[#include "sysincludes.h"])
873 AC_MSG_CHECKING(for bool)
874 AC_CACHE_VAL(sc_cv_type_bool,
875 [AC_TRY_COMPILE([#ifdef HAVE_STDBOOL_H
879 [sc_cv_type_bool=yes],
880 [sc_cv_type_bool=no])])
881 if test $sc_cv_type_bool = yes; then
882 AC_DEFINE(HAVE_TYPE_BOOL)
884 AC_MSG_RESULT($sc_cv_type_bool)
886 # following builtin macro does not check unistd.h and sys/socket.h where
887 # socklen_t might be defined
888 #AC_CHECK_TYPE(socklen_t, int)
890 AC_MSG_CHECKING(for socklen_t)
891 AC_CACHE_VAL(sc_cv_type_socklen,
892 [AC_TRY_COMPILE([#include <sys/types.h>
893 #include <sys/socket.h>
894 #include <unistd.h>],[socklen_t s;],
895 [sc_cv_type_socklen=yes],
896 [sc_cv_type_socklen=no])])
897 if test $sc_cv_type_socklen = yes; then
898 AC_DEFINE(HAVE_TYPE_SOCKLEN)
900 AC_MSG_RESULT($sc_cv_type_socklen)
902 AC_MSG_CHECKING(for struct stat64)
903 AC_CACHE_VAL(sc_cv_type_stat64,
904 [AC_TRY_COMPILE([#include <sys/stat.h>],[struct stat64 s;],
905 [sc_cv_type_stat64=yes],
906 [sc_cv_type_stat64=no])])
907 if test $sc_cv_type_stat64 = yes; then
908 AC_DEFINE(HAVE_TYPE_STAT64)
910 AC_MSG_RESULT($sc_cv_type_stat64)
912 AC_MSG_CHECKING(for off64_t)
913 AC_CACHE_VAL(sc_cv_type_off64,
914 [AC_TRY_COMPILE([#include <unistd.h>],[off64_t s;],
915 [sc_cv_type_off64=yes],
916 [sc_cv_type_off64=no])])
917 if test $sc_cv_type_off64 = yes; then
918 AC_DEFINE(HAVE_TYPE_OFF64)
920 AC_MSG_RESULT($sc_cv_type_off64)
922 AC_MSG_CHECKING(for sighandler_t)
923 AC_CACHE_VAL(sc_cv_type_sighandler,
924 [AC_TRY_COMPILE([#include <signal.h>],[sighandler_t s;],
925 [sc_cv_type_sighandler=yes],
926 [sc_cv_type_sighandler=no])])
927 if test $sc_cv_type_sighandler = yes; then
928 AC_DEFINE(HAVE_TYPE_SIGHANDLER)
930 AC_MSG_RESULT($sc_cv_type_socklen)
932 AC_MSG_CHECKING(for uint8_t)
933 AC_CACHE_VAL(sc_cv_type_uint8,
934 [AC_TRY_COMPILE([#include <sys/types.h>
938 /* Tru64 has uint8_t etc from netdb.h */
942 #include <unistd.h>],[uint8_t s;],
943 [sc_cv_type_uint8=yes],
944 [sc_cv_type_uint8=no])])
945 if test $sc_cv_type_uint8 = yes; then
946 AC_DEFINE(HAVE_TYPE_UINT8)
948 AC_MSG_RESULT($sc_cv_type_uint8)
950 AC_MSG_CHECKING(for uint16_t)
951 AC_CACHE_VAL(sc_cv_type_uint16,
952 [AC_TRY_COMPILE([#include <sys/types.h>
956 /* Tru64 has uint16_t etc from netdb.h */
960 #include <unistd.h>],[uint16_t s;],
961 [sc_cv_type_uint16=yes],
962 [sc_cv_type_uint16=no])])
963 if test $sc_cv_type_uint16 = yes; then
964 AC_DEFINE(HAVE_TYPE_UINT16)
966 AC_MSG_RESULT($sc_cv_type_uint16)
968 AC_MSG_CHECKING(for uint32_t)
969 AC_CACHE_VAL(sc_cv_type_uint32,
970 [AC_TRY_COMPILE([#include <sys/types.h>
974 /* Tru64 has uint32_t etc from netdb.h */
978 #include <unistd.h>],[uint32_t s;],
979 [sc_cv_type_uint32=yes],
980 [sc_cv_type_uint32=no])])
981 if test $sc_cv_type_uint32 = yes; then
982 AC_DEFINE(HAVE_TYPE_UINT32)
984 AC_MSG_RESULT($sc_cv_type_uint32)
986 AC_MSG_CHECKING(for uint64_t)
987 AC_CACHE_VAL(sc_cv_type_uint64,
988 [AC_TRY_COMPILE([#include <sys/types.h>
992 /* Tru64 has uint32_t etc from netdb.h */
996 #include <unistd.h>],[uint64_t s;],
997 [sc_cv_type_uint64=yes],
998 [sc_cv_type_uint64=no])])
999 if test $sc_cv_type_uint64 = yes; then
1000 AC_DEFINE(HAVE_TYPE_UINT64)
1002 AC_MSG_RESULT($sc_cv_type_uint64)
1004 ### AIX 4.1 needs _XOPEN_EXTENDED_SOURCE for syslog headers,
1005 # but then gets problems with 3rd arg of getsockaddr...
1006 #AC_MSG_CHECKING(for _XOPEN_EXTENDED_SOURCE requirement)
1007 #CFLAGS="-Werror -Wall"
1008 #AC_TRY_COMPILE([#include <sys/syslog.h>],
1010 #[AC_MSG_RESULT(no)],
1011 #[AC_MSG_RESULT(required); AC_DEFINE(_XOPEN_EXTENDED_SOURCE)])
1015 AC_MSG_CHECKING(for fdset->fds_bits)
1016 AC_TRY_COMPILE([#include <sys/types.h>
1017 #if HAVE_SYS_SELECT_H
1018 #include <sys/select.h>
1020 [fd_set s; s.fds_bits[0]=0;],
1021 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_FDS_BITS)],
1022 [AC_MSG_RESULT(no);])
1024 AC_MSG_CHECKING(for struct termios . c_ispeed)
1025 AC_TRY_COMPILE([#include <unistd.h>
1027 #include <termios.h>
1029 [struct termios s; s.c_ispeed=0;],
1030 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRUCT_TERMIOS_C_ISPEED)],
1031 [AC_MSG_RESULT(no);])
1033 AC_MSG_CHECKING(for struct termios . c_ospeed)
1034 AC_TRY_COMPILE([#include <unistd.h>
1036 #include <termios.h>
1038 [struct termios s; s.c_ospeed=0;],
1039 [AC_MSG_RESULT(yes); AC_DEFINE(HAVE_STRUCT_TERMIOS_C_OSPEED)],
1040 [AC_MSG_RESULT(no);])
1042 AC_MSG_CHECKING(for sa_family_t)
1043 AC_CACHE_VAL(sc_cv_type_sa_family_t,
1044 [AC_TRY_COMPILE([#include <sys/types.h>
1045 #include <sys/socket.h>
1046 #include <netinet/in.h>],[sa_family_t s;],
1047 [sc_cv_type_sa_family_t=yes],
1048 [sc_cv_type_sa_family_t=no])])
1049 if test $sc_cv_type_sa_family_t = yes; then
1050 AC_DEFINE(HAVE_TYPE_SA_FAMILY_T)
1052 AC_MSG_RESULT($sc_cv_type_sa_family_t)
1054 AC_MSG_CHECKING(for struct sock_extended_err)
1055 AC_CACHE_VAL(sc_cv_struct_sock_extended_err,
1056 [AC_TRY_COMPILE([#include <linux/types.h>
1057 #if TIME_WITH_SYS_TIME
1058 #include <sys/time.h>
1060 #if HAVE_LINUX_ERRQUEUE_H
1061 #include <linux/errqueue.h>
1062 #endif],[struct sock_extended_err s;],
1063 [sc_cv_struct_sock_extended_err=yes],
1064 [sc_cv_struct_sock_extended_err=no])])
1065 if test $sc_cv_struct_sock_extended_err = yes; then
1066 AC_DEFINE(HAVE_STRUCT_SOCK_EXTENDED_ERR)
1068 AC_MSG_RESULT($sc_cv_struct_sock_extended_err)
1070 AC_MSG_CHECKING(for struct sigaction.sa_sigaction)
1071 AC_CACHE_VAL(sc_cv_struct_sigaction_sa_sigaction,
1072 [AC_TRY_COMPILE([#include <signal.h>],[struct sigaction s;s.sa_sigaction=0;],
1073 [sc_cv_struct_sigaction_sa_sigaction=yes],
1074 [sc_cv_struct_sigaction_sa_sigaction=no])])
1075 if test $sc_cv_struct_sigaction_sa_sigaction = yes; then
1076 AC_DEFINE(HAVE_STRUCT_SIGACTION_SA_SIGACTION)
1078 AC_MSG_RESULT($sc_cv_struct_sigaction_sa_sigaction)
1080 # there is another issue with termios: OSR requires "#define _SVID3 ..."
1081 # for reasonable termios support. We check this situation using IMAXBEL
1082 AC_MSG_CHECKING(if _SVID3 is helpful)
1083 AC_CACHE_VAL(ac_cv_svid3,
1084 [AC_TRY_COMPILE([#include <termios.h>],
1087 [AC_TRY_COMPILE([#define _SVID3 1
1088 #include <termios.h>],
1094 if test $ac_cv_svid3 = yes; then
1097 AC_MSG_RESULT($ac_cv_svid3)
1100 # Openindiana needs _XPG4_2 for CMSG stuff
1101 AC_MSG_CHECKING(if _XPG4_2 is helpful)
1102 AC_CACHE_VAL(ac_cv_xpg4_2,
1103 [AC_TRY_LINK([#include <sys/socket.h>],
1104 [int i=CMSG_DATA(0)],
1106 [AC_TRY_LINK([#define _XPG4_2 1
1107 #include <sys/socket.h>],
1108 [int i=CMSG_DATA(0)],
1113 if test $ac_cv_xpg4_2 = yes; then
1116 AC_MSG_RESULT($ac_cv_xpg4_2)
1118 # When on Openindiana _XPG4_2 is defined (see above)
1119 # we also need to define __EXTENSIONS__ for basic stuff.
1120 # Note that <sys/procset.h> is important on Openindiana
1121 # but does not exist on Linux
1122 if test "$ac_cv_xpg4_2" = yes; then
1123 AC_MSG_CHECKING(if __EXTENSIONS__ is helpful)
1124 AC_CACHE_VAL(ac_cv___extensions__,
1125 [AC_TRY_COMPILE([#include <sys/procset.h>],
1127 [ac_cv___extensions__=no],
1128 [AC_TRY_COMPILE([#define __EXTENSIONS__ 1
1129 #include <sys/procset.h>],
1131 [ac_cv___extensions__=yes],
1132 [ac_cv___extensions__=no]
1135 if test $ac_cv___extensions__ = yes; then
1136 AC_DEFINE(__EXTENSIONS__)
1138 AC_MSG_RESULT($ac_cv___extensions__)
1141 # When on Openindiana __EXTENSIONS__ is defined (see above)
1142 # _POSIX_PTHREAD_SEMANTICS must be defined for standard ctime_r()
1143 if test "$ac_cv___extensions__" = yes; then
1144 AC_MSG_CHECKING(if _POSIX_PTHREAD_SEMANTICS is helpful)
1145 AC_CACHE_VAL(ac_cv__posix_pthread_semantics,
1146 [AC_TRY_COMPILE([#include <time.h>],
1147 [char *s = ctime_r(0,0);],
1148 [ac_cv__posix_pthread_semantics=no],
1149 [AC_TRY_COMPILE([#define _POSIX_PTHREAD_SEMANTICS 1
1151 [char *s = ctime_r(0,0);],
1152 [ac_cv__posix_pthread_semantics=yes],
1153 [ac_cv__posix_pthread_semantics=no]
1156 if test $ac_cv__posix_pthread_semantics = yes; then
1157 AC_DEFINE(_POSIX_PTHREAD_SEMANTICS)
1159 AC_MSG_RESULT($ac_cv__posix_pthread_semantics)
1164 AC_MSG_CHECKING(for struct timespec)
1165 AC_CACHE_VAL(sc_cv_struct_timespec,
1166 [AC_TRY_COMPILE([#include <time.h>
1168 #include <sys/time.h>
1169 #endif],[struct timespec s;],
1170 [sc_cv_struct_timespec=yes],
1171 [sc_cv_struct_timespec=no])])
1172 if test $sc_cv_struct_timespec = yes; then
1173 AC_DEFINE(HAVE_STRUCT_TIMESPEC)
1175 AC_MSG_RESULT($sc_cv_struct_timespec)
1178 # struct linger; FreeBSD requires sys/types.h for sys/socket.h
1179 AC_MSG_CHECKING(for struct linger)
1180 AC_CACHE_VAL(sc_cv_struct_linger,
1181 [AC_TRY_COMPILE([#include <sys/types.h>
1182 #include <sys/socket.h>],[struct linger s;],
1183 [sc_cv_struct_linger=yes],
1184 [sc_cv_struct_linger=no])])
1185 if test $sc_cv_struct_linger = yes; then
1186 AC_DEFINE(HAVE_STRUCT_LINGER)
1188 AC_MSG_RESULT($sc_cv_struct_linger)
1191 # struct ip (for IPv4 header info)
1192 AC_MSG_CHECKING(for struct ip)
1193 AC_CACHE_VAL(sc_cv_struct_ip,
1194 [AC_TRY_COMPILE([#include <netinet/in.h>
1195 #include <netinet/ip.h>],[struct ip s;],
1196 [sc_cv_struct_ip=yes],
1197 [sc_cv_struct_ip=no])])
1198 if test $sc_cv_struct_ip = yes; then
1199 AC_DEFINE(HAVE_STRUCT_IP)
1201 AC_MSG_RESULT($sc_cv_struct_ip)
1203 # struct ip_mreq (for multicasting options)
1204 AC_MSG_CHECKING(for struct ip_mreq)
1205 AC_CACHE_VAL(sc_cv_struct_ip_mreq,
1206 [AC_TRY_COMPILE([#include <sys/types.h>
1207 #include <sys/socket.h>
1208 #include <netinet/in.h>],[struct ip_mreq s;],
1209 [sc_cv_struct_ip_mreq=yes],
1210 [sc_cv_struct_ip_mreq=no])])
1211 if test $sc_cv_struct_ip_mreq = yes; then
1212 AC_DEFINE(HAVE_STRUCT_IP_MREQ)
1214 AC_MSG_RESULT($sc_cv_struct_ip_mreq)
1216 # struct ip_mreqn (for multicasting options)
1217 AC_MSG_CHECKING(for struct ip_mreqn)
1218 AC_CACHE_VAL(sc_cv_struct_ip_mreqn,
1219 [AC_TRY_COMPILE([#include <sys/types.h>
1220 #include <sys/socket.h>
1221 #include <netinet/in.h>
1222 #include <netinet/ip.h>],[struct ip_mreqn s;],
1223 [sc_cv_struct_ip_mreqn=yes],
1224 [sc_cv_struct_ip_mreqn=no])])
1225 if test $sc_cv_struct_ip_mreqn = yes; then
1226 AC_DEFINE(HAVE_STRUCT_IP_MREQN)
1228 AC_MSG_RESULT($sc_cv_struct_ip_mreqn)
1230 # struct ipv6_mreq (for multicasting options)
1231 AC_MSG_CHECKING(for struct ipv6_mreq)
1232 AC_CACHE_VAL(sc_cv_struct_ipv6_mreq,
1233 [AC_TRY_COMPILE([#include <sys/types.h>
1234 #include <sys/socket.h>
1235 #include <netinet/in.h>],[struct ipv6_mreq s;],
1236 [sc_cv_struct_ipv6_mreq=yes],
1237 [sc_cv_struct_ipv6_mreq=no])])
1238 if test $sc_cv_struct_ipv6_mreq = yes; then
1239 AC_DEFINE(HAVE_STRUCT_IPV6_MREQ)
1241 AC_MSG_RESULT($sc_cv_struct_ipv6_mreq)
1243 # struct ip_mreq_source (for multicasting options)
1244 AC_MSG_CHECKING(for struct ip_mreq_source)
1245 AC_CACHE_VAL(sc_cv_struct_ip_mreq_source,
1246 [AC_TRY_COMPILE([#include <sys/types.h>
1247 #include <sys/socket.h>
1248 #include <netinet/in.h>
1249 #include <netinet/ip.h>],[struct ip_mreq_source s;],
1250 [sc_cv_struct_ip_mreq_source=yes],
1251 [sc_cv_struct_ip_mreq_source=no])])
1252 if test $sc_cv_struct_ip_mreq_source = yes; then
1253 AC_DEFINE(HAVE_STRUCT_IP_MREQ_SOURCE)
1255 AC_MSG_RESULT($sc_cv_struct_ip_mreqn)
1258 # struct ifreq (for network interfaces)
1259 AC_MSG_CHECKING(for struct ifreq)
1260 AC_CACHE_VAL(sc_cv_struct_ifreq,
1261 [AC_TRY_COMPILE([#include <sys/types.h>
1262 #include <sys/socket.h>
1263 #include <net/if.h>],[struct ifreq s;],
1264 [sc_cv_struct_ifreq=yes],
1265 [sc_cv_struct_ifreq=no])])
1266 if test $sc_cv_struct_ifreq = yes; then
1267 AC_DEFINE(HAVE_STRUCT_IFREQ)
1269 AC_MSG_RESULT($sc_cv_struct_ifreq)
1271 # struct ifreq.ifr_index
1272 # on most systems that have struct ifreq
1273 AC_MSG_CHECKING(for struct ifreq.ifr_index)
1274 AC_CACHE_VAL(sc_cv_struct_ifreq_ifr_index,
1275 [AC_TRY_COMPILE([#include <sys/types.h>
1276 #include <sys/socket.h>
1277 #include <net/if.h>],
1278 [struct ifreq ir;ir.ifr_index=0;],
1279 [sc_cv_struct_ifreq_ifr_index=yes],
1280 [sc_cv_struct_ifreq_ifr_index=no])])
1281 if test $sc_cv_struct_ifreq_ifr_index = yes; then
1282 AC_DEFINE(HAVE_STRUCT_IFREQ_IFR_INDEX)
1284 AC_MSG_RESULT($sc_cv_struct_ifreq_ifr_index)
1286 # struct ifreq.ifr_ifindex
1287 # Linux has ifr_ifindex instead of ifr_index
1288 AC_MSG_CHECKING(for struct ifreq.ifr_ifindex)
1289 AC_CACHE_VAL(sc_cv_struct_ifreq_ifr_ifindex,
1290 [AC_TRY_COMPILE([#include <sys/types.h>
1291 #include <sys/socket.h>
1292 #include <net/if.h>],
1293 [struct ifreq ir;ir.ifr_ifindex=0;],
1294 [sc_cv_struct_ifreq_ifr_ifindex=yes],
1295 [sc_cv_struct_ifreq_ifr_ifindex=no])])
1296 if test $sc_cv_struct_ifreq_ifr_ifindex = yes; then
1297 AC_DEFINE(HAVE_STRUCT_IFREQ_IFR_IFINDEX)
1299 AC_MSG_RESULT($sc_cv_struct_ifreq_ifr_ifindex)
1302 # some systems have a sa_len field in struct sockaddr and we need to support it
1303 # so we can compare sockaddrs simply with memcmp
1304 AC_MSG_CHECKING(for struct sockaddr.sa_len)
1305 AC_CACHE_VAL(sc_cv_struct_sockaddr_salen,
1306 [AC_TRY_COMPILE([#include <sys/types.h>
1307 #include <sys/socket.h>],
1308 [struct sockaddr sa;sa.sa_len=0;],
1309 [sc_cv_struct_sockaddr_salen=yes],
1310 [sc_cv_struct_sockaddr_salen=no])])
1311 if test $sc_cv_struct_sockaddr_salen = yes; then
1312 AC_DEFINE(HAVE_STRUCT_SOCKADDR_SALEN)
1314 AC_MSG_RESULT($sc_cv_struct_sockaddr_salen)
1316 ### IP6 sockaddr_in6
1318 AC_MSG_CHECKING(for component names of sockaddr_in6)
1319 AC_TRY_COMPILE([#include <sys/types.h>
1320 #include <netinet/in.h>],
1321 [struct sockaddr_in6 sa6;sa6.sin6_addr.s6_addr[0]=0;],
1322 [AC_MSG_RESULT(s6_addr);
1323 AC_DEFINE(HAVE_IP6_SOCKADDR, 0)],
1324 [AC_TRY_COMPILE([#include <sys/types.h>
1325 #include <netinet/in.h>],
1326 [struct sockaddr_in6 sa6;sa6.sin6_addr.u6_addr.u6_addr16[0]=0;],
1327 [AC_MSG_RESULT(u6_addr.u6_addr16);
1328 AC_DEFINE(HAVE_IP6_SOCKADDR, 1)],
1329 [AC_TRY_COMPILE([#include <sys/types.h>
1330 #include <netinet/in.h>],
1331 [struct sockaddr_in6 sa6;sa6.sin6_addr.u6_addr16[0]=0;],
1332 [AC_MSG_RESULT(u6_addr16); AC_DEFINE(HAVE_IP6_SOCKADDR, 2)],
1333 [AC_TRY_COMPILE([#include <sys/types.h>
1334 #include <netinet/in.h>],
1335 [struct sockaddr_in6 sa6;sa6.sin6_addr.in6_u.u6_addr16[0]=0;],
1336 [AC_MSG_RESULT(in6_u.u6_addr16);
1337 AC_DEFINE(HAVE_IP6_SOCKADDR, 3)],
1338 [AC_TRY_COMPILE([#include <sys/types.h>
1339 #include <netinet/in.h>],
1340 [struct sockaddr_in6 sa6;sa6.sin6_addr._S6_un._S6_u32[0]=0;],
1341 [AC_MSG_RESULT(_S6_un._S6_u32);
1342 AC_DEFINE(HAVE_IP6_SOCKADDR, 4)],
1343 [AC_TRY_COMPILE([#include <sys/types.h>
1344 #include <netinet/in.h>],
1345 [struct sockaddr_in6 sa6;sa6.sin6_addr.__u6_addr.__u6_addr32[0]=0;],
1346 [AC_MSG_RESULT(__u6_addr.__u6_addr32);
1347 AC_DEFINE(HAVE_IP6_SOCKADDR, 5)],
1349 [AC_MSG_RESULT([none or unknown])]
1352 dnl Check for struct iovec
1353 AC_MSG_CHECKING(for struct iovec)
1354 AC_CACHE_VAL(sc_cv_struct_iovec,
1355 [AC_TRY_COMPILE([#include <sys/uio.h>],[struct iovec s;],
1356 [sc_cv_struct_iovec=yes],
1357 [sc_cv_struct_iovec=no])])
1358 if test $sc_cv_struct_iovec = yes; then
1359 AC_DEFINE(HAVE_STRUCT_IOVEC)
1361 AC_MSG_RESULT($sc_cv_struct_iovec)
1363 dnl check for msg_control in struct msghdr
1364 AC_MSG_CHECKING(for struct msghdr.msg_control)
1365 AC_CACHE_VAL(sc_cv_struct_msghdr_msgcontrol,
1366 [AC_TRY_COMPILE([#include <sys/types.h>
1367 #include <sys/socket.h>],
1368 [struct msghdr s;s.msg_control=0;],
1369 [sc_cv_struct_msghdr_msgcontrol=yes],
1370 [sc_cv_struct_msghdr_msgcontrol=no])])
1371 if test $sc_cv_struct_msghdr_msgcontrol = yes; then
1372 AC_DEFINE(HAVE_STRUCT_MSGHDR_MSGCONTROL)
1374 AC_MSG_RESULT($sc_cv_struct_msghdr_msgcontrol)
1376 dnl check for msg_controllen in struct msghdr
1377 AC_MSG_CHECKING(for struct msghdr.msg_controllen)
1378 AC_CACHE_VAL(sc_cv_struct_msghdr_msgcontrollen,
1379 [AC_TRY_COMPILE([#include <sys/types.h>
1380 #include <sys/socket.h>],
1381 [struct msghdr s;s.msg_controllen=0;],
1382 [sc_cv_struct_msghdr_msgcontrollen=yes],
1383 [sc_cv_struct_msghdr_msgcontrollen=no])])
1384 if test $sc_cv_struct_msghdr_msgcontrollen = yes; then
1385 AC_DEFINE(HAVE_STRUCT_MSGHDR_MSGCONTROLLEN)
1387 AC_MSG_RESULT($sc_cv_struct_msghdr_msgcontrollen)
1389 dnl check for msg_flags in struct msghdr
1390 AC_MSG_CHECKING(for struct msghdr.msgflags)
1391 AC_CACHE_VAL(sc_cv_struct_msghdr_msgflags,
1392 [AC_TRY_COMPILE([#include <sys/types.h>
1393 #include <sys/socket.h>],
1394 [struct msghdr s;s.msg_flags=0;],
1395 [sc_cv_struct_msghdr_msgflags=yes],
1396 [sc_cv_struct_msghdr_msgflags=no])])
1397 if test $sc_cv_struct_msghdr_msgflags = yes; then
1398 AC_DEFINE(HAVE_STRUCT_MSGHDR_MSGFLAGS)
1400 AC_MSG_RESULT($sc_cv_struct_msghdr_msgflags)
1402 dnl check for struct cmsghdr
1403 AC_MSG_CHECKING(for struct cmsghdr)
1404 AC_CACHE_VAL(sc_cv_struct_cmsghdr,
1405 [AC_TRY_COMPILE([#include <sys/types.h>
1406 #include <sys/socket.h>
1407 #include <net/if.h>],[struct cmsghdr s;],
1408 [sc_cv_struct_cmsghdr=yes],
1409 [sc_cv_struct_cmsghdr=no])])
1410 if test $sc_cv_struct_cmsghdr = yes; then
1411 AC_DEFINE(HAVE_STRUCT_CMSGHDR)
1413 AC_MSG_RESULT($sc_cv_struct_cmsghdr)
1415 dnl check for struct in_pktinfo
1416 AC_MSG_CHECKING(for struct in_pktinfo)
1417 AC_CACHE_VAL(sc_cv_struct_in_pktinfo,
1418 [AC_TRY_COMPILE([#include <sys/types.h>
1419 #include <sys/socket.h>
1420 #include <netinet/in.h>],[struct in_pktinfo s;],
1421 [sc_cv_struct_in_pktinfo=yes],
1422 [sc_cv_struct_in_pktinfo=no])])
1423 if test $sc_cv_struct_in_pktinfo = yes; then
1424 AC_DEFINE(HAVE_STRUCT_IN_PKTINFO)
1426 AC_MSG_RESULT($sc_cv_struct_in_pktinfo)
1428 if test $sc_cv_struct_in_pktinfo = 'yes'; then
1429 dnl check for component ipi_spec_dst in struct in_pktinfo
1430 AC_MSG_CHECKING(for ipi_spec_dst in struct in_pktinfo)
1431 AC_CACHE_VAL(sc_cv_pktinfo_ipi_spec_dst,
1432 [AC_TRY_COMPILE([#include <sys/types.h>
1433 #include <sys/socket.h>
1434 #include <netinet/in.h>],[struct in_pktinfo s; s.ipi_spec_dst],
1435 [sc_cv_pktinfo_ipi_spec_dst=yes],
1436 [sc_cv_pktinfo_ipi_spec_dst=no])])
1437 if test $sc_cv_pktinfo_ipi_spec_dst = yes; then
1438 AC_DEFINE(HAVE_PKTINFO_IPI_SPEC_DST)
1440 AC_MSG_RESULT($sc_cv_pktinfo_ipi_spec_dst)
1443 dnl check for struct in6_pktinfo
1444 AC_MSG_CHECKING(for struct in6_pktinfo)
1445 AC_CACHE_VAL(sc_cv_struct_in6_pktinfo,
1446 [AC_TRY_COMPILE([#include "sysincludes.h"],
1447 [struct in6_pktinfo s;],
1448 [sc_cv_struct_in6_pktinfo=yes],
1449 [sc_cv_struct_in6_pktinfo=no])])
1450 if test $sc_cv_struct_in6_pktinfo = yes; then
1451 AC_DEFINE(HAVE_STRUCT_IN6_PKTINFO)
1453 AC_MSG_RESULT($sc_cv_struct_in6_pktinfo)
1455 dnl check for ip_hl in struct ip
1456 AC_MSG_CHECKING(for struct ip.ip_hl)
1457 AC_CACHE_VAL(sc_cv_struct_ip_ip_hl,
1458 [AC_TRY_COMPILE([#include <sys/types.h>
1459 #include <netinet/in_systm.h>
1460 #include <netinet/in.h>
1461 #include <netinet/ip.h>],
1462 [struct ip s;s.ip_hl=0;],
1463 [sc_cv_struct_ip_ip_hl=yes],
1464 [sc_cv_struct_ip_ip_hl=no])])
1465 if test $sc_cv_struct_ip_ip_hl = yes; then
1466 AC_DEFINE(HAVE_STRUCT_IP_IP_HL)
1468 AC_MSG_RESULT($sc_cv_struct_ip_ip_hl)
1471 dnl Library function checks
1473 dnl Check sigaction()
1474 AC_CHECK_FUNC(sigaction, AC_DEFINE(HAVE_SIGACTION))
1476 dnl Check for 64bit versions of system calls
1477 AC_CHECK_FUNC(stat64, AC_DEFINE(HAVE_STAT64))
1478 AC_CHECK_FUNC(fstat64, AC_DEFINE(HAVE_FSTAT64))
1479 AC_CHECK_FUNC(lstat64, AC_DEFINE(HAVE_LSTAT64))
1480 AC_CHECK_FUNC(lseek64, AC_DEFINE(HAVE_LSEEK64))
1481 AC_CHECK_FUNC(truncate64, AC_DEFINE(HAVE_TRUNCATE64))
1482 AC_CHECK_FUNC(ftruncate64, AC_DEFINE(HAVE_FTRUNCATE64))
1484 AC_CHECK_FUNC(strtoll, AC_DEFINE(HAVE_STRTOLL))
1485 AC_CHECK_FUNC(hstrerror, AC_DEFINE(HAVE_HSTRERROR))
1486 AC_CHECK_FUNC(inet_ntop, AC_DEFINE(HAVE_INET_NTOP))
1488 #if test "$ac_cv_func_hstrerror" = "yes"; then
1489 # AC_MSG_CHECKING(if _XOPEN_SOURCE_EXTENDED is helpful)
1490 # AC_CACHE_VAL(ac_cv_xopen_source_extended,
1491 # [AC_TRY_COMPILE([#include <netdb.h>],
1493 # [ac_cv_xopen_source_extended=no],
1494 # [AC_TRY_COMPILE([#define _XOPEN_SOURCE_EXTENDED 1
1495 ## include <netdb.h>],
1497 # [ac_cv_xopen_source_extended=yes],
1498 # [ac_cv_xopen_source_extended=no]
1501 # if test $ac_cv_xopen_source_extended = yes; then
1502 # AC_DEFINE(_XOPEN_SOURCE_EXTENDED)
1504 # AC_MSG_RESULT($ac_cv_xopen_source_extended)
1507 dnl Search for openpty()
1509 AC_CHECK_FUNC(openpty, AC_DEFINE(HAVE_OPENPTY))
1511 AC_CHECK_LIB(bsd, openpty,
1512 [LIBS="-lbsd $LIBS"; AC_DEFINE(HAVE_OPENPTY)])
1514 AC_CHECK_LIB(util, openpty,
1515 [LIBS="-lutil $LIBS"; AC_DEFINE(HAVE_OPENPTY)])
1517 AC_CHECK_PROTOTYPE_LIB(gettimeofday)
1519 AC_CHECK_LIB(rt, clock_gettime,
1520 [LIBS="-lrt $LIBS"; AC_DEFINE(HAVE_CLOCK_GETTIME)])
1522 dnl Search for flock()
1523 # with Linux it's in libc, with AIX in libbsd
1524 AC_CHECK_FUNC(flock, AC_DEFINE(HAVE_FLOCK),
1525 AC_CHECK_LIB(bsd, flock, [LIBS="-lbsd $LIBS"]))
1527 dnl Search for setenv()
1528 AC_CHECK_FUNC(setenv, AC_DEFINE(HAVE_SETENV),
1529 AC_CHECK_LIB(isode, setenv, [LIBS="-lisode $LIBS"]))
1531 dnl Search for unsetenv()
1532 AC_CHECK_FUNC(unsetenv, AC_DEFINE(HAVE_UNSETENV))
1534 AC_CHECK_FUNC(TLS_client_method, AC_DEFINE(HAVE_TLS_client_method) ac_cv_have_tls_client_method=yes, AC_CHECK_LIB(crypt, TLS_client_method, [LIBS=-lcrypt $LIBS]))
1535 AC_CHECK_FUNC(TLS_server_method, AC_DEFINE(HAVE_TLS_server_method) ac_cv_have_tls_server_method=yes, AC_CHECK_LIB(crypt, TLS_server_method, [LIBS=-lcrypt $LIBS]))
1536 AC_CHECK_FUNC(DTLS_client_method, AC_DEFINE(HAVE_DTLS_client_method), AC_CHECK_LIB(crypt, DTLS_client_method, [LIBS=-lcrypt $LIBS]))
1537 AC_CHECK_FUNC(DTLS_server_method, AC_DEFINE(HAVE_DTLS_server_method), AC_CHECK_LIB(crypt, DTLS_server_method, [LIBS=-lcrypt $LIBS]))
1538 if test -n "$WITH_OPENSSL_METHOD" -o -z "$ac_cv_have_tls_client_method" -o -z "$ac_cv_have_tls_server_method" ; then
1539 dnl Search for SSLv2_client_method, SSLv2_server_method
1540 AC_CHECK_FUNC(SSLv2_client_method, AC_DEFINE(HAVE_SSLv2_client_method), AC_CHECK_LIB(crypt, SSLv2_client_method, [LIBS=-lcrypt $LIBS]))
1541 AC_CHECK_FUNC(SSLv2_server_method, AC_DEFINE(HAVE_SSLv2_server_method), AC_CHECK_LIB(crypt, SSLv2_server_method, [LIBS=-lcrypt $LIBS]))
1543 AC_CHECK_FUNC(SSLv3_client_method, AC_DEFINE(HAVE_SSLv3_client_method), AC_CHECK_LIB(crypt, SSLv3_client_method, [LIBS=-lcrypt $LIBS]))
1544 AC_CHECK_FUNC(SSLv3_server_method, AC_DEFINE(HAVE_SSLv3_server_method), AC_CHECK_LIB(crypt, SSLv3_server_method, [LIBS=-lcrypt $LIBS]))
1545 AC_CHECK_FUNC(SSLv23_client_method, AC_DEFINE(HAVE_SSLv23_client_method), AC_CHECK_LIB(crypt, SSLv23_client_method, [LIBS=-lcrypt $LIBS]))
1546 AC_CHECK_FUNC(SSLv23_server_method, AC_DEFINE(HAVE_SSLv23_server_method), AC_CHECK_LIB(crypt, SSLv23_server_method, [LIBS=-lcrypt $LIBS]))
1547 AC_CHECK_FUNC(TLSv1_client_method, AC_DEFINE(HAVE_TLSv1_client_method), AC_CHECK_LIB(crypt, TLSv1_client_method, [LIBS=-lcrypt $LIBS]))
1548 AC_CHECK_FUNC(TLSv1_server_method, AC_DEFINE(HAVE_TLSv1_server_method), AC_CHECK_LIB(crypt, TLSv1_server_method, [LIBS=-lcrypt $LIBS]))
1549 AC_CHECK_FUNC(TLSv1_1_client_method, AC_DEFINE(HAVE_TLSv1_1_client_method), AC_CHECK_LIB(crypt, TLSv1_1_client_method, [LIBS=-lcrypt $LIBS]))
1550 AC_CHECK_FUNC(TLSv1_1_server_method, AC_DEFINE(HAVE_TLSv1_1_server_method), AC_CHECK_LIB(crypt, TLSv1_1_server_method, [LIBS=-lcrypt $LIBS]))
1551 AC_CHECK_FUNC(TLSv1_2_client_method, AC_DEFINE(HAVE_TLSv1_2_client_method), AC_CHECK_LIB(crypt, TLSv1_2_client_method, [LIBS=-lcrypt $LIBS]))
1552 AC_CHECK_FUNC(TLSv1_2_server_method, AC_DEFINE(HAVE_TLSv1_2_server_method), AC_CHECK_LIB(crypt, TLSv1_2_server_method, [LIBS=-lcrypt $LIBS]))
1553 AC_CHECK_FUNC(DTLSv1_client_method, AC_DEFINE(HAVE_DTLSv1_client_method), AC_CHECK_LIB(crypt, DTLSv1_client_method, [LIBS=-lcrypt $LIBS]))
1554 AC_CHECK_FUNC(DTLSv1_server_method, AC_DEFINE(HAVE_DTLSv1_server_method), AC_CHECK_LIB(crypt, DTLSv1_server_method, [LIBS=-lcrypt $LIBS]))
1555 AC_CHECK_FUNC(DTLSv1_2_client_method, AC_DEFINE(HAVE_DTLSv1_2_client_method), AC_CHECK_LIB(crypt, DTLSv1_2_client_method, [LIBS=-lcrypt $LIBS]))
1556 AC_CHECK_FUNC(DTLSv1_2_server_method, AC_DEFINE(HAVE_DTLSv1_2_server_method), AC_CHECK_LIB(crypt, DTLSv1_2_server_method, [LIBS=-lcrypt $LIBS]))
1557 fi # $WITH_OPENSSL_METHOD
1559 AC_CHECK_FUNC(SSL_CTX_set_default_verify_paths, AC_DEFINE(HAVE_SSL_CTX_set_default_verify_paths))
1560 AC_CHECK_FUNC(RAND_egd, AC_DEFINE(HAVE_RAND_egd), AC_CHECK_LIB(crypt, RAND_egd, [LIBS=-lcrypt $LIBS]))
1561 AC_CHECK_FUNC(DH_set0_pqg, AC_DEFINE(HAVE_DH_set0_pqg), AC_CHECK_LIB(crypt, DH_set0_pqg, [LIBS=-lcrypt $LIBS]))
1562 AC_CHECK_FUNC(ASN1_STRING_get0_data, AC_DEFINE(HAVE_ASN1_STRING_get0_data), AC_CHECK_LIB(crypt, ASN1_STRING_get0_data, [LIBS=-lcrypt $LIBS]))
1563 AC_CHECK_FUNC(RAND_status, AC_DEFINE(HAVE_RAND_status))
1564 AC_CHECK_FUNC(SSL_CTX_clear_mode, AC_DEFINE(HAVE_SSL_CTX_clear_mode))
1565 AC_CHECK_FUNC(SSL_set_tlsext_host_name, AC_DEFINE(HAVE_SSL_set_tlsext_host_name))
1566 AC_CHECK_FUNC(SSL_library_init, AC_DEFINE(HAVE_SSL_library_init))
1567 AC_CHECK_FUNC(ERR_error_string, AC_DEFINE(HAVE_ERR_error_string))
1569 AC_MSG_CHECKING(for type EC_KEY)
1570 AC_CACHE_VAL(sc_cv_type_EC_TYPE,
1571 [AC_TRY_COMPILE([#include <openssl/ec.h>
1573 [sc_cv_type_EC_KEY=yes],
1574 [sc_cv_type_EC_KEY=no])])
1575 if test $sc_cv_type_EC_KEY = yes; then
1576 AC_DEFINE(HAVE_TYPE_EC_KEY)
1578 AC_MSG_RESULT($sc_cv_type_EC_KEY)
1584 AC_MSG_CHECKING(if snprintf conforms to C99)
1585 AC_CACHE_VAL(ac_cv_have_c99_snprintf,
1591 exit(snprintf(s,2,"ab")!=2);
1593 [ac_cv_have_c99_snprintf=yes],
1594 [ac_cv_have_c99_snprintf=no],
1595 [ac_cv_have_c99_snprintf=no])])
1596 if test $ac_cv_have_c99_snprintf = yes; then
1597 AC_DEFINE(HAVE_C99_SNPRINTF)
1599 AC_MSG_RESULT($ac_cv_have_c99_snprintf)
1602 AC_MSG_CHECKING(if printf has Z modifier)
1603 AC_CACHE_VAL(ac_cv_have_z_modifier,
1604 if test "$cc" = gcc; then
1611 exit(strcmp(s,"1"));
1613 [ac_cv_have_z_modifier=yes],
1614 [ac_cv_have_z_modifier=no],
1615 [ac_cv_have_z_modifier=no])]
1616 else ac_cv_have_z_modifier=no
1619 if test $ac_cv_have_z_modifier = yes; then
1620 AC_DEFINE(HAVE_FORMAT_Z)
1622 AC_MSG_RESULT($ac_cv_have_z_modifier)
1625 dnl find the number of bits we must shift a value to match the given mask
1626 dnl (e.g., mask 0x00f0 requires shifting with 4)
1627 ## NOTE: some platforms only need one '\' to escape '"' in string constant
1628 define(AC_SHIFT_OFFSET,[
1629 AC_CACHE_CHECK(shift offset of $1, $2,
1630 [LIBS1="$LIBS"; LIBS="" # avoid libwrap allow_severity undefined
1631 conftestoffset="conftestoffset.out"
1636 #include <termios.h>
1639 unsigned int i,n=$1;
1641 if ((f=fopen("$conftestoffset","w"))==NULL){
1642 fprintf(stderr,"\\"$conftestoffset\\": %s\n",strerror(errno)); exit(-1);
1644 if (n==0) {fprintf(stderr,"$1 is 0 (impossible!)\n"); exit(1);}
1645 i=0; while (!(n&1)) {
1648 fprintf(f, "%u", i);
1650 fprintf(f, "-1"); /* anticipate result of xioinitialize assert */
1655 [$2=`cat $conftestoffset`],
1660 AC_DEFINE_UNQUOTED($1_SHIFT, ${$2})
1661 if test "$2" = -1; then
1662 AC_MSG_WARN(please determine $1_SHIFT manually)
1666 AC_SHIFT_OFFSET(CRDLY, sc_cv_sys_crdly_shift)
1667 AC_SHIFT_OFFSET(TABDLY, sc_cv_sys_tabdly_shift)
1668 AC_SHIFT_OFFSET(CSIZE, sc_cv_sys_csize_shift)
1671 dnl Find what physical type (basic C type) is equivalent to the given type.
1672 dnl If possible we try to compile simple test code and get no warning only with
1673 dnl the matching type.
1674 dnl If this method does not seem to work we run test programs that print the
1675 dnl length and signedness of the type.
1677 dnl do we have a -Werror option?
1678 dnl Does the test code compile with -Werror when types fit?
1679 CHANCE_TO_TYPECHECK=1
1680 CFLAGS1="$CFLAGS"; CFLAGS="$ERRONWARN $(echo "$CFLAGS1" | sed -e 's@-Wall@@g')"
1681 AC_TRY_COMPILE([#include <stdlib.h>],[int u; int v; exit(&u==&v);],,CHANCE_TO_TYPECHECK=0)
1684 dnl Does the test code compile without -Werror when types do not fit?
1685 if test "$CHANCE_TO_TYPECHECK" -ne 0; then
1686 AC_TRY_COMPILE([#include <stdlib.h>],[int u; unsigned int v; exit(&u==&v);],,CHANCE_TO_TYPECHECK=0)
1689 dnl Does the test code fail to compile with -Werror when types do not fit?
1690 if test "$CHANCE_TO_TYPECHECK" -ne 0; then
1691 CFLAGS1="$CFLAGS"; CFLAGS="$ERRONWARN $(echo "$CFLAGS1" | sed -e 's@-Wall@@g')"
1692 AC_TRY_COMPILE([#include <stdlib.h>],[int u; unsigned int v; exit(&u==&v);],CHANCE_TO_TYPECHECK=0,)
1696 if test "$CHANCE_TO_TYPECHECK" -ne 0; then
1697 AC_MSG_NOTICE(using compile -Werror method to find basic types)
1699 AC_MSG_NOTICE(using code run method to find basic types)
1703 dnl see AC_BASIC_TYPE
1704 define(AC_BASIC_TYPE_GCC,[
1705 AC_CACHE_CHECK(for equivalent simple type of $2, $4,
1706 [CFLAGS1="$CFLAGS"; CFLAGS="$ERRONWARN $(echo "$CFLAGS1" | sed -e 's@-Wall@@g')"
1707 dnl echo "echo: trying short for $2" >&2
1708 AC_TRY_COMPILE([$1],[$2 u; short v; return(&u==&v);],
1709 [$4="1 /* short */"],
1710 [AC_TRY_COMPILE([$1],[$2 u; unsigned short v; return(&u==&v);],
1711 [$4="2 /* unsigned short */"],
1712 [AC_TRY_COMPILE([$1],[$2 u; int v; return(&u==&v);],
1714 [AC_TRY_COMPILE([$1],[$2 u; unsigned int v; return(&u==&v);],
1715 [$4="4 /* unsigned int */"],
1716 [AC_TRY_COMPILE([$1],[$2 u; long v; return(&u==&v);],
1717 [$4="5 /* long */"],
1718 [AC_TRY_COMPILE([$1],[$2 u; unsigned long v; return(&u==&v);],
1719 [$4="6 /* unsigned long */"],
1720 [AC_TRY_COMPILE([$1],[$2 u; long long v; return(&u==&v);],
1721 [$4="7 /* long long */"],
1722 [AC_TRY_COMPILE([$1],[$2 u; unsigned long long v; return(&u==&v);],
1723 [$4="8 /* unsigned long long */"],
1724 [$4="0 /* unknown, taking default */"
1725 ]) ]) ]) ]) ]) ]) ]) ])
1726 CFLAGS="$CFLAGS1" ])
1727 AC_DEFINE_UNQUOTED($3, ${$4})
1730 dnl see AC_BASIC_TYPE
1731 define(AC_BASIC_TYPE_OTHER,[
1732 AC_CACHE_CHECK(for equivalent simple type of $2, $4,
1735 int main() { return!(sizeof($2)==sizeof(short));}],
1736 # same length as short
1739 int main() { $2 x=-1; return !(x<0);}],
1740 [$4="1 /* short */"],
1741 [$4="2 /* unsigned short */"]),
1742 # length differs from short, try others
1745 int main() { return!(sizeof($2)==sizeof(int));}],
1746 # same length as int
1749 int main() { $2 x=-1; return !(x<0);}],
1751 [$4="4 /* unsigned int */"]),
1752 # length differs from int, try others
1755 int main() { return !(sizeof($2)==sizeof(long));}],
1756 # same length as long
1759 int main() { $2 x=-1; return !(x<0);}],
1760 [$4="5 /* long */"],
1761 [$4="6 /* unsigned long */"] ),
1762 # length differs from long, try others
1765 int main() { return !(sizeof($2)==sizeof(long long));}],
1766 # same length as long long
1769 int main() { $2 x=-1; return !(x<0);}],
1770 [$4="7 /* long long */"],
1771 [$4="8 /* unsigned long long */"] ),
1772 [$4="0 /* unknown */"]
1778 AC_DEFINE_UNQUOTED($3, ${$4})
1781 dnl find what physical type (basic C type) is equivalent to the given type.
1782 dnl arg1: include file(s)
1784 dnl arg3: output variable
1785 dnl arg4: cache variable (might be constructed automatically)
1786 dnl output values: 1..short, 2..unsigned short, 3..int, 4..u-int,
1787 dnl 5..long, 6..u-long; others not yet supported
1788 define(AC_BASIC_TYPE,[
1789 if test "$CHANCE_TO_TYPECHECK" -ne 0; then
1790 AC_BASIC_TYPE_GCC([$1],[$2],[$3],[$4])
1792 AC_BASIC_TYPE_OTHER([$1],[$2],[$3],[$4])
1797 dnl See AC_TYPEOF_COMPONENT
1798 dnl This version is for compilers with -Werror or so: gcc, clang, Sun Studio?
1799 define(AC_TYPEOF_COMPONENT_GCC,[
1800 AC_CACHE_CHECK(for basic type of $2.$3, $5,
1801 [CFLAGS1="$CFLAGS"; CFLAGS="$ERRONWARN $(echo "$CFLAGS1" | sed -e 's@-Wall@@g')"
1802 AC_TRY_COMPILE([$1],[$2 u;short v; return(&u.$3==&v);],
1803 [$5="1 /* short */"],
1804 [AC_TRY_COMPILE([$1],[$2 u; unsigned short v; return(&u.$3==&v);],
1805 [$5="2 /* unsigned short */"],
1806 [AC_TRY_COMPILE([$1],[$2 u; int v; return(&u.$3==&v);],
1808 [AC_TRY_COMPILE([$1],[$2 u; unsigned int v; return(&u.$3==&v);],
1809 [$5="4 /* unsigned int */"],
1810 [AC_TRY_COMPILE([$1],[$2 u; long v; return(&u.$3==&v);],
1811 [$5="5 /* long */"],
1812 [AC_TRY_COMPILE([$1],[$2 u; unsigned long v; return(&u.$3==&v);],
1813 [$5="6 /* unsigned long */"],
1814 [AC_TRY_COMPILE([$1],[$2 u; long long v; return(&u.$3==&v);],
1815 [$5="7 /* long long */"],
1816 [AC_TRY_COMPILE([$1],[$2 u; unsigned long long v; return(&u.$3==&v);],
1817 [$5="8 /* unsigned long long */"],
1818 [$5="0 /* unknown, taking default */"
1819 ]) ]) ]) ]) ]) ]) ]) ])
1820 CFLAGS="$CFLAGS1" ])
1821 AC_DEFINE_UNQUOTED($4, ${$5})
1824 dnl See AC_TYPEOF_COMPONENT
1825 dnl This version is for compilers with no -Werror or so
1826 define(AC_TYPEOF_COMPONENT_OTHER,[
1827 AC_CACHE_CHECK(for basic type of $2.$3, $5,
1830 int main() { $2 x; return!(sizeof(x.$3)==sizeof(short));}],
1831 # same length as short
1834 int main() { $2 x; x.$3=-1; return !(x.$3<0);}],
1835 [$5="1 /* short */"],
1836 [$5="2 /* unsigned short */"]),
1837 # length differs from short, try others
1840 int main() { $2 x; return!(sizeof(x.$3)==sizeof(int));}],
1841 # same length as int
1844 int main() { $2 x; x.$3=-1; return !(x.$3<0);}],
1846 [$5="4 /* unsigned int */"]),
1847 # length differs from int, try others
1850 int main() { $2 x; return !(sizeof(x.$3)==sizeof(long));}],
1851 # same length as long
1854 int main() { $2 x; x.$3=-1; return !(x.$3<0);}],
1855 [$5="5 /* long */"],
1856 [$5="6 /* unsigned long */"] ),
1857 # length differs from long, try others
1860 int main() { $2 x; return !(sizeof(x.$3)==sizeof(long long));}],
1861 # same length as long long
1864 int main() { x $2; x.$3=-1; return !(x.$3<0);}],
1865 [$5="7 /* long long */"],
1866 [$5="8 /* unsigned long long */"] ),
1867 [$5="0 /* unknown */"]
1873 AC_DEFINE_UNQUOTED($4, ${$5})
1876 dnl find what physical type (basic C type) describes the given struct or union
1878 dnl arg1: include file(s); must declare the structure type
1879 dnl arg2: struct name (e.g., "struct stat")
1880 dnl arg3: variable or component (e.g., "st_ino")
1881 dnl arg4: output variable, values see AC_BASIC_TYPE
1882 dnl arg5: cache variable (might be constructed automatically)
1883 define(AC_TYPEOF_COMPONENT,[
1884 if test "$CHANCE_TO_TYPECHECK" -ne 0; then
1885 AC_TYPEOF_COMPONENT_GCC([$1],[$2],[$3],[$4],[$5])
1887 AC_TYPEOF_COMPONENT_OTHER([$1],[$2],[$3],[$4],[$5])
1891 AC_BASIC_TYPE([#include <stdint.h>], uint16_t, HAVE_BASIC_UINT16_T, sc_cv_type_uint16_basic)
1892 AC_BASIC_TYPE([#include <stdint.h>], uint32_t, HAVE_BASIC_UINT32_T, sc_cv_type_uint32_basic)
1893 AC_BASIC_TYPE([#include <stdint.h>], uint64_t, HAVE_BASIC_UINT64_T, sc_cv_type_uint64_basic)
1894 AC_BASIC_TYPE([#include <stdint.h>], int16_t, HAVE_BASIC_INT16_T, sc_cv_type_int16_basic)
1895 AC_BASIC_TYPE([#include <stdint.h>], int32_t, HAVE_BASIC_INT32_T, sc_cv_type_int32_basic)
1896 AC_BASIC_TYPE([#include <stdint.h>], int64_t, HAVE_BASIC_INT64_T, sc_cv_type_int64_basic)
1897 AC_BASIC_TYPE([#include <stdlib.h>], size_t, HAVE_BASIC_SIZE_T, sc_cv_type_sizet_basic)
1898 AC_BASIC_TYPE([#include <sys/types.h>
1899 #include <sys/stat.h>
1900 #include <unistd.h>], mode_t, HAVE_BASIC_MODE_T, sc_cv_type_modet_basic)
1901 AC_BASIC_TYPE([#include <sys/types.h>
1902 #include <unistd.h>], pid_t, HAVE_BASIC_PID_T, sc_cv_type_pidt_basic)
1903 AC_BASIC_TYPE([#include <sys/types.h>
1904 #include <unistd.h>], uid_t, HAVE_BASIC_UID_T, sc_cv_type_uidt_basic)
1905 AC_BASIC_TYPE([#include <sys/types.h>
1906 #include <unistd.h>], gid_t, HAVE_BASIC_GID_T, sc_cv_type_gidt_basic)
1908 AC_BASIC_TYPE([#include <time.h>], time_t, HAVE_BASIC_TIME_T,
1909 sc_cv_type_timet_basic)
1911 # this is questionable, might fail on some systems
1912 AC_BASIC_TYPE([#include <sys/types.h>
1913 #include <sys/socket.h>
1914 #include <unistd.h>], socklen_t, HAVE_BASIC_SOCKLEN_T,
1915 sc_cv_type_socklent_basic)
1917 AC_BASIC_TYPE([#include <sys/types.h>
1918 #include <unistd.h>], off_t, HAVE_BASIC_OFF_T, sc_cv_type_off_basic)
1920 AC_BASIC_TYPE([#include <sys/types.h>
1921 #include <unistd.h>], off64_t, HAVE_BASIC_OFF64_T, sc_cv_type_off64_basic)
1923 # oh god, __dev_t in Linux 2.4 is struct{int[2];}, not handled here yet.
1924 AC_BASIC_TYPE([#include <sys/stat.h>], dev_t, HAVE_BASIC_DEV_T, sc_cv_type_dev_basic)
1926 AC_BASIC_TYPE([#include <unistd.h>
1927 #include <termios.h>], speed_t, HAVE_BASIC_SPEED_T, sc_cv_type_spee_t)
1929 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat, st_ino, HAVE_TYPEOF_ST_INO, sc_cv_type_stat_stino_basic)
1930 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat, st_nlink, HAVE_TYPEOF_ST_NLINK, sc_cv_type_stat_stnlink_basic)
1931 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat, st_size, HAVE_TYPEOF_ST_SIZE, sc_cv_type_stat_stsize_basic)
1932 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat, st_blksize, HAVE_TYPEOF_ST_BLKSIZE, sc_cv_type_stat_stblksize_basic)
1933 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat, st_blocks, HAVE_TYPEOF_ST_BLOCKS, sc_cv_type_stat_stblocks_basic)
1935 if test "$ac_cv_func_stat64" = yes; then
1936 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat64, st_dev, HAVE_TYPEOF_ST64_DEV, sc_cv_type_stat64_stdev_basic)
1937 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat64, st_ino, HAVE_TYPEOF_ST64_INO, sc_cv_type_stat64_stino_basic)
1938 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat64, st_nlink, HAVE_TYPEOF_ST64_NLINK, sc_cv_type_stat64_stnlink_basic)
1939 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat64, st_size, HAVE_TYPEOF_ST64_SIZE, sc_cv_type_stat64_stsize_basic)
1940 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat64, st_blksize, HAVE_TYPEOF_ST64_BLKSIZE, sc_cv_type_stat64_stblksize_basic)
1941 AC_TYPEOF_COMPONENT([#include <sys/stat.h>], struct stat64, st_blocks, HAVE_TYPEOF_ST64_BLOCKS, sc_cv_type_stat64_stblocks_basic)
1944 AC_TYPEOF_COMPONENT([#include <sys/time.h>], struct timeval, tv_usec, HAVE_TYPEOF_STRUCT_TIMEVAL_TV_USEC, sc_cv_type_struct_timeval_tv_usec)
1946 AC_TYPEOF_COMPONENT([#include <sys/time.h>], struct timespec, tv_nsec, HAVE_TYPEOF_STRUCT_TIMESPEC_TV_NSEC, sc_cv_type_struct_timespec_tv_nsec)
1948 AC_TYPEOF_COMPONENT([#include <sys/types.h>
1949 #include <sys/time.h>
1950 #include <sys/resource.h>],
1951 struct rlimit, rlim_max, HAVE_TYPEOF_RLIM_MAX, sc_cv_type_rlimit_rlimmax_basic)
1953 # Fedora-19 doc says it is socklen_t which is equivalent to unsigned int, but it is equivalent to size_t (x86_64)
1954 AC_TYPEOF_COMPONENT([#include "sysincludes.h"], struct cmsghdr, cmsg_len, HAVE_TYPEOF_STRUCT_CMSGHDR_CMSG_LEN, sc_cv_typeof_struct_cmsghdr_cmsg_len)
1955 ### snprintf, vsnprintf
1957 AC_MSG_CHECKING(for /dev/ptmx)
1958 if test -c /dev/ptmx; then
1959 AC_DEFINE(HAVE_DEV_PTMX, 1)
1963 AC_MSG_CHECKING(for /dev/ptc)
1964 if test -c /dev/ptc; then
1965 AC_DEFINE(HAVE_DEV_PTC)
1972 AC_MSG_CHECKING(for /proc)
1973 if test -d /proc; then
1974 AC_DEFINE(HAVE_PROC_DIR, 1)
1980 AC_MSG_CHECKING(for /proc/*/fd)
1981 if test -d /proc/$$/fd; then
1982 AC_DEFINE(HAVE_PROC_DIR_FD, 1)
1988 dnl "tcpd" "tcpwrappers"
1989 # on some platforms, raw linking with libwrap fails because allow_severity and
1990 # deny_severity are not explicitely defined. Thus we put the libwrap part to
1992 AC_MSG_CHECKING(whether to include libwrap support)
1993 AC_ARG_ENABLE(libwrap, [ --disable-libwrap disable libwrap support],
1994 [ case "$enableval" in
1995 no) AC_MSG_RESULT(no); WITH_LIBWRAP= ;;
1996 *) AC_MSG_RESULT(yes); WITH_LIBWRAP=1 ;;
1998 [ AC_MSG_RESULT(yes); WITH_LIBWRAP=1 ])
2000 # check if we find the components of libwrap ("tcpd" "tcpwrappers")
2001 if test -n "$WITH_LIBWRAP"; then
2002 AC_MSG_CHECKING(for components of libwrap)
2003 # first, we need to find the include file <tcpd.h>
2004 AC_CACHE_VAL(sc_cv_have_tcpd_h,
2005 [AC_TRY_COMPILE([#include <sys/types.h>
2006 #include <tcpd.h>],[;],
2007 [sc_cv_have_tcpd_h=yes; LIBWRAP_ROOT=""],
2008 [sc_cv_have_tcpd_h=no
2009 for D in "/sw" "/usr/local" "/opt/freeware" "/usr/sfw"; do
2012 if test -r "$i"; then
2013 #V_INCL="$V_INCL -I$I"
2014 CPPFLAGS="$CPPFLAGS -I$I"
2015 AC_MSG_NOTICE(found $i)
2016 sc_cv_have_tcpd_h=yes; LIBWRAP_ROOT="$D"
2021 if test "$sc_cv_have_tcpd_h" = "yes"; then
2022 AC_DEFINE(HAVE_TCPD_H)
2024 AC_MSG_NOTICE(checked for tcpd.h... $sc_cv_have_tcpd_h)
2025 fi # end checking for tcpd.h
2026 if test -n "$WITH_LIBWRAP" -a "$sc_cv_have_tcpd_h" = yes; then
2027 # next, we search for the wrap library (libwrap.*)
2028 AC_MSG_CHECKING(for libwrap)
2029 AC_CACHE_VAL(sc_cv_have_libwrap,
2031 if test -n "$LIBWRAP_ROOT"; then
2032 L="$LIBWRAP_ROOT/lib"; LIBS="-L$L -lwrap $LIBS"
2036 AC_TRY_LINK([#include <sys/types.h>
2038 int allow_severity,deny_severity;],[hosts_access(0)],
2039 [sc_cv_have_libwrap='yes'],
2040 [sc_cv_have_libwrap='no'
2041 LIBS="$LIBS -lnsl" # RedHat73
2042 AC_TRY_LINK([#include <sys/types.h>
2044 int allow_severity,deny_severity;],[hosts_access(0)],
2045 [sc_cv_have_libwrap='yes'],
2046 [sc_cv_have_libwrap='no'])
2049 if test "$sc_cv_have_libwrap" != 'yes'; then
2054 if test "$sc_cv_have_libwrap" = 'yes'; then
2055 AC_DEFINE(HAVE_LIBWRAP)
2057 AC_MSG_RESULT($sc_cv_have_libwrap)
2060 if test -n "$WITH_LIBWRAP"; then
2061 if test "$sc_cv_have_tcpd_h" = "yes" -a "$sc_cv_have_libwrap" = "yes"; then
2062 AC_DEFINE(WITH_LIBWRAP)
2064 AC_MSG_WARN([not all components of tcp wrappers found, disabling it]);
2068 # check of hosts_allow_table
2069 if test -n "$WITH_LIBWRAP"; then
2070 AC_MSG_CHECKING(for hosts_allow_table)
2071 AC_CACHE_VAL(sc_cv_have_hosts_allow_table,
2072 [AC_TRY_COMPILE([#include <sys/types.h>
2073 #include <tcpd.h>],[hosts_allow_table="";],
2074 [sc_cv_have_hosts_allow_table=yes],
2075 [sc_cv_have_hosts_allow_table=no])])
2076 if test $sc_cv_have_hosts_allow_table = yes; then
2077 AC_DEFINE(HAVE_HOSTS_ALLOW_TABLE)
2079 AC_MSG_RESULT($sc_cv_have_hosts_allow_table)
2080 fi # test -n "$WITH_LIBWRAP"
2083 if test "$GCC" = yes; then
2087 # FIPS support requires compiling with fipsld.
2088 # fipsld requires the FIPSLD_CC variable to be set to the original CC.
2089 # This check must be done after all other checks that require compiling
2090 # so that fipsld is not used by the configure script itself.
2091 if test -n "$WITH_FIPS"; then
2092 if test "$sc_cv_have_openssl_fips_h" = 'yes' -a "$sc_cv_have_libcrypto" = 'yes'; then
2094 if test "${FIPSLD+set}" != set ; then
2097 CC="FIPSLD_CC=$CC $FIPSLD"
2102 # autoconf does not seem to provide AC_CHECK_VAR or so
2103 # thus we have to check by foot
2104 AC_MSG_CHECKING(for declaration of environ)
2105 AC_CACHE_VAL(sc_cv_decl_environ,
2106 [AC_TRY_COMPILE([#include <unistd.h>],[char **s = environ;],
2107 [sc_cv_decl_environ=yes],
2108 [sc_cv_decl_environ=no])])
2109 if test $sc_cv_decl_environ = yes; then
2110 AC_DEFINE(HAVE_DECL_ENVIRON)
2112 AC_MSG_RESULT($sc_cv_decl_environ)
2114 # on some systems environ exists but not the declaration
2115 AC_MSG_CHECKING(for var environ)
2116 AC_CACHE_VAL(sc_cv_var_environ,
2117 [AC_TRY_COMPILE([],[extern char **environ; char **s = environ;],
2118 [sc_cv_var_environ=yes],
2119 [sc_cv_var_environ=no])])
2120 if test $sc_cv_var_environ = yes; then
2121 AC_DEFINE(HAVE_VAR_ENVIRON)
2123 AC_MSG_RESULT($sc_cv_var_environ)
2125 # allow BUILD_DATE to be externally set for build reproducibility
2126 if test "$BUILD_DATE"; then
2127 AC_DEFINE_UNQUOTED(BUILD_DATE, ["$BUILD_DATE"])
2129 AC_DEFINE(BUILD_DATE, [__DATE__" "__TIME__])