diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-09-24 22:37:22 +0200 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-10-03 10:06:03 +0200 |
commit | 8593506b7ba73e3025d7f94c4ea793af94a10e51 (patch) | |
tree | ed20e83514a2ba5499b47cf464d438a48f92bf04 /mesonbuild/dependencies/base.py | |
parent | f508b4cf80cfe924e87b9f2032299425706fff4a (diff) | |
download | meson-8593506b7ba73e3025d7f94c4ea793af94a10e51.zip meson-8593506b7ba73e3025d7f94c4ea793af94a10e51.tar.gz meson-8593506b7ba73e3025d7f94c4ea793af94a10e51.tar.bz2 |
add is_system kwarg to dependency
Also adds the is_system and as_system methods to
the dependency holder.
Diffstat (limited to 'mesonbuild/dependencies/base.py')
-rw-r--r-- | mesonbuild/dependencies/base.py | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py index 4e95c94..e5cb4bf 100644 --- a/mesonbuild/dependencies/base.py +++ b/mesonbuild/dependencies/base.py @@ -104,6 +104,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 __init__(self, type_name, kwargs): self.name = "null" self.version = None @@ -117,6 +125,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.ext_deps = [] # type: List[Dependency] def __repr__(self): @@ -124,7 +133,21 @@ class Dependency: return s.format(self.__class__.__name__, self.name, self.is_found) def get_compile_args(self): - return self.compile_args + 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'): + # -isystem and -idirafter, both mark directories as system + # directories. However, both affect the search oder, which + # can lead to nasty bugs with -isystem: + # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129 + system_args += ['-idirafter' + i[2:]] + else: + system_args += [i] + + return system_args def get_link_args(self, raw=False): if raw and self.raw_link_args is not None: @@ -152,6 +175,9 @@ class Dependency: else: return 'unknown' + def get_is_system(self) -> bool: + return self.is_system + def get_exe_args(self, compiler): return [] |