The TableGen parts of the CMake build are seriously broken. This fixes
authorChandler Carruth <chandlerc@gmail.com>
Wed, 2 Nov 2011 05:03:06 +0000 (05:03 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Wed, 2 Nov 2011 05:03:06 +0000 (05:03 +0000)
one aspect of them by having them use the (annoying, if not broken)
proper library dependency model for adding the LLVMTableGen library as
a dependency. This could manifest as a link order issue in the presence
of separate LLVM / Clang source builds with CMake and a linker that
really cares about such things.

Also, add the Support dependency to llvm-tblgen itself so that it
doesn't rely on TableGen's transitive Support dependency. A parallel
change for clang-tblgen will be forthcoming.

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

cmake/modules/TableGen.cmake
utils/TableGen/CMakeLists.txt

index 3dc820b4abfa70db10d3f634bfce0c5a223da227..6fd48e2ad9e89d540c900e0c3132579915125b11 100644 (file)
@@ -76,7 +76,10 @@ endif()
 macro(add_tablegen target project)
   set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${LLVM_TOOLS_BINARY_DIR})
 
+  set(${target}_OLD_LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS})
+  set(LLVM_LINK_COMPONENTS ${LLVM_LINK_COMPONENTS} TableGen)
   add_llvm_utility(${target} ${ARGN})
+  set(LLVM_LINK_COMPONENTS ${target}_OLD_LLVM_LINK_COMPONENTS)
 
   set(${project}_TABLEGEN "${target}" CACHE
       STRING "Native TableGen executable. Saves building one when cross-compiling.")
@@ -110,7 +113,6 @@ macro(add_tablegen target project)
     endif()
   endif()
 
-  target_link_libraries(${target} LLVMSupport LLVMTableGen)
   if( MINGW )
     target_link_libraries(${target} imagehlp psapi)
     if(CMAKE_SIZEOF_VOID_P MATCHES "8")
index 02ebd67ba662203a415772a139591393baa55543..6a745443cefcdb11da66dd84e948441ae80cc8a8 100644 (file)
@@ -1,5 +1,6 @@
 set(LLVM_REQUIRES_EH 1)
 set(LLVM_REQUIRES_RTTI 1)
+set(LLVM_LINK_COMPONENTS Support)
 
 add_tablegen(llvm-tblgen LLVM
   ARMDecoderEmitter.cpp