diff --git a/mesonbuild/cargo/interpreter.py b/mesonbuild/cargo/interpreter.py index 2797f9fe074e..3cbc453ef73c 100644 --- a/mesonbuild/cargo/interpreter.py +++ b/mesonbuild/cargo/interpreter.py @@ -206,6 +206,7 @@ class Library(BuildTarget): doctest: bool = True doc: bool = True + path: str = os.path.join('src', 'lib.rs') proc_macro: bool = False crate_type: T.List[manifest.CRATE_TYPE] = dataclasses.field(default_factory=lambda: ['lib']) doc_scrape_examples: bool = True @@ -606,7 +607,7 @@ def _create_lib(cargo: Manifest, build: builder.Builder, crate_type: manifest.CR posargs: T.List[mparser.BaseNode] = [ build.string(fixup_meson_varname(cargo.package.name)), - build.string(os.path.join('src', 'lib.rs')), + build.string(cargo.lib.path), ] kwargs: T.Dict[str, mparser.BaseNode] = { @@ -696,7 +697,7 @@ def interpret(subp_name: str, subdir: str, env: Environment) -> T.Tuple[mparser. # Libs are always auto-discovered and there's no other way to handle them, # which is unfortunate for reproducability - if os.path.exists(os.path.join(env.source_dir, cargo.subdir, cargo.path, 'src', 'lib.rs')): + if os.path.exists(os.path.join(env.source_dir, cargo.subdir, cargo.path, cargo.lib.path)): for crate_type in cargo.lib.crate_type: ast.extend(_create_lib(cargo, build, crate_type)) diff --git a/test cases/rust/22 cargo subproject/subprojects/foo-rs/Cargo.toml b/test cases/rust/22 cargo subproject/subprojects/foo-rs/Cargo.toml index 796548d63f2a..0f0225d06cc9 100644 --- a/test cases/rust/22 cargo subproject/subprojects/foo-rs/Cargo.toml +++ b/test cases/rust/22 cargo subproject/subprojects/foo-rs/Cargo.toml @@ -5,6 +5,7 @@ edition = "2021" [lib] crate-type = ["cdylib"] +path = "lib.rs" # This dependency does not exist, verify optional works. [dependencies.notfound] diff --git a/test cases/rust/22 cargo subproject/subprojects/foo-rs/src/lib.rs b/test cases/rust/22 cargo subproject/subprojects/foo-rs/lib.rs similarity index 100% rename from test cases/rust/22 cargo subproject/subprojects/foo-rs/src/lib.rs rename to test cases/rust/22 cargo subproject/subprojects/foo-rs/lib.rs