File indexing completed on 2025-02-16 05:12:12
0001 #!/bin/bash 0002 0003 COMPILERS_CXX98=`cat<<EOF 0004 gcc-4.4 0005 gcc-4.6 0006 gcc-4.7 0007 gcc-4.8 0008 clang 0009 EOF` 0010 0011 COMPILERS_CXX11=`cat<<EOF 0012 gcc-4.7 0013 gcc-4.8 0014 clang 0015 EOF` 0016 0017 0018 function mkbuild() { 0019 local compiler=$1 0020 local lang=$2 0021 local buildtype=$3 0022 local builddir="$4" 0023 export CC=$compiler 0024 export CXX=`echo $compiler | sed -e 's/clang/clang++/' -e 's/gcc/g++/'` 0025 export CXXFLAGS="-std=$lang" 0026 echo "Creating $builddir" 0027 mkdir $builddir 2>/dev/null 0028 ( 0029 cd "$builddir" 0030 cmake -DCMAKE_BUILD_TYPE=$buildtype -DBACKWARD_TESTS=ON .. 0031 ) 0032 } 0033 0034 function build() { 0035 local builddir=$1 0036 shift 0037 make -C "$builddir" $@ 0038 } 0039 0040 function dotest() { 0041 local builddir=$1 0042 shift 0043 make -C "$builddir" test $@ 0044 return 0 0045 } 0046 0047 function do_action() { 0048 local lang=$1 0049 local action=$2 0050 shift 2 0051 0052 for compiler in $COMPILERS; do 0053 local builddir="build_${lang}_${compiler}" 0054 0055 if [[ $action == "cmake" ]]; then 0056 buildtype=$1 0057 mkbuild $compiler $lang "$buildtype" "$builddir" 0058 [[ $? != 0 ]] && exit 0059 elif [[ $action == "make" ]]; then 0060 build "$builddir" $@ 0061 [[ $? != 0 ]] && exit 0062 elif [[ $action == "test" ]]; then 0063 dotest "$builddir" $@ 0064 [[ $? != 0 ]] && exit 0065 elif [[ $action == "clean" ]]; then 0066 rm -r "$builddir" 0067 else 0068 echo "usage: $0 cmake [debug|release|relwithdbg]|make|test|clean" 0069 exit 255 0070 fi 0071 done 0072 } 0073 0074 COMPILERS=$COMPILERS_CXX98 0075 do_action c++98 $@ 0076 COMPILERS=$COMPILERS_CXX11 0077 do_action c++11 $@