mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-10-31 22:25:25 -04:00
build: Include the Wayland minor version in libraries' ABI versions
The ABI of a shared library on Linux is given by a major version, which is part of the SONAME and is incremented (rarely) on incompatible changes, and a minor version, which is part of the basename of the regular file to which the SONAME provides a symlink. Until now, the ABI minor version was hard-coded, which means we can't tell which of a pair of Wayland libraries is newer (and therefore likely to have more symbols and/or fewer bugs). libwayland-egl already had ABI major version 1, so we can use the "marketing" version number as the ABI major.minor version number directly, so Wayland 1.19.90 would produce libwayland-egl.so.1 -> libwayland-egl.so.1.19.90. libwayland-cursor and libwayland-server have ABI major version 0, and OS distributions don't like it when there's a SONAME bump for no good reason, so use their existing ABI major version together with the "marketing" minor version: libwayland-cursor.so.0 -> libwayland-cursor.so.0.19.90. If the Wayland major version number is incremented to 2, we'll have to rethink this, so add some error() to break the build if/when that happens. Assuming that Wayland 2.0 would involve breaking changes, the best way would probably to bump all the SONAMEs to libwayland-foo.so.2. Resolves: https://gitlab.freedesktop.org/wayland/wayland/-/issues/175 Signed-off-by: Simon McVittie <smcv@collabora.com>
This commit is contained in:
parent
fceabb7e9e
commit
0cdd2a5c54
4 changed files with 29 additions and 5 deletions
|
|
@ -1,4 +1,3 @@
|
|||
wayland_version = meson.project_version().split('.')
|
||||
wayland_version_h = configuration_data()
|
||||
wayland_version_h.set('WAYLAND_VERSION', meson.project_version())
|
||||
wayland_version_h.set('WAYLAND_VERSION_MAJOR', wayland_version[0].to_int())
|
||||
|
|
@ -151,6 +150,15 @@ if get_option('libraries')
|
|||
output: 'wayland-protocol.c'
|
||||
)
|
||||
|
||||
if wayland_version[0] != '1'
|
||||
# The versioning used for the shared libraries assumes that the major
|
||||
# version of Wayland as a whole will increase to 2 if and only if there
|
||||
# is an ABI break, at which point we should probably bump the SONAME of
|
||||
# all libraries to .so.2. For more details see
|
||||
# https://gitlab.freedesktop.org/wayland/wayland/-/merge_requests/177
|
||||
error('We probably need to bump the SONAME of libwayland-server and -client')
|
||||
endif
|
||||
|
||||
wayland_server = library(
|
||||
'wayland-server',
|
||||
sources: [
|
||||
|
|
@ -161,7 +169,9 @@ if get_option('libraries')
|
|||
'wayland-shm.c',
|
||||
'event-loop.c'
|
||||
],
|
||||
version: '0.1.0',
|
||||
# To avoid an unnecessary SONAME bump, wayland 1.x.y produces
|
||||
# libwayland-server.so.0.x.y.
|
||||
version: '.'.join(['0', wayland_version[1], wayland_version[2]]),
|
||||
dependencies: [
|
||||
epoll_dep,
|
||||
ffi_dep,
|
||||
|
|
@ -205,7 +215,9 @@ if get_option('libraries')
|
|||
wayland_protocol_c,
|
||||
'wayland-client.c'
|
||||
],
|
||||
version: '0.3.0',
|
||||
# To avoid an unnecessary SONAME bump, wayland 1.x.y produces
|
||||
# libwayland-client.so.0.x.y.
|
||||
version: '.'.join(['0', wayland_version[1], wayland_version[2]]),
|
||||
dependencies: [
|
||||
epoll_dep,
|
||||
ffi_dep,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue