111 lines
4.0 KiB
CMake
111 lines
4.0 KiB
CMake
# 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()
|
|
|
|
#Let's check that the HW models are the needed version or newer
|
|
#That is, that the needed tag is somewhere in the past of its branch
|
|
if(NOT DEFINED ENV{NO_NRF52_BSIM_VERSION_WARNING})
|
|
if(GIT_FOUND) #boilerplate.cmake searches for git
|
|
file(STRINGS "hw_models_version" NRF52_HW_MODELS_TAG) #desired version
|
|
execute_process(COMMAND ${GIT_EXECUTABLE} merge-base --is-ancestor
|
|
${NRF52_HW_MODELS_TAG} HEAD
|
|
WORKING_DIRECTORY $ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/
|
|
OUTPUT_VARIABLE NRF52_HW_MODELS_TAG_FOUND
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
ERROR_VARIABLE stderr
|
|
RESULT_VARIABLE return_code
|
|
)
|
|
if(return_code)
|
|
message(WARNING "The NRF52 HW models are out of date\
|
|
(${NRF52_HW_MODELS_TAG} needed at least); Please update them or expect\
|
|
problems!\nReported error while trying to find the tag: \"${stderr}\"")
|
|
|
|
#let's print the latest actual tag for the available models:
|
|
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags
|
|
WORKING_DIRECTORY $ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/
|
|
OUTPUT_VARIABLE NRF52_HW_MODELS_TAG_FOUND
|
|
OUTPUT_STRIP_TRAILING_WHITESPACE
|
|
ERROR_STRIP_TRAILING_WHITESPACE
|
|
ERROR_VARIABLE stderr
|
|
RESULT_VARIABLE return_code
|
|
)
|
|
message(STATUS "Found NRF52 models version ${NRF52_HW_MODELS_TAG_FOUND}")
|
|
|
|
message(FATAL_ERROR "To disable this check set the environment variable\
|
|
NO_NRF52_BSIM_VERSION_WARNING")
|
|
|
|
elseif(CMAKE_VERBOSE_MAKEFILE)
|
|
message(STATUS "nrf52_bsim: git merge-base --is-ancestor\
|
|
${NRF52_HW_MODELS_TAG} HEAD,
|
|
stdout: ${NRF52_HW_MODELS_TAG_FOUND}
|
|
stderr: ${stderr}")
|
|
endif()
|
|
endif()
|
|
endif()
|
|
|
|
zephyr_library()
|
|
zephyr_library_compile_definitions(NO_POSIX_CHEATS)
|
|
|
|
zephyr_include_directories(
|
|
fake
|
|
$ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/src/
|
|
$ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/src/nrfx/hal/
|
|
$ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/src/nrfx/
|
|
$ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/src/HW_models/
|
|
)
|
|
|
|
#Due to the BLE controller assumption about enum size
|
|
zephyr_compile_options(
|
|
-fshort-enums
|
|
)
|
|
|
|
zephyr_library_sources(
|
|
irq_handler.c
|
|
k_busy_wait.c
|
|
bstests_entry.c
|
|
argparse.c
|
|
main.c
|
|
time_machine.c
|
|
trace_hook.c
|
|
)
|
|
|
|
zephyr_library_include_directories(
|
|
fake
|
|
$ENV{BSIM_COMPONENTS_PATH}/libUtilv1/src/
|
|
$ENV{BSIM_COMPONENTS_PATH}/libPhyComv1/src/
|
|
$ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/src/HW_models/
|
|
$ENV{BSIM_COMPONENTS_PATH}/ext_NRF52_hw_models/src/nrfx_hal/
|
|
$ENV{BSIM_COMPONENTS_PATH}/libRandv2/src/
|
|
${ZEPHYR_BASE}/kernel/include
|
|
${ZEPHYR_BASE}/arch/posix/include
|
|
)
|
|
|
|
zephyr_ld_options(
|
|
-lm
|
|
)
|
|
|
|
set(libpath $ENV{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)
|
|
zephyr_library_import(bsim_libRandv2 ${libpath}/libRandv2.32.a)
|
|
zephyr_library_import(bsim_libNRF52_hw ${libpath}/libNRF52_hw_models.32.a)
|
|
|
|
# This is due to some tests using _Static_assert which is a 2011 feature, but
|
|
# otherwise relying on compilers supporting it also when set to C99.
|
|
# This was in general ok, but with some host compilers and C library versions
|
|
# it led to problems. So we override it to 2011 for native applications.
|
|
set_property(GLOBAL PROPERTY CSTD c11)
|