# Compiler Construction 2013 
# Computer Laboratory 
# University of Cambridge 
# Timothy G. Griffin (tgg22@cam.ac.uk) 

# Unix Makefile for Slang.2 implementation

# adjust this for your system
#MOSMLHOME=${HOME}/mosml
MOSMLHOME=/Users/timothygriffin/installs/mosml
MOSMLTOOLS=$(MOSMLHOME)/bin/camlrunm $(MOSMLHOME)/tools
MOSMLC=$(MOSMLHOME)/bin/mosmlc 
MOSMLLEX=$(MOSMLHOME)/bin/mosmllex
MOSMLYACC=$(MOSMLHOME)/bin/mosmlyac

FILES=Library.uo Temp.uo AST_expr.uo Tree.uo AST_vsm_assembler.uo AST_closure.uo Parser.uo Lexer.uo Parse.uo static_semantics.uo Alpha.uo Closure.uo Translate.uo vsm_code_gen.uo slang_compile.uo

all: $(FILES)
	$(MOSMLC) -o slang2 $(FILES) main.sml 

Parser.sml Parser.sig: Parser.grm
	$(MOSMLYACC) -v Parser.grm


.SUFFIXES :
.SUFFIXES : .sml .sig .ui .uo .lex

.sig.ui:
	$(MOSMLC) -c $<

.sml.uo:
	$(MOSMLC) -c $<

.lex.sml:
	$(MOSMLLEX) $<


depend: Lexer.sml Parser.sml 
	rm -f Makefile.bak
	mv Makefile Makefile.bak
	$(MOSMLTOOLS)/cutdeps < Makefile.bak > Makefile
	$(MOSMLTOOLS)/mosmldep >> Makefile

clean:
	rm -f Parser.sig Parser.sml Parser.output Lexer.sml
	rm -f *.ui *.uo
	rm -f Makefile.bak


### DO NOT DELETE THIS LINE
vsm_code_gen.uo: Library.ui AST_vsm_assembler.uo Tree.ui 
vsm_assemble.uo: Library.ui AST_vsm_assembler.uo 
Tree.uo: Tree.ui Library.ui Temp.ui 
Tree.ui: Temp.ui 
Translate.uo: Translate.ui Library.ui AST_closure.uo Temp.ui AST_expr.uo \
    Tree.ui 
Translate.ui: AST_closure.uo Tree.ui 
Temp.uo: Temp.ui Library.ui 
static_semantics.uo: Library.ui AST_expr.uo 
slang_compile.uo: Library.ui AST_closure.uo AST_vsm_assembler.uo \
    Translate.ui AST_expr.uo Closure.ui Tree.ui vsm_code_gen.uo \
    static_semantics.uo Parse.uo Alpha.ui 
Parser.uo: Parser.ui AST_expr.uo 
Parser.ui: AST_expr.uo 
Parse.uo: Parser.ui Lexer.uo 
main.uo: Library.ui slang_compile.uo static_semantics.uo Parse.uo 
Library.uo: Library.ui 
Lexer.uo: Parser.ui 
Closure.uo: Closure.ui Library.ui AST_closure.uo Temp.ui AST_expr.uo 
Closure.ui: AST_closure.uo AST_expr.uo 
AST_vsm_assembler.uo: Library.ui Temp.ui 
AST_expr.uo: Temp.ui 
AST_closure.uo: Temp.ui AST_expr.uo 
Alpha.uo: Alpha.ui Library.ui Temp.ui AST_expr.uo 
Alpha.ui: AST_expr.uo 
