70 lines
1.9 KiB
Markdown
70 lines
1.9 KiB
Markdown
# 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:
|
|
|
|
```sh
|
|
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:
|
|
|
|
```sh
|
|
./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:
|
|
|
|
```sh
|
|
./tools/package.py --all
|
|
```
|
|
|
|
Publishing requires credentials only for the upload step:
|
|
|
|
```sh
|
|
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:
|
|
|
|
```text
|
|
https://git.thyme-labs.com/api/packages/khodo/conan
|
|
```
|
|
|
|
Generic application artifacts default to:
|
|
|
|
```text
|
|
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.
|