Skip to content
Snippets Groups Projects
Commit 4c72deb6 authored by Tobias Hieta's avatar Tobias Hieta
Browse files

Bump minimum toolchain version

parent 194d1965
No related branches found
No related tags found
No related merge requests found
......@@ -5,11 +5,11 @@
include(CheckCXXSourceCompiles)
set(GCC_MIN 5.1)
set(GCC_SOFT_ERROR 5.1)
set(GCC_SOFT_ERROR 7.1)
set(CLANG_MIN 3.5)
set(CLANG_SOFT_ERROR 3.5)
set(CLANG_SOFT_ERROR 5.0)
set(APPLECLANG_MIN 6.0)
set(APPLECLANG_SOFT_ERROR 6.0)
set(APPLECLANG_SOFT_ERROR 9.3)
# https://en.wikipedia.org/wiki/Microsoft_Visual_C#Internal_version_numbering
# _MSC_VER == 1920 MSVC++ 14.20 Visual Studio 2019 Version 16.0
......@@ -19,7 +19,7 @@ set(MSVC_SOFT_ERROR 19.27)
# Map the above GCC versions to dates: https://gcc.gnu.org/develop.html#timeline
set(GCC_MIN_DATE 20150422)
set(GCC_SOFT_ERROR_DATE 20150422)
set(LIBSTDCXX_SOFT_ERROR 7)
if(DEFINED LLVM_COMPILER_CHECKED)
......@@ -97,27 +97,21 @@ int main() { ++chk; return 0; }
if(NOT LLVM_LIBSTDCXX_MIN)
message(FATAL_ERROR "libstdc++ version must be at least ${GCC_MIN}.")
endif()
# Test for libstdc++ version of at least 5.1 by checking for std::iostream_category().
# Note: We should check _GLIBCXX_RELEASE when possible (i.e., for GCC 7.1 and up).
check_cxx_source_compiles("
#include <iosfwd>
#if defined(__GLIBCXX__)
#if __GLIBCXX__ < ${GCC_SOFT_ERROR_DATE}
#if !defined(_GLIBCXX_RELEASE) || _GLIBCXX_RELEASE < ${LIBSTDCXX_SOFT_ERROR}
#error Unsupported libstdc++ version
#endif
#endif
#if defined(__GLIBCXX__)
#include <ios>
void foo(void) { (void) std::iostream_category(); }
#endif
int main() { return 0; }
"
LLVM_LIBSTDCXX_SOFT_ERROR)
if(NOT LLVM_LIBSTDCXX_SOFT_ERROR)
if(LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN)
message(WARNING "libstdc++ version should be at least ${GCC_SOFT_ERROR} because LLVM will soon use new C++ features which your toolchain version doesn't support. Ignoring because you've set LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported.")
message(WARNING "libstdc++ version should be at least ${LIBSTDCXX_SOFT_ERROR} because LLVM will soon use new C++ features which your toolchain version doesn't support. Ignoring because you've set LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported.")
else()
message(FATAL_ERROR "libstdc++ version should be at least ${GCC_SOFT_ERROR} because LLVM will soon use new C++ features which your toolchain version doesn't support. You can temporarily opt out using LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported.")
message(FATAL_ERROR "libstdc++ version should be at least ${LIBSTDCXX_SOFT_ERROR} because LLVM will soon use new C++ features which your toolchain version doesn't support. You can temporarily opt out using LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN, but very soon your toolchain won't be supported.")
endif()
endif()
set(CMAKE_REQUIRED_FLAGS ${OLD_CMAKE_REQUIRED_FLAGS})
......
......@@ -175,7 +175,7 @@ uses the package and provides other details.
Package Version Notes
=========================================================== ============ ==========================================
`CMake <http://cmake.org/>`__ >=3.13.4 Makefile/workspace generator
`GCC <http://gcc.gnu.org/>`_ >=5.1.0 C/C++ compiler\ :sup:`1`
`GCC <http://gcc.gnu.org/>`_ >=7.1.0 C/C++ compiler\ :sup:`1`
`python <http://www.python.org/>`_ >=3.6 Automated test suite\ :sup:`2`
`zlib <http://zlib.net>`_ >=1.2.3.4 Compression library\ :sup:`3`
`GNU Make <http://savannah.gnu.org/projects/make>`_ 3.79, 3.79.1 Makefile/build processor\ :sup:`4`
......@@ -235,10 +235,10 @@ LLVM is written using the subset of C++ documented in :doc:`coding
standards<CodingStandards>`. To enforce this language version, we check the most
popular host toolchains for specific minimum versions in our build systems:
* Clang 3.5
* Apple Clang 6.0
* GCC 5.1
* Visual Studio 2019
* Clang 5.0
* Apple Clang 9.3
* GCC 7.1
* Visual Studio 2019 16.7
Anything older than these toolchains *may* work, but will require forcing the
build system with a special option and is not really a supported host platform.
......@@ -303,11 +303,11 @@ GCC from source. It is also quite easy to do these days.
.. _github gist:
https://gist.github.com/application2000/73fd6f4bf1be6600a2cf9f56315a2d91
Easy steps for installing GCC 5.1.0:
Easy steps for installing GCC 7.1.0:
.. code-block:: console
% gcc_version=5.1.0
% gcc_version=7.1.0
% wget https://ftp.gnu.org/gnu/gcc/gcc-${gcc_version}/gcc-${gcc_version}.tar.bz2
% wget https://ftp.gnu.org/gnu/gcc/gcc-${gcc_version}/gcc-${gcc_version}.tar.bz2.sig
% wget https://ftp.gnu.org/gnu/gnu-keyring.gpg
......
......@@ -42,18 +42,26 @@ Non-comprehensive list of changes in this release
functionality, or simply have a lot to talk about), see the `NOTE` below
for adding a new subsection.
* ...
.. NOTE
If you would like to document a larger change, then you can add a
subsection about it right here. You can copy the following boilerplate
and un-indent it (the indentation causes it to be inside this comment).
Update on required toolchains to build LLVM
-------------------
Special New Feature
-------------------
With LLVM 15.x we will raise the version requirements of the toolchain used
to build LLVM. The new requirements are as follows:
Makes programs 10x faster by doing Special New Thing.
* GCC >= 7.1
* Clang >= 5.0
* Apple Clang >= 9.3
* Visual Studio 2019 >= 16.7
* ...
In LLVM 15.x these requirements will be "soft" requirements and the version
check can be skipped by passing -DLLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN=ON
to CMake.
With the release of LLVM 16.x these requirements will be hard and LLVM developers
can start using C++17 features, making it impossible to build with older
versions of these toolchains.
Changes to the LLVM IR
----------------------
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment