Blob Blame History Raw
bash = find_program('bash')
dbus_interfaces = ['Manager', 'Device']
dbus_interfaces_files = []

foreach interface_name: dbus_interfaces
    interface = interface_name.to_lower()
    interface_file = interface + '.xml'
    dbus_interfaces_files += custom_target('dbus_interface_' + interface,
        input: interface_file,
        output: 'net.reactivated.Fprint.@0@.xml'.format(interface_name),
        command: ['cp', '@INPUT@', '@OUTPUT@'],
        install: true,
        install_dir: dbus_interfaces_dir,
    )
endforeach

# NOTE: We should pass "--glib-min-required 2.64" but cannot
fprintd_dbus_sources_base = gnome.gdbus_codegen('fprintd-dbus',
    sources: dbus_interfaces_files,
    autocleanup: 'all',
    interface_prefix: 'net.reactivated.Fprint.',
    namespace: 'FprintDBus',
    object_manager: true,
)

# FIXME: remove this and just use fprintd_dbus_sources when we're on glib 2.64
fprintd_dbus_sources = [
    fprintd_dbus_sources_base[1] # header file
]

fprintd_dbus_sources += custom_target('fprintd-dbus-interactive',
    input: fprintd_dbus_sources_base[0], # c file,
    output: 'fprintd-dbus-interactive.c',
    command: [
        find_program('patch'),
        '-p1',
        '--merge',
        '@INPUT@',
        files('dbus-interactive-auth.patch'),
        '-o', '@OUTPUT@',
    ])

fprintd_enum_files = gnome.mkenums_simple('fprintd-enums',
  sources: 'fprintd.h',
)

fprintd_deps = declare_dependency(
    include_directories: [
        include_directories('..'),
    ],
    sources: [
        fprintd_enum_files,
        fprintd_dbus_sources,
    ],
    dependencies: [
        glib_dep,
        gio_dep,
        gio_unix_dep,
        gmodule_dep,
        libfprint_dep,
        polkit_gobject_dep,
    ],
    compile_args: [
        '-DG_LOG_DOMAIN="@0@"'.format(meson.project_name()),
        '-DLOCALEDIR="@0@"'.format(localedir),
        '-DPLUGINDIR="@0@"'.format(fprintd_plugindir),
    ],
)

libfprintd_private = static_library('fprintd-private',
    sources: [
        'device.c',
        'fprintd.h',
        'manager.c',
    ],
    dependencies: fprintd_deps,
    gnu_symbol_visibility: 'hidden',
)

fprintd = executable('fprintd',
    sources: [
        'file_storage.c',
        'file_storage.h',
        'fprintd.h',
        'main.c',
        'storage.h',
    ],
    dependencies: fprintd_deps,
    link_with: libfprintd_private,
    gnu_symbol_visibility: 'hidden',
    install: true,
    install_dir: fprintd_installdir,
)