LIB_SRCS = rasclDict.ml rasclParser.ml rasclLexer.ml rasclObject.ml rascl.ml
BYTE_OBJS = $(LIB_SRCS:.ml=.cmo)
NAT_OBJS = $(LIB_SRCS:.ml=.cmx)
.PHONY: all opt byte lib-opt lib-byte install uninstall doc clean
all : lib-byte lib-opt pa_rascl.cmo
byte : lib-byte pa_rascl.cmo
opt : lib-opt pa_rascl.cmo
lib-byte : $(BYTE_OBJS)
ocamlc -a -o rascl.cma $(BYTE_OBJS)
lib-opt : $(NAT_OBJS)
ocamlopt -a -o rascl.cmxa $(NAT_OBJS)
rasclDict.cmo : rasclDict.cmi rasclDict.ml
ocamlc -c rasclDict.ml
rasclDict.cmx : rasclDict.cmi rasclDict.ml
ocamlopt -c rasclDict.ml
rasclParser.cmo : rasclDict.cmo rasclParser.ml
-rm rasclParser.mli
ocamlc -c rasclDict.cmo rasclParser.ml
rasclParser.cmx : rasclDict.cmx rasclParser.ml
-rm rasclParser.mli
ocamlopt -c rasclDict.cmx rasclParser.ml
rasclParser.ml : rasclParser.mly
ocamlyacc rasclParser.mly
rasclLexer.cmo : rasclDict.cmo rasclParser.cmo rasclLexer.ml
ocamlc -c rasclParser.cmo rasclLexer.ml
rasclLexer.cmx : rasclDict.cmx rasclParser.cmx rasclLexer.ml
ocamlopt -c rasclParser.cmx rasclLexer.ml
rasclLexer.ml : rasclLexer.mll
ocamllex rasclLexer.mll
rasclObject.cmo : rasclDict.cmo rasclParser.cmo rasclLexer.cmo
ocamlc -c rasclParser.cmo rasclLexer.cmo rasclObject.ml
rasclObject.cmx : rasclDict.cmx rasclParser.cmx rasclLexer.cmx
ocamlopt -c rasclParser.cmx rasclLexer.cmx rasclObject.ml
rascl.cmo : rascl.ml rascl.cmi
rascl.cmx : rascl.ml rascl.cmi
%.cmo : %.ml
ocamlc -c $<
%.cmx : %.ml
ocamlopt -c $<
%.cmi : %.mli
ocamlc -c $<
pa_rascl.cmo :
ocamlc -c -I +camlp4 -pp 'camlp4o pa_extend.cmo q_MLast.cmo -loc loc' \
pa_rascl.ml
install : uninstall
files=$$( \
for f in rascl.cma rascl.cmxa rascl.a rascl.cmi rascl.mli \
pa_rascl.cmo META; do \
if [ -f "$$f" ]; then echo $$f; fi; \
done; \
) && \
ocamlfind install rascl $$files
uninstall :
ocamlfind remove rascl
doc :
ocamldoc -html -css-style mcg.css -d doc/ocaml/api rascl.mli
clean:
-rm -f *.cmo *.cmi *.o *.cmx rasclParser.ml rasclLexer.ml
realclean : clean
-rm -f *.cma *.cmxa *.a