sources = files( 'SpryModule.vala', 'Auth.vala', 'Authentication/UserEntity.vala', 'Authentication/UserPermissionEntity.vala', 'Authentication/UserProjection.vala', 'Authentication/UserService.vala', 'Authentication/Migrations/M0001_Initial.vala', 'Actions/UserManagementAction.vala', 'Actions/UserActionPrivate.vala', 'Actions/ProfileValidation.vala', 'Actions/LoginAction.vala', 'Actions/RegisterAction.vala', 'Actions/LogoutAction.vala', 'Actions/ChangePasswordAction.vala', 'Actions/SetUserEnabledAction.vala', 'Actions/GrantPermissionAction.vala', 'Actions/RevokePermissionAction.vala', 'Actions/AlterUserAction.vala', 'Actions/DeleteUserAction.vala', ) library_version = meson.project_version() libspry = shared_library('spry-@0@'.format(library_version), sources, dependencies: [glib_dep, gobject_dep, gio_dep, invercargill_dep, invercargill_json_dep, json_glib_dep, inversion_dep, astralis_dep, libxml_dep, sodium_deps, invercargill_sql_dep, sqlite_dep, invercargill_sql_inversion_dep, statum_dep], install: true, vala_gir: 'spry-@0@.gir'.format(library_version), install_dir: [true, true, true, true] ) pkg = import('pkgconfig') pkg.generate(libspry, version : library_version, name : 'spry-@0@'.format(library_version), requires : [statum_dep]) g_ir_compiler = find_program('g-ir-compiler') # NOTE: Spry intentionally ships no typelib. Its migration classes derive # from InvercargillSql.Migrations.Migration, and valac's GIR writer emits # that parent as "invercargill_sql.Migration" (dropping the intermediate # Migrations namespace segment) while the defining GIR names it # "invercargill_sql.MigrationsMigration" — g-ir-compiler cannot resolve # the type and the typelib build fails. The GIR itself is still shipped # (parents are resolvable through it for consumers that walk the chain). # Revisit when valac fixes cross-namespace parent naming in generated GIR. # Ship the .deps file alongside the vapi so consumers can build with # plain `valac --pkg spry-0.2` without manually resolving the vapi # chain (GLib stack and the Invercargill/Inversion/Statum stack). # Every entry resolves in share/vala/vapi. vapi_install_dir = get_option('datadir') / 'vala' / 'vapi' install_data( '../vapi/spry-@0@.deps'.format(library_version), install_dir: vapi_install_dir, rename: 'spry-@0@.deps'.format(library_version), ) spry_dep = declare_dependency( link_with: libspry, include_directories: include_directories('.'), dependencies: [glib_dep, gobject_dep, gio_dep, invercargill_dep, invercargill_json_dep, json_glib_dep, inversion_dep, statum_dep] )