63 lines
2.4 KiB
CMake
63 lines
2.4 KiB
CMake
# Copyright (c) 2023 Nordic Semiconductor ASA
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# FindBabbleSim module for locating BabbleSim
|
|
#
|
|
# The module defines the following variables:
|
|
#
|
|
# 'BSIM_COMPONENTS_PATH'
|
|
# Path to the BabbleSim components source folder
|
|
#
|
|
# 'BSIM_OUT_PATH'
|
|
# Path to the BabbleSim build output root path (under which libraries and binaries) are kept
|
|
#
|
|
# We first try to find it via the environment variables BSIM_OUT_PATH and BSIM_COMPONENTS_PATH.
|
|
# If these are not set, as a fallback we attempt to find it through west, in case the user
|
|
# fetched babblesim using the manifest.
|
|
# Note that what we find through the environment variables is meant to have precedence.
|
|
#
|
|
# If BabbleSim cannot be found we error right away with a message trying to guide users
|
|
|
|
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
|
|
ERROR_QUIET
|
|
RESULT_VARIABLE ret_val1)
|
|
execute_process(COMMAND ${WEST}
|
|
list babblesim_base -f {posixpath}
|
|
OUTPUT_VARIABLE BSIM_BASE_PATH
|
|
ERROR_QUIET
|
|
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 -j 8\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()
|
|
|
|
#Many apps cmake files (in and out of tree) expect these environment variables. Lets provide them:
|
|
set(ENV{BSIM_COMPONENTS_PATH} ${BSIM_COMPONENTS_PATH})
|
|
set(ENV{BSIM_OUT_PATH} ${BSIM_OUT_PATH})
|