90 lines
2.9 KiB
Bash
Executable File
90 lines
2.9 KiB
Bash
Executable File
OPENSSL_TARBALL="$SRCROOT/openssl-$OPENSSL_VERSION.tar.gz"
|
|
OPENSSL_SRC="$TARGET_TEMP_DIR/openssl/"
|
|
LIB_PRODUCT_NAME="$FULL_PRODUCT_NAME"
|
|
SCRIPTS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
|
|
|
|
if [ "$PLATFORM_NAME" == "" ]; then
|
|
echo "PLATFORM_NAME not defined"
|
|
fi
|
|
|
|
# check whether libcrypto.a already exists - we'll only build if it does not
|
|
if [ -f "$TARGET_BUILD_DIR/$LIB_PRODUCT_NAME" ]; then
|
|
echo "Using previously-built libary $TARGET_BUILD_DIR/$LIB_PRODUCT_NAME - skipping build"
|
|
echo "To force a rebuild clean project and clean dependencies"
|
|
exit 0;
|
|
else
|
|
echo "No previously-built libary present at $TARGET_BUILD_DIR/$LIB_PRODUCT_NAME - performing build"
|
|
fi
|
|
|
|
if [ ! -f "$OPENSSL_TARBALL" ]; then
|
|
echo "Downloading openssl-$OPENSSL_VERSION.tar.gz"
|
|
curl -O "https://www.openssl.org/source/openssl-$OPENSSL_VERSION.tar.gz" || exit 1
|
|
fi
|
|
|
|
echo "Extracting $OPENSSL_TARBALL..."
|
|
mkdir -p "$OPENSSL_SRC"
|
|
tar -C "$OPENSSL_SRC" --strip-components=1 -zxf "$OPENSSL_TARBALL" || exit 1
|
|
cd "$OPENSSL_SRC"
|
|
patch -p1 < "$SCRIPTS_DIR/iossimulator_patch.diff"
|
|
|
|
CC="xcrun -sdk $PLATFORM_NAME cc"
|
|
OPENSSL_OPTIONS="no-shared $OPENSSL_OPTIONS"
|
|
|
|
echo "Creating $LIB_PRODUCT_NAME with $OPENSSL_OPTIONS for architectures: $ARCHS"
|
|
|
|
|
|
|
|
for BUILDARCH in $ARCHS
|
|
do
|
|
echo "Building $BUILDARCH"
|
|
|
|
make clean
|
|
|
|
if [ "$PLATFORM_NAME" = "macosx" ]; then
|
|
if [ "$BUILDARCH" = "i386" ]; then
|
|
CONFIGURE_OPTIONS="darwin-i386-cc $OPENSSL_OPTIONS"
|
|
elif [ "$BUILDARCH" = "x86_64" ]; then
|
|
CONFIGURE_OPTIONS="darwin64-x86_64-cc $OPENSSL_OPTIONS"
|
|
elif [ "$BUILDARCH" = "arm64" ]; then
|
|
CONFIGURE_OPTIONS="darwin64-arm64-cc $OPENSSL_OPTIONS"
|
|
fi
|
|
elif [ "$PLATFORM_NAME" = "iphoneos" ]; then
|
|
if [[ "$BUILDARCH" = "armv"* ]]; then
|
|
CONFIGURE_OPTIONS="ios-xcrun $OPENSSL_OPTIONS"
|
|
elif [ "$BUILDARCH" = "arm64" ]; then
|
|
CONFIGURE_OPTIONS="ios64-xcrun $OPENSSL_OPTIONS"
|
|
fi
|
|
elif [ "$PLATFORM_NAME" = "iphonesimulator" ]; then
|
|
if [ "$BUILDARCH" = "i386" ]; then
|
|
CONFIGURE_OPTIONS="iossimulator-xcrun $OPENSSL_OPTIONS"
|
|
elif [ "$BUILDARCH" = "x86_64" ]; then
|
|
CONFIGURE_OPTIONS="iossimulator64-xcrun $OPENSSL_OPTIONS"
|
|
elif [ "$BUILDARCH" = "arm64" ]; then
|
|
CONFIGURE_OPTIONS="iossimulator-arm64-xcrun $OPENSSL_OPTIONS"
|
|
fi
|
|
else
|
|
echo "Unsupported platform $PLATFORM_NAME"
|
|
exit 1
|
|
fi
|
|
|
|
./Configure $CONFIGURE_OPTIONS -fembed-bitcode -openssldir="$BUILD_DIR"
|
|
|
|
make depend
|
|
make
|
|
|
|
echo "Creating $LIB_PRODUCT_NAME for $BUILDARCH in $TARGET_TEMP_DIR"
|
|
libtool -static libcrypto.a libssl.a -o "$TARGET_TEMP_DIR/$BUILDARCH-$LIB_PRODUCT_NAME"
|
|
done
|
|
|
|
|
|
echo "Creating universal archive in $TARGET_BUILD_DIR"
|
|
mkdir -p "$TARGET_BUILD_DIR"
|
|
lipo -create "$TARGET_TEMP_DIR/"*-$LIB_PRODUCT_NAME -output "$TARGET_BUILD_DIR/$LIB_PRODUCT_NAME"
|
|
|
|
echo "Executing ranlib"
|
|
ranlib "$TARGET_BUILD_DIR/$LIB_PRODUCT_NAME"
|
|
|
|
echo "Copying Headers"
|
|
mkdir -p "$TARGET_BUILD_DIR/headers"
|
|
cp -RLf "$OPENSSL_SRC/include/"* "$TARGET_BUILD_DIR/headers/"
|