On 23. 7. 2026 16:59, Ivan Zhakov wrote:
I would like to discuss CMake minimum required version for trunk and
1.15.x.
Currently Subversion requires CMake version >= 3.14
We have two workarounds to support CMake < 3.18 [1, 2]. And one
workaround to support CMake < 3.20 [3]
Compatibility with versions of CMake older than 3.10 is deprecated in
CMake 3.31 [4].
Compatibility with versions of CMake older than 3.5 is removed in
CMake 4.0 [4].
Information about bundled CMake versions in different distributions
and toolsets:
- Visual Studio 2017 (supported until Apr 2027): CMake 3.6
- Visual Studio 2019 (supported until Apr 2029): CMake 3.20
- Visual Studio 2022 (supported until Jan 2032): CMake 3.31
- Visual Studio 2026 (supported until Nov 2028): CMake 4.3
- Debian 11 "bullseye" (supported until Aug 2026): CMake 3.18
- Debian 12 "bookworm" (supported until Jun 2028): CMake 3.25
- Debian 13 "trixie" (supported until Aug 2030): CMake 3.31
- Ubuntu 22.04 LTS (supported until May 2027): CMake 3.22
- Ubuntu 24.04 LTS (supported until May 2029): CMake 3.28
- Ubuntu 26.04 LTS (supported until May 2031): CMake 4.2
- RHEL 8 (supported until May 2029): CMake 3.26
- RHEL 9 (supported until May 2032): CMake 3.31
- RHEL 10 (supported until May 2035): CMake 3.31
The same information sorted by CMake version:
- Visual Studio 2017 (supported until Apr 2027): CMake 3.6
- Debian 11 "bullseye" (supported until Aug 2026): CMake 3.18
- Visual Studio 2019 (supported until Apr 2029): CMake 3.20
- Ubuntu 22.04 LTS (supported until May 2027): CMake 3.22
- Debian 12 "bookworm" (supported until Jun 2028): CMake 3.25
- RHEL 8 (supported until May 2029): CMake 3.26
- Ubuntu 24.04 LTS (supported until May 2029): CMake 3.28
- Visual Studio 2022 (supported until Jan 2032): CMake 3.31
- RHEL 9 (supported until May 2032): CMake 3.31
- RHEL 10 (supported until May 2035): CMake 3.31
- Debian 13 "trixie" (supported until Aug 2030): CMake 3.31
- Ubuntu 26.04 LTS (supported until May 2031): CMake 4.2
- Visual Studio 2026 (supported until Nov 2028): CMake 4.3
Based on these tables, I think we can make CMake 3.20 the minimum
required version. This would support building Subversion with bundled
CMake in Visual Studio 2019 and would allow us to remove the three
workarounds.
I assume that the bundled version can be ignored/updated by a separate
installation of CMake? If not, we should explicitly say in the release
notes that we do not support building with CMake with VS 2017. That's a
build environment that's less than 10 years old. Well, we still support
it in the vcxproj generator.
The other close option is CMake 3.18 (for Debian 11 support), but I
would say it's not exactly worth it, since Debian 11 becomes
unsupported in Aug 2026.
Unix distros will use the autotools build. We should ignore them for
this discussion. I don't see the distros switching to CMake given that
they've used autotools for decades.
So I propose that we bump the minimum required version to 3.20 and
backport this change to 1.15.x branch.
Thoughts?
[1]:
https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l725
<https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l725>
[2]:
https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l1042
<https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l1042>
[3]:
https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l459
<https://svn.apache.org/viewvc/subversion/trunk/CMakeLists.txt?revision=1936525&pathrev=1936525&view=markup#l459>
[4]:
https://cmake.org/cmake/help/latest/command/cmake_minimum_required.html#policy-version
--
Ivan Zhakov