From ffad6eaf80900a858e22378e68de8b21b96c769e Mon Sep 17 00:00:00 2001 From: hathach Date: Sun, 24 Jan 2021 00:12:20 +0700 Subject: [PATCH] cmake esp32s2 and rp2040 getting along --- examples/device/board_test/CMakeLists.txt | 71 +++++----------- examples/device/board_test/src/CMakeLists.txt | 1 + examples/device/cdc_msc/CMakeLists.txt | 80 +++++-------------- hw/bsp/rp2040/family.cmake | 46 +++++++++++ hw/bsp/rp2040/family_extra.cmake | 1 - 5 files changed, 85 insertions(+), 114 deletions(-) delete mode 100644 hw/bsp/rp2040/family_extra.cmake diff --git a/examples/device/board_test/CMakeLists.txt b/examples/device/board_test/CMakeLists.txt index 54a4009fe..e8cab1656 100644 --- a/examples/device/board_test/CMakeLists.txt +++ b/examples/device/board_test/CMakeLists.txt @@ -8,58 +8,23 @@ set(TOP "../../..") get_filename_component(TOP "${TOP}" REALPATH) # Check for -DFAMILY= -if(NOT DEFINED FAMILY) +if(FAMILY STREQUAL "esp32s2") + include(${TOP}/hw/bsp/${FAMILY}/family.cmake) + project(${PROJECT}) + +elseif(FAMILY STREQUAL "rp2040") + include(${TOP}/hw/bsp/${FAMILY}/family.cmake) + + # Example source + target_sources(${PROJECT} PUBLIC + src/main.c + ) + + # Example include + target_include_directories(${PROJECT} PUBLIC + src + ) + +else() message(FATAL_ERROR "Invalid FAMILY specified") endif() - -include(${TOP}/hw/bsp/${FAMILY}/family.cmake) -project(${PROJECT}) - -if(FAMILY STREQUAL "rp2040") - -pico_sdk_init() - -add_executable(${PROJECT}) - -# TinyUSB Stack source -set(SRC_TINYUSB - ${TOP}/src/tusb.c - ${TOP}/src/common/tusb_fifo.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_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 - ${TOP}/src/portable/raspberrypi/${FAMILY}/dcd_rp2040.c - ${TOP}/src/portable/raspberrypi/${FAMILY}/rp2040_usb.c -) - -target_sources(${PROJECT} PUBLIC - src/main.c - ${TOP}/hw/bsp/${FAMILY}/family.c - ${SRC_TINYUSB} -) - -target_include_directories(${PROJECT} PUBLIC - src/ - ${TOP}/hw - ${TOP}/src - ${TOP}/hw/bsp/${FAMILY}/boards/${BOARD} -) - -target_compile_definitions(${PROJECT} PUBLIC - CFG_TUSB_MCU=OPT_MCU_RP2040 - CFG_TUSB_OS=OPT_OS_PICO -) - -target_link_libraries(${PROJECT} pico_stdlib) - -pico_add_extra_outputs(${PROJECT}) - -endif() diff --git a/examples/device/board_test/src/CMakeLists.txt b/examples/device/board_test/src/CMakeLists.txt index 29ae46a33..e59661069 100644 --- a/examples/device/board_test/src/CMakeLists.txt +++ b/examples/device/board_test/src/CMakeLists.txt @@ -1,3 +1,4 @@ +# FAMILY = "esp32s2" idf_component_register(SRCS "main.c" INCLUDE_DIRS "." REQUIRES freertos soc) diff --git a/examples/device/cdc_msc/CMakeLists.txt b/examples/device/cdc_msc/CMakeLists.txt index ada122b62..0dc9c58e5 100644 --- a/examples/device/cdc_msc/CMakeLists.txt +++ b/examples/device/cdc_msc/CMakeLists.txt @@ -8,65 +8,25 @@ set(TOP "../../..") get_filename_component(TOP "${TOP}" REALPATH) # Check for -DFAMILY= -if(NOT DEFINED FAMILY) +if(FAMILY STREQUAL "esp32s2") + include(${TOP}/hw/bsp/${FAMILY}/family.cmake) + project(${PROJECT}) + +elseif(FAMILY STREQUAL "rp2040") + include(${TOP}/hw/bsp/${FAMILY}/family.cmake) + + # Example source + target_sources(${PROJECT} PUBLIC + src/main.c + src/msc_disk.c + src/usb_descriptors.c + ) + + # Example include + target_include_directories(${PROJECT} PUBLIC + src + ) + +else() message(FATAL_ERROR "Invalid FAMILY specified") endif() - -include(${TOP}/hw/bsp/${FAMILY}/family.cmake) -project(${PROJECT}) - -if(FAMILY STREQUAL "rp2040") - -pico_sdk_init() - -add_executable(${PROJECT}) - -# TinyUSB Stack source -set(SRC_TINYUSB - ${TOP}/src/tusb.c - ${TOP}/src/common/tusb_fifo.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_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 - ${TOP}/src/portable/raspberrypi/${FAMILY}/dcd_rp2040.c - ${TOP}/src/portable/raspberrypi/${FAMILY}/rp2040_usb.c -) - -# Example source -set(SRC_EXAMPLE - src/main.c - src/msc_disk.c - src/usb_descriptors.c -) - -target_sources(${PROJECT} PUBLIC - ${SRC_EXAMPLE} - ${TOP}/hw/bsp/${FAMILY}/family.c - ${SRC_TINYUSB} -) - -target_include_directories(${PROJECT} PUBLIC - src/ - ${TOP}/hw - ${TOP}/src - ${TOP}/hw/bsp/${FAMILY}/boards/${BOARD} -) - -target_compile_definitions(${PROJECT} PUBLIC - CFG_TUSB_MCU=OPT_MCU_RP2040 - CFG_TUSB_OS=OPT_OS_PICO -) - -target_link_libraries(${PROJECT} pico_stdlib) - -pico_add_extra_outputs(${PROJECT}) - -endif() diff --git a/hw/bsp/rp2040/family.cmake b/hw/bsp/rp2040/family.cmake index 8a3882cc0..ef6c9f41f 100644 --- a/hw/bsp/rp2040/family.cmake +++ b/hw/bsp/rp2040/family.cmake @@ -1,3 +1,49 @@ cmake_minimum_required(VERSION 3.12) + set(PICO_SDK_PATH ${TOP}/hw/mcu/raspberrypi/pico-sdk) include(${PICO_SDK_PATH}/pico_sdk_init.cmake) + +project(${PROJECT}) + +pico_sdk_init() + +add_executable(${PROJECT}) + +# TinyUSB Stack source +set(SRC_TINYUSB + ${TOP}/src/tusb.c + ${TOP}/src/common/tusb_fifo.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_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 + ${TOP}/src/portable/raspberrypi/${FAMILY}/dcd_rp2040.c + ${TOP}/src/portable/raspberrypi/${FAMILY}/rp2040_usb.c +) + +target_sources(${PROJECT} PUBLIC + ${TOP}/hw/bsp/${FAMILY}/family.c + ${SRC_TINYUSB} +) + +target_include_directories(${PROJECT} PUBLIC + ${TOP}/hw + ${TOP}/src + ${TOP}/hw/bsp/${FAMILY}/boards/${BOARD} +) + +target_compile_definitions(${PROJECT} PUBLIC + CFG_TUSB_MCU=OPT_MCU_RP2040 + CFG_TUSB_OS=OPT_OS_PICO +) + +target_link_libraries(${PROJECT} pico_stdlib) + +pico_add_extra_outputs(${PROJECT}) diff --git a/hw/bsp/rp2040/family_extra.cmake b/hw/bsp/rp2040/family_extra.cmake deleted file mode 100644 index 661845844..000000000 --- a/hw/bsp/rp2040/family_extra.cmake +++ /dev/null @@ -1 +0,0 @@ -pico_sdk_init()