Install the following packages for the toolchain:
-* CMake 3.14.5 or newer
+* CMake 3.20 or newer
* llvm
* lld
* clang
* zlib1g-dev
* ninja-build (optional, enables building native code with ninja instead of make)
+**NOTE**: If you have an Ubuntu version older than 22.04 LTS, or Debian version older than 12, don't install `cmake` using `apt` directly. Follow the note written down below.
+
```bash
sudo apt install -y cmake llvm lld clang build-essential \
python-is-python3 curl git lldb libicu-dev liblttng-ust-dev \
libssl-dev libkrb5-dev zlib1g-dev ninja-build
```
+**NOTE**: As of now, Ubuntu's `apt` only has until CMake version 3.16.3 if you're using Ubuntu 20.04 LTS (less in older Ubuntu versions), and version 3.18.4 in Debian 11 (less in older Debian versions). This is lower than the required 3.20, which in turn makes it incompatible with the repo. For this case, we can use the `snap` package manager or the _Kitware APT feed_ to get a new enough version of CMake.
+
+For snap:
+
+```bash
+sudo snap install cmake
+```
+
+For the _Kitware APT feed_, follow its [instructions here](https://apt.kitware.com/).
+
You now have all the required components.
#### Additional Requirements for Cross-Building
Install the following packages:
-* CMake 3.15.5 or newer
+* CMake 3.20 or newer
* icu4c
* openssl@1.1 or openssl@3
* pkg-config
* Install [CMake](https://cmake.org/download) for Windows.
* Add its location (e.g. C:\Program Files (x86)\CMake\bin) to the PATH environment variable. The installation script has a check box to do this, but you can do it yourself after the fact following the instructions at [Adding to the Default PATH variable](#adding-to-the-default-path-variable).
-The _dotnet/runtime_ repository recommends using CMake 3.16.4 or newer, but it may work with CMake 3.15.5.
+The _dotnet/runtime_ repository requires using CMake 3.20 or newer.
+
+**NOTE**: If you plan on using the `-msbuild` flag for building the repo, you will need version 3.21 at least. This is because the VS2022 generator doesn't exist in CMake until said version.
#### Ninja
-cmake_minimum_required(VERSION 3.6.2)
+cmake_minimum_required(VERSION 3.20)
cmake_policy(SET CMP0042 NEW) # MACOSX_RPATH is enabled by default.
-
-if (CMAKE_VERSION VERSION_GREATER 3.7 OR CMAKE_VERSION VERSION_EQUAL 3.7)
- cmake_policy(SET CMP0066 NEW) # Honor per-config flags in try_compile() source-file signature.
-endif()
-if (CMAKE_VERSION VERSION_GREATER 3.8 OR CMAKE_VERSION VERSION_EQUAL 3.8)
- cmake_policy(SET CMP0067 NEW) # Honor language standard in try_compile() source-file signature
-endif()
-if (CMAKE_VERSION VERSION_GREATER 3.15 OR CMAKE_VERSION VERSION_EQUAL 3.15)
- cmake_policy(SET CMP0091 NEW) # MSVC runtime library flags are selected by an abstraction.
-endif()
+cmake_policy(SET CMP0066 NEW) # Honor per-config flags in try_compile() source-file signature.
+cmake_policy(SET CMP0067 NEW) # Honor language standard in try_compile() source-file signature
+cmake_policy(SET CMP0091 NEW) # MSVC runtime library flags are selected by an abstraction.
# Set the project name
project(CoreCLR)
<ItemGroup>
<NormalTestAppBundles Include="$(NormalTestsAppBundleRoot)*/AppBundle/CMakeLists.txt" />
- <NormalTestCMakeEntries Include="cmake_minimum_required(VERSION 3.16)" />
+ <NormalTestCMakeEntries Include="cmake_minimum_required(VERSION 3.20)" />
<NormalTestCMakeEntries Include="project(NormalTestAppBundles)" />
<NormalTestCMakeEntries Include="add_subdirectory(%(NormalTestAppBundles.RootDir)%(NormalTestAppBundles.Directory) %(NormalTestAppBundles.RecursiveDir) EXCLUDE_FROM_ALL)" />
<FunctionalTestAppBundles Include="$(FunctionalTestsAppBundleRoot)*/AppBundle/CMakeLists.txt" />
- <FunctionalTestCMakeEntries Include="cmake_minimum_required(VERSION 3.16)" />
+ <FunctionalTestCMakeEntries Include="cmake_minimum_required(VERSION 3.20)" />
<FunctionalTestCMakeEntries Include="project(FunctionalTestAppBundles)" />
<FunctionalTestCMakeEntries Include="add_subdirectory(%(FunctionalTestAppBundles.RootDir)%(FunctionalTestAppBundles.Directory) %(FunctionalTestAppBundles.RecursiveDir) EXCLUDE_FROM_ALL)" />
</ItemGroup>
-cmake_minimum_required(VERSION 3.14.5)
-
-if (CMAKE_VERSION VERSION_GREATER 3.15 OR CMAKE_VERSION VERSION_EQUAL 3.15)
- cmake_policy(SET CMP0091 NEW)
-endif()
+cmake_minimum_required(VERSION 3.20)
project(mono)
-cmake_minimum_required(VERSION 3.14.5)
+cmake_minimum_required(VERSION 3.20)
project(mono-wasi-runtime C)
-cmake_minimum_required(VERSION 3.14.5)
+cmake_minimum_required(VERSION 3.20)
project(mono-wasm-runtime C)
-cmake_minimum_required(VERSION 3.6.2)
-
-if (CMAKE_VERSION VERSION_GREATER 3.15 OR CMAKE_VERSION VERSION_EQUAL 3.15)
- cmake_policy(SET CMP0091 NEW)
-endif()
+cmake_minimum_required(VERSION 3.20)
+cmake_policy(SET CMP0091 NEW)
project(corehost)
-cmake_minimum_required(VERSION 3.6.2)
-include(CheckCCompilerFlag)
+cmake_minimum_required(VERSION 3.20)
-if (CLR_CMAKE_TARGET_IOS OR CLR_CMAKE_TARGET_TVOS)
- # CMake 3.14.5 contains bug fixes for iOS
- cmake_minimum_required(VERSION 3.14.5)
-elseif (CLR_CMAKE_TARGET_MACCATALYST)
- # CMake 3.18.1 properly generates MacCatalyst C compiler
- cmake_minimum_required(VERSION 3.18.1)
-endif ()
+include(CheckCCompilerFlag)
if (WIN32)
cmake_policy(SET CMP0091 NEW)
-cmake_minimum_required(VERSION 3.6.2)
+cmake_minimum_required(VERSION 3.20)
cmake_policy(SET CMP0042 NEW)
if (CMAKE_VERSION VERSION_GREATER 3.15 OR CMAKE_VERSION VERSION_EQUAL 3.15)
-cmake_minimum_required(VERSION 3.13.0)
+cmake_minimum_required(VERSION 3.20)
project (MonoEmbeddingApiTest)
include_directories(${INC_PLATFORM_DIR})
-cmake_minimum_required(VERSION 3.16)
+cmake_minimum_required(VERSION 3.20)
include ("${CLR_INTEROP_TEST_ROOT}/Interop.cmake")
set(CMAKE_OBJC_STANDARD 99)
set(CMAKE_OBJC_STANDARD_REQUIRED TRUE)
-cmake_minimum_required(VERSION 3.16)
+cmake_minimum_required(VERSION 3.20)
set(CMAKE_OBJC_STANDARD 11)
set(CMAKE_OBJC_STANDARD_REQUIRED TRUE)
-cmake_minimum_required(VERSION 3.14.5)
+cmake_minimum_required(VERSION 3.20)
project(Profiler)