From aedf5f39669c2c035ab029a592cf86416b725973 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Fri, 30 Mar 2018 02:05:22 +0900 Subject: [PATCH 1/3] curl: fix not found error for debug symbol --- ports/curl/CONTROL | 2 +- ports/curl/portfile.cmake | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/ports/curl/CONTROL b/ports/curl/CONTROL index 18518e1ea8a75f..28e2eba6b9e927 100644 --- a/ports/curl/CONTROL +++ b/ports/curl/CONTROL @@ -1,5 +1,5 @@ Source: curl -Version: 7_59_0-2 +Version: 7_59_0-3 Build-Depends: zlib Description: A library for transferring data with URLs Default-Features: ssl diff --git a/ports/curl/portfile.cmake b/ports/curl/portfile.cmake index 852fcf9d0ec47e..4567bcffc5691a 100644 --- a/ports/curl/portfile.cmake +++ b/ports/curl/portfile.cmake @@ -112,16 +112,8 @@ endif() if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) - # Drop debug suffix, as FindCURL.cmake does not look for it - if(EXISTS "${CURRENT_PACKAGES_DIR}/debug/lib/libcurl-d.lib") - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl-d.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl.lib) - endif() else() file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/curl-config ${CURRENT_PACKAGES_DIR}/debug/bin/curl-config) - if(EXISTS "${CURRENT_PACKAGES_DIR}/lib/libcurl_imp.lib") - file(RENAME ${CURRENT_PACKAGES_DIR}/lib/libcurl_imp.lib ${CURRENT_PACKAGES_DIR}/lib/libcurl.lib) - file(RENAME ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl-d_imp.lib ${CURRENT_PACKAGES_DIR}/debug/lib/libcurl.lib) - endif() endif() file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/pkgconfig ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig) From cd22dfbbc0bb043839653024d260c73cece00cff Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Sat, 7 Apr 2018 12:58:46 +0900 Subject: [PATCH 2/3] [CURL] provide fixed version of FindCURL.cmake Signed-off-by: Hiroshi Miura --- ports/curl/FindCURL.cmake | 78 +++++++++++++++++++++++++++++++++++++++ ports/curl/usage | 10 ++++- 2 files changed, 86 insertions(+), 2 deletions(-) create mode 100644 ports/curl/FindCURL.cmake diff --git a/ports/curl/FindCURL.cmake b/ports/curl/FindCURL.cmake new file mode 100644 index 00000000000000..df958b4d8b0303 --- /dev/null +++ b/ports/curl/FindCURL.cmake @@ -0,0 +1,78 @@ +# Distributed under the OSI-approved BSD 3-Clause License. See accompanying +# file Copyright.txt or https://cmake.org/licensing for details. + +#.rst: +# FindCURL +# -------- +# +# Find the native CURL headers and libraries. +# +# IMPORTED Targets +# ^^^^^^^^^^^^^^^^ +# +# This module defines :prop_tgt:`IMPORTED` target ``CURL::CURL``, if +# curl has been found. +# +# Result Variables +# ^^^^^^^^^^^^^^^^ +# +# This module defines the following variables: +# +# ``CURL_FOUND`` +# True if curl found. +# +# ``CURL_INCLUDE_DIRS`` +# where to find curl/curl.h, etc. +# +# ``CURL_LIBRARIES`` +# List of libraries when using curl. +# +# ``CURL_VERSION_STRING`` +# The version of curl found. + +# Look for the header file. +find_path(CURL_INCLUDE_DIR NAMES curl/curl.h) +mark_as_advanced(CURL_INCLUDE_DIR) + +# Look for the library (sorted from most current/relevant entry to least). +find_library(CURL_LIBRARY NAMES + curl + # Windows MSVC prebuilts: + curllib + libcurl_imp + curllib_static + # Windows MSVC CMake builds in debug configuration on vcpkg: + libcurl-d_imp + libcurl-d + # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip): + libcurl +) +mark_as_advanced(CURL_LIBRARY) + +if(CURL_INCLUDE_DIR) + foreach(_curl_version_header curlver.h curl.h) + if(EXISTS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}") + file(STRINGS "${CURL_INCLUDE_DIR}/curl/${_curl_version_header}" curl_version_str REGEX "^#define[\t ]+LIBCURL_VERSION[\t ]+\".*\"") + + string(REGEX REPLACE "^#define[\t ]+LIBCURL_VERSION[\t ]+\"([^\"]*)\".*" "\\1" CURL_VERSION_STRING "${curl_version_str}") + unset(curl_version_str) + break() + endif() + endforeach() +endif() + +include(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(CURL + REQUIRED_VARS CURL_LIBRARY CURL_INCLUDE_DIR + VERSION_VAR CURL_VERSION_STRING) + +if(CURL_FOUND) + set(CURL_LIBRARIES ${CURL_LIBRARY}) + set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR}) + + if(NOT TARGET CURL::CURL) + add_library(CURL::CURL UNKNOWN IMPORTED) + set_target_properties(CURL::CURL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}") + set_property(TARGET CURL::CURL APPEND PROPERTY IMPORTED_LOCATION "${CURL_LIBRARY}") + endif() +endif() diff --git a/ports/curl/usage b/ports/curl/usage index d43e7112eedbd2..0ed02f0b945d26 100644 --- a/ports/curl/usage +++ b/ports/curl/usage @@ -1,5 +1,11 @@ -The package curl is compatible with built-in CMake targets: +The package curl is compatible with CMake targets: - find_package(CURL REQUIRED) + find_package(CURL CONFIG REQUIRED) target_link_libraries(main PRIVATE ${CURL_LIBRARIES}) target_include_directories(main PRIVATE ${CURL_INCLUDE_DIRS}) + +If you want to use find_pacakge(CURL MODULE REQUIRED), +you need to override cmake module with a bundled one, +because built-in CMake module has a bug not to be able to find debug +library in Windows. https://gitlab.kitware.com/cmake/cmake/issues/17887 +Please copy FindCURL.cmake into where CMAKE_MODULE_PATH specified. From bcedb02a7c3d144205092a94689150abbceb9a11 Mon Sep 17 00:00:00 2001 From: Hiroshi Miura Date: Sat, 30 Jun 2018 01:48:54 +0900 Subject: [PATCH 3/3] [CURL] sync with cmake fix patch - sync with code for fixing a problem in cmake project. https://gitlab.kitware.com/cmake/cmake/merge_requests/1940 Signed-off-by: Hiroshi Miura --- ports/curl/FindCURL.cmake | 68 ++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 19 deletions(-) diff --git a/ports/curl/FindCURL.cmake b/ports/curl/FindCURL.cmake index df958b4d8b0303..60b9421a341f81 100644 --- a/ports/curl/FindCURL.cmake +++ b/ports/curl/FindCURL.cmake @@ -10,7 +10,7 @@ # IMPORTED Targets # ^^^^^^^^^^^^^^^^ # -# This module defines :prop_tgt:`IMPORTED` target ``CURL::CURL``, if +# This module defines :prop_tgt:`IMPORTED` target ``CURL::libcurl``, if # curl has been found. # # Result Variables @@ -34,20 +34,26 @@ find_path(CURL_INCLUDE_DIR NAMES curl/curl.h) mark_as_advanced(CURL_INCLUDE_DIR) -# Look for the library (sorted from most current/relevant entry to least). -find_library(CURL_LIBRARY NAMES - curl - # Windows MSVC prebuilts: - curllib - libcurl_imp - curllib_static - # Windows MSVC CMake builds in debug configuration on vcpkg: - libcurl-d_imp - libcurl-d - # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip): - libcurl -) -mark_as_advanced(CURL_LIBRARY) +if(NOT CURL_LIBRARY) + # Look for the library (sorted from most current/relevant entry to least). + find_library(CURL_LIBRARY_RELEASE NAMES + curl + # Windows MSVC prebuilts: + curllib + libcurl_imp + curllib_static + # Windows older "Win32 - MSVC" prebuilts (libcurl.lib, e.g. libcurl-7.15.5-win32-msvc.zip): + libcurl + ) + find_library(CURL_LIBRARY_DEBUG NAMES + # Windows MSVC CMake builds in debug configuration on vcpkg: + libcurl-d_imp + libcurl-d + ) + include(${CMAKE_CURRENT_LIST_DIR}/SelectLibraryConfigurations.cmake) + select_library_configurations(CURL) + mark_as_advanced(CURL_LIBRARY_RELEASE CURL_LIBRARY_DEBUG) +endif() if(CURL_INCLUDE_DIR) foreach(_curl_version_header curlver.h curl.h) @@ -70,9 +76,33 @@ if(CURL_FOUND) set(CURL_LIBRARIES ${CURL_LIBRARY}) set(CURL_INCLUDE_DIRS ${CURL_INCLUDE_DIR}) - if(NOT TARGET CURL::CURL) - add_library(CURL::CURL UNKNOWN IMPORTED) - set_target_properties(CURL::CURL PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}") - set_property(TARGET CURL::CURL APPEND PROPERTY IMPORTED_LOCATION "${CURL_LIBRARY}") + if(NOT TARGET CURL::libcurl) + add_library(CURL::libcurl UNKNOWN IMPORTED) + set_target_properties(CURL::libcurl PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${CURL_INCLUDE_DIRS}") + + if(EXISTS "${CURL_LIBRARY}") + set_property(TARGET CURL::libcurl APPEND PROPERTY + IMPORTED_LOCATION "${CURL_LIBRARY}") + set_target_properties(CURL::libcurl PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + INPORTED_LOCATION "${CURL_LIBRARY}") + endif() + if(EXISTS "${CURL_LIBRARY_RELEASE}") + set_property(TARGET CURL::libcurl APPEND PROPERTY + IMPORTED_CONFIGURATION RELEASE) + set_target_properties(CURL::libcurl PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + INPORTED_LOCATION_RELEASE "${CURL_LIBRARY_RELEASE}") + endif() + if(EXISTS "${CURL_LIBRARY_DEBUG}") + set_property(TARGET CURL::libcurl APPEND PROPERTY + IMPORTED_CONFIGURATION DEBUG) + set_target_properties(CURL::libcurl PROPERTIES + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + INPORTED_LOCATION_DEBUG "${CURL_LIBRARY_DEBUG}") + endif() endif() endif() + +mark_as_advanced(CURL_LIBRARY)