summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Zotov <whitequark@whitequark.org>2016-09-05 01:42:22 +0000
committerPeter Zotov <whitequark@whitequark.org>2016-09-05 01:42:22 +0000
commite9dd46f4d0863e8bc9fa55357dd4d3adf563afa0 (patch)
tree34d9eeafb481552c62dec1b64f8819819db472f9
parent1700d021f3764906db95c5b4bd80c173388f92c4 (diff)
downloadbcm5719-llvm-e9dd46f4d0863e8bc9fa55357dd4d3adf563afa0.tar.gz
bcm5719-llvm-e9dd46f4d0863e8bc9fa55357dd4d3adf563afa0.zip
[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. llvm-svn: 280642
-rw-r--r--llvm/bindings/ocaml/README.txt29
-rwxr-xr-xllvm/cmake/config-ix.cmake1
-rw-r--r--llvm/cmake/modules/AddOCaml.cmake12
3 files changed, 39 insertions, 3 deletions
diff --git a/llvm/bindings/ocaml/README.txt b/llvm/bindings/ocaml/README.txt
new file mode 100644
index 00000000000..68216b6792a
--- /dev/null
+++ b/llvm/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/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake
index 06197633568..27bdd72ebcd 100755
--- a/llvm/cmake/config-ix.cmake
+++ b/llvm/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/llvm/cmake/modules/AddOCaml.cmake b/llvm/cmake/modules/AddOCaml.cmake
index e3dd1d84077..4bcd475998c 100644
--- a/llvm/cmake/modules/AddOCaml.cmake
+++ b/llvm/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")
OpenPOWER on IntegriCloud