#!/bin/bash
mode="B"
for i in "$@"
do
case $i in
--mode=*)
mode="${i#*=}"
shift
;;
*)
;;
esac
done
if [ "$mode" != "A" ] && [ "$mode" != "B" ]; then
echo "Error: Invalid value for --mode. Allowed values are 'A' or 'B'."
exit 1
fi
EXTRA_INC=""
_3rd_root="${THIRD_BIN_PATH:-${binarylib_dir:-}}"
if [ -n "${_3rd_root}" ] && [ -d "${_3rd_root}" ]; then
_dep="${_3rd_root}/kernel/dependency"
for _d in kerberos/comm kerberos/llt; do
if [ -f "${_dep}/${_d}/include/gssapi/gssapi.h" ] || [ -f "${_dep}/${_d}/include/gssapi.h" ]; then
EXTRA_INC="${EXTRA_INC} -I${_dep}/${_d}/include"
break
fi
done
for _d in openssl/comm openssl/llt tassl/comm tassl/llt; do
if [ -d "${_dep}/${_d}/include/openssl" ]; then
EXTRA_INC="${EXTRA_INC} -I${_dep}/${_d}/include"
break
fi
done
fi
_saved_ld="${LD_LIBRARY_PATH}"
_comp=$(echo "${CXX:-${CC:-}}" | sed 's/^ccache[[:space:]]*//' | awk '{print $NF}')
if [ -n "${_comp}" ] && [ -x "${_comp}" ]; then
_lib64=$(cd "$(dirname "${_comp}")/../lib64" 2>/dev/null && pwd)
if [ -n "${_lib64}" ] && [ -d "${_lib64}" ]; then
export LD_LIBRARY_PATH="${_lib64}:${LD_LIBRARY_PATH}"
fi
fi
build_one()
{
local src_dir=$1
local flags=$2
mkdir -p "${src_dir}"
tar -zxf "${src_dir}.tar.gz" -C "${src_dir}"
cp src_mock.cpp "${src_dir}/source/src_mock.cpp"
cp Makefile "${src_dir}/source/Makefile"
cd "${src_dir}/source" || exit 1
make CC="${CC:-gcc}" CXX="${CXX:-g++}" \
CFLAGS="${flags} ${EXTRA_INC}" CXXFLAGS="${flags} ${EXTRA_INC}" \
build_shared -sj || {
echo "Error: libog_query build_shared failed in ${src_dir}/source"
exit 1
}
[ -f libog_query.so ] || {
echo "Error: libog_query.so was not generated"
exit 1
}
cp libog_query.so ../../libog_query.so
}
if [ "$mode" == "A" ]; then
build_one source_server "-fstack-protector-strong"
elif [ "$mode" == "B" ]; then
build_one source_dolphin "-DDOLPHIN -fstack-protector-strong"
fi
export LD_LIBRARY_PATH="${_saved_ld}"