vcpkg/ports/curl/0020-fix-pc-file.patch

60 lines
2.0 KiB
Diff
Raw Normal View History

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8b2e428..ea430f4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1462,7 +1462,26 @@ set(includedir "\${prefix}/include")
set(LDFLAGS "${CMAKE_SHARED_LINKER_FLAGS}")
set(LIBCURL_LIBS "")
set(libdir "${CMAKE_INSTALL_PREFIX}/lib")
-foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
+function(flatten input output)
+ set(output_libs "${${output}}")
+ set(input_libs "${${input}}")
+ while(input_libs)
+ list(POP_BACK input_libs lib)
+ if(NOT "${lib}" IN_LIST output_libs)
+ if(TARGET "${lib}")
+ get_target_property(link_libs "${lib}" INTERFACE_LINK_LIBRARIES)
+ if(link_libs)
+ flatten(link_libs output_libs)
+ endif()
+ endif()
+ list(PREPEND output_libs "${lib}")
+ endif()
+ endwhile()
+ set("${output}" "${output_libs}" PARENT_SCOPE)
+endfunction()
+set(CURL_LIBS_FLAT "")
+flatten(CURL_LIBS CURL_LIBS_FLAT)
+foreach(_lib ${CURL_LIBS_FLAT})
if(TARGET "${_lib}")
set(_libname "${_lib}")
get_target_property(_imported "${_libname}" IMPORTED)
@@ -1503,12 +1523,26 @@ foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
# Assume the user won't need this information in the .pc file.
continue()
endif()
+ set(_lib NOTFOUND)
+ if(DEFINED CMAKE_BUILD_TYPE)
+ string(TOUPPER "${CMAKE_BUILD_TYPE}" config)
+ get_target_property(_lib "${_libname}" IMPORTED_LOCATION_${config})
+ endif()
+ if(NOT _lib)
get_target_property(_lib "${_libname}" LOCATION)
+ endif()
if(NOT _lib)
message(WARNING "Bad lib in library list: ${_libname}")
continue()
endif()
endif()
+ if(_lib MATCHES "^(.*)/([^/]*)[.]framework$")
+ if(CMAKE_MATCH_1 IN_LIST CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES)
+ set(_lib "-framework ${CMAKE_MATCH_2}")
+ else()
+ set(_lib "-framework ${_lib}")
+ endif()
+ endif()
if(_lib MATCHES ".*/.*" OR _lib MATCHES "^-")
set(LIBCURL_LIBS "${LIBCURL_LIBS} ${_lib}")
else()