Add bapt's External Toolchain report
This commit is contained in:
parent
ca6187e065
commit
c7bef483d0
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=46155
1 changed files with 87 additions and 0 deletions
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue