Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

llvm OCaml bindings

Tags:

llvm

ocaml

opam

I'm working on llvm OCaml bindings.

I installed llvm package through opam (opam install llvm), when I use llvm in utop, I get the following error:

#require "llvm";; Error: The external function 'llvm_global_succ' is not available.  

The opam llvm version is 3.2.

I also tried building llvm3.3 from the official site (./configure --with-ocaml-libdir='ocamlc -where'), the build was successful (all the llvm command-line tools are working), but I got the same error in utop.

I'm on Mac OS 10.7.5.


Edit: I solved it..

ocamlmktop -o llvmtop llvm.cma -cc g++

Then launch llvmtop, you can use llvm bindings after open Llvm.

I haven't found an equivalent for utop yet..


Edit2: Now utop is working!

Thanks to the utop documentation here

  1. create a myutop_main.ml file:

    let () = UTop_main.main ()

  2. create a custom utop with llvm bindings:

    ocamlfind ocamlmktop -o llvmutop -thread -linkpkg -package utop -package llvm myutop_main.ml -cc g++

like image 618
xysun Avatar asked Nov 15 '13 13:11

xysun


1 Answers

(as I'm asked to answer my own question...)

To use system toplevel

ocamlmktop -o llvmtop llvm.cma -cc g++

Then launch llvmtop, you can use llvm bindings after open Llvm.

I haven't found an equivalent for utop yet..


To use utop

Thanks to the utop documentation here

  1. create a myutop_main.ml file:

    let () = UTop_main.main ()

  2. create a custom utop with llvm bindings:

    ocamlfind ocamlmktop -o llvmutop -thread -linkpkg -package utop -package llvm myutop_main.ml -cc g++

like image 129
xysun Avatar answered Sep 18 '22 05:09

xysun