summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2021-10-29 15:47:03 +0100
committerEmmanuele Bassi <ebassi@gnome.org>2021-11-19 13:16:25 +0000
commit760a9754b2cd9c2190ffb625692947bce2410a90 (patch)
treea001d781877fc72a77dcd36d99d47be9d7f49600
parent7067fc5356c2b497f16a8effd04e69823d0a8cb8 (diff)
downloadgnome-desktop-760a9754b2cd9c2190ffb625692947bce2410a90.tar.gz
Add libgnome-desktop-4
For GNOME components using GTK 4, we provide a base library that does not depend on GTK, libgnome-desktop-4, with the bits that do not use GDK or GTK. This library has a new soname and version, as well as a new pkg-config file and introspection data files. We want to keep libgnome-desktop-3 as a legacy library for GNOME components (and some applications) that still use GTK 3; for this reason, libgnome-desktop-3 will not change.
-rw-r--r--libgnome-desktop/base-symbol.map6
-rw-r--r--libgnome-desktop/meson.build192
-rw-r--r--meson.build32
3 files changed, 176 insertions, 54 deletions
diff --git a/libgnome-desktop/base-symbol.map b/libgnome-desktop/base-symbol.map
new file mode 100644
index 00000000..671c1560
--- /dev/null
+++ b/libgnome-desktop/base-symbol.map
@@ -0,0 +1,6 @@
+{
+global:
+ gnome_*;
+local:
+ *;
+};
diff --git a/libgnome-desktop/meson.build b/libgnome-desktop/meson.build
index 03dcc9ce..9931db26 100644
--- a/libgnome-desktop/meson.build
+++ b/libgnome-desktop/meson.build
@@ -9,6 +9,149 @@ libargs = [
'-DXKB_BASE="@0@"'.format(xkb_base)
]
+conf = configuration_data()
+
+conf.set_quoted('GETTEXT_PACKAGE', '@0@-3.0'.format(meson.project_name()))
+conf.set_quoted('INSTALL_PREFIX', prefix)
+
+conf.set('ENABLE_SECCOMP', seccomp_dep.found())
+conf.set('HAVE_BWRAP', seccomp_dep.found())
+conf.set('_GNU_SOURCE', seccomp_dep.found())
+
+conf.set('HAVE_SYSTEMD', libsystemd_dep.found())
+conf.set('HAVE_UDEV', udev_dep.found())
+conf.set('HAVE_XKBREGISTRY', xkbregistry_dep.found())
+
+conf.set('HAVE_TIMERFD', cc.has_function('timerfd_create'))
+conf.set('HAVE_OPENAT', cc.has_function('openat'))
+conf.set('HAVE_USELOCALE', cc.has_function('uselocale'))
+conf.set('HAVE_XLOCALE', cc.has_header('xlocale.h'))
+
+configure_file(
+ output: 'config.h',
+ configuration: conf,
+)
+
+dbus_xrandr_built_sources = gnome.gdbus_codegen('meta-dbus-xrandr',
+ 'xrandr.xml',
+ namespace: 'MetaDBus',
+ interface_prefix: 'org.gnome.Mutter'
+)
+
+dbus_idle_built_sources = gnome.gdbus_codegen('meta-dbus-idle-monitor',
+ 'idle-monitor.xml',
+ namespace: 'MetaDBus',
+ interface_prefix: 'org.gnome.Mutter',
+ object_manager: true
+)
+
+### gnome-desktop-base
+base_ldflags = []
+base_symbol_map = '-Wl,--version-script=@0@'.format(meson.current_source_dir() / 'base-symbol.map')
+if cc.has_link_argument(base_symbol_map)
+ base_ldflags += base_symbol_map
+endif
+
+libgnome_desktop_base_sources = [
+ 'gnome-desktop-thumbnail.c',
+ 'gnome-idle-monitor.c',
+ 'gnome-languages.c',
+ 'gnome-pnp-ids.c',
+ 'gnome-systemd.c',
+ 'gnome-wall-clock.c',
+ 'gnome-xkb-info.c',
+]
+
+libgnome_desktop_base_private_sources = [
+ 'gnome-datetime-source.c',
+ 'gnome-desktop-thumbnail-script.c',
+ 'gnome-gettext-portable.c',
+]
+
+libgnome_desktop_base_headers = [
+ 'gnome-desktop-thumbnail.h',
+ 'gnome-idle-monitor.h',
+ 'gnome-languages.h',
+ 'gnome-pnp-ids.h',
+ 'gnome-systemd.h',
+ 'gnome-wall-clock.h',
+ 'gnome-xkb-info.h',
+]
+
+install_headers(libgnome_desktop_base_headers,
+ subdir: 'gnome-desktop-4.0/libgnome-desktop'
+)
+
+base_deps = [
+ gdk_pixbuf_dep,
+ glib_dep,
+ gio_dep,
+ gio_unix_dep,
+ libsystemd_dep,
+ schemas_dep,
+ xkb_config_dep,
+ xkbregistry_dep,
+ iso_codes_dep,
+ udev_dep,
+ seccomp_dep,
+ m_dep,
+ rt_dep,
+]
+
+libgnome_desktop_base = library('gnome-desktop-4',
+ sources: [
+ libgnome_desktop_base_sources,
+ libgnome_desktop_base_private_sources,
+ dbus_idle_built_sources,
+ ],
+ dependencies: base_deps,
+ soversion: 0,
+ version: libversion,
+ c_args: libargs,
+ link_args: base_ldflags,
+ install: true,
+ include_directories: [
+ include_directories('.'),
+ include_directories('..'),
+ ],
+)
+
+libgnome_desktop_base_gir = gnome.generate_gir(libgnome_desktop_base,
+ sources: [libgnome_desktop_base_headers, libgnome_desktop_base_sources],
+ export_packages: 'gnome-desktop-4',
+ namespace: 'GnomeDesktop',
+ nsversion: '4.0',
+ includes: ['GObject-2.0', 'Gio-2.0', 'GDesktopEnums-3.0', 'GdkPixbuf-2.0'],
+ extra_args: ['-DGNOME_DESKTOP_USE_UNSTABLE_API', '--quiet', '--warn-all'],
+ identifier_prefix: 'Gnome',
+ symbol_prefix: 'gnome',
+ install: true,
+)
+
+pkg.generate(
+ libgnome_desktop_base,
+ requires: ['gsettings-desktop-schemas'],
+ version: meson.project_version(),
+ name: 'gnome-desktop-4',
+ filebase: 'gnome-desktop-4',
+ description: 'Utility library for GNOME desktop components',
+ subdirs: 'gnome-desktop-4.0',
+)
+
+libgnome_desktop_base_dep = declare_dependency(
+ sources: [
+ libgnome_desktop_base_gir,
+ ],
+ dependencies: base_deps,
+ link_with: libgnome_desktop_base,
+ include_directories: [
+ include_directories('.'),
+ include_directories('..'),
+ ],
+)
+
+### Legacy ###
+
introspection_sources = [
'gnome-desktop-thumbnail.c',
'gnome-bg.c',
@@ -22,29 +165,16 @@ introspection_sources = [
'gnome-wall-clock.c',
'gnome-xkb-info.c',
'gnome-idle-monitor.c',
- 'gnome-languages.c'
+ 'gnome-languages.c',
]
-dbus_xrandr_built_sources = gnome.gdbus_codegen('meta-dbus-xrandr',
- 'xrandr.xml',
- namespace: 'MetaDBus',
- interface_prefix: 'org.gnome.Mutter'
-)
-
-dbus_idle_built_sources = gnome.gdbus_codegen('meta-dbus-idle-monitor',
- 'idle-monitor.xml',
- namespace: 'MetaDBus',
- interface_prefix: 'org.gnome.Mutter',
- object_manager: true
-)
-
libgnome_desktop_sources = [
introspection_sources,
dbus_xrandr_built_sources,
dbus_idle_built_sources,
'gnome-datetime-source.c',
'gnome-desktop-thumbnail-script.c',
- 'gnome-gettext-portable.c'
+ 'gnome-gettext-portable.c',
]
libgnome_desktop_headers = [
@@ -59,7 +189,7 @@ libgnome_desktop_headers = [
'gnome-wall-clock.h',
'gnome-xkb-info.h',
'gnome-idle-monitor.h',
- 'gnome-languages.h'
+ 'gnome-languages.h',
]
install_headers(libgnome_desktop_headers,
@@ -67,7 +197,6 @@ install_headers(libgnome_desktop_headers,
)
gnome_desktop_deps = [
- config_h,
gdk_pixbuf_dep,
gtk_dep,
glib_dep,
@@ -82,25 +211,33 @@ gnome_desktop_deps = [
seccomp_dep
]
-ldflags = []
-symbol_map = '-Wl,--version-script=@0@'.format(meson.current_source_dir() / 'symbol.map')
-if cc.has_link_argument(symbol_map)
- ldflags += symbol_map
+compat_ldflags = []
+compat_symbol_map = '-Wl,--version-script=@0@'.format(meson.current_source_dir() / 'symbol.map')
+if cc.has_link_argument(compat_symbol_map)
+ compat_ldflags += compat_symbol_map
endif
libgnome_desktop = library('gnome-desktop-3',
libgnome_desktop_sources,
dependencies: [gnome_desktop_deps, m_dep, rt_dep],
- soversion: soversion,
- version: libversion,
+ soversion: compat_soversion,
+ version: compat_libversion,
c_args: libargs,
- link_args: ldflags,
- install: true
+ link_args: compat_ldflags,
+ install: true,
+ include_directories: [
+ include_directories('.'),
+ include_directories('..'),
+ ],
)
libgnome_desktop_dep = declare_dependency(
dependencies: gnome_desktop_deps,
- link_with: libgnome_desktop
+ link_with: libgnome_desktop,
+ include_directories: [
+ include_directories('.'),
+ include_directories('..'),
+ ],
)
gnome.generate_gir(libgnome_desktop,
@@ -115,7 +252,7 @@ gnome.generate_gir(libgnome_desktop,
install: true
)
-desktop_pc = pkg.generate(
+pkg.generate(
libraries: libgnome_desktop,
requires: ['gtk+-3.0', 'gsettings-desktop-schemas'],
version: meson.project_version(),
@@ -125,6 +262,7 @@ desktop_pc = pkg.generate(
subdirs: 'gnome-desktop-3.0'
)
+### Tests
test_programs = [
'gnome-rr-debug',
'test-xkb-info',
diff --git a/meson.build b/meson.build
index 4a0c450e..6152c1da 100644
--- a/meson.build
+++ b/meson.build
@@ -17,9 +17,13 @@ project('gnome-desktop', 'c',
# to 0. When bumping the second version, set the third one to zero.
#
# A lot easier than libtool, right?
-libversion = '19.1.7'
+libversion = '1.0.0'
soversion = libversion.split('.')[0]
+# Compatibility versions for libgnome-desktop-3
+compat_libversion = '19.1.7'
+compat_soversion = compat_libversion.split('.')[0]
+
gdk_pixbuf_req = '>= 2.36.5'
gtk_req = '>= 3.3.6'
glib_req = '>= 2.53.0'
@@ -79,32 +83,6 @@ if not cc.has_function('clock_gettime', dependencies: rt_dep)
rt_dep = dependency('', required: false)
endif
-conf = configuration_data()
-
-conf.set_quoted('GETTEXT_PACKAGE', '@0@-3.0'.format(meson.project_name()))
-conf.set_quoted('INSTALL_PREFIX', prefix)
-
-conf.set('ENABLE_SECCOMP', seccomp_dep.found())
-conf.set('HAVE_BWRAP', seccomp_dep.found())
-conf.set('_GNU_SOURCE', seccomp_dep.found())
-
-conf.set('HAVE_SYSTEMD', libsystemd_dep.found())
-conf.set('HAVE_UDEV', udev_dep.found())
-conf.set('HAVE_XKBREGISTRY', xkbregistry_dep.found())
-
-conf.set('HAVE_TIMERFD', cc.has_function('timerfd_create'))
-conf.set('HAVE_OPENAT', cc.has_function('openat'))
-conf.set('HAVE_USELOCALE', cc.has_function('uselocale'))
-conf.set('HAVE_XLOCALE', cc.has_header('xlocale.h'))
-
-config_h = declare_dependency(
- sources: configure_file(
- configuration: conf,
- output: 'config.h'
- ),
- include_directories: include_directories('.')
-)
-
version_array = meson.project_version().split('.')
version_conf = configuration_data()