|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- cmake_minimum_required(VERSION 3.14)
- PROJECT(librf)
-
- if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
- set(CMAKE_CXX_FLAGS "-std=c++20 -fcoroutines-ts")
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "AppleClang")
- set(CMAKE_CXX_FLAGS "-std=c++20 -fcoroutines-ts")
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
- set(CMAKE_CXX_FLAGS "/std:c++latest /await /EHsc")
- elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
- set(CMAKE_CXX_FLAGS "-std=c++20 -fcoroutines-ts")
- 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_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_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
- )
-
- set(SRC
- ${PROJECT_SOURCE_DIR}/librf/src/event_v1.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/event_v2.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/mutex_v1.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/mutex_v2.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/rf_task.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/scheduler.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/sleep.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/state.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/timer.cpp
- ${PROJECT_SOURCE_DIR}/librf/src/when_v2.cpp
- )
-
- set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/lib)
- set(LIB_NAME librf)
- #add_library(${LIB_NAME} SHARED ${SRC})
- add_library(${LIB_NAME} STATIC ${SRC})
-
-
-
- aux_source_directory(${PROJECT_SOURCE_DIR}/tutorial TSRC)
- set(TSRC ${TSRC}
- ${PROJECT_SOURCE_DIR}/benchmark/benchmark_async_mem.cpp
- ${PROJECT_SOURCE_DIR}/benchmark/benchmark_channel_passing_next.cpp
- ${PROJECT_SOURCE_DIR}/test_librf.cpp
- )
-
- set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)
- add_executable(test ${TSRC})
- target_link_libraries(test ${LIB_NAME})
|