OSDN Git Service

c89b214d91b553ed6dce386418bc657d7673ee53
[pf3gnuchains/gcc-fork.git] / gcc / fixinc / check.tpl
1 [= autogen5 template sh=check.sh =]
2 [=
3 #
4 #  This file contanes the shell template to run tests on the fixes
5 #
6 =]#!/bin/sh
7
8 set -e
9 TESTDIR=tests
10 TESTBASE=`cd $1;pwd`
11
12 [ -d ${TESTDIR} ] || mkdir ${TESTDIR}
13 cd ${TESTDIR}
14 TESTDIR=`pwd`
15
16 TARGET_MACHINE='*'
17 DESTDIR=`pwd`/res
18 SRCDIR=`pwd`/inc
19 FIND_BASE='.'
20 VERBOSE=1
21 INPUT=`pwd`
22 ORIGDIR=${INPUT}
23
24 export TARGET_MACHINE DESTDIR SRCDIR FIND_BASE VERBOSE INPUT ORIGDIR
25
26 rm -rf ${DESTDIR} ${SRCDIR}
27 mkdir ${DESTDIR} ${SRCDIR}
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 =]
40 cd inc
41 [=
42 (define sfile "")
43 (define dfile "")              =][=
44
45 FOR fix                        =][=
46
47   IF (> (count "test_text") 1) =][=
48
49     (set! sfile (if (exist? "files") (get "files[]") "testing.h"))
50     (set! dfile (string-append
51           (if (*==* sfile "/")
52               (shellf "echo \"%s\"|sed 's,/[^/]*,/,'" sfile )
53               "" )
54           (string-tr! (get "hackname") "_A-Z" "-a-z")
55     )           )              =][=
56
57     FOR test_text (for-from 1) =]
58 cat >> [=(. sfile)=] <<_HACK_EOF_
59
60
61 #if defined( [=(string-upcase! (get "hackname"))=]_CHECK_[=(for-index)=] )
62 [=test_text=]
63 #endif  /* [=(string-upcase! (get "hackname"))=]_CHECK_[=(for-index)=] */
64 _HACK_EOF_
65 echo [=(. sfile)=] | ../../fixincl
66 mv -f [=(. sfile)=] [=(. dfile)=]-[=(for-index)=].h
67 [ -f ${DESTDIR}/[=(. sfile)=] ] && [=#
68    =]mv ${DESTDIR}/[=(. sfile)=] ${DESTDIR}/[=(. dfile)=]-[=(for-index)=].h[=
69
70     ENDFOR  test_text =][=
71
72   ENDIF  multi-test   =][=
73
74 ENDFOR  fix
75
76 =][=
77
78 FOR fix =][=
79
80   IF (not (exist? "test_text")) =][=
81     IF (not (exist? "replace")) =]
82 echo No test for [=hackname=] in inc/[=
83       IF (exist? "files")       =][=
84         files[0] =][=
85       ELSE  =]testing.h[=
86       ENDIF =][=
87     ENDIF   =][=
88   ELSE      =]
89 cat >> [=
90     IF (exist? "files") =][=
91       files[0] =][=
92     ELSE =]testing.h[=
93     ENDIF =] <<_HACK_EOF_
94
95
96 #if defined( [=(string-upcase! (get "hackname"))=]_CHECK )
97 [=test_text=]
98 #endif  /* [=(string-upcase! (get "hackname"))=]_CHECK */
99 _HACK_EOF_
100 [=ENDIF =][=
101
102 ENDFOR  fix
103
104 =]
105
106 find . -type f | sed 's;\./;;' | sort | ../../fixincl
107 cd ${DESTDIR}
108
109 exitok=true
110
111 find * -type f -print > ${TESTDIR}/LIST
112
113 #  Special hack for sys/types.h:  the #define-d types for size_t,
114 #  ptrdiff_t and wchar_t are different for each port.  Therefore,
115 #  strip off the defined-to type so that the test results are the
116 #  same for all platforms.
117 #
118 sed 's/\(#define __[A-Z_]*_TYPE__\).*/\1/' sys/types.h > XX
119 mv -f XX sys/types.h
120
121 #  The following subshell weirdness is for saving an exit
122 #  status from within a while loop that reads input.  If you can
123 #  think of a cleaner way, suggest away, please...
124 #
125 exitok=`
126 exec < ${TESTDIR}/LIST
127 while read f
128 do
129   if [ ! -f ${TESTBASE}/$f ]
130   then
131     echo "Newly fixed header:  $f" >&2
132     exitok=false
133
134   elif cmp $f ${TESTBASE}/$f >&2
135   then
136     :
137
138   else
139     diff -u $f ${TESTBASE}/$f >&2 || :
140     exitok=false
141   fi
142 done
143 echo $exitok`
144
145 cd $TESTBASE
146
147 find * -type f -print | \
148 fgrep -v 'CVS/' > ${TESTDIR}/LIST
149
150 exitok=`
151 exec < ${TESTDIR}/LIST
152 while read f
153 do
154   if [ -s $f ] && [ ! -f ${DESTDIR}/$f ]
155   then
156     echo "Missing header fix:  $f" >&2
157     exitok=false
158   fi
159 done
160 echo $exitok`
161
162 echo
163 if $exitok
164 then
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
170 else
171   echo There were fixinclude test FAILURES  >&2
172 fi
173 $exitok[=
174
175 (set-writable)
176
177 =]