Fix misspelling of 'occurred' in public interface
[rust-lightning] / genbindings.sh
index 1ca2f6e8e886d1463d24bc9da55ae487ab04fde3..241ed3e8c882fc1446c58a0fb151c08dcb77adad 100755 (executable)
@@ -44,8 +44,16 @@ HOST_PLATFORM="$(rustc --version --verbose | grep "host:")"
 if [ "$HOST_PLATFORM" = "host: x86_64-apple-darwin" ]; then
        # OSX sed is for some reason not compatible with GNU sed
        sed -i '' 's/typedef LDKnative.*Import.*LDKnative.*;//g' include/lightning.h
+
+       # 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 <stdlib.h>//g' include/lightning.h
 else
        sed -i 's/typedef LDKnative.*Import.*LDKnative.*;//g' include/lightning.h
+
+       # 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 <stdlib.h>//g' include/lightning.h
 fi
 
 # Finally, sanity-check the generated C and C++ bindings with demo apps:
@@ -171,6 +179,17 @@ else
        echo "WARNING: Can't use address sanitizer on non-Linux, non-OSX non-x86 platforms"
 fi
 
+if [ "$(rustc --print target-list | grep wasm32-wasi)" != "" ]; then
+       # Test to see if clang supports wasm32 as a target (which is needed to build rust-secp256k1)
+       echo "int main() {}" > genbindings_wasm_test_file.c
+       clang -nostdlib -o /dev/null --target=wasm32-wasi -Wl,--no-entry genbindings_wasm_test_file.c > /dev/null 2>&1 &&
+       # And if it does, build a WASM binary without capturing errors
+       cargo rustc -v --target=wasm32-wasi -- -C embed-bitcode=yes &&
+       CARGO_PROFILE_RELEASE_LTO=true cargo rustc -v --release --target=wasm32-wasi -- -C opt-level=s -C linker-plugin-lto -C lto ||
+       echo "Cannot build WASM lib as clang does not seem to support the wasm32-wasi target"
+       rm genbindings_wasm_test_file.c
+fi
+
 # 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++ $CFLAGS -std=c++11 -flto -O2 demo.cpp target/release/libldk.a -ldl