-
Notifications
You must be signed in to change notification settings - Fork 125
/
main_utils.ml
82 lines (61 loc) · 2.48 KB
/
main_utils.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
(*
Copyright © 2011, 2012 MLstate
This file is part of OPA.
OPA is free software: you can redistribute it and/or modify it under the
terms of the GNU Affero General Public License, version 3, as published by
the Free Software Foundation.
OPA is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for
more details.
You should have received a copy of the GNU Affero General Public License
along with OPA. If not, see <http://www.gnu.org/licenses/>.
*)
(**
Utils for main
@author Mathieu Barbin
@author Mehdi Bouaziz
@author Cédric Soulas
*)
(**
{6 Compiler options}
*)
module If =
struct
module E = OpaEnv
(* alphabetic order *)
let closure ~options _env = options.E.closure
let constant_sharing ~options _env = options.E.constant_sharing
let constant_sharing_client ~options _env = options.E.constant_sharing_client
let cps ~options _env = options.E.cps
let cps_client ~options _env = options.E.cps_client
let explicit_instantiation ~options _env = options.E.explicit_instantiation
let generate_interface ~options _env = options.E.generate_interface
let no_closure ~options _env = not options.E.closure
let no_discard_of_unused_stdlib ~options _env = options.E.no_discard_of_unused_stdlib
let no_server ~options _env = Option.default false options.E.no_server
let undot ~options _env = options.E.undot
let server ~options env = not (no_server ~options env)
let slicer_test ~options _env = options.E.slicer_test
let stdlib ~options _env = options.E.stdlib
let separated ~options:_ _env = not (ObjectFiles.global_compilation ())
let compilation ~options:_ _env =
match ObjectFiles.compilation_mode () with
| `compilation -> true
| `linking | `prelude | `init -> false
let init ~options:_ _env =
match ObjectFiles.compilation_mode () with
| `init -> true
| `linking | `prelude | `compilation -> false
let full_separation ~options:_ _env =
ObjectFiles.Arg.is_fully_separated ()
let i18n_template ~options _env = E.i18n_template options
let database engine ~options _env =
ignore options;
List.mem engine (Pass_DbEngineImportation.get_engines ())
end
module Switch =
struct
end
let if_not f_cond ~options env = not (f_cond ~options env)
let if_and f_cond1 f_cond2 ~options env = (f_cond1 ~options env) && (f_cond2 ~options env)