diff options
| author | Dylan Baker <dylan@pnwbakers.com> | 2024-07-30 13:30:16 -0700 |
|---|---|---|
| committer | Dylan Baker <dylan@pnwbakers.com> | 2024-07-30 14:40:41 -0700 |
| commit | a51be6b1c77cba06bec3f27cdb846e825e958c55 (patch) | |
| tree | b48fbc6bca8c51531605d522e42c1d203959fe12 | |
| parent | 03a8f35031c9ae0ded162f8b228c5b3f04643632 (diff) | |
| download | meson-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.py | 8 | ||||
| -rw-r--r-- | mesonbuild/build.py | 3 |
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, |
