123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 |
- project(
- 'gnome-settings-daemon', 'c',
- version: '3.28.1',
- license: [ 'GPL2+', 'LGPLv2+' ],
- meson_version: '>= 0.44.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)
- 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'
- ]
- 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')
- colord_dep = dependency('colord', version: '>= 1.0.2')
- 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.11.1')
- gsettings_desktop_dep = dependency('gsettings-desktop-schemas', version: '>= 3.23.3')
- 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.103')
- upower_glib_dep = dependency('upower-glib', version: '>= 0.99.0')
- x11_dep = dependency('x11')
- xtst_dep = dependency('xtst')
- 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
- assert(enable_gudev, 'GUdev is not optional on Linux platforms')
- gudev_dep = dependency('gudev-1.0')
- endif
- config_h.set('HAVE_GUDEV', enable_gudev)
- # Check for libwayland-client
- enable_wayland = get_option('wayland')
- if enable_wayland
- assert(enable_gudev, 'GUDev support is required for wayland support.')
- wayland_client_dep = dependency('wayland-client')
- endif
- config_h.set('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.set('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
- # 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')
- udev_dir = get_option('udev_dir')
- if udev_dir == ''
- udev_dir = dependency('udev').get_pkgconfig_variable('udevdir')
- endif
- 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.set('HAVE_NETWORK_MANAGER', enable_network_manager)
- gnome = import('gnome')
- i18n = import('i18n')
- pkg = import('pkgconfig')
- po_dir = join_paths(meson.source_root(), 'po')
- top_inc = include_directories('.')
- subdir('tests')
- 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 += ' 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_rfkill
- output += ' udev dir: ' + udev_dir + '\n'
- endif
- message(output)
|