A step-by-step doc on how to bootstrap a new toolchain (works on both cross
and native hosts).
This commit is contained in:
parent
b69d8cc8b2
commit
52294a7b65
61
tools/toolchain/README.mknative
Normal file
61
tools/toolchain/README.mknative
Normal file
@ -0,0 +1,61 @@
|
||||
$NetBSD: README.mknative,v 1.1 2002/02/27 17:21:56 tv Exp $
|
||||
|
||||
This file describes how to bootstrap the native toolchain on a new NetBSD
|
||||
platform (and how to update the new toolchain files, if needed). These
|
||||
files may be generated on a cross-compile host without problems; in fact,
|
||||
the instructions below are the same no matter whether bootstrapping on a
|
||||
cross or native host.
|
||||
|
||||
DO NOT RUN "mknative" BY HAND! It requires the Makefile in this directory
|
||||
to set up certain environments first.
|
||||
|
||||
In these notes, MACHINE is the $MACHINE of the target. These files can be
|
||||
cross-generated. Though a $MACHINE_ARCH all uses the same config files, you
|
||||
must pick a specific $MACHINE so that building the requisite bits below will
|
||||
work.
|
||||
|
||||
1. Set MKMAINTAINERTOOLS=yes in mk.conf. (Needed so that src/tools/gettext
|
||||
gets built, eliciting proper HAVE_*GETTEXT* defns in config.h files.)
|
||||
|
||||
2. Build and install a cross toolchain (via "build.sh -t -m MACHINE").
|
||||
|
||||
3. In src/tools/toolchain, do "nbmake-MACHINE bootstrap-libgcc".
|
||||
|
||||
This will create just enough glue in src/gnu/lib/libgcc to make it
|
||||
possible to build, based on the toolchain built in ${.OBJDIR}/build.
|
||||
Because the files generated in this step contain things like
|
||||
-DCROSS_COMPILE, they are not suitable for committing. Step 7 below
|
||||
will regenerate the "proper" libgcc config files.
|
||||
|
||||
4. At top level, do "nbmake-MACHINE obj includes MKGCC=no MKBFD=no".
|
||||
|
||||
5. In src/gnu/lib/libgcc, do "nbmake-MACHINE obj includes".
|
||||
|
||||
6. In each of src/gnu/lib/libgcc and src/lib, do "nbmake-MACHINE all install".
|
||||
|
||||
Optionally, all of the following may be set in the environment to reduce
|
||||
the amount of code needed to build at this step. Basically, it must be
|
||||
possible for static binaries to build and base system libs to exist so
|
||||
that "configure" can do its job for the target--these NO* options omit
|
||||
the rest for this stage of the build.
|
||||
|
||||
NOCRYPTO=1
|
||||
NOLINT=1
|
||||
NOPIC=1
|
||||
NOPROFILE=1
|
||||
NOSHARE=1
|
||||
|
||||
7. In src/tools/toolchain, do "nbmake-MACHINE native".
|
||||
|
||||
This will do a full configury in ${.OBJDIR}/.native that is a "Canadian"
|
||||
cross toolchain (--build reflects the host platform, but --host and
|
||||
--target are the target). The result is a tree that would build a
|
||||
native-to-NetBSD compiler on a cross host, and mknative pulls glue data
|
||||
from this.
|
||||
|
||||
8. Try out a full build using "nbmake-MACHINE"; the result should include
|
||||
a native compiler.
|
||||
|
||||
9. If all is well, commit the glue files added to src/gnu/{lib,usr.bin}/*.
|
||||
|
||||
- tv@netbsd.org
|
Loading…
Reference in New Issue
Block a user