5c5f711cbb
how platform libraries are built. The ARCH pm variable has now been renamed PLATFORM (which is more accurate) and a different ARCH variable added, which represents the CPU family rather than the hardware platform.
258 lines
5.8 KiB
Plaintext
258 lines
5.8 KiB
Plaintext
# (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}/include/m2
|
|
var OCCAM_INCLUDES=-I{EM}/include/occam
|
|
var C_INCLUDES=-I{EM}/include/knr
|
|
var ANSI_C_INCLUDES=-I{EM}/include/ansi
|
|
|
|
callname ack
|
|
name cpp
|
|
# no from, this is a preprocessor
|
|
to .i
|
|
program {EM}/lib.bin/cpp{ANSI_C?}
|
|
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
|
|
mapflag -ansi ANSI_C=.ansi
|
|
args {CPP_F?} \
|
|
({SUFFIX?}:.ocm={OCCAM_INCLUDES}) \
|
|
-D__{ARCH} -D__{PLATFORM} \
|
|
-D__ACK \
|
|
{SYSINCLUDES?} \
|
|
({ANSI_C?}:.ansi={ANSI_C_INCLUDES}) \
|
|
{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} \
|
|
<
|
|
stdout
|
|
prep is
|
|
end
|
|
name f77
|
|
from .f
|
|
to .c
|
|
program {EM}/lib.bin/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.bin/em_cemcom{ANSI_C?}
|
|
mapflag -ansi ANSI=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?} \
|
|
({ANSI_C?}:.ansi={ANSI_C_INCLUDES}) \
|
|
{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}.{w}i{w}.{w}p{p}.{w}f{f}.{w}s{s}.{s}l{l}.{w}d{d}.{w} \
|
|
{CC_ALIGN?} \
|
|
{CEM_F?} {LFLAG?} < >
|
|
callname acc
|
|
callname cc
|
|
end
|
|
name pc
|
|
from .p
|
|
to .k
|
|
program {EM}/lib.bin/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.bin/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.bin/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.bin/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.bin/em_a68s_init
|
|
name a68s
|
|
from .8.a68
|
|
to .k
|
|
program {EM}/lib.bin/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.bin/em_encode
|
|
args <
|
|
prep cond
|
|
stdout
|
|
end
|
|
name opt
|
|
from .k
|
|
to .m
|
|
program {EM}/lib.bin/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.bin/em_ego
|
|
mapflag -EGO-* EGO_F={EGO_F?} -*
|
|
# The following lines are obsolete, but here for backwards compatibility.
|
|
# They should be removed some day.
|
|
mapflag -IL* EGO_F={EGO_F?} -IL*
|
|
mapflag -CS* EGO_F={EGO_F?} -CS*
|
|
mapflag -SR* EGO_F={EGO_F?} -SR*
|
|
mapflag -UD* EGO_F={EGO_F?} -UD*
|
|
mapflag -LV* EGO_F={EGO_F?} -LV*
|
|
mapflag -SA* EGO_F={EGO_F?} -RA*
|
|
mapflag -SP* EGO_F={EGO_F?} -SP*
|
|
mapflag -BO* EGO_F={EGO_F?} -BO*
|
|
mapflag -CJ* EGO_F={EGO_F?} -CJ*
|
|
mapflag -EV EGO_F={EGO_F?} -V
|
|
# End of obsolete lines
|
|
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.bin/ego \
|
|
-M{EM}/lib.bin/ego/{M}descr <
|
|
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.bin/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.bin/em_decode
|
|
args <
|
|
stdout
|
|
end
|