The root problem of alpaca-core/acord#24 is that ggml-metal.m registers a bundle and macos bundles are global.
Luckily we don't need it as we use GGML_METAL_EMBED_LIBRARY which completely embeds the metal code in the ggml binary.
So we shall make GGML_METAL_EMBED_LIBRARY a requirement for our plugins.
Then we need to modify the code in ggml-metal.m to completely remove references to GGMLMetalClass and the bundle in this case.
Thus we should have no ODR violations.
We'll make the changes in our fork of llama.cpp (and also make a PR to upstream).
Then we'll wait for it to trickle down the rest of the ggml forks we build (or if we need it earlier, we make the changes in our forks, but don't make a PR for them).