kconfig: add 'info', 'warning-if', and 'error-if' built-in functions
[carl9170fw.git] / config / preprocess.c
index 56aa1f0bad0422eab2d1f1f2eb1f8d79f99b769c..5ee58eeb9a7d954d8d5b849211835147a88da8dc 100644 (file)
@@ -106,6 +106,21 @@ struct function {
        char *(*func)(int argc, char *argv[]);
 };
 
+static char *do_error_if(int argc, char *argv[])
+{
+       if (!strcmp(argv[0], "y"))
+               pperror("%s", argv[1]);
+
+       return NULL;
+}
+
+static char *do_info(int argc, char *argv[])
+{
+       printf("%s\n", argv[0]);
+
+       return xstrdup("");
+}
+
 static char *do_shell(int argc, char *argv[])
 {
        FILE *p;
@@ -146,9 +161,21 @@ static char *do_shell(int argc, char *argv[])
        return xstrdup(buf);
 }
 
+static char *do_warning_if(int argc, char *argv[])
+{
+       if (!strcmp(argv[0], "y"))
+               fprintf(stderr, "%s:%d: %s\n",
+                       current_file->name, yylineno, argv[1]);
+
+       return xstrdup("");
+}
+
 static const struct function function_table[] = {
        /* Name         MIN     MAX     Function */
+       { "error-if",   2,      2,      do_error_if },
+       { "info",       1,      1,      do_info },
        { "shell",      1,      1,      do_shell },
+       { "warning-if", 2,      2,      do_warning_if },
 };
 
 #define FUNCTION_MAX_ARGS              16