diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2021-01-25 18:24:28 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-25 18:24:28 +0000 |
commit | bb6385111a60793c6adc88df229a819ffb132fab (patch) | |
tree | 9592cee7f6412257b9fba857c4b5b0c3ccd32a93 | |
parent | f0881cf36548e24b07cf4d4a5ff8c22bb0c83826 (diff) | |
parent | d02149ad90fe9c922c3511528f7748b4378b6e67 (diff) | |
download | meson-bb6385111a60793c6adc88df229a819ffb132fab.zip meson-bb6385111a60793c6adc88df229a819ffb132fab.tar.gz meson-bb6385111a60793c6adc88df229a819ffb132fab.tar.bz2 |
Merge pull request #8236 from dcbaker/submit/rust-fix-generated-sources-in-subdir
Submit/rust fix generated sources in subdir
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 2 | ||||
-rw-r--r-- | test cases/rust/11 generated main/gen.py | 6 | ||||
-rw-r--r-- | test cases/rust/11 generated main/generated_lib_main.rs | 5 | ||||
-rw-r--r-- | test cases/rust/11 generated main/meson.build | 9 | ||||
-rw-r--r-- | test cases/rust/11 generated main/sub/meson.build | 13 |
5 files changed, 31 insertions, 4 deletions
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 021fbb2..dd70ae0 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1593,7 +1593,7 @@ int dummy; if isinstance(g, GeneratedList): fname = os.path.join(self.get_target_private_dir(target), i) else: - fname = i + fname = os.path.join(g.get_subdir(), i) if main_rust_file is None: main_rust_file = fname orderdeps.append(fname) diff --git a/test cases/rust/11 generated main/gen.py b/test cases/rust/11 generated main/gen.py index ebbc2a7..c8cfe76 100644 --- a/test cases/rust/11 generated main/gen.py +++ b/test cases/rust/11 generated main/gen.py @@ -6,10 +6,14 @@ import argparse def main() -> None: parser = argparse.ArgumentParser() parser.add_argument('out') + parser.add_argument('--mode', choices=['main', 'lib'], default='main') args = parser.parse_args() with open(args.out, 'w') as f: - f.write('fn main() { println!("I prefer tarnish, actually.") }') + if args.mode == 'main': + f.write('fn main() { println!("I prefer tarnish, actually.") }') + elif args.mode == 'lib': + f.write('pub fn libfun() { println!("I prefer tarnish, actually.") }') if __name__ == "__main__": diff --git a/test cases/rust/11 generated main/generated_lib_main.rs b/test cases/rust/11 generated main/generated_lib_main.rs new file mode 100644 index 0000000..d9b373e --- /dev/null +++ b/test cases/rust/11 generated main/generated_lib_main.rs @@ -0,0 +1,5 @@ +extern crate static_lib_generated as lib; + +fn main() { + lib::libfun(); +} diff --git a/test cases/rust/11 generated main/meson.build b/test cases/rust/11 generated main/meson.build index 4749816..695124c 100644 --- a/test cases/rust/11 generated main/meson.build +++ b/test cases/rust/11 generated main/meson.build @@ -11,6 +11,11 @@ c = custom_target( executable('custom_target_main', c) executable('custom_target_index_main', c[0]) -gen = generator(gen, arguments : ['@OUTPUT@'], output : '@BASENAME@.rs') +gener = generator(gen, arguments : ['@OUTPUT@'], output : '@BASENAME@.rs') # Doesn't actually use gen.py as input, just a limitation of generators -executable('generator_main', gen.process(['gen.py'])) +executable('generator_main', gener.process(['gen.py'])) + +subdir('sub') +executable('custom_target_subdir_main', s) + +executable('link_with_generated_lib', 'generated_lib_main.rs', link_with : lib) diff --git a/test cases/rust/11 generated main/sub/meson.build b/test cases/rust/11 generated main/sub/meson.build new file mode 100644 index 0000000..3ce96e5 --- /dev/null +++ b/test cases/rust/11 generated main/sub/meson.build @@ -0,0 +1,13 @@ +s = custom_target( + 'subdir_target', + command : [gen, '@OUTPUT@'], + output : ['main.rs'], +) + +l = custom_target( + 'lib_target', + command : [gen, '@OUTPUT@', '--mode', 'lib'], + output : ['lib.rs'], +) + +lib = static_library('static_lib_generated', l) |