libpurple/protocols/ircv3/meson.build

Thu, 30 Nov 2023 22:38:54 -0600

author
Gary Kramlich <grim@reaperworld.com>
date
Thu, 30 Nov 2023 22:38:54 -0600
changeset 42530
55b30ce86f17
parent 42505
cc095f9ce1f3
child 42533
c4ea929fde6f
permissions
-rw-r--r--

IRCv3: Implement basic CTCP support

This is just the scaffolding for it and doesn't implement any actual commands.

Testing Done:
Sent some `CTCP VERSION`'s to an IRCv3 account. Also manually sent `CTCP VERSION`'s to users and channel via temporary code in when the connection was fully established.

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

41750
7ab7d79ac0c5 Create a skeleton for the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
1 IRCV3_SOURCES = [
41951
00c472cd0fff Create PurpleIRCv3Capabilities for managing capabilities for each connection
Gary Kramlich <grim@reaperworld.com>
parents: 41941
diff changeset
2 'purpleircv3capabilities.c',
41783
5ea6c18ef7a8 Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41774
diff changeset
3 'purpleircv3connection.c',
41916
4ee9cb957595 Implement sending im's for IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41822
diff changeset
4 'purpleircv3core.c',
42530
55b30ce86f17 IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents: 42505
diff changeset
5 'purpleircv3ctcp.c',
42505
cc095f9ce1f3 IRCv3: strip formatting from incoming messages
Gary Kramlich <grim@reaperworld.com>
parents: 42503
diff changeset
6 'purpleircv3formatting.c',
42333
a34601ac633c Add PurpleIRCv3Message represent messages rather than multiple variables
Gary Kramlich <grim@reaperworld.com>
parents: 42320
diff changeset
7 'purpleircv3message.c',
41916
4ee9cb957595 Implement sending im's for IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41822
diff changeset
8 'purpleircv3messagehandlers.c',
4ee9cb957595 Implement sending im's for IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41822
diff changeset
9 'purpleircv3parser.c',
4ee9cb957595 Implement sending im's for IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41822
diff changeset
10 'purpleircv3protocol.c',
42320
21cab78fb7d2 IRCv3: Move from ProtocolIM to ProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents: 42229
diff changeset
11 'purpleircv3protocolconversation.c',
42023
5bda87b90d8d Implement SASL for IRCv3 using GSASL
Gary Kramlich <grim@reaperworld.com>
parents: 41951
diff changeset
12 'purpleircv3sasl.c',
42336
14c850aeee79 IRCv3: add ircv3_source_parse to parse sources into nick, user, and host
Gary Kramlich <grim@reaperworld.com>
parents: 42333
diff changeset
13 'purpleircv3source.c',
41916
4ee9cb957595 Implement sending im's for IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41822
diff changeset
14 ]
4ee9cb957595 Implement sending im's for IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41822
diff changeset
15
4ee9cb957595 Implement sending im's for IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41822
diff changeset
16 IRCV3_HEADERS = [
41951
00c472cd0fff Create PurpleIRCv3Capabilities for managing capabilities for each connection
Gary Kramlich <grim@reaperworld.com>
parents: 41941
diff changeset
17 'purpleircv3capabilities.h',
41783
5ea6c18ef7a8 Add the ability to connect to IRCv3
Gary Kramlich <grim@reaperworld.com>
parents: 41774
diff changeset
18 'purpleircv3connection.h',
42503
55eff782a478 IRCv3: Add support for updating topics
Gary Kramlich <grim@reaperworld.com>
parents: 42489
diff changeset
19 'purpleircv3constants.h',
41774
170078e728c0 Implement a parser for ircv3 and add unit tests to it.
Gary Kramlich <grim@reaperworld.com>
parents: 41750
diff changeset
20 'purpleircv3core.h',
42530
55b30ce86f17 IRCv3: Implement basic CTCP support
Gary Kramlich <grim@reaperworld.com>
parents: 42505
diff changeset
21 'purpleircv3ctcp.h',
42505
cc095f9ce1f3 IRCv3: strip formatting from incoming messages
Gary Kramlich <grim@reaperworld.com>
parents: 42503
diff changeset
22 'purpleircv3formatting.h',
42333
a34601ac633c Add PurpleIRCv3Message represent messages rather than multiple variables
Gary Kramlich <grim@reaperworld.com>
parents: 42320
diff changeset
23 'purpleircv3message.h',
41796
ebe4ff278b02 Use the parser on ircv3 messages and handle pings
Gary Kramlich <grim@reaperworld.com>
parents: 41783
diff changeset
24 'purpleircv3messagehandlers.h',
41774
170078e728c0 Implement a parser for ircv3 and add unit tests to it.
Gary Kramlich <grim@reaperworld.com>
parents: 41750
diff changeset
25 'purpleircv3parser.h',
41750
7ab7d79ac0c5 Create a skeleton for the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
26 'purpleircv3protocol.h',
42320
21cab78fb7d2 IRCv3: Move from ProtocolIM to ProtocolConversation
Gary Kramlich <grim@reaperworld.com>
parents: 42229
diff changeset
27 'purpleircv3protocolconversation.h',
42023
5bda87b90d8d Implement SASL for IRCv3 using GSASL
Gary Kramlich <grim@reaperworld.com>
parents: 41951
diff changeset
28 'purpleircv3sasl.h',
42336
14c850aeee79 IRCv3: add ircv3_source_parse to parse sources into nick, user, and host
Gary Kramlich <grim@reaperworld.com>
parents: 42333
diff changeset
29 'purpleircv3source.h',
41750
7ab7d79ac0c5 Create a skeleton for the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
30 ]
7ab7d79ac0c5 Create a skeleton for the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
31
42229
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
32 if not DYNAMIC_IRCV3
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
33 subdir_done()
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
34 endif
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
35
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
36 ircv3_filebase = f'purple-@purple_major_version@-ircv3'
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
37
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
38 ircv3_includes = include_directories('.')
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
39 ircv3_include_base = purple_include_base / 'protocols/ircv3'
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
40
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
41
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
42 ircv3_resources = gnome.compile_resources('ircv3resource',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
43 'resources/ircv3.gresource.xml',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
44 source_dir : 'resources',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
45 c_name : 'purple_ircv3')
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
46 IRCV3_SOURCES += ircv3_resources
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
47
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
48 ircv3_h_includes = []
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
49 foreach header : IRCV3_HEADERS
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
50 ircv3_h_includes += f'#include <@header@>'
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
51 endforeach
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
52 ircv3_h_conf = configuration_data()
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
53 ircv3_h_conf.set('IRCV3_H_INCLUDES', '\n'.join(ircv3_h_includes))
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
54
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
55 ircv3_h = configure_file(input : 'purpleircv3.h.in',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
56 output : 'purpleircv3.h',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
57 configuration : ircv3_h_conf,
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
58 install : true,
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
59 install_dir : get_option('includedir') / ircv3_include_base)
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
60
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
61 install_headers(IRCV3_HEADERS,
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
62 subdir : ircv3_include_base)
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
63
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
64 ircv3_prpl = shared_library('ircv3', IRCV3_SOURCES + IRCV3_HEADERS + [ircv3_h],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
65 c_args : ['-DPURPLE_IRCV3_COMPILATION', '-DG_LOG_USE_STRUCTURED', '-DG_LOG_DOMAIN="Purple-IRCv3"'],
42472
409148c5c5b7 Add symbol visibility on IRCv3 protocol plugin
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42372
diff changeset
66 gnu_symbol_visibility : 'hidden',
42229
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
67 dependencies : [libpurple_dep, glib, gio, hasl, ws2_32],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
68 install : true,
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
69 install_dir : PURPLE_PLUGINDIR)
41750
7ab7d79ac0c5 Create a skeleton for the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
70
42229
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
71 ircv3_dep = declare_dependency(
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
72 sources : [IRCV3_SOURCES, IRCV3_HEADERS],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
73 include_directories : ircv3_includes,
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
74 dependencies : [libpurple_dep, glib, gio, hasl, ws2_32])
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
75
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
76 pkgconfig.generate(
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
77 # we purposely don't put the library here because you should not be
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
78 # linking to the plugin, everything will be resolved during runtime.
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
79 name : 'ircv3',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
80 description : 'a purple3 protocol plugin for IRCv3',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
81 version : meson.project_version(),
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
82 subdirs : [ircv3_include_base],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
83 filebase : ircv3_filebase,
42489
0edea2beaa95 Use libraries when generating pkgconfig files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42472
diff changeset
84 libraries : [gio, glib, hasl, libpurple])
42229
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
85
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
86 meson.override_dependency(ircv3_filebase, ircv3_dep)
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
87
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
88 devenv.append('PURPLE_PLUGIN_PATH', meson.current_build_dir())
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
89
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
90 if get_option('introspection')
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
91 GPLUGIN_INTROSPECTION = dependency('gplugin-introspection')
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
92
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
93 plugin_filename = ircv3_prpl.full_path()
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
94
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
95 ircv3_introspection_stub = executable('ircv3generategir',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
96 sources : 'ircv3generategir.c',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
97 dependencies : [ircv3_dep, libpurple_dep, glib, gio, hasl, ws2_32, GPLUGIN_INTROSPECTION],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
98 c_args : ['-DPURPLE_IRCV3_COMPILATION', f'-DPLUGIN_FILENAME="@plugin_filename@"'],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
99 install : false)
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
100
42372
ba3a49903905 Remove unused Meson variables
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42336
diff changeset
101 gnome.generate_gir(
42229
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
102 ircv3_introspection_stub,
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
103 sources : [IRCV3_SOURCES, IRCV3_HEADERS],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
104 includes : ['GLib-2.0', 'GObject-2.0', 'GPlugin-1.0', libpurple_gir[0]],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
105 namespace : 'PurpleIRCv3',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
106 symbol_prefix : 'purple_ircv3',
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
107 nsversion : '1.0',
41941
355bd17297f0 Set the C standard to C99 and set warning_level to 2 for the IRCv3 Protocol Plugin
Gary Kramlich <grim@reaperworld.com>
parents: 41916
diff changeset
108 install : true,
42372
ba3a49903905 Remove unused Meson variables
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents: 42336
diff changeset
109 dependencies: [gplugin_dep],
42229
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
110 export_packages : ['ircv3'],
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
111 extra_args : ['-DPURPLE_IRCV3_COMPILATION', '--verbose'])
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
112 endif
41750
7ab7d79ac0c5 Create a skeleton for the IRCv3 protocol plugin
Gary Kramlich <grim@reaperworld.com>
parents:
diff changeset
113
42229
605f8cba9704 Add gobject-introspection for ircv3
Gary Kramlich <grim@reaperworld.com>
parents: 42081
diff changeset
114 subdir('tests')

mercurial