fe 5.8 KB

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