Blame meson.build

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