Named configurations can be specified via the CONFIG=… build
parameter.
For headers in config/*.h which support named configurations, the following files are included when building with CONFIG=<name>:
config/defaults/<platform>.h (e.g. config/defaults/pcbios.h)config/<header>.hconfig/<name>/<header>.h (only if the directory config/<name> exists)config/local/<header>.h (autocreated if necessary)config/local/<name>/<header>.h (autocreated if necessary)
This mechanism allows for predefined named configurations to be checked in to the source tree, as a directory config/<name> containing all of the required header files.
The mechanism also allows for users to define multiple local configurations, by creating header files in the directory config/local/<name>.
Note that the config/*.h files which are used only to configure internal iPXE APIs (e.g. config/umalloc.h) cannot be modified via a named configuration. This avoids rebuilding the entire iPXE codebase whenever switching to a different named configuration.