@@ -75,7 +75,10 @@ if [ "$LDK_TARGET_CPU" = "" ]; then
75
75
fi
76
76
77
77
COMMON_COMPILE=" $CC -std=c11 -Wall -Wextra -Wno-unused-parameter -Wno-ignored-qualifiers -Wno-unused-function -Wno-nullability-completeness -Wno-pointer-sign -Wdate-time -ffile-prefix-map=$( pwd) ="
78
- [ " $IS_MAC " = " true" -a " $2 " != " wasm" ] && COMMON_COMPILE=" $COMMON_COMPILE --target=$TARGET_STRING -mcpu=$LDK_TARGET_CPU "
78
+ COMMON_CC=" "
79
+ [[ " $TARGET_STRING " != " x86" * ]] && COMMON_CC=" $COMMON_CC --target=$TARGET_STRING -mcpu=$LDK_TARGET_CPU "
80
+ [[ " $TARGET_STRING " = " x86" * ]] && COMMON_CC=" $COMMON_CC --target=$TARGET_STRING -march=$LDK_TARGET_CPU -mtune=$LDK_TARGET_CPU "
81
+ [ " $IS_MAC " = " true" -a " $MACOS_SDK " != " " ] && COMMON_COMPILE=" $COMMON_COMPILE -isysroot $MACOS_SDK "
79
82
80
83
DEBUG_ARG=" $3 "
81
84
if [ " $3 " = " leaks" ]; then
@@ -106,7 +109,10 @@ if [ "$2" = "c_sharp" ]; then
106
109
echo " Creating C# bindings..."
107
110
mkdir -p c_sharp/src/org/ldk/{enums,structs,impl}
108
111
rm -f c_sharp/src/org/ldk/{enums,structs,impl}/* .cs
109
- ./genbindings.py " ./lightning.h" c_sharp/src/org/ldk/impl c_sharp/src/org/ldk c_sharp/ $DEBUG_ARG c_sharp $4 $TARGET_STRING
112
+ GEN_PLAT=" c_sharp-linux"
113
+ [ " $IS_WIN " = " true" ] && GEN_PLAT=" c_sharp-win"
114
+ [ " $IS_MAC " = " true" ] && GEN_PLAT=" c_sharp-darwin"
115
+ ./genbindings.py " ./lightning.h" c_sharp/src/org/ldk/impl c_sharp/src/org/ldk c_sharp/ $DEBUG_ARG $GEN_PLAT $4 $TARGET_STRING
110
116
rm -f c_sharp/bindings.c
111
117
if [ " $3 " = " true" ]; then
112
118
echo " #define LDK_DEBUG_BUILD" > c_sharp/bindings.c
@@ -119,11 +125,6 @@ if [ "$2" = "c_sharp" ]; then
119
125
cat header.c >> c_sharp/bindings.c
120
126
cat c_sharp/bindings.c.body >> c_sharp/bindings.c
121
127
122
- IS_MAC=false
123
- [ " $( $CC --version | grep apple-darwin) " != " " ] && IS_MAC=true
124
- IS_APPLE_CLANG=false
125
- [ " $( $CC --version | grep " Apple clang version" ) " != " " ] && IS_APPLE_CLANG=true
126
-
127
128
if is_gnu_sed; then
128
129
sed -i " s/<version>.*<\/version>/<version>${LDK_GARBAGECOLLECTED_GIT_OVERRIDE: 1: 100} <\/version>/g" c_sharp/packaging_artifacts/org.ldk.nuspec
129
130
sed -i " s/<version>.*<\/version>/<version>${LDK_GARBAGECOLLECTED_GIT_OVERRIDE: 1: 100} <\/version>/g" c_sharp/packaging_artifacts/package/services/metadata/core-properties/ldk.psmdcp
@@ -143,14 +144,16 @@ if [ "$2" = "c_sharp" ]; then
143
144
fi
144
145
145
146
echo " Building C# bindings..."
146
- COMPILE=" $COMMON_COMPILE -pthread -fPIC"
147
- LINK=" -shared"
147
+ COMPILE=" $COMMON_COMPILE $COMMON_CC -pthread -fPIC"
148
+ LINK=" $COMMON_CC -shared"
148
149
[ " $IS_WIN " = " false" ] && LINK=" $LINK -ldl"
149
150
[ " $IS_MAC " = " false" ] && LINK=" $LINK -Wl,--no-undefined"
150
151
[ " $IS_MAC " = " true" ] && COMPILE=" $COMPILE -mmacosx-version-min=10.9"
151
152
[ " $IS_MAC " = " true" -a " $IS_APPLE_CLANG " = " false" ] && LINK=" $LINK -fuse-ld=lld"
152
153
[ " $IS_MAC " = " true" -a " $IS_APPLE_CLANG " = " false" ] && echo " WARNING: Need at least upstream clang 13!"
153
154
[ " $IS_MAC " = " false" -a " $3 " != " false" ] && LINK=" $LINK -Wl,-wrap,calloc -Wl,-wrap,realloc -Wl,-wrap,malloc -Wl,-wrap,free"
155
+ [ " $IS_WIN " = " true" ] && LINK=" $LINK -lbcrypt -lntdll -static-libgcc"
156
+ [ " $IS_WIN " = " true" ] && COMPILE=" $COMPILE -I/usr/x86_64-w64-mingw32/sys-root/mingw/include/ -I/usr/x86_64-w64-mingw32/include/"
154
157
155
158
if [ " $3 " = " true" ]; then
156
159
$COMPILE $LINK -o libldkcsharp_debug$LDK_TARGET_SUFFIX .so -g -fsanitize=address -shared-libasan -rdynamic -I" $1 " /lightning-c-bindings/include/ c_sharp/bindings.c " $1 " /lightning-c-bindings/target/$LDK_TARGET /debug/libldk.a -lm
@@ -159,8 +162,6 @@ if [ "$2" = "c_sharp" ]; then
159
162
[ " $IS_APPLE_CLANG " = " false" ] && COMPILE=" $COMPILE -flto"
160
163
[ " $IS_MAC " = " false" ] && LINK=" $LINK -Wl,--no-undefined"
161
164
[ " $IS_WIN " = " false" ] && LINK=" $LINK -Wl,--lto-O3"
162
- [ " $IS_WIN " = " true" ] && LINK=" $LINK --target=x86_64-pc-windows-gnu -L/usr/lib/gcc/x86_64-w64-mingw32/12-win32/ -lbcrypt -lntdll -static-libgcc"
163
- [ " $IS_WIN " = " true" ] && COMPILE=" $COMPILE --target=x86_64-pc-windows-gnu"
164
165
LDK_LIB=" $1 " /lightning-c-bindings/target/$LDK_TARGET /release/libldk.a
165
166
if [ " $IS_MAC " = " false" -a " $IS_WIN " = " false" -a " $4 " = " false" ]; then
166
167
LINK=" $LINK -Wl,--version-script=c_sharp/libcode.version -Wl,--build-id=0x0000000000000000"
@@ -170,7 +171,7 @@ if [ "$2" = "c_sharp" ]; then
170
171
# so we have to build with faketime.
171
172
faketime -f " 2021-01-01 00:00:00" $COMPILE -o bindings.o -c -O3 -I" $1 " /lightning-c-bindings/include/ c_sharp/bindings.c
172
173
faketime -f " 2021-01-01 00:00:00" $COMPILE $LINK -o libldkcsharp_release$LDK_TARGET_SUFFIX .so -O3 bindings.o $LDK_LIB -lm
173
- [ " $IS_APPLE_CLANG " != " true" ] && llvm-strip libldkcsharp_release$LDK_TARGET_SUFFIX .so
174
+ [ " $IS_APPLE_CLANG " != " true" ] && llvm-strip -R .llvmbc -R .llvmcmd libldkcsharp_release$LDK_TARGET_SUFFIX .so
174
175
175
176
if [ " $LDK_JAR_TARGET " = " true" ]; then
176
177
# Copy resulting native binary for inclusion in release nuget zip
@@ -210,8 +211,8 @@ elif [ "$2" = "python" ]; then
210
211
[ " $( $CC --version | grep " Apple clang version" ) " != " " ] && IS_APPLE_CLANG=true
211
212
212
213
echo " Building Python bindings..."
213
- COMPILE=" $COMMON_COMPILE -Isrc/main/jni -pthread -fPIC"
214
- LINK=" -ldl -shared"
214
+ COMPILE=" $COMMON_COMPILE $COMMON_CC -Isrc/main/jni -pthread -fPIC"
215
+ LINK=" $COMMON_CC -ldl -shared"
215
216
[ " $IS_MAC " = " false" ] && LINK=" $LINK -Wl,--no-undefined"
216
217
[ " $IS_MAC " = " true" ] && COMPILE=" $COMPILE -mmacosx-version-min=10.9"
217
218
[ " $IS_MAC " = " true" -a " $IS_APPLE_CLANG " = " false" ] && LINK=" $LINK -fuse-ld=lld"
@@ -224,7 +225,7 @@ elif [ "$2" = "python" ]; then
224
225
else
225
226
$COMPILE -o bindings.o -c -flto -O3 -I" $1 " /lightning-c-bindings/include/ $2 c_sharp/bindings.c
226
227
$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
227
- [ " $IS_APPLE_CLANG " != " true" ] && llvm-strip liblightningpython_release$LDK_TARGET_SUFFIX .so
228
+ [ " $IS_APPLE_CLANG " != " true" ] && llvm-strip -R .llvmbc -R .llvmcmd liblightningpython_release$LDK_TARGET_SUFFIX .so
228
229
fi
229
230
elif [ " $2 " = " wasm" ]; then
230
231
echo " Creating TS bindings..."
@@ -250,7 +251,7 @@ elif [ "$2" = "wasm" ]; then
250
251
cat ts/bindings.c.body >> ts/bindings.c
251
252
252
253
echo " Building TS bindings..."
253
- COMPILE=" $COMMON_COMPILE -flto -Wl,--no-entry -nostdlib --target=wasm32-wasi -Wl,-z -Wl,stack-size=$(( 8 * 1024 * 1024 )) -Wl,--initial-memory=$(( 16 * 1024 * 1024 )) -Wl,--max-memory=$(( 1024 * 1024 * 1024 )) -Wl,--global-base=4096"
254
+ COMPILE=" $COMMON_COMPILE $COMMON_CC -flto -Wl,--no-entry -nostdlib --target=wasm32-wasi -Wl,-z -Wl,stack-size=$(( 8 * 1024 * 1024 )) -Wl,--initial-memory=$(( 16 * 1024 * 1024 )) -Wl,--max-memory=$(( 1024 * 1024 * 1024 )) -Wl,--global-base=4096"
254
255
# We only need malloc and assert/abort, but for now just use WASI for those:
255
256
EXTRA_LINK=/usr/lib/wasm32-wasi/libc.a
256
257
[ " $3 " != " false" ] && COMPILE=" $COMPILE -Wl,-wrap,calloc -Wl,-wrap,realloc -Wl,-wrap,reallocarray -Wl,-wrap,malloc -Wl,-wrap,aligned_alloc -Wl,-wrap,free"
317
318
rm src/main/java/org/ldk/enums/* .class src/main/java/org/ldk/impl/bindings* .class
318
319
319
320
echo " Building Java bindings..."
320
- COMPILE=" $COMMON_COMPILE -Isrc/main/jni -pthread -fPIC"
321
- LINK=" -shared"
321
+ COMPILE=" $COMMON_COMPILE $COMMON_CC -Isrc/main/jni -pthread -fPIC"
322
+ LINK=" $COMMON_CC -shared"
322
323
[ " $IS_WIN " = " false" ] && LINK=" $LINK -ldl"
323
324
[ " $IS_MAC " = " false" ] && LINK=" $LINK -Wl,--no-undefined"
324
325
[ " $IS_MAC " = " true" ] && COMPILE=" $COMPILE -mmacosx-version-min=10.9"
340
341
341
342
$COMPILE -o bindings.o -c -O3 -I" $1 " /lightning-c-bindings/include/ $2 src/main/jni/bindings.c
342
343
$COMPILE $LINK -o liblightningjni_release$LDK_TARGET_SUFFIX .so -O3 $2 bindings.o $LDK_LIB -lm
343
- [ " $IS_APPLE_CLANG " != " true" ] && llvm-strip liblightningjni_release$LDK_TARGET_SUFFIX .so
344
+ [ " $IS_APPLE_CLANG " != " true" ] && llvm-strip -R .llvmbc -R .llvmcmd liblightningjni_release$LDK_TARGET_SUFFIX .so
344
345
345
346
if [ " $IS_MAC " = " false" -a " $4 " = " false" ]; then
346
347
GLIBC_SYMBS=" $( objdump -T liblightningjni_release$LDK_TARGET_SUFFIX .so | grep GLIBC_ | grep -v " GLIBC_2\.\(2\|3\)\(\.\|)\)" | grep -v " GLIBC_2.\(3\.4\|14\|17\|18\|25\|28\|29\|32\|33\|34\|\))" || echo) "
0 commit comments