File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / libnet / configure.ac
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Wed Sep 27 11:11:37 2023 UTC (8 months, 2 weeks ago) by misho
Branches: libnet, MAIN
CVS tags: v1_2p1, HEAD
Version 1.2p1

    1: #
    2: # Libnet autoconfiguration information file
    3: # Copyright (c) 1998 - 2002 Mike D. Schiffman <mike@infonexus.com>
    4: # Modified by: Ali Abdulkadir <autostart.ini@gmail.com>,
    5: #              Joachim Nilsson <troglobit@gmail.com>
    6: # All rights reserved.
    7: #
    8: # Process this file with autoconf to produce a configure script.
    9: 
   10: AC_INIT([libnet], [1.2], [https://github.com/libnet/libnet/issues],,
   11: 	[https://github.com/libnet/libnet])
   12: 
   13: # Visible in resulting configure script, e.g. with ./configure --version
   14: AC_COPYRIGHT([Copyright (C) 1998 - 2019 The libnet Developer Community.])
   15: AC_REVISION(${VERSION})
   16: 
   17: # the autotools and libtool should be at least these versions
   18: AC_PREREQ([2.69])
   19: LT_PREREQ([2.4.2])
   20: 
   21: AC_PROG_SHELL
   22: AC_PROG_SED
   23: AC_CHECK_PROGS([CHMOD],[chmod],[true])
   24: AC_CANONICAL_TARGET
   25: AC_CONFIG_SRCDIR([src/libnet_build_ip.c])
   26: AC_CONFIG_MACRO_DIR([m4])
   27: AM_INIT_AUTOMAKE([1.14 foreign subdir-objects no-dependencies dist-zip])
   28: AM_SILENT_RULES([yes])
   29: AC_CONFIG_HEADERS([include/config.h])
   30: 
   31: AC_CONFIG_FILES([Makefile \
   32: 		 Doxyfile \
   33: 		 libnet-config \
   34:                  doc/Makefile \
   35:                  doc/man/Makefile \
   36:                  doc/man/man1/Makefile \
   37:                  doc/man/man3/Makefile \
   38:                  include/Makefile \
   39:                  include/libnet.h \
   40: 		 libnet.pc \
   41:                  src/Makefile \
   42:                  sample/Makefile \
   43: 		 win32/Makefile])
   44: AC_CONFIG_FILES([doc/fixmanpages], [chmod a+x doc/fixmanpages])
   45: 
   46: # Check for the usual programs
   47: AC_PROG_CC
   48: AC_PROG_INSTALL
   49: AC_USE_SYSTEM_EXTENSIONS
   50: # The default is to use only PIC objects.
   51: # This can still be overwritten with --without-pic
   52: LT_INIT([pic-only])
   53: 
   54: #
   55: # Check for headers
   56: #
   57: AC_CHECK_HEADERS([sys/sockio.h])
   58: AC_CHECK_FUNCS([gethostbyname2])
   59: AC_CHECK_FUNCS([getifaddrs])
   60: AC_TYPE_UINT16_T
   61: AC_TYPE_UINT32_T
   62: AC_TYPE_UINT64_T
   63: 
   64: AC_MSG_CHECKING(for socklen_t)
   65: AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
   66:         #include <sys/types.h>
   67:         #include <sys/socket.h>
   68:         ]], [[ socklen_t x; ]])],[have_socklen_t=yes],[have_socklen_t=no])
   69: AS_IF([test "x$have_socklen_t" = "xyes"], [
   70:         AC_DEFINE(HAVE_SOCKLEN_T, 1, [define if socklen_t is defined])])
   71: AC_MSG_RESULT($have_socklen_t)
   72: 
   73: #
   74: # And some custom things
   75: #
   76: AC_LIBNET_ENDIAN_CHECK
   77: AC_SUBST(ENDIANESS)
   78: AC_SUBST(HAVE_PACKET_SOCKET)
   79: AC_SUBST(ADDITIONAL_LIBS)
   80: AC_SUBST(PKG_CONFIG_DEFINES)
   81: AC_SUBST(PKG_CONFIG_LIBS)
   82: AC_SUBST(PKG_CONFIG_CFLAGS)
   83: AC_SUBST(LTLIBOBJS)
   84: 
   85: # Get link-layer interface type
   86: AC_ARG_WITH(
   87: 	[link-layer],
   88: 	[AS_HELP_STRING([--with-link-layer],
   89: 	[when cross-compiling, one of * from libnet_link_*.c @<:@autodetect@:>@])])
   90: 
   91: AC_CHECK_HEADERS([net/pfilt.h sys/net/nit.h net/raw.h sys/dlpi.h linux/socket.h])
   92: 
   93: AC_MSG_CHECKING(link-layer packet interface type)
   94: 
   95: AS_IF([test -n "${with_link_layer}"], [
   96:     AS_CASE([${with_link_layer}],
   97:         [bpf],   [AC_LIBOBJ([libnet_link_bpf])],
   98:         [pf],    [AC_LIBOBJ([libnet_link_pf])],
   99:         [snit],  [AC_LIBOBJ([libnet_link_snit])],
  100:         [nit],   [AC_LIBOBJ([libnet_link_nit])],
  101:         [snoop], [AC_LIBOBJ([libnet_link_snoop])],
  102:         [dlpi],  [AC_LIBOBJ([libnet_link_dlpi])],
  103:         [win32], [AC_LIBOBJ([libnet_link_win32])],
  104:         [none],  [AC_LIBOBJ([libnet_link_none])],
  105:         [linux], [AC_LIBOBJ([libnet_link_linux])
  106:                   AC_LIBNET_CHECK_PF_PACKET
  107:                   AC_LIBNET_LINUX_PROCFS],
  108:         [AC_MSG_ERROR([Invalid link type "${with_link_layer}"])])
  109:      AC_MSG_RESULT(user selected link layer ${with_link_layer})],
  110: [test "${cross_compiling}" != "yes" -a -r /dev/bpf0], [
  111:     AC_LIBOBJ([libnet_link_bpf])
  112:     AC_MSG_RESULT(found link layer bpf)],
  113: [test "${ac_cv_header_net_pfilt_h}" = "yes"], [
  114:     AC_LIBOBJ([libnet_link_pf])
  115:     AC_MSG_RESULT(found link layer pf)],
  116: [test "${cross_compiling}" != "yes" -a -r /dev/nit], [
  117:     AC_LIBOBJ([libnet_link_snit])
  118:     AC_MSG_RESULT(found link layer snit)],
  119: [test "${ac_cv_header_sys_net_nit_h}" = "yes"], [
  120:     AC_LIBOBJ([libnet_link_nit])
  121:     AC_MSG_RESULT(found link layer nit)],
  122: [test "${ac_cv_header_net_raw_h}" = "yes"], [
  123:     AC_LIBOBJ([libnet_link_snoop])
  124:     AC_MSG_RESULT(found link layer snoop)],
  125: [test "${ac_cv_header_sys_dlpi_h}" = "yes"], [
  126:     AC_LIBOBJ([libnet_link_dlpi])
  127:     AC_MSG_RESULT(found link layer dlpi)
  128:     AC_DEFINE(HAVE_DLPI, 1, [Define if the <sys/dlpi.h> header exists.])],
  129: [test "${ac_cv_header_linux_socket_h}" = "yes"], [
  130:     AC_LIBOBJ([libnet_link_linux])
  131:     AC_MSG_RESULT(found link layer linux)
  132:     AC_LIBNET_CHECK_PF_PACKET
  133:     AC_LIBNET_LINUX_PROCFS],
  134: [test "${cross_compiling}" != "yes" -a -c /dev/bpf0], [
  135:     # check again in case not readable
  136:     AC_LIBOBJ([libnet_link_bpf])
  137:     AC_MSG_RESULT(found link layer bpf)],
  138: [test "${cross_compiling}" != "yes" -a -c /dev/nit], [
  139:     # check again in case not readable
  140:     AC_LIBOBJ([libnet_link_snit])
  141:     AC_MSG_RESULT(found link layer snit)],
  142: [test "$target_os" = "cygwin"], [
  143:     AC_LIBOBJ([libnet_link_win32])
  144:     AC_MSG_RESULT(found link layer win32 wpcap)],
  145: [test "$host" = "i686-w64-mingw32" -o "x86_64-w64-mingw32" -o "x86_64-pc-mingw64"], [
  146:     AC_LIBOBJ([libnet_link_win32])
  147:     AC_MSG_RESULT(found link layer win32 @<:@WinPcap@:>@)],[
  148:     AC_LIBOBJ([libnet_link_none])
  149:     AC_MSG_WARN(could not find a link-layer packet interface)
  150:     AC_MSG_WARN(link-layer packet injection will not be available)])
  151: 
  152: # Check for Doxygen and enable its features.
  153: # For details, see m4/ax_prog_doxygen.m4 and
  154: # http://www.bioinf.uni-freiburg.de/~mmann/HowTo/automake.html#doxygenSupport
  155: DX_DOXYGEN_FEATURE(ON)
  156: DX_DOT_FEATURE(ON)
  157: DX_CHI_FEATURE(OFF)
  158: DX_RTF_FEATURE(OFF)
  159: DX_XML_FEATURE(OFF)
  160: DX_PDF_FEATURE(OFF)
  161: DX_PS_FEATURE(OFF)
  162: DX_CHM_FEATURE(OFF)
  163: DX_HTML_FEATURE(ON)
  164: DX_MAN_FEATURE(ON)
  165: DX_INIT_DOXYGEN(${PACKAGE_NAME}, [${top_builddir}/Doxyfile], [doc])
  166: AM_CONDITIONAL(ENABLE_DOXYGEN,[test "x${DX_FLAG_doc}" = x1])
  167: AM_CONDITIONAL(ENABLE_HTML,[test "x${DX_FLAG_html}" = x1])
  168: AM_CONDITIONAL(ENABLE_MAN,[test "x${DX_FLAG_man}" = x1])
  169: 
  170: # Check for sample building
  171: AC_MSG_CHECKING([whether to build sample programs])
  172: AC_ARG_ENABLE([samples],
  173:     [AS_HELP_STRING([--enable-samples],[do not build sample programs @<:@default=no@:>@])],
  174:     [enable_samples=$enableval],
  175:     [enable_samples=no]
  176: )
  177: AC_MSG_RESULT([$enable_samples])
  178: AM_CONDITIONAL([ENABLE_SAMPLES], [test "$enable_samples" = "yes"])
  179: 
  180: # what (not) to do if the user disables shared libraries
  181: AM_CONDITIONAL([COND_SHARED], [test "x$enable_shared" != xno])
  182: 
  183: # Check and set OS specific parameters
  184: AS_CASE([$target_os],
  185: [*linux*], [
  186:     AC_DEFINE(_BSD_SOURCE, 1,
  187:         [Define as necessary to "unhide" header symbols.])
  188:     AC_DEFINE(_DEFAULT_SOURCE, 1,
  189:         [Define as necessary to "unhide" header symbols.])
  190: 
  191:     PKG_CONFIG_DEFINES="-D_BSD_SOURCE -D_DEFAULT_SOURCE"
  192:     AC_CHECK_HEADERS(net/ethernet.h, \
  193:         PKG_CONFIG_DEFINES="$PKG_CONFIG_DEFINES -DHAVE_NET_ETHERNET_H")
  194:     ],
  195: 
  196: [*freebsd*], [
  197:     PKG_CONFIG_DEFINES="-DHAVE_SOCKADDR_SA_LEN"
  198:     AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [FreeBSD has sa_len in struct sockaddr.])
  199: 
  200:     AC_MSG_CHECKING([FreeBSD version, is SOCK_RAW really raw?])
  201:     AC_TRY_COMPILE([#include <sys/param.h>], [
  202: #if (__FreeBSD_version >= 1100030)
  203:     return 0;
  204: #else
  205: #error FreeBSD pre-11, SOCK_RAW isn't really raw, see https://www.freebsd.org/cgi/man.cgi?ip(4)#end
  206: #endif],
  207:     AC_MSG_RESULT([yes]),
  208:     AC_MSG_RESULT([no])
  209:     AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1, [FreeBSD pre-11, libnet must byteswap raw ip_len, ip_off])
  210:     PKG_CONFIG_DEFINES="${PKG_CONFIG_DEFINES} -DLIBNET_BSD_BYTE_SWAP")],
  211: 
  212: [*netbsd*], [
  213:     AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1,
  214:         [Define if libnet should byteswap data.])
  215: 
  216:     PKG_CONFIG_DEFINES="-DLIBNET_BSD_BYTE_SWAP"
  217:     ],
  218: 
  219: [*openbsd*], [
  220:     AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1,
  221:         [Define if the sockaddr structure includes a sa_len member.])
  222:     ],
  223: 
  224: [*bsdi*], [
  225:     AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1,
  226:         [Define if libnet should byteswap data.])
  227:     PKG_CONFIG_DEFINES="-DLIBNET_BSD_BYTE_SWAP"
  228:     ],
  229: 
  230: [*darwin*], [
  231:     AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1,
  232:         [Define if the sockaddr structure includes a sa_len member.])
  233:     AC_DEFINE(LIBNET_BSD_BYTE_SWAP, 1, [Define if libnet should byteswap data.])
  234:     PKG_CONFIG_DEFINES="-DHAVE_SOCKADDR_SA_LEN -DLIBNET_BSD_BYTE_SWAP"
  235:     ],
  236: 
  237: [*solaris*], [
  238:     AC_DEFINE(HAVE_SOLARIS, 1, [Define if we are running on Solaris.])
  239:     AC_CHECK_HEADERS(sys/bufmod.h sys/dlpi_ext.h)
  240:     AC_MSG_CHECKING(for /dev/dlpi device)
  241:     AS_IF([test -c /dev/dlpi], [
  242:         AC_MSG_RESULT(yes)
  243:         AC_DEFINE(HAVE_DEV_DLPI, 1, [Define if /dev/dlpi is available.])
  244:     ], [
  245:         AC_MSG_RESULT(no)
  246:         dir="/dev/dlpi"
  247:         AC_MSG_CHECKING(for $dir directory)
  248:         AS_IF([test -d $dir], [
  249:             AC_MSG_RESULT(yes)
  250:             AC_DEFINE_UNQUOTED(DLPI_DEV_PREFIX, "$dir",
  251:                 [Define if /dev/dlpi is a directory.])
  252:         ], [
  253:             AC_MSG_RESULT(no)
  254:         ])
  255:     ])
  256:     AC_CHECK_LIB(socket, socket, ,AC_MSG_ERROR(libsocket not found.))
  257:     AC_CHECK_LIB(nsl, gethostbyname, ,AC_MSG_ERROR(libnsl not found.))
  258:     AC_CHECK_LIB(resolv, hstrerror, ,AC_MSG_ERROR(libresolv not found.))
  259: 
  260:     #
  261:     # Broken checksums?
  262:     #
  263:     AS_CASE([`uname -r`],
  264:     [5.4], [
  265:         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
  266:             [Define if our version of Solaris has broken checksums.])
  267:         ],
  268:     [5.5*], [
  269:         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
  270:             [Define if our version of Solaris has broken checksums.])
  271:         ],
  272:     [5.8], [
  273:         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
  274:             [Define if our version of Solaris has broken checksums.])
  275:         AC_DEFINE(HAVE_SOLARIS_IPV6, 1,
  276:             [Define if our version of Solaris supports IPv6.])
  277: 
  278:         ],
  279:     [5.9], [
  280:         AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG, 1,
  281:             [Define if our version of Solaris has broken checksums.])
  282:         AC_DEFINE(HAVE_SOLARIS_IPV6, 1,
  283:             [Define if our version of Solaris supports IPv6.])
  284:         ],
  285:     [5.10 | 5.11 | 5.12], [
  286:         AC_DEFINE(HAVE_SOLARIS_IPV6, 1,
  287:             [Define if our version of Solaris supports IPv6.])
  288:         ])
  289: 
  290:     ADDITIONAL_LIBS="-lresolv -lsocket -lnsl"
  291:     PKG_CONFIG_LIBS="$PKG_CONFIG_LIBS -lresolv -lsocket -lnsl"
  292:     ],
  293: 
  294: [*hpux11*], [
  295:     AC_DEFINE(HAVE_HPUX11, 1, [Define if we are building on HP/UX.])
  296:     AC_CHECK_HEADERS(sys/dlpi_ext.h)
  297:     ],
  298: 
  299: [*cygwin* | *msys*], [
  300:     WIN32="yes"
  301:     AC_SUBST(WIN32)
  302:     CFLAGS="$CFLAGS -mwin32"
  303:     AC_CHECK_LIB(packet, PacketSetMode, ,AC_MSG_ERROR(packet lib not found.))
  304:     AC_CHECK_LIB(wpcap, pcap_setmode, ,AC_MSG_ERROR(pcap lib not found.))
  305:     LIBS="$LIBS -lws2_32"
  306:     ],
  307: 
  308: [*mingw*], [
  309:     WIN32="yes"
  310:     AC_SUBST(WIN32)
  311: 
  312:     AS_IF([test "$enable_shared" = "yes"], [AC_CHECK_TOOL(WINDRES, windres, :)])
  313: 
  314:     AC_DEFINE(WIN32_LEAN_AND_MEAN, 1, [Define to limit the scope of <windows.h>])
  315: 
  316:     AC_CHECK_LIB(packet, PacketSetMode, ,AC_MSG_ERROR(libpacket.a not found. See README.win32 for more information))
  317:     AC_CHECK_LIB(wpcap, pcap_setmode, ,AC_MSG_ERROR(libwpcap.a not found. See README.win32 for more information))
  318:     LIBS="$LIBS -lws2_32 -liphlpapi"
  319: 
  320:     AS_IF([test "$host" = "i686-w64-mingw32"], [
  321:         CFLAGS="$CFLAGS -march=i686 -mwin32"], [
  322: 	CFLAGS="$CFLAGS -mwin32"
  323: 
  324: 	AX_CHECK_LINK_FLAG([-Wl,--high-entropy-va],
  325:             [LDFLAGS="$LDFLAGS -Wl,--high-entropy-va"],
  326:             [AC_MSG_NOTICE([Consider updating your toolchain.])])
  327:     ])
  328: 
  329:     AS_IF([test "${cross_compiling}" = "yes"], [
  330:         CFLAGS="$CFLAGS -static-libgcc"])
  331:     ],
  332: 
  333: [*irix*], [
  334:     CFLAGS="$CFLAGS -DINET6=1"
  335:     ], [
  336:     AC_MSG_WARN(${target_os} is not officially supported yet.)
  337:     AC_MSG_RESULT(Please report this to ${PACKAGE_BUGREPORT})])
  338: 
  339: # this only matters if we are building for Windows...
  340: AM_CONDITIONAL([WIN32], [test "${WIN32}" = "yes"])
  341: 
  342: # Create all files from AC_CONFIG_FILES()
  343: AC_OUTPUT
  344: 
  345: # Helper variables for summary, below
  346: AS_IF([test ${DX_FLAG_doc} -eq 1], [rebuild_docs=yes], [rebuild_docs=no])
  347: link_layer=`"echo"${LTLIBOBJS}"" | sed 's/.*libnet_link_\(.*\)\$.*/\1/'`
  348: 
  349: AC_MSG_RESULT([
  350: -=-=-=-=-=-=-=-=-=-= $PACKAGE Configuration Complete =-=-=-=-=-=-=-=-=-=-
  351: 
  352:     Version ....................... ${VERSION}
  353: 
  354:     Host .......................... ${host}
  355:     Operating System .............. ${host_os}
  356:     Host CPU ...................... ${host_cpu}
  357:     Host Vendor ................... ${host_vendor}
  358:     Host OS ....................... ${host_os}
  359:     Prefix ........................ ${prefix}
  360: 
  361:     Cross-compiling ............... ${cross_compiling}
  362:     Compiler is GCC ............... ${ac_cv_c_compiler_gnu}
  363:     CC ............................ ${CC}
  364:     CFLAGS ........................ ${CFLAGS}
  365:     LD ............................ ${LD}
  366:     LDFLAGS ....................... ${LDFLAGS}
  367:     LIBS .......................... ${LIBS}
  368: 
  369:     Link Layer .................... ${link_layer}
  370:     Shared Libraries .............. ${enable_shared}
  371:     Static Libraries .............. ${enable_static}
  372:     PIC ........................... ${pic_mode}
  373:     Build Sample Programs ......... ${enable_samples}
  374:     Rebuild docs .................. ${rebuild_docs}
  375: 
  376: To override options
  377: 
  378: 	$0 --help
  379: 
  380: Report bugs to ${PACKAGE_BUGREPORT}
  381: 
  382: -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  383: To disable silent build and print the full command line of every stage
  384: 
  385: 	make V=1
  386: ])
  387: AS_IF([test "$WIN32" = "yes"], [AC_MSG_RESULT(
  388: [To compile shared libraries on MinGW use the bundled WinPcap libraries
  389: in ./win32/.  GCC can NOT produce x64 compatible images with official
  390: WinPcap Developer Pack.  See README.win32 for more info.
  391: ])])
  392: AS_IF([test "$rebuild_docs" = "yes"], [AC_MSG_RESULT(
  393: [To build/update the documentation
  394: 
  395: 	make doc
  396: ])])

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