@@ -13,6 +13,51 @@ endif() | |||
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( | |||
${PROJECT_SOURCE_DIR}/librf | |||
) |
@@ -0,0 +1,31 @@ | |||
#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@ |
@@ -38,6 +38,8 @@ | |||
#include <experimental/coroutine> | |||
#endif | |||
#include "src/config.h" | |||
#include "src/def.h" | |||
#include "src/macro_def.inl" | |||
#include "src/counted_ptr.h" |
@@ -0,0 +1,31 @@ | |||
#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 */ |
@@ -8,17 +8,6 @@ | |||
#define RESUMEF_NS namespace resumef | |||
#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 | |||
{ | |||
struct scheduler_t; |
@@ -1,13 +1,5 @@ | |||
#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 | |||
#include <concepts> | |||
#endif |
@@ -222,6 +222,7 @@ | |||
<ClInclude Include="..\librf\src\channel.h" /> | |||
<ClInclude Include="..\librf\src\channel_v1.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\current_scheduler.h" /> | |||
<ClInclude Include="..\librf\src\def.h" /> | |||
@@ -255,6 +256,7 @@ | |||
<ClInclude Include="dcas.h" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<None Include="..\config.h.in" /> | |||
<None Include="..\librf\src\asio_task_1.10.0.inl" /> | |||
<None Include="..\librf\src\asio_task_1.12.0.inl" /> | |||
<None Include="..\librf\src\channel_v2.inl" /> |
@@ -240,6 +240,9 @@ | |||
<ClInclude Include="..\librf\src\yield.h"> | |||
<Filter>librf\src</Filter> | |||
</ClInclude> | |||
<ClInclude Include="..\librf\src\config.h"> | |||
<Filter>librf\src</Filter> | |||
</ClInclude> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<None Include="..\librf\src\asio_task_1.12.0.inl"> | |||
@@ -279,5 +282,6 @@ | |||
<None Include="..\librf\src\without_deadlock_assemble.inl"> | |||
<Filter>librf\src</Filter> | |||
</None> | |||
<None Include="..\config.h.in" /> | |||
</ItemGroup> | |||
</Project> |