.SUFFIXES: .m

PLOT = 4014.o
OBJ = alu.o bitop.o count.o datasel.o decode.o latch.o memory.o seq.o timing.o $(PLOT) parsecode.o output.o array.o
SUP = stream.o sim.o
ALL = proc.o $(OBJ) $(SUP)


.m.o:
	lmlc -c $*.m

all: obj example maze rullboll proc procc proci 


# Simple example
example: $(SUP) $(P) bitop.o $(PLOT) timing.o example.o
	lmlc -o example example.o timing.o $(PLOT) bitop.o $(SUP)

example.o: example.m

# Plot a maze on 4014 (Nothing to do with simulations in lml)
maze: $(PLOT) bitop.o $(P) maze.o
	lmlc -o maze maze.o bitop.o $(PLOT) array.o

maze.o: maze.m

# Simulator for trackball interface to Mac-mouse, output for 4014
rullboll: bitop.o $(P) $(SUP) $(P) 4014.o timing.o $(P) gates.o $(P) flipflops.o rullboll.o
	lmlc -o rullboll rullboll.o 4014.o bitop.o timing.o gates.o flipflops.o $(SUP)

rullboll.o: rullboll.m

# Simulation of simple processor, generates output to 4014
proc: obj proc.o
	lmlc -o proc $(ALL)

proc.o: proc.m
	lmlc -c proc.m

# Generates output as characters
procc: obj procc.o
	lmlc -o procc procc.o $(OBJ) $(SUP)

procc.o: procc.m
	lmlc -c procc.m

# Generates output as integers
proci: obj proci.o
	lmlc -o proci proci.o $(OBJ) $(SUP)

proci.o: proci.m
	lmlc -c proci.m

obj: bitop.o $(P) $(SUP) $(P) count.o $(P) datasel.o $(PLOT) $(P) array.o $(P)alu.o $(P) parsecode.o memory.o $(P) decode.o $(P) latch.o $(P) seq.o $(P) timing.o $(P) output.o
	@echo > obj

# Bitoperations 
bitop.o: bitop.t
	@case $(MACHINE) in \
	sun3)  cp bitop68.s bitop.s;; \
	sequent) cp bitop386.s bitop.s;; \
	esac 
	as -o bitop.o bitop.s
bitop.t: bitop.m.m
	lmlc -c bitop.m.m
	mv bitop.m.t bitop.t
	rm bitop.m.o

