Patchwork win32: Avoid compiler warning (WIN32_LEAN_AND_MEAN redefined)

login
register
mail settings
Submitter Stefan Weil
Date April 1, 2010, 2:20 p.m.
Message ID <1270131607-13114-1-git-send-email-weil@mail.berlios.de>
Download mbox | patch
Permalink /patch/49217/
State New
Headers show

Comments

Stefan Weil - April 1, 2010, 2:20 p.m.
configure adds the macro WIN32_LEAN_AND_MEAN to
QEMU_CFLAGS, and SDL_syswm.h defines it, too.

This results in a compiler warning (redefinition of
WIN32_LEAN_AND_MEAN in SDL_syswm.h. That warning prevents
compilations for win32 with warning = error).

Fix this by removing the definition of WIN32_LEAN_AND_MEAN
before including SDL_syswm.h.

Signed-off-by: Stefan Weil <weil@mail.berlios.de>
---
 sdl.c |    4 ++++
 1 files changed, 4 insertions(+), 0 deletions(-)
Stefan Weil - April 21, 2010, 8:13 p.m.
Stefan Weil schrieb:
> configure adds the macro WIN32_LEAN_AND_MEAN to
> QEMU_CFLAGS, and SDL_syswm.h defines it, too.
>
> This results in a compiler warning (redefinition of
> WIN32_LEAN_AND_MEAN in SDL_syswm.h. That warning prevents
> compilations for win32 with warning = error).
>
> Fix this by removing the definition of WIN32_LEAN_AND_MEAN
> before including SDL_syswm.h.
>
> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
> ---
> sdl.c | 4 ++++
> 1 files changed, 4 insertions(+), 0 deletions(-)
>
> diff --git a/sdl.c b/sdl.c
> index 16a48e9..0334b4b 100644
> --- a/sdl.c
> +++ b/sdl.c
> @@ -21,6 +21,10 @@
> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
> DEALINGS IN
> * THE SOFTWARE.
> */
> +
> +/* Avoid compiler warning because macro is redefined in SDL_syswm.h. */
> +#undef WIN32_LEAN_AND_MEAN
> +
> #include <SDL.h>
> #include <SDL_syswm.h>
>

No comments, no questions? The original patch still applies.

It would be nice to have this patch in QEMU master.

Regards,
Stefan
Paolo Bonzini - April 22, 2010, 10:11 a.m.
On 04/21/2010 10:13 PM, Stefan Weil wrote:
> Stefan Weil schrieb:
>> configure adds the macro WIN32_LEAN_AND_MEAN to
>> QEMU_CFLAGS, and SDL_syswm.h defines it, too.
>>
>> This results in a compiler warning (redefinition of
>> WIN32_LEAN_AND_MEAN in SDL_syswm.h. That warning prevents
>> compilations for win32 with warning = error).
>>
>> Fix this by removing the definition of WIN32_LEAN_AND_MEAN
>> before including SDL_syswm.h.
 >>
>> +/* Avoid compiler warning because macro is redefined in SDL_syswm.h. */
>> +#undef WIN32_LEAN_AND_MEAN
>> +
>> #include<SDL.h>
>> #include<SDL_syswm.h>
>
> No comments, no questions? The original patch still applies.

Why does that conflict?  If the redefinition is with the same meaning, 
GCC should not conflict.

There is

#define WIN32_LEAN_AND_MEAN

in SDL_syswm.h and -DWIN32_LEAN_AND_MEAN in configure, so that should be 
okay.

Paolo
Richard Henderson - April 22, 2010, 3:21 p.m.
On 04/22/2010 03:11 AM, Paolo Bonzini wrote:
> There is
> 
> #define WIN32_LEAN_AND_MEAN
> 
> in SDL_syswm.h and -DWIN32_LEAN_AND_MEAN in configure, so that should be
> okay.

-DFOO   =>  #define FOO 1
-DFOO=  =>  #define FOO


r~
Stefan Weil - May 8, 2010, 2:46 p.m.
Am 21.04.2010 22:13, schrieb Stefan Weil:
> Stefan Weil schrieb:
>> configure adds the macro WIN32_LEAN_AND_MEAN to
>> QEMU_CFLAGS, and SDL_syswm.h defines it, too.
>>
>> This results in a compiler warning (redefinition of
>> WIN32_LEAN_AND_MEAN in SDL_syswm.h. That warning prevents
>> compilations for win32 with warning = error).
>>
>> Fix this by removing the definition of WIN32_LEAN_AND_MEAN
>> before including SDL_syswm.h.
>>
>> Signed-off-by: Stefan Weil <weil@mail.berlios.de>
>> ---
>> sdl.c | 4 ++++
>> 1 files changed, 4 insertions(+), 0 deletions(-)
>>
>> diff --git a/sdl.c b/sdl.c
>> index 16a48e9..0334b4b 100644
>> --- a/sdl.c
>> +++ b/sdl.c
>> @@ -21,6 +21,10 @@
>> * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>> DEALINGS IN
>> * THE SOFTWARE.
>> */
>> +
>> +/* Avoid compiler warning because macro is redefined in SDL_syswm.h. */
>> +#undef WIN32_LEAN_AND_MEAN
>> +
>> #include <SDL.h>
>> #include <SDL_syswm.h>
>>
>
> No comments, no questions? The original patch still applies.
>
> It would be nice to have this patch in QEMU master.
>
> Regards,
> Stefan

Hello Anthony,

is this patch still in your work queue? It is still valid for qemu master.

There were two feedbacks: Paolo had a question which was answered by 
Richard.

The compiler warning for Windows still exists, and I see 3 ways to fix it:

1. Use my patch.

2. Don't define WIN32_LEAN_AND_MEAN in configure/make.

3. Change the definition of WIN32_LEAN_AND_MEAN in configure/make.

I personally prefer solution 2, but we had this once and some
developers decided to change that, so I don't think it's a
realistic solution now.

Solution 3 is a very simple change. It works for the moment,
but would raise warnings when a library header file with a
different definition of WIN32_LEAN_AND_MEAN is used.
When I scanned the system headers of my mingw32
installation, I saw these two variants:
#define WIN32_LEAN_AND_MEAN
#define WIN32_LEAN_AND_MEAN 1

So I still think my patch is the best solution.

Regards,
Stefan
Paolo Bonzini - May 10, 2010, 8:20 a.m.
> 3. Change the definition of WIN32_LEAN_AND_MEAN in configure/make.
> 
> Solution 3 is a very simple change. It works for the moment,
> but would raise warnings when a library header file with a
> different definition of WIN32_LEAN_AND_MEAN is used.
> When I scanned the system headers of my mingw32
> installation, I saw these two variants:
> #define WIN32_LEAN_AND_MEAN
> #define WIN32_LEAN_AND_MEAN 1

Same here.

> So I still think my patch is the best solution.

I agree.  Let's report a bug to SDL as well.

Paolo

Patch

diff --git a/sdl.c b/sdl.c
index 16a48e9..0334b4b 100644
--- a/sdl.c
+++ b/sdl.c
@@ -21,6 +21,10 @@ 
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
+
+/* Avoid compiler warning because macro is redefined in SDL_syswm.h. */
+#undef WIN32_LEAN_AND_MEAN
+
 #include <SDL.h>
 #include <SDL_syswm.h>