summaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2021-08-30 13:11:42 +0200
committerBastien Nocera <hadess@hadess.net>2021-09-02 17:47:30 +0200
commitf2e702d4dc22a04e6b660c63e77c93f269fb3818 (patch)
tree94bf38696e2342c163ecf629fb68808cee483011 /meson.build
parent46ed29945125c241fe9a103e8b4f565472d453ef (diff)
downloadupower-f2e702d4dc22a04e6b660c63e77c93f269fb3818.tar.gz
build: Support building upower with meson
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build143
1 files changed, 143 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..122de7c
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,143 @@
+project('upower', 'c',
+ version: '0.99.13',
+ 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)
+
+xsltproc = find_program('xsltproc', 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)
+ endif
+ 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')
+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')