Removed windows specific CMakeLists.txt for building curl, moved build logic to the link function
This commit is contained in:
35
3rdParty/curl/CMakeLists.txt
vendored
35
3rdParty/curl/CMakeLists.txt
vendored
@@ -1,16 +1,15 @@
|
||||
include(Utils)
|
||||
include(FetchContent)
|
||||
|
||||
set(CURL_REPO https://github.com/curl/curl.git)
|
||||
set(CURL_GIT_TAG curl-8_8_0)
|
||||
|
||||
set(CURL_DEPS_INSTALL ${CMAKE_BINARY_DIR}/deps_curl)
|
||||
find_package(CURL QUIET)
|
||||
if (NOT ${CURL_FOUND})
|
||||
file(MAKE_DIRECTORY ${CURL_DEPS_INSTALL})
|
||||
if (WIN32)
|
||||
set(EXT_DIR ext_windows)
|
||||
else ()
|
||||
set(EXT_DIR ext)
|
||||
endif ()
|
||||
if (NOT WIN32)
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/${EXT_DIR} -DCURL_REPO=${CURL_REPO} -DOPENSSL_REPO=${OPENSSL_REPO} -DPLATFORM=${PLATFORM}
|
||||
COMMAND ${CMAKE_COMMAND} -G ${CMAKE_GENERATOR} -DTOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} ${CMAKE_CURRENT_SOURCE_DIR}/ext -DCURL_REPO=${CURL_REPO} -DCURL_GIT_TAG=${CURL_GIT_TAG} -DOPENSSL_REPO=${OPENSSL_REPO} -DPLATFORM=${PLATFORM}
|
||||
WORKING_DIRECTORY ${CURL_DEPS_INSTALL}
|
||||
)
|
||||
execute_process(
|
||||
@@ -22,6 +21,7 @@ if (NOT ${CURL_FOUND})
|
||||
endif()
|
||||
|
||||
list(APPEND CMAKE_PREFIX_PATH ${CURL_DEPS_INSTALL}/INSTALL)
|
||||
endif ()
|
||||
else ()
|
||||
message("Using system curl")
|
||||
set(USING_SYSTEM_CURL ON PARENT_SCOPE)
|
||||
@@ -38,12 +38,31 @@ function(LinkCurl TARGET)
|
||||
if (APPLE)
|
||||
target_link_libraries(${TARGET} PUBLIC curl)
|
||||
elseif (WIN32)
|
||||
target_link_libraries(${TARGET} PUBLIC ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY})
|
||||
set(CURL_USE_SCHANNEL ON CACHE BOOL "USE SCHANNEL")
|
||||
FetchContent_Declare(
|
||||
curl
|
||||
# In function you cannot access the variables defined outside, so hardcoding for now.
|
||||
GIT_REPOSITORY https://github.com/curl/curl.git
|
||||
GIT_TAG curl-8_8_0
|
||||
GIT_SHALLOW TRUE
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||
-DUSE_NGHTTP2=OFF
|
||||
-DBUILD_STATIC_LIBS=ON
|
||||
-DBUILD_SHARED_LIBS=OFF
|
||||
OVERRIDE_FIND_PACKAGE
|
||||
)
|
||||
FetchContent_MakeAvailable(curl)
|
||||
find_package(curl REQUIRED)
|
||||
target_link_libraries(${TARGET} PUBLIC CURL::libcurl)
|
||||
else ()
|
||||
target_link_libraries(${TARGET} PUBLIC crypto ssl curl)
|
||||
endif ()
|
||||
else ()
|
||||
if (CURL_INCLUDE_DIR)
|
||||
target_include_directories(${TARGET} PUBLIC ${CURL_INCLUDE_DIR})
|
||||
endif ()
|
||||
target_link_libraries(${TARGET} PUBLIC CURL::libcurl)
|
||||
endif ()
|
||||
target_compile_definitions(${TARGET} PRIVATE HAS_CURL)
|
||||
|
||||
5
3rdParty/curl/ext/CMakeLists.txt
vendored
5
3rdParty/curl/ext/CMakeLists.txt
vendored
@@ -6,6 +6,9 @@ include(FetchContent)
|
||||
if (NOT DEFINED CURL_REPO OR CURL_REPO STREQUAL "")
|
||||
set(CURL_REPO https://github.com/curl/curl.git)
|
||||
endif ()
|
||||
if (NOT DEFINED CURL_GIT_TAG OR CURL_GIT_TAG STREQUAL "")
|
||||
set(CURL_GIT_TAG curl-8_8_0)
|
||||
endif ()
|
||||
if (NOT DEFINED OPENSSL_REPO OR OPENSSL_REPO STREQUAL "")
|
||||
set(OPENSSL_REPO https://github.com/openssl/openssl.git)
|
||||
endif ()
|
||||
@@ -29,8 +32,6 @@ else ()
|
||||
set(OPENSSL_MAKE_COMMAND make)
|
||||
endif ()
|
||||
|
||||
set(CURL_GIT_TAG curl-8_8_0)
|
||||
|
||||
function(InstallOpenSSL)
|
||||
ExternalProject_Add(
|
||||
OpenSSL
|
||||
|
||||
45
3rdParty/curl/ext_windows/CMakeLists.txt
vendored
45
3rdParty/curl/ext_windows/CMakeLists.txt
vendored
@@ -1,45 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
project(build_curl)
|
||||
include(FetchContent)
|
||||
|
||||
if (NOT DEFINED CURL_MIRROR_LINK)
|
||||
set(CURL_MIRROR_LINK https://curl.se/download/curl-8.8.0.tar.gz)
|
||||
endif ()
|
||||
if (NOT DEFINED LIBRESSL_MIRROR_LINK)
|
||||
set(LIBRESSL_MIRROR_LINK https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-3.9.2.tar.gz)
|
||||
endif ()
|
||||
|
||||
set(LIBRESSL_TESTS OFF CACHE BOOL "" FORCE)
|
||||
FetchContent_Declare(
|
||||
libressl
|
||||
URL ${LIBRESSL_MIRROR_LINK}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||
)
|
||||
FetchContent_MakeAvailable(libressl)
|
||||
|
||||
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libraries" FORCE)
|
||||
set(BUILD_STATIC_LIBS ON CACHE BOOL "Build static libraries" FORCE)
|
||||
set(BUILD_STATIC_CURL ON CACHE BOOL "Build curl executable with static libcurl" FORCE)
|
||||
set(CURL_DISABLE_TESTS ON CACHE BOOL "Do no build tests" FORCE)
|
||||
|
||||
set(CURL_USE_LIBRESSL ON CACHE BOOL "Use LibreSSL instead of OpenSSL" FORCE)
|
||||
set(OPENSSL_ROOT_DIR ${libressl_SOURCE_DIR} CACHE PATH "Path to LibreSSL root directory" FORCE)
|
||||
if (WIN32)
|
||||
set(OPENSSL_CRYPTO_LIBRARY ${libressl_BINARY_DIR}/crypto/release/crypto.lib CACHE FILEPATH "Path to LibreSSL crypto library" FORCE)
|
||||
set(OPENSSL_SSL_LIBRARY ${libressl_BINARY_DIR}/ssl/release/ssl.lib CACHE FILEPATH "Path to LibreSSL SSL library" FORCE)
|
||||
else ()
|
||||
set(OPENSSL_CRYPTO_LIBRARY ${libressl_BINARY_DIR}/crypto/libcrypto.a CACHE FILEPATH "Path to LibreSSL crypto library" FORCE)
|
||||
set(OPENSSL_SSL_LIBRARY ${libressl_BINARY_DIR}/ssl/libssl.a CACHE FILEPATH "Path to LibreSSL SSL library" FORCE)
|
||||
endif ()
|
||||
set(OPENSSL_INCLUDE_DIR ${libressl_SOURCE_DIR}/include CACHE PATH "Path to LibreSSL include directory" FORCE)
|
||||
|
||||
FetchContent_Declare(
|
||||
curl
|
||||
URL ${CURL_MIRROR_LINK}
|
||||
CMAKE_ARGS
|
||||
-DCMAKE_BUILD_TYPE=Release
|
||||
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL
|
||||
)
|
||||
FetchContent_MakeAvailable(curl)
|
||||
Reference in New Issue
Block a user