1# Shared library and language bindings
2
3libfeedback_libdir = get_option('libdir')
4libfeedback_header_dir = get_option('includedir') / libname
5libfeedback_link_args = []
6libfeedback_symbols_file = 'libfeedback.syms'
7
8# Check linker flags
9ld_version_script_arg = '-Wl,--version-script,@0@'.format(meson.current_source_dir() / libfeedback_symbols_file)
10if cc.links('int main() { return 0; }', args : ld_version_script_arg, name : 'ld_supports_version_script')
11  libfeedback_link_args += [ld_version_script_arg]
12endif
13
14lfb_enum_headers = files([
15  'lfb-event.h',
16])
17lfb_enum_sources = gnome.mkenums_simple('lfb-enums',
18  sources : lfb_enum_headers,
19  install_header : true,
20  install_dir: libfeedback_header_dir,
21)
22
23libfeedback_headers = [
24  'libfeedback.h',
25  'lfb-event.h',
26]
27
28libfeedback_sources = [
29  generated_dbus_sources,
30  lfb_enum_sources,
31  libfeedback_headers,
32  'libfeedback.c',
33  'lfb-event.c',
34]
35
36libfeedback_deps = [
37  gio,
38  gio_unix,
39  glib,
40]
41
42libfeedback_c_args = [
43  '-DG_LOG_DOMAIN="libfeedback"',
44  '-DLIBFEEDBACK_COMPILATION',
45  '-DLIBFEEDBACK_USE_UNSTABLE_API',
46]
47
48libtype = 'shared_library'
49libfeedback = build_target(
50  'feedback-' + apiversion,
51  libfeedback_sources,
52            soversion : 0,
53               c_args : libfeedback_c_args,
54         dependencies : libfeedback_deps,
55            link_args : libfeedback_link_args,
56              install : true,
57          install_dir : libfeedback_libdir,
58          target_type : libtype,
59)
60
61libfeedback_inc = include_directories('.')
62libfeedback_dep = declare_dependency(
63  sources : [generated_dbus_sources, lfb_enum_sources[1]],
64  link_with : libfeedback,
65  dependencies: libfeedback_deps,
66  include_directories : libfeedback_inc,
67)
68install_headers(libfeedback_headers, subdir : libname)
69
70pkgconfig = import('pkgconfig')
71
72pkgconfig.generate(
73      libraries : [libfeedback],
74        subdirs : libname,
75        version : meson.project_version(),
76           name : 'Feedback',
77       filebase : 'libfeedback-@0@'.format(apiversion),
78    description : 'GNOME feedback library',
79       requires : 'gio-2.0',
80    install_dir : join_paths(libfeedback_libdir, 'pkgconfig'),
81  )
82
83if introspection
84  libfeedback_gir_extra_args = [
85    '-I' + dbus_header_dir,
86    '--c-include=libfeedback.h',
87    '--quiet',
88    '-DLIBFEEDBACK_COMPILATION',
89    '-DLIBFEEDBACK_USE_UNSTABLE_API',
90    '--warn-error',
91    '--warn-all',
92  ]
93
94  libfeedback_gir = gnome.generate_gir(libfeedback,
95                sources : libfeedback_sources,
96              nsversion : apiversion,
97              namespace : 'Lfb',
98        export_packages : 'libfeedback-@0@'.format(apiversion),
99          symbol_prefix : 'lfb',
100      identifier_prefix : 'Lfb',
101              link_with : libfeedback,
102               includes : ['Gio-2.0'],
103                install : true,
104        install_dir_gir : girdir,
105    install_dir_typelib : typelibdir,
106             extra_args : libfeedback_gir_extra_args,
107   )
108
109  if get_option('vapi')
110    libfeedback_vapi = gnome.generate_vapi('libfeedback-' + apiversion,
111             sources  : libfeedback_gir[0],
112             packages : ['gio-2.0'],
113             install  : true,
114         install_dir  : vapidir,
115       metadata_dirs  : [meson.current_source_dir()],
116     )
117  endif
118endif
119