summaryrefslogtreecommitdiffstats
path: root/configure.ac
diff options
context:
space:
mode:
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac1135
1 files changed, 1135 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac
new file mode 100644
index 0000000..10a6034
--- /dev/null
+++ b/configure.ac
@@ -0,0 +1,1135 @@
+# Require autoconf 2.13 -*- mode: fundamental; -*-
+AC_PREREQ(2.13)
+
+dnl Process this file with autoconf to produce a configure script.
+AC_INIT(nmap.cc)
+
+dnl Give us the --enable-nls option, to choose which translated man pages get
+dnl installed. This gets replaced with AM_GNU_GETTEXT for full gettext support.
+AM_NLS
+
+trace_use=""
+trace_no_use=""
+
+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
+ trace_use="$trace_use localdirs"
+ 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
+else
+ trace_no_use="$trace_no_use localdirs"
+fi
+
+dnl Let subdirs configure scripts find the Nmap source dir
+if test "${top_nmap_srcdir+set}" != set; then
+ top_nmap_srcdir=`cd "$srcdir" && pwd`
+ export top_nmap_srcdir
+fi
+
+libpcapdir=libpcap
+AC_SUBST(libpcapdir)
+
+LIBSSH2DIR=libssh2
+AC_SUBST(LIBSSH2DIR)
+
+ZLIBDIR=libz
+AC_SUBST(ZLIBDIR)
+
+pcredir=libpcre
+AC_SUBST(pcredir)
+
+dnl use nmap_config.h instead of -D macros
+AC_CONFIG_HEADER(nmap_config.h)
+
+dnl Host specific hacks
+AC_CANONICAL_HOST
+AC_C_INLINE
+
+dnl Checks for programs.
+AC_PROG_CC
+AC_PROG_CXX
+AC_PROG_RANLIB
+AC_PROG_INSTALL
+AC_PROG_AWK
+
+dnl For nse_fs.cc
+dnl LARGE_FILES_IF_NOT_BROKEN
+
+if test -n "$GXX"; then
+ # -fno-strict-aliasing disables strict-aliasing optimizations that assume
+ # that pointers of different types never point to the same object.
+ CXXFLAGS="$CXXFLAGS -Wall -fno-strict-aliasing"
+fi
+
+CFLAGS="$CFLAGS -Wall"
+
+# 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
+
+LUA_CFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN"
+
+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])
+ LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
+ ;;
+ *-openbsd*)
+ AC_DEFINE(OPENBSD, 1, [OpenBSD])
+ LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
+ ;;
+ *-freebsd* | *-kfreebsd*-gnu | *-dragonfly*)
+ AC_DEFINE(FREEBSD, 1, [FreeBSD])
+ LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
+ ;;
+ *-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.1[[1-9]]*)
+ AC_DEFINE(SOLARIS)
+ # Solaris 11 and later use BPF packet capture rather than DLPI.
+ AC_DEFINE(SOLARIS_BPF_PCAP_CAPTURE, 1, [Solaris 11 and later use BPF packet capture rather than DLPI.])
+ ;;
+ *-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])
+ LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
+ ;;
+ *-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)
+ LUA_CFLAGS="-DLUA_USE_MACOSX"
+ needs_cpp_precomp=yes
+ ;;
+esac
+
+AC_SUBST(LUA_CFLAGS)
+
+dnl Checks for header files.
+AC_CHECK_HEADERS(pwd.h termios.h sys/sockio.h stdint.h sys/stat.h fcntl.h)
+AC_CHECK_HEADERS(linux/rtnetlink.h,,,[#include <netinet/in.h>])
+dnl A special check required for <net/if.h> on Darwin. See
+dnl http://www.gnu.org/software/autoconf/manual/html_node/Header-Portability.html.
+AC_CHECK_HEADERS([sys/socket.h])
+AC_CHECK_HEADERS([net/if.h], [], [],
+[#include <stdio.h>
+#ifdef STDC_HEADERS
+# include <stdlib.h>
+# include <stddef.h>
+#else
+# ifdef HAVE_STDLIB_H
+# include <stdlib.h>
+# endif
+#endif
+#ifdef HAVE_SYS_SOCKET_H
+# include <sys/socket.h>
+#endif
+])
+
+dnl If any socket libraries needed
+AC_SEARCH_LIBS(setsockopt, socket)
+AC_SEARCH_LIBS(gethostbyname, nsl)
+
+dnl Check IPv6 raw sending flavor.
+CHECK_IPV6_IPPROTO_RAW
+
+m4_define_default([_AM_PYTHON_INTERPRETER_LIST],[python3 python])
+AM_PATH_PYTHON([3], [HAVE_PYTHON=true], [HAVE_PYTHON=false])
+
+NDIFFDIR=ndiff
+
+# Do they want Ndiff?
+AC_ARG_WITH(ndiff, AC_HELP_STRING([--without-ndiff], [Skip installation of the Ndiff utility]), [], [with_ndiff=check])
+if $HAVE_PYTHON ; then : ;
+else
+ if test "$with_ndiff" = "check" ; then
+ AC_MSG_WARN([Not building Ndiff because Python was not found])
+ elif test "$with_ndiff" = "yes"; then
+ AC_MSG_FAILURE([--with-ndiff requires Python])
+ fi
+ with_ndiff=no
+fi
+if test "$with_ndiff" = "no"; then
+ trace_no_use="$trace_no_use ndiff"
+ BUILDNDIFF=""
+ INSTALLNDIFF=""
+ UNINSTALLNDIFF=""
+ NDIFF_CHECK=""
+ NDIFF_CLEAN=""
+ NDIFF_DIST_CLEAN=""
+else
+ trace_use="$trace_use ndiff"
+ BUILDNDIFF=build-ndiff
+ INSTALLNDIFF=install-ndiff
+ UNINSTALLNDIFF=uninstall-ndiff
+ NDIFF_CHECK="check-ndiff"
+ NDIFF_CLEAN=clean-ndiff
+ NDIFF_DIST_CLEAN=distclean-ndiff
+fi
+AC_SUBST(NDIFFDIR)
+AC_SUBST(BUILDNDIFF)
+AC_SUBST(INSTALLNDIFF)
+AC_SUBST(UNINSTALLNDIFF)
+AC_SUBST(NDIFF_CHECK)
+AC_SUBST(NDIFF_CLEAN)
+AC_SUBST(NDIFF_DIST_CLEAN)
+
+ZENMAPDIR=zenmap
+
+# Do they want Zenmap?
+AC_ARG_WITH(zenmap, AC_HELP_STRING([--without-zenmap], [Skip installation of the Zenmap graphical frontend]), [], [with_zenmap=check])
+
+if $HAVE_PYTHON ; then : ;
+else
+ if test "$with_zenmap" = "check"; then
+ AC_MSG_WARN([Not building Zenmap because Python was not found])
+ elif test "$with_zenmap" = "yes"; then
+ AC_MSG_FAILURE([--with-zenmap requires Python])
+ fi
+ with_zenmap=no
+fi
+if test "$with_zenmap" = "no"; then
+ trace_no_use="$trace_no_use zenmap"
+ BUILDZENMAP=""
+ INSTALLZENMAP=""
+ UNINSTALLZENMAP=""
+ ZENMAP_CHECK=""
+ ZENMAP_CLEAN=""
+ ZENMAP_DIST_CLEAN=""
+else
+ trace_use="$trace_use zenmap"
+ BUILDZENMAP=build-zenmap
+ INSTALLZENMAP=install-zenmap
+ UNINSTALLZENMAP=uninstall-zenmap
+ ZENMAP_CHECK=check-zenmap
+ ZENMAP_CLEAN=clean-zenmap
+ ZENMAP_DIST_CLEAN=distclean-zenmap
+fi
+AC_SUBST(ZENMAPDIR)
+AC_SUBST(BUILDZENMAP)
+AC_SUBST(INSTALLZENMAP)
+AC_SUBST(UNINSTALLZENMAP)
+AC_SUBST(ZENMAP_CHECK)
+AC_SUBST(ZENMAP_CLEAN)
+AC_SUBST(ZENMAP_DIST_CLEAN)
+
+NPINGDIR=nping
+
+# Do they want Nping?
+AC_ARG_WITH(nping, AC_HELP_STRING([--without-nping], [Skip installation of the Nping utility]), [], [with_nping=check])
+
+if test "$with_nping" = "no"; then
+ trace_no_use="$trace_no_use nping"
+ BUILDNPING=""
+ INSTALLNPING=""
+ UNINSTALLNPING=""
+ NPING_CLEAN=""
+ NPING_DIST_CLEAN=""
+else
+ trace_use="$trace_use nping"
+ BUILDNPING=build-nping
+ INSTALLNPING=install-nping
+ UNINSTALLNPING=uninstall-nping
+ NPING_CLEAN=clean-nping
+ NPING_DIST_CLEAN=distclean-nping
+ AC_CONFIG_SUBDIRS(nping)
+fi
+AC_SUBST(NPINGDIR)
+AC_SUBST(BUILDNPING)
+AC_SUBST(INSTALLNPING)
+AC_SUBST(UNINSTALLNPING)
+AC_SUBST(NPING_CLEAN)
+AC_SUBST(NPING_DIST_CLEAN)
+
+# OpenSSL and NSE C modules can require dlopen
+AC_SEARCH_LIBS(dlopen, dl)
+
+# 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"
+ ac_configure_args="$ac_configure_args '--with-libssl-prefix=$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"; then
+ AC_CHECK_HEADER(openssl/ssl.h,,
+ [ use_openssl="no"
+ if test -n "$specialssldir"; then
+ AC_MSG_ERROR([Specific OpenSSL location was requested but openssl/ssl.h was not found. Try correcting the --with-openssl=DIR argument.])
+ fi
+ 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])
+ ])
+fi
+
+# 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 -n "$specialssldir"; then
+ AC_MSG_ERROR([Specific OpenSSL location was requested but libcrypto was not found. Try correcting the --with-openssl=DIR argument.])
+ fi
+ 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 -n "$specialssldir"; then
+ AC_MSG_ERROR([Specific OpenSSL location was requested but libssl was not found. Try correcting the --with-openssl=DIR argument.])
+ fi
+ 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
+
+OPENSSL_LIBS=
+if test "$use_openssl" = "yes"; then
+ trace_use="$trace_use openssl"
+ AC_DEFINE(HAVE_OPENSSL, 1, [Have OpenSSL library])
+ OPENSSL_LIBS="-lssl -lcrypto"
+else
+ trace_no_use="$trace_no_use openssl"
+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
+ AC_CONFIG_SUBDIRS(libpcap)
+ if test "${LIBPCAP_INC+set}" = "set"; then
+ CPPFLAGS="$CPPFLAGS -I$LIBPCAP_INC"
+ else
+ CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/$libpcapdir"
+ fi
+ LIBPCAP_LIBS='$(LIBPCAPDIR)/libpcap.a'
+ PCAP_BUILD="build-pcap"
+ PCAP_CLEAN="clean-pcap"
+ PCAP_DIST_CLEAN="distclean-pcap"
+ AC_DEFINE(PCAP_INCLUDED, 1, [Using included libpcap])
+ AC_DEFINE(HAVE_PCAP_SET_IMMEDIATE_MODE, 1, [Included libpcap has pcap_set_immediate_mode])
+else
+ # We assume our included libpcap doesn't need this check-and-define
+ # link with -lpcap for the purposes of this test
+ LIBS_OLD="$LIBS"
+ LIBS="$LIBS -lpcap"
+ AC_CHECK_FUNCS([pcap_set_immediate_mode])
+ # Restore libs
+ LIBS="$LIBS_OLD"
+
+ AC_DEFINE(HAVE_LIBPCAP, 1, [Have libpcap library])
+ LIBPCAP_LIBS="-lpcap"
+ PCAP_BUILD=""
+ PCAP_CLEAN=""
+ PCAP_DIST_CLEAN=""
+fi
+
+AC_SUBST(PCAP_BUILD)
+AC_SUBST(PCAP_CLEAN)
+AC_SUBST(PCAP_DIST_CLEAN)
+AC_SUBST(LIBPCAP_LIBS)
+
+have_pcre=no
+requested_included_pcre=no
+LIBPCREDIR=libpcre
+
+# First we test whether they specified libpcre explicitly
+AC_ARG_WITH(libpcre,
+AC_HELP_STRING([--with-libpcre=DIR], [Use an existing (compiled) pcre2 lib from DIR/include and DIR/lib.])
+AC_HELP_STRING([--with-libpcre=included], [Always use the version included with Nmap]),
+[ case "$with_libpcre" in
+ yes)
+ ;;
+ included)
+ requested_included_pcre=yes
+ ;;
+ *)
+ CPPFLAGS="-I$with_libpcre/include $CPPFLAGS"
+ LDFLAGS="-L$with_libpcre/lib $LDFLAGS"
+ have_pcre=yes
+ ;;
+ esac]
+)
+
+# If they didn't specify it, we try to find it
+if test $have_pcre != yes -a $requested_included_pcre != yes ; then
+ AC_CHECK_HEADER(pcre2.h,
+ AC_CHECK_LIB(pcre2-8, pcre2_compile_8, [have_pcre=yes ]),
+ [],
+ [
+#define PCRE2_CODE_UNIT_WIDTH 8
+ ]
+ )
+fi
+
+# If we still don't have it, we use our own
+if test $have_pcre != yes ; then
+ AC_CONFIG_SUBDIRS( libpcre )
+ CPPFLAGS="-I\$(top_srcdir)/$LIBPCREDIR/src $CPPFLAGS"
+ LIBPCRE_LIBS="$LIBPCREDIR/.libs/libpcre2-8.a"
+ PCRE_BUILD="build-pcre"
+ PCRE_CLEAN="clean-pcre"
+ PCRE_DIST_CLEAN="distclean-pcre"
+ AC_DEFINE(PCRE_INCLUDED, 1, [Using included libpcre2])
+else
+# We only need to check for and use this if we are NOT using included pcre
+ AC_CHECK_HEADERS(pcre2.h)
+ LIBPCRE_LIBS="-lpcre2-8"
+ PCRE_BUILD=""
+ PCRE_CLEAN=""
+ PCRE_DIST_CLEAN=""
+fi
+
+AC_SUBST(LIBPCRE_LIBS)
+AC_SUBST(LIBPCREDIR)
+AC_SUBST(PCRE_BUILD)
+AC_SUBST(PCRE_CLEAN)
+AC_SUBST(PCRE_DIST_CLEAN)
+
+
+# We test whether desired libz is specified explicitly
+# Since this is a libssh2 dependency, we have to do it first.
+
+have_libz="no"
+requested_included_libz="no"
+test "${with_libz+set}" != "set" && with_libz="yes"
+
+AC_ARG_WITH(libz,
+AC_HELP_STRING([--with-libz=DIR], [Use specific copy of libz])
+AC_HELP_STRING([--with-libz=included], [Always use version included with Nmap]),
+[
+ case "$with_libz" in
+ yes)
+ ;;
+ no)
+ # Do nothing
+ ;;
+ included)
+ requested_included_libz="yes"
+ ;;
+ *)
+ _cppflags=$CPPFLAGS
+ _ldflags=$LDFLAGS
+
+ CPPFLAGS="-I$with_libz/include $CPPFLAGS"
+ LDFLAGS="-L$with_libz/lib $LDFLAGS"
+
+ ac_configure_args="$ac_configure_args '--with-libz-prefix=$with_libz'"
+ AC_CHECK_HEADER(zlib.h,[
+ AC_CHECK_LIB(z, gzread,
+ [have_libz=yes
+ ZLIB_INC=$with_libz/include
+ ZLIB_LIB=$with_libz/lib],,)
+ ])
+
+ LDFLAGS=$_ldflags
+ CPPFLAGS=$_cppflags
+ ;;
+ esac
+]
+)
+
+if test $with_libz != no; then
+ trace_use="$trace_use zlib"
+
+ # If they didn't specify it, we try to find it
+ if test $have_libz != yes -a $requested_included_libz != yes; then
+ AC_CHECK_HEADER(zlib.h,[
+ AC_CHECK_LIB(z, gzread,
+ [have_libz="yes"],,[-lm])
+ ])
+ fi
+
+ if test $have_libz != yes; then
+ AC_CONFIG_SUBDIRS(libz)
+ # TODO: This doesn't work because libssh2's configure script is looking for
+ # already-built libs. Giving up for now: build libz first or install
+ # headers/libs on your own if you want compression support for SSH.
+ #ac_configure_args="$ac_configure_args '--with-libz-prefix=../../$ZLIBDIR'"
+ CPPFLAGS="-I\$(top_srcdir)/$ZLIBDIR $CPPFLAGS"
+ ZLIB_LIBS="$ZLIBDIR/libz.a"
+ ZLIB_BUILD="build-zlib"
+ ZLIB_CLEAN="clean-zlib"
+ ZLIB_DIST_CLEAN="distclean-zlib"
+ AC_DEFINE(ZLIB_INCLUDED, 1, [Using included zlib])
+ else
+ ZLIB_LIBS="-lz"
+ ZLIB_BUILD=""
+ ZLIB_CLEAN=""
+ ZLIB_DIST_CLEAN=""
+ fi
+ AC_DEFINE(HAVE_LIBZ, 1, [Have zlib library])
+else
+ trace_no_use="$trace_no_use zlib"
+ ZLIB_LIBS=""
+ ZLIB_BUILD=""
+ ZLIB_CLEAN=""
+ ZLIB_DIST_CLEAN=""
+fi
+
+AC_SUBST(ZLIB_BUILD)
+AC_SUBST(ZLIB_CLEAN)
+AC_SUBST(ZLIB_DIST_CLEAN)
+AC_SUBST(ZLIB_LIBS)
+
+# We test whether desired libssh2 is specified explicitly
+
+use_libssh2="yes"
+have_libssh2="no"
+requested_included_libssh2="no"
+test "${with_libssh2+set}" != "set" && with_libssh2="yes"
+
+AC_ARG_WITH(libssh2,
+AC_HELP_STRING([--with-libssh2=DIR], [Use specific copy of libssh2])
+AC_HELP_STRING([--with-libssh2=included], [Always use version included with Nmap])
+AC_HELP_STRING([--without-libssh2], [Compile without libssh2]),
+[ case "$with_libssh2" in
+ yes)
+ ;;
+ no)
+ use_libssh2="no"
+ ;;
+ included)
+ requested_included_libssh2="yes"
+ ;;
+ *)
+ _cppflags=$CPPFLAGS
+ _ldflags=$LDFLAGS
+
+ CPPFLAGS="-I$with_libssh2/include $CPPFLAGS"
+ LDFLAGS="-L$with_libssh2/lib $LDFLAGS"
+
+ AC_CHECK_HEADER(libssh2.h,[
+ AC_CHECK_LIB(ssh2, libssh2_version,
+ [have_libssh2=yes
+ LIBSSH2_INC=$with_libssh2/include
+ LIBSSH2_LIB=$with_libssh2/lib],
+ [LDFLAGS=$_ldflags
+ CPPFLAGS=$_cppflags],[-lm])
+ ])
+
+ ;;
+ esac]
+)
+
+
+if test $use_libssh2 = yes -a $use_openssl = yes; then
+ trace_use="$trace_use libssh2"
+
+ # If they didn't specify it, we try to find it
+ if test $have_libssh2 != yes -a $requested_included_libssh2 != yes; then
+ AC_CHECK_HEADER(libssh2.h,[
+ AC_CHECK_LIB(ssh2, libssh2_version,
+ [have_libssh2="yes"],,[-lm])
+ ])
+ fi
+
+ # If we still don't have it, we use our own
+ if test $have_libssh2 != yes; then
+ have_libssh2=yes
+ AC_CONFIG_SUBDIRS(libssh2)
+ CPPFLAGS="-I\$(top_srcdir)/$LIBSSH2DIR/include $CPPFLAGS"
+ LIBSSH2_LIBS="$LIBSSH2DIR/lib/libssh2.a"
+ LIBSSH2_BUILD="build-libssh2"
+ LIBSSH2_CLEAN="clean-libssh2"
+ LIBSSH2_DIST_CLEAN="distclean-libssh2"
+ AC_DEFINE(LIBSSH2_INCLUDED, 1, [Using included libssh2])
+ else
+ LIBSSH2_LIBS="-lssh2"
+ LIBSSH2_BUILD=""
+ LIBSSH2_CLEAN=""
+ LIBSSH2_DIST_CLEAN=""
+ fi
+ AC_DEFINE(HAVE_LIBSSH2, 1, [Have libssh2 library])
+else
+ use_libssh2="no"
+ trace_no_use="$trace_no_use libssh2"
+ LIBSSH2_LIBS=""
+ LIBSSH2_BUILD=""
+ LIBSSH2_CLEAN=""
+ LIBSSH2_DIST_CLEAN=""
+fi
+
+AC_SUBST(LIBSSH2_BUILD)
+AC_SUBST(LIBSSH2_CLEAN)
+AC_SUBST(LIBSSH2_DIST_CLEAN)
+AC_SUBST(LIBSSH2_LIBS)
+
+
+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. This is because we have
+# made many improvements and fixes to our version of dnet.
+AC_ARG_WITH(libdnet,
+AC_HELP_STRING([--with-libdnet=DIR], [Use an existing (compiled) dnet lib from DIR/include and DIR/lib. This is NOT RECOMMENDED because we have made many important fixes to our included libdnet, as described at ./libdnet-stripped/NMAP_MODIFICATIONS])
+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\$(top_srcdir)/$LIBDNETDIR/include $CPPFLAGS"
+ LIBDNET_LIBS="\$(top_srcdir)/$LIBDNETDIR/src/.libs/libdnet.a"
+ DNET_BUILD="build-dnet"
+ DNET_CLEAN="clean-dnet"
+ DNET_DIST_CLEAN="distclean-dnet"
+ AC_DEFINE(DNET_INCLUDED, 1, [Use included libdnet])
+else
+ LIBDNET_LIBS="-ldnet"
+ DNET_BUILD=""
+ DNET_CLEAN=""
+ DNET_DIST_CLEAN=""
+fi
+
+AC_SUBST(LIBDNET_LIBS)
+AC_SUBST(LIBDNETDIR)
+AC_SUBST(DNET_BUILD)
+AC_SUBST(DNET_CLEAN)
+AC_SUBST(DNET_DIST_CLEAN)
+
+LIBLUADIR=liblua
+
+have_lua=no
+requested_included_lua=no
+no_lua=no
+
+# First we test whether they specified liblua explicitly
+AC_ARG_WITH(liblua,
+AC_HELP_STRING([--with-liblua=DIR], [Use an existing (compiled) lua lib from DIR/include and DIR/lib.])
+AC_HELP_STRING([--with-liblua=included], [Use the liblua version included with Nmap])
+AC_HELP_STRING([--without-liblua], [Compile without lua (this will exclude all of NSE from compilation)]),
+[ case "$with_liblua" in
+ yes)
+ ;;
+ included)
+ CPPFLAGS="-I\$(top_srcdir)/$LIBLUADIR $CPPFLAGS"
+ LIBLUA_LIBS="\$(top_srcdir)/$LIBLUADIR/liblua.a"
+ LUA_BUILD="build-lua"
+ LUA_CLEAN="clean-lua"
+ LUA_DIST_CLEAN="distclean-lua"
+ have_lua="yes"
+ AC_DEFINE(LUA_INCLUDED, 1, [Using included liblua])
+ ;;
+ no)
+ no_lua="yes"
+ ;;
+ *)
+ CPPFLAGS="-I$with_liblua/include $CPPFLAGS"
+ LDFLAGS="-L$with_liblua/lib $LDFLAGS"
+ ;;
+ esac]
+)
+
+# They don't want lua
+if test "$no_lua" = "yes"; then
+ trace_no_use="$trace_no_use lua"
+ CPPFLAGS="-DNOLUA $CPPFLAGS"
+ NOLUA="yes"
+ LUA_BUILD=""
+ LUA_CLEAN=""
+ LUA_DIST_CLEAN=""
+ INSTALLNSE=""
+
+else
+ trace_use="$trace_use lua"
+
+ # If they didn't specify it, we try to find it
+ if test $have_lua != yes; then
+ AC_CHECK_HEADERS([lua5.4/lua.h lua/5.4/lua.h lua.h lua/lua.h], [break])
+ AC_SEARCH_LIBS(lua_isyieldable, [lua5.4 lua54 lua], [have_lua=yes],, [-lm])
+ AC_LANG_PUSH(C)
+ # We need Lua 5.4 exactly
+ AC_MSG_CHECKING([for lua version == 504])
+ AC_PREPROC_IFELSE([ AC_LANG_PROGRAM( [[
+ #ifdef HAVE_LUA5_4_LUA_H
+ #include <lua5.4/lua.h>
+ #elif defined HAVE_LUA_5_4_LUA_H
+ #include <lua/5.4/lua.h>
+ #elif defined HAVE_LUA_H || defined LUA_INCLUDED
+ #include <lua.h>
+ #elif defined HAVE_LUA_LUA_H
+ #include <lua/lua.h>
+ #endif
+
+ #if (LUA_VERSION_NUM != 504)
+ #error Incorrect Lua version
+ #endif
+ ]],
+ [[if(LUA_VERSION_NUM != 504) return 1;]])
+ ],
+ [have_lua=yes], [have_lua=no])
+ AC_LANG_POP(C)
+
+ LUA_BUILD=""
+ LUA_CLEAN=""
+ LUA_DIST_CLEAN=""
+ fi
+
+ # if we didn't find we use our own
+ if test $have_lua != yes; then
+ AC_MSG_RESULT(no)
+ CPPFLAGS="-I\$(top_srcdir)/$LIBLUADIR $CPPFLAGS"
+ LIBLUA_LIBS="\$(top_srcdir)/$LIBLUADIR/liblua.a"
+ LUA_BUILD="build-lua"
+ LUA_CLEAN="clean-lua"
+ LUA_DIST_CLEAN="distclean-lua"
+ AC_DEFINE(LUA_INCLUDED, 1, [Using included liblua])
+ else
+ AC_MSG_RESULT(yes)
+ fi
+
+ INSTALLNSE="install-nse"
+ NSE_CHECK="check-nse"
+fi
+
+AC_SUBST(NOLUA)
+AC_SUBST(LIBLUA_LIBS)
+AC_SUBST(LIBLUADIR)
+AC_SUBST(LUA_BUILD)
+AC_SUBST(LUA_CLEAN)
+AC_SUBST(LUA_DIST_CLEAN)
+AC_SUBST(INSTALLNSE)
+AC_SUBST(NSE_CHECK)
+AC_SUBST(CXXFLAGS)
+AC_SUBST(CFLAGS)
+
+
+LIBLINEARDIR=liblinear
+have_liblinear=no
+
+# First we test whether they specified liblinear explicitly
+AC_ARG_WITH(liblinear,
+AC_HELP_STRING([--with-liblinear=DIR], [Use an existing (compiled) liblinear from DIR/include and DIR/lib.])
+AC_HELP_STRING([--with-liblinear=included], [Use the liblinear version included with Nmap]),
+[ case "$with_liblinear" in
+ yes)
+ ;;
+ included)
+ CPPFLAGS="-I\$(top_srcdir)/$LIBLINEARDIR $CPPFLAGS"
+ LIBLINEAR_LIBS="\$(top_srcdir)/$LIBLINEARDIR/liblinear.a"
+ LIBLINEAR_BUILD="build-liblinear"
+ LIBLINEAR_CLEAN="clean-liblinear"
+ LIBLINEAR_DIST_CLEAN="distclean-liblinear"
+ have_liblinear=yes
+ ;;
+ *)
+ CPPFLAGS="-I$with_liblinear/include $CPPFLAGS"
+ LDFLAGS="-L$with_liblinear/lib $LDFLAGS"
+ have_liblinear=yes
+ ;;
+ esac]
+)
+
+# If they didn't specify it, we try to find it
+if test $have_liblinear != yes; then
+ AC_CHECK_HEADERS([linear.h],
+ AC_CHECK_LIB(linear, predict, [have_liblinear=yes; LIBLINEAR_LIBS="-llinear"; break],, [-lm])
+ )
+
+ LIBLINEAR_BUILD=""
+ LIBLINEAR_CLEAN=""
+ LIBLINEAR_DIST_CLEAN=""
+fi
+
+# if we didn't find we use our own
+if test $have_liblinear != yes; then
+ AC_MSG_RESULT(no)
+ CPPFLAGS="-I\$(top_srcdir)/$LIBLINEARDIR $CPPFLAGS"
+ LIBLINEAR_LIBS="\$(top_srcdir)/$LIBLINEARDIR/liblinear.a"
+ LIBLINEAR_BUILD="build-liblinear"
+ LIBLINEAR_CLEAN="clean-liblinear"
+ LIBLINEAR_DIST_CLEAN="distclean-liblinear"
+ AC_DEFINE(LIBLINEAR_INCLUDED, 1, [Using included liblinear])
+else
+ AC_MSG_RESULT(yes)
+fi
+
+AC_SUBST(LIBLINEAR_LIBS)
+AC_SUBST(LIBLINEARDIR)
+AC_SUBST(LIBLINEAR_BUILD)
+AC_SUBST(LIBLINEAR_CLEAN)
+AC_SUBST(LIBLINEAR_DIST_CLEAN)
+
+
+#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, 1, [struct icmp is declared])
+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, 1, [struct ip is declared])
+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
+
+dnl Checks for library functions.
+AC_CHECK_FUNCS(strerror)
+RECVFROM_ARG6_TYPE
+
+AC_ARG_WITH(libnbase,
+AC_HELP_STRING([--with-libnbase=DIR], [Look for nbase include/libs in DIR]),
+[ case "$with_libnbase" in
+ yes)
+ ;;
+ *)
+ NBASEDIR="$with_libnbase"
+ NBASE_BUILD=""
+ ;;
+ esac],
+NBASE_BUILD="build-nbase"
+NBASEDIR="nbase"
+)
+
+LDFLAGS="$LDFLAGS -L$NBASEDIR"
+CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/$NBASEDIR"
+LIBNBASE_LIBS="-lnbase"
+
+AC_SUBST(NBASEDIR)
+AC_SUBST(NBASE_BUILD)
+AC_SUBST(LIBNBASE_LIBS)
+
+AC_CONFIG_SUBDIRS(nbase)
+
+NSOCKDIR="nsock"
+NSOCK_BUILD="build-nsock"
+NSOCK_CHECK="check-nsock"
+AC_ARG_WITH(libnsock,
+AC_HELP_STRING([--with-libnsock=DIR], [Compile and link to libnsock in DIR]),
+[ case "$with_libnsock" in
+ yes)
+ ;;
+ *)
+ NSOCKDIR="$with_libnsock"
+ NSOCK_BUILD=""
+ NSOCK_CHECK=""
+ ;;
+ esac]
+)
+
+LDFLAGS="$LDFLAGS -L$NSOCKDIR/src/"
+CPPFLAGS="$CPPFLAGS -I\$(top_srcdir)/$NSOCKDIR/include"
+LIBNSOCK_LIBS="-lnsock"
+
+AC_SUBST(NSOCKDIR)
+AC_SUBST(NSOCK_BUILD)
+AC_SUBST(NSOCK_CHECK)
+AC_SUBST(LIBNSOCK_LIBS)
+
+AC_CONFIG_SUBDIRS(nsock/src)
+
+NCATDIR="ncat"
+
+AC_ARG_WITH(ncat,
+ AC_HELP_STRING([--without-ncat], [Skip build and installation of Ncat]), [], [with_ncat=check])
+
+if test "$with_ncat" = "no"; then
+ trace_no_use="$trace_no_use ncat"
+ NCAT_BUILD=""
+ NCAT_CHECK=""
+ NCAT_INSTALL=""
+ NCAT_UNINSTALL=""
+ NCAT_CLEAN=""
+ NCAT_DIST_CLEAN=""
+else
+ trace_use="$trace_use ncat"
+ NCAT_BUILD="build-ncat"
+ NCAT_CHECK="check-ncat"
+ NCAT_INSTALL="install-ncat"
+ NCAT_UNINSTALL="uninstall-ncat"
+ NCAT_CLEAN="clean-ncat"
+ NCAT_DIST_CLEAN="distclean-ncat"
+ AC_CONFIG_SUBDIRS(ncat)
+fi
+
+AC_SUBST(NCATDIR)
+AC_SUBST(NCAT_BUILD)
+AC_SUBST(NCAT_CHECK)
+AC_SUBST(NCAT_INSTALL)
+AC_SUBST(NCAT_UNINSTALL)
+AC_SUBST(NCAT_CLEAN)
+AC_SUBST(NCAT_DIST_CLEAN)
+
+AC_OUTPUT(Makefile libnetutil/Makefile)
+
+# Krad ASCII ART#!#@$!@#$
+# Randomly store the name of one of the ASCII Art files in FILENAME
+FILENAME=`ls $srcdir/docs/leet-nmap-ascii-art*.txt 2>/dev/null | $AWK '
+ BEGIN {
+ srand();
+ }
+
+ {
+ lines[[++d]] = $0
+ }
+
+ END {
+ # This makes AWKs random numbers more random
+ print lines[[int(rand()*49139)%d+1]];
+ }
+ '`
+# Print the file to screen, if any such file exists (i.e. $FILENAME is not empty)
+if test "$FILENAME"; then
+ cat "$FILENAME"
+fi
+echo " NMAP IS A POWERFUL TOOL -- USE CAREFULLY AND RESPONSIBLY"
+
+echo "Configured with:$trace_use"
+echo "Configured without:$trace_no_use"
+echo "Type make (or gmake on some *BSD machines) to compile."
+
+if test "x$use_openssl" = "xno" && test "x$with_openssl" != "xno"; then
+ echo "WARNING: You are compiling without OpenSSL"
+fi
+
+if test "x$use_libssh2" != "xyes"; then
+ echo "WARNING: You are compiling without LibSSH2"
+fi