Files
promise.hpp/CMakeLists.txt

53 lines
1.6 KiB
CMake

cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
project(promise)
#
# coverage mode
#
option(PROMISE_BUILD_WITH_COVERAGE "Build with coverage" OFF)
if(PROMISE_BUILD_WITH_COVERAGE AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang"))
add_definitions(-DPROMISE_BUILD_WITH_COVERAGE)
set(PROMISE_COVERAGE_FLAGS "--coverage")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${PROMISE_COVERAGE_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${PROMISE_COVERAGE_FLAGS}")
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${PROMISE_COVERAGE_FLAGS}")
endif()
#
# sanitizer mode
#
option(PROMISE_BUILD_WITH_SANITIZER "Build with sanitizer" OFF)
if(PROMISE_BUILD_WITH_SANITIZER AND (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang"))
add_definitions(-DPROMISE_BUILD_WITH_SANITIZER)
set(PROMISE_SANITIZER_FLAGS "-fno-omit-frame-pointer -fsanitize=address")
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${PROMISE_SANITIZER_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${PROMISE_SANITIZER_FLAGS}")
set(CMAKE_LINKER_FLAGS_DEBUG "${CMAKE_LINKER_FLAGS_DEBUG} ${PROMISE_SANITIZER_FLAGS}")
endif()
#
# tests executable
#
find_package(Threads REQUIRED)
file(GLOB test_sources "*.cpp" "*.hpp")
add_executable(${PROJECT_NAME} ${test_sources})
if(MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE /bigobj)
endif(MSVC)
target_link_libraries(${PROJECT_NAME}
Threads::Threads)
set_target_properties(${PROJECT_NAME} PROPERTIES
CXX_STANDARD 14
CXX_STANDARD_REQUIRED YES
CXX_EXTENSIONS NO)
enable_testing()
add_test(${PROJECT_NAME} ${PROJECT_NAME})