aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies/dev.py
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2020-01-07 10:13:31 -0800
committerDylan Baker <dylan@pnwbakers.com>2020-01-31 09:22:25 -0800
commit5f51ee2fc850a417f6ca1afcf158b21be9150c88 (patch)
treeeb15165c8e5befad2a86cbdc876b3d959eea9652 /mesonbuild/dependencies/dev.py
parent402f7afdb03fa59b28e1c01b490b9673382f1ba4 (diff)
downloadmeson-5f51ee2fc850a417f6ca1afcf158b21be9150c88.zip
meson-5f51ee2fc850a417f6ca1afcf158b21be9150c88.tar.gz
meson-5f51ee2fc850a417f6ca1afcf158b21be9150c88.tar.bz2
dependencies: Add a zlib system dependency for macOS
This comes pre-installed, but currently we don't have a way to detect it without relying on pkg-config or cmake. This is only valid with the apple clang-based compilers, as they do some special magic to get headers.
Diffstat (limited to 'mesonbuild/dependencies/dev.py')
-rw-r--r--mesonbuild/dependencies/dev.py30
1 files changed, 30 insertions, 0 deletions
diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py
index 4cefd75..c4eeaf1 100644
--- a/mesonbuild/dependencies/dev.py
+++ b/mesonbuild/dependencies/dev.py
@@ -28,6 +28,8 @@ from .base import (
strip_system_libdirs, ConfigToolDependency, CMakeDependency, DependencyFactory,
)
from .misc import threads_factory
+from ..compilers.c import AppleClangCCompiler
+from ..compilers.cpp import AppleClangCPPCompiler
if T.TYPE_CHECKING:
from .. environment import Environment
@@ -449,6 +451,27 @@ class ValgrindDependency(PkgConfigDependency):
return []
+class ZlibSystemDependency(ExternalDependency):
+
+ def __init__(self, name: str, environment: 'Environment', kwargs: T.Dict[str, T.Any]):
+ super().__init__(name, environment, kwargs)
+
+ # I'm not sure this is entirely correct. What if we're cross compiling
+ # from something to macOS?
+ if (self.env.machines[self.for_machine].is_darwin() and
+ isinstance(self.clib_compiler, (AppleClangCCompiler, AppleClangCPPCompiler))):
+ self.is_found = True
+ self.link_args = ['-lz']
+ # No need to set includes, xcode/clang will do that for us.
+
+ v, _ = self.clib_compiler.get_define('ZLIB_VERSION', '#include <zlib.h>', self.env, [], [self])
+ self.version = v.strip('"')
+
+ @staticmethod
+ def get_methods():
+ return [DependencyMethods.SYSTEM]
+
+
llvm_factory = DependencyFactory(
'LLVM',
[DependencyMethods.CMAKE, DependencyMethods.CONFIG_TOOL],
@@ -469,3 +492,10 @@ gmock_factory = DependencyFactory(
pkgconfig_class=GMockDependencyPC,
system_class=GMockDependencySystem,
)
+
+zlib_factory = DependencyFactory(
+ 'zlib',
+ [DependencyMethods.PKGCONFIG, DependencyMethods.CMAKE, DependencyMethods.SYSTEM],
+ cmake_name='ZLIB',
+ system_class=ZlibSystemDependency,
+)