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 Do whatever AC_LBL_C_INIT work is necessary before using AC_PROG_CC.
28 dnl It appears that newer versions of autoconf (2.64 and later) will,
29 dnl if you use AC_TRY_COMPILE in a macro, stick AC_PROG_CC at the
30 dnl beginning of the macro, even if the macro itself calls AC_PROG_CC.
31 dnl See the "Prerequisite Macros" and "Expanded Before Required" sections
32 dnl in the Autoconf documentation.
34 dnl This causes a steaming heap of fail in our case, as we were, in
35 dnl AC_LBL_C_INIT, doing the tests we now do in AC_LBL_C_INIT_BEFORE_CC,
36 dnl calling AC_PROG_CC, and then doing the tests we now do in
37 dnl AC_LBL_C_INIT. Now, we run AC_LBL_C_INIT_BEFORE_CC, AC_PROG_CC,
38 dnl and AC_LBL_C_INIT at the top level.
40 AC_DEFUN(AC_LBL_C_INIT_BEFORE_CC,
42 AC_BEFORE([$0], [AC_LBL_C_INIT])
43 AC_BEFORE([$0], [AC_PROG_CC])
44 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
45 AC_BEFORE([$0], [AC_LBL_DEVEL])
46 AC_ARG_WITH(gcc, [ --without-gcc don't use gcc])
48 if test "${srcdir}" != "." ; then
51 if test "${CFLAGS+set}" = set; then
54 if test -z "$CC" ; then
58 AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
59 if test $SHLICC2 = yes ; then
66 if test -z "$CC" -a "$with_gcc" = no ; then
73 dnl Determine which compiler we're using (cc or gcc)
74 dnl If using gcc, determine the version number
76 dnl require that it support ansi prototypes
77 dnl use -O (AC_PROG_CC will use -g -O2 on gcc, so we don't need to
78 dnl do that ourselves for gcc)
79 dnl explicitly specify /usr/local/include
83 dnl AC_LBL_C_INIT(copt, incls)
91 dnl ac_cv_lbl_gcc_vers
94 AC_DEFUN(AC_LBL_C_INIT,
96 AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
97 AC_BEFORE([$0], [AC_LBL_DEVEL])
98 AC_BEFORE([$0], [AC_LBL_SHLIBS_INIT])
99 if test "$GCC" = yes ; then
100 if test "$SHLICC2" = yes ; then
103 AC_MSG_CHECKING(gcc version)
104 AC_CACHE_VAL(ac_cv_lbl_gcc_vers,
105 ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \
106 sed -e '/^gcc version /!d' \
107 -e 's/^gcc version //' \
108 -e 's/ .*//' -e 's/^[[[^0-9]]]*//' \
110 AC_MSG_RESULT($ac_cv_lbl_gcc_vers)
114 # -Werror forces warnings to be errors.
116 ac_lbl_cc_force_warning_errors=-Werror
119 # Use -ffloat-store so that, on 32-bit x86, we don't
120 # do 80-bit arithmetic with the FPU; that way we should
121 # get the same results for floating-point calculations
122 # on x86-32 and x86-64.
124 AC_LBL_CHECK_COMPILER_OPT($1, -ffloat-store)
126 $2="$$2 -I/usr/local/include"
127 LDFLAGS="$LDFLAGS -L/usr/local/lib"
133 # This is assumed either to be GCC or clang, both
134 # of which use -Werror to force warnings to be errors.
136 ac_lbl_cc_force_warning_errors=-Werror
141 # HP C, which is what we presume we're using, doesn't
142 # exit with a non-zero exit status if we hand it an
143 # invalid -W flag, can't be forced to do so even with
144 # +We, and doesn't handle GCC-style -W flags, so we
145 # don't want to try using GCC-style -W flags.
147 ac_lbl_cc_dont_try_gcc_dashW=yes
152 # MIPS C, which is what we presume we're using, doesn't
153 # necessarily exit with a non-zero exit status if we
154 # hand it an invalid -W flag, can't be forced to do
155 # so, and doesn't handle GCC-style -W flags, so we
156 # don't want to try using GCC-style -W flags.
158 ac_lbl_cc_dont_try_gcc_dashW=yes
159 $1="$$1 -xansi -signed"
164 # Presumed to be DEC OSF/1, Digital UNIX, or
167 # The DEC C compiler, which is what we presume we're
168 # using, doesn't exit with a non-zero exit status if we
169 # hand it an invalid -W flag, can't be forced to do
170 # so, and doesn't handle GCC-style -W flags, so we
171 # don't want to try using GCC-style -W flags.
173 ac_lbl_cc_dont_try_gcc_dashW=yes
178 # Assumed to be Sun C, which requires -errwarn to force
179 # warnings to be treated as errors.
181 ac_lbl_cc_force_warning_errors=-errwarn
185 AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
186 AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
188 [#include <sys/types.h>],
189 [struct a { int b; };
190 void c(const struct a *)],
191 ac_cv_lbl_cc_const_proto=yes,
192 ac_cv_lbl_cc_const_proto=no))
193 AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
194 if test $ac_cv_lbl_cc_const_proto = no ; then
196 [to handle Ultrix compilers that don't support const in prototypes])
205 dnl Check whether the compiler option specified as the second argument
206 dnl is supported by the compiler and, if so, add it to the macro
207 dnl specified as the first argument
209 AC_DEFUN(AC_LBL_CHECK_COMPILER_OPT,
211 AC_MSG_CHECKING([whether the compiler supports the $2 option])
212 save_CFLAGS="$CFLAGS"
213 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors $2"
219 CFLAGS="$save_CFLAGS"
224 CFLAGS="$save_CFLAGS"
229 dnl Check whether the compiler supports an option to generate
230 dnl Makefile-style dependency lines
232 dnl GCC uses -M for this. Non-GCC compilers that support this
233 dnl use a variety of flags, including but not limited to -M.
235 dnl We test whether the flag in question is supported, as older
236 dnl versions of compilers might not support it.
238 dnl We don't try all the possible flags, just in case some flag means
239 dnl "generate dependencies" on one compiler but means something else
240 dnl on another compiler.
242 dnl Most compilers that support this send the output to the standard
243 dnl output by default. IBM's XLC, however, supports -M but sends
244 dnl the output to {sourcefile-basename}.u, and AIX has no /dev/stdout
245 dnl to work around that, so we don't bother with XLC.
247 AC_DEFUN(AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT,
249 AC_MSG_CHECKING([whether the compiler supports generating dependencies])
250 if test "$GCC" = yes ; then
252 # GCC, or a compiler deemed to be GCC by AC_PROG_CC (even
253 # though it's not); we assume that, in this case, the flag
256 ac_lbl_dependency_flag="-M"
259 # Not GCC or a compiler deemed to be GCC; what platform is
260 # this? (We're assuming that if the compiler isn't GCC
261 # it's the compiler from the vendor of the OS; that won't
262 # necessarily be true for x86 platforms, where it might be
263 # the Intel C compiler.)
269 # MIPS C for IRIX, DEC C, and clang all use -M.
271 ac_lbl_dependency_flag="-M"
278 ac_lbl_dependency_flag="-xM"
283 # HP's older C compilers don't support this.
284 # HP's newer C compilers support this with
285 # either +M or +Make; the older compilers
286 # interpret +M as something completely
287 # different, so we use +Make so we don't
288 # think it works with the older compilers.
290 ac_lbl_dependency_flag="+Make"
295 # Not one of the above; assume no support for
296 # generating dependencies.
298 ac_lbl_dependency_flag=""
304 # Is ac_lbl_dependency_flag defined and, if so, does the compiler
307 # Note: clang doesn't seem to exit with an error status when handed
308 # an unknown non-warning error, even if you pass it
309 # -Werror=unknown-warning-option. However, it always supports
310 # -M, so the fact that this test always succeeds with clang
313 if test ! -z "$ac_lbl_dependency_flag"; then
315 [AC_LANG_SOURCE([[int main(void) { return 0; }]])])
316 echo "$CC" $ac_lbl_dependency_flag conftest.c >&5
317 if "$CC" $ac_lbl_dependency_flag conftest.c >/dev/null 2>&1; then
318 AC_MSG_RESULT([yes, with $ac_lbl_dependency_flag])
319 DEPENDENCY_CFLAG="$ac_lbl_dependency_flag"
320 MKDEP='${srcdir}/mkdep'
324 # We can't run mkdep, so have "make depend" do
333 # We can't run mkdep, so have "make depend" do
338 AC_SUBST(DEPENDENCY_CFLAG)
343 # Try compiling a sample of the type of code that appears in
344 # gencode.c with "inline", "__inline__", and "__inline".
346 # Autoconf's AC_C_INLINE, at least in autoconf 2.13, isn't good enough,
347 # as it just tests whether a function returning "int" can be inlined;
348 # at least some versions of HP's C compiler can inline that, but can't
349 # inline a function that returns a struct pointer.
351 # Make sure we use the V_CCOPT flags, because some of those might
354 AC_DEFUN(AC_LBL_C_INLINE,
355 [AC_MSG_CHECKING(for inline)
356 save_CFLAGS="$CFLAGS"
358 AC_CACHE_VAL(ac_cv_lbl_inline, [
361 for ac_lbl_inline in inline __inline__ __inline
364 [#define inline $ac_lbl_inline
365 static inline struct iltest *foo(void);
371 static inline struct iltest *
374 static struct iltest xxx;
377 }],,ac_lbl_cc_inline=yes,)
378 if test "$ac_lbl_cc_inline" = yes ; then
382 if test "$ac_lbl_cc_inline" = yes ; then
383 ac_cv_lbl_inline=$ac_lbl_inline
385 CFLAGS="$save_CFLAGS"
386 if test ! -z "$ac_cv_lbl_inline" ; then
387 AC_MSG_RESULT($ac_cv_lbl_inline)
391 AC_DEFINE_UNQUOTED(inline, $ac_cv_lbl_inline, [Define as token for inline if inlining supported])])
394 dnl Use pfopen.c if available and pfopen() not in standard libraries
396 dnl Look for libpcap in ..
397 dnl Use the installed libpcap if there is no local version
401 dnl AC_LBL_LIBPCAP(pcapdep, incls)
406 dnl $2 (incls appended)
410 AC_DEFUN(AC_LBL_LIBPCAP,
411 [AC_REQUIRE([AC_LBL_LIBRARY_NET])
413 dnl save a copy before locating libpcap.a
416 pfopen=/usr/examples/packetfilter/pfopen.c
417 if test -f $pfopen ; then
418 AC_CHECK_FUNCS(pfopen)
419 if test $ac_cv_func_pfopen = "no" ; then
420 AC_MSG_RESULT(Using $pfopen)
424 AC_MSG_CHECKING(for local pcap library)
427 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
428 egrep '/libpcap-[[0-9]]+\.[[0-9]]+(\.[[0-9]]*)?([[ab]][[0-9]]*|-PRE-GIT)?$'`
429 for dir in $places $srcdir/../libpcap $srcdir/libpcap ; do
430 basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//' | \
431 sed -e 's/-PRE-GIT$//' `
432 if test $lastdir = $basedir ; then
433 dnl skip alphas when an actual release is present
437 if test -r $dir/libpcap.a ; then
438 libpcap=$dir/libpcap.a
440 dnl continue and select the last one that exists
443 if test $libpcap = FAIL ; then
444 AC_MSG_RESULT(not found)
447 # Look for pcap-config.
449 AC_PATH_TOOL(PCAP_CONFIG, pcap-config)
450 if test -n "$PCAP_CONFIG" ; then
452 # Found - use it to get the include flags for
453 # libpcap and the flags to link with libpcap.
455 # Please read section 11.6 "Shell Substitutions"
456 # in the autoconf manual before doing anything
457 # to this that involves quoting. Especially note
458 # the statement "There is just no portable way to use
459 # double-quoted strings inside double-quoted back-quoted
460 # expressions (pfew!)."
462 cflags=`"$PCAP_CONFIG" --cflags`
464 libpcap=`"$PCAP_CONFIG" --libs`
467 # Not found; look for pcap.
469 AC_CHECK_LIB(pcap, main, libpcap="-lpcap")
470 if test $libpcap = FAIL ; then
471 AC_MSG_ERROR(see the INSTALL doc for more info)
474 dnl Some versions of Red Hat Linux put "pcap.h" in
475 dnl "/usr/include/pcap"; had the LBL folks done so,
476 dnl that would have been a good idea, but for
477 dnl the Red Hat folks to do so just breaks source
478 dnl compatibility with other systems.
480 dnl We work around this by assuming that, as we didn't
481 dnl find a local libpcap, libpcap is in /usr/lib or
482 dnl /usr/local/lib and that the corresponding header
483 dnl file is under one of those directories; if we don't
484 dnl find it in either of those directories, we check to
485 dnl see if it's in a "pcap" subdirectory of them and,
486 dnl if so, add that subdirectory to the "-I" list.
488 dnl (We now also put pcap.h in /usr/include/pcap, but we
489 dnl leave behind a /usr/include/pcap.h that includes it,
490 dnl so you can still just include <pcap.h>.)
492 AC_MSG_CHECKING(for extraneous pcap header directories)
493 if test \( ! -r /usr/local/include/pcap.h \) -a \
494 \( ! -r /usr/include/pcap.h \); then
495 if test -r /usr/local/include/pcap/pcap.h; then
496 d="/usr/local/include/pcap"
497 elif test -r /usr/include/pcap/pcap.h; then
498 d="/usr/include/pcap"
501 if test -z "$d" ; then
502 AC_MSG_RESULT(not found)
505 AC_MSG_RESULT(found -- -I$d added)
510 places=`ls $srcdir/.. | sed -e 's,/$,,' -e "s,^,$srcdir/../," | \
511 egrep '/libpcap-[[0-9]]*.[[0-9]]*(.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
512 if test -r $d/pcap.h; then
514 elif test -r $places/pcap.h; then
517 AC_MSG_ERROR(cannot find pcap.h, see INSTALL)
519 AC_MSG_RESULT($libpcap)
520 AC_PATH_PROG(PCAP_CONFIG, pcap-config,, $d)
521 if test -n "$PCAP_CONFIG"; then
523 # The libpcap directory has a pcap-config script.
524 # Use it to get any additioal libraries needed
525 # to link with the libpcap archive library in
528 # Please read section 11.6 "Shell Substitutions"
529 # in the autoconf manual before doing anything
530 # to this that involves quoting. Especially note
531 # the statement "There is just no portable way to use
532 # double-quoted strings inside double-quoted back-quoted
533 # expressions (pfew!)."
535 additional_libs=`"$PCAP_CONFIG" --additional-libs --static`
536 libpcap="$libpcap $additional_libs"
539 LIBS="$libpcap $LIBS"
540 if ! test -n "$PCAP_CONFIG" ; then
542 # We don't have pcap-config; find out any additional link flags
543 # we need. (If we have pcap-config, we assume it tells us what
550 # If libpcap is DLPI-based, we have to use /lib/pse.exp if
551 # present, as we use the STREAMS routines.
553 # (XXX - true only if we're linking with a static libpcap?)
555 pseexe="/lib/pse.exp"
556 AC_MSG_CHECKING(for $pseexe)
557 if test -f $pseexe ; then
559 LIBS="$LIBS -I:$pseexe"
563 # If libpcap is BPF-based, we need "-lodm" and "-lcfg", as
564 # we use them to load the BPF module.
566 # (XXX - true only if we're linking with a static libpcap?)
568 LIBS="$LIBS -lodm -lcfg"
574 dnl Check for "pcap_loop()", to make sure we found a working
575 dnl libpcap and have all the right other libraries with which
576 dnl to link. (Otherwise, the checks below will fail, not
577 dnl because the routines are missing from the library, but
578 dnl because we aren't linking properly with libpcap, and
579 dnl that will cause confusing errors at build time.)
581 AC_CHECK_FUNC(pcap_loop,,
584 [Report this to tcpdump-workers@lists.tcpdump.org, and include the
585 config.log file in your report. If you have downloaded libpcap from
586 tcpdump.org, and built it yourself, please also include the config.log
587 file from the libpcap source directory, the Makefile from the libpcap
588 source directory, and the output of the make process for libpcap, as
589 this could be a problem with the libpcap that was built, and we will
590 not be able to determine why this is happening, and thus will not be
591 able to fix it, without that information, as we have not been able to
592 reproduce this problem ourselves.])
596 dnl Check for "pcap_list_datalinks()", "pcap_set_datalink()",
597 dnl and "pcap_datalink_name_to_val()", and use substitute versions
598 dnl if they're not present.
600 AC_CHECK_FUNC(pcap_list_datalinks,
601 AC_DEFINE(HAVE_PCAP_LIST_DATALINKS, 1,
602 [define if libpcap has pcap_list_datalinks()]),
606 AC_CHECK_FUNC(pcap_set_datalink,
607 AC_DEFINE(HAVE_PCAP_SET_DATALINK, 1,
608 [define if libpcap has pcap_set_datalink()]))
609 AC_CHECK_FUNC(pcap_datalink_name_to_val,
611 AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL, 1,
612 [define if libpcap has pcap_datalink_name_to_val()])
613 AC_CHECK_FUNC(pcap_datalink_val_to_description,
614 AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION, 1,
615 [define if libpcap has pcap_datalink_val_to_description()]),
625 dnl Check for "pcap_breakloop()"; you can't substitute for it if
626 dnl it's absent (it has hooks into the live capture routines),
627 dnl so just define the HAVE_ value if it's there.
629 AC_CHECK_FUNCS(pcap_breakloop)
632 dnl Check for "pcap_dump_ftell()" and use a substitute version
633 dnl if it's not present.
634 AC_CHECK_FUNC(pcap_dump_ftell,
635 AC_DEFINE(HAVE_PCAP_DUMP_FTELL, 1,
636 [define if libpcap has pcap_dump_ftell()]),
638 AC_LIBOBJ(pcap_dump_ftell)
643 dnl Define RETSIGTYPE and RETSIGVAL
647 dnl AC_LBL_TYPE_SIGNAL
651 dnl RETSIGTYPE (defined)
652 dnl RETSIGVAL (defined)
654 AC_DEFUN(AC_LBL_TYPE_SIGNAL,
655 [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
657 if test "$ac_cv_type_signal" = void ; then
658 AC_DEFINE(RETSIGVAL,[],[return value of signal handlers])
660 AC_DEFINE(RETSIGVAL,(0),[return value of signal handlers])
665 AC_DEFINE(_BSD_SIGNALS,1,[get BSD semantics on Irix])
669 dnl prefer sigaction() to sigset()
670 AC_CHECK_FUNCS(sigaction)
671 if test $ac_cv_func_sigaction = no ; then
672 AC_CHECK_FUNCS(sigset)
678 dnl If using gcc, make sure we have ANSI ioctl definitions
682 dnl AC_LBL_FIXINCLUDES
684 AC_DEFUN(AC_LBL_FIXINCLUDES,
685 [if test "$GCC" = yes ; then
686 AC_MSG_CHECKING(for ANSI ioctl definitions)
687 AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
690 * This generates a "duplicate case value" when fixincludes
693 # include <sys/types.h>
694 # include <sys/time.h>
695 # include <sys/ioctl.h>
696 # ifdef HAVE_SYS_IOCCOM_H
697 # include <sys/ioccom.h>
703 ac_cv_lbl_gcc_fixincludes=yes,
704 ac_cv_lbl_gcc_fixincludes=no))
705 AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
706 if test $ac_cv_lbl_gcc_fixincludes = no ; then
707 # Don't cache failure
708 unset ac_cv_lbl_gcc_fixincludes
709 AC_MSG_ERROR(see the INSTALL for more info)
714 dnl Checks to see if union wait is used with WEXITSTATUS()
718 dnl AC_LBL_UNION_WAIT
722 dnl DECLWAITSTATUS (defined)
724 AC_DEFUN(AC_LBL_UNION_WAIT,
725 [AC_MSG_CHECKING(if union wait is used)
726 AC_CACHE_VAL(ac_cv_lbl_union_wait,
728 # include <sys/types.h>
729 # include <sys/wait.h>],
731 u_int i = WEXITSTATUS(status);
732 u_int j = waitpid(0, &status, 0);],
733 ac_cv_lbl_union_wait=no,
734 ac_cv_lbl_union_wait=yes))
735 AC_MSG_RESULT($ac_cv_lbl_union_wait)
736 if test $ac_cv_lbl_union_wait = yes ; then
737 AC_DEFINE(DECLWAITSTATUS,union wait,[type for wait])
739 AC_DEFINE(DECLWAITSTATUS,int,[type for wait])
743 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
747 dnl AC_LBL_SOCKADDR_SA_LEN
751 dnl HAVE_SOCKADDR_SA_LEN (defined)
753 AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
754 [AC_MSG_CHECKING(if sockaddr struct has the sa_len member)
755 AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
757 # include <sys/types.h>
758 # include <sys/socket.h>],
759 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
760 ac_cv_lbl_sockaddr_has_sa_len=yes,
761 ac_cv_lbl_sockaddr_has_sa_len=no))
762 AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
763 if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
764 AC_DEFINE(HAVE_SOCKADDR_SA_LEN,1,[if struct sockaddr has the sa_len member])
768 dnl Checks to see if -R is used
772 dnl AC_LBL_HAVE_RUN_PATH
776 dnl ac_cv_lbl_have_run_path (yes or no)
778 AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
779 [AC_MSG_CHECKING(for ${CC-cc} -R)
780 AC_CACHE_VAL(ac_cv_lbl_have_run_path,
781 [echo 'main(){}' > conftest.c
782 ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
783 if test ! -s conftest.out ; then
784 ac_cv_lbl_have_run_path=yes
786 ac_cv_lbl_have_run_path=no
789 AC_MSG_RESULT($ac_cv_lbl_have_run_path)
793 dnl Check whether a given format can be used to print 64-bit integers
795 AC_DEFUN(AC_LBL_CHECK_64BIT_FORMAT,
797 AC_MSG_CHECKING([whether %$1x can be used to format 64-bit integers])
802 # ifdef HAVE_INTTYPES_H
803 #include <inttypes.h>
805 # ifdef HAVE_SYS_BITYPES_H
806 #include <sys/bitypes.h>
809 #include <sys/types.h>
815 sprintf(strbuf, "%016$1x", t << 32);
816 if (strcmp(strbuf, "0000000100000000") == 0)
824 AC_DEFINE(PRId64, "$1d", [define if the platform doesn't define PRId64])
825 AC_DEFINE(PRIo64, "$1o", [define if the platform doesn't define PRIo64])
826 AC_DEFINE(PRIx64, "$1x", [define if the platform doesn't define PRIu64])
827 AC_DEFINE(PRIu64, "$1u", [define if the platform doesn't define PRIx64])
837 dnl Checks to see if unaligned memory accesses fail
841 dnl AC_LBL_UNALIGNED_ACCESS
845 dnl LBL_ALIGN (DEFINED)
847 AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
848 [AC_MSG_CHECKING(if unaligned accesses fail)
849 AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
853 # These are CPU types where:
855 # the CPU faults on an unaligned access, but at least some
856 # OSes that support that CPU catch the fault and simulate
857 # the unaligned access (e.g., Alpha/{Digital,Tru64} UNIX) -
858 # the simulation is slow, so we don't want to use it;
860 # the CPU, I infer (from the old
862 # XXX: should also check that they don't do weird things (like on arm)
864 # comment) doesn't fault on unaligned accesses, but doesn't
865 # do a normal unaligned fetch, either (e.g., presumably, ARM);
867 # for whatever reason, the test program doesn't work
868 # (this has been claimed to be the case for several of those
869 # CPUs - I don't know what the problem is; the problem
870 # was reported as "the test program dumps core" for SuperH,
871 # but that's what the test program is *supposed* to do -
872 # it dumps core before it writes anything, so the test
873 # for an empty output file should find an empty output
874 # file and conclude that unaligned accesses don't work).
876 # This run-time test won't work if you're cross-compiling, so
877 # in order to support cross-compiling for a particular CPU,
878 # we have to wire in the list of CPU types anyway, as far as
879 # I know, so perhaps we should just have a set of CPUs on
880 # which we know it doesn't work, a set of CPUs on which we
881 # know it does work, and have the script just fail on other
882 # cpu types and update it when such a failure occurs.
884 alpha*|arm*|bfin*|hp*|mips*|sh*|sparc*|ia64|nv1)
885 ac_cv_lbl_unaligned_fail=yes
889 cat >conftest.c <<EOF
890 # include <sys/types.h>
891 # include <sys/wait.h>
893 unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
898 /* avoid "core dumped" message */
904 pid = waitpid(pid, &status, 0);
907 exit(!WIFEXITED(status));
910 i = *(unsigned int *)&a[[1]];
915 ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
916 conftest.c $LIBS >/dev/null 2>&1
917 if test ! -x conftest ; then
918 dnl failed to compile for some reason
919 ac_cv_lbl_unaligned_fail=yes
921 ./conftest >conftest.out
922 if test ! -s conftest.out ; then
923 ac_cv_lbl_unaligned_fail=yes
925 ac_cv_lbl_unaligned_fail=no
928 rm -f -r conftest* core core.conftest
931 AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
932 if test $ac_cv_lbl_unaligned_fail = yes ; then
933 AC_DEFINE(LBL_ALIGN,1,[if unaligned access fails])
937 dnl If the file .devel exists:
938 dnl Add some warning flags if the compiler supports them
939 dnl If an os prototype include exists, symlink os-proto.h to it
943 dnl AC_LBL_DEVEL(copt)
947 dnl $1 (copt appended)
948 dnl HAVE_OS_PROTO_H (defined)
949 dnl os-proto.h (symlinked)
951 AC_DEFUN(AC_LBL_DEVEL,
953 if test "${LBL_CFLAGS+set}" = set; then
954 $1="$$1 ${LBL_CFLAGS}"
956 if test -f .devel ; then
958 # Skip all the warning option stuff on some compilers.
960 if test "$ac_lbl_cc_dont_try_gcc_dashW" != yes; then
961 AC_LBL_CHECK_COMPILER_OPT($1, -Wall)
962 AC_LBL_CHECK_COMPILER_OPT($1, -Wmissing-prototypes)
963 AC_LBL_CHECK_COMPILER_OPT($1, -Wstrict-prototypes)
964 AC_LBL_CHECK_COMPILER_OPT($1, -Wwrite-strings)
965 AC_LBL_CHECK_COMPILER_OPT($1, -Wpointer-arith)
966 AC_LBL_CHECK_COMPILER_OPT($1, -W)
968 AC_LBL_CHECK_DEPENDENCY_GENERATION_OPT()
969 if test "$GCC" != yes ; then
973 V_CCOPT="$V_CCOPT -n32"
980 os=`echo $host_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
982 if test -f $name ; then
983 ln -s $name os-proto.h
984 AC_DEFINE(HAVE_OS_PROTO_H, 1,
985 [if there's an os_proto.h for this platform, to use additional prototypes])
987 AC_MSG_WARN(can't find $name)
992 dnl Improved version of AC_CHECK_LIB
994 dnl Thanks to John Hawkinson (jhawk@mit.edu)
998 dnl AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
999 dnl ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
1005 dnl XXX - "AC_LBL_LIBRARY_NET" was redone to use "AC_SEARCH_LIBS"
1006 dnl rather than "AC_LBL_CHECK_LIB", so this isn't used any more.
1007 dnl We keep it around for reference purposes in case it's ever
1008 dnl useful in the future.
1011 define(AC_LBL_CHECK_LIB,
1012 [AC_MSG_CHECKING([for $2 in -l$1])
1013 dnl Use a cache variable name containing the library, function
1014 dnl name, and extra libraries to link with, because the test really is
1015 dnl for library $1 defining function $2, when linked with potinal
1016 dnl library $5, not just for library $1. Separate tests with the same
1017 dnl $1 and different $2's or $5's may have different results.
1018 ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
1019 AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
1020 [ac_save_LIBS="$LIBS"
1021 LIBS="-l$1 $5 $LIBS"
1023 ifelse([$2], [main], , dnl Avoid conflicting decl of main.
1024 [/* Override any gcc2 internal prototype to avoid an error. */
1025 ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
1029 [/* We use char because int might match the return type of a gcc2
1030 builtin and then its argument prototype would still apply. */
1034 eval "ac_cv_lbl_lib_$ac_lib_var=yes",
1035 eval "ac_cv_lbl_lib_$ac_lib_var=no")
1036 LIBS="$ac_save_LIBS"
1038 if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
1042 ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
1043 -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
1044 changequote([, ])dnl
1045 AC_DEFINE_UNQUOTED($ac_tr_lib)
1050 ifelse([$4], , , [$4
1056 dnl AC_LBL_LIBRARY_NET
1058 dnl This test is for network applications that need socket() and
1059 dnl gethostbyname() -ish functions. Under Solaris, those applications
1060 dnl need to link with "-lsocket -lnsl". Under IRIX, they need to link
1061 dnl with "-lnsl" but should *not* link with "-lsocket" because
1062 dnl libsocket.a breaks a number of things (for instance:
1063 dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
1064 dnl versions of IRIX).
1066 dnl Unfortunately, many application developers are not aware of this,
1067 dnl and mistakenly write tests that cause -lsocket to be used under
1068 dnl IRIX. It is also easy to write tests that cause -lnsl to be used
1069 dnl under operating systems where neither are necessary (or useful),
1070 dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
1072 dnl This test exists so that every application developer does not test
1073 dnl this in a different, and subtly broken fashion.
1075 dnl It has been argued that this test should be broken up into two
1076 dnl seperate tests, one for the resolver libraries, and one for the
1077 dnl libraries necessary for using Sockets API. Unfortunately, the two
1078 dnl are carefully intertwined and allowing the autoconf user to use
1079 dnl them independantly potentially results in unfortunate ordering
1080 dnl dependancies -- as such, such component macros would have to
1081 dnl carefully use indirection and be aware if the other components were
1082 dnl executed. Since other autoconf macros do not go to this trouble,
1083 dnl and almost no applications use sockets without the resolver, this
1084 dnl complexity has not been implemented.
1086 dnl The check for libresolv is in case you are attempting to link
1087 dnl statically and happen to have a libresolv.a lying around (and no
1090 AC_DEFUN(AC_LBL_LIBRARY_NET, [
1091 # Most operating systems have gethostbyname() in the default searched
1092 # libraries (i.e. libc):
1093 # Some OSes (eg. Solaris) place it in libnsl
1094 # Some strange OSes (SINIX) have it in libsocket:
1095 AC_SEARCH_LIBS(gethostbyname, nsl socket resolv)
1096 # Unfortunately libsocket sometimes depends on libnsl and
1097 # AC_SEARCH_LIBS isn't up to the task of handling dependencies like this.
1098 if test "$ac_cv_search_gethostbyname" = "no"
1100 AC_CHECK_LIB(socket, gethostbyname,
1101 LIBS="-lsocket -lnsl $LIBS", , -lnsl)
1103 AC_SEARCH_LIBS(socket, socket, ,
1104 AC_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", , -lnsl))
1105 # DLPI needs putmsg under HPUX so test for -lstr while we're at it
1106 AC_SEARCH_LIBS(putmsg, str)
1109 dnl Copyright (c) 1999 WIDE Project. All rights reserved.
1111 dnl Redistribution and use in source and binary forms, with or without
1112 dnl modification, are permitted provided that the following conditions
1114 dnl 1. Redistributions of source code must retain the above copyright
1115 dnl notice, this list of conditions and the following disclaimer.
1116 dnl 2. Redistributions in binary form must reproduce the above copyright
1117 dnl notice, this list of conditions and the following disclaimer in the
1118 dnl documentation and/or other materials provided with the distribution.
1119 dnl 3. Neither the name of the project nor the names of its contributors
1120 dnl may be used to endorse or promote products derived from this software
1121 dnl without specific prior written permission.
1123 dnl THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
1124 dnl ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1125 dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1126 dnl ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
1127 dnl FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1128 dnl DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1129 dnl OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
1130 dnl HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
1131 dnl LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
1132 dnl OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
1136 dnl Checks to see if AF_INET6 is defined
1137 AC_DEFUN(AC_CHECK_AF_INET6, [
1138 AC_MSG_CHECKING(for AF_INET6)
1141 # include <sys/types.h>
1142 # include <sys/socket.h>],
1147 if test $$1 = yes ; then
1148 AC_DEFINE(HAVE_AF_INET6)
1153 dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
1154 dnl borrowed from LBL libpcap
1155 AC_DEFUN(AC_CHECK_SA_LEN, [
1156 AC_MSG_CHECKING(if sockaddr struct has sa_len member)
1159 # include <sys/types.h>
1160 # include <sys/socket.h>],
1161 [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
1165 if test $$1 = yes ; then
1166 AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
1171 dnl Checks for addrinfo structure
1172 AC_DEFUN(AC_STRUCT_ADDRINFO, [
1173 AC_MSG_CHECKING(for addrinfo)
1176 # include <netdb.h>],
1177 [struct addrinfo a],
1181 if test $$1 = yes; then
1182 AC_DEFINE(HAVE_ADDRINFO, 1,
1183 [define if you have the addrinfo function])
1185 AC_DEFINE(NEED_ADDRINFO_H, 1,
1186 [define if you need to include missing/addrinfo.h])
1191 dnl Checks for NI_MAXSERV
1192 AC_DEFUN(AC_NI_MAXSERV, [
1193 AC_MSG_CHECKING(for NI_MAXSERV)
1195 AC_EGREP_CPP(yes, [#include <netdb.h>
1202 if test $$1 != yes; then
1203 AC_DEFINE(NEED_ADDRINFO_H)
1208 dnl Checks for NI_NAMEREQD
1209 AC_DEFUN(AC_NI_NAMEREQD, [
1210 AC_MSG_CHECKING(for NI_NAMEREQD)
1212 AC_EGREP_CPP(yes, [#include <netdb.h>
1219 if test $$1 != yes; then
1220 AC_DEFINE(NEED_ADDRINFO_H)
1225 dnl Checks for sockaddr_storage structure
1226 AC_DEFUN(AC_STRUCT_SA_STORAGE, [
1227 AC_MSG_CHECKING(for sockaddr_storage)
1230 # include <sys/types.h>
1231 # include <sys/socket.h>],
1232 [struct sockaddr_storage s],
1236 if test $$1 = yes; then
1237 AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1,
1238 [define if you have struct sockaddr_storage])
1243 dnl check for h_errno
1244 AC_DEFUN(AC_VAR_H_ERRNO, [
1245 AC_MSG_CHECKING(for h_errno)
1246 AC_CACHE_VAL(ac_cv_var_h_errno,
1248 # include <sys/types.h>
1249 # include <netdb.h>],
1250 [int foo = h_errno;],
1251 ac_cv_var_h_errno=yes,
1252 ac_cv_var_h_errno=no))
1253 AC_MSG_RESULT($ac_cv_var_h_errno)
1254 if test "$ac_cv_var_h_errno" = "yes"; then
1255 AC_DEFINE(HAVE_H_ERRNO, 1,
1256 [define if you have the h_errno variable])
1261 dnl Test for __attribute__
1264 AC_DEFUN(AC_C___ATTRIBUTE__, [
1265 AC_MSG_CHECKING(for __attribute__)
1266 AC_CACHE_VAL(ac_cv___attribute__, [
1271 static void foo(void) __attribute__ ((noreturn));
1280 main(int argc, char **argv)
1285 ac_cv___attribute__=yes,
1286 ac_cv___attribute__=no)])
1287 if test "$ac_cv___attribute__" = "yes"; then
1288 AC_DEFINE(HAVE___ATTRIBUTE__, 1, [define if your compiler has __attribute__])
1291 # We can't use __attribute__, so we can't use __attribute__((unused)),
1292 # so we define _U_ to an empty string.
1294 V_DEFS="$V_DEFS -D_U_=\"\""
1296 AC_MSG_RESULT($ac_cv___attribute__)
1301 dnl Test whether __attribute__((unused)) can be used without warnings
1304 AC_DEFUN(AC_C___ATTRIBUTE___UNUSED, [
1305 AC_MSG_CHECKING([whether __attribute__((unused)) can be used without warnings])
1306 AC_CACHE_VAL(ac_cv___attribute___unused, [
1307 save_CFLAGS="$CFLAGS"
1308 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
1315 main(int argc __attribute((unused)), char **argv __attribute((unused)))
1317 printf("Hello, world!\n");
1321 ac_cv___attribute___unused=yes,
1322 ac_cv___attribute___unused=no)])
1323 CFLAGS="$save_CFLAGS"
1324 if test "$ac_cv___attribute___unused" = "yes"; then
1325 V_DEFS="$V_DEFS -D_U_=\"__attribute__((unused))\""
1327 V_DEFS="$V_DEFS -D_U_=\"\""
1329 AC_MSG_RESULT($ac_cv___attribute___unused)
1333 dnl Test whether __attribute__((format)) can be used without warnings
1336 AC_DEFUN(AC_C___ATTRIBUTE___FORMAT, [
1337 AC_MSG_CHECKING([whether __attribute__((format)) can be used without warnings])
1338 AC_CACHE_VAL(ac_cv___attribute___format, [
1339 save_CFLAGS="$CFLAGS"
1340 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
1345 extern int foo(const char *fmt, ...)
1346 __attribute__ ((format (printf, 1, 2)));
1349 main(int argc, char **argv)
1354 ac_cv___attribute___format=yes,
1355 ac_cv___attribute___format=no)])
1356 CFLAGS="$save_CFLAGS"
1357 if test "$ac_cv___attribute___format" = "yes"; then
1358 AC_DEFINE(__ATTRIBUTE___FORMAT_OK, 1,
1359 [define if your compiler allows __attribute__((format)) without a warning])
1361 AC_MSG_RESULT($ac_cv___attribute___format)
1365 dnl Test whether __attribute__((format)) can be applied to function
1369 AC_DEFUN(AC_C___ATTRIBUTE___FORMAT_FUNCTION_POINTER, [
1370 AC_MSG_CHECKING([whether __attribute__((format)) can be applied to function pointers])
1371 AC_CACHE_VAL(ac_cv___attribute___format_function_pointer, [
1376 extern int (*foo)(const char *fmt, ...)
1377 __attribute__ ((format (printf, 1, 2)));
1380 main(int argc, char **argv)
1382 (*foo)("%s", "test");
1385 ac_cv___attribute___format_function_pointer=yes,
1386 ac_cv___attribute___format_function_pointer=no)])
1387 if test "$ac_cv___attribute___format_function_pointer" = "yes"; then
1388 AC_DEFINE(__ATTRIBUTE___FORMAT_OK_FOR_FUNCTION_POINTERS, 1,
1389 [define if your compiler allows __attribute__((format)) to be applied to function pointers])
1391 AC_MSG_RESULT($ac_cv___attribute___format_function_pointer)
1394 AC_DEFUN(AC_C___ATTRIBUTE___NORETURN_FUNCTION_POINTER, [
1395 AC_MSG_CHECKING([whether __attribute__((noreturn)) can be applied to function pointers without warnings])
1396 AC_CACHE_VAL(ac_cv___attribute___noreturn_function_pointer, [
1397 save_CFLAGS="$CFLAGS"
1398 CFLAGS="$CFLAGS $ac_lbl_cc_force_warning_errors"
1403 extern int (*foo)(int i)
1404 __attribute__ ((noreturn));
1407 main(int argc, char **argv)
1412 ac_cv___attribute___noreturn_function_pointer=yes,
1413 ac_cv___attribute___noreturn_function_pointer=no)])
1414 CFLAGS="$save_CFLAGS"
1415 if test "$ac_cv___attribute___noreturn_function_pointer" = "yes"; then
1416 AC_DEFINE(__ATTRIBUTE___NORETURN_OK_FOR_FUNCTION_POINTERS, 1,
1417 [define if your compiler allows __attribute__((noreturn)) to be applied to function pointers])
1419 AC_MSG_RESULT($ac_cv___attribute___noreturn_function_pointer)
1422 AC_DEFUN(AC_LBL_SSLEAY,
1425 # Find the last component of $libdir; it's not necessarily
1426 # "lib" - it might be "lib64" on, for example, x86-64
1429 # We assume the directory in which we're looking for
1430 # libcrypto has a subdirectory with that as its name.
1432 tmplib=`echo "$libdir" | sed 's,.*/,,'`
1435 # XXX - is there a better way to check if a given library is
1436 # in a given directory than checking each of the possible
1437 # shared library suffixes?
1439 # Are there any other suffixes we need to look for? Do we
1440 # have to worry about ".so.{version}"?
1442 # Or should we just look for "libcrypto.*"?
1444 if test -d "$1/$tmplib" -a \( -f "$1/$tmplib/libcrypto.a" -o \
1445 -f "$1/$tmplib/libcrypto.so" -o \
1446 -f "$1/$tmplib/libcrypto.sl" -o \
1447 -f "$1/$tmplib/libcrypto.dylib" \); then
1448 ac_cv_ssleay_path="$1"
1452 # Make sure we have the headers as well.
1454 if test -d "$1/include/openssl" -a -f "$1/include/openssl/des.h"; then
1455 incdir="-I$1/include"