diff options
| author | Simon McVittie <smcv@collabora.com> | 2021-09-10 18:32:00 +0100 |
|---|---|---|
| committer | Simon Ser <contact@emersion.fr> | 2021-10-28 12:46:06 +0000 |
| commit | 0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd (patch) | |
| tree | 7b6efb9a6b34c3a7b3a1220d1c687175ff1f7e0a /src | |
| parent | protocol: Add wl_surface.offset (diff) | |
| download | wayland-0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd.tar wayland-0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd.tar.gz wayland-0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd.tar.bz2 wayland-0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd.tar.lz wayland-0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd.tar.xz wayland-0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd.tar.zst wayland-0cdd2a5c54771d18dc3ec9d690b7fbb754b90dfd.zip | |
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>
Diffstat (limited to 'src')
| -rw-r--r-- | src/meson.build | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/meson.build b/src/meson.build index a5d7410..b76d4fe 100644 --- a/src/meson.build +++ b/src/meson.build @@ -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, |
