1*0ac341f1SConrad Meyer#! /bin/sh 2*0ac341f1SConrad Meyer# 3*0ac341f1SConrad Meyer# Step 1. 4*0ac341f1SConrad Meyer# Configure for base system so simulator is covered 5*0ac341f1SConrad Meyer# 6*0ac341f1SConrad Meyer# Step 2. 7*0ac341f1SConrad Meyer# Make for iOS and iOS simulator 8*0ac341f1SConrad Meyer# 9*0ac341f1SConrad Meyer# Step 3. 10*0ac341f1SConrad Meyer# Merge libs into final version for xcode import 11*0ac341f1SConrad Meyer 12*0ac341f1SConrad Meyerexport PREFIX="$(pwd)/libsodium-ios" 13*0ac341f1SConrad Meyerexport IOS32_PREFIX="$PREFIX/tmp/ios32" 14*0ac341f1SConrad Meyerexport IOS32s_PREFIX="$PREFIX/tmp/ios32s" 15*0ac341f1SConrad Meyerexport IOS64_PREFIX="$PREFIX/tmp/ios64" 16*0ac341f1SConrad Meyerexport SIMULATOR32_PREFIX="$PREFIX/tmp/simulator32" 17*0ac341f1SConrad Meyerexport SIMULATOR64_PREFIX="$PREFIX/tmp/simulator64" 18*0ac341f1SConrad Meyerexport XCODEDIR=$(xcode-select -p) 19*0ac341f1SConrad Meyer 20*0ac341f1SConrad Meyerexport IOS_SIMULATOR_VERSION_MIN=${IOS_SIMULATOR_VERSION_MIN-"6.0.0"} 21*0ac341f1SConrad Meyerexport IOS_VERSION_MIN=${IOS_VERSION_MIN-"6.0.0"} 22*0ac341f1SConrad Meyer 23*0ac341f1SConrad Meyermkdir -p $SIMULATOR32_PREFIX $SIMULATOR64_PREFIX $IOS32_PREFIX $IOS32s_PREFIX $IOS64_PREFIX || exit 1 24*0ac341f1SConrad Meyer 25*0ac341f1SConrad Meyer# Build for the simulator 26*0ac341f1SConrad Meyerexport BASEDIR="${XCODEDIR}/Platforms/iPhoneSimulator.platform/Developer" 27*0ac341f1SConrad Meyerexport PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" 28*0ac341f1SConrad Meyerexport SDK="${BASEDIR}/SDKs/iPhoneSimulator.sdk" 29*0ac341f1SConrad Meyer 30*0ac341f1SConrad Meyer## i386 simulator 31*0ac341f1SConrad Meyerexport CFLAGS="-O2 -arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" 32*0ac341f1SConrad Meyerexport LDFLAGS="-arch i386 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" 33*0ac341f1SConrad Meyer 34*0ac341f1SConrad Meyermake distclean > /dev/null 35*0ac341f1SConrad Meyer 36*0ac341f1SConrad Meyerif [ -z "$LIBSODIUM_FULL_BUILD" ]; then 37*0ac341f1SConrad Meyer export LIBSODIUM_ENABLE_MINIMAL_FLAG="--enable-minimal" 38*0ac341f1SConrad Meyerelse 39*0ac341f1SConrad Meyer export LIBSODIUM_ENABLE_MINIMAL_FLAG="" 40*0ac341f1SConrad Meyerfi 41*0ac341f1SConrad Meyer 42*0ac341f1SConrad Meyer./configure --host=i686-apple-darwin10 \ 43*0ac341f1SConrad Meyer --disable-shared \ 44*0ac341f1SConrad Meyer ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ 45*0ac341f1SConrad Meyer --prefix="$SIMULATOR32_PREFIX" || exit 1 46*0ac341f1SConrad Meyer 47*0ac341f1SConrad Meyer 48*0ac341f1SConrad MeyerNPROCESSORS=$(getconf NPROCESSORS_ONLN 2>/dev/null || getconf _NPROCESSORS_ONLN 2>/dev/null) 49*0ac341f1SConrad MeyerPROCESSORS=${NPROCESSORS:-3} 50*0ac341f1SConrad Meyer 51*0ac341f1SConrad Meyermake -j${PROCESSORS} install || exit 1 52*0ac341f1SConrad Meyer 53*0ac341f1SConrad Meyer## x86_64 simulator 54*0ac341f1SConrad Meyerexport CFLAGS="-O2 -arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" 55*0ac341f1SConrad Meyerexport LDFLAGS="-arch x86_64 -isysroot ${SDK} -mios-simulator-version-min=${IOS_SIMULATOR_VERSION_MIN}" 56*0ac341f1SConrad Meyer 57*0ac341f1SConrad Meyermake distclean > /dev/null 58*0ac341f1SConrad Meyer 59*0ac341f1SConrad Meyer./configure --host=x86_64-apple-darwin10 \ 60*0ac341f1SConrad Meyer --disable-shared \ 61*0ac341f1SConrad Meyer ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ 62*0ac341f1SConrad Meyer --prefix="$SIMULATOR64_PREFIX" 63*0ac341f1SConrad Meyer 64*0ac341f1SConrad Meyermake -j${PROCESSORS} install || exit 1 65*0ac341f1SConrad Meyer 66*0ac341f1SConrad Meyer# Build for iOS 67*0ac341f1SConrad Meyerexport BASEDIR="${XCODEDIR}/Platforms/iPhoneOS.platform/Developer" 68*0ac341f1SConrad Meyerexport PATH="${BASEDIR}/usr/bin:$BASEDIR/usr/sbin:$PATH" 69*0ac341f1SConrad Meyerexport SDK="${BASEDIR}/SDKs/iPhoneOS.sdk" 70*0ac341f1SConrad Meyer 71*0ac341f1SConrad Meyer## 32-bit iOS 72*0ac341f1SConrad Meyerexport CFLAGS="-fembed-bitcode -O2 -mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" 73*0ac341f1SConrad Meyerexport LDFLAGS="-fembed-bitcode -mthumb -arch armv7 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" 74*0ac341f1SConrad Meyer 75*0ac341f1SConrad Meyermake distclean > /dev/null 76*0ac341f1SConrad Meyer 77*0ac341f1SConrad Meyer./configure --host=arm-apple-darwin10 \ 78*0ac341f1SConrad Meyer --disable-shared \ 79*0ac341f1SConrad Meyer ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ 80*0ac341f1SConrad Meyer --prefix="$IOS32_PREFIX" || exit 1 81*0ac341f1SConrad Meyer 82*0ac341f1SConrad Meyermake -j${PROCESSORS} install || exit 1 83*0ac341f1SConrad Meyer 84*0ac341f1SConrad Meyer## 32-bit armv7s iOS 85*0ac341f1SConrad Meyerexport CFLAGS="-fembed-bitcode -O2 -mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" 86*0ac341f1SConrad Meyerexport LDFLAGS="-fembed-bitcode -mthumb -arch armv7s -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN}" 87*0ac341f1SConrad Meyer 88*0ac341f1SConrad Meyermake distclean > /dev/null 89*0ac341f1SConrad Meyer 90*0ac341f1SConrad Meyer./configure --host=arm-apple-darwin10 \ 91*0ac341f1SConrad Meyer --disable-shared \ 92*0ac341f1SConrad Meyer ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ 93*0ac341f1SConrad Meyer --prefix="$IOS32s_PREFIX" || exit 1 94*0ac341f1SConrad Meyer 95*0ac341f1SConrad Meyermake -j${PROCESSORS} install || exit 1 96*0ac341f1SConrad Meyer 97*0ac341f1SConrad Meyer## 64-bit iOS 98*0ac341f1SConrad Meyerexport CFLAGS="-fembed-bitcode -O2 -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN} -fembed-bitcode" 99*0ac341f1SConrad Meyerexport LDFLAGS="-fembed-bitcode -arch arm64 -isysroot ${SDK} -mios-version-min=${IOS_VERSION_MIN} -fembed-bitcode" 100*0ac341f1SConrad Meyer 101*0ac341f1SConrad Meyermake distclean > /dev/null 102*0ac341f1SConrad Meyer 103*0ac341f1SConrad Meyer./configure --host=arm-apple-darwin10 \ 104*0ac341f1SConrad Meyer --disable-shared \ 105*0ac341f1SConrad Meyer ${LIBSODIUM_ENABLE_MINIMAL_FLAG} \ 106*0ac341f1SConrad Meyer --prefix="$IOS64_PREFIX" || exit 1 107*0ac341f1SConrad Meyer 108*0ac341f1SConrad Meyermake -j${PROCESSORS} install || exit 1 109*0ac341f1SConrad Meyer 110*0ac341f1SConrad Meyer# Create universal binary and include folder 111*0ac341f1SConrad Meyerrm -fr -- "$PREFIX/include" "$PREFIX/libsodium.a" 2> /dev/null 112*0ac341f1SConrad Meyermkdir -p -- "$PREFIX/lib" 113*0ac341f1SConrad Meyerlipo -create \ 114*0ac341f1SConrad Meyer "$SIMULATOR32_PREFIX/lib/libsodium.a" \ 115*0ac341f1SConrad Meyer "$SIMULATOR64_PREFIX/lib/libsodium.a" \ 116*0ac341f1SConrad Meyer "$IOS32_PREFIX/lib/libsodium.a" \ 117*0ac341f1SConrad Meyer "$IOS32s_PREFIX/lib/libsodium.a" \ 118*0ac341f1SConrad Meyer "$IOS64_PREFIX/lib/libsodium.a" \ 119*0ac341f1SConrad Meyer -output "$PREFIX/lib/libsodium.a" 120*0ac341f1SConrad Meyermv -f -- "$IOS32_PREFIX/include" "$PREFIX/" 121*0ac341f1SConrad Meyer 122*0ac341f1SConrad Meyerecho 123*0ac341f1SConrad Meyerecho "libsodium has been installed into $PREFIX" 124*0ac341f1SConrad Meyerecho 125*0ac341f1SConrad Meyerfile -- "$PREFIX/lib/libsodium.a" 126*0ac341f1SConrad Meyer 127*0ac341f1SConrad Meyer# Cleanup 128*0ac341f1SConrad Meyerrm -rf -- "$PREFIX/tmp" 129*0ac341f1SConrad Meyermake distclean > /dev/null 130