[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 1/5] w32: Add and use intermediate include file f
From: |
Stefan Weil |
Subject: |
[Qemu-devel] [PATCH v2 1/5] w32: Add and use intermediate include file for windows.h |
Date: |
Fri, 7 Mar 2014 23:17:43 +0100 |
Including windows.h from the new file include/qemu/winapi.h allows
better tracking of the files which depend on the Windows API.
1864 *.o files depend on windows.h in a typical build, only 88 *.o files
don't.
The windows.h specific macro WIN32_LEAN_AND_MEAN is now defined in the new
file and no longer part of the QEMU_CFLAGS. A hack in ui/sdl.c can be
removed after this change.
WINVER is still needed for all compilations with MinGW, so it cannot be
defined in the new file. Replace its numeric value by a symbolic value to
show which API is requested.
Cc: Gerd Hoffmann <address@hidden>
Cc: Jan Kiszka <address@hidden>
Cc: Anthony Liguori <address@hidden>
Cc: Kevin Wolf <address@hidden>
Cc: Stefan Hajnoczi <address@hidden>
Signed-off-by: Stefan Weil <address@hidden>
---
audio/audio_win_int.c | 2 +-
audio/dsoundaudio.c | 2 +-
audio/winwaveaudio.c | 2 +-
block.c | 2 +-
block/raw-win32.c | 2 +-
block/win32-aio.c | 2 +-
configure | 2 +-
include/qemu/event_notifier.h | 2 +-
include/qemu/sockets.h | 2 +-
include/qemu/thread-win32.h | 2 +-
include/qemu/winapi.h | 22 ++++++++++++++++++++++
include/sysemu/os-win32.h | 2 +-
net/tap-win32.c | 2 +-
os-win32.c | 2 +-
qga/channel-win32.c | 2 +-
qga/commands-win32.c | 2 +-
qga/service-win32.c | 2 +-
qga/service-win32.h | 2 +-
qga/vss-win32.c | 2 +-
qga/vss-win32/vss-common.h | 2 +-
slirp/slirp.h | 2 +-
translate-all.c | 2 +-
ui/sdl.c | 3 ---
util/oslib-win32.c | 2 +-
24 files changed, 44 insertions(+), 25 deletions(-)
create mode 100644 include/qemu/winapi.h
diff --git a/audio/audio_win_int.c b/audio/audio_win_int.c
index e132405..0e9f2a4 100644
--- a/audio/audio_win_int.c
+++ b/audio/audio_win_int.c
@@ -3,7 +3,7 @@
#include "qemu-common.h"
#define AUDIO_CAP "win-int"
-#include <windows.h>
+#include "qemu/winapi.h"
#include <mmsystem.h>
#include "audio.h"
diff --git a/audio/dsoundaudio.c b/audio/dsoundaudio.c
index e2d89fd..cf779bf 100644
--- a/audio/dsoundaudio.c
+++ b/audio/dsoundaudio.c
@@ -32,7 +32,7 @@
#define AUDIO_CAP "dsound"
#include "audio_int.h"
-#include <windows.h>
+#include "qemu/winapi.h"
#include <mmsystem.h>
#include <objbase.h>
#include <dsound.h>
diff --git a/audio/winwaveaudio.c b/audio/winwaveaudio.c
index 8dbd145..f11f5ba 100644
--- a/audio/winwaveaudio.c
+++ b/audio/winwaveaudio.c
@@ -7,7 +7,7 @@
#define AUDIO_CAP "winwave"
#include "audio_int.h"
-#include <windows.h>
+#include "qemu/winapi.h"
#include <mmsystem.h>
#include "audio_win_int.h"
diff --git a/block.c b/block.c
index 38bbdf3..409cbd8 100644
--- a/block.c
+++ b/block.c
@@ -47,7 +47,7 @@
#endif
#ifdef _WIN32
-#include <windows.h>
+#include "qemu/winapi.h"
#endif
struct BdrvDirtyBitmap {
diff --git a/block/raw-win32.c b/block/raw-win32.c
index ae1c8e6..95b27a5 100644
--- a/block/raw-win32.c
+++ b/block/raw-win32.c
@@ -23,13 +23,13 @@
*/
#include "qemu-common.h"
#include "qemu/timer.h"
+#include "qemu/winapi.h" /* HANDLE (in raw-aio.h) */
#include "block/block_int.h"
#include "qemu/module.h"
#include "raw-aio.h"
#include "trace.h"
#include "block/thread-pool.h"
#include "qemu/iov.h"
-#include <windows.h>
#include <winioctl.h>
#define FTYPE_FILE 0
diff --git a/block/win32-aio.c b/block/win32-aio.c
index 5d1d199..dbcc6bc 100644
--- a/block/win32-aio.c
+++ b/block/win32-aio.c
@@ -23,13 +23,13 @@
*/
#include "qemu-common.h"
#include "qemu/timer.h"
+#include "qemu/winapi.h" /* HANDLE (in raw-aio.h) */
#include "block/block_int.h"
#include "qemu/module.h"
#include "block/aio.h"
#include "raw-aio.h"
#include "qemu/event_notifier.h"
#include "qemu/iov.h"
-#include <windows.h>
#include <winioctl.h>
#define FTYPE_FILE 0
diff --git a/configure b/configure
index 8689435..daf6f69 100755
--- a/configure
+++ b/configure
@@ -682,7 +682,7 @@ fi
if test "$mingw32" = "yes" ; then
EXESUF=".exe"
DSOSUF=".dll"
- QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
+ QEMU_CFLAGS="-DWINVER=_WIN32_WINNT_WINXP $QEMU_CFLAGS"
# enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
diff --git a/include/qemu/event_notifier.h b/include/qemu/event_notifier.h
index 88b57af..bdca689 100644
--- a/include/qemu/event_notifier.h
+++ b/include/qemu/event_notifier.h
@@ -16,7 +16,7 @@
#include "qemu-common.h"
#ifdef _WIN32
-#include <windows.h>
+#include "qemu/winapi.h"
#endif
struct EventNotifier {
diff --git a/include/qemu/sockets.h b/include/qemu/sockets.h
index 45588d7..a41d453 100644
--- a/include/qemu/sockets.h
+++ b/include/qemu/sockets.h
@@ -3,7 +3,7 @@
#define QEMU_SOCKET_H
#ifdef _WIN32
-#include <windows.h>
+#include "qemu/winapi.h"
#include <winsock2.h>
#include <ws2tcpip.h>
diff --git a/include/qemu/thread-win32.h b/include/qemu/thread-win32.h
index 3d58081..7ade61a 100644
--- a/include/qemu/thread-win32.h
+++ b/include/qemu/thread-win32.h
@@ -1,6 +1,6 @@
#ifndef __QEMU_THREAD_WIN32_H
#define __QEMU_THREAD_WIN32_H 1
-#include "windows.h"
+#include "qemu/winapi.h"
struct QemuMutex {
CRITICAL_SECTION lock;
diff --git a/include/qemu/winapi.h b/include/qemu/winapi.h
new file mode 100644
index 0000000..d4cfaaa
--- /dev/null
+++ b/include/qemu/winapi.h
@@ -0,0 +1,22 @@
+/*
+ * QEMU interface to the Windows API
+ *
+ * Copyright (c) 2014 Stefan Weil
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2
+ * or later. See the COPYING file in the top-level directory.
+ */
+
+#ifndef QEMU_WINAPI_H
+#define QEMU_WINAPI_H
+
+/* Don't include some less frequently used APIs. */
+#define WIN32_LEAN_AND_MEAN
+
+#if !defined(WINVER)
+# error Add -DWINVER=_WIN32_WINNT_WINXP to compiler options
+#endif
+
+#include <windows.h>
+
+#endif /* QEMU_WINAPI_H */
diff --git a/include/sysemu/os-win32.h b/include/sysemu/os-win32.h
index bf8523a..1d6494a 100644
--- a/include/sysemu/os-win32.h
+++ b/include/sysemu/os-win32.h
@@ -26,7 +26,7 @@
#ifndef QEMU_OS_WIN32_H
#define QEMU_OS_WIN32_H
-#include <windows.h>
+#include "qemu/winapi.h"
#include <winsock2.h>
/* Workaround for older versions of MinGW. */
diff --git a/net/tap-win32.c b/net/tap-win32.c
index 8aee611..52e6143 100644
--- a/net/tap-win32.c
+++ b/net/tap-win32.c
@@ -35,7 +35,7 @@
#include "sysemu/sysemu.h"
#include "qemu/error-report.h"
#include <stdio.h>
-#include <windows.h>
+#include "qemu/winapi.h"
#include <winioctl.h>
//=============
diff --git a/os-win32.c b/os-win32.c
index 5f95caa..f6ec112 100644
--- a/os-win32.c
+++ b/os-win32.c
@@ -22,7 +22,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include <windows.h>
+#include "qemu/winapi.h"
#include <mmsystem.h>
#include <unistd.h>
#include <fcntl.h>
diff --git a/qga/channel-win32.c b/qga/channel-win32.c
index 0d5e5f5..25c3257 100644
--- a/qga/channel-win32.c
+++ b/qga/channel-win32.c
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdbool.h>
#include <glib.h>
-#include <windows.h>
+#include "qemu/winapi.h"
#include <errno.h>
#include <io.h>
#include "qga/guest-agent-core.h"
diff --git a/qga/commands-win32.c b/qga/commands-win32.c
index 0ee07b6..48cc819 100644
--- a/qga/commands-win32.c
+++ b/qga/commands-win32.c
@@ -11,8 +11,8 @@
* See the COPYING file in the top-level directory.
*/
+#include "qemu/winapi.h" /* OpenProcessToken, ... */
#include <glib.h>
-#include <wtypes.h>
#include <powrprof.h>
#include "qga/guest-agent-core.h"
#include "qga/vss-win32.h"
diff --git a/qga/service-win32.c b/qga/service-win32.c
index aef41f0..b22ae67 100644
--- a/qga/service-win32.c
+++ b/qga/service-win32.c
@@ -13,7 +13,7 @@
#include <stdlib.h>
#include <stdio.h>
#include <glib.h>
-#include <windows.h>
+#include "qemu/winapi.h"
#include "qga/service-win32.h"
static int printf_win_error(const char *text)
diff --git a/qga/service-win32.h b/qga/service-win32.h
index 3b9e870..bd401f2 100644
--- a/qga/service-win32.h
+++ b/qga/service-win32.h
@@ -13,7 +13,7 @@
#ifndef QGA_SERVICE_H
#define QGA_SERVICE_H
-#include <windows.h>
+#include "qemu/winapi.h"
#define QGA_SERVICE_DISPLAY_NAME "QEMU Guest Agent"
#define QGA_SERVICE_NAME "qemu-ga"
diff --git a/qga/vss-win32.c b/qga/vss-win32.c
index 24c4288..c6970d2 100644
--- a/qga/vss-win32.c
+++ b/qga/vss-win32.c
@@ -11,7 +11,7 @@
*/
#include <stdio.h>
-#include <windows.h>
+#include "qemu/winapi.h"
#include "qga/guest-agent-core.h"
#include "qga/vss-win32.h"
#include "qga/vss-win32/requester.h"
diff --git a/qga/vss-win32/vss-common.h b/qga/vss-win32/vss-common.h
index ce14e14..9768c1e 100644
--- a/qga/vss-win32/vss-common.h
+++ b/qga/vss-win32/vss-common.h
@@ -15,7 +15,7 @@
#define __MIDL_user_allocate_free_DEFINED__
#include "config-host.h"
-#include <windows.h>
+#include "qemu/winapi.h"
#include <shlwapi.h>
/* Reduce warnings to include vss.h */
diff --git a/slirp/slirp.h b/slirp/slirp.h
index e4a1bd4..bb25ab9 100644
--- a/slirp/slirp.h
+++ b/slirp/slirp.h
@@ -9,7 +9,7 @@
typedef char *caddr_t;
-# include <windows.h>
+# include "qemu/winapi.h"
# include <winsock2.h>
# include <ws2tcpip.h>
# include <sys/timeb.h>
diff --git a/translate-all.c b/translate-all.c
index 1ac0246..c124c07 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -17,7 +17,7 @@
* License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef _WIN32
-#include <windows.h>
+#include "qemu/winapi.h"
#else
#include <sys/types.h>
#include <sys/mman.h>
diff --git a/ui/sdl.c b/ui/sdl.c
index c1a16be..efae4a7 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -22,9 +22,6 @@
* THE SOFTWARE.
*/
-/* Avoid compiler warning because macro is redefined in SDL_syswm.h. */
-#undef WIN32_LEAN_AND_MEAN
-
#include <SDL.h>
#if SDL_MAJOR_VERSION == 1
diff --git a/util/oslib-win32.c b/util/oslib-win32.c
index 93f7d35..3fbe72a 100644
--- a/util/oslib-win32.c
+++ b/util/oslib-win32.c
@@ -25,7 +25,7 @@
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
-#include <windows.h>
+#include "qemu/winapi.h"
#include <glib.h>
#include <stdlib.h>
#include "config-host.h"
--
1.7.10.4