1 dnl Copyright (c) 1994, 1995, 1996, 1997
2 dnl The Regents of the University of California. All rights reserved.
4 dnl Process this file with autoconf to produce a configure script.
10 # https://ftp.gnu.org/gnu/config/README
12 # for the URLs to use to fetch new versions of config.guess and
17 AC_INIT(tcpdump, m4_esyscmd_s([cat VERSION]))
18 AC_CONFIG_SRCDIR(tcpdump.c)
22 AC_LBL_C_INIT_BEFORE_CC(V_INCLS)
24 # Try to enable as many C99 features as we can.
25 # At minimum, we want C++/C99-style // comments.
28 if test "$ac_cv_prog_cc_c99" = "no"; then
29 AC_MSG_WARN([The C compiler does not support C99; there may be compiler errors])
31 AC_LBL_C_INIT(V_CCOPT, V_INCLS)
34 AC_CHECK_HEADERS(fcntl.h rpc/rpc.h rpc/rpcent.h net/if.h)
35 AC_CHECK_HEADERS(net/pfvar.h, , , [#include <sys/types.h>
36 #include <sys/socket.h>
38 if test "$ac_cv_header_net_pfvar_h" = yes; then
39 AC_CHECK_HEADERS(net/if_pflog.h, , , [#include <sys/types.h>
40 #include <sys/socket.h>
42 #include <net/pfvar.h>])
43 if test "$ac_cv_header_net_if_pflog_h" = yes; then
44 LOCALSRC="print-pflog.c $LOCALSRC"
51 AC_ARG_ENABLE(universal,
52 AS_HELP_STRING([--disable-universal],[don't build universal on macOS]))
53 if test "$enable_universal" != "no"; then
58 # Leopard. Build for x86 and 32-bit PowerPC, with
59 # x86 first. (That's what Apple does.)
61 V_CCOPT="$V_CCOPT -arch i386 -arch ppc"
62 LDFLAGS="$LDFLAGS -arch i386 -arch ppc"
67 # Snow Leopard. Build for x86-64 and x86, with
68 # x86-64 first. (That's what Apple does.)
70 V_CCOPT="$V_CCOPT -arch x86_64 -arch i386"
71 LDFLAGS="$LDFLAGS -arch x86_64 -arch i386"
80 [AS_HELP_STRING([--with-smi],
81 [link with libsmi (allows to load MIBs on the fly to decode SNMP packets) [default=yes, if available]])],
85 if test "x$with_smi" != "xno" ; then
86 AC_CHECK_HEADER(smi.h,
89 # OK, we found smi.h. Do we have libsmi with smiInit?
91 AC_CHECK_LIB(smi, smiInit,
94 # OK, we have libsmi with smiInit. Can we use it?
96 AC_MSG_CHECKING([whether to enable libsmi])
101 /* libsmi available check */
105 int current, revision, age, n;
106 const int required = 2;
109 if (strcmp(SMI_LIBRARY_VERSION, smi_library_version))
111 n = sscanf(smi_library_version, "%d:%d:%d", ¤t, &revision, &age);
114 if (required < current - age || required > current)
121 AC_DEFINE(USE_LIBSMI, 1,
122 [Define if you enable support for libsmi])
125 dnl autoconf documentation says that
126 dnl $? contains the exit value.
127 dnl reality is that it does not.
128 dnl We leave this in just in case
129 dnl autoconf ever comes back to
130 dnl match the documentation.
132 1) AC_MSG_RESULT(no - smiInit failed) ;;
133 2) AC_MSG_RESULT(no - header/library version mismatch) ;;
134 3) AC_MSG_RESULT(no - can't determine library version) ;;
135 4) AC_MSG_RESULT(no - too old) ;;
136 *) AC_MSG_RESULT(no) ;;
141 AC_MSG_RESULT(not when cross-compiling)
149 AC_MSG_CHECKING([whether to enable the possibly-buggy SMB printer])
151 [AS_HELP_STRING([--enable-smb],
152 [enable possibly-buggy SMB printer [default=no]])],
156 yes) AC_MSG_RESULT(yes)
157 AC_DEFINE(ENABLE_SMB, 1,
158 [define if you want to build the possibly-buggy SMB printer])
159 LOCALSRC="print-smb.c smbutil.c $LOCALSRC"
165 AC_ARG_WITH(user, [ --with-user=USERNAME drop privileges by default to USERNAME])
166 AC_MSG_CHECKING([whether to drop root privileges by default])
167 if test ! -z "$with_user" ; then
168 AC_DEFINE_UNQUOTED(WITH_USER, "$withval",
169 [define if should drop privileges by default])
170 AC_MSG_RESULT(to \"$withval\")
175 AC_ARG_WITH(chroot, [ --with-chroot=DIRECTORY when dropping privileges, chroot to DIRECTORY])
176 AC_MSG_CHECKING([whether to chroot])
177 if test ! -z "$with_chroot" && test "$with_chroot" != "no" ; then
178 AC_DEFINE_UNQUOTED(WITH_CHROOT, "$withval",
179 [define if should chroot when dropping privileges])
180 AC_MSG_RESULT(to \"$withval\")
185 AC_ARG_WITH(sandbox-capsicum,
186 AS_HELP_STRING([--with-sandbox-capsicum],
187 [use Capsicum security functions @<:@default=yes, if available@:>@]))
189 # Check whether various functions are available. If any are, set
190 # ac_lbl_capsicum_function_seen to yes; if any are not, set
191 # ac_lbl_capsicum_function_not_seen to yes.
193 # We don't check cap_rights_init(), as it's a macro, wrapping another
194 # function, in at least some versions of FreeBSD, and AC_CHECK_FUNCS()
195 # doesn't handle that.
197 # All of the ones we check for must be available in order to enable
198 # capsicum sandboxing.
200 # XXX - do we need to check for all of them, or are there some that, if
201 # present, imply others are present?
203 if test -z "$with_sandbox_capsicum" || test "$with_sandbox_capsicum" != "no" ; then
205 # First, make sure we have the required header.
207 AC_CHECK_HEADER(sys/capsicum.h,
210 # We do; now make sure we have the required functions.
212 AC_CHECK_FUNCS(cap_enter cap_rights_limit cap_ioctls_limit openat,
213 ac_lbl_capsicum_function_seen=yes,
214 ac_lbl_capsicum_function_not_seen=yes)
216 AC_CHECK_LIB(casper, cap_init, LIBS="$LIBS -lcasper")
217 AC_CHECK_LIB(cap_dns, cap_gethostbyaddr, LIBS="$LIBS -lcap_dns")
219 AC_MSG_CHECKING([whether to sandbox using capsicum])
220 if test "x$ac_lbl_capsicum_function_seen" = "xyes" -a "x$ac_lbl_capsicum_function_not_seen" != "xyes"; then
221 AC_DEFINE(HAVE_CAPSICUM, 1, [capsicum support available])
226 AC_MSG_CHECKING([whether to sandbox using Casper library])
227 if test "x$ac_cv_lib_casper_cap_init" = "xyes" -a "x$ac_cv_lib_cap_dns_cap_gethostbyaddr" = "xyes"; then
228 AC_DEFINE(HAVE_CASPER, 1, [Casper support available])
235 # We must check this before checking whether to check the OS's IPv6,
236 # support because, on some platforms (such as SunOS 5.x), the test
237 # program requires the extra networking libraries.
242 # Check whether AF_INET6 and struct in6_addr are defined.
243 # If they aren't both defined, we don't have sufficient OS
244 # support for IPv6, so we don't look for IPv6 support libraries,
245 # and we define AF_INET6 and struct in6_addr ourselves.
247 AC_MSG_CHECKING([whether the operating system supports IPv6])
252 /* AF_INET6 available check */
253 #include <sys/types.h>
255 #include <ws2tcpip.h>
257 #include <sys/socket.h>
258 #include <netinet/in.h>
262 foo(struct in6_addr *addr)
264 memset(addr, 0, sizeof (struct in6_addr));
267 #error "AF_INET6 not defined"
273 AC_DEFINE(HAVE_OS_IPV6_SUPPORT, 1,
274 [define if the OS provides AF_INET6 and struct in6_addr])
287 if test "$ipv6" = "yes"; then
288 AC_MSG_CHECKING([ipv6 stack type])
289 for i in inria kame linux-glibc linux-libinet6 toshiba v6d zeta; do
292 dnl http://www.kame.net/
294 [#include <netinet/in.h>
295 #ifdef IPV6_INRIA_VERSION
301 dnl http://www.kame.net/
303 [#include <netinet/in.h>
309 ipv6libdir=/usr/local/v6/lib;
313 dnl http://www.v6.linux.or.jp/
315 [#include <features.h>
316 #if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
322 dnl http://www.v6.linux.or.jp/
324 dnl This also matches Solaris 8 and Tru64 UNIX 5.1,
325 dnl and possibly other versions of those OSes
327 if test -d /usr/inet6 -o -f /usr/include/netinet/ip6.h; then
330 ipv6libdir=/usr/inet6/lib
332 CFLAGS="-I/usr/inet6/include $CFLAGS"
337 [#include <sys/param.h>
338 #ifdef _TOSHIBA_INET6
343 ipv6libdir=/usr/local/v6/lib])
347 [#include </usr/local/v6/include/sys/v6config.h>
353 ipv6libdir=/usr/local/v6/lib;
354 CFLAGS="-I/usr/local/v6/include $CFLAGS"])
358 [#include <sys/param.h>
359 #ifdef _ZETA_MINAMI_INET6
364 ipv6libdir=/usr/local/v6/lib])
367 if test "$ipv6type" != "unknown"; then
371 AC_MSG_RESULT($ipv6type)
374 if test "$ipv6" = "yes" -a "$ipv6lib" != "none"; then
375 if test -d $ipv6libdir -a -f $ipv6libdir/lib$ipv6lib.a; then
376 LIBS="-L$ipv6libdir -l$ipv6lib $LIBS"
377 echo "You have $ipv6lib library, using it"
379 if test "$ipv6trylibc" = "yes"; then
380 echo "You do not have $ipv6lib library, using libc"
382 echo 'Fatal: no $ipv6lib library found. cannot continue.'
383 echo "You need to fetch lib$ipv6lib.a from appropriate"
384 echo 'ipv6 kit and compile beforehand.'
390 AC_REPLACE_FUNCS(strlcat strlcpy strdup strsep getservent getopt_long)
391 AC_CHECK_FUNCS(fork vfork strftime)
392 AC_CHECK_FUNCS(setlinebuf)
395 # Make sure we have vsnprintf() and snprintf(); we require them.
397 AC_CHECK_FUNC(vsnprintf,,
398 AC_MSG_ERROR([vsnprintf() is required but wasn't found]))
399 AC_CHECK_FUNC(snprintf,,
400 AC_MSG_ERROR([snprintf() is required but wasn't found]))
403 # Define HAVE_NO_PRINTF_Z to make it possible to disable test cases that
406 AC_MSG_CHECKING([whether printf(3) supports the z length modifier])
416 snprintf(buf, sizeof(buf), "%zu", sizeof(buf));
417 return strncmp(buf, "100", sizeof(buf)) ? 1 : 0;
426 AC_DEFINE(HAVE_NO_PRINTF_Z, 1,
427 [Define to 1 if printf(3) does not support the z length modifier.])
430 AC_MSG_RESULT(not while cross-compiling)
434 AC_CHECK_LIB(rpc, main) dnl It's unclear why we might need -lrpc
436 dnl Some platforms may need -lnsl for getrpcbynumber.
437 AC_SEARCH_LIBS(getrpcbynumber, nsl,
438 AC_DEFINE(HAVE_GETRPCBYNUMBER, 1, [define if you have getrpcbynumber()]))
440 AC_LBL_LIBPCAP(V_PCAPDEP, V_INCLS)
443 # Check for these after AC_LBL_LIBPCAP, so we link with the appropriate
444 # libraries (e.g., "-lsocket -lnsl" on Solaris).
446 # You are in a twisty little maze of UN*Xes, all different.
447 # Some might not have ether_ntohost().
448 # Some might have it and declare it in <net/ethernet.h>.
449 # Some might have it and declare it in <netinet/ether.h>
450 # Some might have it and declare it in <sys/ethernet.h>.
451 # Some might have it and declare it in <arpa/inet.h>.
452 # Some might have it and declare it in <netinet/if_ether.h>.
453 # Some might have it and not declare it in any header file.
455 # Before you is a C compiler.
457 AC_CHECK_FUNCS(ether_ntohost, [
458 AC_CACHE_CHECK(for buggy ether_ntohost, ac_cv_buggy_ether_ntohost, [
461 #include <sys/types.h>
462 #include <sys/param.h>
463 #include <sys/socket.h>
466 main(int argc, char **argv)
468 u_char ea[6] = { 0xff, 0xff, 0xff, 0xff, 0xff };
469 char name[MAXHOSTNAMELEN];
471 ether_ntohost(name, (struct ether_addr *)ea);
474 ], [ac_cv_buggy_ether_ntohost=no],
475 [ac_cv_buggy_ether_ntohost=yes],
476 [ac_cv_buggy_ether_ntohost="not while cross-compiling"])])
477 if test "$ac_cv_buggy_ether_ntohost" = "no"; then
478 AC_DEFINE(USE_ETHER_NTOHOST, 1,
479 [define if you have ether_ntohost() and it works])
482 if test "$ac_cv_func_ether_ntohost" = yes -a \
483 "$ac_cv_buggy_ether_ntohost" = "no"; then
485 # OK, we have ether_ntohost(). Is it declared in <net/ethernet.h>?
487 # This test fails if we don't have <net/ethernet.h> or if we do
488 # but it doesn't declare ether_ntohost().
490 AC_CHECK_DECL(ether_ntohost,
492 AC_DEFINE(NET_ETHERNET_H_DECLARES_ETHER_NTOHOST,,
493 [Define to 1 if net/ethernet.h declares `ether_ntohost'])
496 #include <net/ethernet.h>
501 if test "$ac_cv_have_decl_ether_ntohost" != yes; then
503 # No, how about <netinet/ether.h>, as on Linux?
505 # This test fails if we don't have <netinet/ether.h>
506 # or if we do but it doesn't declare ether_ntohost().
508 # Unset ac_cv_have_decl_ether_ntohost so we don't
509 # treat the previous failure as a cached value and
510 # suppress the next test.
512 unset ac_cv_have_decl_ether_ntohost
513 AC_CHECK_DECL(ether_ntohost,
515 AC_DEFINE(NETINET_ETHER_H_DECLARES_ETHER_NTOHOST,,
516 [Define to 1 if netinet/ether.h declares `ether_ntohost'])
519 #include <netinet/ether.h>
525 if test "$ac_cv_have_decl_ether_ntohost" != yes; then
527 # No, how about <sys/ethernet.h>, as on Solaris 10
530 # This test fails if we don't have <sys/ethernet.h>
531 # or if we do but it doesn't declare ether_ntohost().
533 # Unset ac_cv_have_decl_ether_ntohost so we don't
534 # treat the previous failure as a cached value and
535 # suppress the next test.
537 unset ac_cv_have_decl_ether_ntohost
538 AC_CHECK_DECL(ether_ntohost,
540 AC_DEFINE(SYS_ETHERNET_H_DECLARES_ETHER_NTOHOST,,
541 [Define to 1 if sys/ethernet.h declares `ether_ntohost'])
544 #include <sys/ethernet.h>
550 if test "$ac_cv_have_decl_ether_ntohost" != yes; then
552 # No, how about <arpa/inet.h>, as in AIX?
554 # This test fails if we don't have <arpa/inet.h>
555 # (if we have ether_ntohost(), we should have
556 # networking, and if we have networking, we should
557 # have <arpa/inet.h>) or if we do but it doesn't
558 # declare ether_ntohost().
560 # Unset ac_cv_have_decl_ether_ntohost so we don't
561 # treat the previous failure as a cached value and
562 # suppress the next test.
564 unset ac_cv_have_decl_ether_ntohost
565 AC_CHECK_DECL(ether_ntohost,
567 AC_DEFINE(ARPA_INET_H_DECLARES_ETHER_NTOHOST,,
568 [Define to 1 if arpa/inet.h declares `ether_ntohost'])
571 #include <arpa/inet.h>
577 if test "$ac_cv_have_decl_ether_ntohost" != yes; then
579 # No, how about <netinet/if_ether.h>?
580 # On some platforms, it requires <net/if.h> and
581 # <netinet/in.h>, and we always include it with
582 # both of them, so test it with both of them.
584 # This test fails if we don't have <netinet/if_ether.h>
585 # and the headers we include before it, or if we do but
586 # <netinet/if_ether.h> doesn't declare ether_hostton().
588 # Unset ac_cv_have_decl_ether_ntohost so we don't
589 # treat the previous failure as a cached value and
590 # suppress the next test.
592 unset ac_cv_have_decl_ether_ntohost
593 AC_CHECK_DECL(ether_ntohost,
595 AC_DEFINE(NETINET_IF_ETHER_H_DECLARES_ETHER_NTOHOST,,
596 [Define to 1 if netinet/if_ether.h declares `ether_ntohost'])
599 #include <sys/types.h>
600 #include <sys/socket.h>
602 #include <netinet/in.h>
603 #include <netinet/if_ether.h>
607 # After all that, is ether_ntohost() declared?
609 if test "$ac_cv_have_decl_ether_ntohost" = yes; then
613 AC_DEFINE(HAVE_DECL_ETHER_NTOHOST, 1,
614 [Define to 1 if you have the declaration of `ether_ntohost'])
617 # No, we'll have to declare it ourselves.
618 # Do we have "struct ether_addr" if we include
619 # <netinet/if_ether.h>?
621 AC_CHECK_TYPES(struct ether_addr,,,
623 #include <sys/types.h>
624 #include <sys/socket.h>
626 #include <netinet/in.h>
627 #include <netinet/if_ether.h>
633 dnl Check for "pcap_list_datalinks()" and use a substitute version if
634 dnl it's not present. If it is present, check for "pcap_free_datalinks()";
635 dnl if it's not present, we don't replace it for now. (We could do so
636 dnl on UN*X, but not on Windows, where hilarity ensues if a program
637 dnl built with one version of the MSVC support library tries to free
638 dnl something allocated by a library built with another version of
639 dnl the MSVC support library.)
641 AC_CHECK_FUNC(pcap_list_datalinks,
643 AC_DEFINE(HAVE_PCAP_LIST_DATALINKS, 1,
644 [define if libpcap has pcap_list_datalinks()])
645 AC_CHECK_FUNCS(pcap_free_datalinks)
652 dnl Check for "pcap_datalink_name_to_val()", and use a substitute
653 dnl version if it's not present. If it is present, check for
654 dnl "pcap_datalink_val_to_description()", and if we don't have it,
655 dnl use a substitute version.
657 AC_CHECK_FUNC(pcap_datalink_name_to_val,
659 AC_DEFINE(HAVE_PCAP_DATALINK_NAME_TO_VAL, 1,
660 [define if libpcap has pcap_datalink_name_to_val()])
661 AC_CHECK_FUNC(pcap_datalink_val_to_description,
662 AC_DEFINE(HAVE_PCAP_DATALINK_VAL_TO_DESCRIPTION, 1,
663 [define if libpcap has pcap_datalink_val_to_description()]),
673 dnl Check for "pcap_set_datalink()"; you can't substitute for it if
674 dnl it's absent (it has hooks into libpcap), so just define the
675 dnl HAVE_ value if it's there.
677 AC_CHECK_FUNCS(pcap_set_datalink)
680 dnl Check for "pcap_breakloop()"; you can't substitute for it if
681 dnl it's absent (it has hooks into the live capture routines),
682 dnl so just define the HAVE_ value if it's there.
684 AC_CHECK_FUNCS(pcap_breakloop)
687 # Do we have the new open API? Check for pcap_create, and assume that,
688 # if we do, we also have pcap_activate() and the other new routines
689 # introduced in libpcap 1.0.0.
691 AC_CHECK_FUNCS(pcap_create)
692 if test $ac_cv_func_pcap_create = "yes" ; then
694 # OK, do we have pcap_set_tstamp_type? If so, assume we have
695 # pcap_list_tstamp_types and pcap_free_tstamp_types as well.
697 AC_CHECK_FUNCS(pcap_set_tstamp_type)
699 # And do we have pcap_set_tstamp_precision? If so, we assume
700 # we also have pcap_open_offline_with_tstamp_precision.
702 AC_CHECK_FUNCS(pcap_set_tstamp_precision)
706 # Check for a miscellaneous collection of functions which we use
709 AC_CHECK_FUNCS(pcap_findalldevs)
710 if test $ac_cv_func_pcap_findalldevs = "yes" ; then
711 dnl Check for libpcap having pcap_findalldevs() but the pcap.h header
712 dnl not having pcap_if_t; some versions of Mac OS X shipped with pcap.h
713 dnl from 0.6 and libpcap 0.8, so that libpcap had pcap_findalldevs but
714 dnl pcap.h didn't have pcap_if_t.
715 savedcppflags="$CPPFLAGS"
716 CPPFLAGS="$CPPFLAGS $V_INCLS"
717 AC_CHECK_TYPES(pcap_if_t, , , [#include <pcap.h>])
718 CPPFLAGS="$savedcppflags"
720 AC_CHECK_FUNCS(pcap_dump_flush pcap_lib_version)
721 if test $ac_cv_func_pcap_lib_version = "no" ; then
722 AC_MSG_CHECKING(whether pcap_version is defined by libpcap)
725 extern char pcap_version[];
727 return (int)pcap_version;
729 ac_lbl_cv_pcap_version_defined=yes,
730 ac_lbl_cv_pcap_version_defined=no)
731 if test "$ac_lbl_cv_pcap_version_defined" = yes ; then
733 AC_DEFINE(HAVE_PCAP_VERSION, 1, [define if libpcap has pcap_version])
738 AC_CHECK_FUNCS(pcap_setdirection pcap_set_immediate_mode pcap_dump_ftell64)
739 AC_CHECK_FUNCS(pcap_open pcap_findalldevs_ex)
740 AC_REPLACE_FUNCS(pcap_dump_ftell)
743 # Check for special debugging functions
745 AC_CHECK_FUNCS(pcap_set_parser_debug)
746 if test "$ac_cv_func_pcap_set_parser_debug" = "no" ; then
748 # OK, we don't have pcap_set_parser_debug() to set the libpcap
749 # filter expression parser debug flag; can we directly set the
751 AC_MSG_CHECKING(whether pcap_debug is defined by libpcap)
754 extern int pcap_debug;
758 ac_lbl_cv_pcap_debug_defined=yes,
759 ac_lbl_cv_pcap_debug_defined=no)
760 if test "$ac_lbl_cv_pcap_debug_defined" = yes ; then
762 AC_DEFINE(HAVE_PCAP_DEBUG, 1, [define if libpcap has pcap_debug])
766 # OK, what about "yydebug"?
768 AC_MSG_CHECKING(whether yydebug is defined by libpcap)
775 ac_lbl_cv_yydebug_defined=yes,
776 ac_lbl_cv_yydebug_defined=no)
777 if test "$ac_lbl_cv_yydebug_defined" = yes ; then
779 AC_DEFINE(HAVE_YYDEBUG, 1, [define if libpcap has yydebug])
785 AC_CHECK_FUNCS(pcap_set_optimizer_debug)
786 AC_REPLACE_FUNCS(bpf_dump) dnl moved to libpcap in 0.6
789 if test -f /etc/group -a ! -z "`grep '^wheel:' /etc/group`" ; then
793 # Assume V7/BSD convention for man pages (file formats in section 5,
794 # miscellaneous info in section 7).
801 dnl Workaround to enable certain features
802 AC_DEFINE(_SUN,1,[define on AIX to get certain functions])
807 # Use System V conventions for man pages.
817 # Use System V conventions for man pages.
827 # Use System V conventions for man pages.
837 # Use System V conventions for man pages.
844 if test -f /dev/bpf0 ; then
849 # Make sure we have a definition for C99's uintptr_t (regardless of
850 # whether the environment is a C99 environment or not).
855 # Check whether we have pcap/pcap-inttypes.h.
856 # If we do, we use that to get the C99 types defined.
858 savedcppflags="$CPPFLAGS"
859 CPPFLAGS="$CPPFLAGS $V_INCLS"
860 AC_CHECK_HEADERS(pcap/pcap-inttypes.h)
861 CPPFLAGS="$savedcppflags"
864 # Define the old BSD specified-width types in terms of the C99 types;
865 # we may need them with libpcap include files.
867 AC_CHECK_TYPE([u_int8_t], ,
868 [AC_DEFINE([u_int8_t], [uint8_t],
869 [Define to `uint8_t' if u_int8_t not defined.])],
871 #include <sys/types.h>
873 AC_CHECK_TYPE([u_int16_t], ,
874 [AC_DEFINE([u_int16_t], [uint16_t],
875 [Define to `uint16_t' if u_int16_t not defined.])],
877 #include <sys/types.h>
879 AC_CHECK_TYPE([u_int32_t], ,
880 [AC_DEFINE([u_int32_t], [uint32_t],
881 [Define to `uint32_t' if u_int32_t not defined.])],
883 #include <sys/types.h>
885 AC_CHECK_TYPE([u_int64_t], ,
886 [AC_DEFINE([u_int64_t], [uint64_t],
887 [Define to `uint64_t' if u_int64_t not defined.])],
889 #include <sys/types.h>
893 AC_CHECK_TOOL([AR], [ar])
895 AC_LBL_DEVEL(V_CCOPT)
897 # Check for OpenSSL/libressl libcrypto
898 AC_MSG_CHECKING(whether to use OpenSSL/libressl libcrypto)
899 # Specify location for both includes and libraries.
900 want_libcrypto=ifavailable
902 AS_HELP_STRING([--with-crypto]@<:@=DIR@:>@,
903 [use OpenSSL/libressl libcrypto (located in directory DIR, if specified) @<:@default=yes, if available@:>@]),
905 if test $withval = no
907 # User doesn't want to link with libcrypto.
910 elif test $withval = yes
912 # User wants to link with libcrypto but hasn't specified
917 # User wants to link with libcrypto and has specified
918 # a directory, so use the provided value.
920 libcrypto_root=$withval
921 AC_MSG_RESULT([yes, using the version installed in $withval])
924 # Put the subdirectories of the libcrypto root directory
925 # at the front of the header and library search path.
927 CFLAGS="-I$withval/include $CFLAGS"
928 LIBS="-L$withval/lib $LIBS"
932 # Use libcrypto if it's present, otherwise don't; no directory
935 want_libcrypto=ifavailable
936 AC_MSG_RESULT([yes, if available])
938 if test "$want_libcrypto" != "no"; then
940 # Don't check for libcrypto unless we have its headers;
941 # Apple, bless their pointy little heads, apparently ship
942 # libcrypto as a library, but not the header files, in
943 # El Capitan, probably because they don't want you writing
944 # nasty portable code that could run on other UN*Xes, they
945 # want you writing code that uses their Shiny New Crypto
946 # Library and that only runs on macOS.
948 AC_CHECK_HEADER(openssl/crypto.h,
950 AC_CHECK_LIB(crypto, DES_cbc_encrypt)
951 if test "$ac_cv_lib_crypto_DES_cbc_encrypt" = "yes"; then
952 AC_CHECK_HEADERS(openssl/evp.h)
956 # 1) do we have EVP_CIPHER_CTX_new?
957 # If so, we use it to allocate an
958 # EVP_CIPHER_CTX, as EVP_CIPHER_CTX may be
959 # opaque; otherwise, we allocate it ourselves.
961 # 2) do we have EVP_DecryptInit_ex()?
962 # If so, we use it, because we need to be
963 # able to make two "initialize the cipher"
964 # calls, one with the cipher and key, and
965 # one with the IV, and, as of OpenSSL 1.1,
966 # You Can't Do That with EVP_DecryptInit(),
967 # because a call to EVP_DecryptInit() will
968 # unconditionally clear the context, and
969 # if you don't supply a cipher, it'll
970 # clear the cipher, rendering the context
971 # unusable and causing a crash.
973 AC_CHECK_FUNCS(EVP_CIPHER_CTX_new EVP_DecryptInit_ex)
978 # Check for libcap-ng
979 AC_MSG_CHECKING(whether to use libcap-ng)
980 # Specify location for both includes and libraries.
981 want_libcap_ng=ifavailable
983 AS_HELP_STRING([--with-cap-ng],
984 [use libcap-ng @<:@default=yes, if available@:>@]),
986 if test $withval = no
990 elif test $withval = yes
997 # Use libcap-ng if it's present, otherwise don't.
999 want_libcap_ng=ifavailable
1000 AC_MSG_RESULT([yes, if available])
1002 if test "$want_libcap_ng" != "no"; then
1003 AC_CHECK_LIB(cap-ng, capng_change_id)
1004 AC_CHECK_HEADERS(cap-ng.h)
1008 dnl set additional include path if necessary
1009 if test "$missing_includes" = "yes"; then
1010 CPPFLAGS="$CPPFLAGS -I$srcdir/missing"
1011 V_INCLS="$V_INCLS -I$srcdir/missing"
1020 AC_SUBST(MAN_FILE_FORMATS)
1021 AC_SUBST(MAN_MISC_INFO)
1025 AC_CONFIG_HEADER(config.h)
1027 AC_OUTPUT_COMMANDS([if test -f .devel; then
1028 echo timestamp > stamp-h
1029 cat $srcdir/Makefile-devel-adds >> Makefile
1030 make depend || exit 1
1032 AC_OUTPUT(Makefile tcpdump.1)