From c5cb773265d3e1f06f1ebd173582ff1ecb55617b Mon Sep 17 00:00:00 2001 From: Mike Lin Date: Sat, 17 Jan 2015 16:29:34 -0800 Subject: [PATCH] modernize ocamlbuild commands (3.12+) --- lib/CamlPaml/Makefile | 6 +- lib/CamlPaml/_tags | 6 +- lib/CamlPaml/myocamlbuild.ml | 185 ------------------------------------------- src/Makefile | 6 +- src/_tags | 4 +- src/myocamlbuild.ml | 185 ------------------------------------------- 6 files changed, 11 insertions(+), 381 deletions(-) delete mode 100644 lib/CamlPaml/myocamlbuild.ml delete mode 100644 src/myocamlbuild.ml diff --git a/lib/CamlPaml/Makefile b/lib/CamlPaml/Makefile index 4d9e0a6..396c917 100644 --- a/lib/CamlPaml/Makefile +++ b/lib/CamlPaml/Makefile @@ -1,10 +1,10 @@ LIBNAME = CamlPaml lib: - ocamlbuild ${LIBNAME}.cma ${LIBNAME}.cmxa + ocamlbuild -use-ocamlfind ${LIBNAME}.cma ${LIBNAME}.cmxa test: - ocamlbuild test.native + ocamlbuild -use-ocamlfind test.native _build/test.native @@ -23,4 +23,4 @@ clean: ocamlbuild -clean doc: - ocamlbuild ${LIBNAME}.docdir/index.html + ocamlbuild -use-ocamlfind ${LIBNAME}.docdir/index.html diff --git a/lib/CamlPaml/_tags b/lib/CamlPaml/_tags index b638cdc..bd02507 100644 --- a/lib/CamlPaml/_tags +++ b/lib/CamlPaml/_tags @@ -1,7 +1,7 @@ -<**/*.ml> or <**/*.mli>: ocaml, debug, pkg_gsl, pp(ocaml+twt) +<**/*.ml> or <**/*.mli>: ocaml, debug, package(gsl), pp(ocaml+twt) <**/NewickLexer.*>: -pp(ocaml+twt) <**/NewickParser.*>: -pp(ocaml+twt) <**/*.cmx>: for-pack(CamlPaml) : -for-pack(CamlPaml) -: pkg_oUnit -: pkg_gsl, pkg_oUnit +: package(oUnit) +: package(gsl), package(oUnit) diff --git a/lib/CamlPaml/myocamlbuild.ml b/lib/CamlPaml/myocamlbuild.ml deleted file mode 100644 index 5ffd91e..0000000 --- a/lib/CamlPaml/myocamlbuild.ml +++ /dev/null @@ -1,185 +0,0 @@ -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 -**) diff --git a/src/Makefile b/src/Makefile index 95a2cdd..7ab37f8 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,6 +1,6 @@ OCAMLBUILDFLAGS= ifdef FORKWORK -OCAMLBUILDFLAGS=-tag pkg_forkwork +OCAMLBUILDFLAGS=-tag "package(forkwork)" endif all: @@ -10,13 +10,13 @@ ifdef FORKWORK else ln -s ForkNo.ml ForkMaybe.ml endif - ocamlbuild $(OCAMLBUILDFLAGS) PhyloCSF.native + ocamlbuild -use-ocamlfind $(OCAMLBUILDFLAGS) PhyloCSF.native test: testexe ./test.native -verbose testexe: all - ocamlbuild $(OCAMLBUILDFLAGS) testSim.native test.native + ocamlbuild -use-ocamlfind $(OCAMLBUILDFLAGS) testSim.native test.native clean: rm -f *~ diff --git a/src/_tags b/src/_tags index de65795..f0b6757 100644 --- a/src/_tags +++ b/src/_tags @@ -1,4 +1,4 @@ <**/*.ml> or <**/*.mli>: pp(ocaml+twt) - or : pkg_should, pkg_oUnit, pkg_str -true: debug, pkg_batteries, pkg_CamlPaml + or : package(should), package(oUnit), package(str) +true: debug, package(batteries), package(CamlPaml) diff --git a/src/myocamlbuild.ml b/src/myocamlbuild.ml deleted file mode 100644 index 5ffd91e..0000000 --- a/src/myocamlbuild.ml +++ /dev/null @@ -1,185 +0,0 @@ -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 -**)