aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/interpreter.py3
-rw-r--r--test cases/common/182 find override/meson.build10
2 files changed, 11 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 0d4c37d..e2f0f88 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2324,7 +2324,6 @@ to directly access options of other subprojects.''')
required = kwargs.get('required', True)
if not isinstance(required, bool):
raise InvalidArguments('"required" argument must be a boolean.')
- self.store_name_lookups(args)
progobj = self.program_from_overrides(args)
if progobj is None and self.build.environment.is_cross_build():
use_native = kwargs.get('native', False)
@@ -2338,6 +2337,8 @@ to directly access options of other subprojects.''')
raise InvalidArguments('Program(s) {!r} not found or not executable'.format(args))
if progobj is None:
return ExternalProgramHolder(dependencies.NonExistingExternalProgram())
+ # Only store successful lookups
+ self.store_name_lookups(args)
return progobj
def func_find_library(self, node, args, kwargs):
diff --git a/test cases/common/182 find override/meson.build b/test cases/common/182 find override/meson.build
index ebf3a05..3b8af80 100644
--- a/test cases/common/182 find override/meson.build
+++ b/test cases/common/182 find override/meson.build
@@ -1,4 +1,12 @@
project('find program override', 'c')
-subdir('subdir')
+gencodegen = find_program('gencodegen', required : false)
+
+assert(not gencodegen.found(), 'gencodegen is an internal program, should not be found')
+
+# Test the check-if-found-else-override workflow
+if not gencodegen.found()
+ subdir('subdir')
+endif
+
subdir('otherdir')