--- /dev/null
+# make all: make bytecode executable
+# make clean: remove intermediate files (in this directory)
+# make CLEAN: remove intermediate files (recursively)
+
+#----------------------------------------------------------------------
+
+SRC = ast.ml lexer.ml parser.ml generator.ml
+OBJ = $(SRC:.ml=.cmo)
+
+#----------------------------------------------------------------------
+
+
+.PHONY: all
+all: m2parsergen
+
+.PHONY: clean
+clean:
+ rm -f *.cmi *.cmo *.cma *.cmx *.o *.a *.cmxa lexer.ml parser.ml \
+ parser.mli
+
+.PHONY: CLEAN
+CLEAN: clean
+
+.PHONY: distclean
+distclean: clean
+ rm -f *~ depend depend.pkg m2parsergen a.out x.ml
+
+#----------------------------------------------------------------------
+# general rules:
+
+OPTIONS =
+OCAMLC = ocamlc -g $(OPTIONS) $(ROPTIONS)
+OCAMLOPT = ocamlopt -p $(OPTIONS) $(ROPTIONS)
+OCAMLDEP = ocamldep $(OPTIONS)
+OCAMLFIND = ocamlfind
+
+#----------------------------------------------------------------------
+
+depend: $(SRC)
+ $(OCAMLDEP) $(SRC) >depend
+
+m2parsergen: $(OBJ)
+ $(OCAMLC) -o m2parsergen $(OBJ)
+
+.SUFFIXES: .cmo .cmi .cmx .ml .mli .mll .mly
+
+.ml.cmx:
+ $(OCAMLOPT) -c $<
+
+.ml.cmo:
+ $(OCAMLC) -c $<
+
+.mli.cmi:
+ $(OCAMLC) -c $<
+
+.mll.ml:
+ ocamllex $<
+
+.mly.ml:
+ ocamlyacc $<
+
+include depend