Files
workflow/test/CMakeLists.txt

111 lines
2.8 KiB
CMake

cmake_minimum_required(VERSION 3.6)
set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "build type")
project(workflow_test
LANGUAGES C CXX
)
if (WIN32)
option(WORKFLOW_TUTORIAL_BUILD_STATIC_RUNTIME "Use static runtime" ON)
endif ()
find_library(LIBRT rt)
find_package(OpenSSL REQUIRED)
find_package(workflow REQUIRED CONFIG HINTS ..)
include_directories(${OPENSSL_INCLUDE_DIR} ${WORKFLOW_INCLUDE_DIR})
link_directories(${WORKFLOW_LIB_DIR})
find_program(CMAKE_MEMORYCHECK_COMMAND valgrind)
set(memcheck_command ${CMAKE_MEMORYCHECK_COMMAND} ${CMAKE_MEMORYCHECK_COMMAND_OPTIONS} --error-exitcode=1 --leak-check=full)
add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})
enable_testing()
find_package(GTest CONFIG REQUIRED)
if (WIN32)
if (WORKFLOW_TUTORIAL_BUILD_STATIC_RUNTIME)
set(CompilerFlags
CMAKE_CXX_FLAGS
CMAKE_CXX_FLAGS_DEBUG
CMAKE_CXX_FLAGS_RELEASE
CMAKE_CXX_FLAGS_MINSIZEREL
CMAKE_C_FLAGS
CMAKE_C_FLAGS_DEBUG
CMAKE_C_FLAGS_RELEASE
CMAKE_C_FLAGS_MINSIZEREL
)
if (MINGW)
else ()
foreach(CompilerFlag ${CompilerFlags})
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
endforeach ()
endif ()
endif ()
endif ()
if (MINGW)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIC -pipe -std=gnu90")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC -pipe -std=c++17 -fexceptions")
elseif (WIN32)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MP /wd4200")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /wd4200 /Zc:__cplusplus /std:c++14")
else ()
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIC -pipe -std=gnu90")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIC -pipe -std=c++11 -fno-exceptions")
endif ()
set(TEST_LIST
task_unittest
algo_unittest
http_unittest
redis_unittest
mysql_unittest
facilities_unittest
upstream_unittest
)
set(GTEST_LIB GTest::GTest GTest::Main)
if (APPLE)
set(WORKFLOW_LIB workflow pthread OpenSSL::SSL OpenSSL::Crypto)
elseif (MINGW)
set(WORKFLOW_LIB workflow ws2_32 wsock32 OpenSSL::SSL OpenSSL::Crypto iphlpapi m z)
set(GTEST_LIB GTest::gtest GTest::gtest_main)
elseif (WIN32)
set(WORKFLOW_LIB workflow ws2_32 wsock32 OpenSSL::SSL OpenSSL::Crypto)
set(GTEST_LIB GTest::gtest GTest::gtest_main)
else ()
set(WORKFLOW_LIB workflow ${LIBRT})
endif ()
foreach(src ${TEST_LIST})
add_executable(${src} EXCLUDE_FROM_ALL ${src}.cc)
target_link_libraries(${src} ${WORKFLOW_LIB} ${GTEST_LIB})
if (WIN32)
if (MINGW)
target_compile_definitions(
${src} PRIVATE
)
else ()
target_compile_definitions(
${src} PRIVATE
strdup=_strdup
strcasecmp=_stricmp
strncasecmp=_strnicmp
)
endif ()
endif ()
add_test(${src} ${src})
add_dependencies(check ${src})
endforeach()
if (WIN32)
else ()
foreach(src ${TEST_LIST})
add_test(${src}-memory-check ${memcheck_command} ./${src})
endforeach()
endif ()