summaryrefslogtreecommitdiffstats
path: root/thirdparties/iphone/configure/openssl-build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparties/iphone/configure/openssl-build.sh')
-rw-r--r--thirdparties/iphone/configure/openssl-build.sh158
1 files changed, 158 insertions, 0 deletions
diff --git a/thirdparties/iphone/configure/openssl-build.sh b/thirdparties/iphone/configure/openssl-build.sh
new file mode 100644
index 0000000..b1b705c
--- /dev/null
+++ b/thirdparties/iphone/configure/openssl-build.sh
@@ -0,0 +1,158 @@
+#!/bin/bash
+
+# This script builds the iOS and Mac openSSL libraries
+# Download openssl http://www.openssl.org/source/ and place the tarball next to this script
+
+# Credits:
+# https://github.com/st3fan/ios-openssl
+# https://github.com/x2on/OpenSSL-for-iPhone/blob/master/build-libssl.sh
+
+
+set -e
+
+usage ()
+{
+ echo "usage: $0 [minimum iOS SDK version (default 8.3)]"
+ exit 127
+}
+
+if [ $1 -e "-h" ]; then
+ usage
+fi
+
+SDK_VERSION_MIN="4.0"
+
+if [ -z $1 ]; then
+ SDK_VERSION="8.3"
+else
+ SDK_VERSION=$1
+fi
+
+OPENSSL_VERSION="openssl-1.0.2a"
+DEVELOPER=`xcode-select -print-path`
+
+buildMac()
+{
+ ARCH=$1
+
+ echo "Building ${OPENSSL_VERSION} for ${ARCH}"
+
+ TARGET="darwin-i386-cc"
+
+ if [[ $ARCH == "x86_64" ]]; then
+ TARGET="darwin64-x86_64-cc"
+ SDK_VERSION_MIN="6.0"
+ fi
+
+ pushd . > /dev/null
+ cd "${OPENSSL_VERSION}"
+ ./Configure ${TARGET} --openssldir="/tmp/${OPENSSL_VERSION}-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-${ARCH}.log"
+ make >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1
+ make install >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1
+ make clean >> "/tmp/${OPENSSL_VERSION}-${ARCH}.log" 2>&1
+ popd > /dev/null
+}
+
+buildIOS()
+{
+ ARCH=$1
+
+ pushd . > /dev/null
+ cd "${OPENSSL_VERSION}"
+
+ if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; then
+ PLATFORM="iPhoneSimulator"
+ else
+ PLATFORM="iPhoneOS"
+ sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"
+ fi
+
+ export $PLATFORM
+ export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer"
+ export CROSS_SDK="${PLATFORM}${SDK_VERSION}.sdk"
+ export BUILD_TOOLS="${DEVELOPER}"
+ export CC="${BUILD_TOOLS}/usr/bin/gcc -arch ${ARCH}"
+
+ echo "Building ${OPENSSL_VERSION} for ${PLATFORM} ${SDK_VERSION} ${ARCH}"
+
+ if [[ "${ARCH}" == "x86_64" ]]; then
+ ./Configure darwin64-x86_64-cc --openssldir="/tmp/${OPENSSL_VERSION}-iOS-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log"
+ else
+ ./Configure iphoneos-cross --openssldir="/tmp/${OPENSSL_VERSION}-iOS-${ARCH}" &> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log"
+ fi
+ # add -isysroot to CC=
+ sed -ie "s!^CFLAG=!CFLAG=-isysroot ${CROSS_TOP}/SDKs/${CROSS_SDK} -miphoneos-version-min=${SDK_VERSION_MIN} !" "Makefile"
+
+ make >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1
+ make install >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1
+ make clean >> "/tmp/${OPENSSL_VERSION}-iOS-${ARCH}.log" 2>&1
+ popd > /dev/null
+}
+
+echo "Cleaning up"
+rm -rf include/openssl/* lib/*
+
+mkdir -p lib/iOS
+mkdir -p lib/Mac
+mkdir -p include/openssl/
+
+rm -rf "/tmp/${OPENSSL_VERSION}-*"
+rm -rf "/tmp/${OPENSSL_VERSION}-*.log"
+
+rm -rf "${OPENSSL_VERSION}"
+
+if [ ! -e ${OPENSSL_VERSION}.tar.gz ]; then
+ echo "Downloading ${OPENSSL_VERSION}.tar.gz"
+ curl -O https://www.openssl.org/source/${OPENSSL_VERSION}.tar.gz
+else
+ echo "Using ${OPENSSL_VERSION}.tar.gz"
+fi
+
+echo "Unpacking openssl"
+tar xfz "${OPENSSL_VERSION}.tar.gz"
+
+buildMac "i386"
+buildMac "x86_64"
+
+echo "Copying headers"
+cp /tmp/${OPENSSL_VERSION}-i386/include/openssl/* include/openssl/
+
+echo "Building Mac libraries"
+lipo \
+ "/tmp/${OPENSSL_VERSION}-i386/lib/libcrypto.a" \
+ "/tmp/${OPENSSL_VERSION}-x86_64/lib/libcrypto.a" \
+ -create -output lib/Mac/libcrypto.a
+
+lipo \
+ "/tmp/${OPENSSL_VERSION}-i386/lib/libssl.a" \
+ "/tmp/${OPENSSL_VERSION}-x86_64/lib/libssl.a" \
+ -create -output lib/Mac/libssl.a
+
+buildIOS "armv7s"
+buildIOS "armv7"
+buildIOS "arm64"
+buildIOS "x86_64"
+buildIOS "i386"
+
+echo "Building iOS libraries"
+lipo \
+ "/tmp/${OPENSSL_VERSION}-iOS-armv7s/lib/libcrypto.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-armv7/lib/libcrypto.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-arm64/lib/libcrypto.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-i386/lib/libcrypto.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-x86_64/lib/libcrypto.a" \
+ -create -output lib/iOS/libcrypto.a
+
+lipo \
+ "/tmp/${OPENSSL_VERSION}-iOS-armv7s/lib/libssl.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-armv7/lib/libssl.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-arm64/lib/libssl.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-i386/lib/libssl.a" \
+ "/tmp/${OPENSSL_VERSION}-iOS-x86_64/lib/libssl.a" \
+ -create -output lib/iOS/libssl.a
+
+echo "Cleaning up"
+rm -rf /tmp/${OPENSSL_VERSION}-*
+rm -rf ${OPENSSL_VERSION}
+
+echo "Done"
OpenPOWER on IntegriCloud