aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2021-01-25 18:24:28 +0000
committerGitHub <noreply@github.com>2021-01-25 18:24:28 +0000
commitbb6385111a60793c6adc88df229a819ffb132fab (patch)
tree9592cee7f6412257b9fba857c4b5b0c3ccd32a93
parentf0881cf36548e24b07cf4d4a5ff8c22bb0c83826 (diff)
parentd02149ad90fe9c922c3511528f7748b4378b6e67 (diff)
downloadmeson-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.py2
-rw-r--r--test cases/rust/11 generated main/gen.py6
-rw-r--r--test cases/rust/11 generated main/generated_lib_main.rs5
-rw-r--r--test cases/rust/11 generated main/meson.build9
-rw-r--r--test cases/rust/11 generated main/sub/meson.build13
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)