@@ -28,76 +28,86 @@ C_BINDINGS_SOURCE_DIRECTORY="$(cd ${LDK_DIRECTORY}; pwd)/lightning-c-bindings"
28
28
BASEDIR=$( dirname " $0 " )
29
29
BUILT_PRODUCTS_DIR=" ${BASEDIR} /binaries" # directory to copy the shared library and headers into
30
30
31
-
32
31
TARGET_NAME=" libldk"
33
32
34
- if [[ $PLATFORM_NAME = " " ]]; then
35
- # default for building with xcodebuild
36
- PLATFORM_NAME=" macosx"
37
- fi
33
+ declare -a platforms=(" iphoneos" " iphonesimulator" " macosx" " macosx" )
34
+ declare -a llvm_target_triple_suffixes=(" " " -simulator" " " " -macabi" )
35
+ declare -a architectures=( " arm64" " arm64,x86_64" " arm64,x86_64" " arm64,x86_64" )
38
36
39
- if [[ $PLATFORM_NAME = " macosx" ]]; then
40
- if [[ $LLVM_TARGET_TRIPLE_SUFFIX = " -macabi" ]]; then
41
- RUST_TARGET_OS=" ios-macabi"
37
+ for (( i= 0 ; i< 4 ; i++ )) ;
38
+ do
39
+ PLATFORM_NAME=${platforms[$i]}
40
+ LLVM_TARGET_TRIPLE_SUFFIX=${llvm_target_triple_suffixes[$i]}
41
+ concatenated_architectures=${architectures[$i]}
42
+ IFS=' ,' read -r -a ARCHS <<< " ${concatenated_architectures}"
43
+
44
+ if [[ $PLATFORM_NAME = " macosx" ]]; then
45
+ if [[ $LLVM_TARGET_TRIPLE_SUFFIX = " -macabi" ]]; then
46
+ RUST_TARGET_OS=" ios-macabi"
47
+ else
48
+ RUST_TARGET_OS=" darwin"
49
+ fi
42
50
else
43
- RUST_TARGET_OS=" darwin "
51
+ RUST_TARGET_OS=" ios "
44
52
fi
45
- else
46
- echo " PLATFORM_NAME ${PLATFORM_NAME} "
47
- RUST_TARGET_OS=" ios"
48
- fi
49
53
50
- # Clean any pre-existing static libraries that doesn't align with what we're currently trying to build
54
+ # Clean any pre-existing static libraries that doesn't align with what we're currently trying to build
51
55
52
- declare -a ARCHS=(" arm64" )
56
+ INDIVIDUAL_ARCH_BINARY_DIR=" ${BUILT_PRODUCTS_DIR} /${PLATFORM_NAME} /raw"
57
+ LIPO_BINARY_DIR=" ${BUILT_PRODUCTS_DIR} /${PLATFORM_NAME} /lipo"
53
58
54
- for ARCH in $ARCHS
55
- do
56
- if [[ $( lipo -info " ${BUILT_PRODUCTS_DIR} /${TARGET_NAME} " 2>&1 ) != * " ${ARCH} " * ]]; then
57
- rm -f " ${BUILT_PRODUCTS_DIR} /${TARGET_NAME} "
59
+ for ARCH in $ARCHS
60
+ do
61
+ CURRENT_ARCH_BINARY_DIR=" ${INDIVIDUAL_ARCH_BINARY_DIR} /${ARCH} "
62
+ echo " Current architecture directory: ${CURRENT_ARCH_BINARY_DIR} "
63
+ if [[ $( lipo -info " ${CURRENT_ARCH_BINARY_DIR} /${TARGET_NAME} " 2>&1 ) != * " ${ARCH} " * ]]; then
64
+ rm -f " ${CURRENT_ARCH_BINARY_DIR} /${TARGET_NAME} "
65
+ fi
66
+ done
67
+
68
+ if [[ $CONFIGURATION = " Debug" ]]; then
69
+ RUST_CONFIGURATION=" debug"
70
+ RUST_CONFIGURATION_FLAG=" "
71
+ else
72
+ RUST_CONFIGURATION=" release"
73
+ RUST_CONFIGURATION_FLAG=" --release"
58
74
fi
59
- done
60
75
61
- if [[ $CONFIGURATION = " Debug" ]]; then
62
- RUST_CONFIGURATION=" debug"
63
- RUST_CONFIGURATION_FLAG=" "
64
- else
65
- RUST_CONFIGURATION=" release"
66
- RUST_CONFIGURATION_FLAG=" --release"
67
- fi
76
+ pushd $C_BINDINGS_SOURCE_DIRECTORY
77
+ export RUSTFLAGS=' --cfg=c_bindings'
78
+
79
+ rustup override set nightly
80
+ cargo clean
81
+
82
+ EXECUTABLES=()
83
+ for ARCH in $ARCHS
84
+ do
85
+ RUST_ARCH=$ARCH
86
+ CURRENT_ARCH_BINARY_DIR=" ${INDIVIDUAL_ARCH_BINARY_DIR} /${ARCH} "
87
+ if [[ $RUST_ARCH = " arm64" ]]; then
88
+ RUST_ARCH=" aarch64"
89
+ # This is because iOS Simulator builds for x86_64 is `x86_64-apple-ios`, while arm64 is `aarch64-apple-ios-sim`
90
+ if [[ $PLATFORM_NAME = " iphonesimulator" ]]; then
91
+ RUST_TARGET_OS=" ios-sim"
92
+ fi
93
+ else
94
+ if [[ $PLATFORM_NAME = " iphonesimulator" ]]; then
95
+ RUST_TARGET_OS=" ios"
96
+ fi
97
+ fi
68
98
69
- pushd $C_BINDINGS_SOURCE_DIRECTORY
70
- export RUSTFLAGS=' --cfg=c_bindings'
99
+ echo " BUILDING ${RUST_ARCH} -apple-${RUST_TARGET_OS} "
71
100
72
- rustup override set nightly
73
- cargo clean
101
+ cargo build -Z build-std=panic_abort,std --features " std " --target " ${RUST_ARCH} -apple- ${RUST_TARGET_OS} " $RUST_CONFIGURATION_FLAG
102
+ EXECUTABLES+=( " $C_BINDINGS_SOURCE_DIRECTORY /target/ ${RUST_ARCH} -apple- ${RUST_TARGET_OS} / ${RUST_CONFIGURATION} / ${TARGET_NAME} .a " )
74
103
75
- EXECUTABLES=()
76
- for ARCH in $ARCHS
77
- do
78
- RUST_ARCH=$ARCH
79
- if [[ $RUST_ARCH = " arm64" ]]; then
80
- RUST_ARCH=" aarch64"
81
- # This is because iOS Simulator builds for x86_64 is `x86_64-apple-ios`, while arm64 is `aarch64-apple-ios-sim`
82
- if [[ $PLATFORM_NAME = " iphonesimulator" ]]; then
83
- RUST_TARGET_OS=" ios-sim"
84
- fi
85
- else
86
- if [[ $PLATFORM_NAME = " iphonesimulator" ]]; then
87
- RUST_TARGET_OS=" ios"
88
- fi
89
- fi
104
+ mkdir -p " ${CURRENT_ARCH_BINARY_DIR} "
105
+ cp " $C_BINDINGS_SOURCE_DIRECTORY /target/${RUST_ARCH} -apple-${RUST_TARGET_OS} /${RUST_CONFIGURATION} /${TARGET_NAME} .a" " ${CURRENT_ARCH_BINARY_DIR} "
106
+ done
90
107
91
- echo " BUILDING ${RUST_ARCH} -apple- ${RUST_TARGET_OS} "
108
+ rustup override unset
92
109
93
- cargo build -Z build-std=panic_abort,std --features " std " --target " ${RUST_ARCH} -apple- ${RUST_TARGET_OS} " $RUST_CONFIGURATION_FLAG
94
- EXECUTABLES+=( " $C_BINDINGS_SOURCE_DIRECTORY /target/ ${RUST_ARCH} -apple- ${RUST_TARGET_OS } /${RUST_CONFIGURATION} / ${ TARGET_NAME} .a" )
110
+ mkdir -p " ${LIPO_BINARY_DIR} "
111
+ xcrun --sdk $PLATFORM_NAME lipo -create " ${EXECUTABLES[@]} " -output " ${LIPO_BINARY_DIR } /${TARGET_NAME} .a"
95
112
96
- mkdir -p " ${BUILT_PRODUCTS_DIR} /${ARCH} "
97
- cp " $C_BINDINGS_SOURCE_DIRECTORY /target/${RUST_ARCH} -apple-${RUST_TARGET_OS} /${RUST_CONFIGURATION} /${TARGET_NAME} .a" " ${BUILT_PRODUCTS_DIR} /${ARCH} "
98
113
done
99
-
100
- rustup override unset
101
-
102
- mkdir -p " ${BUILT_PRODUCTS_DIR} "
103
- xcrun --sdk $PLATFORM_NAME lipo -create " ${EXECUTABLES[@]} " -output " ${PROJECT_DIR} /${TARGET_NAME} .a"
0 commit comments