Middlewares
Central entry point for the middleware modules (RTOS, filesystems, networking, GUI and display libraries, ...) used across our embedded projects. Every module is a git submodule of this repository, so one clone gives access to all of them while each module keeps its own history and versions.
The submodule list is maintained automatically by RootRepo_Generator.sh in Middlewares_Handler. Don't add or move module submodules by hand. Hand edits are not reverted, but a module the generator manages is always re-pinned to its own target.
Where the modules come from
upstream GitHub (eclipse-threadx, FreeRTOS, olikraus, ...)
│ *_AzureImport.sh - one commit per upstream version
▼
Azure DevOps Middlewares/<Module> (master, internal staging)
│ Release.sh - one vX.Y.Z tag + GitHub Release per version
▼
GitHub Embedbits/Middlewares-<Module> (public, released versions only)
This repository exists on both sides, with the same layout (one submodule per module, at path <Module>/):
| Remote | Submodule URL | Submodule pinned to |
|---|---|---|
Azure DevOps Middlewares/Middlewares | ../<Module> (relative) | latest commit of the module's master |
GitHub Embedbits/Middlewares | https://github.com/Embedbits/Middlewares-<Module>.git | highest vX.Y.Z release of the module |
On GitHub, .gitmodules also defines which modules are public: Release.sh publishes exactly the modules listed there.
Usage
Clone without fetching any module, then initialize only the modules you need:
git clone <root repository url> Middlewares
git -C Middlewares submodule update --init --depth=1 ThreadX
Or vendor a single module directly in your project:
git submodule add https://github.com/Embedbits/Middlewares-ThreadX.git Middlewares/ThreadX
Each module's own README.md describes how to build against it. In short, every module has a root CMakeLists.txt that you add_subdirectory() and then link its library target.
License
This repository only aggregates references to the modules. Each module keeps the license of its upstream project.