From 9ac47c51c59f03be1631a337ef73605a1f30a606 Mon Sep 17 00:00:00 2001 From: Oscar Fuentes <ofv@wanadoo.es> Date: Mon, 2 Aug 2010 20:48:01 +0000 Subject: [PATCH] explicit_map_components_to_libraries now does not complain when there is a dependence on an LLVM target that is not included on the build. When LLVM_TARGETS_TO_BUILD didn't include all the targets, the function emitted an error like "Library LLVMArmParser not found in list of llvm libraries." git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110060 91177308-0d34-0410-b5e6-96231b3b80d8 --- cmake/modules/LLVMConfig.cmake | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/cmake/modules/LLVMConfig.cmake b/cmake/modules/LLVMConfig.cmake index 0744b50d648..03a5c371b44 100755 --- a/cmake/modules/LLVMConfig.cmake +++ b/cmake/modules/LLVMConfig.cmake @@ -16,6 +16,24 @@ function(get_system_libs return_var) endfunction(get_system_libs) +function(is_llvm_target_library library return_var) + # Sets variable `return_var' to ON if `library' corresponds to a + # LLVM supported target. To OFF if it doesn't. + set(${return_var} OFF PARENT_SCOPE) + string(TOUPPER "${library}" capitalized_lib) + string(TOUPPER "${LLVM_ALL_TARGETS}" targets) + foreach(t ${targets}) + if( capitalized_lib STREQUAL "LLVM${t}CODEGEN" OR + capitalized_lib STREQUAL "LLVM${t}ASMPARSER" OR + capitalized_lib STREQUAL "LLVM${t}DISASSEMBLER" OR + capitalized_lib STREQUAL "LLVM${t}INFO" ) + set(${return_var} ON PARENT_SCOPE) + break() + endif() + endforeach() +endfunction(is_llvm_target_library) + + macro(llvm_config executable) explicit_llvm_config(${executable} ${ARGN}) endmacro(llvm_config) @@ -87,7 +105,13 @@ function(explicit_map_components_to_libraries out_libs) string(TOUPPER "${c}" capitalized) list(FIND capitalized_libs ${capitalized} idx) if( idx LESS 0 ) - message(FATAL_ERROR "Library ${c} not found in list of llvm libraries.") + # The library is unkown. Maybe is an ommitted target? + is_llvm_target_library(${c} iltl_result) + if( iltl_result ) + break() + else() + message(FATAL_ERROR "Library ${c} not found in list of llvm libraries.") + endif() endif( idx LESS 0 ) list(GET llvm_libs ${idx} canonical_lib) list(REMOVE_ITEM result ${canonical_lib})