Skip to content

Commit

Permalink
Revert "backends: Make object_filename_from_source() backend-agnostic"
Browse files Browse the repository at this point in the history
This reverts commit df69262.
  • Loading branch information
eli-schwartz committed Feb 1, 2024
1 parent e79ffe3 commit 651cda4
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 10 deletions.
14 changes: 6 additions & 8 deletions mesonbuild/backend/backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -834,7 +834,7 @@ def canonicalize_filename(fname: str) -> str:
fname = fname.replace(ch, '_')
return hashed + fname

def object_filename_from_source(self, target: build.BuildTarget, source: 'FileOrString', targetdir: T.Optional[str] = None) -> str:
def object_filename_from_source(self, target: build.BuildTarget, source: 'FileOrString') -> str:
assert isinstance(source, mesonlib.File)
if isinstance(target, build.CompileTarget):
return target.sources_map[source]
Expand All @@ -855,8 +855,9 @@ def object_filename_from_source(self, target: build.BuildTarget, source: 'FileOr
elif source.is_built:
if os.path.isabs(rel_src):
rel_src = rel_src[len(build_dir) + 1:]
targetdir = self.get_target_private_dir(target)
# A meson- prefixed directory is reserved; hopefully no-one creates a file name with such a weird prefix.
gen_source = 'meson-generated_' + os.path.relpath(rel_src, self.get_target_private_dir(target))
gen_source = 'meson-generated_' + os.path.relpath(rel_src, targetdir)
else:
if os.path.isabs(rel_src):
# Use the absolute path directly to avoid file name conflicts
Expand All @@ -865,10 +866,7 @@ def object_filename_from_source(self, target: build.BuildTarget, source: 'FileOr
gen_source = os.path.relpath(os.path.join(build_dir, rel_src),
os.path.join(self.environment.get_source_dir(), target.get_subdir()))
machine = self.environment.machines[target.for_machine]
ret = self.canonicalize_filename(gen_source) + '.' + machine.get_object_suffix()
if targetdir is not None:
return os.path.join(targetdir, ret)
return ret
return self.canonicalize_filename(gen_source) + '.' + machine.get_object_suffix()

def _determine_ext_objs(self, extobj: 'build.ExtractedObjects', proj_dir_to_build_root: str) -> T.List[str]:
result: T.List[str] = []
Expand Down Expand Up @@ -922,8 +920,8 @@ def _determine_ext_objs(self, extobj: 'build.ExtractedObjects', proj_dir_to_buil
sources.append(_src)

for osrc in sources:
objname = self.object_filename_from_source(extobj.target, osrc, targetdir)
objpath = os.path.join(proj_dir_to_build_root, objname)
objname = self.object_filename_from_source(extobj.target, osrc)
objpath = os.path.join(proj_dir_to_build_root, targetdir, objname)
result.append(objpath)

return result
Expand Down
4 changes: 3 additions & 1 deletion mesonbuild/backend/vs2010backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -1448,10 +1448,12 @@ def add_non_makefile_vcxproj_elements(
extra_link_args.append(path[:-len(gen_src_ext)] + '.obj')

for src in l.srclist:
obj_basename = None
if self.environment.is_source(src):
obj_basename = self.object_filename_from_source(t, src)
target_private_dir = self.relpath(self.get_target_private_dir(t),
self.get_target_dir(t))
rel_obj = self.object_filename_from_source(t, src, target_private_dir)
rel_obj = os.path.join(target_private_dir, obj_basename)
extra_link_args.append(rel_obj)

extra_link_args.extend(self.flatten_object_list(t))
Expand Down
2 changes: 1 addition & 1 deletion mesonbuild/backend/xcodebackend.py
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ def get_custom_target_output_dir(self, target: T.Union[build.Target, build.Custo
os.makedirs(os.path.join(self.environment.get_build_dir(), dirname), exist_ok=True)
return dirname

def object_filename_from_source(self, target: build.BuildTarget, source: mesonlib.FileOrString, targetdir: T.Optional[str] = None) -> str:
def object_filename_from_source(self, target: build.BuildTarget, source: mesonlib.FileOrString) -> str:
# Xcode has the following naming scheme:
# projectname.build/debug/prog@exe.build/Objects-normal/x86_64/func.o
project = self.build.project_name
Expand Down

0 comments on commit 651cda4

Please sign in to comment.