Makefile 990 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. RESULT := mincss
  2. BASENAMES := types stringify parser lexer util 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. util.cmx: stringify.cmx
  28. main.cmx: parse.cmx util.cmx
  29. stringify.cmx parser.cmi parser.cmx lexer.cmx util.cmx parse.cmx main.cmx: \
  30. types.cmi
  31. clean:
  32. rm -f *.cmi *.cmx *.o lexer.ml parser.ml parser.mli parser.conflicts \
  33. parser.automaton $(RESULT)