aboutsummaryrefslogtreecommitdiff
path: root/package/config/confdata.c
diff options
context:
space:
mode:
authorGravatar Will Wagner <willw@carallon.com>2010-01-11 12:28:50 +0000
committerGravatar Peter Korsgaard <jacmet@sunsite.dk>2010-06-21 22:06:00 +0200
commit39ca6d50d8d52a9c8cb252cffb23a9d6f0c2942d (patch)
tree1ca406285a3ceaba7141406355c504f26adc0092 /package/config/confdata.c
parent868ed55b45559fc0475270bd0d3fe4c3ec6b395f (diff)
downloadbuildroot-39ca6d50d8d52a9c8cb252cffb23a9d6f0c2942d.tar.gz
buildroot-39ca6d50d8d52a9c8cb252cffb23a9d6f0c2942d.tar.bz2
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/confdata.c')
-rw-r--r--package/config/confdata.c53
1 files changed, 47 insertions, 6 deletions
diff --git a/package/config/confdata.c b/package/config/confdata.c
index 52199123aa..fe1fc2e8e6 100644
--- a/package/config/confdata.c
+++ b/package/config/confdata.c
@@ -423,8 +423,17 @@ int conf_write(const char *name)
basename = conf_get_configname();
} else
basename = name;
- } else
+ } else {
+ char *slash;
+
basename = conf_get_configname();
+ if((slash = strrchr(basename, '/'))) {
+ int size = slash - basename + 1;
+ memcpy(dirname, basename, size);
+ dirname[size] = 0;
+ basename = slash + 1;
+ }
+ }
sprintf(newname, "%s%s", dirname, basename);
env = getenv("KCONFIG_OVERWRITECONFIG");
@@ -688,19 +697,51 @@ int conf_write_autoconf(void)
FILE *out, *out_h;
time_t now;
int i, l;
+ char buf[PATH_MAX+1];
+ char buf2[PATH_MAX+1];
sym_clear_all_valid();
- file_write_dep(".config.cmd");
+ name = conf_get_configname();
+ str = strrchr(name, '/');
+
+ memset(buf, 0, PATH_MAX+1);
+ if(str)
+ {
+ strncpy(buf, name, str - name + 1);
+ }
+ strcat(buf, ".config.cmd");
+ file_write_dep(buf);
+
+ memset(buf, 0, PATH_MAX+1);
+ if(str)
+ {
+ strncpy(buf, name, str - name + 1);
+ }
+ strcat(buf, ".auto.deps");
+ write_make_deps(buf);
if (conf_split_config())
return 1;
- out = fopen(".tmpconfig", "w");
+ memset(buf, 0, PATH_MAX+1);
+ if(str)
+ {
+ strncpy(buf, name, str - name + 1);
+ }
+ strcat(buf, ".tmpconfig");
+ memset(buf2, 0, PATH_MAX+1);
+ if(str)
+ {
+ strncpy(buf2, name, str - name + 1);
+ }
+ strcat(buf2, ".tmpconfig.h");
+
+ out = fopen(buf, "w");
if (!out)
return 1;
- out_h = fopen(".tmpconfig.h", "w");
+ out_h = fopen(buf2, "w");
if (!out_h) {
fclose(out);
return 1;
@@ -782,14 +823,14 @@ int conf_write_autoconf(void)
name = getenv("KCONFIG_AUTOHEADER");
if (!name)
name = "include/linux/autoconf.h";
- if (rename(".tmpconfig.h", name))
+ if (rename(buf2, name))
return 1;
name = conf_get_autoconfig_name();
/*
* This must be the last step, kbuild has a dependency on auto.conf
* and this marks the successful completion of the previous steps.
*/
- if (rename(".tmpconfig", name))
+ if (rename(buf, name))
return 1;
return 0;