aboutsummaryrefslogtreecommitdiff
path: root/ports/curl/0020-fix-pc-file.patch
blob: c9967ac2c22c92fc56933361323e6ff85d3e8676 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
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(_libtype "${_libname}" TYPE)
@@ -1473,12 +1492,26 @@ foreach(_lib ${CMAKE_C_IMPLICIT_LINK_LIBRARIES} ${CURL_LIBS})
       # 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()