| function(vec_cc_test) | |
| cmake_parse_arguments( | |
| _RULE | |
| "" | |
| "NAME" | |
| "SRCS;COPTS;DEFINES;LINKOPTS;DATA;DEPS;LABELS;TIMEOUT" | |
| ${ARGN} | |
| ) | |
| set(_NAME "${_RULE_NAME}") | |
| project(${_RULE_NAME}) | |
| set (CMAKE_CXX_STANDARD 17) | |
| vec_cc_binary( | |
| NAME | |
| ${_RULE_NAME} | |
| SRCS | |
| ${_RULE_SRCS} | |
| DEPS | |
| pw_unit_test | |
| pw_unit_test.main | |
| pw_assert_basic | |
| test_v_helpers | |
| softrvv | |
| ${_RULE_DEPS} | |
| LINKOPTS | |
| ${_RULE_LINKOPTS} | |
| ) | |
| if("${_RULE_TIMEOUT}" STREQUAL "") | |
| set(_TIMEOUT 20) | |
| else() | |
| set(_TIMEOUT ${_RULE_TIMEOUT}) | |
| endif() | |
| find_file(TEST_RUNNER test_runner.py HINTS ${CMAKE_BINARY_DIR}) | |
| find_program(QEMU_RV32 qemu-system-riscv32 HINTS $ENV{OUT}/host/qemu) | |
| if(QEMU_RV32 AND TEST_RUNNER) | |
| add_test( | |
| NAME | |
| "qemu_${_RULE_NAME}" | |
| COMMAND | |
| ${TEST_RUNNER} qemu $<TARGET_FILE:${_RULE_NAME}.elf> --qemu-path ${QEMU_RV32} --timeout=${_TIMEOUT} | |
| ) | |
| set_tests_properties("qemu_${_RULE_NAME}" PROPERTIES TIMEOUT ${_TIMEOUT}) | |
| else() | |
| message(WARNING "qemu-system-riscv32 doesn't exist. Make sure you build qemu first and start a clean build to enable the qemu test") | |
| endif() | |
| find_program(RENODE_EXE Renode.exe HINTS $ENV{OUT}/host/renode) | |
| if(RENODE_EXE AND TEST_RUNNER) | |
| add_test( | |
| NAME | |
| "renode_${_RULE_NAME}" | |
| COMMAND | |
| ${TEST_RUNNER} renode $<TARGET_FILE:${_RULE_NAME}.elf> --renode-path ${RENODE_EXE} | |
| ) | |
| set_tests_properties("renode_${_RULE_NAME}" PROPERTIES TIMEOUT ${_TIMEOUT}) | |
| else() | |
| message(WARNING "Renode.exe doesn't exist. Make sure you build renode first and start a clean build to enable the renode test") | |
| endif() | |
| endfunction() |