From e6308656a66a33de70168acf500e10d4945c0e38 Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Mon, 20 Apr 2015 18:22:05 +0000 Subject: [PATCH] Add targets to cmake for specific target components. This adds the following targets to cmake. These can be used to build and link only specific parts of a backend, instead of having to link the whole backend. - AllTargetsAsmPrinters, AllTargetsAsmParsers, AllTargetsDescs, AllTargetsDisassemblers, AllTargetsInfos A typical use for these is instead of linking ${LLVM_TARGETS_TO_BUILD}. This commit changes llvm-mc to show how to use the new targets. Reviewed by Chris Bieneman. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235324 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/LLVM-Config.cmake | 35 +++++++++++++++++++++++++++++++++ tools/llvm-mc/CMakeLists.txt | 6 +++++- 2 files changed, 40 insertions(+), 1 deletion(-) diff --git a/cmake/modules/LLVM-Config.cmake b/cmake/modules/LLVM-Config.cmake index bc0527f1db4..22ac7145191 100644 --- a/cmake/modules/LLVM-Config.cmake +++ b/cmake/modules/LLVM-Config.cmake @@ -132,6 +132,41 @@ function(llvm_map_components_to_libnames out_libs) # already processed elseif( c STREQUAL "all" ) list(APPEND expanded_components ${LLVM_AVAILABLE_LIBS}) + elseif( c STREQUAL "AllTargetsAsmPrinters" ) + # Link all the asm printers from all the targets + foreach(t ${LLVM_TARGETS_TO_BUILD}) + if( TARGET LLVM${t}AsmPrinter ) + list(APPEND expanded_components "LLVM${t}AsmPrinter") + endif() + endforeach(t) + elseif( c STREQUAL "AllTargetsAsmParsers" ) + # Link all the asm parsers from all the targets + foreach(t ${LLVM_TARGETS_TO_BUILD}) + if( TARGET LLVM${t}AsmParser ) + list(APPEND expanded_components "LLVM${t}AsmParser") + endif() + endforeach(t) + elseif( c STREQUAL "AllTargetsDescs" ) + # Link all the descs from all the targets + foreach(t ${LLVM_TARGETS_TO_BUILD}) + if( TARGET LLVM${t}Desc ) + list(APPEND expanded_components "LLVM${t}Desc") + endif() + endforeach(t) + elseif( c STREQUAL "AllTargetsDisassemblers" ) + # Link all the disassemblers from all the targets + foreach(t ${LLVM_TARGETS_TO_BUILD}) + if( TARGET LLVM${t}Disassembler ) + list(APPEND expanded_components "LLVM${t}Disassembler") + endif() + endforeach(t) + elseif( c STREQUAL "AllTargetsInfos" ) + # Link all the infos from all the targets + foreach(t ${LLVM_TARGETS_TO_BUILD}) + if( TARGET LLVM${t}Info ) + list(APPEND expanded_components "LLVM${t}Info") + endif() + endforeach(t) else( NOT idx LESS 0 ) # Canonize the component name: string(TOUPPER "${c}" capitalized) diff --git a/tools/llvm-mc/CMakeLists.txt b/tools/llvm-mc/CMakeLists.txt index 6f8e9e5405f..15c6dda1b25 100644 --- a/tools/llvm-mc/CMakeLists.txt +++ b/tools/llvm-mc/CMakeLists.txt @@ -1,5 +1,9 @@ set(LLVM_LINK_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} + AllTargetsAsmPrinters + AllTargetsAsmParsers + AllTargetsDescs + AllTargetsDisassemblers + AllTargetsInfos MC MCParser Support -- 2.34.1