diff options
Diffstat (limited to 'vcpkg/ports/libssh')
| -rw-r--r-- | vcpkg/ports/libssh/0001-export-pkgconfig-file.patch | 75 | ||||
| -rw-r--r-- | vcpkg/ports/libssh/0003-no-source-write.patch | 15 | ||||
| -rw-r--r-- | vcpkg/ports/libssh/0004-file-permissions-constants.patch | 16 | ||||
| -rw-r--r-- | vcpkg/ports/libssh/android-glob-tilde.diff | 28 | ||||
| -rw-r--r-- | vcpkg/ports/libssh/portfile.cmake | 62 | ||||
| -rw-r--r-- | vcpkg/ports/libssh/vcpkg.json | 46 |
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" + ] + } + } +} |