Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Ignore wasm_gc for debug build. #6962

Merged
merged 5 commits into from
Sep 8, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ we support multiple environment variables:
* `TRIGGER_WASM_BUILD` - Can be set to trigger a WASM build. On subsequent calls the value of the variable
needs to change. As WASM builder instructs `cargo` to watch for file changes
this environment variable should only be required in certain circumstances.
* `WASM_TARGET_DIRECTORY` - Will copy any build WASM binary to the given directory. The path needs
* `WASM_TARGET_DIRECTORY` - Will copy release build WASM binary to the given directory. The path needs
to be absolute.
* `WASM_BUILD_RUSTFLAGS` - Extend `RUSTFLAGS` given to `cargo build` while building the wasm binary.
* `WASM_BUILD_NO_COLOR` - Disable color output of the wasm build.
Expand Down
35 changes: 24 additions & 11 deletions utils/wasm-builder/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,17 +168,30 @@ pub fn build_project_with_default_rustflags(
default_rustflags,
);

write_file_if_changed(
file_name.into(),
format!(
r#"
pub const WASM_BINARY: Option<&[u8]> = Some(include_bytes!("{wasm_binary}"));
pub const WASM_BINARY_BLOATY: Option<&[u8]> = Some(include_bytes!("{wasm_binary_bloaty}"));
"#,
wasm_binary = wasm_binary.wasm_binary_path_escaped(),
wasm_binary_bloaty = bloaty.wasm_binary_bloaty_path_escaped(),
),
);
if let Some(wasm_binary) = wasm_binary {
write_file_if_changed(
file_name.into(),
format!(
r#"
pub const WASM_BINARY: Option<&[u8]> = Some(include_bytes!("{wasm_binary}"));
pub const WASM_BINARY_BLOATY: Option<&[u8]> = Some(include_bytes!("{wasm_binary_bloaty}"));
"#,
wasm_binary = wasm_binary.wasm_binary_path_escaped(),
wasm_binary_bloaty = bloaty.wasm_binary_bloaty_path_escaped(),
),
);
} else {
write_file_if_changed(
file_name.into(),
format!(
r#"
pub const WASM_BINARY: Option<&[u8]> = WASM_BINARY_BLOATY;
pub const WASM_BINARY_BLOATY: Option<&[u8]> = Some(include_bytes!("{wasm_binary_bloaty}"));
"#,
wasm_binary_bloaty = bloaty.wasm_binary_bloaty_path_escaped(),
),
);
}
cheme marked this conversation as resolved.
Show resolved Hide resolved
}

/// Checks if the build of the WASM binary should be skipped.
Expand Down
25 changes: 16 additions & 9 deletions utils/wasm-builder/src/wasm_project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ impl Drop for WorkspaceLock {
pub fn create_and_compile(
cargo_manifest: &Path,
default_rustflags: &str,
) -> (WasmBinary, WasmBinaryBloaty) {
) -> (Option<WasmBinary>, WasmBinaryBloaty) {
let wasm_workspace_root = get_wasm_workspace_root();
let wasm_workspace = wasm_workspace_root.join("wbuild");

Expand All @@ -113,7 +113,9 @@ pub fn create_and_compile(
&wasm_workspace,
);

copy_wasm_to_target_directory(cargo_manifest, &wasm_binary);
wasm_binary.as_ref().map(|wasm_binary|
copy_wasm_to_target_directory(cargo_manifest, wasm_binary)
);

generate_rerun_if_changed_instructions(cargo_manifest, &project, &wasm_workspace);

Expand Down Expand Up @@ -469,18 +471,23 @@ fn compact_wasm_file(
project: &Path,
cargo_manifest: &Path,
wasm_workspace: &Path,
) -> (WasmBinary, WasmBinaryBloaty) {
let target = if is_release_build() { "release" } else { "debug" };
) -> (Option<WasmBinary>, WasmBinaryBloaty) {
let is_release_build = is_release_build();
let target = if is_release_build { "release" } else { "debug" };
let wasm_binary = get_wasm_binary_name(cargo_manifest);
let wasm_file = wasm_workspace.join("target/wasm32-unknown-unknown")
.join(target)
.join(format!("{}.wasm", wasm_binary));
let wasm_compact_file = project.join(format!("{}.compact.wasm", wasm_binary));

wasm_gc::garbage_collect_file(&wasm_file, &wasm_compact_file)
.expect("Failed to compact generated WASM binary.");
let wasm_compact_file = if is_release_build {
let wasm_compact_file = project.join(format!("{}.compact.wasm", wasm_binary));
wasm_gc::garbage_collect_file(&wasm_file, &wasm_compact_file)
.expect("Failed to compact generated WASM binary.");
Some(WasmBinary(wasm_compact_file))
} else {
None
};

(WasmBinary(wasm_compact_file), WasmBinaryBloaty(wasm_file))
(wasm_compact_file, WasmBinaryBloaty(wasm_file))
}

/// Custom wrapper for a [`cargo_metadata::Package`] to store it in
Expand Down