A collection of dependencies frequently used across projects, built as static libraries for multiple platforms from a single source tree.
By @morew4rd.
- Library only. Every dependency is configured to build only the library itself. Examples, tests, documentation, benchmarks, and tools are disabled by default.
- Production quality. No hacks or temporary workarounds. Every build path is documented, reproducible, and pinned to a specific dependency version.
- Multi-platform. Static libraries are produced for:
- Windows x64 / arm64
- Linux x64 / arm64
- macOS arm64
- Emscripten (wasm32)
- CMake-driven. The top-level
CMakeLists.txtdrives all CMake-buildable dependencies. Non-CMake or header-only dependencies live undersrc/<dep>/as small, clean wrappers.
git clone https://github.com/moreward/moredeps.git
cd moredeps
# Initialize all top-level submodules.
# Do NOT use --recursive; dawn's nested submodules include private Google
# repositories that require authentication and are not needed.
git submodule update --init --jobs 4If a submodule fails to initialize (e.g. from a partial or interrupted clone), reset it individually:
git submodule deinit -f deps/<name>
rmdir /s /q deps\<name> # Windows
rm -rf deps/<name> # Unix
git submodule update --init deps/<name># macOS (native)
./scripts/build_all.sh macos_arm64
# Linux (native or cross to arm64)
./scripts/build_all.sh linux_x64
./scripts/build_all.sh linux_arm64
# Windows (from x64 Native Tools Command Prompt, or Git Bash)
./scripts/build_all.sh windows_x64
./scripts/build_all.sh windows_arm64
# Emscripten / WASM
./scripts/build_all.sh wasm_emscripten
# Build all supported platforms (requires all toolchains installed)
./scripts/build_all.sh allArtifacts are staged in _out/<platform>/lib/ and _out/<platform>/include/.
docs/build_plan.md— the overall build-infrastructure plan, targets, exclusions, and implementation phases.docs/build_options.md— per-dependency CMake options and the defaults we selected (examples/tests/docs disabled, minimal optional features).docs/mobile_plan.md— iOS/Android support plan and dependency matrix.docs/shared_libs.md— how to produce shared libraries from the static artifacts.
deps/— upstream sources as git submodules (read-only). All dependencies are top-level submodules;git submodule update --init --recursiveis not strictly required anymore.src/<dep>/— CMake wrappers and implementation files for header-only / non-CMake dependencies.toolchain/— CMake toolchain files for cross-compilation._b/<platform>/— CMake build trees (gitignored)._out/<platform>/— staged static libraries and public headers.scripts/build_all.sh— entry point to build all platform combinations.scripts/validate_dev_env.sh— check that the host has the required tools for a platform.scripts/clean_all.sh— remove all_b/and_out/directories for a clean start.
| Platform | Status | Notes |
|---|---|---|
| macOS arm64 | ✅ Validated | 76 static libraries |
| Linux arm64 | ✅ Validated | 76 static libraries |
| Emscripten (wasm32) | ✅ Validated | 65 static libraries (excludes desktop-only deps) |
| Windows x64 | ✅ Validated | MSVC via Ninja or NMake |
| Windows arm64 | ✅ Validated | MSVC cross-compile from x64 host; mtcc excluded (no ARM64 PE backend) |
| Linux x64 | ⏳ Pending | Toolchain provided; awaiting validation |
- Emscripten:
glfw,mtcc,enet,libwebsockets,reproc,tinycsocket(desktop-only APIs). - Windows arm64:
mtcc(TinyCC's PE backend lacks ARM64 support). - All platforms:
ghosttyis macOS-only (Zig build, library extraction from xcframework).
See docs/work_log.md for the current state and known caveats.