78 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/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 $@
 | 
