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
 |