@@ -121,9 +121,74 @@ if [ "$2" = "c_sharp" ]; then
121121 $COMPILE $LINK -o liblightningjni_debug$LDK_TARGET_SUFFIX .so -g -fsanitize=address -shared-libasan -rdynamic -I" $1 " /lightning-c-bindings/include/ $2 c_sharp/bindings.c " $1 " /lightning-c-bindings/target/$LDK_TARGET /debug/libldk.a -lm
122122 else
123123 $COMPILE -o bindings.o -c -flto -O3 -I" $1 " /lightning-c-bindings/include/ $2 c_sharp/bindings.c
124- $COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX .so -Wl,--version-script=c_sharp/libcode.version - 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
124+ $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
125125 llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX .so
126126 fi
127+ elif [ " $2 " = " python" ]; then
128+ TARGET_STRING=" $LDK_TARGET "
129+ if [ " $TARGET_STRING " = " " ]; then
130+ # We assume clang-style $CC --version here, but worst-case we just get an empty suffix
131+ TARGET_STRING=" $( $CC --version | grep Target | awk ' { print $2 }' ) "
132+ fi
133+ case " $TARGET_STRING " in
134+ " x86_64-pc-linux" * )
135+ LDK_TARGET_SUFFIX=" _Linux-amd64"
136+ LDK_JAR_TARGET=true
137+ ;;
138+ " x86_64-apple-darwin" * )
139+ LDK_TARGET_SUFFIX=" _MacOSX-x86_64"
140+ LDK_JAR_TARGET=true
141+ ;;
142+ " aarch64-apple-darwin" * )
143+ LDK_TARGET_CPU=" apple-a14"
144+ LDK_TARGET_SUFFIX=" _MacOSX-aarch64"
145+ LDK_JAR_TARGET=true
146+ ;;
147+ * )
148+ LDK_TARGET_SUFFIX=" _${TARGET_STRING} "
149+ esac
150+ if [ " $LDK_TARGET_CPU " = " " ]; then
151+ LDK_TARGET_CPU=" sandybridge"
152+ fi
153+
154+ echo " Creating Python bindings..."
155+ mkdir -p python/src/{enums,structs,impl}
156+ rm -f python/src/{enums,structs,impl}/* .py
157+ ./genbindings.py " ./lightning.h" python/src/impl python/src python/ $DEBUG_ARG python $4
158+ rm -f python/bindings.c
159+ if [ " $3 " = " true" ]; then
160+ echo " #define LDK_DEBUG_BUILD" > python/bindings.c
161+ elif [ " $3 " = " leaks" ]; then
162+ # For leak checking we use release libldk which doesn't expose
163+ # __unmangle_inner_ptr, but the C code expects to be able to call it.
164+ echo " #define __unmangle_inner_ptr(a) (a)" > python/bindings.c
165+ fi
166+ echo " #define LDKCVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ LDKCVec_TransactionOutputsZ" >> python/bindings.c
167+ echo " #define CVec_C2Tuple_TxidCVec_C2Tuple_u32TxOutZZZZ_free CVec_TransactionOutputsZ_free" >> python/bindings.c
168+ cat python/bindings.c.body >> python/bindings.c
169+
170+ IS_MAC=false
171+ [ " $( $CC --version | grep apple-darwin) " != " " ] && IS_MAC=true
172+ IS_APPLE_CLANG=false
173+ [ " $( $CC --version | grep " Apple clang version" ) " != " " ] && IS_APPLE_CLANG=true
174+
175+ echo " Building Python bindings..."
176+ COMPILE=" $COMMON_COMPILE -mcpu=$LDK_TARGET_CPU -Isrc/main/jni -pthread -fPIC"
177+ LINK=" -ldl -shared"
178+ [ " $IS_MAC " = " false" ] && LINK=" $LINK -Wl,--no-undefined"
179+ [ " $IS_MAC " = " true" ] && COMPILE=" $COMPILE -mmacosx-version-min=10.9"
180+ [ " $IS_MAC " = " true" -a " $IS_APPLE_CLANG " = " false" ] && LINK=" $LINK -fuse-ld=lld"
181+ [ " $IS_MAC " = " true" -a " $IS_APPLE_CLANG " = " false" ] && echo " WARNING: Need at least upstream clang 13!"
182+ [ " $IS_MAC " = " false" -a " $3 " != " false" ] && LINK=" $LINK -Wl,-wrap,calloc -Wl,-wrap,realloc -Wl,-wrap,malloc -Wl,-wrap,free"
183+
184+ exit 0 # Sadly compilation doesn't currently work
185+ if [ " $3 " = " true" ]; then
186+ $COMPILE $LINK -o liblightningpython_debug$LDK_TARGET_SUFFIX .so -g -fsanitize=address -shared-libasan -rdynamic -I" $1 " /lightning-c-bindings/include/ $2 c_sharp/bindings.c " $1 " /lightning-c-bindings/target/$LDK_TARGET /debug/libldk.a -lm
187+ else
188+ $COMPILE -o bindings.o -c -flto -O3 -I" $1 " /lightning-c-bindings/include/ $2 c_sharp/bindings.c
189+ $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
190+ llvm-strip liblightningpython_release$LDK_TARGET_SUFFIX .so
191+ fi
127192elif [ " $2 " = " wasm" ]; then
128193 echo " Creating TS bindings..."
129194 mkdir -p ts/{enums,structs}
0 commit comments