From 9814c3c7a9e3c10184d0795e084d8b40c19efcb1 Mon Sep 17 00:00:00 2001 From: Oscar Fuentes Date: Mon, 9 Aug 2010 03:26:48 +0000 Subject: [PATCH] CMake: document how to incorporate LLVM into the cmake project of an external project. llvm-svn: 110561 --- docs/CMake.html | 35 +++++++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/docs/CMake.html b/docs/CMake.html index a0473c97e57..ca0b50f628e 100644 --- a/docs/CMake.html +++ b/docs/CMake.html @@ -354,7 +354,38 @@
-

TODO

+

The most difficult part of adding LLVM to the build of a project + is to determine the set of LLVM libraries corresponding to the set + of required LLVM features. What follows is an example of how to + obtain this information:

+ +
+
+    # A convenience variable:
+    set(LLVM_ROOT "" CACHE PATH "Root of LLVM install.")
+    # A bit of a sanity check:
+    if( NOT EXISTS ${LLVM_ROOT}/include/llvm )
+    message(FATAL_ERROR "LLVM_ROOT (${LLVM_ROOT}) is not a valid LLVM install")
+    endif()
+    # We incorporate the CMake features provided by LLVM:
+    set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${LLVM_ROOT}/share/llvm/cmake")
+    include(LLVM)
+    # Now set the header and library paths:
+    include_directories( ${LLVM_ROOT}/include )
+    link_directories( ${LLVM_ROOT}/lib )
+    # Let's suppose we want to build a JIT compiler with support for
+    # binary code (no interpreter):
+    llvm_map_components_to_libraries(REQ_LLVM_LIBRARIES jit native)
+    # Finally, we link the LLVM libraries to our executable:
+    target_link_libraries(mycompiler ${REQ_LLVM_LIBRARIES})
+    
+
+ +

This assumes that LLVM_ROOT points to an install of LLVM. The + procedure works too for uninstalled builds although we need to take + care to add an include_directories for the location of the + headers on the LLVM source directory (if we are building + out-of-source.)

@@ -383,7 +414,7 @@ Oscar Fuentes
LLVM Compiler Infrastructure
- Last modified: $Date: 2008-12-31 03:59:36 +0100 (Wed, 31 Dec 2008) $ + Last modified: $Date: 2010-08-09 03:59:36 +0100 (Mon, 9 Aug 2010) $