FreeBSD Developers The plan to remove GCC 4.2.1 from the source texts of the FreeBSD base system. GCC components will be removed by the branching of FreeBSD 13, which will include only the Clang compiler. GCC can be installed from ports if desired, where it is offered. , and , as well as those already classified as obsolete , , and .
Architectures tied to GCC that cannot transition to Clang will be offered to switch to external tools installed from ports. As part of the preparation for the removal of GCC from the base system, work is planned to improve the integration of the base system's build system with external toolchains. For example, for the amd64 architecture, the continuous integration system has already been updated to include the ability to build using gcc 6.4 from ports, which can serve as a foundation for transitioning other architectures.
Recall that starting from FreeBSD 10, the base system for architectures i386, AMD64, and ARM was transitioned to the default provision of the Clang compiler and the libc++ library developed by the LLVM project. GCC and libstdc++ for the specified architectures stopped being built as part of the base system, but continued to be provided by default for powerpc, mips, mips64, and sparc64 architectures, and could also be installed during a rebuild with the flags WITH_GCC and WITH_GNUCXX. The provision of the obsolete GCC 4.2.1 version was due to licensing restrictions.
FreeBSD could not switch to a newer version of GCC, as starting from release 4.2.2, GCC was to the GPLv3 license and the integration of GCC 4.2.2 was hindered by the incompatibility of GCC runtime components with the BSD license. Later, in GCC 4.4, this incompatibility , but adding GPLv3-licensed components to the FreeBSD base system was due to conflicts with and the unwillingness to impose additional restrictions on users, such as prohibiting .
The process of removing GCC from the base system will be divided into several phases and will last for 9 months, providing developers tied to GCC architectures (powerpc, mips, mips64, and sparc64) with time to migrate to Clang or switch to using external toolchains. The first phase will start on August 31 and will result in the exclusion of gcc 4.2.1 from the build in the continuous integration system, as well as the cessation of using the "-Werror" flag for GCC-bound platforms and the default disabling of GCC builds when running "make universe."
On December 31, 2019, the GCC build will be disabled by default, but can still be re-enabled by specifying certain flags. On March 31, 2020, GCC will be removed from the SVN repository, and on May 31, all platforms not covered by the continuous integration system, which do not support LLVM or have not transitioned to external build tools, will be removed from SVN. On July 31, 2020, there will be a final removal from SVN of all remaining platforms requiring external tools but not supported in the release build scripts.
Source: opennet.ru
