2 releases
0.0.1 | Nov 6, 2022 |
---|---|
0.0.0 | Nov 6, 2022 |
#17 in #gear
34KB
622 lines
Gear WASM Builder
This is a helper crate that can be used in build scripts for building Gear programs.
Usage
- Add the
gear-wasm-buider
crate as a build dependency to theCargo.toml
:
# ...
[build-dependencies]
gear-wasm-builder = "0.1.2"
# ...
- Create a
build.rs
file and place it at the directory withCargo.toml
:
fn main() {
gear_wasm_builder::build();
}
- Use
cargo
as usually:
cargo clean
cargo build
cargo build --release
cargo test
cargo test --release
- 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
- Also, you can include a generated
wasm_binary.rs
source file to use the WASM code while e.g. writing tests.
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
.
Dependencies
~3–12MB
~172K SLoC