# 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 ` 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= \ CONAN_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.