From 45aa34edb43396541657751e12f1a1cb67689d69 Mon Sep 17 00:00:00 2001 From: JackBoosY <47264268+JackBoosY@users.noreply.github.com> Date: Thu, 14 Mar 2019 21:30:02 +0800 Subject: [libssh]fix config.cmake error, add usage. (#5666) --- ports/libssh/CONTROL | 2 +- ports/libssh/fix-config-cmake.patch | 77 +++++++++++++++++++++++++++++++++++++ ports/libssh/portfile.cmake | 6 ++- ports/libssh/usage | 5 +++ 4 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 ports/libssh/fix-config-cmake.patch create mode 100644 ports/libssh/usage (limited to 'ports/libssh') diff --git a/ports/libssh/CONTROL b/ports/libssh/CONTROL index 3ecd7853e..9f652f461 100644 --- a/ports/libssh/CONTROL +++ b/ports/libssh/CONTROL @@ -1,5 +1,5 @@ Source: libssh -Version: 0.7.6 +Version: 0.7.6-1 Description: libssh is a multiplatform C library implementing the SSHv2 and SSHv1 protocol on client and server side Build-Depends: openssl diff --git a/ports/libssh/fix-config-cmake.patch b/ports/libssh/fix-config-cmake.patch new file mode 100644 index 000000000..bb369359f --- /dev/null +++ b/ports/libssh/fix-config-cmake.patch @@ -0,0 +1,77 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index a063556..68e559e 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -11,6 +11,8 @@ set(APPLICATION_VERSION_MINOR "7") + set(APPLICATION_VERSION_PATCH "6") + + set(APPLICATION_VERSION "${APPLICATION_VERSION_MAJOR}.${APPLICATION_VERSION_MINOR}.${APPLICATION_VERSION_PATCH}") ++set(CMAKE_INSTALL_DIR lib/cmake/libssh CACHE STRING ++ "The subdirectory where CMake package config files should be installed") + + # SOVERSION scheme: CURRENT.AGE.REVISION + # If there was an incompatible interface change: +@@ -114,14 +116,29 @@ endif (UNIX) + set(LIBSSH_LIBRARY_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}ssh${CMAKE_SHARED_LIBRARY_SUFFIX}) + set(LIBSSH_THREADS_LIBRARY_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}ssh${CMAKE_SHARED_LIBRARY_SUFFIX}) + +-configure_file(${PROJECT_NAME}-config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake @ONLY) +-configure_file(${PROJECT_NAME}-config-version.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake @ONLY) ++include(CMakePackageConfigHelpers) ++configure_package_config_file( ++ ${PROJECT_NAME}-config.cmake.in ++ ${PROJECT_NAME}-config.cmake ++ INSTALL_DESTINATION ${CMAKE_INSTALL_DIR} ++ PATH_VARS ++ INCLUDE_INSTALL_DIR ++ CMAKE_INSTALL_DIR ++) ++configure_package_config_file( ++ ${PROJECT_NAME}-config-version.cmake.in ++ ${PROJECT_NAME}-config-version.cmake ++ INSTALL_DESTINATION ${CMAKE_INSTALL_DIR} ++ PATH_VARS ++ INCLUDE_INSTALL_DIR ++ CMAKE_INSTALL_DIR ++) + install( + FILES + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config-version.cmake + DESTINATION +- ${CMAKE_INSTALL_DIR}/${PROJECT_NAME} ++ ${CMAKE_INSTALL_DIR} + COMPONENT + devel + ) +diff --git a/libssh-config.cmake.in b/libssh-config.cmake.in +index fa9cecf..b17fdbd 100644 +--- a/libssh-config.cmake.in ++++ b/libssh-config.cmake.in +@@ -1,13 +1,22 @@ + get_filename_component(LIBSSH_CMAKE_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH) ++get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../" ABSOLUTE) + + if (EXISTS "${LIBSSH_CMAKE_DIR}/CMakeCache.txt") + # In build tree + include(${LIBSSH_CMAKE_DIR}/libssh-build-tree-settings.cmake) + else() +- set(LIBSSH_INCLUDE_DIR @INCLUDE_INSTALL_DIR@) ++ set(LIBSSH_INCLUDE_DIR "${PACKAGE_PREFIX_DIR}/include/") ++ set(LIBSSH_INCLUDE_DIRS "${PACKAGE_PREFIX_DIR}/include/") + endif() + +-set(LIBSSH_LIBRARY @LIB_INSTALL_DIR@/@LIBSSH_LIBRARY_NAME@) +-set(LIBSSH_LIBRARIES @LIB_INSTALL_DIR@/@LIBSSH_LIBRARY_NAME@) ++if(CMAKE_BUILD_TYPE STREQUAL "Release") ++ set(LIBSSH_LIBRARY "${PACKAGE_PREFIX_DIR}/lib/ssh.lib") ++ set(LIBSSH_LIBRARIES "${PACKAGE_PREFIX_DIR}/lib/ssh.lib") + +-set(LIBSSH_THREADS_LIBRARY @LIB_INSTALL_DIR@/@LIBSSH_THREADS_LIBRARY_NAME@) ++ set(LIBSSH_THREADS_LIBRARY "${PACKAGE_PREFIX_DIR}/lib/ssh.lib") ++elseif(CMAKE_BUILD_TYPE STREQUAL "Debug") ++ set(LIBSSH_LIBRARY "${PACKAGE_PREFIX_DIR}/debug/lib/ssh.lib") ++ set(LIBSSH_LIBRARIES "${PACKAGE_PREFIX_DIR}/debug/lib/ssh.lib") ++ ++ set(LIBSSH_THREADS_LIBRARY "${PACKAGE_PREFIX_DIR}/debug/lib/ssh.lib") ++endif() diff --git a/ports/libssh/portfile.cmake b/ports/libssh/portfile.cmake index d9f5962a0..e137f823f 100644 --- a/ports/libssh/portfile.cmake +++ b/ports/libssh/portfile.cmake @@ -26,6 +26,7 @@ vcpkg_extract_source_archive_ex( only-one-flavor-threads.patch "${WINPATCH}" missing-includes.patch + fix-config-cmake.patch ) string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" WITH_STATIC_LIB) @@ -46,6 +47,7 @@ vcpkg_configure_cmake( -DWITH_NACL=OFF -DWITH_GSSAPI=OFF -DWITH_ZLIB=${WITH_ZLIB} + -DCMAKE_INSTALL_DIR=share/libssh ) vcpkg_install_cmake() @@ -69,7 +71,7 @@ file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/static ${CURRENT_PACKAGES_DIR}/d file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include) # The installed cmake config files are nonfunctional (0.7.5) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/cmake ${CURRENT_PACKAGES_DIR}/cmake) -file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/cmake ${CURRENT_PACKAGES_DIR}/lib/cmake) +file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share) file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libssh RENAME copyright) +file(INSTALL ${CURRENT_PORT_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/libssh) \ No newline at end of file diff --git a/ports/libssh/usage b/ports/libssh/usage new file mode 100644 index 000000000..3681ac112 --- /dev/null +++ b/ports/libssh/usage @@ -0,0 +1,5 @@ +The package libssh is compatible with built-in CMake targets: + + find_package(libssh CONFIG REQUIRED) + target_link_libraries(main PRIVATE ${LIBSSH_LIBRARIES}) + target_include_directories(main PRIVATE ${LIBSSH_INCLUDE_DIRS}) -- cgit v1.2.3