project( 'gnome-settings-daemon', 'c', version: '3.38.2', license: [ 'GPL2+', 'LGPLv2+' ], meson_version: '>= 0.47.0' ) gsd_version = meson.project_version() version_array = gsd_version.split('.') gsd_major_version = version_array[0].to_int() gsd_api_version_minor = 0 gsd_api_version = '@0@.@1@'.format(gsd_major_version, gsd_api_version_minor) gsd_api_name = '@0@-@1@'.format(meson.project_name(), gsd_api_version) glib_min_version = '2.56' 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_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 # Workaround for meson's bug # https://github.com/mesonbuild/meson/pull/1896 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-1.0', version: '>= 3.10.0') 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.34.2') gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 3.35.91') gtk_dep = dependency('gtk+-3.0', version: '>= 3.15.3') gtk_x11_dep = dependency('gtk+-x11-3.0') gweather_dep = dependency('gweather-3.0', version: '>= 3.9.5') lcms_dep = dependency('lcms2', version: '>= 2.2') 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.8') x11_dep = dependency('x11') enable_systemd = get_option('systemd') if enable_systemd systemd_dep = dependency('systemd', version: '>= 243', required: false) assert(systemd_dep.found(), 'Systemd support explicitly required, but systemd not found') systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir', define_variable: ['prefix', gsd_prefix]) endif 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 nss_dep = dependency('nss', version: '>= 3.11.2') system_nssdb_dir = get_option('nssdb_dir') if system_nssdb_dir == '' system_nssdb_dir = join_paths(gsd_sysconfdir, 'pki', 'nssdb') 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_pkgconfig_variable('udevdir') endif endif # wwan enable_wwan = get_option('wwan') if enable_wwan gcr_base_dep = dependency('gcr-base-3', version: '>= 3.7.5') mm_glib_dep = dependency('mm-glib', version: '>= 1.0') 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.3.5') endif gnome = import('gnome') i18n = import('i18n') pkg = import('pkgconfig') po_dir = join_paths(meson.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 ) meson.add_install_script( 'meson_post_install.py', gsd_datadir ) 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 += ' source code location: ' + meson.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_smartcard output += ' System nssdb: ' + system_nssdb_dir + '\n' endif if enable_systemd output += ' Systemd user unit dir: ' + systemd_userunitdir + '\n' endif if enable_rfkill output += ' udev dir: ' + udev_dir + '\n' endif message(output)