cmake_minimum_required(VERSION 3.13)

set(PICO_BOARD pico_w CACHE STRING "Board type")
set(PICO_CYW43_ARCH_THREADSAFE_BACKGROUND ON)

include(${CMAKE_CURRENT_LIST_DIR}/pico_sdk_import.cmake)

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

pico_sdk_init()

add_executable(artnetdmx
    src/main.c
    src/config.c
    src/channels.c
    src/dmx_out.c
    src/artnet.c
    src/wifi_mgr.c
    src/http_server.c
    third_party/dhcpserver/dhcpserver.c
)

pico_generate_pio_header(artnetdmx ${CMAKE_CURRENT_LIST_DIR}/src/dmx_out.pio)

target_include_directories(artnetdmx PRIVATE
    ${CMAKE_CURRENT_LIST_DIR}/include
    ${CMAKE_CURRENT_LIST_DIR}
    ${CMAKE_CURRENT_LIST_DIR}/third_party/dhcpserver
)

target_compile_definitions(artnetdmx PRIVATE
    PICO_CYW43_ARCH_THREADSAFE_BACKGROUND=1
)

target_link_libraries(artnetdmx
    pico_stdlib
    pico_cyw43_arch_lwip_threadsafe_background
    pico_lwip_mdns
    hardware_pio
    hardware_dma
    hardware_flash
    hardware_sync
)

pico_configure_ip4_address(artnetdmx PRIVATE
    CYW43_DEFAULT_IP_AP_ADDRESS 192.168.4.1
)

pico_enable_stdio_usb(artnetdmx 1)
pico_enable_stdio_uart(artnetdmx 0)

pico_add_extra_outputs(artnetdmx)
