bytecodealliance / wasm-component-ld

Command line linker for creating WebAssembly components
Apache License 2.0
39 stars 3 forks source link

wasm-component-ld

This crate contains a binary named wasm-component-ld which is a wrapper around two pieces of functionality used to produce a WebAssembly Component

  1. The wasm-ld linker driver provided by LLVM
  2. The wit_component::ComponentEncoder type

This binary will first invoke wasm-ld and then run the componentization process to produce a final component.

Installation

This repository provides precompiled binaries of wasm-component-ld. This repository can also be installed with cargo binstall.

Installations of wasi-sdk have this binary packaged by default in the sysroot and the Rust wasm32-wasip2 target, upon reaching tier 2, will also come packaged with this binary included.

This means that while a version can be installed manually it should not be required to do so.

Options

The wasm-component-ld binary is suitable to use as a linker driver during compilations. For Clang and Rust the wasm32-wasip2 target will automatically invoke this binary as the linker.

This means that wasm-component-ld forwards most of its arguments to wasm-ld. Additionally all flags of wasm-ld are supported and forwarded to wasm-ld. For example you can invoke the linker like wasm-component-ld --max-memory=N ....

The wasm-component-ld binary has a few custom arguments for itself as well which are not forwarded to wasm-ld and can be explored with -h or --help.

License

This project is triple licenced under the Apache 2/ Apache 2 with LLVM exceptions/ MIT licences. The reasoning for this is:

For more details see

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this project by you, as defined in the Apache 2/ Apache 2 with LLVM exceptions/ MIT licenses, shall be licensed as above, without any additional terms or conditions.