summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2024-07-30 13:30:16 -0700
committerDylan Baker <dylan@pnwbakers.com>2024-07-30 14:40:41 -0700
commita51be6b1c77cba06bec3f27cdb846e825e958c55 (patch)
treeb48fbc6bca8c51531605d522e42c1d203959fe12
parent03a8f35031c9ae0ded162f8b228c5b3f04643632 (diff)
downloadmeson-a51be6b1c77cba06bec3f27cdb846e825e958c55.tar.gz
backend/ninja: stop adding random attributes to BuildTargets
Instead of storing the generated header cache in the Target, store it in the NinjaBackend, as it really is just data for the NinjaBackend to use.
-rw-r--r--mesonbuild/backend/ninjabackend.py8
-rw-r--r--mesonbuild/build.py3
2 files changed, 5 insertions, 6 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index a911c90e0..1eeda96a8 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -503,6 +503,7 @@ class NinjaBackend(backends.Backend):
self.rust_crates: T.Dict[str, RustCrate] = {}
self.implicit_meson_outs: T.List[str] = []
self._uses_dyndeps = False
+ self._generated_header_cache: T.Dict[str, T.List[FileOrString]] = {}
# nvcc chokes on thin archives:
# nvlink fatal : Could not open input file 'libfoo.a.p'
# nvlink fatal : elfLink internal error
@@ -738,8 +739,9 @@ class NinjaBackend(backends.Backend):
# Get all generated headers. Any source file might need them so
# we need to add an order dependency to them.
def get_generated_headers(self, target: build.BuildTarget) -> T.List[FileOrString]:
- if hasattr(target, 'cached_generated_headers'):
- return target.cached_generated_headers
+ tid = target.get_id()
+ if tid in self._generated_header_cache:
+ return self._generated_header_cache[tid]
header_deps: T.List[FileOrString] = []
# XXX: Why don't we add deps to CustomTarget headers here?
for genlist in target.get_generated_sources():
@@ -757,7 +759,7 @@ class NinjaBackend(backends.Backend):
header_deps += self.get_generated_headers(dep)
if isinstance(target, build.CompileTarget):
header_deps.extend(target.get_generated_headers())
- target.cached_generated_headers = header_deps
+ self._generated_header_cache[tid] = header_deps
return header_deps
def get_target_generated_sources(self, target: build.BuildTarget) -> T.MutableMapping[str, File]:
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 3107673a7..42f1dcc9c 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -721,9 +721,6 @@ class BuildTarget(Target):
('cpp', 'cuda'),
])
- # This is used by the backend to cache complex computation.
- cached_generated_headers: T.Optional[T.List[FileOrString]]
-
def __init__(
self,
name: str,