[PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it

Thomas Huth posted 1 patch 10 months, 3 weeks ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20230602163452.521305-1-thuth@redhat.com
Maintainers: Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>
There is a newer version of this series
meson.build | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
[PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Thomas Huth 10 months, 3 weeks ago
There is no need to disable this useful compiler warning for
all versions of the SDL. Unfortunately, various versions are
buggy (beside SDL 2.0.8, the version 2.26.0 and 2.26.1 are
broken, too, see https://github.com/libsdl-org/SDL/issues/6619 ),
but we can use a simple compiler check to see whether we need
the -Wno-undef or not.

This also enables the printing of the version number with
good versions of the SDL in the summary of the meson output
again.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 v2: Compile test code instead of hard-coding the version number

 meson.build | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/meson.build b/meson.build
index a61d3e9b06..a4c69616c3 100644
--- a/meson.build
+++ b/meson.build
@@ -1273,10 +1273,16 @@ if not get_option('sdl').auto() or have_system
   sdl_image = not_found
 endif
 if sdl.found()
-  # work around 2.0.8 bug
-  sdl = declare_dependency(compile_args: '-Wno-undef',
-                           dependencies: sdl,
-                           version: sdl.version())
+  # Some versions of SDL have problems with -Wundef
+  if not cc.compiles('''
+                     #include <SDL.h>
+                     #include <SDL_syswm.h>
+                     int main(int argc, char *argv[]) { return 0; }
+                     ''', dependencies: sdl, args: '-Wundef')
+    sdl = declare_dependency(compile_args: '-Wno-undef',
+                             dependencies: sdl,
+                             version: sdl.version())
+  endif
   sdl_image = dependency('SDL2_image', required: get_option('sdl_image'),
                          method: 'pkg-config')
 else
-- 
2.31.1
Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Daniel P. Berrangé 10 months, 3 weeks ago
On Fri, Jun 02, 2023 at 06:34:52PM +0200, Thomas Huth wrote:
> There is no need to disable this useful compiler warning for
> all versions of the SDL. Unfortunately, various versions are
> buggy (beside SDL 2.0.8, the version 2.26.0 and 2.26.1 are
> broken, too, see https://github.com/libsdl-org/SDL/issues/6619 ),
> but we can use a simple compiler check to see whether we need
> the -Wno-undef or not.
> 
> This also enables the printing of the version number with
> good versions of the SDL in the summary of the meson output
> again.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  v2: Compile test code instead of hard-coding the version number
> 
>  meson.build | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index a61d3e9b06..a4c69616c3 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1273,10 +1273,16 @@ if not get_option('sdl').auto() or have_system
>    sdl_image = not_found
>  endif
>  if sdl.found()
> -  # work around 2.0.8 bug
> -  sdl = declare_dependency(compile_args: '-Wno-undef',
> -                           dependencies: sdl,
> -                           version: sdl.version())
> +  # Some versions of SDL have problems with -Wundef
> +  if not cc.compiles('''
> +                     #include <SDL.h>
> +                     #include <SDL_syswm.h>
> +                     int main(int argc, char *argv[]) { return 0; }
> +                     ''', dependencies: sdl, args: '-Wundef')

Don't you need to pass '-Werror' there too, otherwise -Wundef will
merely generate an warning and still succeed.

> +    sdl = declare_dependency(compile_args: '-Wno-undef',
> +                             dependencies: sdl,
> +                             version: sdl.version())
> +  endif
>    sdl_image = dependency('SDL2_image', required: get_option('sdl_image'),
>                           method: 'pkg-config')
>  else
> -- 
> 2.31.1
> 

With 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 :|
Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Thomas Huth 10 months, 3 weeks ago
On 05/06/2023 10.53, Daniel P. Berrangé wrote:
> On Fri, Jun 02, 2023 at 06:34:52PM +0200, Thomas Huth wrote:
>> There is no need to disable this useful compiler warning for
>> all versions of the SDL. Unfortunately, various versions are
>> buggy (beside SDL 2.0.8, the version 2.26.0 and 2.26.1 are
>> broken, too, see https://github.com/libsdl-org/SDL/issues/6619 ),
>> but we can use a simple compiler check to see whether we need
>> the -Wno-undef or not.
>>
>> This also enables the printing of the version number with
>> good versions of the SDL in the summary of the meson output
>> again.
>>
>> Signed-off-by: Thomas Huth <thuth@redhat.com>
>> ---
>>   v2: Compile test code instead of hard-coding the version number
>>
>>   meson.build | 14 ++++++++++----
>>   1 file changed, 10 insertions(+), 4 deletions(-)
>>
>> diff --git a/meson.build b/meson.build
>> index a61d3e9b06..a4c69616c3 100644
>> --- a/meson.build
>> +++ b/meson.build
>> @@ -1273,10 +1273,16 @@ if not get_option('sdl').auto() or have_system
>>     sdl_image = not_found
>>   endif
>>   if sdl.found()
>> -  # work around 2.0.8 bug
>> -  sdl = declare_dependency(compile_args: '-Wno-undef',
>> -                           dependencies: sdl,
>> -                           version: sdl.version())
>> +  # Some versions of SDL have problems with -Wundef
>> +  if not cc.compiles('''
>> +                     #include <SDL.h>
>> +                     #include <SDL_syswm.h>
>> +                     int main(int argc, char *argv[]) { return 0; }
>> +                     ''', dependencies: sdl, args: '-Wundef')
> 
> Don't you need to pass '-Werror' there too, otherwise -Wundef will
> merely generate an warning and still succeed.

Of course! Thank you very much ... not sure how I could have missed that 
detail :-/

  Thomas


Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Paolo Bonzini 10 months, 3 weeks ago
Queued, thanks.

Paolo
Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Thomas Huth 10 months, 3 weeks ago
On 05/06/2023 10.27, Paolo Bonzini wrote:
> Queued, thanks.

Please unqueue it again, I'm still seeing some issues with the patch (not 
sure why yet):

  https://gitlab.com/thuth/qemu/-/jobs/4411089009

  Thomas
Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Paolo Bonzini 10 months, 3 weeks ago
On 6/5/23 10:47, Thomas Huth wrote:
> On 05/06/2023 10.27, Paolo Bonzini wrote:
>> Queued, thanks.
> 
> Please unqueue it again, I'm still seeing some issues with the patch 
> (not sure why yet):
> 
> https://gitlab.com/thuth/qemu/-/jobs/4411089009

Yeah, noticed that myself now. :)

Paolo
Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Paolo Bonzini 10 months, 3 weeks ago
On 6/5/23 11:05, Paolo Bonzini wrote:
> 
>> On 05/06/2023 10.27, Paolo Bonzini wrote:
>>> Queued, thanks.
>>
>> Please unqueue it again, I'm still seeing some issues with the patch 
>> (not sure why yet):
>>
>> https://gitlab.com/thuth/qemu/-/jobs/4411089009
> 
> Yeah, noticed that myself now. 😄

I think all you need is:

diff --git a/meson.build b/meson.build
index 025523f2065..3ec35c96fea 100644
--- a/meson.build
+++ b/meson.build
@@ -1345,7 +1345,7 @@ if sdl.found()
                       #include <SDL.h>
                       #include <SDL_syswm.h>
                       int main(int argc, char *argv[]) { return 0; }
-                     ''', dependencies: sdl, args: '-Wundef')
+                     ''', dependencies: sdl, args: ['-Wundef', '-Werror'])
      sdl = declare_dependency(compile_args: '-Wno-undef',
                               dependencies: sdl,
                               version: sdl.version())

Paolo


Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Thomas Huth 10 months, 3 weeks ago
On 02/06/2023 18.34, Thomas Huth wrote:
> There is no need to disable this useful compiler warning for
> all versions of the SDL. Unfortunately, various versions are
> buggy (beside SDL 2.0.8, the version 2.26.0 and 2.26.1 are
> broken, too, see https://github.com/libsdl-org/SDL/issues/6619 ),
> but we can use a simple compiler check to see whether we need
> the -Wno-undef or not.
> 
> This also enables the printing of the version number with
> good versions of the SDL in the summary of the meson output
> again.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>   v2: Compile test code instead of hard-coding the version number
> 
>   meson.build | 14 ++++++++++----
>   1 file changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/meson.build b/meson.build
> index a61d3e9b06..a4c69616c3 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -1273,10 +1273,16 @@ if not get_option('sdl').auto() or have_system
>     sdl_image = not_found
>   endif
>   if sdl.found()
> -  # work around 2.0.8 bug
> -  sdl = declare_dependency(compile_args: '-Wno-undef',
> -                           dependencies: sdl,
> -                           version: sdl.version())
> +  # Some versions of SDL have problems with -Wundef
> +  if not cc.compiles('''
> +                     #include <SDL.h>
> +                     #include <SDL_syswm.h>
> +                     int main(int argc, char *argv[]) { return 0; }
> +                     ''', dependencies: sdl, args: '-Wundef')
> +    sdl = declare_dependency(compile_args: '-Wno-undef',
> +                             dependencies: sdl,
> +                             version: sdl.version())
> +  endif
>     sdl_image = dependency('SDL2_image', required: get_option('sdl_image'),
>                            method: 'pkg-config')
>   else

Hmm, there must still be something wrong with this patch, I'm still getting 
build failures with this in the CI ... no clue why yet, but please disregard 
this patch.

  Thomas
Re: [PATCH v2] meson.build: Use -Wno-undef only for SDL2 versions that need it
Posted by Richard Henderson 10 months, 3 weeks ago
On 6/2/23 09:34, Thomas Huth wrote:
> There is no need to disable this useful compiler warning for
> all versions of the SDL. Unfortunately, various versions are
> buggy (beside SDL 2.0.8, the version 2.26.0 and 2.26.1 are
> broken, too, seehttps://github.com/libsdl-org/SDL/issues/6619  ),
> but we can use a simple compiler check to see whether we need
> the -Wno-undef or not.
> 
> This also enables the printing of the version number with
> good versions of the SDL in the summary of the meson output
> again.
> 
> Signed-off-by: Thomas Huth<thuth@redhat.com>
> ---
>   v2: Compile test code instead of hard-coding the version number

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~