diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:42:04 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:42:04 +0000 |
commit | 0d47952611198ef6b1163f366dc03922d20b1475 (patch) | |
tree | 3d840a3b8c0daef0754707bfb9f5e873b6b1ac13 /nsock/src/configure.ac | |
parent | Initial commit. (diff) | |
download | nmap-upstream.tar.xz nmap-upstream.zip |
Adding upstream version 7.94+git20230807.3be01efb1+dfsg.upstream/7.94+git20230807.3be01efb1+dfsgupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'nsock/src/configure.ac')
-rw-r--r-- | nsock/src/configure.ac | 317 |
1 files changed, 317 insertions, 0 deletions
diff --git a/nsock/src/configure.ac b/nsock/src/configure.ac new file mode 100644 index 0000000..1f035cf --- /dev/null +++ b/nsock/src/configure.ac @@ -0,0 +1,317 @@ +# Require autoconf 2.13 -*- mode: fundamental; -*- + +# Because nsock is usually distributed with Nmap, the necessary files +# config.guess, config.guess, and install-sh are not distributed with +# nbase. Rather they are gotten from Nmap. + +AC_PREREQ(2.13) + +dnl Process this file with autoconf to produce a configure script. +AC_INIT(nsock_core.c) + +dnl Find the Nmap source for nbase, etc. +if test "${top_nmap_srcdir+set}" != set; then + top_nmap_srcdir=../.. + export top_nmap_srcdir +fi + +dnl Generate these files +AC_CONFIG_FILES([Makefile ../tests/Makefile]) + +dnl use nsock_config.h instad of -D macros +AC_CONFIG_HEADER(../include/nsock_config.h) + +dnl Host specific hacks +AC_CANONICAL_HOST + +AH_TEMPLATE(SOLARIS, [Sun/Oracle Solaris]) +AH_TEMPLATE(IRIX, [IRIX]) + +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]) + ;; + *-sgi-irix5*) + AC_DEFINE(IRIX) + ;; + *-sgi-irix6*) + AC_DEFINE(IRIX) + ;; + *-hpux*) + AC_DEFINE(HPUX, 1, [HP-UX]) + ;; + *-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, [BPF packet capture on Solaris]) + ;; + *-solaris2.0*) + AC_DEFINE(SOLARIS) + ;; + *-solaris2.[[1-9]][[0-9]]*) + AC_DEFINE(SOLARIS) + ;; + *-solaris2.1*) + AC_DEFINE(SOLARIS) + ;; + *-solaris2.2*) + AC_DEFINE(SOLARIS) + ;; + *-solaris2.3*) + AC_DEFINE(SOLARIS) + ;; + *-solaris2.4*) + AC_DEFINE(SOLARIS) + ;; + *-solaris2.5.1) + AC_DEFINE(SOLARIS) + ;; + *-solaris*) + AC_DEFINE(SOLARIS) + ;; + *-sunos4*) + AC_DEFINE(SUNOS, 1, [SunOS 4]) + ;; + *-linux*) + AC_DEFINE(LINUX, 1, [Linux]) + ;; + *-freebsd* | *-kfreebsd*-gnu | *-dragonfly*) + AC_DEFINE(FREEBSD, 1, [FreeBSD]) + ;; + *-bsdi*) + AC_DEFINE(BSDI, 1, [BSD/OS]) + ;; + *-apple-darwin*) + AC_DEFINE(MACOSX, 1, [Apple OS X]) + ;; +esac + + +AC_ARG_WITH(localdirs, + [ --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 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 headers in DIR/include.]) +AC_HELP_STRING([--with-libpcap=included], [Always use version included with Nmap]) +AC_HELP_STRING([--without-libpcap], [Disable pcap functions.]), +[ case "$with_libpcap" in + yes) + AC_CHECK_HEADER(pcap.h,[ + have_libpcap=yes + LIBPCAP_LIBS=-lpcap ]) + ;; + included) + have_libpcap=no + ;; + 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_LIBS=-lpcap + LIBPCAP_INC=$with_libpcap/include + LIBPCAP_LIB=$with_libpcap/lib])]) + + LDFLAGS=$_ldflags + CPPFLAGS=$_cppflags + ;; + esac] +) + +if test "$with_libpcap" != "no" -a "$have_libpcap" = "no"; then + LIBPCAP_INC=${top_nmap_srcdir}/libpcap + LIBPCAP_LIB=${top_nmap_srcdir}/libpcap + LIBPCAP_LIBS=${LIBPCAP_LIB}/libpcap.a + have_libpcap=yes + AC_DEFINE(HAVE_PCAP_SET_IMMEDIATE_MODE, 1, [Included libpcap has pcap_set_immediate_mode]) +else + # 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" +fi + +if test "$have_libpcap" != "no"; then + AC_DEFINE(HAVE_PCAP, 1, [libpcap is available]) + if test "${LIBPCAP_INC+set}" = "set"; then + CPPFLAGS="-I$LIBPCAP_INC $CPPFLAGS" + LDFLAGS="-L$LIBPCAP_LIB $LDFLAGS" + fi +fi +AC_SUBST(LIBPCAP_LIBS) + +AX_HAVE_EPOLL([AC_DEFINE(HAVE_EPOLL, 1, [epoll is available])], ) +AX_HAVE_POLL([AC_DEFINE(HAVE_POLL, 1, [poll is available])], ) +AC_CHECK_FUNCS(kqueue kevent, [AC_DEFINE(HAVE_KQUEUE)], ) + +dnl Checks for programs. +AC_PROG_CC + if test -n "$GCC"; then + CFLAGS="$CFLAGS -Wall " + fi +AC_PROG_RANLIB +dnl AC_PROG_INSTALL +dnl AC_PATH_PROG(MAKEDEPEND, makedepend) + +dnl Checks for libraries. +dnl AC_CHECK_LIB(m, pow) + +dnl If any socket libraries needed +AC_CHECK_FUNC(gethostent, , AC_CHECK_LIB(nsl, gethostent)) +AC_CHECK_FUNC(setsockopt, , AC_CHECK_LIB(socket, setsockopt)) + +dnl need posix4/nanosleep for solaris 2.4 +AC_CHECK_FUNC(nanosleep, , AC_CHECK_LIB(posix4, nanosleep)) + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(net/bpf.h sys/ioctl.h sys/un.h netdb.h) +AC_CHECK_HEADERS([linux/vm_sockets.h], , , [#include <sys/socket.h>]) + +# 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 requires dlopen on some platforms +AC_SEARCH_LIBS(dlopen, dl) + +OPENSSL_LIBS= +if test "$use_openssl" = "yes"; then + AC_DEFINE(HAVE_OPENSSL, 1, [openssl is available]) + OPENSSL_LIBS="-lssl -lcrypto" + LIBS_TMP="$LIBS" + LIBS="$OPENSSL_LIBS $LIBS" + AC_MSG_CHECKING([for SSL_set_tlsext_host_name]) + AC_TRY_LINK([#include <openssl/ssl.h>], [SSL_set_tlsext_host_name(NULL, NULL)], + [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_SSL_SET_TLSEXT_HOST_NAME, 1, [SSL_set_tlsext_host_name available])], + [AC_MSG_RESULT([no])]) + AC_MSG_CHECKING([for DTLS_client_method]) + AC_TRY_LINK([#include <openssl/ssl.h>], [DTLS_client_method()], + [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_DTLS_CLIENT_METHOD, 1, [DTLS_client_method available])], + [AC_MSG_RESULT([no])]) + AC_MSG_CHECKING([for SSL_set_alpn_protos]) + AC_TRY_LINK([#include <openssl/ssl.h>], [SSL_set_alpn_protos(NULL, NULL, 0)], + [AC_MSG_RESULT([yes]); AC_DEFINE(HAVE_ALPN_SUPPORT, 1, [SSL ALPN protos support])], + [AC_MSG_RESULT([no])]) + LIBS="$LIBS_TMP" + +fi + +AC_SUBST(OPENSSL_LIBS) + +dnl Checks for typedefs, structures, and compiler characteristics. + +AC_ARG_WITH(libnbase, +[ --with-libnbase=DIR Look for nbase include/libs in DIR], +[ case "$with_libnbase" in + yes) + ;; + *) + NBASEDIR="$with_libnbase" + ;; + esac], +NBASEDIR="${top_nmap_srcdir}/nbase" +) + +NSOCKTESTDIR="../tests" + +LDFLAGS="$LDFLAGS -L$NBASEDIR" +CPPFLAGS="$CPPFLAGS -I$NBASEDIR" +LIBNBASE_LIBS="$LIBS -lnbase" + +AC_SUBST(LIBNBASE_LIBS) +AC_SUBST(NBASEDIR) +AC_SUBST(NSOCKTESTDIR) + +AC_SUBST(CFLAGS) + +AC_OUTPUT() |