diff --git a/3rdParty/curl/CMakeLists.txt b/3rdParty/curl/CMakeLists.txt index 5319c22..c3985a1 100644 --- a/3rdParty/curl/CMakeLists.txt +++ b/3rdParty/curl/CMakeLists.txt @@ -4,8 +4,13 @@ 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 () 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} + 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} WORKING_DIRECTORY ${CURL_DEPS_INSTALL} ) execute_process( @@ -28,10 +33,11 @@ function(LinkCurl TARGET) set(CURL_DEPS_INSTALL ${CMAKE_BINARY_DIR}/deps_curl) target_include_directories(${TARGET} PRIVATE ${CURL_DEPS_INSTALL}/INSTALL/include) target_link_directories(${TARGET} PRIVATE ${CURL_DEPS_INSTALL}/INSTALL/lib) - if (MSVC) - target_link_libraries(${TARGET} PRIVATE libcrypto.lib libssl.lib libcurl_imp.lib) - elseif (APPLE) + + if (APPLE) target_link_libraries(${TARGET} PRIVATE curl) + elseif (WIN32) + target_link_libraries(${TARGET} PRIVATE ${OPENSSL_SSL_LIBRARY} ${OPENSSL_CRYPTO_LIBRARY}) else () target_link_libraries(${TARGET} PRIVATE crypto ssl curl) endif () diff --git a/3rdParty/curl/ext_windows/CMakeLists.txt b/3rdParty/curl/ext_windows/CMakeLists.txt new file mode 100644 index 0000000..1247e9a --- /dev/null +++ b/3rdParty/curl/ext_windows/CMakeLists.txt @@ -0,0 +1,45 @@ +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) \ No newline at end of file