Build targets
Every Hover build ends in the same place: the generated sim.cpp is handed to zig c++ and linked against a prebuilt static runtime library for the target platform.
The compile line
Using Zig as the C++ driver is what makes cross-compilation cheap: the target triple is just a flag, and Zig ships the sysroot for every target it supports. Nothing in the compiler or runtime source is platform-conditional.
The runtime library
libhover_runtime.a is built once per target from the C++ sources under runtime/ — the Modified Nodal Analysis engine (mna/, built on Eigen), the VM and its logger (vm/), and the integration methods (solvers/, one translation unit per solver named in .solver). It's compiled with zig c++ and archived with zig ar, same as the per-simulation build.
Standalone releases
The Makefile builds self-contained release folders that bundle the runtime, the hover CLI, the standard_library/ directory, and a vendored Zig toolchain, so an end user needs nothing preinstalled:
make linux— cross-compiles forx86_64-linux-gnu, zips the result.make windows— the same forx86_64-windows-gnu.make all— both.make clean— removes build artifacts and standalone folders.
Note that standard_library/ gets copied next to the binary — that's the directory import <...> resolves against, so it must stay adjacent to hover for angle-bracket imports to work. See Modules & imports.