# Copyright (c) 2023 Nordic Semiconductor # # SPDX-License-Identifier: Apache-2.0 # Usage: # native_simulator_set_final_executable() # # When building for a native_simulator based target (including bsim targets), # this function adds an extra build target which will copy the executable produced by # `` to the top level, as zephyr/zephyr.exe # # This final image is expected to have been set to assemble other dependent images into # itself if necessary, by calling native_simulator_set_child_images() # This will allow other tools, like twister, or the bsim test scripts, as well as users to find # this final executable in the same place as for non-sysbuild builds. # function(native_simulator_set_final_executable final_image) if(("${BOARD}" MATCHES "native") OR ("${BOARD}" MATCHES "bsim")) add_custom_target(final_executable ALL COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${final_image}/zephyr/zephyr.exe ${CMAKE_BINARY_DIR}/zephyr/zephyr.exe DEPENDS ${final_image} ) endif() endfunction() # Usage: # native_simulator_set_child_images( ) # # When building for a native_simulator based target (including bsim targets), # this function sets a `` as dependencies of `` # and configures the final image to assemble the child images into its final executable. # function(native_simulator_set_child_images final_image child_image) if(("${BOARD}" MATCHES "native") OR ("${BOARD}" MATCHES "bsim")) add_dependencies(${final_image} ${child_image}) set(CHILD_LIBRARY_PATH ${CMAKE_BINARY_DIR}/${child_image}/zephyr/zephyr.elf) set_property(TARGET ${final_image} APPEND_STRING PROPERTY CONFIG "CONFIG_NATIVE_SIMULATOR_EXTRA_IMAGE_PATHS=\"${CHILD_LIBRARY_PATH}\"\n" ) endif() endfunction() # Usage: # native_simulator_set_primary_mcu_index( [ ...]) # # Propagate the SB_CONFIG_NATIVE_SIMULATOR_PRIMARY_MCU_INDEX setting, # if it is set, to each given image CONFIG_NATIVE_SIMULATOR_PRIMARY_MCU_INDEX # function(native_simulator_set_primary_mcu_index) if (NOT ("${SB_CONFIG_NATIVE_SIMULATOR_PRIMARY_MCU_INDEX}" STREQUAL "")) foreach(arg IN LISTS ARGV) set_property(TARGET ${arg} APPEND_STRING PROPERTY CONFIG "CONFIG_NATIVE_SIMULATOR_PRIMARY_MCU_INDEX=${SB_CONFIG_NATIVE_SIMULATOR_PRIMARY_MCU_INDEX}\n" ) endforeach() endif() endfunction()