aboutsummaryrefslogtreecommitdiff
path: root/build/bootstrap.build
blob: 1137155c2015739428489aeeca8bdbbbb82f83c1 (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
43
44
45
46
47
48
49
50
51
52
53
# file      : build/bootstrap.build
# copyright : Copyright (c) 2016-2017 Code Synthesis Ltd
# license   : GPLv2 with FOSS License Exception; see accompanying COPYING file

project = libmysqlclient

using version
using config
using dist
using test
using install

# The MySQL client library ABI version number has the <major>.<minor>.<patch>
# form. The major number is increased for backwards-incompatible API changes,
# the minor number for backwards-compatible ones (for example, for adding a new
# function), and the patch number is typically increased for each package
# release, being in a sense redundant. Increase of the version component resets
# the rightmost ones to zero. See also:
#
# http://mysqlserverteam.com/the-client-library-part-2-the-version-number/
#
# There is no way to deduce the ABI version from the release version. Moreover
# the MySQL release history demonstrates their lack of correlation:
#
# release ABI
# ...
# 5.6.37  18.1.0
# 5.7.1   18.0.0 (presumably a bug)
# 5.7.2   18.1.0
# ...
# 5.7.5   18.3.0
# 5.7.6   20.0.0
# ...
#
# So we will have to obtain the ABI version from SHARED_LIB_*_VERSION variable
# values in cmake/mysql_version.cmake for each package release. Also check that
# the protocol version still correct (PROTOCOL_VERSION varible),
#
if ($version.major == 5 && $version.minor == 7 && $version.patch == 20)
{
  abi_major = 20
  abi_minor = 3

  protocol_version = 10
}
else
  fail "increment the ABI version?"

# To make sure the library is fully (backward and forward) compatible with
# programs it is linked to, we will use the original ABI major and minor
# numbers, dropping the redundant patch number,
#
abi_version = $abi_major.$abi_minor