summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-08-21 19:25:45 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2008-08-21 19:25:45 +0000
commitcd01b4a312248dd4e12c3d389d1a349cea4015d8 (patch)
treedfa745638b54d1ef29a65fac2a2f6e2832998cf3
parent2f6a1ab038eefd6e5a9cfc8ec49435f6ad025812 (diff)
downloadqemu-cd01b4a312248dd4e12c3d389d1a349cea4015d8.tar.gz
Fix windows build
Right now, the Windows build is broken because of NBD. Using a mingw32 cross compiler is also badly broken. This patch fixes the Windows build by stubbing out NBD support until someone fixes it for Windows. It also santizing the mingw32 cross compiler support by replacing the --enable-mingw32 option with a compiler check to determine if we're on windows or not. Also remove the weird SDL pseudo-detection for mingw32 using a cross compiler. The hardcoded sdl-config name is seemly arbitrary. If you cross compiler SDL correctly and modify your PATH variable appropriately, it will Just Work when cross compiling. The audio driver detection is also broken for cross compiling so you have to specify the audio drivers explicitly for now. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5046 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--Makefile15
-rw-r--r--block.c2
-rwxr-xr-xconfigure82
3 files changed, 56 insertions, 43 deletions
diff --git a/Makefile b/Makefile
index 0472e169c6..9c219c3847 100644
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,10 @@ recurse-all: $(SUBDIR_RULES)
BLOCK_OBJS=cutils.o qemu-malloc.o
BLOCK_OBJS+=block-cow.o block-qcow.o aes.o block-vmdk.o block-cloop.o
BLOCK_OBJS+=block-dmg.o block-bochs.o block-vpc.o block-vvfat.o
-BLOCK_OBJS+=block-qcow2.o block-parallels.o block-nbd.o
+BLOCK_OBJS+=block-qcow2.o block-parallels.o
+ifndef CONFIG_WIN32
+BLOCK_OBJS+=block-nbd.o
+endif
######################################################################
# libqemu_common.a: Target independent part of system emulation. The
@@ -54,10 +57,14 @@ BLOCK_OBJS+=block-qcow2.o block-parallels.o block-nbd.o
# system emulation, i.e. a single QEMU executable should support all
# CPUs and machines.
-OBJS=nbd.o $(BLOCK_OBJS)
+OBJS=$(BLOCK_OBJS)
OBJS+=readline.o console.o
OBJS+=block.o
+ifndef CONFIG_WIN32
+OBJS+=nbd.o
+endif
+
OBJS+=irq.o
OBJS+=i2c.o smbus.o smbus_eeprom.o max7310.o max111x.o wm8750.o
OBJS+=ssd0303.o ssd0323.o ads7846.o stellaris_input.o twl92230.o
@@ -166,11 +173,11 @@ libqemu_user.a: $(USER_OBJS)
rm -f $@
$(AR) rcs $@ $(USER_OBJS)
-QEMU_IMG_BLOCK_OBJS = nbd.o $(BLOCK_OBJS)
+QEMU_IMG_BLOCK_OBJS = $(BLOCK_OBJS)
ifdef CONFIG_WIN32
QEMU_IMG_BLOCK_OBJS += qemu-img-block-raw-win32.o
else
-QEMU_IMG_BLOCK_OBJS += qemu-img-block-raw-posix.o
+QEMU_IMG_BLOCK_OBJS += nbd.o qemu-img-block-raw-posix.o
endif
######################################################################
diff --git a/block.c b/block.c
index 544176f1d3..d02b705b41 100644
--- a/block.c
+++ b/block.c
@@ -1332,7 +1332,9 @@ void bdrv_init(void)
bdrv_register(&bdrv_vvfat);
bdrv_register(&bdrv_qcow2);
bdrv_register(&bdrv_parallels);
+#ifndef _WIN32
bdrv_register(&bdrv_nbd);
+#endif
}
void *qemu_aio_get(BlockDriverState *bs, BlockDriverCompletionFunc *cb,
diff --git a/configure b/configure
index f3ba9df31c..cfc1c5ff72 100755
--- a/configure
+++ b/configure
@@ -283,8 +283,6 @@ for opt do
;;
--disable-vnc-tls) vnc_tls="no"
;;
- --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
- ;;
--disable-slirp) slirp="no"
;;
--disable-vde) vde="no"
@@ -347,13 +345,6 @@ for opt do
esac
done
-if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
- AIOLIBS=
-else
- # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
- AIOLIBS="-lrt -lpthread"
-fi
-
# default flags for all hosts
CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
LDFLAGS="$LDFLAGS -g"
@@ -423,7 +414,6 @@ echo " --static enable static build [$static]"
echo " --disable-werror disable compilation abort on warning"
echo " --disable-sdl disable SDL"
echo " --enable-cocoa enable COCOA (Mac OS X only)"
-echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
echo " --audio-drv-list=LIST set audio drivers list:"
echo " Available drivers: $audio_possible_drivers"
echo " --audio-card-list=LIST set list of additional emulated audio cards"
@@ -467,10 +457,31 @@ else
exit 1
fi
+# check compiler to see if we're on mingw32
+cat > $TMPC <<EOF
+#include <windows.h>
+#ifndef _WIN32
+#error not windows
+#endif
+int main(void) {}
+EOF
+
+if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
+ mingw32="yes"
+fi
+
if test "$mingw32" = "yes" ; then
linux="no"
EXESUF=".exe"
oss="no"
+ linux_user="no"
+fi
+
+if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
+ AIOLIBS=
+else
+ # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
+ AIOLIBS="-lrt -lpthread"
fi
# Check for gcc4, error if pre-gcc4
@@ -700,42 +711,35 @@ if test -z "$sdl" ; then
sdl=no
sdl_static=no
- if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
- # win32 cross compilation case
- sdl_config="i386-mingw32msvc-sdl-config"
- sdl=yes
- else
- # normal SDL probe
cat > $TMPC << EOF
#include <SDL.h>
#undef main /* We don't want SDL to override our main() */
int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
EOF
- if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
- _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
- if test "$_sdlversion" -lt 121 ; then
- sdl_too_old=yes
- else
- if test "$cocoa" = "no" ; then
- sdl=yes
- fi
+ if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
+ _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
+ if test "$_sdlversion" -lt 121 ; then
+ sdl_too_old=yes
+ else
+ if test "$cocoa" = "no" ; then
+ sdl=yes
fi
+ fi
- # static link with sdl ?
- if test "$sdl" = "yes" ; then
- aa="no"
- `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
- sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
- if [ "$aa" = "yes" ] ; then
- sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
- fi
-
- if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
- sdl_static=yes
- fi
- fi # static link
- fi # sdl compile test
- fi # cross compilation
+ # static link with sdl ?
+ if test "$sdl" = "yes" ; then
+ aa="no"
+ `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
+ sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
+ if [ "$aa" = "yes" ] ; then
+ sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
+ fi
+
+ if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
+ sdl_static=yes
+ fi
+ fi # static link
+ fi # sdl compile test
else
# Make sure to disable cocoa if sdl was set
if test "$sdl" = "yes" ; then