| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | // -*- mode:doc; -*-// vim: set syntax=asciidoc:How OpenADK works-----------------As mentioned above, OpenADK is basically a set of Makefiles thatdownload, configure, and compile software with the correct options. Italso includes patches for various software packages and the linux kernel. There is basically one Makefile per software package. Makefiles are split intomany different parts.* The +toolchain/+ directory contains the Makefiles  and associated files for all software related to the  cross-compilation toolchain: +binutils+, +gcc+, +gdb+,  +kernel-headers+ and +libc+.* The +target/+ directory contains the definitions for all the processor  architectures that are supported by OpenADK. +target/linux+ contains  the meta-data for the Linux kernel configuration abstraction layer and  the kernel patches* The +package/+ directory contains the Makefiles and  associated files for all user-space tools and libraries that OpenADK  can compile and add to the target root filesystem. There is one  sub-directory per package.* The +mk/+ directory contains some globally used Makefiles with  the suffix +.mk+, these are used in all other Makefile via include* The +tools/+ directory contains the Makefiles and  associated files for software related to the generation of the  host tools needed for different tasks (compression tools, ..).There are three other directories in the top level directory of OpenADK:* The +scripts/+ directory contains shell scripts for the creation of  meta-data in OpenADK, install scripts and image creation scripts* The +config/+ directory contains the application used for the  +make menuconfig+ system* The +tests/+ directory contains some data for the +make check+ target,  to run the gcc testsuiteThe main Makefile performs the following steps before the configurationis done:* Call the +prereq+ target to check if the host system have all required  software installed. It creates the +prereq.mk+ Makefile. * Compile and run the OpenADK tools to generate the meta-data for the menu  based configuration and creates the +package/Depends.mk+ Makefile to handle the   dependencies* Starts the menu based configuration system via +make menuconfig+The main Makefile performs the following steps, once theconfiguration is done (it is mainly a wrapper for +mk/build.mk+):* Create all the output directories: +host_<gnu_host_name>+, +target_<arch>_<libc>+,   +build_<arch>_<libc>+, +pkg_<arch>_<libc>+, etc. * Call the +scan-pkgs.sh+ script to find any needed optional host software, needed to compile  software the user has configured * Call the +update-sys+ and +update-pkg+ scripts to generate some meta-data for   available systems and package collections* Generate the host tools required for different tasks (encrypting passwords,  compressing data, extracting archives, ..)* Generate the cross-compilation toolchain (binutils, gcc, libc, gdb)* Compile the linux kernel* Compile all the userspace packages, the boot loader and external kernel modules* Generate the firmware images or archives
 |