diff --git a/CMakeLists.txt b/CMakeLists.txt index 47756e137971d931b9ac37c98ded771e2761a5a5..5e223ae26e39cb15c6b5e3a1365073f2fc56c65b 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 b5d330c1860622260e174b0d454218a750b4a81e..17f5f3ef5c0d2372ece9d4d751a70e248268806e 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()