diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2020-01-07 10:13:31 -0800 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2020-01-31 09:22:25 -0800 |
commit | 5f51ee2fc850a417f6ca1afcf158b21be9150c88 (patch) | |
tree | eb15165c8e5befad2a86cbdc876b3d959eea9652 | |
parent | 402f7afdb03fa59b28e1c01b490b9673382f1ba4 (diff) | |
download | meson-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.
-rw-r--r-- | mesonbuild/dependencies/__init__.py | 3 | ||||
-rw-r--r-- | mesonbuild/dependencies/dev.py | 30 |
2 files changed, 32 insertions, 1 deletions
diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py index d961117..464311d 100644 --- a/mesonbuild/dependencies/__init__.py +++ b/mesonbuild/dependencies/__init__.py @@ -20,7 +20,7 @@ from .base import ( # noqa: F401 ExternalDependency, NotFoundDependency, ExternalLibrary, ExtraFrameworkDependency, InternalDependency, PkgConfigDependency, CMakeDependency, find_external_dependency, get_dep_identifier, packages, _packages_accept_language, DependencyFactory) -from .dev import ValgrindDependency, gmock_factory, gtest_factory, llvm_factory +from .dev import ValgrindDependency, gmock_factory, gtest_factory, llvm_factory, zlib_factory from .coarrays import coarray_factory from .mpi import MPIDependency from .scalapack import ScalapackDependency @@ -44,6 +44,7 @@ packages.update({ 'gmock': gmock_factory, 'llvm': llvm_factory, 'valgrind': ValgrindDependency, + 'zlib': zlib_factory, 'boost': BoostDependency, 'cuda': CudaDependency, 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, +) |