mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-09 04:35:29 -05:00
Bidir module, early draft of bidirectional iterators
This commit is contained in:
parent
4a68729485
commit
629879ec25
8 changed files with 422 additions and 153 deletions
2
_oasis
2
_oasis
|
|
@ -40,7 +40,7 @@ Library "containers"
|
||||||
Vector, Bij, PiCalculus, Bencode, Sexp, RAL, MultiSet,
|
Vector, Bij, PiCalculus, Bencode, Sexp, RAL, MultiSet,
|
||||||
UnionFind, SmallSet, Leftistheap, AbsSet, CSM, MultiMap,
|
UnionFind, SmallSet, Leftistheap, AbsSet, CSM, MultiMap,
|
||||||
ActionMan, BV, QCheck, BencodeOnDisk, Show, TTree,
|
ActionMan, BV, QCheck, BencodeOnDisk, Show, TTree,
|
||||||
HGraph, Automaton, Conv, Levenshtein
|
HGraph, Automaton, Conv, Levenshtein, Bidir
|
||||||
BuildDepends: unix
|
BuildDepends: unix
|
||||||
|
|
||||||
Library "containers_thread"
|
Library "containers_thread"
|
||||||
|
|
|
||||||
39
_tags
39
_tags
|
|
@ -1,5 +1,5 @@
|
||||||
# OASIS_START
|
# OASIS_START
|
||||||
# DO NOT EDIT (digest: fd301883fcfa23aed3844fd6b7def7d7)
|
# DO NOT EDIT (digest: 903b251284f5204ecda731d6cf74152b)
|
||||||
# Ignore VCS directories, you can use the same kind of rule outside
|
# Ignore VCS directories, you can use the same kind of rule outside
|
||||||
# OASIS_START/STOP if you want to exclude directories that contains
|
# OASIS_START/STOP if you want to exclude directories that contains
|
||||||
# useless stuff for the build process
|
# useless stuff for the build process
|
||||||
|
|
@ -55,63 +55,64 @@
|
||||||
"automaton.cmx": for-pack(Containers)
|
"automaton.cmx": for-pack(Containers)
|
||||||
"conv.cmx": for-pack(Containers)
|
"conv.cmx": for-pack(Containers)
|
||||||
"levenshtein.cmx": for-pack(Containers)
|
"levenshtein.cmx": for-pack(Containers)
|
||||||
|
"bidir.cmx": for-pack(Containers)
|
||||||
# Library containers_thread
|
# Library containers_thread
|
||||||
"threads/containers_thread.cmxs": use_containers_thread
|
"threads/containers_thread.cmxs": use_containers_thread
|
||||||
<threads/*.ml{,i}>: use_containers
|
|
||||||
<threads/*.ml{,i}>: package(threads)
|
<threads/*.ml{,i}>: package(threads)
|
||||||
<threads/*.ml{,i}>: package(unix)
|
<threads/*.ml{,i}>: package(unix)
|
||||||
|
<threads/*.ml{,i}>: use_containers
|
||||||
# Library containers_lwt
|
# Library containers_lwt
|
||||||
"containers_lwt.cmxs": use_containers_lwt
|
"containers_lwt.cmxs": use_containers_lwt
|
||||||
"behavior.cmx": for-pack(Containers_lwt)
|
"behavior.cmx": for-pack(Containers_lwt)
|
||||||
"lwt_automaton.cmx": for-pack(Containers_lwt)
|
"lwt_automaton.cmx": for-pack(Containers_lwt)
|
||||||
<*.ml{,i}>: use_containers
|
|
||||||
<*.ml{,i}>: package(lwt)
|
<*.ml{,i}>: package(lwt)
|
||||||
<*.ml{,i}>: package(lwt.unix)
|
<*.ml{,i}>: package(lwt.unix)
|
||||||
<*.ml{,i}>: package(unix)
|
<*.ml{,i}>: package(unix)
|
||||||
|
<*.ml{,i}>: use_containers
|
||||||
# Library containers_cgi
|
# Library containers_cgi
|
||||||
"cgi/containers_cgi.cmxs": use_containers_cgi
|
"cgi/containers_cgi.cmxs": use_containers_cgi
|
||||||
<cgi/*.ml{,i}>: use_containers
|
|
||||||
<cgi/*.ml{,i}>: package(CamlGI)
|
<cgi/*.ml{,i}>: package(CamlGI)
|
||||||
<cgi/*.ml{,i}>: package(unix)
|
<cgi/*.ml{,i}>: package(unix)
|
||||||
|
<cgi/*.ml{,i}>: use_containers
|
||||||
# Executable benchs
|
# Executable benchs
|
||||||
"tests/benchs.native": use_containers
|
|
||||||
"tests/benchs.native": package(bench)
|
"tests/benchs.native": package(bench)
|
||||||
"tests/benchs.native": package(unix)
|
"tests/benchs.native": package(unix)
|
||||||
|
"tests/benchs.native": use_containers
|
||||||
<tests/*.ml{,i}>: package(bench)
|
<tests/*.ml{,i}>: package(bench)
|
||||||
# Executable bench_conv
|
# Executable bench_conv
|
||||||
"tests/bench_conv.native": use_containers
|
|
||||||
"tests/bench_conv.native": package(benchmark)
|
"tests/bench_conv.native": package(benchmark)
|
||||||
"tests/bench_conv.native": package(unix)
|
"tests/bench_conv.native": package(unix)
|
||||||
|
"tests/bench_conv.native": use_containers
|
||||||
<tests/*.ml{,i}>: package(benchmark)
|
<tests/*.ml{,i}>: package(benchmark)
|
||||||
# Executable test_levenshtein
|
# Executable test_levenshtein
|
||||||
"tests/test_levenshtein.native": use_containers
|
|
||||||
"tests/test_levenshtein.native": package(qcheck)
|
"tests/test_levenshtein.native": package(qcheck)
|
||||||
"tests/test_levenshtein.native": package(unix)
|
"tests/test_levenshtein.native": package(unix)
|
||||||
|
"tests/test_levenshtein.native": use_containers
|
||||||
<tests/*.ml{,i}>: package(qcheck)
|
<tests/*.ml{,i}>: package(qcheck)
|
||||||
# Executable run_tests
|
# Executable run_tests
|
||||||
"tests/run_tests.native": use_containers
|
|
||||||
"tests/run_tests.native": package(threads)
|
|
||||||
"tests/run_tests.native": package(oUnit)
|
|
||||||
"tests/run_tests.native": package(lwt)
|
"tests/run_tests.native": package(lwt)
|
||||||
"tests/run_tests.native": package(lwt.unix)
|
"tests/run_tests.native": package(lwt.unix)
|
||||||
|
"tests/run_tests.native": package(oUnit)
|
||||||
|
"tests/run_tests.native": package(threads)
|
||||||
"tests/run_tests.native": package(unix)
|
"tests/run_tests.native": package(unix)
|
||||||
<tests/*.ml{,i}>: use_containers
|
"tests/run_tests.native": use_containers
|
||||||
<tests/*.ml{,i}>: package(threads)
|
|
||||||
<tests/*.ml{,i}>: package(oUnit)
|
|
||||||
<tests/*.ml{,i}>: package(lwt)
|
<tests/*.ml{,i}>: package(lwt)
|
||||||
<tests/*.ml{,i}>: package(lwt.unix)
|
<tests/*.ml{,i}>: package(lwt.unix)
|
||||||
|
<tests/*.ml{,i}>: package(oUnit)
|
||||||
|
<tests/*.ml{,i}>: package(threads)
|
||||||
<tests/*.ml{,i}>: package(unix)
|
<tests/*.ml{,i}>: package(unix)
|
||||||
|
<tests/*.ml{,i}>: use_containers
|
||||||
# Executable web_pwd
|
# Executable web_pwd
|
||||||
"examples/cgi/web_pwd.byte": use_containers_cgi
|
|
||||||
"examples/cgi/web_pwd.byte": use_containers
|
|
||||||
"examples/cgi/web_pwd.byte": package(threads)
|
|
||||||
"examples/cgi/web_pwd.byte": package(CamlGI)
|
"examples/cgi/web_pwd.byte": package(CamlGI)
|
||||||
|
"examples/cgi/web_pwd.byte": package(threads)
|
||||||
"examples/cgi/web_pwd.byte": package(unix)
|
"examples/cgi/web_pwd.byte": package(unix)
|
||||||
<examples/cgi/*.ml{,i}>: use_containers_cgi
|
"examples/cgi/web_pwd.byte": use_containers
|
||||||
<examples/cgi/*.ml{,i}>: use_containers
|
"examples/cgi/web_pwd.byte": use_containers_cgi
|
||||||
<examples/cgi/*.ml{,i}>: package(threads)
|
|
||||||
<examples/cgi/*.ml{,i}>: package(CamlGI)
|
<examples/cgi/*.ml{,i}>: package(CamlGI)
|
||||||
|
<examples/cgi/*.ml{,i}>: package(threads)
|
||||||
<examples/cgi/*.ml{,i}>: package(unix)
|
<examples/cgi/*.ml{,i}>: package(unix)
|
||||||
|
<examples/cgi/*.ml{,i}>: use_containers
|
||||||
|
<examples/cgi/*.ml{,i}>: use_containers_cgi
|
||||||
# OASIS_STOP
|
# OASIS_STOP
|
||||||
<tests/*.ml{,i}>: thread
|
<tests/*.ml{,i}>: thread
|
||||||
<threads/*.ml{,i}>: thread
|
<threads/*.ml{,i}>: thread
|
||||||
|
|
|
||||||
135
bidir.ml
Normal file
135
bidir.ml
Normal file
|
|
@ -0,0 +1,135 @@
|
||||||
|
|
||||||
|
(*
|
||||||
|
copyright (c) 2013, simon cruanes
|
||||||
|
all rights reserved.
|
||||||
|
|
||||||
|
redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer. redistributions in binary
|
||||||
|
form must reproduce the above copyright notice, this list of conditions and the
|
||||||
|
following disclaimer in the documentation and/or other materials provided with
|
||||||
|
the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*)
|
||||||
|
|
||||||
|
(** {1 Bidirectional Iterators}
|
||||||
|
|
||||||
|
Iterators that can be traversed in both directions *)
|
||||||
|
|
||||||
|
type 'a t =
|
||||||
|
| Nil
|
||||||
|
| Cons of (unit -> 'a t) * 'a * (unit -> 'a t)
|
||||||
|
|
||||||
|
let nil = Nil
|
||||||
|
|
||||||
|
let ret_nil () = Nil
|
||||||
|
|
||||||
|
let insert_before x = function
|
||||||
|
| Nil -> Cons (ret_nil, x, ret_nil)
|
||||||
|
| Cons (l, y, r) ->
|
||||||
|
let rec cur() =
|
||||||
|
Cons (l, x, (fun () -> Cons (cur, y, r)))
|
||||||
|
in cur()
|
||||||
|
|
||||||
|
let insert_after x = function
|
||||||
|
| Nil -> Cons (ret_nil, x, ret_nil)
|
||||||
|
| Cons (l, y, r) ->
|
||||||
|
let rec cur() =
|
||||||
|
Cons (l, y, (fun () -> Cons (cur, x, r)))
|
||||||
|
in cur()
|
||||||
|
|
||||||
|
let left = function
|
||||||
|
| Nil -> Nil
|
||||||
|
| Cons (l, _, _) -> l()
|
||||||
|
|
||||||
|
let right = function
|
||||||
|
| Nil -> Nil
|
||||||
|
| Cons (_, _, r) -> r()
|
||||||
|
|
||||||
|
let graft_before ~inner outer =
|
||||||
|
match outer with
|
||||||
|
| Nil -> inner
|
||||||
|
| Cons (l_out, x_out, r_out) ->
|
||||||
|
let rec right ret_left inner () = match inner () with
|
||||||
|
| Nil -> Cons(ret_left, x_out, r_out) (* yield x_out *)
|
||||||
|
| Cons (_, x_in, r_in) ->
|
||||||
|
let rec cur() =
|
||||||
|
Cons (ret_left, x_in, right cur r_in)
|
||||||
|
in cur()
|
||||||
|
and left ret_right inner () = match inner () with
|
||||||
|
| Nil -> l_out() (* yield same as l_out *)
|
||||||
|
| Cons (l_in, x_in, _) ->
|
||||||
|
let rec cur() =
|
||||||
|
Cons (left cur l_in, x_in, ret_right)
|
||||||
|
in cur()
|
||||||
|
and start() = match inner with
|
||||||
|
| Nil -> outer
|
||||||
|
| Cons (l, x, r) -> Cons (left start l, x, right start r)
|
||||||
|
in
|
||||||
|
start()
|
||||||
|
|
||||||
|
let graft_after ~inner outer =
|
||||||
|
graft_before ~inner (right outer)
|
||||||
|
|
||||||
|
let rev = function
|
||||||
|
| Nil -> Nil
|
||||||
|
| Cons (l, x, r) ->
|
||||||
|
Cons (r, x, l)
|
||||||
|
|
||||||
|
(** {2 Right-iteration} *)
|
||||||
|
|
||||||
|
let rec fold f acc = function
|
||||||
|
| Nil -> acc
|
||||||
|
| Cons (_, x, l) ->
|
||||||
|
let acc = f acc x in
|
||||||
|
fold f acc (l ())
|
||||||
|
|
||||||
|
let to_rev_list l =
|
||||||
|
fold (fun acc x -> x::acc) [] l
|
||||||
|
|
||||||
|
let to_list l =
|
||||||
|
List.rev (to_rev_list l)
|
||||||
|
|
||||||
|
let rec __of_list prev l () = match l with
|
||||||
|
| [] -> Nil
|
||||||
|
| x::l ->
|
||||||
|
let rec cur() =
|
||||||
|
Cons (prev, x, __of_list cur l)
|
||||||
|
in cur()
|
||||||
|
|
||||||
|
let of_list l = __of_list ret_nil l ()
|
||||||
|
|
||||||
|
(** {2 Full constructor} *)
|
||||||
|
|
||||||
|
let of_lists l x r =
|
||||||
|
let rec cur() =
|
||||||
|
Cons (__of_list cur l, x, __of_list cur r)
|
||||||
|
in cur()
|
||||||
|
|
||||||
|
(** {2 Moves} *)
|
||||||
|
|
||||||
|
let left_n n b =
|
||||||
|
let rec traverse acc n b = match n, b with
|
||||||
|
| 0, _
|
||||||
|
| _, Nil -> acc, b
|
||||||
|
| _, Cons (l, x, _) -> traverse (x::acc) (n-1) (l())
|
||||||
|
in traverse [] n b
|
||||||
|
|
||||||
|
let right_n n b =
|
||||||
|
let rec traverse acc n b = match n, b with
|
||||||
|
| 0, _
|
||||||
|
| _, Nil -> acc, b
|
||||||
|
| _, Cons (_, x, r) -> traverse (x::acc) (n-1) (r())
|
||||||
|
in traverse [] n b
|
||||||
86
bidir.mli
Normal file
86
bidir.mli
Normal file
|
|
@ -0,0 +1,86 @@
|
||||||
|
|
||||||
|
(*
|
||||||
|
copyright (c) 2013, simon cruanes
|
||||||
|
all rights reserved.
|
||||||
|
|
||||||
|
redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer. redistributions in binary
|
||||||
|
form must reproduce the above copyright notice, this list of conditions and the
|
||||||
|
following disclaimer in the documentation and/or other materials provided with
|
||||||
|
the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
*)
|
||||||
|
|
||||||
|
(** {1 Bidirectional Iterators}
|
||||||
|
|
||||||
|
Iterators that can be traversed in both directions *)
|
||||||
|
|
||||||
|
type 'a t =
|
||||||
|
| Nil
|
||||||
|
| Cons of (unit -> 'a t) * 'a * (unit -> 'a t)
|
||||||
|
|
||||||
|
val nil : 'a t
|
||||||
|
(** Empty iterator *)
|
||||||
|
|
||||||
|
val insert_before : 'a -> 'a t -> 'a t
|
||||||
|
(** Insert the given element before the current slot in the
|
||||||
|
* given iterator *)
|
||||||
|
|
||||||
|
val insert_after : 'a -> 'a t -> 'a t
|
||||||
|
(** Insert the element right after the current one *)
|
||||||
|
|
||||||
|
val left : 'a t -> 'a t
|
||||||
|
(** Go left once. Doesn't do anything on empty iterator. *)
|
||||||
|
|
||||||
|
val right : 'a t -> 'a t
|
||||||
|
(** Go right once. Doesn't do anything on empty iterator. *)
|
||||||
|
|
||||||
|
val graft_before : inner:'a t -> 'a t -> 'a t
|
||||||
|
(** [insert ~inner outer] grafts [inner] just before the current element of
|
||||||
|
[outer]. *)
|
||||||
|
|
||||||
|
val graft_after : inner:'a t -> 'a t -> 'a t
|
||||||
|
|
||||||
|
val rev : 'a t -> 'a t
|
||||||
|
(** Reverse the order of iteration *)
|
||||||
|
|
||||||
|
(** {2 Right-iteration}
|
||||||
|
traverse the right part of the iterator. traversing the left is
|
||||||
|
easily done with {!rev}. *)
|
||||||
|
|
||||||
|
val fold : ('a -> 'b -> 'a) -> 'a -> 'b t -> 'a
|
||||||
|
(** Fold on elements starting from the current one, to the right end *)
|
||||||
|
|
||||||
|
val to_rev_list : 'a t -> 'a list
|
||||||
|
(** To reverse list *)
|
||||||
|
|
||||||
|
val to_list : 'a t -> 'a list
|
||||||
|
(** Conversion to list. Only traverse the right part. *)
|
||||||
|
|
||||||
|
val of_list : 'a list -> 'a t
|
||||||
|
(** Iterate on the list *)
|
||||||
|
|
||||||
|
(** {2 Full constructor} *)
|
||||||
|
|
||||||
|
val of_lists : 'a list -> 'a -> 'a list -> 'a t
|
||||||
|
|
||||||
|
(** {2 Moves} *)
|
||||||
|
|
||||||
|
val left_n : int -> 'a t -> 'a list * 'a t
|
||||||
|
(** Move left n times, and return the n elements traversed (at most),
|
||||||
|
from left-most one to right_most one.*)
|
||||||
|
|
||||||
|
val right_n : int -> 'a t -> 'a list * 'a t
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# OASIS_START
|
# OASIS_START
|
||||||
# DO NOT EDIT (digest: 38e5fd431c40c173ee89b060fc69bed7)
|
# DO NOT EDIT (digest: ad1a5d1dbb926223a57d547d5e717146)
|
||||||
Cache
|
Cache
|
||||||
Deque
|
Deque
|
||||||
Gen
|
Gen
|
||||||
|
|
@ -40,4 +40,5 @@ HGraph
|
||||||
Automaton
|
Automaton
|
||||||
Conv
|
Conv
|
||||||
Levenshtein
|
Levenshtein
|
||||||
|
Bidir
|
||||||
# OASIS_STOP
|
# OASIS_STOP
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
# OASIS_START
|
# OASIS_START
|
||||||
# DO NOT EDIT (digest: 38e5fd431c40c173ee89b060fc69bed7)
|
# DO NOT EDIT (digest: ad1a5d1dbb926223a57d547d5e717146)
|
||||||
Cache
|
Cache
|
||||||
Deque
|
Deque
|
||||||
Gen
|
Gen
|
||||||
|
|
@ -40,4 +40,5 @@ HGraph
|
||||||
Automaton
|
Automaton
|
||||||
Conv
|
Conv
|
||||||
Levenshtein
|
Levenshtein
|
||||||
|
Bidir
|
||||||
# OASIS_STOP
|
# OASIS_STOP
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
(* OASIS_START *)
|
(* OASIS_START *)
|
||||||
(* DO NOT EDIT (digest: e5b7778fcec1af4e8956e90e19fccd18) *)
|
(* DO NOT EDIT (digest: 5aa8431a34ac4b8eb107bbd4e50b9c49) *)
|
||||||
module OASISGettext = struct
|
module OASISGettext = struct
|
||||||
(* # 22 "src/oasis/OASISGettext.ml" *)
|
(* # 22 "src/oasis/OASISGettext.ml" *)
|
||||||
|
|
||||||
|
|
@ -204,26 +204,27 @@ module BaseEnvLight = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
let var_get name env =
|
let rec var_expand str env =
|
||||||
let rec var_expand str =
|
let buff =
|
||||||
let buff =
|
Buffer.create ((String.length str) * 2)
|
||||||
Buffer.create ((String.length str) * 2)
|
|
||||||
in
|
|
||||||
Buffer.add_substitute
|
|
||||||
buff
|
|
||||||
(fun var ->
|
|
||||||
try
|
|
||||||
var_expand (MapString.find var env)
|
|
||||||
with Not_found ->
|
|
||||||
failwith
|
|
||||||
(Printf.sprintf
|
|
||||||
"No variable %s defined when trying to expand %S."
|
|
||||||
var
|
|
||||||
str))
|
|
||||||
str;
|
|
||||||
Buffer.contents buff
|
|
||||||
in
|
in
|
||||||
var_expand (MapString.find name env)
|
Buffer.add_substitute
|
||||||
|
buff
|
||||||
|
(fun var ->
|
||||||
|
try
|
||||||
|
var_expand (MapString.find var env) env
|
||||||
|
with Not_found ->
|
||||||
|
failwith
|
||||||
|
(Printf.sprintf
|
||||||
|
"No variable %s defined when trying to expand %S."
|
||||||
|
var
|
||||||
|
str))
|
||||||
|
str;
|
||||||
|
Buffer.contents buff
|
||||||
|
|
||||||
|
|
||||||
|
let var_get name env =
|
||||||
|
var_expand (MapString.find name env) env
|
||||||
|
|
||||||
|
|
||||||
let var_choose lst env =
|
let var_choose lst env =
|
||||||
|
|
@ -233,7 +234,7 @@ module BaseEnvLight = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 236 "myocamlbuild.ml"
|
# 237 "myocamlbuild.ml"
|
||||||
module MyOCamlbuildFindlib = struct
|
module MyOCamlbuildFindlib = struct
|
||||||
(* # 22 "src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml" *)
|
(* # 22 "src/plugins/ocamlbuild/MyOCamlbuildFindlib.ml" *)
|
||||||
|
|
||||||
|
|
@ -306,6 +307,22 @@ module MyOCamlbuildFindlib = struct
|
||||||
let find_syntaxes () = ["camlp4o"; "camlp4r"]
|
let find_syntaxes () = ["camlp4o"; "camlp4r"]
|
||||||
|
|
||||||
|
|
||||||
|
let well_known_syntax = [
|
||||||
|
"camlp4.quotations.o";
|
||||||
|
"camlp4.quotations.r";
|
||||||
|
"camlp4.exceptiontracer";
|
||||||
|
"camlp4.extend";
|
||||||
|
"camlp4.foldgenerator";
|
||||||
|
"camlp4.listcomprehension";
|
||||||
|
"camlp4.locationstripper";
|
||||||
|
"camlp4.macro";
|
||||||
|
"camlp4.mapgenerator";
|
||||||
|
"camlp4.metagenerator";
|
||||||
|
"camlp4.profiler";
|
||||||
|
"camlp4.tracer"
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
let dispatch =
|
let dispatch =
|
||||||
function
|
function
|
||||||
| Before_options ->
|
| Before_options ->
|
||||||
|
|
@ -331,13 +348,17 @@ module MyOCamlbuildFindlib = struct
|
||||||
List.iter
|
List.iter
|
||||||
begin fun pkg ->
|
begin fun pkg ->
|
||||||
let base_args = [A"-package"; A pkg] in
|
let base_args = [A"-package"; A pkg] in
|
||||||
|
(* TODO: consider how to really choose camlp4o or camlp4r. *)
|
||||||
let syn_args = [A"-syntax"; A "camlp4o"] in
|
let syn_args = [A"-syntax"; A "camlp4o"] in
|
||||||
let args =
|
let args =
|
||||||
(* Heuristic to identify syntax extensions: whether they end in
|
(* Heuristic to identify syntax extensions: whether they end in
|
||||||
* ".syntax"; some might not *)
|
".syntax"; some might not.
|
||||||
if Filename.check_suffix pkg "syntax"
|
*)
|
||||||
then syn_args @ base_args
|
if Filename.check_suffix pkg "syntax" ||
|
||||||
else base_args
|
List.mem pkg well_known_syntax then
|
||||||
|
syn_args @ base_args
|
||||||
|
else
|
||||||
|
base_args
|
||||||
in
|
in
|
||||||
flag ["ocaml"; "compile"; "pkg_"^pkg] & S args;
|
flag ["ocaml"; "compile"; "pkg_"^pkg] & S args;
|
||||||
flag ["ocaml"; "ocamldep"; "pkg_"^pkg] & S args;
|
flag ["ocaml"; "ocamldep"; "pkg_"^pkg] & S args;
|
||||||
|
|
@ -368,7 +389,11 @@ module MyOCamlbuildFindlib = struct
|
||||||
flag ["ocaml"; "pkg_threads"; "compile"] (S[A "-thread"]);
|
flag ["ocaml"; "pkg_threads"; "compile"] (S[A "-thread"]);
|
||||||
flag ["ocaml"; "pkg_threads"; "doc"] (S[A "-I"; A "+threads"]);
|
flag ["ocaml"; "pkg_threads"; "doc"] (S[A "-I"; A "+threads"]);
|
||||||
flag ["ocaml"; "pkg_threads"; "link"] (S[A "-thread"]);
|
flag ["ocaml"; "pkg_threads"; "link"] (S[A "-thread"]);
|
||||||
flag ["ocaml"; "pkg_threads"; "infer_interface"] (S[A "-thread"])
|
flag ["ocaml"; "pkg_threads"; "infer_interface"] (S[A "-thread"]);
|
||||||
|
flag ["ocaml"; "package(threads)"; "compile"] (S[A "-thread"]);
|
||||||
|
flag ["ocaml"; "package(threads)"; "doc"] (S[A "-I"; A "+threads"]);
|
||||||
|
flag ["ocaml"; "package(threads)"; "link"] (S[A "-thread"]);
|
||||||
|
flag ["ocaml"; "package(threads)"; "infer_interface"] (S[A "-thread"]);
|
||||||
|
|
||||||
| _ ->
|
| _ ->
|
||||||
()
|
()
|
||||||
|
|
@ -527,10 +552,14 @@ module MyOCamlbuildBase = struct
|
||||||
(* Add flags *)
|
(* Add flags *)
|
||||||
List.iter
|
List.iter
|
||||||
(fun (tags, cond_specs) ->
|
(fun (tags, cond_specs) ->
|
||||||
let spec =
|
let spec = BaseEnvLight.var_choose cond_specs env in
|
||||||
BaseEnvLight.var_choose cond_specs env
|
let rec eval_specs =
|
||||||
|
function
|
||||||
|
| S lst -> S (List.map eval_specs lst)
|
||||||
|
| A str -> A (BaseEnvLight.var_expand str env)
|
||||||
|
| spec -> spec
|
||||||
in
|
in
|
||||||
flag tags & spec)
|
flag tags & (eval_specs spec))
|
||||||
t.flags
|
t.flags
|
||||||
| _ ->
|
| _ ->
|
||||||
()
|
()
|
||||||
|
|
@ -547,7 +576,7 @@ module MyOCamlbuildBase = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 550 "myocamlbuild.ml"
|
# 579 "myocamlbuild.ml"
|
||||||
open Ocamlbuild_plugin;;
|
open Ocamlbuild_plugin;;
|
||||||
let package_default =
|
let package_default =
|
||||||
{
|
{
|
||||||
|
|
@ -566,6 +595,6 @@ let package_default =
|
||||||
|
|
||||||
let dispatch_default = MyOCamlbuildBase.dispatch_default package_default;;
|
let dispatch_default = MyOCamlbuildBase.dispatch_default package_default;;
|
||||||
|
|
||||||
# 570 "myocamlbuild.ml"
|
# 599 "myocamlbuild.ml"
|
||||||
(* OASIS_STOP *)
|
(* OASIS_STOP *)
|
||||||
Ocamlbuild_plugin.dispatch dispatch_default;;
|
Ocamlbuild_plugin.dispatch dispatch_default;;
|
||||||
|
|
|
||||||
214
setup.ml
214
setup.ml
|
|
@ -1,9 +1,9 @@
|
||||||
(* setup.ml generated for the first time by OASIS v0.3.0 *)
|
(* setup.ml generated for the first time by OASIS v0.3.0 *)
|
||||||
|
|
||||||
(* OASIS_START *)
|
(* OASIS_START *)
|
||||||
(* DO NOT EDIT (digest: 5453440881a31ee76ccdea04c48398ff) *)
|
(* DO NOT EDIT (digest: 003d579056475b6add45efd6e0e9b852) *)
|
||||||
(*
|
(*
|
||||||
Regenerated by OASIS v0.4.0
|
Regenerated by OASIS v0.4.2
|
||||||
Visit http://oasis.forge.ocamlcore.org for more information and
|
Visit http://oasis.forge.ocamlcore.org for more information and
|
||||||
documentation about functions used in this file.
|
documentation about functions used in this file.
|
||||||
*)
|
*)
|
||||||
|
|
@ -52,6 +52,7 @@ module OASISContext = struct
|
||||||
|
|
||||||
type t =
|
type t =
|
||||||
{
|
{
|
||||||
|
(* TODO: replace this by a proplist. *)
|
||||||
quiet: bool;
|
quiet: bool;
|
||||||
info: bool;
|
info: bool;
|
||||||
debug: bool;
|
debug: bool;
|
||||||
|
|
@ -88,19 +89,31 @@ module OASISContext = struct
|
||||||
{!default with quiet = true}
|
{!default with quiet = true}
|
||||||
|
|
||||||
|
|
||||||
let args () =
|
let fspecs () =
|
||||||
|
(* TODO: don't act on default. *)
|
||||||
|
let ignore_plugins = ref false in
|
||||||
["-quiet",
|
["-quiet",
|
||||||
Arg.Unit (fun () -> default := {!default with quiet = true}),
|
Arg.Unit (fun () -> default := {!default with quiet = true}),
|
||||||
(s_ " Run quietly");
|
s_ " Run quietly";
|
||||||
|
|
||||||
"-info",
|
"-info",
|
||||||
Arg.Unit (fun () -> default := {!default with info = true}),
|
Arg.Unit (fun () -> default := {!default with info = true}),
|
||||||
(s_ " Display information message");
|
s_ " Display information message";
|
||||||
|
|
||||||
|
|
||||||
"-debug",
|
"-debug",
|
||||||
Arg.Unit (fun () -> default := {!default with debug = true}),
|
Arg.Unit (fun () -> default := {!default with debug = true}),
|
||||||
(s_ " Output debug message")]
|
s_ " Output debug message";
|
||||||
|
|
||||||
|
"-ignore-plugins",
|
||||||
|
Arg.Set ignore_plugins,
|
||||||
|
s_ " Ignore plugin's field.";
|
||||||
|
|
||||||
|
"-C",
|
||||||
|
(* TODO: remove this chdir. *)
|
||||||
|
Arg.String (fun str -> Sys.chdir str),
|
||||||
|
s_ "dir Change directory before running."],
|
||||||
|
fun () -> {!default with ignore_plugins = !ignore_plugins}
|
||||||
end
|
end
|
||||||
|
|
||||||
module OASISString = struct
|
module OASISString = struct
|
||||||
|
|
@ -286,6 +299,13 @@ module OASISUtils = struct
|
||||||
Hashtbl.hash (String.lowercase s)
|
Hashtbl.hash (String.lowercase s)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
module SetStringCsl =
|
||||||
|
Set.Make
|
||||||
|
(struct
|
||||||
|
type t = string
|
||||||
|
let compare = compare_csl
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
let varname_of_string ?(hyphen='_') s =
|
let varname_of_string ?(hyphen='_') s =
|
||||||
if String.length s = 0 then
|
if String.length s = 0 then
|
||||||
|
|
@ -920,7 +940,6 @@ module OASISLicense = struct
|
||||||
| DEP5And of license_dep_5 list
|
| DEP5And of license_dep_5 list
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
type t =
|
type t =
|
||||||
| DEP5License of license_dep_5
|
| DEP5License of license_dep_5
|
||||||
| OtherLicense of string (* URL *)
|
| OtherLicense of string (* URL *)
|
||||||
|
|
@ -1614,6 +1633,12 @@ module OASISFeatures = struct
|
||||||
create "section_object" beta
|
create "section_object" beta
|
||||||
(fun () ->
|
(fun () ->
|
||||||
s_ "Implement an object section.")
|
s_ "Implement an object section.")
|
||||||
|
|
||||||
|
|
||||||
|
let dynrun_for_release =
|
||||||
|
create "dynrun_for_release" alpha
|
||||||
|
(fun () ->
|
||||||
|
s_ "Make '-setup-update dynamic' suitable for releasing project.")
|
||||||
end
|
end
|
||||||
|
|
||||||
module OASISUnixPath = struct
|
module OASISUnixPath = struct
|
||||||
|
|
@ -2757,7 +2782,7 @@ module OASISFileUtil = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 2760 "setup.ml"
|
# 2785 "setup.ml"
|
||||||
module BaseEnvLight = struct
|
module BaseEnvLight = struct
|
||||||
(* # 22 "src/base/BaseEnvLight.ml" *)
|
(* # 22 "src/base/BaseEnvLight.ml" *)
|
||||||
|
|
||||||
|
|
@ -2832,26 +2857,27 @@ module BaseEnvLight = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
let var_get name env =
|
let rec var_expand str env =
|
||||||
let rec var_expand str =
|
let buff =
|
||||||
let buff =
|
Buffer.create ((String.length str) * 2)
|
||||||
Buffer.create ((String.length str) * 2)
|
|
||||||
in
|
|
||||||
Buffer.add_substitute
|
|
||||||
buff
|
|
||||||
(fun var ->
|
|
||||||
try
|
|
||||||
var_expand (MapString.find var env)
|
|
||||||
with Not_found ->
|
|
||||||
failwith
|
|
||||||
(Printf.sprintf
|
|
||||||
"No variable %s defined when trying to expand %S."
|
|
||||||
var
|
|
||||||
str))
|
|
||||||
str;
|
|
||||||
Buffer.contents buff
|
|
||||||
in
|
in
|
||||||
var_expand (MapString.find name env)
|
Buffer.add_substitute
|
||||||
|
buff
|
||||||
|
(fun var ->
|
||||||
|
try
|
||||||
|
var_expand (MapString.find var env) env
|
||||||
|
with Not_found ->
|
||||||
|
failwith
|
||||||
|
(Printf.sprintf
|
||||||
|
"No variable %s defined when trying to expand %S."
|
||||||
|
var
|
||||||
|
str))
|
||||||
|
str;
|
||||||
|
Buffer.contents buff
|
||||||
|
|
||||||
|
|
||||||
|
let var_get name env =
|
||||||
|
var_expand (MapString.find name env) env
|
||||||
|
|
||||||
|
|
||||||
let var_choose lst env =
|
let var_choose lst env =
|
||||||
|
|
@ -2861,15 +2887,15 @@ module BaseEnvLight = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 2864 "setup.ml"
|
# 2890 "setup.ml"
|
||||||
module BaseContext = struct
|
module BaseContext = struct
|
||||||
(* # 22 "src/base/BaseContext.ml" *)
|
(* # 22 "src/base/BaseContext.ml" *)
|
||||||
|
|
||||||
|
(* TODO: get rid of this module. *)
|
||||||
open OASISContext
|
open OASISContext
|
||||||
|
|
||||||
|
|
||||||
let args = args
|
let args () = fst (fspecs ())
|
||||||
|
|
||||||
|
|
||||||
let default = default
|
let default = default
|
||||||
|
|
@ -5000,11 +5026,14 @@ module BaseSetup = struct
|
||||||
s_ " Don't try to update setup.ml, even if _oasis has changed.")
|
s_ " Don't try to update setup.ml, even if _oasis has changed.")
|
||||||
|
|
||||||
|
|
||||||
|
let default_oasis_fn = "_oasis"
|
||||||
|
|
||||||
|
|
||||||
let update_setup_ml t =
|
let update_setup_ml t =
|
||||||
let oasis_fn =
|
let oasis_fn =
|
||||||
match t.oasis_fn with
|
match t.oasis_fn with
|
||||||
| Some fn -> fn
|
| Some fn -> fn
|
||||||
| None -> "_oasis"
|
| None -> default_oasis_fn
|
||||||
in
|
in
|
||||||
let oasis_exec =
|
let oasis_exec =
|
||||||
match t.oasis_exec with
|
match t.oasis_exec with
|
||||||
|
|
@ -5102,7 +5131,8 @@ module BaseSetup = struct
|
||||||
try
|
try
|
||||||
match t.oasis_digest with
|
match t.oasis_digest with
|
||||||
| Some dgst ->
|
| Some dgst ->
|
||||||
if Sys.file_exists oasis_fn && dgst <> Digest.file "_oasis" then
|
if Sys.file_exists oasis_fn &&
|
||||||
|
dgst <> Digest.file default_oasis_fn then
|
||||||
begin
|
begin
|
||||||
do_update ();
|
do_update ();
|
||||||
true
|
true
|
||||||
|
|
@ -5268,7 +5298,7 @@ module BaseSetup = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 5271 "setup.ml"
|
# 5301 "setup.ml"
|
||||||
module InternalConfigurePlugin = struct
|
module InternalConfigurePlugin = struct
|
||||||
(* # 22 "src/plugins/internal/InternalConfigurePlugin.ml" *)
|
(* # 22 "src/plugins/internal/InternalConfigurePlugin.ml" *)
|
||||||
|
|
||||||
|
|
@ -6117,7 +6147,7 @@ module InternalInstallPlugin = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 6120 "setup.ml"
|
# 6150 "setup.ml"
|
||||||
module OCamlbuildCommon = struct
|
module OCamlbuildCommon = struct
|
||||||
(* # 22 "src/plugins/ocamlbuild/OCamlbuildCommon.ml" *)
|
(* # 22 "src/plugins/ocamlbuild/OCamlbuildCommon.ml" *)
|
||||||
|
|
||||||
|
|
@ -6129,10 +6159,15 @@ module OCamlbuildCommon = struct
|
||||||
open OASISGettext
|
open OASISGettext
|
||||||
open BaseEnv
|
open BaseEnv
|
||||||
open BaseStandardVar
|
open BaseStandardVar
|
||||||
|
open OASISTypes
|
||||||
|
|
||||||
|
|
||||||
let ocamlbuild_clean_ev =
|
|
||||||
"ocamlbuild-clean"
|
|
||||||
|
type extra_args = string list
|
||||||
|
|
||||||
|
|
||||||
|
let ocamlbuild_clean_ev = "ocamlbuild-clean"
|
||||||
|
|
||||||
|
|
||||||
let ocamlbuildflags =
|
let ocamlbuildflags =
|
||||||
|
|
@ -6255,27 +6290,7 @@ module OCamlbuildPlugin = struct
|
||||||
ref (fun lst -> lst)
|
ref (fun lst -> lst)
|
||||||
|
|
||||||
|
|
||||||
type ocamlbuild_plugin =
|
let build extra_args pkg argv =
|
||||||
{
|
|
||||||
plugin_tags: string option;
|
|
||||||
extra_args: string list;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
let check_ocaml_version version pkg =
|
|
||||||
match pkg.ocaml_version with
|
|
||||||
| Some ocaml_version ->
|
|
||||||
let min_ocaml_version = OASISVersion.version_of_string version in
|
|
||||||
OASISVersion.comparator_ge min_ocaml_version ocaml_version
|
|
||||||
| None ->
|
|
||||||
false
|
|
||||||
|
|
||||||
|
|
||||||
let ocamlbuild_supports_ocamlfind = check_ocaml_version "3.12.1"
|
|
||||||
let ocamlbuild_supports_plugin_tags = check_ocaml_version "4.01"
|
|
||||||
|
|
||||||
|
|
||||||
let build t pkg argv =
|
|
||||||
(* Return the filename in build directory *)
|
(* Return the filename in build directory *)
|
||||||
let in_build_dir fn =
|
let in_build_dir fn =
|
||||||
Filename.concat
|
Filename.concat
|
||||||
|
|
@ -6419,33 +6434,13 @@ module OCamlbuildPlugin = struct
|
||||||
(BaseBuilt.register bt bnm lst)
|
(BaseBuilt.register bt bnm lst)
|
||||||
in
|
in
|
||||||
|
|
||||||
let cond_targets =
|
(* Run the hook *)
|
||||||
(* Run the hook *)
|
let cond_targets = !cond_targets_hook cond_targets in
|
||||||
!cond_targets_hook cond_targets
|
|
||||||
in
|
|
||||||
|
|
||||||
let extra_args =
|
(* Run a list of target... *)
|
||||||
match t.plugin_tags with
|
run_ocamlbuild (List.flatten (List.map snd cond_targets) @ extra_args) argv;
|
||||||
| Some tags -> "-plugin-tags" :: ("'" ^ tags ^ "'") :: t.extra_args
|
(* ... and register events *)
|
||||||
| None -> t.extra_args
|
List.iter check_and_register (List.flatten (List.map fst cond_targets))
|
||||||
in
|
|
||||||
let extra_args =
|
|
||||||
if ocamlbuild_supports_ocamlfind pkg then
|
|
||||||
"-use-ocamlfind" :: extra_args
|
|
||||||
else
|
|
||||||
extra_args
|
|
||||||
in
|
|
||||||
|
|
||||||
(* Run a list of target... *)
|
|
||||||
run_ocamlbuild
|
|
||||||
(List.flatten
|
|
||||||
(List.map snd cond_targets)
|
|
||||||
@ extra_args)
|
|
||||||
argv;
|
|
||||||
(* ... and register events *)
|
|
||||||
List.iter
|
|
||||||
check_and_register
|
|
||||||
(List.flatten (List.map fst cond_targets))
|
|
||||||
|
|
||||||
|
|
||||||
let clean pkg extra_args =
|
let clean pkg extra_args =
|
||||||
|
|
@ -6482,12 +6477,18 @@ module OCamlbuildDocPlugin = struct
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
type run_t =
|
||||||
|
{
|
||||||
|
extra_args: string list;
|
||||||
|
run_path: unix_filename;
|
||||||
|
}
|
||||||
|
|
||||||
let doc_build path pkg (cs, doc) argv =
|
|
||||||
|
let doc_build run pkg (cs, doc) argv =
|
||||||
let index_html =
|
let index_html =
|
||||||
OASISUnixPath.make
|
OASISUnixPath.make
|
||||||
[
|
[
|
||||||
path;
|
run.run_path;
|
||||||
cs.cs_name^".docdir";
|
cs.cs_name^".docdir";
|
||||||
"index.html";
|
"index.html";
|
||||||
]
|
]
|
||||||
|
|
@ -6496,11 +6497,11 @@ module OCamlbuildDocPlugin = struct
|
||||||
OASISHostPath.make
|
OASISHostPath.make
|
||||||
[
|
[
|
||||||
build_dir argv;
|
build_dir argv;
|
||||||
OASISHostPath.of_unix path;
|
OASISHostPath.of_unix run.run_path;
|
||||||
cs.cs_name^".docdir";
|
cs.cs_name^".docdir";
|
||||||
]
|
]
|
||||||
in
|
in
|
||||||
run_ocamlbuild [index_html] argv;
|
run_ocamlbuild (index_html :: run.extra_args) argv;
|
||||||
List.iter
|
List.iter
|
||||||
(fun glb ->
|
(fun glb ->
|
||||||
BaseBuilt.register
|
BaseBuilt.register
|
||||||
|
|
@ -6511,7 +6512,7 @@ module OCamlbuildDocPlugin = struct
|
||||||
["*.html"; "*.css"]
|
["*.html"; "*.css"]
|
||||||
|
|
||||||
|
|
||||||
let doc_clean t pkg (cs, doc) argv =
|
let doc_clean run pkg (cs, doc) argv =
|
||||||
run_clean argv;
|
run_clean argv;
|
||||||
BaseBuilt.unregister BaseBuilt.BDoc cs.cs_name
|
BaseBuilt.unregister BaseBuilt.BDoc cs.cs_name
|
||||||
|
|
||||||
|
|
@ -6519,7 +6520,7 @@ module OCamlbuildDocPlugin = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 6522 "setup.ml"
|
# 6523 "setup.ml"
|
||||||
module CustomPlugin = struct
|
module CustomPlugin = struct
|
||||||
(* # 22 "src/plugins/custom/CustomPlugin.ml" *)
|
(* # 22 "src/plugins/custom/CustomPlugin.ml" *)
|
||||||
|
|
||||||
|
|
@ -6667,15 +6668,13 @@ module CustomPlugin = struct
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
# 6670 "setup.ml"
|
# 6671 "setup.ml"
|
||||||
open OASISTypes;;
|
open OASISTypes;;
|
||||||
|
|
||||||
let setup_t =
|
let setup_t =
|
||||||
{
|
{
|
||||||
BaseSetup.configure = InternalConfigurePlugin.configure;
|
BaseSetup.configure = InternalConfigurePlugin.configure;
|
||||||
build =
|
build = OCamlbuildPlugin.build ["-use-ocamlfind"];
|
||||||
OCamlbuildPlugin.build
|
|
||||||
{OCamlbuildPlugin.plugin_tags = None; extra_args = []};
|
|
||||||
test =
|
test =
|
||||||
[
|
[
|
||||||
("all",
|
("all",
|
||||||
|
|
@ -6687,7 +6686,15 @@ let setup_t =
|
||||||
cmd_distclean = [(OASISExpr.EBool true, None)]
|
cmd_distclean = [(OASISExpr.EBool true, None)]
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
doc = [("containers", OCamlbuildDocPlugin.doc_build ".")];
|
doc =
|
||||||
|
[
|
||||||
|
("containers",
|
||||||
|
OCamlbuildDocPlugin.doc_build
|
||||||
|
{
|
||||||
|
OCamlbuildDocPlugin.extra_args = ["-use-ocamlfind"];
|
||||||
|
run_path = "."
|
||||||
|
})
|
||||||
|
];
|
||||||
install = InternalInstallPlugin.install;
|
install = InternalInstallPlugin.install;
|
||||||
uninstall = InternalInstallPlugin.uninstall;
|
uninstall = InternalInstallPlugin.uninstall;
|
||||||
clean = [OCamlbuildPlugin.clean];
|
clean = [OCamlbuildPlugin.clean];
|
||||||
|
|
@ -6702,7 +6709,15 @@ let setup_t =
|
||||||
cmd_distclean = [(OASISExpr.EBool true, None)]
|
cmd_distclean = [(OASISExpr.EBool true, None)]
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
clean_doc = [("containers", OCamlbuildDocPlugin.doc_clean ".")];
|
clean_doc =
|
||||||
|
[
|
||||||
|
("containers",
|
||||||
|
OCamlbuildDocPlugin.doc_clean
|
||||||
|
{
|
||||||
|
OCamlbuildDocPlugin.extra_args = ["-use-ocamlfind"];
|
||||||
|
run_path = "."
|
||||||
|
})
|
||||||
|
];
|
||||||
distclean = [];
|
distclean = [];
|
||||||
distclean_test =
|
distclean_test =
|
||||||
[
|
[
|
||||||
|
|
@ -6887,7 +6902,8 @@ let setup_t =
|
||||||
"HGraph";
|
"HGraph";
|
||||||
"Automaton";
|
"Automaton";
|
||||||
"Conv";
|
"Conv";
|
||||||
"Levenshtein"
|
"Levenshtein";
|
||||||
|
"Bidir"
|
||||||
];
|
];
|
||||||
lib_pack = true;
|
lib_pack = true;
|
||||||
lib_internal_modules = [];
|
lib_internal_modules = [];
|
||||||
|
|
@ -7272,8 +7288,8 @@ let setup_t =
|
||||||
plugin_data = []
|
plugin_data = []
|
||||||
};
|
};
|
||||||
oasis_fn = Some "_oasis";
|
oasis_fn = Some "_oasis";
|
||||||
oasis_version = "0.4.0";
|
oasis_version = "0.4.2";
|
||||||
oasis_digest = Some "\243\1810yk\175ZZ\026\212L]\250\023S\177";
|
oasis_digest = Some "\185\132z\234t\214f\1660(}\175\179\t\218\195";
|
||||||
oasis_exec = None;
|
oasis_exec = None;
|
||||||
oasis_setup_args = [];
|
oasis_setup_args = [];
|
||||||
setup_update = false
|
setup_update = false
|
||||||
|
|
@ -7281,6 +7297,6 @@ let setup_t =
|
||||||
|
|
||||||
let setup () = BaseSetup.setup setup_t;;
|
let setup () = BaseSetup.setup setup_t;;
|
||||||
|
|
||||||
# 7285 "setup.ml"
|
# 7301 "setup.ml"
|
||||||
(* OASIS_STOP *)
|
(* OASIS_STOP *)
|
||||||
let () = setup ();;
|
let () = setup ();;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue