Adding ocaml language bindings for the vmcore and bitwriter libraries. These are
authorGordon Henriksen <gordonhenriksen@mac.com>
Tue, 18 Sep 2007 12:49:39 +0000 (12:49 +0000)
committerGordon Henriksen <gordonhenriksen@mac.com>
Tue, 18 Sep 2007 12:49:39 +0000 (12:49 +0000)
commit8ef426baa36639458f6777309db25c1768dc9c8a
tree45ef09f427e18bbf1afd9fd552a3d9fbf0f9e398
parent54c7e1216415172ac1a2aaafa32668c97f845a2c
Adding ocaml language bindings for the vmcore and bitwriter libraries. These are
built atop the C language bindings, and user programs can link with them as
such:

  # Bytecode
  ocamlc -cc g++ llvm.cma llvmbitwriter.cma -o example example.ml
  # Native
  ocamlopt -cc g++ llvm.cmxa llvmbitwriter.cmxa -o example.opt example.ml

The vmcore.ml test exercises most/all of the APIs thus far bound. Unfortunately,
they're not yet numerous enough to write hello world. But:

  $ cat example.ml
  (* example.ml *)

  open Llvm
  open Llvm_bitwriter

  let _ =
    let filename = Sys.argv.(1) in
    let m = create_module filename in

    let v = make_int_constant i32_type 42 false in
    let g = define_global "hello_world" v m in

    if not (write_bitcode_file m filename) then exit 1;

    dispose_module m;

  $ ocamlc -cc g++ llvm.cma llvm_bitwriter.cma -o example example.ml
  File "example.ml", line 11, characters 6-7:
  Warning Y: unused variable g.
  $ ./example example.bc
  $ llvm-dis < example.bc
  ; ModuleID = '<stdin>'
  @hello_world = global i32 42            ; <i32*> [#uses=0]

The ocaml test cases provide effective tests for the C interfaces.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42093 91177308-0d34-0410-b5e6-96231b3b80d8
16 files changed:
Makefile
bindings/Makefile [new file with mode: 0644]
bindings/README.txt [new file with mode: 0644]
bindings/ocaml/Makefile [new file with mode: 0644]
bindings/ocaml/bitwriter/Makefile [new file with mode: 0644]
bindings/ocaml/bitwriter/bitwriter_ocaml.c [new file with mode: 0644]
bindings/ocaml/bitwriter/llvm_bitwriter.ml [new file with mode: 0644]
bindings/ocaml/bitwriter/llvm_bitwriter.mli [new file with mode: 0644]
bindings/ocaml/llvm/Makefile [new file with mode: 0644]
bindings/ocaml/llvm/llvm.ml [new file with mode: 0644]
bindings/ocaml/llvm/llvm.mli [new file with mode: 0644]
bindings/ocaml/llvm/llvm_ocaml.c [new file with mode: 0644]
test/Bindings/Ocaml/bitwriter.ml [new file with mode: 0644]
test/Bindings/Ocaml/ocaml.exp [new file with mode: 0644]
test/Bindings/Ocaml/vmcore.ml [new file with mode: 0644]
test/lib/llvm.exp