| # 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, |
| }), |
| ) |