comparison libtommath/testme.sh @ 1437:871b18fd7065 fuzz

merge from main (libtommath/libtomcrypt/curve25510-donna updates)
author Matt Johnston <matt@ucc.asn.au>
date Sat, 24 Jun 2017 22:51:45 +0800
parents 60fc6476e044
children 8bba51a55704
comparison
equal deleted inserted replaced
1432:41dca1e5ea34 1437:871b18fd7065
1 #!/bin/bash
2 #
3 # return values of this script are:
4 # 0 success
5 # 128 a test failed
6 # >0 the number of timed-out tests
7
8 set -e
9
10 if [ -f /proc/cpuinfo ]
11 then
12 MAKE_JOBS=$(( ($(cat /proc/cpuinfo | grep -E '^processor[[:space:]]*:' | tail -n -1 | cut -d':' -f2) + 1) * 2 + 1 ))
13 else
14 MAKE_JOBS=8
15 fi
16
17 ret=0
18 TEST_CFLAGS=""
19
20 _help()
21 {
22 echo "Usage options for $(basename $0) [--with-cc=arg [other options]]"
23 echo
24 echo "Executing this script without any parameter will only run the default configuration"
25 echo "that has automatically been determined for the architecture you're running."
26 echo
27 echo " --with-cc=* The compiler(s) to use for the tests"
28 echo " This is an option that will be iterated."
29 echo
30 echo "To be able to specify options a compiler has to be given."
31 echo "All options will be tested with all MP_xBIT configurations."
32 echo
33 echo " --with-{m64,m32,mx32} The architecture(s) to build and test for,"
34 echo " e.g. --with-mx32."
35 echo " This is an option that will be iterated, multiple selections are possible."
36 echo " The mx32 architecture is not supported by clang and will not be executed."
37 echo
38 echo " --cflags=* Give an option to the compiler,"
39 echo " e.g. --cflags=-g"
40 echo " This is an option that will always be passed as parameter to CC."
41 echo
42 echo " --make-option=* Give an option to make,"
43 echo " e.g. --make-option=\"-f makefile.shared\""
44 echo " This is an option that will always be passed as parameter to make."
45 echo
46 echo "Godmode:"
47 echo
48 echo " --all Choose all architectures and gcc and clang as compilers"
49 echo
50 echo " --help This message"
51 exit 0
52 }
53
54 _die()
55 {
56 echo "error $2 while $1"
57 if [ "$2" != "124" ]
58 then
59 exit 128
60 else
61 echo "assuming timeout while running test - continue"
62 ret=$(( $ret + 1 ))
63 fi
64 }
65
66 _runtest()
67 {
68 echo -ne " Compile $1 $2"
69 make clean > /dev/null
70 CC="$1" CFLAGS="$2 $TEST_CFLAGS" make -j$MAKE_JOBS test_standalone $MAKE_OPTIONS > /dev/null 2>test_errors.txt
71 echo -e "\rRun test $1 $2"
72 timeout --foreground 90 ./test > test_$(echo ${1}${2} | tr ' ' '_').txt || _die "running tests" $?
73 }
74
75 _banner()
76 {
77 echo "uname="$(uname -a)
78 [[ "$#" != "0" ]] && (echo $1=$($1 -dumpversion)) || true
79 }
80
81 _exit()
82 {
83 if [ "$ret" == "0" ]
84 then
85 echo "Tests successful"
86 else
87 echo "$ret tests timed out"
88 fi
89
90 exit $ret
91 }
92
93 ARCHFLAGS=""
94 COMPILERS=""
95 CFLAGS=""
96
97 while [ $# -gt 0 ];
98 do
99 case $1 in
100 "--with-m64" | "--with-m32" | "--with-mx32")
101 ARCHFLAGS="$ARCHFLAGS ${1:6}"
102 ;;
103 --with-cc=*)
104 COMPILERS="$COMPILERS ${1#*=}"
105 ;;
106 --cflags=*)
107 CFLAGS="$CFLAGS ${1#*=}"
108 ;;
109 --make-option=*)
110 MAKE_OPTIONS="$MAKE_OPTIONS ${1#*=}"
111 ;;
112 --all)
113 COMPILERS="gcc clang"
114 ARCHFLAGS="-m64 -m32 -mx32"
115 ;;
116 --help)
117 _help
118 ;;
119 esac
120 shift
121 done
122
123 # default to gcc if nothing is given
124 if [[ "$COMPILERS" == "" ]]
125 then
126 _banner gcc
127 _runtest "gcc" ""
128 _exit
129 fi
130
131 archflags=( $ARCHFLAGS )
132 compilers=( $COMPILERS )
133
134 # choosing a compiler without specifying an architecture will use the default architecture
135 if [ "${#archflags[@]}" == "0" ]
136 then
137 archflags[0]=" "
138 fi
139
140 _banner
141
142 for i in "${compilers[@]}"
143 do
144 if [ -z "$(which $i)" ]
145 then
146 echo "Skipped compiler $i, file not found"
147 continue
148 fi
149 compiler_version=$(echo "$i="$($i -dumpversion))
150 if [ "$compiler_version" == "clang=4.2.1" ]
151 then
152 # one of my versions of clang complains about some stuff in stdio.h and stdarg.h ...
153 TEST_CFLAGS="-Wno-typedef-redefinition"
154 else
155 TEST_CFLAGS=""
156 fi
157 echo $compiler_version
158
159 for a in "${archflags[@]}"
160 do
161 if [[ $(expr "$i" : "clang") && "$a" == "-mx32" ]]
162 then
163 echo "clang -mx32 tests skipped"
164 continue
165 fi
166
167 _runtest "$i $a" ""
168 _runtest "$i $a" "-DMP_8BIT"
169 _runtest "$i $a" "-DMP_16BIT"
170 _runtest "$i $a" "-DMP_32BIT"
171 done
172 done
173
174 _exit