cmake_minimum_required(VERSION 3.13)

# Explicitely define board
set(PICO_BOARD pico_w)
if(NOT DEFINED PICO_BOARD)
    add_definitions(-DPICO_BOARD=${PICO_BOARD})
endif()

# Include pico-sdk cmake support
include($ENV{PICO_SDK_PATH}/external/pico_sdk_import.cmake)

project(PicoW_UDP_Tests C CXX ASM)
set(CMAKE_C_STANDARD 17)
set(CMAKE_CXX_STANDARD 17)

pico_sdk_init()

# Executables and sources
add_executable(PicoW_Access_Point
  src/main_access_point.c
)

add_executable(PicoW_Station
  src/main_station.c
)

# Libs
add_subdirectory(lib/PicoW_WiFi_Operator)
add_subdirectory(lib/PicoW_UDP)

target_link_libraries(PicoW_Access_Point
  pico_stdlib
  PicoW_WiFi_Operator
  PicoW_UDP
)

target_link_libraries(PicoW_Station
  pico_stdlib
  PicoW_WiFi_Operator
  PicoW_UDP
)

# Stdio configuration
pico_enable_stdio_usb(PicoW_Access_Point 1)
pico_enable_stdio_uart(PicoW_Access_Point 1)

pico_enable_stdio_usb(PicoW_Station 1)
pico_enable_stdio_uart(PicoW_Station 1)

# Output
pico_add_extra_outputs(PicoW_Access_Point)
pico_add_extra_outputs(PicoW_Station)

# Flash target
add_custom_target(Flash_Access_Point
    DEPENDS PicoW_Access_Point
    COMMAND picotool load -f ${PROJECT_BINARY_DIR}/PicoW_Access_Point.uf2
)

add_custom_target(Flash_Station
    DEPENDS PicoW_Station
    COMMAND picotool load -f ${PROJECT_BINARY_DIR}/PicoW_Station.uf2
)
