cmake_minimum_required(VERSION 3.21)
include($ENV{XMOS_CMAKE_PATH}/xcommon.cmake)
project(xtcp_bombard_lwip)

set(APP_HW_TARGET           xk-eth-xu316-dual-100m.xn)

set(APP_INCLUDES            ../common/include)

file(GLOB XC_SOURCES        RELATIVE ${CMAKE_CURRENT_LIST_DIR} "src/*.xc")
file(GLOB COMMON_SOURCES    RELATIVE ${CMAKE_CURRENT_LIST_DIR}
                                    "${CMAKE_CURRENT_LIST_DIR}/../common/src/*.xc")

list(APPEND XC_SOURCES ${COMMON_SOURCES})

set(APP_XC_SRCS ${XC_SOURCES})

include(${CMAKE_CURRENT_LIST_DIR}/../deps.cmake)

# Multi-PHY Options
# Default build is for dual PHY xcore-ai board
# If you need single PHY xcore-ai add '-DSINGLE_PHY=1' on cmake command line
if(DEFINED SINGLE_PHY)
set(PHY_FLAGS               -DXCORE_AI_MULTI_PHY_SINGLE_PHY=SINGLE_PHY)
else()
set(PHY_FLAGS               -DXCORE_AI_MULTI_PHY_DUAL_PHY=1)
endif()

set(COMPILER_FLAGS_COMMON   -g
                            -O3
                            -report
                            -DDEBUG_PRINT_ENABLE
                            -DUIP_CONF_MAX_CONNECTIONS=20 
                            -DUIP_CONF_MAX_LISTENPORTS=20  
                            -DUIP_USE_AUTOIP=0
                            -DBOARD_SUPPORT_BOARD=XK_ETH_XU316_DUAL_100M
                            -DXTCP_STACK_LWIP
                            ${PHY_FLAGS})

set(EXPLORER_FLAGS          -DEXPLORER_KIT=1)

# 1 process, 1 port
set(APP_COMPILER_FLAGS_1_1_UDP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=1 -DOPEN_PORTS_PER_PROCESS=1  -DPROTOCOL=XTCP_PROTOCOL_UDP ${EXPLORER_FLAGS})
set(APP_COMPILER_FLAGS_1_1_TCP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=1 -DOPEN_PORTS_PER_PROCESS=1  -DPROTOCOL=XTCP_PROTOCOL_TCP ${EXPLORER_FLAGS})
# 2 processes, 2 port
set(APP_COMPILER_FLAGS_2_2_UDP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=2 -DOPEN_PORTS_PER_PROCESS=2  -DPROTOCOL=XTCP_PROTOCOL_UDP ${EXPLORER_FLAGS})
set(APP_COMPILER_FLAGS_2_2_TCP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=2 -DOPEN_PORTS_PER_PROCESS=2  -DPROTOCOL=XTCP_PROTOCOL_TCP ${EXPLORER_FLAGS})
# 4 processes, 1 port
# set(APP_COMPILER_FLAGS_4_1_UDP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=4 -DOPEN_PORTS_PER_PROCESS=1  -DPROTOCOL=XTCP_PROTOCOL_UDP ${EXPLORER_FLAGS})
# set(APP_COMPILER_FLAGS_4_1_TCP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=4 -DOPEN_PORTS_PER_PROCESS=1  -DPROTOCOL=XTCP_PROTOCOL_TCP ${EXPLORER_FLAGS})
# 4 processes, 4 ports
# set(APP_COMPILER_FLAGS_4_4_UDP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=4 -DOPEN_PORTS_PER_PROCESS=4  -DPROTOCOL=XTCP_PROTOCOL_UDP ${EXPLORER_FLAGS})
# set(APP_COMPILER_FLAGS_4_4_TCP_EXPLORER_ETH     ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=4 -DOPEN_PORTS_PER_PROCESS=4  -DPROTOCOL=XTCP_PROTOCOL_TCP ${EXPLORER_FLAGS})
# 1 process, 16 ports
# set(APP_COMPILER_FLAGS_1_16_UDP_EXPLORER_ETH    ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=1 -DOPEN_PORTS_PER_PROCESS=16 -DPROTOCOL=XTCP_PROTOCOL_UDP ${EXPLORER_FLAGS})
# set(APP_COMPILER_FLAGS_1_16_TCP_EXPLORER_ETH    ${COMPILER_FLAGS_COMMON} -DREFLECT_PROCESSES=1 -DOPEN_PORTS_PER_PROCESS=16 -DPROTOCOL=XTCP_PROTOCOL_TCP ${EXPLORER_FLAGS})

set(APP_XSCOPE_SRCS         config.xscope)

set(XMOS_SANDBOX_DIR        ${CMAKE_CURRENT_LIST_DIR}/../../..)

XMOS_REGISTER_APP()
