Переглянути джерело

通过cmake配置编译选项

tags/v2.9.7
tearshark 4 роки тому
джерело
коміт
0832b19a10

+ 45
- 0
CMakeLists.txt Переглянути файл

@@ -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
)

+ 31
- 0
config.h.in Переглянути файл

@@ -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@

+ 2
- 0
librf/librf.h Переглянути файл

@@ -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"

+ 31
- 0
librf/src/config.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 */

+ 0
- 11
librf/src/def.h Переглянути файл

@@ -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;

+ 0
- 8
librf/src/type_concept.inl Переглянути файл

@@ -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

+ 2
- 0
vs_proj/librf.vcxproj Переглянути файл

@@ -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" />

+ 4
- 0
vs_proj/librf.vcxproj.filters Переглянути файл

@@ -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>

Завантаження…
Відмінити
Зберегти