1
0
Fork 0
gnome-settings-daemon/meson.build
Daniel Baumann 18b565039d
Adding upstream version 48.1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-22 20:20:27 +02:00

301 lines
10 KiB
Meson

project(
'gnome-settings-daemon', 'c',
version: '48.1',
license: [ 'GPL2+', 'LGPLv2+' ],
meson_version: '>= 0.57.0'
)
# Make sure the version always has a trailing N.0 so that
# it can be sorted properly when comparing to N.alpha and so on.
#
# See https://gitlab.gnome.org/GNOME/gsettings-desktop-schemas/-/issues/66
assert(meson.project_version().split('.').length() > 1)
gsd_version = meson.project_version()
version_array = gsd_version.split('.')
gsd_major_version = version_array[0].to_int()
gsd_api_name = '@0@-@1@'.format(meson.project_name(), gsd_major_version)
glib_min_version = '2.70'
glib_version_def = 'GLIB_VERSION_@0@_@1@'.format(
glib_min_version.split('.')[0], glib_min_version.split('.')[1])
gsd_prefix = get_option('prefix')
gsd_bindir = join_paths(gsd_prefix, get_option('bindir'))
gsd_datadir = join_paths(gsd_prefix, get_option('datadir'))
gsd_includedir = join_paths(gsd_prefix, get_option('includedir'))
gsd_libdir = join_paths(gsd_prefix, get_option('libdir'))
gsd_libexecdir = join_paths(gsd_prefix, get_option('libexecdir'))
gsd_localedir = join_paths(gsd_prefix, get_option('localedir'))
gsd_sysconfdir = join_paths(gsd_prefix, get_option('sysconfdir'))
gsd_pkgdatadir = join_paths(gsd_datadir, meson.project_name())
gsd_pkgincludedir = join_paths(gsd_includedir, gsd_api_name)
gsd_pkglibdir = join_paths(gsd_libdir, gsd_api_name)
gsd_schemadir = join_paths(gsd_datadir, 'glib-2.0', 'schemas')
gsd_xdg_autostart = join_paths(gsd_sysconfdir, 'xdg', 'autostart')
gsd_3_0_api_name = '@0@-@1@'.format(meson.project_name(), '3.0')
gsd_gtk_modules_directory = join_paths(gsd_libdir, gsd_3_0_api_name, 'gtk-modules')
gsd_buildtype = get_option('buildtype')
host_is_darwin = host_machine.system().contains('darwin')
host_is_linux = host_machine.system().contains('linux')
host_is_linux_not_s390 = host_is_linux and not host_machine.cpu().contains('s390')
cc = meson.get_compiler('c')
config_h = configuration_data()
# defines
set_defines = [
['PACKAGE_NAME', meson.project_name()],
['PACKAGE_VERSION', gsd_version],
# i18n
['GETTEXT_PACKAGE', meson.project_name()]
]
foreach define: set_defines
config_h.set_quoted(define[0], define[1])
endforeach
# compiler flags
common_flags = ['-DHAVE_CONFIG_H']
compiler_flags = []
if gsd_buildtype.contains('debug')
common_flags += ['-DG_ENABLE_DEBUG']
test_cflags = [
'-Wcast-align',
'-Wmissing-declarations',
'-Wmissing-prototypes',
'-Wnested-externs',
'-Wno-strict-aliasing',
'-Wno-sign-compare',
'-Wpointer-arith',
'-DGLIB_VERSION_MIN_REQUIRED=' + glib_version_def,
'-DGLIB_VERSION_MAX_ALLOWED=' + glib_version_def,
]
compiler_flags = cc.get_supported_arguments(test_cflags)
elif gsd_buildtype.contains('release')
common_flags += ['-DG_DISABLE_CAST_CHECKS']
endif
if get_option('b_ndebug') == 'true'
common_flags += ['-DG_DISABLE_ASSERT']
endif
add_project_arguments(common_flags + compiler_flags, language: 'c')
glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version)
geocode_glib_dep = dependency('geocode-glib-2.0', version: '>= 3.26.3', required: false)
if not geocode_glib_dep.found()
geocode_glib_dep = dependency('geocode-glib-1.0', version: '>= 3.10.0')
endif
gio_dep = dependency('gio-2.0', version: '>= 2.53.0')
gio_unix_dep = dependency('gio-unix-2.0')
gnome_desktop_dep = dependency('gnome-desktop-3.0', version: '>= 3.37.1')
gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 46.beta')
gtk_dep = dependency('gtk+-3.0', version: '>= 3.15.3')
gtk_x11_dep = dependency('gtk+-x11-3.0')
gweather_dep = dependency('gweather4')
libcanberra_gtk_dep = dependency('libcanberra-gtk3')
libgeoclue_dep = dependency('libgeoclue-2.0', version: '>= 2.3.1')
libnotify_dep = dependency('libnotify', version: '>= 0.7.3')
libpulse_mainloop_glib_dep = dependency('libpulse-mainloop-glib', version: '>= 2.0')
pango_dep = dependency('pango', version: '>= 1.20.0')
polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.114')
upower_glib_dep = dependency('upower-glib', version: '>= 0.99.12')
x11_dep = dependency('x11')
xfixes_dep = dependency('xfixes', version: '>= 6.0')
enable_systemd = get_option('systemd')
enable_elogind = get_option('elogind')
if enable_systemd and enable_elogind
error('Only systemd or elogind support should be activated')
elif enable_systemd
systemd_dep = dependency('systemd', version: '>= 243', required: true)
libsystemd_dep = dependency('libsystemd', version: '>= 243', required: true)
systemd_userunitdir = systemd_dep.get_variable(pkgconfig: 'systemduserunitdir',
pkgconfig_define: ['prefix', gsd_prefix])
elif enable_elogind
elogind_dep = dependency('libelogind', version: '>= 209', required: true)
endif
config_h.set10('HAVE_SYSTEMD_LIB', enable_systemd or enable_elogind)
m_dep = cc.find_library('m')
# ALSA integration (default enabled)
enable_alsa = get_option('alsa')
assert(enable_alsa or not host_is_linux, 'ALSA is not optional on Linux platforms')
libgvc = subproject(
'gvc',
default_options: [
'static=true',
'alsa=' + enable_alsa.to_string()
]
)
libgvc_dep = libgvc.get_variable('libgvc_dep')
# GUdev integration (default enabled)
enable_gudev = get_option('gudev')
if enable_gudev
gudev_dep = dependency('gudev-1.0')
endif
config_h.set10('HAVE_GUDEV', enable_gudev)
if host_is_linux
assert(enable_gudev, 'GUdev is not optional on Linux platforms')
endif
has_timerfd_create = cc.has_function('timerfd_create')
config_h.set10('HAVE_TIMERFD', has_timerfd_create)
# Check for wayland dependencies
enable_wayland = get_option('wayland')
if enable_wayland
assert(enable_gudev, 'GUDev support is required for wayland support.')
wayland_client_dep = dependency('wayland-client')
wayland_gdk_dep = dependency('gdk-wayland-3.0')
endif
config_h.set10('HAVE_WAYLAND', enable_wayland)
# wacom (disabled for s390/s390x and non Linux platforms)
enable_wacom = host_is_linux_not_s390
if enable_wacom
assert(enable_gudev, 'GUDev support is required for wacom support.')
libwacom_dep = dependency('libwacom', version: '>= 0.7')
endif
config_h.set10('HAVE_WACOM', enable_wacom)
# smartcard section
enable_smartcard = get_option('smartcard')
if enable_smartcard
if get_option('gcr3')
smartcard_deps = dependency('gck-1', version: '>= 3.36')
else
smartcard_deps = dependency('gck-2')
endif
endif
enable_usb_protection = get_option('usb-protection')
# CUPS
enable_cups = get_option('cups')
if enable_cups
cups_dep = dependency('cups', version : '>= 1.4', required: false)
assert(cups_dep.found(), 'CUPS 1.4 or newer not found')
# FIXME: 1.6 cflags generate a lot of errors
'''
cups_cflags = []
if cups_dep.version().version_compare('>= 1.6')
cups_cflags += '-D_PPD_DEPRECATED=""'
endif
cups_dep = declare_dependency(
dependencies: cups_dep,
compile_args: cups_cflags
)
'''
endif
# Rfkill
enable_rfkill = get_option('rfkill')
assert(enable_rfkill or not host_is_linux, 'rfkill is not optional on Linux platforms')
if enable_rfkill
assert(cc.has_header('linux/rfkill.h'), 'rfkill support requested but RFKill headers not found')
assert(enable_gudev, 'GUdev is required for rfkill support')
udev_dir = get_option('udev_dir')
if udev_dir == ''
udev_dir = dependency('udev').get_variable(pkgconfig: 'udevdir')
endif
endif
# wwan
enable_wwan = get_option('wwan')
if enable_wwan
if get_option('gcr3')
gcr_dep = dependency('gcr-base-3', version: '>= 3.7.5')
config_h.set10('HAVE_GCR3', 1)
else
gcr_dep = dependency('gcr-4', version: '>= 3.90.0')
endif
mm_glib_dep = dependency('mm-glib', version: '>= 1.18')
endif
# Sharing plugin
enable_network_manager = get_option('network_manager')
assert(enable_network_manager or not host_is_linux, 'NetworkManager support is not optional on Linux platforms')
if enable_network_manager
# network manager
libnm_dep = dependency('libnm', version: '>= 1.0')
endif
config_h.set10('HAVE_NETWORK_MANAGER', enable_network_manager)
# colord
enable_colord = get_option('colord')
if enable_colord
colord_dep = dependency('colord', version: '>= 1.4.5')
endif
gnome = import('gnome')
i18n = import('i18n')
pkg = import('pkgconfig')
po_dir = join_paths(meson.project_source_root(), 'po')
top_inc = include_directories('.')
subdir('gnome-settings-daemon')
subdir('data')
subdir('plugins')
subdir('po')
configure_file(
output: 'config.h',
configuration: config_h
)
gnome.post_install(
glib_compile_schemas: true,
)
output = '\n ' + meson.project_name() + ' ' + meson.project_version() +'\n'
output += ' =============================\n\n'
output += ' prefix: ' + gsd_prefix + '\n'
output += ' exec_prefix: ' + gsd_prefix + '\n'
output += ' libdir: ' + gsd_libdir + '\n'
output += ' libexecdir: ' + gsd_libexecdir + '\n'
output += ' bindir: ' + gsd_bindir + '\n'
output += ' sysconfdir: ' + gsd_sysconfdir + '\n'
output += ' datadir: ' + gsd_datadir + '\n\n'
output += ' gtk modules dir: ' + gsd_gtk_modules_directory + '\n\n'
output += ' source code location: ' + meson.project_source_root() + '\n'
output += ' compiler: ' + cc.get_id() + '\n'
output += ' cflags: ' + ' '.join(compiler_flags) + '\n\n'
output += ' ALSA support: ' + enable_alsa.to_string() + '\n'
output += ' NetworkManager support: ' + enable_network_manager.to_string() + '\n'
output += ' Smartcard support: ' + enable_smartcard.to_string() + '\n'
output += ' USB Protection support: ' + enable_usb_protection.to_string() + '\n'
output += ' Cups support: ' + enable_cups.to_string() + '\n'
output += ' Wayland support: ' + enable_wayland.to_string() + '\n'
output += ' Wacom support: ' + enable_wacom.to_string() + '\n'
output += ' RFKill support: ' + enable_rfkill.to_string() + '\n'
if enable_systemd
output += ' Systemd user unit dir: ' + systemd_userunitdir + '\n'
endif
if enable_rfkill
output += ' udev dir: ' + udev_dir + '\n'
endif
message(output)