macro_rules! optional_config {
($feature:literal, $name:ident, $config:ident) => {
#[cfg(feature = $feature)]
pub mod $name {
pub use crate::config::parsers::$name::$config;
}
#[cfg(not(feature = $feature))]
pub mod $name {
use crate::{
config::{Config, parsers::ConfigParser},
system::fs::UefiFileSystem,
};
use alloc::vec::Vec;
pub(crate) struct $config;
impl ConfigParser for $config {
fn parse_configs(
_fs: &mut UefiFileSystem,
_handle: Handle,
_configs: &mut Vec<Config>,
) {
}
}
}
};
}
optional_config!("bls", bls, BlsConfig);
optional_config!("fallback", fallback, FallbackConfig);
optional_config!("osx", osx, OsxConfig);
optional_config!("shell", shell, ShellConfig);
optional_config!("uki", uki, UkiConfig);
optional_config!("windows", windows, WinConfig);