From 4fd3309b87c9f33cbc55d2f76d2277e3c14cb1fd Mon Sep 17 00:00:00 2001 From: Carlo Caione Date: Wed, 27 Oct 2021 22:54:46 +0200 Subject: [PATCH] boards: Introduce CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT The IPC samples are currently hardcoding the local and remote target boards in the sample CMakeLists file. Instead of relying on the sample to define the target board names introduce a new CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT symbol to signal the build system that the remote endpoint target name can be set by the board cmake file in the REMOTE_BOARD variable to be used by samples at compile time. Signed-off-by: Carlo Caione --- boards/Kconfig | 6 +++ boards/arm/bl5340_dvk/board.cmake | 4 ++ boards/arm/lpcxpresso54114/board.cmake | 4 ++ boards/arm/lpcxpresso55s69/board.cmake | 4 ++ boards/arm/mps2_an521/board.cmake | 5 ++ boards/arm/nrf5340dk_nrf5340/board.cmake | 4 ++ boards/arm/v2m_musca_b1/board.cmake | 4 ++ samples/drivers/mbox/CMakeLists.txt | 34 ++++++------ samples/drivers/mbox/prj.conf | 1 + samples/drivers/mbox/remote/CMakeLists.txt | 6 --- samples/subsys/ipc/ipc_service/CMakeLists.txt | 38 ++++++-------- samples/subsys/ipc/ipc_service/prj.conf | 2 + .../ipc/ipc_service/remote/CMakeLists.txt | 7 --- samples/subsys/ipc/ipm_mcux/CMakeLists.txt | 41 +++++++-------- samples/subsys/ipc/ipm_mcux/prj.conf | 1 + .../subsys/ipc/ipm_mcux/remote/CMakeLists.txt | 8 +-- samples/subsys/ipc/openamp/CMakeLists.txt | 46 +++++++--------- samples/subsys/ipc/openamp/prj.conf | 1 + .../subsys/ipc/openamp/remote/CMakeLists.txt | 10 +--- .../subsys/ipc/rpmsg_service/CMakeLists.txt | 52 ++++++------------- samples/subsys/ipc/rpmsg_service/prj.conf | 1 + 21 files changed, 123 insertions(+), 156 deletions(-) diff --git a/boards/Kconfig b/boards/Kconfig index b295e23cad76f..6cd83bcf4edb9 100644 --- a/boards/Kconfig +++ b/boards/Kconfig @@ -71,6 +71,12 @@ config QEMU_UEFI_BOOT This option indicates that QEMU will use UEFI bootable method to boot up. +config BOARD_SUPPORT_REMOTE_ENDPOINT + bool "Board supports remote endpoint" + help + When enabled the BOARD_REMOTE variable is expected to contain the + remote endpoint as board name. + # There might not be any board options, hence the optional source osource "$(BOARD_DIR)/Kconfig" endmenu diff --git a/boards/arm/bl5340_dvk/board.cmake b/boards/arm/bl5340_dvk/board.cmake index da46d32209bc7..6a620e19aa103 100644 --- a/boards/arm/bl5340_dvk/board.cmake +++ b/boards/arm/bl5340_dvk/board.cmake @@ -18,5 +18,9 @@ if(CONFIG_BOARD_BL5340_DVK_CPUNET) board_runner_args(jlink "--device=nrf5340_xxaa_net" "--speed=4000") endif() +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT AND CONFIG_BOARD_BL5340_DVK_CPUAPP) + set(BOARD_REMOTE "bl5340_dvk_cpunet") +endif() + include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/arm/lpcxpresso54114/board.cmake b/boards/arm/lpcxpresso54114/board.cmake index 6c59415aee965..5be542228e4cb 100644 --- a/boards/arm/lpcxpresso54114/board.cmake +++ b/boards/arm/lpcxpresso54114/board.cmake @@ -10,4 +10,8 @@ elseif(CONFIG_BOARD_LPCXPRESSO54114_M0) board_runner_args(jlink "--device=LPC54114J256_M0" "--reset-after-load") endif() +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT AND CONFIG_BOARD_LPCXPRESSO54114_M4) + set(BOARD_REMOTE "lpcxpresso54114_m0") +endif() + include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/arm/lpcxpresso55s69/board.cmake b/boards/arm/lpcxpresso55s69/board.cmake index 791f33a031c29..7cbc29e87761f 100644 --- a/boards/arm/lpcxpresso55s69/board.cmake +++ b/boards/arm/lpcxpresso55s69/board.cmake @@ -17,5 +17,9 @@ endif() board_runner_args(pyocd "--target=lpc55s69") +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT AND CONFIG_BOARD_LPCXPRESSO55S69_CPU0) + set(BOARD_REMOTE "lpcxpresso55s69_cpu1") +endif() + include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) diff --git a/boards/arm/mps2_an521/board.cmake b/boards/arm/mps2_an521/board.cmake index 42e5757952d69..ba47b30d1a6d0 100644 --- a/boards/arm/mps2_an521/board.cmake +++ b/boards/arm/mps2_an521/board.cmake @@ -23,3 +23,8 @@ elseif (CONFIG_SOC_MPS2_AN521_CPU1) set(QEMU_KERNEL_OPTION "-device;loader,file=${CPU0_BINARY_DIR}/zephyr.elf") set(QEMU_EXTRA_FLAGS "-device;loader,file=${CMAKE_CURRENT_BINARY_DIR}/zephyr/zephyr.elf") endif() + +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT AND CONFIG_BOARD_MPS2_AN521_CPU0) + set(BOARD_REMOTE "mps2_an521_remote") + set(QEMU_EXTRA_FLAGS "-device;loader,file=${REMOTE_ZEPHYR_DIR}/zephyr.elf") +endif() diff --git a/boards/arm/nrf5340dk_nrf5340/board.cmake b/boards/arm/nrf5340dk_nrf5340/board.cmake index 89a11e776bcd1..560272237a781 100644 --- a/boards/arm/nrf5340dk_nrf5340/board.cmake +++ b/boards/arm/nrf5340dk_nrf5340/board.cmake @@ -16,5 +16,9 @@ if(CONFIG_BOARD_NRF5340DK_NRF5340_CPUNET) board_runner_args(jlink "--device=nrf5340_xxaa_net" "--speed=4000") endif() +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT AND CONFIG_BOARD_NRF5340DK_NRF5340_CPUAPP) + set(BOARD_REMOTE "nrf5340dk_nrf5340_cpunet") +endif() + include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) diff --git a/boards/arm/v2m_musca_b1/board.cmake b/boards/arm/v2m_musca_b1/board.cmake index 3d207249d11a3..13e59f8baafbd 100644 --- a/boards/arm/v2m_musca_b1/board.cmake +++ b/boards/arm/v2m_musca_b1/board.cmake @@ -5,4 +5,8 @@ board_set_flasher_ifnset(pyocd) board_runner_args(pyocd "--target=musca_b1") +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT AND CONFIG_BOARD_MUSCA_B1) + set(BOARD_REMOTE "v2m_musca_b1_ns") +endif() + include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) diff --git a/samples/drivers/mbox/CMakeLists.txt b/samples/drivers/mbox/CMakeLists.txt index 7356ed085fd5a..afa38ac530e25 100644 --- a/samples/drivers/mbox/CMakeLists.txt +++ b/samples/drivers/mbox/CMakeLists.txt @@ -8,14 +8,6 @@ cmake_minimum_required(VERSION 3.20.0) set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/mbox_ipc_remote-prefix/src/mbox_ipc_remote-build/zephyr) -if("${BOARD}" STREQUAL "nrf5340dk_nrf5340_cpuapp") - set(BOARD_REMOTE "nrf5340dk_nrf5340_cpunet") -else() - message(FATAL_ERROR "${BOARD} is not supported for this sample") -endif() - -message(INFO " ${BOARD} compile as Main in this sample") - find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(mbox_ipc) @@ -23,14 +15,18 @@ enable_language(C ASM) target_sources(app PRIVATE src/main.c) -include(ExternalProject) - -ExternalProject_Add( - mbox_ipc_remote - SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote - INSTALL_COMMAND "" # This particular build system has no install command - CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} - BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" - # NB: Do we need to pass on more CMake variables? - BUILD_ALWAYS True -) +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT) + + include(ExternalProject) + + ExternalProject_Add( + mbox_ipc_remote + SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote + INSTALL_COMMAND "" # This particular build system has no install command + CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} + BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" + # NB: Do we need to pass on more CMake variables? + BUILD_ALWAYS True + ) + +endif() diff --git a/samples/drivers/mbox/prj.conf b/samples/drivers/mbox/prj.conf index 293e2834f2535..40973cd333ae9 100644 --- a/samples/drivers/mbox/prj.conf +++ b/samples/drivers/mbox/prj.conf @@ -1,2 +1,3 @@ CONFIG_PRINTK=y CONFIG_MBOX=y +CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT=y diff --git a/samples/drivers/mbox/remote/CMakeLists.txt b/samples/drivers/mbox/remote/CMakeLists.txt index 47e80e8af10fd..392219dd64e64 100644 --- a/samples/drivers/mbox/remote/CMakeLists.txt +++ b/samples/drivers/mbox/remote/CMakeLists.txt @@ -6,12 +6,6 @@ cmake_minimum_required(VERSION 3.20.0) -if("${BOARD}" STREQUAL "nrf5340dk_nrf5340_cpunet") - message(INFO " ${BOARD} compile as remote in this sample") -else() - message(FATAL_ERROR "${BOARD} is not supported for this sample") -endif() - find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(mbox_ipc_remote) diff --git a/samples/subsys/ipc/ipc_service/CMakeLists.txt b/samples/subsys/ipc/ipc_service/CMakeLists.txt index 487bd812ba200..34de9e31733a8 100644 --- a/samples/subsys/ipc/ipc_service/CMakeLists.txt +++ b/samples/subsys/ipc/ipc_service/CMakeLists.txt @@ -7,16 +7,6 @@ cmake_minimum_required(VERSION 3.20.0) set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/ipc_service_remote-prefix/src/ipc_service_remote-build/zephyr) -if("${BOARD}" STREQUAL "nrf5340dk_nrf5340_cpuapp") - set(BOARD_REMOTE "nrf5340dk_nrf5340_cpunet") -elseif("${BOARD}" STREQUAL "bl5340_dvk_cpuapp") - set(BOARD_REMOTE "bl5340_dvk_cpunet") -else() - message(FATAL_ERROR "${BOARD} is not supported for this sample") -endif() - -message(INFO " ${BOARD} compile as Master in this sample") - find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(ipc_service) @@ -24,15 +14,19 @@ enable_language(C ASM) target_sources(app PRIVATE src/main.c) -include(ExternalProject) - -ExternalProject_Add( - ipc_service_remote - SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote - INSTALL_COMMAND "" # This particular build system has no install command - CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} - CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} - BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" - # NB: Do we need to pass on more CMake variables? - BUILD_ALWAYS True -) +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT) + + include(ExternalProject) + + ExternalProject_Add( + ipc_service_remote + SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote + INSTALL_COMMAND "" # This particular build system has no install command + CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} + CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} + BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" + # NB: Do we need to pass on more CMake variables? + BUILD_ALWAYS True + ) + +endif() diff --git a/samples/subsys/ipc/ipc_service/prj.conf b/samples/subsys/ipc/ipc_service/prj.conf index 6c230287c3b86..9b574a2694e96 100644 --- a/samples/subsys/ipc/ipc_service/prj.conf +++ b/samples/subsys/ipc/ipc_service/prj.conf @@ -17,3 +17,5 @@ CONFIG_IPC_SERVICE_BACKEND_RPMSG_MI_NUM_INSTANCES=2 CONFIG_LOG=y CONFIG_IPC_SERVICE_LOG_LEVEL_INF=y + +CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT=y diff --git a/samples/subsys/ipc/ipc_service/remote/CMakeLists.txt b/samples/subsys/ipc/ipc_service/remote/CMakeLists.txt index f2cc629674e3a..45fba632f47d3 100644 --- a/samples/subsys/ipc/ipc_service/remote/CMakeLists.txt +++ b/samples/subsys/ipc/ipc_service/remote/CMakeLists.txt @@ -5,13 +5,6 @@ cmake_minimum_required(VERSION 3.20.0) -if("${BOARD}" STREQUAL "nrf5340dk_nrf5340_cpunet" - OR "${BOARD}" STREQUAL "bl5340_dvk_cpunet") - message(INFO " ${BOARD} compile as slave in this sample") -else() - message(FATAL_ERROR "${BOARD} is not supported for this sample") -endif() - find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(ipc_service_remote) diff --git a/samples/subsys/ipc/ipm_mcux/CMakeLists.txt b/samples/subsys/ipc/ipm_mcux/CMakeLists.txt index 312ed0b1a0542..506333bcffd84 100644 --- a/samples/subsys/ipc/ipm_mcux/CMakeLists.txt +++ b/samples/subsys/ipc/ipm_mcux/CMakeLists.txt @@ -1,20 +1,11 @@ -cmake_minimum_required(VERSION 3.20.0) # Copyright (c) 2017, NXP # # SPDX-License-Identifier: Apache-2.0 # -set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/ipm_mcux_remote-prefix/src/ipm_mcux_remote-build/zephyr) - -if("${BOARD}" STREQUAL "lpcxpresso54114_m4") - set(BOARD_REMOTE "lpcxpresso54114_m0") -elseif("${BOARD}" STREQUAL "lpcxpresso55s69_cpu0") - set(BOARD_REMOTE "lpcxpresso55s69_cpu1") -else() - message(FATAL_ERROR "${BOARD} was not supported for this sample") -endif() +cmake_minimum_required(VERSION 3.20.0) -message(INFO " ${BOARD} compile as Master in this sample") +set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/ipm_mcux_remote-prefix/src/ipm_mcux_remote-build/zephyr) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(ipm_mcux) @@ -23,18 +14,22 @@ enable_language(C ASM) target_sources(app PRIVATE src/main_master.c) -include(ExternalProject) +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT) + + include(ExternalProject) -ExternalProject_Add( - ipm_mcux_remote - SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote - INSTALL_COMMAND "" # This particular build system has no install command - CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} - CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} - BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" - BUILD_ALWAYS True -) + ExternalProject_Add( + ipm_mcux_remote + SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote + INSTALL_COMMAND "" # This particular build system has no install command + CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} + CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} + BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" + BUILD_ALWAYS True + ) -add_dependencies(second_core_inc_target ipm_mcux_remote) + add_dependencies(second_core_inc_target ipm_mcux_remote) -target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + +endif() diff --git a/samples/subsys/ipc/ipm_mcux/prj.conf b/samples/subsys/ipc/ipm_mcux/prj.conf index 8440b8298169b..7ff00999df1f7 100644 --- a/samples/subsys/ipc/ipm_mcux/prj.conf +++ b/samples/subsys/ipc/ipm_mcux/prj.conf @@ -5,3 +5,4 @@ CONFIG_SECOND_CORE_MCUX=y CONFIG_SECOND_IMAGE_MCUX="${ZEPHYR_BINARY_DIR}/../ipm_mcux_remote-prefix/src/ipm_mcux_remote-build/zephyr/${KERNEL_BIN_NAME}" CONFIG_TIMESLICE_SIZE=1 CONFIG_MAIN_STACK_SIZE=2048 +CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT=y diff --git a/samples/subsys/ipc/ipm_mcux/remote/CMakeLists.txt b/samples/subsys/ipc/ipm_mcux/remote/CMakeLists.txt index c92be82d322ab..6742bc81e78ce 100644 --- a/samples/subsys/ipc/ipm_mcux/remote/CMakeLists.txt +++ b/samples/subsys/ipc/ipm_mcux/remote/CMakeLists.txt @@ -1,15 +1,9 @@ -cmake_minimum_required(VERSION 3.20.0) # Copyright (c) 2017, NXP # # SPDX-License-Identifier: Apache-2.0 # -if(("${BOARD}" STREQUAL "lpcxpresso54114_m0") - OR "${BOARD}" STREQUAL "lpcxpresso55s69_cpu1") - message(INFO " ${BOARD} compiles as remote in this sample") -else() - message(FATAL_ERROR "${BOARD} was not supported for this sample") -endif() +cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(ipm_mcux_remote) diff --git a/samples/subsys/ipc/openamp/CMakeLists.txt b/samples/subsys/ipc/openamp/CMakeLists.txt index be3168ade571f..be7eb64a5adf9 100644 --- a/samples/subsys/ipc/openamp/CMakeLists.txt +++ b/samples/subsys/ipc/openamp/CMakeLists.txt @@ -1,26 +1,12 @@ -cmake_minimum_required(VERSION 3.20.0) # Copyright (c) 2018 Nordic Semiconductor ASA # Copyright (c) 2019 Linaro Limited # # SPDX-License-Identifier: Apache-2.0 # -set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/openamp_remote-prefix/src/openamp_remote-build/zephyr) - -if("${BOARD}" STREQUAL "lpcxpresso54114_m4") - set(BOARD_REMOTE "lpcxpresso54114_m0") -elseif("${BOARD}" STREQUAL "lpcxpresso55s69_cpu0") - set(BOARD_REMOTE "lpcxpresso55s69_cpu1") -elseif("${BOARD}" STREQUAL "mps2_an521") - set(QEMU_EXTRA_FLAGS "-device;loader,file=${REMOTE_ZEPHYR_DIR}/zephyr.elf") - set(BOARD_REMOTE "mps2_an521_remote") -elseif("${BOARD}" STREQUAL "v2m_musca_b1") - set(BOARD_REMOTE "v2m_musca_b1_ns") -else() - message(FATAL_ERROR "${BOARD} was not supported for this sample") -endif() +cmake_minimum_required(VERSION 3.20.0) -message(INFO " ${BOARD} compile as Master in this sample") +set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/openamp_remote-prefix/src/openamp_remote-build/zephyr) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(openamp) @@ -29,17 +15,21 @@ enable_language(C ASM) target_sources(app PRIVATE src/main.c) -include(ExternalProject) +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT) + + include(ExternalProject) -ExternalProject_Add( - openamp_remote - SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote - INSTALL_COMMAND "" # This particular build system has no install command - CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} - CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} - BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" - # NB: Do we need to pass on more CMake variables? - BUILD_ALWAYS True -) + ExternalProject_Add( + openamp_remote + SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote + INSTALL_COMMAND "" # This particular build system has no install command + CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} + CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} + BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" + # NB: Do we need to pass on more CMake variables? + BUILD_ALWAYS True + ) -target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + +endif() diff --git a/samples/subsys/ipc/openamp/prj.conf b/samples/subsys/ipc/openamp/prj.conf index a2a3c9f8c0d86..f1f01832e4f7f 100644 --- a/samples/subsys/ipc/openamp/prj.conf +++ b/samples/subsys/ipc/openamp/prj.conf @@ -5,3 +5,4 @@ CONFIG_MAIN_STACK_SIZE=2048 CONFIG_HEAP_MEM_POOL_SIZE=4096 CONFIG_OPENAMP=y CONFIG_OPENAMP_SLAVE=n +CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT=y diff --git a/samples/subsys/ipc/openamp/remote/CMakeLists.txt b/samples/subsys/ipc/openamp/remote/CMakeLists.txt index 5228a3956c0f9..7303cad6381d3 100644 --- a/samples/subsys/ipc/openamp/remote/CMakeLists.txt +++ b/samples/subsys/ipc/openamp/remote/CMakeLists.txt @@ -1,18 +1,10 @@ -cmake_minimum_required(VERSION 3.20.0) # Copyright (c) 2018 Nordic Semiconductor ASA # Copyright (c) 2019 Linaro Limited # # SPDX-License-Identifier: Apache-2.0 # -if(("${BOARD}" STREQUAL "lpcxpresso54114_m0") - OR "${BOARD}" STREQUAL "lpcxpresso55s69_cpu1" - OR "${BOARD}" STREQUAL "mps2_an521_remote" - OR "${BOARD}" STREQUAL "v2m_musca_b1_ns") - message(INFO " ${BOARD} compiles as remote in this sample") -else() - message(FATAL_ERROR "${BOARD} was not supported for this sample") -endif() +cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(openamp_remote) diff --git a/samples/subsys/ipc/rpmsg_service/CMakeLists.txt b/samples/subsys/ipc/rpmsg_service/CMakeLists.txt index 4a6b3f8cdd78c..69cda50c77c45 100644 --- a/samples/subsys/ipc/rpmsg_service/CMakeLists.txt +++ b/samples/subsys/ipc/rpmsg_service/CMakeLists.txt @@ -1,28 +1,12 @@ -cmake_minimum_required(VERSION 3.20.0) # Copyright (c) 2019 Linaro Limited # Copyright (c) 2018-2021 Nordic Semiconductor ASA # # SPDX-License-Identifier: Apache-2.0 # -set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/rpmsg_service_remote-prefix/src/rpmsg_service_remote-build/zephyr) - -if("${BOARD}" STREQUAL "nrf5340dk_nrf5340_cpuapp") - set(BOARD_REMOTE "nrf5340dk_nrf5340_cpunet") -elseif("${BOARD}" STREQUAL "bl5340_dvk_cpuapp") - set(BOARD_REMOTE "bl5340_dvk_cpunet") -elseif("${BOARD}" STREQUAL "lpcxpresso54114_m4") - set(BOARD_REMOTE "lpcxpresso54114_m0") -elseif("${BOARD}" STREQUAL "mps2_an521") - set(QEMU_EXTRA_FLAGS "-device;loader,file=${REMOTE_ZEPHYR_DIR}/zephyr.elf") - set(BOARD_REMOTE "mps2_an521_remote") -elseif("${BOARD}" STREQUAL "v2m_musca_b1") - set(BOARD_REMOTE "v2m_musca_b1_ns") -else() - message(FATAL_ERROR "${BOARD} was not supported for this sample") -endif() +cmake_minimum_required(VERSION 3.20.0) -message(INFO " ${BOARD} compile as Master in this sample") +set(REMOTE_ZEPHYR_DIR ${CMAKE_CURRENT_BINARY_DIR}/rpmsg_service_remote-prefix/src/rpmsg_service_remote-build/zephyr) find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(rpmsg_service) @@ -31,21 +15,19 @@ enable_language(C ASM) target_sources(app PRIVATE src/main.c) -include(ExternalProject) - -ExternalProject_Add( - rpmsg_service_remote - SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote - INSTALL_COMMAND "" # This particular build system has no install command - CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} - CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} - BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" - # NB: Do we need to pass on more CMake variables? - BUILD_ALWAYS True -) - -if(("${BOARD}" STREQUAL "lpcxpresso54114_m4")) - add_dependencies(core_m0_inc_target rpmsg_service_remote) -endif() +if(CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT) + + include(ExternalProject) -target_include_directories(app PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) + ExternalProject_Add( + rpmsg_service_remote + SOURCE_DIR ${APPLICATION_SOURCE_DIR}/remote + INSTALL_COMMAND "" # This particular build system has no install command + CMAKE_CACHE_ARGS -DBOARD:STRING=${BOARD_REMOTE} + CMAKE_CACHE_ARGS -DDTC_OVERLAY_FILE:STRING=${DTC_OVERLAY_FILE} + BUILD_BYPRODUCTS "${REMOTE_ZEPHYR_DIR}/${KERNEL_BIN_NAME}" + # NB: Do we need to pass on more CMake variables? + BUILD_ALWAYS True + ) + +endif() diff --git a/samples/subsys/ipc/rpmsg_service/prj.conf b/samples/subsys/ipc/rpmsg_service/prj.conf index dc7dba36ca73b..18dee136f6f99 100644 --- a/samples/subsys/ipc/rpmsg_service/prj.conf +++ b/samples/subsys/ipc/rpmsg_service/prj.conf @@ -6,3 +6,4 @@ CONFIG_HEAP_MEM_POOL_SIZE=4096 CONFIG_RPMSG_SERVICE=y CONFIG_RPMSG_SERVICE_MODE_MASTER=y CONFIG_OPENAMP_SLAVE=n +CONFIG_BOARD_SUPPORT_REMOTE_ENDPOINT=y