[OCaml] Expose Llvm.parse_command_line_options.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220847 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Peter Zotov 2014-10-29 08:16:18 +00:00
parent 57d796af1f
commit e0129b55d2
3 changed files with 21 additions and 0 deletions

View File

@ -286,6 +286,8 @@ external reset_fatal_error_handler : unit -> unit
= "llvm_reset_fatal_error_handler"
external enable_pretty_stacktrace : unit -> unit
= "llvm_enable_pretty_stacktrace"
external parse_command_line_options : ?overview:string -> string array -> unit
= "llvm_parse_command_line_options"
type ('a, 'b) llpos =
| At_end of 'a

View File

@ -381,6 +381,14 @@ val install_fatal_error_handler : (string -> unit) -> unit
(** [reset_fatal_error_handler ()] resets LLVM's fatal error handler. *)
val reset_fatal_error_handler : unit -> unit
(** [parse_command_line_options ?overview args] parses [args] using
the LLVM command line parser. Note that the only stable thing about this
function is its signature; you cannot rely on any particular set of command
line arguments being interpreted the same way across LLVM versions.
See the function [llvm::cl::ParseCommandLineOptions()]. *)
val parse_command_line_options : ?overview:string -> string array -> unit
(** {6 Contexts} *)
(** [create_context ()] creates a context for storing the "global" state in

View File

@ -60,6 +60,17 @@ CAMLprim value llvm_enable_pretty_stacktrace(value Unit) {
return Val_unit;
}
CAMLprim value llvm_parse_command_line_options(value Overview, value Args) {
char *COverview;
if (Overview == Val_int(0)) {
COverview = NULL;
} else {
COverview = String_val(Field(Overview, 0));
}
LLVMParseCommandLineOptions(Wosize_val(Args), (const char* const*) Op_val(Args), COverview);
return Val_unit;
}
static value alloc_variant(int tag, void *Value) {
value Iter = alloc_small(1, tag);
Field(Iter, 0) = Val_op(Value);