diff options
9 files changed, 70 insertions, 4 deletions
diff --git a/api/src/ b/api/src/
index 7c5df3e20..c9992d1d3 100644
--- a/api/src/
+++ b/api/src/
@@ -15,6 +15,7 @@ libgfapi_la_CPPFLAGS = $(GF_CPPFLAGS) -D__USE_FILE_OFFSET64 \
-I$(top_srcdir)/rpc/rpc-lib/src \
+libgfapi_la_LDFLAGS = -version-info $(GFAPI_LT_VERSION)
xlatordir = $(libdir)/glusterfs/$(PACKAGE_VERSION)/xlator/mount
diff --git a/ b/
index be1ec7ab6..abcf99ac9 100644
--- a/
+++ b/
@@ -888,6 +888,24 @@ AM_CONDITIONAL([GF_DARWIN_HOST_OS], test "${GF_HOST_OS}" = "GF_DARWIN_HOST_OS")
AM_CONDITIONAL([GF_INSTALL_VAR_LIB_GLUSTERD], test ! -d ${localstatedir}/lib/glusterd && test -d ${sysconfdir}/glusterd )
+dnl pkg-config versioning
+dnl libtool versioning
diff --git a/doc/ b/doc/
new file mode 100644
index 000000000..10c1511b7
--- /dev/null
+++ b/doc/
@@ -0,0 +1,44 @@
+### current
+The number of the current interface exported by the library. A current value
+of '1', means that you are calling the interface exported by this library
+interface 1.
+### 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'.
+For every release of the library `-version-info` argument needs to be set
+correctly depending on any interface changes you have made.
+This is quite straightforward when you understand what the three numbers mean:
+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. If the
+interface has changed, then current must be incremented, and revision reset
+to '0'.
+This is the first revision of a new interface. 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.
diff --git a/ b/
index fab4a57d5..e88e70369 100644
--- a/
+++ b/
@@ -3,10 +3,9 @@ exec_prefix=@exec_prefix@
Name: glusterfs-api
Description: GlusterFS API
/* This is the API version, NOT package version */
-Version: 6
Libs: -L${libdir} -lgfapi -lglusterfs -lgfrpc -lgfxdr
Cflags: -I${includedir}/glusterfs -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64
diff --git a/ b/
index d654280d0..398f1233f 100644
--- a/
+++ b/
@@ -6,6 +6,6 @@ includedir=@includedir@
Name: libgfchangelog
Description: GlusterFS Changelog Consumer Library
-Version: @VERSION@
Libs: -L${libdir} -lgfchangelog -lglusterfs
Cflags: -I${includedir}/glusterfs/gfchangelog -D_FILE_OFFSET_BITS=64 -D__USE_FILE_OFFSET64
diff --git a/libglusterfs/src/ b/libglusterfs/src/
index 907399ae6..634e217ed 100644
--- a/libglusterfs/src/
+++ b/libglusterfs/src/
@@ -7,6 +7,7 @@ libglusterfs_la_CPPFLAGS = $(GF_CPPFLAGS) -D__USE_FILE_OFFSET64 \
-I$(top_srcdir)/rpc/rpc-lib/src/ -I$(CONTRIBDIR)/rbtree
libglusterfs_la_LIBADD = @LEXLIB@
+libglusterfs_la_LDFLAGS = -version-info $(LIBGLUSTERFS_LT_VERSION)
diff --git a/rpc/rpc-lib/src/ b/rpc/rpc-lib/src/
index f19c3c8a4..4cdeaad0b 100644
--- a/rpc/rpc-lib/src/
+++ b/rpc/rpc-lib/src/
@@ -5,6 +5,7 @@ libgfrpc_la_SOURCES = auth-unix.c rpcsvc-auth.c rpcsvc.c auth-null.c \
libgfrpc_la_LIBADD = $(top_builddir)/libglusterfs/src/
+libgfrpc_la_LDFLAGS = -version-info $(LIBGFRPC_LT_VERSION)
noinst_HEADERS = rpcsvc.h rpc-transport.h xdr-common.h xdr-rpc.h xdr-rpcclnt.h \
rpc-clnt.h rpcsvc-common.h protocol-common.h rpc-drc.h
diff --git a/rpc/xdr/src/ b/rpc/xdr/src/
index 949e75e8d..0ec96e464 100644
--- a/rpc/xdr/src/
+++ b/rpc/xdr/src/
@@ -8,6 +8,8 @@ libgfxdr_la_CPPFLAGS = $(GF_CPPFLAGS) -D__USE_FILE_OFFSET64 \
libgfxdr_la_LIBADD = $(top_builddir)/libglusterfs/src/ \
+libgfxdr_la_LDFLAGS = -version-info $(LIBGFXDR_LT_VERSION)
libgfxdr_la_SOURCES = xdr-generic.c rpc-common-xdr.c \
glusterfs3-xdr.c \
cli1-xdr.c \
diff --git a/xlators/features/changelog/lib/src/ b/xlators/features/changelog/lib/src/
index fbaaea628..775f026cf 100644
--- a/xlators/features/changelog/lib/src/
+++ b/xlators/features/changelog/lib/src/
@@ -9,7 +9,7 @@ libgfchangelog_la_CPPFLAGS = $(GF_CPPFLAGS) -D__USE_FILE_OFFSET64 -fpic \
libgfchangelog_la_LIBADD = $(top_builddir)/libglusterfs/src/ \
-libgfchangelog_la_LDFLAGS = $(GF_LDFLAGS)
+libgfchangelog_la_LDFLAGS = $(GF_LDFLAGS) -version-info $(LIBGFCHANGELOG_LT_VERSION)
libgfchangelogdir = $(includedir)/glusterfs/gfchangelog