
This patch adds an llvm-driver multicall tool that can combine multiple LLVM-based tools. The build infrastructure is enabled for a tool by adding the GENERATE_DRIVER option to the add_llvm_executable CMake call, and changing the tool's main function to a canonicalized tool_name_main format (i.e. llvm_ar_main, clang_main, etc...). As currently implemented llvm-driver contains dsymutil, llvm-ar, llvm-cxxfilt, llvm-objcopy, and clang (if clang is included in the build). llvm-driver can be enabled from builds by setting LLVM_TOOL_LLVM_DRIVER_BUILD=On. There are several limitations in the current implementation, which can be addressed in subsequent patches: (1) the multicall binary cannot currently properly handle multi-dispatch tools. This means symlinking llvm-ranlib to llvm-driver will not properly result in llvm-ar's main being called. (2) the multicall binary cannot be comprised of tools containing conflicting cl::opt options as the global cl::opt option list cannot contain duplicates. These limitations can be addressed in subsequent patches. Differential revision: https://reviews.llvm.org/D109977
24 lines
734 B
Plaintext
24 lines
734 B
Plaintext
## Don't make symlinks on Windows.
|
|
# UNSUPPORTED: system-windows
|
|
# REQUIRES: llvm-driver
|
|
|
|
# RUN: rm -rf %t
|
|
# RUN: mkdir %t
|
|
# RUN: ln -s %llvm %t/llvm-cxxfilt
|
|
# RUN: %t/llvm-cxxfilt --help | FileCheck %s
|
|
# RUN: ln -s %llvm %t/llvm-cxxfilt-15
|
|
# RUN: %t/llvm-cxxfilt-15 --help | FileCheck %s
|
|
# RUN: ln -s %llvm %t/cxxfilt
|
|
# RUN: %t/cxxfilt --help | FileCheck %s
|
|
# RUN: ln -s %llvm %t/cxxfilt-15
|
|
# RUN: %t/cxxfilt-15 --help | FileCheck %s
|
|
# RUN: ln -s %llvm %t/cxxfilt-15.exe
|
|
# RUN: %t/cxxfilt-15.exe --help | FileCheck %s
|
|
|
|
# RUN: ln -s %llvm %t/llvm-15
|
|
# RUN: %t/llvm-15 cxxfilt --help | FileCheck %s
|
|
# RUN: ln -s %llvm %t/llvm-15.exe
|
|
# RUN: %t/llvm-15.exe cxxfilt --help | FileCheck %s
|
|
|
|
# CHECK: OVERVIEW: LLVM symbol undecoration tool
|