Make TableGenGlobalISel an object library

That's how it was originally intended but that wasn't possible because
we still needed to support older CMake versions.

The problem here is that the sources in TableGenGlobalISel are meant to
be linked into both llvm-tblgen and TableGenTests (a unit test), but not
be part of LLVM proper. So they shouldn't be an ordinary LLVM component.
Because they are used in llvm-tblgen, they can't draw in the LLVM dylib
dependency, but then we'd have to do the same thing in TableGenTests to
make sure we don't link both a static Support library and another copy
through the LLVM dylib.

With an object library we're just reusing the object files and don't
have to care about dependencies at all.

Reviewed By: beanz

Differential Revision: https://reviews.llvm.org/D74588
This commit is contained in:
Aaron Puchert 2021-03-31 22:14:22 +02:00
parent a28e835e94
commit 2c3cf62d4a
3 changed files with 4 additions and 3 deletions

View File

@ -12,6 +12,7 @@ add_public_tablegen_target(AutomataTestTableGen)
add_llvm_unittest(TableGenTests
CodeExpanderTest.cpp
AutomataTest.cpp
$<TARGET_OBJECTS:obj.LLVMTableGenGlobalISel>
)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../utils/TableGen)
target_link_libraries(TableGenTests PRIVATE LLVMTableGenGlobalISel LLVMTableGen)
target_link_libraries(TableGenTests PRIVATE LLVMTableGen)

View File

@ -56,6 +56,6 @@ add_tablegen(llvm-tblgen LLVM
X86RecognizableInstr.cpp
WebAssemblyDisassemblerEmitter.cpp
CTagsEmitter.cpp
$<TARGET_OBJECTS:obj.LLVMTableGenGlobalISel>
)
target_link_libraries(llvm-tblgen PRIVATE LLVMTableGenGlobalISel)
set_target_properties(llvm-tblgen PROPERTIES FOLDER "Tablegenning")

View File

@ -3,7 +3,7 @@ set(LLVM_LINK_COMPONENTS
TableGen
)
add_llvm_library(LLVMTableGenGlobalISel STATIC DISABLE_LLVM_LINK_LLVM_DYLIB
add_llvm_library(LLVMTableGenGlobalISel OBJECT
CodeExpander.cpp
GIMatchDag.cpp
GIMatchDagEdge.cpp