blob: bca0627dc467e889f184f68af458fdba844f4988 [file]
load("@bazel_skylib//rules:common_settings.bzl", "bool_flag")
load("@rules_cc//cc:defs.bzl", "cc_library")
package(default_visibility = ["//visibility:public"])
# See https://www.boost.org/doc/libs/1_87_0/libs/log/doc/html/log/installation/config.html
_TEXTUAL_HDRS = [
"include/boost/log/detail/adaptive_mutex.hpp",
"include/boost/log/detail/attribute_get_value_impl.hpp",
"include/boost/log/detail/footer.hpp",
"include/boost/log/detail/generate_overloads.hpp",
"include/boost/log/detail/light_function_pp.hpp",
"include/boost/log/detail/named_scope_fmt_pp.hpp",
"include/boost/log/detail/trivial_keyword.hpp",
]
bool_flag(
name = "use_avx2",
build_setting_default = False,
)
config_setting(
name = "use_avx2_setting",
constraint_values = ["@platforms//cpu:x86_64"],
flag_values = {":use_avx2": "true"},
)
cc_library(
name = "boost.log",
srcs = glob(
[
"src/*.*pp",
"src/setup/*.*pp",
],
exclude = [
"src/dump_avx2.cpp",
"src/dump_ssse3.cpp",
],
) + select({
"@platforms//os:linux": glob(["src/posix/*.*pp"]),
"@platforms//os:windows": glob(["src/windows/*.*pp"]),
"//conditions:default": [],
}) + select({
"@platforms//cpu:x86_64": ["src/dump_ssse3.cpp"],
"//conditions:default": [],
}) + select({
":use_avx2_setting": ["src/dump_avx2.cpp"],
"//conditions:default": [],
}),
hdrs = glob(
["include/**/*.hpp"],
exclude = [
"include/boost/log/support/xpressive.hpp",
"include/boost/log/support/spirit_classic.hpp",
"include/boost/log/support/spirit_qi.hpp",
] + _TEXTUAL_HDRS,
),
copts = select({
"@platforms//cpu:x86_64": ["-mssse3"],
"//conditions:default": [],
}) + select({
":use_avx2_setting": ["-mavx2"],
"//conditions:default": [],
}),
defines = ["BOOST_LOG_NO_LIB"],
features = ["parse_headers"],
includes = [
"include",
"src",
],
linkopts = select({
"@platforms//os:linux": ["-lrt"],
"@platforms//os:windows": [
"secur32.lib",
"psapi.lib",
"ws2_32.lib",
"mswsock.lib",
"advapi32.lib",
],
"//conditions:default": [],
}),
local_defines = [
"__STDC_CONSTANT_MACROS",
"BOOST_LOG_BUILDING_THE_LIB",
"BOOST_LOG_SETUP_BUILDING_THE_LIB",
"BOOST_LOG_USE_STD_REGEX",
"BOOST_SPIRIT_USE_PHOENIX_V3=1",
"BOOST_THREAD_DONT_USE_CHRONO",
] + select({
"@platforms//cpu:x86_64": ["BOOST_LOG_USE_SSSE3"],
"//conditions:default": [],
}) + select({
":use_avx2_setting": ["BOOST_LOG_USE_AVX2"],
"//conditions:default": [],
}) + select({
"@platforms//os:linux": [
"BOOST_LOG_USE_NATIVE_SYSLOG",
"_XOPEN_SOURCE=600",
],
"@platforms//os:macos": [
"BOOST_LOG_USE_NATIVE_SYSLOG",
"BOOST_LOG_WITHOUT_IPC", # TODO: ld: symbol(s) not found for architecture
],
"@platforms//os:windows": [
"_CRT_SECURE_NO_DEPRECATE",
"_CRT_SECURE_NO_WARNINGS",
"_SCL_SECURE_NO_DEPRECATE",
"_SCL_SECURE_NO_WARNINGS",
"BOOST_LOG_WITHOUT_EVENT_LOG", # TODO: compile simple_event_log.mc
"BOOST_USE_WINDOWS_H",
"NOMINMAX",
"SECURITY_WIN32",
"WIN32_LEAN_AND_MEAN",
],
"//conditions:default": [],
}),
textual_hdrs = _TEXTUAL_HDRS,
deps = [
"@boost.align",
"@boost.asio",
"@boost.assert",
"@boost.atomic",
"@boost.bind",
"@boost.config",
"@boost.core",
"@boost.exception",
"@boost.filesystem",
"@boost.fusion",
"@boost.interprocess",
"@boost.iterator",
"@boost.move",
"@boost.mpl",
"@boost.optional",
"@boost.parameter",
"@boost.phoenix",
"@boost.preprocessor",
"@boost.property_tree",
"@boost.random",
"@boost.smart_ptr",
"@boost.thread",
"@boost.throw_exception",
"@boost.type_traits",
],
)