1 dnl @(#) $Header: /tcpdump/master/tcpdump/aclocal.m4,v 1.116 2008-09-25 21:45:50 guy Exp $ (LBL)
3 dnl Copyright (c) 1995, 1996, 1997, 1998
4 dnl The Regents of the University of California. All rights reserved.
6 dnl Redistribution and use in source and binary forms, with or without
7 dnl modification, are permitted provided that: (1) source code distributions
8 dnl retain the above copyright notice and this paragraph in its entirety, (2)
9 dnl distributions including binary code include the above copyright notice and
10 dnl this paragraph in its entirety in the documentation or other materials
11 dnl provided with the distribution, and (3) all advertising materials mentioning
12 dnl features or use of this software display the following acknowledgement:
13 dnl ``This product includes software developed by the University of California,
14 dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
15 dnl the University nor the names of its contributors may be used to endorse
16 dnl or promote products derived from this software without specific prior
17 dnl written permission.
18 dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
19 dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
20 dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22 dnl LBL autoconf macros
26 dnl Determine which compiler we're using (cc or gcc)
27 dnl If using gcc, determine the version number
28 dnl If using cc, require that it support ansi prototypes
29 dnl If using gcc, use -O2 (otherwise use -O)
30 dnl If using cc, explicitly specify /usr/local/include
34 dnl AC_LBL_C_INIT(copt, incls)
42 dnl ac_cv_lbl_gcc_vers
45 AC_DEFUN(AC_LBL_C_INIT,
47 AC_BEFORE([$0], [AC_PROG_CC])
48 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
49 AC_BEFORE([$0], [AC_LBL_DEVEL])
50 AC_ARG_WITH(gcc, [ --without-gcc don't use gcc])
53 if test "${srcdir}" != "." ; then
56 if test "${CFLAGS+set}" = set; then
59 if test -z "$CC" ; then
63 AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
64 if test $SHLICC2 = yes ; then
71 if test -z "$CC" -a "$with_gcc" = no ; then
76 if test "$GCC" = yes ; then
77 if test "$SHLICC2" = yes ; then
81 AC_MSG_CHECKING(gcc version)
82 AC_CACHE_VAL(ac_cv_lbl_gcc_vers,
83 ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \
84 sed -e '/^gcc version /!d' \
85 -e 's/^gcc version //' \
86 -e 's/ .*//' -e 's/^[[[^0-9]]]*//' \
88 AC_MSG_RESULT($ac_cv_lbl_gcc_vers)
89 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
94 AC_MSG_CHECKING(that $CC handles ansi prototypes)
95 AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes,
97 [#include <sys/types.h>],
98 [int frob(int, char *)],
99 ac_cv_lbl_cc_ansi_prototypes=yes,
100 ac_cv_lbl_cc_ansi_prototypes=no))
101 AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes)
102 if test $ac_cv_lbl_cc_ansi_prototypes = no ; then
106 AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE))
107 savedcflags="$CFLAGS"
108 CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS"
109 AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa,
111 [#include <sys/types.h>],
112 [int frob(int, char *)],
113 ac_cv_lbl_cc_hpux_cc_aa=yes,
114 ac_cv_lbl_cc_hpux_cc_aa=no))
115 AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa)
116 if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then
117 AC_MSG_ERROR(see the INSTALL doc for more info)
119 CFLAGS="$savedcflags"
120 V_CCOPT="-Aa $V_CCOPT"
121 AC_DEFINE(_HPUX_SOURCE)
125 AC_MSG_ERROR(see the INSTALL doc for more info)
129 $2="$$2 -I/usr/local/include"
130 LDFLAGS="$LDFLAGS -L/usr/local/lib"
135 V_CCOPT="$V_CCOPT -xansi -signed -O"
139 V_CCOPT="$V_CCOPT -std1 -O"
143 AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
144 AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
146 [#include <sys/types.h>],
147 [struct a { int b; };
148 void c(const struct a *)],
149 ac_cv_lbl_cc_const_proto=yes,
150 ac_cv_lbl_cc_const_proto=no))
151 AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
152 if test $ac_cv_lbl_cc_const_proto = no ; then
162 # Try compiling a sample of the type of code that appears in
163 # gencode.c with "inline", "__inline__", and "__inline".
165 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
166 # as it just tests whether a function returning "int" can be inlined;
167 # at least some versions of HP's C compiler can inline that, but can't
168 # inline a function that returns a struct pointer.
170 AC_DEFUN(AC_LBL_C_INLINE,
171 [AC_MSG_CHECKING(for inline)
172 AC_CACHE_VAL(ac_cv_lbl_inline, [
175 for ac_lbl_inline in inline __inline__ __inline
178 [#define inline $ac_lbl_inline
179 static inline struct iltest *foo(void);
185 static inline struct iltest *
188 static struct iltest xxx;
191 }],,ac_lbl_cc_inline=yes,)
192 if test "$ac_lbl_cc_inline" = yes ; then
196 if test "$ac_lbl_cc_inline" = yes ; then
197 ac_cv_lbl_inline=$ac_lbl_inline
199 if test ! -z "$ac_cv_lbl_inline" ; then
200 AC_MSG_RESULT($ac_cv_lbl_inline)
204 AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
207 dnl Use pfopen.c if available and pfopen() not in standard libraries
209 dnl Look for libpcap in ..
210 dnl Use the installed libpcap if there is no local version
214 dnl AC_LBL_LIBPCAP(pcapdep, incls)
219 dnl $2 (incls appended)
223 AC_DEFUN(AC_LBL_LIBPCAP,
224 [AC_REQUIRE([AC_LBL_LIBRARY_NET])
226 dnl save a copy before locating libpcap.a
229 pfopen=/usr/examples/packetfilter/pfopen.c
230 if test -f $pfopen ; then
231 AC_CHECK_FUNCS(pfopen)
232 if test $ac_cv_func_pfopen = "no" ; then
233 AC_MSG_RESULT(Using $pfopen)
237 AC_MSG_CHECKING(for local pcap library)
240 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
241 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
242 for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do
243 basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'`
244 if test $lastdir = $basedir ; then
245 dnl skip alphas when an actual release is present
249 if test -r $dir/libpcap.a ; then
250 libpcap=$dir/libpcap.a
252 dnl continue and select the last one that exists
255 if test $libpcap = FAIL ; then
256 AC_MSG_RESULT(not found)
259 # Look for pcap-config.
261 AC_PATH_PROG(PCAP_CONFIG, pcap-config)
262 if test -n "$PCAP_CONFIG" ; then
264 # Found - use it to get the include flags for
265 # libpcap and the flags to link with libpcap.
267 $2="`\"$PCAP_CONFIG\" --cflags` $$2"
268 libpcap="`\"$PCAP_CONFIG\" --libs`"
271 # Not found; look for pcap.
273 AC_CHECK_LIB(pcap, main, libpcap="-lpcap")
274 if test $libpcap = FAIL ; then
275 AC_MSG_ERROR(see the INSTALL doc for more info)
278 dnl Some versions of Red Hat Linux put "pcap.h" in
279 dnl "/usr/include/pcap"; had the LBL folks done so,
280 dnl that would have been a good idea, but for
281 dnl the Red Hat folks to do so just breaks source
282 dnl compatibility with other systems.
284 dnl We work around this by assuming that, as we didn't
285 dnl find a local libpcap, libpcap is in /usr/lib or
286 dnl /usr/local/lib and that the corresponding header
287 dnl file is under one of those directories; if we don't
288 dnl find it in either of those directories, we check to
289 dnl see if it's in a "pcap" subdirectory of them and,
290 dnl if so, add that subdirectory to the "-I" list.
292 dnl (We now also put pcap.h in /usr/include/pcap, but we
293 dnl leave behind a /usr/include/pcap.h that includes it,
294 dnl so you can still just include <pcap.h>.)
296 AC_MSG_CHECKING(for extraneous pcap header directories)
297 if test \( ! -r /usr/local/include/pcap.h \) -a \
298 \( ! -r /usr/include/pcap.h \); then
299 if test -r /usr/local/include/pcap/pcap.h; then
300 d="/usr/local/include/pcap"
301 elif test -r /usr/include/pcap/pcap.h; then
302 d="/usr/include/pcap"
305 if test -z "$d" ; then
306 AC_MSG_RESULT(not found)
309 AC_MSG_RESULT(found -- -I$d added)
314 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
315 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
316 if test -r $d/pcap.h; then
318 elif test -r $places/pcap.h; then
321 AC_MSG_ERROR(cannot find pcap.h, see INSTALL)
323 AC_MSG_RESULT($libpcap)
324 AC_PATH_PROG(PCAP_CONFIG, pcap-config,, $d)
325 if test -n "$PCAP_CONFIG"; then
327 # The libpcap directory has a pcap-config script.
328 # Use it to get any additioal libraries needed
329 # to link with the libpcap archive library in
332 libpcap="$libpcap `\"$PCAP_CONFIG\" --additional-libs --static`"
335 LIBS="$libpcap $LIBS"
336 if ! test -n "$PCAP_CONFIG" ; then
338 # We don't have pcap-config; find out any additional link flags
339 # we need. (If we have pcap-config, we assume it tells us what
346 # If libpcap is DLPI-based, we have to use /lib/pse.exp if
347 # present, as we use the STREAMS routines.
349 # (XXX - true only if we're linking with a static libpcap?)
351 pseexe="/lib/pse.exp"
352 AC_MSG_CHECKING(for $pseexe)
353 if test -f $pseexe ; then
355 LIBS="$LIBS -I:$pseexe"
359 # If libpcap is BPF-based, we need "-lodm" and "-lcfg", as
360 # we use them to load the BPF module.
362 # (XXX - true only if we're linking with a static libpcap?)
364 LIBS="$LIBS -lodm -lcfg"
370 dnl Check for "pcap_list_datalinks()", "pcap_set_datalink()",
371 dnl and "pcap_datalink_name_to_val()", and use substitute versions
372 dnl if they're not present.
374 AC_CHECK_FUNC(pcap_list_datalinks,
375 AC_DEFINE(HAVE_PCAP_LIST_DATALINKS),
379 AC_CHECK_FUNC(pcap_set_datalink,
380 AC_DEFINE(HAVE_PCAP_SET_DATALINK))
381 AC_CHECK_FUNC(pcap_datalink_name_to_val,
383 AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL)
384 AC_CHECK_FUNC(pcap_datalink_val_to_description,
385 AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION),
395 dnl Check for "pcap_breakloop()"; you can't substitute for it if
396 dnl it's absent (it has hooks into the live capture routines),
397 dnl so just define the HAVE_ value if it's there.
399 AC_CHECK_FUNCS(pcap_breakloop)
402 dnl Check for "pcap_dump_ftell()" and use a substitute version
403 dnl if it's not present.
404 AC_CHECK_FUNC(pcap_dump_ftell,
405 AC_DEFINE(HAVE_PCAP_DUMP_FTELL),
407 AC_LIBOBJ(pcap_dump_ftell)
412 dnl Define RETSIGTYPE and RETSIGVAL
416 dnl AC_LBL_TYPE_SIGNAL
420 dnl RETSIGTYPE (defined)
421 dnl RETSIGVAL (defined)
423 AC_DEFUN(AC_LBL_TYPE_SIGNAL,
424 [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
426 if test "$ac_cv_type_signal" = void ; then
427 AC_DEFINE(RETSIGVAL,)
429 AC_DEFINE(RETSIGVAL,(0))
434 AC_DEFINE(_BSD_SIGNALS)
438 dnl prefer sigaction() to sigset()
439 AC_CHECK_FUNCS(sigaction)
440 if test $ac_cv_func_sigaction = no ; then
441 AC_CHECK_FUNCS(sigset)
447 dnl If using gcc, make sure we have ANSI ioctl definitions
451 dnl AC_LBL_FIXINCLUDES
453 AC_DEFUN(AC_LBL_FIXINCLUDES,
454 [if test "$GCC" = yes ; then
455 AC_MSG_CHECKING(for ANSI ioctl definitions)
456 AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
459 * This generates a "duplicate case value" when fixincludes
462 # include <sys/types.h>
463 # include <sys/time.h>
464 # include <sys/ioctl.h>
465 # ifdef HAVE_SYS_IOCCOM_H
466 # include <sys/ioccom.h>
472 ac_cv_lbl_gcc_fixincludes=yes,
473 ac_cv_lbl_gcc_fixincludes=no))
474 AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
475 if test $ac_cv_lbl_gcc_fixincludes = no ; then
476 # Don't cache failure
477 unset ac_cv_lbl_gcc_fixincludes
478 AC_MSG_ERROR(see the INSTALL for more info)
483 dnl Check for flex, default to lex
484 dnl Require flex 2.4 or higher
485 dnl Check for bison, default to yacc
486 dnl Default to lex/yacc if both flex and bison are not available
487 dnl Define the yy prefix string if using flex and bison
491 dnl AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix)
496 dnl $2 (yacc appended)
497 dnl $3 (optional flex and bison -P prefix)
499 AC_DEFUN(AC_LBL_LEX_AND_YACC,
500 [AC_ARG_WITH(flex, [ --without-flex don't use flex])
501 AC_ARG_WITH(bison, [ --without-bison don't use bison])
502 if test "$with_flex" = no ; then
505 AC_CHECK_PROGS($1, flex, lex)
507 if test "$$1" = flex ; then
508 # The -V flag was added in 2.4
509 AC_MSG_CHECKING(for flex 2.4 or higher)
510 AC_CACHE_VAL(ac_cv_lbl_flex_v24,
511 if flex -V >/dev/null 2>&1; then
512 ac_cv_lbl_flex_v24=yes
514 ac_cv_lbl_flex_v24=no
516 AC_MSG_RESULT($ac_cv_lbl_flex_v24)
517 if test $ac_cv_lbl_flex_v24 = no ; then
518 s="2.4 or higher required"
519 AC_MSG_WARN(ignoring obsolete flex executable ($s))
523 if test "$with_bison" = no ; then
526 AC_CHECK_PROGS($2, bison, yacc)
528 if test "$$2" = bison ; then
531 if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then
532 AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc)
536 if test "$$1" = flex -a -n "$3" ; then
542 dnl Checks to see if union wait is used with WEXITSTATUS()
546 dnl AC_LBL_UNION_WAIT
550 dnl DECLWAITSTATUS (defined)
552 AC_DEFUN(AC_LBL_UNION_WAIT,
553 [AC_MSG_CHECKING(if union wait is used)
554 AC_CACHE_VAL(ac_cv_lbl_union_wait,
556 # include <sys/types.h>
557 # include <sys/wait.h>],
559 u_int i = WEXITSTATUS(status);
560 u_int j = waitpid(0, &status, 0);],
561 ac_cv_lbl_union_wait=no,
562 ac_cv_lbl_union_wait=yes))
563 AC_MSG_RESULT($ac_cv_lbl_union_wait)
564 if test $ac_cv_lbl_union_wait = yes ; then
565 AC_DEFINE(DECLWAITSTATUS,union wait)
567 AC_DEFINE(DECLWAITSTATUS,int)
571 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
575 dnl AC_LBL_SOCKADDR_SA_LEN
579 dnl HAVE_SOCKADDR_SA_LEN (defined)
581 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
582 [AC_MSG_CHECKING(if sockaddr struct has sa_len member)
583 AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
585 # include <sys/types.h>
586 # include <sys/socket.h>],
587 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
588 ac_cv_lbl_sockaddr_has_sa_len=yes,
589 ac_cv_lbl_sockaddr_has_sa_len=no))
590 AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
591 if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
592 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
596 dnl Checks to see if -R is used
600 dnl AC_LBL_HAVE_RUN_PATH
604 dnl ac_cv_lbl_have_run_path (yes or no)
606 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
607 [AC_MSG_CHECKING(for ${CC-cc} -R)
608 AC_CACHE_VAL(ac_cv_lbl_have_run_path,
609 [echo 'main(){}' > conftest.c
610 ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
611 if test ! -s conftest.out ; then
612 ac_cv_lbl_have_run_path=yes
614 ac_cv_lbl_have_run_path=no
617 AC_MSG_RESULT($ac_cv_lbl_have_run_path)
621 dnl Check whether a given format can be used to print 64-bit integers
623 AC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT,
625 AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
630 # ifdef HAVE_INTTYPES_H
631 #include <inttypes.h>
633 # ifdef HAVE_SYS_BITYPES_H
634 #include <sys/bitypes.h>
637 #include <sys/types.h>
643 sprintf(strbuf, "%016$1x", t << 32);
644 if (strcmp(strbuf, "0000000100000000") == 0)
652 AC_DEFINE(PRId64, "$1d")
653 AC_DEFINE(PRIo64, "$1o")
654 AC_DEFINE(PRIx64, "$1x")
655 AC_DEFINE(PRIu64, "$1u")
665 dnl Checks to see if unaligned memory accesses fail
669 dnl AC_LBL_UNALIGNED_ACCESS
673 dnl LBL_ALIGN (DEFINED)
675 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
676 [AC_MSG_CHECKING(if unaligned accesses fail)
677 AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
681 # These are CPU types where:
683 # the CPU faults on an unaligned access, but at least some
684 # OSes that support that CPU catch the fault and simulate
685 # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
686 # the simulation is slow, so we don't want to use it;
688 # the CPU, I infer (from the old
690 # XXX: should also check that they don't do weird things (like on arm)
692 # comment) doesn't fault on unaligned accesses, but doesn't
693 # do a normal unaligned fetch, either (e.g., presumably, ARM);
695 # for whatever reason, the test program doesn't work
696 # (this has been claimed to be the case for several of those
697 # CPUs - I don't know what the problem is; the problem
698 # was reported as "the test program dumps core" for SuperH,
699 # but that's what the test program is *supposed* to do -
700 # it dumps core before it writes anything, so the test
701 # for an empty output file should find an empty output
702 # file and conclude that unaligned accesses don't work).
704 # This run-time test won't work if you're cross-compiling, so
705 # in order to support cross-compiling for a particular CPU,
706 # we have to wire in the list of CPU types anyway, as far as
707 # I know, so perhaps we should just have a set of CPUs on
708 # which we know it doesn't work, a set of CPUs on which we
709 # know it does work, and have the script just fail on other
710 # cpu types and update it when such a failure occurs.
712 alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1)
713 ac_cv_lbl_unaligned_fail=yes
717 cat >conftest.c <<EOF
718 # include <sys/types.h>
719 # include <sys/wait.h>
721 unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
726 /* avoid "core dumped" message */
732 pid = waitpid(pid, &status, 0);
735 exit(!WIFEXITED(status));
738 i = *(unsigned int *)&a[[1]];
743 ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
744 conftest.c $LIBS >/dev/null 2>&1
745 if test ! -x conftest ; then
746 dnl failed to compile for some reason
747 ac_cv_lbl_unaligned_fail=yes
749 ./conftest >conftest.out
750 if test ! -s conftest.out ; then
751 ac_cv_lbl_unaligned_fail=yes
753 ac_cv_lbl_unaligned_fail=no
756 rm -f conftest* core core.conftest
759 AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
760 if test $ac_cv_lbl_unaligned_fail = yes ; then
765 dnl If using gcc and the file .devel exists:
766 dnl Compile with -g (if supported) and -Wall
767 dnl If using gcc 2 or later, do extra prototype checking and some other
769 dnl If an os prototype include exists, symlink os-proto.h to it
773 dnl AC_LBL_DEVEL(copt)
777 dnl $1 (copt appended)
778 dnl HAVE_OS_PROTO_H (defined)
779 dnl os-proto.h (symlinked)
781 AC_DEFUN(AC_LBL_DEVEL,
783 if test "${LBL_CFLAGS+set}" = set; then
784 $1="$$1 ${LBL_CFLAGS}"
786 if test -f .devel ; then
787 if test "$GCC" = yes ; then
788 if test "${LBL_CFLAGS+set}" != set; then
789 if test "$ac_cv_prog_cc_g" = yes ; then
793 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
794 $1="$$1 -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings -Wpointer-arith -W"
801 V_CCOPT="$V_CCOPT -n32"
808 os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
810 if test -f $name ; then
811 ln -s $name os-proto.h
812 AC_DEFINE(HAVE_OS_PROTO_H)
814 AC_MSG_WARN(can't find $name)
819 dnl Improved version of AC_CHECK_LIB
821 dnl Thanks to John Hawkinson (jhawk@mit.edu)
825 dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
826 dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
832 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
833 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
834 dnl We keep it around for reference purposes in case it's ever
835 dnl useful in the future.
838 define(AC_LBL_CHECK_LIB,
839 [AC_MSG_CHECKING([for $2 in -l$1])
840 dnl Use a cache variable name containing the library, function
841 dnl name, and extra libraries to link with, because the test really is
842 dnl for library $1 defining function $2, when linked with potinal
843 dnl library $5, not just for library $1. Separate tests with the same
844 dnl $1 and different $2's or $5's may have different results.
845 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
846 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
847 [ac_save_LIBS="$LIBS"
850 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
851 [/* Override any gcc2 internal prototype to avoid an error. */
852 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
856 [/* We use char because int might match the return type of a gcc2
857 builtin and then its argument prototype would still apply. */
861 eval "ac_cv_lbl_lib_$ac_lib_var=yes",
862 eval "ac_cv_lbl_lib_$ac_lib_var=no")
865 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
869 ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
870 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
872 AC_DEFINE_UNQUOTED($ac_tr_lib)
883 dnl AC_LBL_LIBRARY_NET
885 dnl This test is for network applications that need socket() and
886 dnl gethostbyname() -ish functions. Under Solaris, those applications
887 dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
888 dnl with "-lnsl" but should *not* link with "-lsocket" because
889 dnl libsocket.a breaks a number of things (for instance:
890 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
891 dnl versions of IRIX).
893 dnl Unfortunately, many application developers are not aware of this,
894 dnl and mistakenly write tests that cause -lsocket to be used under
895 dnl IRIX. It is also easy to write tests that cause -lnsl to be used
896 dnl under operating systems where neither are necessary (or useful),
897 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
899 dnl This test exists so that every application developer does not test
900 dnl this in a different, and subtly broken fashion.
902 dnl It has been argued that this test should be broken up into two
903 dnl seperate tests, one for the resolver libraries, and one for the
904 dnl libraries necessary for using Sockets API. Unfortunately, the two
905 dnl are carefully intertwined and allowing the autoconf user to use
906 dnl them independantly potentially results in unfortunate ordering
907 dnl dependancies -- as such, such component macros would have to
908 dnl carefully use indirection and be aware if the other components were
909 dnl executed. Since other autoconf macros do not go to this trouble,
910 dnl and almost no applications use sockets without the resolver, this
911 dnl complexity has not been implemented.
913 dnl The check for libresolv is in case you are attempting to link
914 dnl statically and happen to have a libresolv.a lying around (and no
917 AC_DEFUN(AC_LBL_LIBRARY_NET, [
918 # Most operating systems have gethostbyname() in the default searched
919 # libraries (i.e. libc):
920 # Some OSes (eg. Solaris) place it in libnsl
921 # Some strange OSes (SINIX) have it in libsocket:
922 AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
923 # Unfortunately libsocket sometimes depends on libnsl and
924 # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this.
925 if test "$ac_cv_search_gethostbyname" = "no"
927 AC_CHECK_LIB(socket, gethostbyname,
928 LIBS="-lsocket -lnsl $LIBS", , -lnsl)
930 AC_SEARCH_LIBS(socket, socket, ,
931 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))
932 # DLPI needs putmsg under HPUX so test for -lstr while we're at it
933 AC_SEARCH_LIBS(putmsg, str)
936 dnl Copyright (c) 1999 WIDE Project. All rights reserved.
938 dnl Redistribution and use in source and binary forms, with or without
939 dnl modification, are permitted provided that the following conditions
941 dnl 1. Redistributions of source code must retain the above copyright
942 dnl notice, this list of conditions and the following disclaimer.
943 dnl 2. Redistributions in binary form must reproduce the above copyright
944 dnl notice, this list of conditions and the following disclaimer in the
945 dnl documentation and/or other materials provided with the distribution.
946 dnl 3. Neither the name of the project nor the names of its contributors
947 dnl may be used to endorse or promote products derived from this software
948 dnl without specific prior written permission.
950 dnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
951 dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
952 dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
953 dnl ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
954 dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
955 dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
956 dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
957 dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
958 dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
959 dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
963 dnl Checks to see if AF_INET6 is defined
964 AC_DEFUN(AC_CHECK_AF_INET6, [
965 AC_MSG_CHECKING(for AF_INET6)
968 # include <sys/types.h>
969 # include <sys/socket.h>],
974 if test $$1 = yes ; then
975 AC_DEFINE(HAVE_AF_INET6)
980 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
981 dnl borrowed from LBL libpcap
982 AC_DEFUN(AC_CHECK_SA_LEN, [
983 AC_MSG_CHECKING(if sockaddr struct has sa_len member)
986 # include <sys/types.h>
987 # include <sys/socket.h>],
988 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
992 if test $$1 = yes ; then
993 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
998 dnl Checks for portable prototype declaration macro
999 AC_DEFUN(AC_CHECK_PORTABLE_PROTO, [
1000 AC_MSG_CHECKING(for __P)
1003 # include <unistd.h>],
1008 if test $$1 = yes; then
1009 AC_DEFINE(HAVE_PORTABLE_PROTOTYPE)
1013 dnl checks for u_intXX_t
1014 AC_DEFUN(AC_CHECK_BITTYPES, [
1016 dnl check for u_int8_t
1017 AC_MSG_CHECKING(for u_int8_t)
1018 AC_CACHE_VAL(ac_cv_u_int8_t,
1020 # include <sys/types.h>],
1024 AC_MSG_RESULT($ac_cv_u_int8_t)
1025 if test $ac_cv_u_int8_t = yes; then
1026 AC_DEFINE(HAVE_U_INT8_T)
1030 dnl check for u_int16_t
1031 AC_MSG_CHECKING(for u_int16_t)
1032 AC_CACHE_VAL(ac_cv_u_int16_t,
1034 # include <sys/types.h>],
1036 ac_cv_u_int16_t=yes,
1037 ac_cv_u_int16_t=no))
1038 AC_MSG_RESULT($ac_cv_u_int16_t)
1039 if test $ac_cv_u_int16_t = yes; then
1040 AC_DEFINE(HAVE_U_INT16_T)
1044 dnl check for u_int32_t
1045 AC_MSG_CHECKING(for u_int32_t)
1046 AC_CACHE_VAL(ac_cv_u_int32_t,
1048 # include <sys/types.h>],
1050 ac_cv_u_int32_t=yes,
1051 ac_cv_u_int32_t=no))
1052 AC_MSG_RESULT($ac_cv_u_int32_t)
1053 if test $ac_cv_u_int32_t = yes; then
1054 AC_DEFINE(HAVE_U_INT32_T)
1058 dnl check for u_int64_t
1059 AC_MSG_CHECKING(for u_int64_t)
1060 AC_CACHE_VAL(ac_cv_u_int64_t,
1062 # include <sys/types.h>],
1064 ac_cv_u_int64_t=yes,
1065 ac_cv_u_int64_t=no))
1066 AC_MSG_RESULT($ac_cv_u_int64_t)
1067 if test $ac_cv_u_int64_t = yes; then
1068 AC_DEFINE(HAVE_U_INT64_T)
1075 dnl Checks for addrinfo structure
1076 AC_DEFUN(AC_STRUCT_ADDRINFO, [
1077 AC_MSG_CHECKING(for addrinfo)
1080 # include <netdb.h>],
1081 [struct addrinfo a],
1085 if test $$1 = yes; then
1086 AC_DEFINE(HAVE_ADDRINFO)
1088 AC_DEFINE(NEED_ADDRINFO_H)
1093 dnl Checks for NI_MAXSERV
1094 AC_DEFUN(AC_NI_MAXSERV, [
1095 AC_MSG_CHECKING(for NI_MAXSERV)
1097 AC_EGREP_CPP(yes, [#include <netdb.h>
1104 if test $$1 != yes; then
1105 AC_DEFINE(NEED_ADDRINFO_H)
1110 dnl Checks for NI_NAMEREQD
1111 AC_DEFUN(AC_NI_NAMEREQD, [
1112 AC_MSG_CHECKING(for NI_NAMEREQD)
1114 AC_EGREP_CPP(yes, [#include <netdb.h>
1121 if test $$1 != yes; then
1122 AC_DEFINE(NEED_ADDRINFO_H)
1127 dnl Checks for sockaddr_storage structure
1128 AC_DEFUN(AC_STRUCT_SA_STORAGE, [
1129 AC_MSG_CHECKING(for sockaddr_storage)
1132 # include <sys/types.h>
1133 # include <sys/socket.h>],
1134 [struct sockaddr_storage s],
1138 if test $$1 = yes; then
1139 AC_DEFINE(HAVE_SOCKADDR_STORAGE)
1144 dnl Checks for macro of IP address size
1145 AC_DEFUN(AC_CHECK_ADDRSZ, [
1147 dnl check for INADDRSZ
1148 AC_MSG_CHECKING(for INADDRSZ)
1149 AC_CACHE_VAL(ac_cv_inaddrsz,
1151 # include <arpa/nameser.h>],
1155 AC_MSG_RESULT($ac_cv_inaddrsz)
1156 if test $ac_cv_inaddrsz = yes; then
1157 AC_DEFINE(HAVE_INADDRSZ)
1161 dnl check for IN6ADDRSZ
1162 AC_MSG_CHECKING(for IN6ADDRSZ)
1163 AC_CACHE_VAL(ac_cv_in6addrsz,
1165 # include <arpa/nameser.h>],
1166 [int a = IN6ADDRSZ],
1167 ac_cv_in6addrsz=yes,
1168 ac_cv_in6addrsz=no))
1169 AC_MSG_RESULT($ac_cv_in6addrsz)
1170 if test $ac_cv_in6addrsz = yes; then
1171 AC_DEFINE(HAVE_IN6ADDRSZ)
1178 dnl check for RES_USE_INET6
1179 AC_DEFUN(AC_CHECK_RES_USE_INET6, [
1180 AC_MSG_CHECKING(for RES_USE_INET6)
1183 # include <sys/types.h>
1184 # include <netinet/in.h>
1185 # include <resolv.h>],
1186 [int a = RES_USE_INET6],
1190 if test $$1 = yes; then
1191 AC_DEFINE(HAVE_RES_USE_INET6)
1197 AC_DEFUN(AC_CHECK_AAAA, [
1198 AC_MSG_CHECKING(for AAAA)
1201 # include <sys/types.h>
1202 # include <arpa/nameser.h>],
1207 if test $$1 = yes; then
1208 AC_DEFINE(HAVE_AAAA)
1213 dnl check for struct res_state_ext
1214 AC_DEFUN(AC_STRUCT_RES_STATE_EXT, [
1215 AC_MSG_CHECKING(for res_state_ext)
1218 # include <sys/types.h>
1219 # include <netinet/in.h>
1220 # include <netinet6/in6.h>
1221 # include <resolv.h>],
1222 [struct __res_state_ext e],
1226 if test $$1 = yes; then
1227 AC_DEFINE(HAVE_RES_STATE_EXT)
1232 dnl check for struct res_state_ext
1233 AC_DEFUN(AC_STRUCT_RES_STATE, [
1234 AC_MSG_CHECKING(for nsort in res_state)
1237 # include <sys/types.h>
1238 # include <netinet/in.h>
1239 # include <netinet6/in6.h>
1240 # include <resolv.h>],
1241 [struct __res_state e; e.nsort = 0],
1245 if test $$1 = yes; then
1246 AC_DEFINE(HAVE_NEW_RES_STATE)
1251 dnl check for h_errno
1252 AC_DEFUN(AC_VAR_H_ERRNO, [
1253 AC_MSG_CHECKING(for h_errno)
1254 AC_CACHE_VAL(ac_cv_var_h_errno,
1256 # include <sys/types.h>
1257 # include <netdb.h>],
1258 [int foo = h_errno;],
1259 ac_cv_var_h_errno=yes,
1260 ac_cv_var_h_errno=no))
1261 AC_MSG_RESULT($ac_cv_var_h_errno)
1262 if test "$ac_cv_var_h_errno" = "yes"; then
1263 AC_DEFINE(HAVE_H_ERRNO)
1268 dnl Test for __attribute__
1271 AC_DEFUN(AC_C___ATTRIBUTE__, [
1272 AC_MSG_CHECKING(for __attribute__)
1273 AC_CACHE_VAL(ac_cv___attribute__, [
1278 static void foo(void) __attribute__ ((noreturn));
1287 main(int argc, char **argv)
1292 ac_cv___attribute__=yes,
1293 ac_cv___attribute__=no)])
1294 if test "$ac_cv___attribute__" = "yes"; then
1295 AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
1296 V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\""
1298 V_DEFS="$V_DEFS -D_U_=\"\""
1300 AC_MSG_RESULT($ac_cv___attribute__)
1303 AC_DEFUN(AC_LBL_SSLEAY,
1306 # Find the last component of $libdir; it's not necessarily
1307 # "lib" - it might be "lib64" on, for example, x86-64
1310 # We assume the directory in which we're looking for
1311 # libcrypto has a subdirectory with that as its name.
1313 tmplib=`echo "$libdir" | sed 's,.*/,,'`
1316 # XXX - is there a better way to check if a given library is
1317 # in a given directory than checking each of the possible
1318 # shared library suffixes?
1320 # Are there any other suffixes we need to look for? Do we
1321 # have to worry about ".so.{version}"?
1323 # Or should we just look for "libcrypto.*"?
1325 if test -d "$1/$tmplib" -a \( -f "$1/$tmplib/libcrypto.a" -o \
1326 -f "$1/$tmplib/libcrypto.so" -o \
1327 -f "$1/$tmplib/libcrypto.sl" -o \
1328 -f "$1/$tmplib/libcrypto.dylib" \); then
1329 ac_cv_ssleay_path="$1"
1333 # Make sure we have the headers as well.
1335 if test -d "$1/include/openssl" -a -f "$1/include/openssl/des.h"; then
1336 incdir="-I$1/include"