Makefile 1.3 KB

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