diff --git a/boards/posix/nrf52_bsim/CMakeLists.txt b/boards/posix/nrf52_bsim/CMakeLists.txt index 19bb7935d888059..6de4b45ce0095fd 100644 --- a/boards/posix/nrf52_bsim/CMakeLists.txt +++ b/boards/posix/nrf52_bsim/CMakeLists.txt @@ -1,17 +1,6 @@ # SPDX-License-Identifier: Apache-2.0 -if (NOT DEFINED ENV{BSIM_COMPONENTS_PATH}) - message(FATAL_ERROR "This board requires the BabbleSim simulator. Please set\ - the environment variable BSIM_COMPONENTS_PATH to point to its components \ - folder. More information can be found in\ - https://babblesim.github.io/folder_structure_and_env.html") -endif() -if (NOT DEFINED ENV{BSIM_OUT_PATH}) - message(FATAL_ERROR "This board requires the BabbleSim simulator. Please set\ - the environment variable BSIM_OUT_PATH to point to the folder where the\ - simulator is compiled to. More information can be found in\ - https://babblesim.github.io/folder_structure_and_env.html") -endif() +include(get_babblesim.cmake) zephyr_library() zephyr_library_compile_definitions(NO_POSIX_CHEATS) @@ -37,9 +26,9 @@ zephyr_include_directories(soc) zephyr_include_directories(cmsis) zephyr_library_include_directories( - $ENV{BSIM_COMPONENTS_PATH}/libUtilv1/src/ - $ENV{BSIM_COMPONENTS_PATH}/libPhyComv1/src/ - $ENV{BSIM_COMPONENTS_PATH}/libRandv2/src/ + ${BSIM_COMPONENTS_PATH}/libUtilv1/src/ + ${BSIM_COMPONENTS_PATH}/libPhyComv1/src/ + ${BSIM_COMPONENTS_PATH}/libRandv2/src/ ${ZEPHYR_BASE}/kernel/include ${ZEPHYR_BASE}/arch/posix/include ) @@ -48,7 +37,7 @@ zephyr_ld_options( -lm ) -set(libpath $ENV{BSIM_OUT_PATH}/lib) +set(libpath ${BSIM_OUT_PATH}/lib) zephyr_library_import(bsim_libUtilv1 ${libpath}/libUtilv1.32.a) zephyr_library_import(bsim_libPhyComv1 ${libpath}/libPhyComv1.32.a) zephyr_library_import(bsim_lib2G4PhyComv1 ${libpath}/lib2G4PhyComv1.32.a) diff --git a/boards/posix/nrf52_bsim/get_babblesim.cmake b/boards/posix/nrf52_bsim/get_babblesim.cmake new file mode 100644 index 000000000000000..804ba24ba88a969 --- /dev/null +++ b/boards/posix/nrf52_bsim/get_babblesim.cmake @@ -0,0 +1,45 @@ +# Copyright (c) 2023 Nordic Semiconductor ASA +# SPDX-License-Identifier: Apache-2.0 + +# Let's try to find the simulator + +zephyr_get(BSIM_COMPONENTS_PATH) +zephyr_get(BSIM_OUT_PATH) + +if ((DEFINED WEST) AND (NOT DEFINED BSIM_COMPONENTS_PATH) AND (NOT DEFINED BSIM_OUT_PATH)) + # Let's ask west for the bsim_project existence and its path + execute_process(COMMAND ${WEST} + status babblesim_base + OUTPUT_QUIET + RESULT_VARIABLE ret_val1) + execute_process(COMMAND ${WEST} + list babblesim_base -f {posixpath} + OUTPUT_VARIABLE BSIM_BASE_PATH + RESULT_VARIABLE ret_val2) + if (NOT (${ret_val1} OR ${ret_val2})) + string(STRIP ${BSIM_BASE_PATH} BSIM_COMPONENTS_PATH) + get_filename_component(BSIM_OUT_PATH ${BSIM_COMPONENTS_PATH}/.. ABSOLUTE) + endif() +endif() + +message(STATUS "Using BSIM from BSIM_COMPONENTS_PATH=${BSIM_COMPONENTS_PATH}\ + BSIM_OUT_PATH=${BSIM_OUT_PATH}") + +if ((NOT DEFINED BSIM_COMPONENTS_PATH) OR (NOT DEFINED BSIM_OUT_PATH)) + message(FATAL_ERROR "This board requires the BabbleSim simulator. Please either\n\ + a) Enable the west babblesim group with\n\ + west config manifest.group-filter +babblesim && west update\n\ + and build it with\n\ + cd ${ZEPHYR_BASE}/../tools/bsim\n\ + make everything \n\ + OR\n\ + b) set the environment variable BSIM_COMPONENTS_PATH to point to your own bsim installation\n\ + `components/` folder, *and* BSIM_OUT_PATH to point to the folder where the simulator\n\ + is compiled to.\n\ + More information can be found in https://babblesim.github.io/folder_structure_and_env.html" + ) +endif() + +set(ENV{BSIM_COMPONENTS_PATH} ${BSIM_COMPONENTS_PATH}) +set(ENV{BSIM_OUT_PATH} ${BSIM_OUT_PATH}) +