[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