From 1e4cddc4e228d1017e136cf9c444ec804acf168b Mon Sep 17 00:00:00 2001 From: "Adam C. Foltzer" Date: Tue, 11 Jul 2017 19:40:38 -0700 Subject: [PATCH] add `crate-name` to Rust target args This is required for downstream Rust dependencies to properly import libraries using `extern crate`. --- mesonbuild/backend/ninjabackend.py | 1 + test cases/rust/6 named staticlib/installed_files.txt | 2 ++ test cases/rust/6 named staticlib/meson.build | 5 +++++ test cases/rust/6 named staticlib/prog.rs | 3 +++ test cases/rust/6 named staticlib/stuff.rs | 1 + 5 files changed, 12 insertions(+) create mode 100644 test cases/rust/6 named staticlib/installed_files.txt create mode 100644 test cases/rust/6 named staticlib/meson.build create mode 100644 test cases/rust/6 named staticlib/prog.rs create mode 100644 test cases/rust/6 named staticlib/stuff.rs diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 7f974ee98119..2f545d0bd515 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1173,6 +1173,7 @@ def generate_rust_target(self, target, outfile): else: raise InvalidArguments('Unknown target type for rustc.') args.append(cratetype) + args += ['--crate-name', target.name] args += rustc.get_buildtype_args(self.get_option_for_target('buildtype', target)) depfile = os.path.join(target.subdir, target.name + '.d') args += ['--emit', 'dep-info={}'.format(depfile), '--emit', 'link'] diff --git a/test cases/rust/6 named staticlib/installed_files.txt b/test cases/rust/6 named staticlib/installed_files.txt new file mode 100644 index 000000000000..bd023efadfac --- /dev/null +++ b/test cases/rust/6 named staticlib/installed_files.txt @@ -0,0 +1,2 @@ +usr/bin/prog?exe +usr/lib/libnamed_stuff.rlib diff --git a/test cases/rust/6 named staticlib/meson.build b/test cases/rust/6 named staticlib/meson.build new file mode 100644 index 000000000000..f91b7a10a9d7 --- /dev/null +++ b/test cases/rust/6 named staticlib/meson.build @@ -0,0 +1,5 @@ +project('rust static library', 'rust') + +l = static_library('named_stuff', 'stuff.rs', install : true) +e = executable('prog', 'prog.rs', link_with : l, install : true) +test('linktest', e) diff --git a/test cases/rust/6 named staticlib/prog.rs b/test cases/rust/6 named staticlib/prog.rs new file mode 100644 index 000000000000..856c4b7d109f --- /dev/null +++ b/test cases/rust/6 named staticlib/prog.rs @@ -0,0 +1,3 @@ +extern crate named_stuff; + +fn main() { println!("printing: {}", named_stuff::explore()); } diff --git a/test cases/rust/6 named staticlib/stuff.rs b/test cases/rust/6 named staticlib/stuff.rs new file mode 100644 index 000000000000..9b36e57a1030 --- /dev/null +++ b/test cases/rust/6 named staticlib/stuff.rs @@ -0,0 +1 @@ +pub fn explore() -> &'static str { "librarystring" }