#!/bin/bash # # Shell Options: # CLEAR YES|NO # PART_CLEAR YES|NO # JOB_NUM # BUILD_TYPE debug|release # C_COMPILER # CXX_COMPILER # RUN_VERBOSE YES|NO # WARNING_ALL YES|NO # ENABLE_GCOV YES|NO # TEST_MODULE " ..." # # CMake options: # -DCMAKE_C_COMPILER=gcc|clang # -DCMAKE_CXX_COMPILER=g++|clang++ # [-DCMAKE_BUILD_TYPE=Debug] # [-DWARNING_ALL=TRUE] # [-DENABLE_GCOV=TRUE] ROOT=`pwd` BUILD_DIR="$ROOT/builder" echo "DSN_ROOT=$DSN_ROOT" echo "DSN_THIRDPARTY_ROOT=$DSN_THIRDPARTY_ROOT" echo "C_COMPILER=$C_COMPILER" echo "CXX_COMPILER=$CXX_COMPILER" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_C_COMPILER=$C_COMPILER -DCMAKE_CXX_COMPILER=$CXX_COMPILER" echo "JOB_NUM=$JOB_NUM" MAKE_OPTIONS="$MAKE_OPTIONS -j$JOB_NUM" if [ "$CLEAR" == "YES" ] then echo "CLEAR=YES" else echo "CLEAR=NO" fi if [ "$PART_CLEAR" == "YES" ] then echo "PART_CLEAR=YES" else echo "PART_CLEAR=NO" fi if [ "$BUILD_TYPE" == "debug" ] then echo "BUILD_TYPE=debug" CMAKE_OPTIONS="$CMAKE_OPTIONS -DCMAKE_BUILD_TYPE=Debug" else echo "BUILD_TYPE=release" fi if [ "$RUN_VERBOSE" == "YES" ] then echo "RUN_VERBOSE=YES" MAKE_OPTIONS="$MAKE_OPTIONS VERBOSE=1" else echo "RUN_VERBOSE=NO" fi if [ "$WARNING_ALL" == "YES" ] then echo "WARNING_ALL=YES" CMAKE_OPTIONS="$CMAKE_OPTIONS -DWARNING_ALL=TRUE" else echo "WARNING_ALL=NO" fi if [ "$ENABLE_GCOV" == "YES" ] then echo "ENABLE_GCOV=YES" CMAKE_OPTIONS="$CMAKE_OPTIONS -DENABLE_GCOV=TRUE" else echo "ENABLE_GCOV=NO" fi if [ ! -z "$SANITIZER" ] then echo "SANITIZER=$SANITIZER" CMAKE_OPTIONS="$CMAKE_OPTIONS -DSANITIZER=$SANITIZER" else echo "Build without sanitizer" fi # valgrind can not work together with gpertools # you may want to use this option when you want to run valgrind if [ "$DISABLE_GPERF" == "YES" ] then echo "DISABLE_GPERF=YES" CMAKE_OPTIONS="$CMAKE_OPTIONS -DENABLE_GPERF=Off" else echo "DISABLE_GPERF=NO" fi CMAKE_OPTIONS="$CMAKE_OPTIONS -DBoost_NO_BOOST_CMAKE=ON -DBOOST_ROOT=${ROOT}/rdsn/thirdparty/output -DBoost_NO_SYSTEM_PATHS=ON" echo "#############################################################################" if [ -f $BUILD_DIR/CMAKE_OPTIONS ] then LAST_OPTIONS=`cat $BUILD_DIR/CMAKE_OPTIONS` if [ "$CMAKE_OPTIONS" != "$LAST_OPTIONS" ] then echo "WARNING: CMAKE_OPTIONS has changed from last build, clear environment first" CLEAR=YES fi fi if [ "$CLEAR" == "YES" -o "$PART_CLEAR" == "YES" ] then echo "Clear $BUILD_DIR ..." rm -rf $BUILD_DIR fi if [ ! -d "$BUILD_DIR" ] then echo "Running cmake..." mkdir -p $BUILD_DIR cd $BUILD_DIR echo "$CMAKE_OPTIONS" >CMAKE_OPTIONS cmake .. -DCMAKE_INSTALL_PREFIX=$BUILD_DIR/output $CMAKE_OPTIONS if [ $? -ne 0 ] then echo "ERROR: cmake failed" exit 1 fi cd .. fi cd "$ROOT" || exit 1 PEGASUS_GIT_COMMIT="non-git-repo" if git rev-parse HEAD; then # this is a git repo PEGASUS_GIT_COMMIT=$(git rev-parse HEAD) fi echo "PEGASUS_GIT_COMMIT=${PEGASUS_GIT_COMMIT}" GIT_COMMIT_FILE=include/pegasus/git_commit.h echo "Generating $GIT_COMMIT_FILE..." echo "#pragma once" >$GIT_COMMIT_FILE echo "#define PEGASUS_GIT_COMMIT \"$PEGASUS_GIT_COMMIT\"" >>$GIT_COMMIT_FILE cd $BUILD_DIR echo "Building..." make install $MAKE_OPTIONS if [ $? -ne 0 ] then echo "ERROR: build pegasus failed" exit 1 else echo "Build pegasus succeed" fi cd ..