Libtool settings
This is a brief description of how the various version variables at the
top of meson.build
are to be set, including gimp_interface_age
.
See Libtool’s versioning system in GNU docs, for definitions of libtool “current”, “revision” and “age” numbers as used below.
- When making releases on the stable branch, increment the micro version and interface age:
gimp_micro_version += 1;
gimp_interface_age += 1;
The micro version is the third number in the version
field of project()
meson method. gimp_interface_age
is its own variable.
-
NEVER increment
gimp_interface_age
by more than 1 at any time for whatever reason. If you incrementgimp_interface_age
by more than 1, then the libtool “current” number is decremented which could result in incompatible library interface with existing bin programs. -
If any functions have been added, set
gimp_interface_age=0
. This will cause the “current” and “age” part of libtool version to bump upwards, increasing the interface number the library implements while keeping the minimum interface number supported the same as before (i.e., backwards compatible ABI).- Example 1
- In GIMP 2.8.10, with
gimp_minor_version=8
,gimp_micro_version=10
andgimp_interface_age=10
(incremented by 1 for every micro release),current=800
andage=800
, which means that the libraries support interface numbers 0 through 800, and the interface DID NOT change at all between GIMP 2.8.0 to GIMP 2.8.10. - Example 2
- In GIMP 2.8.12, with
gimp_minor_version=8
,gimp_micro_version=12
andgimp_interface_age=0
,current=812
andage=812
, which means that the libraries support interface numbers 0 through 812, and the ABI interface DID change in backwards compatible manner at the timegimp_interface_age
was set to 0.
-
If backwards compatibility was broken, set
gimp_interface_age=0
. Note that in such a case, it also implies a major version bump, so the minor and micro versions will be back to 0, which will trigger the interface age to be reset to 0 as well (sincegimp_binary_age = 100 * gimp_minor_version + gimp_micro_version
). This will cause “age” part of libtool version to be 0, increasing the minimum interface supported to “current” part of libtool version, and making ABI backwards incompatible (the linker will not be able to use these libraries with programs compiled to work against older libraries).- Example
- In GIMP 2.8.14, with
gimp_minor_version=8
,gimp_micro_version=14
,gimp_binary_age=0
andgimp_interface_age=0
,current=814
andage=0
, which means that the libraries support interface number 814 only, which tells libtool the ABI interface changed in backwards incompatible manner at the timegimp_binary_age
was set to 0.