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 $@