[coreboot] New patch to review for coreboot: 5e55fa0 libpayload: add kconfig.h

Stefan Reinauer (stefan.reinauer@coreboot.org) gerrit at coreboot.org
Fri Dec 14 22:07:56 CET 2012


Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/2036

-gerrit

commit 5e55fa0eb185a92199d6c27ab23584b5b0bb76e3
Author: Stefan Reinauer <reinauer at chromium.org>
Date:   Fri Dec 14 13:06:49 2012 -0800

    libpayload: add kconfig.h
    
    This implements the linux kernel's macros to handle
    boolean CONFIG_ variables more easily.
    
    Change-Id: I595f9db652d019fe72e231111258ec609bec9d4e
    Signed-off-by: Stefan Reinauer <reinauer at google.com>
---
 payloads/libpayload/include/kconfig.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/payloads/libpayload/include/kconfig.h b/payloads/libpayload/include/kconfig.h
new file mode 100644
index 0000000..3d7d768
--- /dev/null
+++ b/payloads/libpayload/include/kconfig.h
@@ -0,0 +1,21 @@
+#ifndef __KCONFIG_H__
+#define __KCONFIG_H__
+
+#include <libpayload-config.h>
+
+/*
+ * Getting something that works in C and CPP for an arg that may or may
+ * not be defined is tricky.  Here, if we have "#define CONFIG_BOOGER 1"
+ * we match on the placeholder define, insert the "0," for arg1 and generate
+ * the triplet (0, 1, 0).  Then the last step cherry picks the 2nd arg (a one).
+ * When CONFIG_BOOGER is not defined, we generate a (... 1, 0) pair, and when
+ * the last step cherry picks the 2nd arg, we get a zero.
+ */
+#define __ARG_PLACEHOLDER_1 0,
+#define config_enabled(cfg) _config_enabled(cfg)
+#define _config_enabled(value) __config_enabled(__ARG_PLACEHOLDER_##value)
+#define __config_enabled(arg1_or_junk) ___config_enabled(arg1_or_junk 1, 0, 0)
+#define ___config_enabled(__ignored, val, ...) val
+
+#define IS_ENABLED(option) config_enabled(option)
+#endif



More information about the coreboot mailing list