1load("//bazel:defs.bzl", "compatible_with_rp2") 2 3package(default_visibility = ["//visibility:public"]) 4 5# This exists to break dependency cycles between 6# this library and the stdio implementations. 7# Application code should always use :pico_stdio instead. 8cc_library( 9 name = "pico_stdio_headers", 10 hdrs = [ 11 "include/pico/stdio.h", 12 "include/pico/stdio/driver.h", 13 ], 14 defines = ["LIB_PICO_STDIO=1"], 15 includes = ["include"], 16 target_compatible_with = compatible_with_rp2(), 17 visibility = [ 18 "//src/rp2_common/pico_clib_interface:__pkg__", 19 "//src/rp2_common/pico_stdio_rtt:__pkg__", 20 "//src/rp2_common/pico_stdio_semihosting:__pkg__", 21 "//src/rp2_common/pico_stdio_uart:__pkg__", 22 "//src/rp2_common/pico_stdio_usb:__pkg__", 23 "//src/rp2_common/tinyusb:__pkg__", 24 ], 25 # Ensure these defines are always present. 26 deps = [ 27 "//src/rp2_common/pico_stdio_semihosting:LIB_PICO_STDIO_SEMIHOSTING", 28 "//src/rp2_common/pico_stdio_uart:LIB_PICO_STDIO_UART", 29 "//src/rp2_common/pico_stdio_usb:LIB_PICO_STDIO_USB", 30 ], 31) 32 33cc_library( 34 name = "pico_stdio", 35 srcs = ["stdio.c"], 36 linkopts = [ 37 "-Wl,--wrap=printf", 38 "-Wl,--wrap=vprintf", 39 "-Wl,--wrap=puts", 40 "-Wl,--wrap=putchar", 41 "-Wl,--wrap=getchar", 42 ], 43 target_compatible_with = compatible_with_rp2(), 44 deps = [ 45 ":pico_stdio_headers", 46 "//src/common/pico_sync", 47 "//src/common/pico_time", 48 "//src/rp2_common:pico_platform", 49 "//src/rp2_common/pico_printf", 50 "//src/rp2_common/pico_stdio_semihosting", 51 "//src/rp2_common/pico_stdio_semihosting:LIB_PICO_STDIO_SEMIHOSTING", 52 "//src/rp2_common/pico_stdio_uart", 53 "//src/rp2_common/pico_stdio_uart:LIB_PICO_STDIO_UART", 54 "//src/rp2_common/pico_stdio_usb", 55 "//src/rp2_common/pico_stdio_usb:LIB_PICO_STDIO_USB", 56 ], 57 alwayslink = True, # Ensures the wrapped symbols are linked in. 58) 59