mirror of
https://github.com/nmap/nmap.git
synced 2025-12-12 10:49:02 +00:00
$ svn merge -r r33518:r33513 . and removed added scripts to the script.db. The branch needs further refinement/testing for Windows and Mac before merging into the trunk. There is also the latent EOF bug which is giving performance issues. Further work on the branch will continue in Devin's latest branch: /nmap-exp/devin/nmap-libssh2
972 lines
26 KiB
Plaintext
972 lines
26 KiB
Plaintext
# 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
|
|
|
|
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
|
|
|
|
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)
|
|
|
|
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
|
|
|
|
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
|
|
|
|
# Remember that all following tests will run with this CXXFLAGS by default
|
|
AC_MSG_CHECKING(for __func__)
|
|
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"
|
|
|
|
case "$host" in
|
|
*alpha-dec-osf*)
|
|
AC_DEFINE(DEC)
|
|
;;
|
|
*-netbsd* | *-knetbsd*-gnu)
|
|
AC_DEFINE(NETBSD)
|
|
LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
|
|
;;
|
|
*-openbsd*)
|
|
AC_DEFINE(OPENBSD)
|
|
LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
|
|
;;
|
|
*-freebsd* | *-kfreebsd*-gnu | *-dragonfly*)
|
|
AC_DEFINE(FREEBSD)
|
|
LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
|
|
;;
|
|
*-bsdi*)
|
|
AC_DEFINE(BSDI)
|
|
;;
|
|
*-sgi-irix5* | *-sgi-irix6*)
|
|
AC_DEFINE(IRIX)
|
|
;;
|
|
*-hpux*)
|
|
AC_DEFINE(HPUX)
|
|
# 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)
|
|
;;
|
|
*-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)
|
|
AC_DEFINE(SPRINTF_RETURNS_STRING)
|
|
;;
|
|
*-linux*)
|
|
AC_DEFINE(LINUX)
|
|
LDFLAGS="-Wl,-E $LDFLAGS" # needed for nse-C-module support
|
|
;;
|
|
*-apple-darwin*)
|
|
AC_DEFINE(MACOSX)
|
|
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)
|
|
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
|
|
|
|
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 test "$with_ndiff" != "no"; then
|
|
AM_PATH_PYTHON([2.4], [],
|
|
[if test "$with_ndiff" = "check"; then
|
|
AC_MSG_WARN([Not building Ndiff because Python 2.4 or later was not found])
|
|
else
|
|
AC_MSG_FAILURE([--with-ndiff requires Python 2.4 or later])
|
|
fi
|
|
with_ndiff=no])
|
|
fi
|
|
if test "$with_ndiff" = "no"; then
|
|
BUILDNDIFF=""
|
|
INSTALLNDIFF=""
|
|
NDIFF_CHECK=""
|
|
NDIFF_CLEAN=""
|
|
NDIFF_DIST_CLEAN=""
|
|
else
|
|
BUILDNDIFF=build-ndiff
|
|
INSTALLNDIFF=install-ndiff
|
|
NDIFF_CHECK="ndiff_check"
|
|
NDIFF_CLEAN=ndiff_clean
|
|
NDIFF_DIST_CLEAN=ndiff_dist_clean
|
|
fi
|
|
AC_SUBST(NDIFFDIR)
|
|
AC_SUBST(BUILDNDIFF)
|
|
AC_SUBST(INSTALLNDIFF)
|
|
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 test "$with_zenmap" != "no"; then
|
|
AM_PATH_PYTHON([2.4], [],
|
|
[if test "$with_zenmap" = "check"; then
|
|
AC_MSG_WARN([Not building Zenmap because Python 2.4 or later was not found])
|
|
else
|
|
AC_MSG_FAILURE([--with-zenmap requires Python 2.4 or later])
|
|
fi
|
|
with_zenmap=no])
|
|
fi
|
|
if test "$with_zenmap" = "no"; then
|
|
BUILDZENMAP=""
|
|
INSTALLZENMAP=""
|
|
UNINSTALLZENMAP=""
|
|
ZENMAP_CHECK=""
|
|
ZENMAP_CLEAN=""
|
|
ZENMAP_DIST_CLEAN=""
|
|
else
|
|
BUILDZENMAP=build-zenmap
|
|
INSTALLZENMAP=install-zenmap
|
|
UNINSTALLZENMAP=uninstall-zenmap
|
|
ZENMAP_CHECK=zenmap_check
|
|
ZENMAP_CLEAN=zenmap_clean
|
|
ZENMAP_DIST_CLEAN=zenmap_dist_clean
|
|
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
|
|
BUILDNPING=""
|
|
INSTALLNPING=""
|
|
UNINSTALLNPING=""
|
|
NPING_CLEAN=""
|
|
NPING_DIST_CLEAN=""
|
|
else
|
|
BUILDNPING=build-nping
|
|
INSTALLNPING=install-nping
|
|
UNINSTALLNPING=uninstall-nping
|
|
NPING_CLEAN=nping_clean
|
|
NPING_DIST_CLEAN=nping_dist_clean
|
|
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)
|
|
|
|
# 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)
|
|
OPENSSL_LIBS="-lssl -lcrypto"
|
|
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_datalink,
|
|
[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_datalink,
|
|
[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_DEPENDS='$(LIBPCAPDIR)/libpcap.a'
|
|
PCAP_BUILD="pcap_build"
|
|
PCAP_CLEAN="pcap_clean"
|
|
PCAP_DIST_CLEAN="pcap_dist_clean"
|
|
AC_DEFINE(PCAP_INCLUDED)
|
|
|
|
# libpcap can require libnl
|
|
AC_SEARCH_LIBS(nl_handle_alloc, nl)
|
|
else
|
|
AC_DEFINE(HAVE_LIBPCAP)
|
|
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)
|
|
|
|
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) pcre 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(pcre.h,
|
|
AC_CHECK_LIB(pcre, pcre_version, [have_pcre=yes ]),
|
|
[AC_CHECK_HEADER(pcre/pcre.h,
|
|
[AC_CHECK_LIB(pcre, pcre_version, [have_pcre=yes])]
|
|
)]
|
|
)
|
|
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 $CPPFLAGS"
|
|
LIBPCRE_LIBS="$LIBPCREDIR/libpcre.a"
|
|
PCRE_DEPENDS="$LIBPCREDIR/libpcre.a"
|
|
PCRE_BUILD="pcre_build"
|
|
PCRE_CLEAN="pcre_clean"
|
|
PCRE_DIST_CLEAN="pcre_dist_clean"
|
|
AC_DEFINE(PCRE_INCLUDED)
|
|
else
|
|
# We only need to check for and use this if we are NOT using included pcre
|
|
AC_CHECK_HEADERS(pcre/pcre.h)
|
|
LIBPCRE_LIBS="-lpcre"
|
|
PCRE_DEPENDS=""
|
|
PCRE_BUILD=""
|
|
PCRE_CLEAN=""
|
|
PCRE_DIST_CLEAN=""
|
|
fi
|
|
|
|
AC_SUBST(LIBPCRE_LIBS)
|
|
AC_SUBST(LIBPCREDIR)
|
|
AC_SUBST(PCRE_DEPENDS)
|
|
AC_SUBST(PCRE_BUILD)
|
|
AC_SUBST(PCRE_CLEAN)
|
|
AC_SUBST(PCRE_DIST_CLEAN)
|
|
|
|
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 http://nmap.org/svn/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_DEPENDS="\$(top_srcdir)/$LIBDNETDIR/src/.libs/libdnet.a"
|
|
DNET_BUILD="dnet_build"
|
|
DNET_CLEAN="dnet_clean"
|
|
DNET_DIST_CLEAN="dnet_dist_clean"
|
|
AC_DEFINE(DNET_INCLUDED)
|
|
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)
|
|
|
|
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_DEPENDS="\$(top_srcdir)/$LIBLUADIR/liblua.a"
|
|
LUA_BUILD="lua_build"
|
|
LUA_CLEAN="lua_clean"
|
|
LUA_DIST_CLEAN="lua_dist_clean"
|
|
have_lua="yes"
|
|
|
|
;;
|
|
no)
|
|
no_lua="yes"
|
|
;;
|
|
*)
|
|
CPPFLAGS="-I$with_liblua/include $CPPFLAGS"
|
|
LDFLAGS="-L$with_liblua/lib $LDFLAGS"
|
|
;;
|
|
esac]
|
|
)
|
|
|
|
# OpenSSL and NSE C modules can require dlopen
|
|
AC_SEARCH_LIBS(dlopen, dl)
|
|
|
|
# They don't want lua
|
|
if test "$no_lua" = "yes"; then
|
|
CPPFLAGS="-DNOLUA $CPPFLAGS"
|
|
LIBLUA_LIBS=""
|
|
LUA_DEPENDS=""
|
|
LUA_BUILD=""
|
|
LUA_CLEAN=""
|
|
LUA_DIST_CLEAN=""
|
|
INSTALLNSE=""
|
|
|
|
else
|
|
|
|
# If they didn't specify it, we try to find it
|
|
if test $have_lua != yes; then
|
|
AC_CHECK_HEADERS([lua.h lua/lua.h lua5.2/lua.h],
|
|
AC_CHECK_LIB(lua, lua_yieldk, [have_lua=yes; LIBLUA_LIBS="-llua"; CPPFLAGS="-I/usr/include/lua $CPPFLAGS"; break],, [-lm])
|
|
AC_CHECK_LIB(lua52, lua_yieldk, [have_lua=yes; LIBLUA_LIBS="-llua52"; CPPFLAGS="-I/usr/include/lua52 $CPPFLAGS"; break],, [-lm])
|
|
AC_CHECK_LIB(lua5.2, lua_yieldk, [have_lua=yes; LIBLUA_LIBS="-llua5.2"; CPPFLAGS="-I/usr/include/lua5.2 $CPPFLAGS"; break],, [-lm])
|
|
)
|
|
|
|
AC_LANG_PUSH(C++)
|
|
AC_MSG_CHECKING([for lua version >= 502])
|
|
AC_RUN_IFELSE([ AC_LANG_PROGRAM(
|
|
[[#include <lua.h>]],
|
|
[[if(LUA_VERSION_NUM < 502) return 1;]])],
|
|
have_lua=yes, have_lua=no, AC_MSG_RESULT(cross-compiling -- assuming yes); have_lua=yes)
|
|
AC_LANG_POP(C++)
|
|
|
|
LUA_DEPENDS=""
|
|
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_DEPENDS="\$(top_srcdir)/$LIBLUADIR/liblua.a"
|
|
LUA_BUILD="lua_build"
|
|
LUA_CLEAN="lua_clean"
|
|
LUA_DIST_CLEAN="lua_dist_clean"
|
|
AC_DEFINE(LUA_INCLUDED)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
fi
|
|
|
|
INSTALLNSE="install-nse"
|
|
NSE_CHECK="nse_check"
|
|
fi
|
|
|
|
AC_SUBST(LIBLUA_LIBS)
|
|
AC_SUBST(LIBLUADIR)
|
|
AC_SUBST(LUA_DEPENDS)
|
|
AC_SUBST(LUA_BUILD)
|
|
AC_SUBST(LUA_CLEAN)
|
|
AC_SUBST(LUA_DIST_CLEAN)
|
|
AC_SUBST(INSTALLNSE)
|
|
AC_SUBST(NSE_CHECK)
|
|
AC_SUBST(CXXFLAGS)
|
|
|
|
|
|
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_DEPENDS="\$(top_srcdir)/$LIBLINEARDIR/liblinear.a"
|
|
LIBLINEAR_BUILD="liblinear_build"
|
|
LIBLINEAR_CLEAN="liblinear_clean"
|
|
LIBLINEAR_DIST_CLEAN="liblinear_dist_clean"
|
|
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_DEPENDS=""
|
|
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_DEPENDS="\$(top_srcdir)/$LIBLINEARDIR/liblinear.a"
|
|
LIBLINEAR_BUILD="liblinear_build"
|
|
LIBLINEAR_CLEAN="liblinear_clean"
|
|
LIBLINEAR_DIST_CLEAN="liblinear_dist_clean"
|
|
AC_DEFINE(LIBLINEAR_INCLUDED)
|
|
else
|
|
AC_MSG_RESULT(yes)
|
|
fi
|
|
|
|
AC_SUBST(LIBLINEAR_LIBS)
|
|
AC_SUBST(LIBLINEARDIR)
|
|
AC_SUBST(LIBLINEAR_DEPENDS)
|
|
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)])
|
|
|
|
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)
|
|
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="nbase_build"
|
|
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="nsock_build"
|
|
NSOCK_CHECK="nsock_check"
|
|
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
|
|
NCAT_BUILD=""
|
|
NCAT_CHECK=""
|
|
NCAT_INSTALL=""
|
|
NCAT_UNINSTALL=""
|
|
NCAT_CLEAN=""
|
|
NCAT_DIST_CLEAN=""
|
|
else
|
|
NCAT_BUILD="ncat_build"
|
|
NCAT_CHECK="ncat_check"
|
|
NCAT_INSTALL="install-ncat"
|
|
NCAT_UNINSTALL="uninstall-ncat"
|
|
NCAT_CLEAN="ncat_clean"
|
|
NCAT_DIST_CLEAN="ncat_dist_clean"
|
|
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_ARG_WITH([nmap-update],
|
|
AC_HELP_STRING([--without-nmap-update], [Skip build and installation of nmap-update]), [], [with_nmap_update=check])
|
|
|
|
APR_FIND_APR(, , 1, 1)
|
|
if test "$apr_found" = "no"; then
|
|
with_nmap_update=no
|
|
fi
|
|
|
|
AC_ARG_WITH(subversion,
|
|
AC_HELP_STRING([--with-subversion=DIR], [Look for libsvn1 in DIR/include and DIR/libs.]),
|
|
[
|
|
case "$with_subversion" in
|
|
yes)
|
|
;;
|
|
no)
|
|
with_nmap_update=no
|
|
;;
|
|
*)
|
|
CPPFLAGS="-I$with_subversion/include $CPPFLAGS"
|
|
LDFLAGS="-L$with_subversion/lib $LDFLAGS"
|
|
;;
|
|
esac
|
|
])
|
|
|
|
if test "$with_nmap_update" != "no"; then
|
|
have_libsvn=yes
|
|
if test "$have_libsvn" = "yes"; then
|
|
old_CPPFLAGS="$CPPFLAGS"
|
|
CPPFLAGS="$CPPFLAGS $($apr_config --cppflags --includes)"
|
|
AC_CHECK_HEADER([svn_client.h], [], [
|
|
AC_CHECK_HEADER([subversion-1/svn_client.h], [], [have_libsvn=no])
|
|
])
|
|
CPPFLAGS="$old_CPPFLAGS"
|
|
fi
|
|
if test "$have_libsvn" = "yes"; then
|
|
AC_CHECK_LIB([svn_client-1], [svn_client_create_context], [], [have_libsvn=no])
|
|
fi
|
|
if test "$have_libsvn" != "yes"; then
|
|
if test "$with_nmap_update" = "check"; then
|
|
AC_MSG_WARN([Not building nmap-update because libsvn1 was not found])
|
|
else
|
|
AC_MSG_FAILURE([--with-nmap-update requires libsvn1])
|
|
fi
|
|
with_nmap_update=no
|
|
else
|
|
with_nmap_update=yes
|
|
fi
|
|
fi
|
|
|
|
if test "$with_nmap_update" = "no"; then
|
|
NMAP_UPDATE_BUILD=""
|
|
NMAP_UPDATE_INSTALL=""
|
|
NMAP_UPDATE_UNINSTALL=""
|
|
NMAP_UPDATE_CLEAN=""
|
|
NMAP_UPDATE_DIST_CLEAN=""
|
|
else
|
|
AC_CONFIG_SUBDIRS(nmap-update)
|
|
NMAP_UPDATE_BUILD="build-nmap-update"
|
|
NMAP_UPDATE_INSTALL="install-nmap-update"
|
|
NMAP_UPDATE_UNINSTALL="uninstall-nmap-update"
|
|
NMAP_UPDATE_CLEAN="clean-nmap-update"
|
|
NMAP_UPDATE_DIST_CLEAN="distclean-nmap-update"
|
|
fi
|
|
|
|
AC_SUBST(NMAP_UPDATE_BUILD)
|
|
AC_SUBST(NMAP_UPDATE_INSTALL)
|
|
AC_SUBST(NMAP_UPDATE_UNINSTALL)
|
|
AC_SUBST(NMAP_UPDATE_CLEAN)
|
|
AC_SUBST(NMAP_UPDATE_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 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 "Configuration complete. Type make (or gmake on some *BSD machines) to compile."
|