1.9 KiB
Modulus
Modulus is the shared C++23 foundation library and build tooling used by the khodo Product Vamp repositories. It provides small runtime utilities, Conan profiles, CMake package integration, editor templates, typed LSP compile-database setup, and bridge targets for the external libraries needed by Product Vamp.
The public package intentionally keeps a small dependency surface:
- Boost.JSON
- OpenSSL
- SQLite
- raylib
- miniaudio 0.11.22
Build
Use the checked-in tools directly inside CI or a compatible build environment:
MODULUS_DIRECT=1 ./tools/configure.py --target x86_64_gcc12_release
./tools/build.py --target x86_64_gcc12_release
./tools/test.py --target x86_64_gcc12_release
Outside that environment, downstream repos use python3 modulus.py <command> to fetch the public modulus/latest package from the khodo Conan registry and export the tool wrappers into build/build_tools/.
build automatically configures a target when CMake metadata is missing. Run configure explicitly when you want to force a reconfigure or refresh dependencies.
Refresh clangd compile databases with:
./tools/lsp.py
Product repos can add typed extra CMake compile databases under tooling.lsp.compile_databases; this is intended for cases like Product Vamp's Pico firmware tree.
Package
Create Conan packages with:
./tools/package.py --all
Publishing requires credentials only for the upload step:
CONAN_USER=<user> \
CONAN_TOKEN=<token> \
MODULUS_CONAN_UPLOAD=1 \
MODULUS_ALLOW_PACKAGE_REPLACE=1 \
./tools/package.py --all --replace
The default public Conan remote is:
https://git.thyme-labs.com/api/packages/khodo/conan
Generic application artifacts default to:
https://git.thyme-labs.com/api/packages/khodo/generic
Configure/build/test do not require package credentials for public packages.
License
Modulus is released under the MIT License.