Struct substrate_wasm_builder::WasmBuilder
source · pub struct WasmBuilder { /* private fields */ }
Expand description
The builder for building a wasm binary.
The builder itself is separated into multiple structs to make the setup type safe.
Building a wasm binary:
- Call
WasmBuilder::new
to create a new builder. - Select the project to build using the methods of
WasmBuilderSelectProject
. - Set additional
RUST_FLAGS
or a different name for the file containing the WASM code using methods ofWasmBuilder
. - Build the WASM binary using
Self::build
.
Implementations§
source§impl WasmBuilder
impl WasmBuilder
sourcepub fn new() -> WasmBuilderSelectProject
pub fn new() -> WasmBuilderSelectProject
Create a new instance of the builder.
sourcepub fn build_using_defaults()
pub fn build_using_defaults()
Build the WASM binary using the recommended default values.
This is the same as calling:
substrate_wasm_builder::WasmBuilder::new()
.with_current_project()
.import_memory()
.export_heap_base()
.build();
sourcepub fn init_with_defaults() -> Self
pub fn init_with_defaults() -> Self
Init the wasm builder with the recommended default values.
In contrast to Self::build_using_defaults
it does not build the WASM binary directly.
This is the same as calling:
substrate_wasm_builder::WasmBuilder::new()
.with_current_project()
.import_memory()
.export_heap_base();
sourcepub fn export_heap_base(self) -> Self
pub fn export_heap_base(self) -> Self
Enable exporting __heap_base
as global variable in the WASM binary.
This adds -Clink-arg=--export=__heap_base
to RUST_FLAGS
.
sourcepub fn set_file_name(self, file_name: impl Into<String>) -> Self
pub fn set_file_name(self, file_name: impl Into<String>) -> Self
Set the name of the file that will be generated in OUT_DIR
.
This file needs to be included to get access to the build WASM binary.
If this function is not called, file_name
defaults to wasm_binary.rs
sourcepub fn import_memory(self) -> Self
pub fn import_memory(self) -> Self
Instruct the linker to import the memory into the WASM binary.
This adds -C link-arg=--import-memory
to RUST_FLAGS
.
sourcepub fn append_to_rust_flags(self, flag: impl Into<String>) -> Self
pub fn append_to_rust_flags(self, flag: impl Into<String>) -> Self
Append the given flag
to RUST_FLAGS
.
flag
is appended as is, so it needs to be a valid flag.
sourcepub fn enable_feature(self, feature: impl Into<String>) -> Self
pub fn enable_feature(self, feature: impl Into<String>) -> Self
Enable the given feature when building the wasm binary.
feature
needs to be a valid feature that is defined in the project Cargo.toml
.
sourcepub fn disable_runtime_version_section_check(self) -> Self
pub fn disable_runtime_version_section_check(self) -> Self
Disable the check for the runtime_version
wasm section.
By default the wasm-builder
will ensure that the runtime_version
section will
exists in the build wasm binary. This runtime_version
section is used to get the
RuntimeVersion
without needing to call into the wasm binary. However, for some
use cases (like tests) you may want to disable this check.