Directory | Purpose |
---|---|
options/ |
(More or less) OS-independent headers and code.options/ is divided into subdirectories that can be enabled or disabled by ports. |
sysdeps/ |
OS-specific headers and code.sysdeps/ is divded into per-port subdirectories. Exactly one of those subdirectories is enabled in each build. |
abis/ |
OS-specific interface headers ("ABI headers"). Those contain the constants and structs of the OS interface. For example, the numerical values of SEEK_SET or O_CREAT live here, as well as structs like struct stat . ABI headers are only allowed to contain constants, structs and unions but no function declarations or logic.abis/ is divided into per-OS subdirectories but this division is for organizational purposes only. Ports can still mix headers from different abis/ subdirectories. |
Porting mlibc to a new OS: Ports to new OSes are welcome. To port mlibc to another OS, the following changes need to be made:
- Add new
sysdeps/
subdirectorysysdeps/some-new-os/
and ameson.build
to compile it. Integreatesysdeps/some-new-os/meson.build
into the toplevelmeson.build
. - Create ABI headers in
abis/some-new-os/
. Add symlinks insysdeps/some-new-os/include/abi-bits
to your ABI headers. Look at existing ports to figure out the ABI headers required for the options enabled bysysdeps/some-new-os/meson.build
. - In
sysdeps/some-new-os/
, add code to implement (a subset of) the functions fromoptions/internal/include/mlibc/sysdeps.hpp
. Which subset you need depends on the options thatsysdeps/some-new-os/meson.build
enables.