summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorgraham sanderson <[email protected]>2021-06-02 08:32:21 -0500
committergraham sanderson <[email protected]>2021-06-02 09:33:23 -0500
commitbef33d108a2f183227ccbc1f2027f354415a39fb (patch)
tree7c289efc28502fc12cd502bc2ae6507cae39b71a /hw
parent109d02531e3ba208627b4dfab29d29df3d8a4565 (diff)
move core definition of source file includes from SDK into family.cmake
only build webserver example if lwip submodule initialized
Diffstat (limited to 'hw')
-rw-r--r--hw/bsp/rp2040/family.cmake95
1 files changed, 87 insertions, 8 deletions
diff --git a/hw/bsp/rp2040/family.cmake b/hw/bsp/rp2040/family.cmake
index e791648a9..e70cbd129 100644
--- a/hw/bsp/rp2040/family.cmake
+++ b/hw/bsp/rp2040/family.cmake
@@ -5,31 +5,110 @@ if (NOT TARGET _rp2040_family_inclusion_marker)
# include basic family CMake functionality
set(FAMILY_MCUS RP2040)
+ if (NOT BOARD)
+ message(FATAL_ERROR "BOARD must be specified")
+ endif()
+
# add the SDK in case we are standalone tinyusb example (noop if already present)
include(${CMAKE_CURRENT_LIST_DIR}/pico_sdk_import.cmake)
include(${CMAKE_CURRENT_LIST_DIR}/../family_common.cmake)
- # todo should we default to pico_sdk?
- if (NOT BOARD)
- message(FATAL_ERROR "BOARD must be specified")
- endif()
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
# TOP is absolute path to root directory of TinyUSB git repo
set(TOP "${CMAKE_CURRENT_LIST_DIR}/../../..")
get_filename_component(TOP "${TOP}" REALPATH)
- if (NOT PICO_TINYUSB_PATH)
- set(PICO_TINYUSB_PATH ${TOP})
+ if (NOT TOP)
+ set(TOP ${TOP})
endif()
- # tinyusb_additions will hold our extra settings libraries
+ # Base config for both device and host; wrapped by SDK's tinyusb_common
+ add_library(tinyusb_common_base INTERFACE)
+
+ target_sources(tinyusb_common_base INTERFACE
+ ${TOP}/src/tusb.c
+ ${TOP}/src/common/tusb_fifo.c
+ )
+
+ target_include_directories(tinyusb_common_base INTERFACE
+ ${TOP}/src
+ ${TOP}/src/common
+ ${TOP}/hw
+ )
+
+ target_link_libraries(tinyusb_common_base INTERFACE
+ hardware_structs
+ hardware_irq
+ hardware_resets
+ pico_sync
+ )
+
+ set(TINYUSB_DEBUG_LEVEL 0)
+ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+ message("Compiling TinyUSB with CFG_TUSB_DEBUG=1")
+ set(TINYUSB_DEBUG_LEVEL 1)
+ endif ()
+
+ target_compile_definitions(tinyusb_common_base INTERFACE
+ CFG_TUSB_MCU=OPT_MCU_RP2040
+ CFG_TUSB_OS=OPT_OS_PICO
+ CFG_TUSB_DEBUG=${TINYUSB_DEBUG_LEVEL}
+ )
+
+ # Base config for device mode; wrapped by SDK's tinyusb_device
+ add_library(tinyusb_device_base INTERFACE)
+ target_sources(tinyusb_device_base INTERFACE
+ ${TOP}/src/portable/raspberrypi/rp2040/dcd_rp2040.c
+ ${TOP}/src/portable/raspberrypi/rp2040/rp2040_usb.c
+ ${TOP}/src/device/usbd.c
+ ${TOP}/src/device/usbd_control.c
+ ${TOP}/src/class/audio/audio_device.c
+ ${TOP}/src/class/cdc/cdc_device.c
+ ${TOP}/src/class/dfu/dfu_device.c
+ ${TOP}/src/class/dfu/dfu_rt_device.c
+ ${TOP}/src/class/hid/hid_device.c
+ ${TOP}/src/class/midi/midi_device.c
+ ${TOP}/src/class/msc/msc_device.c
+ ${TOP}/src/class/net/net_device.c
+ ${TOP}/src/class/usbtmc/usbtmc_device.c
+ ${TOP}/src/class/vendor/vendor_device.c
+ )
+
+
+ # Base config for host mode; wrapped by SDK's tinyusb_host
+ add_library(tinyusb_host_base INTERFACE)
+ target_sources(tinyusb_host_base INTERFACE
+ ${TOP}/src/portable/raspberrypi/rp2040/hcd_rp2040.c
+ ${TOP}/src/portable/raspberrypi/rp2040/rp2040_usb.c
+ ${TOP}/src/host/usbh.c
+ ${TOP}/src/host/usbh_control.c
+ ${TOP}/src/host/hub.c
+ ${TOP}/src/class/cdc/cdc_host.c
+ ${TOP}/src/class/hid/hid_host.c
+ ${TOP}/src/class/msc/msc_host.c
+ ${TOP}/src/class/vendor/vendor_host.c
+ )
+
+ # Sometimes have to do host specific actions in mostly
+ # common functions
+ target_compile_definitions(tinyusb_host_base INTERFACE
+ RP2040_USB_HOST_MODE=1
+ )
+
+ add_library(tinyusb_bsp INTERFACE)
+ target_sources(tinyusb_bsp INTERFACE
+ ${TOP}/hw/bsp/rp2040/family.c
+ )
+# target_include_directories(tinyusb_bsp INTERFACE
+# ${TOP}/hw/bsp/rp2040)
+
+ # tinyusb_additions will hold our extra settings for examples
add_library(tinyusb_additions INTERFACE)
target_compile_definitions(tinyusb_additions INTERFACE
PICO_RP2040_USB_DEVICE_ENUMERATION_FIX=1
- CFG_TUSB_MCU=OPT_MCU_RP2040 # this is already included in the SDK, but needed here for build_family.py grep
)
if(DEFINED LOG)