From f4b2c3b617333b5a0f359edccc9a9be34d9f36bd Mon Sep 17 00:00:00 2001 From: Jozsef Kadlecsik Date: Thu, 5 Jan 2012 11:49:26 +0100 Subject: Library map file added in order to support library versioning. --- Make_global.am | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'Make_global.am') diff --git a/Make_global.am b/Make_global.am index e178fe5..6275a10 100644 --- a/Make_global.am +++ b/Make_global.am @@ -1,7 +1,73 @@ # This is _NOT_ the library release version, it's an API version. # Please read Chapter 6 "Library interface versions" of the libtool # documentation before making any modification +# # http://sources.redhat.com/autobook/autobook/autobook_91.html +# +# The version scheme used by Libtool tracks interfaces, where an interface +# is the set of exported entry points into the library. All Libtool libraries +# start with `-version-info' set to `0:0:0' -- this will be the default +# version number if you don't explicitly set it on the Libtool link command +# line. The meaning of these numbers (from left to right) is as follows: +# +# current +# The number of the current interface exported by the library. A current +# value of `0', means that you are calling the interface exported by this +# library interface 0. +# +# revision +# The implementation number of the most recent interface exported by this +# library. In this case, a revision value of `0' means that this is the +# first implementation of the interface. +# +# If the next release of this library exports the same interface, but has +# a different implementation (perhaps some bugs have been fixed), the +# revision number will be higher, but current number will be the same. +# In that case, when given a choice, the library with the highest revision +# will always be used by the runtime loader. +# +# age +# The number of previous additional interfaces supported by this library. +# If age were `2', then this library can be linked into executables which +# were built with a release of this library that exported the current +# interface number, current, or any of the previous two interfaces. +# +# By definition age must be less than or equal to current. At the outset, +# only the first ever interface is implemented, so age can only be `0'. +# +# 1. If you have changed any of the sources for this library, the revision +# number must be incremented. +# This is a new revision of the current interface. +# +# 2. If the interface has changed, then current must be incremented, and +# revision reset to `0'. +# This is the first revision of a new interface. +# +# 3. If the new interface is a superset of the previous interface (that is, +# if the previous interface has not been broken by the changes in this +# new release), then age must be incremented. +# This release is backwards compatible with the previous release. +# +# 4. If the new interface has removed elements with respect to the previous +# interface, then you have broken backward compatibility and age must be +# reset to `0'. +# This release has a new, but backwards incompatible interface. +# +# For example, if the next release of the library included some new commands +# for an existing socket protocol, you would use -version-info 1:0:1. +# This is the first revision of a new interface. This release is backwards +# compatible with the previous release. +# +# Later, you implement a faster way of handling part of the algorithm at the +# core of the library, and release it with -version-info 1:1:1. This is a new +# revision of the current interface. +# +# Unfortunately the speed of your new implementation can only be fully +# exploited by changing the API to access the structures at a lower level, +# which breaks compatibility with the previous interface, so you release it +# as -version-info 2:0:0. This release has a new, but backwards incompatible +# interface. + LIBVERSION = 1:0:0 AM_CPPFLAGS = $(kinclude_CFLAGS) $(all_includes) -I$(top_srcdir)/include \ -- cgit v1.2.3