summaryrefslogtreecommitdiffstats
path: root/nping/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'nping/configure.ac')
-rw-r--r--nping/configure.ac562
1 files changed, 562 insertions, 0 deletions
diff --git a/nping/configure.ac b/nping/configure.ac
new file mode 100644
index 0000000..00c3ec4
--- /dev/null
+++ b/nping/configure.ac
@@ -0,0 +1,562 @@
+# Require autoconf 2.13 -*- mode: fundamental; -*-
+AC_PREREQ(2.13)
+
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(nping.cc)
+
+m4_include([../acinclude.m4])
+
+AC_ARG_WITH(localdirs,
+AC_HELP_STRING([--with-localdirs], [Explicitly ask compiler to use /usr/local/{include,libs} if they exist ]),
+ [ case "$with_localdirs" in
+ yes)
+ user_localdirs=1
+ ;;
+ no)
+ user_localdirs=0
+ ;;
+ esac
+ ],
+ [ user_localdirs=0 ] )
+
+if test "$user_localdirs" = 1; then
+ if test -d /usr/local/lib; then
+ LDFLAGS="$LDFLAGS -L/usr/local/lib"
+ fi
+ if test -d /usr/local/include; then
+ CPPFLAGS="$CPPFLAGS -I/usr/local/include"
+ fi
+fi
+
+libpcapdir=../libpcap
+AC_SUBST(libpcapdir)
+
+pcredir=libpcre
+AC_SUBST(pcredir)
+
+dnl use nping_config.h instead of -D macros
+AC_CONFIG_HEADER(nping_config.h)
+
+dnl Host specific hacks
+AC_CANONICAL_HOST
+AC_C_INLINE
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_INSTALL
+
+ if test -n "$GXX"; then
+ CXXFLAGS="$CXXFLAGS -Wall "
+ fi
+
+AC_MSG_CHECKING([whether the compiler is gcc 4 or greater])
+if test x"$GXX" = xno; then
+ AC_MSG_RESULT([no])
+else
+ # On some distros, there are snapshots available as gcc4
+ if test -z "$ac_cv_prog_CC" || test x"$CC" = xgcc4; then
+ our_gcc="$CC"
+ else
+ our_gcc="$ac_cv_prog_CC"
+ fi
+
+ nping_gcc_major_version=0
+ case `$our_gcc --version | sed -e 's,\..*,.,' -e q` in
+ *4.)
+ nping_gcc_major_version=4
+ ;;
+ esac
+
+ if test 4 -ge $nping_gcc_major_version; then
+ AC_MSG_RESULT([yes])
+ CXXFLAGS="$CXXFLAGS -fno-strict-aliasing"
+ else
+ AC_MSG_RESULT([no])
+ fi
+fi
+
+# Remember that all following tests will run with this CXXFLAGS by default
+AC_MSG_CHECKING(for __func__)
+AH_TEMPLATE(__func__, [C99-specified function identifier])
+AC_TRY_COMPILE([
+#include <stdio.h>
+],[printf ("%s", __func__);],
+have_func=yes, have_func=no)
+if test "x$have_func" = "xyes"; then
+ AC_MSG_RESULT(yes)
+else
+ AC_MSG_RESULT(no)
+ AC_MSG_CHECKING(for __FUNCTION__)
+ AC_TRY_COMPILE([
+#include <stdio.h>
+],[printf ("%s", __FUNCTION__);],
+have_function=yes, have_function=no)
+ if test "x$have_function" = "xyes"; then
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(__func__, __FUNCTION__)
+ else
+ AC_MSG_RESULT(no)
+ AC_DEFINE(__func__, __FILE__)
+ fi
+fi
+
+AC_PATH_TOOL([STRIP], [strip], [/bin/true])
+
+needs_cpp_precomp=no
+
+dnl Checks for header files.
+AC_CHECK_HEADERS(pwd.h termios.h sys/sockio.h)
+
+dnl If any socket libraries needed
+AC_SEARCH_LIBS(setsockopt, socket)
+AC_SEARCH_LIBS(gethostbyname, nsl)
+
+# OpenSSL and NSE C modules can require dlopen
+AC_SEARCH_LIBS(dlopen, dl)
+
+# libpcap can require libnl
+AC_SEARCH_LIBS(nl_handle_alloc, nl)
+
+# We test whether they specified openssl desires explicitly
+use_openssl="yes"
+specialssldir=""
+AC_ARG_WITH(openssl,
+AC_HELP_STRING([--with-openssl=DIR],[Use optional openssl libs and includes from [DIR]/lib/ and [DIR]/include/openssl/)]),
+[ case "$with_openssl" in
+ yes)
+ ;;
+ no)
+ use_openssl="no"
+ ;;
+ *)
+ specialssldir="$with_openssl"
+ CPPFLAGS="$CPPFLAGS -I$with_openssl/include"
+ LDFLAGS="$LDFLAGS -L$with_openssl/lib"
+ ;;
+ esac]
+)
+
+# If they didn't specify it, we try to find it
+if test "$use_openssl" = "yes" -a -z "$specialssldir"; then
+ AC_CHECK_HEADER(openssl/ssl.h,,
+ [ use_openssl="no"
+ if test "$with_openssl" = "yes"; then
+ AC_MSG_ERROR([OpenSSL was explicitly requested but openssl/ssl.h was not found. Try the --with-openssl=DIR argument to give the location of OpenSSL or run configure with --without-openssl.])
+ fi
+ AC_MSG_WARN([Failed to find openssl/ssl.h so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument])
+ ])
+
+# use_openssl="yes" given explicitly in next 2 rules to avoid adding lib to $LIBS
+ if test "$use_openssl" = "yes"; then
+ AC_CHECK_LIB(crypto, BIO_int_ctrl,
+ [ use_openssl="yes"],
+ [ use_openssl="no"
+ if test "$with_openssl" = "yes"; then
+ AC_MSG_ERROR([OpenSSL was explicitly requested but libcrypto was not found. Try the --with-openssl=DIR argument to give the location of OpenSSL or run configure with --without-openssl.])
+ fi
+ AC_MSG_WARN([Failed to find libcrypto so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument])
+ ])
+ fi
+
+ if test "$use_openssl" = "yes"; then
+ AC_CHECK_LIB(ssl, SSL_new,
+ [ use_openssl="yes" ],
+ [ use_openssl="no"
+ if test "$with_openssl" = "yes"; then
+ AC_MSG_ERROR([OpenSSL was explicitly requested but libssl was not found. Try the --with-openssl=DIR argument to give the location of OpenSSL or run configure with --without-openssl.])
+ fi
+ AC_MSG_WARN([Failed to find libssl so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument]) ],
+ [ -lcrypto ])
+ fi
+fi
+
+OPENSSL_LIBS=
+if test "$use_openssl" = "yes"; then
+ AC_DEFINE(HAVE_OPENSSL, 1, [Have OpenSSL library])
+ OPENSSL_LIBS="-lssl -lcrypto"
+ LIBS_TMP="$LIBS"
+ LIBS="$OPENSSL_LIBS $LIBS"
+ # Check whether the installed OpenSSL supports SHA-256 (ver 0.9.8 or later).
+ AC_CHECK_FUNC(EVP_sha256,, AC_MSG_ERROR([Your version of OpenSSL does not support SHA-256. Please install OpenSSL 0.9.8 or later.]))
+ LIBS="$LIBS_TMP"
+fi
+
+AC_SUBST(OPENSSL_LIBS)
+
+dnl Check whether libpcap is already available
+have_libpcap=no
+
+# By default, search for pcap library
+test "${with_libpcap+set}" != "set" && with_libpcap=yes
+
+AC_ARG_WITH(libpcap,
+AC_HELP_STRING([--with-libpcap=DIR], [Look for pcap in DIR/include and DIR/libs.])
+AC_HELP_STRING([--with-libpcap=included], [Always use version included with Nmap]),
+[ case "$with_libpcap" in
+ yes)
+ AC_CHECK_HEADER(pcap.h,[
+ AC_CHECK_LIB(pcap, pcap_create,
+ [have_libpcap=yes ])])
+ ;;
+ included)
+ have_libpcap=no
+ ;;
+ *)
+ _cppflags=$CPPFLAGS
+ _ldflags=$LDFLAGS
+
+ CPPFLAGS="-I$with_libpcap/include $CPPFLAGS"
+ LDFLAGS="-L$with_libpcap/lib $LDFLAGS"
+
+ AC_CHECK_HEADER(pcap.h,[
+ AC_CHECK_LIB(pcap, pcap_create,
+ [have_libpcap=yes
+ LIBPCAP_INC=$with_libpcap/include
+ LIBPCAP_LIB=$with_libpcap/lib])])
+
+ LDFLAGS=$_ldflags
+ CPPFLAGS=$_cppflags
+ ;;
+ esac]
+)
+
+if test $needs_cpp_precomp = yes; then
+ CXXFLAGS="-no-cpp-precomp $CXXFLAGS"
+fi
+
+if test $have_libpcap = yes; then
+ if test "${LIBPCAP_INC+set}" = "set"; then
+ CPPFLAGS="-I$LIBPCAP_INC $CPPFLAGS"
+ LDFLAGS="-L$LIBPCAP_LIB $LDFLAGS"
+ fi
+
+ # link with -lpcap for the purposes of this test
+ LIBS_OLD="$LIBS"
+ LIBS="$LIBS -lpcap"
+ PCAP_IS_SUITABLE([have_libpcap=yes], [have_libpcap=no], [have_libpcap=yes])
+ LIBS="$LIBS_OLD"
+fi
+
+if test $have_libpcap != yes; then
+ if test "${LIBPCAP_INC+set}" = "set"; then
+ LDFLAGS="-L$libpcapdir $_ldflags"
+ CPPFLAGS="$CPPFLAGS -I$LIBPCAP_INC"
+ else
+ LDFLAGS="-L$libpcapdir $LDFLAGS"
+ CPPFLAGS="$CPPFLAGS -I$libpcapdir"
+ fi
+ LIBPCAP_LIBS='$(LIBPCAPDIR)/libpcap.a'
+ PCAP_DEPENDS='$(LIBPCAPDIR)/libpcap.a'
+ PCAP_BUILD="build-pcap"
+ PCAP_CLEAN="clean-pcap"
+ PCAP_DIST_CLEAN="distclean-pcap"
+else
+ AC_DEFINE(HAVE_LIBPCAP, 1, [Have libpcap library])
+ LIBPCAP_LIBS="-lpcap"
+ PCAP_DEPENDS=""
+ PCAP_BUILD=""
+ PCAP_CLEAN=""
+ PCAP_DIST_CLEAN=""
+fi
+
+AC_SUBST(PCAP_DEPENDS)
+AC_SUBST(PCAP_BUILD)
+AC_SUBST(PCAP_CLEAN)
+AC_SUBST(PCAP_DIST_CLEAN)
+AC_SUBST(LIBPCAP_LIBS)
+
+if test $have_libpcap != yes ; then
+ AC_CONFIG_SUBDIRS(libpcap)
+fi
+
+
+have_dnet=no
+requested_included_dnet=no
+LIBDNETDIR=../libdnet-stripped
+
+# First we test whether they specified libdnet explicitly.
+# Unlike the other included libraries (pcap, pcre, lua), we prefer our local
+# copy of libdnet. That is, with the other libraries we check for a system
+# version by default, whereas with dnet we use the local version unless
+# specifically asked to use a system version.
+AC_ARG_WITH(libdnet,
+AC_HELP_STRING([--with-libdnet=DIR], [Use an existing (compiled) dnet lib from DIR/include and DIR/lib.])
+AC_HELP_STRING([--with-libdnet=included], [Use the libdnet version included with Nmap (default)]),
+[ case "$with_libdnet" in
+ yes)
+ ;;
+ included)
+ ;;
+ *)
+ CPPFLAGS="-I$with_libdnet/include $CPPFLAGS"
+ LDFLAGS="-L$with_libdnet/lib $LDFLAGS"
+ have_dnet=yes
+ ;;
+ esac]
+)
+
+# If they didn't provide location, we use the included one
+if test $have_dnet != yes ; then
+ AC_CONFIG_SUBDIRS( libdnet-stripped )
+ CPPFLAGS="-I$LIBDNETDIR/include $CPPFLAGS"
+ LIBDNET_LIBS="$LIBDNETDIR/src/.libs/libdnet.a"
+ DNET_DEPENDS="$LIBDNETDIR/src/.libs/libdnet.a"
+ DNET_BUILD="build-dnet"
+ DNET_CLEAN="clean-dnet"
+ DNET_DIST_CLEAN="distclean-dnet"
+else
+ LIBDNET_LIBS="-ldnet"
+ DNET_DEPENDS=""
+ DNET_BUILD=""
+ DNET_CLEAN=""
+ DNET_DIST_CLEAN=""
+fi
+
+AC_SUBST(LIBDNET_LIBS)
+AC_SUBST(LIBDNETDIR)
+AC_SUBST(DNET_DEPENDS)
+AC_SUBST(DNET_BUILD)
+AC_SUBST(DNET_CLEAN)
+AC_SUBST(DNET_DIST_CLEAN)
+
+
+dnl This test is from the configure.in of Unix Network Programming second
+dnl edition example code by W. Richard Stevens
+dnl ##################################################################
+dnl Check if sockaddr{} has sa_len member.
+dnl
+AC_CACHE_CHECK(if sockaddr{} has sa_len member, ac_cv_sockaddr_has_sa_len,
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/socket.h>],
+ [unsigned int i = sizeof(((struct sockaddr *)0)->sa_len)],
+ ac_cv_sockaddr_has_sa_len=yes,
+ ac_cv_sockaddr_has_sa_len=no))
+if test $ac_cv_sockaddr_has_sa_len = yes ; then
+ AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [struct sockaddr has sa_len member])
+fi
+
+
+dnl Check if the sockaddr_in implementation has member sin_len
+dnl ##################################################################
+dnl Check if sockaddr_in{} has sin_len member.
+dnl
+AC_CACHE_CHECK(if sockaddr_in{} has sin_len member, ac_cv_sockaddr_in_has_sin_len,
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include <sys/socket.h>],
+ [unsigned int i = sizeof(((struct sockaddr_in *)0)->sin_len)],
+ ac_cv_sockaddr_in_has_sin_len=yes,
+ ac_cv_sockaddr_in_has_sin_len=no))
+if test $ac_cv_sockaddr_in_has_sin_len = yes ; then
+ AC_DEFINE(HAVE_SOCKADDR_IN_SIN_LEN, 1, [struct sockaddr_in has sin_len member])
+fi
+
+
+dnl Check if the sockaddr_in6 implementation has member sin6_len
+dnl ##################################################################
+dnl Check if sockaddr_in6{} has sin6_len member.
+dnl
+AC_CACHE_CHECK(if sockaddr_in6{} has sin6_len member, ac_cv_sockaddr_in6_has_sin6_len,
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <netinet/in.h>
+ #include <sys/socket.h>],
+ [unsigned int i = sizeof(((struct sockaddr_in6 *)0)->sin6_len)],
+ ac_cv_sockaddr_in6_has_sin6_len=yes,
+ ac_cv_sockaddr_in6_has_sin6_len=no))
+if test $ac_cv_sockaddr_in6_has_sin6_len = yes ; then
+ AC_DEFINE(HAVE_SOCKADDR_IN6_SIN6_LEN, 1, [struct sockaddr_in6 has sin6_len member])
+fi
+
+
+#dnl check endedness
+AC_C_BIGENDIAN
+
+AC_MSG_CHECKING([if struct in_addr is a wacky huge structure (some Sun boxes)])
+AH_TEMPLATE(IN_ADDR_DEEPSTRUCT, [], [struct in_addr is a wacky huge structure (some Sun boxes)])
+
+AC_TRY_COMPILE([#include <netinet/in.h>], struct in_addr i; i._S_un._S_addr;, \
+ AC_DEFINE(IN_ADDR_DEEPSTRUCT) \
+ AC_MSG_RESULT(yes) , \
+ AC_TRY_COMPILE([#include <sys/types.h>
+#include <netinet/in.h>], struct in_addr i; i.S_un.S_addr;, \
+ AC_DEFINE(IN_ADDR_DEEPSTRUCT) \
+ AC_MSG_RESULT(yes) , \
+ AC_MSG_RESULT(no);))
+
+#AC_CACHE_CHECK(if struct icmp exists, ac_cv_struct_icmp_exists,
+ #AC_TRY_COMPILE([
+ ##include <sys/types.h>
+ ##include <sys/param.h>
+ ##include <netinet/in_systm.h>
+ ##include <netinet/in.h>
+ ##define __USE_BSD
+ ##define __FAVOR_BSD
+ ##define _BSD_SOURCE
+ ##include <netinet/ip.h>
+ ##include <netinet/ip_icmp.h>],
+ #[unsigned int i = sizeof(struct icmp)],
+ #ac_cv_struct_icmp_exists=yes,
+ #ac_cv_struct_icmp_exists=no))
+#if test $ac_cv_struct_icmp_exists = yes ; then
+ #AC_DEFINE(HAVE_STRUCT_ICMP)
+#fi
+
+#AC_CACHE_CHECK(if struct ip exists, ac_cv_struct_ip_exists,
+ #AC_TRY_COMPILE([
+ ##include <sys/types.h>
+ ##include <sys/param.h>
+ ##include <netinet/in_systm.h>
+ ##include <netinet/in.h>
+ ##define __USE_BSD
+ ##define __FAVOR_BSD
+ ##define _BSD_SOURCE
+ ##include <netinet/ip.h>],
+ #[unsigned int i = sizeof(struct ip)],
+ #ac_cv_struct_ip_exists=yes,
+ #ac_cv_struct_ip_exists=no))
+#if test $ac_cv_struct_ip_exists = yes ; then
+ #AC_DEFINE(HAVE_STRUCT_IP)
+#fi
+
+AC_CACHE_CHECK(if struct ip has ip_sum member, ac_cv_ip_has_ip_sum,
+ AC_TRY_COMPILE([
+ #include <sys/types.h>
+ #include <sys/param.h>
+ #include <netinet/in_systm.h>
+ #include <netinet/in.h>
+ #define __USE_BSD
+ #define __FAVOR_BSD
+ #define _BSD_SOURCE
+ #include <netinet/ip.h>
+ #include <netinet/ip_icmp.h>],
+ [unsigned int i = sizeof(((struct ip *)0)->ip_sum)],
+ ac_cv_ip_has_ip_sum=yes,
+ ac_cv_ip_has_ip_sum=no))
+if test $ac_cv_ip_has_ip_sum = yes ; then
+ AC_DEFINE(HAVE_IP_IP_SUM, 1, [struct ip has ip_sum member])
+fi
+
+AC_CACHE_CHECK(if function signal is accessible, ac_cv_have_signal,
+ AC_TRY_COMPILE(
+ [
+ #include <signal.h>
+ ],
+ [
+ void handler(int signo){
+ int a=0;
+ }
+
+ int main () {
+ ssignal(SIGINT, handler);
+ return 0;
+ }
+ ],
+ ac_cv_have_signal=yes,
+ ac_cv_have_signal=no))
+if test $ac_cv_have_signal = yes ; then
+ AC_DEFINE(HAVE_SIGNAL, 1, [ssignal function is accessible])
+fi
+
+
+
+
+AH_TEMPLATE(SOLARIS, [Sun/Oracle Solaris])
+AH_TEMPLATE(STUPID_SOLARIS_CHECKSUM_BUG, [],
+ [A bug in Solaris causing incorrect IP checksums])
+case "$host" in
+ *alpha-dec-osf*)
+ AC_DEFINE(DEC, 1, [DEC Alpha])
+ ;;
+ *-netbsd* | *-knetbsd*-gnu)
+ AC_DEFINE(NETBSD, 1, [NetBSD])
+ ;;
+ *-openbsd*)
+ AC_DEFINE(OPENBSD, 1, [OpenBSD])
+ ;;
+ *-freebsd* | *-kfreebsd*-gnu | *-dragonfly*)
+ AC_DEFINE(FREEBSD, 1, [FreeBSD])
+ ;;
+ *-bsdi*)
+ AC_DEFINE(BSDI, 1, [BSD/OS])
+ ;;
+ *-sgi-irix5* | *-sgi-irix6*)
+ AC_DEFINE(IRIX, 1, [IRIX])
+ ;;
+ *-hpux*)
+ AC_DEFINE(HPUX, 1, [HP-UX])
+ # To link with libnet and NM (/usr/lib/libnm.sl) library
+ # on HP-UX 11.11 (other versions?) Mikhail Zakharov (zmey20000@yahoo.com)
+ AC_CHECK_LIB(nm, open_mib)
+ ;;
+ *-aix*)
+ # use some AIX specific libraries
+ AC_CHECK_LIB(odm, odm_initialize)
+ AC_CHECK_LIB(cfg, _system_configuration)
+ AC_CHECK_LIB(crypt, crypt_r)
+ ;;
+ *-solaris2.0*)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-solaris2.[[1-9]][[0-9]]*)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-solaris2.1*)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-solaris2.2*)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-solaris2.3*)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-solaris2.4*)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-solaris2.5.1)
+ AC_DEFINE(STUPID_SOLARIS_CHECKSUM_BUG)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-solaris*)
+ AC_DEFINE(SOLARIS)
+ ;;
+ *-sunos4*)
+ AC_DEFINE(SUNOS, 1, [SunOS 4])
+ AC_DEFINE(SPRINTF_RETURNS_STRING, 1,
+ [sprintf(9f) returns its first argument, not the number of characters printed])
+ ;;
+ *-linux*)
+ AC_DEFINE(LINUX, 1, [Linux])
+ ;;
+ *-apple-darwin*)
+ AC_DEFINE(MACOSX, 1, [Apple OS X])
+ dnl on Mac OSX the math library seems to contain unwanted getopt cruft
+ AC_CHECK_LIB(m, main)
+ needs_cpp_precomp=yes
+ ;;
+esac
+
+
+
+
+
+
+
+dnl Checks for library functions.
+AC_CHECK_FUNCS(strerror)
+#RECVFROM_ARG6_TYPE
+
+AC_OUTPUT(Makefile)
+# Some ASCII ART#!#@$!@#$
+if test -f docs/leet-nping-ascii-art.txt; then
+ cat docs/leet-nping-ascii-art.txt
+fi
+echo "Configuration complete. Type make (or gmake on some *BSD machines) to compile."