aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py14
-rw-r--r--mesonbuild/environment.py2
2 files changed, 13 insertions, 3 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index d10e1e9..a044ab5 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -873,14 +873,22 @@ class Backend:
result[dep.get_id()] = dep
return result
+ @lru_cache(maxsize=None)
+ def get_custom_target_provided_by_generated_source(self, generated_source):
+ libs = []
+ for f in generated_source.get_outputs():
+ if self.environment.is_library(f):
+ libs.append(os.path.join(self.get_target_dir(generated_source), f))
+ return libs
+
+ @lru_cache(maxsize=None)
def get_custom_target_provided_libraries(self, target):
libs = []
for t in target.get_generated_sources():
if not isinstance(t, build.CustomTarget):
continue
- for f in t.get_outputs():
- if self.environment.is_library(f):
- libs.append(os.path.join(self.get_target_dir(t), f))
+ l = self.get_custom_target_provided_by_generated_source(t)
+ libs = libs + l
return libs
def is_unity(self, target):
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index 6b536a4..ff4a6b1 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -38,6 +38,7 @@ from .compilers import (
is_object,
is_source,
)
+from functools import lru_cache
from .compilers import (
ArmCCompiler,
ArmCPPCompiler,
@@ -572,6 +573,7 @@ class Environment:
def is_object(self, fname):
return is_object(fname)
+ @lru_cache(maxsize=None)
def is_library(self, fname):
return is_library(fname)