message(STATUS "C++ flags: ${CMAKE_CXX_FLAGS}") | message(STATUS "C++ flags: ${CMAKE_CXX_FLAGS}") | ||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") | |||||
option(OPT_INLINE_STATE "Enable Inline state" ON) | |||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang") | |||||
option(OPT_INLINE_STATE "Enable Inline state" ON) | |||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") | |||||
option(OPT_INLINE_STATE "Enable Inline state" ON) | |||||
else() | |||||
option(OPT_INLINE_STATE "Enable Inline state" OFF) | |||||
endif() | |||||
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") | |||||
option(OPT_USE_CONCEPT "Use conecpt instead of enable_if" ON) | |||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") | |||||
option(OPT_USE_CONCEPT "Use conecpt instead of enable_if" ON) | |||||
else() | |||||
option(OPT_USE_CONCEPT "Use conecpt instead of enable_if" OFF) | |||||
endif() | |||||
option(OPT_MULT_SCHEDULER "Enable multiple schedulers" ON) | |||||
option(OPT_DEBUG_COUNTER "Debug objects count" OFF) | |||||
option(OPT_KEEP_REAL_SIZE "Keep real size in queue" OFF) | |||||
#set(RESUMEF_USE_CUSTOM_SPINLOCK "std::mutex") | |||||
if(OPT_MULT_SCHEDULER) | |||||
set(RESUMEF_ENABLE_MULT_SCHEDULER 1) | |||||
endif() | |||||
if(OPT_INLINE_STATE) | |||||
set(RESUMEF_INLINE_STATE 1) | |||||
endif() | |||||
if(OPT_DEBUG_COUNTER) | |||||
set(RESUMEF_DEBUG_COUNTER 1) | |||||
endif() | |||||
if(OPT_USE_CONCEPT) | |||||
set(RESUMEF_ENABLE_CONCEPT 1) | |||||
endif() | |||||
if(OPT_KEEP_REAL_SIZE) | |||||
set(_WITH_LOCK_FREE_Q_KEEP_REAL_SIZE 1) | |||||
endif() | |||||
configure_file( | |||||
${PROJECT_SOURCE_DIR}/config.h.in | |||||
${PROJECT_SOURCE_DIR}/librf/src/config.h) | |||||
include_directories( | include_directories( | ||||
${PROJECT_SOURCE_DIR}/librf | ${PROJECT_SOURCE_DIR}/librf | ||||
) | ) |
#pragma once | |||||
#ifndef RESUMEF_ENABLE_MULT_SCHEDULER | |||||
#cmakedefine RESUMEF_ENABLE_MULT_SCHEDULER @RESUMEF_ENABLE_MULT_SCHEDULER@ | |||||
#endif //RESUMEF_ENABLE_MULT_SCHEDULER | |||||
#ifndef RESUMEF_INLINE_STATE | |||||
#if defined(__clang__) || defined(_MSC_VER) | |||||
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@ | |||||
#else | |||||
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@ | |||||
#endif //defined(__clang__) || defined(_MSC_VER) | |||||
#endif //RESUMEF_INLINE_STATE | |||||
#ifndef RESUMEF_DEBUG_COUNTER | |||||
#cmakedefine RESUMEF_DEBUG_COUNTER @RESUMEF_DEBUG_COUNTER@ | |||||
#endif //RESUMEF_DEBUG_COUNTER | |||||
#ifndef RESUMEF_ENABLE_CONCEPT | |||||
#ifdef __cpp_lib_concepts | |||||
#cmakedefine RESUMEF_ENABLE_CONCEPT @RESUMEF_ENABLE_CONCEPT@ | |||||
#else | |||||
#cmakedefine RESUMEF_ENABLE_CONCEPT @RESUMEF_ENABLE_CONCEPT@ | |||||
#endif //#ifdef __cpp_lib_concepts | |||||
#endif //#ifndef RESUMEF_ENABLE_CONCEPT | |||||
#ifndef _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE | |||||
#cmakedefine _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE @_WITH_LOCK_FREE_Q_KEEP_REAL_SIZE@ | |||||
#endif //_WITH_LOCK_FREE_Q_KEEP_REAL_SIZE | |||||
#cmakedefine RESUMEF_USE_CUSTOM_SPINLOCK @RESUMEF_USE_CUSTOM_SPINLOCK@ |
#include <experimental/coroutine> | #include <experimental/coroutine> | ||||
#endif | #endif | ||||
#include "src/config.h" | |||||
#include "src/def.h" | #include "src/def.h" | ||||
#include "src/macro_def.inl" | #include "src/macro_def.inl" | ||||
#include "src/counted_ptr.h" | #include "src/counted_ptr.h" |
#pragma once | |||||
#ifndef RESUMEF_ENABLE_MULT_SCHEDULER | |||||
#define RESUMEF_ENABLE_MULT_SCHEDULER 1 | |||||
#endif //RESUMEF_ENABLE_MULT_SCHEDULER | |||||
#ifndef RESUMEF_INLINE_STATE | |||||
#if defined(__clang__) || defined(_MSC_VER) | |||||
#define RESUMEF_INLINE_STATE 1 | |||||
#else | |||||
#define RESUMEF_INLINE_STATE 1 | |||||
#endif //defined(__clang__) || defined(_MSC_VER) | |||||
#endif //RESUMEF_INLINE_STATE | |||||
#ifndef RESUMEF_DEBUG_COUNTER | |||||
/* #undef RESUMEF_DEBUG_COUNTER */ | |||||
#endif //RESUMEF_DEBUG_COUNTER | |||||
#ifndef RESUMEF_ENABLE_CONCEPT | |||||
#ifdef __cpp_lib_concepts | |||||
#define RESUMEF_ENABLE_CONCEPT 1 | |||||
#else | |||||
#define RESUMEF_ENABLE_CONCEPT 1 | |||||
#endif //#ifdef __cpp_lib_concepts | |||||
#endif //#ifndef RESUMEF_ENABLE_CONCEPT | |||||
#ifndef _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE | |||||
/* #undef _WITH_LOCK_FREE_Q_KEEP_REAL_SIZE */ | |||||
#endif //_WITH_LOCK_FREE_Q_KEEP_REAL_SIZE | |||||
/* #undef RESUMEF_USE_CUSTOM_SPINLOCK */ |
#define RESUMEF_NS namespace resumef | #define RESUMEF_NS namespace resumef | ||||
#endif | #endif | ||||
#ifndef RESUMEF_ENABLE_MULT_SCHEDULER | |||||
#define RESUMEF_ENABLE_MULT_SCHEDULER 1 | |||||
#endif | |||||
//如果不清楚context frame的内存布局的情况下,该值设置为0 | |||||
#if defined(__clang__) || defined(_MSC_VER) | |||||
#define RESUMEF_INLINE_STATE 1 | |||||
#else | |||||
#define RESUMEF_INLINE_STATE 0 | |||||
#endif | |||||
RESUMEF_NS | RESUMEF_NS | ||||
{ | { | ||||
struct scheduler_t; | struct scheduler_t; |
#pragma once | #pragma once | ||||
#ifndef RESUMEF_ENABLE_CONCEPT | |||||
#ifdef __cpp_lib_concepts | |||||
#define RESUMEF_ENABLE_CONCEPT 0 | |||||
#else | |||||
#define RESUMEF_ENABLE_CONCEPT 0 | |||||
#endif //#ifdef __cpp_lib_concepts | |||||
#endif //#ifndef RESUMEF_ENABLE_CONCEPT | |||||
#if RESUMEF_ENABLE_CONCEPT | #if RESUMEF_ENABLE_CONCEPT | ||||
#include <concepts> | #include <concepts> | ||||
#endif | #endif |
<ClInclude Include="..\librf\src\channel.h" /> | <ClInclude Include="..\librf\src\channel.h" /> | ||||
<ClInclude Include="..\librf\src\channel_v1.h" /> | <ClInclude Include="..\librf\src\channel_v1.h" /> | ||||
<ClInclude Include="..\librf\src\channel_v2.h" /> | <ClInclude Include="..\librf\src\channel_v2.h" /> | ||||
<ClInclude Include="..\librf\src\config.h" /> | |||||
<ClInclude Include="..\librf\src\counted_ptr.h" /> | <ClInclude Include="..\librf\src\counted_ptr.h" /> | ||||
<ClInclude Include="..\librf\src\current_scheduler.h" /> | <ClInclude Include="..\librf\src\current_scheduler.h" /> | ||||
<ClInclude Include="..\librf\src\def.h" /> | <ClInclude Include="..\librf\src\def.h" /> | ||||
<ClInclude Include="dcas.h" /> | <ClInclude Include="dcas.h" /> | ||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="..\config.h.in" /> | |||||
<None Include="..\librf\src\asio_task_1.10.0.inl" /> | <None Include="..\librf\src\asio_task_1.10.0.inl" /> | ||||
<None Include="..\librf\src\asio_task_1.12.0.inl" /> | <None Include="..\librf\src\asio_task_1.12.0.inl" /> | ||||
<None Include="..\librf\src\channel_v2.inl" /> | <None Include="..\librf\src\channel_v2.inl" /> |
<ClInclude Include="..\librf\src\yield.h"> | <ClInclude Include="..\librf\src\yield.h"> | ||||
<Filter>librf\src</Filter> | <Filter>librf\src</Filter> | ||||
</ClInclude> | </ClInclude> | ||||
<ClInclude Include="..\librf\src\config.h"> | |||||
<Filter>librf\src</Filter> | |||||
</ClInclude> | |||||
</ItemGroup> | </ItemGroup> | ||||
<ItemGroup> | <ItemGroup> | ||||
<None Include="..\librf\src\asio_task_1.12.0.inl"> | <None Include="..\librf\src\asio_task_1.12.0.inl"> | ||||
<None Include="..\librf\src\without_deadlock_assemble.inl"> | <None Include="..\librf\src\without_deadlock_assemble.inl"> | ||||
<Filter>librf\src</Filter> | <Filter>librf\src</Filter> | ||||
</None> | </None> | ||||
<None Include="..\config.h.in" /> | |||||
</ItemGroup> | </ItemGroup> | ||||
</Project> | </Project> |