From 8e29f2b16079e0f9ff3b85d45e7592fcdcd50775 Mon Sep 17 00:00:00 2001 From: Jussi Pakkanen Date: Mon, 24 Feb 2014 22:00:37 +0200 Subject: [PATCH] Can have multiple source files with the same name in one target. --- backends.py | 3 ++- test cases/common/54 same file name/d1/file.c | 1 + test cases/common/54 same file name/d2/file.c | 1 + test cases/common/54 same file name/meson.build | 3 +++ test cases/common/54 same file name/prog.c | 6 ++++++ 5 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 test cases/common/54 same file name/d1/file.c create mode 100644 test cases/common/54 same file name/d2/file.c create mode 100644 test cases/common/54 same file name/meson.build create mode 100644 test cases/common/54 same file name/prog.c diff --git a/backends.py b/backends.py index 4af9be26f..c92f48eb8 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 000000000..8084d7351 --- /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 000000000..d1444a24c --- /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 000000000..3f351afc1 --- /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 000000000..344128892 --- /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(); +}