xref: /aosp_15_r20/external/pigweed/third_party/pico_sdk/src/rp2_common/tinyusb/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
20config("public_include_dirs") {
21  include_dirs = [ "${PICO_SRC_DIR}/lib/tinyusb/src" ]
22}
23
24config("tinyusb_defines") {
25  defines = [
26    "CFG_TUSB_DEBUG=0",
27    "CFG_TUSB_MCU=OPT_MCU_RP2040",
28    "CFG_TUSB_OS=OPT_OS_PICO",
29  ]
30}
31
32config("silence_errors") {
33  cflags = [
34    "-Wno-cast-qual",
35    "-Wno-strict-prototypes",
36  ]
37}
38
39# This creates a circular dependency on pico_stdlib, so we have to be messy
40# about grabbing the right dependencies.
41pw_source_set("bsp") {
42  remove_configs = [ "$dir_pw_build:strict_warnings" ]
43  configs = [
44    ":public_include_dirs",
45    "${PICO_ROOT}/src/common/pico_stdlib:public_include_dirs",
46    "${PICO_ROOT}/src/rp2_common/pico_stdio_usb:public_include_dirs",
47  ]
48  public_configs = [ ":tinyusb_defines" ]
49  include_dirs = [ "${PICO_SRC_DIR}/lib/tinyusb/hw" ]
50  deps = [
51    "${PICO_ROOT}/src/common/pico_base",
52    "${PICO_ROOT}/src/common/pico_binary_info",
53    "${PICO_ROOT}/src/rp2_common/hardware_gpio",
54    "${PICO_ROOT}/src/rp2_common/hardware_sync",
55    "${PICO_ROOT}/src/rp2_common/hardware_uart",
56    "${PICO_ROOT}/src/rp2_common/pico_stdio:headers",
57    "${PICO_ROOT}/src/rp2_common/pico_stdio_usb:tusb_config",
58  ]
59  public_deps = [
60    "${PICO_ROOT}/src/common/pico_sync",
61    "${PICO_ROOT}/src/common/pico_time",
62  ]
63  sources = [
64    "${PICO_SRC_DIR}/lib/tinyusb/hw/bsp/board.h",
65    "${PICO_SRC_DIR}/lib/tinyusb/hw/bsp/rp2040/family.c",
66  ]
67  visibility = [
68    ":tinyusb",
69    "${PICO_ROOT}/src/common/pico_stdlib:headers",
70  ]
71}
72
73pw_source_set("tinyusb") {
74  configs = [
75    "${PICO_ROOT}/gn:disable_warnings",
76    ":silence_errors",
77  ]
78  public_configs = [
79    ":public_include_dirs",
80    ":tinyusb_defines",
81  ]
82  public_deps = [
83    "${PICO_ROOT}/src/common/pico_sync",
84    "${PICO_ROOT}/src/common/pico_time:headers",
85    "${PICO_ROOT}/src/rp2_common/hardware_irq",
86    "${PICO_ROOT}/src/rp2_common/hardware_resets",
87    "${PICO_ROOT}/src/rp2_common/pico_fix/rp2040_usb_device_enumeration",
88    "${PICO_ROOT}/src/rp2_common/pico_stdio:headers",
89    "${PICO_ROOT}/src/rp2_common/pico_stdio_usb:tusb_config",
90  ]
91  deps = [ ":bsp" ]
92  public = [ "${PICO_SRC_DIR}/lib/tinyusb/src/tusb.h" ]
93  sources = [
94    "${PICO_SRC_DIR}/lib/tinyusb/src/class/audio/audio_device.c",
95    "${PICO_SRC_DIR}/lib/tinyusb/src/class/cdc/cdc_device.c",
96    "${PICO_SRC_DIR}/lib/tinyusb/src/class/dfu/dfu_device.c",
97    "${PICO_SRC_DIR}/lib/tinyusb/src/class/dfu/dfu_rt_device.c",
98    "${PICO_SRC_DIR}/lib/tinyusb/src/class/hid/hid_device.c",
99    "${PICO_SRC_DIR}/lib/tinyusb/src/class/midi/midi_device.c",
100    "${PICO_SRC_DIR}/lib/tinyusb/src/class/msc/msc_device.c",
101    "${PICO_SRC_DIR}/lib/tinyusb/src/class/net/ecm_rndis_device.c",
102    "${PICO_SRC_DIR}/lib/tinyusb/src/class/net/ncm_device.c",
103    "${PICO_SRC_DIR}/lib/tinyusb/src/class/usbtmc/usbtmc_device.c",
104    "${PICO_SRC_DIR}/lib/tinyusb/src/class/vendor/vendor_device.c",
105    "${PICO_SRC_DIR}/lib/tinyusb/src/class/video/video_device.c",
106    "${PICO_SRC_DIR}/lib/tinyusb/src/common/tusb_fifo.c",
107    "${PICO_SRC_DIR}/lib/tinyusb/src/device/usbd.c",
108    "${PICO_SRC_DIR}/lib/tinyusb/src/device/usbd_control.c",
109    "${PICO_SRC_DIR}/lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c",
110    "${PICO_SRC_DIR}/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c",
111    "${PICO_SRC_DIR}/lib/tinyusb/src/tusb.c",
112  ]
113  allow_circular_includes_from = [ ":bsp" ]
114}
115