This needed lots of refactoring to ego --- not all platforms have ego descr files, and ego will just crash if you invoke it without one. I think originally it was never intended that these platforms would be used at -O2 or above. Plats now only specify the ego descr file if they have one.
		
			
				
	
	
		
			239 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			239 lines
		
	
	
	
		
			5.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
 | |
| # $Id$
 | |
| #
 | |
| # Don't generate line updating code by default (i.e.: -L flag provided to cem).
 | |
| # To put it on again: use -NL
 | |
| var LFLAG=-L
 | |
| var MODULA2_INCLUDES=-I{EM}/share/ack/include/modula2
 | |
| var OCCAM_INCLUDES=-I{EM}/share/ack/include/occam
 | |
| var C_INCLUDES=-I{EM}/share/ack/include/ansi
 | |
| 
 | |
| callname ack
 | |
| name cpp
 | |
| 	# no from, this is a preprocessor
 | |
| 	to .i
 | |
| 	program {EM}/lib/ack/cpp.ansi
 | |
| 	mapflag -I* CPP_F={CPP_F?} -I*
 | |
| 	mapflag -U* CPP_F={CPP_F?} -U*
 | |
| 	mapflag -D* CPP_F={CPP_F?} -D*
 | |
| 	mapflag -P CPP_F={CPP_F?} -P
 | |
| 	mapflag -C CPP_F={CPP_F?} -C
 | |
| 	mapflag -wo CPP_F={CPP_F?} -o
 | |
| 	args {CPP_F?} \
 | |
| 		({SUFFIX?}:.ocm={OCCAM_INCLUDES}) \
 | |
| 		-D__{ARCH} -D__{PLATFORM} \
 | |
| 		-D__ACK \
 | |
| 		{SYSINCLUDES?} \
 | |
| 		{C_INCLUDES} \
 | |
| 		{INCLUDES?} \
 | |
| 		-D{ARCH} \
 | |
| 		-DEM_WSIZE={w} -DEM_PSIZE={p} \
 | |
| 		-DEM_SSIZE={s} -DEM_LSIZE={l} -DEM_FSIZE={f} -DEM_DSIZE={d} \
 | |
| 		-D_EM_WSIZE={w} -D_EM_PSIZE={p} \
 | |
| 		-D_EM_SSIZE={s} -D_EM_LSIZE={l} -D_EM_FSIZE={f} -D_EM_DSIZE={d} \
 | |
| 		<
 | |
| 	stdout
 | |
| 	prep is
 | |
| end
 | |
| name f77
 | |
| 	from .f
 | |
| 	to .c
 | |
| 	program {EM}/lib/ack/f2c
 | |
| 	mapflag -ansi F2_F={F2_F?} -A
 | |
| 	mapflag -w* F2_F={F2_F?} -w*
 | |
| 	args \
 | |
| 		{F2_F?}
 | |
| 	stdin
 | |
| 	stdout
 | |
| 	prep cond
 | |
| 	rts .f
 | |
| 	need .f
 | |
| 	callname f77
 | |
| 	callname f2c
 | |
| end
 | |
| name cem
 | |
| 	from .c
 | |
| 	to .k
 | |
| 	program {EM}/lib/ack/em_cemcom.ansi
 | |
| #	mapflag -I* CPP_F={CPP_F?} -I*
 | |
| #	mapflag -U* CPP_F={CPP_F?} -U*
 | |
| #	mapflag -D* CPP_F={CPP_F?} -D*
 | |
| 	mapflag -M* CEM_F={CEM_F?} -M*
 | |
| 	mapflag -L CEM_F={CEM_F?} -L
 | |
| 	mapflag -A CEM_F={CEM_F?} -A
 | |
| 	mapflag -NL LFLAG=
 | |
| 	mapflag -KR CEM_F={CEM_F?} -R
 | |
| 	mapflag -w CEM_F={CEM_F?} -w
 | |
| 	mapflag -wa CEM_F={CEM_F?} -a
 | |
| 	mapflag -wo CEM_F={CEM_F?} -o
 | |
| 	mapflag -ws CEM_F={CEM_F?} -s
 | |
| 	mapflag -g* CEM_F={CEM_F?} -g
 | |
| 	mapflag -p CEM_F={CEM_F?} -p
 | |
| 	mapflag -V* CEM_F={CEM_F?} -V*
 | |
| 	rts .c
 | |
| 	need .c
 | |
| 	args \
 | |
| 		{CPP_F?} \
 | |
| 		-D__{ARCH} -D__{PLATFORM} \
 | |
| 		-D__ACK \
 | |
| 		{SYSINCLUDES?} \
 | |
| 		{C_INCLUDES} \
 | |
| 		{INCLUDES?} \
 | |
| 		({ANSI_C?.xx}:.xx=-D{ARCH} \
 | |
| 		-DEM_WSIZE={w} -DEM_PSIZE={p} \
 | |
| 		-DEM_SSIZE={s} -DEM_LSIZE={l} -DEM_FSIZE={f} -DEM_DSIZE={d}) \
 | |
| 		-D_EM_WSIZE={w} -D_EM_PSIZE={p} \
 | |
| 		-D_EM_SSIZE={s} -D_EM_LSIZE={l} -D_EM_FSIZE={f} -D_EM_DSIZE={d} \
 | |
| 		-Vw{w}.{wa}i{w}.{wa}p{p}.{pa}f{f}.{fa}s{s}.{sa}l{l}.{la}d{d}.{da}x{x}.{xa} \
 | |
| 		{CC_ALIGN?} \
 | |
| 		{CEM_F?} {LFLAG?} < >
 | |
| 	callname acc
 | |
| 	callname cc
 | |
| end
 | |
| name pc
 | |
| 	from .p
 | |
| 	to .k
 | |
| 	program {EM}/lib/ack/em_pc
 | |
| 	mapflag -L PC_F={PC_F?} -L
 | |
| #	mapflag -s PC_F={PC_F?} -s
 | |
| 	mapflag -_ PC_F={PC_F?} -U
 | |
| 	mapflag -w PC_F={PC_F?} -w
 | |
| 	mapflag -V* PC_F={PC_F?} -V*
 | |
| 	mapflag -M* PC_F={PC_F?} -M*
 | |
| 	mapflag -g* PC_F={PC_F?} -g
 | |
| #	mapflag -i* PC_F={PC_F?} -i*
 | |
| 	mapflag -A  PC_F={PC_F?} -A
 | |
| #	mapflag -R  PC_F={PC_F?} -R
 | |
| 	mapflag --* PC_F={PC_F?} -*
 | |
| #range checks can only be disabled through comments
 | |
| 	args \
 | |
| 		-Vw{w}.{w}i{w}.{w}l{l}.{w}p{p}.{w}f{d}.{w}S{w}.{w} \
 | |
| 		{PC_F?} < > {SOURCE}
 | |
| 	prep cond
 | |
| 	rts .p
 | |
| 	need .p
 | |
| 	callname apc
 | |
| 	callname pc
 | |
| end
 | |
| name m2
 | |
| 	from .mod.def
 | |
| 	to .k
 | |
| 	program {EM}/lib/ack/em_m2
 | |
| 	mapflag -I* M2_INCL={M2_INCL?} -I*
 | |
| 	mapflag -L M2_F={M2_F?} -L
 | |
| 	mapflag -g* M2_F={M2_F?} -g*
 | |
| 	mapflag -w* M2_F={M2_F?} -w*
 | |
| 	mapflag -W* M2_F={M2_F?} -W*
 | |
| 	mapflag -_ M2_F={M2_F?} -U
 | |
| 	mapflag -M* M2_F={M2_F?} -M*
 | |
| 	mapflag -x M2_F={M2_F?} -x
 | |
| 	mapflag -Xs M2_F={M2_F?} -s
 | |
| 	mapflag -V* M2_F={M2_F?} -V*
 | |
| 	mapflag --* M2_F={M2_F?} -*
 | |
| 	args \
 | |
| 		{M2_INCL?} {MODULA2_INCLUDES} {M2SYSLIB?} \
 | |
| 		-Vw{w}.{w}i{w}.{w}p{p}.{w}l{l}.{w}f{f}.{w}d{d}.{w} \
 | |
| 		{M2_ALIGN?} {M2_F?} < >
 | |
| 	prep cond
 | |
| 	rts .mod
 | |
| 	need .mod
 | |
| 	callname m2
 | |
| end
 | |
| name ocm
 | |
| 	from .ocm
 | |
| 	to .k
 | |
| 	program {EM}/lib/ack/em_occam
 | |
| 	mapflag -L OCM_F={OCM_F?} -L
 | |
| 	mapflag -V* OCM_F={OCM_F?} -V*
 | |
| 	args -Vw{w}p{p}l{l} {OCM_F?}
 | |
| 	stdin
 | |
| 	stdout
 | |
| 	rts .ocm
 | |
| 	need .ocm
 | |
| 	prep cond
 | |
| 	callname ocm
 | |
| end
 | |
| name abc
 | |
| 	from .b
 | |
| 	to .k
 | |
| 	program {EM}/lib/ack/em_bem
 | |
| 	mapflag -h ABC_F={ABC_F?} -h
 | |
| 	mapflag -w ABC_F={ABC_F?} -w
 | |
| 	mapflag -L ABC_F={ABC_F?} -L
 | |
| 	mapflag -E ABC_F={ABC_F?} -E
 | |
| #	mapflag -d ABC_F={ABC_F?} -d
 | |
| 	args -Vw{w}p{p}f{d} {ABC_F?} < > {SOURCE}
 | |
| 	prep cond
 | |
| 	rts .b
 | |
| 	need .b
 | |
| 	callname abc
 | |
| end
 | |
| var A68INIT={EM}/lib/ack/em_a68s_init
 | |
| name a68s
 | |
|         from .8.a68
 | |
|         to .k
 | |
|         program {EM}/lib/ack/em_a68s{w}{p}
 | |
|         mapflag -PA* A68INIT=*
 | |
|         args < > {SOURCE}.lst {A68INIT}{w}{p} /dev/null
 | |
|         prep cond
 | |
|         rts .8
 | |
|         need .8
 | |
|         callname a68s
 | |
| end
 | |
| name encode
 | |
| 	from .e
 | |
| 	to .k
 | |
| 	program {EM}/lib/ack/em_encode
 | |
| 	args <
 | |
| 	prep cond
 | |
| 	stdout
 | |
| end
 | |
| name opt
 | |
| 	from .k
 | |
| 	to .m
 | |
| 	program {EM}/lib/ack/em_opt
 | |
| 	mapflag -LIB OPT_F={OPT_F?} -L
 | |
| # when running the global optimizer, no multiplication optimization here.
 | |
| 	mapflag -O2 OPT2_F=-m0
 | |
| 	mapflag -O3 OPT2_F=-m0
 | |
| 	mapflag -O4 OPT2_F=-m0
 | |
| 	args {OPT_F?} {MACHOPT_F?} {OPT2_F?} <
 | |
| 	stdout
 | |
| 	optimizer
 | |
| end
 | |
| name ego
 | |
| 	from .m.ma
 | |
| 	to .gk
 | |
| 	program {EM}/lib/ack/em_ego
 | |
| 	mapflag -EGO-* EGO_F={EGO_F?} -*
 | |
| 	mapflag -Q* EGO_F={EGO_F?} -Q*
 | |
| 	mapflag -T* EGO_F={EGO_F?} -T*
 | |
| 	mapflag -S* EGO_F={EGO_F?} -S*
 | |
| 	mapflag -s* EGO_F={EGO_F?} -s*
 | |
| 	mapflag -a EGO_F={EGO_F?} -a
 | |
| 	mapflag -O* EGO_F={EGO_F?} -O*
 | |
| 	args \
 | |
| 		{EGO_F?} -P {EM}/lib/ack/ego \
 | |
| 		{EGO_PLAT_FLAGS?} <
 | |
| 	optimizer 2
 | |
| 	stdout
 | |
| 	combiner
 | |
| end
 | |
| name opt2
 | |
| 	# output of the global optimizer is processed by a stripped version
 | |
| 	# of the em peephole optimizer
 | |
| 	from .gk
 | |
| 	to .g
 | |
| 	program {EM}/lib/ack/em_opt2
 | |
| #	mapflag -LIB OPT_F={OPT_F?} -L
 | |
| 	args {OPT_F?} {MACHOPT_F?} <
 | |
| 	optimizer
 | |
| 	stdout
 | |
| end
 | |
| name decode
 | |
| 	from .k.m.g.gk
 | |
| 	to .e
 | |
| 	program {EM}/lib/ack/em_decode
 | |
| 	args <
 | |
| 	stdout
 | |
| end
 |