diff options
Diffstat (limited to 'mesonbuild/backend/backends.py')
-rw-r--r-- | mesonbuild/backend/backends.py | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index 8d0b0f6..af3f9f2 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='', include_dir_names=True): + def flatten_object_list(self, target, proj_dir_to_build_root=''): 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, include_dir_names) + obj_list += self.determine_ext_objs(obj, proj_dir_to_build_root) else: raise MesonException('Unknown data type in object list.') return obj_list @@ -210,28 +210,21 @@ class Backend(): return c raise RuntimeError('Unreachable code') - def determine_ext_objs(self, extobj, proj_dir_to_build_root='', include_dir_names=True): + def object_filename_from_source(self, target, source): + return source.fname.replace('/', '_').replace('\\', '_') + '.' + self.environment.get_object_suffix() + + def determine_ext_objs(self, extobj, proj_dir_to_build_root=''): result = [] targetdir = self.get_target_private_dir(extobj.target) - suffix = '.' + self.environment.get_object_suffix() for osrc in extobj.srclist: - osrc_base = osrc.fname - if not self.source_suffix_in_objs: - osrc_base = '.'.join(osrc.split('.')[:-1]) # If extracting in a subproject, the subproject # name gets duplicated in the file name. pathsegs = osrc.subdir.split(os.sep) if pathsegs[0] == 'subprojects': pathsegs = pathsegs[2:] fixedpath = os.sep.join(pathsegs) - 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) + objname = os.path.join(proj_dir_to_build_root, targetdir, + self.object_filename_from_source(extobj.target, osrc)) result.append(objname) return result |