├── README.md └── openssl-build.sh /README.md: -------------------------------------------------------------------------------- 1 | # openssl-ios-build-shell-script 2 | Build openssl with shell script-only support to use on iOS, and bitcode is supported. 3 | 4 | # Usage 5 | 1.Download openssl source code(openssl-*.tar.gz). 6 | 7 | 2.Move openssl-build.sh into the folder where the openssl-*.tar.gz is cotained. 8 | 9 | 3.Edit openssl-build.sh, set the value of OPENSSL_COMPRESSED_FN and -miphoneos-version-min( supported minimal iOS version ). 10 | If you want to support the bitcode, find "export CC=${CLANG} -arch ${ARCH} -miphoneos-version-min=6.0", add the -fembed-bitcode option at end of line. 11 | 12 | 4.cd the the folder where the openssl-*.tar.gz is cotained. 13 | 14 | 5.Execute openssl-build.sh, libraries are created at "openssl-version-build/universal/". 15 | 16 | 17 | -------------------------------------------------------------------------------- /openssl-build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Created by FangYuan Gui on 13.01.16. 4 | # Copyright 2011 FangYuan Gui. All rights reserved. 5 | # 6 | # Licensed under the Apache License 7 | 8 | set -u 9 | 10 | OPENSSL_COMPRESSED_FN="openssl-1.0.2e.tar.gz" 11 | OPENSSL_SRC_DIR=${OPENSSL_COMPRESSED_FN//.tar*/} 12 | OPENSSL_BUILD_DIR=${PWD}/${OPENSSL_SRC_DIR}-build 13 | OPENSSL_BUILD_LOG_DIR=${OPENSSL_BUILD_DIR}/log 14 | OPENSSL_BUILD_UNIVERSAL_DIR=${OPENSSL_BUILD_DIR}/universal 15 | OPENSSL_UNIVERSAL_LIB_DIR=${OPENSSL_BUILD_UNIVERSAL_DIR}/lib 16 | 17 | rm -rf ${OPENSSL_SRC_DIR} 18 | rm -rf ${OPENSSL_BUILD_DIR} 19 | 20 | tar xfz ${OPENSSL_COMPRESSED_FN} || exit 1 21 | 22 | if [ ! -d "${OPENSSL_BUILD_UNIVERSAL_DIR}" ]; then 23 | mkdir -p "${OPENSSL_BUILD_UNIVERSAL_DIR}" 24 | fi 25 | 26 | if [ ! -d "${OPENSSL_BUILD_LOG_DIR}" ]; then 27 | mkdir "${OPENSSL_BUILD_LOG_DIR}" 28 | fi 29 | 30 | if [ ! -d "${OPENSSL_UNIVERSAL_LIB_DIR}" ]; then 31 | mkdir "${OPENSSL_UNIVERSAL_LIB_DIR}" 32 | fi 33 | 34 | 35 | pushd . 36 | cd ${OPENSSL_SRC_DIR} 37 | 38 | CLANG=$(xcrun --find clang) 39 | 40 | IPHONE_OS_SDK_PATH=$(xcrun -sdk iphoneos --show-sdk-path) 41 | IPHONE_OS_CROSS_TOP=${IPHONE_OS_SDK_PATH//\/SDKs*/} 42 | IPHONE_OS_CROSS_SDK=${IPHONE_OS_SDK_PATH##*/} 43 | 44 | IPHONE_SIMULATOR_SDK_PATH=$(xcrun -sdk iphonesimulator --show-sdk-path) 45 | IPHONE_SIMULATOR_CROSS_TOP=${IPHONE_SIMULATOR_SDK_PATH//\/SDKs*/} 46 | IPHONE_SIMULATOR_CROSS_SDK=${IPHONE_SIMULATOR_SDK_PATH##*/} 47 | 48 | ARCH_LIST=("armv7" "armv7s" "arm64" "i386" "x86_64") 49 | ARCH_COUNT=${#ARCH_LIST[@]} 50 | CROSS_TOP_LIST=(${IPHONE_OS_CROSS_TOP} ${IPHONE_OS_CROSS_TOP} ${IPHONE_OS_CROSS_TOP} ${IPHONE_SIMULATOR_CROSS_TOP} ${IPHONE_SIMULATOR_CROSS_TOP}) 51 | CROSS_SDK_LIST=(${IPHONE_OS_CROSS_SDK} ${IPHONE_OS_CROSS_SDK} ${IPHONE_OS_CROSS_SDK} ${IPHONE_SIMULATOR_CROSS_SDK} ${IPHONE_SIMULATOR_CROSS_SDK}) 52 | 53 | config_make() 54 | { 55 | ARCH=$1; 56 | export CROSS_TOP=$2 57 | export CROSS_SDK=$3 58 | #export CC="${CLANG} -arch ${ARCH} -miphoneos-version-min=6.0 -fembed-bitcode" 59 | export CC="${CLANG} -arch ${ARCH} -miphoneos-version-min=6.0" 60 | 61 | make clean &> ${OPENSSL_BUILD_LOG_DIR}/make_clean.log 62 | 63 | echo "configure for ${ARCH}..." 64 | 65 | if [ "x86_64" == ${ARCH} ]; then 66 | ./Configure iphoneos-cross --prefix=${OPENSSL_BUILD_DIR}/${ARCH} no-asm &> ${OPENSSL_BUILD_LOG_DIR}/${ARCH}-conf.log 67 | else 68 | ./Configure iphoneos-cross --prefix=${OPENSSL_BUILD_DIR}/${ARCH} &> ${OPENSSL_BUILD_LOG_DIR}/${ARCH}-conf.log 69 | fi 70 | 71 | echo "build for ${ARCH}..." 72 | make &> ${OPENSSL_BUILD_LOG_DIR}/${ARCH}-make.log 73 | make install_sw &> ${OPENSSL_BUILD_LOG_DIR}/${ARCH}-make-install.log 74 | 75 | unset CC 76 | unset CROSS_SDK 77 | unset CROSS_TOP 78 | 79 | echo -e "\n" 80 | } 81 | 82 | for ((i=0; i < ${ARCH_COUNT}; i++)) 83 | do 84 | config_make ${ARCH_LIST[i]} ${CROSS_TOP_LIST[i]} ${CROSS_SDK_LIST[i]} 85 | done 86 | 87 | create_lib() 88 | { 89 | LIB_SRC=lib/$1 90 | LIB_DST=${OPENSSL_UNIVERSAL_LIB_DIR}/$1 91 | LIB_PATHS=( ${ARCH_LIST[@]/#/${OPENSSL_BUILD_DIR}/} ) 92 | LIB_PATHS=( ${LIB_PATHS[@]/%//${LIB_SRC}} ) 93 | lipo ${LIB_PATHS[@]} -create -output ${LIB_DST} 94 | } 95 | 96 | create_lib "libssl.a" 97 | create_lib "libcrypto.a" 98 | 99 | cp -R ${OPENSSL_BUILD_DIR}/armv7/include ${OPENSSL_BUILD_UNIVERSAL_DIR} 100 | 101 | popd 102 | 103 | rm -rf ${OPENSSL_SRC_DIR} 104 | 105 | echo "done." 106 | --------------------------------------------------------------------------------