Export lib and exe build target names from build tree
authorNAKAMURA Takumi <geek4civic@gmail.com>
Sun, 9 Feb 2014 16:36:16 +0000 (16:36 +0000)
committerNAKAMURA Takumi <geek4civic@gmail.com>
Sun, 9 Feb 2014 16:36:16 +0000 (16:36 +0000)
Record every logical target that we install with install(TARGETS) in a
global LLVM_EXPORTS property.  Then use the export(TARGETS) command to
provide a "LLVMExports.cmake" file that exports logical targets for
import into applications directly from our build tree.

The "LLVMExports.cmake" file is not meant for direct inclusion by
application code but should be included by "LLVMConfig.cmake" in a
future change.

Contributed by Brad King.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@201050 91177308-0d34-0410-b5e6-96231b3b80d8

cmake/modules/AddLLVM.cmake
cmake/modules/CMakeLists.txt
cmake/modules/TableGen.cmake

index 63e04619dc37ca7919ebcf36c9a427d1a9b46962..59f92bf3dd7c7be4d40e2b7ca580591542637f85 100644 (file)
@@ -199,6 +199,7 @@ macro(add_llvm_library name)
         LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
         ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
     endif()
         LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
         ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
     endif()
+    set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
   endif()
   set_target_properties(${name} PROPERTIES FOLDER "Libraries")
 
   endif()
   set_target_properties(${name} PROPERTIES FOLDER "Libraries")
 
@@ -251,6 +252,7 @@ ${name} ignored.")
           LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
           ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
       endif()
           LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
           ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX})
       endif()
+      set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
     endif()
   endif()
 
     endif()
   endif()
 
@@ -301,6 +303,9 @@ macro(add_llvm_tool name)
               RUNTIME DESTINATION bin)
     endif()
   endif()
               RUNTIME DESTINATION bin)
     endif()
   endif()
+  if( LLVM_BUILD_TOOLS )
+    set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${name})
+  endif()
   set_target_properties(${name} PROPERTIES FOLDER "Tools")
 endmacro(add_llvm_tool name)
 
   set_target_properties(${name} PROPERTIES FOLDER "Tools")
 endmacro(add_llvm_tool name)
 
index 0620ae87c149375a216d7e0d1f6c8117c88b39f4..8a42548451c2eae17e570b14277cef1f3f9dbf93 100644 (file)
@@ -1,6 +1,10 @@
 set(LLVM_INSTALL_PACKAGE_DIR share/llvm/cmake)
 set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
 
 set(LLVM_INSTALL_PACKAGE_DIR share/llvm/cmake)
 set(llvm_cmake_builddir "${LLVM_BINARY_DIR}/${LLVM_INSTALL_PACKAGE_DIR}")
 
+get_property(LLVM_EXPORTS GLOBAL PROPERTY LLVM_EXPORTS)
+export(TARGETS ${LLVM_EXPORTS}
+  FILE ${llvm_cmake_builddir}/LLVMExports.cmake)
+
 get_property(llvm_libs GLOBAL PROPERTY LLVM_LIBS)
 
 foreach(lib ${llvm_libs})
 get_property(llvm_libs GLOBAL PROPERTY LLVM_LIBS)
 
 foreach(lib ${llvm_libs})
index 35f1422cc53d4ed07f658175b9e2b7a9cbe9896d..8880fe12b47bd39897f11cb4ad9cc420bb7b4363 100644 (file)
@@ -131,4 +131,5 @@ macro(add_tablegen target project)
             EXPORT LLVMExports
             RUNTIME DESTINATION bin)
   endif()
             EXPORT LLVMExports
             RUNTIME DESTINATION bin)
   endif()
+  set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS ${target})
 endmacro()
 endmacro()