# MU90 MPO Bridge
# All rights reserved 2026 (C) Papadopol Lucian-Ioan l.i.papadopol@gmail.com
# This software is free to use but not to share/modify and/or make profit.

cmake_minimum_required(VERSION 3.13)

if (NOT DEFINED PICO_BOARD)
    set(PICO_BOARD waveshare_rp2350_zero CACHE STRING "Target Pico board")
endif()

include(pico_sdk_import.cmake)

project(mu90_mpo_bridge C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()

if (PICO_SDK_VERSION_STRING VERSION_LESS "2.3.0")
    message(FATAL_ERROR "MU90 MPO Bridge requires Raspberry Pi Pico SDK 2.3.0 or later (found ${PICO_SDK_VERSION_STRING})")
endif()

add_executable(mu90_mpo_bridge
    src/main.c
    src/mpo_bus.c
    src/status_led.c
    src/usb_protocol.c
    src/usb_descriptors.c
    ../common/crc32.c
)

pico_generate_pio_header(mu90_mpo_bridge
    ${CMAKE_CURRENT_LIST_DIR}/src/ws2812.pio
)

target_include_directories(mu90_mpo_bridge PRIVATE
    ${CMAKE_CURRENT_LIST_DIR}/src
    ${CMAKE_CURRENT_LIST_DIR}/../common
)

target_compile_options(mu90_mpo_bridge PRIVATE
    -Wall -Wextra -Wpedantic
)

target_link_libraries(mu90_mpo_bridge PRIVATE
    pico_stdlib
    hardware_gpio
    hardware_pio
    hardware_clocks
    tinyusb_device
    tinyusb_board
)

pico_enable_stdio_usb(mu90_mpo_bridge 0)
pico_enable_stdio_uart(mu90_mpo_bridge 0)
pico_add_extra_outputs(mu90_mpo_bridge)
