-
Wasmer is written in Rust. To build Wasmer, where possible, do not directly invoke
cargo
, but use the suppliedMakefile
-
Wasmer provides several compilers and the
Makefile
autodetects when compilers can be compiled and/or installed. Set the environment variablesENABLE_{CRANELIFT,LLVM,SINGLEPASS}=1
to force compiler to be build or to fail trying, e.g:$ ENABLE_LLVM=1 make build-wasmer
-
make install
respectsDESTDIR
, butprefix
must be configured withWASMER_INSTALL_PREFIX
. Note thatDESTDIR
must includeWASMER_INSTALL_PREFIX
, e.g.:export WASMER_INSTALL_PREFIX=/usr make DESTDIR=/tmp/staging/usr make install
-
In case you must build/install directly with
cargo
, make sure to enable at least one compiler feature, like e.g.--features cranelift
,- Beware that compiling with
cargo build --workspace --features …
will not enable features on the subcrates in the workspace and result in a headless Wasmer binary that can not compile Wasm files directly.
- Beware that compiling with
-
If you split the package into several subpackages, beware that the
create-exe
command of thewasmer
CLI requireslibwasmer.a
to be installed at$WASMER_INSTALL_PREFIX/lib/libwasmer.a
. Suggestions for splitting:-
The
wasmer-headless
CLI contains a subset of thewasmer
's functionalities and should only be packaged when splitting — it must be built explicitly with:$ make build-wasmer-headless-minimal install-wasmer-headless-minimal
-
libwasmer
, containinglibwasmer.so*
, -
libwasmer-dev
, containing the header files and a.pc
file, -
libwasmer-static
, containinglibwasmer.a
.
-
The Wasmer distro packaging story is still in its infancy, so feedback is very welcome.
Wasmer can be registered as a binfmt interpreter for wasm binaries. An example systemd .service is included here. Please consider statically linking the wasmer binary so that this capability is also available in mount namespaces.