|
| 1 | +cmake_minimum_required(VERSION 3.13) |
| 2 | + |
| 3 | +set(PICO_SDK_FETCH_FROM_GIT off) |
| 4 | +set(PICO_BOARD=pico) |
| 5 | + |
| 6 | +include(pico_sdk_import.cmake) |
| 7 | +set(CMAKE_CXX_FLAGS "-Ofast -Wall -mcpu=cortex-m0plus -mtune=cortex-m0plus") |
| 8 | + |
| 9 | +project(deskhop_project C CXX ASM) |
| 10 | +set(CMAKE_C_STANDARD 11) |
| 11 | +set(CMAKE_CXX_STANDARD 17) |
| 12 | +pico_sdk_init() |
| 13 | + |
| 14 | +set(PICO_PIO_USB_DIR ${CMAKE_CURRENT_LIST_DIR}/Pico-PIO-USB) |
| 15 | + |
| 16 | +add_library(Pico-PIO-USB STATIC |
| 17 | + ${PICO_PIO_USB_DIR}/src/pio_usb.c |
| 18 | + ${PICO_PIO_USB_DIR}/src/pio_usb_host.c |
| 19 | + ${PICO_PIO_USB_DIR}/src/usb_crc.c |
| 20 | +) |
| 21 | +pico_generate_pio_header(Pico-PIO-USB ${PICO_PIO_USB_DIR}/src/usb_tx.pio) |
| 22 | +pico_generate_pio_header(Pico-PIO-USB ${PICO_PIO_USB_DIR}/src/usb_rx.pio) |
| 23 | + |
| 24 | +target_link_libraries(Pico-PIO-USB PRIVATE |
| 25 | + pico_stdlib |
| 26 | + pico_multicore |
| 27 | + hardware_pio |
| 28 | + hardware_dma |
| 29 | +) |
| 30 | +target_include_directories(Pico-PIO-USB PRIVATE ${PICO_PIO_USB_DIR}) |
| 31 | + |
| 32 | +set(COMMON_SOURCES |
| 33 | + ${CMAKE_CURRENT_LIST_DIR}/src/usb_descriptors.c |
| 34 | + ${CMAKE_CURRENT_LIST_DIR}/src/utils.c |
| 35 | + ${CMAKE_CURRENT_LIST_DIR}/src/handlers.c |
| 36 | + ${CMAKE_CURRENT_LIST_DIR}/src/setup.c |
| 37 | + ${CMAKE_CURRENT_LIST_DIR}/src/keyboard.c |
| 38 | + ${CMAKE_CURRENT_LIST_DIR}/src/mouse.c |
| 39 | + ${CMAKE_CURRENT_LIST_DIR}/src/led.c |
| 40 | + ${CMAKE_CURRENT_LIST_DIR}/src/uart.c |
| 41 | + ${CMAKE_CURRENT_LIST_DIR}/src/usb.c |
| 42 | + ${CMAKE_CURRENT_LIST_DIR}/src/main.c |
| 43 | +) |
| 44 | + |
| 45 | +set(COMMON_INCLUDES |
| 46 | + ${CMAKE_CURRENT_LIST_DIR}/src |
| 47 | + ${PICO_PIO_USB_DIR}/src |
| 48 | +) |
| 49 | + |
| 50 | +set(COMMON_LINK_LIBRARIES |
| 51 | + pico_stdlib |
| 52 | + hardware_uart |
| 53 | + hardware_gpio |
| 54 | + |
| 55 | + tinyusb_device |
| 56 | + pico_multicore |
| 57 | + Pico-PIO-USB |
| 58 | +) |
| 59 | + |
| 60 | +# Pico A - Keyboard |
| 61 | +add_executable(board_A) |
| 62 | + |
| 63 | +target_sources(board_A PUBLIC ${COMMON_SOURCES}) |
| 64 | +target_compile_definitions(board_A PRIVATE BOARD_ROLE=0) |
| 65 | +target_include_directories(board_A PUBLIC ${COMMON_INCLUDES}) |
| 66 | +target_link_libraries(board_A PUBLIC ${COMMON_LINK_LIBRARIES}) |
| 67 | + |
| 68 | +pico_enable_stdio_usb(board_A 0) |
| 69 | +pico_add_extra_outputs(board_A) |
| 70 | + |
| 71 | + |
| 72 | +# Pico B - Mouse |
| 73 | +add_executable(board_B) |
| 74 | + |
| 75 | +target_compile_definitions(board_B PRIVATE BOARD_ROLE=1) |
| 76 | +target_sources(board_B PUBLIC ${COMMON_SOURCES}) |
| 77 | +target_include_directories(board_B PUBLIC ${COMMON_INCLUDES}) |
| 78 | +target_link_libraries(board_B PUBLIC ${COMMON_LINK_LIBRARIES}) |
| 79 | + |
| 80 | +pico_enable_stdio_usb(board_B 0) |
| 81 | +pico_add_extra_outputs(board_B) |
0 commit comments