blob: 3aeed0f1ec9d6cdae50470fd1c99260f8db0a6fd [file] [log] [blame]
load("//bazel:defs.bzl", "compatible_with_rp2")
package(default_visibility = ["//visibility:public"])
# This exists to break dependency cycles between
# this library and the stdio implementations.
# Application code should always use :pico_stdio instead.
cc_library(
name = "pico_stdio_headers",
hdrs = [
"include/pico/stdio.h",
"include/pico/stdio/driver.h",
],
defines = ["LIB_PICO_STDIO=1"],
includes = ["include"],
target_compatible_with = compatible_with_rp2(),
visibility = [
"//src/rp2_common/pico_clib_interface:__pkg__",
"//src/rp2_common/pico_stdio_rtt:__pkg__",
"//src/rp2_common/pico_stdio_semihosting:__pkg__",
"//src/rp2_common/pico_stdio_uart:__pkg__",
"//src/rp2_common/pico_stdio_usb:__pkg__",
"//src/rp2_common/tinyusb:__pkg__",
],
# Ensure these defines are always present.
deps = [
"//src/rp2_common/pico_stdio_semihosting:LIB_PICO_STDIO_SEMIHOSTING",
"//src/rp2_common/pico_stdio_uart:LIB_PICO_STDIO_UART",
"//src/rp2_common/pico_stdio_usb:LIB_PICO_STDIO_USB",
],
)
cc_library(
name = "pico_stdio",
srcs = ["stdio.c"],
linkopts = [
"-Wl,--wrap=printf",
"-Wl,--wrap=vprintf",
"-Wl,--wrap=puts",
"-Wl,--wrap=putchar",
"-Wl,--wrap=getchar",
],
target_compatible_with = compatible_with_rp2(),
deps = [
":pico_stdio_headers",
"//src/common/pico_sync",
"//src/common/pico_time",
"//src/rp2_common:pico_platform",
"//src/rp2_common/pico_printf",
"//src/rp2_common/pico_stdio_semihosting",
"//src/rp2_common/pico_stdio_semihosting:LIB_PICO_STDIO_SEMIHOSTING",
"//src/rp2_common/pico_stdio_uart",
"//src/rp2_common/pico_stdio_uart:LIB_PICO_STDIO_UART",
"//src/rp2_common/pico_stdio_usb",
"//src/rp2_common/pico_stdio_usb:LIB_PICO_STDIO_USB",
],
alwayslink = True, # Ensures the wrapped symbols are linked in.
)