Makefile 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. RESULT := mincss
  2. PRE_TGTS := types
  3. MODULES := color_names util stringify parser lexer parse simple shorthand \
  4. duplicates main
  5. ALL_NAMES := $(PRE_TGTS) $(MODULES)
  6. OCAMLCFLAGS := -g
  7. OCAMLLDFLAGS :=
  8. OCAMLLDLIBS := str.cmxa
  9. OCAMLLEX := ocamllex
  10. OCAMLYACC := menhir --infer --explain --dump
  11. OCAMLOPT_GETOPT := ocamlfind opt -linkpkg -package getopt
  12. .PHONY: all clean
  13. .PRECIOUS: $(addprefix .cmi,$(ALL_NAMES))
  14. all: $(RESULT)
  15. %.ml: %.mll
  16. $(OCAMLLEX) -o $@ $<
  17. %.ml: %.mly
  18. $(OCAMLYACC) $<
  19. %.cmi: %.mli
  20. ocamlc -c $(OCAMLCFLAGS) -o $@ $<
  21. %.cmx: %.ml
  22. ocamlopt -c $(OCAMLCFLAGS) -o $@ $(<:.cmi=.ml)
  23. main.cmx: main.ml
  24. $(OCAMLOPT_GETOPT) -c $(OCAMLCFLAGS) -o $@ $(<:.cmi=.ml)
  25. $(RESULT): $(addsuffix .cmx,$(ALL_NAMES))
  26. $(OCAMLOPT_GETOPT) -o $@ $(OCAMLLDFLAGS) $(OCAMLLDLIBS) $^
  27. # module dependencies
  28. lexer.cmi: lexer.ml
  29. parser.cmx: parser.cmi lexer.cmx
  30. parser.mli: parser.ml
  31. parse.cmx: lexer.cmi parser.cmx
  32. main.cmx: parse.cmx util.cmx simple.cmx shorthand.cmx duplicates.cmx
  33. util.cmx: OCAMLCFLAGS += -pp cpp
  34. util.cmx simple.cmx: color_names.cmx
  35. stringify.cmx parser.cmx simple.cmx shorthand.cmx: util.cmi
  36. $(addsuffix .cmx,$(MODULES)): $(addsuffix .cmi,$(PRE_TGTS))
  37. %.html: %.md
  38. markdown $^ > $@
  39. clean:
  40. rm -f *.cmi *.cmx *.o lexer.ml parser.ml parser.mli parser.conflicts \
  41. parser.automaton README.html $(RESULT)