diff --git a/docs/markdown/Wrap-dependency-system-manual.md b/docs/markdown/Wrap-dependency-system-manual.md index 9bb7a842648c..d84e4aa186d2 100644 --- a/docs/markdown/Wrap-dependency-system-manual.md +++ b/docs/markdown/Wrap-dependency-system-manual.md @@ -297,6 +297,9 @@ fallback to use the subproject, assuming it uses ### CMake wraps +**Note**: This is experimental and has no backwards or forwards compatibility guarantees. +See [Meson's rules on mixing build systems](Mixing-build-systems.md). + Since the CMake module does not know the public name of the provided dependencies, a CMake `.wrap` file cannot use the `dependency_names = foo` syntax. Instead, the `dep_name = _dep` syntax should be used, where @@ -316,6 +319,9 @@ foo-bar-1.0 = foo_bar_dep ``` ### Cargo wraps +**Note**: This is experimental and has no backwards or forwards compatibility guarantees. +See [Meson's rules on mixing build systems](Mixing-build-systems.md). + Cargo subprojects automatically override the `--rs` dependency name: - `package_name` is defined in `[package] name = ...` section of the `Cargo.toml`. diff --git a/docs/markdown/snippets/cargo_exp.md b/docs/markdown/snippets/cargo_exp.md new file mode 100644 index 000000000000..34d379a70c4b --- /dev/null +++ b/docs/markdown/snippets/cargo_exp.md @@ -0,0 +1,8 @@ +## Cargo subprojects is experimental + +Cargo subprojects was intended to be experimental with no stability guarantees. +That notice was unfortunately missing from documentation. Meson will now start +warning about usage of experimental features and future releases might do breaking +changes. + +This is aligned with our general policy regarding [mixing build systems](Mixing-build-systems.md). diff --git a/mesonbuild/interpreter/interpreter.py b/mesonbuild/interpreter/interpreter.py index aa839da361f4..ecc5bfc2d7b4 100644 --- a/mesonbuild/interpreter/interpreter.py +++ b/mesonbuild/interpreter/interpreter.py @@ -1043,6 +1043,8 @@ def _do_subproject_cargo(self, subp_name: str, subdir: str, kwargs: kwtypes.DoSubproject) -> SubprojectHolder: from .. import cargo FeatureNew.single_use('Cargo subproject', '1.3.0', self.subproject, location=self.current_node) + mlog.warning('Cargo subproject is an experimental feature and has no backwards compatibility guarantees.', + once=True, location=self.current_node) with mlog.nested(subp_name): ast, options = cargo.interpret(subp_name, subdir, self.environment) self.coredata.update_project_options(options, subp_name)