How Buildroot works
===================

As mentioned above, Buildroot is basically a set of Makefiles that
download, configure, and compile software with the correct options. It
also includes patches for various software packages - mainly the ones
involved in the cross-compilation tool chain (+gcc+, +binutils+ and
+uClibc+).

There is basically one Makefile per software package, and they are
named with the +.mk+ extension. Makefiles are split into three main
sections:

* *toolchain* (in the +toolchain/+ directory) contains the Makefiles
  and associated files for all software related to the
  cross-compilation toolchain: +binutils+, +gcc+, +gdb+,
  +kernel-headers+ and +uClibc+.

* *package* (in the +package/+ directory) contains the Makefiles and
  associated files for all user-space tools that Buildroot can compile
  and add to the target root filesystem. There is one sub-directory
  per tool.

* *target* (in the +target+ directory) contains the Makefiles and
  associated files for software related to the generation of the
  target root filesystem image. Four types of filesystems are
  supported: ext2, jffs2, cramfs and squashfs. For each of them there
  is a sub-directory with the required files. There is also a
  +default/+ directory that contains the target filesystem skeleton.

Each directory contains at least 2 files:

* +something.mk+ is the Makefile that downloads, configures,
  compiles and installs the package +something+.

* +Config.in+ is a part of the configuration tool
  description file. It describes the options related to the
  package.

The main Makefile performs the following steps (once the
configuration is done):

* Create all the output directories: +staging+, +target+, +build+,
  +stamps+, etc. in the output directory (+output/+ by default,
  another value can be specified using +O=+)

* Generate all the targets listed in the +BASE_TARGETS+ variable. When
  an internal toolchain is used, this means generating the
  cross-compilation toolchain. When an external toolchain is used,
  this means checking the features of the external toolchain and
  importing it into the Buildroot environment.

* Generate all the targets listed in the +TARGETS+ variable. This
  variable is filled by all the individual components'
  Makefiles. Generating these targets will trigger the compilation of
  the userspace packages (libraries, programs), the kernel, the
  bootloader and the generation of the root filesystem images,
  depending on the configuration.

