diff options
author | Tristan Partin <tristan@partin.io> | 2022-03-01 12:05:28 -0600 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2022-03-22 13:21:26 +0200 |
commit | 39f1d52e4a82cc75a4a3a41c3cc17fe2dabdb30b (patch) | |
tree | ec8855a6f7ea0c937736f366258ae8ca2629ea9d /mesonbuild/backend | |
parent | a559dbe70d113ebaa9bab406e371e54251d66e71 (diff) | |
download | meson-39f1d52e4a82cc75a4a3a41c3cc17fe2dabdb30b.zip meson-39f1d52e4a82cc75a4a3a41c3cc17fe2dabdb30b.tar.gz meson-39f1d52e4a82cc75a4a3a41c3cc17fe2dabdb30b.tar.bz2 |
Add ability to add resources to jars
Previously Meson lacked the ability to add resources to jar files.
Fixes #9945
Diffstat (limited to 'mesonbuild/backend')
-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" |