aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libssh
diff options
context:
space:
mode:
Diffstat (limited to 'vcpkg/ports/libssh')
-rw-r--r--vcpkg/ports/libssh/0001-export-pkgconfig-file.patch75
-rw-r--r--vcpkg/ports/libssh/0003-no-source-write.patch15
-rw-r--r--vcpkg/ports/libssh/0004-file-permissions-constants.patch16
-rw-r--r--vcpkg/ports/libssh/android-glob-tilde.diff28
-rw-r--r--vcpkg/ports/libssh/portfile.cmake62
-rw-r--r--vcpkg/ports/libssh/vcpkg.json46
6 files changed, 242 insertions, 0 deletions
diff --git a/vcpkg/ports/libssh/0001-export-pkgconfig-file.patch b/vcpkg/ports/libssh/0001-export-pkgconfig-file.patch
new file mode 100644
index 0000000..3c5d146
--- /dev/null
+++ b/vcpkg/ports/libssh/0001-export-pkgconfig-file.patch
@@ -0,0 +1,75 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 9877cd7..5177904 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -42,8 +42,11 @@ macro_ensure_out_of_source_build("${PROJECT_NAME} requires an out of source buil
+ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
+
+ # search for libraries
++set(PC_LIBS_PRIVATE "")
++set(PC_REQUIRES_PRIVATE "")
+ if (WITH_ZLIB)
+ find_package(ZLIB REQUIRED)
++ string(APPEND PC_REQUIRES_PRIVATE "zlib")
+ endif (WITH_ZLIB)
+
+ if (WITH_GCRYPT)
+@@ -53,6 +56,7 @@ elseif(WITH_MBEDTLS)
+ find_package(MbedTLS REQUIRED)
+ else()
+ find_package(OpenSSL 1.1.1 REQUIRED)
++ string(APPEND PC_REQUIRES_PRIVATE " libcrypto")
+ endif()
+
+ if (UNIT_TESTING)
+@@ -96,7 +100,7 @@ add_subdirectory(include)
+ add_subdirectory(src)
+
+ # pkg-config file
+-if (UNIX OR MINGW)
++if (1)
+ configure_file(libssh.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libssh.pc @ONLY)
+ install(
+ FILES
+@@ -106,7 +110,7 @@ install(
+ COMPONENT
+ pkgconfig
+ )
+-endif (UNIX OR MINGW)
++endif (1)
+
+ # CMake config files
+ include(CMakePackageConfigHelpers)
+diff --git a/libssh.pc.cmake b/libssh.pc.cmake
+index f288b94..759525c 100644
+--- a/libssh.pc.cmake
++++ b/libssh.pc.cmake
+@@ -7,4 +7,6 @@ Name: @PROJECT_NAME@
+ Description: The SSH Library
+ Version: @PROJECT_VERSION@
+ Libs: -L${libdir} -lssh
++Libs.private: @PC_LIBS_PRIVATE@
++Requires.private: @PC_REQUIRES_PRIVATE@
+ Cflags: -I${includedir}
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index e0243bb..b17d9e2 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -54,6 +54,8 @@ if (MINGW AND Threads_FOUND)
+ ${LIBSSH_LINK_LIBRARIES}
+ Threads::Threads
+ )
++ string(APPEND PC_LIBS_PRIVATE " ${CMAKE_THREAD_LIBS_INIT}")
++ set(PC_LIBS_PRIVATE "${PC_LIBS_PRIVATE}" PARENT_SCOPE)
+ endif()
+
+ # The ws2_32 needs to be last for mingw to build
+@@ -64,6 +66,8 @@ if (WIN32)
+ iphlpapi
+ ws2_32
+ )
++ string(APPEND PC_LIBS_PRIVATE " -liphlpapi -lws2_32 -lshell32 -ladvapi32")
++ set(PC_LIBS_PRIVATE "${PC_LIBS_PRIVATE}" PARENT_SCOPE)
+ endif (WIN32)
+
+ if (BUILD_STATIC_LIB)
diff --git a/vcpkg/ports/libssh/0003-no-source-write.patch b/vcpkg/ports/libssh/0003-no-source-write.patch
new file mode 100644
index 0000000..55db9b0
--- /dev/null
+++ b/vcpkg/ports/libssh/0003-no-source-write.patch
@@ -0,0 +1,15 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e97c900..0b676dc 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -213,9 +213,7 @@ add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source DEPENDS ${_S
+ get_directory_property(hasParent PARENT_DIRECTORY)
+ if(NOT(hasParent))
+ # Link compile database for clangd if we are the master project
+- execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink
+- "${CMAKE_BINARY_DIR}/compile_commands.json"
+- "${CMAKE_SOURCE_DIR}/compile_commands.json")
++
+ endif()
+
+ message(STATUS "********************************************")
diff --git a/vcpkg/ports/libssh/0004-file-permissions-constants.patch b/vcpkg/ports/libssh/0004-file-permissions-constants.patch
new file mode 100644
index 0000000..0177838
--- /dev/null
+++ b/vcpkg/ports/libssh/0004-file-permissions-constants.patch
@@ -0,0 +1,16 @@
+diff --git a/src/misc.c b/src/misc.c
+index 774211f..33d37b4 100644
+--- a/src/misc.c
++++ b/src/misc.c
+@@ -24,6 +24,11 @@
+
+ #include "config.h"
+
++#ifdef __ANDROID__
++#define _S_IWRITE S_IWUSR
++#define S_IWRITE S_IWUSR
++#endif
++
+ #ifndef _WIN32
+ /* This is needed for a standard getpwuid_r on opensolaris */
+ #define _POSIX_PTHREAD_SEMANTICS
diff --git a/vcpkg/ports/libssh/android-glob-tilde.diff b/vcpkg/ports/libssh/android-glob-tilde.diff
new file mode 100644
index 0000000..44719d2
--- /dev/null
+++ b/vcpkg/ports/libssh/android-glob-tilde.diff
@@ -0,0 +1,28 @@
+diff --git a/src/bind_config.c b/src/bind_config.c
+index 27c42c9..9e9c5f0 100644
+--- a/src/bind_config.c
++++ b/src/bind_config.c
+@@ -248,6 +248,9 @@ static void local_parse_glob(ssh_bind bind,
+ int rt;
+ u_int i;
+
++#if defined(__ANDROID__) && !defined(GLOB_TILDE)
++ const int GLOB_TILDE = 0;
++#endif
+ rt = glob(fileglob, GLOB_TILDE, NULL, &globbuf);
+ if (rt == GLOB_NOMATCH) {
+ globfree(&globbuf);
+diff --git a/src/config.c b/src/config.c
+index c5c4012..72a9bdd 100644
+--- a/src/config.c
++++ b/src/config.c
+@@ -249,6 +249,9 @@ static void local_parse_glob(ssh_session session,
+ int rt;
+ size_t i;
+
++#if defined(__ANDROID__) && !defined(GLOB_TILDE)
++ const int GLOB_TILDE = 0;
++#endif
+ rt = glob(fileglob, GLOB_TILDE, NULL, &globbuf);
+ if (rt == GLOB_NOMATCH) {
+ globfree(&globbuf);
diff --git a/vcpkg/ports/libssh/portfile.cmake b/vcpkg/ports/libssh/portfile.cmake
new file mode 100644
index 0000000..8c4c4a9
--- /dev/null
+++ b/vcpkg/ports/libssh/portfile.cmake
@@ -0,0 +1,62 @@
+vcpkg_download_distfile(distfile
+ URLS https://www.libssh.org/files/0.11/libssh-${VERSION}.tar.xz
+ FILENAME libssh-${VERSION}.tar.xz
+ SHA512 0670bee29a7cf5507dba7dd82b82cd8a926b83a43cee441fa8a698be2523b16aacb392433f9e63887bd72e6eb817667f6ef986f292f335d1856759af4ede40c4
+)
+vcpkg_extract_source_archive(SOURCE_PATH
+ ARCHIVE "${distfile}"
+ PATCHES
+ 0001-export-pkgconfig-file.patch
+ 0003-no-source-write.patch
+ 0004-file-permissions-constants.patch
+ android-glob-tilde.diff
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ pcap WITH_PCAP
+ server WITH_SERVER
+ zlib WITH_ZLIB
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DCMAKE_REQUIRE_FIND_PACKAGE_OpenSSL=ON
+ -DWITH_EXAMPLES=OFF
+ -DWITH_GSSAPI=OFF
+ -DWITH_NACL=OFF
+ -DWITH_SYMBOL_VERSIONING=OFF
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+vcpkg_fixup_pkgconfig()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/libssh/libssh.h"
+ "#ifdef LIBSSH_STATIC"
+ "#if 1"
+ )
+endif()
+
+vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/libssh)
+
+file(READ "${CURRENT_PACKAGES_DIR}/share/libssh/libssh-config.cmake" cmake_config)
+file(WRITE "${CURRENT_PACKAGES_DIR}/share/libssh/libssh-config.cmake" "
+include(CMakeFindDependencyMacro)
+if(MINGW32)
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
+ find_dependency(Threads)
+endif()
+find_dependency(OpenSSL)
+if(\"${WITH_ZLIB}\")
+ find_dependency(ZLIB)
+endif()
+${cmake_config}"
+)
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
diff --git a/vcpkg/ports/libssh/vcpkg.json b/vcpkg/ports/libssh/vcpkg.json
new file mode 100644
index 0000000..410165d
--- /dev/null
+++ b/vcpkg/ports/libssh/vcpkg.json
@@ -0,0 +1,46 @@
+{
+ "name": "libssh",
+ "version": "0.11.3",
+ "description": "libssh is a multiplatform C library implementing the SSHv2 protocol on client and server side",
+ "homepage": "https://www.libssh.org/",
+ "license": "LGPL-2.1-only",
+ "supports": "!uwp & !xbox",
+ "dependencies": [
+ {
+ "name": "openssl",
+ "default-features": false
+ },
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ }
+ ],
+ "default-features": [
+ {
+ "name": "pcap",
+ "platform": "!android"
+ },
+ {
+ "name": "server",
+ "platform": "!android"
+ }
+ ],
+ "features": {
+ "pcap": {
+ "description": "SSH server support"
+ },
+ "server": {
+ "description": "Pcap generation support"
+ },
+ "zlib": {
+ "description": "zlib compression support",
+ "dependencies": [
+ "zlib"
+ ]
+ }
+ }
+}