aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies/base.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-09-29 21:27:05 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-10-03 10:06:04 +0200
commit73d52266b5cf8e6b62d715328f0c66b1734c3026 (patch)
treeb8e0b6cbc1d9c378c802c235fdbb2713cbee7a7c /mesonbuild/dependencies/base.py
parente5c720ff607cdf3101de031ff3a36f434d77b0d1 (diff)
downloadmeson-73d52266b5cf8e6b62d715328f0c66b1734c3026.zip
meson-73d52266b5cf8e6b62d715328f0c66b1734c3026.tar.gz
meson-73d52266b5cf8e6b62d715328f0c66b1734c3026.tar.bz2
Use include_type instead of is_system
Diffstat (limited to 'mesonbuild/dependencies/base.py')
-rw-r--r--mesonbuild/dependencies/base.py52
1 files changed, 30 insertions, 22 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 1ccc343..3c55a56 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -105,12 +105,14 @@ class Dependency:
return methods
@classmethod
- def _process_is_system_kw(cls, kwargs):
- if 'is_system' not in kwargs:
- return False
- if not isinstance(kwargs['is_system'], bool):
- raise DependencyException('The is_system kwarg must be a boolean type')
- return kwargs['is_system']
+ def _process_include_type_kw(cls, kwargs) -> str:
+ if 'include_type' not in kwargs:
+ return 'preserve'
+ if not isinstance(kwargs['include_type'], str):
+ raise DependencyException('The include_type kwarg must be a string type')
+ if kwargs['include_type'] not in ['preserve', 'system', 'non-system']:
+ raise DependencyException("include_type may only be one of ['preserve', 'system', 'non-system']")
+ return kwargs['include_type']
def __init__(self, type_name, kwargs):
self.name = "null"
@@ -125,7 +127,7 @@ class Dependency:
self.raw_link_args = None
self.sources = []
self.methods = self._process_method_kw(kwargs)
- self.is_system = self._process_is_system_kw(kwargs)
+ self.include_type = self._process_include_type_kw(kwargs)
self.ext_deps = [] # type: List[Dependency]
def __repr__(self):
@@ -133,17 +135,23 @@ class Dependency:
return s.format(self.__class__.__name__, self.name, self.is_found)
def get_compile_args(self):
- if not self.is_system:
- return self.compile_args
-
- system_args = []
- for i in self.compile_args:
- if i.startswith('-I') or i.startswith('/I'):
- system_args += ['-isystem' + i[2:]]
- else:
- system_args += [i]
-
- return system_args
+ if self.include_type == 'system':
+ converted = []
+ for i in self.compile_args:
+ if i.startswith('-I') or i.startswith('/I'):
+ converted += ['-isystem' + i[2:]]
+ else:
+ converted += [i]
+ return converted
+ if self.include_type == 'non-system':
+ converted = []
+ for i in self.compile_args:
+ if i.startswith('-isystem'):
+ converted += ['-I' + i[8:]]
+ else:
+ converted += [i]
+ return converted
+ return self.compile_args
def get_link_args(self, raw=False):
if raw and self.raw_link_args is not None:
@@ -171,8 +179,8 @@ class Dependency:
else:
return 'unknown'
- def get_is_system(self) -> bool:
- return self.is_system
+ def get_include_type(self) -> str:
+ return self.include_type
def get_exe_args(self, compiler):
return []
@@ -222,9 +230,9 @@ class Dependency:
return default_value
raise DependencyException('No default provided for dependency {!r}, which is not pkg-config, cmake, or config-tool based.'.format(self))
- def generate_system_dependency(self, is_system: bool) -> typing.Type['Dependency']:
+ def generate_system_dependency(self, include_type: str) -> typing.Type['Dependency']:
new_dep = copy.deepcopy(self)
- new_dep.is_system = is_system
+ new_dep.include_type = self._process_include_type_kw({'include_type': include_type})
return new_dep
class InternalDependency(Dependency):