Skip to content
  • Gordon Henriksen's avatar
    Adding ocaml language bindings for the vmcore and bitwriter libraries. These are · 37582f74
    Gordon Henriksen authored
    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.
    
    llvm-svn: 42093
    37582f74
Loading