From 5905e699342fd476d7eb9e35db5d84248a7e9156 Mon Sep 17 00:00:00 2001 From: Louis Dionne Date: Mon, 22 Aug 2022 12:00:40 -0400 Subject: [PATCH] [runtimes] Handle interface targets in runtimes distribution components As reported in [1], cxx-headers is not a valid distribution target because it is an interface target in CMake. This breaks the most basic MultiDistributionExample of the runtimes build. This patch handles interface targets by getting rid of the assumption that all distribution components have a target associated to them. It is valid for a distribution component to only have a `install-FOO` target. In the case where only `cxx-headers` is provided as a distribution component, `ninja toolchain-distribution` will not build anything after this patch, since there is effectively nothing to build for the `cxx-headers` target. However, running `ninja install-toolchain-distribution` will build everything, as expected. [1]: https://discord.com/channels/636084430946959380/636732894974312448/1010013287464828968 Differential Revision: https://reviews.llvm.org/D132387 --- llvm/cmake/modules/LLVMDistributionSupport.cmake | 4 ++-- llvm/runtimes/CMakeLists.txt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/llvm/cmake/modules/LLVMDistributionSupport.cmake b/llvm/cmake/modules/LLVMDistributionSupport.cmake index a2fe69df1e7e..526f36dcda83 100644 --- a/llvm/cmake/modules/LLVMDistributionSupport.cmake +++ b/llvm/cmake/modules/LLVMDistributionSupport.cmake @@ -260,10 +260,10 @@ function(llvm_distribution_add_targets) add_custom_target(install-${distribution_target}-stripped) foreach(target ${distribution_components}) + # Note that some distribution components may not have an actual target, but only an install-FOO target. + # This happens for example if a target is an INTERFACE target. if(TARGET ${target}) add_dependencies(${distribution_target} ${target}) - else() - message(SEND_ERROR "Specified distribution component '${target}' doesn't have a target") endif() if(TARGET install-${target}) diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt index d9041216beb5..e10962022354 100644 --- a/llvm/runtimes/CMakeLists.txt +++ b/llvm/runtimes/CMakeLists.txt @@ -214,7 +214,7 @@ function(runtime_default_target) endforeach() foreach(component ${LLVM_RUNTIME_DISTRIBUTION_COMPONENTS}) if(NOT ${component} IN_LIST SUB_COMPONENTS) - list(APPEND extra_targets ${component} install-${component} install-${component}-stripped) + list(APPEND extra_targets install-${component} install-${component}-stripped) endif() endforeach()