summaryrefslogtreecommitdiffstats
path: root/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build228
1 files changed, 228 insertions, 0 deletions
diff --git a/meson.build b/meson.build
new file mode 100644
index 0000000..ef5132c
--- /dev/null
+++ b/meson.build
@@ -0,0 +1,228 @@
+project(
+ 'gnome-session', 'c',
+ version: '3.38.0',
+ license: 'GPL2+',
+ default_options: 'buildtype=debugoptimized',
+ meson_version: '>= 0.53.0'
+)
+
+prefix = get_option('prefix')
+session_version = meson.project_version()
+version_array = session_version.split('.')
+session_major_version = version_array[0].to_int()
+session_minor_version = version_array[1].to_int()
+session_micro_version = version_array[2].to_int()
+
+session_api_version = '@0@.0'.format(session_major_version)
+session_api_name = '@0@-@1@'.format(meson.project_name(), session_api_version)
+
+session_prefix = get_option('prefix')
+session_bindir = join_paths(session_prefix, get_option('bindir'))
+session_datadir = join_paths(session_prefix, get_option('datadir'))
+session_libdir = join_paths(session_prefix, get_option('libdir'))
+session_libexecdir = join_paths(session_prefix, get_option('libexecdir'))
+session_localedir = join_paths(session_prefix, get_option('localedir'))
+session_localstatedir = join_paths(session_prefix, get_option('localstatedir'))
+session_mandir = join_paths(session_prefix, get_option('mandir'))
+session_sbindir = join_paths(session_prefix, get_option('sbindir'))
+session_sysconfdir = join_paths(session_prefix, get_option('sysconfdir'))
+
+session_pkgdatadir = join_paths(session_datadir, meson.project_name())
+
+session_debug = get_option('buildtype').contains('debug')
+
+cc = meson.get_compiler('c')
+
+config_h = configuration_data()
+
+# defines
+set_defines = [
+ # package
+ ['PACKAGE', meson.project_name()],
+ ['PACKAGE_VERSION', session_version],
+ ['VERSION', session_version],
+ # i18n
+ ['GETTEXT_PACKAGE', session_api_name]
+]
+
+foreach define: set_defines
+ config_h.set_quoted(define[0], define[1])
+endforeach
+
+# compiler flags
+common_flags = ['-DHAVE_CONFIG_H']
+
+enable_deprecation_flags = get_option('deprecation_flags')
+if enable_deprecation_flags
+ common_flags += [
+ '-DBONOBO_DISABLE_DEPRECATED',
+ '-DBONOBO_DISABLE_SINGLE_INCLUDES',
+ '-DBONOBO_UI_DISABLE_DEPRECATED',
+ '-DBONOBO_UI_DISABLE_SINGLE_INCLUDES',
+ '-DGNOME_DISABLE_DEPRECATED',
+ '-DGNOME_DISABLE_SINGLE_INCLUDES',
+ '-DLIBGLADE_DISABLE_DEPRECATED',
+ '-DLIBGLADE_DISABLE_SINGLE_INCLUDES',
+ '-DGNOME_VFS_DISABLE_DEPRECATED',
+ '-DGNOME_VFS_DISABLE_SINGLE_INCLUDES',
+ '-DWNCK_DISABLE_DEPRECATED',
+ '-DWNCK_DISABLE_SINGLE_INCLUDES',
+ '-DLIBSOUP_DISABLE_DEPRECATED',
+ '-DLIBSOUP_DISABLE_SINGLE_INCLUDES'
+ ]
+endif
+
+compiler_flags = []
+if session_debug
+ test_cflags = [
+ '-Werror=format=2',
+ '-Werror=implicit-function-declaration',
+ '-Werror=init-self',
+ '-Werror=missing-include-dirs',
+ '-Werror=missing-prototypes',
+ '-Werror=pointer-arith',
+ '-Werror=return-type',
+ '-Wnested-externs',
+ '-Wstrict-prototypes'
+ ]
+
+ compiler_flags += cc.get_supported_arguments(test_cflags)
+endif
+
+add_project_arguments(common_flags + compiler_flags, language: 'c')
+
+glib_req_version = '>= 2.46.0'
+
+gio_dep = dependency('gio-2.0', version: glib_req_version)
+glib_dep = dependency('glib-2.0', version: glib_req_version)
+gtk_dep = dependency('gtk+-3.0', version: '>= 3.22.0')
+xtrans_dep = dependency('xtrans')
+ice_dep = dependency('ice')
+sm_dep = dependency('sm')
+x11_dep = dependency('x11')
+
+session_deps = [
+ gio_dep,
+ glib_dep,
+ dependency('gnome-desktop-3.0', version: '>= 3.34.2'),
+ dependency('json-glib-1.0', version: '>= 0.10')
+]
+
+session_bin_deps = session_deps + [
+ xtrans_dep,
+ ice_dep,
+ sm_dep
+]
+
+# Check for session selector GTK+ UI
+enable_session_selector = get_option('session_selector')
+
+# Check for session tracking backend
+session_tracking = 'null backend'
+
+enable_systemd = get_option('systemd')
+enable_systemd_session = get_option('systemd_session') != 'disable'
+use_systemd_session = get_option('systemd_session') == 'default'
+enable_systemd_journal = get_option('systemd_journal')
+enable_consolekit = get_option('consolekit')
+if enable_systemd or enable_consolekit
+ session_bin_deps += dependency('gio-unix-2.0', version: glib_req_version)
+
+ # Check for systemd
+ if enable_systemd
+ systemd_dep = dependency('systemd', version: '>= 242', required: true)
+ systemd_userunitdir = systemd_dep.get_pkgconfig_variable('systemduserunitdir',
+ define_variable: ['prefix', prefix])
+
+ libsystemd_dep = dependency('libsystemd', version: '>= 209', required: false)
+ session_bin_deps += libsystemd_dep
+
+ if not libsystemd_dep.found()
+ libsystemd_login_dep = dependency('libsystemd-login', version: '>= 183', required: false)
+ libsystemd_daemon_dep = dependency('libsystemd-daemon', required: false)
+ libsystemd_journal_dep = dependency('libsystemd-journal', required: false)
+ assert(libsystemd_login_dep.found() and libsystemd_daemon_dep.found() and libsystemd_journal_dep.found(),
+ 'Systemd support explicitly required, but systemd not found')
+
+ session_bin_deps += [
+ libsystemd_login_dep,
+ libsystemd_daemon_dep,
+ libsystemd_journal_dep
+ ]
+ endif
+
+ session_tracking = 'systemd'
+ endif
+
+ # Check for ConsoleKit
+ if enable_consolekit
+ dbus_glib_dep = dependency('dbus-glib-1', version: '>= 0.76')
+ assert(dbus_glib_dep.found(), 'ConsoleKit support explicitly required, but dbus-glib not found')
+
+ session_bin_deps += dbus_glib_dep
+
+ if enable_systemd
+ session_tracking += ' (with fallback to ConsoleKit)'
+ else
+ session_tracking = 'ConsoleKit'
+ endif
+ endif
+endif
+if enable_systemd_session
+ assert(enable_systemd, 'Systemd support must be enabled when using systemd session management')
+endif
+config_h.set('HAVE_SYSTEMD', enable_systemd)
+config_h.set('ENABLE_SYSTEMD_SESSION', enable_systemd_session)
+config_h.set('ENABLE_SYSTEMD_JOURNAL', enable_systemd_journal)
+config_h.set('HAVE_CONSOLEKIT', enable_consolekit)
+config_h.set10('USE_SYSTEMD_SESSION', use_systemd_session)
+
+configure_file(
+ output: 'config.h',
+ configuration: config_h
+)
+
+gnome = import('gnome')
+i18n = import('i18n')
+pkg = import('pkgconfig')
+
+po_dir = join_paths(meson.source_root(), 'po')
+
+top_inc = include_directories('.')
+
+subdir('gnome-session')
+subdir('tools')
+subdir('data')
+
+enable_docbook = get_option('docbook')
+enable_man = get_option('man')
+if enable_docbook or enable_man
+ subdir('doc')
+endif
+
+subdir('po')
+
+meson.add_install_script(
+ 'meson_post_install.py',
+ session_datadir
+)
+
+output = '\n gnome-session ' + session_version + '\n'
+output += ' ====================\n\n'
+output += ' prefix: ' + session_prefix + '\n'
+output += ' exec_prefix: ' + session_libexecdir + '\n'
+output += ' libdir: ' + session_libdir + '\n'
+output += ' bindir: ' + session_bindir + '\n'
+output += ' sbindir: ' + session_sbindir + '\n'
+output += ' sysconfdir: ' + session_sysconfdir + '\n'
+output += ' localstatedir: ' + session_localstatedir + '\n'
+output += ' datadir: ' + session_datadir + '\n'
+output += ' source code location: ' + meson.source_root() + '\n'
+output += ' compiler: ' + cc.get_id() + '\n'
+output += ' cflags: ' + ' '.join(compiler_flags) + '\n'
+output += ' Debug mode: ' + session_debug.to_string() + '\n'
+output += ' Use *_DISABLE_DEPRECATED: ' + enable_deprecation_flags.to_string() + '\n\n'
+output += ' Session tracking: ' + session_tracking + ' \n'
+output += ' Build Docbook: ' + enable_docbook.to_string() + '\n'
+output += ' Build manpages: ' + enable_man.to_string()
+message(output)