]> gcc.gnu.org Git - gcc.git/blame - fixincludes/check.tpl
re PR tree-optimization/40421 (Revision 148352 failed 416.gamess in SPEC CPU 2006)
[gcc.git] / fixincludes / check.tpl
CommitLineData
865e0a83 1[= autogen5 template sh=check.sh =]
7a544ce1
BK
2[=
3#
4# This file contanes the shell template to run tests on the fixes
5#
6=]#!/bin/sh
7
8set -e
5d7d28c2 9TESTDIR=tests
1e6347d8 10TESTBASE=`cd $1;${PWDCMD-pwd}`
5d7d28c2
BK
11
12[ -d ${TESTDIR} ] || mkdir ${TESTDIR}
13cd ${TESTDIR}
1e6347d8 14TESTDIR=`${PWDCMD-pwd}`
7a544ce1
BK
15
16TARGET_MACHINE='*'
1e6347d8
RO
17DESTDIR=`${PWDCMD-pwd}`/res
18SRCDIR=`${PWDCMD-pwd}`/inc
7a544ce1 19FIND_BASE='.'
7a9cdb10 20VERBOSE=[=` echo ${VERBOSE-1} `=]
1e6347d8 21INPUT=`${PWDCMD-pwd}`
62a99405 22ORIGDIR=${INPUT}
7a544ce1 23
62a99405 24export TARGET_MACHINE DESTDIR SRCDIR FIND_BASE VERBOSE INPUT ORIGDIR
7a544ce1 25
5d7d28c2 26rm -rf ${DESTDIR} ${SRCDIR}
7a544ce1 27mkdir ${DESTDIR} ${SRCDIR}
8d75cd1f
BK
28(
29[=
30 (shellf
31 "for f in %s
32 do case $f in
33 */* ) echo $f | sed 's;/[^/]*$;;' ;;
34 esac
35 done | sort -u | \
36 while read g
37 do echo \" mkdir \\${SRCDIR}/$g || mkdir -p \\${SRCDIR}/$g || exit 1\"
38 done" (join " " (stack "fix.files")) ) =]
39) 2> /dev/null[= # suppress 'No such file or directory' messages =]
5d7d28c2 40cd inc
7a544ce1 41[=
8d75cd1f 42(define sfile "")
7b78a14a 43(define HACK "")
8d75cd1f 44(define dfile "") =][=
7a544ce1 45
8d75cd1f 46FOR fix =][=
5d7d28c2 47
8d75cd1f 48 IF (> (count "test_text") 1) =][=
7b78a14a 49 (set! HACK (string-upcase! (get "hackname")))
8d75cd1f
BK
50 (set! sfile (if (exist? "files") (get "files[]") "testing.h"))
51 (set! dfile (string-append
52 (if (*==* sfile "/")
53 (shellf "echo \"%s\"|sed 's,/[^/]*,/,'" sfile )
54 "" )
55 (string-tr! (get "hackname") "_A-Z" "-a-z")
56 ) ) =][=
57
58 FOR test_text (for-from 1) =]
59cat >> [=(. sfile)=] <<_HACK_EOF_
5d7d28c2
BK
60
61
7b78a14a 62#if defined( [=(. HACK)=]_CHECK_[=(for-index)=] )
5d7d28c2 63[=test_text=]
7b78a14a 64#endif /* [=(. HACK)=]_CHECK_[=(for-index)=] */
5d7d28c2 65_HACK_EOF_
8d75cd1f
BK
66echo [=(. sfile)=] | ../../fixincl
67mv -f [=(. sfile)=] [=(. dfile)=]-[=(for-index)=].h
68[ -f ${DESTDIR}/[=(. sfile)=] ] && [=#
69 =]mv ${DESTDIR}/[=(. sfile)=] ${DESTDIR}/[=(. dfile)=]-[=(for-index)=].h[=
70
865e0a83 71 ENDFOR test_text =][=
8d75cd1f
BK
72
73 ENDIF multi-test =][=
5d7d28c2 74
865e0a83 75ENDFOR fix
5d7d28c2
BK
76
77=][=
78
7b78a14a
BK
79FOR fix =][=
80 (set! HACK (string-upcase! (get "hackname"))) =][=
7a544ce1 81
865e0a83 82 IF (not (exist? "test_text")) =][=
7b78a14a
BK
83 (if (not (exist? "replace"))
84 (error (sprintf "include fix '%s' has no test text"
85 (get "hackname") )) )
86 =][=
87 ELSE =]
5d7d28c2 88cat >> [=
865e0a83 89 IF (exist? "files") =][=
7a544ce1 90 files[0] =][=
865e0a83
BK
91 ELSE =]testing.h[=
92 ENDIF =] <<_HACK_EOF_
7a544ce1
BK
93
94
7b78a14a 95#if defined( [=(. HACK)=]_CHECK )
5d7d28c2 96[=test_text=]
7b78a14a 97#endif /* [=(. HACK)=]_CHECK */
7a544ce1 98_HACK_EOF_
865e0a83 99[=ENDIF =][=
7a544ce1 100
865e0a83 101ENDFOR fix
7a544ce1
BK
102
103=]
104
7b78a14a 105find . -type f | sed 's;^\./;;' | sort | ../../fixincl
5d7d28c2
BK
106cd ${DESTDIR}
107
108exitok=true
35dfe415 109
5d7d28c2
BK
110find * -type f -print > ${TESTDIR}/LIST
111
a83b3e4f
BK
112# Special hack for sys/types.h: the #define-d types for size_t,
113# ptrdiff_t and wchar_t are different for each port. Therefore,
114# strip off the defined-to type so that the test results are the
115# same for all platforms.
116#
117sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX
118mv -f XX sys/types.h
119
120# The following subshell weirdness is for saving an exit
121# status from within a while loop that reads input. If you can
122# think of a cleaner way, suggest away, please...
123#
5d7d28c2
BK
124exitok=`
125exec < ${TESTDIR}/LIST
35dfe415
BK
126while read f
127do
5d7d28c2
BK
128 if [ ! -f ${TESTBASE}/$f ]
129 then
130 echo "Newly fixed header: $f" >&2
131 exitok=false
132
133 elif cmp $f ${TESTBASE}/$f >&2
35dfe415 134 then
5d7d28c2
BK
135 :
136
35dfe415 137 else
6bf1ffe1 138 ${DIFF:-diff} -c $f ${TESTBASE}/$f >&2 || :
5d7d28c2 139 exitok=false
35dfe415 140 fi
5d7d28c2
BK
141done
142echo $exitok`
35dfe415 143
5d7d28c2 144cd $TESTBASE
7a544ce1 145
5d7d28c2 146find * -type f -print | \
42068fd9 147fgrep -v 'CVS/' | \
541c886c 148fgrep -v '.svn/' > ${TESTDIR}/LIST
7a544ce1 149
5d7d28c2
BK
150exitok=`
151exec < ${TESTDIR}/LIST
152while read f
153do
154 if [ -s $f ] && [ ! -f ${DESTDIR}/$f ]
155 then
156 echo "Missing header fix: $f" >&2
157 exitok=false
158 fi
159done
160echo $exitok`
7a544ce1 161
5d7d28c2
BK
162echo
163if $exitok
164then
165 cd ${TESTDIR}
166 rm -rf inc res LIST
167 cd ..
168 rmdir ${TESTDIR} > /dev/null 2>&1 || :
169 echo All fixinclude tests pass >&2
170else
171 echo There were fixinclude test FAILURES >&2
172fi
173$exitok[=
7a544ce1 174
abaa8559 175(if (defined? 'set-writable) (set-writable))
5d7d28c2 176
7a544ce1 177=]
This page took 1.414785 seconds and 5 git commands to generate.