All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] scripts: add a guard macro in generated .h files
@ 2011-02-07 15:21 Tristan Gingold
  2011-02-20 18:14 ` Aurelien Jarno
  0 siblings, 1 reply; 5+ messages in thread
From: Tristan Gingold @ 2011-02-07 15:21 UTC (permalink / raw)
  To: qemu-devel; +Cc: Tristan Gingold

To avoid redefinition warnings.

Signed-off-by: Tristan Gingold <gingold@adacore.com>
---
 rules.mak             |    2 +-
 scripts/create_config |   12 ++++++++++++
 2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/rules.mak b/rules.mak
index ed59c9e..fb38f96 100644
--- a/rules.mak
+++ b/rules.mak
@@ -57,7 +57,7 @@ find-in-path = $(if $(find-string /, $1), \
 	@test -f $@ || cp $< $@
 
 %.h-timestamp: %.mak
-	$(call quiet-command, sh $(SRC_PATH)/scripts/create_config < $< > $@, "  GEN   $*.h")
+	$(call quiet-command, sh $(SRC_PATH)/scripts/create_config $* < $< > $@, "  GEN   $*.h")
 	@cmp $@ $*.h >/dev/null 2>&1 || cp $@ $*.h
 
 # will delete the target of a rule if commands exit with a nonzero exit status
diff --git a/scripts/create_config b/scripts/create_config
index 0098e68..0302eab 100755
--- a/scripts/create_config
+++ b/scripts/create_config
@@ -1,7 +1,17 @@
 #!/bin/sh
 
+if [ $# -ne 1 ]; then
+  echo "Usage: $0 filename" 2>&1
+  exit 1
+fi
+
+cond_macro=`echo $1 | tr a-z- A-Z_`_H
+
 echo "/* Automatically generated by create_config - do not modify */"
 
+echo "#ifndef $cond_macro"
+echo "#define $cond_macro"
+
 while read line; do
 
 case $line in
@@ -101,3 +111,5 @@ case $line in
 esac
 
 done # read
+
+echo "#endif /* $cond_macro */"
-- 
1.7.3.GIT

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] scripts: add a guard macro in generated .h files
  2011-02-07 15:21 [Qemu-devel] [PATCH] scripts: add a guard macro in generated .h files Tristan Gingold
@ 2011-02-20 18:14 ` Aurelien Jarno
  2011-02-21  6:42   ` Tristan Gingold
  0 siblings, 1 reply; 5+ messages in thread
From: Aurelien Jarno @ 2011-02-20 18:14 UTC (permalink / raw)
  To: Tristan Gingold; +Cc: qemu-devel

On Mon, Feb 07, 2011 at 04:21:40PM +0100, Tristan Gingold wrote:
> To avoid redefinition warnings.
> 
> Signed-off-by: Tristan Gingold <gingold@adacore.com>
> ---
>  rules.mak             |    2 +-
>  scripts/create_config |   12 ++++++++++++
>  2 files changed, 13 insertions(+), 1 deletions(-)
> 
> diff --git a/rules.mak b/rules.mak
> index ed59c9e..fb38f96 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -57,7 +57,7 @@ find-in-path = $(if $(find-string /, $1), \
>  	@test -f $@ || cp $< $@
>  
>  %.h-timestamp: %.mak
> -	$(call quiet-command, sh $(SRC_PATH)/scripts/create_config < $< > $@, "  GEN   $*.h")
> +	$(call quiet-command, sh $(SRC_PATH)/scripts/create_config $* < $< > $@, "  GEN   $*.h")
>  	@cmp $@ $*.h >/dev/null 2>&1 || cp $@ $*.h
>  
>  # will delete the target of a rule if commands exit with a nonzero exit status
> diff --git a/scripts/create_config b/scripts/create_config
> index 0098e68..0302eab 100755
> --- a/scripts/create_config
> +++ b/scripts/create_config
> @@ -1,7 +1,17 @@
>  #!/bin/sh
>  
> +if [ $# -ne 1 ]; then
> +  echo "Usage: $0 filename" 2>&1
> +  exit 1
> +fi
> +
> +cond_macro=`echo $1 | tr a-z- A-Z_`_H
> +
>  echo "/* Automatically generated by create_config - do not modify */"
>  
> +echo "#ifndef $cond_macro"
> +echo "#define $cond_macro"
> +
>  while read line; do
>  
>  case $line in
> @@ -101,3 +111,5 @@ case $line in
>  esac
>  
>  done # read
> +
> +echo "#endif /* $cond_macro */"

config-host.h only contains #define entries, and GCC doesn't choke when
as long as the definitions are the same. What is the use case of this
patch? 

-- 
Aurelien Jarno                          GPG: 1024D/F1BCDB73
aurelien@aurel32.net                 http://www.aurel32.net

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [Qemu-devel] [PATCH] scripts: add a guard macro in generated .h files
  2011-02-20 18:14 ` Aurelien Jarno
@ 2011-02-21  6:42   ` Tristan Gingold
  2011-02-21  8:14     ` [Qemu-devel] " Paolo Bonzini
  0 siblings, 1 reply; 5+ messages in thread
From: Tristan Gingold @ 2011-02-21  6:42 UTC (permalink / raw)
  To: Aurelien Jarno; +Cc: qemu-devel


On Feb 20, 2011, at 7:14 PM, Aurelien Jarno wrote:

> On Mon, Feb 07, 2011 at 04:21:40PM +0100, Tristan Gingold wrote:
>> To avoid redefinition warnings.
> config-host.h only contains #define entries, and GCC doesn't choke when
> as long as the definitions are the same. What is the use case of this
> patch? 

Mostly a style issue.  It is common to always protect header files against multiple inclusion, unless the header is meant to be
included several times (which is not the case for these config files).  I think this is a good practice.

I once got redefinition warnings for macros in config-host.h, but I agree that adding the guard macro doesn't fix this issue.

If you agree that adding guards is harmless and good style, I can change the comment.

Tristan.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Qemu-devel] Re: [PATCH] scripts: add a guard macro in generated .h files
  2011-02-21  6:42   ` Tristan Gingold
@ 2011-02-21  8:14     ` Paolo Bonzini
  2011-02-21 18:13       ` Tristan Gingold
  0 siblings, 1 reply; 5+ messages in thread
From: Paolo Bonzini @ 2011-02-21  8:14 UTC (permalink / raw)
  To: Tristan Gingold; +Cc: qemu-devel, Aurelien Jarno

On 02/21/2011 07:42 AM, Tristan Gingold wrote:
> Mostly a style issue.  It is common to always protect header files
> against multiple inclusion, unless the header is meant to be included
> several times (which is not the case for these config files).  I
> think this is a good practice.

Traditionally, autoconf's config.h headers have no guards either.  This 
can indeed cause some troubles.  However, it also helps highlighting 
poor practices, such as libraries installing a config.h file including 
it from a public header.

> I once got redefinition warnings for macros in config-host.h, but I
> agree that adding the guard macro doesn't fix this issue.

config-host.h should always be the first included header (we are poor at 
this) and its macros should never conflict with anything else.  I think 
we should rather fix the problems you've seen with config-host.h, if you 
can still reproduce them.

Paolo

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [Qemu-devel] Re: [PATCH] scripts: add a guard macro in generated .h files
  2011-02-21  8:14     ` [Qemu-devel] " Paolo Bonzini
@ 2011-02-21 18:13       ` Tristan Gingold
  0 siblings, 0 replies; 5+ messages in thread
From: Tristan Gingold @ 2011-02-21 18:13 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: qemu-devel, Aurelien Jarno


On Feb 21, 2011, at 9:14 AM, Paolo Bonzini wrote:

> On 02/21/2011 07:42 AM, Tristan Gingold wrote:
>> Mostly a style issue.  It is common to always protect header files
>> against multiple inclusion, unless the header is meant to be included
>> several times (which is not the case for these config files).  I
>> think this is a good practice.
> 
> Traditionally, autoconf's config.h headers have no guards either.  This can indeed cause some troubles.  However, it also helps highlighting poor practices, such as libraries installing a config.h file including it from a public header.
> 
>> I once got redefinition warnings for macros in config-host.h, but I
>> agree that adding the guard macro doesn't fix this issue.
> 
> config-host.h should always be the first included header (we are poor at this) and its macros should never conflict with anything else.  I think we should rather fix the problems you've seen with config-host.h, if you can still reproduce them.

Thank you.  I will investigate the next time I have the issue and the time.

Tristan.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2011-02-21 18:13 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-02-07 15:21 [Qemu-devel] [PATCH] scripts: add a guard macro in generated .h files Tristan Gingold
2011-02-20 18:14 ` Aurelien Jarno
2011-02-21  6:42   ` Tristan Gingold
2011-02-21  8:14     ` [Qemu-devel] " Paolo Bonzini
2011-02-21 18:13       ` Tristan Gingold

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.