modbuild is a tool used by Freven to compile Rust-based mods for Linux, Windows, and macOS.
It produces shared libraries (.so, .dll, .dylib) for multiple platforms from a single command.
Build once:
cd modbuild/
cargo build --releaseOr install globally:
cargo install --path .Build all targets for your mod:
./target/release/modbuild build --path /path/to/your/mod --out ./distSpecify targets explicitly:
./target/release/modbuild build --path /path/to/your/mod --out ./dist --targets linux,windows-gnu,windows-msvc,mac-intel,mac-arm64List all supported targets:
./target/release/modbuild list-targetsIn your Cargo.toml, configure your library as a dynamic library:
[lib]
crate-type = ["cdylib"]This allows Rust to produce .so, .dll, or .dylib files.
Building for linux...
Built linux successfully.
Copied to ./dist/libmy_mod-linux.so
Building for windows-gnu...
Built windows-gnu successfully.
Copied to ./dist/my_mod-windows-gnu.dll
Building for windows-msvc...
Built windows-msvc successfully.
Copied to ./dist/my_mod-windows-msvc.dll
Building for mac-intel...
Built mac-intel successfully.
Copied to ./dist/libmy_mod-mac-intel.dylib
Building for mac-arm64...
Built mac-arm64 successfully.
Copied to ./dist/libmy_mod-mac-arm64.dylibInstall the Windows targets:
rustup target add x86_64-pc-windows-gnu
rustup target add x86_64-pc-windows-msvcrustup target add x86_64-apple-darwin
rustup target add aarch64-apple-darwinInstall cargo-zigbuild or osxcross:
cargo install cargo-zigbuild
export CC=o64-clang
export CXX=o64-clang++modbuild will detect the cross-compilation tools automatically.
- Uses
cargo buildorcargo zigbuildper target - Detects macOS cross-compilation automatically
- Outputs shared libraries to the
--outdirectory, named like:lib<crate>-linux.so<crate>-windows-gnu.dll<crate>-windows-msvc.dlllib<crate>-mac-intel.dyliblib<crate>-mac-arm64.dylib
- Rust 1.74+
- Freven mods using
extern "C"andFrevenApi - Works on Linux, Windows, and macOS
MIT - use freely, modify freely, include the license.