diff --git a/scripts/OpenSSL-DownloadAndBuild.command b/scripts/OpenSSL-DownloadAndBuild.command index f1e4b8469..00a81739d 100755 --- a/scripts/OpenSSL-DownloadAndBuild.command +++ b/scripts/OpenSSL-DownloadAndBuild.command @@ -26,7 +26,7 @@ ARCHS="i386 x86_64 armv7 armv7s arm64" # Use default SDK version if not set if [ -z ${SDK_VERSION} ]; then - SDK_VERSION=`xcrun -sdk iphoneos --show-sdk-version` + SDK_VERSION=`xcrun -sdk iphoneos --show-sdk-version` fi CORES=`sysctl hw.ncpu | awk '{print $2}'` @@ -44,87 +44,97 @@ if [ ! -d "$DEVELOPER" ]; then echo "sudo xcode-select -switch /Applications/Xcode.app/Contents/Developer" exit 1 fi +function run { + echo "PATH=$PATH" + $@ + local status=$? + if [ $status -ne 0 ]; then + echo "error with $@" >&2 + exit $status + fi + return $status +} # Functions function buildArch(){ - ARCH=$1 - if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; - then - PLATFORM="iPhoneSimulator" - else - sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c" - PLATFORM="iPhoneOS" - fi + ARCH=$1 + if [[ "${ARCH}" == "i386" || "${ARCH}" == "x86_64" ]]; + then + PLATFORM="iPhoneSimulator" + else + sed -ie "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c" + PLATFORM="iPhoneOS" + fi - 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}" - if [ ! -z $MIN_SDK_VERSION ]; then - export CC="$CC -miphoneos-version-min=${MIN_SDK_VERSION}" - fi - echo "Building openssl-${OPENSSLVERSION} for ${PLATFORM} ${SDK_VERSION} ${ARCH} (min SDK set: ${MIN_SDK_VERSION:-"none"})" + run export CROSS_TOP="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer" + run export CROSS_SDK="${PLATFORM}${SDK_VERSION}.sdk" + run export BUILD_TOOLS="${DEVELOPER}" + run export CC="${BUILD_TOOLS}/usr/bin/gcc -arch ${ARCH}" + if [ ! -z $MIN_SDK_VERSION ]; then + run export CC="$CC -miphoneos-version-min=${MIN_SDK_VERSION}" + fi + echo "Building openssl-${OPENSSLVERSION} for ${PLATFORM} ${SDK_VERSION} ${ARCH} (min SDK set: ${MIN_SDK_VERSION:-"none"})" - LOGFILE="BuildLog.darwin-${ARCH}.txt" - echo -n " Please wait ..." - if [[ "$OPENSSLVERSION" =~ 1.0.0. ]]; then - ./Configure BSD-generic32 > "${LOGFILE}" 2>&1 - elif [ "${ARCH}" == "x86_64" ]; then - ./Configure darwin64-x86_64-cc > "${LOGFILE}" 2>&1 - elif [ "${ARCH}" == "i386" ]; then - ./Configure iphoneos-cross no-asm > "${LOGFILE}" 2>&1 - else - ./Configure iphoneos-cross > "${LOGFILE}" 2>&1 - fi + LOGFILE="BuildLog.darwin-${ARCH}.txt" + echo -n " Please wait ..." + if [[ "$OPENSSLVERSION" =~ 1.0.0. ]]; then + run ./Configure BSD-generic32 > "${LOGFILE}" 2>&1 + elif [ "${ARCH}" == "x86_64" ]; then + run ./Configure darwin64-x86_64-cc > "${LOGFILE}" 2>&1 + elif [ "${ARCH}" == "i386" ]; then + run ./Configure iphoneos-cross no-asm > "${LOGFILE}" 2>&1 + else + run ./Configure iphoneos-cross > "${LOGFILE}" 2>&1 + fi - make ${MAKEOPTS} >> ${LOGFILE} 2>&1 - echo " Done. Build log saved in ${LOGFILE}" - cp libcrypto.a ../../lib/libcrypto_${ARCH}.a - cp libssl.a ../../lib/libssl_${ARCH}.a - make clean >/dev/null 2>&1 + run make ${MAKEOPTS} >> ${LOGFILE} 2>&1 + echo " Done. Build log saved in ${LOGFILE}" + run cp libcrypto.a ../../lib/libcrypto_${ARCH}.a + run cp libssl.a ../../lib/libssl_${ARCH}.a + run make clean >/dev/null 2>&1 } # main if [ $# -gt 0 ];then - INSTALLDIR=$1 - if [ ! -d $INSTALLDIR ];then - echo "Install directory \"$INSTALLDIR\" does not exist" - exit 1 - fi + INSTALLDIR=$1 + if [ ! -d $INSTALLDIR ];then + echo "Install directory \"$INSTALLDIR\" does not exist" + exit 1 + fi fi cd $INSTALLDIR if [ ! -d openssl ];then - mkdir openssl + run mkdir openssl fi -cd openssl +run cd openssl CS=`shasum -a 256 "openssl-$OPENSSLVERSION.tar.gz" | cut -d ' ' -f1` if [ ! "$CS" = "$SHA256SUM" ]; then echo "Downloading OpenSSL Version $OPENSSLVERSION ..." - rm -f "openssl-$OPENSSLVERSION.tar.gz" - curl -o "openssl-$OPENSSLVERSION.tar.gz" https://www.openssl.org/source/openssl-$OPENSSLVERSION.tar.gz + run rm -f "openssl-$OPENSSLVERSION.tar.gz" + run curl -o "openssl-$OPENSSLVERSION.tar.gz" https://www.openssl.org/source/openssl-$OPENSSLVERSION.tar.gz CS=`shasum -a 256 "openssl-$OPENSSLVERSION.tar.gz" | cut -d ' ' -f1` if [ ! "$CS" = "$SHA256SUM" ]; then - echo "Download failed or invalid checksum. Have a nice day." - exit 1 + echo "Download failed or invalid checksum. Have a nice day." + exit 1 fi fi # remove old build dir -rm -rf openssltmp -mkdir openssltmp -cd openssltmp +run rm -rf openssltmp +run mkdir openssltmp +run cd openssltmp echo "Unpacking OpenSSL ..." -tar xfz "../openssl-$OPENSSLVERSION.tar.gz" +run tar xfz "../openssl-$OPENSSLVERSION.tar.gz" if [ ! $? = 0 ]; then echo "Unpacking failed." exit 1 fi echo -cd "openssl-$OPENSSLVERSION" +run cd "openssl-$OPENSSLVERSION" case `pwd` in *\ * ) @@ -134,22 +144,22 @@ case `pwd` in esac # Cleanup old build artifacts -mkdir -p ../../include/openssl -rm -f ../../include/openssl/*.h +run mkdir -p ../../include/openssl +run rm -f ../../include/openssl/*.h -mkdir -p ../../lib -rm -f ../../lib/*.a +run mkdir -p ../../lib +run rm -f ../../lib/*.a echo "Copying header files ..." -cp include/openssl/*.h ../../include/openssl/ +run cp include/openssl/*.h ../../include/openssl/ echo for i in ${ARCHS}; do - buildArch $i + buildArch $i done echo "Combining to unversal binary" -lipo -create ../../lib/libcrypto_*.a -o ../../lib/libcrypto.a -lipo -create ../../lib/libssl_*.a -o ../../lib/libssl.a +run lipo -create ../../lib/libcrypto_*.a -o ../../lib/libcrypto.a +run lipo -create ../../lib/libssl_*.a -o ../../lib/libssl.a echo "Finished. Please verify the contens of the openssl folder in \"$INSTALLDIR\""