diff options
Diffstat (limited to 'mesonbuild/backend/ninjabackend.py')
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 614e864..c630cc3 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1231,10 +1231,11 @@ class NinjaBackend(backends.Backend): elem = NinjaBuildElement(self.all_outputs, 'PHONY', 'phony', '') self.add_build(elem) - def generate_jar_target(self, target): + def generate_jar_target(self, target: build.Jar): fname = target.get_filename() outname_rel = os.path.join(self.get_target_dir(target), fname) src_list = target.get_sources() + resources = target.get_java_resources() class_list = [] compiler = target.compilers['java'] c = 'c' @@ -1280,6 +1281,9 @@ class NinjaBackend(backends.Backend): commands += ['-C', self.get_target_private_dir(target), '.'] elem = NinjaBuildElement(self.all_outputs, outname_rel, jar_rule, []) elem.add_dep(class_dep_list) + if resources: + # Copy all resources into the root of the jar. + elem.add_orderdep(self.__generate_sources_structure(Path(self.get_target_private_dir(target)), resources)[0]) elem.add_item('ARGS', commands) self.add_build(elem) # Create introspection information @@ -1663,11 +1667,10 @@ class NinjaBackend(backends.Backend): elem.add_orderdep(instr) self.add_build(elem) - def __generate_compile_structure(self, target: build.BuildTarget) -> T.Tuple[T.List[str], T.Optional[str]]: + def __generate_sources_structure(self, root: Path, structured_sources: build.StructuredSources) -> T.Tuple[T.List[str], T.Optional[str]]: first_file: T.Optional[str] = None orderdeps: T.List[str] = [] - root = Path(self.get_target_private_dir(target)) / 'structured' - for path, files in target.structured_sources.sources.items(): + for path, files in structured_sources.sources.items(): for file in files: if isinstance(file, File): out = root / path / Path(file.fname).name @@ -1706,7 +1709,8 @@ class NinjaBackend(backends.Backend): main_rust_file = None if target.structured_sources: if target.structured_sources.needs_copy(): - _ods, main_rust_file = self.__generate_compile_structure(target) + _ods, main_rust_file = self.__generate_sources_structure(Path( + self.get_target_private_dir(target)) / 'structured', target.structured_sources) orderdeps.extend(_ods) else: # The only way to get here is to have only files in the "root" |