cmake_minimum_required(VERSION 3.13)

# Board: pico, pico2, pico_w, pico2_w. All run this firmware unchanged; the
# radio variants simply leave their radio unused.
set(PICO_BOARD pico2 CACHE STRING "Target board")

include(pico_sdk_import.cmake)

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

pico_sdk_init()

add_executable(pianoled
	main.cpp
	picostrip.cpp
	../src/pianoleds.cpp
	usb_descriptors.c
)

# PLATFORM_PICO selects the Pico wiring block in config.h.
target_compile_definitions(pianoled PRIVATE PLATFORM_PICO)

target_include_directories(pianoled PRIVATE
	${CMAKE_CURRENT_LIST_DIR}
	${CMAKE_CURRENT_LIST_DIR}/../src
)

pico_generate_pio_header(pianoled ${CMAKE_CURRENT_LIST_DIR}/ws2812.pio)

target_link_libraries(pianoled
	pico_stdlib
	hardware_pio
	tinyusb_device
	tinyusb_board
)

# Debug log on UART only. USB is the MIDI device and must not be shared.
pico_enable_stdio_uart(pianoled 1)
pico_enable_stdio_usb(pianoled 0)

pico_add_extra_outputs(pianoled)
