diff --git a/package/nmap/Config.in b/package/nmap/Config.in index 79f587afd1..c1aafeceb9 100644 --- a/package/nmap/Config.in +++ b/package/nmap/Config.in @@ -4,13 +4,56 @@ config BR2_PACKAGE_NMAP depends on BR2_USE_MMU # fork() depends on BR2_TOOLCHAIN_HAS_THREADS select BR2_PACKAGE_LIBPCAP - select BR2_PACKAGE_PCRE + select BR2_PACKAGE_NMAP_NMAP \ + if !BR2_PACKAGE_NMAP_NCAT && !BR2_PACKAGE_NMAP_NPING && !BR2_PACKAGE_NMAP_NDIFF help Nmap ("Network Mapper") is a free and open source (license) utility for network discovery and security auditing. http://nmap.org -comment "nmap needs a toolchain w/ C++, threads" +if BR2_PACKAGE_NMAP + +config BR2_PACKAGE_NMAP_NCAT + bool "install ncat" + depends on BR2_PACKAGE_BUSYBOX_SHOW_OTHERS + help + Ncat is a feature-packed networking utility which reads and + writes data across networks from the command line. Ncat was + written for the Nmap Project as a much-improved + reimplementation of the venerable Netcat. + + If symlink to "nc" is installed if neither netcat or + netcat-openbsd is selected. + +comment "a symlink from ncat to 'nc' will be installed" + depends on BR2_PACKAGE_NMAP_NCAT + depends on !BR2_PACKAGE_NETCAT + depends on !BR2_PACKAGE_NETCAT_OPENBSD + +config BR2_PACKAGE_NMAP_NDIFF + bool "install ndiff" + # ndiff only works with python2.x + depends on BR2_PACKAGE_PYTHON + help + This option installs the 'ndiff' tool. + +comment "ndiff needs Python 2.x" + depends on !BR2_PACKAGE_PYTHON + +config BR2_PACKAGE_NMAP_NMAP + bool "install nmap" + select BR2_PACKAGE_PCRE + help + This option installs 'nmap' itself. + +config BR2_PACKAGE_NMAP_NPING + bool "install nping" + help + This option installs the 'nping' tool. + +endif + +comment "nmap-nmap needs a toolchain w/ C++, threads" depends on BR2_USE_MMU depends on !(BR2_INSTALL_LIBSTDCPP && BR2_TOOLCHAIN_HAS_THREADS) diff --git a/package/nmap/nmap.mk b/package/nmap/nmap.mk index ceb08ec006..92a2be1b54 100644 --- a/package/nmap/nmap.mk +++ b/package/nmap/nmap.mk @@ -7,10 +7,9 @@ NMAP_VERSION = 7.60 NMAP_SITE = https://nmap.org/dist NMAP_SOURCE = nmap-$(NMAP_VERSION).tar.bz2 -NMAP_DEPENDENCIES = libpcap pcre host-autoconf +NMAP_DEPENDENCIES = libpcap host-autoconf NMAP_CONF_OPTS = --without-liblua --without-zenmap \ - --with-libdnet=included --with-liblinear=included \ - --with-libpcre="$(STAGING_DIR)/usr" --without-ncat + --with-libdnet=included --with-liblinear=included NMAP_LICENSE = GPL-2.0 NMAP_LICENSE_FILES = COPYING @@ -51,11 +50,52 @@ else NMAP_CONF_OPTS += --without-openssl endif -# ndiff only works with python2.x -ifeq ($(BR2_PACKAGE_PYTHON),y) +NMAP_INSTALL_TARGET_OPTS = DESTDIR=$(TARGET_DIR) + +ifeq ($(BR2_PACKAGE_NMAP_NCAT),y) +NMAP_CONF_OPTS += --with-ncat +NMAP_MAKE_OPTS += build-ncat +NMAP_INSTALL_TARGET_OPTS += install-ncat +else +NMAP_CONF_OPTS += --without-ncat +endif + +ifeq ($(BR2_PACKAGE_NMAP_NDIFF),y) NMAP_DEPENDENCIES += python +NMAP_CONF_OPTS += --with-ndiff +NMAP_MAKE_OPTS += build-ndiff +NMAP_INSTALL_TARGET_OPTS += install-ndiff else NMAP_CONF_OPTS += --without-ndiff endif +ifeq ($(BR2_PACKAGE_NMAP_NMAP),y) +NMAP_DEPENDENCIES += pcre +NMAP_CONF_OPTS += --with-libpcre="$(STAGING_DIR)/usr" +NMAP_MAKE_OPTS += nmap +NMAP_INSTALL_TARGET_OPTS += install-nmap +endif + +ifeq ($(BR2_PACKAGE_NMAP_NPING),y) +NMAP_CONF_OPTS += --with-nping +NMAP_MAKE_OPTS += build-nping +NMAP_INSTALL_TARGET_OPTS += install-nping +else +NMAP_CONF_OPTS += --without-nping +endif + +# If we are going to install ncat, ensure Busybox gets built/installed +# before, so that this package overrides Busybox nc. +ifeq ($(BR2_PACKAGE_NMAP_NCAT)$(BR2_PACKAGE_BUSYBOX),yy) +NMAP_DEPENDENCIES += busybox +endif + +# Add a symlink to "nc" if none of the competing netcats is selected +ifeq ($(BR2_PACKAGE_NMAP_NCAT):$(BR2_PACKAGE_NETCAT)$(BR2_PACKAGE_NETCAT_OPENBSD),y:) +define NMAP_INSTALL_NCAT_SYMLINK + ln -fs ncat $(TARGET_DIR)/usr/bin/nc +endef +NMAP_POST_INSTALL_TARGET_HOOKS += NMAP_INSTALL_NCAT_SYMLINK +endif + $(eval $(autotools-package))