diff options
-rw-r--r-- | scripts/kconfig/confdata.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 2bafd9a7c8d..a1a9872e4a2 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
@@ -768,6 +768,29 @@ out: | |||
768 | return res; | 768 | return res; |
769 | } | 769 | } |
770 | 770 | ||
771 | static void conf_write_function_autoconf(FILE *out, char* conf, char* name, | ||
772 | int val) | ||
773 | { | ||
774 | char c; | ||
775 | char *tmp, *d; | ||
776 | |||
777 | d = strdup(conf); | ||
778 | tmp = d; | ||
779 | while ((c = *conf++)) | ||
780 | *d++ = tolower(c); | ||
781 | |||
782 | fprintf(out, "#define %sis_", tmp); | ||
783 | free(tmp); | ||
784 | |||
785 | d = strdup(name); | ||
786 | tmp = d; | ||
787 | while ((c = *name++)) | ||
788 | *d++ = tolower(c); | ||
789 | fprintf(out, "%s%s() %d\n", tmp, (val > 1) ? "_module" : "", | ||
790 | val ? 1 : 0); | ||
791 | free(tmp); | ||
792 | } | ||
793 | |||
771 | int conf_write_autoconf(void) | 794 | int conf_write_autoconf(void) |
772 | { | 795 | { |
773 | struct symbol *sym; | 796 | struct symbol *sym; |
@@ -775,6 +798,7 @@ int conf_write_autoconf(void) | |||
775 | const char *name; | 798 | const char *name; |
776 | FILE *out, *tristate, *out_h; | 799 | FILE *out, *tristate, *out_h; |
777 | int i; | 800 | int i; |
801 | int fct_val; | ||
778 | 802 | ||
779 | sym_clear_all_valid(); | 803 | sym_clear_all_valid(); |
780 | 804 | ||
@@ -815,6 +839,7 @@ int conf_write_autoconf(void) | |||
815 | rootmenu.prompt->text); | 839 | rootmenu.prompt->text); |
816 | 840 | ||
817 | for_all_symbols(i, sym) { | 841 | for_all_symbols(i, sym) { |
842 | fct_val = 1; | ||
818 | sym_calc_value(sym); | 843 | sym_calc_value(sym); |
819 | if (!(sym->flags & SYMBOL_WRITE) || !sym->name) | 844 | if (!(sym->flags & SYMBOL_WRITE) || !sym->name) |
820 | continue; | 845 | continue; |
@@ -828,12 +853,14 @@ int conf_write_autoconf(void) | |||
828 | case S_TRISTATE: | 853 | case S_TRISTATE: |
829 | switch (sym_get_tristate_value(sym)) { | 854 | switch (sym_get_tristate_value(sym)) { |
830 | case no: | 855 | case no: |
856 | fct_val = 0; | ||
831 | break; | 857 | break; |
832 | case mod: | 858 | case mod: |
833 | fprintf(tristate, "%s%s=M\n", | 859 | fprintf(tristate, "%s%s=M\n", |
834 | CONFIG_, sym->name); | 860 | CONFIG_, sym->name); |
835 | fprintf(out_h, "#define %s%s_MODULE 1\n", | 861 | fprintf(out_h, "#define %s%s_MODULE 1\n", |
836 | CONFIG_, sym->name); | 862 | CONFIG_, sym->name); |
863 | fct_val = 2; | ||
837 | break; | 864 | break; |
838 | case yes: | 865 | case yes: |
839 | if (sym->type == S_TRISTATE) | 866 | if (sym->type == S_TRISTATE) |
@@ -860,8 +887,10 @@ int conf_write_autoconf(void) | |||
860 | CONFIG_, sym->name, str); | 887 | CONFIG_, sym->name, str); |
861 | break; | 888 | break; |
862 | default: | 889 | default: |
890 | fct_val = 0; | ||
863 | break; | 891 | break; |
864 | } | 892 | } |
893 | conf_write_function_autoconf(out_h, CONFIG_, sym->name, fct_val); | ||
865 | } | 894 | } |
866 | fclose(out); | 895 | fclose(out); |
867 | fclose(tristate); | 896 | fclose(tristate); |