aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--interpreter.py9
-rw-r--r--test cases/failing/2 missing file/meson.build3
2 files changed, 12 insertions, 0 deletions
diff --git a/interpreter.py b/interpreter.py
index 5095640..2e1cced 100644
--- a/interpreter.py
+++ b/interpreter.py
@@ -1178,11 +1178,20 @@ class Interpreter():
sources += kw_src
if name in self.build.targets:
raise InvalidCode('Tried to create target "%s", but a target of that name already exists.' % name)
+ self.check_sources_exist(os.path.join(self.environment.source_dir, self.subdir), sources)
l = targetclass(name, self.subdir, sources, self.environment, kwargs)
self.build.targets[name] = l
mlog.log('Creating build target "', mlog.bold(name), '" with %d files.' % len(sources), sep='')
return l
+ def check_sources_exist(self, subdir, sources):
+ for s in sources:
+ if not isinstance(s, str):
+ continue # This means a generated source and they always exist.
+ fname = os.path.join(subdir, s)
+ if not os.path.isfile(fname):
+ raise InterpreterException('Tried to add non-existing source %s.' % s)
+
def function_call(self, node):
func_name = node.get_function_name()
(posargs, kwargs) = self.reduce_arguments(node.arguments)
diff --git a/test cases/failing/2 missing file/meson.build b/test cases/failing/2 missing file/meson.build
new file mode 100644
index 0000000..6b9133d
--- /dev/null
+++ b/test cases/failing/2 missing file/meson.build
@@ -0,0 +1,3 @@
+project('missing file', 'c')
+
+executable('prog', 'missing.c')