The build system is a set of Makefiles and patches that allows users to easily generate both a cross-compilation toolchain and a root filesystem for embedded systems. The cross-compilation toolchain uses musl, a tiny C standard library.
A compilation toolchain is the set of tools used to compile code for your system. It consists of:
A compilation toolchain generates code for the same processor's instruction set architecture (ISA) it runs on (in the case of most PCs and servers, for an x86 processor).
On most Linux systems, the compilation toolchain uses the GNU libc as C standard library. This is called the “host compilation toolchain”, and the machine it is running on is called the “host system”. The host compilation toolchain is provided by the Linux distribution running on the host system, and has nothing to do with the actual build system.
Embedded systems use a different processor and require a cross-compilation toolchain - a compilation toolchain that runs on a host system but that generates code for a target system (and target processor's instruction set architecture (ISA)). For example, if your host system uses x86 and your target system uses MIPS32, the cross-compilation toolchain runs on x86 but generates code for MIPS32.
While it is possible to manually configure and compile your own software, this is complex and does not guarantee reproducible builds. LEDE's build system automates this process and provides a 100% reproducible build.
While the build system was designed for developers, inexperienced users can also use it to easily build their own custom firmware!
The build system's Makefiles have their own syntax, different from the conventional Makefiles of Linux make tool.
The Makefiles define the meta information of the package, where to download the package, how to compile, where to install the compiled binaries, etc.
tools– automake, autoconf, sed, cmake
toolchain/binutils– as, ld, …
toolchain/gcc– gcc, g++, cpp, …
target/linux– kernel modules
package– core and feed packages
target/linux– kernel image
target/linux/image– firmware image file generation