Most TableGen tools have link dependency chains of the form
${project}-tblgen -> ${project}Support -> LLVMSupport
In LLVM_LINK_LLVM_DYLIB=ON builds, ${project}Support naturally links
aginst LLVMSupport implicitly by linking against libLLVM-*.so, and so
${project}-tblgen ends up with a dependency on the shared library.
Configuring the tool itself with DISABLE_LLVM_LINK_LLVM_DYLIB then
typically leads to LLVMSupport to be also included statically, leading
to duplicate definitions of symbols from LLVMSupport after the dynamic
linker has done its thing.
TableGen tools simply aren't that special: they can be linked dynamically
just fine, and so we do that to simplify the build setup.
The only exception to this rule is llvm-tblgen itself, which must be
statically linked to avoid circular dependencies of the form
llvm-tblgen -> llvm-shlib -> tablegen-generated files -> llvm-tblgen
See: https://discourse.llvm.org/t/rfc-cleaning-up-how-we-link-tablegen-tools/66678