cmake_minimum_required(VERSION 3.13)
# Requires the official Raspberry Pi Pico SDK and arm-none-eabi GNU toolchain.
# Example: cmake -S . -B build-pico -DPICO_SDK_PATH=/path/pico-sdk -DPICO_BOARD=pico
if(NOT PICO_SDK_PATH AND DEFINED ENV{PICO_SDK_PATH})
    set(PICO_SDK_PATH $ENV{PICO_SDK_PATH})
endif()
if(NOT PICO_SDK_PATH)
    message(FATAL_ERROR "Set PICO_SDK_PATH to the official pico-sdk checkout")
endif()
include(${PICO_SDK_PATH}/external/pico_sdk_import.cmake)
project(smart_cabinet C CXX ASM)
set(CMAKE_C_STANDARD 11)
set(CMAKE_CXX_STANDARD 17)
pico_sdk_init()
option(CABINET_USE_USB "Use USB CDC instead of UART0/RS485 for NDJSON" OFF)
add_executable(smart_cabinet src/cabinet.c src/protocol.c src/pico_main.c)
target_include_directories(smart_cabinet PRIVATE include)
target_compile_options(smart_cabinet PRIVATE -Wall -Wextra -Werror)
target_link_libraries(smart_cabinet pico_stdlib pico_unique_id hardware_flash hardware_adc hardware_i2c hardware_sync hardware_uart hardware_watchdog)
target_compile_definitions(smart_cabinet PRIVATE CABINET_USE_USB=$<BOOL:${CABINET_USE_USB}> PICO_STDIO_USB_STDOUT_TIMEOUT_US=10000 PICO_STDIO_USB_CONNECT_WAIT_TIMEOUT_MS=0)
pico_enable_stdio_usb(smart_cabinet ${CABINET_USE_USB})
pico_enable_stdio_uart(smart_cabinet 0)
pico_add_extra_outputs(smart_cabinet)
