Browse Source

支持编译为动态库

3.0.0
tearshark 3 years ago
parent
commit
748d74a037
7 changed files with 32 additions and 10 deletions
  1. 10
    2
      CMakeLists.txt
  2. 1
    1
      README.md
  3. 3
    1
      config.h.in
  4. 4
    2
      librf/src/config.h
  5. 14
    0
      librf/src/macro_def.inl
  6. 0
    2
      librf/src/promise.h
  7. 0
    2
      librf/src/promise.inl

+ 10
- 2
CMakeLists.txt View File

@@ -54,6 +54,7 @@ option(OPT_DEBUG_COUNTER "Debug objects count" OFF)
option(OPT_KEEP_REAL_SIZE "Keep real size in queue" OFF)
option(OPT_DISABLE_MULT_THREAD "Disable multi-threaded scheduler" OFF)
option(OPT_USE_MIMALLOC "Use mimalloc" OFF)
option(OPT_DYNAMIC_LIBRARY "Use shared library" OFF)
if (UNIX)
if(OPT_USE_MIMALLOC)
@@ -91,6 +92,10 @@ endif()
if(OPT_DISABLE_MULT_THREAD)
set(RESUMEF_DISABLE_MULT_THREAD 1)
endif()
if(OPT_DYNAMIC_LIBRARY)
set(RESUMEF_USE_SHARD_LIBRARY 1)
add_compile_definitions("-DRESUMEF_DYNAMIC_EXPORTS=1")
endif()
configure_file(
${PROJECT_SOURCE_DIR}/config.h.in
@@ -119,8 +124,11 @@ ${PROJECT_SOURCE_DIR}/librf/src/when_v2.cpp
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
#add_library(librf SHARED ${SRC})
add_library(librf STATIC ${SRC})
if(OPT_DYNAMIC_LIBRARY)
add_library(librf SHARED ${SRC})
else()
add_library(librf STATIC ${SRC})
endif()
include_directories(

+ 1
- 1
README.md View File

@@ -1,7 +1,7 @@
# librf 2.9.10

### librf - 协程库
* librf是一个基于C++ Coroutines提案 ‘Stackless Resumable Functions’编写的非对称stackless协程库。
* librf是一个基于C++20 coroutines编写的无栈协程库。

支持以下平台和编译器:


+ 3
- 1
config.h.in View File

@@ -4,7 +4,7 @@
#if defined(__clang__) || defined(_MSC_VER)
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@
#else
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@
#cmakedefine RESUMEF_INLINE_STATE 0
#endif //defined(__clang__) || defined(_MSC_VER)
#endif //RESUMEF_INLINE_STATE
@@ -21,3 +21,5 @@
#endif //RESUMEF_DISABLE_MULT_THREAD
#cmakedefine RESUMEF_USE_CUSTOM_SPINLOCK @RESUMEF_USE_CUSTOM_SPINLOCK@
#cmakedefine RESUMEF_USE_SHARD_LIBRARY @RESUMEF_USE_SHARD_LIBRARY@

+ 4
- 2
librf/src/config.h View File

@@ -2,9 +2,9 @@

#ifndef RESUMEF_INLINE_STATE
#if defined(__clang__) || defined(_MSC_VER)
/* #undef RESUMEF_INLINE_STATE */
#define RESUMEF_INLINE_STATE 1
#else
/* #undef RESUMEF_INLINE_STATE */
#define RESUMEF_INLINE_STATE 0
#endif //defined(__clang__) || defined(_MSC_VER)
#endif //RESUMEF_INLINE_STATE

@@ -21,3 +21,5 @@
#endif //RESUMEF_DISABLE_MULT_THREAD

/* #undef RESUMEF_USE_CUSTOM_SPINLOCK */

/* #undef RESUMEF_USE_SHARD_LIBRARY */

+ 14
- 0
librf/src/macro_def.inl View File

@@ -31,3 +31,17 @@
#define unlikely(x) x
#endif // unlikely
#endif // defined(__clang__) || defined(__GNUC__)

#ifdef RESUMEF_USE_SHARD_LIBRARY
# if _WIN32
# ifdef RESUMEF_DYNAMIC_EXPORTS
# define LIBRF_API __declspec(dllexport)
# else //RESUMEF_DYNAMIC_EXPORTS
# define LIBRF_API __declspec(dllimport)
# endif //RESUMEF_DYNAMIC_EXPORTS
# else //_WIN32
# define LIBRF_API __attribute__((visibility("default")))
# endif //_WIN32
#else //RESUMEF_USE_SHARD_LIBRARY
# define LIBRF_API
#endif //RESUMEF_USE_SHARD_LIBRARY

+ 0
- 2
librf/src/promise.h View File

@@ -104,11 +104,9 @@ namespace resumef

}

/*
using _Alloc_char = std::allocator<char>;
void* operator new(size_t _Size);
void operator delete(void* _Ptr, size_t _Size);
*/
#if !RESUMEF_INLINE_STATE
private:
counted_ptr<state_type> _state = state_future_t::_Alloc_state<state_type>(false);

+ 0
- 2
librf/src/promise.inl View File

@@ -48,7 +48,6 @@ namespace resumef
return get_state();
}

/*
template <typename _Ty>
void* promise_impl_t<_Ty>::operator new(size_t _Size)
{
@@ -102,6 +101,5 @@ namespace resumef
return _Al.deallocate(reinterpret_cast<char*>(_Ptr), _Size);
#endif
}
*/
}


Loading…
Cancel
Save