diff options
| author | Emilio Jesus Gallego Arias | 2020-02-05 17:46:07 +0100 |
|---|---|---|
| committer | Emilio Jesus Gallego Arias | 2020-02-13 21:12:03 +0100 |
| commit | 9193769161e1f06b371eed99dfe9e90fec9a14a6 (patch) | |
| tree | e16e5f60ce6a88656ccd802d232cde6171be927d /toplevel | |
| parent | eb83c142eb33de18e3bfdd7c32ecfb797a640c38 (diff) | |
[build] Consolidate stdlib's .v files under a single directory.
Currently, `.v` under the `Coq.` prefix are found in both `theories`
and `plugins`. Usually these two directories are merged by special
loadpath code that allows double-binding of the prefix.
This adds some complexity to the build and loadpath system; and in
particular, it prevents from handling the `Coq.*` prefix in the
simple, `-R theories Coq` standard way.
We thus move all `.v` files to theories, leaving `plugins` as an
OCaml-only directory, and modify accordingly the loadpath / build
infrastructure.
Note that in general `plugins/foo/Foo.v` was not self-contained, in
the sense that it depended on files in `theories` and files in
`theories` depended on it; moreover, Coq saw all these files as
belonging to the same namespace so it didn't really care where they
lived.
This could also imply a performance gain as we now effectively
traverse less directories when locating a library.
See also discussion in #10003
Diffstat (limited to 'toplevel')
| -rw-r--r-- | toplevel/coqinit.ml | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/toplevel/coqinit.ml b/toplevel/coqinit.ml index ac348b9646..b353f8aff1 100644 --- a/toplevel/coqinit.ml +++ b/toplevel/coqinit.ml @@ -59,6 +59,12 @@ let build_stdlib_path ~load_init ~unix_path ~coq_path ~with_ml = path_spec = VoPath { unix_path; coq_path ; has_ml = add_ml; implicit = load_init } } +let build_stdlib_ml_path ~dir = + let open Loadpath in + { recursive = true + ; path_spec = MlPath dir + } + let build_userlib_path ~unix_path = let open Loadpath in { recursive = true; @@ -100,9 +106,9 @@ let libs_init_load_path ~load_init = has_ml = AddTopML } } ] @ - (* then standard library and plugins *) - [build_stdlib_path ~load_init ~unix_path:(coqlib/"theories") ~coq_path ~with_ml:false; - build_stdlib_path ~load_init ~unix_path:(coqlib/"plugins") ~coq_path ~with_ml:true ] @ + (* then standard library *) + [build_stdlib_ml_path ~dir:(coqlib/"plugins")] @ + [build_stdlib_path ~load_init ~unix_path:(coqlib/"theories") ~coq_path ~with_ml:false] @ (* then user-contrib *) (if Sys.file_exists user_contrib then |
