include Makefile.defs
-MODULES = common misc types request daemon response
+MODULES = http_common http_misc http_types http_request http_parser http_tcp_server http_daemon http_response
+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_common http_types http_request http_daemon http_response
DESTDIR = $(shell $(OCAMLFIND) printconf stdlib)
-all: http.cma
-opt: http.cmxa
+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: *.mli
+ $(OCAMLDOC) -html -d doc/html *.mli
examples:
$(MAKE) -C examples/
%.cmx: %.ml %.cmi
$(OCAMLOPT) -c $<
-http.cmo: $(patsubst %,%.cmo,$(MODULES))
- ocamlc -pack -o $@ $^
-http.cmx: $(patsubst %,%.cmx,$(MODULES))
- ocamlopt -pack -o $@ $^
-http.cma: http.cmo
- $(OCAMLC) -a -o $@ $<
-http.cmxa: http.cmx
- $(OCAMLOPT) -a -o $@ $<
+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
clean:
$(MAKE) -C examples/ clean
- -rm -f *.cm[ioax] *.cmxa *.[ao] test{,.opt}
-distclean: 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 doc/html/*.html doc/html/*.css
+distclean: clean docclean
$(MAKE) -C examples/ distclean
-rm -f META
dist: distclean depend
rm -rf $(DISTDIR)/
install: META
$(OCAMLFIND) install -destdir $(DESTDIR) $(PKGNAME) \
- META common.mli types.mli request.mli daemon.mli response.mli http.*
+ META $(patsubst %,%.mli,$(PUBLIC_MODULES)) \
+ $(patsubst %,%.cmi,$(PUBLIC_MODULES)) http.cm{,x}a http.a
.PHONY: \
all opt world examples examples.opt depend clean distclean dist \
- install meta
+ install meta doc