diff options
author | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2017-06-13 03:43:12 -0400 |
---|---|---|
committer | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2017-08-14 22:47:35 -0400 |
commit | ba6fdb996a56c10ce1517c2b97051619ea083f91 (patch) | |
tree | f3787fdcb69a127fa92062980cca00eee9ba6044 | |
parent | c09586462cbf36477a505dd3cdaa7a80da17dbbd (diff) | |
download | meson-ba6fdb996a56c10ce1517c2b97051619ea083f91.zip meson-ba6fdb996a56c10ce1517c2b97051619ea083f91.tar.gz meson-ba6fdb996a56c10ce1517c2b97051619ea083f91.tar.bz2 |
Simplify path-determination in compile-generation.
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 0587cff..4283896 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -2102,24 +2102,23 @@ rule FORTRAN_DEP_HACK self.target_arg_cache[key] = commands commands = CompilerArgs(commands.compiler, commands) - if isinstance(src, mesonlib.File) and src.is_built: - rel_src = os.path.join(src.subdir, src.fname) - if os.path.isabs(rel_src): - assert(rel_src.startswith(self.environment.get_build_dir())) - rel_src = rel_src[len(self.environment.get_build_dir()) + 1:] - abs_src = os.path.join(self.environment.get_build_dir(), rel_src) - elif isinstance(src, mesonlib.File): + if isinstance(src, File): + source_dir = self.environment.get_source_dir() + build_dir = self.environment.get_build_dir() + abs_src = src.absolute_path(source_dir, build_dir) rel_src = src.rel_to_builddir(self.build_to_src) - abs_src = src.absolute_path(self.environment.get_source_dir(), - self.environment.get_build_dir()) + if src.is_built: + assert abs_src.startswith(build_dir) + if os.path.isabs(rel_src): + rel_src = rel_src[len(build_dir) + 1:] + else: + # Source files may not be from the source directory if they originate in source-only libraries, + # so we can't assert that the absolute path is anywhere in particular. + pass elif is_generated: raise AssertionError('BUG: broken generated source file handling for {!r}'.format(src)) else: - if isinstance(src, File): - rel_src = src.rel_to_builddir(self.build_to_src) - else: - raise InvalidArguments('Invalid source type: {!r}'.format(src)) - abs_src = os.path.join(self.environment.get_build_dir(), rel_src) + raise InvalidArguments('Invalid source type: {!r}'.format(src)) if isinstance(src, File): if src.is_built: src_filename = os.path.join(src.subdir, src.fname) |