Skip to content

Commit 87d8e2e

Browse files
committed
fixup! tc-build: Introduce '--multicall'
Signed-off-by: Nathan Chancellor <nathan@kernel.org>
1 parent 6c72f6f commit 87d8e2e

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

tc_build/llvm.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,23 @@ def host_target(self):
403403
def host_target_is_enabled(self):
404404
return 'all' in self.targets or self.host_target() in self.targets
405405

406+
def llvm_driver_binaries(self, project):
407+
# Find all CMakeLists.txt for LLVM or clang tools that have multicall driver support
408+
cmakelists_txts = [
409+
''.join(cmakelists_txt)
410+
for path in Path(self.folders.source, project).glob('tools/*/CMakeLists.txt')
411+
if ' GENERATE_DRIVER' in (cmakelists_txt := path.read_text(encoding='utf-8'))
412+
]
413+
skip_tools = (
414+
# llvm-mt depends on libxml2, which we explicitly do not link against
415+
'llvm-mt', )
416+
# Return the values of the add_clang_tool() or add_llvm_tool() CMake macros
417+
return [
418+
tool for cmakelists_txt in cmakelists_txts
419+
if (match := re.search(r"^add_(?:clang|llvm)_tool\((.*)$", cmakelists_txt, flags=re.M))
420+
and (tool := match.groups()[0]) not in skip_tools
421+
]
422+
406423
def multicall_is_enabled(self):
407424
return self.cmake_defines.get('LLVM_TOOL_LLVM_DRIVER_BUILD', 'OFF') == 'ON'
408425

@@ -522,30 +539,13 @@ def configure(self):
522539
# slight increase in installation size due to being a multicall
523540
# binary.
524541
if self.multicall_is_enabled():
525-
distribution_components += [
526-
'dsymutil',
527-
'llvm-cgdata',
528-
'llvm-cxxfilt',
529-
'llvm-debuginfod',
530-
'llvm-debuginfod-find',
531-
'llvm-dwp',
532-
'llvm-gsymutil',
533-
'llvm-ifs',
534-
'llvm-libtool-darwin',
535-
'llvm-lipo',
536-
'llvm-ml',
537-
'llvm-rc',
538-
'llvm-readobj',
539-
'llvm-size',
540-
'llvm-symbolizer',
541-
'sancov',
542-
]
542+
distribution_components += [item for item in self.llvm_driver_binaries('llvm') if item not in distribution_components]
543543
if self.project_is_enabled('bolt'):
544544
distribution_components.append('bolt')
545545
if self.project_is_enabled('clang'):
546546
distribution_components += ['clang', 'clang-resource-headers']
547547
if self.multicall_is_enabled():
548-
distribution_components += ['clang-installapi', 'clang-scan-deps']
548+
distribution_components += [item for item in self.llvm_driver_binaries('clang') if item not in distribution_components]
549549
if self.project_is_enabled('lld'):
550550
distribution_components.append('lld')
551551
if build_compiler_rt:

0 commit comments

Comments
 (0)