1load("//bazel:defs.bzl", "compatible_with_config", "compatible_with_rp2", "incompatible_with_config")
2load("//bazel/util:sdk_define.bzl", "pico_sdk_define")
3
4package(default_visibility = ["//visibility:public"])
5
6alias(
7    name = "pico_stdio_usb",
8    actual = select({
9        "//bazel/constraint:pico_stdio_usb_enabled": ":pico_stdio_usb_enabled",
10        "//conditions:default": ":pico_stdio_usb_disabled",
11    }),
12)
13
14# Picotool requires this, so it should work on host as well as rp2.
15cc_library(
16    name = "reset_interface_headers",
17    hdrs = ["include/pico/stdio_usb/reset_interface.h"],
18    includes = ["include"],
19    deps = ["//src/common/pico_usb_reset_interface_headers"],
20)
21
22cc_library(
23    name = "tusb_config",
24    hdrs = ["include/tusb_config.h"],
25    includes = ["include"],
26    target_compatible_with = compatible_with_rp2(),
27)
28
29pico_sdk_define(
30    name = "LIB_PICO_STDIO_USB",
31    define_name = "LIB_PICO_STDIO_USB",
32    from_flag = "//bazel/config:PICO_STDIO_USB",
33)
34
35pico_sdk_define(
36    name = "PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS",
37    define_name = "PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS",
38    from_flag = "//bazel/config:PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS",
39)
40
41cc_library(
42    name = "pico_stdio_usb_headers",
43    hdrs = ["include/pico/stdio_usb.h"],
44    includes = ["include"],
45    target_compatible_with = compatible_with_rp2(),
46    visibility = [
47        ":__pkg__",
48        "//src/rp2_common/tinyusb:__pkg__",
49    ],
50    deps = [
51        ":LIB_PICO_STDIO_USB",
52        ":PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS",
53    ],
54)
55
56cc_library(
57    name = "pico_stdio_usb_enabled",
58    srcs = [
59        "reset_interface.c",
60        "stdio_usb.c",
61        "stdio_usb_descriptors.c",
62    ],
63    target_compatible_with = compatible_with_config(
64        "//bazel/constraint:pico_stdio_usb_enabled",
65    ) + compatible_with_rp2(),
66    deps = [
67        ":LIB_PICO_STDIO_USB",
68        ":PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS",
69        ":pico_stdio_usb_headers",
70        ":reset_interface_headers",
71        "//bazel/config:PICO_TINYUSB_LIB",
72        "//src/common/pico_binary_info",
73        "//src/common/pico_sync",
74        "//src/rp2_common/hardware_irq",
75        "//src/rp2_common/hardware_watchdog",
76        "//src/rp2_common/pico_bootrom",
77        "//src/rp2_common/pico_stdio:pico_stdio_headers",
78        "//src/rp2_common/pico_unique_id",
79    ],
80    # Ensure `stdio_usb_descriptors.c` isn't affected by link order.
81    alwayslink = True,
82)
83
84# Stub library that does NOT link in stdio USB support libs.
85cc_library(
86    name = "pico_stdio_usb_disabled",
87    target_compatible_with = incompatible_with_config(
88        "//bazel/constraint:pico_stdio_usb_enabled",
89    ) + compatible_with_rp2(),
90    deps = [
91        ":PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS",
92        ":pico_stdio_usb_headers",
93        "//src/rp2_common/pico_stdio:pico_stdio_headers",
94    ],
95)
96