From 6519fa1cbe46fcf1119c2b6309d21a9005104a0e Mon Sep 17 00:00:00 2001 From: Daniel Sanders Date: Thu, 23 May 2019 23:02:56 +0000 Subject: [PATCH] Break false dependencies on target libraries Summary: For the most part this consists of replacing ${LLVM_TARGETS_TO_BUILD} with some combination of AllTargets* so that they depend on specific components of a target backend rather than all of it. The overall effect of this is that, for example, tools like opt no longer falsely depend on the disassembler, while tools like llvm-ar no longer depend on the code generator. There's a couple quirks to point out here: * AllTargetsCodeGens is a bit more prevalent than expected. Tools like dsymutil seem to need it which I was surprised by. * llvm-xray linked to all the backends but doesn't seem to need any of them. It builds and passes the tests so that seems to be correct. * I left gold out as it's not built when binutils is not available so I'm unable to test it Reviewers: bogner, JDevlieghere Reviewed By: bogner Subscribers: mehdi_amini, mgorny, steven_wu, dexonsmith, rupprecht, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D62331 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@361567 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/LLVM-Config.cmake | 7 +++++++ tools/bugpoint/CMakeLists.txt | 3 ++- tools/dsymutil/CMakeLists.txt | 5 ++++- tools/llc/CMakeLists.txt | 3 ++- tools/llvm-ar/CMakeLists.txt | 4 +++- tools/llvm-c-test/CMakeLists.txt | 4 +++- tools/llvm-cxxdump/CMakeLists.txt | 2 +- tools/llvm-dwp/CMakeLists.txt | 3 ++- tools/llvm-lto/CMakeLists.txt | 3 ++- tools/llvm-lto2/CMakeLists.txt | 4 +++- tools/llvm-rtdyld/CMakeLists.txt | 4 +++- tools/llvm-xray/CMakeLists.txt | 1 - tools/lto/CMakeLists.txt | 6 +++++- tools/opt/CMakeLists.txt | 4 +++- 14 files changed, 40 insertions(+), 13 deletions(-) diff --git a/cmake/modules/LLVM-Config.cmake b/cmake/modules/LLVM-Config.cmake index 474a874a442..57c02f170e1 100644 --- a/cmake/modules/LLVM-Config.cmake +++ b/cmake/modules/LLVM-Config.cmake @@ -209,6 +209,13 @@ function(llvm_map_components_to_libnames out_libs) # already processed elseif( c STREQUAL "all" ) list(APPEND expanded_components ${LLVM_AVAILABLE_LIBS}) + elseif( c STREQUAL "AllTargetsCodeGens" ) + # Link all the asm printers from all the targets + foreach(t ${LLVM_TARGETS_TO_BUILD}) + if( TARGET LLVM${t}CodeGen) + list(APPEND expanded_components "LLVM${t}CodeGen") + endif() + endforeach(t) elseif( c STREQUAL "AllTargetsAsmPrinters" ) # Link all the asm printers from all the targets foreach(t ${LLVM_TARGETS_TO_BUILD}) diff --git a/tools/bugpoint/CMakeLists.txt b/tools/bugpoint/CMakeLists.txt index 654ecc496a9..6ed15a24a2d 100644 --- a/tools/bugpoint/CMakeLists.txt +++ b/tools/bugpoint/CMakeLists.txt @@ -1,5 +1,6 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens Analysis BitWriter CodeGen diff --git a/tools/dsymutil/CMakeLists.txt b/tools/dsymutil/CMakeLists.txt index 480f78fb188..19865e3d20e 100644 --- a/tools/dsymutil/CMakeLists.txt +++ b/tools/dsymutil/CMakeLists.txt @@ -1,5 +1,8 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmPrinters + AllTargetsCodeGens + AllTargetsDescs + AllTargetsInfos AsmPrinter DebugInfoDWARF MC diff --git a/tools/llc/CMakeLists.txt b/tools/llc/CMakeLists.txt index 4f8181a1b65..863358b5e71 100644 --- a/tools/llc/CMakeLists.txt +++ b/tools/llc/CMakeLists.txt @@ -1,5 +1,6 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens Analysis AsmPrinter CodeGen diff --git a/tools/llvm-ar/CMakeLists.txt b/tools/llvm-ar/CMakeLists.txt index 191c684d524..602b4a46ea0 100644 --- a/tools/llvm-ar/CMakeLists.txt +++ b/tools/llvm-ar/CMakeLists.txt @@ -1,5 +1,7 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsDescs + AllTargetsInfos BinaryFormat Core DlltoolDriver diff --git a/tools/llvm-c-test/CMakeLists.txt b/tools/llvm-c-test/CMakeLists.txt index bce0f4a5a42..78eaafc3b5a 100644 --- a/tools/llvm-c-test/CMakeLists.txt +++ b/tools/llvm-c-test/CMakeLists.txt @@ -1,5 +1,7 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens + AllTargetsDisassemblers BitReader Core MCDisassembler diff --git a/tools/llvm-cxxdump/CMakeLists.txt b/tools/llvm-cxxdump/CMakeLists.txt index ada886e8887..519e728e87b 100644 --- a/tools/llvm-cxxdump/CMakeLists.txt +++ b/tools/llvm-cxxdump/CMakeLists.txt @@ -1,5 +1,5 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsInfos Object Support ) diff --git a/tools/llvm-dwp/CMakeLists.txt b/tools/llvm-dwp/CMakeLists.txt index 1b5fbddc1f7..49f40b5c639 100644 --- a/tools/llvm-dwp/CMakeLists.txt +++ b/tools/llvm-dwp/CMakeLists.txt @@ -1,5 +1,6 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens AsmPrinter DebugInfoDWARF MC diff --git a/tools/llvm-lto/CMakeLists.txt b/tools/llvm-lto/CMakeLists.txt index f0b385b7993..d0222315d25 100644 --- a/tools/llvm-lto/CMakeLists.txt +++ b/tools/llvm-lto/CMakeLists.txt @@ -1,5 +1,6 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens BitReader BitWriter Core diff --git a/tools/llvm-lto2/CMakeLists.txt b/tools/llvm-lto2/CMakeLists.txt index 9be12d71ed7..233817a387f 100644 --- a/tools/llvm-lto2/CMakeLists.txt +++ b/tools/llvm-lto2/CMakeLists.txt @@ -1,5 +1,7 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens + AllTargetsDescs BitReader Core Linker diff --git a/tools/llvm-rtdyld/CMakeLists.txt b/tools/llvm-rtdyld/CMakeLists.txt index c1acbe5846b..e1738633cfc 100644 --- a/tools/llvm-rtdyld/CMakeLists.txt +++ b/tools/llvm-rtdyld/CMakeLists.txt @@ -1,5 +1,7 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsDisassemblers + AllTargetsDescs + AllTargetsInfos DebugInfoDWARF ExecutionEngine MC diff --git a/tools/llvm-xray/CMakeLists.txt b/tools/llvm-xray/CMakeLists.txt index 4b056d10758..2551b97e550 100644 --- a/tools/llvm-xray/CMakeLists.txt +++ b/tools/llvm-xray/CMakeLists.txt @@ -1,5 +1,4 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} DebugInfoDWARF Object Support diff --git a/tools/lto/CMakeLists.txt b/tools/lto/CMakeLists.txt index 6e913519a80..20118e029f8 100644 --- a/tools/lto/CMakeLists.txt +++ b/tools/lto/CMakeLists.txt @@ -1,5 +1,9 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens + AllTargetsDescs + AllTargetsDisassemblers + AllTargetsInfos BitReader Core LTO diff --git a/tools/opt/CMakeLists.txt b/tools/opt/CMakeLists.txt index f03d1151665..2f9665c6898 100644 --- a/tools/opt/CMakeLists.txt +++ b/tools/opt/CMakeLists.txt @@ -1,5 +1,7 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmParsers + AllTargetsCodeGens + AllTargetsInfos AggressiveInstCombine Analysis BitWriter -- 2.50.1