Emberjade
Emberjade is an experimental application environment and mini-OS for underpowered communication devices.
It's in development!! You can't use it for anything yet!!
Emberjade is licensed under the Opinionated Queer License, version 1.2.
Architecture
The codebase is split into two main sections, "OS" and "platform" (abbreviated "PF"). The OS section deals with general functionality and high level features, while the platform section is responsible for interacting with the hardware, effectively a hardware abstraction layer. Additionally, there is only one unified implementation of the OS, while the platform code is specific to a particular device (or virtual device), providing a consistent API to the OS code that abstracts the differences in hardware backends.
Currently, the only supported platform is sdl3. This is also the default
option in the Makefile.
Building
The exact build steps will depend on the target device, but in general, you will need to provide a libc implementation (maybe this will change in future?) as well as your cross compilation toolchain of choice (unless building for a virtual device).
To build for the sdl3 platform, you can use your system's libc and toolchain,
plus you need to install SDL3 in such a way that pkg-config can find it.
To build all sources and create the default binary output, run make. You can
specify the platform using make PLATFORM=... or by editing the Makefile. To
build documentation (which requires Doxygen), run make docs. The sdl3
platform also provides a convenience target to build and launch the system at
once: make run.
When building using make or make run, the initial filesystem images will
be built at the same time (initfs-system.bin and initfs-data.bin usually).
These will not be rebuilt automatically if the contents of initfs/ are
changed! You should either run make clean to force them to be rebuilt, or
individually rebuild them with make initfs-system.bin etc.