aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2016-11-18 22:39:24 +0200
committerJussi Pakkanen <jpakkane@gmail.com>2016-11-20 16:54:19 -0500
commit0250b2cce633f2c66850e88cb9ccc0f17b6fa95a (patch)
tree4c3e3c04ae80df8a344aee948619c886832cc842
parent82bb24b264a1d46c7037b69f1cc10b123bbcf9b5 (diff)
downloadmeson-0250b2cce633f2c66850e88cb9ccc0f17b6fa95a.zip
meson-0250b2cce633f2c66850e88cb9ccc0f17b6fa95a.tar.gz
meson-0250b2cce633f2c66850e88cb9ccc0f17b6fa95a.tar.bz2
Can give many alternative names to find_program to simplify searching.
-rw-r--r--mesonbuild/interpreter.py12
-rw-r--r--test cases/common/31 find program/meson.build2
2 files changed, 9 insertions, 5 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index b20d98c..3b9f975 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1825,18 +1825,22 @@ class Interpreter():
break
self.coredata.base_options[optname] = oobj
+ @stringArgs
def func_find_program(self, node, args, kwargs):
- self.validate_arguments(args, 1, [str])
+ if len(args) == 0:
+ raise InterpreterException('No program name specified.')
required = kwargs.get('required', True)
if not isinstance(required, bool):
raise InvalidArguments('"required" argument must be a boolean.')
- exename = args[0]
# Search for scripts relative to current subdir.
# Do not cache found programs because find_program('foobar')
# might give different results when run from different source dirs.
search_dir = os.path.join(self.environment.get_source_dir(), self.subdir)
- extprog = dependencies.ExternalProgram(exename, search_dir=search_dir)
- progobj = ExternalProgramHolder(extprog)
+ for exename in args:
+ extprog = dependencies.ExternalProgram(exename, search_dir=search_dir)
+ progobj = ExternalProgramHolder(extprog)
+ if progobj.found():
+ return progobj
if required and not progobj.found():
raise InvalidArguments('Program "%s" not found.' % exename)
return progobj
diff --git a/test cases/common/31 find program/meson.build b/test cases/common/31 find program/meson.build
index ae71703..ba5386d 100644
--- a/test cases/common/31 find program/meson.build
+++ b/test cases/common/31 find program/meson.build
@@ -9,7 +9,7 @@ if build_machine.system() == 'windows'
# the program can be found.
cp = find_program('xcopy')
else
- cp = find_program('cp')
+ cp = find_program('donotfindme', 'cp')
gen = generator(cp, \
output : '@BASENAME@.c', \
arguments : ['@INPUT@', '@OUTPUT@'])