project('upower', 'c', version: '0.99.15', license: 'GPLv2+', default_options: [ 'buildtype=debugoptimized', 'warning_level=1', 'c_std=gnu99', ], meson_version: '>= 0.49.0') soversion = 3 current = 1 revision = 0 libversion = '@0@.@1@.@2@'.format(soversion, current, revision) gnome = import('gnome') i18n = import('i18n') cc = meson.get_compiler('c') # TODO: Get rid of these by including config.h where needed add_project_arguments([ '-DGETTEXT_PACKAGE="@0@"'.format(meson.project_name()), '-DPACKAGE_VERSION="@0@"'.format(meson.project_version()), ], language: 'c') cdata = configuration_data() cdata.set_quoted('GETTEXT_PACKAGE', meson.project_name()) cdata.set_quoted('PACKAGE_VERSION', meson.project_version()) cdata.set_quoted('VERSION', meson.project_version()) cdata.set_quoted('PACKAGE_SYSCONF_DIR', get_option('sysconfdir')) glib_min_version = '2.56' glib_version_def = 'GLIB_VERSION_@0@_@1@'.format( glib_min_version.split('.')[0], glib_min_version.split('.')[1]) common_cflags = cc.get_supported_arguments([ '-DGLIB_VERSION_MIN_REQUIRED=' + glib_version_def, '-DGLIB_VERSION_MAX_ALLOWED=' + glib_version_def, ]) add_project_arguments(common_cflags, language: 'c') glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version) gobject_dep = dependency('gobject-2.0', version: '>=' + glib_min_version) gio_dep = dependency('gio-2.0', version: '>=' + glib_min_version) gio_unix_dep = dependency('gio-unix-2.0', version: '>=' + glib_min_version) m_dep = cc.find_library('m', required: true) xsltproc = find_program('xsltproc', disabler: true, required: get_option('gtk-doc') or get_option('man')) # Resolve OS backend os_backend = get_option('os_backend') if os_backend == 'auto' # Likely needs to be updated when options are added if host_machine.system() in ['linux', 'freebsd', 'openbsd'] os_backend = host_machine.system() else os_backend = 'dummy' endif endif cdata.set_quoted('BACKEND', os_backend) # Backend specific dependencies gudev_dep = dependency('', required: false) idevice_dep = dependency('', required: false) plist_dep = dependency('', required: false) gobject_introspection = dependency('gobject-introspection-1.0', required: get_option('introspection')) if os_backend == 'linux' gudev_dep = dependency('gudev-1.0', version: '>= 235') idevice_dep = dependency('libimobiledevice-1.0', version : '>= 0.9.7', required : get_option('idevice')) if idevice_dep.found() plist_dep = dependency('libplist-2.0', required: false) if not plist_dep.found() plist_dep = dependency('libplist', required: true) endif cdata.set10('HAVE_IDEVICE', true) endif endif historydir = get_option('historydir') if historydir == '' historydir = get_option('prefix') / get_option('localstatedir') / 'lib' / 'upower' endif udevrulesdir = get_option('udevrulesdir') if udevrulesdir == 'auto' udev_dep = dependency('udev', required: true) udevrulesdir = udev_dep.get_pkgconfig_variable('udev_dir') / 'rules.d' endif dbusdir = get_option('datadir') / 'dbus-1' systemdsystemunitdir = get_option('systemdsystemunitdir') if systemdsystemunitdir == '' systemd_dep = dependency('systemd') systemdsystemunitdir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir') endif # Generate configuration file config_h = configure_file(output: 'config.h', configuration: cdata) subdir('etc') subdir('rules') subdir('po') subdir('dbus') subdir('libupower-glib') subdir('src') subdir('tools') subdir('doc') pkgconfig = import('pkgconfig') pkgconfig.generate( name: 'upower-glib', description: 'UPower is a system daemon for managing power devices', version: meson.project_version(), libraries: libupower_glib, requires: [glib_dep, gobject_dep], subdirs: 'libupower-glib', ) output = [] output += 'UPower ' + meson.project_version() output += 'System Paths' output += ' prefix: ' + get_option('prefix') output += ' libdir: ' + get_option('libdir') output += ' libexecdir: ' + get_option('prefix') / get_option('libexecdir') output += ' bindir: ' + get_option('prefix') / get_option('bindir') output += ' sbindir: ' + get_option('prefix') / get_option('datadir') output += ' datadir: ' + get_option('prefix') / get_option('sbindir') output += ' sysconfdir: ' + get_option('sysconfdir') output += ' localstatedir: ' + get_option('prefix') / get_option('localstatedir') output += ' historydir: ' + historydir output += '\nFeatures' output += ' Backend: ' + os_backend output += ' libimobiledevice support: ' + idevice_dep.found().to_string() output += ' Building api docs: ' + get_option('gtk-doc').to_string() output += ' Building man pages: ' + get_option('man').to_string() message('\n'+'\n'.join(output)+'\n')