From 2a14f12d0a09d0664ac9b18514ee6b30a67dd3a1 Mon Sep 17 00:00:00 2001 From: Damiano Amatruda <damiano.amatruda@skywarder.eu> Date: Sat, 11 Dec 2021 22:10:23 +0100 Subject: [PATCH] [CMake] Allow to compile Catch2 tests for host - CMake function 'sbs_target' now links to 'boardcore-host' when not cross-compiling - CMake function 'sbs_catch_test' is added to register Catch2 test cases in CTest only when not cross-compiling --- CMakeLists.txt | 3 ++- cmake/sbs.cmake | 26 ++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 47756e137..5e223ae26 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ # THE SOFTWARE. cmake_minimum_required(VERSION 3.16) +enable_testing() include(cmake/sbs.cmake) #-----------------------------------------------------------------------------# @@ -103,7 +104,7 @@ add_executable(catch-tests-entry ) target_compile_definitions(catch-tests-entry PUBLIC USE_MOCK_PERIPHERALS) sbs_target(catch-tests-entry stm32f429zi_stm32f4discovery) -#catch_discover_tests(catch-tests-entry) +sbs_catch_test(catch-tests-entry) #-----------------------------------------------------------------------------# # Tests - Drivers # diff --git a/cmake/sbs.cmake b/cmake/sbs.cmake index b5d330c18..17f5f3ef5 100644 --- a/cmake/sbs.cmake +++ b/cmake/sbs.cmake @@ -46,12 +46,22 @@ function(sbs_target TARGET OPT_BOARD) message(FATAL_ERROR "No board selected") endif() target_include_directories(${TARGET} PRIVATE src/shared) - target_link_libraries(${TARGET} PRIVATE SkywardBoardcore::Boardcore-${OPT_BOARD}) - add_custom_command( - TARGET ${TARGET} POST_BUILD - COMMAND ${CMAKE_OBJCOPY} -O ihex ${TARGET} ${TARGET}.hex - COMMAND ${CMAKE_OBJCOPY} -O binary ${TARGET} ${TARGET}.bin - BYPRODUCTS ${TARGET}.hex ${TARGET}.bin - VERBATIM - ) + if(CMAKE_CROSSCOMPILING) + target_link_libraries(${TARGET} PRIVATE SkywardBoardcore::Boardcore-${OPT_BOARD}) + add_custom_command( + TARGET ${TARGET} POST_BUILD + COMMAND ${CMAKE_OBJCOPY} -O ihex ${TARGET} ${TARGET}.hex + COMMAND ${CMAKE_OBJCOPY} -O binary ${TARGET} ${TARGET}.bin + BYPRODUCTS ${TARGET}.hex ${TARGET}.bin + VERBATIM + ) + else() + target_link_libraries(${TARGET} PRIVATE SkywardBoardcore::Boardcore-host) + endif() +endfunction() + +function(sbs_catch_test TARGET) + if(NOT CMAKE_CROSSCOMPILING) + catch_discover_tests(${TARGET}) + endif() endfunction() -- GitLab