mirror of
https://gitlab.freedesktop.org/wayland/wayland.git
synced 2025-11-02 09:01:39 -05:00
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>
43 lines
830 B
Meson
43 lines
830 B
Meson
wayland_egl = library(
|
|
'wayland-egl',
|
|
sources: [
|
|
'wayland-egl.c',
|
|
wayland_client_protocol_h
|
|
],
|
|
include_directories: src_inc,
|
|
version: meson.project_version(),
|
|
install: true
|
|
)
|
|
|
|
executable('wayland-egl-abi-check', 'wayland-egl-abi-check.c')
|
|
|
|
nm_path = find_program('nm').path()
|
|
|
|
test(
|
|
'wayland-egl symbols check',
|
|
find_program('wayland-egl-symbols-check'),
|
|
env: [
|
|
'WAYLAND_EGL_LIB=@0@'.format(wayland_egl.full_path()),
|
|
'NM=@0@'.format(nm_path)
|
|
]
|
|
)
|
|
|
|
install_headers([
|
|
'wayland-egl.h',
|
|
'wayland-egl-core.h',
|
|
'wayland-egl-backend.h'
|
|
])
|
|
|
|
pkgconfig.generate(
|
|
name: 'wayland-egl',
|
|
description: 'Frontend wayland-egl library',
|
|
version: '18.1.0',
|
|
requires: 'wayland-client',
|
|
libraries: wayland_egl
|
|
)
|
|
|
|
pkgconfig.generate(
|
|
name: 'wayland-egl-backend',
|
|
description: 'Backend wayland-egl interface',
|
|
version: '3'
|
|
)
|