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