X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=genbindings.sh;h=fbc237f74747507ee3406b31f49666593d21b983;hb=4be5c3517829f6547a7cf31240f9dadd13e1775a;hp=2f316030e61e211c960e099ad162fb146e481037;hpb=3a496e16c89d9193d4da3ad4fb93ffbe32a9fdb2;p=ldk-java diff --git a/genbindings.sh b/genbindings.sh index 2f316030..fbc237f7 100755 --- a/genbindings.sh +++ b/genbindings.sh @@ -68,11 +68,14 @@ fi cp "$1/lightning-c-bindings/include/lightning.h" ./ if is_gnu_sed; then - sed -i "s/TransactionOutputs/C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ/g" ./lightning.h + sed -i "s/TransactionOutputs/C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ/g" ./lightning.h else - # OSX sed is for some reason not compatible with GNU sed - sed -i '' "s/TransactionOutputs/C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZ/g" ./lightning.h + # OSX sed is for some reason not compatible with GNU sed + sed -i '' "s/TransactionOutputs/C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZ/g" ./lightning.h fi +echo "#define LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZZ LDKCVec_TransactionOutputsZ" > header.c +echo "#define CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZZ_free CVec_TransactionOutputsZ_free" >> header.c + if [ "$LDK_GARBAGECOLLECTED_GIT_OVERRIDE" = "" ]; then export LDK_GARBAGECOLLECTED_GIT_OVERRIDE=$(git describe --tag --dirty) @@ -96,8 +99,8 @@ if [ "$2" = "c_sharp" ]; then # __unmangle_inner_ptr, but the C code expects to be able to call it. echo "#define __unmangle_inner_ptr(a) (a)" > c_sharp/bindings.c fi - echo "#define LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ LDKCVec_TransactionOutputsZ" >> c_sharp/bindings.c - echo "#define CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free CVec_TransactionOutputsZ_free" >> c_sharp/bindings.c + cat header.c >> c_sharp/bindings.c + cat header.c >> c_sharp/bindings.c cat c_sharp/bindings.c.body >> c_sharp/bindings.c IS_MAC=false @@ -113,8 +116,6 @@ if [ "$2" = "c_sharp" ]; then mono-csc -o $MONO_COMPILE fi - mv ./-out:csharpldk.dll csharpldk.dll # Mono is braindead, apparently - echo "Building C# bindings..." COMPILE="$COMMON_COMPILE -Isrc/main/jni -pthread -fPIC" LINK="-ldl -shared" @@ -130,7 +131,7 @@ if [ "$2" = "c_sharp" ]; then else $COMPILE -o bindings.o -c -flto -O3 -I"$1"/lightning-c-bindings/include/ $2 c_sharp/bindings.c $COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX.so -flto -O3 -Wl,--lto-O3 -Wl,-O3 -Wl,--version-script=c_sharp/libcode.version -I"$1"/lightning-c-bindings/include/ $2 bindings.o "$1"/lightning-c-bindings/target/$LDK_TARGET/release/libldk.a -lm - llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so + [ "$IS_APPLE_CLANG" != "true" ] && llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so fi elif [ "$2" = "python" ]; then echo "Creating Python bindings..." @@ -145,8 +146,8 @@ elif [ "$2" = "python" ]; then # __unmangle_inner_ptr, but the C code expects to be able to call it. echo "#define __unmangle_inner_ptr(a) (a)" > python/bindings.c fi - echo "#define LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ LDKCVec_TransactionOutputsZ" >> python/bindings.c - echo "#define CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free CVec_TransactionOutputsZ_free" >> python/bindings.c + echo "#define LDKCVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZZ LDKCVec_TransactionOutputsZ" >> python/bindings.c + echo "#define CVec_C2Tuple_ThirtyTwoBytesCVec_C2Tuple_u32TxOutZZZZ_free CVec_TransactionOutputsZ_free" >> python/bindings.c cat python/bindings.c.body >> python/bindings.c IS_MAC=false @@ -169,7 +170,7 @@ elif [ "$2" = "python" ]; then else $COMPILE -o bindings.o -c -flto -O3 -I"$1"/lightning-c-bindings/include/ $2 c_sharp/bindings.c $COMPILE $LINK -o liblightningpython_release$LDK_TARGET_SUFFIX.so -Wl,--version-script=python/libcode.version -flto -O3 -Wl,--lto-O3 -Wl,-O3 -I"$1"/lightning-c-bindings/include/ $2 bindings.o "$1"/lightning-c-bindings/target/$LDK_TARGET/release/libldk.a -lm - llvm-strip liblightningpython_release$LDK_TARGET_SUFFIX.so + [ "$IS_APPLE_CLANG" != "true" ] && llvm-strip liblightningpython_release$LDK_TARGET_SUFFIX.so fi elif [ "$2" = "wasm" ]; then echo "Creating TS bindings..." @@ -191,8 +192,7 @@ elif [ "$2" = "wasm" ]; then # __unmangle_inner_ptr, but the C code expects to be able to call it. echo "#define __unmangle_inner_ptr(a) (a)" > ts/bindings.c fi - echo "#define LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ LDKCVec_TransactionOutputsZ" >> ts/bindings.c - echo "#define CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free CVec_TransactionOutputsZ_free" >> ts/bindings.c + cat header.c >> ts/bindings.c cat ts/bindings.c.body >> ts/bindings.c echo "Building TS bindings..." @@ -256,8 +256,8 @@ else # __unmangle_inner_ptr, but the C code expects to be able to call it. echo "#define __unmangle_inner_ptr(a) (a)" > src/main/jni/bindings.c fi - echo "#define LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ LDKCVec_TransactionOutputsZ" >> src/main/jni/bindings.c - echo "#define CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free CVec_TransactionOutputsZ_free" >> src/main/jni/bindings.c + cat header.c >> src/main/jni/bindings.c + cat header.c >> src/main/jni/bindings.c cat src/main/jni/bindings.c.body >> src/main/jni/bindings.c javac -h src/main/jni src/main/java/org/ldk/enums/*.java src/main/java/org/ldk/impl/*.java rm src/main/java/org/ldk/enums/*.class src/main/java/org/ldk/impl/bindings*.class @@ -273,6 +273,10 @@ else if [ "$3" = "true" ]; then $COMPILE $LINK -o liblightningjni_debug$LDK_TARGET_SUFFIX.so -g -fsanitize=address -shared-libasan -rdynamic -I"$1"/lightning-c-bindings/include/ $2 src/main/jni/bindings.c "$1"/lightning-c-bindings/target/$LDK_TARGET/debug/libldk.a -lm else + [ "$IS_MAC" = "false" ] && LINK="$LINK -Wl,--no-undefined -flto -Wl,-O3 -Wl,--lto-O3" + [ "$IS_MAC" = "false" ] && COMPILE="$COMPILE -flto" + [ "$IS_MAC" = "true" -a "$IS_APPLE_CLANG" = "false" ] && LINK="$LINK -flto -Wl,-O3 -Wl,--lto-O3" + [ "$IS_MAC" = "true" -a "$IS_APPLE_CLANG" = "false" ] && COMPILE="$COMPILE -flto" LDK_LIB="$1"/lightning-c-bindings/target/$LDK_TARGET/release/libldk.a if [ "$IS_MAC" = "false" -a "$4" = "false" ]; then LINK="$LINK -Wl,--version-script=libcode.version -fuse-ld=lld" @@ -316,9 +320,9 @@ else popd LDK_LIB="tmp/libldk.bc tmp/libldk.a" fi - $COMPILE -o bindings.o -c -flto -O3 -I"$1"/lightning-c-bindings/include/ $2 src/main/jni/bindings.c - $COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX.so -flto -Wl,--lto-O3 -Wl,-O3 -O3 -I"$1"/lightning-c-bindings/include/ $2 bindings.o $LDK_LIB -lm - llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so + $COMPILE -o bindings.o -c -O3 -I"$1"/lightning-c-bindings/include/ $2 src/main/jni/bindings.c + $COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX.so -O3 -I"$1"/lightning-c-bindings/include/ $2 bindings.o $LDK_LIB -lm + [ "$IS_APPLE_CLANG" != "true" ] && llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX.so if [ "$IS_MAC" = "false" -a "$4" = "false" ]; then GLIBC_SYMBS="$(objdump -T liblightningjni_release$LDK_TARGET_SUFFIX.so | grep GLIBC_ | grep -v "GLIBC_2\.2\." | grep -v "GLIBC_2\.3\(\.\| \)" | grep -v "GLIBC_2.\(14\|17\) " || echo)" if [ "$GLIBC_SYMBS" != "" ]; then