diff options
| -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) | 
