78 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
		
		
			
		
	
	
			78 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
| 
								 | 
							
								#!/bin/bash
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								COMPILERS_CXX98=`cat<<EOF
							 | 
						||
| 
								 | 
							
								gcc-4.4
							 | 
						||
| 
								 | 
							
								gcc-4.6
							 | 
						||
| 
								 | 
							
								gcc-4.7
							 | 
						||
| 
								 | 
							
								gcc-4.8
							 | 
						||
| 
								 | 
							
								clang
							 | 
						||
| 
								 | 
							
								EOF`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								COMPILERS_CXX11=`cat<<EOF
							 | 
						||
| 
								 | 
							
								gcc-4.7
							 | 
						||
| 
								 | 
							
								gcc-4.8
							 | 
						||
| 
								 | 
							
								clang
							 | 
						||
| 
								 | 
							
								EOF`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function mkbuild() {
							 | 
						||
| 
								 | 
							
									local compiler=$1
							 | 
						||
| 
								 | 
							
									local lang=$2
							 | 
						||
| 
								 | 
							
									local buildtype=$3
							 | 
						||
| 
								 | 
							
									local builddir="$4"
							 | 
						||
| 
								 | 
							
									export CC=$compiler
							 | 
						||
| 
								 | 
							
									export CXX=`echo $compiler | sed -e 's/clang/clang++/' -e 's/gcc/g++/'`
							 | 
						||
| 
								 | 
							
									export CXXFLAGS="-std=$lang"
							 | 
						||
| 
								 | 
							
									echo "Creating $builddir"
							 | 
						||
| 
								 | 
							
									mkdir $builddir 2>/dev/null
							 | 
						||
| 
								 | 
							
									(
							 | 
						||
| 
								 | 
							
										cd "$builddir"
							 | 
						||
| 
								 | 
							
										cmake -DCMAKE_BUILD_TYPE=$buildtype -DBACKWARD_TESTS=ON ..
							 | 
						||
| 
								 | 
							
									)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function build() {
							 | 
						||
| 
								 | 
							
									local builddir=$1
							 | 
						||
| 
								 | 
							
									shift
							 | 
						||
| 
								 | 
							
									make -C "$builddir" $@
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function dotest() {
							 | 
						||
| 
								 | 
							
									local builddir=$1
							 | 
						||
| 
								 | 
							
									shift
							 | 
						||
| 
								 | 
							
									make -C "$builddir" test $@
							 | 
						||
| 
								 | 
							
									return 0
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function do_action() {
							 | 
						||
| 
								 | 
							
									local lang=$1
							 | 
						||
| 
								 | 
							
									local action=$2
							 | 
						||
| 
								 | 
							
									shift 2
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									for compiler in $COMPILERS; do
							 | 
						||
| 
								 | 
							
										local builddir="build_${lang}_${compiler}"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if [[ $action == "cmake" ]]; then
							 | 
						||
| 
								 | 
							
											buildtype=$1
							 | 
						||
| 
								 | 
							
											mkbuild $compiler $lang "$buildtype" "$builddir"
							 | 
						||
| 
								 | 
							
											[[ $? != 0 ]] && exit
							 | 
						||
| 
								 | 
							
										elif [[ $action == "make" ]]; then
							 | 
						||
| 
								 | 
							
											build "$builddir" $@
							 | 
						||
| 
								 | 
							
											[[ $? != 0 ]] && exit
							 | 
						||
| 
								 | 
							
										elif [[ $action == "test" ]]; then
							 | 
						||
| 
								 | 
							
											dotest "$builddir" $@
							 | 
						||
| 
								 | 
							
											[[ $? != 0 ]] && exit
							 | 
						||
| 
								 | 
							
										elif [[ $action == "clean" ]]; then
							 | 
						||
| 
								 | 
							
											rm -r "$builddir"
							 | 
						||
| 
								 | 
							
										else
							 | 
						||
| 
								 | 
							
											echo "usage: $0 cmake [debug|release|relwithdbg]|make|test|clean"
							 | 
						||
| 
								 | 
							
											exit 255
							 | 
						||
| 
								 | 
							
										fi
							 | 
						||
| 
								 | 
							
									done
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								COMPILERS=$COMPILERS_CXX98
							 | 
						||
| 
								 | 
							
								do_action c++98 $@
							 | 
						||
| 
								 | 
							
								COMPILERS=$COMPILERS_CXX11
							 | 
						||
| 
								 | 
							
								do_action c++11 $@
							 |