aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/backend/backends.py13
-rw-r--r--mesonbuild/backend/vs2010backend.py6
2 files changed, 12 insertions, 7 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 286afa9..fcb16ee 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -142,7 +142,7 @@ class Backend():
return os.path.relpath(os.path.join('dummyprefixdir', todir),\
os.path.join('dummyprefixdir', fromdir))
- def flatten_object_list(self, target, proj_dir_to_build_root=''):
+ def flatten_object_list(self, target, proj_dir_to_build_root='', include_dir_names=True):
obj_list = []
for obj in target.get_objects():
if isinstance(obj, str):
@@ -150,7 +150,7 @@ class Backend():
self.build_to_src, target.get_subdir(), obj)
obj_list.append(o)
elif isinstance(obj, build.ExtractedObjects):
- obj_list += self.determine_ext_objs(obj, proj_dir_to_build_root)
+ obj_list += self.determine_ext_objs(obj, proj_dir_to_build_root, include_dir_names)
else:
raise MesonException('Unknown data type in object list.')
return obj_list
@@ -207,7 +207,7 @@ class Backend():
return c
raise RuntimeError('Unreachable code')
- def determine_ext_objs(self, extobj, proj_dir_to_build_root=''):
+ def determine_ext_objs(self, extobj, proj_dir_to_build_root='', include_dir_names=True):
result = []
targetdir = self.get_target_private_dir(extobj.target)
suffix = '.' + self.environment.get_object_suffix()
@@ -221,7 +221,12 @@ class Backend():
if pathsegs[0] == 'subprojects':
pathsegs = pathsegs[2:]
fixedpath = os.sep.join(pathsegs)
- objbase = osrc.fname.replace('/', '_').replace('\\', '_')
+ if include_dir_names:
+ objbase = osrc_base.replace('/', '_').replace('\\', '_')
+ else:
+ # vs2010 backend puts all obj files without directory prefixes into build dir, so just
+ # use the file name without a directory (will be stripped by os.path.basename() below).
+ objbase = osrc_base
objname = os.path.join(proj_dir_to_build_root,
targetdir, os.path.basename(objbase) + suffix)
result.append(objname)
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index a72681b..5a9211f 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -36,7 +36,7 @@ class Vs2010Backend(backends.Backend):
super().__init__(build)
self.project_file_version = '10.0.30319.1'
# foo.c compiles to foo.obj, not foo.c.obj
- self.source_suffix_in_obj = False
+ self.source_suffix_in_objs = False
def generate_custom_generator_commands(self, target, parent_node):
all_output_files = []
@@ -116,7 +116,7 @@ class Vs2010Backend(backends.Backend):
result = {}
for o in obj_list:
if isinstance(o, build.ExtractedObjects):
- result[o.target.get_basename()] = True
+ result[o.target.get_id()] = True
return result.keys()
def determine_deps(self, p):
@@ -492,7 +492,7 @@ class Vs2010Backend(backends.Backend):
rel_path = self.relpath(lobj.subdir, target.subdir)
linkname = os.path.join(rel_path, lobj.get_import_filename())
additional_links.append(linkname)
- for o in self.flatten_object_list(target, down):
+ for o in self.flatten_object_list(target, down, include_dir_names=False):
assert(isinstance(o, str))
additional_links.append(o)
if len(additional_links) > 0: