blob: e2078d12c08c94b61158255e2c3da739c475a4ef [file]
#!/usr/bin/env bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you 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.
#
source $(dirname $0)/common.sh
cd $ROOT_DIR
pip3 install pyyaml
dep=$ROOT_DIR/build-support/dep-version.py
ZLIB_VERSION=$($dep zlib)
OPENSSL_VERSION=$($dep openssl)
BOOST_VERSION=$($dep boost)
PROTOBUF_VERSION=$($dep protobuf)
ZSTD_VERSION=$($dep zstd)
SNAPPY_VERSION=$($dep snappy)
CURL_VERSION=$($dep curl)
cd $MAC_BUILD_DIR/build
##############################################################################
if [ ! -f zlib-${ZLIB_VERSION}.done ]; then
echo "Building ZLib"
curl -O -L https://zlib.net/fossils/zlib-${ZLIB_VERSION}.tar.gz
tar xfz zlib-$ZLIB_VERSION.tar.gz
pushd zlib-$ZLIB_VERSION
CFLAGS="-fPIC -O3 -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" ./configure --prefix=$PREFIX
make -j16
make install
popd
rm -rf zlib-$ZLIB_VERSION.tar.gz zlib-$ZLIB_VERSION
touch zlib-${ZLIB_VERSION}.done
else
echo "Using cached ZLib"
fi
###############################################################################
OPENSSL_VERSION_UNDERSCORE=$(echo $OPENSSL_VERSION | sed 's/\./_/g')
if [ ! -f openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.done ]; then
echo "Building OpenSSL"
curl -O -L https://github.com/openssl/openssl/archive/OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz
tar xfz OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz
pushd openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}
if [ $ARCH = 'arm64' ]; then
PLATFORM=darwin64-arm64-cc
else
PLATFORM=darwin64-x86_64-cc
fi
./Configure --prefix=$PREFIX no-shared no-unit-test $PLATFORM
make -j8
make install_sw
popd
rm -rf OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.tar.gz openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}
touch openssl-OpenSSL_${OPENSSL_VERSION_UNDERSCORE}.done
else
echo "Using cached OpenSSL"
fi
###############################################################################
BOOST_VERSION_=${BOOST_VERSION//./_}
DIR=boost-src-${BOOST_VERSION}
if [ ! -f $DIR.done ]; then
echo "Building Boost"
curl -O -L https://boostorg.jfrog.io/artifactory/main/release/${BOOST_VERSION}/source/boost_${BOOST_VERSION_}.tar.gz
tar xfz boost_${BOOST_VERSION_}.tar.gz
rm -rf $DIR
mv boost_${BOOST_VERSION_} $DIR
pushd $DIR
./bootstrap.sh --prefix=$PREFIX --with-libraries=system
./b2 address-model=64 cxxflags="-fPIC -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
link=static threading=multi \
variant=release \
install
popd
rm -rf $DIR boost_${BOOST_VERSION_}.tar.gz
touch $DIR.done
else
echo "Using cached Boost"
fi
###############################################################################
if [ ! -f protobuf-${PROTOBUF_VERSION}.done ]; then
echo "Building Protobuf"
curl -O -L https://github.com/google/protobuf/releases/download/v${PROTOBUF_VERSION}/protobuf-cpp-${PROTOBUF_VERSION}.tar.gz
tar xfz protobuf-cpp-${PROTOBUF_VERSION}.tar.gz
pushd protobuf-${PROTOBUF_VERSION}
CXXFLAGS="-fPIC -arch arm64 -arch x86_64 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
./configure --prefix=$PREFIX
make -j16 V=1
make install
popd
pushd install/lib
echo "Propose target arch static lib" ${ARCH}
mv libprotobuf.a libprotobuf_universal.a
lipo libprotobuf_universal.a -thin ${ARCH} -output libprotobuf.a
popd
rm -rf protobuf-${PROTOBUF_VERSION} protobuf-cpp-${PROTOBUF_VERSION}.tar.gz
touch protobuf-${PROTOBUF_VERSION}.done
else
echo "Using cached Protobuf"
fi
###############################################################################
if [ ! -f zstd-${ZSTD_VERSION}.done ]; then
echo "Building ZStd"
curl -O -L https://github.com/facebook/zstd/releases/download/v${ZSTD_VERSION}/zstd-${ZSTD_VERSION}.tar.gz
tar xfz zstd-${ZSTD_VERSION}.tar.gz
pushd zstd-${ZSTD_VERSION}
CFLAGS="-fPIC -O3 -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
PREFIX=$PREFIX \
make -j16 -C lib install
popd
rm -rf zstd-${ZSTD_VERSION} zstd-${ZSTD_VERSION}.tar.gz
touch zstd-${ZSTD_VERSION}.done
else
echo "Using cached ZStd"
fi
###############################################################################
if [ ! -f snappy-${SNAPPY_VERSION}.done ]; then
echo "Building Snappy"
curl -O -L https://github.com/google/snappy/archive/refs/tags/${SNAPPY_VERSION}.tar.gz
tar xfz ${SNAPPY_VERSION}.tar.gz
pushd snappy-${SNAPPY_VERSION}
CXXFLAGS="-fPIC -O3 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
cmake . -DCMAKE_OSX_ARCHITECTURES=${ARCH} -DCMAKE_INSTALL_PREFIX=$PREFIX -DSNAPPY_BUILD_TESTS=OFF -DSNAPPY_BUILD_BENCHMARKS=OFF
make -j16
make install
touch .done
popd
rm -rf snappy-${SNAPPY_VERSION} ${SNAPPY_VERSION}.tar.gz
touch snappy-${SNAPPY_VERSION}.done
else
echo "Using cached Snappy"
fi
###############################################################################
if [ ! -f curl-${CURL_VERSION}.done ]; then
echo "Building LibCurl"
CURL_VERSION_=${CURL_VERSION//./_}
curl -O -L https://github.com/curl/curl/releases/download/curl-${CURL_VERSION_}/curl-${CURL_VERSION}.tar.gz
tar xfz curl-${CURL_VERSION}.tar.gz
pushd curl-${CURL_VERSION}
CFLAGS="-fPIC -arch ${ARCH} -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
./configure --with-ssl=$PREFIX \
--without-nghttp2 \
--without-libidn2 \
--disable-ldap \
--without-brotli \
--without-secure-transport \
--disable-ipv6 \
--prefix=$PREFIX \
--host=$ARCH-apple-darwin
make -j16 install
popd
rm -rf curl-${CURL_VERSION} curl-${CURL_VERSION}.tar.gz
touch curl-${CURL_VERSION}.done
else
echo "Using cached LibCurl"
fi