Skip to content

Removing BASE_CONFIG from fprime-baremetal-config breaks MicroFsCfg.hpp include path in fprime-community/fprime-baremetal #6048

Description

@Iva-L
F´ Version v4.3.0
Affected Component Baremetal (Os::Baremetal::MicroFs)

Problem Description

Commit f0ab6de ("Fix config") in fprime-community/fprime-baremetal, merged to main, removed the BASE_CONFIG flag from the register_fprime_config() call in fprime-baremetal/config/CMakeLists.txt and replaced it with DEPENDS Fw_Types:

 register_fprime_config(
         fprime-baremetal-config
     HEADERS
         "${CMAKE_CURRENT_LIST_DIR}/MicroFsCfg.hpp"
-    INTERFACE # No buildable files generated
-    BASE_CONFIG
+    DEPENDS
+        Fw_Types
+    INTERFACE
 )

BASE_CONFIG is what causes fprime's CMake build system to automatically link every module against this config target project-wide (see fprime/cmake/global_interface.cmake, which links the global interface target to all BASE_CONFIG configuration modules). Removing it means config/MicroFsCfg.hpp is no longer exposed on the include path to any consumer unless that consumer's own project config/ directory happens to provide an equivalent override.

Any downstream deployment that uses Os::Baremetal::MicroFs and does not itself provide a MicroFsCfg.hpp override now fails to build with a missing-header error, because nothing registers the include path that used to come from BASE_CONFIG.

Context / Environment

Operating System: Linux
Targeted Architecture: STM32H7
CPU Architecture: x86_64
Platform: Linux-6.18.33.2-microsoft-standard-WSL2-x86_64-with-glibc2.43
Python version: 3.14.4
CMake version: 3.26.0
Pip version: 26.2.1
Pip packages:
    fprime-tools==4.3.0
    fprime-gds==4.3.0
    fprime-fpp==3.3.0
Project submodules:
    https://github.com/nasa/fprime.git @ v4.3.0
    https://github.com/fprime-community/fprime-baremetal @ f886e09

How to Reproduce

  1. Check out fprime-baremetal at main (post f0ab6de), e.g. db40930 or later, as the lib/fprime-baremetal submodule of an fprime deployment targeting a baremetal OS (e.g. stm32h7).
  2. Build any deployment that pulls in Os::Baremetal::MicroFs (directly or transitively through the baremetal Os implementation) without the deployment's own config/ directory providing a MicroFsCfg.hpp override.
  3. Run fprime-util build <platform>.

Expected Behavior

The build should succeed, with fprime-baremetal-config continuing to expose config/MicroFsCfg.hpp to every consumer of Os::Baremetal::MicroFs by default, as it did before f0ab6de, either by restoring BASE_CONFIG or by having every module that depends on Os::Baremetal::MicroFs explicitly DEPENDS on fprime-baremetal-config.

Instead, the build fails with:

fatal error: config/MicroFsCfg.hpp: No such file or directory
    6 | #include "config/MicroFsCfg.hpp"
      |          ^~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions