Makefile 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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. RESULTLDLIBS = getopt str
  8. OCAMLLDFLAGS = $(if $(OCAMLLDLIBS),-linkpkg) \
  9. $(addprefix -package ,$(OCAMLLDLIBS))
  10. OCAMLLEX := ocamllex
  11. OCAMLYACC := menhir --infer --explain --dump
  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. ocamlfind opt $(OCAMLLDFLAGS) -c $(OCAMLCFLAGS) -o $@ $(<:.cmi=.ml)
  23. $(RESULT): $(addsuffix .cmx,$(ALL_NAMES))
  24. ocamlfind opt -linkpkg $(addprefix -package ,$(RESULTLDLIBS)) -o $@ $^
  25. # module dependencies
  26. lexer.cmi: lexer.ml
  27. parser.cmx: parser.cmi lexer.cmx
  28. parser.mli: parser.ml
  29. parse.cmx: lexer.cmi parser.cmx
  30. main.cmx: OCAMLLDLIBS=getopt
  31. main.cmx: parse.cmx util.cmx simple.cmx shorthand.cmx duplicates.cmx
  32. util.cmx: OCAMLCFLAGS += -pp cpp
  33. util.cmx simple.cmx: color_names.cmx
  34. stringify.cmx parser.cmx simple.cmx shorthand.cmx: util.cmi
  35. $(addsuffix .cmx,$(MODULES)): $(addsuffix .cmi,$(PRE_TGTS))
  36. %.html: %.md
  37. markdown $^ > $@
  38. clean:
  39. rm -f *.cmi *.cmx *.o lexer.ml parser.ml parser.mli parser.conflicts \
  40. parser.automaton README.html $(RESULT)