File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / arping / configure.ac
Revision 1.1.1.4 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Mar 16 23:40:57 2021 UTC (3 years, 2 months ago) by misho
Branches: arping, MAIN
CVS tags: v2_21, HEAD
arping 2.21

    1: #                                               -*- Autoconf -*-
    2: # Process this file with autoconf to produce a configure script.
    3: 
    4: AC_PREREQ(2.61)
    5: AC_INIT(arping, 2.21, thomas@habets.se)
    6: AC_CANONICAL_SYSTEM
    7: AC_CONFIG_SRCDIR([src/arping.c])
    8: AM_INIT_AUTOMAKE
    9: AM_MAINTAINER_MODE
   10: AC_CONFIG_HEADER(config.h)
   11: 
   12: 
   13: # Checks for programs.
   14: AC_PROG_CC
   15: AC_PROG_INSTALL
   16: AC_PROG_MAKE_SET
   17: 
   18: # Required to define __USE_MISC, which in turn typedefs uint, which
   19: # is used by libnet headers.
   20: # This "just works" until running GCC with -std=c99, where uint is
   21: # no longer defined by default.
   22: CPPFLAGS="$CPPFLAGS -D_DEFAULT_SOURCE=1"
   23: 
   24: # Checks for libraries.
   25: AC_CHECK_LIB([m], [sqrt])
   26: AC_CHECK_LIB([socket], [socket])
   27: AC_CHECK_LIB([nsl], [gethostbyname])
   28: AC_CHECK_LIB([cap], [cap_init])
   29: AC_CHECK_LIB([rt], [clock_gettime])
   30: AC_CHECK_LIB([net], [libnet_name_resolve],
   31:       [AC_MSG_ERROR([libnet 1.0.x found. Arping 2.x requires libnet 1.1 or newer])])
   32: AC_CHECK_LIB([net], [libnet_init], ,[AC_MSG_ERROR([libnet 1.1.x not found])])
   33: AC_CHECK_LIB([pcap], [pcap_open_live], ,[AC_MSG_ERROR([libpcap not found])])
   34: AC_SEARCH_LIBS([clock_gettime], [rt])
   35: 
   36: # Checks for header files.
   37: AC_HEADER_STDC
   38: AC_CHECK_HEADERS([\
   39: arpa/inet.h \
   40: netinet/in.h \
   41: stdlib.h \
   42: sys/socket.h \
   43: getopt.h \
   44: time.h \
   45: grp.h \
   46: sys/time.h \
   47: sys/types.h \
   48: sys/param.h \
   49: sys/capability.h \
   50: stdint.h \
   51: libnet.h \
   52: win32/libnet.h \
   53: sys/random.h \
   54: net/bpf.h \
   55: pwd.h \
   56: unistd.h])
   57: 
   58: # Libnet include file is not optional
   59: if test ! x$ac_cv_header_libnet_h = xyes; then
   60:   AC_MSG_ERROR([Can't find libnet.h. See INSTALL file for where to get Libnet])
   61: fi
   62: 
   63: # Checks for typedefs, structures, and compiler characteristics.
   64: AC_C_CONST
   65: AC_HEADER_TIME
   66: AC_C_VOLATILE
   67: AC_TYPE_UINT8_T
   68: AC_TYPE_UINT16_T
   69: AC_TYPE_UINT32_T
   70: AC_TYPE_UINT64_T
   71: 
   72: # Checks for library functions.
   73: AC_PROG_GCC_TRADITIONAL
   74: AC_FUNC_SELECT_ARGTYPES
   75: AC_FUNC_SETVBUF_REVERSED
   76: AC_TYPE_SIGNAL
   77: AC_CHECK_FUNCS([gettimeofday memset select strchr strdup strerror strstr \
   78: getifaddrs cap_init pcap_create pcap_list_tstamp_types pcap_set_immediate_mode \
   79: pledge unveil pcap_findalldevs getrandom])
   80: 
   81: if test x$ac_cv_func_getifaddrs = xyes; then
   82:     AC_LIBOBJ([findif_getifaddrs])
   83: else
   84:     case "$target_os" in
   85:         *linux*)
   86:             AC_LIBOBJ([findif_linux])
   87:             ;;
   88:         *freebsd*|*openbsd*|*darwin*)
   89:             AC_LIBOBJ([findif_sysctl])
   90:             ;;
   91:         *solaris*)
   92:             AC_LIBOBJ([findif_bsdroute])
   93:             ;;
   94:         *)
   95:             AC_LIBOBJ([findif_other])
   96:             ;;
   97:     esac
   98: fi
   99: 
  100: AC_CACHE_CHECK([for libnet_init signature has const],
  101: 		    ac_cv_have_libnet_init_const, [
  102: 		    AC_TRY_LINK([#include<libnet.h>],
  103: [libnet_t*libnet_init(int a,const char* b,char* c);],
  104:   [ ac_cv_have_libnet_init_const="yes" ],
  105:   [ ac_cv_have_libnet_init_const="no" ])
  106: ])
  107: if test x$ac_cv_have_libnet_init_const = xyes; then
  108:    AC_DEFINE([HAVE_LIBNET_INIT_CONST], [1], [Libnet init takes const char device])
  109: fi
  110: 
  111: AC_CACHE_CHECK([for libnet_name2addr4 signature has const],
  112: 		    ac_cv_have_libnet_name2addr4_const, [
  113: 		    AC_TRY_LINK([#include<libnet.h>],
  114: [uint32_t libnet_name2addr4(libnet_t*a, const char* b,uint8_t c);],
  115:   [ ac_cv_have_libnet_name2addr4_const="yes" ],
  116:   [ ac_cv_have_libnet_name2addr4_const="no" ])
  117: ])
  118: if test x$ac_cv_have_libnet_name2addr4_const = xyes; then
  119:    AC_DEFINE([HAVE_LIBNET_NAME2ADDR4_CONST], [1], [Libnet name2addr4 takes const char* addr])
  120: fi
  121: 
  122: 
  123: # check for CLOCK_MONOTONIC
  124: AC_CHECK_DECL([CLOCK_MONOTONIC], [], [],
  125:               [
  126:                 #include <time.h>
  127:                 #include <sys/time.h>
  128:               ]
  129: )
  130: AM_CONDITIONAL(HAVE_CLOCK_MONOTONIC, test x$ac_cv_have_decl_CLOCK_MONOTONIC = xyes)
  131: if test x$ac_cv_have_decl_CLOCK_MONOTONIC = xyes; then
  132:    AC_DEFINE([HAVE_CLOCK_MONOTONIC], [1], [Monotonic clock])
  133: fi
  134: 
  135: AC_ARG_ENABLE(hardened, AS_HELP_STRING([--enable-hardened], [Enable security build options]),
  136:                         [
  137:                           CFLAGS+=" -pie -fPIE -fstack-protector-all --param ssp-buffer-size=1 -D_FORTIFY_SOURCE=2"
  138:                           LDFLAGS+=" -pie -fPIE -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack"
  139:                         ])
  140: AC_ARG_ENABLE(warnings, AS_HELP_STRING([--enable-warnings], [Enable build warnings]),
  141:                         [
  142:                           CFLAGS+=" -Wall -Wpedantic -Wextra -Wformat -Wstack-protector -Wformat-security -Werror=format-security"
  143:                         ])
  144: 
  145: AC_CONFIG_FILES([Makefile])
  146: AC_CONFIG_FILES([src/Makefile])
  147: AC_CONFIG_FILES([doc/Makefile])
  148: AC_OUTPUT
  149: 
  150: echo "
  151:   $PACKAGE_NAME version $PACKAGE_VERSION
  152:   Prefix.........: $prefix
  153:   Debug Build....: $debug
  154:   C Compiler.....: $CC $CFLAGS $CPPFLAGS
  155:   Linker.........: $LD $LDFLAGS $LIBS
  156: "

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>