I am trying to using ceedling with FFF to create mocks of some of the NRFX HAL files. However, when I run ceedling I get some very weird errors. I've taken the `test/include` file from the nRF5 Mesh SDK and I'm not getting compilation errors anymore, but I'm getting a warning that there are no prototypes defined in the file nrf_gpio.h. I saw from a previous question that I need to define HOST and SUPPRESS_INLINE_IMPLEMENTATION, which I have done, but I still get the warning.
I can see in my build folder that the cached nrf_gpio.h file has prototypes all marked as static inline, so I would think it should be creating the mocks accordingly. Does anyone have any experience with this?
Here is my ceedling project.yml configuration file.
---
# Notes:
# As such, release build options are disabled.
# This sample, therefore, only demonstrates running a collection of unit tests.
:project:
:use_exceptions: FALSE
:use_test_preprocessor: TRUE
:use_auxiliary_dependencies: TRUE
:build_root: ceedling_build
:test_file_prefix: test_
:which_ceedling: vendor/ceedling
:default_tasks:
- test:all
:environment:
- :mcu: NRF52810_XXAA
- :sdk_root: nRF5_SDK_16.0.0
:extension:
:executable: .out
:paths:
:test:
- +:test/**
- -:test/support
:source:
- src/**
:include:
- "#{ENV['SDK_ROOT']}/modules/nrfx" # For nrfx.h
- "#{ENV['SDK_ROOT']}/modules/nrfx/hal" # For nrf_gpio.h
- "#{ENV['SDK_ROOT']}/modules/nrfx/mdk" # For nrf52810_peripherals.h
- "#{ENV['SDK_ROOT']}/modules/nrfx/soc"
- "#{ENV['SDK_ROOT']}/components/toolchain/cmsis/include" # For core_cm4.h
:support:
- test/support
:defines:
# in order to add common defines:
# 1) remove the trailing [] from the :common: section
# 2) add entries to the :common: section (e.g. :test: has TEST defined)
:commmon: &common_defines
- NRF52810_XXAA
- BOARD_PCA10040
- NRF52
:test:
- *common_defines
- TEST
- HOST
:test_preprocess:
- *common_defines
- TEST
- HOST
- SUPPRESS_INLINE_IMPLEMENTATION
:cmock:
:mock_prefix: mock_
:when_no_prototypes: :warn
:enforce_strict_ordering: TRUE
:plugins:
- :ignore
- :ignore_arg
- :array
- :callback
- :return_thru_ptr
- :expect_any_args
:treat_as:
uint8: HEX8
uint16: HEX16
uint32: UINT32
int8: INT8
bool: UINT8
:gcov:
:html_report_type: basic
#:tools:
# Ceedling defaults to using gcc for compiling, linking, etc.
# As [:tools] is blank, gcc will be used (so long as it's in your system path)
# See documentation to configure a given toolchain for use
# LIBRARIES
# These libraries are automatically injected into the build process. Those specified as
# common will be used in all types of builds. Otherwise, libraries can be injected in just
# tests or releases. These options are MERGED with the options in supplemental yaml files.
:libraries:
:placement: :end
:flag: "${1}" # or "-L ${1}" for example
:common: &common_libraries []
:test:
- *common_libraries
:release:
- *common_libraries
:plugins:
:load_paths:
- vendor/ceedling/plugins
:enabled:
- stdout_pretty_tests_report
- module_generator
- raw_output_report
- fake_function_framework
...