Advertisement
Guest User

Untitled

a guest
Oct 7th, 2015
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.18 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # This script downlaods and builds the iOS and Mac openSSL libraries with Bitcode enabled
  4.  
  5. # Credits:
  6. # https://github.com/st3fan/ios-openssl
  7. # https://github.com/x2on/OpenSSL-for-iPhone/blob/master/build-libssl.sh
  8. # Peter Steinberger, PSPDFKit GmbH, @steipete.
  9.  
  10. set -e
  11.  
  12. usage ()
  13. {
  14. echo "usage: $0 [minimum iOS SDK version (default 8.0)]"
  15. exit 127
  16. }
  17.  
  18. if [ $1 -e "-h" ]; then
  19. usage
  20. fi
  21.  
  22. if [ -z $1 ]; then
  23. SDK_VERSION="9.0"
  24. MIN_SDK_VERSION="8.0"
  25. else
  26. SDK_VERSION=$1
  27. fi
  28.  
  29. OPENSSL_VERSION="openssl-1.0.2d"
  30. DEVELOPER=`xcode-select -print-path`
  31.  
  32. buildMac()
  33. {
  34. ARCH=$1
  35.  
  36. echo "Building ${OPENSSL_VERSION} for ${ARCH}"
  37.  
  38. TARGET="darwin-i386-cc"
  39.  
  40. if [[ $ARCH == "x86_64" ]]; then
  41. TARGET="darwin64-x86_64-cc"
  42. fi
  43.  
  44. export CC="${BUILD_TOOLS}/usr/bin/clang -fembed-bitcode"
  45.  
  46. pushd . > /dev/null
  47. cd "${OPENSSL_VERSION}"
  48. ./Configure no-asm ${TARGET} --openssldir="/tmp/${OPENSSL_VERSION}-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-${ARCH}.log"
  49. make >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1
  50. make install >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1
  51. make clean >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1
  52. popd > /dev/null
  53. }
  54.  
  55. buildIOS()
  56. {
  57. ARCH=$1
  58.  
  59. pushd . > /dev/null
  60. cd "${OPENSSL_VERSION}"
  61.  
  62. if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; then
  63. PLATFORM="iPhoneSimulator"
  64. else
  65. PLATFORM="iPhoneOS"
  66. sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"
  67. fi
  68.  
  69. export $PLATFORM
  70. export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
  71. export CROSS_SDK="${PLATFORM}${SDK_VERSION}.sdk"
  72. export BUILD_TOOLS="${DEVELOPER}"
  73. export CC="${BUILD_TOOLS}/usr/bin/gcc -fembed-bitcode -arch ${ARCH}"
  74.  
  75. echo "Building ${OPENSSL_VERSION} for ${PLATFORM} ${SDK_VERSION} ${ARCH}"
  76.  
  77. if [[ "${ARCH}" == "x86_64" ]]; then
  78. ./Configure no-asm darwin64-x86_64-cc --openssldir="/tmp/${OPENSSL_VERSION}-iOS-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log"
  79. else
  80. ./Configure iphoneos-cross --openssldir="/tmp/${OPENSSL_VERSION}-iOS-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log"
  81. fi
  82. # add -isysroot to CC=
  83. sed -ie "s!^CFLAG=!CFLAG=-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=${MIN_SDK_VERSION} !" "Makefile"
  84.  
  85. make >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1
  86. make install >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1
  87. make clean >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1
  88. popd > /dev/null
  89. }
  90.  
  91. echo "Cleaning up"
  92. rm -rf include/openssl/* lib/*
  93.  
  94. mkdir -p lib
  95. mkdir -p include/openssl/
  96.  
  97. rm -rf "/tmp/${OPENSSL_VERSION}-*"
  98. rm -rf "/tmp/${OPENSSL_VERSION}-*.log"
  99.  
  100. rm -rf "${OPENSSL_VERSION}"
  101.  
  102. if [ ! -e ${OPENSSL_VERSION}.tar.gz ]; then
  103. echo "Downloading ${OPENSSL_VERSION}.tar.gz"
  104. curl -O http://www.openssl.org/source/${OPENSSL_VERSION}.tar.gz
  105. else
  106. echo "Using ${OPENSSL_VERSION}.tar.gz"
  107. fi
  108.  
  109. echo "Unpacking openssl"
  110. tar xfz "${OPENSSL_VERSION}.tar.gz"
  111.  
  112. buildMac "x86_64"
  113.  
  114. echo "Copying headers"
  115. cp /tmp/${OPENSSL_VERSION}-x86_64/include/openssl/* include/openssl/
  116.  
  117. echo "Building Mac libraries"
  118. lipo \
  119. "/tmp/${OPENSSL_VERSION}-x86_64/lib/libcrypto.a" \
  120. -create -output lib/libcrypto_Mac.a
  121.  
  122. lipo \
  123. "/tmp/${OPENSSL_VERSION}-x86_64/lib/libssl.a" \
  124. -create -output lib/libssl_Mac.a
  125.  
  126. buildIOS "armv7s"
  127. buildIOS "armv7"
  128. buildIOS "arm64"
  129. buildIOS "x86_64"
  130. buildIOS "i386"
  131.  
  132. echo "Building iOS libraries"
  133. lipo \
  134. "/tmp/${OPENSSL_VERSION}-iOS-armv7/lib/libcrypto.a" \
  135. "/tmp/${OPENSSL_VERSION}-iOS-i386/lib/libcrypto.a" \
  136. -create -output lib/libcrypto_iOS.a
  137.  
  138. lipo \
  139. "/tmp/${OPENSSL_VERSION}-iOS-armv7/lib/libssl.a" \
  140. "/tmp/${OPENSSL_VERSION}-iOS-i386/lib/libssl.a" \
  141. -create -output lib/libssl_iOS.a
  142.  
  143. echo "Adding 64-bit libraries"
  144. lipo \
  145. "lib/libcrypto_iOS.a" \
  146. "/tmp/${OPENSSL_VERSION}-iOS-arm64/lib/libcrypto.a" \
  147. "/tmp/${OPENSSL_VERSION}-iOS-x86_64/lib/libcrypto.a" \
  148. -create -output lib/libcrypto_iOS.a
  149.  
  150. lipo \
  151. "lib/libssl_iOS.a" \
  152. "/tmp/${OPENSSL_VERSION}-iOS-arm64/lib/libssl.a" \
  153. "/tmp/${OPENSSL_VERSION}-iOS-x86_64/lib/libssl.a" \
  154. -create -output lib/libssl_iOS.a
  155.  
  156. echo "Cleaning up"
  157. rm -rf /tmp/${OPENSSL_VERSION}-*
  158. rm -rf ${OPENSSL_VERSION}
  159.  
  160. echo "Done"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement