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