cmake: fix three issues generating lib options in config files
No binary (build failed)
—
(log yok)
| @@ -267,6 +267,10 @@ macro(curl_collect_target_link_options _target) | |
| get_target_property(_val ${_target} INTERFACE_LINK_LIBRARIES) | |
| if(_val) | |
| foreach(_lib IN LISTS _val) | |
| + | # E.g. via libssh2: "$<LINK_ONLY:OpenSSL::Crypto>" |
| + | if(_lib MATCHES "LINK_ONLY:") |
| + | string(REGEX MATCH "([A-Za-z0-9_-]+::[A-Za-z0-9_-]+)" _lib "${_lib}") # Extract imported target name |
| + | endif() |
| if(TARGET "${_lib}") | |
| curl_collect_target_link_options(${_lib}) | |
| else() | |
| @@ -2211,6 +2211,9 @@ if(NOT CURL_DISABLE_INSTALL) | |
| list(APPEND LIBCURL_PC_LIBS_PRIVATE "${_lib}") | |
| list(APPEND LIBCURL_PC_LIBS_PRIVATE_LIST "${_lib}") | |
| endif() | |
| + | elseif(_lib MATCHES "^-") # '-option' |
| + | list(APPEND _ldflags "${_lib}") |
| + | list(APPEND LIBCURL_PC_LIBS_PRIVATE_LIST "${_lib}") |
| else() | |
| list(APPEND LIBCURL_PC_LIBS_PRIVATE "-l${_lib}") | |
| list(APPEND LIBCURL_PC_LIBS_PRIVATE_LIST "${_lib}") | |
| @@ -2241,6 +2244,17 @@ if(NOT CURL_DISABLE_INSTALL) | |
| string(REPLACE ";" "," LIBCURL_PC_REQUIRES_PRIVATE "${LIBCURL_PC_REQUIRES_PRIVATE}") | |
| endif() | |
| if(LIBCURL_PC_LIBS_PRIVATE) | |
| + | # Remove duplicates listed next to each other |
| + | set(_libs "") |
| + | set(_prev "") |
| + | foreach(_lib IN LISTS LIBCURL_PC_LIBS_PRIVATE) |
| + | if(NOT _prev STREQUAL _lib) |
| + | list(APPEND _libs "${_lib}") |
| + | set(_prev "${_lib}") |
| + | endif() |
| + | endforeach() |
| + | set(LIBCURL_PC_LIBS_PRIVATE "${_libs}") |
| + | |
| string(REPLACE ";" " " LIBCURL_PC_LIBS_PRIVATE "${LIBCURL_PC_LIBS_PRIVATE}") | |
| endif() | |
| if(_ldflags) | |