From patchwork Fri May 6 05:03:49 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jean-Christophe PLAGNIOL-VILLARD X-Patchwork-Id: 760942 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p465EC7V029104 for ; Fri, 6 May 2011 05:14:12 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751516Ab1EFFOM (ORCPT ); Fri, 6 May 2011 01:14:12 -0400 Received: from 64.mail-out.ovh.net ([91.121.185.65]:35198 "HELO 64.mail-out.ovh.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with SMTP id S1751400Ab1EFFOL (ORCPT ); Fri, 6 May 2011 01:14:11 -0400 Received: (qmail 5509 invoked by uid 503); 6 May 2011 04:44:23 -0000 Received: from b7.ovh.net (HELO mail31.ha.ovh.net) (213.186.33.57) by 64.mail-out.ovh.net with SMTP; 6 May 2011 04:44:23 -0000 Received: from b0.ovh.net (HELO queueout) (213.186.33.50) by b0.ovh.net with SMTP; 6 May 2011 07:14:08 +0200 Received: from ns32433.ovh.net (HELO localhost) (plagnioj%jcrosoft.com@213.251.161.87) by ns0.ovh.net with SMTP; 6 May 2011 07:14:07 +0200 From: Jean-Christophe PLAGNIOL-VILLARD To: linux-kernel@vger.kernel.org Cc: linux-kbuild@vger.kernel.org, Jean-Christophe PLAGNIOL-VILLARD Subject: [PATCH v2] kconfig: autogenerated config_is_xxx macro Date: Fri, 6 May 2011 07:03:49 +0200 Message-Id: <1304658229-30820-1-git-send-email-plagnioj@jcrosoft.com> X-Mailer: git-send-email 1.7.2.3 X-Ovh-Tracer-Id: 9484299342089399064 X-Ovh-Remote: 213.251.161.87 (ns32433.ovh.net) X-Ovh-Local: 213.186.33.20 (ns0.ovh.net) X-Spam-Check: DONE|U 0.5/N Sender: linux-kbuild-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kbuild@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 06 May 2011 05:14:12 +0000 (UTC) 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 Acked-by: Andi Kleen --- v2: use config_is add support of config_is_xxxx_module Best Regards, J. 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 61c35bf..11b8b31 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c @@ -778,6 +778,29 @@ out: return res; } +static void conf_write_function_autoconf(FILE *out, char* conf, char* name, + int val) +{ + char c; + char *tmp, *d; + + d = strdup(conf); + tmp = d; + while ((c = *conf++)) + *d++ = tolower(c); + + fprintf(out, "#define %sis_", tmp); + free(tmp); + + d = strdup(name); + tmp = d; + while ((c = *name++)) + *d++ = tolower(c); + fprintf(out, "%s%s() %d\n", tmp, (val > 1) ? "_module" : "", + val ? 1 : 0); + free(tmp); +} + int conf_write_autoconf(void) { struct symbol *sym; @@ -786,6 +809,7 @@ int conf_write_autoconf(void) FILE *out, *tristate, *out_h; time_t now; int i; + int fct_val; sym_clear_all_valid(); @@ -829,6 +853,7 @@ int conf_write_autoconf(void) rootmenu.prompt->text, ctime(&now)); for_all_symbols(i, sym) { + fct_val = 1; sym_calc_value(sym); if (!(sym->flags & SYMBOL_WRITE) || !sym->name) continue; @@ -842,12 +867,14 @@ int conf_write_autoconf(void) case S_TRISTATE: switch (sym_get_tristate_value(sym)) { case no: + fct_val = 0; break; case mod: fprintf(tristate, "%s%s=M\n", CONFIG_, sym->name); fprintf(out_h, "#define %s%s_MODULE 1\n", CONFIG_, sym->name); + fct_val = 2; break; case yes: if (sym->type == S_TRISTATE) @@ -874,8 +901,10 @@ int conf_write_autoconf(void) CONFIG_, sym->name, str); break; default: + fct_val = 0; break; } + conf_write_function_autoconf(out_h, CONFIG_, sym->name, fct_val); } fclose(out); fclose(tristate);