diff --git a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake index 29f4fcbf8aba6..4eb5fad85634b 100644 --- a/llvm/cmake/modules/LLVMExternalProjectUtils.cmake +++ b/llvm/cmake/modules/LLVMExternalProjectUtils.cmake @@ -62,7 +62,17 @@ function(llvm_ExternalProject_Add name source_dir) foreach(tool ${ARG_TOOLCHAIN_TOOLS}) if(TARGET ${tool}) list(APPEND TOOLCHAIN_TOOLS ${tool}) - list(APPEND TOOLCHAIN_BINS $) + + # $ only works on add_executable or add_library targets + # The below logic mirrors cmake's own implementation + get_target_property(target_type "${tool}" TYPE) + if(NOT target_type STREQUAL "OBJECT_LIBRARY" AND + NOT target_type STREQUAL "UTILITY" AND + NOT target_type STREQUAL "GLOBAL_TARGET" AND + NOT target_type STREQUAL "INTERFACE_LIBRARY") + list(APPEND TOOLCHAIN_BINS $) + endif() + endif() endforeach()