]> git.proxmox.com Git - ceph.git/blobdiff - ceph/src/boost/libs/fiber/CMakeLists.txt
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / boost / libs / fiber / CMakeLists.txt
diff --git a/ceph/src/boost/libs/fiber/CMakeLists.txt b/ceph/src/boost/libs/fiber/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a3ff82c
--- /dev/null
@@ -0,0 +1,132 @@
+# Copyright 2020, 2021 Peter Dimov
+# Distributed under the Boost Software License, Version 1.0.
+# https://www.boost.org/LICENSE_1_0.txt
+
+cmake_minimum_required(VERSION 3.8...3.20)
+
+project(boost_fiber VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
+
+if(WIN32 AND NOT CMAKE_CXX_PLATFORM_ID MATCHES "Cygwin")
+  set(_default_target windows)
+elseif(CMAKE_SYSTEM_NAME STREQUAL Linux)
+  set(_default_target linux)
+else()
+  set(_default_target none)
+endif()
+
+set(BOOST_FIBER_NUMA_TARGET_OS "${_default_target}" CACHE STRING "Boost.Fiber target OS (aix, freebsd, hpux, linux, solaris, windows, none)")
+set_property(CACHE BOOST_FIBER_NUMA_TARGET_OS PROPERTY STRINGS aix freebsd hpux linux solaris windows none)
+
+unset(_default_target)
+
+message(STATUS "Boost.Fiber: NUMA target OS is ${BOOST_FIBER_NUMA_TARGET_OS}")
+
+# boost_fiber
+
+add_library(boost_fiber
+  src/algo/algorithm.cpp
+  src/algo/round_robin.cpp
+  src/algo/shared_work.cpp
+  src/algo/work_stealing.cpp
+  src/barrier.cpp
+  src/condition_variable.cpp
+  src/context.cpp
+  src/fiber.cpp
+  src/future.cpp
+  src/mutex.cpp
+  src/properties.cpp
+  src/recursive_mutex.cpp
+  src/recursive_timed_mutex.cpp
+  src/scheduler.cpp
+  src/timed_mutex.cpp
+  src/waker.cpp
+)
+
+add_library(Boost::fiber ALIAS boost_fiber)
+
+target_include_directories(boost_fiber PUBLIC include)
+
+target_link_libraries(boost_fiber
+  PUBLIC
+    Boost::assert
+    Boost::config
+    Boost::context
+    Boost::core
+    Boost::intrusive
+    Boost::predef
+    Boost::smart_ptr
+)
+
+target_compile_features(boost_fiber PUBLIC cxx_std_11)
+
+target_compile_definitions(boost_fiber
+  PUBLIC BOOST_FIBER_NO_LIB
+  PRIVATE BOOST_FIBER_SOURCE BOOST_FIBERS_SOURCE
+)
+
+if(BUILD_SHARED_LIBS)
+  target_compile_definitions(boost_fiber PUBLIC BOOST_FIBER_DYN_LINK BOOST_FIBERS_DYN_LINK)
+else()
+  target_compile_definitions(boost_fiber PUBLIC BOOST_FIBER_STATIC_LINK)
+endif()
+
+# boost_fiber_numa
+
+if(BOOST_FIBER_NUMA_TARGET_OS STREQUAL none)
+  set(NUMA_SOURCES
+    src/numa/pin_thread.cpp
+    src/numa/topology.cpp
+  )
+else()
+  set(NUMA_SOURCES
+    src/numa/${BOOST_FIBER_NUMA_TARGET_OS}/pin_thread.cpp
+    src/numa/${BOOST_FIBER_NUMA_TARGET_OS}/topology.cpp
+  )
+endif()
+
+add_library(boost_fiber_numa
+  ${NUMA_SOURCES}
+  src/numa/algo/work_stealing.cpp
+)
+
+add_library(Boost::fiber_numa ALIAS boost_fiber_numa)
+
+target_include_directories(boost_fiber_numa PUBLIC include)
+
+target_link_libraries(boost_fiber_numa
+  PUBLIC
+    Boost::assert
+    Boost::config
+    Boost::context
+    Boost::fiber
+    Boost::smart_ptr
+  PRIVATE
+    Boost::algorithm
+    Boost::filesystem
+    Boost::format
+)
+
+target_compile_definitions(boost_fiber_numa
+  PUBLIC BOOST_FIBER_NO_LIB
+  PRIVATE BOOST_FIBER_SOURCE BOOST_FIBERS_SOURCE
+)
+
+if(BUILD_SHARED_LIBS)
+  target_compile_definitions(boost_fiber_numa PUBLIC BOOST_FIBER_DYN_LINK BOOST_FIBERS_DYN_LINK)
+else()
+  target_compile_definitions(boost_fiber_numa PUBLIC BOOST_FIBER_STATIC_LINK)
+endif()
+
+# Install
+
+if(BOOST_SUPERPROJECT_VERSION AND NOT CMAKE_VERSION VERSION_LESS 3.13)
+  boost_install(TARGETS boost_fiber boost_fiber_numa VERSION ${BOOST_SUPERPROJECT_VERSION} HEADER_DIRECTORY include)
+endif()
+
+# Test
+
+if(BUILD_TESTING AND EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/test/CMakeLists.txt")
+
+  add_subdirectory(test)
+
+endif()