Makefile 966 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. RESULT := mincss
  2. BASENAMES := types util stringify parser lexer parse main
  3. OFILES := $(addsuffix .cmx,$(BASENAMES))
  4. OCAMLCFLAGS := -g
  5. OCAMLLDFLAGS :=
  6. OCAMLLDLIBS := str.cmxa
  7. OCAMLLEX := ocamllex
  8. OCAMLYACC := menhir --infer --explain --dump
  9. .PHONY: all clean
  10. .PRECIOUS: $(addprefix .cmi,$(BASENAMES))
  11. all: $(RESULT)
  12. %.ml: %.mll
  13. $(OCAMLLEX) -o $@ $<
  14. %.ml: %.mly
  15. $(OCAMLYACC) $<
  16. %.cmi: %.mli
  17. ocamlc -c $(OCAMLCFLAGS) -o $@ $<
  18. %.cmx: %.ml
  19. ocamlfind ocamlopt -package batteries -c $(OCAMLCFLAGS) -o $@ $(<:.cmi=.ml)
  20. $(RESULT): $(OFILES)
  21. ocamlopt -o $@ $(OCAMLLDFLAGS) $(OCAMLLDLIBS) $^
  22. # intra-module dependencies
  23. lexer.cmi: lexer.ml
  24. parser.cmx: parser.cmi lexer.cmi
  25. parser.mli: parser.ml
  26. parse.cmx: lexer.cmi parser.cmx
  27. main.cmx: parse.cmx util.cmx
  28. stringify.cmx parser.cmi parser.cmx lexer.cmx util.cmx parse.cmx main.cmx: \
  29. types.cmi
  30. clean:
  31. rm -f *.cmi *.cmx *.o lexer.ml parser.ml parser.mli parser.conflicts \
  32. parser.automaton $(RESULT)