build.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/bin/bash
  2. # Yay shell scripting! This script builds a static version of
  3. # OpenSSL ${OPENSSL_VERSION} for iOS 5.1 that contains code for armv6, armv7 and i386.
  4. set -x
  5. # Setup paths to stuff we need
  6. OPENSSL_VERSION="1.0.1e"
  7. DEVELOPER="/Applications/Xcode.app/Contents/Developer"
  8. SDK_VERSION="6.1"
  9. IPHONEOS_PLATFORM="${DEVELOPER}/Platforms/iPhoneOS.platform"
  10. IPHONEOS_SDK="${IPHONEOS_PLATFORM}/Developer/SDKs/iPhoneOS${SDK_VERSION}.sdk"
  11. IPHONEOS_GCC="${IPHONEOS_PLATFORM}/Developer/usr/bin/gcc"
  12. IPHONESIMULATOR_PLATFORM="${DEVELOPER}/Platforms/iPhoneSimulator.platform"
  13. IPHONESIMULATOR_SDK="${IPHONESIMULATOR_PLATFORM}/Developer/SDKs/iPhoneSimulator${SDK_VERSION}.sdk"
  14. IPHONESIMULATOR_GCC="${IPHONESIMULATOR_PLATFORM}/Developer/usr/bin/gcc"
  15. # Clean up whatever was left from our previous build
  16. rm -rf include lib
  17. rm -rf "/tmp/openssl-${OPENSSL_VERSION}-*"
  18. rm -rf "/tmp/openssl-${OPENSSL_VERSION}-*.log"
  19. build()
  20. {
  21. ARCH=$1
  22. GCC=$2
  23. SDK=$3
  24. rm -rf "openssl-${OPENSSL_VERSION}"
  25. tar xfz "openssl-${OPENSSL_VERSION}.tar.gz"
  26. pushd .
  27. cd "openssl-${OPENSSL_VERSION}"
  28. ./Configure BSD-generic32 --openssldir="/tmp/openssl-${OPENSSL_VERSION}-${ARCH}" &> "/tmp/openssl-${OPENSSL_VERSION}-${ARCH}.log"
  29. perl -i -pe 's|static volatile sig_atomic_t intr_signal|static volatile int intr_signal|' crypto/ui/ui_openssl.c
  30. perl -i -pe "s|^CC= gcc|CC= ${GCC} -arch ${ARCH}|g" Makefile
  31. perl -i -pe "s|^CFLAG= (.*)|CFLAG= -isysroot ${SDK} \$1|g" Makefile
  32. make &> "/tmp/openssl-${OPENSSL_VERSION}-${ARCH}.log"
  33. make install &> "/tmp/openssl-${OPENSSL_VERSION}-${ARCH}.log"
  34. popd
  35. rm -rf "openssl-${OPENSSL_VERSION}"
  36. }
  37. build "armv7" "${IPHONEOS_GCC}" "${IPHONEOS_SDK}"
  38. build "armv7s" "${IPHONEOS_GCC}" "${IPHONEOS_SDK}"
  39. build "i386" "${IPHONESIMULATOR_GCC}" "${IPHONESIMULATOR_SDK}"
  40. #
  41. mkdir include
  42. cp -r /tmp/openssl-${OPENSSL_VERSION}-i386/include/openssl include/
  43. mkdir lib
  44. lipo \
  45. "/tmp/openssl-${OPENSSL_VERSION}-armv7/lib/libcrypto.a" \
  46. "/tmp/openssl-${OPENSSL_VERSION}-armv7s/lib/libcrypto.a" \
  47. "/tmp/openssl-${OPENSSL_VERSION}-i386/lib/libcrypto.a" \
  48. -create -output lib/libcrypto.a
  49. lipo \
  50. "/tmp/openssl-${OPENSSL_VERSION}-armv7/lib/libssl.a" \
  51. "/tmp/openssl-${OPENSSL_VERSION}-armv7s/lib/libssl.a" \
  52. "/tmp/openssl-${OPENSSL_VERSION}-i386/lib/libssl.a" \
  53. -create -output lib/libssl.a
  54. rm -rf "/tmp/openssl-${OPENSSL_VERSION}-*"
  55. rm -rf "/tmp/openssl-${OPENSSL_VERSION}-*.log"