munt / munt

A multi-platform software synthesiser emulating pre-GM MIDI devices such as the Roland MT-32, CM-32L, CM-64 and LAPC-I. In no way endorsed by or affiliated with Roland Corp.

Home Page:http://munt.sourceforge.net/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.