aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Hofrichter <joerg.hofrichter@ni.com>2020-07-10 15:32:21 +0200
committerAaron Rossetto <aaron.rossetto@ni.com>2020-08-04 07:38:40 -0500
commit233fc368a3d5ac2472d3b53918d4f0ed1d353f2c (patch)
treef5bbb90a09cedf0bd346cd798b47e47bff6f628d
parent7afc84de1692386df5ee65462703499950170f48 (diff)
downloaduhd-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.txt82
-rw-r--r--host/cmake/Modules/UHDUnitTest.cmake24
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)