You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by mo...@apache.org on 2022/07/18 02:50:36 UTC
[doris] branch master updated: [enhancement](thirdparty) Support building thirdparty on macOS (#10677)
This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new e3c19ded44 [enhancement](thirdparty) Support building thirdparty on macOS (#10677)
e3c19ded44 is described below
commit e3c19ded443e25daf8d888c3e338787ec05e1476
Author: Adonis Ling <ad...@gmail.com>
AuthorDate: Mon Jul 18 10:50:30 2022 +0800
[enhancement](thirdparty) Support building thirdparty on macOS (#10677)
---
.editorconfig | 2 +-
thirdparty/build-thirdparty.sh | 1065 ++++++++++++++++++++---------------
thirdparty/download-thirdparty.sh | 10 +-
thirdparty/patches/brpc-1.1.0.patch | 461 +++++++++++++++
thirdparty/vars.sh | 18 +-
5 files changed, 1080 insertions(+), 476 deletions(-)
diff --git a/.editorconfig b/.editorconfig
index 740928132a..329f4bba7d 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -22,6 +22,6 @@ charset = utf-8
end_of_line = lf
insert_final_newline = true
-[*.{java,xml,py}]
+[*.{java,xml,py,sh}]
indent_style = space
indent_size = 4
diff --git a/thirdparty/build-thirdparty.sh b/thirdparty/build-thirdparty.sh
index fa92259c21..ee20ac5fcf 100755
--- a/thirdparty/build-thirdparty.sh
+++ b/thirdparty/build-thirdparty.sh
@@ -28,45 +28,61 @@
#################################################################################
set -e
-curdir=`dirname "$0"`
-curdir=`cd "$curdir"; pwd`
+curdir=$(dirname "$0")
+curdir=$(
+ cd "$curdir"
+ pwd
+)
export DORIS_HOME=$curdir/..
export TP_DIR=$curdir
# Check args
usage() {
- echo "
+ echo "
Usage: $0 <options>
Optional options:
-j build thirdparty parallel
"
- exit 1
+ exit 1
}
-OPTS=$(getopt \
- -n $0 \
- -o '' \
- -o 'h' \
- -l 'help' \
- -o 'j:' \
- -- "$@")
-
-if [ $? != 0 ] ; then
+if ! OPTS=$(getopt \
+ -n "$0" \
+ -o '' \
+ -o 'h' \
+ -l 'help' \
+ -o 'j:' \
+ -- "$@"); then
usage
fi
eval set -- "$OPTS"
-PARALLEL=$[$(nproc)/4+1]
-if [[ $# -ne 1 ]] ; then
+PARALLEL=$(($(nproc) / 4 + 1))
+if [[ $# -ne 1 ]]; then
while true; do
case "$1" in
- -j) PARALLEL=$2; shift 2 ;;
- -h) HELP=1; shift ;;
- --help) HELP=1; shift ;;
- --) shift ; break ;;
- *) echo "Internal error" ; exit 1 ;;
+ -j)
+ PARALLEL=$2
+ shift 2
+ ;;
+ -h)
+ HELP=1
+ shift
+ ;;
+ --help)
+ HELP=1
+ shift
+ ;;
+ --)
+ shift
+ break
+ ;;
+ *)
+ echo "Internal error"
+ exit 1
+ ;;
esac
done
fi
@@ -83,7 +99,7 @@ echo "Get params:
# include custom environment variables
if [[ -f ${DORIS_HOME}/env.sh ]]; then
export BUILD_THIRDPARTY_WIP=1
- . ${DORIS_HOME}/env.sh
+ . "${DORIS_HOME}/env.sh"
export BUILD_THIRDPARTY_WIP=
fi
@@ -92,29 +108,27 @@ if [[ ! -f ${TP_DIR}/download-thirdparty.sh ]]; then
exit 1
fi
-if [ ! -f ${TP_DIR}/vars.sh ]; then
+if [[ ! -f ${TP_DIR}/vars.sh ]]; then
echo "vars.sh is missing".
exit 1
fi
-. ${TP_DIR}/vars.sh
+. "${TP_DIR}/vars.sh"
-cd $TP_DIR
+cd "${TP_DIR}"
# Download thirdparties.
-${TP_DIR}/download-thirdparty.sh
+"${TP_DIR}/download-thirdparty.sh"
export LD_LIBRARY_PATH=$TP_DIR/installed/lib:$LD_LIBRARY_PATH
# toolchain specific warning options and settings
-if [[ "$CC" == *gcc ]]
-then
+if [[ "$CC" == *gcc ]]; then
warning_uninitialized=-Wno-maybe-uninitialized
warning_stringop_truncation=-Wno-stringop-truncation
warning_class_memaccess=-Wno-class-memaccess
warning_array_parameter=-Wno-array-parameter
boost_toolset=gcc
-elif [[ "$CC" == *clang ]]
-then
+elif [[ "$CC" == *clang ]]; then
warning_uninitialized=-Wno-uninitialized
warning_shadow=-Wno-shadow
warning_dangling_gsl=-Wno-dangling-gsl
@@ -127,9 +141,11 @@ then
libhdfs_cxx17=-std=c++1z
fi
+KERNEL="$(uname -s)"
+
# prepare installed prefix
-mkdir -p ${TP_DIR}/installed/lib64
-pushd ${TP_DIR}/installed/
+mkdir -p "${TP_DIR}/installed/lib64"
+pushd "${TP_DIR}/installed"/
ln -sf lib64 lib
popd
@@ -137,10 +153,10 @@ check_prerequest() {
local CMD=$1
local NAME=$2
if ! $CMD; then
- echo $NAME is missing
+ echo "$NAME is missing"
exit 1
else
- echo $NAME is found
+ echo "$NAME is found"
fi
}
@@ -165,9 +181,9 @@ check_prerequest "automake --version" "automake"
check_prerequest "libtoolize --version" "libtool"
# aclocal_version should equal to automake_version
-aclocal_version=`aclocal --version | sed -n '1p'|awk 'NF>1{print $NF}'`
-automake_version=`automake --version | sed -n '1p'|awk 'NF>1{print $NF}'`
-if [ ${aclocal_version} != ${automake_version} ] ; then
+aclocal_version=$(aclocal --version | sed -n '1p' | awk 'NF>1{print $NF}')
+automake_version=$(automake --version | sed -n '1p' | awk 'NF>1{print $NF}')
+if [[ "${aclocal_version}" != "${automake_version}" ]]; then
echo "Error: aclocal version(${aclocal_version}) is not equal to automake version(${automake_version})."
exit 1
fi
@@ -189,19 +205,18 @@ fi
# build all thirdparties
#########################
-
# Name of cmake build directory in each thirdpary project.
# Do not use `build`, because many projects contained a file named `BUILD`
# and if the filesystem is not case sensitive, `mkdir` will fail.
BUILD_DIR=doris_build
check_if_source_exist() {
- if [ -z $1 ]; then
+ if [[ -z $1 ]]; then
echo "dir should specified to check if exist."
exit 1
fi
- if [ ! -d $TP_SOURCE_DIR/$1 ];then
+ if [[ ! -d $TP_SOURCE_DIR/$1 ]]; then
echo "$TP_SOURCE_DIR/$1 does not exist."
exit 1
fi
@@ -209,300 +224,329 @@ check_if_source_exist() {
}
check_if_archieve_exist() {
- if [ -z $1 ]; then
+ if [[ -z $1 ]]; then
echo "archieve should specified to check if exist."
exit 1
fi
- if [ ! -f $TP_SOURCE_DIR/$1 ];then
+ if [[ ! -f $TP_SOURCE_DIR/$1 ]]; then
echo "$TP_SOURCE_DIR/$1 does not exist."
exit 1
fi
}
+remove_all_dylib() {
+ if [[ "${KERNEL}" == 'Darwin' ]]; then
+ find "${TP_INSTALL_DIR}/lib64" -name "*.dylib" -delete
+ fi
+}
+
#libbacktrace
build_libbacktrace() {
check_if_source_exist $LIBBACKTRACE_SOURCE
cd $TP_SOURCE_DIR/$LIBBACKTRACE_SOURCE
CPPFLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
- CXXFLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR
+ CXXFLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix=$TP_INSTALL_DIR
make -j $PARALLEL
make install
}
# libevent
build_libevent() {
- check_if_source_exist $LIBEVENT_SOURCE
- cd $TP_SOURCE_DIR/$LIBEVENT_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${LIBEVENT_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${LIBEVENT_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
CFLAGS="-std=c99 -fPIC -D_BSD_SOURCE -fno-omit-frame-pointer -g -ggdb -O2 -I${TP_INCLUDE_DIR}" \
- CPPLAGS="-I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- ${CMAKE_CMD} -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR -DEVENT__DISABLE_TESTS=ON \
- -DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_SAMPLES=ON -DEVENT__DISABLE_REGRESS=ON ..
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ CPPLAGS="-I${TP_INCLUDE_DIR}" \
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" -DEVENT__DISABLE_TESTS=ON \
+ -DEVENT__DISABLE_OPENSSL=ON -DEVENT__DISABLE_SAMPLES=ON -DEVENT__DISABLE_REGRESS=ON ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
+ remove_all_dylib
}
build_openssl() {
- MACHINE_TYPE=$(uname -m)
+ MACHINE_TYPE="$(uname -m)"
OPENSSL_PLATFORM="linux-x86_64"
- if [[ "${MACHINE_TYPE}" == "aarch64" ]]; then
+ if [[ "${KERNEL}" == 'Darwin' ]]; then
+ OPENSSL_PLATFORM="darwin64-${MACHINE_TYPE}-cc"
+ elif [[ "${MACHINE_TYPE}" == "aarch64" ]]; then
OPENSSL_PLATFORM="linux-aarch64"
fi
- check_if_source_exist $OPENSSL_SOURCE
- cd $TP_SOURCE_DIR/$OPENSSL_SOURCE
+ check_if_source_exist "${OPENSSL_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${OPENSSL_SOURCE}"
CPPFLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
- CXXFLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- LIBDIR="lib" \
- ./Configure --prefix=$TP_INSTALL_DIR --with-rand-seed=devrandom -shared ${OPENSSL_PLATFORM}
+ CXXFLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ LIBDIR="lib" \
+ ./Configure --prefix="${TP_INSTALL_DIR}" --with-rand-seed=devrandom -shared "${OPENSSL_PLATFORM}"
# NOTE(amos): Never use '&&' to concat commands as it will eat error code
# See https://mywiki.wooledge.org/BashFAQ/105 for more detail.
- make -j $PARALLEL
+ make -j "${PARALLEL}"
make install_sw
# NOTE(zc): remove this dynamic library files to make libcurl static link.
# If I don't remove this files, I don't known how to make libcurl link static library
- if [ -f $TP_INSTALL_DIR/lib64/libcrypto.so ]; then
- rm -rf $TP_INSTALL_DIR/lib64/libcrypto.so*
+ if [[ -f "${TP_INSTALL_DIR}/lib64/libcrypto.so" ]]; then
+ rm -rf "${TP_INSTALL_DIR}"/lib64/libcrypto.so*
fi
- if [ -f $TP_INSTALL_DIR/lib64/libssl.so ]; then
- rm -rf $TP_INSTALL_DIR/lib64/libssl.so*
+ if [[ -f "${TP_INSTALL_DIR}/lib64/libssl.so" ]]; then
+ rm -rf "${TP_INSTALL_DIR}"/lib64/libssl.so*
fi
+ remove_all_dylib
}
# thrift
build_thrift() {
- check_if_source_exist $THRIFT_SOURCE
- cd $TP_SOURCE_DIR/$THRIFT_SOURCE
+ check_if_source_exist "${THRIFT_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${THRIFT_SOURCE}"
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ cppflags="-I${TP_INCLUDE_DIR}"
+ ldflags="-L${TP_LIB_DIR} --static"
+ else
+ cppflags="-I${TP_INCLUDE_DIR} -Wno-implicit-function-declaration"
+ ldflags="-L${TP_LIB_DIR}"
+ fi
- echo ${TP_LIB_DIR}
# NOTE(amos): libtool discard -static. --static works.
- ./configure CPPFLAGS="-I${TP_INCLUDE_DIR}" LDFLAGS="-L${TP_LIB_DIR} --static" LIBS="-lcrypto -ldl -lssl" CFLAGS="-fPIC" \
- --prefix=$TP_INSTALL_DIR --docdir=$TP_INSTALL_DIR/doc --enable-static --disable-shared --disable-tests \
- --disable-tutorial --without-qt4 --without-qt5 --without-csharp --without-erlang --without-nodejs --without-nodets --without-swift \
- --without-lua --without-perl --without-php --without-php_extension --without-dart --without-ruby --without-cl \
- --without-haskell --without-go --without-haxe --without-d --without-python -without-java --without-dotnetcore -without-rs --with-cpp \
- --with-libevent=$TP_INSTALL_DIR --with-boost=$TP_INSTALL_DIR --with-openssl=$TP_INSTALL_DIR
-
- if [ -f compiler/cpp/thrifty.hh ];then
+ ./configure CPPFLAGS="${cppflags}" LDFLAGS="${ldflags}" LIBS="-lcrypto -ldl -lssl" CFLAGS="-fPIC" \
+ --prefix="${TP_INSTALL_DIR}" --docdir="${TP_INSTALL_DIR}/doc" --enable-static --disable-shared --disable-tests \
+ --disable-tutorial --without-qt4 --without-qt5 --without-csharp --without-erlang --without-nodejs --without-nodets --without-swift \
+ --without-lua --without-perl --without-php --without-php_extension --without-dart --without-ruby --without-cl \
+ --without-haskell --without-go --without-haxe --without-d --without-python -without-java --without-dotnetcore -without-rs --with-cpp \
+ --with-libevent="${TP_INSTALL_DIR}" --with-boost="${TP_INSTALL_DIR}" --with-openssl="${TP_INSTALL_DIR}"
+
+ if [[ -f compiler/cpp/thrifty.hh ]]; then
mv compiler/cpp/thrifty.hh compiler/cpp/thrifty.h
fi
- make -j $PARALLEL && make install
+ make -j "${PARALLEL}" && make install
}
# protobuf
build_protobuf() {
- check_if_source_exist $PROTOBUF_SOURCE
- cd $TP_SOURCE_DIR/$PROTOBUF_SOURCE
+ check_if_source_exist "${PROTOBUF_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${PROTOBUF_SOURCE}"
rm -fr gmock
# NOTE(amos): -Wl,--undefined=pthread_create force searching for pthread symbols.
# See https://stackoverflow.com/a/65348893/1329147 for detailed explanation.
- mkdir gmock && cd gmock && tar xf ${TP_SOURCE_DIR}/${GTEST_NAME} \
- && mv ${GTEST_SOURCE} gtest && cd $TP_SOURCE_DIR/$PROTOBUF_SOURCE && ./autogen.sh
+ mkdir gmock && cd gmock && tar xf "${TP_SOURCE_DIR}/${GTEST_NAME}" &&
+ mv "${GTEST_SOURCE}" gtest && cd "${TP_SOURCE_DIR}/${PROTOBUF_SOURCE}" && ./autogen.sh
+
+ if [[ "${KERNEL}" == 'Darwin' ]]; then
+ ldflags="-L${TP_LIB_DIR}"
+ else
+ ldflags="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc -Wl,--undefined=pthread_create"
+ fi
+
CXXFLAGS="-fPIC -O2 -I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc -Wl,--undefined=pthread_create" \
- ./configure --prefix=${TP_INSTALL_DIR} --disable-shared --enable-static --with-zlib=${TP_INSTALL_DIR}/include
+ LDFLAGS="${ldflags}" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --disable-shared --enable-static --with-zlib="${TP_INSTALL_DIR}/include"
# ATTN: If protoc is not built fully statically the linktime libc may newer than runtime.
# This will casue protoc cannot run
# If you really need to dynamically link protoc, please set the environment variable DYN_LINK_PROTOC=1
- if [[ "${DYN_LINK_PROTOC}" == "1" ]]; then
+ if [[ "${DYN_LINK_PROTOC}" == "1" || "${KERNEL}" == 'Darwin' ]]; then
echo "link protoc dynamiclly"
- else
+ else
cd src
sed -i 's/^AM_LDFLAGS\(.*\)$/AM_LDFLAGS\1 -all-static/' Makefile
cd -
fi
- make -j $PARALLEL && make install
+ make -j "${PARALLEL}" && make install
}
# gflags
build_gflags() {
- check_if_source_exist $GFLAGS_SOURCE
+ check_if_source_exist "${GFLAGS_SOURCE}"
- cd $TP_SOURCE_DIR/$GFLAGS_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ cd "${TP_SOURCE_DIR}/${GFLAGS_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- ${CMAKE_CMD} -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
- -DCMAKE_POSITION_INDEPENDENT_CODE=On ../
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=On ../
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# glog
build_glog() {
- check_if_source_exist $GLOG_SOURCE
- cd $TP_SOURCE_DIR/$GLOG_SOURCE
+ check_if_source_exist "${GLOG_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${GLOG_SOURCE}"
# to generate config.guess and config.sub to support aarch64
rm -rf config.*
autoreconf -i
CPPFLAGS="-I${TP_INCLUDE_DIR} -fpermissive -fPIC" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR --enable-frame-pointers --disable-shared --enable-static
- make -j $PARALLEL && make install
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --enable-frame-pointers --disable-shared --enable-static
+ make -j "${PARALLEL}" && make install
}
# gtest
build_gtest() {
- check_if_source_exist $GTEST_SOURCE
+ check_if_source_exist "${GTEST_SOURCE}"
- cd $TP_SOURCE_DIR/$GTEST_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ cd "${TP_SOURCE_DIR}/${GTEST_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- ${CMAKE_CMD} ../ -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR -DCMAKE_POSITION_INDEPENDENT_CODE=On
+ "${CMAKE_CMD}" ../ -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" -DCMAKE_POSITION_INDEPENDENT_CODE=On
# -DCMAKE_CXX_FLAGS="$warning_uninitialized"
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# rapidjson
build_rapidjson() {
- check_if_source_exist $RAPIDJSON_SOURCE
- cd $TP_SOURCE_DIR/$RAPIDJSON_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${RAPIDJSON_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${RAPIDJSON_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- ${CMAKE_CMD} ../ -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR -DRAPIDJSON_BUILD_DOC=OFF \
- -DRAPIDJSON_BUILD_EXAMPLES=OFF -DRAPIDJSON_BUILD_TESTS=OFF
- make -j $PARALLEL && make install
+ "${CMAKE_CMD}" ../ -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" -DRAPIDJSON_BUILD_DOC=OFF \
+ -DRAPIDJSON_BUILD_EXAMPLES=OFF -DRAPIDJSON_BUILD_TESTS=OFF
+ make -j "${PARALLEL}" && make install
}
# snappy
build_snappy() {
- check_if_source_exist $SNAPPY_SOURCE
- cd $TP_SOURCE_DIR/$SNAPPY_SOURCE
+ check_if_source_exist "${SNAPPY_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${SNAPPY_SOURCE}"
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- CFLAGS="-O3" CXXFLAGS="-O3" ${CMAKE_CMD} -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
- -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
- -DCMAKE_INSTALL_INCLUDEDIR=$TP_INCLUDE_DIR/snappy \
- -DSNAPPY_BUILD_TESTS=0 ../
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ CFLAGS="-O3" CXXFLAGS="-O3" "${CMAKE_CMD}" -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" \
+ -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
+ -DCMAKE_INSTALL_INCLUDEDIR="${TP_INCLUDE_DIR}"/snappy \
+ -DSNAPPY_BUILD_TESTS=0 ../
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
#build for libarrow.a
- cp $TP_INCLUDE_DIR/snappy/snappy-c.h $TP_INCLUDE_DIR/snappy-c.h && \
- cp $TP_INCLUDE_DIR/snappy/snappy-sinksource.h $TP_INCLUDE_DIR/snappy-sinksource.h && \
- cp $TP_INCLUDE_DIR/snappy/snappy-stubs-public.h $TP_INCLUDE_DIR/snappy-stubs-public.h && \
- cp $TP_INCLUDE_DIR/snappy/snappy.h $TP_INCLUDE_DIR/snappy.h
+ cp "${TP_INCLUDE_DIR}/snappy/snappy-c.h" "${TP_INCLUDE_DIR}/snappy-c.h" &&
+ cp "${TP_INCLUDE_DIR}/snappy/snappy-sinksource.h" "${TP_INCLUDE_DIR}/snappy-sinksource.h" &&
+ cp "${TP_INCLUDE_DIR}/snappy/snappy-stubs-public.h" "${TP_INCLUDE_DIR}/snappy-stubs-public.h" &&
+ cp "${TP_INCLUDE_DIR}/snappy/snappy.h" "${TP_INCLUDE_DIR}/snappy.h"
}
# gperftools
build_gperftools() {
- check_if_source_exist $GPERFTOOLS_SOURCE
- cd $TP_SOURCE_DIR/$GPERFTOOLS_SOURCE
- if [ ! -f configure ]; then
+ check_if_source_exist "${GPERFTOOLS_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${GPERFTOOLS_SOURCE}"
+ if [[ ! -f configure ]]; then
./autogen.sh
fi
CPPFLAGS="-I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- LD_LIBRARY_PATH="${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- LD_LIBRARY_PATH="${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR/gperftools --disable-shared --enable-static --disable-libunwind --with-pic --enable-frame-pointers
- make -j $PARALLEL && make install
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ LD_LIBRARY_PATH="${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ LD_LIBRARY_PATH="${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix="${TP_INSTALL_DIR}/gperftools" --disable-shared --enable-static --disable-libunwind --with-pic --enable-frame-pointers
+ make -j "${PARALLEL}" && make install
}
# zlib
build_zlib() {
- check_if_source_exist $ZLIB_SOURCE
- cd $TP_SOURCE_DIR/$ZLIB_SOURCE
+ check_if_source_exist "${ZLIB_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${ZLIB_SOURCE}"
CPPFLAGS="-I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR --static
- make -j $PARALLEL && make install
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --static
+ make -j "${PARALLEL}" && make install
# minizip
cd contrib/minizip
autoreconf --force --install
- ./configure --prefix=$TP_INSTALL_DIR --enable-static=yes --enable-shared=no
- make -j $PARALLEL && make install
+ ./configure --prefix="${TP_INSTALL_DIR}" --enable-static=yes --enable-shared=no
+ make -j "${PARALLEL}" && make install
}
# lz4
build_lz4() {
- check_if_source_exist $LZ4_SOURCE
- cd $TP_SOURCE_DIR/$LZ4_SOURCE
+ check_if_source_exist "${LZ4_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${LZ4_SOURCE}"
# clean old symbolic links
local old_symbolic_links=('lz4c' 'lz4cat' 'unlz4')
- for link in ${old_symbolic_links[@]}; do
+ for link in "${old_symbolic_links[@]}"; do
rm -f "${TP_INSTALL_DIR}/bin/${link}"
done
- make -j $PARALLEL install PREFIX=$TP_INSTALL_DIR BUILD_SHARED=no\
- INCLUDEDIR=$TP_INCLUDE_DIR/lz4/
+ make -j "${PARALLEL}" install PREFIX="${TP_INSTALL_DIR}" BUILD_SHARED=no INCLUDEDIR="${TP_INCLUDE_DIR}/lz4"
}
# zstd
build_zstd() {
- check_if_source_exist $ZSTD_SOURCE
- cd $TP_SOURCE_DIR/$ZSTD_SOURCE/build/cmake
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
- ${CMAKE_CMD} -G "${GENERATOR}" -DBUILD_TESTING=OFF -DZSTD_BUILD_TESTS=OFF -DZSTD_BUILD_STATIC=ON \
- -DZSTD_BUILD_PROGRAMS=OFF -DZSTD_BUILD_SHARED=OFF -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR ..
- ${BUILD_SYSTEM} -j $PARALLEL install
+ check_if_source_exist "${ZSTD_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${ZSTD_SOURCE}/build/cmake"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DBUILD_TESTING=OFF -DZSTD_BUILD_TESTS=OFF -DZSTD_BUILD_STATIC=ON \
+ -DZSTD_BUILD_PROGRAMS=OFF -DZSTD_BUILD_SHARED=OFF -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" install
}
# bzip
build_bzip() {
- check_if_source_exist $BZIP_SOURCE
- cd $TP_SOURCE_DIR/$BZIP_SOURCE
+ check_if_source_exist "${BZIP_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${BZIP_SOURCE}"
- CFLAGS="-fPIC"
- make -j $PARALLEL install PREFIX=$TP_INSTALL_DIR
+ CFLAGS="-fPIC" \
+ make -j "${PARALLEL}" install PREFIX="${TP_INSTALL_DIR}"
}
# lzo2
build_lzo2() {
- check_if_source_exist $LZO2_SOURCE
- cd $TP_SOURCE_DIR/$LZO2_SOURCE
+ check_if_source_exist "${LZO2_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${LZO2_SOURCE}"
CPPFLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR --disable-shared --enable-static
- make -j $PARALLEL && make install
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --disable-shared --enable-static
+ make -j "${PARALLEL}" && make install
}
# curl
build_curl() {
- check_if_source_exist $CURL_SOURCE
- cd $TP_SOURCE_DIR/$CURL_SOURCE
+ check_if_source_exist "${CURL_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${CURL_SOURCE}"
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ libs='-lcrypto -lssl -lcrypto -ldl -static'
+ else
+ libs='-lcrypto -lssl -lcrypto -ldl'
+ fi
CPPFLAGS="-I${TP_INCLUDE_DIR} -DNGHTTP2_STATICLIB" \
- LDFLAGS="-L${TP_LIB_DIR}" LIBS="-lcrypto -lssl -lcrypto -ldl -static" \
- CFLAGS="-fPIC" \
- PKG_CONFIG="pkg-config --static" \
- ./configure --prefix=$TP_INSTALL_DIR --disable-shared --enable-static \
- --without-librtmp --with-ssl=${TP_INSTALL_DIR} --without-libidn2 --disable-ldap --enable-ipv6 \
- --without-libssh2 --without-brotli
- make curl_LDFLAGS=-all-static -j $PARALLEL && make curl_LDFLAGS=-all-static install
+ LDFLAGS="-L${TP_LIB_DIR}" LIBS="${libs}" \
+ CFLAGS="-fPIC" \
+ PKG_CONFIG="pkg-config --static" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --disable-shared --enable-static \
+ --without-librtmp --with-ssl="${TP_INSTALL_DIR}" --without-libidn2 --disable-ldap --enable-ipv6 \
+ --without-libssh2 --without-brotli
+ make curl_LDFLAGS=-all-static -j "${PARALLEL}" && make curl_LDFLAGS=-all-static install
}
# re2
build_re2() {
- check_if_source_exist $RE2_SOURCE
- cd $TP_SOURCE_DIR/$RE2_SOURCE
+ check_if_source_exist "${RE2_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${RE2_SOURCE}"
- ${CMAKE_CMD} -G "${GENERATOR}" -DBUILD_SHARED_LIBS=0 -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR
- ${BUILD_SYSTEM} -j $PARALLEL install
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DBUILD_SHARED_LIBS=0 -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}"
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" install
}
# hyperscan
@@ -519,42 +563,56 @@ build_hyperscan() {
cd $TP_SOURCE_DIR/$HYPERSCAN_SOURCE
mkdir -p $BUILD_DIR && cd $BUILD_DIR
PATH=$TP_INSTALL_DIR/bin:$PATH ${CMAKE_CMD} -G "${GENERATOR}" -DBUILD_SHARED_LIBS=0 \
- -DBOOST_ROOT=$BOOST_SOURCE -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR ..
+ -DBOOST_ROOT=$BOOST_SOURCE -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR ..
${BUILD_SYSTEM} -j $PARALLEL install
fi
}
# boost
build_boost() {
- check_if_source_exist $BOOST_SOURCE
- cd $TP_SOURCE_DIR/$BOOST_SOURCE
+ check_if_source_exist "${BOOST_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${BOOST_SOURCE}"
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ cxxflags='-static'
+ else
+ cxxflags=''
+ fi
- CXXFLAGS="-static" \
- ./bootstrap.sh --prefix=$TP_INSTALL_DIR --with-toolset=$boost_toolset
+ CXXFLAGS="${cxxflags}" \
+ ./bootstrap.sh --prefix="${TP_INSTALL_DIR}" --with-toolset="${boost_toolset}"
# -q: Fail at first error
- ./b2 -q link=static runtime-link=static -j $PARALLEL --without-mpi --without-graph --without-graph_parallel --without-python cxxflags="-std=c++11 -g -fPIC -I$TP_INCLUDE_DIR -L$TP_LIB_DIR" install
+ ./b2 -q link=static runtime-link=static -j "${PARALLEL}" --without-mpi --without-graph --without-graph_parallel --without-python cxxflags="-std=c++11 -g -fPIC -I${TP_INCLUDE_DIR} -L${TP_LIB_DIR}" install
}
# mysql
build_mysql() {
- check_if_source_exist $MYSQL_SOURCE
- check_if_source_exist $BOOST_SOURCE
+ check_if_source_exist "${MYSQL_SOURCE}"
+ check_if_source_exist "${BOOST_SOURCE}"
- cd $TP_SOURCE_DIR/$MYSQL_SOURCE
+ cd "${TP_SOURCE_DIR}/${MYSQL_SOURCE}"
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- if [ ! -d $BOOST_SOURCE ]; then
- cp -rf $TP_SOURCE_DIR/$BOOST_SOURCE ./
+ if [[ ! -d "${BOOST_SOURCE}" ]]; then
+ cp -rf "${TP_SOURCE_DIR}/${BOOST_SOURCE}" ./
fi
- CFLAGS="-static -pthread -lrt" CXXFLAGS="-static -pthread -lrt" \
- ${CMAKE_CMD} -G "${GENERATOR}" ../ -DCMAKE_LINK_SEARCH_END_STATIC=1 \
- -DWITH_BOOST=`pwd`/$BOOST_SOURCE -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR/mysql/ \
- -DWITHOUT_SERVER=1 -DWITH_ZLIB=1 -DZLIB_ROOT=$TP_INSTALL_DIR \
- -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -std=gnu++11" \
- -DDISABLE_SHARED=1 -DBUILD_SHARED_LIBS=0 -DZLIB_LIBRARY=$TP_INSTALL_DIR/lib/libz.a -DENABLE_DTRACE=0
- ${BUILD_SYSTEM} -j $PARALLEL mysqlclient
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ cflags='-static -pthread -lrt'
+ cxxflags='-static -pthread -lrt'
+ else
+ cflags='-pthread'
+ cxxflags='-pthread'
+ fi
+
+ CFLAGS="${cflags}" CXXFLAGS="${cxxflags}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" ../ -DCMAKE_LINK_SEARCH_END_STATIC=1 \
+ -DWITH_BOOST="$(pwd)/${BOOST_SOURCE}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}/mysql" \
+ -DWITHOUT_SERVER=1 -DWITH_ZLIB=1 -DZLIB_ROOT="${TP_INSTALL_DIR}" \
+ -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="-O3 -g -fabi-version=2 -fno-omit-frame-pointer -fno-strict-aliasing -std=gnu++11" \
+ -DDISABLE_SHARED=1 -DBUILD_SHARED_LIBS=0 -DZLIB_LIBRARY="${TP_INSTALL_DIR}/lib/libz.a" -DENABLE_DTRACE=0
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" mysqlclient
# copy headers manually
rm -rf ../../../installed/include/mysql/
@@ -571,470 +629,550 @@ build_mysql() {
#leveldb
build_leveldb() {
- check_if_source_exist $LEVELDB_SOURCE
- cd $TP_SOURCE_DIR/$LEVELDB_SOURCE
- rm -rf out-shared/ out-static/
- CXXFLAGS="-fPIC" make -j $PARALLEL
- cp out-static/libleveldb.a ../../installed/lib/libleveldb.a
- cp -r include/leveldb ../../installed/include/
+ check_if_source_exist "${LEVELDB_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${LEVELDB_SOURCE}"
+
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+ rm -rf CMakeCache.txt CMakeFiles/
+
+ CXXFLAGS="-fPIC" "${CMAKE_CMD}" -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" -DLEVELDB_BUILD_BENCHMARKS=OFF \
+ -DLEVELDB_BUILD_TESTS=OFF ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" install
}
# brpc
build_brpc() {
- check_if_source_exist $BRPC_SOURCE
+ check_if_source_exist "${BRPC_SOURCE}"
- cd $TP_SOURCE_DIR/$BRPC_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ cd "${TP_SOURCE_DIR}/${BRPC_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- LDFLAGS="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc" \
- ${CMAKE_CMD} -G "${GENERATOR}" -DBUILD_SHARED_LIBS=0 -DWITH_GLOG=ON -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
- -DCMAKE_LIBRARY_PATH=$TP_INSTALL_DIR/lib64 -DCMAKE_INCLUDE_PATH="$TP_INSTALL_DIR/include" \
- -DPROTOBUF_PROTOC_EXECUTABLE=$TP_INSTALL_DIR/bin/protoc ..
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ ldflags="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc"
+ else
+ ldflags="-L${TP_LIB_DIR}"
+ fi
+
+ LDFLAGS="${ldflags}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DBUILD_SHARED_LIBS=0 -DWITH_GLOG=ON -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" \
+ -DCMAKE_LIBRARY_PATH="${TP_INSTALL_DIR}/lib64" -DCMAKE_INCLUDE_PATH="${TP_INSTALL_DIR}/include" \
+ -DPROTOBUF_PROTOC_EXECUTABLE="${TP_INSTALL_DIR}/bin/protoc" ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
+
+ remove_all_dylib
}
# rocksdb
build_rocksdb() {
- check_if_source_exist $ROCKSDB_SOURCE
+ check_if_source_exist "${ROCKSDB_SOURCE}"
- cd $TP_SOURCE_DIR/$ROCKSDB_SOURCE
+ cd "${TP_SOURCE_DIR}/${ROCKSDB_SOURCE}"
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ ldflags='-static-libstdc++ -static-libgcc'
+ else
+ ldflags=''
+ fi
# -Wno-range-loop-construct gcc-11
CFLAGS="-I ${TP_INCLUDE_DIR} -I ${TP_INCLUDE_DIR}/snappy -I ${TP_INCLUDE_DIR}/lz4" \
- CXXFLAGS="-fPIC -Wno-deprecated-copy $warning_stringop_truncation $warning_shadow $warning_dangling_gsl \
- $warning_defaulted_function_deleted $warning_unused_but_set_variable -Wno-pessimizing-move -Wno-range-loop-construct" \
- LDFLAGS="-static-libstdc++ -static-libgcc" \
- PORTABLE=1 make USE_RTTI=1 -j $PARALLEL static_lib
+ CXXFLAGS="-fPIC -Wno-deprecated-copy ${warning_stringop_truncation} ${warning_shadow} ${warning_dangling_gsl} \
+ ${warning_defaulted_function_deleted} ${warning_unused_but_set_variable} -Wno-pessimizing-move -Wno-range-loop-construct" \
+ LDFLAGS="${ldflags}" \
+ PORTABLE=1 make USE_RTTI=1 -j "${PARALLEL}" static_lib
cp librocksdb.a ../../installed/lib/librocksdb.a
cp -r include/rocksdb ../../installed/include/
}
# cyrus_sasl
build_cyrus_sasl() {
- check_if_source_exist $CYRUS_SASL_SOURCE
- cd $TP_SOURCE_DIR/$CYRUS_SASL_SOURCE
+ check_if_source_exist "${CYRUS_SASL_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${CYRUS_SASL_SOURCE}"
CPPFLAGS="-I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR --enable-static --enable-shared=no --with-openssl=$TP_INSTALL_DIR --with-pic
- make -j $PARALLEL && make install
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --enable-static --enable-shared=no --with-openssl="${TP_INSTALL_DIR}" --with-pic
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ make -j "${PARALLEL}" && make install
+ else
+ make -j "${PARALLEL}" && make framedir="${TP_INCLUDE_DIR}/sasl" install
+ fi
}
# librdkafka
build_librdkafka() {
- check_if_source_exist $LIBRDKAFKA_SOURCE
+ check_if_source_exist "${LIBRDKAFKA_SOURCE}"
- cd $TP_SOURCE_DIR/$LIBRDKAFKA_SOURCE
+ cd "${TP_SOURCE_DIR}/${LIBRDKAFKA_SOURCE}"
CPPFLAGS="-I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR --enable-static --enable-sasl --disable-c11threads
- make -j $PARALLEL && make install
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --enable-static --enable-sasl --disable-c11threads
+ make -j "${PARALLEL}" && make install
+ remove_all_dylib
}
# libunixodbc
build_libunixodbc() {
- check_if_source_exist $ODBC_SOURCE
+ check_if_source_exist "${ODBC_SOURCE}"
- cd $TP_SOURCE_DIR/$ODBC_SOURCE
+ cd "${TP_SOURCE_DIR}/${ODBC_SOURCE}"
- CPPFLAGS="-I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- CFLAGS="-fPIC" \
- ./configure --prefix=$TP_INSTALL_DIR --with-included-ltdl --enable-static=yes --enable-shared=no
- make -j $PARALLEL && make install
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ cppflags="-I${TP_INCLUDE_DIR}"
+ else
+ cppflags="-I${TP_INCLUDE_DIR} -Wno-implicit-function-declaration"
+ fi
+
+ CPPFLAGS="${cppflags}" \
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ CFLAGS="-fPIC" \
+ ./configure --prefix="${TP_INSTALL_DIR}" --with-included-ltdl --enable-static=yes --enable-shared=no
+ make -j "${PARALLEL}" && make install
}
# flatbuffers
build_flatbuffers() {
- check_if_source_exist $FLATBUFFERS_SOURCE
- cd $TP_SOURCE_DIR/$FLATBUFFERS_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
- rm -rf CMakeCache.txt CMakeFiles/
- CXXFLAGS="-fPIC $warning_class_memaccess" \
- LDFLAGS="-static-libstdc++ -static-libgcc" \
- ${CMAKE_CMD} -G "${GENERATOR}" -DFLATBUFFERS_BUILD_TESTS=OFF ..
- ${BUILD_SYSTEM} -j $PARALLEL
- cp flatc ../../../installed/bin/flatc
- cp -r ../include/flatbuffers ../../../installed/include/flatbuffers
- cp libflatbuffers.a ../../../installed/lib/libflatbuffers.a
+ check_if_source_exist "${FLATBUFFERS_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${FLATBUFFERS_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+ rm -rf CMakeCache.txt CMakeFiles/
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ ldflags='-static-libstdc++ -static-libgcc'
+ else
+ ldflags=''
+ fi
+
+ CXXFLAGS="-fPIC ${warning_class_memaccess}" \
+ LDFLAGS="${ldflags}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DFLATBUFFERS_BUILD_TESTS=OFF ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}"
+ cp flatc ../../../installed/bin/flatc
+ cp -r ../include/flatbuffers ../../../installed/include/flatbuffers
+ cp libflatbuffers.a ../../../installed/lib/libflatbuffers.a
}
# arrow
build_arrow() {
- check_if_source_exist $ARROW_SOURCE
- cd $TP_SOURCE_DIR/$ARROW_SOURCE/cpp && mkdir -p release && cd release
- export ARROW_BROTLI_URL=${TP_SOURCE_DIR}/${BROTLI_NAME}
- export ARROW_GLOG_URL=${TP_SOURCE_DIR}/${GLOG_NAME}
- export ARROW_LZ4_URL=${TP_SOURCE_DIR}/${LZ4_NAME}
- export ARROW_FLATBUFFERS_URL=${TP_SOURCE_DIR}/${FLATBUFFERS_NAME}
- export ARROW_ZSTD_URL=${TP_SOURCE_DIR}/${ZSTD_NAME}
- export ARROW_JEMALLOC_URL=${TP_SOURCE_DIR}/${JEMALLOC_NAME}
- export ARROW_Thrift_URL=${TP_SOURCE_DIR}/${THRIFT_NAME}
- export ARROW_SNAPPY_URL=${TP_SOURCE_DIR}/${SNAPPY_NAME}
- export ARROW_ZLIB_URL=${TP_SOURCE_DIR}/${ZLIB_NAME}
- export ARROW_XSIMD_URL=${TP_SOURCE_DIR}/${XSIMD_NAME}
- export ARROW_ORC_URL=${TP_SOURCE_DIR}/${ORC_NAME}
-
- LDFLAGS="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc" \
- ${CMAKE_CMD} -G "${GENERATOR}" -DARROW_PARQUET=ON -DARROW_IPC=ON -DARROW_BUILD_SHARED=OFF \
- -DARROW_BUILD_STATIC=ON -DARROW_WITH_BROTLI=ON -DARROW_WITH_LZ4=ON -DARROW_USE_GLOG=ON \
- -DARROW_WITH_SNAPPY=ON -DARROW_WITH_ZLIB=ON -DARROW_WITH_ZSTD=ON -DARROW_JSON=ON \
- -DARROW_WITH_UTF8PROC=OFF -DARROW_WITH_RE2=ON -DARROW_ORC=ON \
- -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
- -DCMAKE_INSTALL_LIBDIR=lib64 \
- -DARROW_BOOST_USE_SHARED=OFF \
- -DBoost_USE_STATIC_RUNTIME=ON \
- -DARROW_GFLAGS_USE_SHARED=OFF \
- -Dgflags_ROOT=$TP_INSTALL_DIR \
- -DGLOG_ROOT=$TP_INSTALL_DIR \
- -DRE2_ROOT=$TP_INSTALL_DIR \
- -DZLIB_LIBRARY=$TP_INSTALL_DIR/lib/libz.a -DZLIB_INCLUDE_DIR=$TP_INSTALL_DIR/include \
- -DRapidJSON_ROOT=$TP_INSTALL_DIR \
- -DORC_ROOT=$TP_INSTALL_DIR \
- -DBrotli_SOURCE=BUNDLED \
- -DLZ4_LIB=$TP_INSTALL_DIR/lib/liblz4.a -DLZ4_INCLUDE_DIR=$TP_INSTALL_DIR/include/lz4 \
- -DLz4_SOURCE=SYSTEM \
- -DZSTD_LIB=$TP_INSTALL_DIR/lib/libzstd.a -DZSTD_INCLUDE_DIR=$TP_INSTALL_DIR/include \
- -Dzstd_SOURCE=SYSTEM \
- -DSnappy_LIB=$TP_INSTALL_DIR/lib/libsnappy.a -DSnappy_INCLUDE_DIR=$TP_INSTALL_DIR/include \
- -DSnappy_SOURCE=SYSTEM \
- -DBOOST_ROOT=$TP_INSTALL_DIR --no-warn-unused-cli \
- -DThrift_ROOT=$TP_INSTALL_DIR ..
-
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ check_if_source_exist "${ARROW_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${ARROW_SOURCE}/cpp" && mkdir -p release && cd release
+ export ARROW_BROTLI_URL="${TP_SOURCE_DIR}/${BROTLI_NAME}"
+ export ARROW_GLOG_URL="${TP_SOURCE_DIR}/${GLOG_NAME}"
+ export ARROW_LZ4_URL="${TP_SOURCE_DIR}/${LZ4_NAME}"
+ export ARROW_FLATBUFFERS_URL="${TP_SOURCE_DIR}/${FLATBUFFERS_NAME}"
+ export ARROW_ZSTD_URL="${TP_SOURCE_DIR}/${ZSTD_NAME}"
+ export ARROW_JEMALLOC_URL="${TP_SOURCE_DIR}/${JEMALLOC_NAME}"
+ export ARROW_Thrift_URL="${TP_SOURCE_DIR}/${THRIFT_NAME}"
+ export ARROW_SNAPPY_URL="${TP_SOURCE_DIR}/${SNAPPY_NAME}"
+ export ARROW_ZLIB_URL="${TP_SOURCE_DIR}/${ZLIB_NAME}"
+ export ARROW_XSIMD_URL="${TP_SOURCE_DIR}/${XSIMD_NAME}"
+ export ARROW_ORC_URL="${TP_SOURCE_DIR}/${ORC_NAME}"
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ ldflags="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc"
+ else
+ ldflags="-L${TP_LIB_DIR}"
+ fi
+
+ LDFLAGS="${ldflags}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DARROW_PARQUET=ON -DARROW_IPC=ON -DARROW_BUILD_SHARED=OFF \
+ -DARROW_BUILD_STATIC=ON -DARROW_WITH_BROTLI=ON -DARROW_WITH_LZ4=ON -DARROW_USE_GLOG=ON \
+ -DARROW_WITH_SNAPPY=ON -DARROW_WITH_ZLIB=ON -DARROW_WITH_ZSTD=ON -DARROW_JSON=ON \
+ -DARROW_WITH_UTF8PROC=OFF -DARROW_WITH_RE2=ON -DARROW_ORC=ON \
+ -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" \
+ -DCMAKE_INSTALL_LIBDIR=lib64 \
+ -DARROW_BOOST_USE_SHARED=OFF \
+ -DBoost_USE_STATIC_RUNTIME=ON \
+ -DARROW_GFLAGS_USE_SHARED=OFF \
+ -Dgflags_ROOT="${TP_INSTALL_DIR}" \
+ -DGLOG_ROOT="${TP_INSTALL_DIR}" \
+ -DRE2_ROOT="${TP_INSTALL_DIR}" \
+ -DZLIB_LIBRARY="${TP_INSTALL_DIR}/lib/libz.a" -DZLIB_INCLUDE_DIR="${TP_INSTALL_DIR}/include" \
+ -DRapidJSON_ROOT="${TP_INSTALL_DIR}" \
+ -DORC_ROOT="${TP_INSTALL_DIR}" \
+ -DBrotli_SOURCE=BUNDLED \
+ -DLZ4_LIB="${TP_INSTALL_DIR}/lib/liblz4.a" -DLZ4_INCLUDE_DIR="${TP_INSTALL_DIR}/include/lz4" \
+ -DLz4_SOURCE=SYSTEM \
+ -DZSTD_LIB="${TP_INSTALL_DIR}/lib/libzstd.a" -DZSTD_INCLUDE_DIR="${TP_INSTALL_DIR}/include" \
+ -Dzstd_SOURCE=SYSTEM \
+ -DSnappy_LIB="${TP_INSTALL_DIR}/lib/libsnappy.a" -DSnappy_INCLUDE_DIR="${TP_INSTALL_DIR}/include" \
+ -DSnappy_SOURCE=SYSTEM \
+ -DBOOST_ROOT="${TP_INSTALL_DIR}" --no-warn-unused-cli \
+ -DThrift_ROOT="${TP_INSTALL_DIR}" ..
+
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
#copy dep libs
- cp -rf ./jemalloc_ep-prefix/src/jemalloc_ep/dist/lib/libjemalloc_pic.a $TP_INSTALL_DIR/lib64/libjemalloc.a
- cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlienc-static.a $TP_INSTALL_DIR/lib64/libbrotlienc.a
- cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlidec-static.a $TP_INSTALL_DIR/lib64/libbrotlidec.a
- cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlicommon-static.a $TP_INSTALL_DIR/lib64/libbrotlicommon.a
+ cp -rf ./jemalloc_ep-prefix/src/jemalloc_ep/dist/lib/libjemalloc_pic.a "${TP_INSTALL_DIR}/lib64/libjemalloc.a"
+ cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlienc-static.a "${TP_INSTALL_DIR}/lib64/libbrotlienc.a"
+ cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlidec-static.a "${TP_INSTALL_DIR}/lib64/libbrotlidec.a"
+ cp -rf ./brotli_ep/src/brotli_ep-install/lib/libbrotlicommon-static.a "${TP_INSTALL_DIR}/lib64/libbrotlicommon.a"
}
# s2
build_s2() {
- check_if_source_exist $S2_SOURCE
- cd $TP_SOURCE_DIR/$S2_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${S2_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${S2_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ ldflags="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc"
+ else
+ ldflags="-L${TP_LIB_DIR}"
+ fi
+
CXXFLAGS="-O3" \
- LDFLAGS="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc" \
- ${CMAKE_CMD} -G "${GENERATOR}" -DBUILD_SHARED_LIBS=0 -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
- -DCMAKE_INCLUDE_PATH="$TP_INSTALL_DIR/include" \
- -DBUILD_SHARED_LIBS=OFF \
- -DGFLAGS_ROOT_DIR="$TP_INSTALL_DIR/include" \
- -DWITH_GFLAGS=ON \
- -DGLOG_ROOT_DIR="$TP_INSTALL_DIR/include" \
- -DCMAKE_LIBRARY_PATH="$TP_INSTALL_DIR/lib64" \
- -DOPENSSL_ROOT_DIR="$TP_INSTALL_DIR/include" \
- -DWITH_GLOG=ON ..
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ LDFLAGS="${ldflags}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DBUILD_SHARED_LIBS=0 -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" \
+ -DCMAKE_INCLUDE_PATH="${TP_INSTALL_DIR}/include" \
+ -DBUILD_SHARED_LIBS=OFF \
+ -DGFLAGS_ROOT_DIR="${TP_INSTALL_DIR}/include" \
+ -DWITH_GFLAGS=ON \
+ -DGLOG_ROOT_DIR="${TP_INSTALL_DIR}/include" \
+ -DCMAKE_LIBRARY_PATH="${TP_INSTALL_DIR}/lib64" \
+ -DOPENSSL_ROOT_DIR="${TP_INSTALL_DIR}/include" \
+ -DWITH_GLOG=ON ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# bitshuffle
build_bitshuffle() {
- check_if_source_exist $BITSHUFFLE_SOURCE
- cd $TP_SOURCE_DIR/$BITSHUFFLE_SOURCE
- PREFIX=$TP_INSTALL_DIR
+ check_if_source_exist "${BITSHUFFLE_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${BITSHUFFLE_SOURCE}"
+ PREFIX="${TP_INSTALL_DIR}"
# This library has significant optimizations when built with -mavx2. However,
# we still need to support non-AVX2-capable hardware. So, we build it twice,
# once with the flag and once without, and use some linker tricks to
# suffix the AVX2 symbols with '_avx2'.
arches="default avx2"
- MACHINE_TYPE=$(uname -m)
+ MACHINE_TYPE="$(uname -m)"
# Becuase aarch64 don't support avx2, disable it.
- if [[ "${MACHINE_TYPE}" == "aarch64" ]]; then
+ if [[ "${MACHINE_TYPE}" == "aarch64" || "${MACHINE_TYPE}" == 'arm64' ]]; then
arches="default"
fi
to_link=""
- for arch in $arches ; do
+ for arch in $arches; do
arch_flag=""
- if [ "$arch" == "avx2" ]; then
+ if [[ "${arch}" == "avx2" ]]; then
arch_flag="-mavx2"
fi
- tmp_obj=bitshuffle_${arch}_tmp.o
- dst_obj=bitshuffle_${arch}.o
- $CC $EXTRA_CFLAGS $arch_flag -std=c99 -I$PREFIX/include/lz4/ -O3 -DNDEBUG -fPIC -c \
+ tmp_obj="bitshuffle_${arch}_tmp.o"
+ dst_obj="bitshuffle_${arch}.o"
+ "${CC}" ${EXTRA_CFLAGS} ${arch_flag} -std=c99 "-I${PREFIX}/include/lz4" -O3 -DNDEBUG -fPIC -c \
"src/bitshuffle_core.c" \
"src/bitshuffle.c" \
"src/iochain.c"
# Merge the object files together to produce a combined .o file.
- $DORIS_BIN_UTILS/ld -r -o $tmp_obj bitshuffle_core.o bitshuffle.o iochain.o
+ "${DORIS_BIN_UTILS}/ld" -r -o "${tmp_obj}" bitshuffle_core.o bitshuffle.o iochain.o
# For the AVX2 symbols, suffix them.
- if [ "$arch" == "avx2" ]; then
+ if [[ "${arch}" == "avx2" ]]; then
# Create a mapping file with '<old_sym> <suffixed_sym>' on each line.
- $DORIS_BIN_UTILS/nm --defined-only --extern-only $tmp_obj | while read addr type sym ; do
- echo ${sym} ${sym}_${arch}
- done > renames.txt
- $DORIS_BIN_UTILS/objcopy --redefine-syms=renames.txt $tmp_obj $dst_obj
+ "${DORIS_BIN_UTILS}/nm" --defined-only --extern-only "${tmp_obj}" | while read addr type sym; do
+ echo "${sym} ${sym}_${arch}"
+ done >renames.txt
+ "${DORIS_BIN_UTILS}/objcopy" --redefine-syms=renames.txt "${tmp_obj}" "${dst_obj}"
else
- mv $tmp_obj $dst_obj
+ mv "${tmp_obj}" "${dst_obj}"
fi
- to_link="$to_link $dst_obj"
+ to_link="${to_link} ${dst_obj}"
done
rm -f libbitshuffle.a
- $DORIS_BIN_UTILS/ar rs libbitshuffle.a $to_link
- mkdir -p $PREFIX/include/bitshuffle
- cp libbitshuffle.a $PREFIX/lib/
- cp $TP_SOURCE_DIR/$BITSHUFFLE_SOURCE/src/bitshuffle.h $PREFIX/include/bitshuffle/bitshuffle.h
- cp $TP_SOURCE_DIR/$BITSHUFFLE_SOURCE/src/bitshuffle_core.h $PREFIX/include/bitshuffle/bitshuffle_core.h
+ "${DORIS_BIN_UTILS}/ar" rs libbitshuffle.a ${to_link}
+ mkdir -p "${PREFIX}/include/bitshuffle"
+ cp libbitshuffle.a "${PREFIX}"/lib/
+ cp "${TP_SOURCE_DIR}/$BITSHUFFLE_SOURCE/src/bitshuffle.h" "${PREFIX}/include/bitshuffle/bitshuffle.h"
+ cp "${TP_SOURCE_DIR}/$BITSHUFFLE_SOURCE/src/bitshuffle_core.h" "${PREFIX}/include/bitshuffle/bitshuffle_core.h"
}
# croaring bitmap
build_croaringbitmap() {
avx_flag=
- if [ ! -z "$USE_AVX2" -a "$USE_AVX2" -eq 0 ];then
- echo "set USE_AVX2=$USE_AVX2 to FORCE disable AVX2 in croaringbitmap"
+ if [[ -n "${USE_AVX2}" && "${USE_AVX2}" -eq 0 ]]; then
+ echo "set USE_AVX2=${USE_AVX2} to FORCE disable AVX2 in croaringbitmap"
avx_flag="-DROARING_DISABLE_AVX=ON"
fi
- check_if_source_exist $CROARINGBITMAP_SOURCE
- cd $TP_SOURCE_DIR/$CROARINGBITMAP_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${CROARINGBITMAP_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${CROARINGBITMAP_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ ldflags="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc"
+ else
+ ldflags="-L${TP_LIB_DIR}"
+ fi
+
CXXFLAGS="-O3" \
- LDFLAGS="-L${TP_LIB_DIR} -static-libstdc++ -static-libgcc" \
- ${CMAKE_CMD} -G "${GENERATOR}" ${avx_flag} -DROARING_BUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
- -DENABLE_ROARING_TESTS=OFF ..
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ LDFLAGS="${ldflags}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" ${avx_flag} -DROARING_BUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" \
+ -DENABLE_ROARING_TESTS=OFF ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# fmt
build_fmt() {
- check_if_source_exist $FMT_SOURCE
- cd $TP_SOURCE_DIR/$FMT_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${FMT_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${FMT_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- $CMAKE_CMD -G "${GENERATOR}" -DBUILD_SHARED_LIBS=FALSE -DFMT_TEST=OFF -DFMT_DOC=OFF -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR ..
- ${BUILD_SYSTEM} -j$PARALLEL && ${BUILD_SYSTEM} install
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DBUILD_SHARED_LIBS=FALSE -DFMT_TEST=OFF -DFMT_DOC=OFF -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" ..
+ "${BUILD_SYSTEM}" -j"${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# parallel_hashmap
build_parallel_hashmap() {
- check_if_source_exist $PARALLEL_HASHMAP_SOURCE
- cd $TP_SOURCE_DIR/$PARALLEL_HASHMAP_SOURCE
- cp -r parallel_hashmap $TP_INSTALL_DIR/include/
+ check_if_source_exist "${PARALLEL_HASHMAP_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${PARALLEL_HASHMAP_SOURCE}"
+ cp -r parallel_hashmap "${TP_INSTALL_DIR}/include/"
}
# pdqsort
build_pdqsort() {
- check_if_source_exist $PDQSORT_SOURCE
- cd $TP_SOURCE_DIR/$PDQSORT_SOURCE
- cp -r pdqsort.h $TP_INSTALL_DIR/include/
+ check_if_source_exist "${PDQSORT_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${PDQSORT_SOURCE}"
+ cp -r pdqsort.h "${TP_INSTALL_DIR}/include/"
}
# libdivide
build_libdivide() {
- check_if_source_exist $LIBDIVIDE_SOURCE
- cd $TP_SOURCE_DIR/$LIBDIVIDE_SOURCE
- cp -r libdivide.h $TP_INSTALL_DIR/include/
+ check_if_source_exist "${LIBDIVIDE_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${LIBDIVIDE_SOURCE}"
+ cp -r libdivide.h "${TP_INSTALL_DIR}/include/"
}
#orc
build_orc() {
- check_if_source_exist $ORC_SOURCE
- cd $TP_SOURCE_DIR/$ORC_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${ORC_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${ORC_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
rm -rf CMakeCache.txt CMakeFiles/
- CXXFLAGS="-O3 -Wno-array-bounds $warning_reserved_identifier $warning_suggest_override" \
- ${CMAKE_CMD} -G "${GENERATOR}" ../ -DBUILD_JAVA=OFF \
- -DPROTOBUF_HOME=$TP_INSTALL_DIR \
- -DSNAPPY_HOME=$TP_INSTALL_DIR \
- -DLZ4_HOME=$TP_INSTALL_DIR \
- -DLZ4_INCLUDE_DIR=$TP_INSTALL_DIR/include/lz4 \
- -DZLIB_HOME=$TP_INSTALL_DIR \
- -DZSTD_HOME=$TP_INSTALL_DIR \
- -DZSTD_INCLUDE_DIR=$TP_INSTALL_DIR/include \
- -DBUILD_LIBHDFSPP=OFF \
- -DBUILD_CPP_TESTS=OFF \
- -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR
-
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ CXXFLAGS="-O3 -Wno-array-bounds ${warning_reserved_identifier} ${warning_suggest_override}" \
+ "${CMAKE_CMD}" -G "${GENERATOR}" ../ -DBUILD_JAVA=OFF \
+ -DPROTOBUF_HOME="${TP_INSTALL_DIR}" \
+ -DSNAPPY_HOME="${TP_INSTALL_DIR}" \
+ -DLZ4_HOME="${TP_INSTALL_DIR}" \
+ -DLZ4_INCLUDE_DIR="${TP_INSTALL_DIR}/include/lz4" \
+ -DZLIB_HOME="${TP_INSTALL_DIR}" \
+ -DZSTD_HOME="${TP_INSTALL_DIR}" \
+ -DZSTD_INCLUDE_DIR="${TP_INSTALL_DIR}/include" \
+ -DBUILD_LIBHDFSPP=OFF \
+ -DBUILD_CPP_TESTS=OFF \
+ -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}"
+
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
#cctz
build_cctz() {
- check_if_source_exist $CCTZ_SOURCE
- cd $TP_SOURCE_DIR/$CCTZ_SOURCE
- PREFIX=$TP_INSTALL_DIR make -j $PARALLEL
- PREFIX=$TP_INSTALL_DIR make install
+ check_if_source_exist "${CCTZ_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${CCTZ_SOURCE}"
+
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+ rm -rf CMakeCache.txt CMakeFiles/
+
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" -DBUILD_TESTING=OFF ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" install
}
# all js and csss related
build_js_and_css() {
- check_if_source_exist $DATATABLES_SOURCE
- check_if_source_exist Bootstrap-3.3.7/
- check_if_source_exist jQuery-3.3.1/
-
- mkdir -p $TP_INSTALL_DIR/webroot/
- cd $TP_SOURCE_DIR/
- cp -r $DATATABLES_SOURCE $TP_INSTALL_DIR/webroot/
- cp -r Bootstrap-3.3.7/ $TP_INSTALL_DIR/webroot/
- cp -r jQuery-3.3.1/ $TP_INSTALL_DIR/webroot/
- cp bootstrap-table.min.js $TP_INSTALL_DIR/webroot/Bootstrap-3.3.7/js
- cp bootstrap-table.min.css $TP_INSTALL_DIR/webroot/Bootstrap-3.3.7/css
+ check_if_source_exist "${DATATABLES_SOURCE}"
+ check_if_source_exist 'Bootstrap-3.3.7'
+ check_if_source_exist 'jQuery-3.3.1'
+
+ mkdir -p "${TP_INSTALL_DIR}/webroot"
+ cd "${TP_SOURCE_DIR}"
+ cp -r "${DATATABLES_SOURCE}" "${TP_INSTALL_DIR}/webroot/"
+ cp -r Bootstrap-3.3.7 "${TP_INSTALL_DIR}/webroot/"
+ cp -r jQuery-3.3.1 "${TP_INSTALL_DIR}/webroot/"
+ cp bootstrap-table.min.js "${TP_INSTALL_DIR}/webroot/Bootstrap-3.3.7/js"
+ cp bootstrap-table.min.css "${TP_INSTALL_DIR}/webroot/Bootstrap-3.3.7/css"
}
build_tsan_header() {
- cd $TP_SOURCE_DIR/
- if [[ ! -f $TSAN_HEADER_FILE ]]; then
- echo "$TSAN_HEADER_FILE should exist."
+ cd "${TP_SOURCE_DIR}"
+ if [[ ! -f "${TSAN_HEADER_FILE}" ]]; then
+ echo "${TSAN_HEADER_FILE} should exist."
exit 1
fi
- mkdir -p $TP_INSTALL_DIR/include/sanitizer/
- cp $TSAN_HEADER_FILE $TP_INSTALL_DIR/include/sanitizer/
+ mkdir -p "${TP_INSTALL_DIR}/include/sanitizer"
+ cp "${TSAN_HEADER_FILE}" "${TP_INSTALL_DIR}/include/sanitizer/"
}
# aws_sdk
build_aws_sdk() {
- check_if_source_exist $AWS_SDK_SOURCE
- cd $TP_SOURCE_DIR/$AWS_SDK_SOURCE
- rm -rf $BUILD_DIR
+ check_if_source_exist "${AWS_SDK_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${AWS_SDK_SOURCE}"
+ rm -rf "${BUILD_DIR}"
# -Wno-nonnull gcc-11
- $CMAKE_CMD -G "${GENERATOR}" -B$BUILD_DIR -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR \
- -DCMAKE_PREFIX_PATH=$TP_INSTALL_DIR -DBUILD_SHARED_LIBS=OFF -DENABLE_TESTING=OFF \
- -DCURL_LIBRARY_RELEASE=${TP_INSTALL_DIR}/lib/libcurl.a -DZLIB_LIBRARY_RELEASE=${TP_INSTALL_DIR}/lib/libz.a \
- -DBUILD_ONLY="core;s3;s3-crt;transfer" -DCMAKE_CXX_FLAGS="-Wno-nonnull" -DCPP_STANDARD=17
- cd $BUILD_DIR
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ "${CMAKE_CMD}" -G "${GENERATOR}" -B"${BUILD_DIR}" -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" \
+ -DCMAKE_PREFIX_PATH="${TP_INSTALL_DIR}" -DBUILD_SHARED_LIBS=OFF -DENABLE_TESTING=OFF \
+ -DCURL_LIBRARY_RELEASE="${TP_INSTALL_DIR}/lib/libcurl.a" -DZLIB_LIBRARY_RELEASE="${TP_INSTALL_DIR}/lib/libz.a" \
+ -DBUILD_ONLY="core;s3;s3-crt;transfer" -DCMAKE_CXX_FLAGS="-Wno-nonnull" -DCPP_STANDARD=17
+ cd "${BUILD_DIR}"
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# lzma
build_lzma() {
- if [ ! -x "$(command -v autopoint)" ]; then
+ if [[ ! -x "$(command -v autopoint)" ]]; then
echo "autopoint is required by $0, install it first"
- return -1
+ return 255
fi
- check_if_source_exist $LZMA_SOURCE
- cd $TP_SOURCE_DIR/$LZMA_SOURCE
- export ACLOCAL_PATH=/usr/share/aclocal
+ check_if_source_exist "${LZMA_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${LZMA_SOURCE}"
+ export ACLOCAL_PATH='/usr/share/aclocal'
sh autogen.sh
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
- ../configure --prefix=$TP_INSTALL_DIR --enable-shared=no --with-pic
- make -j $PARALLEL && make install
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+ ../configure --prefix="${TP_INSTALL_DIR}" --enable-shared=no --with-pic
+ make -j "${PARALLEL}" && make install
}
# xml2
build_xml2() {
- if [ ! -x "$(command -v pkg-config)" ]; then
+ if [[ ! -x "$(command -v pkg-config)" ]]; then
echo "pkg-config is required by $0, install it first"
- return -1
+ return 255
fi
- check_if_source_exist $XML2_SOURCE
- cd $TP_SOURCE_DIR/$XML2_SOURCE
- export ACLOCAL_PATH=/usr/share/aclocal
+ check_if_source_exist "${XML2_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${XML2_SOURCE}"
+ export ACLOCAL_PATH='/usr/share/aclocal'
sh autogen.sh
make distclean
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
CPPLAGS="-I${TP_INCLUDE_DIR}" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- ../configure --prefix=$TP_INSTALL_DIR --enable-shared=no --with-pic --with-python=no --with-lzma=$TP_INSTALL_DIR
- make -j $PARALLEL && make install
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ ../configure --prefix="${TP_INSTALL_DIR}" --enable-shared=no --with-pic --with-python=no --with-lzma="${TP_INSTALL_DIR}"
+ make -j "${PARALLEL}" && make install
}
# idn
build_idn() {
- check_if_source_exist $IDN_SOURCE
- cd $TP_SOURCE_DIR/$IDN_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
- ../configure --prefix=$TP_INSTALL_DIR --enable-shared=no --with-pic
- make -j $PARALLEL && make install
+ check_if_source_exist "${IDN_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${IDN_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+ ../configure --prefix="${TP_INSTALL_DIR}" --enable-shared=no --with-pic
+ make -j "${PARALLEL}" && make install
}
# gsasl
build_gsasl() {
- check_if_source_exist $GSASL_SOURCE
- cd $TP_SOURCE_DIR/$GSASL_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
- ../configure --prefix=$TP_INSTALL_DIR --with-gssapi-impl=mit --enable-shared=no --with-pic --with-libidn-prefix=$TP_INSTALL_DIR
- make -j $PARALLEL && make install
+ check_if_source_exist "${GSASL_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${GSASL_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+
+ if [[ "${KERNEL}" != 'Darwin' ]]; then
+ cflags=''
+ else
+ cflags='-Wno-implicit-function-declaration'
+ fi
+
+ CFLAGS="${cflags}" ../configure --prefix="${TP_INSTALL_DIR}" --with-gssapi-impl=mit --enable-shared=no --with-pic --with-libidn-prefix="${TP_INSTALL_DIR}"
+ make -j "${PARALLEL}" && make install
}
# krb5
build_krb5() {
- check_if_source_exist $KRB5_SOURCE
- cd $TP_SOURCE_DIR/$KRB5_SOURCE/src
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
- CFLAGS="-fcommon -fPIC" \
- ../configure --prefix=$TP_INSTALL_DIR --disable-shared --enable-static
- make -j $PARALLEL && make install
+ check_if_source_exist "${KRB5_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${KRB5_SOURCE}/src"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
+
+ if [[ "${KERNEL}" == 'Darwin' ]]; then
+ with_crypto_impl='--with-crypto-impl=openssl'
+ fi
+
+ CFLAGS="-fcommon -fPIC -I${TP_INSTALL_DIR}/include" LDFLAGS="-L${TP_INSTALL_DIR}/lib" \
+ ../configure --prefix="${TP_INSTALL_DIR}" --disable-shared --enable-static ${with_crypto_impl}
+ make -j "${PARALLEL}" && make install
}
# hdfs3
build_hdfs3() {
- check_if_source_exist $HDFS3_SOURCE
- cd $TP_SOURCE_DIR/$HDFS3_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR && rm ./* -rf
+ check_if_source_exist "${HDFS3_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${HDFS3_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}" && rm -rf ./*
# build libhdfs3 with kerberos support
CPPLAGS="-I${TP_INCLUDE_DIR} -fPIC" \
- LDFLAGS="-L${TP_LIB_DIR}" \
- ../bootstrap --dependency="$TP_INSTALL_DIR" --prefix=$TP_INSTALL_DIR --disable-shared --enable-static
- make CXXFLAGS="$libhdfs_cxx17" -j $PARALLEL
+ LDFLAGS="-L${TP_LIB_DIR}" \
+ ../bootstrap --dependency="${TP_INSTALL_DIR}" --prefix="${TP_INSTALL_DIR}" --disable-shared --enable-static
+ make CXXFLAGS="${libhdfs_cxx17}" -j "${PARALLEL}"
make install
}
+
# benchmark
build_benchmark() {
- check_if_source_exist $BENCHMARK_SOURCE
+ check_if_source_exist "${BENCHMARK_SOURCE}"
- cd $TP_SOURCE_DIR/$BENCHMARK_SOURCE
+ cd "${TP_SOURCE_DIR}/${BENCHMARK_SOURCE}"
cmake -E make_directory "build"
+
+ if [[ "$KERNEL" != 'Darwin' ]]; then
+ cxxflags='-lresolv -pthread -lrt'
+ else
+ cxxflags='-lresolv -pthread'
+ fi
+
# NOTE(amos): -DHAVE_STD_REGEX=1 avoid runtime checks as it will fail when compiling with non-standard toolchain
- CXXFLAGS="-lresolv -pthread -lrt" cmake -E chdir "build" \
- cmake ../ -DBENCHMARK_ENABLE_GTEST_TESTS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DHAVE_STD_REGEX=1
+ CXXFLAGS="${cxxflags}" cmake -E chdir "build" \
+ cmake ../ -DBENCHMARK_ENABLE_GTEST_TESTS=OFF -DBENCHMARK_ENABLE_TESTING=OFF -DCMAKE_BUILD_TYPE=Release -DHAVE_STD_REGEX=1
cmake --build "build" --config Release
- mkdir -p $TP_INCLUDE_DIR/benchmark
- cp $TP_SOURCE_DIR/$BENCHMARK_SOURCE/include/benchmark/benchmark.h $TP_INCLUDE_DIR/benchmark/
- cp $TP_SOURCE_DIR/$BENCHMARK_SOURCE/build/src/libbenchmark.a $TP_LIB_DIR/
+ mkdir -p "${TP_INCLUDE_DIR}/benchmark"
+ cp "${TP_SOURCE_DIR}/${BENCHMARK_SOURCE}/include/benchmark/benchmark.h" "${TP_INCLUDE_DIR}/benchmark/"
+ cp "${TP_SOURCE_DIR}/${BENCHMARK_SOURCE}/build/src/libbenchmark.a" "${TP_LIB_DIR}/"
}
# simdjson
build_simdjson() {
- check_if_source_exist $SIMDJSON_SOURCE
- cd $TP_SOURCE_DIR/$SIMDJSON_SOURCE
+ check_if_source_exist "${SIMDJSON_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${SIMDJSON_SOURCE}"
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
CXXFLAGS="-O3" \
- CFLAGS="-O3" \
- $CMAKE_CMD ..
+ CFLAGS="-O3" \
+ $CMAKE_CMD ..
$CMAKE_CMD --build .
- cp $TP_SOURCE_DIR/$SIMDJSON_SOURCE/$BUILD_DIR/libsimdjson.a $TP_INSTALL_DIR/lib64
+ cp "${TP_SOURCE_DIR}/${SIMDJSON_SOURCE}/${BUILD_DIR}/libsimdjson.a" "${TP_INSTALL_DIR}/lib64"
- cp -r $TP_SOURCE_DIR/$SIMDJSON_SOURCE/include/* $TP_INCLUDE_DIR/
+ cp -r "${TP_SOURCE_DIR}/${SIMDJSON_SOURCE}/include"/* "${TP_INCLUDE_DIR}/"
}
# nlohmann_json
build_nlohmann_json() {
- check_if_source_exist $NLOHMANN_JSON_SOURCE
- cd $TP_SOURCE_DIR/$NLOHMANN_JSON_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${NLOHMANN_JSON_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${NLOHMANN_JSON_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
- $CMAKE_CMD -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR -DCMAKE_PREFIX_PATH=$TP_INSTALL_DIR -DJSON_BuildTests=OFF ..
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" -DCMAKE_PREFIX_PATH="${TP_INSTALL_DIR}" -DJSON_BuildTests=OFF ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# opentelemetry
build_opentelemetry() {
- check_if_source_exist $OPENTELEMETRY_SOURCE
- cd $TP_SOURCE_DIR/$OPENTELEMETRY_SOURCE
- mkdir -p $BUILD_DIR && cd $BUILD_DIR
+ check_if_source_exist "${OPENTELEMETRY_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${OPENTELEMETRY_SOURCE}"
+ mkdir -p "${BUILD_DIR}" && cd "${BUILD_DIR}"
- $CMAKE_CMD -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX=$TP_INSTALL_DIR -DCMAKE_PREFIX_PATH=$TP_INSTALL_DIR -DBUILD_TESTING=OFF \
- -DWITH_OTLP=ON -DWITH_OTLP_GRPC=OFF -DWITH_OTLP_HTTP=ON -DWITH_ZIPKIN=ON -DWITH_EXAMPLES=OFF ..
- ${BUILD_SYSTEM} -j $PARALLEL && ${BUILD_SYSTEM} install
+ "${CMAKE_CMD}" -G "${GENERATOR}" -DCMAKE_INSTALL_PREFIX="${TP_INSTALL_DIR}" -DCMAKE_PREFIX_PATH="${TP_INSTALL_DIR}" -DBUILD_TESTING=OFF \
+ -DWITH_OTLP=ON -DWITH_OTLP_GRPC=OFF -DWITH_OTLP_HTTP=ON -DWITH_ZIPKIN=ON -DWITH_EXAMPLES=OFF ..
+ "${BUILD_SYSTEM}" -j "${PARALLEL}" && "${BUILD_SYSTEM}" install
}
# sse2neon
build_sse2neon() {
- check_if_source_exist $SSE2NEON_SOURCE
- cd $TP_SOURCE_DIR/$SSE2NEON_SOURCE
- cp sse2neon.h $TP_INSTALL_DIR/include/
+ check_if_source_exist "${SSE2NEON_SOURCE}"
+ cd "${TP_SOURCE_DIR}/${SSE2NEON_SOURCE}"
+ cp sse2neon.h "${TP_INSTALL_DIR}/include/"
}
build_libunixodbc
@@ -1091,4 +1229,3 @@ build_libbacktrace
build_sse2neon
echo "Finished to build all thirdparties"
-
diff --git a/thirdparty/download-thirdparty.sh b/thirdparty/download-thirdparty.sh
index c9d82949a3..bbd5141f93 100755
--- a/thirdparty/download-thirdparty.sh
+++ b/thirdparty/download-thirdparty.sh
@@ -349,4 +349,12 @@ fi
cd -
echo "Finished patching $AWS_SDK_SOURCE"
-
+cd "${TP_SOURCE_DIR}/${BRPC_SOURCE}"
+if [[ ! -f $PATCHED_MARK ]]; then
+ if [[ "$(uname -s)" == 'Darwin' ]]; then
+ patch -p1 <"${TP_PATCH_DIR}/brpc-1.1.0.patch"
+ touch ${PATCHED_MARK}
+ fi
+fi
+cd -
+echo "Finished patching ${BRPC_SOURCE}"
diff --git a/thirdparty/patches/brpc-1.1.0.patch b/thirdparty/patches/brpc-1.1.0.patch
new file mode 100644
index 0000000000..fd9a177a70
--- /dev/null
+++ b/thirdparty/patches/brpc-1.1.0.patch
@@ -0,0 +1,461 @@
+diff --git a/Makefile b/Makefile
+index 3538e47c..e2e1a6b2 100644
+--- a/Makefile
++++ b/Makefile
+@@ -41,13 +41,15 @@ endif
+
+ #required by butil/crc32.cc to boost performance for 10x
+ ifeq ($(shell test $(GCC_VERSION) -ge 40400; echo $$?),0)
+- CXXFLAGS+=-msse4 -msse4.2
++ ifeq ($(shell uname -p),i386) #note: i386 is processor family type, not the 32-bit x86 arch
++ CXXFLAGS+=-msse4 -msse4.2
++ endif
+ endif
+ #not solved yet
+ ifeq ($(CC),gcc)
+- ifeq ($(shell test $(GCC_VERSION) -ge 70000; echo $$?),0)
+- CXXFLAGS+=-Wno-aligned-new
+- endif
++ ifeq ($(shell test $(GCC_VERSION) -ge 70000; echo $$?),0)
++ CXXFLAGS+=-Wno-aligned-new
++ endif
+ endif
+
+ BUTIL_SOURCES = \
+diff --git a/config_brpc.sh b/config_brpc.sh
+index f52911db..842f100f 100755
+--- a/config_brpc.sh
++++ b/config_brpc.sh
+@@ -154,16 +154,21 @@ find_dir_of_header_or_die() {
+ }
+
+ if [ "$SYSTEM" = "Darwin" ]; then
+- OPENSSL_LIB="/usr/local/opt/openssl/lib"
+- OPENSSL_HDR="/usr/local/opt/openssl/include"
+-else
+- # User specified path of openssl, if not given it's empty
+- OPENSSL_LIB=$(find_dir_of_lib ssl)
+- # Inconvenient to check these headers in baidu-internal
+- #PTHREAD_HDR=$(find_dir_of_header_or_die pthread.h)
+- OPENSSL_HDR=$(find_dir_of_header_or_die openssl/ssl.h mesalink/openssl/ssl.h)
++ if [ -d "/usr/local/opt/openssl" ]; then
++ LIBS_IN="/usr/local/opt/openssl/lib $LIBS_IN"
++ HDRS_IN="/usr/local/opt/openssl/include $HDRS_IN"
++ elif [ -d "/opt/homebrew/Cellar" ]; then
++ LIBS_IN="/opt/homebrew/Cellar $LIBS_IN"
++ HDRS_IN="/opt/homebrew/Cellar $HDRS_IN"
++ fi
+ fi
+
++# User specified path of openssl, if not given it's empty
++OPENSSL_LIB=$(find_dir_of_lib ssl)
++# Inconvenient to check these headers in baidu-internal
++#PTHREAD_HDR=$(find_dir_of_header_or_die pthread.h)
++OPENSSL_HDR=$(find_dir_of_header_or_die openssl/ssl.h mesalink/openssl/ssl.h)
++
+ if [ $WITH_MESALINK != 0 ]; then
+ MESALINK_HDR=$(find_dir_of_header_or_die mesalink/openssl/ssl.h)
+ OPENSSL_HDR="$OPENSSL_HDR\n$MESALINK_HDR"
+diff --git a/docs/cn/getting_started.md b/docs/cn/getting_started.md
+index 53ef0f50..b4af85a5 100644
+--- a/docs/cn/getting_started.md
++++ b/docs/cn/getting_started.md
+@@ -20,7 +20,7 @@ brpc有如下依赖:
+ ## Ubuntu/LinuxMint/WSL
+ ### 依赖准备
+
+-安装通用依赖,[gflags](https://github.com/gflags/gflags), [protobuf](https://github.com/google/protobuf), [leveldb](https://github.com/google/leveldb):
++安装依赖:
+ ```shell
+ sudo apt-get install -y git g++ make libssl-dev libgflags-dev libprotobuf-dev libprotoc-dev protobuf-compiler libleveldb-dev
+ ```
+@@ -113,14 +113,9 @@ CentOS一般需要安装EPEL,否则很多包都默认不可用。
+ sudo yum install epel-release
+ ```
+
+-安装通用依赖:
++安装依赖:
+ ```shell
+-sudo yum install git gcc-c++ make openssl-devel
+-```
+-
+-安装 [gflags](https://github.com/gflags/gflags), [protobuf](https://github.com/google/protobuf), [leveldb](https://github.com/google/leveldb):
+-```shell
+-sudo yum install gflags-devel protobuf-devel protobuf-compiler leveldb-devel
++sudo yum install git gcc-c++ make openssl-devel gflags-devel protobuf-devel protobuf-compiler leveldb-devel
+ ```
+
+ 如果你要在样例中启用cpu/heap的profiler:
+@@ -216,18 +211,13 @@ $ make
+
+ ## MacOS
+
+-注意:在相同运行环境下,当前Mac版brpc的性能比Linux版差2.5倍。如果你的服务是性能敏感的,请不要使用MacOs作为你的生产环境。
++注意:在相同硬件条件下,MacOS版brpc的性能可能明显差于Linux版。如果你的服务是性能敏感的,请不要使用MacOS作为你的生产环境。
+
+ ### 依赖准备
+
+-安装通用依赖:
+-```shell
+-brew install openssl git gnu-getopt coreutils
+-```
+-
+-安装[gflags](https://github.com/gflags/gflags),[protobuf](https://github.com/google/protobuf),[leveldb](https://github.com/google/leveldb):
++安装依赖:
+ ```shell
+-brew install gflags protobuf leveldb
++brew install openssl git gnu-getopt coreutils gflags protobuf leveldb
+ ```
+
+ 如果你要在样例中启用cpu/heap的profiler:
+@@ -241,6 +231,17 @@ git clone https://github.com/google/googletest -b release-1.10.0 && cd googletes
+ ```
+ 在编译完成后,复制include/和lib/目录到/usr/local/include和/usr/local/lib目录中,以便于让所有应用都能使用gtest。
+
++### Monterey
++Monterey中openssl的安装位置可能不再位于`/usr/local/opt/openssl`,很可能会在`/opt/homebrew/Cellar`目录下,如果编译时报告找不到openssl,可考虑设置软链如下:
++```shell
++sudo ln -s /opt/homebrew/Cellar/openssl@3/3.0.3 /usr/local/opt/openssl
++```
++请注意上述命令中openssl的目录可能随环境变化而变化,你可以通过`brew info openssl`查看。
++
++### Apple Silicon
++
++master HEAD已支持M1系列芯片,M2未测试过。欢迎通过issues向我们报告遗留的warning/error。
++
+ ### 使用config_brpc.sh编译brpc
+ git克隆brpc,进入到项目目录然后运行:
+ ```shell
+diff --git a/docs/en/getting_started.md b/docs/en/getting_started.md
+index 4d24f2d7..03e34cf6 100644
+--- a/docs/en/getting_started.md
++++ b/docs/en/getting_started.md
+@@ -215,18 +215,13 @@ Same with [here](#compile-brpc-with-cmake)
+
+ ## MacOS
+
+-Note: In the same running environment, the performance of the current Mac version is about 2.5 times worse than the Linux version. If your service is performance-critical, do not use MacOS as your production environment.
++Note: With same environment, the performance of the MacOS version is worse than the Linux version. If your service is performance-critical, do not use MacOS as your production environment.
+
+ ### Prepare deps
+
+-Install common deps:
++Install dependencies:
+ ```shell
+-brew install openssl git gnu-getopt coreutils
+-```
+-
+-Install [gflags](https://github.com/gflags/gflags), [protobuf](https://github.com/google/protobuf), [leveldb](https://github.com/google/leveldb):
+-```shell
+-brew install gflags protobuf leveldb
++brew install openssl git gnu-getopt coreutils gflags protobuf leveldb
+ ```
+
+ If you need to enable cpu/heap profilers in examples:
+@@ -240,6 +235,20 @@ git clone https://github.com/google/googletest -b release-1.10.0 && cd googletes
+ ```
+ After the compilation, copy include/ and lib/ into /usr/local/include and /usr/local/lib respectively to expose gtest to all apps
+
++### Monterey
++
++openssl installed in Monterey may not be found at `/usr/local/opt/openssl`, instead it's probably put under `/opt/homebrew/Cellar`. If the compiler cannot find openssl, consider making a soft link like below:
++
++```shell
++sudo ln -s /opt/homebrew/Cellar/openssl@3/3.0.3 /usr/local/opt/openssl
++```
++
++Please note that the directory of installed openssl in above command may be different in different environments, you could check it out by running `brew info openssl`.
++
++### Apple Silicon
++
++The code at master HEAD already supports M1 series chips. M2 series are not tested yet. Please feel free to report remaining warnings/errors to us by issues.
++
+ ### Compile brpc with config_brpc.sh
+ git clone brpc, cd into the repo and run
+ ```shell
+diff --git a/src/brpc/span.h b/src/brpc/span.h
+index 07771649..43ede3d5 100644
+--- a/src/brpc/span.h
++++ b/src/brpc/span.h
+@@ -34,7 +34,7 @@
+ #include "brpc/span.pb.h"
+
+ namespace bthread {
+-extern thread_local bthread::LocalStorage tls_bls;
++extern __thread bthread::LocalStorage tls_bls;
+ }
+
+
+diff --git a/src/bthread/context.cpp b/src/bthread/context.cpp
+index 5098bc39..b89d432a 100644
+--- a/src/bthread/context.cpp
++++ b/src/bthread/context.cpp
+@@ -713,3 +713,100 @@ __asm (
+ );
+
+ #endif
++
++
++#if defined(BTHREAD_CONTEXT_PLATFORM_apple_arm64) && defined(BTHREAD_CONTEXT_COMPILER_gcc)
++__asm (
++".text\n"
++".globl _bthread_jump_fcontext\n"
++".balign 16\n"
++"_bthread_jump_fcontext:\n"
++" ; prepare stack for GP + FPU\n"
++" sub sp, sp, #0xb0\n"
++"#if (defined(__VFP_FP__) && !defined(__SOFTFP__))\n"
++" ; test if fpu env should be preserved\n"
++" cmp w3, #0\n"
++" b.eq 1f\n"
++" ; save d8 - d15\n"
++" stp d8, d9, [sp, #0x00]\n"
++" stp d10, d11, [sp, #0x10]\n"
++" stp d12, d13, [sp, #0x20]\n"
++" stp d14, d15, [sp, #0x30]\n"
++"1:\n"
++"#endif\n"
++" ; save x19-x30\n"
++" stp x19, x20, [sp, #0x40]\n"
++" stp x21, x22, [sp, #0x50]\n"
++" stp x23, x24, [sp, #0x60]\n"
++" stp x25, x26, [sp, #0x70]\n"
++" stp x27, x28, [sp, #0x80]\n"
++" stp fp, lr, [sp, #0x90]\n"
++" ; save LR as PC\n"
++" str lr, [sp, #0xa0]\n"
++" ; store RSP (pointing to context-data) in first argument (x0).\n"
++" ; STR cannot have sp as a target register\n"
++" mov x4, sp\n"
++" str x4, [x0]\n"
++" ; restore RSP (pointing to context-data) from A2 (x1)\n"
++" mov sp, x1\n"
++"#if (defined(__VFP_FP__) && !defined(__SOFTFP__))\n"
++" ; test if fpu env should be preserved\n"
++" cmp w3, #0\n"
++" b.eq 2f\n"
++" ; load d8 - d15\n"
++" ldp d8, d9, [sp, #0x00]\n"
++" ldp d10, d11, [sp, #0x10]\n"
++" ldp d12, d13, [sp, #0x20]\n"
++" ldp d14, d15, [sp, #0x30]\n"
++"2:\n"
++"#endif\n"
++" ; load x19-x30\n"
++" ldp x19, x20, [sp, #0x40]\n"
++" ldp x21, x22, [sp, #0x50]\n"
++" ldp x23, x24, [sp, #0x60]\n"
++" ldp x25, x26, [sp, #0x70]\n"
++" ldp x27, x28, [sp, #0x80]\n"
++" ldp fp, lr, [sp, #0x90]\n"
++" ; use third arg as return value after jump\n"
++" ; and as first arg in context function\n"
++" mov x0, x2\n"
++" ; load pc\n"
++" ldr x4, [sp, #0xa0]\n"
++" ; restore stack from GP + FPU\n"
++" add sp, sp, #0xb0\n"
++" ret x4\n"
++);
++
++#endif
++
++#if defined(BTHREAD_CONTEXT_PLATFORM_apple_arm64) && defined(BTHREAD_CONTEXT_COMPILER_gcc)
++__asm (
++".text\n"
++".globl _bthread_make_fcontext\n"
++".balign 16\n"
++"_bthread_make_fcontext:\n"
++" ; shift address in x0 (allocated stack) to lower 16 byte boundary\n"
++" and x0, x0, ~0xF\n"
++" ; reserve space for context-data on context-stack\n"
++" sub x0, x0, #0xb0\n"
++" ; third arg of make_fcontext() == address of context-function\n"
++" ; store address as a PC to jump in\n"
++" str x2, [x0, #0xa0]\n"
++" ; compute abs address of label finish\n"
++" ; 0x0c = 3 instructions * size (4) before label 'finish'\n"
++" ; TODO: Numeric offset since llvm still does not support labels in ADR. Fix:\n"
++" ; http:\n"
++" adr x1, 0x0c\n"
++" ; save address of finish as return-address for context-function\n"
++" ; will be entered after context-function returns (LR register)\n"
++" str x1, [x0, #0x98]\n"
++" ret lr ; return pointer to context-data (x0)\n"
++"finish:\n"
++" ; exit code is zero\n"
++" mov x0, #0\n"
++" ; exit application\n"
++" bl __exit\n"
++);
++
++#endif
++
+diff --git a/src/bthread/context.h b/src/bthread/context.h
+index 8ff027df..ef98e458 100644
+--- a/src/bthread/context.h
++++ b/src/bthread/context.h
+@@ -23,9 +23,9 @@
+
+ #if defined(__GNUC__) || defined(__APPLE__)
+
+- #define BTHREAD_CONTEXT_COMPILER_gcc
++ #define BTHREAD_CONTEXT_COMPILER_gcc
+
+- #if defined(__linux__)
++ #if defined(__linux__)
+ #ifdef __x86_64__
+ #define BTHREAD_CONTEXT_PLATFORM_linux_x86_64
+ #define BTHREAD_CONTEXT_CALL_CONVENTION
+@@ -41,27 +41,30 @@
+ #define BTHREAD_CONTEXT_CALL_CONVENTION
+ #endif
+
+- #elif defined(__MINGW32__) || defined (__MINGW64__)
++ #elif defined(__MINGW32__) || defined (__MINGW64__)
+ #if defined(__x86_64__)
+ #define BTHREAD_CONTEXT_COMPILER_gcc
+ #define BTHREAD_CONTEXT_PLATFORM_windows_x86_64
+ #define BTHREAD_CONTEXT_CALL_CONVENTION
+- #endif
+-
+- #if defined(__i386__)
++ #elif defined(__i386__)
+ #define BTHREAD_CONTEXT_COMPILER_gcc
+ #define BTHREAD_CONTEXT_PLATFORM_windows_i386
+ #define BTHREAD_CONTEXT_CALL_CONVENTION __cdecl
+ #endif
+- #elif defined(__APPLE__) && defined(__MACH__)
++
++ #elif defined(__APPLE__) && defined(__MACH__)
+ #if defined (__i386__)
+ #define BTHREAD_CONTEXT_PLATFORM_apple_i386
+ #define BTHREAD_CONTEXT_CALL_CONVENTION
+ #elif defined (__x86_64__)
+ #define BTHREAD_CONTEXT_PLATFORM_apple_x86_64
+ #define BTHREAD_CONTEXT_CALL_CONVENTION
+- #endif
++ #elif defined (__aarch64__)
++ #define BTHREAD_CONTEXT_PLATFORM_apple_arm64
++ #define BTHREAD_CONTEXT_CALL_CONVENTION
+ #endif
++ #endif
++
+ #endif
+
+ #if defined(_WIN32_WCE)
+diff --git a/src/bthread/key.cpp b/src/bthread/key.cpp
+index 53f7594f..a4a08407 100644
+--- a/src/bthread/key.cpp
++++ b/src/bthread/key.cpp
+@@ -34,7 +34,7 @@ class KeyTable;
+
+ // defined in task_group.cpp
+ extern __thread TaskGroup* tls_task_group;
+-extern thread_local LocalStorage tls_bls;
++extern __thread LocalStorage tls_bls;
+ static __thread bool tls_ever_created_keytable = false;
+
+ // We keep thread specific data in a two-level array. The top-level array
+diff --git a/src/bthread/task_group.cpp b/src/bthread/task_group.cpp
+index 9f6d42fb..b8ead163 100644
+--- a/src/bthread/task_group.cpp
++++ b/src/bthread/task_group.cpp
+@@ -61,7 +61,7 @@ __thread TaskGroup* tls_task_group = NULL;
+ // Sync with TaskMeta::local_storage when a bthread is created or destroyed.
+ // During running, the two fields may be inconsistent, use tls_bls as the
+ // groundtruth.
+-thread_local LocalStorage tls_bls = BTHREAD_LOCAL_STORAGE_INITIALIZER;
++__thread LocalStorage tls_bls = BTHREAD_LOCAL_STORAGE_INITIALIZER;
+
+ // defined in bthread/key.cpp
+ extern void return_keytable(bthread_keytable_pool_t*, KeyTable*);
+diff --git a/src/butil/time.h b/src/butil/time.h
+index b288d8e4..00949f8e 100644
+--- a/src/butil/time.h
++++ b/src/butil/time.h
+@@ -215,6 +215,7 @@ inline int64_t monotonic_time_s() {
+
+ namespace detail {
+ inline uint64_t clock_cycles() {
++#if defined(__x86_64__) || defined(__amd64__)
+ unsigned int lo = 0;
+ unsigned int hi = 0;
+ // We cannot use "=A", since this would use %rax on x86_64
+@@ -223,6 +224,31 @@ inline uint64_t clock_cycles() {
+ : "=a" (lo), "=d" (hi)
+ );
+ return ((uint64_t)hi << 32) | lo;
++#elif defined(__aarch64__)
++ uint64_t virtual_timer_value;
++ asm volatile("mrs %0, cntvct_el0" : "=r"(virtual_timer_value));
++ return virtual_timer_value;
++#elif defined(__ARM_ARCH)
++ #if (__ARM_ARCH >= 6)
++ unsigned int pmccntr;
++ unsigned int pmuseren;
++ unsigned int pmcntenset;
++ // Read the user mode perf monitor counter access permissions.
++ asm volatile ("mrc p15, 0, %0, c9, c14, 0" : "=r" (pmuseren));
++ if (pmuseren & 1) { // Allows reading perfmon counters for user mode code.
++ asm volatile ("mrc p15, 0, %0, c9, c12, 1" : "=r" (pmcntenset));
++ if (pmcntenset & 0x80000000ul) { // Is it counting?
++ asm volatile ("mrc p15, 0, %0, c9, c13, 0" : "=r" (pmccntr));
++ // The counter is set up to count every 64th cycle
++ return static_cast<uint64_t>(pmccntr) * 64; // Should optimize to << 6
++ }
++ }
++ #else
++ #error "unsupported arm_arch"
++ #endif
++#else
++ #error "unsupported arch"
++#endif
+ }
+ extern int64_t read_invariant_cpu_frequency();
+ // Be positive iff:
+diff --git a/test/BUILD b/test/BUILD.bazel
+similarity index 100%
+rename from test/BUILD
+rename to test/BUILD.bazel
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 7c274ef5..f3e0c9bb 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -58,7 +58,7 @@ use_cxx11()
+
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+ #required by butil/crc32.cc to boost performance for 10x
+- if(NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4))
++ if((CMAKE_SYSTEM_PROCESSOR MATCHES "(x86)|(X86)|(amd64)|(AMD64)") AND NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.4))
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4 -msse4.2")
+ endif()
+ if(NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0))
+diff --git a/test/Makefile b/test/Makefile
+index a6e035f4..99f7b4f7 100644
+--- a/test/Makefile
++++ b/test/Makefile
+@@ -23,7 +23,9 @@ CXXFLAGS=$(CPPFLAGS) -pipe -Wall -W -fPIC -fstrict-aliasing -Wno-invalid-offseto
+
+ #required by butil/crc32.cc to boost performance for 10x
+ ifeq ($(shell test $(GCC_VERSION) -ge 40400; echo $$?),0)
+- CXXFLAGS+=-msse4 -msse4.2
++ ifeq ($(shell uname -p),i386) #note: i386 is processor family type, not the 32-bit x86 arch
++ CXXFLAGS+=-msse4 -msse4.2
++ endif
+ endif
+ #not solved yet
+ ifeq ($(CC),gcc)
+diff --git a/test/endpoint_unittest.cpp b/test/endpoint_unittest.cpp
+index ba9a4ee6..8b515ef3 100644
+--- a/test/endpoint_unittest.cpp
++++ b/test/endpoint_unittest.cpp
+@@ -384,6 +384,8 @@ TEST(EndPointTest, endpoint_sockaddr_conv_ipv6) {
+ in6_addr expect_in6_addr;
+ bzero(&expect_in6_addr, sizeof(expect_in6_addr));
+ expect_in6_addr.__in6_u.__u6_addr8[15] = 1;
++ // jge: mac monterey上应该这样,但准确判定条件不明
++ //expect_in6_addr.__u6_addr.__u6_addr8[15] = 1;
+
+ sockaddr_storage ss;
+ const sockaddr_in6* sa6 = (sockaddr_in6*) &ss;
diff --git a/thirdparty/vars.sh b/thirdparty/vars.sh
index 9c344bcdde..14ba7ff033 100644
--- a/thirdparty/vars.sh
+++ b/thirdparty/vars.sh
@@ -180,16 +180,16 @@ ODBC_SOURCE=unixODBC-2.3.7
ODBC_MD5SUM="274a711b0c77394e052db6493840c6f9"
# leveldb
-LEVELDB_DOWNLOAD="https://github.com/google/leveldb/archive/v1.20.tar.gz"
-LEVELDB_NAME=leveldb-1.20.tar.gz
-LEVELDB_SOURCE=leveldb-1.20
-LEVELDB_MD5SUM="298b5bddf12c675d6345784261302252"
+LEVELDB_DOWNLOAD="https://github.com/google/leveldb/archive/refs/tags/1.23.tar.gz"
+LEVELDB_NAME=leveldb-1.23.tar.gz
+LEVELDB_SOURCE=leveldb-1.23
+LEVELDB_MD5SUM="afbde776fb8760312009963f09a586c7"
# brpc
-BRPC_DOWNLOAD="https://github.com/apache/incubator-brpc/archive/refs/tags/1.0.0.tar.gz"
-BRPC_NAME="incubator-brpc-1.0.0.tar.gz"
-BRPC_SOURCE="incubator-brpc-1.0.0"
-BRPC_MD5SUM="73b201192a10107628e3af5ccd643676"
+BRPC_DOWNLOAD="https://github.com/apache/incubator-brpc/archive/refs/tags/1.1.0.tar.gz"
+BRPC_NAME="incubator-brpc-1.1.0.tar.gz"
+BRPC_SOURCE="incubator-brpc-1.1.0"
+BRPC_MD5SUM="e1439fd70e37a2bcffcf05b2526cacdd"
# rocksdb
ROCKSDB_DOWNLOAD="https://github.com/facebook/rocksdb/archive/v5.14.2.tar.gz"
@@ -411,8 +411,6 @@ SSE2NEON_NAME=sse2neon-1.5.1.tar.gz
SSE2NEON_SOURCE=sse2neon-1.5.1
SSE2NEON_MD5SUM="9de5dc2970aa7efac7faee59e2826c51"
-
-
# all thirdparties which need to be downloaded is set in array TP_ARCHIVES
export TP_ARCHIVES="LIBEVENT
OPENSSL
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org