cmake_minimum_required(VERSION 3.21) include($ENV{XMOS_CMAKE_PATH}/xcommon.cmake) # Auto-generate schedule and top level config files if( NOT ${Python3_FOUND} ) message(FATAL_ERROR "Python3 not found for running . ") endif() #copy conftest.py in the build directory since pytest_collect_file only collects tests from the directory tree where conftest.py is present configure_file( conftest.py conftest.py COPYONLY ) ## executable output directory set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin) # Set unity runner generate script set(GEN_RUNNER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/generate_unity_runner.py) # Create directory for runner files set(RUNNERS_DIR ${CMAKE_CURRENT_LIST_DIR}/src.runners ) file(MAKE_DIRECTORY ${RUNNERS_DIR} ) # Find unit test files file(GLOB_RECURSE TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/test_*/*.c) # For every source file in xua_unit_tests/ foreach(TESTFILE ${TEST_SOURCES}) set(XMOS_SANDBOX_DIR ${CMAKE_CURRENT_LIST_DIR}/../../..) # Get test name from C file stem cmake_path(GET TESTFILE STEM TESTNAME) project(${TESTNAME}) message(STATUS "Processing unit test: ${TESTNAME}") # Create runner file directory file(MAKE_DIRECTORY ${RUNNERS_DIR}/${TESTNAME}) ##################### ## Create runner file ##################### set( RUNNER_FILE ${RUNNERS_DIR}/${TESTNAME}/${TESTNAME}_Runner.c ) set( GEN_RUNNER_SCRIPT_BYPRODUCTS ${RUNNER_FILE}) unset(GEN_RUNNER_SCRIPT_ARGS) list(APPEND GEN_RUNNER_SCRIPT_ARGS --project-root ${XMOS_SANDBOX_DIR}) list(APPEND GEN_RUNNER_SCRIPT_ARGS --source-file ${TESTFILE}) list(APPEND GEN_RUNNER_SCRIPT_ARGS --runner-file ${RUNNER_FILE}) ## Add command to generate runner file add_custom_command( OUTPUT ${RUNNER_FILE} COMMAND python ${GEN_RUNNER_SCRIPT} ${GEN_RUNNER_SCRIPT_ARGS} COMMENT "Generate XUA Unit Test Runner" ) ########################## ## Do xcommon cmake build ########################## set(APP_HW_TARGET XK-EVK-XU316) set(APP_DEPENDENT_MODULES "lib_xua" "lib_unity(2.5.2)") # set(APP_PCA_ENABLE ON) set(APP_COMPILER_FLAGS ${EXTRA_BUILD_FLAGS} -fcomment-asm -Wall -O2 -report -g -fxscope -DUSB_TILE=tile[0] -DUNITY_SUPPORT_64 -DUNITY_INCLUDE_DOUBLE -DXUD_CORE_CLOCK=600 -DXUD_SERIES_SUPPORT=4 -DXASSERT_ENABLE_ASSERTIONS=0 ) # For HID tests only enable HID if(${TESTFILE} MATCHES ".+hid.*") list(APPEND APP_COMPILER_FLAGS "-DHID_CONTROLS=1") endif() # Workaround for xcommon cmake pre-pending CMAKE_CURRENT_LIST_DIR string(REPLACE ${CMAKE_CURRENT_LIST_DIR} "" UNIT_TEST_SOURCE_RELATIVE ${TESTFILE}) string(REPLACE ${CMAKE_CURRENT_LIST_DIR} "" RUNNER_FILE_RELATIVE ${RUNNER_FILE}) set(APP_C_SRCS ${RUNNER_FILE_RELATIVE} ${UNIT_TEST_SOURCE_RELATIVE} ) get_filename_component(TEST_FILE_DIR ${TESTFILE} DIRECTORY) set(APP_INCLUDES ${CMAKE_CURRENT_LIST_DIR}/src ${TEST_FILE_DIR} ${XMOS_SANDBOX_DIR}/lib_xud/lib_xud/src/user/class) XMOS_REGISTER_APP() endforeach()