lib_inc = include_directories('.')
enum_headers = files('bluetooth-enums.h')
headers = enum_headers + files(
'bluetooth-client.h',
'bluetooth-chooser.h',
'bluetooth-chooser-button.h',
'bluetooth-chooser-combo.h',
'bluetooth-filter-widget.h',
'bluetooth-settings-widget.h',
'bluetooth-utils.h',
)
install_headers(
headers,
subdir: meson.project_name(),
)
sources = files(
'bluetooth-agent.c',
'bluetooth-chooser.c',
'bluetooth-chooser-button.c',
'bluetooth-chooser-combo.c',
'bluetooth-client.c',
'bluetooth-hdy-column.c',
'bluetooth-filter-widget.c',
'bluetooth-pairing-dialog.c',
'bluetooth-settings-obexpush.c',
'bluetooth-settings-row.c',
'bluetooth-settings-widget.c',
'bluetooth-utils.c',
'pin.c',
)
built_sources = []
resource_data = files(
'bluetooth-pairing-dialog.ui',
'bluetooth-settings.css',
'bluetooth-settings-row.ui',
'settings.ui',
)
built_sources += gnome.compile_resources(
'bluetooth-settings-resources',
'bluetooth.gresource.xml',
c_name: 'bluetooth_settings',
dependencies: resource_data,
export: true,
)
enum_types = 'gnome-bluetooth-enum-types'
built_sources += gnome.mkenums(
enum_types,
sources: headers,
c_template: enum_types + '.c.template',
h_template: enum_types + '.h.template',
)
client = 'bluetooth-client'
built_sources += gnome.gdbus_codegen(
client + '-glue',
client + '.xml',
interface_prefix: 'org.bluez',
)
deps = [
gio_dep,
gtk_dep,
]
private_deps = [
gio_unix_dep,
libcanberra_gtk_dep,
libnotify_dep,
libudev_dep,
]
cflags = [
'-DPKGDATADIR="@0@"'.format(gnomebt_prefix / gnomebt_pkgdatadir),
'-DG_LOG_DOMAIN="Bluetooth"',
]
symbol_map = meson.current_source_dir() / (meson.project_name() + '.map')
ldflags = cc.get_supported_link_arguments('-Wl,--version-script,' + symbol_map)
libgnome_bluetooth = shared_library(
meson.project_name(),
sources: sources + built_sources,
version: libversion,
include_directories: top_inc,
dependencies: deps + private_deps + [m_dep],
c_args: cflags,
link_args: ldflags,
link_depends: symbol_map,
install: true,
)
libgnome_bluetooth_dep = declare_dependency(
link_with: libgnome_bluetooth,
include_directories: lib_inc,
dependencies: deps,
)
pkg.generate(
libraries: libgnome_bluetooth,
version: gnomebt_version,
name: gnomebt_api_name,
description: 'Widgets for Bluetooth device selection',
filebase: gnomebt_api_name,
subdirs: meson.project_name(),
requires: deps,
variables: 'exec_prefix=${prefix}',
)
if enable_gir
gir_sources = sources + headers
gir_incs = [
'GModule-2.0',
'GObject-2.0',
'Gtk-3.0',
]
gnome.generate_gir(
libgnome_bluetooth,
sources: gir_sources,
nsversion: gnomebt_api_version,
namespace: gnomebt_gir_ns,
symbol_prefix: 'bluetooth',
identifier_prefix: 'Bluetooth',
export_packages: gnomebt_api_name,
includes: gir_incs,
install: true,
)
endif
test_names = [
'test-agent',
'test-class',
'test-client',
'test-deviceselection',
'test-pairing-dialog',
'test-pin',
'test-settings',
]
foreach name: test_names
executable(
name,
[name + '.c'] + built_sources,
include_directories: top_inc,
dependencies: deps + private_deps,
c_args: cflags,
link_with: libgnome_bluetooth,
)
endforeach
database = 'pin-code-database.xml'
install_data(
database,
install_dir: gnomebt_pkgdatadir,
)
custom_target(
database,
input: database,
output: database + '.valid',
command: [find_program('xmllint'), '--output', '@OUTPUT@', '--valid', '@INPUT'],
)