From 3f1519f2e739cb8bab4aba4c5b2e0674ff2a6790 Mon Sep 17 00:00:00 2001 From: Daniel Mensinger Date: Wed, 1 Dec 2021 23:41:48 +0100 Subject: [PATCH] cmake: Deprecate CMake <3.14 and warn for <3.17 (#9677) * cmake: Deprecate CMake <3.14 and warn for <3.17 See: - #7832 - #9676 * cmake: Add deprecation release note snippet --- docs/markdown/snippets/cmake_deprecated.md | 7 +++++++ mesonbuild/cmake/interpreter.py | 14 ++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 docs/markdown/snippets/cmake_deprecated.md diff --git a/docs/markdown/snippets/cmake_deprecated.md b/docs/markdown/snippets/cmake_deprecated.md new file mode 100644 index 000000000..9e456e7a8 --- /dev/null +++ b/docs/markdown/snippets/cmake_deprecated.md @@ -0,0 +1,7 @@ +## Support for CMake <3.14 is now deprecated for CMake subprojects + +In CMake 3.14, the File API was introduced and the old CMake server API was +deprecated (and removed in CMake 3.20). Thus support for this API will also +be removed from Meson in future releases. + +This deprecation only affects CMake subprojects. diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py index a8ed67cb0..c2e2d2722 100644 --- a/mesonbuild/cmake/interpreter.py +++ b/mesonbuild/cmake/interpreter.py @@ -33,6 +33,7 @@ from functools import lru_cache from pathlib import Path import typing as T import re +import textwrap from os import environ from ..mparser import ( @@ -832,6 +833,19 @@ class CMakeInterpreter: if version_compare(cmake_exe.version(), '>=3.14'): self.cmake_api = CMakeAPI.FILE self.fileapi.setup_request() + else: + mlog.deprecation(f'Support for CMake <3.14 (Meson found {cmake_exe.version()}) is deprecated since Meson 0.61.0') + + if version_compare(cmake_exe.version(), '<3.17.0'): + mlog.warning(textwrap.dedent(f'''\ + The minimum recommended CMake version is 3.17.0. + | + | However, Meson was only able to find CMake {cmake_exe.version()} at {cmake_exe.cmakebin.command}. + | + | Support for all CMake versions below 3.17.0 will be deprecated and + | removed once newer CMake versions are more widely adopted. If you encounter + | any errors please try upgrading CMake to a newer version first. + ''')) # Run CMake mlog.log()