| # 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) |