[PATCH] D132387: [runtimes] Handle interface targets in runtimes distribution components

Louis Dionne via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 22 09:04:57 PDT 2022


ldionne created this revision.
ldionne added a reviewer: phosek.
Herald added a subscriber: mgorny.
Herald added a project: All.
ldionne requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

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


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D132387

Files:
  llvm/cmake/modules/LLVMDistributionSupport.cmake
  llvm/runtimes/CMakeLists.txt


Index: llvm/runtimes/CMakeLists.txt
===================================================================
--- llvm/runtimes/CMakeLists.txt
+++ llvm/runtimes/CMakeLists.txt
@@ -214,7 +214,7 @@
   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()
 
Index: llvm/cmake/modules/LLVMDistributionSupport.cmake
===================================================================
--- llvm/cmake/modules/LLVMDistributionSupport.cmake
+++ llvm/cmake/modules/LLVMDistributionSupport.cmake
@@ -260,10 +260,10 @@
     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})


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D132387.454531.patch
Type: text/x-patch
Size: 1331 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220822/119f65d7/attachment.bin>


More information about the llvm-commits mailing list