Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932750Ab1EMSSw (ORCPT ); Fri, 13 May 2011 14:18:52 -0400 Received: from mail-iw0-f174.google.com ([209.85.214.174]:34232 "EHLO mail-iw0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751665Ab1EMSSv convert rfc822-to-8bit (ORCPT ); Fri, 13 May 2011 14:18:51 -0400 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=V+brB3YsZKJrToX5ASg2rWp4KtoG43ggLftjdgzxJn6zS4gsmk3HAVOiK4rIRu3YCh PDysXYOVez+AmxmTVyRKks4loG9zksPwa9QXCqKeaWdFE+H3Glc2fw1fkIqGpCcJepCp BoaIIJ7wtyzwDX4FXhu3x8tpPqTAnYm5K2viw= MIME-Version: 1.0 In-Reply-To: <1304658229-30820-1-git-send-email-plagnioj@jcrosoft.com> References: <1304658229-30820-1-git-send-email-plagnioj@jcrosoft.com> Date: Fri, 13 May 2011 14:18:50 -0400 Message-ID: Subject: Re: [PATCH v2] kconfig: autogenerated config_is_xxx macro From: Arnaud Lacombe To: Jean-Christophe PLAGNIOL-VILLARD Cc: linux-kernel@vger.kernel.org, linux-kbuild@vger.kernel.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3933 Lines: 128 Hi, On Fri, May 6, 2011 at 1:03 AM, Jean-Christophe PLAGNIOL-VILLARD wrote: > 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 > For the record, there is at least one report of dead code elimination regression in GCC 4.4.x: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42494 - Arnaud > as done in the mach-types for arm as exmaple > > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD > --- > 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); > -- > 1.7.4.1 > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at ?http://vger.kernel.org/majordomo-info.html > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/