diff options
Diffstat (limited to 'extra/wolfssl/wolfssl/IDE/apple-universal/build-wolfssl-framework.sh')
-rwxr-xr-x | extra/wolfssl/wolfssl/IDE/apple-universal/build-wolfssl-framework.sh | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/extra/wolfssl/wolfssl/IDE/apple-universal/build-wolfssl-framework.sh b/extra/wolfssl/wolfssl/IDE/apple-universal/build-wolfssl-framework.sh new file mode 100755 index 00000000..a3ff12a6 --- /dev/null +++ b/extra/wolfssl/wolfssl/IDE/apple-universal/build-wolfssl-framework.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +# build-wolfssl-framework.sh +# +# Copyright (C) 2006-2023 wolfSSL Inc. +# +# This file is part of wolfSSL. +# +# wolfSSL is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# wolfSSL is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + +set -euo pipefail + +WOLFSSL_DIR=$(pwd)/../../ +OUTDIR=$(pwd)/artifacts +LIPODIR=${OUTDIR}/lib +SDK_OUTPUT_DIR=${OUTDIR}/xcframework + +CFLAGS_COMMON="" +# Base configure flags +CONF_OPTS="--disable-shared --enable-static" + +helpFunction() +{ + echo "" + echo "Usage: $0 [-c <config flags>]" + echo -e "\t-c Extra flags to be passed to ./configure" + exit 1 # Exit script after printing help +} + +# Parse command line arguments +while getopts ":c:" opt; do + case $opt in + c) + CONF_OPTS+=" $OPTARG" + ;; + \?) + echo "Invalid option: -$OPTARG" >&2; helpFunction + ;; + esac +done + +rm -rf $OUTDIR +mkdir -p $LIPODIR +mkdir -p $SDK_OUTPUT_DIR + +build() { # <ARCH=arm64|x86_64> <TYPE=iphonesimulator|iphoneos|macosx|watchos|watchsimulator|appletvos|appletvsimulator> + set -x + pushd . + cd $WOLFSSL_DIR + + ARCH=$1 + HOST="${ARCH}-apple-darwin" + TYPE=$2 + SDK_ROOT=$(xcrun --sdk ${TYPE} --show-sdk-path) + + ./configure -prefix=${OUTDIR}/wolfssl-${TYPE}-${ARCH} ${CONF_OPTS} --host=${HOST} \ + CFLAGS="${CFLAGS_COMMON} -arch ${ARCH} -isysroot ${SDK_ROOT}" + make -j src/libwolfssl.la + make install + + popd + set +x +} + +XCFRAMEWORKS= +for type in iphonesimulator macosx appletvsimulator watchsimulator ; do + build arm64 ${type} + build x86_64 ${type} + + # Create universal binaries from architecture-specific static libraries + lipo \ + "$OUTDIR/wolfssl-${type}-x86_64/lib/libwolfssl.a" \ + "$OUTDIR/wolfssl-${type}-arm64/lib/libwolfssl.a" \ + -create -output $LIPODIR/libwolfssl-${type}.a + + echo "Checking libraries" + xcrun -sdk ${type} lipo -info $LIPODIR/libwolfssl-${type}.a + XCFRAMEWORKS+=" -library ${LIPODIR}/libwolfssl-${type}.a -headers ${OUTDIR}/wolfssl-${type}-arm64/include" +done + +for type in iphoneos appletvos ; do + build arm64 ${type} + + # Create universal binaries from architecture-specific static libraries + lipo \ + "$OUTDIR/wolfssl-${type}-arm64/lib/libwolfssl.a" \ + -create -output $LIPODIR/libwolfssl-${type}.a + + echo "Checking libraries" + xcrun -sdk ${type} lipo -info $LIPODIR/libwolfssl-${type}.a + XCFRAMEWORKS+=" -library ${LIPODIR}/libwolfssl-${type}.a -headers ${OUTDIR}/wolfssl-${type}-arm64/include" +done + +############################################################################################################################################ +# ********** BUILD FRAMEWORK +############################################################################################################################################ + +xcodebuild -create-xcframework ${XCFRAMEWORKS} -output ${SDK_OUTPUT_DIR}/libwolfssl.xcframework |