[CMake] [OCaml] Allow building OCaml bindings out of tree.
authorPeter Zotov <whitequark@whitequark.org>
Mon, 5 Sep 2016 01:42:22 +0000 (01:42 +0000)
committerPeter Zotov <whitequark@whitequark.org>
Mon, 5 Sep 2016 01:42:22 +0000 (01:42 +0000)
That is, add build system support for building the OCaml bindings
against preinstalled LLVM libraries. This is important for package
managers such as OPAM, because OCaml libraries need to be built
against a specific OCaml compiler installation.

llvm-svn: 280642

llvm/bindings/ocaml/README.txt [new file with mode: 0644]
llvm/cmake/config-ix.cmake
llvm/cmake/modules/AddOCaml.cmake

diff --git a/llvm/bindings/ocaml/README.txt b/llvm/bindings/ocaml/README.txt
new file mode 100644 (file)
index 0000000..68216b6
--- /dev/null
@@ -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
index 06197633568bbe8283f381f6283195263d909a26..27bdd72ebcdf79d08e686295bbf63c2cd9c776c3 100755 (executable)
@@ -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)
index e3dd1d840772cfe2052c926371a202e64f384691..4bcd475998cfd1df9fe23f834dddca134f7a96f8 100644 (file)
@@ -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")