[clang-tools-extra] [llvm] reapply "[clang-tidy] support query based custom check" (PR #159547)

Raul Tambre via llvm-commits llvm-commits at lists.llvm.org
Sat Sep 20 04:48:39 PDT 2025


tambry wrote:

This causes a build failure for me:
```
: && /usr/bin/c++ -g -O3 -ffile-prefix-map=/home/tambre/dev/llvm=. -flto=auto -ffat-lto-objects -Wformat -Werror=format-security -DNDEBUG -Wdate-time -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -fno-common -Woverloaded-virtual -Wno-nested-anon-types -O2 -g -DNDEBUG -flto=auto -ffat-lto-objects -Wl,-z,relro -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-cache-dir=/home/tambre/dev/llvm/build/lto.cache -Wl,--export-dynamic  -Xlinker --dependency-file=tools/clang/tools/extra/clang-tidy/tool/CMakeFiles/clang-tidy.dir/link.d tools/clang/tools/extra/clang-tidy/tool/CMakeFiles/clang-tidy.dir/ClangTidyToolMain.cpp.o -o bin/clang-tidy  -Wl,-rpath,"\$ORIGIN/../lib:\$ORIGIN/../lib/x86_64-linux-gnu:"  lib/x86_64-linux-gnu/libclangTidy.a  lib/x86_64-linux-gnu/libclangTidyMain.a  lib/x86_64-linux-gnu/libclangTidyAndroidModule.a  lib/x86_64-linux-gnu/libclangTidyAbseilModule.a  lib/x86_64-linux-gnu/libclangTidyAlteraModule.a  lib/x86_64-linux-gnu/libclangTidyBoostModule.a  lib/x86_64-linux-gnu/libclangTidyBugproneModule.a  lib/x86_64-linux-gnu/libclangTidyCERTModule.a  lib/x86_64-linux-gnu/libclangTidyConcurrencyModule.a  lib/x86_64-linux-gnu/libclangTidyCppCoreGuidelinesModule.a  lib/x86_64-linux-gnu/libclangTidyDarwinModule.a  lib/x86_64-linux-gnu/libclangTidyFuchsiaModule.a  lib/x86_64-linux-gnu/libclangTidyGoogleModule.a  lib/x86_64-linux-gnu/libclangTidyHICPPModule.a  lib/x86_64-linux-gnu/libclangTidyLinuxKernelModule.a  lib/x86_64-linux-gnu/libclangTidyLLVMModule.a  lib/x86_64-linux-gnu/libclangTidyLLVMLibcModule.a  lib/x86_64-linux-gnu/libclangTidyMiscModule.a  lib/x86_64-linux-gnu/libclangTidyModernizeModule.a  lib/x86_64-linux-gnu/libclangTidyObjCModule.a  lib/x86_64-linux-gnu/libclangTidyOpenMPModule.a  lib/x86_64-linux-gnu/libclangTidyPerformanceModule.a  lib/x86_64-linux-gnu/libclangTidyPortabilityModule.a  lib/x86_64-linux-gnu/libclangTidyReadabilityModule.a  lib/x86_64-linux-gnu/libclangTidyZirconModule.a  lib/x86_64-linux-gnu/libclangTidyCustomModule.a  lib/x86_64-linux-gnu/libclangTidyMPIModule.a  lib/x86_64-linux-gnu/libclangIncludeCleaner.a  lib/x86_64-linux-gnu/libclangTidyUtils.a  lib/x86_64-linux-gnu/libclang-cpp.so.22.0  lib/x86_64-linux-gnu/libLLVM.so.22.0 && :
ld.lld: error: undefined symbol: clang::query::QueryParser::parse(llvm::StringRef, clang::query::QuerySession const&)
>>> referenced by QueryCheck.cpp:36 (./build/./clang-tools-extra/clang-tidy/custom/QueryCheck.cpp:36)
>>>               lib/x86_64-linux-gnu/clang-tidy.lto.libclangTidyCustomModule.a(QueryCheck.cpp.o at 2766304).o:(clang::tidy::custom::QueryCheck::QueryCheck(llvm::StringRef, clang::tidy::ClangTidyOptions::CustomCheckValue const&, clang::tidy::ClangTidyContext*))
c++: error: linker command failed with exit code 1 (use -v to see invocation)
```
I was able to fix this by moving `clangQuery` from `clang_target_link_libraries()` to `add_clang_library(clangTidyCustomModule)`. I imagine this is caused by `LLVM_LINK_LLVM_DYLIB=ON`. Reading the code it isn't immediately obvious to me what's the intended difference between the two ways of linking or why the latter doesn't work. The latter links `clang-cpp` but it seems `clangQuery` should be part of that anyway? Or maybe because `clang-shlib` is created _before_ `add_llvm_external_project(clang-tools-extra)`?

https://github.com/llvm/llvm-project/pull/159547


More information about the llvm-commits mailing list