# Unix Makefile for lexyacc example

MOSMLHOME=/root/mosml
#MOSMLHOME=/usr/local/lib/mosml
MOSMLTOOLS=camlrunm $(MOSMLHOME)/tools
MOSMLC=mosmlc -c -liberal
MOSMLL=mosmlc -liberal
MOSMLLEX=mosmllex
MOSMLYACC=mosmlyac

UNITS= -structure Types Parser Lexer Env Rdzen -structure Kolejka Wyniki -toplevel Instr Instr_Add Instr_Cmp Instr_Dat Instr_Djn Instr_Jmn Instr_Jmp Instr_Jmz Instr_Mov Instr_Slt Instr_Spl Instr_Sub -structure Losuj \
-toplevel SigPlansza Plansza SigInterfejsText InterfejsText Gra Maszyna

all: Types.uo Parser.uo Lexer.uo Env.uo Rdzen.uo Kolejka.uo Wyniki.uo Instr.uo Instr_Add.uo Instr_Cmp.uo Instr_Dat.uo Instr_Djn.uo Instr_Jmn.uo Instr_Jmp.uo Instr_Jmz.uo Instr_Mov.uo Instr_Slt.uo Instr_Spl.uo Instr_Sub.uo Losuj.uo \
SigPlansza.uo Plansza.uo SigInterfejsText.uo InterfejsText.uo Gra.uo Maszyna.uo
	mosmlc -toplevel -standalone -o CoreWars $^

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

.SUFFIXES :
.SUFFIXES : .sml .sig .ui .uo .mlp .lex .c .o

.sig.ui:
	$(MOSMLC) $<

.sml.uo:
	$(MOSMLC) $<

.lex.sml:
	$(MOSMLLEX) $<

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

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

### DO NOT DELETE THIS LINE
Types.ui: Types.sig 
	$(MOSMLC) -structure Types.sig 
Types.uo: Types.sml Types.ui 
	$(MOSMLC) -structure Types.sml 
Parser.ui: Parser.sig Types.ui 
	$(MOSMLC) -structure Types.ui Parser.sig 
Parser.uo: Parser.sml Parser.ui Types.ui 
	$(MOSMLC) -structure Types.ui Parser.sml 
Lexer.uo: Lexer.sml Parser.ui 
	$(MOSMLC) -structure Parser.ui Types.ui Lexer.sml 
Env.ui: Env.sig Lexer.uo 
	$(MOSMLC) -structure Lexer.ui Parser.ui Types.ui Env.sig 
Env.uo: Env.sml Env.ui Lexer.uo 
	$(MOSMLC) -structure Lexer.ui Parser.ui Types.ui Env.sml 
Rdzen.ui: Rdzen.sig Env.ui 
	$(MOSMLC) -structure Env.ui Lexer.ui Parser.ui Types.ui Rdzen.sig 
Rdzen.uo: Rdzen.sml Rdzen.ui Env.ui 
	$(MOSMLC) -structure Env.ui Lexer.ui Parser.ui Types.ui \
    Rdzen.sml 
Kolejka.ui: Kolejka.sig Rdzen.ui 
	$(MOSMLC) -structure Rdzen.ui Env.ui Lexer.ui Parser.ui \
    Types.ui Kolejka.sig 
Kolejka.uo: Kolejka.sml Kolejka.ui Rdzen.ui 
	$(MOSMLC) -structure Rdzen.ui Env.ui Lexer.ui \
    Parser.ui Types.ui Kolejka.sml 
Wyniki.ui: Wyniki.sig Kolejka.ui 
	$(MOSMLC) -structure Kolejka.ui Rdzen.ui Env.ui Lexer.ui \
    Parser.ui Types.ui Wyniki.sig 
Wyniki.uo: Wyniki.sml Wyniki.ui Kolejka.ui 
	$(MOSMLC) -structure Kolejka.ui Rdzen.ui Env.ui \
    Lexer.ui Parser.ui Types.ui Wyniki.sml 
Instr.uo: Instr.sml Wyniki.ui 
	$(MOSMLC) -toplevel Wyniki.ui Kolejka.ui Rdzen.ui Env.ui Lexer.ui \
    Parser.ui Types.ui Instr.sml 
Instr_Add.uo: Instr_Add.sml Instr.uo 
	$(MOSMLC) -toplevel Instr.ui Wyniki.ui Kolejka.ui Rdzen.ui \
    Env.ui Lexer.ui Parser.ui Types.ui Instr_Add.sml 
Instr_Cmp.uo: Instr_Cmp.sml Instr_Add.uo 
	$(MOSMLC) -toplevel Instr_Add.ui Instr.ui Wyniki.ui \
    Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Instr_Cmp.sml 
Instr_Dat.uo: Instr_Dat.sml Instr_Cmp.uo 
	$(MOSMLC) -toplevel Instr_Cmp.ui Instr_Add.ui Instr.ui \
    Wyniki.ui Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui \
    Instr_Dat.sml 
Instr_Djn.uo: Instr_Djn.sml Instr_Dat.uo 
	$(MOSMLC) -toplevel Instr_Dat.ui Instr_Cmp.ui \
    Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui Rdzen.ui Env.ui Lexer.ui \
    Parser.ui Types.ui Instr_Djn.sml 
Instr_Jmn.uo: Instr_Jmn.sml Instr_Djn.uo 
	$(MOSMLC) -toplevel Instr_Djn.ui Instr_Dat.ui \
    Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui Rdzen.ui Env.ui \
    Lexer.ui Parser.ui Types.ui Instr_Jmn.sml 
Instr_Jmp.uo: Instr_Jmp.sml Instr_Jmn.uo 
	$(MOSMLC) -toplevel Instr_Jmn.ui Instr_Djn.ui \
    Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui \
    Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Instr_Jmp.sml 
Instr_Jmz.uo: Instr_Jmz.sml Instr_Jmp.uo 
	$(MOSMLC) -toplevel Instr_Jmp.ui Instr_Jmn.ui \
    Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui \
    Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Instr_Jmz.sml 
Instr_Mov.uo: Instr_Mov.sml Instr_Jmz.uo 
	$(MOSMLC) -toplevel Instr_Jmz.ui Instr_Jmp.ui \
    Instr_Jmn.ui Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui \
    Instr.ui Wyniki.ui Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui \
    Types.ui Instr_Mov.sml 
Instr_Slt.uo: Instr_Slt.sml Instr_Mov.uo 
	$(MOSMLC) -toplevel Instr_Mov.ui Instr_Jmz.ui \
    Instr_Jmp.ui Instr_Jmn.ui Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui \
    Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui Rdzen.ui Env.ui Lexer.ui \
    Parser.ui Types.ui Instr_Slt.sml 
Instr_Spl.uo: Instr_Spl.sml Instr_Slt.uo 
	$(MOSMLC) -toplevel Instr_Slt.ui Instr_Mov.ui \
    Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui Instr_Djn.ui Instr_Dat.ui \
    Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui Rdzen.ui Env.ui \
    Lexer.ui Parser.ui Types.ui Instr_Spl.sml 
Instr_Sub.uo: Instr_Sub.sml Instr_Spl.uo 
	$(MOSMLC) -toplevel Instr_Spl.ui Instr_Slt.ui \
    Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui Instr_Djn.ui \
    Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui \
    Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Instr_Sub.sml 
Losuj.ui: Losuj.sig Instr_Sub.uo 
	$(MOSMLC) -structure Instr_Sub.ui Instr_Spl.ui Instr_Slt.ui \
    Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui Instr_Djn.ui \
    Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui \
    Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Losuj.sig 
Losuj.uo: Losuj.sml Losuj.ui Instr_Sub.uo 
	$(MOSMLC) -structure Instr_Sub.ui Instr_Spl.ui \
    Instr_Slt.ui Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui \
    Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui \
    Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Losuj.sml 
SigPlansza.uo: SigPlansza.sml Losuj.ui 
	$(MOSMLC) -toplevel Losuj.ui Instr_Sub.ui Instr_Spl.ui \
    Instr_Slt.ui Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui \
    Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui \
    Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui SigPlansza.sml 
Plansza.uo: Plansza.sml SigPlansza.uo 
	$(MOSMLC) -toplevel SigPlansza.ui Losuj.ui Instr_Sub.ui \
    Instr_Spl.ui Instr_Slt.ui Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui \
    Instr_Jmn.ui Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui \
    Instr.ui Wyniki.ui Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui \
    Types.ui Plansza.sml 
SigInterfejsText.uo: SigInterfejsText.sml Plansza.uo 
	$(MOSMLC) -toplevel Plansza.ui \
    SigPlansza.ui Losuj.ui Instr_Sub.ui Instr_Spl.ui Instr_Slt.ui \
    Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui Instr_Djn.ui \
    Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui Kolejka.ui \
    Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui SigInterfejsText.sml 
InterfejsText.uo: InterfejsText.sml SigInterfejsText.uo 
	$(MOSMLC) -toplevel SigInterfejsText.ui \
    Plansza.ui SigPlansza.ui Losuj.ui Instr_Sub.ui Instr_Spl.ui \
    Instr_Slt.ui Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui \
    Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui \
    Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui \
    InterfejsText.sml 
Gra.uo: Gra.sml InterfejsText.uo 
	$(MOSMLC) -toplevel InterfejsText.ui SigInterfejsText.ui \
    Plansza.ui SigPlansza.ui Losuj.ui Instr_Sub.ui Instr_Spl.ui \
    Instr_Slt.ui Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui \
    Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui \
    Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Gra.sml 
Maszyna.uo: Maszyna.sml Gra.uo 
	$(MOSMLC) -toplevel Gra.ui InterfejsText.ui SigInterfejsText.ui \
    Plansza.ui SigPlansza.ui Losuj.ui Instr_Sub.ui Instr_Spl.ui \
    Instr_Slt.ui Instr_Mov.ui Instr_Jmz.ui Instr_Jmp.ui Instr_Jmn.ui \
    Instr_Djn.ui Instr_Dat.ui Instr_Cmp.ui Instr_Add.ui Instr.ui Wyniki.ui \
    Kolejka.ui Rdzen.ui Env.ui Lexer.ui Parser.ui Types.ui Maszyna.sml 
