pidgin/meson.build

Tue, 14 Nov 2023 02:42:32 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Tue, 14 Nov 2023 02:42:32 -0600
changeset 42499
294a948bab87
parent 42498
9f71e90ac72d
child 42507
8e8f223cdd5a
permissions
-rw-r--r--

Replace the old appdata file with an appstream metainfo file

Also moved the stuff in pidgin/meson.build that was touching files pidgin/data
to pidgin/data/meson.build since that already existed.

Testing Done:
Ran the unit tests a lot.

Reviewed at https://reviews.imfreedom.org/r/2800/

if not ENABLE_GTK
  subdir_done()
endif

libpidgin_SOURCES = [
	'gtkblist.c',
	'gtkconv.c',
	'gtkdialogs.c',
	'gtkidle.c',
	'gtkmedia.c',
	'gtknotify.c',
	'gtkrequest.c',
	'gtkroomlist.c',
	'gtksavedstatuses.c',
	'gtkutils.c',
	'gtkwhiteboard.c',
	'gtkxfer.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',
	'pidginactiongroup.c',
	'pidginaddbuddydialog.c',
	'pidginaddchatdialog.c',
	'pidginapplication.c',
	'pidginautoadjustment.c',
	'pidginavatar.c',
	'pidginchanneljoindialog.c',
	'pidgincolor.c',
	'pidgincommands.c',
	'pidgincontactinfomenu.c',
	'pidgincontactlist.c',
	'pidgincontactlistwindow.c',
	'pidginconversation.c',
	'pidgindebug.c',
	'pidgindisplayitem.c',
	'pidgindisplaywindow.c',
	'pidginiconname.c',
	'pidgininfopane.c',
	'pidgininvitedialog.c',
	'pidginkeypad.c',
	'pidginnotificationaddcontact.c',
	'pidginnotificationauthorizationrequest.c',
	'pidginnotificationconnectionerror.c',
	'pidginnotificationlist.c',
	'pidginpluginsdialog.c',
	'pidginpluginsmenu.c',
	'pidginpresenceicon.c',
	'pidginprotocolchooser.c',
	'pidginstatusbox.c',
	'pidginstatusdisplay.c',
	'pidginstatuseditor.c',
	'pidginstatusmanager.c',
	'pidginstatusprimitivechooser.c',
	'pidgintextbuffer.c',
	'pidginui.c',
	'prefs/pidginprefs.c',
	'prefs/pidginawayprefs.c',
	'prefs/pidginconversationprefs.c',
	'prefs/pidgincredentialproviderrow.c',
	'prefs/pidgincredentialprefs.c',
	'prefs/pidginnetworkprefs.c',
	'prefs/pidginproxyprefs.c',
	'prefs/pidginvvprefs.c',
]

libpidgin_headers = [
	'gtkblist.h',
	'gtkconv.h',
	'gtkdialogs.h',
	'gtkidle.h',
	'gtkmedia.h',
	'gtknotify.h',
	'gtkrequest.h',
	'gtkroomlist.h',
	'gtksavedstatuses.h',
	'gtkutils.h',
	'gtkwhiteboard.h',
	'gtkxfer.h',
	'pidginabout.h',
	'pidginaccountchooser.h',
	'pidginaccountdisplay.h',
	'pidginaccounteditor.h',
	'pidginaccountfilterconnected.h',
	'pidginaccountfilterprotocol.h',
	'pidginaccountmanager.h',
	'pidginaccountmanagerrow.h',
	'pidginaccountrow.h',
	'pidginaccountsdisabledmenu.h',
	'pidginaccountsenabledmenu.h',
	'pidginactiongroup.h',
	'pidginaddbuddydialog.h',
	'pidginaddchatdialog.h',
	'pidginapplication.h',
	'pidginautoadjustment.h',
	'pidginavatar.h',
	'pidginchanneljoindialog.h',
	'pidgincolor.h',
	'pidgincontactinfomenu.h',
	'pidgincontactlist.h',
	'pidgincontactlistwindow.h',
	'pidginconversation.h',
	'pidgincore.h',
	'pidgindisplayitem.h',
	'pidgindisplaywindow.h',
	'pidgindebug.h',
	'pidginiconname.h',
	'pidgininfopane.h',
	'pidgininvitedialog.h',
	'pidginkeypad.h',
	'pidginnotificationaddcontact.h',
	'pidginnotificationauthorizationrequest.h',
	'pidginnotificationconnectionerror.h',
	'pidginnotificationlist.h',
	'pidginpluginsdialog.h',
	'pidginpluginsmenu.h',
	'pidginpresenceicon.h',
	'pidginprotocolchooser.h',
	'pidginstatusbox.h',
	'pidginstatusdisplay.h',
	'pidginstatuseditor.h',
	'pidginstatusmanager.h',
	'pidginstatusprimitivechooser.h',
	'pidgintextbuffer.h',
	'pidginui.h',
	'pidginversion.h',
]

libpidgin_prefs_headers = [
	'prefs/pidginprefs.h',
	'prefs/pidginawayprefs.h',
	'prefs/pidginconversationprefs.h',
	'prefs/pidgincredentialproviderrow.h',
	'prefs/pidgincredentialprefs.h',
	'prefs/pidginnetworkprefs.h',
	'prefs/pidginproxyprefs.h',
	'prefs/pidginvvprefs.h',
]

pidgin_SOURCES = [
	'pidgin.c'
]

pidgin_resource = gnome.compile_resources('pidginresources',
    'resources/pidgin.gresource.xml',
    source_dir : 'resources',
    c_name : 'pidgin')
libpidgin_SOURCES += pidgin_resource

pidgin_filebase = 'pidgin-3'
pidgin_include_base = pidgin_filebase / 'pidgin'

_libpidgin_dependencies = [
	glib,
	gplugin_gtk_dep,
	gtk,
	IOKIT,
	json,
	libadwaita,
	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_sources = [
]

libpidgin_built_headers = [
	pidgin_h,
	pidgin_version_h,
]

libpidgin_inc = include_directories('.')
libpidgin = shared_library('pidgin3',
    libpidgin_SOURCES + libpidgin_built_sources + libpidgin_built_headers + ['pidginprivate.h'],
    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 : [gtk, glib, libadwaita, math, gplugin_gtk_dep])

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 : [gtk, libadwaita, libpurple_dep, gplugin_gtk_dep],
    variables : [f'plugindir=${libdir}/pidgin-@purple_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 : ['GLib-2.0', 'GObject-2.0', 'Gtk-4.0', libpurple_gir[0]],
		namespace : 'Pidgin',
		symbol_prefix : 'pidgin',
		identifier_prefix : 'Pidgin',
		export_packages : f'pidgin-@purple_major_version@',
		nsversion : f'@purple_major_version@.@purple_minor_version@',
		dependencies : [gplugin_dep, gplugin_gtk_dep, libpurple_dep],
		install : true,
		extra_args : ['-DPIDGIN_COMPILATION', '--quiet'])
endif

subdir('data')
subdir('plugins')
subdir('tests')

mercurial