aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorJonathan Schleifer <js@nil.im>2024-04-11 01:46:27 +0200
committerEli Schwartz <eschwartz93@gmail.com>2024-04-28 03:14:29 -0400
commit6c6529337e72812a64ff4a193d1888cc7822de58 (patch)
tree7672560e73f02b46d45b1d6569cf7bca3e33505e /mesonbuild
parent205f09e1b022a71a64eb48e22bb52f76e0da21ef (diff)
downloadmeson-6c6529337e72812a64ff4a193d1888cc7822de58.zip
meson-6c6529337e72812a64ff4a193d1888cc7822de58.tar.gz
meson-6c6529337e72812a64ff4a193d1888cc7822de58.tar.bz2
Add support for depending on ObjFW
This uses objfw-config to get to the flags, however, there's still several todos that can only be addressed once dependencies can have per-language flags.
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/dependencies/__init__.py1
-rw-r--r--mesonbuild/dependencies/misc.py26
2 files changed, 27 insertions, 0 deletions
diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py
index abc2e22..89d2285 100644
--- a/mesonbuild/dependencies/__init__.py
+++ b/mesonbuild/dependencies/__init__.py
@@ -223,6 +223,7 @@ packages.defaults.update({
'openssl': 'misc',
'libcrypto': 'misc',
'libssl': 'misc',
+ 'objfw': 'misc',
# From platform:
'appleframeworks': 'platform',
diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py
index b255813..fd59652 100644
--- a/mesonbuild/dependencies/misc.py
+++ b/mesonbuild/dependencies/misc.py
@@ -474,6 +474,30 @@ class OpensslSystemDependency(SystemDependency):
self.link_args.extend(sublib)
+class ObjFWDependency(ConfigToolDependency):
+
+ tools = ['objfw-config']
+ tool_name = 'objfw-config'
+
+ def __init__(self, environment: 'Environment', kwargs: T.Dict[str, T.Any]):
+ super().__init__('objfw', environment, kwargs)
+ self.feature_since = ('1.5.0', '')
+ if not self.is_found:
+ return
+
+ # TODO: Expose --reexport
+ # TODO: Expose --framework-libs
+ extra_flags = []
+
+ for module in mesonlib.stringlistify(mesonlib.extract_as_list(kwargs, 'modules')):
+ extra_flags.append('--package')
+ extra_flags.append(module)
+
+ # TODO: Once Meson supports adding flags per language, only add --objcflags to ObjC
+ self.compile_args = self.get_config_value(['--cppflags', '--cflags', '--objcflags'] + extra_flags, 'compile_args')
+ self.link_args = self.get_config_value(['--ldflags', '--libs'] + extra_flags, 'link_args')
+
+
@factory_methods({DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL, DependencyMethods.SYSTEM})
def curses_factory(env: 'Environment',
for_machine: 'mesonlib.MachineChoice',
@@ -616,3 +640,5 @@ packages['libssl'] = libssl_factory = DependencyFactory(
system_class=OpensslSystemDependency,
cmake_class=CMakeDependencyFactory('OpenSSL', modules=['OpenSSL::SSL']),
)
+
+packages['objfw'] = ObjFWDependency