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