Enforce minimum supported versions of GCC and Clang
We already have a minimum required version of MSVC
This commit is contained in:
parent
3c4a21315d
commit
f34a09b39f
|
@ -38,6 +38,31 @@ if (MSVC)
|
|||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
endif()
|
||||
|
||||
set(COMPILER ${CMAKE_CXX_COMPILER_ID})
|
||||
if (COMPILER STREQUAL "GNU")
|
||||
set(COMPILER "GCC") # perfer printing GCC instead of GNU
|
||||
endif()
|
||||
|
||||
# Enforce minimium compiler versions that support the c++20 features we use
|
||||
set (GCC_min_version 10)
|
||||
set (Clang_min_version 11)
|
||||
set (AppleClang_min_version 12.0.5)
|
||||
set (min_xcode_version "12.5.1") # corrosponding xcode version for AppleClang_min_version
|
||||
set (MSVC_min_version 14.32)
|
||||
set (min_vs_version "2022 17.2.3") # corrosponding Visual Studio version for MSVC_min_version
|
||||
|
||||
message(STATUS "Using ${COMPILER} ${CMAKE_CXX_COMPILER_VERSION}")
|
||||
|
||||
if ("-" STREQUAL "${${COMPILER}_min_version}-")
|
||||
message(WARNING "Unknown compiler ${COMPILER}, assuming it is new enough")
|
||||
else()
|
||||
if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${${COMPILER}_min_version})
|
||||
message(FATAL_ERROR "Requires GCC ${GCC_min_version}, Clang ${Clang_min_version},"
|
||||
" AppleClang ${AppleClang_min_version} (Xcode ${min_xcode_version}),"
|
||||
" or MSVC ${MSVC_min_version} (Visual Studio ${min_vs_version}) or higher")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Name of the Dolphin distributor. If you redistribute Dolphin builds (forks,
|
||||
# unofficial builds) please consider identifying your distribution with a
|
||||
# unique name here.
|
||||
|
@ -255,12 +280,6 @@ else()
|
|||
" Enable generic build if you really want a JIT-less binary.")
|
||||
endif()
|
||||
|
||||
|
||||
# Enforce minimum GCC version
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.0)
|
||||
message(FATAL_ERROR "Dolphin requires at least GCC 7.0 (found ${CMAKE_CXX_COMPILER_VERSION})")
|
||||
endif()
|
||||
|
||||
if(CMAKE_GENERATOR MATCHES "Ninja")
|
||||
check_and_add_flag(DIAGNOSTICS_COLOR -fdiagnostics-color)
|
||||
elseif(CMAKE_GENERATOR MATCHES "Visual Studio")
|
||||
|
|
|
@ -173,7 +173,8 @@ Summary:
|
|||
- [Classes and Structs](#cpp-code-classes-and-structs)
|
||||
|
||||
## <a name="cpp-code-general"></a>General
|
||||
- The codebase currently uses C++17.
|
||||
- The codebase currently uses C++20, though not all compilers support all C++20 features.
|
||||
- See CMakeLists.txt "Enforce minimium compiler versions" for the currently supported compilers.
|
||||
- Use the [nullptr](https://en.cppreference.com/w/cpp/language/nullptr) type over the macro `NULL`.
|
||||
- If a [range-based for loop](https://en.cppreference.com/w/cpp/language/range-for) can be used instead of container iterators, use it.
|
||||
- Obviously, try not to use `goto` unless you have a *really* good reason for it.
|
||||
|
|
10
Readme.md
10
Readme.md
|
@ -53,10 +53,12 @@ The "Debug" solution configuration is significantly slower, more verbose and les
|
|||
|
||||
## Building for Linux and macOS
|
||||
|
||||
Dolphin requires [CMake](https://cmake.org/) for systems other than Windows. Many libraries are
|
||||
bundled with Dolphin and used if they're not installed on your system. CMake
|
||||
will inform you if a bundled library is used or if you need to install any
|
||||
missing packages yourself. You may refer to the [wiki](https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux) for more information.
|
||||
Dolphin requires [CMake](https://cmake.org/) for systems other than Windows.
|
||||
You need a recent version of GCC or Clang with decent c++20 support. CMake will
|
||||
inform you if your compiler is too old.
|
||||
Many libraries are bundled with Dolphin and used if they're not installed on
|
||||
your system. CMake will inform you if a bundled library is used or if you need
|
||||
to install any missing packages yourself. You may refer to the [wiki](https://github.com/dolphin-emu/dolphin/wiki/Building-for-Linux) for more information.
|
||||
|
||||
Make sure to pull submodules before building:
|
||||
```sh
|
||||
|
|
Loading…
Reference in New Issue