diff options
author | Will Wagner <willw@carallon.com> | 2010-01-11 12:28:50 +0000 |
---|---|---|
committer | Peter Korsgaard <jacmet@sunsite.dk> | 2010-06-21 22:06:00 +0200 |
commit | 39ca6d50d8d52a9c8cb252cffb23a9d6f0c2942d (patch) | |
tree | 1ca406285a3ceaba7141406355c504f26adc0092 /package/config/util.c | |
parent | 868ed55b45559fc0475270bd0d3fe4c3ec6b395f (diff) | |
download | buildroot-novena-39ca6d50d8d52a9c8cb252cffb23a9d6f0c2942d.tar.gz buildroot-novena-39ca6d50d8d52a9c8cb252cffb23a9d6f0c2942d.zip |
Move config files into output directory for out-of-tree build
Closes #1213
Signed-off-by: Will Wagner <will_wagner@carallon.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
Diffstat (limited to 'package/config/util.c')
-rw-r--r-- | package/config/util.c | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/package/config/util.c b/package/config/util.c index 42038385b..a1e9dea21 100644 --- a/package/config/util.c +++ b/package/config/util.c @@ -51,17 +51,26 @@ static char* br2_symbol_printer(const char * const in) } /* write dependencies of the infividual config-symbols */ -static int write_make_deps(const char *name) +int write_make_deps(const char *name) { + const char *str; + char buf[PATH_MAX+1]; struct menu *menu; struct symbol *sym; struct property *prop, *p; unsigned done; - const char * const name_tmp = "..make.deps.tmp"; FILE *out; if (!name) name = ".auto.deps"; - out = fopen(name_tmp, "w"); + + str = strrchr(name, '/'); + memset(buf, 0, PATH_MAX+1); + if(str) + { + strncpy(buf, name, str - name + 1); + } + strcat(buf, "..make.deps.tmp"); + out = fopen(buf, "w"); if (!out) return 1; fprintf(out, "# ATTENTION! This does not handle 'depends', just 'select'! \n" @@ -120,7 +129,7 @@ next: } } fclose(out); - rename(name_tmp, name); + rename(buf, name); printf(_("#\n" "# make dependencies written to %s\n" "# ATTENTION buildroot devels!\n" @@ -132,6 +141,8 @@ next: /* write a dependency file as used by kbuild to track dependencies */ int file_write_dep(const char *name) { + const char *str; + char buf[PATH_MAX+1]; struct symbol *sym, *env_sym; struct expr *e; struct file *file; @@ -139,7 +150,16 @@ int file_write_dep(const char *name) if (!name) name = ".kconfig.d"; - out = fopen("..config.tmp", "w"); + + str = strrchr(name, '/'); + memset(buf, 0, PATH_MAX+1); + if(str) + { + strncpy(buf, name, str - name + 1); + } + strcat(buf, "..config.tmp"); + + out = fopen(buf, "w"); if (!out) return 1; fprintf(out, "deps_config := \\\n"); @@ -170,8 +190,7 @@ int file_write_dep(const char *name) fprintf(out, "\n$(deps_config): ;\n"); fclose(out); - rename("..config.tmp", name); - return write_make_deps(NULL); + rename(buf, name); } |