diff options
| author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2011-05-06 01:03:49 -0400 |
|---|---|---|
| committer | Michal Marek <mmarek@suse.cz> | 2011-05-17 09:59:23 -0400 |
| commit | de125187dc17e3715ba983adf60faecfdc3a64c4 (patch) | |
| tree | 3e466c01d3dac4c2117e3e0f9f6a6dfe0d403247 /scripts | |
| parent | 76ce94a37187327c09343a98726ccea81f9eab54 (diff) | |
kconfig: autogenerated config_is_xxx macro
this will allow to use to use
if(config_is_xxx())
if(config_is_xxx_module())
in the code instead of
#ifdef CONFIG_xxx
#ifdef CONFIG_xxx_MODULE
and now let the compiler remove the non usefull code and not the
pre-processor
as done in the mach-types for arm as exmaple
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Acked-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Michal Marek <mmarek@suse.cz>
Diffstat (limited to 'scripts')
| -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 834eecb010ba..db06af0321b3 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
| @@ -778,6 +778,29 @@ out: | |||
| 778 | return res; | 778 | return res; |
| 779 | } | 779 | } |
| 780 | 780 | ||
| 781 | static void conf_write_function_autoconf(FILE *out, char* conf, char* name, | ||
| 782 | int val) | ||
| 783 | { | ||
| 784 | char c; | ||
| 785 | char *tmp, *d; | ||
| 786 | |||
| 787 | d = strdup(conf); | ||
| 788 | tmp = d; | ||
| 789 | while ((c = *conf++)) | ||
| 790 | *d++ = tolower(c); | ||
| 791 | |||
| 792 | fprintf(out, "#define %sis_", tmp); | ||
| 793 | free(tmp); | ||
| 794 | |||
| 795 | d = strdup(name); | ||
| 796 | tmp = d; | ||
| 797 | while ((c = *name++)) | ||
| 798 | *d++ = tolower(c); | ||
| 799 | fprintf(out, "%s%s() %d\n", tmp, (val > 1) ? "_module" : "", | ||
| 800 | val ? 1 : 0); | ||
| 801 | free(tmp); | ||
| 802 | } | ||
| 803 | |||
| 781 | int conf_write_autoconf(void) | 804 | int conf_write_autoconf(void) |
| 782 | { | 805 | { |
| 783 | struct symbol *sym; | 806 | struct symbol *sym; |
| @@ -785,6 +808,7 @@ int conf_write_autoconf(void) | |||
| 785 | const char *name; | 808 | const char *name; |
| 786 | FILE *out, *tristate, *out_h; | 809 | FILE *out, *tristate, *out_h; |
| 787 | int i; | 810 | int i; |
| 811 | int fct_val; | ||
| 788 | 812 | ||
| 789 | sym_clear_all_valid(); | 813 | sym_clear_all_valid(); |
| 790 | 814 | ||
| @@ -825,6 +849,7 @@ int conf_write_autoconf(void) | |||
| 825 | rootmenu.prompt->text); | 849 | rootmenu.prompt->text); |
| 826 | 850 | ||
| 827 | for_all_symbols(i, sym) { | 851 | for_all_symbols(i, sym) { |
| 852 | fct_val = 1; | ||
| 828 | sym_calc_value(sym); | 853 | sym_calc_value(sym); |
| 829 | if (!(sym->flags & SYMBOL_WRITE) || !sym->name) | 854 | if (!(sym->flags & SYMBOL_WRITE) || !sym->name) |
| 830 | continue; | 855 | continue; |
| @@ -838,12 +863,14 @@ int conf_write_autoconf(void) | |||
| 838 | case S_TRISTATE: | 863 | case S_TRISTATE: |
| 839 | switch (sym_get_tristate_value(sym)) { | 864 | switch (sym_get_tristate_value(sym)) { |
| 840 | case no: | 865 | case no: |
| 866 | fct_val = 0; | ||
| 841 | break; | 867 | break; |
| 842 | case mod: | 868 | case mod: |
| 843 | fprintf(tristate, "%s%s=M\n", | 869 | fprintf(tristate, "%s%s=M\n", |
| 844 | CONFIG_, sym->name); | 870 | CONFIG_, sym->name); |
| 845 | fprintf(out_h, "#define %s%s_MODULE 1\n", | 871 | fprintf(out_h, "#define %s%s_MODULE 1\n", |
| 846 | CONFIG_, sym->name); | 872 | CONFIG_, sym->name); |
| 873 | fct_val = 2; | ||
| 847 | break; | 874 | break; |
| 848 | case yes: | 875 | case yes: |
| 849 | if (sym->type == S_TRISTATE) | 876 | if (sym->type == S_TRISTATE) |
| @@ -870,8 +897,10 @@ int conf_write_autoconf(void) | |||
| 870 | CONFIG_, sym->name, str); | 897 | CONFIG_, sym->name, str); |
| 871 | break; | 898 | break; |
| 872 | default: | 899 | default: |
| 900 | fct_val = 0; | ||
| 873 | break; | 901 | break; |
| 874 | } | 902 | } |
| 903 | conf_write_function_autoconf(out_h, CONFIG_, sym->name, fct_val); | ||
| 875 | } | 904 | } |
| 876 | fclose(out); | 905 | fclose(out); |
| 877 | fclose(tristate); | 906 | fclose(tristate); |
