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)
{
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.
*/
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 == ')')
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;
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'))
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;