drogon/build.sh

102 lines
1.9 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
2018-11-16 15:31:08 +08:00
2019-03-06 15:57:05 +08:00
#build drogon
2018-11-16 15:31:08 +08:00
function build_drogon() {
2018-11-16 18:25:41 +08:00
#Update the submodule and initialize
2018-11-16 15:31:08 +08:00
git submodule update --init
#Remove the config.h generated by the old version of drogon.
rm -f lib/inc/drogon/config.h
2019-03-06 15:57:05 +08:00
#Save current directory
2018-11-16 15:31:08 +08:00
current_dir="${PWD}"
2019-03-06 15:57:05 +08:00
#The folder in which we will build drogon
2018-11-16 15:31:08 +08:00
build_dir='./build'
if [ -d $build_dir ]; then
echo "Deleted folder: ${build_dir}"
2018-11-16 17:26:35 +08:00
rm -rf $build_dir
2018-11-16 15:31:08 +08:00
fi
2019-03-06 15:57:05 +08:00
#Create building folder
2018-11-16 15:31:08 +08:00
echo "Created building folder: ${build_dir}"
2018-11-16 17:26:35 +08:00
mkdir $build_dir
2018-11-16 15:31:08 +08:00
echo "Entering folder: ${build_dir}"
cd $build_dir
echo "Start building drogon ..."
if [ $1 -eq 1 ]; then
cmake .. -DBUILD_TESTING=YES $cmake_gen
elif [ $1 -eq 2 ]; then
cmake .. -DBUILD_TESTING=YES -DBUILD_SHARED_LIBS=ON -DCMAKE_CXX_VISIBILITY_PRESET=hidden -DCMAKE_VISIBILITY_INLINES_HIDDEN=1 $cmake_gen
else
2020-07-30 16:27:35 +08:00
cmake .. -DCMAKE_BUILD_TYPE=release $cmake_gen
fi
2018-11-16 18:25:41 +08:00
#If errors then exit
2018-11-16 15:31:08 +08:00
if [ "$?" != "0" ]; then
2019-03-26 15:25:22 +08:00
exit -1
2018-11-16 15:31:08 +08:00
fi
$make_program $make_flags
2018-11-16 15:31:08 +08:00
2018-11-16 18:25:41 +08:00
#If errors then exit
2018-11-16 15:31:08 +08:00
if [ "$?" != "0" ]; then
2019-03-26 15:25:22 +08:00
exit -1
2018-11-16 15:31:08 +08:00
fi
2018-11-16 18:25:41 +08:00
echo "Installing ..."
$make_program install
2018-11-16 15:31:08 +08:00
2019-03-06 15:57:05 +08:00
#Go back to the current directory
2018-11-16 15:31:08 +08:00
cd $current_dir
2018-11-16 18:25:41 +08:00
#Ok!
2018-11-16 15:31:08 +08:00
}
make_program=make
make_flags=''
cmake_gen=''
parallel=1
case $(uname) in
FreeBSD)
nproc=$(sysctl -n hw.ncpu)
;;
Darwin)
nproc=$(sysctl -n hw.ncpu) # sysctl -n hw.ncpu is the equivalent to nproc on macOS.
;;
*)
nproc=$(nproc)
;;
esac
# simulate ninja's parallelism
case nproc in
1)
parallel=$(( nproc + 1 ))
;;
2)
parallel=$(( nproc + 1 ))
;;
*)
parallel=$(( nproc + 2 ))
;;
esac
if [ -f /bin/ninja ]; then
make_program=ninja
cmake_gen='-GNinja'
else
make_flags="$make_flags -j$parallel"
fi
if [ "X$1" = "X-t" ]; then
build_drogon 1
elif [ "X$1" = "X-tshared" ]; then
build_drogon 2
else
build_drogon 0
fi