Add bapt's External Toolchain report

This commit is contained in:
Brad Davis 2015-01-07 18:06:31 +00:00
parent ca6187e065
commit c7bef483d0
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46155

View file

@ -379,4 +379,91 @@
</help>
</project>
<project cat='proj'>
<title>External toolchain</title>
<contact>
<person>
<name>
<given>Baptiste</given>
<common>Daroussin</common>
</name>
<email>bapt@FreeBSD.org</email>
</person>
<person>
<name>
<given>Warner</given>
<common>Losh</common>
</name>
<email>imp@FreeBSD.org</email>
</person>
<person>
<name>
<given>Brooks</given>
<common>Davis</common>
</name>
<email>brooks@FreeBSD.org</email>
</person>
</contact>
<links>
<url href="https://wiki.freebsd.org/ExternalToolchain" />
</links>
<body>
<p>The main goal of the external toolchain project is to be able
to build world and kernel with non default toolchain. It can be
helpful to:
<ul>
<li>Prepare a migration to a newer version of the components like compilers, binutils, and elftoolchain.</li>
<li>Port &os; to newer architecture</li>
<li>Upgrade from a &os; that ships with GCC 4.2 to a version that ship with clang 3.5+ (which need a more modern toolchain than GCC 4.2 to bootstrap.</li>
</ul>
</p>
<p>The initial support for external toolchain only supported
clang. It has been extended to support recent GCC (4.9.1 has
been tested) and recent binutils (2.24 and 2.25).</p>
<p>A large number of fixes have been committed to HEAD to support
incompatible behaviour changes between <tt>ld(1)</tt> from
binutils 2.17.50 (the version in base) and binutils 2.24+.</p>
<p>A large number of warnings have been deactivated when building
the kernel to make sure it is possible to build the kernel with
recent GCC (first 4.6 and then 4.9.1)</p>
<p>The build system has been changed to build libc++ as a C++
stack when a recent enough GCC (4.6+) is used to build world.
</p>
<p>To simplify using an external toolchain, the following
pre-seeded configurations have been added to the ports tree:
<ul>
<li>amd64-xtoolchain-gcc</li>
<li>powerpc64-xtoolchain-gcc</li>
<li>sparc64-xtoolchain-gcc</li>
</ul>
</p>
<p>Those packages will depend on special version of GCC
(minimalistic cross-built ready GCC) and on binutils. To use
them run: <tt>make CROSS_TOOLCHAIN=powerpc64-gcc TARGET=powerpc
TARGET_ARCH=powerpc64</tt></p>
<p>As a result of this effort, it has been possible to
successfully build and run a kernel and world built with GCC
4.9.1 and binutils 2.24 on sparc64, amd64 (with minor tweaks for
amd64), powerpc and powerpc64.</p>
</body>
<help>
<task>Patch and upstream GCC 4.9 to support &os; mips, arm and
aarch64</task>
<task>Adapt and upstream the aarch64 patches for binutils 2.25
</task>
<task>Add more pre seeded configurations</task>
</help>
</project>
</report>