Hi,
I’m not an expert in LLVM or VCPKG, but it seems to be quite painful in general to upgrade LLVM, in the case of VCPKG, literally a nightmare.
If my understanding is correct this is to do with solving the diamond library issue: two different libraries depends upon different LLVM major version (13 vs 15 let’s say).
My question is how to approach this and solve this issue?
I believe it is unrealistic to continue with the current approach: force the world to compile with the new version until the upgrade can be done, because this pushes to much pressure on the person trying to upgrade LLVM in VCPKG.
I think it is a better approach to allow multiple versions of LLVM to co-exist.
I believe the most problematic thing would be the symbol clash.
Does LLVM supports custom namespace? I mean during the configuration, we could specify the namespace to use for the LLVM sources and instead of doing:
namespace llvm { ... }
it would then do:
namespace LLVM_NAMESPACE { ... }
And LLVM_NAMESPACE
could be llvm16
or even vendor_llvm16
which would allow to have multiple different version of LLVM running in the same process.
Qt supports this: -DQT_NAMESPACE:STRING=${VCPKG_QT_NAMESPACE}
.
What do you think?
Regards,
Alexandre