aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/dune7
-rw-r--r--lib/genarg.mli4
-rw-r--r--lib/system.ml11
-rw-r--r--lib/system.mli2
4 files changed, 17 insertions, 7 deletions
diff --git a/lib/dune b/lib/dune
new file mode 100644
index 0000000000..232c208aa6
--- /dev/null
+++ b/lib/dune
@@ -0,0 +1,7 @@
+(library
+ (name lib)
+ (synopsis "Coq's Utility Library [coq-specific]")
+ (public_name coq.lib)
+ (wrapped false)
+ (modules_without_implementation xml_datatype)
+ (libraries threads coq.clib coq.config))
diff --git a/lib/genarg.mli b/lib/genarg.mli
index bb85f99e3c..52db3df088 100644
--- a/lib/genarg.mli
+++ b/lib/genarg.mli
@@ -13,7 +13,7 @@
(** The route of a generic argument, from parsing to evaluation.
In the following diagram, "object" can be tactic_expr, constr, tactic_arg, etc.
-{% \begin{%}verbatim{% }%}
+{% \begin{verbatim} %}
parsing in_raw out_raw
char stream ---> raw_object ---> raw_object generic_argument -------+
encapsulation decaps|
@@ -36,7 +36,7 @@ In the following diagram, "object" can be tactic_expr, constr, tactic_arg, etc.
|
V
effective use
-{% \end{%}verbatim{% }%}
+{% \end{verbatim} %}
To distinguish between the uninterpreted, globalized and
interpreted worlds, we annotate the type [generic_argument] by a
diff --git a/lib/system.ml b/lib/system.ml
index eef65a4e3d..eec007dcab 100644
--- a/lib/system.ml
+++ b/lib/system.ml
@@ -301,8 +301,11 @@ let with_time ~batch f x =
Feedback.msg_info (str msg ++ fmt_time_difference tstart tend ++ str msg2);
raise e
-let get_toplevel_path top =
- let dir = Filename.dirname Sys.executable_name in
+(* We use argv.[0] as we don't want to resolve symlinks *)
+let get_toplevel_path ?(byte=not Dynlink.is_native) top =
+ let open Filename in
+ let dir = if String.equal (basename Sys.argv.(0)) Sys.argv.(0)
+ then "" else dirname Sys.argv.(0) ^ dir_sep in
let exe = if Sys.(os_type = "Win32" || os_type = "Cygwin") then ".exe" else "" in
- let eff = if Dynlink.is_native then ".opt" else ".byte" in
- dir ^ Filename.dir_sep ^ top ^ eff ^ exe
+ let eff = if byte then ".byte" else ".opt" in
+ dir ^ top ^ eff ^ exe
diff --git a/lib/system.mli b/lib/system.mli
index a34280037c..f13fd30923 100644
--- a/lib/system.mli
+++ b/lib/system.mli
@@ -122,4 +122,4 @@ val with_time : batch:bool -> ('a -> 'b) -> 'a -> 'b
the right name you want you execution to fail rather than fall into
choosing some random binary from the system-wide installation of
Coq. *)
-val get_toplevel_path : string -> string
+val get_toplevel_path : ?byte:bool -> string -> string