board: tbs2910: Convert i2c and rtc to driver model
[oweals/u-boot.git] / scripts / basic / fixdep.c
index 20fed03beabad5c5b915e51763e338c7ab8833f4..da7fb2cd4dde9cd1ca52e8981628fdb9e3ad05f7 100644 (file)
 char *target;
 char *depfile;
 char *cmdline;
-int is_spl_build = 0; /* hack for U-boot */
+int is_spl_build = 0; /* hack for U-Boot */
 
 static void usage(void)
 {
@@ -192,23 +192,6 @@ static void define_config(const char *name, int len, unsigned int hash)
        hashtab[hash % HASHSZ] = aux;
 }
 
-/*
- * Clear the set of configuration strings.
- */
-static void clear_config(void)
-{
-       struct item *aux, *next;
-       unsigned int i;
-
-       for (i = 0; i < HASHSZ; i++) {
-               for (aux = hashtab[i]; aux; aux = next) {
-                       next = aux->next;
-                       free(aux);
-               }
-               hashtab[i] = NULL;
-       }
-}
-
 /*
  * Record the use of a CONFIG_* word.
  */
@@ -266,10 +249,17 @@ static void parse_config_file(const char *map, size_t len)
                if (q - p < 0)
                        continue;
 
-               /* U-Boot also handles CONFIG_IS_{ENABLED/BUILTIN/MODULE} */
+               /*
+                * U-Boot also handles
+                *   CONFIG_IS_ENABLED(...)
+                *   CONFIG_IS_BUILTIN(...)
+                *   CONFIG_IS_MODULE(...)
+                *   CONFIG_VAL(...)
+                */
                if ((q - p == 10 && !memcmp(p, "IS_ENABLED(", 11)) ||
                    (q - p == 10 && !memcmp(p, "IS_BUILTIN(", 11)) ||
-                   (q - p == 9 && !memcmp(p, "IS_MODULE(", 10))) {
+                   (q - p == 9 && !memcmp(p, "IS_MODULE(", 10)) ||
+                   (q - p == 3 && !memcmp(p, "VAL(", 4))) {
                        p = q + 1;
                        for (q = p; q < map + len; q++)
                                if (*q == ')')
@@ -313,7 +303,11 @@ static void do_config_file(const char *filename)
                perror(filename);
                exit(2);
        }
-       fstat(fd, &st);
+       if (fstat(fd, &st) < 0) {
+               fprintf(stderr, "fixdep: error fstat'ing config file: ");
+               perror(filename);
+               exit(2);
+       }
        if (st.st_size == 0) {
                close(fd);
                return;
@@ -347,8 +341,6 @@ static void parse_dep_file(void *map, size_t len)
        int saw_any_target = 0;
        int is_first_dep = 0;
 
-       clear_config();
-
        while (m < end) {
                /* Skip any "white space" */
                while (m < end && (*m == ' ' || *m == '\\' || *m == '\n'))
@@ -478,7 +470,7 @@ int main(int argc, char *argv[])
        target = argv[2];
        cmdline = argv[3];
 
-       /* hack for U-boot */
+       /* hack for U-Boot */
        if (!strncmp(target, "spl/", 4) || !strncmp(target, "tpl/", 4))
                is_spl_build = 1;