// -*- mode:doc; -*-
// vim: set syntax=asciidoc:

[[requirement]]
== System requirements

Buildroot is designed to run on Linux systems.

While Buildroot itself will build most host packages it needs for the
compilation, certain standard Linux utilities are expected to be
already installed on the host system. Below you will find an overview of
the mandatory and optional packages (note that package names may vary
between distributions).

[[requirement-mandatory]]

=== Mandatory packages

* Build tools:

** +which+
** +sed+
** +make+ (version 3.81 or any later)
** +binutils+
** +build-essential+ (only for Debian based systems)
** +gcc+ (version 4.4 or any later)
** `g++` (version 4.4 or any later)
** +bash+
** +patch+
** +gzip+
** +bzip2+
** +perl+ (version 5.8.7 or any later)
** +tar+
** +cpio+
** +python+ (version 2.7 or any later)
** +unzip+
** +rsync+
** +file+ (must be in +/usr/bin/file+)
** +bc+

* Source fetching tools:
** +wget+

[[requirement-optional]]

=== Optional packages

* Configuration interface dependencies:
+
For these libraries, you need to install both runtime and development
data, which in many distributions are packaged separately. The
development packages typically have a _-dev_ or _-devel_ suffix.
+
** +ncurses5+ to use the 'menuconfig' interface
** +qt4+ to use the 'xconfig' interface
** +glib2+, +gtk2+ and +glade2+ to use the 'gconfig' interface

* Source fetching tools:
+
In the official tree, most of the package sources are retrieved using
+wget+ from _ftp_, _http_ or _https_ locations. A few packages are only
available through a version control system. Moreover, Buildroot is
capable of downloading sources via other tools, like +rsync+ or +scp+
(refer to xref:download-infra[] for more details). If you enable
packages using any of these methods, you will need to install the
corresponding tool on the host system:
+
** +bazaar+
** +cvs+
** +git+
** +mercurial+
** +rsync+
** +scp+
** +subversion+

* Java-related packages, if the Java Classpath needs to be built for
  the target system:
** The +javac+ compiler
** The +jar+ tool

* Documentation generation tools:
** +asciidoc+, version 8.6.3 or higher
** +w3m+
** +python+ with the +argparse+ module (automatically present in 2.7+ and 3.2+)
** +dblatex+ (required for the pdf manual only)

* Graph generation tools:
** +graphviz+ to use 'graph-depends' and '<pkg>-graph-depends'
** +python-matplotlib+ to use 'graph-build'
