blob: 1986db5a5fc01e084045fcbbe641012f4ee0cc88 [file] [log] [blame]
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,
)