Skip to content

Commit

Permalink
[CMake] [OCaml] Allow building OCaml bindings out of tree.
Browse files Browse the repository at this point in the history
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@280642 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
whitequark committed Sep 5, 2016
1 parent 2b9ec08 commit d02e8e5
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 3 deletions.
29 changes: 29 additions & 0 deletions bindings/ocaml/README.txt
Original file line number Diff line number Diff line change
@@ -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
1 change: 1 addition & 0 deletions cmake/config-ix.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
12 changes: 9 additions & 3 deletions cmake/modules/AddOCaml.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -205,3 +209,5 @@ function(add_ocaml_library name)
VERBATIM)
endforeach()
endfunction()

add_custom_target("ocaml_all")

0 comments on commit d02e8e5

Please sign in to comment.