Created
October 13, 2016 02:51
-
-
Save nealsun/f04df9b5f222e468e75837f58243ac82 to your computer and use it in GitHub Desktop.
build openssl for ios
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # Yay shell scripting! This script builds a static version of | |
| # OpenSSL ${OPENSSL_VERSION} for iOS 7.0 that contains code for | |
| # armv6, armv7, arm7s and i386. | |
| set -x | |
| # Setup paths to stuff we need | |
| OPENSSL_VERSION="1.0.2j" | |
| DEVELOPER="/Applications/Xcode-origin.app/Contents/Developer" | |
| SDK_VERSION="10.0" | |
| MIN_VERSION="7.0" | |
| IPHONEOS_PLATFORM="${DEVELOPER}/Platforms/iPhoneOS.platform" | |
| IPHONEOS_SDK="${IPHONEOS_PLATFORM}/Developer/SDKs/iPhoneOS${SDK_VERSION}.sdk" | |
| IPHONEOS_GCC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |
| IPHONESIMULATOR_PLATFORM="${DEVELOPER}/Platforms/iPhoneSimulator.platform" | |
| IPHONESIMULATOR_SDK="${IPHONESIMULATOR_PLATFORM}/Developer/SDKs/iPhoneSimulator${SDK_VERSION}.sdk" | |
| IPHONESIMULATOR_GCC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" | |
| # Make sure things actually exist | |
| if [ ! -d "$IPHONEOS_PLATFORM" ]; then | |
| echo "Cannot find $IPHONEOS_PLATFORM" | |
| exit 1 | |
| fi | |
| if [ ! -d "$IPHONEOS_SDK" ]; then | |
| echo "Cannot find $IPHONEOS_SDK" | |
| exit 1 | |
| fi | |
| if [ ! -x "$IPHONEOS_GCC" ]; then | |
| echo "Cannot find $IPHONEOS_GCC" | |
| exit 1 | |
| fi | |
| if [ ! -d "$IPHONESIMULATOR_PLATFORM" ]; then | |
| echo "Cannot find $IPHONESIMULATOR_PLATFORM" | |
| exit 1 | |
| fi | |
| if [ ! -d "$IPHONESIMULATOR_SDK" ]; then | |
| echo "Cannot find $IPHONESIMULATOR_SDK" | |
| exit 1 | |
| fi | |
| if [ ! -x "$IPHONESIMULATOR_GCC" ]; then | |
| echo "Cannot find $IPHONESIMULATOR_GCC" | |
| exit 1 | |
| fi | |
| # Clean up whatever was left from our previous build | |
| rm -rf include lib | |
| rm -rf /tmp/openssl-${OPENSSL_VERSION}-* | |
| rm -rf /tmp/openssl-${OPENSSL_VERSION}-*.*-log | |
| build() | |
| { | |
| TARGET=$1 | |
| ARCH=$2 | |
| GCC=$3 | |
| SDK=$4 | |
| EXTRA=$5 | |
| rm -rf "openssl-${OPENSSL_VERSION}" | |
| tar xf "openssl-${OPENSSL_VERSION}.tar" | |
| pushd . | |
| cd "openssl-${OPENSSL_VERSION}" | |
| ./Configure ${TARGET} --openssldir="/tmp/openssl-${OPENSSL_VERSION}-${ARCH}" ${EXTRA} &> "/tmp/openssl-${OPENSSL_VERSION}-${ARCH}.log" | |
| perl -i -pe 's|static volatile sig_atomic_t intr_signal|static volatile int intr_signal|' crypto/ui/ui_openssl.c | |
| perl -i -pe "s|^CC= gcc|CC= ${GCC} -arch ${ARCH} -miphoneos-version-min=${MIN_VERSION}|g" Makefile | |
| perl -i -pe "s|^CFLAG= (.*)|CFLAG= -isysroot ${SDK} \$1|g" Makefile | |
| make &> "/tmp/openssl-${OPENSSL_VERSION}-${ARCH}.build-log" | |
| make install &> "/tmp/openssl-${OPENSSL_VERSION}-${ARCH}.install-log" | |
| popd | |
| rm -rf "openssl-${OPENSSL_VERSION}" | |
| } | |
| build "BSD-generic32" "armv7" "${IPHONEOS_GCC}" "${IPHONEOS_SDK}" "" | |
| build "BSD-generic32" "armv7s" "${IPHONEOS_GCC}" "${IPHONEOS_SDK}" "" | |
| build "BSD-generic64" "arm64" "${IPHONEOS_GCC}" "${IPHONEOS_SDK}" "" | |
| build "BSD-generic32" "i386" "${IPHONESIMULATOR_GCC}" "${IPHONESIMULATOR_SDK}" "" | |
| build "BSD-generic64" "x86_64" "${IPHONESIMULATOR_GCC}" "${IPHONESIMULATOR_SDK}" "-DOPENSSL_NO_ASM" | |
| # | |
| mkdir include | |
| cp -r /tmp/openssl-${OPENSSL_VERSION}-i386/include/openssl include/ | |
| mkdir lib | |
| lipo \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-armv7/lib/libcrypto.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-armv7s/lib/libcrypto.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-arm64/lib/libcrypto.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-i386/lib/libcrypto.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-x86_64/lib/libcrypto.a" \ | |
| -create -output lib/libcrypto.a | |
| lipo \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-armv7/lib/libssl.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-armv7s/lib/libssl.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-arm64/lib/libssl.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-i386/lib/libssl.a" \ | |
| "/tmp/openssl-${OPENSSL_VERSION}-x86_64/lib/libssl.a" \ | |
| -create -output lib/libssl.a | |
| rm -rf "/tmp/openssl-${OPENSSL_VERSION}-*" | |
| rm -rf "/tmp/openssl-${OPENSSL_VERSION}-*.*-log" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment