Don't panic, I'm very experienced at solving dynamic linkage conflicts like this (sadly).
We don't need to compromise and make yet more dynamic libraries. We also should NOT use -Bsymbolic*, because it's only a workaround telling the dynamic loader which copy of the symbols to use (while there still exists redundant copies of everything). A proper fix will ensure there is only ever one copy of each compiz symbol, and that is always in compiz_core.
All we need to do is find a way to tell CMake that "compiz_core" CONTAINS the compiz_* archives, while also telling it not to carry those target dependencies on to other components (plugins) that use compiz_core. It's that simple, and I suspect CMake can do it (somehow).
Don't panic, I'm very experienced at solving dynamic linkage conflicts like this (sadly).
We don't need to compromise and make yet more dynamic libraries. We also should NOT use -Bsymbolic*, because it's only a workaround telling the dynamic loader which copy of the symbols to use (while there still exists redundant copies of everything). A proper fix will ensure there is only ever one copy of each compiz symbol, and that is always in compiz_core.
All we need to do is find a way to tell CMake that "compiz_core" CONTAINS the compiz_* archives, while also telling it not to carry those target dependencies on to other components (plugins) that use compiz_core. It's that simple, and I suspect CMake can do it (somehow).