From 72037259a77a618160e9a9129873c39eb888e632 Mon Sep 17 00:00:00 2001 From: winsoft666 Date: Tue, 23 Nov 2021 12:36:49 +0800 Subject: [PATCH] OpenSSL is optional. --- run_cmake.bat | 3 +-- src/CMakeLists.txt | 7 +++++-- src/curl_utils.cpp | 8 ++++++++ tests/teemo_tool/CMakeLists.txt | 6 ++++-- tests/unit_test/CMakeLists.txt | 8 +++++--- 5 files changed, 23 insertions(+), 9 deletions(-) diff --git a/run_cmake.bat b/run_cmake.bat index 3ba3364..3e9fb09 100644 --- a/run_cmake.bat +++ b/run_cmake.bat @@ -99,8 +99,7 @@ if "" == "%BUILD_SHARED_LIBS%" ( ) vcpkg install gtest:%VCPKG_TARGET_TRIPLET% -vcpkg install curl[non-http]:%VCPKG_TARGET_TRIPLET% -cmake.exe -G "%CMAKE_GENERATOR%" -T "%TOOLSET%" -A "%ARCH%" -DCMAKE_TOOLCHAIN_FILE=D:\sourcecode\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=%VCPKG_TARGET_TRIPLET% -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_INSTALL_PREFIX=D:\Teemo -DBUILD_TESTS=ON -S %~dp0 -B %~dp0build +cmake.exe -G "%CMAKE_GENERATOR%" -T "%TOOLSET%" -A "%ARCH%" -DCMAKE_TOOLCHAIN_FILE=D:\sourcecode\Github\vcpkg\scripts\buildsystems\vcpkg.cmake -DVCPKG_TARGET_TRIPLET=%VCPKG_TARGET_TRIPLET% -DBUILD_SHARED_LIBS=%BUILD_SHARED_LIBS% -DCMAKE_INSTALL_PREFIX=D:\Teemo -DBUILD_TESTS=ON -S %~dp0 -B %~dp0build endlocal goto :eof diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 61ba17e..ef7e423 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -87,8 +87,11 @@ target_include_directories(${LIB_NAME} PUBLIC ${CURL_INCLUDE_DIRS}) # OpenSSL -find_package(OpenSSL REQUIRED) -target_link_libraries(${LIB_NAME} PUBLIC OpenSSL::SSL OpenSSL::Crypto) +find_package(OpenSSL) +if(OpenSSL_FOUND) + add_definitions(-DWITH_OPENSSL) + target_link_libraries(${LIB_NAME} PUBLIC OpenSSL::SSL OpenSSL::Crypto) +endif() if (WIN32 OR _WIN32) diff --git a/src/curl_utils.cpp b/src/curl_utils.cpp index 0a28ac3..b02243e 100644 --- a/src/curl_utils.cpp +++ b/src/curl_utils.cpp @@ -14,7 +14,9 @@ #include "curl_utils.h" #include "curl/curl.h" +#ifdef WITH_OPENSSL #include +#endif namespace teemo { namespace { @@ -36,6 +38,7 @@ int THREAD_cleanup(void); #define THREAD_ID pthread_self() #endif +#ifdef WITH_OPENSSL static MUTEX_TYPE* mutex_buf = NULL; static void locking_function(int mode, int n, const char* file, int line) { if (mode & CRYPTO_LOCK) @@ -72,15 +75,20 @@ int THREAD_cleanup(void) { mutex_buf = NULL; return 1; } +#endif } // namespace void GlobalCurlInit() { +#ifdef WITH_OPENSSL THREAD_setup(); +#endif curl_global_init(CURL_GLOBAL_ALL); } void GlobalCurlUnInit() { curl_global_cleanup(); +#ifdef WITH_OPENSSL THREAD_cleanup(); +#endif } } // namespace teemo diff --git a/tests/teemo_tool/CMakeLists.txt b/tests/teemo_tool/CMakeLists.txt index 48b604b..3f2d0b2 100644 --- a/tests/teemo_tool/CMakeLists.txt +++ b/tests/teemo_tool/CMakeLists.txt @@ -46,8 +46,10 @@ find_package(CURL REQUIRED) target_link_libraries(${EXE_NAME} ${CURL_LIBRARIES}) # OpenSSL -find_package(OpenSSL REQUIRED) -target_link_libraries(${EXE_NAME} OpenSSL::SSL OpenSSL::Crypto) +find_package(OpenSSL) +if(OpenSSL_FOUND) + target_link_libraries(${EXE_NAME} OpenSSL::SSL OpenSSL::Crypto) +endif() # Win32 Console if (WIN32 OR _WIN32) diff --git a/tests/unit_test/CMakeLists.txt b/tests/unit_test/CMakeLists.txt index d4a1475..62856a1 100644 --- a/tests/unit_test/CMakeLists.txt +++ b/tests/unit_test/CMakeLists.txt @@ -35,7 +35,7 @@ if (NOT BUILD_SHARED_LIBS) endif() include_directories(../../src) -file(GLOB SOURCE_FILES ./*.cpp ../../src/file_util.cpp) +file(GLOB SOURCE_FILES ./*.cpp ../../src/file_util.cpp ../../src/string_encode.cpp) add_executable( ${EXE_NAME} @@ -56,8 +56,10 @@ find_package(CURL REQUIRED) target_link_libraries(${EXE_NAME} ${CURL_LIBRARIES}) # OpenSSL -find_package(OpenSSL REQUIRED) -target_link_libraries(${EXE_NAME} OpenSSL::SSL OpenSSL::Crypto) +find_package(OpenSSL) +if(OpenSSL_FOUND) + target_link_libraries(${EXE_NAME} OpenSSL::SSL OpenSSL::Crypto) +endif() add_test(NAME unit COMMAND ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_BINDIR}/unit_tests)