nasa / nasa/cFS

Add a mechanism to push app configurations to the mission definitions folder.

Open
#48 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C
Stars
1.5k
Forks
391
Avg merge
1d 11h
Merged PRs (30d)
19

Description

After working with some of the pre-made utility apps provided by the CFE, I've noticed that at some point (relatively early) developers must abandon reuse in favor of clone/own which, in my opinion, is partly due to the CFS CMake build system not providing a clean method to push build configurations into the top level definitions folder.

An example of an app that could benefit from additional configuration would be the CI and TO lab apps. The current implementation of these apps use a hard coded port value for UDP communication with only a means to change the IP listened to via a command in TO Lab. My solution would most likely take the form of changing...

  #define cfgCI_PORT 1234

to...

  #ifndef cfgCI_PORT
    #define cfgCI_PORT 1234  // Default UDP port
  #endif

and having a config.cmake located within the missions definitions directory that contains the definition from a cmake instruction...

add_definitions(-DcfgCI_PORT=4321)

It would be nice for the CMake build system to provide the ability to have a companion configuration folder for each app in the definitions folder. This folder could contain headers and additional .cmake files used to specify certain details about the app being built.

It's currently possible to hijack the behavior of the targets.cmake file and add additional instructions like file(copy ...) to inject files into the app before it attempts to build but this would clobber the files currently present in the app directory.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the CFS CMake build system, the missions definitions folder, and the existing targets.cmake behavior for the CI and TO lab apps. Determine how a companion configuration folder, config.cmake files, and headers could be incorporated without clobbering app files. Done means app-specific definitions such as cfgCI_PORT can be supplied from the missions definitions area while preserving existing defaults and builds.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, cmake
Domain
build-system
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.