Pristine Ack-5.5
[Ack-5.5.git] / lib / descr / fe
1 # (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
2 # $Id: fe,v 1.12 1995/12/04 15:01:07 ceriel Exp $
3 #
4 # Don't generate line updating code by default (i.e.: -L flag provided to cem).
5 # To put it on again: use -NL
6 var LFLAG=-L
7 var C_INCLUDES=-I{EM}/include/_tail_cc
8 var ANSI_C_INCLUDES=-I{EM}/include/tail_ac
9
10 callname ack
11 name cpp
12         # no from, this is a preprocessor
13         to .i
14         program {EM}/lib.bin/cpp{ANSI_C?}
15         mapflag -I* CPP_F={CPP_F?} -I*
16         mapflag -U* CPP_F={CPP_F?} -U*
17         mapflag -D* CPP_F={CPP_F?} -D*
18         mapflag -P CPP_F={CPP_F?} -P
19         mapflag -C CPP_F={CPP_F?} -C
20         mapflag -wo CPP_F={CPP_F?} -o
21         mapflag -ansi ANSI_C=.ansi
22         args {CPP_F?} ({SUFFIX?}:.ocm=-I{EM}/include/occam) \
23                 -D__{NAME} \
24                 -D__ACK \
25                 {SYSINCLUDES?} \
26                 ({ANSI_C?}:.ansi={ANSI_C_INCLUDES}) \
27                 {C_INCLUDES} \
28                 {INCLUDES?} \
29                 ({ANSI_C?.xx}:.xx=-D{NAME} \
30                 -DEM_WSIZE={w} -DEM_PSIZE={p} \
31                 -DEM_SSIZE={s} -DEM_LSIZE={l} -DEM_FSIZE={f} -DEM_DSIZE={d}) \
32                 -D_EM_WSIZE={w} -D_EM_PSIZE={p} \
33                 -D_EM_SSIZE={s} -D_EM_LSIZE={l} -D_EM_FSIZE={f} -D_EM_DSIZE={d} \
34                 <
35         stdout
36         prep is
37 end
38 name f77
39         from .f
40         to .c
41         program {EM}/lib.bin/f2c
42         mapflag -ansi F2_F={F2_F?} -A
43         mapflag -w* F2_F={F2_F?} -w*
44         args \
45                 {F2_F?}
46         stdin
47         stdout
48         prep cond
49         rts .f
50         need .f
51         callname f77
52         callname f2c
53 end
54 name cem
55         from .c
56         to .k
57         program {EM}/lib.bin/em_cemcom{ANSI_C?}
58         mapflag -ansi ANSI=ansi
59 #       mapflag -I* CPP_F={CPP_F?} -I*
60 #       mapflag -U* CPP_F={CPP_F?} -U*
61 #       mapflag -D* CPP_F={CPP_F?} -D*
62         mapflag -M* CEM_F={CEM_F?} -M*
63         mapflag -L CEM_F={CEM_F?} -L
64         mapflag -A CEM_F={CEM_F?} -A
65         mapflag -NL LFLAG=
66         mapflag -KR CEM_F={CEM_F?} -R
67         mapflag -w CEM_F={CEM_F?} -w
68         mapflag -wa CEM_F={CEM_F?} -a
69         mapflag -wo CEM_F={CEM_F?} -o
70         mapflag -ws CEM_F={CEM_F?} -s
71         mapflag -g* CEM_F={CEM_F?} -g
72         mapflag -p CEM_F={CEM_F?} -p
73         mapflag -V* CEM_F={CEM_F?} -V*
74         rts .c
75         need .c
76         args \
77                 {CPP_F?} \
78                 -D__{NAME} \
79                 -D__ACK \
80                 {SYSINCLUDES?} \
81                 ({ANSI_C?}:.ansi={ANSI_C_INCLUDES}) \
82                 {C_INCLUDES} \
83                 {INCLUDES?} \
84                 ({ANSI_C?.xx}:.xx=-D{NAME} \
85                 -DEM_WSIZE={w} -DEM_PSIZE={p} \
86                 -DEM_SSIZE={s} -DEM_LSIZE={l} -DEM_FSIZE={f} -DEM_DSIZE={d}) \
87                 -D_EM_WSIZE={w} -D_EM_PSIZE={p} \
88                 -D_EM_SSIZE={s} -D_EM_LSIZE={l} -D_EM_FSIZE={f} -D_EM_DSIZE={d} \
89                 -Vw{w}.{w}i{w}.{w}p{p}.{w}f{f}.{w}s{s}.{s}l{l}.{w}d{d}.{w} \
90                 {CC_ALIGN?} \
91                 {CEM_F?} {LFLAG?} < >
92         callname acc
93         callname cc
94 end
95 name pc
96         from .p
97         to .k
98         program {EM}/lib.bin/em_pc
99         mapflag -L PC_F={PC_F?} -L
100 #       mapflag -s PC_F={PC_F?} -s
101         mapflag -_ PC_F={PC_F?} -U
102         mapflag -w PC_F={PC_F?} -w
103         mapflag -V* PC_F={PC_F?} -V*
104         mapflag -M* PC_F={PC_F?} -M*
105         mapflag -g* PC_F={PC_F?} -g
106 #       mapflag -i* PC_F={PC_F?} -i*
107         mapflag -A  PC_F={PC_F?} -A
108 #       mapflag -R  PC_F={PC_F?} -R
109         mapflag --* PC_F={PC_F?} -*
110 #range checks can only be disabled through comments
111         args \
112                 -Vw{w}.{w}i{w}.{w}l{l}.{w}p{p}.{w}f{d}.{w}S{w}.{w} \
113                 {PC_F?} < > {SOURCE}
114         prep cond
115         rts .p
116         need .p
117         callname apc
118         callname pc
119 end
120 name m2
121         from .mod.def
122         to .k
123         program {EM}/lib.bin/em_m2
124         mapflag -I* M2_INCL={M2_INCL?} -I*
125         mapflag -L M2_F={M2_F?} -L
126         mapflag -g* M2_F={M2_F?} -g*
127         mapflag -w* M2_F={M2_F?} -w*
128         mapflag -W* M2_F={M2_F?} -W*
129         mapflag -_ M2_F={M2_F?} -U
130         mapflag -M* M2_F={M2_F?} -M*
131         mapflag -x M2_F={M2_F?} -x
132         mapflag -Xs M2_F={M2_F?} -s
133         mapflag -V* M2_F={M2_F?} -V*
134         mapflag --* M2_F={M2_F?} -*
135         args \
136                 {M2_INCL?} -I{EM}/lib/m2 {M2SYSLIB?} \
137                 -Vw{w}.{w}i{w}.{w}p{p}.{w}l{l}.{w}f{f}.{w}d{d}.{w} \
138                 {M2_ALIGN?} {M2_F?} < >
139         prep cond
140         rts .mod
141         need .mod
142         callname m2
143 end
144 name ocm
145         from .ocm
146         to .k
147         program {EM}/lib.bin/em_occam
148         mapflag -L OCM_F={OCM_F?} -L
149         mapflag -V* OCM_F={OCM_F?} -V*
150         args -Vw{w}p{p}l{l} {OCM_F?}
151         stdin
152         stdout
153         rts .ocm
154         need .ocm
155         prep cond
156         callname ocm
157 end
158 name abc
159         from .b
160         to .k
161         program {EM}/lib.bin/em_bem
162         mapflag -h ABC_F={ABC_F?} -h
163         mapflag -w ABC_F={ABC_F?} -w
164         mapflag -L ABC_F={ABC_F?} -L
165         mapflag -E ABC_F={ABC_F?} -E
166 #       mapflag -d ABC_F={ABC_F?} -d
167         args -Vw{w}p{p}f{d} {ABC_F?} < > {SOURCE}
168         prep cond
169         rts .b
170         need .b
171         callname abc
172 end
173 var A68INIT={EM}/lib.bin/em_a68s_init
174 name a68s
175         from .8.a68
176         to .k
177         program {EM}/lib.bin/em_a68s{w}{p}
178         mapflag -PA* A68INIT=*
179         args < > {SOURCE}.lst {A68INIT}{w}{p} /dev/null
180         prep cond
181         rts .8
182         need .8
183         callname a68s
184 end
185 name encode
186         from .e
187         to .k
188         program {EM}/lib.bin/em_encode
189         args <
190         prep cond
191         stdout
192 end
193 name opt
194         from .k
195         to .m
196         program {EM}/lib.bin/em_opt
197         mapflag -LIB OPT_F={OPT_F?} -L
198 # when running the global optimizer, no multiplication optimization here.
199         mapflag -O2 OPT2_F=-m0
200         mapflag -O3 OPT2_F=-m0
201         mapflag -O4 OPT2_F=-m0
202         args {OPT_F?} {MACHOPT_F?} {OPT2_F?} <
203         stdout
204         optimizer
205 end
206 name ego
207         from .m.ma
208         to .gk
209         program {EM}/lib.bin/em_ego
210         mapflag -EGO-* EGO_F={EGO_F?} -*
211 # The following lines are obsolete, but here for backwards compatibility.
212 # They should be removed some day.
213         mapflag -IL* EGO_F={EGO_F?} -IL*
214         mapflag -CS* EGO_F={EGO_F?} -CS*
215         mapflag -SR* EGO_F={EGO_F?} -SR*
216         mapflag -UD* EGO_F={EGO_F?} -UD*
217         mapflag -LV* EGO_F={EGO_F?} -LV*
218         mapflag -SA* EGO_F={EGO_F?} -RA*
219         mapflag -SP* EGO_F={EGO_F?} -SP*
220         mapflag -BO* EGO_F={EGO_F?} -BO*
221         mapflag -CJ* EGO_F={EGO_F?} -CJ*
222         mapflag -EV EGO_F={EGO_F?} -V
223 # End of obsolete lines
224         mapflag -Q* EGO_F={EGO_F?} -Q*
225         mapflag -T* EGO_F={EGO_F?} -T*
226         mapflag -S* EGO_F={EGO_F?} -S*
227         mapflag -s* EGO_F={EGO_F?} -s*
228         mapflag -a EGO_F={EGO_F?} -a
229         mapflag -O* EGO_F={EGO_F?} -O*
230         args \
231                 {EGO_F?} -P {EM}/lib.bin/ego \
232                 -M{EM}/lib.bin/ego/{M}descr <
233         optimizer 2
234         stdout
235         combiner
236 end
237 name opt2
238         # output of the global optimizer is processed by a stripped version
239         # of the em peephole optimizer
240         from .gk
241         to .g
242         program {EM}/lib.bin/em_opt2
243 #       mapflag -LIB OPT_F={OPT_F?} -L
244         args {OPT_F?} {MACHOPT_F?} <
245         optimizer
246         stdout
247 end
248 name decode
249         from .k.m.g.gk
250         to .e
251         program {EM}/lib.bin/em_decode
252         args <
253         stdout
254 end