diff options
author | Emilio Jesus Gallego Arias <e+git@x80.org> | 2017-10-28 21:02:48 +0200 |
---|---|---|
committer | Emilio Jesus Gallego Arias <e+git@x80.org> | 2017-12-10 18:41:16 +0100 |
commit | 598e3ae4a8eb8d9bce316e13d71ee48d9ba1a01f (patch) | |
tree | 7bf3135dea14dfccac59a6b373549b6bddec7741 /toplevel | |
parent | d0f89f8c59cda2e7e74fec693e511e910fbc0434 (diff) |
[build] Remove coqmktop in favor of ocamlfind.
We remove coqmktop in favor of a couple of simple makefile rules using
ocamlfind. In order to do that, we introduce a new top-level file that
calls the coqtop main entry.
This is very convenient in order to use other builds systems such as
`ocamlbuild` or `jbuilder`.
An additional consideration is that we must perform a side-effect on
init depending on whether we have an OCaml toplevel available [byte]
or not. We do that by using two different object files, one for the
bytecode version other for the native one, but we may want to review
our choice.
We also perform some smaller cleanups taking profit from ocamlfind.
Diffstat (limited to 'toplevel')
-rw-r--r-- | toplevel/coqtop.ml | 2 | ||||
-rw-r--r-- | toplevel/coqtop_bin.ml | 6 | ||||
-rw-r--r-- | toplevel/coqtop_byte_bin.ml | 21 | ||||
-rw-r--r-- | toplevel/coqtop_opt_bin.ml | 3 |
4 files changed, 30 insertions, 2 deletions
diff --git a/toplevel/coqtop.ml b/toplevel/coqtop.ml index b62396317..6a3993ad4 100644 --- a/toplevel/coqtop.ml +++ b/toplevel/coqtop.ml @@ -848,5 +848,3 @@ let start () = end; CProfile.print_profile (); exit 0 - -(* [Coqtop.start] will be called by the code produced by coqmktop *) diff --git a/toplevel/coqtop_bin.ml b/toplevel/coqtop_bin.ml new file mode 100644 index 000000000..62459003b --- /dev/null +++ b/toplevel/coqtop_bin.ml @@ -0,0 +1,6 @@ +(* Main coqtop initialization *) +let () = + (* XXX: We should make this a configure option *) + List.iter Mltop.add_known_module Str.(split (regexp " ") Tolink.static_modules); + (* Start the toplevel loop *) + Coqtop.start() diff --git a/toplevel/coqtop_byte_bin.ml b/toplevel/coqtop_byte_bin.ml new file mode 100644 index 000000000..7d8354ec3 --- /dev/null +++ b/toplevel/coqtop_byte_bin.ml @@ -0,0 +1,21 @@ +let drop_setup () = + begin try + (* Enable rectypes in the toplevel if it has the directive #rectypes *) + begin match Hashtbl.find Toploop.directive_table "rectypes" with + | Toploop.Directive_none f -> f () + | _ -> () + end + with + | Not_found -> () + end; + let ppf = Format.std_formatter in + Mltop.(set_top + { load_obj = (fun f -> if not (Topdirs.load_file ppf f) + then CErrors.user_err Pp.(str ("Could not load plugin "^f)) + ); + use_file = Topdirs.dir_use ppf; + add_dir = Topdirs.dir_directory; + ml_loop = (fun () -> Toploop.loop ppf); + }) + +let _ = drop_setup () diff --git a/toplevel/coqtop_opt_bin.ml b/toplevel/coqtop_opt_bin.ml new file mode 100644 index 000000000..410b4679a --- /dev/null +++ b/toplevel/coqtop_opt_bin.ml @@ -0,0 +1,3 @@ +let drop_setup () = Mltop.remove () + +let _ = drop_setup () |