ios.sh 4.0 KB

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