@@ -25,25 +25,35 @@ set -e # stop execution upon the first error
25
25
26
26
C_BINDINGS_SOURCE_DIRECTORY=" $( cd ${LDK_DIRECTORY} ; pwd) /lightning-c-bindings"
27
27
28
- BASEDIR= $( dirname " $0 " )
29
- BUILT_PRODUCTS_DIR =" ${BASEDIR} /binaries " # directory to copy the shared library and headers into
28
+ # https://stackoverflow.com/a/4774063/299711
29
+ BASEDIR =" $( cd -- " $( dirname " $0 " ) " > /dev/null 2>&1 ; pwd -P ) "
30
30
31
+ BUILT_PRODUCTS_DIR=" ${BASEDIR} /binaries" # directory to copy the shared library and headers into
32
+ BUILD_LOG_PATH=" ${BASEDIR} /build_libldk.log"
31
33
TARGET_NAME=" libldk"
32
34
35
+ # initialize the build log
36
+ echo -n " " > $BUILD_LOG_PATH
37
+
33
38
declare -a platforms=(" iphoneos" " iphonesimulator" " macosx" " macosx" )
34
39
declare -a llvm_target_triple_suffixes=(" " " -simulator" " " " -macabi" )
35
- declare -a architectures=( " arm64" " arm64, x86_64" " arm64, x86_64" " arm64, x86_64" )
40
+ declare -a architectures=( " arm64" " arm64 x86_64" " arm64 x86_64" " arm64 x86_64" )
36
41
37
42
for (( i= 0 ; i< 4 ; i++ )) ;
38
43
do
39
44
PLATFORM_NAME=${platforms[$i]}
45
+ PLATFORM_HUMAN_NAME=" ${PLATFORM_NAME} "
40
46
LLVM_TARGET_TRIPLE_SUFFIX=${llvm_target_triple_suffixes[$i]}
41
- concatenated_architectures=${architectures[$i]}
42
- IFS=' ,' read -r -a ARCHS <<< " ${concatenated_architectures}"
47
+ ARCHS=${architectures[$i]}
48
+
49
+ # sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
50
+ sudo xcode-select -s /Applications/Xcode\ 13.2.1.app/Contents/Developer/
43
51
44
52
if [[ $PLATFORM_NAME = " macosx" ]]; then
45
53
if [[ $LLVM_TARGET_TRIPLE_SUFFIX = " -macabi" ]]; then
46
54
RUST_TARGET_OS=" ios-macabi"
55
+ PLATFORM_HUMAN_NAME=" catalyst"
56
+ # sudo xcode-select --switch /Library/Developer/CommandLineTools
47
57
else
48
58
RUST_TARGET_OS=" darwin"
49
59
fi
53
63
54
64
# Clean any pre-existing static libraries that doesn't align with what we're currently trying to build
55
65
56
- INDIVIDUAL_ARCH_BINARY_DIR=" ${BUILT_PRODUCTS_DIR} /${PLATFORM_NAME} /raw"
57
- LIPO_BINARY_DIR=" ${BUILT_PRODUCTS_DIR} /${PLATFORM_NAME} /lipo"
66
+ if [[ $CONFIGURATION = " Debug" ]]; then
67
+ RUST_CONFIGURATION=" debug"
68
+ RUST_CONFIGURATION_FLAG=" "
69
+ else
70
+ RUST_CONFIGURATION=" release"
71
+ RUST_CONFIGURATION_FLAG=" --release"
72
+ fi
73
+
74
+ echo " Platform name: ${PLATFORM_NAME} " >> $BUILD_LOG_PATH
75
+ echo " Configuration: ${RUST_CONFIGURATION} " >> $BUILD_LOG_PATH
76
+ echo " LLVM Target Triple Suffix: ${LLVM_TARGET_TRIPLE_SUFFIX} " >> $BUILD_LOG_PATH
77
+
78
+ INDIVIDUAL_ARCH_BINARY_DIR=" ${BUILT_PRODUCTS_DIR} /${RUST_CONFIGURATION} /${PLATFORM_HUMAN_NAME} /raw"
79
+ LIPO_BINARY_DIR=" ${BUILT_PRODUCTS_DIR} /${RUST_CONFIGURATION} /${PLATFORM_HUMAN_NAME} /lipo"
58
80
59
81
for ARCH in $ARCHS
60
82
do
61
83
CURRENT_ARCH_BINARY_DIR=" ${INDIVIDUAL_ARCH_BINARY_DIR} /${ARCH} "
62
- echo " Current architecture directory: ${CURRENT_ARCH_BINARY_DIR} "
84
+ echo " Current architecture: ${ARCH} " >> $BUILD_LOG_PATH
85
+ echo " Current architecture lipo input directory: ${CURRENT_ARCH_BINARY_DIR} " >> $BUILD_LOG_PATH
86
+
87
+ # if whatever this weird lipo check is true
63
88
if [[ $( lipo -info " ${CURRENT_ARCH_BINARY_DIR} /${TARGET_NAME} " 2>&1 ) != * " ${ARCH} " * ]]; then
89
+ # remove the pre-lipo/raw/lipo-input binary
64
90
rm -f " ${CURRENT_ARCH_BINARY_DIR} /${TARGET_NAME} "
91
+ # why do we need to remove it? Who knows
65
92
fi
66
93
done
67
94
68
- if [[ $CONFIGURATION = " Debug" ]]; then
69
- RUST_CONFIGURATION=" debug"
70
- RUST_CONFIGURATION_FLAG=" "
71
- else
72
- RUST_CONFIGURATION=" release"
73
- RUST_CONFIGURATION_FLAG=" --release"
74
- fi
75
-
76
95
pushd $C_BINDINGS_SOURCE_DIRECTORY
77
96
export RUSTFLAGS=' --cfg=c_bindings'
78
97
96
115
fi
97
116
fi
98
117
99
- echo " BUILDING ${RUST_ARCH} -apple-${RUST_TARGET_OS} "
100
-
118
+ echo " BUILDING ${RUST_ARCH} -apple-${RUST_TARGET_OS} " >> $BUILD_LOG_PATH
101
119
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 " )
120
+ echo " Finished building $ {RUST_ARCH} -apple-${RUST_TARGET_OS} " >> $BUILD_LOG_PATH
103
121
104
122
mkdir -p " ${CURRENT_ARCH_BINARY_DIR} "
105
123
cp " $C_BINDINGS_SOURCE_DIRECTORY /target/${RUST_ARCH} -apple-${RUST_TARGET_OS} /${RUST_CONFIGURATION} /${TARGET_NAME} .a" " ${CURRENT_ARCH_BINARY_DIR} "
124
+ EXECUTABLES+=(" ${CURRENT_ARCH_BINARY_DIR} /${TARGET_NAME} .a" )
106
125
done
107
126
108
127
rustup override unset
109
128
110
129
mkdir -p " ${LIPO_BINARY_DIR} "
130
+
131
+ echo " Current platform lipo output directory: ${LIPO_BINARY_DIR} " >> $BUILD_LOG_PATH
132
+ echo " LIPOING ${PLATFORM_NAME} " >> $BUILD_LOG_PATH
111
133
xcrun --sdk $PLATFORM_NAME lipo -create " ${EXECUTABLES[@]} " -output " ${LIPO_BINARY_DIR} /${TARGET_NAME} .a"
134
+ echo " Finished lipoing ${PLATFORM_NAME} " >> $BUILD_LOG_PATH
135
+
136
+ echo " " >> $BUILD_LOG_PATH
112
137
113
138
done
0 commit comments