aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohamed JAAFAR <mohamet.jaafar@gmail.com>2019-03-08 23:25:49 -0800
committerPhil Christensen <philc@microsoft.com>2019-03-08 23:25:49 -0800
commit9ba7210922bf14fe2310d0d2c69a0dbf3678476e (patch)
tree6feccc0f20fa40dafdc1b6cdaba15c284db70bd5
parenta14e462ef9bc5876d621e6d14b38092b5722bf0f (diff)
downloadvcpkg-9ba7210922bf14fe2310d0d2c69a0dbf3678476e.tar.gz
vcpkg-9ba7210922bf14fe2310d0d2c69a0dbf3678476e.zip
[nmap] Integration of nmap netwotk utilities(#5530) (#5545)
* [nmap] Integration of nmap netwotk utilities(#5530) * [nmap] adding openssl and openssh2 support * [nmap] Integration of nmap netwotk utilities(#5530) * [nmap] correction of the DIR option with-openssl and with-openssh
-rw-r--r--ports/nmap/CONTROL4
-rw-r--r--ports/nmap/build.sh24
-rw-r--r--ports/nmap/detect-crypto-library.patch75
-rw-r--r--ports/nmap/portfile.cmake134
-rw-r--r--ports/nmap/usage5
5 files changed, 242 insertions, 0 deletions
diff --git a/ports/nmap/CONTROL b/ports/nmap/CONTROL
new file mode 100644
index 000000000..8dcace63e
--- /dev/null
+++ b/ports/nmap/CONTROL
@@ -0,0 +1,4 @@
+Source: nmap
+Version: 7.70
+Build-Depends: winpcap, lua, openssl, python2, libssh2
+Description: A library for scanning network ports.
diff --git a/ports/nmap/build.sh b/ports/nmap/build.sh
new file mode 100644
index 000000000..f4e5d4b29
--- /dev/null
+++ b/ports/nmap/build.sh
@@ -0,0 +1,24 @@
+#!/usr/bin/bash
+set -e
+export PATH=/usr/bin:$PATH
+# Export HTTP(S)_PROXY as http(s)_proxy:
+if [ "$HTTP_PROXY" ]; then
+ export http_proxy=$HTTP_PROXY
+fi
+if [ "$HTTPS_PROXY" ]; then
+ export https_proxy=$HTTPS_PROXY
+fi
+
+PATH_TO_BUILD_DIR="`cygpath "$1"`"
+PATH_TO_SRC_DIR="`cygpath "$2"`"
+PATH_TO_PACKAGE_DIR="`cygpath "$3"`"
+# Note: $4 is extra configure options
+
+cd "$PATH_TO_BUILD_DIR"
+echo "=== CONFIGURING ==="
+echo "building nmap package $PATH_TO_SRC_DIR"
+"$PATH_TO_SRC_DIR/configure" CC=cl.exe LD=link.exe CXX=lc.exe "--prefix=$PATH_TO_PACKAGE_DIR" $4
+echo "=== BUILDING ==="
+make -j6
+echo "=== INSTALLING ==="
+make install
diff --git a/ports/nmap/detect-crypto-library.patch b/ports/nmap/detect-crypto-library.patch
new file mode 100644
index 000000000..243735b9e
--- /dev/null
+++ b/ports/nmap/detect-crypto-library.patch
@@ -0,0 +1,75 @@
+--- a/configure 2017-11-01 23:55:49.000000000 +0100
++++ b/configure 2019-03-05 03:35:21.753268300 +0100
+@@ -5989,13 +5989,13 @@
+
+ # use_openssl="yes" given explicitly in next 2 rules to avoid adding lib to $LIBS
+ if test "$use_openssl" = "yes"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BIO_int_ctrl in -lcrypto" >&5
+-$as_echo_n "checking for BIO_int_ctrl in -lcrypto... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BIO_int_ctrl in -llibeay32" >&5
++$as_echo_n "checking for BIO_int_ctrl in -llibeay32... " >&6; }
+ if ${ac_cv_lib_crypto_BIO_int_ctrl+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lcrypto $LIBS"
++LIBS="-llibeay32 $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+@@ -6030,23 +6030,23 @@
+ else
+ use_openssl="no"
+ if test "$with_openssl" = "yes"; then
+- as_fn_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." "$LINENO" 5
++ as_fn_error $? "OpenSSL was explicitly requested but libeay32 was not found. Try the --with-openssl=DIR argument to give the location of OpenSSL or run configure with --without-openssl." "$LINENO" 5
+ fi
+- { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed to find libcrypto so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&5
+-$as_echo "$as_me: WARNING: Failed to find libcrypto so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&2;}
++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed to find libeay32 so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&5
++$as_echo "$as_me: WARNING: Failed to find libeay32 so OpenSSL will not be used. If it is installed you can try the --with-openssl=DIR argument" >&2;}
+
+ fi
+
+ fi
+
+ if test "$use_openssl" = "yes"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssl" >&5
+-$as_echo_n "checking for SSL_new in -lssl... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSL_new in -lssleay32" >&5
++$as_echo_n "checking for SSL_new in -lssleay32... " >&6; }
+ if ${ac_cv_lib_ssl_SSL_new+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lssl -lcrypto $LIBS"
++LIBS="-lssleay32 -llibeay32 $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+@@ -6090,13 +6090,13 @@
+ fi
+
+ if test "$use_openssl" = "yes"; then
+- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_PKEY_get1_EC_KEY in -lcrypto" >&5
+-$as_echo_n "checking for EVP_PKEY_get1_EC_KEY in -lcrypto... " >&6; }
++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for EVP_PKEY_get1_EC_KEY in -llibeay32" >&5
++$as_echo_n "checking for EVP_PKEY_get1_EC_KEY in -llibeay32... " >&6; }
+ if ${ac_cv_lib_crypto_EVP_PKEY_get1_EC_KEY+:} false; then :
+ $as_echo_n "(cached) " >&6
+ else
+ ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lcrypto $LIBS"
++LIBS="-llibeay32 $LIBS"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h. */
+
+@@ -6144,7 +6144,7 @@
+
+ $as_echo "#define HAVE_OPENSSL 1" >>confdefs.h
+
+- OPENSSL_LIBS="-lssl -lcrypto"
++ OPENSSL_LIBS="-lssleay32 -llibeay32"
+ else
+ trace_no_use="$trace_no_use openssl"
+ fi
diff --git a/ports/nmap/portfile.cmake b/ports/nmap/portfile.cmake
new file mode 100644
index 000000000..5e2e05787
--- /dev/null
+++ b/ports/nmap/portfile.cmake
@@ -0,0 +1,134 @@
+include(vcpkg_common_functions)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "https://nmap.org/dist/nmap-7.70.tar.bz2"
+ FILENAME "nmap-7.70.tar.bz2"
+ SHA512 084c148b022ff6550e269d976d0077f7932a10e2ef218236fe13aa3a70b4eb6506df03329868fc68cb3ce78e4360b200f5a7a491d3145028fed679ef1c9ecae5
+)
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ REF ${SQLITE_VERSION}
+)
+
+vcpkg_extract_source_archive(${ARCHIVE})
+
+vcpkg_apply_patches(
+ SOURCE_PATH ${SOURCE_PATH}
+ PATCHES
+ ${CMAKE_CURRENT_LIST_DIR}/detect-crypto-library.patch
+)
+
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" AND VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ vcpkg_acquire_msys(MSYS_ROOT PACKAGES perl gcc diffutils make)
+else()
+ vcpkg_acquire_msys(MSYS_ROOT PACKAGES diffutils make)
+endif()
+set(BASH ${MSYS_ROOT}/usr/bin/bash.exe)
+set(ENV{INCLUDE} "${CURRENT_INSTALLED_DIR}/include;$ENV{INCLUDE}")
+set(ENV{LIB} "${CURRENT_INSTALLED_DIR}/lib;$ENV{LIB}")
+
+set(_csc_PROJECT_PATH nmap)
+
+file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
+
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ set(ENV{LIBPATH} "$ENV{LIBPATH};$ENV{_WKITS10}references\\windows.foundation.foundationcontract\\2.0.0.0\\;$ENV{_WKITS10}references\\windows.foundation.universalapicontract\\3.0.0.0\\")
+ set(OPTIONS "${OPTIONS} --disable-programs --enable-cross-compile --target-os=win32 --arch=${VCPKG_TARGET_ARCHITECTURE}")
+ set(OPTIONS "${OPTIONS} --extra-cflags=-DWINAPI_FAMILY=WINAPI_FAMILY_APP --extra-cflags=-D_WIN32_WINNT=0x0A00")
+
+ if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ vcpkg_find_acquire_program(GASPREPROCESSOR)
+ foreach(GAS_PATH ${GASPREPROCESSOR})
+ get_filename_component(GAS_ITEM_PATH ${GAS_PATH} DIRECTORY)
+ set(ENV{PATH} "$ENV{PATH};${GAS_ITEM_PATH}")
+ endforeach(GAS_PATH)
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ elseif (VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ else()
+ message(FATAL_ERROR "Unsupported architecture")
+ endif()
+endif()
+
+
+set(OPTIONS "--with-openssl=${VCPKG_ROOT_DIR}/installed/x64-windows/bin/ --with-libssh2=${VCPKG_ROOT_DIR}/installed/x64-windows/bin/")
+
+message(STATUS "Building Options: ${OPTIONS}")
+
+set(OPTIONS_DEBUG "") # Note: --disable-optimizations can't be used due to http://ffmpeg.org/pipermail/libav-user/2013-March/003945.html
+set(OPTIONS_RELEASE "")
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
+ set(OPTIONS "${OPTIONS} --disable-static --enable-shared")
+ if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
+ set(OPTIONS "${OPTIONS} --extra-ldflags=-APPCONTAINER --extra-ldflags=WindowsApp.lib")
+ endif()
+endif()
+
+message(STATUS "Building Options: ${OPTIONS}")
+
+message(STATUS "Building ${_csc_PROJECT_PATH} for Release")
+file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
+vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel" # BUILD DIR
+ "${SOURCE_PATH}" # SOURCE DIR
+ "${CURRENT_PACKAGES_DIR}" # PACKAGE DIR
+ "${OPTIONS} ${OPTIONS_RELEASE}"
+ WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel
+ LOGNAME build-${TARGET_TRIPLET}-rel
+)
+
+message(STATUS "Building ${_csc_PROJECT_PATH} for Debug")
+file(MAKE_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
+vcpkg_execute_required_process(
+ COMMAND ${BASH} --noprofile --norc "${CMAKE_CURRENT_LIST_DIR}\\build.sh"
+ "${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg" # BUILD DIR
+ "${SOURCE_PATH}" # SOURCE DIR
+ "${CURRENT_PACKAGES_DIR}/debug" # PACKAGE DIR
+ "${OPTIONS} ${OPTIONS_DEBUG}"
+ WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg
+ LOGNAME build-${TARGET_TRIPLET}-dbg
+)
+
+file(GLOB DEF_FILES ${CURRENT_PACKAGES_DIR}/lib/*.def ${CURRENT_PACKAGES_DIR}/debug/lib/*.def)
+
+if(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
+ set(LIB_MACHINE_ARG /machine:ARM)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
+ set(LIB_MACHINE_ARG /machine:x86)
+elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
+ set(LIB_MACHINE_ARG /machine:x64)
+else()
+ message(FATAL_ERROR "Unsupported target architecture")
+endif()
+
+foreach(DEF_FILE ${DEF_FILES})
+ get_filename_component(DEF_FILE_DIR "${DEF_FILE}" DIRECTORY)
+ get_filename_component(DEF_FILE_NAME "${DEF_FILE}" NAME)
+ string(REGEX REPLACE "-[0-9]*\\.def" ".lib" OUT_FILE_NAME "${DEF_FILE_NAME}")
+ file(TO_NATIVE_PATH "${DEF_FILE}" DEF_FILE_NATIVE)
+ file(TO_NATIVE_PATH "${DEF_FILE_DIR}/${OUT_FILE_NAME}" OUT_FILE_NATIVE)
+ message(STATUS "Generating ${OUT_FILE_NATIVE}")
+ vcpkg_execute_required_process(
+ COMMAND lib.exe /def:${DEF_FILE_NATIVE} /out:${OUT_FILE_NATIVE} ${LIB_MACHINE_ARG}
+ WORKING_DIRECTORY ${CURRENT_PACKAGES_DIR}
+ LOGNAME libconvert-${TARGET_TRIPLET}
+ )
+endforeach()
+
+file(GLOB EXP_FILES ${CURRENT_PACKAGES_DIR}/lib/*.exp ${CURRENT_PACKAGES_DIR}/debug/lib/*.exp)
+file(GLOB LIB_FILES ${CURRENT_PACKAGES_DIR}/bin/*.lib ${CURRENT_PACKAGES_DIR}/debug/bin/*.lib)
+file(GLOB EXE_FILES ${CURRENT_PACKAGES_DIR}/bin/*.exe ${CURRENT_PACKAGES_DIR}/debug/bin/*.exe)
+set(FILES_TO_REMOVE ${EXP_FILES} ${LIB_FILES} ${DEF_FILES} ${EXE_FILES})
+list(LENGTH FILES_TO_REMOVE FILES_TO_REMOVE_LEN)
+if(FILES_TO_REMOVE_LEN GREATER 0)
+ file(REMOVE ${FILES_TO_REMOVE})
+endif()
+file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include ${CURRENT_PACKAGES_DIR}/debug/share)
+
+vcpkg_copy_pdbs()
+
+# Handle copyright
+# TODO: Examine build log and confirm that this license matches the build output
+file(RENAME ${CURRENT_PACKAGES_DIR}/COPYING ${CURRENT_PACKAGES_DIR}/copyright)
diff --git a/ports/nmap/usage b/ports/nmap/usage
new file mode 100644
index 000000000..d910c7d2e
--- /dev/null
+++ b/ports/nmap/usage
@@ -0,0 +1,5 @@
+The package curl is compatible with built-in CMake targets:
+
+ find_package(NMAP REQUIRED)
+ target_link_libraries(main PRIVATE ${NMAP_LIBRARIES})
+ target_include_directories(main PRIVATE ${NMAP_INCLUDE_DIRS})