vcpkg/ports/curl/cmake-project-include.cmake
2024-07-30 17:42:29 -07:00

98 lines
4.2 KiB
CMake

if(ANDROID AND ANDROID_NATIVE_API_LEVEL LESS 24)
# https://android.googlesource.com/platform/bionic/+/master/docs/32-bit-abi.md
set(HAVE_FILE_OFFSET_BITS FALSE CACHE INTERNAL "")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore")
add_compile_definitions(_WINSOCK_DEPRECATED_NO_WARNINGS)
endif()
# Process the libs and targets in the variable named by `input`
# into a flat list of libs in the variable named by `output`.
# Simplify -framework elements.
# Use -l where possible.
# Avoid duplicates.
function(vcpkg_curl_flatten input output)
foreach(var IN ITEMS IMPORT_LIBRARY_SUFFIX STATIC_LIBRARY_SUFFIX SHARED_LIBRARY_SUFFIX)
string(REPLACE "." "[.]" "${var}" "${CMAKE_${var}}")
endforeach()
set(output_libs "${${output}}")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
string(REGEX REPLACE ";optimized;[^;]*|;debug" "" input_libs "VCPKG;${${input}}")
else()
string(REGEX REPLACE ";debug;[^;]*|;optimized" "" input_libs "VCPKG;${${input}}")
endif()
list(REMOVE_AT input_libs 0)
while(input_libs)
list(POP_BACK input_libs lib)
string(REGEX REPLACE "^.<LINK_ONLY:(.*)>\$" "\\1" lib "${lib}")
if(TARGET "${lib}")
set(import_lib "")
set(import_location "")
get_target_property(type "${lib}" TYPE)
if(NOT type STREQUAL "INTERFACE_LIBRARY")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
get_target_property(link_libs "${lib}" IMPORTED_LINK_INTERFACE_LIBRARIES_DEBUG)
get_target_property(import_lib "${lib}" IMPORTED_IMPLIB_DEBUG)
get_target_property(import_location "${lib}" IMPORTED_LOCATION_DEBUG)
else()
get_target_property(link_libs "${lib}" IMPORTED_LINK_INTERFACE_LIBRARIES_RELEASE)
get_target_property(import_lib "${lib}" IMPORTED_IMPLIB_RELEASE)
get_target_property(import_location "${lib}" IMPORTED_LOCATION_RELEASE)
endif()
if(link_libs)
vcpkg_curl_flatten(link_libs output_libs)
endif()
get_target_property(link_libs "${lib}" IMPORTED_LINK_INTERFACE_LIBRARIES)
if(link_libs)
vcpkg_curl_flatten(link_libs output_libs)
endif()
if(NOT import_lib)
get_target_property(import_lib "${lib}" IMPORTED_IMPLIB)
endif()
if(NOT import_location)
get_target_property(import_location "${lib}" IMPORTED_LOCATION)
endif()
endif()
get_target_property(link_libs "${lib}" INTERFACE_LINK_LIBRARIES)
if(link_libs)
vcpkg_curl_flatten(link_libs output_libs)
endif()
if(import_lib)
set(lib "${import_lib}")
elseif(import_location)
set(lib "${import_location}")
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()
elseif(WIN32 AND lib MATCHES ".*/${CMAKE_IMPORT_LIBRARY_PREFIX}([^/]*)${IMPORT_LIBRARY_SUFFIX}\$")
set(lib -l${CMAKE_MATCH_1})
elseif(lib MATCHES ".*/${CMAKE_STATIC_LIBRARY_PREFIX}([^/]*)${STATIC_LIBRARY_SUFFIX}\$")
set(lib -l${CMAKE_MATCH_1})
elseif(lib MATCHES ".*/${CMAKE_SHARED_LIBRARY_PREFIX}([^/]*)${SHARED_LIBRARY_SUFFIX}\$")
set(lib -l${CMAKE_MATCH_1})
endif()
if(NOT "${lib}" IN_LIST output_libs)
list(PREPEND output_libs "${lib}")
endif()
endwhile()
set("${output}" "${output_libs}" PARENT_SCOPE)
endfunction()
if(NOT CURL_DISABLE_LDAP AND NOT WIN32)
find_package(PkgConfig REQUIRED)
pkg_check_modules(LDAP REQUIRED ldap)
set(HAVE_LIBLDAP 1)
set(CMAKE_LDAP_INCLUDE_DIR "${LDAP_INCLUDE_DIRS}")
set(CMAKE_LDAP_LIB "${LDAP_LINK_LIBRARIES}" CACHE STRING "")
pkg_check_modules(LBER REQUIRED lber)
set(HAVE_LIBLBER 1)
set(CMAKE_LBER_LIB "${LBER_LINK_LIBRARIES}" CACHE STRING "")
endif()