]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/DEVEL/ocaml-http/Makefile
- split threaded and non threaded implementations
[helm.git] / helm / DEVEL / ocaml-http / Makefile
index 591b21d990c0ebe5f2e47a5abfb48ef528b92c21..6c9b44ce83d605b56f65f0ac984c3264b620ab29 100644 (file)
@@ -1,11 +1,18 @@
 include Makefile.defs
 
 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
@@ -27,9 +34,27 @@ depend:
 %.cmx: %.ml %.cmi
        $(OCAMLOPT) -c $<
 
-http.cma: $(patsubst %,%.cmo,$(MODULES))
+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.cmxa: $(patsubst %,%.cmx,$(MODULES))
+http_mt.cmxa: $(patsubst %,%.cmx,$(MODULES_MT))
        $(OCAMLOPT) -a -o $@ $^
 
 meta: META
@@ -38,7 +63,10 @@ META: META.in
 
 clean:
        $(MAKE) -C examples/ clean
-       rm -f *.cm[ioax] *.cmxa *.[ao] test{,.opt}
+       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