mirror of
https://gitee.com/an-tao/drogon.git
synced 2024-11-29 18:27:43 +08:00
54727a5dbe
Co-authored-by: an-tao <antao2002@gmail.com>
101 lines
1.9 KiB
Bash
Executable File
101 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
#build drogon
|
|
function build_drogon() {
|
|
|
|
#Update the submodule and initialize
|
|
git submodule update --init
|
|
|
|
#Remove the config.h generated by the old version of drogon.
|
|
rm -f lib/inc/drogon/config.h
|
|
|
|
#Save current directory
|
|
current_dir="${PWD}"
|
|
|
|
#The folder in which we will build drogon
|
|
build_dir='./build'
|
|
if [ -d $build_dir ]; then
|
|
echo "Deleted folder: ${build_dir}"
|
|
rm -rf $build_dir
|
|
fi
|
|
|
|
#Create building folder
|
|
echo "Created building folder: ${build_dir}"
|
|
mkdir $build_dir
|
|
|
|
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_DROGON_SHARED=ON -DCMAKE_CXX_VISIBILITY_PRESET=hidden -DCMAKE_VISIBILITY_INLINES_HIDDEN=1 $cmake_gen
|
|
else
|
|
cmake .. -DCMAKE_BUILD_TYPE=release $cmake_gen
|
|
fi
|
|
|
|
#If errors then exit
|
|
if [ "$?" != "0" ]; then
|
|
exit -1
|
|
fi
|
|
|
|
$make_program $make_flags
|
|
|
|
#If errors then exit
|
|
if [ "$?" != "0" ]; then
|
|
exit -1
|
|
fi
|
|
|
|
echo "Installing ..."
|
|
sudo $make_program install
|
|
|
|
#Go back to the current directory
|
|
cd $current_dir
|
|
#Ok!
|
|
}
|
|
|
|
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 [ "$1" = "-t" ]; then
|
|
build_drogon 1
|
|
elif [ "$1" = "-tshared" ]; then
|
|
build_drogon 2
|
|
else
|
|
build_drogon 0
|
|
fi |