/** @page building Building

<i>This section describes how to build the Barebox bootloader.</i>

@a Barebox uses Kconfig/Kbuild from the Linux kernel to build it's
sources. It consists of two parts: the makefile infrastructure (kbuild)
and a configuration system (kconfig). So building @a barebox is very
similar to building the Linux kernel.

In the examples below we use the "sandbox" configuration, which is a
port of @a Barebox to the Linux userspace. This makes it possible to
test the code without having real hardware or even qemu. Note that the
sandbox architecture does only work well on x86 and has some issues on
x86_64.

\todo Find out about issues on x86_64.

Selecting the architecture and the corresponding cross compiler is done
by setting the following environment variables:

- ARCH=\<architecture>
- CROSS_COMPILE=\<compiler-prefix>

For @p ARCH=sandbox we do not need a cross compiler, so it is sufficient
to specify the architecture:

@code
# export ARCH=sandbox
@endcode

In order to configure the various aspects of @a barebox, start the
@a barebox configuration system:

@code
# make menuconfig
@endcode

This command starts a menu box and lets you select all the different
options available for the selected architecture. Once the configuration
is finished (you can simulate this by using the default config file with
'make sandbox_defconfig'), there is a .config file in the toplevel
directory of the sourcecode.

After @a barebox is configured, we can start the compilation:

@code
# make
@endcode

You can use '-j \<n\>' in order to do a parallel build if you have more
than one cpus.

If everything goes well, the result is a file called @p barebox:

@code
# ls -l barebox
-rwxr-xr-x 1 rsc ptx 114073 Jun 26 22:34 barebox
@endcode

*/
