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

set(APP_HW_TARGET XK-EVK-XU316)
set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../../../../)
include(${XMOS_SANDBOX_DIR}/lib_voice/tests/etc/build_options.cmake)

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

set(APP_INCLUDES
    ${CMAKE_CURRENT_LIST_DIR}/src
    ${CMAKE_CURRENT_LIST_DIR}/../../shared/pseudo_rand
    ${CMAKE_CURRENT_LIST_DIR}/../../shared/testing)

file(GLOB SHARED_SRC
    RELATIVE ${CMAKE_CURRENT_LIST_DIR}
    CONFIGURE_DEPENDS
    ${XMOS_SANDBOX_DIR}/lib_voice/tests/shared/pseudo_rand/*.c
    ${XMOS_SANDBOX_DIR}/lib_voice/tests/shared/testing/*.c
)

file(GLOB_RECURSE TEST_C_SRCS CONFIGURE_DEPENDS RELATIVE ${CMAKE_CURRENT_LIST_DIR} src/*.c)
set(APP_C_SRCS ${TEST_C_SRCS} ${SHARED_SRC})

file(GLOB_RECURSE tests RELATIVE ${CMAKE_CURRENT_LIST_DIR} CONFIGURE_DEPENDS src/test*.c)

set(AEC_SCHEDULE_CONFIG ${DE_UNIT_TESTS_BUILD_CONFIG})

foreach(test_file ${tests})
    get_filename_component(test_name ${test_file} NAME_WE)
    set(SOURCE_FILES_${test_name} ${test_file})
    set(APP_COMPILER_FLAGS_${test_name}
        -Os
        -g
        -report
        -Wall
        -fxscope
        -DDEBUG_PRINT_ENABLE=1
        -DUNITY_SUPPORT_64
        -DSPEEDUP_FACTOR=${TEST_SPEEDUP_FACTOR}
        )
endforeach()

set(LIB_UNITY_AUTO_TEST_RUNNER ON)
set(LIB_UNITY_USE_FIXTURE OFF)
set(LIB_UNITY_USE_MEMORY OFF)
XMOS_REGISTER_APP()
