##########################################################################
#                                 Project                                #
#                                                                        #
#                                  Author                                #
#                                                                        #
#                           Copyright and license                        #
##########################################################################

# Various commands and dir
##########################
OCAMLBIN= @OCAMLBIN@
OCAMLC   = @OCAMLC@
OCAMLOPT = @OCAMLOPT@
OCAMLDEP = @OCAMLDEP@
OCAMLLEX = @OCAMLLEX@
OCAMLYACC= @OCAMLYACC@
OCAMLLIB = @OCAMLLIB@
OCAMLDOCDIR= $(OCAMLLIB)/ocamldoc
OCAMLBEST= @OCAMLBEST@
OCAMLVERSION = @OCAMLVERSION@
EXTRAC_CRC = $(OCAMLLIB)/extract_crc
OCAMLDOC= @OCAMLDOC@
OCAMLPP=

# For installation 
##################
MKDIR=mkdir -p
CP=cp -f
EXE=
EXE_OPT=$(EXE).opt

# Compilation options
#####################
INCLUDES=
COMPFLAGS= 
LINKFLAGS= 
LIBS=unix.cma str.cma
LIBS_OPT= unix.cmxa str.cmxa

CMOFILES=
CMXFILES= $(CMOFILES:.cmo=.cmx)
CMIFILES= $(CMOFILES:.cmo=.cmi)


all: byte opt
byte: $(EXE)
opt: $(EXE_OPT)

$(EXE): $(CMIFILES) $(CMOFILES)
	$(OCAMLC) -custom -o $@ $(LINKFLAGS) $(LIBS) $(CMOFILES)

$(EXE_OPT): $(CMXFILES) 
	$(OCAMLOPT) -o $@ $(LINKFLAGS) $(LIBS_OPT) $(CMXFILES)

# for the modules view of Cameleon
dump.odoc: dummy
	$(OCAMLDOC) -dump $@ $(COMPFLAGS) *.ml *.mli

# generic rules :
#################

.SUFFIXES: .mli .ml .cmi .cmo .cmx .mll .mly

%.cmi:%.mli
	$(OCAMLC) $(OCAMLPP) $(COMPFLAGS) -c $<

%.cmo:%.ml
	$(OCAMLC) $(OCAMLPP) $(COMPFLAGS) -c $<

%.cmi %.cmo:%.ml
	$(OCAMLC) $(OCAMLPP) $(COMPFLAGS) -c $<

%.cmx %.o:%.ml
	$(OCAMLOPT) $(OCAMLPP) $(COMPFLAGS) -c $<

%.ml:%.mll
	$(OCAMLLEX) $<

%.mli %.ml:%.mly
	$(OCAMLYACC) -v $<

# myself
Makefile: Makefile.in config.status
	./config.status

config.status: configure
	./config.status --recheck

configure: configure.in
	autoconf 

# backup, clean and depend :
############################

clean::
	@rm -f *~ \#*\#
	@rm -f $(EXE) $(EXE_OPT) *.cmo *.cmi *.cmx *.a *.o

distclean:: clean
	cd doc && make clean
	@rm -f config.* configure Makefile

.depend depend::
	$(OCAMLDEP) $(INCLUDES) *.ml *.mli > .depend

dummy:

include .depend
