Introduce support for symbol versioning
sergm opened this issue · comments
As of libmt32emu version 2.4.x, we're already tracking versioning of each public symbol of the C interfaces. This enables easy runtime compatibility checks when loading a shared library into a client application yet this is a cross-platform solution.
However, in some cases it is advantageous to bind each public C and C++ symbol with the library version when it was introduced as well. It'll enable an application developer to quickly determine the version requirements when necessary. This is particularly important when packaging the library on Linux systems, because advanced packaging systems provide a way to derive dependency requirement automatically based on the ELF symbol versioning, which simplifies the maintenance effort yet ensures reliable packaging.
Due to the above, each exported library symbol should have an additional version tag to clearly document its version of origin, thus providing a way of automatic generation of platform-specific version map files (or attributes) as suitable.