diff --git a/bindings/ocaml/README.txt b/bindings/ocaml/README.txt new file mode 100644 index 00000000000..68216b6792a --- /dev/null +++ b/bindings/ocaml/README.txt @@ -0,0 +1,29 @@ +This directory contains LLVM bindings for the OCaml programming language +(http://ocaml.org). + +Prerequisites +------------- + +* OCaml 4.00.0+. +* ctypes 0.4+. +* oUnit 2+ (only required for tests). +* CMake (to build LLVM). + +Building the bindings +--------------------- + +If all dependencies are present, the bindings will be built and installed +as a part of the default CMake configuration, with no further action. +They will only work with the specific OCaml compiler detected during the build. + +The bindings can also be built out-of-tree, i.e. targeting a preinstalled +LLVM. To do this, configure the LLVM build tree as follows: + + $ cmake -DLLVM_OCAML_OUT_OF_TREE=TRUE \ + -DCMAKE_INSTALL_PREFIX=[OCaml install prefix] \ + [... any other options] + +then build and install it as: + + $ make ocaml_all + $ cmake -P bindings/ocaml/cmake_install.cmake diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake index 06197633568..27bdd72ebcd 100755 --- a/cmake/config-ix.cmake +++ b/cmake/config-ix.cmake @@ -565,6 +565,7 @@ if(CMAKE_HOST_APPLE AND APPLE) endif() endif() +# Keep the version requirements in sync with bindings/ocaml/README.txt. include(FindOCaml) include(AddOCaml) if(WIN32) diff --git a/cmake/modules/AddOCaml.cmake b/cmake/modules/AddOCaml.cmake index e3dd1d84077..4bcd475998c 100644 --- a/cmake/modules/AddOCaml.cmake +++ b/cmake/modules/AddOCaml.cmake @@ -170,9 +170,13 @@ function(add_ocaml_library name) add_dependencies("ocaml_${name}" "ocaml_${ocaml_dep}") endforeach() - foreach( llvm_lib ${llvm_libs} ) - add_dependencies("ocaml_${name}" "${llvm_lib}") - endforeach() + if( NOT LLVM_OCAML_OUT_OF_TREE ) + foreach( llvm_lib ${llvm_libs} ) + add_dependencies("ocaml_${name}" "${llvm_lib}") + endforeach() + endif() + + add_dependencies("ocaml_all" "ocaml_${name}") set(install_files) set(install_shlibs) @@ -205,3 +209,5 @@ function(add_ocaml_library name) VERBATIM) endforeach() endfunction() + +add_custom_target("ocaml_all")