Initial public khodo snapshot
publish / publish (push) Successful in 53m2s

This commit is contained in:
khodowany
2026-09-04 19:30:11 -05:00
commit 2750dd7f3a
51 changed files with 5515 additions and 0 deletions
+69
View File
@@ -0,0 +1,69 @@
# 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.