xref: /aosp_15_r20/external/pigweed/third_party/pico_sdk/src/rp2_common/pico_stdio/BUILD.gn (revision 61c4878ac05f98d0ceed94b57d316916de578985)
1# Copyright 2022 The Pigweed Authors
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may not
4# use this file except in compliance with the License. You may obtain a copy of
5# the License at
6#
7#     https://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations under
13# the License.
14
15import("//build_overrides/pi_pico.gni")
16import("//build_overrides/pigweed.gni")
17
18import("$dir_pw_build/target_types.gni")
19
20# TODO(amontanez): This can go away if the GN build can be upstreamed to the
21# Pi Pico repo.
22_CWD = "${PICO_SRC_DIR}/src/rp2_common/pico_stdio"
23
24import("${PICO_ROOT}/src/common/pico_stdlib/pico_stdio.gni")
25
26config("public_include_dirs") {
27  include_dirs = [ "${_CWD}/include" ]
28  defines = [ "${PICO_STDIO}=1" ]
29}
30
31config("printf_wrappers") {
32  ldflags = [
33    "-Wl,--wrap=printf",
34    "-Wl,--wrap=vprintf",
35    "-Wl,--wrap=puts",
36    "-Wl,--wrap=putchar",
37    "-Wl,--wrap=getchar",
38  ]
39}
40
41# TODO(amontanez): This is definitely a facade. For now, just have header and
42# header+impl build targets to simulate.
43pw_source_set("headers") {
44  public_configs = [
45    ":public_include_dirs",
46    "${PICO_ROOT}/gn:disable_warnings",
47  ]
48  public_deps = [
49    "${PICO_ROOT}/src/common/pico_base",
50    "${PICO_ROOT}/src/rp2_common/pico_platform",
51  ]
52
53  public = [
54    "${_CWD}/include/pico/stdio.h",
55    "${_CWD}/include/pico/stdio/driver.h",
56  ]
57}
58
59pw_source_set("pico_stdio") {
60  public_configs = [ "${PICO_ROOT}/gn:disable_warnings" ]
61  all_dependent_configs = [ ":printf_wrappers" ]
62  public_deps = [ ":headers" ]
63  deps = [
64    "${PICO_ROOT}/src/common/pico_sync",
65    "${PICO_ROOT}/src/common/pico_time",
66    "${PICO_ROOT}/src/rp2_common/pico_printf",
67  ]
68  if (PICO_STDIO == ENUM_LIB_PICO_STDIO.UART) {
69    deps += [ "${PICO_ROOT}/src/rp2_common/pico_stdio_uart" ]
70  } else if (PICO_STDIO == ENUM_LIB_PICO_STDIO.USB) {
71    deps += [ "${PICO_ROOT}/src/rp2_common/pico_stdio_usb" ]
72  } else if (PICO_STDIO == ENUM_LIB_PICO_STDIO.SEMIHOSTING) {
73    deps += [ "${PICO_ROOT}/src/rp2_common/pico_stdio_semihosting" ]
74  }
75  sources = [ "${_CWD}/stdio.c" ]
76
77  # Due to disabling CRLF support.
78  cflags = [ "-Wno-unused-parameter" ]
79}
80