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 ...