# makefile for gdf.  Modified version of makefile for 
# lexyacc example in Moscow ML distribution.

include ../../../Makefile.setup

SMLJVMDIR=../../../sml-jvm

MOSMLHOME ?= $(mosmldir)
#MOSMLHOME=/usr/local/mosml
MOSMLTOOLS=camlrunm $(MOSMLHOME)/tools
MOSMLL=$(MOSMLHOME)/bin/mosmlc -I $(SMLJVMDIR)
MOSMLC=$(MOSMLL) -c
MOSMLLEX=$(MOSMLHOME)/bin/mosmllex
MOSMLYACC=$(MOSMLHOME)/bin/mosmlyac


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

.sig.ui:
	$(MOSMLC) -liberal $<
# -liberal to suppress compliance warning for Parser.sig

.sml.uo:
	$(MOSMLC) $<

.lex.sml:
	$(MOSMLLEX) $<

.PHONY: all standalone smljvm depend clean

UOS = Lexer.uo Parser.uo GrailUtils.uo GrailAbsyn.uo MainParser.uo FlowGraph.uo CertGenP.uo Compile.uo Stardate.uo ToyGrailAbsyn.uo 

all: smljvm gdf.sml $(UOS)
	$(MOSMLL) -o gdf gdf.sml

standalone: smljvm $(UOS) 
	 $(MOSMLL) -standalone -o gdf gdf.sml

smljvm:
	cd $(SMLJVMDIR); make all


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

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 Lexer.sml
	rm -f *.ui *.uo
	rm -f Makefile.bak
	rm -f gdf
	rm -f *~


### DO NOT DELETE THIS LINE
CertGenP.uo: GrailUtils.uo GrailAbsyn.uo FlowGraph.uo ToyGrailAbsyn.uo
Parser.ui: GrailAbsyn.uo 
Parser.uo: Parser.ui GrailAbsyn.uo 
Lexer.uo: Parser.ui 
gdf.uo: Stardate.uo ToyGrailAbsyn.uo MainParser.uo Compile.uo 
ToyGrailAbsyn.uo: Stardate.uo GrailAbsyn.uo ToyClassTable.uo 
MainParser.uo: Parser.ui Lexer.uo 
FlowGraph.uo: GrailAbsyn.uo 
Compile.uo: GrailAbsyn.uo CertGenP.uo ToyGrailAbsyn.uo FlowGraph.uo \
    Metadata.uo 
