aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/build.py2
-rw-r--r--mesonbuild/interpreter.py9
2 files changed, 10 insertions, 1 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 8163bca..2426417 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -270,6 +270,8 @@ class EnvironmentVariables:
class Target:
def __init__(self, name, subdir, build_by_default):
+ if '/' in name or '\\' in name:
+ raise InvalidArguments('Target name must not contain a path separator.')
self.name = name
self.subdir = subdir
self.build_by_default = build_by_default
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 948a6d4..63725ab 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2593,7 +2593,14 @@ different subdirectory.
else:
mlog.debug('Unknown target type:', str(targetholder))
raise RuntimeError('Unreachable code')
- target = targetclass(name, self.subdir, self.subproject, is_cross, sources, objs, self.environment, kwargs)
+ # Fix failing test 53 when removing this.
+ if '/' in name or '\\' in name:
+ mlog.warning('Target name must not contain a path separator. This will become a hard error in a future release.')
+ subpart, name = os.path.split(name)
+ subdir = os.path.join(self.subdir, subpart)
+ else:
+ subdir = self.subdir
+ target = targetclass(name, subdir, self.subproject, is_cross, sources, objs, self.environment, kwargs)
if is_cross:
self.add_cross_stdlib_info(target)
l = targetholder(target, self)