Created
June 24, 2019 13:59
-
-
Save Wizermil/a1dea648e1315111e46f7179c21ac027 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
Z_VERSION="1.2.11" | |
ARCHS=("i386" "armv7" "armv7s" "arm64" "arm64e" "x86_64") | |
SDK_VERSION="12.2" | |
ROOT_DIR=$(pwd) | |
WORKER=$(getconf _NPROCESSORS_ONLN) | |
BUILD_DIR="build/ios/z" | |
LOG_FILE="$ROOT_DIR/$BUILD_DIR/build.log" | |
if [ -d "$BUILD_DIR/download" ]; then | |
rm -rf "$BUILD_DIR/download" | |
fi | |
if [ -d "$BUILD_DIR/source" ]; then | |
rm -rf "$BUILD_DIR/source" | |
fi | |
if [ -f "$LOG_FILE" ]; then | |
rm "$LOG_FILE" | |
touch "$LOG_FILE" | |
fi | |
mkdir -p "$BUILD_DIR/download" | |
mkdir -p "$BUILD_DIR/source" | |
error() { | |
echo -e "$@" 1>&2 | |
} | |
fail() { | |
error "$@" | |
exit 1 | |
} | |
echo "Downloading: z" | |
curl -Lo "$BUILD_DIR/download/z-$Z_VERSION.tar.gz" "https://zlib.net/zlib-$Z_VERSION.tar.gz" >> "$LOG_FILE" 2>&1 || fail "Error download z" | |
echo "Downloaded: z" | |
echo "Uncompressing: z" | |
tar zxf "$BUILD_DIR/download/z-$Z_VERSION.tar.gz" -C "$BUILD_DIR/source" >> "$LOG_FILE" 2>&1 || fail "Error uncompress z" | |
echo "Uncompressed: z" | |
for ARCH in "${ARCHS[@]}"; do | |
echo " " | |
cd "$ROOT_DIR" || exit 1 | |
if [ -d "$BUILD_DIR/output/$ARCH" ]; then | |
rm -rf "$BUILD_DIR/output/$ARCH" | |
fi | |
mkdir -p "$BUILD_DIR/output/$ARCH" | |
cp -R "$BUILD_DIR/source/zlib-$Z_VERSION/" "$BUILD_DIR/output/$ARCH" | |
if [ -d "$BUILD_DIR/install/$ARCH" ]; then | |
rm -rf "$BUILD_DIR/install/$ARCH" | |
fi | |
mkdir -p "$BUILD_DIR/install/$ARCH" | |
if [ "$ARCH" == "i386" ] || [ "$ARCH" == "x86_64" ]; then | |
PLATFORM="iPhoneSimulator" | |
MIN_VERSION="-mios-simulator-version-min" | |
else | |
PLATFORM="iPhoneOS" | |
MIN_VERSION="-mios-version-min" | |
fi | |
export CROSS_COMPILE="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/" | |
export CROSS_TOP="/Applications/Xcode.app/Contents/Developer/Platforms/$PLATFORM.platform/Developer/" | |
export CROSS_SDK="${PLATFORM}${SDK_VERSION}.sdk" | |
export BUILD_SDKROOT="/Applications/Xcode.app/Contents/Developer/Platforms/$PLATFORM.platform/Developer/SDKs/${PLATFORM}${SDK_VERSION}.sdk" | |
export LDFLAGS="-arch $ARCH -pipe -isysroot $BUILD_SDKROOT $MIN_VERSION=10.0 -Ofast" | |
export CFLAGS="-arch $ARCH -pipe -isysroot $BUILD_SDKROOT -fembed-bitcode $MIN_VERSION=10.0 -Ofast" | |
export CPPFLAGS="$CFLAGS" | |
export CXXFLAGS="${CFLAGS} -fno-exceptions -fno-rtti" | |
export CC="clang" | |
export CPP="clang -E" | |
export CXX="clang++" | |
cd "$ROOT_DIR/$BUILD_DIR/output/$ARCH" || exit 1 | |
if [ -d "${BUILD_DIR}/download" ]; then | |
rm -rf "${BUILD_DIR}/download" | |
fi | |
if [ "$ARCH" == "x86_64" ] || [ "$ARCH" == "i386" ]; then | |
export CFLAGS="$CFLAGS -msse4.2 -arch $ARCH" | |
export CPPFLAGS="$CPPFLAGS -msse4.2 -arch $ARCH" | |
export CXXFLAGS="${CXXFLAGS} -msse4.2 -arch $ARCH" | |
elif [ "$ARCH" == "armv7" ] || [ "$ARCH" == "armv7s" ] || [ "$ARCH" == "arm64" ] || [ "$ARCH" == "arm64e" ]; then | |
export CFLAGS="$CFLAGS -mfpu=neon -arch $ARCH" | |
export CPPFLAGS="$CPPFLAGS -mfpu=neon -arch $ARCH" | |
export CXXFLAGS="${CXXFLAGS} -mfpu=neon -arch $ARCH" | |
fi | |
echo "Configuring: z ${ARCH}" | |
./configure --static --const --zprefix --prefix="${ROOT_DIR}/${BUILD_DIR}/install/${ARCH}" >> "$LOG_FILE" 2>&1 || fail "Error configuration z $ARCH" | |
echo "Configured: z $ARCH" | |
echo "Compiling: z $ARCH" | |
make -j "$WORKER" >> "$LOG_FILE" 2>&1 || fail "Error compilation z $ARCH" | |
echo "Compiled: z $ARCH" | |
echo "Installing: z $ARCH" | |
make install >> "$LOG_FILE" 2>&1 || fail "Error installation z $ARCH" | |
echo "Installed: z $ARCH" | |
done | |
cd "$ROOT_DIR/$BUILD_DIR" || exit 1 | |
if [ -f "libz.a" ]; then | |
rm -f "libz.a" | |
fi | |
echo " " | |
echo "Creating Flat Libs: libz" | |
LIPO_Z_CMD="lipo -create" | |
for ARCH in "${ARCHS[@]}"; do | |
if [ -f "$ROOT_DIR/$BUILD_DIR/install/$ARCH/lib/libz.a" ]; then | |
LIPO_Z_CMD="$LIPO_Z_CMD $ROOT_DIR/$BUILD_DIR/install/$ARCH/lib/libz.a" | |
fi | |
done | |
LIPO_Z_CMD="$LIPO_Z_CMD -output libz.a" | |
eval "$LIPO_Z_CMD" >> "$LOG_FILE" 2>&1 || fail "Error creation flat libz" | |
echo "Created Flat Lib: libz" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment