From 3d81d85dd8aef995e27786341755fbdfea2be380 Mon Sep 17 00:00:00 2001 From: Vladyslav Baranovskyi Date: Wed, 17 Jul 2024 13:37:44 +0300 Subject: [PATCH] Using libressl instead of openssl --- 3rdParty/curl/CMakeLists.txt | 34 +++++--- 3rdParty/curl/ext/CMakeLists.txt | 133 +------------------------------ 2 files changed, 26 insertions(+), 141 deletions(-) diff --git a/3rdParty/curl/CMakeLists.txt b/3rdParty/curl/CMakeLists.txt index 5319c22..06296b6 100644 --- a/3rdParty/curl/CMakeLists.txt +++ b/3rdParty/curl/CMakeLists.txt @@ -25,16 +25,32 @@ endif () function(LinkCurl TARGET) find_package(CURL QUIET) if (NOT ${CURL_FOUND}) - 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) - target_link_libraries(${TARGET} PRIVATE curl) - else () - target_link_libraries(${TARGET} PRIVATE crypto ssl curl) + 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) diff --git a/3rdParty/curl/ext/CMakeLists.txt b/3rdParty/curl/ext/CMakeLists.txt index e69f1aa..fc470e0 100644 --- a/3rdParty/curl/ext/CMakeLists.txt +++ b/3rdParty/curl/ext/CMakeLists.txt @@ -1,133 +1,2 @@ cmake_minimum_required(VERSION 3.16) -project(build_curl) -include(ExternalProject) -include(FetchContent) - -if (NOT DEFINED CURL_REPO OR CURL_REPO STREQUAL "") - set(CURL_REPO https://github.com/curl/curl.git) -endif () -if (NOT DEFINED OPENSSL_REPO OR OPENSSL_REPO STREQUAL "") - set(OPENSSL_REPO https://github.com/openssl/openssl.git) -endif () - -set(OPENSSL_SOURCE_DIR ${CMAKE_BINARY_DIR}/deps_curl/openssl-src) -set(OPENSSL_INSTALL_DIR ${CMAKE_BINARY_DIR}/INSTALL) -set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include) -set(OPENSSL_TAG OpenSSL_1_1_1n) -set(OPENSSL_USE_STATIC_LIBS TRUE) - -find_program(PERL_EXECUTABLE perl) -if (NOT PERL_EXECUTABLE) - message(FATAL_ERROR "Perl not found. Please install Perl to configure OpenSSL.") -endif() - -if (MSVC) - set(OPENSSL_PERL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/src/openssl/Configure VC-WIN64A) - set(OPENSSL_MAKE_COMMAND nmake) -else () - set(OPENSSL_PERL_CONFIGURE_COMMAND ${OPENSSL_SOURCE_DIR}/src/OpenSSL/config --static -static -fPIC) - set(OPENSSL_MAKE_COMMAND make) -endif () - -set(CURL_GIT_TAG curl-8_8_0) - -function(InstallOpenSSL) - ExternalProject_Add( - OpenSSL - PREFIX ${OPENSSL_SOURCE_DIR} - GIT_REPOSITORY ${OPENSSL_REPO} - GIT_TAG ${OPENSSL_TAG} - GIT_SHALLOW TRUE - CONFIGURE_COMMAND ${PERL_EXECUTABLE} ${OPENSSL_PERL_CONFIGURE_COMMAND} --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_INSTALL_DIR} no-shared no-tests - BUILD_COMMAND ${OPENSSL_MAKE_COMMAND} - INSTALL_COMMAND ${OPENSSL_MAKE_COMMAND} install - INSTALL_DIR ${OPENSSL_INSTALL_DIR} - USES_TERMINAL_DOWNLOAD TRUE - USES_TERMINAL_CONFIGURE TRUE - USES_TERMINAL_BUILD TRUE - USES_TERMINAL_INSTALL TRUE - ) -endfunction() - -function(InstallCurl DEPENDENCY_TARGETS OPENSSL_ROOT_DIR) - ExternalProject_Add( - curl - DEPENDS ${DEPENDENCY_TARGETS} - GIT_REPOSITORY ${CURL_REPO} - GIT_TAG ${CURL_GIT_TAG} - GIT_SHALLOW TRUE - SOURCE_DIR ${CMAKE_BINARY_DIR}/curl - BINARY_DIR ${CMAKE_BINARY_DIR}/curl-build - CMAKE_GENERATOR ${CMAKE_GENERATOR} - CMAKE_ARGS - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_BUILD_TYPE:STRING=Release - -DCURL_USE_OPENSSL:BOOL=ON - -DOPENSSL_ROOT_DIR=${OPENSSL_ROOT_DIR} - -DOPENSSL_INCLUDE_DIR=${OPENSSL_INCLUDE_DIR} - -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/INSTALL - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL - BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/curl-build --config Release - INSTALL_COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR}/curl-build --config Release - USES_TERMINAL_DOWNLOAD TRUE - USES_TERMINAL_CONFIGURE TRUE - USES_TERMINAL_BUILD TRUE - USES_TERMINAL_INSTALL TRUE - ) -endfunction() - -if (APPLE) - ExternalProject_Add( - curl - GIT_REPOSITORY ${CURL_REPO} - GIT_TAG ${CURL_GIT_TAG} - GIT_SHALLOW TRUE - SOURCE_DIR ${CMAKE_BINARY_DIR}/curl - BINARY_DIR ${CMAKE_BINARY_DIR}/curl-build - CMAKE_GENERATOR ${CMAKE_GENERATOR} - CMAKE_ARGS - -DCMAKE_TOOLCHAIN_FILE:FILEPATH=${TOOLCHAIN_FILE} - -DCMAKE_BUILD_TYPE:STRING=Release - -DCURL_USE_OPENSSL:BOOL=OFF - -DBUILD_SHARED_LIBS:BOOL=OFF - -DBUILD_STATIC_LIBS:BOOL=OFF - -DBUILD_CURL_EXE:BOOL=OFF - -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/INSTALL - -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL - BUILD_COMMAND ${CMAKE_COMMAND} --build ${CMAKE_BINARY_DIR}/curl-build --config Release - INSTALL_COMMAND ${CMAKE_COMMAND} --install ${CMAKE_BINARY_DIR}/curl-build --config Release - USES_TERMINAL_DOWNLOAD TRUE - USES_TERMINAL_CONFIGURE TRUE - USES_TERMINAL_BUILD TRUE - USES_TERMINAL_INSTALL TRUE - ) -elseif (WIN32) - - set(CURL_DEPDENDENCY_TARGETS "") - set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}) - list(APPEND CMAKE_PREFIX_PATH ${OPENSSL_INSTALL_DIR}) - - find_package(OpenSSL QUIET) - if(NOT OpenSSL_FOUND) - message("OpenSSL not found. Building OpenSSL from sources...") - set(CURL_DEPDENDENCY_TARGETS OpenSSL) - InstallOpenSSL() - else () - set(CURL_DEPDENDENCY_TARGETS OpenSSL::SSL OpenSSL::Crypto) - message("OpenSSL is already built. Root directory is ${OPENSSL_ROOT_DIR}, include directory is ${OPENSSL_INCLUDE_DIR}") - endif() - - find_package(CURL QUIET) - if (NOT CURL_FOUND) - message("CURL not found. Building CURL from sources...") - # set(BUILD_SHARED_LIBS OFF) set(BUILD_STATIC_LIBS ON) - InstallCurl(${CURL_DEPDENDENCY_TARGETS} ${OPENSSL_ROOT_DIR}) - else () - message("CURL is already built") - endif () -else () - InstallOpenSSL() - ExternalProject_Get_Property(OpenSSL INSTALL_DIR) - set(OPENSSL_ROOT_DIR ${INSTALL_DIR}) - InstallCurl(OpenSSL ${OPENSSL_ROOT_DIR}) -endif () +project(build_curl) \ No newline at end of file