#
# Makefile for compiler
# 
.SUFFIXES:
.SUFFIXES: .em .sc 

FEEL = ../bin/feel
FEELFLAGS = -heap 9 -stack-space 500000 #  -boot boot # (only if you have an existing image)
FLINKFLAGS = -heap 14
# Order is important --- do not change! 
SRCS = boot-utils.em newinit.em initmeth.em boot.em macros0.em extras0.em \
 defs.em semaphores.em  standard0.em	\
 scan-args.em list-fns.em abs-syntx.em \
 comp-utl.em low-seman.em i-macros.em \
 stream.em peep-macs.em comp-defn.em instruct.em macros0.em props.em mod-cache.em \
 pass.em compstate.em peep-macs.em peephole.em stop.em syntx-env.em assem.em \
 peep-drv.em syntx-utl.em generate.em mod-info.em rshow.em pass-0.em \
 boot.em syntax.em output.em gen-code.em  link2.em \
 iface.em mexp.em \
  combine.em test.em \
 triang.em strtest.em low-asm.em test2.em  compile.em

OBJS = boot-utils.sc newinit.sc initmeth.sc boot.sc   macros0.sc extras0.sc \
 defs.sc semaphores.sc  standard0.sc scan-args.sc list-fns.sc abs-syntx.sc \
 comp-utl.sc low-seman.sc i-macros.sc \
 stream.sc peep-macs.sc comp-defn.sc instruct.sc props.sc mod-cache.sc \
 pass.sc compstate.sc peep-macs.sc peephole.sc stop.sc syntx-env.sc assem.sc \
 peep-drv.sc syntx-utl.sc generate.sc mod-info.sc rshow.sc pass-0.sc \
 syntax.sc output.sc gen-code.sc  link2.sc \
 iface.sc mexp.sc \
  combine.sc test.sc \
 triang.sc strtest.sc low-asm.sc test2.sc  compile.sc
 
DISTFILES = Makefile 

BOOTOBJS = boot-utils.sc newinit.sc initmeth.sc boot.sc macros0.sc extras0.sc defs.sc semaphores.sc  standard0.sc
boot.ebc: ${BOOTOBJS}
	-mv you.mods you.mods.bak
	-${FEEL} -map < /dev/null
	echo '(!> combine)(make-boot-code "you.mods" (quote boot))(exit)' | ${FEEL} ${FEELFLAGS}
	test -f boot.ebc

compiler.ebc: ${OBJS}
	(echo "(!> combine)(combine-modules (quote compiler) (quote (" ; \
	(echo ${OBJS} | sed -e 's/\.sc/ /g') ; \
	echo ")))(exit)") |  ${FEEL} ${FEELFLAGS} ${FLINKFLAGS}
	test -f compiler.ebc

compiler: compiler.ebc
	
.em.sc:
	echo '(!> peep-macs) (!> compile) ((setter optimize-code) t) (compile-module (quote $*)) (exit)' | ${FEEL} ${FEELFLAGS}  
	test -f $*.sc


tar: ${SRCS}
	tar chf - ${SRCS} ${DISTFILES} | compress > comp.tar.Z
	
abs-syntx.sc: list-fns.sc scan-args.sc
do.sc:
list-fns.sc:
pass.sc: abs-syntx.sc list-fns.sc
syntx-env.sc: mod-cache.sc comp-utl.sc abs-syntx.sc list-fns.sc
assem.sc: instruct.sc list-fns.sc comp-defn.sc stream.sc
foo.sc: peephole.sc list-fns.sc stream.sc
listops.sc: macros0.sc
peep-drv.sc: peephole.sc instruct.sc list-fns.sc stream.sc
syntx-utl.sc: syntx-env.sc stop.sc props.sc pass.sc list-fns.sc
low-asm.sc: list-fns.sc
peep2.sc: peephole.sc instruct.sc list-fns.sc peep-macs.sc stream.sc
test-call.sc: macros0.sc
boot-utils.sc: macros0.sc
gen-code.sc: syntx-env.sc stop.sc props.sc rshow.sc pass.sc generate.sc syntx-utl.sc list-fns.sc
low-load.sc: list-fns.sc
peephole.sc: instruct.sc list-fns.sc comp-defn.sc peep-macs.sc stream.sc
boot.sc: boot-utils.sc macros0.sc newinit.sc
generate.sc: compstate.sc instruct.sc list-fns.sc stream.sc
low-seman.sc: abs-syntx.sc list-fns.sc
test.sc: list-fns.sc
bootcall.sc: list-fns.sc
i-macros.sc: list-fns.sc scan-args.sc
macros0.sc:
proggy.sc: list-fns.sc
test2.sc: macros0.sc
iface.sc: syntx-env.sc props.sc comp-utl.sc syntx-utl.sc list-fns.sc
mexp.sc:
props.sc: low-seman.sc list-fns.sc
triang.sc:
combine.sc: link2.sc instruct.sc list-fns.sc boot.sc comp-defn.sc assem.sc stream.sc
initmeth.sc: boot-utils.sc macros0.sc newinit.sc
mod-cache.sc: comp-utl.sc list-fns.sc
resolve.sc: instruct.sc list-fns.sc
use.sc: props.sc pass.sc abs-syntx.sc list-fns.sc
comp-defn.sc: comp-utl.sc list-fns.sc
inlines.sc:
mod-info.sc: syntx-env.sc props.sc pass.sc list-fns.sc scan-args.sc
rshow.sc:
wibble.sc: list-fns.sc
peep-macs.sc: list-fns.sc
instruct.sc: i-macros.sc list-fns.sc scan-args.sc
newinit.sc: boot-utils.sc macros0.sc
scan-args.sc:
wow.sc: list-fns.sc
compstate.sc: props.sc abs-syntx.sc list-fns.sc scan-args.sc stream.sc
interpret.sc: list-fns.sc
nlet.sc: list-fns.sc
sems.co.sc: macros0.sc
xxx.sc: list-fns.sc
comp-utl.sc: list-fns.sc
junk.sc: list-fns.sc
non-std0.sc:
stop.sc: list-fns.sc
compile.sc: stop.sc iface.sc rshow.sc comp-utl.sc gen-code.sc output.sc list-fns.sc syntax.sc pass-0.sc
stream.sc: list-fns.sc
daftgen.sc: list-fns.sc
link.sc: stop.sc list-fns.sc comp-defn.sc stream.sc
output.sc: syntx-env.sc props.sc compstate.sc mod-info.sc instruct.sc list-fns.sc peep-drv.sc comp-defn.sc assem.sc stream.sc
strtest.sc:
debug.sc: list-fns.sc
link2.sc: list-fns.sc comp-defn.sc stream.sc
pass-0.sc: stop.sc props.sc pass.sc mod-info.sc abs-syntx.sc syntx-utl.sc list-fns.sc scan-args.sc
syntax.sc: syntx-env.sc list-fns.sc

clean:
	rm -f *.c *.sc *.i *.xm xx
