OSDN Git Service

Upgrade to AutoGen 5 Template
[pf3gnuchains/gcc-fork.git] / gcc / fixinc / fixincl.tpl
1 [= AutoGen5 Template -*- Mode: C -*-
2 x=fixincl.x =]
3 /*
4  *  DO NOT EDIT THIS FILE - it has been generated
5  *
6  * Install modified versions of certain ANSI-incompatible system header
7  * files which are fixed to work correctly with ANSI C and placed in a
8  * directory that GNU C will search.
9  *
10  * This file contains [=(count "fix")=] fixup descriptions.
11  *
12  * See README for more information.
13  *
14  *  inclhack copyright (c) 1998, 1999, 2000, 2001
15  *  The Free Software Foundation, Inc.
16  *
17  [=(define re-ct 0) (define max-mach 0) (define ct 0)
18    (define HACK "") (define Hack "")    (define tmp "")
19    (gpl "inclhack" " *  ")=]
20  */
21 [=
22
23 FOR fix =]
24 /* * * * * * * * * * * * * * * * * * * * * * * * * *
25  *
26  *  Description of [=
27     (set! Hack (string-capitalize! (get "hackname")))
28     (set! HACK (string-upcase!     (get "hackname")))
29     (. Hack)=] fix
30  */[=
31
32 # Note that this is not just for debugging purposes, but in case
33   some C fix wishes to refer to the regexps it is paired with.
34   See commentary at the top of fixfixes.c.
35 =]
36 #define [=(sprintf "%-32s" (string-append HACK "_FIXIDX"))=] [=(for-index)=]
37 tSCC z[=(. Hack)=]Name[] =
38      "[=hackname=]";
39
40 /*
41  *  File name selection pattern
42  */[=
43
44   IF (exist? "files")=]
45 tSCC z[=(. Hack)=]List[] =
46   "[=FOR files =]|[=files=][=ENDFOR=]|";[=
47
48   ELSE =]
49 #define z[=(. Hack)=]List (char*)NULL[=
50   ENDIF (exist? "files") =]
51 /*
52  *  Machine/OS name selection pattern
53  */[=
54
55   IF (exist? "mach")=]
56 tSCC* apz[=(. Hack)=]Machs[] = {[=
57     (set! ct 0) =][=
58
59     FOR mach =]
60         [=
61       (set! tmp (get "mach"))
62       (set! ct (+ ct (string-length tmp) 5))
63       (kr-string tmp)=],[=
64     ENDFOR=]
65         (const char*)NULL };[=
66
67     (if (> ct max-mach) (set! max-mach ct)) =][=
68
69   ELSE =]
70 #define apz[=(. Hack)=]Machs (const char**)NULL[=
71   ENDIF (exist? "files") =][=
72
73   IF (exist? "select")=]
74
75 /*
76  *  content selection pattern - do fix if pattern found
77  */[=
78     FOR select =]
79 tSCC z[=(. Hack)=]Select[=(for-index)=][] =
80        [=(kr-string (get "select"))=];[=
81     ENDFOR select =][=
82   ENDIF =][=
83
84   IF (exist? "bypass")=]
85
86 /*
87  *  content bypass pattern - skip fix if pattern found
88  */[=
89     FOR bypass =]
90 tSCC z[=(. Hack)=]Bypass[=(for-index)=][] =
91        [=(kr-string (get "bypass"))=];[=
92     ENDFOR bypass =][=
93   ENDIF =][=
94
95   IF (exist? "test")=]
96
97 /*
98  *  perform the 'test' shell command - do fix on success
99  */[=
100     FOR test =]
101 tSCC z[=(. Hack)=]Test[=(for-index)=][] =
102        [=(kr-string (get "test"))=];[=
103     ENDFOR  =][=
104   ENDIF     =][=
105
106   IF (exist? "c_test")=]
107
108 /*
109  *  perform the C function call test
110  */[=
111     FOR c_test =]
112 tSCC z[=(. Hack)=]FTst[=(for-index)=][] = "[=c_test=]";[=
113     ENDFOR c_test =][=
114   ENDIF =][=
115
116   IF (set! ct (+ (count "select") (count "bypass") 
117               (count "test") (count "c_test")))
118
119      (= ct 0)
120 =]
121 #define [=(. HACK)=]_TEST_CT  0
122 #define a[=(. Hack)=]Tests   (tTestDesc*)NULL[=
123   ELSE =]
124
125 #define    [=(. HACK)=]_TEST_CT  [=(. ct)=][=
126         (set! re-ct (+ re-ct (count "select") (count "bypass"))) =]
127 static tTestDesc a[=(. Hack)=]Tests[] = {[=
128
129     FOR test =]
130   { TT_TEST,     z[=(. Hack)=]Test[=(for-index)=],   0 /* unused */ },[=
131     ENDFOR test =][=
132
133     FOR c_test =]
134   { TT_FUNCTION, z[=(. Hack)=]FTst[=(for-index)=],   0 /* unused */ },[=
135     ENDFOR c_test =][=
136
137     FOR bypass =]
138   { TT_NEGREP,   z[=(. Hack)=]Bypass[=(for-index)=], (regex_t*)NULL },[=
139     ENDFOR bypass =][=
140
141     FOR select =]
142   { TT_EGREP,    z[=(. Hack)=]Select[=(for-index)=], (regex_t*)NULL },[=
143     ENDFOR select =] };[=
144   ENDIF =]
145
146 /*
147  *  Fix Command Arguments for [=(. Hack)=]
148  */
149 static const char* apz[=(. Hack)=]Patch[] = {[=
150     IF   (exist? "sed")=] "sed"[=
151       FOR sed=],
152     "-e", [=(kr-string (get "sed"))=][=
153       ENDFOR sed=],[=
154
155     ELIF (exist? "shell")=] "sh", "-c",
156     [=(kr-string (get "shell"))=],[=
157
158     ELIF (exist? "c_fix")=]
159     [=(kr-string (get "c_fix"))=],[=
160
161       FOR c_fix_arg =]
162     [=(kr-string (get "c_fix_arg"))=],[=
163       ENDFOR c_fix_arg =][=
164
165     ELIF (> (len "replace") 0) =]
166 [=(kr-string (get "replace"))=],[=
167
168     ENDIF=]
169     (char*)NULL };
170 [=ENDFOR fix=]
171
172 /* * * * * * * * * * * * * * * * * * * * * * * * * *
173  *
174  *  List of all fixes
175  */[=
176 #  as of this writing, 49 bytes are needed by the case statement format.
177    We also must allow for the size of the target machine machine name.
178    This allows for a 79 byte machine name.  Better be enough.
179 =]
180 #define REGEX_COUNT          [= (. re-ct) =]
181 #define MACH_LIST_SIZE_LIMIT [= (+ 128 max-mach) =]
182 #define FIX_COUNT            [= (count "fix") =]
183
184 tFixDesc fixDescList[ FIX_COUNT ] = {[=
185
186
187 FOR fix ",\n" =][=
188     (set! Hack (string-capitalize! (get "hackname")))
189     (set! HACK (string-upcase!     (get "hackname"))) =]
190   {  z[=(. Hack)=]Name,    z[=(. Hack)=]List,
191      apz[=(. Hack)=]Machs,
192      [=(. HACK)=]_TEST_CT, [=
193        IF (exist? "not_machine") =]FD_MACH_IFNOT[=
194        ELSE                      =]FD_MACH_ONLY[=
195        ENDIF =][=
196        IF    (exist? "shell")    =] | FD_SHELL_SCRIPT[=
197        ELIF  (exist? "c_fix")    =] | FD_SUBROUTINE[=
198        ELIF  (exist? "replace")  =] | FD_REPLACEMENT[=
199        ENDIF =],
200      a[=(. Hack)=]Tests,   apz[=(. Hack)=]Patch, 0 }[=
201
202 ENDFOR =]
203 };