mirror of
https://github.com/boostorg/coroutine.git
synced 2026-01-19 16:12:18 +00:00
On C++11 static local variables are initialized in thread-safe manner, but even on C++03 it should not be a problem because in our case variables are of trivial types, which means double initialization is not an issue, and they are initialized with the same value in every thread.
59 lines
1.4 KiB
CMake
59 lines
1.4 KiB
CMake
# Copyright 2020, 2021 Peter Dimov
|
|
# Distributed under the Boost Software License, Version 1.0.
|
|
# https://www.boost.org/LICENSE_1_0.txt
|
|
|
|
cmake_minimum_required(VERSION 3.5...3.16)
|
|
|
|
project(boost_coroutine VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
|
|
|
if(WIN32 AND NOT CMAKE_CXX_PLATFORM_ID MATCHES "Cygwin")
|
|
set(STACK_TRAITS_SOURCES
|
|
src/windows/stack_traits.cpp
|
|
)
|
|
else()
|
|
set(STACK_TRAITS_SOURCES
|
|
src/posix/stack_traits.cpp
|
|
)
|
|
endif()
|
|
|
|
add_library(boost_coroutine
|
|
src/detail/coroutine_context.cpp
|
|
src/exceptions.cpp
|
|
${STACK_TRAITS_SOURCES}
|
|
)
|
|
|
|
add_library(Boost::coroutine ALIAS boost_coroutine)
|
|
|
|
target_include_directories(boost_coroutine PUBLIC include)
|
|
|
|
target_link_libraries(boost_coroutine
|
|
PUBLIC
|
|
Boost::assert
|
|
Boost::config
|
|
Boost::context
|
|
Boost::core
|
|
Boost::exception
|
|
Boost::move
|
|
Boost::system
|
|
Boost::throw_exception
|
|
Boost::type_traits
|
|
Boost::utility
|
|
)
|
|
|
|
target_compile_definitions(boost_coroutine
|
|
PUBLIC BOOST_COROUTINE_NO_LIB
|
|
PRIVATE BOOST_COROUTINE_SOURCE BOOST_COROUTINES_SOURCE
|
|
)
|
|
|
|
if(BUILD_SHARED_LIBS)
|
|
target_compile_definitions(boost_coroutine PUBLIC BOOST_COROUTINE_DYN_LINK BOOST_COROUTINES_DYN_LINK)
|
|
else()
|
|
target_compile_definitions(boost_coroutine PUBLIC BOOST_COROUTINE_STATIC_LINK)
|
|
endif()
|
|
|
|
if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
|
|
|
|
add_subdirectory(test)
|
|
|
|
endif()
|