* [Qemu-devel] [PATCH v2] configure: Force the C standard to gnu99
@ 2019-01-09 14:24 Thomas Huth
2019-01-09 14:31 ` Daniel P. Berrangé
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Huth @ 2019-01-09 14:24 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Daniel P. Berrangé, pbonzini,
peter.maydell, Markus Armbruster
Different versions of GCC and Clang use different versions of the C standard.
This repeatedly caused problems already, e.g. with duplicated typedefs:
https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.html
or with for-loop variable initializers:
https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg00237.html
To avoid these problems, we should enforce the C language version to the
same level for all compilers. Since our minimum compiler versions is
GCC v4.8, our best option is "gnu99" right now ("gnu17" is not available
there yet, and "gnu11" is marked as "experimental").
Signed-off-by: Thomas Huth <thuth@redhat.com>
---
v2: Use gnu99 instead of gnu11
configure | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/configure b/configure
index b9f34af..721ade7 100755
--- a/configure
+++ b/configure
@@ -105,7 +105,8 @@ update_cxxflags() {
for arg in $QEMU_CFLAGS; do
case $arg in
-Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
- -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
+ -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls|\
+ -std=gnu99)
;;
*)
QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
@@ -585,7 +586,7 @@ ARFLAGS="${ARFLAGS-rv}"
# left shift of signed integers is well defined and has the expected
# 2s-complement style results. (Both clang and gcc agree that it
# provides these semantics.)
-QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
+QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS"
QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
--
1.8.3.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2] configure: Force the C standard to gnu99
2019-01-09 14:24 [Qemu-devel] [PATCH v2] configure: Force the C standard to gnu99 Thomas Huth
@ 2019-01-09 14:31 ` Daniel P. Berrangé
2019-01-09 14:51 ` Thomas Huth
0 siblings, 1 reply; 5+ messages in thread
From: Daniel P. Berrangé @ 2019-01-09 14:31 UTC (permalink / raw)
To: Thomas Huth
Cc: qemu-devel, Richard Henderson, pbonzini, peter.maydell,
Markus Armbruster
On Wed, Jan 09, 2019 at 03:24:29PM +0100, Thomas Huth wrote:
> Different versions of GCC and Clang use different versions of the C standard.
> This repeatedly caused problems already, e.g. with duplicated typedefs:
>
> https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.html
>
> or with for-loop variable initializers:
>
> https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg00237.html
>
> To avoid these problems, we should enforce the C language version to the
> same level for all compilers. Since our minimum compiler versions is
> GCC v4.8, our best option is "gnu99" right now ("gnu17" is not available
> there yet, and "gnu11" is marked as "experimental").
>
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
> v2: Use gnu99 instead of gnu11
>
> configure | 5 +++--
> 1 file changed, 3 insertions(+), 2 deletions(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>
> diff --git a/configure b/configure
> index b9f34af..721ade7 100755
> --- a/configure
> +++ b/configure
> @@ -105,7 +105,8 @@ update_cxxflags() {
> for arg in $QEMU_CFLAGS; do
> case $arg in
> -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
> - -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
> + -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls|\
> + -std=gnu99)
IIUC this is to drop -std=gnu99 from CXXFLAGS, so C++ code (only the
guest-agent on Win32 IIUC) will use the compiler default still. No worse
than what we have today.
We could consider also setting a suitable -std for CXXFLAGS too in future
though...
> ;;
> *)
> QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
> @@ -585,7 +586,7 @@ ARFLAGS="${ARFLAGS-rv}"
> # left shift of signed integers is well defined and has the expected
> # 2s-complement style results. (Both clang and gcc agree that it
> # provides these semantics.)
> -QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
> +QEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS"
> QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
> QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
> QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2] configure: Force the C standard to gnu99
2019-01-09 14:31 ` Daniel P. Berrangé
@ 2019-01-09 14:51 ` Thomas Huth
2019-01-09 14:58 ` Daniel P. Berrangé
0 siblings, 1 reply; 5+ messages in thread
From: Thomas Huth @ 2019-01-09 14:51 UTC (permalink / raw)
To: Daniel P. Berrangé
Cc: peter.maydell, pbonzini, qemu-devel, Markus Armbruster,
Richard Henderson
On 2019-01-09 15:31, Daniel P. Berrangé wrote:
> On Wed, Jan 09, 2019 at 03:24:29PM +0100, Thomas Huth wrote:
>> Different versions of GCC and Clang use different versions of the C standard.
>> This repeatedly caused problems already, e.g. with duplicated typedefs:
>>
>> https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.html
>>
>> or with for-loop variable initializers:
>>
>> https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg00237.html
>>
>> To avoid these problems, we should enforce the C language version to the
>> same level for all compilers. Since our minimum compiler versions is
>> GCC v4.8, our best option is "gnu99" right now ("gnu17" is not available
>> there yet, and "gnu11" is marked as "experimental").
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>> v2: Use gnu99 instead of gnu11
>>
>> configure | 5 +++--
>> 1 file changed, 3 insertions(+), 2 deletions(-)
>
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
>
>> diff --git a/configure b/configure
>> index b9f34af..721ade7 100755
>> --- a/configure
>> +++ b/configure
>> @@ -105,7 +105,8 @@ update_cxxflags() {
>> for arg in $QEMU_CFLAGS; do
>> case $arg in
>> -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
>> - -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
>> + -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls|\
>> + -std=gnu99)
>
> IIUC this is to drop -std=gnu99 from CXXFLAGS, so C++ code (only the
> guest-agent on Win32 IIUC) will use the compiler default still.
We also use it for the capstone disassembler and disas/libvixl.
> We could consider also setting a suitable -std for CXXFLAGS too in future
> though...
Shall I send a v3 with "-std=gnu++98" (which seems to be the only usable
option right now), or shall we wait until we really hit a problem with
the C++ code?
Thomas
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2] configure: Force the C standard to gnu99
2019-01-09 14:51 ` Thomas Huth
@ 2019-01-09 14:58 ` Daniel P. Berrangé
2019-01-09 15:06 ` Thomas Huth
0 siblings, 1 reply; 5+ messages in thread
From: Daniel P. Berrangé @ 2019-01-09 14:58 UTC (permalink / raw)
To: Thomas Huth
Cc: peter.maydell, pbonzini, qemu-devel, Markus Armbruster,
Richard Henderson
On Wed, Jan 09, 2019 at 03:51:33PM +0100, Thomas Huth wrote:
> On 2019-01-09 15:31, Daniel P. Berrangé wrote:
> > On Wed, Jan 09, 2019 at 03:24:29PM +0100, Thomas Huth wrote:
> >> Different versions of GCC and Clang use different versions of the C standard.
> >> This repeatedly caused problems already, e.g. with duplicated typedefs:
> >>
> >> https://lists.gnu.org/archive/html/qemu-devel/2018-11/msg05829.html
> >>
> >> or with for-loop variable initializers:
> >>
> >> https://lists.gnu.org/archive/html/qemu-devel/2019-01/msg00237.html
> >>
> >> To avoid these problems, we should enforce the C language version to the
> >> same level for all compilers. Since our minimum compiler versions is
> >> GCC v4.8, our best option is "gnu99" right now ("gnu17" is not available
> >> there yet, and "gnu11" is marked as "experimental").
> >>
> >> Signed-off-by: Thomas Huth <thuth@redhat.com>
> >> ---
> >> v2: Use gnu99 instead of gnu11
> >>
> >> configure | 5 +++--
> >> 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> >
> >> diff --git a/configure b/configure
> >> index b9f34af..721ade7 100755
> >> --- a/configure
> >> +++ b/configure
> >> @@ -105,7 +105,8 @@ update_cxxflags() {
> >> for arg in $QEMU_CFLAGS; do
> >> case $arg in
> >> -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
> >> - -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
> >> + -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls|\
> >> + -std=gnu99)
> >
> > IIUC this is to drop -std=gnu99 from CXXFLAGS, so C++ code (only the
> > guest-agent on Win32 IIUC) will use the compiler default still.
>
> We also use it for the capstone disassembler and disas/libvixl.
>
> > We could consider also setting a suitable -std for CXXFLAGS too in future
> > though...
>
> Shall I send a v3 with "-std=gnu++98" (which seems to be the only usable
> option right now), or shall we wait until we really hit a problem with
> the C++ code?
I'd have a slight preference for adding a C++ suitable -std now
just to give us a more predictable build setup. I don't consider
it a blocker though, hence my R-b on this v2 patch as it is now.
Regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [Qemu-devel] [PATCH v2] configure: Force the C standard to gnu99
2019-01-09 14:58 ` Daniel P. Berrangé
@ 2019-01-09 15:06 ` Thomas Huth
0 siblings, 0 replies; 5+ messages in thread
From: Thomas Huth @ 2019-01-09 15:06 UTC (permalink / raw)
To: Daniel P. Berrangé
Cc: peter.maydell, Richard Henderson, qemu-devel, Markus Armbruster,
pbonzini
On 2019-01-09 15:58, Daniel P. Berrangé wrote:
> On Wed, Jan 09, 2019 at 03:51:33PM +0100, Thomas Huth wrote:
>> On 2019-01-09 15:31, Daniel P. Berrangé wrote:
[...]
>>> We could consider also setting a suitable -std for CXXFLAGS too in future
>>> though...
>>
>> Shall I send a v3 with "-std=gnu++98" (which seems to be the only usable
>> option right now), or shall we wait until we really hit a problem with
>> the C++ code?
>
> I'd have a slight preference for adding a C++ suitable -std now
> just to give us a more predictable build setup.
I think that's my preference, too. I'll send a v3...
Thomas
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-01-09 15:06 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-09 14:24 [Qemu-devel] [PATCH v2] configure: Force the C standard to gnu99 Thomas Huth
2019-01-09 14:31 ` Daniel P. Berrangé
2019-01-09 14:51 ` Thomas Huth
2019-01-09 14:58 ` Daniel P. Berrangé
2019-01-09 15:06 ` Thomas Huth
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).