Skip to content

Commit

Permalink
Finally cleanup ios
Browse files Browse the repository at this point in the history
  • Loading branch information
OoLunar committed May 24, 2024
1 parent e968f4a commit bd7b32a
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 41 deletions.
58 changes: 23 additions & 35 deletions .github/scripts/apple-xcframework.sh
Original file line number Diff line number Diff line change
@@ -1,67 +1,55 @@
#! /bin/sh
#!/bin/sh

# Set up environment variables
export PREFIX="$(pwd)/libsodium-apple"
export LOG_FILE="${PREFIX}/tmp/build_log"
export XCODEDIR="$(xcode-select -p)"
export IOS64_PREFIX="${PREFIX}/tmp/ios64"
export IOS_VERSION_MIN="${IOS_VERSION_MIN-"9.0.0"}"

# Determine number of processors
NPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null)
PROCESSORS=${NPROCESSORS:-3}

# Function to generate Swift module map
swift_module_map() {
echo 'module Clibsodium {'
echo ' header "sodium.h"'
echo ' export *'
echo '}'
cat <<EOF
module Clibsodium {
header "sodium.h"
export *
}
EOF
}

# Function to build for iOS
build_ios() {
export BASEDIR="${XCODEDIR}/Platforms/iPhoneOS.platform/Developer"
export PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH"
export SDK="${BASEDIR}/SDKs/iPhoneOS.sdk"
SDK="$(xcode-select -p)/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS.sdk"

## 64-bit iOS
export CFLAGS="-Ofast -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
export LDFLAGS="-arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
# Set compiler and linker flags for 64-bit iOS
CFLAGS="-Ofast -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"
LDFLAGS="-arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}"

make distclean >/dev/null 2>&1
./configure --host=arm-apple-darwin10 --prefix="$IOS64_PREFIX" --enable-minimal || exit 1
# Configure and build
./configure --host=arm-apple-darwin10 --prefix="${PREFIX}/tmp/ios64" --enable-minimal || exit 1
make -j"${PROCESSORS}" install || exit 1
}

# Create necessary directories
mkdir -p "${PREFIX}/tmp"

# Build for iOS
echo "Building for iOS..."
build_ios >"$LOG_FILE" 2>&1 || exit 1

# Add Swift module map
echo "Adding the Clibsodium module map for Swift..."
find "$PREFIX" -name "include" -type d -print | while read -r f; do
swift_module_map >"${f}/module.modulemap"
done

# Bundle iOS targets
echo "Bundling iOS targets..."
mkdir -p "${PREFIX}/ios/lib"
cp -a "${IOS64_PREFIX}/include" "${PREFIX}/ios/"
for ext in a dylib; do
lipo -create "$IOS64_PREFIX/lib/libsodium.${ext}" -output "$PREFIX/ios/lib/libsodium.${ext}"
done

echo "Creating Clibsodium.xcframework..."
rm -rf "${PREFIX}/Clibsodium.xcframework"

XCFRAMEWORK_ARGS=""
for f in ios; do
XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -library ${PREFIX}/${f}/lib/libsodium.a"
XCFRAMEWORK_ARGS="${XCFRAMEWORK_ARGS} -headers ${PREFIX}/${f}/include"
done

xcodebuild -create-xcframework $XCFRAMEWORK_ARGS -output $PREFIX/Clibsodium.xcframework >/dev/null

ls -ld -- "$PREFIX"
ls -l -- "$PREFIX"
ls -l -- "$PREFIX/Clibsodium.xcframework"

cp -a "${PREFIX}/tmp/ios64/include" "${PREFIX}/ios/"
lipo -create "${PREFIX}/tmp/ios64/lib/libsodium.dylib" -output "${PREFIX}/ios/lib/libsodium.dylib"
echo "Done!"

# Cleanup
Expand Down
9 changes: 3 additions & 6 deletions .github/workflows/sodium.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,8 @@ jobs:
- {
name: "iOS Arm64",
os: macos-latest,
command: "set +e; \
bash -x $workspace/.github/scripts/apple-xcframework.sh; \
cat libsodium-apple/tmp/build_log; \
cat $(find . -name \"config.log\")",
output-file: "zig-out/lib/libsodium.dylib",
command: "$workspace/.github/scripts/apple-xcframework.sh",
output-file: "libsodium-apple/ios/lib/libsodium.dylib",
file: "libsodium.dylib",
rid: "ios-arm64",
}
Expand Down Expand Up @@ -156,6 +153,6 @@ jobs:
with:
add: "libs/libsodium/"
default_author: github_actions
message: Update ${{ matrix.config.file }} to ${{ env.SODIUM_VERSION }}
message: Update ${{ matrix.config.rid }} to ${{ env.SODIUM_VERSION }}
pull: "--rebase --autostash"
push: true

0 comments on commit bd7b32a

Please sign in to comment.