fe.src 5.1 KB

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