1load("@pico-sdk//bazel:defs.bzl", "incompatible_with_config")
2
3package(default_visibility = ["//visibility:public"])
4
5cc_library(
6    name = "pico_sync_headers",
7    hdrs = [
8        "include/pico/critical_section.h",
9        "include/pico/lock_core.h",
10        "include/pico/mutex.h",
11        "include/pico/sem.h",
12        "include/pico/sync.h",
13    ],
14    includes = ["include"],
15    visibility = [
16        "//src/rp2_common/hardware_sync:__pkg__",
17        "//src/rp2_common/hardware_sync_spin_lock:__pkg__",
18    ],
19)
20
21cc_library(
22    name = "pico_sync",
23    srcs = [
24        "critical_section.c",
25        "lock_core.c",
26        "mutex.c",
27        "sem.c",
28    ],
29    # valid_params_if() uses Statement Expressions, which aren't supported in MSVC.
30    target_compatible_with = incompatible_with_config("@rules_cc//cc/compiler:msvc-cl"),
31    deps = [
32        ":pico_sync_headers",
33        "//src/common/pico_base_headers",
34        "//src/common/pico_time:pico_time_headers",
35    ] + select({
36        "//bazel/constraint:host": [
37            "//src/host/hardware_sync",
38            "//src/host/pico_runtime",
39        ],
40        "//conditions:default": [
41            "//src/rp2_common/hardware_sync",
42            "//src/rp2_common/hardware_sync_spin_lock",
43            "//src/rp2_common/pico_runtime_init",
44        ],
45    }),
46)
47