[llvm] r280642 - [CMake] [OCaml] Allow building OCaml bindings out of tree.

Peter Zotov via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 4 18:42:23 PDT 2016


Author: whitequark
Date: Sun Sep  4 20:42:22 2016
New Revision: 280642

URL: http://llvm.org/viewvc/llvm-project?rev=280642&view=rev
Log:
[CMake] [OCaml] Allow building OCaml bindings out of tree.

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.

Added:
    llvm/trunk/bindings/ocaml/README.txt
Modified:
    llvm/trunk/cmake/config-ix.cmake
    llvm/trunk/cmake/modules/AddOCaml.cmake

Added: llvm/trunk/bindings/ocaml/README.txt
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/bindings/ocaml/README.txt?rev=280642&view=auto
==============================================================================
--- llvm/trunk/bindings/ocaml/README.txt (added)
+++ llvm/trunk/bindings/ocaml/README.txt Sun Sep  4 20:42:22 2016
@@ -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

Modified: llvm/trunk/cmake/config-ix.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/config-ix.cmake?rev=280642&r1=280641&r2=280642&view=diff
==============================================================================
--- llvm/trunk/cmake/config-ix.cmake (original)
+++ llvm/trunk/cmake/config-ix.cmake Sun Sep  4 20:42:22 2016
@@ -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)

Modified: llvm/trunk/cmake/modules/AddOCaml.cmake
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/cmake/modules/AddOCaml.cmake?rev=280642&r1=280641&r2=280642&view=diff
==============================================================================
--- llvm/trunk/cmake/modules/AddOCaml.cmake (original)
+++ llvm/trunk/cmake/modules/AddOCaml.cmake Sun Sep  4 20:42:22 2016
@@ -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")




More information about the llvm-commits mailing list