diff options
Diffstat (limited to 'meson.build')
-rw-r--r-- | meson.build | 228 |
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) |