2022-08-19 13:31:36 +08:00
|
|
|
# Copyright (c) 2022 Google LLC
|
|
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
|
|
|
cmake_minimum_required(VERSION 3.20.0)
|
|
|
|
include(ExternalProject)
|
|
|
|
|
2023-11-16 18:26:22 +08:00
|
|
|
# Add the sources and set up the build for either unit testing or native_sim
|
2022-08-19 13:31:36 +08:00
|
|
|
list(APPEND SOURCES src/main.cpp)
|
|
|
|
if(BOARD STREQUAL unit_testing)
|
|
|
|
find_package(Zephyr COMPONENTS unittest REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
|
|
|
set(target testbinary)
|
|
|
|
# Set the target binary for the 'core' external project. The path to this must match the one set
|
|
|
|
# below in ExternalProject_Add's CMAKE_INSTALL_PREFIX
|
|
|
|
add_compile_definitions(FAIL_TARGET_BINARY="${CMAKE_BINARY_DIR}/core/bin/testbinary")
|
|
|
|
else()
|
|
|
|
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE})
|
|
|
|
set(target app)
|
|
|
|
# Set the target binary for the 'core' external project. The path to this must match the one set
|
|
|
|
# below in ExternalProject_Add's CMAKE_INSTALL_PREFIX
|
2023-11-16 18:26:22 +08:00
|
|
|
add_compile_definitions(FAIL_TARGET_BINARY="${CMAKE_BINARY_DIR}/core/bin/zephyr.exe")
|
2022-08-19 13:31:36 +08:00
|
|
|
endif()
|
|
|
|
|
|
|
|
# Create the project and set the sources for the target
|
|
|
|
project(fail)
|
|
|
|
target_sources(${target} PRIVATE ${SOURCES})
|
|
|
|
|
|
|
|
# Find which CONFIG_ZTEST_FAIL_TEST_* choice was set so we can pass it to the external project
|
|
|
|
# Once we find the config, we'll need to prepend a '-D' and append '=y' so we can pass it to the
|
|
|
|
# 'core' project as a cmake argument.
|
|
|
|
get_cmake_property(_vars VARIABLES)
|
|
|
|
string(REGEX MATCHALL "(^|;)CONFIG_ZTEST_FAIL_TEST_[A-Za-z0-9_]+" fail_test_config "${_vars}")
|
|
|
|
list(FILTER fail_test_config EXCLUDE REGEX "^$")
|
|
|
|
list(TRANSFORM fail_test_config PREPEND "-D")
|
|
|
|
list(TRANSFORM fail_test_config APPEND "=y")
|
|
|
|
string(REPLACE ";" " " fail_test_config "${fail_test_config}")
|
|
|
|
|
|
|
|
# Add the 'core' external project which will mirror the configs of this project.
|
|
|
|
ExternalProject_Add(core
|
|
|
|
SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/core
|
|
|
|
CMAKE_ARGS
|
|
|
|
-DBOARD:STRING=${BOARD}
|
|
|
|
-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/core
|
|
|
|
${fail_test_config}
|
|
|
|
)
|
|
|
|
add_dependencies(${target} core)
|