When building for multiple environments, we distinguish between the system and a mode:
<ARCH> specifies the architecture of the target processor. <CPU> specifies a model of the processor in more detail. It can be used for certain optimizations. <L4API> specifies the binding of the -kernel. See Table 4 for a list of currently defined architectures, CPU types and L4 APIs.
The L4API part is optional. If it is omitted, the target is assumed to be independent of a specific L4 binding. Each target can be compiled for multiple systems at the same time.
In contrast to the mode, the system is visible within the directory structure: The system of a (compiled/linked/built/installed) file is encoded in the directory part of the name of that file. For example, if a library is compiled for system x86_586-l4v2, its name is libfoo.a, it will be installed to $(L4DIR)/lib/x86_586/l4v2/libfoo.a. Another library libbar.a compiled for system x86_5861, it will be installed to $(L4DIR)/lib/x86_586/libbar.a. This is the case for includes and binaries analogically. So far for the installed files.
The compilation process must respect multiple systems too: We allow to build multiple systems at the same time from the same source-files. Therefore, the maintainer of a package specifies the possible systems2. In a global configuration file (maintained by the user that compiles its tree), all systems that should be compiled are specified.
L4 Checker 2012-04-11