[FEATURE] Add integration with external programs/projects the right way

Open
#18,522 7 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

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

Research direction

Start by reading the existing apps/external integration and the Kconfig, Make.defs, Makefile, and CMakeLists.txt files it expects, then compare them with Zephyr's modules documentation and the linked example projects. Done would mean a documented, agreed convention for external NuttX repositories and a working integration path without requiring each project to duplicate NuttX build files.

Written by the indexing model from the issue text.

Description

Type: Enhancement
Is your feature request related to a problem? Please describe.

Currently there is possible to add external applications on nuttx-apps creating an "external/" directory inside apps/ [1]. However it expects that the added project has the right files inside it (Kconfig, Make.defs, Makefile, CMakelist.txt, etc).

Others RTOSes like zephyr has a similar solution (although they used a confuse name "Module" and that is a bad name since for a kernel a module means dynamic loadable component). Also in their case they expects a directory called "zephyr" inside the target project. Some examples:
https://github.com/open-quantum-safe/liboqs
https://github.com/civetweb/civetweb/tree/master/zephyr
https://github.com/lvgl/lvgl/tree/master/zephyr

This is more than a better solution, this is their way to spread their naming/awareness around all other projects in the Internet and avoids the process of creating a download script in their repository, as we do for LVGL and others.

There is a complete (and verbose) documentation about it here: https://docs.zephyrproject.org/latest/develop/modules.html

1 - It is a hidden feature, there is no Documentation about it: https://nuttx.apache.org/docs/latest/search.html?q=external&check_keywords=yes&area=default

Describe the solution you'd like

We could follow the same approach, creating a "nuttx" or "NuttX" repository inside other projects simplify the integration process.

Describe alternatives you've considered

No response

Verification
  • I have verified before submitting the report.
Dominant language
C
Stars
4.1k
Forks
1.8k
Avg merge
1d 3h
Merged PRs (30d)
833

Getting set up

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.

More from apache/nuttx

All issues in apache/nuttx

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.