From: Matt Corallo Date: Sat, 9 Jan 2021 02:55:47 +0000 (-0500) Subject: build a wasm binding library X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=commitdiff_plain;h=f75e5f0860e7b01688f461c30df98b13f98b39ca;p=rust-lightning build a wasm binding library --- diff --git a/genbindings.sh b/genbindings.sh index c63de7dbc..99616cc09 100755 --- a/genbindings.sh +++ b/genbindings.sh @@ -45,6 +45,10 @@ else sed -i 's/typedef LDKnative.*Import.*LDKnative.*;//g' include/lightning.h fi +# stdlib.h doesn't exist in clang's wasm sysroot, and cbindgen +# doesn't actually use it anyway, so drop the import. +sed -i 's/#include //g' include/lightning.h + # Finally, sanity-check the generated C and C++ bindings with demo apps: # Naively run the C demo app: @@ -168,6 +172,9 @@ else echo "WARNING: Can't use address sanitizer on non-Linux, non-OSX non-x86 platforms" fi +cargo rustc -v --target=wasm32-unknown-unknown -- -C embed-bitcode=yes || echo "WARNING: Failed to generate WASM LLVM-bitcode-embedded library" +CARGO_PROFILE_RELEASE_LTO=true cargo rustc -v --release --target=wasm32-unknown-unknown -- -C opt-level=s -C linker-plugin-lto -C lto || echo "WARNING: Failed to generate WASM LLVM-bitcode-embedded optimized library" + # Now build with LTO on on both C++ and rust, but without cross-language LTO: CARGO_PROFILE_RELEASE_LTO=true cargo rustc -v --release -- -C lto clang++ $CLANGOPTS -std=c++11 -flto -O2 demo.cpp target/release/libldk.a -ldl diff --git a/lightning-c-bindings/Cargo.toml b/lightning-c-bindings/Cargo.toml index 6bde30475..3d073d659 100644 --- a/lightning-c-bindings/Cargo.toml +++ b/lightning-c-bindings/Cargo.toml @@ -18,6 +18,13 @@ crate-type = ["staticlib" bitcoin = "0.24" lightning = { version = "0.0.12", path = "../lightning" } +# Always force panic=abort, further options are set in the genbindings.sh build script +[profile.dev] +panic = "abort" + +[profile.release] +panic = "abort" + # We eventually want to join the root workspace, but for now, the bindings generation is # a bit brittle and we don't want to hold up other developers from making changes just # because they break the bindings diff --git a/lightning-c-bindings/include/lightning.h b/lightning-c-bindings/include/lightning.h index 92900cb83..9b7ee16a6 100644 --- a/lightning-c-bindings/include/lightning.h +++ b/lightning-c-bindings/include/lightning.h @@ -7,7 +7,7 @@ #include #include #include -#include + /** * An error when accessing the chain via [`Access`].