
include ../config


CAMLC=camlc -c
CAMLLINK=camlc
CAMLYACC=camlyacc -s

COMPFLAGS=-W
LINKFLAGS=-g -O fast

OBJS= location.zo globals.zo syntax.zo modules.zo print.zo \
      lexer.zo par_aux.zo parser.zo emit.zo conv.zo changes.zo enter.zo \
      parse_mlc.zo compiler.zo

GENSOURCES=lexer.ml parser.ml parser.mli


all: translator renamer

install:
	cp translator $(INSTALLDIR)/caml2csl
	cp renamer $(INSTALLDIR)

translator: translator.zo main.zo
	$(CAMLLINK) $(LINKFLAGS) -o translator translator.zo main.zo

translator.zo: $(OBJS)
	camllibr -o translator.zo $(OBJS)

renamer:
	$(CAMLLINK) $(LINKFLAGS) -o renamer renamer.ml


lexer.mll: lexer.mlp
	$(CPP) lexer.mlp > lexer.mll

lexer.ml: lexer.mll
	camllex lexer.mll

parser.ml parser.mli: parser.mly
	$(CAMLYACC) parser.mly

clean:
	rm -f *.zi *.zo
	rm -f $(GENSOURCES) lexer.mll translator renamer


.SUFFIXES : .mli .ml .zi .zo .mlp


.mli.zi:
	camlc -c $(COMPFLAGS) $<

.ml.zo:
	camlc -c $(COMPFLAGS) $<

.mlp.ml:
	@rm -f $@
	$(CPP) $< > $@
	@chmod a-w $@


depend: $(GENSOURCES)
	mv Makefile Makefile.bak
	(sed -n -e '1,/^### DO NOT DELETE THIS LINE/p' Makefile.bak; \
         camldep *.mli *.ml) > Makefile
	rm Makefile.bak


### EVERYTHING THAT GOES BEYOND THIS COMMENT IS GENERATED
### DO NOT DELETE THIS LINE
lexer.zi: parser.zi 
parser.zi: syntax.zo location.zo 
changes.zo: conv.zo syntax.zo lexer.zi emit.zo modules.zo location.zo \
    print.zo globals.zo 
compiler.zo: parse_mlc.zo parser.zi enter.zo emit.zo modules.zo location.zo \
    changes.zo syntax.zo lexer.zi print.zo globals.zo 
conv.zo: syntax.zo modules.zo print.zo globals.zo 
emit.zo: syntax.zo location.zo print.zo globals.zo 
enter.zo: conv.zo syntax.zo emit.zo modules.zo globals.zo changes.zo 
lexer.zo: lexer.zi parser.zi location.zo 
load.zo: parse_mlc.zo conv.zo parser.zi enter.zo emit.zo modules.zo \
    location.zo compiler.zo changes.zo syntax.zo lexer.zi print.zo \
    globals.zo 
main.zo: parse_mlc.zo modules.zo compiler.zo lexer.zi globals.zo 
modules.zo: syntax.zo globals.zo 
par_aux.zo: syntax.zo modules.zo location.zo globals.zo 
parse_mlc.zo: conv.zo enter.zo modules.zo syntax.zo globals.zo 
parser.zo: parser.zi par_aux.zo location.zo syntax.zo lexer.zi globals.zo 
print.zo: syntax.zo modules.zo location.zo 
syntax.zo: location.zo globals.zo 
view.zo: syntax.zo modules.zo 
