aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Turney <jon.turney@dronecode.org.uk>2018-01-14 18:50:51 +0000
committerJon Turney <jon.turney@dronecode.org.uk>2018-01-15 20:28:26 +0000
commit638095125d98233c66832830e57433bd16c13573 (patch)
treef456528582c490d5794db58c414b59221bf4e8d9
parent57cb59787112aac395343e98f5cc4686560e74c9 (diff)
downloadmeson-638095125d98233c66832830e57433bd16c13573.zip
meson-638095125d98233c66832830e57433bd16c13573.tar.gz
meson-638095125d98233c66832830e57433bd16c13573.tar.bz2
Same for pcap
-rw-r--r--mesonbuild/dependencies/misc.py37
-rw-r--r--test cases/common/174 dependency factory/meson.build10
2 files changed, 27 insertions, 20 deletions
diff --git a/mesonbuild/dependencies/misc.py b/mesonbuild/dependencies/misc.py
index e46fb84..fc4bea5 100644
--- a/mesonbuild/dependencies/misc.py
+++ b/mesonbuild/dependencies/misc.py
@@ -811,35 +811,31 @@ class Python3Dependency(ExternalDependency):
class PcapDependency(ExternalDependency):
def __init__(self, environment, kwargs):
super().__init__('pcap', environment, None, kwargs)
- kwargs['required'] = False
- if DependencyMethods.PKGCONFIG in self.methods:
+
+ @classmethod
+ def _factory(cls, environment, kwargs):
+ methods = cls._process_method_kw(kwargs)
+ if DependencyMethods.PKGCONFIG in methods:
try:
pcdep = PkgConfigDependency('pcap', environment, kwargs)
if pcdep.found():
- self.type_name = 'pkgconfig'
- self.is_found = True
- self.compile_args = pcdep.get_compile_args()
- self.link_args = pcdep.get_link_args()
- self.version = pcdep.get_version()
- self.pcdep = pcdep
- return
+ return pcdep
except Exception as e:
mlog.debug('Pcap not found via pkgconfig. Trying next, error was:', str(e))
- if DependencyMethods.CONFIG_TOOL in self.methods:
+ if DependencyMethods.CONFIG_TOOL in methods:
try:
ctdep = ConfigToolDependency.factory(
'pcap', environment, None, kwargs, ['pcap-config'], 'pcap-config')
if ctdep.found():
- self.config = ctdep.config
- self.type_name = 'config-tool'
- self.compile_args = ctdep.get_config_value(['--cflags'], 'compile_args')
- self.link_args = ctdep.get_config_value(['--libs'], 'link_args')
- self.version = self.get_pcap_lib_version()
- self.is_found = True
- return
+ ctdep.compile_args = ctdep.get_config_value(['--cflags'], 'compile_args')
+ ctdep.link_args = ctdep.get_config_value(['--libs'], 'link_args')
+ ctdep.version = cls.get_pcap_lib_version(ctdep)
+ return ctdep
except Exception as e:
mlog.debug('Pcap not found via pcap-config. Trying next, error was:', str(e))
+ return PcapDependency(environment, kwargs)
+
@staticmethod
def get_methods():
if mesonlib.is_osx():
@@ -847,9 +843,10 @@ class PcapDependency(ExternalDependency):
else:
return [DependencyMethods.PKGCONFIG, DependencyMethods.CONFIG_TOOL]
- def get_pcap_lib_version(self):
- return self.compiler.get_return_value('pcap_lib_version', 'string',
- '#include <pcap.h>', self.env, [], [self])
+ @staticmethod
+ def get_pcap_lib_version(ctdep):
+ return ctdep.compiler.get_return_value('pcap_lib_version', 'string',
+ '#include <pcap.h>', ctdep.env, [], [ctdep])
class CupsDependency(ExternalDependency):
diff --git a/test cases/common/174 dependency factory/meson.build b/test cases/common/174 dependency factory/meson.build
index d564467..7736b41 100644
--- a/test cases/common/174 dependency factory/meson.build
+++ b/test cases/common/174 dependency factory/meson.build
@@ -19,3 +19,13 @@ dep = dependency('Vulkan', method: 'pkg-config', required: false)
if dep.found() and dep.type_name() == 'pkgconfig'
dep.get_pkgconfig_variable('prefix')
endif
+
+dep = dependency('pcap', method: 'pkg-config', required: false)
+if dep.found() and dep.type_name() == 'pkgconfig'
+ dep.get_pkgconfig_variable('prefix')
+endif
+
+dep = dependency('pcap', method: 'config-tool', required: false)
+if dep.found() and dep.type_name() == 'configtool'
+ dep.get_configtool_variable('prefix')
+endif