diff options
author | Xavier Claessens <xavier.claessens@collabora.com> | 2024-02-27 14:51:25 -0500 |
---|---|---|
committer | Xavier Claessens <xclaesse@gmail.com> | 2024-02-29 11:35:28 -0500 |
commit | aee941559c4b88a062e88186819a820c69c200ae (patch) | |
tree | db731fd57ddc9a5718d6a444472c3189357f7843 /test cases | |
parent | 937d1c639a9a83e0671e7e4cd3686ca3e8c9566b (diff) | |
download | meson-aee941559c4b88a062e88186819a820c69c200ae.zip meson-aee941559c4b88a062e88186819a820c69c200ae.tar.gz meson-aee941559c4b88a062e88186819a820c69c200ae.tar.bz2 |
rust: recursively pull proc-macro dependencies as well
When the proc-macro rlib is in a different subdir, it would miss the
needed -L argument and rustc would not find it. Meson was assuming that
proc-macros are only needed when building libraries that uses it, but it
turns out that was wrong, as show by the unit test.
Diffstat (limited to 'test cases')
-rw-r--r-- | test cases/rust/18 proc-macro/lib.rs | 8 | ||||
-rw-r--r-- | test cases/rust/18 proc-macro/meson.build | 11 | ||||
-rw-r--r-- | test cases/rust/18 proc-macro/subdir/meson.build | 1 | ||||
-rw-r--r-- | test cases/rust/18 proc-macro/transitive-proc-macro.rs | 7 |
4 files changed, 27 insertions, 0 deletions
diff --git a/test cases/rust/18 proc-macro/lib.rs b/test cases/rust/18 proc-macro/lib.rs new file mode 100644 index 0000000..5242886 --- /dev/null +++ b/test cases/rust/18 proc-macro/lib.rs @@ -0,0 +1,8 @@ +extern crate proc_macro_examples; +use proc_macro_examples::make_answer; + +make_answer!(); + +pub fn func() -> u32 { + answer() +} diff --git a/test cases/rust/18 proc-macro/meson.build b/test cases/rust/18 proc-macro/meson.build index c5f0dfc..e8b28ed 100644 --- a/test cases/rust/18 proc-macro/meson.build +++ b/test cases/rust/18 proc-macro/meson.build @@ -31,3 +31,14 @@ main = executable( ) test('main_test2', main) + +subdir('subdir') + +staticlib = static_library('staticlib', 'lib.rs', + link_with: pm_in_subdir, + rust_dependency_map : {'proc_macro_examples3' : 'proc_macro_examples'} +) + +executable('transitive-proc-macro', 'transitive-proc-macro.rs', + link_with: staticlib, +) diff --git a/test cases/rust/18 proc-macro/subdir/meson.build b/test cases/rust/18 proc-macro/subdir/meson.build new file mode 100644 index 0000000..04842c4 --- /dev/null +++ b/test cases/rust/18 proc-macro/subdir/meson.build @@ -0,0 +1 @@ +pm_in_subdir = rust.proc_macro('proc_macro_examples3', '../proc.rs') diff --git a/test cases/rust/18 proc-macro/transitive-proc-macro.rs b/test cases/rust/18 proc-macro/transitive-proc-macro.rs new file mode 100644 index 0000000..4c804b3 --- /dev/null +++ b/test cases/rust/18 proc-macro/transitive-proc-macro.rs @@ -0,0 +1,7 @@ +extern crate staticlib; +use staticlib::func; + + +fn main() { + assert_eq!(42, func()); +} |