| load("@rules_cc//cc:defs.bzl", "cc_library") |
| |
| package(default_visibility = ["//visibility:public"]) |
| |
| _COMMON_DEPS = [ |
| "@boost.assert", |
| "@boost.bind", |
| "@boost.chrono", |
| "@boost.config", |
| "@boost.core", |
| "@boost.date_time", |
| "@boost.move", |
| "@boost.system", |
| "@boost.type_traits", |
| ] |
| |
| _COMMON_HDRS = [ |
| "include/boost/thread/*.hpp", |
| "include/boost/thread/concurrent_queues/*.hpp", |
| "include/boost/thread/concurrent_queues/detail/*.hpp", |
| "include/boost/thread/csbl/*.hpp", |
| "include/boost/thread/csbl/memory/*.hpp", |
| "include/boost/thread/detail/*.hpp", |
| "include/boost/thread/executors/*.hpp", |
| "include/boost/thread/executors/detail/*.hpp", |
| "include/boost/thread/futures/*.hpp", |
| "include/boost/thread/pthread/shared_mutex.hpp", |
| ] |
| |
| _WINDOWS_HDRS = [ |
| "include/boost/thread/win32/*.hpp", |
| ] |
| |
| _POSIX_HDRS = [ |
| "include/boost/thread/pthread/*.hpp", |
| ] |
| |
| _MAC_HDRS = [ |
| "include/boost/thread/pthread/*.hpp", |
| ] |
| |
| _WINDOWS_SRCS = [ |
| "src/win32/*.cpp", |
| ] |
| |
| _MAC_SRCS = [ |
| "src/pthread/once.cpp", |
| "src/pthread/thread.cpp", |
| ] |
| |
| _POSIX_SRCS = [ |
| "src/pthread/thread.cpp", |
| "src/pthread/once.cpp", |
| ] |
| |
| _COMMON_SRCS = [ |
| "src/future.cpp", |
| ] |
| |
| _COMMON_EXCLUDE_SRCS = ["src/pthread/once_atomic.cpp"] |
| |
| cc_library( |
| name = "thread_posix", |
| srcs = glob( |
| _POSIX_SRCS + _COMMON_SRCS, |
| exclude = _COMMON_EXCLUDE_SRCS, |
| ), |
| hdrs = glob(_POSIX_HDRS + _COMMON_HDRS), |
| defines = [ |
| "BOOST_THREAD_DONT_USE_ATOMIC", |
| ], |
| includes = ["include"], |
| linkopts = ["-lpthread"], |
| target_compatible_with = select({ |
| "@platforms//os:windows": ["@platforms//:incompatible"], |
| "@platforms//os:macos": ["@platforms//:incompatible"], |
| "//conditions:default": [], |
| }), |
| deps = _COMMON_DEPS, |
| ) |
| |
| cc_library( |
| name = "thread_windows", |
| srcs = glob( |
| _WINDOWS_SRCS + _COMMON_SRCS, |
| exclude = _COMMON_EXCLUDE_SRCS, |
| ), |
| hdrs = glob(_WINDOWS_HDRS + _COMMON_HDRS), |
| defines = [ |
| "BOOST_THREAD_WIN32", |
| "BOOST_THREAD_DONT_USE_ATOMIC", |
| ], |
| includes = ["include"], |
| linkopts = ["-DEFAULTLIB:shell32"], |
| local_defines = [ |
| "BOOST_THREAD_BUILD_LIB", |
| ], |
| target_compatible_with = select({ |
| "@platforms//os:windows": [], |
| "@platforms//os:macos": ["@platforms//:incompatible"], |
| "//conditions:default": ["@platforms//:incompatible"], |
| }), |
| deps = _COMMON_DEPS + [ |
| "@boost.atomic", |
| ], |
| ) |
| |
| cc_library( |
| name = "thread_mac", |
| srcs = glob( |
| _MAC_SRCS + _COMMON_SRCS, |
| exclude = _COMMON_EXCLUDE_SRCS, |
| ), |
| hdrs = glob(_MAC_HDRS + _COMMON_HDRS), |
| defines = [ |
| "BOOST_THREAD_DONT_USE_ATOMIC", |
| ], |
| includes = ["include"], |
| target_compatible_with = select({ |
| "@platforms//os:windows": ["@platforms//:incompatible"], |
| "@platforms//os:macos": [], |
| "//conditions:default": ["@platforms//:incompatible"], |
| }), |
| deps = _COMMON_DEPS, |
| ) |
| |
| cc_library( |
| name = "boost.thread", |
| srcs = glob( |
| ["src/**/*.cpp"], |
| exclude = _POSIX_SRCS + _WINDOWS_SRCS + _MAC_SRCS + _COMMON_SRCS + _COMMON_EXCLUDE_SRCS, |
| ), |
| hdrs = glob( |
| [ |
| "include/**/*.hpp", |
| ], |
| exclude = _POSIX_HDRS + _WINDOWS_HDRS + _MAC_HDRS + _COMMON_HDRS, |
| ), |
| includes = ["include"], |
| deps = [ |
| "@boost.atomic", |
| "@boost.concept_check", |
| "@boost.container", |
| "@boost.container_hash", |
| "@boost.exception", |
| "@boost.function", |
| "@boost.io", |
| "@boost.optional", |
| "@boost.predef", |
| "@boost.preprocessor", |
| "@boost.smart_ptr", |
| "@boost.static_assert", |
| "@boost.throw_exception", |
| "@boost.tuple", |
| "@boost.utility", |
| ] + select({ |
| "@platforms//os:windows": [ |
| ":thread_windows", |
| "@boost.winapi", |
| ], |
| "@platforms//os:macos": [ |
| ":thread_mac", |
| ], |
| "//conditions:default": [ |
| ":thread_posix", |
| ], |
| }) + _COMMON_DEPS, |
| ) |