1load("@pico-sdk//bazel:defs.bzl", "incompatible_with_config")
2
3package(default_visibility = ["//visibility:public"])
4
5# This exists to break a dependency cycle between
6# this library and //src/common/pico_sync.
7# Application code should always use :pico_time instead.
8cc_library(
9    name = "pico_time_headers",
10    hdrs = [
11        "include/pico/time.h",
12        "include/pico/timeout_helper.h",
13    ],
14    includes = ["include"],
15    # invalid_params_if() uses Statement Expressions, which aren't supported in MSVC.
16    target_compatible_with = incompatible_with_config("@rules_cc//cc/compiler:msvc-cl"),
17    visibility = [
18        "//src/common/pico_sync:__pkg__",
19        "//src/host/pico_time_adapter:__pkg__",
20        "//src/rp2_common/tinyusb:__pkg__",
21    ],
22    deps = select({
23        "//bazel/constraint:host": [
24            "//src/host/hardware_timer:hardware_timer_headers",
25        ],
26        "//conditions:default": [
27            "//src/rp2_common/hardware_timer:hardware_timer_headers",
28        ],
29    }),
30)
31
32cc_library(
33    name = "pico_time",
34    srcs = [
35        "time.c",
36        "timeout_helper.c",
37    ],
38    hdrs = [
39        "include/pico/time.h",
40        "include/pico/timeout_helper.h",
41    ],
42    # macOS defines __weak as part of Xcode, and the semantics are unfortunately
43    # different.
44    copts = select({
45        "@platforms//os:macos": ["-Wno-ignored-attributes"],
46        "//conditions:default": [],
47    }),
48    includes = ["include"],
49    deps = [
50        "//src/common/pico_base_headers",
51        "//src/common/pico_sync",
52        "//src/common/pico_util",
53    ] + select({
54        "//bazel/constraint:host": [
55            "//src/host/hardware_gpio",
56            "//src/host/hardware_timer",
57            "//src/host/pico_runtime",
58            "//src/host/pico_time_adapter",
59        ],
60        "//conditions:default": [
61            "//src/rp2_common/hardware_gpio",
62            "//src/rp2_common/hardware_timer",
63            "//src/rp2_common/pico_runtime_init",
64            "//src/rp2_common/pico_time_adapter",
65        ],
66    }),
67)
68