* [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.