123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 |
- #! /usr/bin/env bash
- #
- # Copyright (C) 2013-2014 Bilibili
- # Copyright (C) 2013-2014 Zhang Rui <bbcallen@gmail.com>
- #
- # Licensed under the Apache License, Version 2.0 (the "License");
- # you may not use this file except in compliance with the License.
- # You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- #
- # This script is based on projects below
- # https://github.com/x2on/OpenSSL-for-iPhone
- #--------------------
- echo "===================="
- echo "[*] check host"
- echo "===================="
- set -e
- FF_XCRUN_DEVELOPER=`xcode-select -print-path`
- if [ ! -d "$FF_XCRUN_DEVELOPER" ]; then
- echo "xcode path is not set correctly $FF_XCRUN_DEVELOPER does not exist (most likely because of xcode > 4.3)"
- echo "run"
- echo "sudo xcode-select -switch <xcode path>"
- echo "for default installation:"
- echo "sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer"
- exit 1
- fi
- case $FF_XCRUN_DEVELOPER in
- *\ * )
- echo "Your Xcode path contains whitespaces, which is not supported."
- exit 1
- ;;
- esac
- #--------------------
- # include
- #--------------------
- # common defines
- FF_ARCH=$1
- if [ -z "$FF_ARCH" ]; then
- echo "You must specific an architecture 'armv7, armv7s, arm64, i386, x86_64, ...'.\n"
- exit 1
- fi
- FF_BUILD_ROOT=`pwd`
- FF_TAGET_OS="darwin"
- # openssl build params
- export COMMON_FF_CFG_FLAGS=
- OPENSSL_CFG_FLAGS=
- OPENSSL_EXTRA_CFLAGS=
- OPENSSL_CFG_CPU=
- # i386, x86_64
- OPENSSL_CFG_FLAGS_SIMULATOR=
- # armv7, armv7s, arm64
- OPENSSL_CFG_FLAGS_ARM=
- OPENSSL_CFG_FLAGS_ARM="iphoneos-cross"
- echo "build_root: $FF_BUILD_ROOT"
- #--------------------
- echo "===================="
- echo "[*] config arch $FF_ARCH"
- echo "===================="
- FF_BUILD_NAME="unknown"
- FF_XCRUN_PLATFORM="iPhoneOS"
- FF_XCRUN_OSVERSION=
- FF_GASPP_EXPORT=
- FF_XCODE_BITCODE=
- if [ "$FF_ARCH" = "i386" ]; then
- FF_BUILD_NAME="openssl-i386"
- FF_XCRUN_PLATFORM="iPhoneSimulator"
- FF_XCRUN_OSVERSION="-mios-simulator-version-min=6.0"
- OPENSSL_CFG_FLAGS="darwin-i386-cc $OPENSSL_CFG_FLAGS"
- elif [ "$FF_ARCH" = "x86_64" ]; then
- FF_BUILD_NAME="openssl-x86_64"
- FF_XCRUN_PLATFORM="iPhoneSimulator"
- FF_XCRUN_OSVERSION="-mios-simulator-version-min=7.0"
- OPENSSL_CFG_FLAGS="darwin64-x86_64-cc $OPENSSL_CFG_FLAGS"
- elif [ "$FF_ARCH" = "armv7" ]; then
- FF_BUILD_NAME="openssl-armv7"
- FF_XCRUN_OSVERSION="-miphoneos-version-min=6.0"
- FF_XCODE_BITCODE="-fembed-bitcode"
- OPENSSL_CFG_FLAGS="$OPENSSL_CFG_FLAGS_ARM $OPENSSL_CFG_FLAGS"
- # OPENSSL_CFG_CPU="--cpu=cortex-a8"
- elif [ "$FF_ARCH" = "armv7s" ]; then
- FF_BUILD_NAME="openssl-armv7s"
- OPENSSL_CFG_CPU="--cpu=swift"
- FF_XCRUN_OSVERSION="-miphoneos-version-min=6.0"
- FF_XCODE_BITCODE="-fembed-bitcode"
- OPENSSL_CFG_FLAGS="$OPENSSL_CFG_FLAGS_ARM $OPENSSL_CFG_FLAGS"
- elif [ "$FF_ARCH" = "arm64" ]; then
- FF_BUILD_NAME="openssl-arm64"
- FF_XCRUN_OSVERSION="-miphoneos-version-min=7.0"
- FF_XCODE_BITCODE="-fembed-bitcode"
- OPENSSL_CFG_FLAGS="$OPENSSL_CFG_FLAGS_ARM $OPENSSL_CFG_FLAGS"
- FF_GASPP_EXPORT="GASPP_FIX_XCODE5=1"
- else
- echo "unknown architecture $FF_ARCH";
- exit 1
- fi
- echo "build_name: $FF_BUILD_NAME"
- echo "platform: $FF_XCRUN_PLATFORM"
- echo "osversion: $FF_XCRUN_OSVERSION"
- #--------------------
- echo "===================="
- echo "[*] make ios toolchain $FF_BUILD_NAME"
- echo "===================="
- FF_BUILD_SOURCE="$FF_BUILD_ROOT/$FF_BUILD_NAME"
- FF_BUILD_PREFIX="$FF_BUILD_ROOT/build/$FF_BUILD_NAME/output"
- mkdir -p $FF_BUILD_PREFIX
- FF_XCRUN_SDK=`echo $FF_XCRUN_PLATFORM | tr '[:upper:]' '[:lower:]'`
- FF_XCRUN_SDK_PLATFORM_PATH=`xcrun -sdk $FF_XCRUN_SDK --show-sdk-platform-path`
- FF_XCRUN_SDK_PATH=`xcrun -sdk $FF_XCRUN_SDK --show-sdk-path`
- FF_XCRUN_CC="xcrun -sdk $FF_XCRUN_SDK clang"
- export CROSS_TOP="$FF_XCRUN_SDK_PLATFORM_PATH/Developer"
- export CROSS_SDK=`echo ${FF_XCRUN_SDK_PATH/#$CROSS_TOP\/SDKs\//}`
- export BUILD_TOOL="$FF_XCRUN_DEVELOPER"
- export CC="$FF_XCRUN_CC -arch $FF_ARCH $FF_XCRUN_OSVERSION"
- echo "build_source: $FF_BUILD_SOURCE"
- echo "build_prefix: $FF_BUILD_PREFIX"
- echo "CROSS_TOP: $CROSS_TOP"
- echo "CROSS_SDK: $CROSS_SDK"
- echo "BUILD_TOOL: $BUILD_TOOL"
- echo "CC: $CC"
- #--------------------
- echo "\n--------------------"
- echo "[*] configurate openssl"
- echo "--------------------"
- OPENSSL_CFG_FLAGS="$OPENSSL_CFG_FLAGS $FF_XCODE_BITCODE"
- OPENSSL_CFG_FLAGS="$OPENSSL_CFG_FLAGS --openssldir=$FF_BUILD_PREFIX"
- # xcode configuration
- export DEBUG_INFORMATION_FORMAT=dwarf-with-dsym
- cd $FF_BUILD_SOURCE
- if [ -f "./Makefile" ]; then
- echo 'reuse configure'
- else
- echo "config: $OPENSSL_CFG_FLAGS"
- ./Configure \
- $OPENSSL_CFG_FLAGS
- make clean
- fi
- #--------------------
- echo "\n--------------------"
- echo "[*] compile openssl"
- echo "--------------------"
- set +e
- make
- make install_sw
|