diff options
Diffstat (limited to 'examples/rust')
| -rwxr-xr-x | examples/rust/build.sh | 4 | ||||
| -rw-r--r-- | examples/rust/src/fibonacci.rs | 8 |
2 files changed, 11 insertions, 1 deletions
diff --git a/examples/rust/build.sh b/examples/rust/build.sh index 5450345..cabf00e 100755 --- a/examples/rust/build.sh +++ b/examples/rust/build.sh @@ -6,11 +6,13 @@ exclude_wat=("tinywasm") out_dir="./target/wasm32-unknown-unknown/wasm" dest_dir="out" +features="+reference-types,+bulk-memory,+mutable-globals" + # ensure out dir exists mkdir -p "$dest_dir" for bin in "${bins[@]}"; do - RUSTFLAGS="-C target-feature=+reference-types,+bulk-memory -C panic=abort" cargo build --target wasm32-unknown-unknown --package rust-wasm-examples --profile=wasm --bin "$bin" + RUSTFLAGS="-C target-feature=$features -C panic=abort" cargo build --target wasm32-unknown-unknown --package rust-wasm-examples --profile=wasm --bin "$bin" cp "$out_dir/$bin.wasm" "$dest_dir/" wasm-opt "$dest_dir/$bin.wasm" -o "$dest_dir/$bin.wasm" -O --intrinsic-lowering -O diff --git a/examples/rust/src/fibonacci.rs b/examples/rust/src/fibonacci.rs index 3e4be73..7924aef 100644 --- a/examples/rust/src/fibonacci.rs +++ b/examples/rust/src/fibonacci.rs @@ -19,3 +19,11 @@ pub extern "C" fn fibonacci(n: i32) -> i32 { } sum } + +#[no_mangle] +pub extern "C" fn fibonacci_recursive(n: i32) -> i32 { + if n <= 1 { + return n; + } + fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2) +} |
