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