Skip to content

Building Wasmtime

Prerequisites

location

Just be aware Wasmtime is in the lind-wasm directory.

Git Submodules

The Wasmtime repository contains a number of git submodules. To build Wasmtime and most other crates in the repository, ensure that these are initialized with the following command:

cd /home/lind-wasm/wasmtime
git submodule update --init

Switch branch

switch branch to add-lind

git switch add-lind

The Rust Toolchain

You should have these tools, if not install the Rust toolchain, which includes rustup, cargo, rustc, etc. You can find the installation instructions here.

libclang (Optional)

The wasmtime-fuzzing crate transitively depends on bindgen, which requires libclang to be installed on your system. If you want to work on Wasmtime's fuzzing infrastructure, you'll need libclang. Details on how to get libclang and make it available for bindgen are here.

Building the Wasmtime CLI

cd /home/lind-wasm/wasmtime/crates/rustposix/src

Cd to path /home/lind-wasm/wasmtime/crates/rustposix/src and vim file build.rs change the first line into cargo:rustc-link-search=native=/home/lind-wasm/wasmtime/crates/rustposix

vim build.rs
cd /home/lind-wasm/wasmtime

Remember to export

export LD_LIBRARY_PATH=/home/lind-wasm/wasmtime/crates/rustposix:$LD_LIBRARY_PATH

You should find librustposix.so in rustposix(...wasmtime/crates/rustposix), but instead we should replace librustposix.so with another librustposix.so located in the safeposix-rust you complied before. Use the code below, you can change librustposix.so with the name of the file you want to replace and change /home/lind-wasm/wasmtime/crates/rustposix with the path of the new file(for file use cp for directory use cp -r )

cp /home/safeposix-rust/target/debug/librustposix.so /home/lind-wasm/wasmtime/crates/rustposix

To make an unoptimized, debug build of the Wasmtime CLI tool, go to the root of the repository and run:

cargo build

The built executable will be located at target/debug/wasmtime.

To make an optimized build, run the following command in the root of the repository:

cargo build --release

The built executable will be located at target/release/wasmtime.

You can also build and run a local Wasmtime CLI by replacing cargo build with cargo run.