blob: 5e1aa2dedc6f3e6022c05908156649b00be777c3 [file]
# Copyright 2026 The Fuchsia Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
load("@fuchsia_build_info//:args.bzl", "compilation_mode")
load("//build/bazel/rules/rust:defs.bzl", "rustc_library", "rustc_test")
package(default_visibility = ["//visibility:public"])
fuchsia_sync_detect_lock_cycles = compilation_mode == "dbg"
FUCHSIA_SYNC_SRCS = [
"src/condvar.rs",
"src/lib.rs",
"src/mutex.rs",
"src/rwlock.rs",
]
# @bazel2gn:transformer=deps
FUCHSIA_SYNC_DEPS_COMMON = ["//third_party/rust_crates/vendor:lock_api"]
# @bazel2gn:transformer=deps
FUCHSIA_SYNC_DEPS_FUCHSIA = [
"//sdk/rust/zx",
"//zircon/system/ulib/sync",
]
# @bazel2gn:transformer=deps
FUCHSIA_SYNC_DEPS_HOST = [
"//third_party/rust_crates/vendor:parking_lot",
"//third_party/rust_crates/vendor:parking_lot_core",
]
# @bazel2gn:transformer=deps
FUCHSIA_SYNC_TEST_DEPS = ["//third_party/rust_crates/vendor:crossbeam"]
DETECT_LOCK_CYCLE_FLAGS = ["--cfg=detect_lock_cycles"]
# @bazel2gn:transformer=deps
DETECT_LOCK_CYCLE_DEPS = ["//third_party/rust_crates/forks/tracing-mutex-0.3.2:tracing_mutex"]
rustc_library(
name = "fuchsia-sync",
srcs = FUCHSIA_SYNC_SRCS,
edition = "2024",
rustc_flags = DETECT_LOCK_CYCLE_FLAGS if fuchsia_sync_detect_lock_cycles else [],
test_deps = FUCHSIA_SYNC_TEST_DEPS,
version = "0.1.0",
with_host_unit_tests = True,
deps = FUCHSIA_SYNC_DEPS_COMMON + select({
"@platforms//os:fuchsia": FUCHSIA_SYNC_DEPS_FUCHSIA,
"//conditions:default": FUCHSIA_SYNC_DEPS_HOST,
}) + (DETECT_LOCK_CYCLE_DEPS if fuchsia_sync_detect_lock_cycles else []),
)
rustc_test(
name = "fuchsia-sync-tests-detect-cycles",
srcs = FUCHSIA_SYNC_SRCS,
edition = "2024",
rustc_flags = DETECT_LOCK_CYCLE_FLAGS,
deps = FUCHSIA_SYNC_DEPS_COMMON + FUCHSIA_SYNC_TEST_DEPS + DETECT_LOCK_CYCLE_DEPS + select({
"@platforms//os:fuchsia": FUCHSIA_SYNC_DEPS_FUCHSIA,
"//conditions:default": FUCHSIA_SYNC_DEPS_HOST,
}),
)
rustc_test(
name = "fuchsia-sync-tests-no-detect-cycles",
srcs = FUCHSIA_SYNC_SRCS,
edition = "2024",
deps = FUCHSIA_SYNC_DEPS_COMMON + FUCHSIA_SYNC_TEST_DEPS + select({
"@platforms//os:fuchsia": FUCHSIA_SYNC_DEPS_FUCHSIA,
"//conditions:default": FUCHSIA_SYNC_DEPS_HOST,
}),
)