Home | History | Annotate | Line # | Download | only in dist-build
      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