Skip to content

Commit

Permalink
Fixed build for M1 simulators
Browse files Browse the repository at this point in the history
  • Loading branch information
dinhvh authored and dsanghan committed Sep 7, 2022
1 parent b3bae84 commit 2864403
Showing 1 changed file with 72 additions and 36 deletions.
108 changes: 72 additions & 36 deletions build-mac/dependencies/prepare-cyrus-sasl.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
#! /bin/bash -

set -e

export PATH=/usr/bin:/bin:/usr/sbin:/sbin

version=2.1.28
ARCHIVE=cyrus-sasl-$version
ARCHIVE_NAME=$ARCHIVE.tar.gz
ARCHIVE_PATCH=$ARCHIVE.patch
url=https://github.com/cyrusimap/cyrus-sasl/releases/download/$ARCHIVE/$ARCHIVE_NAME
parallel_mode=0

scriptdir="`pwd`"

Expand Down Expand Up @@ -121,6 +124,57 @@ if test "x$NOBITCODE" != x ; then
BITCODE_FLAGS=""
fi

xcode_developer="$(xcode-select -p)"

function build_target {
local current_logfile="$srcdir/$ARCHIVE-$TARGET-$MARCH/build.log"
echo "log to $current_logfile"
cp -R "$srcdir/$ARCHIVE" "$srcdir/$ARCHIVE-$TARGET-$MARCH"

cd "$srcdir/$ARCHIVE-$TARGET-$MARCH"

echo "*** building for $TARGET - $MARCH ***" >> "$current_logfile" 2>&1

local PREFIX=${BUILD_DIR}/${LIB_NAME}/${TARGET}${SDK_IOS_VERSION}${MARCH}
rm -rf $PREFIX

local CURRENT_TARGET="$MARCH-apple-ios${SDK_IOS_MIN_VERSION}${TARGET_SUFFIX}"
export CPPFLAGS="-isysroot ${SYSROOT} -target ${CURRENT_TARGET} -Os"
export CFLAGS="${CPPFLAGS} ${EXTRA_FLAGS}"
export CC="$xcode_developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
export CXX="$xcode_developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++"
export LD="$xcode_developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld"
export AR="$xcode_developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ar"

OPENSSL="--with-openssl=$BUILD_DIR/openssl-1.0.0d/universal"
PLUGINS="--enable-otp=no --enable-digest=no --with-des=no --enable-login"
./configure --host=${ARCH} --prefix=$PREFIX --enable-shared=no --enable-static=yes --with-pam=$BUILD_DIR/openpam-20071221/universal $PLUGINS >> "$current_logfile" 2>&1
make -j 8 >> "$current_logfile" 2>&1
if [[ "$?" != "0" ]]; then
echo "CONFIGURE FAILED"
cat "$current_logfile"
exit 1
fi
cd lib
make install >> "$current_logfile" 2>&1
cd ..
cd include
make install >> "$current_logfile" 2>&1
cd ..
cd plugins
make install >> "$current_logfile" 2>&1
cd ..
if [[ "$?" != "0" ]]; then
echo "BUILD FAILED"
cat "$current_logfile"
exit 1
fi
make clean >> "$current_logfile" 2>&1
make distclean >> "$current_logfile" 2>&1
find . -name config.cache -print0 | xargs -0 rm
}

pids=""
for TARGET in $TARGETS; do

DEVELOPER="$(xcode-select --print-path)"
Expand All @@ -132,53 +186,36 @@ for TARGET in $TARGETS; do
ARCH=arm
MARCHS="armv7 armv7s arm64"
EXTRA_FLAGS="$BITCODE_FLAGS -miphoneos-version-min=$SDK_IOS_MIN_VERSION"
TARGET_SUFFIX=""
;;
(iPhoneSimulator)
ARCH=i386
MARCHS="i386 x86_64 arm64"
EXTRA_FLAGS="-miphoneos-version-min=$SDK_IOS_MIN_VERSION"
EXTRA_FLAGS="$BITCODE_FLAGS -miphoneos-version-min=$SDK_IOS_MIN_VERSION"
TARGET_SUFFIX="-simulator"
;;
esac

for MARCH in $MARCHS; do
echo "building for $TARGET - $MARCH"
echo "*** building for $TARGET - $MARCH ***" >> "$logfile" 2>&1

PREFIX=${BUILD_DIR}/${LIB_NAME}/${TARGET}${SDK_IOS_VERSION}${MARCH}
rm -rf $PREFIX

export CPPFLAGS="-arch ${MARCH} -isysroot ${SYSROOT}"
export CFLAGS="${CPPFLAGS} -Os ${EXTRA_FLAGS}"

OPENSSL="--with-openssl=$BUILD_DIR/openssl-1.0.0d/universal"
PLUGINS="--enable-otp=no --enable-digest=no --with-des=no --enable-login"
./configure --host=${ARCH} --prefix=$PREFIX --enable-shared=no --enable-static=yes --with-pam=$BUILD_DIR/openpam-20071221/universal $PLUGINS >> "$logfile" 2>&1
make -j 8 >> "$logfile" 2>&1
if [[ "$?" != "0" ]]; then
echo "CONFIGURE FAILED"
cat "$logfile"
exit 1
fi
cd lib
make install >> "$logfile" 2>&1
cd ..
cd include
make install >> "$logfile" 2>&1
cd ..
cd plugins
make install >> "$logfile" 2>&1
cd ..
if [[ "$?" != "0" ]]; then
echo "BUILD FAILED"
cat "$logfile"
exit 1

echo "building for $TARGET - $MARCH"
build_target &
pid="$!"
pids="$pids $pid"
if test "x$parallel_mode" != x1 ; then
wait "$pid"
fi
make clean >> "$logfile" 2>&1
make distclean >> "$logfile" 2>&1
find . -name config.cache -print0 | xargs -0 rm
done
done

if test "x$parallel_mode" = x1 ; then
for pid in $pids; do
wait $pid || exit 1
done
fi

cd "$srcdir/$ARCHIVE"

echo "*** creating universal libs ***" >> "$logfile" 2>&1

rm -rf "$INSTALL_PATH"
Expand Down Expand Up @@ -214,7 +251,6 @@ mkdir -p "$resultdir"
mv "libsasl-$version-ios.tar.gz" "$resultdir"
cd "$resultdir"
ln -s "libsasl-$version-ios.tar.gz" "libsasl-prebuilt-ios.tar.gz"
rm -rf "$tempbuilddir"

cd "$scriptdir/.."
tar xzf "$resultdir/libsasl-$version-ios.tar.gz"
Expand Down

0 comments on commit 2864403

Please sign in to comment.