." crosstool-NG man page
." Copyright 2007 Yann E. MORIN
." Licensed under the Creative Commons BY-SA, v2.5
."
." Beautifying URLs
.mso www.tmac
."
.TH crosstool-NG 1 "@@CT_DATE@@" "version @@CT_VERSION@@" "User Commands"
."
."
.SH NAME
@@CT_PROG_NAME@@, crosstool-NG \- Build cross-toolchains
."
."
.SH SYNOPSIS
.B @@CT_PROG_NAME@@ ACTION
."
."
.SH DESCRIPTION
Building a cross-toolchain can be a real pain.
.PP
.B crosstool-NG
makes it easy to build cross-toolchains, and allows you to take all the juice
out of your target by configuring the different components of the toolchain
according to the targeted processor.
."
."
.SH ACTIONS
Here are the most commonly used actions. For other actions, please see
.I "@@CT_DOCDIR@@/0 - Table of content.txt"
.TP
.B help
Prints a little help text.
."
.TP
.B menuconfig
Configures
.B crosstool-NG
using a configurator menu very similar to that of the Linux kernel.
."
.TP
.B oldconfig
Apply options found in an existing
.I .config
file, and ask for newer options if there are any.
."
.TP
.B saveconfig
Save the current
.B crosstool-NG
configuration, and associated components' config files, into a sample. Samples
are saved in their own sub-directory, named after the target's tuple, in the
.I samples
sub-directory of the current directory.
If that was not clear:
.I `pwd`/samples/${CT_TARGET}/

Samples can be later recalled by calling
.B @@CT_PROG_NAME@@
with the target tuple they represent.
."
.TP
.B savedefconfig
Save the current configuration to a mini-defconfig file, that contains only
the strictly required symbols to reproduce the configuration. defconfig files
are much smaller than a complete .config, so it is easy to send by mail. As
only non-default symbols are present in a defconfig, it easy to spot the
meaningful values. Also, it is easy to use defconfig files with newer
versions of
.BR crosstool-NG .
By default the mini-defconfig is saved to a file named
.IR defconfig ,
unless the variable
.B $DEFCONFIG
is set, in which case the mini-defconfig will be saved to the file referenced
by
.BR $DEFCONFIG .

Note: only the
.I .config
file for
.B crosstool-NG
is saved. Config files for the components are
.B not
saved. Use
.B saveconfig
for that
."
.TP
.B defconfig
Configure
.B crosstool-NG
using a mini-defconfig file (previously saved with
.B savedefconfig
or manually edited). The default mini-defconfig is read from the file
.IR defconfig ,
unless the variable
.B $DEFCONFIG
is set, in which case the mini-defconfig will be read from the file referenced
by
.B $DEFCONFIG
."
.TP
.B build
Builds the configured toolchain.
."
.TP
.B clean
Remove files generated by
.B crosstool-NG
for itself (these are mostly the configurators' binaries).
."
.TP
.B distclean
Same as
.B clean
, but also removes the toolchain build directory, the downloaded files and the
.I .config
configuration file. The generated toolchain is left untouched, as well as
samples which are not removed.
."
.TP
.B regtest
Calls the
.B crosstool-NG
regression test suite. All samples are build, and the regression test suite is
run against every one of them.
."
.TP
.B updatetools
Updates the
.I config.guess
and
.I config.sub
scripts. These scripts are used by
.B crosstool-NG
to canonicalise the machines' name (host, build and target machines).
.TP
.B tarball
Builds a tarball of the generated toolchain, also saving the scripts from
.B crosstool-NG
that are needed to rebuild the target, and also saving the tarballs of the
components that were used.
."
.SH ENVIRONMENT
.TP
.B STOP, START
Respectively stops and restarts the build just before this step. To restart a
step, a previous build should have run at least to that step, or further.

The list of steps is viewable with the action
.BR list-steps .
."
.SH EXIT VALUE
The
.B @@CT_PROG_NAME@@
frontend is in fact a
.BR make (1)
script. See the man page for
.BR make (1)
to have the meaning of the exit values.
."
.SH BUGS
As of today (@@CT_DATE@@), building tarballs is broken. It is difficult to
foresee how all parts of
.B crosstool-NG
are going to be installed. Each part is needed to build a tarball, as it
contains all that is needed to rebuild the toolchain from scratch: toolchain
components' sources,
.B crosstool-NG
configuration, but also all
.B crosstool-NG
scripts.
."
.SH SECURITY
.B Don't run as root!
Great care has been taken to avoid mistakes, but bug-free programs don't
exist. During normal operation,
.B crosstool-NG
removes entire directories. If you run as root, and there is a bug or you
mis-configured
.BR crosstool-NG ,
entire important directories could be removed (eg.
.IR /usr ),
although
.B crosstool-NG
will refuse to install toolchains in some well known critical directories.
."
.SH AUTHORS
Please consult the file
.I @@CT_DOCDIR@@/CREDITS
for a list of contributors.
."
.SH SEE ALSO
You can find more in-depth documentation in
.IR "@@CT_DOCDIR@@/0 - Table of content.txt" .

Please have a look at the
.URL "http://www.kegel.com/crosstool" "original crosstool" " by Daniel KEGEL"
