diff options
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/dependencies/__init__.py | 4 | ||||
-rw-r--r-- | mesonbuild/dependencies/base.py | 1 | ||||
-rw-r--r-- | mesonbuild/dependencies/misc.py | 46 |
3 files changed, 48 insertions, 3 deletions
diff --git a/mesonbuild/dependencies/__init__.py b/mesonbuild/dependencies/__init__.py index afe2a3b..f5034db 100644 --- a/mesonbuild/dependencies/__init__.py +++ b/mesonbuild/dependencies/__init__.py @@ -18,7 +18,7 @@ from .base import ( # noqa: F401 ExternalDependency, NotFoundDependency, ExternalLibrary, ExtraFrameworkDependency, InternalDependency, PkgConfigDependency, CMakeDependency, find_external_dependency, get_dep_identifier, packages, _packages_accept_language) from .dev import GMockDependency, GTestDependency, LLVMDependency, ValgrindDependency -from .misc import (MPIDependency, OpenMPDependency, Python3Dependency, ThreadDependency, PcapDependency, CupsDependency, LibWmfDependency, LibGCryptDependency) +from .misc import (HDF5Dependency, MPIDependency, OpenMPDependency, Python3Dependency, ThreadDependency, PcapDependency, CupsDependency, LibWmfDependency, LibGCryptDependency) from .platform import AppleFrameworks from .ui import GLDependency, GnuStepDependency, Qt4Dependency, Qt5Dependency, SDL2Dependency, WxDependency, VulkanDependency @@ -33,6 +33,7 @@ packages.update({ # From misc: 'boost': BoostDependency, 'mpi': MPIDependency, + 'hdf5': HDF5Dependency, 'openmp': OpenMPDependency, 'python3': Python3Dependency, 'threads': ThreadDependency, @@ -54,6 +55,7 @@ packages.update({ 'vulkan': VulkanDependency, }) _packages_accept_language.update({ + 'hdf5', 'mpi', 'openmp', }) diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 4b54005..a9d889a 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -2044,6 +2044,7 @@ display_name_map = { 'dub': 'DUB', 'gmock': 'GMock', 'gtest': 'GTest', + 'hdf5': 'HDF5', 'llvm': 'LLVM', 'mpi': 'MPI', 'openmp': 'OpenMP', diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py index e6f52a5..b9f8bb6 100644 --- a/mesonbuild/dependencies/misc.py +++ b/mesonbuild/dependencies/misc.py @@ -14,14 +14,13 @@ # This file contains the detection logic for miscellaneous external dependencies. +from pathlib import Path import functools import os import re import shlex import sysconfig -from pathlib import Path - from .. import mlog from .. import mesonlib from ..environment import detect_cpu_family @@ -33,6 +32,49 @@ from .base import ( ) +class HDF5Dependency(ExternalDependency): + + def __init__(self, environment, kwargs): + language = kwargs.get('language', 'c') + super().__init__('hdf5', environment, language, kwargs) + kwargs['required'] = False + kwargs['silent'] = True + self.is_found = False + + pkgconfig_files = ['hdf5'] + + if language not in ('c', 'cpp', 'fortran'): + raise DependencyException('Language {} is not supported with HDF5.'.format(language)) + + for pkg in pkgconfig_files: + try: + pkgdep = PkgConfigDependency(pkg, environment, kwargs, language=self.language) + if pkgdep.found(): + self.compile_args = pkgdep.get_compile_args() + # derive needed libraries by language + link_args = pkgdep.get_link_args() + lang_link_args = [] + for larg in link_args: + lpath = Path(larg) + if lpath.is_file(): + if language == 'c': + lang_link_args.append(str(lpath.parent / (lpath.stem + '_hl' + lpath.suffix))) + lang_link_args.append(larg) + elif language == 'cpp': + lang_link_args.append(str(lpath.parent / (lpath.stem + '_hl_cpp' + lpath.suffix))) + lang_link_args.append(str(lpath.parent / (lpath.stem + '_cpp' + lpath.suffix))) + elif language == 'fortran': + lang_link_args.append(str(lpath.parent / (lpath.stem + 'hl_fortran' + lpath.suffix))) + lang_link_args.append(str(lpath.parent / (lpath.stem + '_fortran' + lpath.suffix))) + + self.link_args = lang_link_args + self.version = pkgdep.get_version() + self.is_found = True + self.pcdep = pkgdep + break + except Exception: + pass + class MPIDependency(ExternalDependency): def __init__(self, environment, kwargs): |