39 lines
1.3 KiB
Rust
39 lines
1.3 KiB
Rust
use std::path::PathBuf;
|
|
|
|
fn main() {
|
|
println!("cargo:rerun-if-changed=js/bootstrap.js");
|
|
println!("cargo:rerun-if-changed=build.rs");
|
|
|
|
let out_dir = PathBuf::from(std::env::var("OUT_DIR").unwrap());
|
|
let snapshot_path = out_dir.join("OBSCURA_SNAPSHOT.bin");
|
|
|
|
let bootstrap_js = include_str!("js/bootstrap.js");
|
|
|
|
let output = deno_core::snapshot::create_snapshot(
|
|
deno_core::snapshot::CreateSnapshotOptions {
|
|
cargo_manifest_dir: env!("CARGO_MANIFEST_DIR"),
|
|
startup_snapshot: None,
|
|
skip_op_registration: true,
|
|
extensions: vec![],
|
|
extension_transpiler: None,
|
|
with_runtime_cb: Some(Box::new(move |runtime| {
|
|
runtime
|
|
.execute_script("<obscura:bootstrap>", bootstrap_js.to_string())
|
|
.expect("bootstrap.js should not fail during snapshot creation");
|
|
})),
|
|
},
|
|
None,
|
|
)
|
|
.expect("Failed to create V8 snapshot");
|
|
|
|
std::fs::write(&snapshot_path, &*output.output).expect("Failed to write snapshot");
|
|
println!(
|
|
"cargo:rustc-env=OBSCURA_SNAPSHOT_PATH={}",
|
|
snapshot_path.display()
|
|
);
|
|
|
|
for file in &output.files_loaded_during_snapshot {
|
|
println!("cargo:rerun-if-changed={}", file.display());
|
|
}
|
|
}
|