summaryrefslogtreecommitdiffstats
path: root/getlib.sh
blob: 4835cf6c470cd7034fecc76e27500a78f207180d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/sh

GETVER="${0%/*}/getver.pl"
GDLIB_MAJOR=$("${GETVER}" MAJOR)
GDLIB_MINOR=$("${GETVER}" MINOR)
GDLIB_REVISION=$("${GETVER}" RELEASE)

# Dynamic library version information
# See http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info

GDLIB_LT_CURRENT=3
# This is the version where the soname (current above) changes.  We use it
# to reset the revision base back to zero.  It's a bit of a pain, but some
# systems restrict the revision range below to [0..255] (like OS X).
GDLIB_PREV_MAJOR=2
GDLIB_PREV_MINOR=2
# This isn't 100% correct, but it tends to be a close enough approximation
# for how we manage the codebase.  It's rare to do a release that doesn't
# modify the library since this project is centered around the library.
GDLIB_LT_REVISION=$(( ((GDLIB_MAJOR - GDLIB_PREV_MAJOR) << 6) | ((GDLIB_MINOR - GDLIB_PREV_MINOR) << 3) | GDLIB_REVISION ))
GDLIB_LT_AGE=0

# The first three fields we feed into libtool and the OS target determines how
# they get used.  The last two fields we feed into cmake.  We use the same rules
# as Linux SONAME versioning in libtool, but cmake should handle it for us.
case $1 in
CURRENT)
	printf '%s' "${GDLIB_LT_CURRENT}"
	;;
REVISION)
	printf '%s' "${GDLIB_LT_REVISION}"
	;;
AGE)
	printf '%s' "${GDLIB_LT_AGE}"
	;;
VERSION)
	printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE )).${GDLIB_LT_AGE}.${GDLIB_LT_REVISION}"
	;;
SONAME)
	printf '%s' "$(( GDLIB_LT_CURRENT - GDLIB_LT_AGE ))"
	;;
esac