Sat, 09 Aug 2025 18:12:31 +0800
Add builtin library dependency for introspection
Without specifying, gir defaults to the system pidgin/purple libraries by default,
which fails the build when new symbols were added and gir failed to link for them.
if not ENABLE_GTK subdir_done() endif libpidgin_SOURCES = [ 'gtkrequest.c', 'gtkwhiteboard.c', 'libpidgin.c', 'pidginabout.c', 'pidginaccountchooser.c', 'pidginaccountdisplay.c', 'pidginaccounteditor.c', 'pidginaccountfilterconnected.c', 'pidginaccountfilterprotocol.c', 'pidginaccountmanager.c', 'pidginaccountmanagerrow.c', 'pidginaccountrow.c', 'pidginaccountsdisabledmenu.c', 'pidginaccountsenabledmenu.c', 'pidginapplication.c', 'pidginautoadjustment.c', 'pidginavatar.c', 'pidginbadges.c', 'pidginchanneljoindialog.c', 'pidgincolor.c', 'pidgincontactinfomenu.c', 'pidgincontactlist.c', 'pidginconversation.c', 'pidginconversationmember.c', 'pidgindebug.c', 'pidgindisplayitem.c', 'pidgindisplaywindow.c', 'pidginiconname.c', 'pidgininfopane.c', 'pidginkeypad.c', 'pidginmessage.c', 'pidginnotifiable.c', 'pidginnotification.c', 'pidginnotificationaddcontact.c', 'pidginnotificationauthorizationrequest.c', 'pidginnotificationconnectionerror.c', 'pidginnotificationlink.c', 'pidginnotificationlist.c', 'pidginpluginsmenu.c', 'pidginpresenceicon.c', 'pidginprotocolchooser.c', 'pidgintypinglabel.c', 'pidginui.c', 'prefs/pidginappearanceprefs.c', 'prefs/pidginawayprefs.c', 'prefs/pidgincredentialproviderrow.c', 'prefs/pidgincredentialprefs.c', 'prefs/pidgindeveloperprefs.c', 'prefs/pidginnetworkprefs.c', 'prefs/pidginprefs.c', 'prefs/pidginprivacyprefs.c', 'prefs/pidginproxyprefs.c', ] libpidgin_headers = [ 'gtkrequest.h', 'gtkwhiteboard.h', 'pidginabout.h', 'pidginaccountchooser.h', 'pidginaccountdisplay.h', 'pidginaccounteditor.h', 'pidginaccountfilterconnected.h', 'pidginaccountfilterprotocol.h', 'pidginaccountmanager.h', 'pidginaccountmanagerrow.h', 'pidginaccountrow.h', 'pidginaccountsdisabledmenu.h', 'pidginaccountsenabledmenu.h', 'pidginapplication.h', 'pidginautoadjustment.h', 'pidginavatar.h', 'pidginbadges.h', 'pidginchanneljoindialog.h', 'pidgincolor.h', 'pidgincontactinfomenu.h', 'pidgincontactlist.h', 'pidginconversation.h', 'pidginconversationmember.h', 'pidgincore.h', 'pidgindisplayitem.h', 'pidgindisplaywindow.h', 'pidgindebug.h', 'pidginiconname.h', 'pidgininfopane.h', 'pidginkeypad.h', 'pidginmessage.h', 'pidginnotifiable.h', 'pidginnotification.h', 'pidginnotificationaddcontact.h', 'pidginnotificationauthorizationrequest.h', 'pidginnotificationconnectionerror.h', 'pidginnotificationlink.h', 'pidginnotificationlist.h', 'pidginpluginsmenu.h', 'pidginpresenceicon.h', 'pidginprotocolchooser.h', 'pidgintypinglabel.h', 'pidginui.h', 'pidginversion.h', ] libpidgin_prefs_headers = [ 'prefs/pidginappearanceprefs.h', 'prefs/pidginawayprefs.h', 'prefs/pidgincredentialproviderrow.h', 'prefs/pidgincredentialprefs.h', 'prefs/pidgindeveloperprefs.h', 'prefs/pidginnetworkprefs.h', 'prefs/pidginprefs.h', 'prefs/pidginprivacyprefs.h', 'prefs/pidginproxyprefs.h', ] pidgin_SOURCES = [ 'pidgin.c' ] libpidgin_built_sources = [] libpidgin_built_headers = [] pidgin_resource = gnome.compile_resources('pidginresources', 'resources/pidgin.gresource.xml', source_dir : 'resources', c_name : 'pidgin') libpidgin_built_sources += pidgin_resource pidgin_filebase = 'pidgin-3' pidgin_include_base = pidgin_filebase / 'pidgin' _libpidgin_dependencies = [ glib, gplugin_gtk_dep, gtk, gtksourceview_dep, json, libadwaita, libspelling, math, libpurple_dep, ] if IS_WIN32 libpidgin_SOURCES += [ 'pidgin.c', 'win32/gtkwin32dep.c', ] pidgin_dll_rc = configure_file( input : 'win32/pidgin_dll_rc.rc.in', output : 'pidgin_dll_rc.rc', configuration : version_conf) libpidgin_SOURCES += windows.compile_resources(pidgin_dll_rc, include_directories : include_directories('win32') ) pidgin_exe_rc = configure_file( input : 'win32/pidgin_exe_rc.rc.in', output : 'pidgin_exe_rc.rc', configuration : version_conf) pidgin_WIN32_RESOURCES = windows.compile_resources(pidgin_exe_rc, include_directories : include_directories('win32')) pidgin_SOURCES = [ 'win32/winpidgin.c', pidgin_WIN32_RESOURCES, ] _libpidgin_dependencies += [ dependency('gmodule-2.0'), ] endif PIDGIN_H_INCLUDES = [] foreach header : libpidgin_headers + libpidgin_prefs_headers + ['pidginversionconsts.h'] PIDGIN_H_INCLUDES += f'#include <pidgin/@header@>' endforeach pidgin_h_conf = configuration_data() pidgin_h_conf.set('PIDGIN_H_INCLUDES', '\n'.join(PIDGIN_H_INCLUDES)) pidgin_h = configure_file(input : 'pidgin.h.in', output : 'pidgin.h', configuration : pidgin_h_conf, install : true, install_dir : get_option('includedir') / pidgin_filebase) pidgin_version_h = configure_file(input : 'pidginversionconsts.h.in', output : 'pidginversionconsts.h', configuration : version_conf, install : true, install_dir : get_option('includedir') / pidgin_filebase) install_headers(libpidgin_headers, subdir : pidgin_include_base) install_headers(libpidgin_prefs_headers, subdir : pidgin_include_base / 'prefs') libpidgin_built_headers += [ pidgin_h, pidgin_version_h, ] libpidgin_inc = include_directories('.') libpidgin = shared_library('pidgin3', libpidgin_SOURCES + libpidgin_built_sources + libpidgin_built_headers, package_revision, c_args : ['-DPIDGIN_COMPILATION', '-DG_LOG_USE_STRUCTURED', '-DG_LOG_DOMAIN="Pidgin"'], gnu_symbol_visibility : 'hidden', include_directories : [toplevel_inc, include_directories('prefs')], version : PURPLE_LIB_VERSION, dependencies : _libpidgin_dependencies, install : true) libpidgin_dep = declare_dependency( include_directories : [toplevel_inc, libpidgin_inc], link_with : libpidgin, sources : libpidgin_built_headers, dependencies : _libpidgin_dependencies) executable('pidgin3', pidgin_SOURCES, c_args : ['-DPIDGIN_COMPILATION', '-DG_LOG_USE_STRUCTURED', '-DG_LOG_DOMAIN="Pidgin"'], include_directories : toplevel_inc, dependencies : IS_WIN32 ? [] : [libpurple_dep, libpidgin_dep], win_subsystem : 'windows', install : true) meson.override_dependency(pidgin_filebase, libpidgin_dep) pkgconfig.generate( libpidgin, name : 'Pidgin', description : 'Pidgin is a GTK based instant messenger application.', version : meson.project_version(), filebase : pidgin_filebase, subdirs : pidgin_filebase, libraries : _libpidgin_dependencies, variables : [f'plugindir=${libdir}/pidgin-@purple_api_major_version@']) if enable_introspection introspection_sources = libpidgin_SOURCES + libpidgin_headers + libpidgin_prefs_headers pidgin_gir = gnome.generate_gir(libpidgin, sources : introspection_sources, header : 'pidgin.h', includes : ['Adw-1', 'GLib-2.0', 'GObject-2.0', 'Gtk-4.0', 'GtkSource-5', libpurple_gir[0]], namespace : 'Pidgin', symbol_prefix : 'pidgin', identifier_prefix : 'Pidgin', export_packages : f'pidgin-@purple_api_major_version@', nsversion : f'@purple_api_major_version@.@purple_api_minor_version@', dependencies : [_libpidgin_dependencies, libpidgin_dep], install : true, extra_args : ['-DPIDGIN_COMPILATION', '--quiet']) endif subdir('data') subdir('plugins') subdir('tests') subdir('reference')