62 lines
2.4 KiB
CMake
62 lines
2.4 KiB
CMake
|
project(connection)
|
||
|
|
||
|
|
||
|
set(${PROJECT_NAME}_src
|
||
|
src/DataConnection.cppm
|
||
|
src/MSQuicConnection.cppm
|
||
|
src/MSQuicServer.cppm
|
||
|
src/MSQuicGlobal.cppm
|
||
|
src/MSQuicError.cppm)
|
||
|
# this is the "object library" target: compiles the sources only once
|
||
|
add_library(${PROJECT_NAME}_lib STATIC ${${PROJECT_NAME}_src})
|
||
|
target_include_directories(${PROJECT_NAME}_lib PUBLIC ./src)
|
||
|
|
||
|
find_package(msquic CONFIG REQUIRED)
|
||
|
target_link_libraries(${PROJECT_NAME}_lib PRIVATE msquic)
|
||
|
target_link_libraries(${PROJECT_NAME}_lib PUBLIC logging_lib)
|
||
|
if(WIN32)
|
||
|
target_link_libraries(${PROJECT_NAME}_lib PUBLIC ntdll)
|
||
|
endif()
|
||
|
|
||
|
# Setup tests
|
||
|
enable_testing()
|
||
|
|
||
|
find_package(GTest CONFIG REQUIRED)
|
||
|
include(GoogleTest)
|
||
|
|
||
|
file(GLOB_RECURSE tests_${PROJECT_NAME}_src CONFIGURE_DEPENDS tests/*.cppm tests/*/*.cppm)
|
||
|
|
||
|
add_executable(tests_${PROJECT_NAME} ${tests_${PROJECT_NAME}_src}
|
||
|
tests/sanitizers.cpp)
|
||
|
target_link_libraries(tests_${PROJECT_NAME} PRIVATE GTest::gtest GTest::gtest_main GTest::gmock GTest::gmock_main ${PROJECT_NAME}_lib)
|
||
|
|
||
|
add_test(AllTestsIn${PROJECT_NAME} tests_${PROJECT_NAME})
|
||
|
|
||
|
gtest_discover_tests(tests_${PROJECT_NAME})
|
||
|
|
||
|
find_program(OPENSSL_EXECUTABLE openssl)
|
||
|
|
||
|
set(OPENSSL_EXECUTABLE_CFG "" CACHE FILEPATH "Path to openssl.cnf")
|
||
|
if (NOT OPENSSL_EXECUTABLE)
|
||
|
find_package(OpenSSL REQUIRED)
|
||
|
|
||
|
message(STATUS "OpenSSL found: ${OPENSSL_FOUND} ${OPENSSL_VERSION} ${OPENSSL_INCLUDE_DIR} ${OPENSSL_LIBRARIES}")
|
||
|
|
||
|
set(OPENSSL_EXECUTABLE ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools/openssl/openssl)
|
||
|
endif ()
|
||
|
if (NOT OPENSSL_EXECUTABLE)
|
||
|
message(FATAL_ERROR "OpenSSL not found")
|
||
|
endif ()
|
||
|
|
||
|
if (OPENSSL_EXECUTABLE MATCHES ^${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools/openssl/openssl)
|
||
|
set(OPENSSL_EXECUTABLE_CFG ${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/tools/openssl/openssl.cnf)
|
||
|
endif ()
|
||
|
|
||
|
add_custom_command(TARGET tests_${PROJECT_NAME} POST_BUILD
|
||
|
COMMAND "${OPENSSL_EXECUTABLE}" req -new -newkey rsa:2048 -days 1 -nodes -x509 -keyout key.pem -out cert.pem -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" $<$<BOOL:${OPENSSL_EXECUTABLE_CFG}>:-config> $<$<BOOL:${OPENSSL_EXECUTABLE_CFG}>:${OPENSSL_EXECUTABLE_CFG}>
|
||
|
WORKING_DIRECTORY ${WORKING_DIRECTORY}
|
||
|
BYPRODUCTS ${WORKING_DIRECTORY}/key.pem ${WORKING_DIRECTORY}/cert.pem
|
||
|
COMMENT "Generating self-signed certificate using ${OPENSSL_EXECUTABLE} ${OPENSSL_EXECUTABLE_CFG}"
|
||
|
VERBATIM
|
||
|
COMMAND_EXPAND_LISTS
|
||
|
)
|