Permalink
Browse files

reorganize directories and clean up build infrastructure

  • Loading branch information...
1 parent 95d12fe commit b12e634bb87266a49bbb9aab74209c925d89a3c3 @mlin committed Sep 3, 2010
View
@@ -1,33 +0,0 @@
-PKGS = gsl
-
-lib:
- ocamlbuild -cflags -for-pack,CamlPaml CamlPaml.cma CamlPaml.cmxa \
- -ocamlc "ocamlfind ocamlc -package ${PKGS}" \
- -ocamlopt "ocamlfind ocamlopt -package ${PKGS}" \
- -ocamldep "ocamlfind ocamldep -package ${PKGS}"
-
-TESTPKGS = ${PKGS},oUnit
-test:
- ocamlbuild test.native \
- -ocamlc "ocamlfind ocamlc -package ${TESTPKGS} -linkpkg" \
- -ocamlopt "ocamlfind ocamlopt -package ${TESTPKGS} -linkpkg" \
- -ocamldep "ocamlfind ocamldep -package ${TESTPKGS}"
- _build/test.native -verbose
-
-
-install: lib
- ocamlfind install CamlPaml META _build/CamlPaml.cmi _build/CamlPaml.cma _build/CamlPaml.cmxa _build/CamlPaml.a
-
-uninstall:
- ocamlfind remove CamlPaml
-
-reinstall:
- make uninstall
- make install
-
-clean:
- rm -f *~
- ocamlbuild -clean
-
-doc:
- ocamlbuild CamlPaml.docdir/index.html
View
@@ -1,4 +0,0 @@
-<**/*.ml> or <**/*.mli>: ocaml, pp(ocaml+twt), debug
-<**/NewickLexer.*>: ocaml, debug, -pp(ocaml+twt)
-<**/NewickParser.*>: ocaml, debug, -pp(ocaml+twt)
-<CamlPaml.cmxa>: ocaml, native, library, debug
View
@@ -6,13 +6,13 @@ ARCH := `uname`.`uname -p`
export ARCH
PhyloCSF: CamlPaml
- cd PhyloCSF; $(MAKE) clean; $(MAKE) $(MFLAGS)
- cp PhyloCSF/_build/PhyloCSF.native PhyloCSF.$(ARCH)
+ cd src; $(MAKE) clean; $(MAKE) $(MFLAGS)
+ cp src/_build/PhyloCSF.native PhyloCSF.$(ARCH)
CamlPaml:
- cd CamlPaml; $(MAKE) $(MFLAGS) reinstall
+ cd lib/CamlPaml; $(MAKE) $(MFLAGS) reinstall
clean:
- cd CamlPaml; $(MAKE) clean
- cd PhyloCSF; $(MAKE) clean
+ cd lib/CamlPaml; $(MAKE) clean
+ cd src; $(MAKE) clean
rm -f PhyloCSF.*
View
@@ -1,11 +0,0 @@
-PKGS = batteries,CamlPaml
-
-all:
- ocamlbuild all.otarget \
- -ocamlc "ocamlfind ocamlc -package ${PKGS} -linkpkg" \
- -ocamlopt "ocamlfind ocamlopt -package ${PKGS} -linkpkg" \
- -ocamldep "ocamlfind ocamldep -package ${PKGS}"
-
-clean:
- rm -f *~
- ocamlbuild -clean
View
@@ -1,4 +0,0 @@
-<**/*.ml> or <**/*.mli>: ocaml, pp(ocaml+twt)
-<all.otarget>: ocaml, native
-true: debug
-
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
View
@@ -0,0 +1,26 @@
+LIBNAME = CamlPaml
+
+lib:
+ ocamlbuild ${LIBNAME}.cma ${LIBNAME}.cmxa
+
+test:
+ ocamlbuild test.native
+ _build/test.native -verbose
+
+
+install: lib
+ ocamlfind install ${LIBNAME} META _build/${LIBNAME}.cmi _build/${LIBNAME}.cma _build/${LIBNAME}.cmxa _build/${LIBNAME}.a
+
+uninstall:
+ ocamlfind remove ${LIBNAME}
+
+reinstall:
+ make uninstall
+ make install
+
+clean:
+ rm -f *~
+ ocamlbuild -clean
+
+doc:
+ ocamlbuild ${LIBNAME}.docdir/index.html
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
View
@@ -0,0 +1,5 @@
+<**/*.ml> or <**/*.mli>: ocaml, debug, pkg_gsl, for-pack(CamlPaml), pp(ocaml+twt)
+<**/NewickLexer.*>: -pp(ocaml+twt)
+<**/NewickParser.*>: -pp(ocaml+twt)
+<test.ml>: pkg_oUnit
+<test.native>: pkg_gsl, pkg_oUnit
@@ -0,0 +1,185 @@
+open Ocamlbuild_plugin
+open Command (* no longer needed for OCaml >= 3.10.2 *)
+
+(**
+ Overview of tags:
+ - [pkg_batteries] to use Batteries as a library, without syntax extensions
+ - [use_batteries] and [use_batteries_r] to use both Batteries and all the non-destructive syntax extensions
+ - [pkg_sexplib.syntax] with [syntax_camlp4o] or [syntax_camlp4r] for sexplib
+*)
+
+
+(**
+ {1 OCamlFind}
+*)
+
+let run_and_read = Ocamlbuild_pack.My_unix.run_and_read
+
+let blank_sep_strings = Ocamlbuild_pack.Lexers.blank_sep_strings
+
+module OCamlFind =
+struct
+ (* this lists all supported packages *)
+ let find_packages () =
+ blank_sep_strings &
+ Lexing.from_string &
+ run_and_read "ocamlfind list | cut -d' ' -f1"
+
+ (* this is supposed to list available syntaxes, but I don't know how to do it. *)
+ let find_syntaxes () = ["camlp4o"; "camlp4r"]
+
+ (* ocamlfind command *)
+ let ocamlfind x = S[A"ocamlfind"; x]
+
+ let before_options () =
+ (* by using Before_options one let command line options have an higher priority *)
+ (* on the contrary using After_options will guarantee to have the higher priority *)
+
+ (* override default commands by ocamlfind ones *)
+ Options.ocamlc := ocamlfind & A"ocamlc";
+ Options.ocamlopt := ocamlfind & A"ocamlopt";
+ Options.ocamldep := ocamlfind & A"ocamldep";
+ Options.ocamldoc := ocamlfind & A"ocamldoc";
+ Options.ocamlmktop := ocamlfind & A"ocamlmktop"
+
+ let get_ocamldoc_directory () =
+ let ocamldoc_directory = run_and_read "ocamlfind ocamldoc -customdir" in
+ let length = String.length ocamldoc_directory in
+ assert (length != 0);
+ let char = ocamldoc_directory.[length - 1] in
+ if (char = '\n') || (char = '\r') then String.sub ocamldoc_directory 0 (length - 1)
+ else ocamldoc_directory
+
+ let after_rules () =
+ (* When one link an OCaml library/binary/package, one should use -linkpkg *)
+ flag ["ocaml"; "byte"; "link"; "program"] & A"-linkpkg";
+ flag ["ocaml"; "native"; "link"; "program"] & A"-linkpkg";
+
+
+ (* For each ocamlfind package one inject the -package option when
+ * compiling, computing dependencies, generating documentation and
+ * linking. *)
+ List.iter begin fun pkg ->
+ flag ["ocaml"; "compile"; "pkg_"^pkg] & S[A"-package"; A pkg];
+ flag ["ocaml"; "ocamldep"; "pkg_"^pkg] & S[A"-package"; A pkg];
+ flag ["ocaml"; "doc"; "pkg_"^pkg] & S[A"-package"; A pkg];
+ flag ["ocaml"; "link"; "pkg_"^pkg] & S[A"-package"; A pkg];
+ end (find_packages ());
+
+ (* Like -package but for extensions syntax. Morover -syntax is useless
+ * when linking. *)
+ List.iter begin fun syntax ->
+ flag ["ocaml"; "compile"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
+ flag ["ocaml"; "ocamldep"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
+ flag ["ocaml"; "doc"; "syntax_"^syntax] & S[A"-syntax"; A syntax];
+ end (find_syntaxes ());
+
+ (* The default "thread" tag is not compatible with ocamlfind.
+ Indeed, the default rules add the "threads.cma" or "threads.cmxa"
+ options when using this tag. When using the "-linkpkg" option with
+ ocamlfind, this module will then be added twice on the command line.
+
+ To solve this, one approach is to add the "-thread" option when using
+ the "threads" package using the previous plugin.
+ *)
+ flag ["ocaml"; "pkg_threads"; "compile"] (S[A "-thread"]);
+ flag ["ocaml"; "pkg_threads"; "link"] (S[A "-thread"]);
+end
+
+(**
+ {1 OCaml Batteries Included}
+*)
+
+module Batteries =
+struct
+ let before_options () = ()
+
+ let after_rules () =
+ flag ["ocaml"; "link"; "byte"; "use_ocamldoc_info"] (S[A "-I"; A "+ocamldoc"; A "odoc_info.cma"]);
+ flag ["ocaml"; "link"; "native"; "use_ocamldoc_info"] (S[A "-I"; A "+ocamldoc"(*; A "odoc_info.cmxa"*)]);
+ flag ["ocaml"; "docfile"; "use_ocamldoc_info"] (S[A "-I"; A "+ocamldoc"]);
+ flag ["ocaml"; "docdir"; "use_ocamldoc_info"] (S[A "-I"; A "+ocamldoc"]);
+ flag ["ocaml"; "doc"; "use_ocamldoc_info"] (S[A "-I"; A "+ocamldoc"]);
+
+ (*The command-line for [use_batteries] and [use_batteries_r]*)
+
+ let cl_use_boilerplate = [A"-package"; A "batteries.pa_type_conv.syntax,batteries,sexplib.syntax"]
+ and cl_use_batteries = [A"-package"; A "batteries.pa_openin.syntax,batteries.pa_where.syntax,batteries.pa_batteries.syntax"; A "-package"; A "batteries"]
+ and cl_use_batteries_o = []
+ (*[cl_use_batteries_o]: extensions which only make sense in original syntax*)
+ and cl_camlp4o = [A"-syntax"; A "camlp4o"]
+ and cl_camlp4r = [A"-syntax"; A "camlp4r"] in
+
+ let cl_boilerplate_original = cl_use_boilerplate @ cl_camlp4o
+ and cl_boilerplate_revised = cl_use_boilerplate @ cl_camlp4r
+ and cl_batteries_original = cl_use_batteries @ cl_use_batteries_o @ cl_camlp4o
+ and cl_batteries_revised = cl_use_batteries @ cl_camlp4r in
+
+ (** Tag [use_boilerplate] provides boilerplate syntax extensions,
+ in original syntax*)
+
+ flag ["ocaml"; "compile"; "use_boilerplate"] & S cl_boilerplate_original ;
+ flag ["ocaml"; "ocamldep"; "use_boilerplate"] & S cl_boilerplate_original ;
+ flag ["ocaml"; "doc"; "use_boilerplate"] & S cl_boilerplate_original ;
+ flag ["ocaml"; "link"; "use_boilerplate"] & S cl_boilerplate_original ;
+
+ (** Tag [use_boilerplate_r] provides boilerplate syntax extensions,
+ in original syntax*)
+
+ flag ["ocaml"; "compile"; "use_boilerplate_r"] & S cl_boilerplate_revised ;
+ flag ["ocaml"; "ocamldep"; "use_boilerplate_r"] & S cl_boilerplate_revised ;
+ flag ["ocaml"; "doc"; "use_boilerplate_r"] & S cl_boilerplate_revised ;
+ flag ["ocaml"; "link"; "use_boilerplate_r"] & S cl_boilerplate_revised ;
+
+ (** Tag [use_batteries] provides both package [batteries]
+ and all syntax extensions, in original syntax. *)
+
+ flag ["ocaml"; "compile"; "use_batteries"] & S cl_batteries_original ;
+ flag ["ocaml"; "ocamldep"; "use_batteries"] & S cl_batteries_original ;
+ flag ["ocaml"; "doc"; "use_batteries"] & S cl_batteries_original ;
+ flag ["ocaml"; "link"; "use_batteries"] & S cl_batteries_original ;
+
+ (** Tag [use_batteries_r] provides both package [batteries]
+ and all syntax extensions, in revised syntax. *)
+
+ flag ["ocaml"; "compile"; "use_batteries_r"] & S cl_batteries_revised;
+ flag ["ocaml"; "ocamldep"; "use_batteries_r"] & S cl_batteries_revised;
+ flag ["ocaml"; "doc"; "use_batteries_r"] & S cl_batteries_revised;
+ flag ["ocaml"; "link"; "use_batteries_r"] & S cl_batteries_revised
+
+
+(* flag ["ocaml"; "compile"; "use_batteries"] & S[A "-verbose";
+ A"-package"; A "batteries.syntax.full";
+ A"-syntax"; A "batteries.syntax.full"];
+ flag ["ocaml"; "ocamldep"; "use_batteries"] & S[A "-verbose";
+ A"-package"; A "batteries.syntax.full";
+ A"-syntax"; A "batteries.syntax.full"];
+ flag ["ocaml"; "doc"; "use_batteries"] & S[A "-verbose";
+ A"-package"; A "batteries.syntax.full";
+ A"-syntax"; A "batteries.syntax.full"];
+ flag ["ocaml"; "link"; "use_batteries"] & S[A "-verbose";
+ A"-package"; A "batteries.syntax.full";
+ A"-syntax"; A "batteries.syntax.full"];*)
+
+
+end
+
+let _ = dispatch begin function
+ | Before_options ->
+ OCamlFind.before_options ();
+ Batteries.before_options ()
+ | After_rules ->
+ OCamlFind.after_rules ();
+ Batteries.after_rules ()
+
+
+ | _ -> ()
+end
+
+
+
+(**
+ which ocamlrun -> header
+
+ print_backtrace -> ajouter "-b" après le header
+**)
File renamed without changes.
File renamed without changes.
View
@@ -0,0 +1,6 @@
+all:
+ ocamlbuild all.otarget
+
+clean:
+ rm -f *~
+ ocamlbuild -clean
File renamed without changes.
File renamed without changes.
File renamed without changes.
View
@@ -0,0 +1,3 @@
+<**/*.ml> or <**/*.mli>: pp(ocaml+twt)
+true: debug, pkg_batteries, pkg_CamlPaml
+
File renamed without changes.
Oops, something went wrong.

0 comments on commit b12e634

Please sign in to comment.