2 // vim: set syntax=asciidoc:
7 As mentioned above, OpenADK is basically a set of Makefiles that
8 download, configure, and compile software with the correct options. It
9 also includes patches for various software packages and the Linux kernel.
11 There is basically one Makefile per software package. Makefiles are split into
14 * The +toolchain/+ directory contains the Makefiles
15 and associated files for all software related to the
16 cross-compilation toolchain: +binutils+, +gcc+, +gdb+,
17 +kernel-headers+ and +libc+.
19 * The +target/+ directory contains the definitions for all the processor
20 architectures that are supported by OpenADK. +target/linux+ contains
21 the meta-data for the Linux kernel configuration abstraction layer and
24 * The +package/+ directory contains the Makefiles and
25 associated files for all user-space tools and libraries that OpenADK can
26 compile and add to the target root filesystem or to the host directory. There
27 is one sub-directory per package.
29 * The +mk/+ directory contains some globally used Makefiles with
30 the suffix +.mk+, these are used in all other Makefiles via include.
32 * The +adk/+ directory contains the Makefiles and
33 associated files for software related to the generation of the
34 host tools needed for +make menuconfig+ system.
36 * The +scripts/+ directory contains shell scripts for the creation of
37 meta-data in OpenADK, install scripts and image creation scripts.
39 The configuration process is separated in following steps:
41 * Makefile is just a wrapper which calls the prerequisite shell script.
43 * The prerequisite shell script +scripts/prereq.sh+ checks if the host
44 system have all required software installed and tries to build GNU make
45 and bash if it is missing. It creates the +prereq.mk+ Makefile.
47 * Compile and run the OpenADK tools to generate the meta-data for the menu
48 based configuration and creates the +package/Depends.mk+ Makefile to handle the
51 * Starts the menu based configuration system via +make menuconfig+.
53 The following steps are performed, once the configuration is done
54 (mainly implemented in +mk/build.mk+):
56 * Create all the output directories: +host_<gnu_host_name>+, +target_<arch>_<libc>+,
57 +build_<arch>_<libc>+, +pkg_<arch>_<libc>+, etc.
59 * Generate the host tools required for different tasks (encrypting passwords,
60 compressing data, extracting archives, creating images, ..)
62 * Generate the cross-compilation toolchain (binutils, gcc, libc, gdb)
64 * Compile the Linux kernel
66 * Compile all the userspace packages, the boot loader and external kernel modules
68 * Generate the firmware images or archives
70 * Output a target specific help text