chore: support building libstrophe as a subproject

Allow building the latest libstrophe from upstream Git automatically when
-Dforce_fallback_for=libstrophe is passed.

Default to find and link against system-provided libstrophe stays the same.

Signed-off-by: Paul Fertser <fercerpav@gmail.com>
This commit is contained in:
Paul Fertser
2026-04-01 16:51:24 +03:00
parent 3997f34e5a
commit 5670ccb2b1
4 changed files with 37 additions and 7 deletions

View File

@@ -5,6 +5,8 @@
### Build Options
Meson requires features to be **explicitly enabled**. Nothing is auto-enabled; if you want a feature, you must pass the corresponding `-Doption=enabled` flag.
The system libstrophe is used by default; if you instead want to automatically download and link against libstrophe HEAD from upstream Git, provide `-Dforce_fallback_for=libstrophe` flag.
| Feature | Description | Meson option |
| :--- | :--- | :--- |
| **Notifications** | Desktop notifications support | `-Dnotifications=enabled` |

View File

@@ -5,6 +5,7 @@ project('profanity', 'c',
default_options: [
'c_std=gnu99',
'warning_level=2',
'wrap_mode=nofallback',
]
)
@@ -98,13 +99,17 @@ math_dep = cc.find_library('m')
libstrophe_dep = dependency('libstrophe', version: '>= 0.12.3')
# Check for XMPP_CERT_PUBKEY_FINGERPRINT_SHA256 support
if cc.links('''
#include <strophe.h>
int main() {
xmpp_tlscert_get_string(NULL, XMPP_CERT_PUBKEY_FINGERPRINT_SHA256);
return 1;
}
''', dependencies: libstrophe_dep)
if libstrophe_dep.type_name() != 'internal'
if cc.links('''
#include <strophe.h>
int main() {
xmpp_tlscert_get_string(NULL, XMPP_CERT_PUBKEY_FINGERPRINT_SHA256);
return 1;
}
''', dependencies: libstrophe_dep)
conf_data.set('HAVE_XMPP_CERT_PUBKEY_FINGERPRINT_SHA256', 1)
endif
else
conf_data.set('HAVE_XMPP_CERT_PUBKEY_FINGERPRINT_SHA256', 1)
endif

View File

@@ -0,0 +1,4 @@
[wrap-git]
url = https://github.com/strophe/libstrophe.git
revision = HEAD
patch_directory = libstrophe

View File

@@ -0,0 +1,19 @@
project('libstrophe', 'c',
meson_version : '>=0.60.3',
version : run_command('git', 'describe', '--tags', check : true).stdout().strip(),
)
mod = import('unstable-external_project')
run_command('bootstrap.sh', check : true)
p = mod.add_project('configure',
configure_options : ['--prefix=@PREFIX@',
'--libdir=@PREFIX@/@LIBDIR@',
'--includedir=@PREFIX@/@INCLUDEDIR@',
],
verbose : true
)
libstrophe_dep = p.dependency('strophe')
meson.override_dependency('libstrophe', libstrophe_dep)