diff options
author | Joerg Hofrichter <joerg.hofrichter@ni.com> | 2020-07-10 15:32:21 +0200 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-08-04 07:38:40 -0500 |
commit | 233fc368a3d5ac2472d3b53918d4f0ed1d353f2c (patch) | |
tree | f5bbb90a09cedf0bd346cd798b47e47bff6f628d | |
parent | 7afc84de1692386df5ee65462703499950170f48 (diff) | |
download | uhd-233fc368a3d5ac2472d3b53918d4f0ed1d353f2c.tar.gz uhd-233fc368a3d5ac2472d3b53918d4f0ed1d353f2c.tar.bz2 uhd-233fc368a3d5ac2472d3b53918d4f0ed1d353f2c.zip |
cmake: tests: Support qemu also for python based tests
This requires python3 to be installed in the target sysroot
-rw-r--r-- | host/CMakeLists.txt | 82 | ||||
-rw-r--r-- | host/cmake/Modules/UHDUnitTest.cmake | 24 |
2 files changed, 71 insertions, 35 deletions
diff --git a/host/CMakeLists.txt b/host/CMakeLists.txt index 0cee8582f..23056f90a 100644 --- a/host/CMakeLists.txt +++ b/host/CMakeLists.txt @@ -276,35 +276,6 @@ if(WIN32) endif(WIN32) ######################################################################## -# Option to use QEMU for running unittests -# -# This is useful when cross-compiling UHD for other architectures like arm or -# aarch64 -# -# QEMU_EXECUTABLE must be set to the name of the QEMU executable. When using -# openembedded build environment, this should be set to "qemu-${TUNE_ARCH}" -# or "${WORKDIR}/recipe-sysroot-native/usr/bin/qemu-${TUNE_ARCH}" -# -# QEMU_SYSROOT must be set to the same sysroot of the target architecture that -# was used when compiling UHD. When using openembedded build environment, this -# should be set to "${WORKDIR}/recipe-sysroot" -######################################################################## -option(ENABLE_QEMU_UNITTESTS "Use QEMU for running unittests" OFF) -mark_as_advanced(ENABLE_QEMU_UNITTESTS) -if(ENABLE_QEMU_UNITTESTS) - message(STATUS "") - message(STATUS "Use QEMU for running unittests: ${ENABLE_QEMU_UNITTESTS}") - if("${QEMU_EXECUTABLE}" STREQUAL "") - message(FATAL_ERROR "The variable QEMU_EXECUTABLE is not set") - endif() - if("${QEMU_SYSROOT}" STREQUAL "") - message(FATAL_ERROR "The variable QEMU_SYSROOT is not set") - endif() - message(STATUS " QEMU executable: ${QEMU_EXECUTABLE}") - message(STATUS " QEMU sysroot: ${QEMU_SYSROOT}") -endif(ENABLE_QEMU_UNITTESTS) - -######################################################################## # Setup Boost ######################################################################## message(STATUS "") @@ -369,6 +340,59 @@ PYTHON_CHECK_MODULE( ) ######################################################################## +# Option to use QEMU for running unittests +# +# This is useful when cross-compiling UHD for other architectures like arm or +# aarch64 +# +# QEMU_EXECUTABLE must be set to the name of the QEMU executable. When using +# openembedded build environment, this should be set to "qemu-${TUNE_ARCH}" +# or "${WORKDIR}/recipe-sysroot-native/usr/bin/qemu-${TUNE_ARCH}" +# +# QEMU_SYSROOT must be set to the same sysroot of the target architecture that +# was used when compiling UHD. When using openembedded build environment, this +# should be set to "${WORKDIR}/recipe-sysroot". +# +# QEMU_PYTHON_EXECUTABLE must be set to the path of the python executable +# compiled for the target architecture. If it is included in the target sysroot, +# this is typically ${QEMU_SYSROOT}${PYTHON_RUNTIME_EXECUTABLE}. The variable +# is automatically set to this path if the executable is available. +######################################################################## +option(ENABLE_QEMU_UNITTESTS "Use QEMU for running unittests" OFF) +mark_as_advanced(ENABLE_QEMU_UNITTESTS) +if(ENABLE_QEMU_UNITTESTS) + message(STATUS "") + message(STATUS "Use QEMU for running unittests: ${ENABLE_QEMU_UNITTESTS}") + if("${QEMU_EXECUTABLE}" STREQUAL "") + if(NOT "$ENV{OECORE_NATIVE_SYSROOT}" STREQUAL "" AND + NOT "$ENV{OECORE_TARGET_ARCH}" STREQUAL "" AND + EXISTS "$ENV{OECORE_NATIVE_SYSROOT}/usr/bin/qemu-$ENV{OECORE_TARGET_ARCH}") + set(QEMU_EXECUTABLE "$ENV{OECORE_NATIVE_SYSROOT}/usr/bin/qemu-$ENV{OECORE_TARGET_ARCH}") + else() + message(FATAL_ERROR "The variable QEMU_EXECUTABLE is not set") + endif() + endif() + if("${QEMU_SYSROOT}" STREQUAL "") + if(NOT "$ENV{OECORE_TARGET_SYSROOT}" STREQUAL "" AND + EXISTS "$ENV{OECORE_TARGET_SYSROOT}") + set(QEMU_SYSROOT, "$ENV{OECORE_TARGET_SYSROOT}") + else() + message(FATAL_ERROR "The variable QEMU_SYSROOT is not set") + endif() + endif() + if("${QEMU_PYTHON_EXECUTABLE}" STREQUAL "") + if (EXISTS ${QEMU_SYSROOT}${RUNTIME_PYTHON_EXECUTABLE}) + set(QEMU_PYTHON_EXECUTABLE ${QEMU_SYSROOT}${RUNTIME_PYTHON_EXECUTABLE}) + else() + message(FATAL_ERROR "The variable QEMU_PYTHON_EXECUTABLE is not set") + endif() + endif() + message(STATUS " QEMU executable: ${QEMU_EXECUTABLE}") + message(STATUS " QEMU Python executable: ${QEMU_PYTHON_EXECUTABLE}") + message(STATUS " QEMU sysroot: ${QEMU_SYSROOT}") +endif(ENABLE_QEMU_UNITTESTS) + +######################################################################## # Create Uninstall Target ######################################################################## configure_file( diff --git a/host/cmake/Modules/UHDUnitTest.cmake b/host/cmake/Modules/UHDUnitTest.cmake index 76dfdd029..340279b9b 100644 --- a/host/cmake/Modules/UHDUnitTest.cmake +++ b/host/cmake/Modules/UHDUnitTest.cmake @@ -112,12 +112,24 @@ endfunction(UHD_ADD_TEST) # Add a Python unit test ######################################################################## function(UHD_ADD_PYTEST test_name) - add_test(NAME ${test_name} - COMMAND ${RUNTIME_PYTHON_EXECUTABLE} -m unittest discover - -s ${CMAKE_CURRENT_SOURCE_DIR} - -p "${test_name}.*" - WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/python" - ) + if(ENABLE_QEMU_UNITTESTS) + # use QEMU emulator for executing test + add_test(NAME ${test_name} + COMMAND ${QEMU_EXECUTABLE} -L ${QEMU_SYSROOT} + ${QEMU_PYTHON_EXECUTABLE} + -m unittest discover + -s ${CMAKE_CURRENT_SOURCE_DIR} + -p "${test_name}.*" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/python" + ) + else() + add_test(NAME ${test_name} + COMMAND ${RUNTIME_PYTHON_EXECUTABLE} -m unittest discover + -s ${CMAKE_CURRENT_SOURCE_DIR} + -p "${test_name}.*" + WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/python" + ) + endif(ENABLE_QEMU_UNITTESTS) set_tests_properties(${test_name} PROPERTIES ENVIRONMENT PYTHONPATH=${CMAKE_SOURCE_DIR}/tests/common) endfunction(UHD_ADD_PYTEST) |