aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--backends.py3
-rw-r--r--test cases/common/54 same file name/d1/file.c1
-rw-r--r--test cases/common/54 same file name/d2/file.c1
-rw-r--r--test cases/common/54 same file name/meson.build3
-rw-r--r--test cases/common/54 same file name/prog.c6
5 files changed, 13 insertions, 1 deletions
diff --git a/backends.py b/backends.py
index 4af9be2..c92f48e 100644
--- a/backends.py
+++ b/backends.py
@@ -878,7 +878,8 @@ class NinjaBackend(Backend):
src_filename = os.path.basename(src)
else:
src_filename = src
- rel_obj = os.path.join(self.get_target_private_dir(target), os.path.basename(src_filename))
+ obj_basename = src_filename.replace('/', '_').replace('\\', '_')
+ rel_obj = os.path.join(self.get_target_private_dir(target), obj_basename)
rel_obj += '.' + self.environment.get_object_suffix()
dep_file = rel_obj + '.' + compiler.get_depfile_suffix()
if self.environment.coredata.use_pch:
diff --git a/test cases/common/54 same file name/d1/file.c b/test cases/common/54 same file name/d1/file.c
new file mode 100644
index 0000000..8084d73
--- /dev/null
+++ b/test cases/common/54 same file name/d1/file.c
@@ -0,0 +1 @@
+int func1() { return 42; }
diff --git a/test cases/common/54 same file name/d2/file.c b/test cases/common/54 same file name/d2/file.c
new file mode 100644
index 0000000..d1444a2
--- /dev/null
+++ b/test cases/common/54 same file name/d2/file.c
@@ -0,0 +1 @@
+int func2() { return 42; }
diff --git a/test cases/common/54 same file name/meson.build b/test cases/common/54 same file name/meson.build
new file mode 100644
index 0000000..3f351af
--- /dev/null
+++ b/test cases/common/54 same file name/meson.build
@@ -0,0 +1,3 @@
+project('samefile', 'c')
+
+test('basic', executable('prog', 'prog.c', 'd1/file.c', 'd2/file.c'))
diff --git a/test cases/common/54 same file name/prog.c b/test cases/common/54 same file name/prog.c
new file mode 100644
index 0000000..3441288
--- /dev/null
+++ b/test cases/common/54 same file name/prog.c
@@ -0,0 +1,6 @@
+int func1();
+int func2();
+
+int main(int argc, char **argv) {
+ return func1() - func2();
+}