diff options
author | Michael Brown <mcb30@ipxe.org> | 2014-08-19 16:17:25 +0100 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2014-08-20 12:36:44 +0100 |
commit | c801cb29d64764fa8082ec2ab17dd12f74b3143f (patch) | |
tree | dde1548393981062a33054083daddfecbd2a0c9b /src/config | |
parent | 3953ddd2acf72fb30cd70bb65476dd86b6799708 (diff) | |
download | ipxe-c801cb29d64764fa8082ec2ab17dd12f74b3143f.tar.gz |
[build] Allow for named configurations at build time
Allow named configurations to be specified via the CONFIG=... build
parameter. For headers in config/*.h which support named
configurations, the following files will be included when building
with CONFIG=<name>:
- config/defaults/<platform>.h (e.g. config/defaults/pcbios.h)
- config/<header>.h
- config/<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/ioapi.h) cannot be modified via a
named configuration. This avoids rebuilding the entire iPXE codebase
whenever switching to a different named configuration.
Inspired-by: Robin Smidsrød <robin@smidsrod.no>
Tested-by: Robin Smidsrød <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/config')
-rw-r--r-- | src/config/colour.h | 3 | ||||
-rw-r--r-- | src/config/console.h | 3 | ||||
-rw-r--r-- | src/config/crypto.h | 3 | ||||
-rw-r--r-- | src/config/general.h | 3 | ||||
-rw-r--r-- | src/config/named.h | 26 | ||||
-rw-r--r-- | src/config/serial.h | 3 | ||||
-rw-r--r-- | src/config/settings.h | 3 | ||||
-rw-r--r-- | src/config/sideband.h | 3 |
8 files changed, 47 insertions, 0 deletions
diff --git a/src/config/colour.h b/src/config/colour.h index c75f65e6..57d20c1d 100644 --- a/src/config/colour.h +++ b/src/config/colour.h @@ -30,6 +30,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); #define COLOR_PXE_FG COLOR_BLACK #define COLOR_PXE_BG COLOR_WHITE +#include <config/named.h> +#include NAMED_CONFIG(colour.h) #include <config/local/colour.h> +#include LOCAL_NAMED_CONFIG(colour.h) #endif /* CONFIG_COLOUR_H */ diff --git a/src/config/console.h b/src/config/console.h index 5d2cc1dc..908ec5a0 100644 --- a/src/config/console.h +++ b/src/config/console.h @@ -28,6 +28,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); #define LOG_LEVEL LOG_NONE +#include <config/named.h> +#include NAMED_CONFIG(console.h) #include <config/local/console.h> +#include LOCAL_NAMED_CONFIG(console.h) #endif /* CONFIG_CONSOLE_H */ diff --git a/src/config/crypto.h b/src/config/crypto.h index 95c73d47..1e021b0f 100644 --- a/src/config/crypto.h +++ b/src/config/crypto.h @@ -17,6 +17,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); */ #define TIMESTAMP_ERROR_MARGIN ( ( 12 * 60 + 30 ) * 60 ) +#include <config/named.h> +#include NAMED_CONFIG(crypto.h) #include <config/local/crypto.h> +#include LOCAL_NAMED_CONFIG(crypto.h) #endif /* CONFIG_CRYPTO_H */ diff --git a/src/config/general.h b/src/config/general.h index 72cfc3b8..53920345 100644 --- a/src/config/general.h +++ b/src/config/general.h @@ -182,6 +182,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); #undef GDBUDP /* Remote GDB debugging over UDP * (both may be set) */ +#include <config/named.h> +#include NAMED_CONFIG(general.h) #include <config/local/general.h> +#include LOCAL_NAMED_CONFIG(general.h) #endif /* CONFIG_GENERAL_H */ diff --git a/src/config/named.h b/src/config/named.h new file mode 100644 index 00000000..36efdabd --- /dev/null +++ b/src/config/named.h @@ -0,0 +1,26 @@ +#ifndef CONFIG_NAMED_H +#define CONFIG_NAMED_H + +/** @file + * + * Named configurations + * + */ + +FILE_LICENCE ( GPL2_OR_LATER ); + +/* config/<name>/<header>.h */ +#ifdef CONFIG +#define NAMED_CONFIG(_header) <config/CONFIG/_header> +#else +#define NAMED_CONFIG(_header) <config/_header> +#endif + +/* config/local/<name>/<header>.h */ +#ifdef LOCAL_CONFIG +#define LOCAL_NAMED_CONFIG(_header) <config/local/LOCAL_CONFIG/_header> +#else +#define LOCAL_NAMED_CONFIG(_header) <config/_header> +#endif + +#endif /* CONFIG_NAMED_H */ diff --git a/src/config/serial.h b/src/config/serial.h index 8bb9311f..08368efd 100644 --- a/src/config/serial.h +++ b/src/config/serial.h @@ -32,6 +32,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); #define COMSTOP 1 /* Stop bits */ #endif +#include <config/named.h> +#include NAMED_CONFIG(serial.h) #include <config/local/serial.h> +#include LOCAL_NAMED_CONFIG(serial.h) #endif /* CONFIG_SERIAL_H */ diff --git a/src/config/settings.h b/src/config/settings.h index b06f2901..42fe9cc8 100644 --- a/src/config/settings.h +++ b/src/config/settings.h @@ -14,6 +14,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); //#define MEMMAP_SETTINGS /* Memory map settings */ //#define VMWARE_SETTINGS /* VMware GuestInfo settings */ +#include <config/named.h> +#include NAMED_CONFIG(settings.h) #include <config/local/settings.h> +#include LOCAL_NAMED_CONFIG(settings.h) #endif /* CONFIG_SETTINGS_H */ diff --git a/src/config/sideband.h b/src/config/sideband.h index 2e2a8d41..039bb5d0 100644 --- a/src/config/sideband.h +++ b/src/config/sideband.h @@ -11,6 +11,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); //#define CONFIG_BOFM /* IBM's BladeCenter Open Fabric Manager */ +#include <config/named.h> +#include NAMED_CONFIG(sideband.h) #include <config/local/sideband.h> +#include LOCAL_NAMED_CONFIG(sideband.h) #endif /* CONFIG_SIDEBAND_H */ |