X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=genbindings.sh;h=34982335a58067de41476b736a71f40aa3248c62;hb=9d79103585a215d97ba565744e0695dc8861f5f7;hp=42af1bda6978eac300931c7c255e2f4666f7c1d8;hpb=6db82fbaa9d4e2af27a45d18e7d4f568202a190f;p=ldk-c-bindings diff --git a/genbindings.sh b/genbindings.sh index 42af1bd..3498233 100755 --- a/genbindings.sh +++ b/genbindings.sh @@ -156,7 +156,7 @@ function is_gnu_sed(){ function add_crate() { pushd "$LIGHTNING_PATH/$1" - RUSTC_BOOTSTRAP=1 cargo rustc --profile=check --no-default-features $3 -- --cfg=c_bindings -Zunpretty=expanded > /tmp/$1-crate-source.txt + RUSTC_BOOTSTRAP=1 cargo rustc --profile=check -Z avoid-dev-deps --no-default-features $3 -- --cfg=c_bindings -Zunpretty=expanded > /tmp/$1-crate-source.txt popd if [ "$HOST_OSX" = "true" ]; then sed -i".original" "1i\\ @@ -191,12 +191,12 @@ if [ "$2" = "true" ]; then add_crate "lightning-persister" "lightning_persister" add_crate "lightning-background-processor" "lightning_background_processor" --features=std add_crate "lightning-invoice" "lightning_invoice" --features=std - add_crate "lightning-rapid-gossip-sync" "lightning_rapid_gossip_sync" + add_crate "lightning-rapid-gossip-sync" "lightning_rapid_gossip_sync" --features=std CARGO_BUILD_ARGS="--features=std" else add_crate lightning lightning --features=no-std drop_crate "lightning-persister" - add_crate "lightning-background-processor" "lightning_background_processor" + add_crate "lightning-background-processor" "lightning_background_processor" --features=no-std add_crate "lightning-rapid-gossip-sync" "lightning_rapid_gossip_sync" --features=no-std add_crate "lightning-invoice" "lightning_invoice" --features=no-std CARGO_BUILD_ARGS="--features=no-std" @@ -231,6 +231,9 @@ cbindgen -v --config cbindgen.toml -o include/lightning.h >/dev/null 2>&1 if is_gnu_sed; then sed -i 's/typedef LDKnative.*Import.*LDKnative.*;//g' include/lightning.h + # UnsafeCell is `repr(transparent)` so should be ignored here + sed -i 's/LDKUnsafeCell<\(.*\)> /struct \1 /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 /#include "ldk_rust_types.h"/g' include/lightning.h @@ -238,6 +241,9 @@ else # OSX sed is for some reason not compatible with GNU sed sed -i '' 's/typedef LDKnative.*Import.*LDKnative.*;//g' include/lightning.h + # UnsafeCell is `repr(transparent)` so should be ignored by cbindgen + sed -i '' 's/LDKUnsafeCell<\(.*\)> /struct \1 /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 /#include "ldk_rust_types.h"/g' include/lightning.h @@ -450,8 +456,8 @@ if [ "$CLANG" != "" -a "$CLANGPP" = "" ]; then echo "You should create a symlink called clang++-$RUSTC_LLVM_V pointing to $CLANG in $(dirname $CLANG)" fi -# Finally, if we're on OSX or on Linux, build the final debug binary with address sanitizer (and leave it there) -if [ "$HOST_PLATFORM" = "x86_64-unknown-linux-gnu" -o "$HOST_PLATFORM" = "x86_64-apple-darwin" ]; then +# Finally, if we're on Linux, build the final debug binary with address sanitizer (and leave it there) +if [ "$HOST_PLATFORM" = "x86_64-unknown-linux-gnu" ]; then if [ "$CLANGPP" != "" ]; then if is_gnu_sed; then sed -i.bk 's/,"cdylib"]/]/g' Cargo.toml @@ -460,9 +466,6 @@ if [ "$HOST_PLATFORM" = "x86_64-unknown-linux-gnu" -o "$HOST_PLATFORM" = "x86_64 sed -i .bk 's/,"cdylib"]/]/g' Cargo.toml fi - if [ "$CFLAGS_aarch64_apple_darwin" != "" -a "$HOST_OSX" = "true" ]; then - RUSTFLAGS="$BASE_RUSTFLAGS -C target-cpu=apple-a14" RUSTC_BOOTSTRAP=1 cargo rustc $CARGO_BUILD_ARGS --target aarch64-apple-darwin -v -- -Zsanitizer=address -Cforce-frame-pointers=yes || ( mv Cargo.toml.bk Cargo.toml; exit 1) - fi RUSTFLAGS="$RUSTFLAGS --cfg=test_mod_pointers" RUSTC_BOOTSTRAP=1 cargo rustc $CARGO_BUILD_ARGS -v -- -Zsanitizer=address -Cforce-frame-pointers=yes || ( mv Cargo.toml.bk Cargo.toml; exit 1) mv Cargo.toml.bk Cargo.toml @@ -484,7 +487,7 @@ if [ "$HOST_PLATFORM" = "x86_64-unknown-linux-gnu" -o "$HOST_PLATFORM" = "x86_64 echo "WARNING: Please install clang-$RUSTC_LLVM_V and clang++-$RUSTC_LLVM_V to build with address sanitizer" fi else - echo "WARNING: Can't use address sanitizer on non-Linux, non-OSX non-x86 platforms" + echo "WARNING: Can't use address sanitizer on non-Linux, non-x86 platforms" fi # Now build with LTO on on both C++ and rust, but without cross-language LTO: