You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
libetpan/build-mac/dependencies/prepare-cyrus-sasl.sh

209 lines
5.6 KiB
Bash

#! /bin/bash -
export PATH=/usr/bin:/bin:/usr/sbin:/sbin
version=2.1.25
ARCHIVE=cyrus-sasl-$version
ARCHIVE_NAME=$ARCHIVE.tar.gz
ARCHIVE_PATCH=$ARCHIVE.patch
url=ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/$ARCHIVE_NAME
patchfile=cyrus-2.1.25-libetpan.patch
scriptdir="`pwd`"
current_dir="$scriptdir"
builddir="$current_dir/build/libsasl"
BUILD_TIMESTAMP=`date +'%Y%m%d%H%M%S'`
tempbuilddir="$builddir/workdir/$BUILD_TIMESTAMP"
mkdir -p "$tempbuilddir"
srcdir="$tempbuilddir/src"
logdir="$tempbuilddir/log"
resultdir="$builddir/builds"
tmpdir="$tempbuilddir/tmp"
mkdir -p "$resultdir"
mkdir -p "$logdir"
mkdir -p "$tmpdir"
mkdir -p "$srcdir"
if test -f "$resultdir/libsasl-$version-ios.tar.gz"; then
echo already built
cd "$scriptdir/.."
tar xzf "$resultdir/libsasl-$version-ios.tar.gz"
exit 0
fi
# download package file
if test -f "$current_dir/packages/$ARCHIVE_NAME" ; then
:
else
echo "download source package - $url"
mkdir -p "$current_dir/packages"
cd "$current_dir/packages"
curl -O "$url"
if test x$? != x0 ; then
echo fetch of $ARCHIVE_NAME failed
exit 1
fi
fi
if [ ! -e "$current_dir/packages/$ARCHIVE_NAME" ]; then
echo "Missing archive $ARCHIVE"
exit 1
fi
echo "prepare sources"
cd "$srcdir"
tar -xzf "$current_dir/packages/$ARCHIVE_NAME"
if [ $? != 0 ]; then
echo "Unable to decompress $ARCHIVE_NAME"
exit 1
fi
logfile="$srcdir/$ARCHIVE/build.log"
echo "*** patching sources ***" > "$logfile" 2>&1
cd "$srcdir/$ARCHIVE"
patch -p1 < $current_dir/$patchfile
# patch source files
cd "$srcdir/$ARCHIVE/include"
sed -E 's/\.\/makemd5 /.\/makemd5i386 /' < Makefile.am > Makefile.am.new
mv Makefile.am.new Makefile.am
sed -E 's/\.\/makemd5 /.\/makemd5i386 /' < Makefile.in > Makefile.in.new
mv Makefile.in.new Makefile.in
cd "$srcdir/$ARCHIVE/lib"
sed -E 's/\$\(AR\) cru \.libs\/\$@ \$\(SASL_STATIC_OBJS\)/&; \$\(RANLIB\) .libs\/\$@/' < Makefile.in > Makefile.in.new
mv Makefile.in.new Makefile.in
echo "building tools"
echo "*** generating makemd5 ***" >> "$logfile" 2>&1
cd "$srcdir/$ARCHIVE"
export SDKROOT=
export IPHONEOS_DEPLOYMENT_TARGET=
./configure > "$logfile" 2>&1
if [[ "$?" != "0" ]]; then
echo "CONFIGURE FAILED"
exit 1
fi
cd include
make makemd5 >> "$logfile" 2>&1
if [[ "$?" != "0" ]]; then
echo "BUILD FAILED"
exit 1
fi
cd ..
echo generated makemd5i386 properly
mv "$srcdir/$ARCHIVE/include/makemd5" "$srcdir/$ARCHIVE/include/makemd5i386"
make clean >>"$logfile" 2>&1
make distclean >>"$logfile" 2>&1
find . -name config.cache -print0 | xargs -0 rm
cd "$srcdir/$ARCHIVE"
export LANG=en_US.US-ASCII
LIB_NAME=$ARCHIVE
TARGETS="iPhoneOS iPhoneSimulator"
SDK_IOS_MIN_VERSION=7.0
SDK_IOS_VERSION="`xcodebuild -showsdks 2>/dev/null | grep iphoneos | sed 's/.*iphoneos\(.*\)/\1/'`"
BUILD_DIR="$tmpdir/build"
INSTALL_PATH="${BUILD_DIR}/${LIB_NAME}/universal"
for TARGET in $TARGETS; do
DEVELOPER="$(xcode-select --print-path)"
SDK_ID="$(echo "$TARGET$SDK_IOS_VERSION" | tr A-Z a-z)"
SYSROOT="$(xcodebuild -version -sdk "$SDK_ID" 2>/dev/null | egrep '^Path: ' | cut -d ' ' -f 2)"
case $TARGET in
(iPhoneOS)
ARCH=arm
MARCHS="armv7 armv7s arm64"
;;
(iPhoneSimulator)
ARCH=i386
MARCHS="i386 x86_64"
;;
esac
EXTRA_FLAGS="-fembed-bitcode -miphoneos-version-min=$SDK_IOS_MIN_VERSION"
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"
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"
exit 1
fi
make clean >> "$logfile" 2>&1
make distclean >> "$logfile" 2>&1
find . -name config.cache -print0 | xargs -0 rm
done
done
echo "*** creating universal libs ***" >> "$logfile" 2>&1
rm -rf "$INSTALL_PATH"
mkdir -p "$INSTALL_PATH"
mkdir -p "$INSTALL_PATH/lib"
mkdir -p "$INSTALL_PATH/include/sasl"
cp `find ./include -name '*.h'` "${INSTALL_PATH}/include/sasl"
ALL_LIBS="libsasl2.a sasl2/libanonymous.a sasl2/libcrammd5.a sasl2/libplain.a sasl2/libsasldb.a sasl2/liblogin.a"
for lib in $ALL_LIBS; do
dir="`dirname $lib`"
if [[ "$dir" != "." ]]; then
mkdir -p ${INSTALL_PATH}/lib/$dir
fi
LIBS=
for TARGET in $TARGETS; do
LIBS="$LIBS ${BUILD_DIR}/${LIB_NAME}/${TARGET}${SDK_IOS_VERSION}*/lib/${lib}"
done
lipo -create ${LIBS} -output "${INSTALL_PATH}/lib/${lib}"
done
echo "*** creating built package ***" >> "$logfile" 2>&1
cd "$BUILD_DIR"
mkdir -p libsasl-ios
cp -r "$INSTALL_PATH"/* libsasl-ios/
tar -czf "libsasl-$version-ios.tar.gz" libsasl-ios
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"
exit 0