58 lines
2.0 KiB
CMake
58 lines
2.0 KiB
CMake
include(../../cmake/Utils.cmake)
|
|
|
|
set(CURL_DEPS_INSTALL ${CMAKE_BINARY_DIR}/deps_curl)
|
|
find_package(CURL QUIET)
|
|
if (NOT ${CURL_FOUND})
|
|
file(MAKE_DIRECTORY ${CURL_DEPS_INSTALL})
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/ext -DCURL_REPO=${CURL_REPO} -DOPENSSL_REPO=${OPENSSL_REPO} -DPLATFORM=${PLATFORM}
|
|
WORKING_DIRECTORY ${CURL_DEPS_INSTALL}
|
|
)
|
|
execute_process(
|
|
COMMAND ${CMAKE_COMMAND} --build ${CURL_DEPS_INSTALL}
|
|
RESULT_VARIABLE build_result
|
|
)
|
|
if (NOT ${build_result} EQUAL "0")
|
|
message(FATAL_ERROR "Failed to build curl!")
|
|
endif()
|
|
|
|
list(APPEND CMAKE_PREFIX_PATH ${CURL_DEPS_INSTALL}/INSTALL)
|
|
else ()
|
|
message("Using system curl")
|
|
set(USING_SYSTEM_CURL ON PARENT_SCOPE)
|
|
endif ()
|
|
|
|
function(LinkCurl TARGET)
|
|
find_package(CURL QUIET)
|
|
if (NOT ${CURL_FOUND})
|
|
if (NOT DEFINED CURL_MIRROR_LINK)
|
|
set(CURL_MIRROR_LINK https://curl.se/download/curl-7.78.0.tar.gz)
|
|
endif ()
|
|
if (NOT DEFINED LIBRESSL_MIRROR_LINK)
|
|
set(LIBRESSL_MIRROR_LINK https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.4.2.tar.gz)
|
|
endif ()
|
|
|
|
FetchContent_Declare(
|
|
libressl
|
|
URL ${LIBRESSL_MIRROR_LINK}
|
|
)
|
|
FetchContent_MakeAvailable(libressl)
|
|
|
|
FetchContent_Declare(
|
|
curl
|
|
URL ${CURL_MIRROR_LINK}
|
|
)
|
|
FetchContent_GetProperties(curl)
|
|
if(NOT curl_POPULATED)
|
|
set(CURL_USE_LIBRESSL ON CACHE BOOL "Use LibreSSL instead of OpenSSL" FORCE)
|
|
FetchContent_Populate(curl)
|
|
add_subdirectory(${curl_SOURCE_DIR} ${curl_BINARY_DIR})
|
|
|
|
set(OPENSSL_ROOT_DIR ${libressl_SOURCE_DIR})
|
|
set(OPENSSL_LIBRARIES ${libressl_BINARY_DIR})
|
|
endif()
|
|
else ()
|
|
target_include_directories(${TARGET} PRIVATE ${CURL_INCLUDE_DIR})
|
|
target_link_libraries(${TARGET} PRIVATE CURL::libcurl)
|
|
endif ()
|
|
endfunction() |