Initial copy of lib_ic UT cmake

This commit is contained in:
Ed
2024-04-18 15:31:09 +01:00
parent 7967275001
commit 5822ec7037

View File

@@ -1,103 +1,87 @@
cmake_minimum_required(VERSION 3.13) cmake_minimum_required(VERSION 3.21)
set(XMOS_TOOLS_PATH $ENV{XMOS_TOOL_PATH}/bin) ## App name
set( APP_NAME xua_unit_tests )
#********************** # Auto-generate schedule and top level config files
# Setup XMOS toolchain
#********************** if( NOT ${Python3_FOUND} )
if(NOT DEFINED ENV{XUA_PATH}) message(FATAL_ERROR "Python3 not found for running . ")
message(FATAL_ERROR "XUA_PATH environment variable not defined")
# some more commands
endif() endif()
include("$ENV{XUA_PATH}/cmake_utils/xmos_toolchain.cmake")
#********************** #copy conftest.py in the build directory since pytest_collect_file only collects tests from the directory tree where conftest.py is present
# Project configure_file( conftest.py conftest.py COPYONLY )
#**********************
# Disable in-source build.
#if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
# message(FATAL_ERROR "In-source build is not allowed! Please specify a build folder.\n\tex:cmake -B build")
#endif()
## executable output directory
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
## Define project # Set unity runner generate script
project(xua_unit_tests VERSION 0.1.0) set( GEN_RUNNER_SCRIPT ${CMAKE_CURRENT_SOURCE_DIR}/generate_unity_runner.py )
## Enable languages for project # Create directory for runner files
enable_language(CXX XC C ASM) set( RUNNERS_DIR ${CMAKE_CURRENT_BINARY_DIR}/src.runners )
file( MAKE_DIRECTORY ${RUNNERS_DIR} )
message(STATUS "CAME HERE") file( GLOB TEST_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c )
add_custom_target("runners" ALL)
add_custom_command(
TARGET runners
COMMAND python generate_unity_runners.py
COMMENT "generate unity runners"
)
message(STATUS "CAME HERE 1") # For every source file in ic_unit_tests/src
file( GLOB APP_SOURCES src/test*.xc ) foreach(testfile ${TEST_SOURCES})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin) # Get test name
foreach( testsourcefile ${APP_SOURCES} ) #cmake_path( GET testfile STEM TESTNAME )
get_filename_component(ITEM_NAME ${testsourcefile} NAME_WE) get_filename_component(TESTNAME ${testfile} NAME_WLE)
message(STATUS "item_name " ${ITEM_NAME})
add_executable(${ITEM_NAME}) # Create runner file directory
set(APP_COMPILER_FLAGS file( MAKE_DIRECTORY ${RUNNERS_DIR}/${TESTNAME} )
"-O2"
"-g" #########
"-Wall" ## Create runner file
"-report" set( RUNNER_FILE ${RUNNERS_DIR}/${TESTNAME}/${TESTNAME}_Runner.c )
"-fxscope" set( GEN_RUNNER_SCRIPT_BYPRODUCTS ${RUNNER_FILE} )
"-target=XCORE-AI-EXPLORER"
"${CMAKE_CURRENT_SOURCE_DIR}/config.xscope" unset(GEN_RUNNER_SCRIPT_ARGS)
"-DHID_CONTROLS=1" list(APPEND GEN_RUNNER_SCRIPT_ARGS --project-root ${UNITY_PATH}/.. )
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 ${Python3_EXECUTABLE} ${GEN_RUNNER_SCRIPT} ${GEN_RUNNER_SCRIPT_ARGS}
COMMENT "Generating XUA Unit Test Runner" )
#########
## Add a build target
add_executable(xua_unit_${TESTNAME})
target_sources(xua_unit_${TESTNAME}
PRIVATE
${testfile}
${RUNNER_FILE})
target_include_directories(xua_unit_${TESTNAME}
PRIVATE
src
${CMAKE_CURRENT_SOURCE_DIR}/../../../modules/lib_ic/src
)
# target_link_libraries(fwk_voice_${TESTNAME}
# PUBLIC
# fwk_voice::ic
# fwk_voice::test::shared::test_utils
# fwk_voice::test::shared::unity)
if(${CMAKE_SYSTEM_NAME} STREQUAL XCORE_XS3A)
target_compile_options(xua_unit_${TESTNAME}
PRIVATE
"-DUNITY_SUPPORT_64" "-DUNITY_SUPPORT_64"
"-DUNITY_INCLUDE_DOUBLE" "-Wno-xcore-fptrgroup"
) "-report"
set_source_files_properties( "-DSPEEDUP_FACTOR=${TEST_SPEEDUP_FACTOR}")
"runners/${ITEM_NAME}/${ITEM_NAME}_Runner.c"
PROPERTIES GENERATED TRUE
)
set(APP_SRCS target_link_options(xua_unit_${TESTNAME}
${testsourcefile} PRIVATE
"runners/${ITEM_NAME}/${ITEM_NAME}_Runner.c" "-target=${XCORE_TARGET}")
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Unity/src/unity.c" else()
) target_link_libraries(xua_unit_${TESTNAME} m)
set(APP_INCLUDES endif()
"src" endforeach()
"${CMAKE_CURRENT_SOURCE_DIR}/../../../Unity/src"
)
set(APP_DEPENDENT_MODULES
"lib_xua(>=2.0.0)"
"lib_logging(>=3.0.0)"
"lib_xassert(>=4.0.0)"
"lib_xud(>=2.0.0)"
"lib_spdif(>=4.0.0)"
"lib_mic_array(>=4.0.0)"
)
include("$ENV{XUA_PATH}/cmake_utils/xua.cmake")
set_target_properties(${ITEM_NAME} PROPERTIES OUTPUT_NAME ${ITEM_NAME}.xe)
target_compile_options(${ITEM_NAME} PRIVATE ${APP_COMPILER_FLAGS})
target_include_directories(${ITEM_NAME}
PRIVATE ${APP_INCLUDES}
PRIVATE ${XUA_INCLUDES_ALL}
)
target_sources(${ITEM_NAME}
PRIVATE ${APP_SRCS}
PRIVATE ${XUA_SRCS_ALL}
)
add_dependencies(${ITEM_NAME} runners)
target_link_options(${ITEM_NAME} PRIVATE ${APP_COMPILER_FLAGS})
## Set any additional flags only for C++
set(CMAKE_CXX_FLAGS "-std=c++11")
endforeach( testsourcefile ${APP_SOURCES} )
message(STATUS ${APP_SOURCES})
message(STATUS "CAME HERE 2")
## Register the application
#XMOS_REGISTER_APP()