diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2010-08-21 15:59:10 +0200 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2010-09-01 12:26:41 +0200 |
commit | 7c524dd0b683e1e8fac4e4084ac7678576bfbe07 (patch) | |
tree | 557327667ec2d0bf0bdb94894a4452c4ad8908c5 /package/config/patches/08-make-write-deps.patch | |
parent | 6f38119cbb2cf5dd9c64109ff331a3d3868460ff (diff) | |
download | buildroot-novena-7c524dd0b683e1e8fac4e4084ac7678576bfbe07.tar.gz buildroot-novena-7c524dd0b683e1e8fac4e4084ac7678576bfbe07.zip |
Clean up our patches against kconfig
Our kconfig-to-buildroot2.patch hasn't been kept up to date with all
the changes made into package/config, and a single patch wasn't very
practical to maintain all our changes. Therefore, this commit adds a
package/config/patches directory, which contains a Quilt series of
patches that correspond to our modifications to the kconfig mechanism.
The huge kconfig-to-buildroot2.patch has been split into 16 smaller
patches. The purpose of some of the modifications has been clearly
identified, while some others were not identified.
The 16 patches together do match exactly the old
kconfig-to-buildroot2.patch. We have been very careful in making sure
that we wouldn't loose any of our modifications.
The only modifications made are :
* Instead of renaming the kernel Makefile to Makefile.kconfig and
naming the Buildroot Makefile just 'Makefile', we instead keep the
original package/config/Makefile from the kernel
scripts/kconfig/Makefile and name the Buildroot Makefile
package/config/Makefile.br. The main Buildroot Makefile is modified
accordingly.
* The documentation README.buildroot2 is updated to explain how to
upgrade to a newer version of scripts/kconfig.
* The kconfig-language.txt documentation is removed, as anybody can
easily find it in the kernel sources so there's no need to
duplicate it here.
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/config/patches/08-make-write-deps.patch')
-rw-r--r-- | package/config/patches/08-make-write-deps.patch | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/package/config/patches/08-make-write-deps.patch b/package/config/patches/08-make-write-deps.patch new file mode 100644 index 000000000..b10413485 --- /dev/null +++ b/package/config/patches/08-make-write-deps.patch @@ -0,0 +1,139 @@ +--- + util.c | 117 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- + 1 file changed, 116 insertions(+), 1 deletion(-) + +Index: config.clean/util.c +=================================================================== +--- config.clean.orig/util.c ++++ config.clean/util.c +@@ -26,6 +26,121 @@ + return file; + } + ++static char* br2_symbol_printer(const char * const in) ++{ ++ ssize_t i, j, len = strlen(in); ++ char *ret; ++ if (len < 1) ++ return NULL; ++ ret = malloc(len); ++ if (!ret) { ++ printf("Out of memory!"); ++ exit(1); ++ } ++ memset(ret, 0, len); ++ i = j = 0; ++ if (strncmp("BR2_", in, 4) == 0) ++ i += 4; ++ if (strncmp("PACKAGE_", in + i, 8) == 0) ++ i += 8; ++ else if (strncmp("TARGET_", in + i, 7) == 0) ++ i += 7; ++ while (i <= len) ++ ret[j++] = tolower(in[i++]); ++ return ret; ++} ++ ++/* write dependencies of the infividual config-symbols */ ++static int write_make_deps(const char *name) ++{ ++ char *str; ++ char dir[PATH_MAX+1], buf[PATH_MAX+1], buf2[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"; ++ ++ strcpy(dir, conf_get_configname()); ++ str = strrchr(dir, '/'); ++ if (str) ++ str[1] = 0; ++ else ++ dir[0] = 0; ++ ++ sprintf(buf, "%s%s", dir, name_tmp); ++ out = fopen(buf, "w"); ++ if (!out) ++ return 1; ++ fprintf(out, "# ATTENTION! This does not handle 'depends', just 'select'! \n" ++ "# See package/config/util.c write_make_deps()\n#\n"); ++ menu = &rootmenu;//rootmenu.list; ++ while (menu) { ++ sym = menu->sym; ++ if (!sym) { ++ if (!menu_is_visible(menu)) ++ goto next; ++ } else if (!(sym->flags & SYMBOL_CHOICE)) { ++ sym_calc_value(sym); ++ if (sym->type == S_BOOLEAN ++ && sym_get_tristate_value(sym) != no) { ++ done = 0; ++ for_all_prompts(sym, prop) { ++ struct expr *e; ++//printf("\nname=%s\n", sym->name); ++ for_all_properties(sym, p, P_SELECT) { ++ e = p->expr; ++ if (e && e->left.sym->name) { ++ if (!done) { ++ fprintf(out, "%s: $(BASE_TARGETS)", br2_symbol_printer(sym->name)); ++ done = 1; ++ } ++//printf("SELECTS %s\n",e->left.sym->name); ++ fprintf(out, " %s",br2_symbol_printer(e->left.sym->name)); ++ } ++ } ++ if (done) ++ fprintf(out, "\n"); ++#if 0 ++ e = sym->rev_dep.expr; ++ if (e && e->type == E_SYMBOL ++ && e->left.sym->name) { ++ fprintf(out, "%s: %s", br2_symbol_printer(e->left.sym->name), ++ br2_symbol_printer(sym->name)); ++printf("%s is Selected BY: %s", sym->name, e->left.sym->name); ++ } ++#endif ++ } ++ } ++ } ++next: ++ if (menu->list) { ++ menu = menu->list; ++ continue; ++ } ++ if (menu->next) ++ menu = menu->next; ++ else while ((menu = menu->parent)) { ++ if (menu->next) { ++ menu = menu->next; ++ break; ++ } ++ } ++ } ++ fclose(out); ++ sprintf(buf2, "%s%s", dir, name); ++ rename(buf, buf2); ++ printf(_("#\n" ++ "# make dependencies written to %s\n" ++ "# ATTENTION buildroot devels!\n" ++ "# See top of this file before playing with this auto-preprequisites!\n" ++ "#\n"), name); ++ return 0; ++} ++ + /* write a dependency file as used by kbuild to track dependencies */ + int file_write_dep(const char *name) + { +@@ -68,7 +183,7 @@ + fprintf(out, "\n$(deps_config): ;\n"); + fclose(out); + rename("..config.tmp", name); +- return 0; ++ return write_make_deps(NULL); + } + + |