Blame meson.build

Packit Service 8ebd8e
project('fprintd', 'c',
Packit Service 8ebd8e
    version: '1.90.8',
Packit Service 8ebd8e
    license: 'GPLv2+',
Packit Service 8ebd8e
    default_options: [
Packit Service 8ebd8e
        'buildtype=debugoptimized',
Packit Service 8ebd8e
        'warning_level=3',
Packit Service 8ebd8e
        'c_std=gnu99',
Packit Service 8ebd8e
    ],
Packit Service 8ebd8e
    meson_version: '>= 0.50.0')
Packit Service 8ebd8e
Packit Service 8ebd8e
gnome = import('gnome')
Packit Service 8ebd8e
i18n = import('i18n')
Packit Service 8ebd8e
Packit Service 8ebd8e
cc = meson.get_compiler('c')
Packit Service 8ebd8e
common_cflags = cc.get_supported_arguments([
Packit Service 8ebd8e
    '-fno-strict-aliasing',
Packit Service 8ebd8e
    '-Wcast-align',
Packit Service 8ebd8e
    '-Werror=address',
Packit Service 8ebd8e
    '-Werror=array-bounds',
Packit Service 8ebd8e
    '-Werror=empty-body',
Packit Service 8ebd8e
    '-Werror=implicit',
Packit Service 8ebd8e
    '-Werror=init-self',
Packit Service 8ebd8e
    '-Werror=int-to-pointer-cast',
Packit Service 8ebd8e
    '-Werror=main',
Packit Service 8ebd8e
    '-Werror=missing-braces',
Packit Service 8ebd8e
    '-Werror=nonnull',
Packit Service 8ebd8e
    '-Werror=pointer-to-int-cast',
Packit Service 8ebd8e
    '-Werror=redundant-decls',
Packit Service 8ebd8e
    '-Werror=return-type',
Packit Service 8ebd8e
    '-Werror=sequence-point',
Packit Service 8ebd8e
    '-Werror=trigraphs',
Packit Service 8ebd8e
    '-Werror=write-strings',
Packit Service 8ebd8e
    '-Wformat-nonliteral',
Packit Service 8ebd8e
    '-Wformat-security',
Packit Service 8ebd8e
    '-Wformat=2',
Packit Service 8ebd8e
    '-Wignored-qualifiers',
Packit Service 8ebd8e
    '-Wimplicit-function-declaration',
Packit Service 8ebd8e
    '-Wlogical-op',
Packit Service 8ebd8e
    '-Wmissing-declarations',
Packit Service 8ebd8e
    '-Wmissing-format-attribute',
Packit Service 8ebd8e
    '-Wmissing-include-dirs',
Packit Service 8ebd8e
    '-Wmissing-noreturn',
Packit Service 8ebd8e
    '-Wmissing-prototypes',
Packit Service 8ebd8e
    '-Wnested-externs',
Packit Service 8ebd8e
    '-Wold-style-definition',
Packit Service 8ebd8e
    '-Wpointer-arith',
Packit Service 8ebd8e
    '-Wshadow',
Packit Service 8ebd8e
    '-Wstrict-prototypes',
Packit Service 8ebd8e
    '-Wtype-limits',
Packit Service 8ebd8e
    '-Wundef',
Packit Service 8ebd8e
    '-Wunused',
Packit Service 8ebd8e
])
Packit Service 8ebd8e
add_project_arguments(common_cflags, language: 'c')
Packit Service 8ebd8e
Packit Service 8ebd8e
common_cflags = cc.get_supported_arguments([
Packit Service 8ebd8e
    # The stub passes a lot of params that we do not use, maybe a good idea to
Packit Service 8ebd8e
    # mark it appropriately, but this works well for now.
Packit Service 8ebd8e
    '-Wno-unused-parameter',
Packit Service 8ebd8e
    # We use g_signal_handlers_disconnect_* which is not compatible with -Wpedantic
Packit Service 8ebd8e
    '-Wno-pedantic',
Packit Service 8ebd8e
])
Packit Service 8ebd8e
add_project_arguments(common_cflags, language: 'c')
Packit Service 8ebd8e
Packit Service 8ebd8e
host_system = host_machine.system()
Packit Service 8ebd8e
# NOTE: Bump gdbus-codegen min version once we can depend on 2.64!
Packit Service 8ebd8e
glib_min_version = '2.56'
Packit Service 8ebd8e
libfprint_min_version = '1.90.1'
Packit Service 8ebd8e
Packit Service 8ebd8e
fprintd_installdir = get_option('prefix') / get_option('libexecdir')
Packit Service 8ebd8e
fprintd_plugindir = get_option('prefix') / get_option('libdir') / meson.project_name() / 'modules'
Packit Service 8ebd8e
storage_path = get_option('prefix') / get_option('localstatedir') / 'lib/fprint'
Packit Service 8ebd8e
localedir = get_option('prefix') / get_option('localedir')
Packit Service 8ebd8e
datadir = get_option('prefix') / get_option('datadir')
Packit Service 8ebd8e
sysconfdir = get_option('sysconfdir')
Packit Service 8ebd8e
if get_option('prefix') != '/usr'
Packit Service 8ebd8e
    sysconfdir = get_option('prefix') / sysconfdir
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
Packit Service 8ebd8e
# Dependencies
Packit Service 8ebd8e
glib_dep = dependency('glib-2.0', version: '>=' + glib_min_version)
Packit Service 8ebd8e
gio_dep = dependency('gio-2.0', version: '>=' + glib_min_version)
Packit Service 8ebd8e
gio_unix_dep = dependency('gio-unix-2.0', version: '>=' + glib_min_version)
Packit Service 8ebd8e
gmodule_dep = dependency('gmodule-2.0', version: '>=' + glib_min_version)
Packit Service 8ebd8e
libfprint_dep = dependency('libfprint-2', version: '>=' + libfprint_min_version)
Packit Service 8ebd8e
polkit_gobject_dep = dependency('polkit-gobject-1', version: '>= 0.91')
Packit Service 8ebd8e
dbus_dep = dependency('dbus-1', required: false)
Packit Service 8ebd8e
libsystemd_dep = dependency('libsystemd', required: get_option('pam'))
Packit Service 8ebd8e
pam_dep = cc.find_library('pam',
Packit Service 8ebd8e
    required: get_option('pam'),
Packit Service 8ebd8e
    has_headers: 'security/pam_modules.h',
Packit Service 8ebd8e
)
Packit Service 8ebd8e
Packit Service 8ebd8e
pod2man = find_program('pod2man', required: get_option('man'))
Packit Service 8ebd8e
xsltproc = find_program('xsltproc', required: get_option('gtk_doc'))
Packit Service 8ebd8e
Packit Service 8ebd8e
# StateDirectory was introduced in systemd 235
Packit Service 8ebd8e
systemd_dep = dependency('systemd', version: '>= 235', required: false)
Packit Service 8ebd8e
systemd_unit_dir = get_option('systemd_system_unit_dir')
Packit Service 8ebd8e
Packit Service 8ebd8e
if systemd_unit_dir == '' and systemd_dep.found()
Packit Service 8ebd8e
    systemd_unit_dir = systemd_dep.get_pkgconfig_variable('systemdsystemunitdir')
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
Packit Service 8ebd8e
if get_option('systemd') and systemd_unit_dir == ''
Packit Service 8ebd8e
    error('systemd development files or systemd_system_unit_dir is needed for systemd support.')
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
Packit Service 8ebd8e
dbus_service_dir = get_option('dbus_service_dir')
Packit Service 8ebd8e
dbus_data_dir = datadir
Packit Service 8ebd8e
dbus_interfaces_dir = ''
Packit Service 8ebd8e
Packit Service 8ebd8e
if dbus_dep.found()
Packit Service 8ebd8e
    if dbus_service_dir == ''
Packit Service 8ebd8e
        dbus_service_dir = dbus_dep.get_pkgconfig_variable('system_bus_services_dir')
Packit Service 8ebd8e
    endif
Packit Service 8ebd8e
    dbus_interfaces_dir = dbus_dep.get_pkgconfig_variable('interfaces_dir')
Packit Service 8ebd8e
    dbus_data_dir = dbus_dep.get_pkgconfig_variable('datadir')
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
Packit Service 8ebd8e
dbus_conf_dir = dbus_data_dir / 'dbus-1/system.d'
Packit Service 8ebd8e
Packit Service 8ebd8e
if dbus_service_dir == ''
Packit Service 8ebd8e
    dbus_service_dir = datadir / 'dbus-1/system-services'
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
if dbus_interfaces_dir == ''
Packit Service 8ebd8e
    dbus_interfaces_dir = datadir / 'dbus-1/interfaces'
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
Packit Service 8ebd8e
polkit_policy_directory = polkit_gobject_dep.get_pkgconfig_variable('policydir')
Packit Service 8ebd8e
Packit Service 8ebd8e
# Tests dependencies
Packit Service 8ebd8e
pam_wrapper_dep = dependency('pam_wrapper', required: get_option('pam'))
Packit Service 8ebd8e
Packit Service 8ebd8e
xmllint = find_program('xmllint', required: false)
Packit Service 8ebd8e
python3 = find_program('python3') # No meson without it!
Packit Service 8ebd8e
python3_test_modules = {
Packit Service 8ebd8e
    'cairo': true,
Packit Service 8ebd8e
    'dbus': true,
Packit Service 8ebd8e
    'dbusmock': true,
Packit Service 8ebd8e
    'gi': true,
Packit Service 8ebd8e
    'gi.repository.FPrint': true,
Packit Service 8ebd8e
    'pypamtest': get_option('pam'),
Packit Service 8ebd8e
}
Packit Service 8ebd8e
python3_available_modules = []
Packit Service 8ebd8e
Packit Service 8ebd8e
foreach module, required : python3_test_modules
Packit Service 8ebd8e
    if required and run_command(python3, '-c', 'import @0@'.format(module)).returncode() != 0
Packit Service 8dddb5
        error('Python3 module \'' + module + '\' required by test suite not found')
Packit Service 8ebd8e
    endif
Packit Service 8ebd8e
endforeach
Packit Service 8ebd8e
Packit Service 8ebd8e
cdata = configuration_data()
Packit Service 8ebd8e
cdata.set_quoted('GETTEXT_PACKAGE', meson.project_name())
Packit Service 8ebd8e
cdata.set_quoted('PACKAGE_VERSION', meson.project_version())
Packit Service 8ebd8e
cdata.set_quoted('VERSION', meson.project_version())
Packit Service 8ebd8e
cdata.set_quoted('SYSCONFDIR', sysconfdir)
Packit Service 8ebd8e
cdata.set('POLKIT_HAS_AUTOPOINTERS', polkit_gobject_dep.version().version_compare('>= 0.114'))
Packit Service 8ebd8e
Packit Service 8ebd8e
config_h = configure_file(
Packit Service 8ebd8e
  input: 'config.h.in',
Packit Service 8ebd8e
  output: 'config.h',
Packit Service 8ebd8e
  configuration: cdata
Packit Service 8ebd8e
)
Packit Service 8ebd8e
Packit Service 8ebd8e
subdir('src')
Packit Service 8ebd8e
subdir('data')
Packit Service 8ebd8e
subdir('utils')
Packit Service 8ebd8e
if get_option('pam')
Packit Service 8ebd8e
    subdir('pam')
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
if get_option('gtk_doc')
Packit Service 8ebd8e
    subdir('doc')
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
subdir('tests')
Packit Service 8ebd8e
subdir('po')
Packit Service 8ebd8e
Packit Service 8ebd8e
output = []
Packit Service 8ebd8e
output += 'System paths:'
Packit Service 8ebd8e
output += '  prefix: ' + get_option('prefix')
Packit Service 8ebd8e
output += '  fprintd daemon directory: ' + fprintd_installdir
Packit Service 8ebd8e
output += '  fprintd modules directory: ' + fprintd_plugindir
Packit Service 8ebd8e
output += '  fprintd prints storage directory: ' + storage_path
Packit Service 8ebd8e
output += '  DBus configuration directory: ' + dbus_conf_dir
Packit Service 8ebd8e
output += '  DBus service directory: ' + dbus_service_dir
Packit Service 8ebd8e
output += '  DBus interfaces directory: ' + dbus_interfaces_dir
Packit Service 8ebd8e
output += '  Polkit policy directory: ' + polkit_policy_directory
Packit Service 8ebd8e
output += '  Systemd service directory: ' + systemd_unit_dir
Packit Service 8ebd8e
if get_option('pam')
Packit Service 8ebd8e
    output += '  PAM module directory: ' + pam_modules_dir
Packit Service 8ebd8e
endif
Packit Service 8ebd8e
output += '\nOptional features:\n'
Packit Service 8ebd8e
output += '  PAM module: ' + pam_dep.found().to_string()
Packit Service 8ebd8e
output += '  Manuals: ' + get_option('man').to_string()
Packit Service 8ebd8e
output += '  GTK Doc: ' + get_option('gtk_doc').to_string()
Packit Service 8ebd8e
output += '  XML Linter ' + xmllint.found().to_string()
Packit Service 8ebd8e
output += '\nTest setup:\n'
Packit Service 8ebd8e
output += '  With address sanitizer: ' + address_sanitizer.to_string()
Packit Service 8ebd8e
Packit Service 8ebd8e
message('\n'+'\n'.join(output)+'\n')