|
#! /usr/bin/env bash |
|
|
|
|
|
function test_run() |
|
{ |
|
local cc="$1" |
|
local out="" |
|
|
|
make clean |
|
make CC="$cc" || return 1 |
|
out=$(./client) |
|
make clean |
|
|
|
if [ "$out" == "ABC" ] ; then |
|
return 0 |
|
else |
|
return 2 |
|
fi |
|
} |
|
|
|
function test_report() |
|
{ |
|
local cc="$1" |
|
local res="$2" |
|
local ok="" |
|
local so="" |
|
local ko="" |
|
local no="" |
|
local msg="" |
|
|
|
if [ -t 1 ] && tput "colors" &> /dev/null ; then |
|
ok="$(tput bold)$(tput setaf 2)" |
|
so="$(tput bold)$(tput setaf 3)" |
|
ko="$(tput bold)$(tput setaf 1)" |
|
no="$(tput sgr0)" |
|
fi |
|
|
|
printf "%-110s " "$cc" |
|
if [ $res -eq 0 ] ; then |
|
printf "%s%s%s\n" "$ok" "OK" "$no" |
|
elif [ $res -eq 1 ] ; then |
|
printf "%s%s%s\n" "$so" "CE" "$no" |
|
else |
|
printf "%s%s%s\n" "$ko" "KO" "$no" |
|
fi |
|
} |
|
|
|
function test() |
|
{ |
|
local cc="$1" |
|
local res="" |
|
|
|
test_run "$cc" 2>&1 &> /dev/null |
|
res=$? |
|
test_report "$cc" "$res" |
|
} |
|
|
|
test_cc() |
|
{ |
|
which "$1" &> /dev/null |
|
res=$? |
|
if [ $res -ne 0 ] ; then |
|
echo "$1 not found" >&2 |
|
fi |
|
return $res |
|
} |
|
|
|
if test_cc "g++" ; then |
|
test "g++" |
|
test "g++ -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_VISITOR" |
|
test "g++ -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -DINLINE_APPLY" |
|
test "g++ -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "g++ -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "g++ -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY" |
|
test "g++ -DTEMPLATE_APPLY -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY -DEXTERN_APPLY" |
|
test "g++ -DTEMPLATE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR" |
|
test "g++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "g++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "g++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "g++ -fno-weak" |
|
test "g++ -fno-weak -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_VISITOR" |
|
test "g++ -fno-weak -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DINLINE_APPLY" |
|
test "g++ -fno-weak -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "g++ -fno-weak -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DEXTERN_APPLY" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DTEMPLATE_VISITOR" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "g++ -fno-weak -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
fi |
|
|
|
if test_cc "clang++" ; then |
|
test "clang++" |
|
test "clang++ -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_VISITOR" |
|
test "clang++ -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -DINLINE_APPLY" |
|
test "clang++ -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "clang++ -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "clang++ -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY" |
|
test "clang++ -DTEMPLATE_APPLY -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY -DEXTERN_APPLY" |
|
test "clang++ -DTEMPLATE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR" |
|
test "clang++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "clang++ -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "clang++ -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables" |
|
test "clang++ -Wweak-vtables -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_VISITOR" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DINLINE_APPLY" |
|
test "clang++ -Wweak-vtables -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "clang++ -Wweak-vtables -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DEXTERN_APPLY" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DTEMPLATE_VISITOR" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY -DEXTERN_APPLY -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTEND_AFTER" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY" |
|
test "clang++ -Wweak-vtables -DTEMPLATE_APPLY -DINLINE_APPLY -DTEMPLATE_VISITOR -DEXTERN_APPLY -DEXTEND_AFTER" |
|
fi |