diff --git a/.github/workflows/windows-msvc.yml b/.github/workflows/windows-msvc.yml index 238374a0..f51d9bdc 100644 --- a/.github/workflows/windows-msvc.yml +++ b/.github/workflows/windows-msvc.yml @@ -16,9 +16,7 @@ jobs: link: [ 'STATIC', 'SHARED' ] # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.) build-type: ['Debug', 'Release'] - # TODO: conan botan is v2, v2 support is removed - # tls-provider: ['', 'openssl', 'botan'] - tls-provider: ['', 'openssl'] + tls-provider: ['', 'openssl', 'botan'] steps: - name: Checkout Trantor source code @@ -37,7 +35,7 @@ jobs: run: | pip install conan conan profile detect --force - conan install .. --output-folder=. --build=missing --settings=build_type=${{matrix.build-type}} --settings=compiler="msvc" --settings=compiler.version=193 + conan install .. --output-folder=. --build=missing --settings=build_type=${{matrix.build-type}} --settings=compiler="msvc" --options=tls_provider=${{matrix.tls-provider}} -s compiler.cppstd=20 - name: Create Build Environment & Configure Cmake shell: bash @@ -47,6 +45,7 @@ jobs: run: | [[ ${{ matrix.link }} == "SHARED" ]] && shared="ON" || shared="OFF" cmake .. -G "Visual Studio 17 2022" -T host=x64 -A x64 \ + -DCMAKE_TOOLCHAIN_FILE="conan_toolchain.cmake" \ -DTRANTOR_USE_TLS=${{matrix.tls-provider}} \ -DCMAKE_BUILD_TYPE=${{matrix.build-type}} \ -DBUILD_SHARED_LIBS=$shared \ diff --git a/CMakeLists.txt b/CMakeLists.txt index a0b10de0..0c4d9df6 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -294,6 +294,13 @@ set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD_REQUIRED ON) set_target_properties(${PROJECT_NAME} PROPERTIES CXX_EXTENSIONS OFF) set_target_properties(${PROJECT_NAME} PROPERTIES EXPORT_NAME Trantor) +if(TRANTOR_TLS_PROVIDER STREQUAL "Botan") + set_target_properties(${PROJECT_NAME} PROPERTIES CXX_STANDARD 20) + if(CMAKE_CXX_COMPILER_ID MATCHES Clang OR CMAKE_CXX_COMPILER_ID STREQUAL GNU) + target_compile_options(${PROJECT_NAME} PRIVATE -Wno-deprecated) + endif() +endif() + if(BUILD_TESTING) add_subdirectory(trantor/tests) find_package(GTest) @@ -383,7 +390,6 @@ install( FILES "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/TrantorConfig.cmake" "${CMAKE_CURRENT_BINARY_DIR}/TrantorConfigVersion.cmake" "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/Findc-ares.cmake" - "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/FindBotan.cmake" DESTINATION "${INSTALL_TRANTOR_CMAKE_DIR}" COMPONENT dev ) diff --git a/cmake_modules/FindBotan.cmake b/cmake_modules/FindBotan.cmake deleted file mode 100644 index e09ce039..00000000 --- a/cmake_modules/FindBotan.cmake +++ /dev/null @@ -1,68 +0,0 @@ -function(find_botan_pkgconfig package_name botan_ver) - if(TARGET Botan::Botan) - return() - endif() - - pkg_check_modules( - Botan - QUIET - IMPORTED_TARGET - ${package_name} - ) - if(TARGET PkgConfig::Botan) - add_library(Botan::Botan ALIAS PkgConfig::Botan) - - if(botan_ver EQUAL 3) - target_compile_features(PkgConfig::Botan INTERFACE cxx_std_20) - endif() - endif() -endfunction() - -function(find_botan_search package_name botan_ver) - if(TARGET Botan::Botan) - return() - endif() - find_path( - Botan_INCLUDE_DIRS - NAMES botan/botan.h - PATH_SUFFIXES ${package_name} - DOC "The Botan include directory" - ) - - find_library( - Botan_LIBRARIES - NAMES botan ${package_name} - DOC "The Botan library" - ) - - mark_as_advanced(Botan_INCLUDE_DIRS Botan_LIBRARIES) - - add_library(Botan::Botan IMPORTED UNKNOWN) - set_target_properties( - Botan::Botan - PROPERTIES - IMPORTED_LOCATION "${Botan_LIBRARIES}" - INTERFACE_INCLUDE_DIRECTORIES "${Botan_INCLUDE_DIRS}" - ) - if(botan_ver EQUAL 3) - target_compile_features(Botan::Botan INTERFACE cxx_std_20) - endif() - - if(WIN32) - target_compile_definitions(Botan::Botan INTERFACE -DNOMINMAX=1) - endif() -endfunction() - -find_package(PkgConfig) -if(NOT WIN32 AND PKG_CONFIG_FOUND) - # find_botan_pkgconfig(botan-2 2) - find_botan_pkgconfig(botan-3 3) -endif() - -if(NOT TARGET Botan::Botan) - # find_botan_search(botan-2 2) - find_botan_search(botan-3 3) -endif() - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Botan REQUIRED_VARS Botan_LIBRARIES Botan_INCLUDE_DIRS) diff --git a/conanfile.py b/conanfile.py new file mode 100644 index 00000000..29649051 --- /dev/null +++ b/conanfile.py @@ -0,0 +1,34 @@ +from conan import ConanFile +from conan.tools.cmake import CMakeToolchain + +class TrantorConan(ConanFile): + name = "Trantor" + version = "0.1" # Don't care. Not publishing this + + # Define the options + options = { + "tls_provider": ["openssl", "botan", 'none', ''] + } + + # Set default option + default_options = { + "tls_provider": "openssl" + } + + # Define the dependencies + requires = ( + "gtest/1.10.0", + # "c-ares/1.17.1", + "spdlog/1.12.0" + ) + + # Generator for CMake + generators = "CMakeToolchain" + + def configure(self): + if self.options.tls_provider == "openssl": + self.requires("openssl/1.1.1t") + elif self.options.tls_provider == "botan": + self.requires("botan/3.4.0") + elif self.options.tls_provider == "none" or self.options.tls_provider == "": + pass diff --git a/conanfile.txt b/conanfile.txt deleted file mode 100644 index 2e6dc442..00000000 --- a/conanfile.txt +++ /dev/null @@ -1,12 +0,0 @@ -[requires] -gtest/1.10.0 -openssl/1.1.1t -#c-ares/1.17.1 -spdlog/1.12.0 - -[generators] -CMakeToolchain - -[options] - -[imports]