gear-wasm-builder

Crates.iogear-wasm-builder
lib.rsgear-wasm-builder
version1.7.0
sourcesrc
created_at2022-02-18 12:04:32.645778
updated_at2024-11-26 11:46:11.767172
descriptionUtility for building Gear programs
homepage
repositoryhttps://github.com/gear-tech/gear
max_upload_size
id534663
size60,348
Dmitrii Novikov (breathx)

documentation

https://docs.rs/gear-wasm-builder

README

Gear WASM Builder

This is a helper crate that can be used in build scripts for building Gear programs.

Usage

  1. Add the gear-wasm-builder crate as a build dependency to the Cargo.toml:
# ...

[build-dependencies]
gear-wasm-builder = "0.1.2"

# ...
  1. Create a build.rs file and place it at the directory with Cargo.toml:
fn main() {
    gear_wasm_builder::build();
}
  1. Use cargo as usually:
cargo clean
cargo build
cargo build --release
cargo test
cargo test --release
  1. Find the built WASM binaries in target/wasm32-unknown-unknown/<profile> directory:
  • .wasm — original WASM built from the source files
  • .opt.wasm — optimised WASM binary to be submitted to the blockchain
  • .meta.wasm — metadata providing WASM binary for auxiliary purposes
  1. Also, you can include a generated wasm_binary.rs source file to use the WASM code while e.g. writing tests. When doing this, you need to use some feature which will be excluded from passing it down to the build process triggered by the build script. By default, this is the std feature. If you want to use a custom feature for that, use one of the the build_XXX_custom functions in your build.rs
#[cfg(feature = "std")]
mod code {
    include!(concat!(env!("OUT_DIR"), "/wasm_binary.rs"));
}

#[test]
fn debug_wasm() {
    assert_eq!(
        std::fs::read("target/wasm32-unknown-unknown/debug/test_program.wasm").unwrap(),
        code::WASM_BINARY,
    );
    assert_eq!(
        std::fs::read("target/wasm32-unknown-unknown/debug/test_program.opt.wasm").unwrap(),
        code::WASM_BINARY_OPT,
    );
    assert_eq!(
        std::fs::read("target/wasm32-unknown-unknown/debug/test_program.meta.wasm").unwrap(),
        code::WASM_BINARY_META,
    );
}

License

Source code is licensed under GPL-3.0-or-later WITH Classpath-exception-2.0.

Commit count: 3469

cargo fmt