1#!/bin/bash 2echo "$1 ($2, $3)..." 3 4make clean 1>/dev/null 2>/dev/null 5 6echo -n "building..." 7 8if [ -f /proc/cpuinfo ] 9then 10 MAKE_JOBS=$(( ($(cat /proc/cpuinfo | grep -E '^processor[[:space:]]*:' | tail -n -1 | cut -d':' -f2) + 1) * 2 + 1 )) 11else 12 MAKE_JOBS=8 13fi 14 15CFLAGS="$2 $CFLAGS $4" EXTRALIBS="$5" make -j$MAKE_JOBS -f $3 all_test 1>gcc_1.txt 2>gcc_2.txt 16mret=$? 17cnt=$(wc -l < gcc_2.txt) 18# ignore 1 line since ar prints to stderr instead of stdout and ar is called for 19# $(LIBNAME) 20if [[ $mret -ne 0 ]] || [[ $cnt -gt 1 ]]; then 21 echo "build $1 failed! printing gcc_2.txt now for convenience" 22 cat gcc_2.txt 23 exit 1 24fi 25 26echo -n "testing..." 27 28if [ -a test ] && [ -f test ] && [ -x test ]; then 29 ((./test >test_std.txt 2>test_err.txt && ./tv_gen > tv.txt) && echo "$1 test passed." && echo "y" > testok.txt) || (echo "$1 test failed, look at test_err.txt or tv.txt" && exit 1) 30 if find *_tv.txt -type f 1>/dev/null 2>/dev/null ; then 31 for f in *_tv.txt; do 32 # check for lines starting with '<' ($f might be a subset of notes/$f) 33 difftroubles=$(diff -i -w -B $f notes/$f | grep '^<') 34 if [ -n "$difftroubles" ]; then 35 echo "FAILURE: $f" 36 diff -i -w -B $f notes/$f 37 echo "tv_gen $f failed" && rm -f testok.txt && exit 1 38 else 39 true 40 fi 41 done 42 fi 43fi 44 45 46if [ -a testok.txt ] && [ -f testok.txt ]; then 47 if [ "$LTC_COVERAGE" != "" ]; then 48 ./coverage_more.sh > test_coverage_more.txt || exit 1 49 lcov_opts="--capture --no-external --directory src -q" 50 lcov_out=$(echo coverage_$1_$2_$3 | tr ' -=+' '_')".info" 51 lcov $lcov_opts --output-file $lcov_out 52 fi 53 exit 0 54fi 55exit 1 56 57# ref: HEAD -> master, tag: v1.18.2 58# git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 59# commit time: 2018-07-01 22:49:01 +0200 60