diff mbox

[for-2.8] curses: Fix compiler warnings (Mingw-w64 redefinition of macro KEY_EVENT)

Message ID 20161119185318.10564-1-sw@weilnetz.de
State New
Headers show

Commit Message

Stefan Weil Nov. 19, 2016, 6:53 p.m. UTC
For builds with Mingw-w64 as it is included in Cygwin, there are two
header files which define KEY_EVENT with different values.

This results in lots of compiler warnings like this one:

  CC      vl.o
In file included from /qemu/include/ui/console.h:340:0,
                 from /qemu/vl.c:76:
/usr/i686-w64-mingw32/sys-root/mingw/include/curses.h:1522:0: warning: "KEY_EVENT" redefined
 #define KEY_EVENT 0633  /* We were interrupted by an event */

In file included from /usr/share/mingw-w64/include/windows.h:74:0,
                 from /usr/share/mingw-w64/include/winsock2.h:23,
                 from /qemu/include/sysemu/os-win32.h:29,
                 from /qemu/include/qemu/osdep.h:100,
                 from /qemu/vl.c:24:
/usr/share/mingw-w64/include/wincon.h:101:0: note: this is the location of the previous definition
 #define KEY_EVENT 0x1

QEMU only uses the KEY_EVENT macro from wincon.h.
Therefore we can undefine the macro coming from curses.h.

The explicit include statement for curses.h in ui/curses.c is not needed
and was removed.

Those two modifications fix the redefinition warnings.

Signed-off-by: Stefan Weil <sw@weilnetz.de>
---
 include/ui/console.h | 3 +++
 ui/curses.c          | 1 -
 2 files changed, 3 insertions(+), 1 deletion(-)

Comments

Samuel Thibault Nov. 19, 2016, 8:04 p.m. UTC | #1
Stefan Weil, on Sat 19 Nov 2016 19:53:18 +0100, wrote:
> For builds with Mingw-w64 as it is included in Cygwin, there are two
> header files which define KEY_EVENT with different values.
> 
> This results in lots of compiler warnings like this one:
> 
>   CC      vl.o
> In file included from /qemu/include/ui/console.h:340:0,
>                  from /qemu/vl.c:76:
> /usr/i686-w64-mingw32/sys-root/mingw/include/curses.h:1522:0: warning: "KEY_EVENT" redefined
>  #define KEY_EVENT 0633  /* We were interrupted by an event */
> 
> In file included from /usr/share/mingw-w64/include/windows.h:74:0,
>                  from /usr/share/mingw-w64/include/winsock2.h:23,
>                  from /qemu/include/sysemu/os-win32.h:29,
>                  from /qemu/include/qemu/osdep.h:100,
>                  from /qemu/vl.c:24:
> /usr/share/mingw-w64/include/wincon.h:101:0: note: this is the location of the previous definition
>  #define KEY_EVENT 0x1
> 
> QEMU only uses the KEY_EVENT macro from wincon.h.
> Therefore we can undefine the macro coming from curses.h.
> 
> The explicit include statement for curses.h in ui/curses.c is not needed
> and was removed.
> 
> Those two modifications fix the redefinition warnings.
> 
> Signed-off-by: Stefan Weil <sw@weilnetz.de>

Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  include/ui/console.h | 3 +++
>  ui/curses.c          | 1 -
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/include/ui/console.h b/include/ui/console.h
> index e2589e2..e5ae506 100644
> --- a/include/ui/console.h
> +++ b/include/ui/console.h
> @@ -337,7 +337,10 @@ static inline pixman_format_code_t surface_format(DisplaySurface *s)
>  }
>  
>  #ifdef CONFIG_CURSES
> +/* KEY_EVENT is defined in wincon.h and in curses.h. Avoid redefinition. */
> +#undef KEY_EVENT
>  #include <curses.h>
> +#undef KEY_EVENT
>  typedef chtype console_ch_t;
>  extern chtype vga_to_curses[];
>  #else
> diff --git a/ui/curses.c b/ui/curses.c
> index 2e132a7..03cefdf 100644
> --- a/ui/curses.c
> +++ b/ui/curses.c
> @@ -22,7 +22,6 @@
>   * THE SOFTWARE.
>   */
>  #include "qemu/osdep.h"
> -#include <curses.h>
>  
>  #ifndef _WIN32
>  #include <sys/ioctl.h>
> -- 
> 2.10.2
> 
>
diff mbox

Patch

diff --git a/include/ui/console.h b/include/ui/console.h
index e2589e2..e5ae506 100644
--- a/include/ui/console.h
+++ b/include/ui/console.h
@@ -337,7 +337,10 @@  static inline pixman_format_code_t surface_format(DisplaySurface *s)
 }
 
 #ifdef CONFIG_CURSES
+/* KEY_EVENT is defined in wincon.h and in curses.h. Avoid redefinition. */
+#undef KEY_EVENT
 #include <curses.h>
+#undef KEY_EVENT
 typedef chtype console_ch_t;
 extern chtype vga_to_curses[];
 #else
diff --git a/ui/curses.c b/ui/curses.c
index 2e132a7..03cefdf 100644
--- a/ui/curses.c
+++ b/ui/curses.c
@@ -22,7 +22,6 @@ 
  * THE SOFTWARE.
  */
 #include "qemu/osdep.h"
-#include <curses.h>
 
 #ifndef _WIN32
 #include <sys/ioctl.h>