Skip to content

Commit 10350b9

Browse files
committed
fix absolute path detection, select xcode 13.2.1 for everything, and use local paths for lipo input
1 parent a50c519 commit 10350b9

File tree

1 file changed

+44
-19
lines changed

1 file changed

+44
-19
lines changed

xcode/build-libldk-manual.sh

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,35 @@ set -e # stop execution upon the first error
2525

2626
C_BINDINGS_SOURCE_DIRECTORY="$(cd ${LDK_DIRECTORY}; pwd)/lightning-c-bindings"
2727

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 )"
3030

31+
BUILT_PRODUCTS_DIR="${BASEDIR}/binaries" # directory to copy the shared library and headers into
32+
BUILD_LOG_PATH="${BASEDIR}/build_libldk.log"
3133
TARGET_NAME="libldk"
3234

35+
# initialize the build log
36+
echo -n "" > $BUILD_LOG_PATH
37+
3338
declare -a platforms=("iphoneos" "iphonesimulator" "macosx" "macosx")
3439
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" )
3641

3742
for (( i=0; i<4; i++ ));
3843
do
3944
PLATFORM_NAME=${platforms[$i]}
45+
PLATFORM_HUMAN_NAME="${PLATFORM_NAME}"
4046
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/
4351

4452
if [[ $PLATFORM_NAME = "macosx" ]]; then
4553
if [[ $LLVM_TARGET_TRIPLE_SUFFIX = "-macabi" ]]; then
4654
RUST_TARGET_OS="ios-macabi"
55+
PLATFORM_HUMAN_NAME="catalyst"
56+
# sudo xcode-select --switch /Library/Developer/CommandLineTools
4757
else
4858
RUST_TARGET_OS="darwin"
4959
fi
@@ -53,26 +63,35 @@ do
5363

5464
# Clean any pre-existing static libraries that doesn't align with what we're currently trying to build
5565

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"
5880

5981
for ARCH in $ARCHS
6082
do
6183
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
6388
if [[ $(lipo -info "${CURRENT_ARCH_BINARY_DIR}/${TARGET_NAME}" 2>&1) != *"${ARCH}"* ]]; then
89+
# remove the pre-lipo/raw/lipo-input binary
6490
rm -f "${CURRENT_ARCH_BINARY_DIR}/${TARGET_NAME}"
91+
# why do we need to remove it? Who knows
6592
fi
6693
done
6794

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-
7695
pushd $C_BINDINGS_SOURCE_DIRECTORY
7796
export RUSTFLAGS='--cfg=c_bindings'
7897

@@ -96,18 +115,24 @@ do
96115
fi
97116
fi
98117

99-
echo "BUILDING ${RUST_ARCH}-apple-${RUST_TARGET_OS}"
100-
118+
echo "BUILDING ${RUST_ARCH}-apple-${RUST_TARGET_OS}" >> $BUILD_LOG_PATH
101119
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
103121

104122
mkdir -p "${CURRENT_ARCH_BINARY_DIR}"
105123
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")
106125
done
107126

108127
rustup override unset
109128

110129
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
111133
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
112137

113138
done

0 commit comments

Comments
 (0)