1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
include Makefile.defs
export SHELL=/bin/bash
MODULES = \
http_constants \
http_types \
http_parser_sanity \
http_misc \
http_common \
http_tcp_server \
cookie_lexer \
http_parser \
http_message \
http_request \
http_daemon \
http_response \
http_user_agent \
$(NULL)
THREADED_SRV = http_threaded_tcp_server
MODULES_MT = $(patsubst http_tcp_server, mt/$(THREADED_SRV) http_tcp_server, $(MODULES))
MODULES_NON_MT = $(patsubst http_tcp_server, non_mt/$(THREADED_SRV) http_tcp_server, $(MODULES))
PUBLIC_MODULES = \
http_types \
http_common \
http_message \
http_request \
http_daemon \
http_response \
http_user_agent
OCAMLDOC_STUFF = *.mli
DOCDIR = doc/html
DOTDIR = doc/dot
TEXDIR = doc/latex
DESTDIR = $(shell $(OCAMLFIND) printconf destdir)
all: all_non_mt all_mt
opt: opt_non_mt opt_mt
all_non_mt: http.cma
opt_non_mt: http.cmxa
all_mt: http_mt.cma
opt_mt: http_mt.cmxa
world: all opt
doc: all $(DOCDIR)/index.html $(DOTDIR)/ocaml-http.ps $(TEXDIR)/ocaml-http.ps $(OCAMLDOC_STUFF)
$(DOCDIR)/index.html:
$(OCAMLDOC) -html -d $(DOCDIR) $(OCAMLDOC_STUFF)
$(TEXDIR)/ocaml-http.tex: $(OCAMLDOC_STUFF)
$(OCAMLDOC) -latex -o $@ $^
$(TEXDIR)/ocaml-http.ps: $(TEXDIR)/ocaml-http.tex
cd $(TEXDIR); \
latex ocaml-http; \
latex ocaml-http; \
dvips ocaml-http
$(DOTDIR)/ocaml-http.ps: $(DOTDIR)/ocaml-http.dot
$(DOT) -Tps $< > $@
$(DOTDIR)/ocaml-http.dot: *.ml *.mli
$(OCAMLDOC) -dot -o $(DOTDIR)/ocaml-http.dot *.ml *.mli
examples:
$(MAKE) -C examples/
examples.opt:
$(MAKE) -C examples/ opt
include .depend
depend:
$(OCAMLDEP) *.ml *.mli > .depend
%.ml: %.mll
$(OCAMLLEX) $<
%.cmi: %.mli
$(OCAMLC) -c $<
%.cmo: %.ml %.cmi
$(OCAMLC) -c $<
%.cmx: %.ml %.cmi
$(OCAMLOPT) -c $<
non_mt/$(THREADED_SRV).cmo: non_mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi
cp $(THREADED_SRV).{cmi,mli} non_mt/
$(OCAMLC) -c $<
non_mt/$(THREADED_SRV).cmx: non_mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi
cp $(THREADED_SRV).{cmi,mli} non_mt/
$(OCAMLOPT) -c $<
mt/$(THREADED_SRV).cmo: mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi
cp $(THREADED_SRV).{cmi,mli} mt/
$(OCAMLC) $(THREADS_FLAGS) -c $<
mt/$(THREADED_SRV).cmx: mt/$(THREADED_SRV).ml $(THREADED_SRV).cmi
cp $(THREADED_SRV).{cmi,mli} mt/
$(OCAMLOPT) $(THREADS_FLAGS) -c $<
http.cma: $(patsubst %,%.cmo,$(MODULES_NON_MT))
$(OCAMLC) -a -o $@ $^
http.cmxa: $(patsubst %,%.cmx,$(MODULES_NON_MT))
$(OCAMLOPT) -a -o $@ $^
http_mt.cma: $(patsubst %,%.cmo,$(MODULES_MT))
$(OCAMLC) -a -o $@ $^
http_mt.cmxa: $(patsubst %,%.cmx,$(MODULES_MT))
$(OCAMLOPT) -a -o $@ $^
meta: META
META: META.in
cat META.in | sed -e 's/@DISTVERSION@/$(DISTVERSION)/' > META
clean:
$(MAKE) -C examples/ clean
for d in . mt non_mt; do \
rm -f $$d/*.cm[ioax] $$d/*.cmxa $$d/*.[ao] $$d/test{,.opt}; \
done
rm -f {mt,non_mt}/$(THREADED_SRV).mli
docclean:
-rm -f \
$(DOCDIR)/*.html $(DOCDIR)/*.css \
$(DOTDIR)/*.dot $(DOTDIR)/*.ps \
$(TEXDIR)/*.{dvi,ps,ps.gz,pdf,aux,log,out,toc,tmp,haux,sty,tex}
distclean: clean
$(MAKE) -C examples/ distclean
rm -f META
dist: distreal distrm
distdoc: all doc
if [ -d $(DISTDIR) ]; then rm -rf $(DISTDIR); else true; fi
mkdir -p $(DISTDIR)/doc/
cp -r doc/html/ $(DISTDIR)/doc/
cp doc/dot/ocaml-http.ps $(DISTDIR)/doc/modules.ps
cp doc/latex/ocaml-http.ps $(DISTDIR)/doc/
distreal: distdoc distclean depend
for f in \
$(patsubst %, %.ml, $(MODULES)) \
$(patsubst %, %.mli, $(MODULES) $(THREADED_SRV)) \
mt/ non_mt/ $(EXTRA_DIST) examples/ debian/; \
do \
cp -r $$f $(DISTDIR)/; \
done
-find $(DISTDIR)/ -type d -name .svn -exec rm -rf {} \;
tar cvzf $(DISTDIR).tar.gz $(DISTDIR)/
distrm:
rm -rf $(DISTDIR)/
deb: docclean distreal
(cd $(DISTDIR)/ && debuild)
rm -rf $(DISTDIR)/
install: META
$(OCAMLFIND) install -destdir $(DESTDIR) $(PKGNAME) \
$(patsubst %, %.mli, $(PUBLIC_MODULES)) \
$(patsubst %, %.cmi, $(PUBLIC_MODULES)) \
$(wildcard *.cma *.cmxa *.a) META
.PHONY: \
all opt world all_non_mt all_mt opt_non_mt opt_mt \
examples examples.opt depend clean distclean dist \
install meta doc deb distreal distrm
VERSION = 0.1.6
release:
git tag -a v$(VERSION) -m "Version $(VERSION)."
git push origin v$(VERSION)
opam publish
#opam publish prepare $(NAME_VERSION) $(ARCHIVE)
#cp -t $(NAME_VERSION) descr
#grep -Ev '^(name|version):' opam >$(NAME_VERSION)/opam
#opam publish submit $(NAME_VERSION)
#rm -rf $(NAME_VERSION)
|