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

option(OPT_KEEP_REAL_SIZE "Keep real size in queue" OFF) option(OPT_KEEP_REAL_SIZE "Keep real size in queue" OFF)
option(OPT_DISABLE_MULT_THREAD "Disable multi-threaded scheduler" OFF) option(OPT_DISABLE_MULT_THREAD "Disable multi-threaded scheduler" OFF)
option(OPT_USE_MIMALLOC "Use mimalloc" OFF) option(OPT_USE_MIMALLOC "Use mimalloc" OFF)
option(OPT_DYNAMIC_LIBRARY "Use shared library" OFF)
if (UNIX) if (UNIX)
if(OPT_USE_MIMALLOC) if(OPT_USE_MIMALLOC)
if(OPT_DISABLE_MULT_THREAD) if(OPT_DISABLE_MULT_THREAD)
set(RESUMEF_DISABLE_MULT_THREAD 1) set(RESUMEF_DISABLE_MULT_THREAD 1)
endif() endif()
if(OPT_DYNAMIC_LIBRARY)
set(RESUMEF_USE_SHARD_LIBRARY 1)
add_compile_definitions("-DRESUMEF_DYNAMIC_EXPORTS=1")
endif()
configure_file( configure_file(
${PROJECT_SOURCE_DIR}/config.h.in ${PROJECT_SOURCE_DIR}/config.h.in
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin) 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( include_directories(

+ 1
- 1
README.md View File

# librf 2.9.10 # librf 2.9.10


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


支持以下平台和编译器: 支持以下平台和编译器:



+ 3
- 1
config.h.in View File

#if defined(__clang__) || defined(_MSC_VER) #if defined(__clang__) || defined(_MSC_VER)
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@ #cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@
#else #else
#cmakedefine RESUMEF_INLINE_STATE @RESUMEF_INLINE_STATE@
#cmakedefine RESUMEF_INLINE_STATE 0
#endif //defined(__clang__) || defined(_MSC_VER) #endif //defined(__clang__) || defined(_MSC_VER)
#endif //RESUMEF_INLINE_STATE #endif //RESUMEF_INLINE_STATE
#endif //RESUMEF_DISABLE_MULT_THREAD #endif //RESUMEF_DISABLE_MULT_THREAD
#cmakedefine RESUMEF_USE_CUSTOM_SPINLOCK @RESUMEF_USE_CUSTOM_SPINLOCK@ #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



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


#endif //RESUMEF_DISABLE_MULT_THREAD #endif //RESUMEF_DISABLE_MULT_THREAD


/* #undef RESUMEF_USE_CUSTOM_SPINLOCK */ /* #undef RESUMEF_USE_CUSTOM_SPINLOCK */

/* #undef RESUMEF_USE_SHARD_LIBRARY */

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

#define unlikely(x) x #define unlikely(x) x
#endif // unlikely #endif // unlikely
#endif // defined(__clang__) || defined(__GNUC__) #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



} }


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

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

return get_state(); return get_state();
} }


/*
template <typename _Ty> template <typename _Ty>
void* promise_impl_t<_Ty>::operator new(size_t _Size) void* promise_impl_t<_Ty>::operator new(size_t _Size)
{ {
return _Al.deallocate(reinterpret_cast<char*>(_Ptr), _Size); return _Al.deallocate(reinterpret_cast<char*>(_Ptr), _Size);
#endif #endif
} }
*/
} }



Loading…
Cancel
Save