diff options
Diffstat (limited to 'package/config')
-rw-r--r-- | package/config/confdata.c | 1 | ||||
-rw-r--r-- | package/config/lkc.h | 1 | ||||
-rw-r--r-- | package/config/util.c | 23 |
3 files changed, 25 insertions, 0 deletions
diff --git a/package/config/confdata.c b/package/config/confdata.c index 91a1cf4e2..55cb94fdf 100644 --- a/package/config/confdata.c +++ b/package/config/confdata.c @@ -380,6 +380,7 @@ int conf_write(const char *name) } } fclose(out); + file_write_dep(NULL); if (!name || basename != conf_def_filename) { if (!name) name = conf_def_filename; diff --git a/package/config/lkc.h b/package/config/lkc.h index df2f6b46e..b8a67fc9d 100644 --- a/package/config/lkc.h +++ b/package/config/lkc.h @@ -59,6 +59,7 @@ void menu_set_type(int type); /* util.c */ struct file *file_lookup(const char *name); +int file_write_dep(const char *name); struct gstr { size_t len; diff --git a/package/config/util.c b/package/config/util.c index 21e09a23d..8f65ccac5 100644 --- a/package/config/util.c +++ b/package/config/util.c @@ -26,6 +26,29 @@ struct file *file_lookup(const char *name) return file; } +/* write a dependency file as used by kbuild to track dependencies */ +int file_write_dep(const char *name) +{ + struct file *file; + FILE *out; + + if (!name) + name = ".config.cmd"; + out = fopen(".config.tmp", "w"); + if (!out) + return 1; + fprintf(out, "deps_config := \\\n"); + for (file = file_list; file; file = file->next) { + if (file->next) + fprintf(out, "\t%s \\\n", file->name); + else + fprintf(out, "\t%s\n", file->name); + } + fprintf(out, "\n.config include/config.h: $(deps_config)\n\n$(deps_config):\n"); + fclose(out); + rename(".config.tmp", name); + return 0; +} /* Allocate initial growable sting */ struct gstr str_new(void) |