blob: 15eea6a8b3c563359cc095ae30b782fd153af4c9 [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
5# set temporary file name
6if test ! -z "$TMPDIR" ; then
7 TMPDIR1="${TMPDIR}"
8elif test ! -z "$TEMPDIR" ; then
9 TMPDIR1="${TEMPDIR}"
10else
11 TMPDIR1="/tmp"
12fi
13
bellard3ef693a2003-03-23 20:17:16 +000014TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
malc9d56d2d2008-09-30 19:44:32 +000018TMPI="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.i"
bellard7d132992003-03-06 23:23:54 +000019
20# default parameters
bellard11d9f692004-04-02 20:55:59 +000021prefix=""
bellard1e43adf2003-09-30 20:54:24 +000022interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +000023static="no"
bellard7d132992003-03-06 23:23:54 +000024cross_prefix=""
25cc="gcc"
pbrook328a4242006-12-19 03:31:34 +000026gcc3_search="yes"
balrogfe8f78e2007-10-31 01:03:28 +000027gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
malc0c58ac12008-06-25 21:04:05 +000028audio_drv_list=""
29audio_card_list=""
bellard7d132992003-03-06 23:23:54 +000030host_cc="gcc"
31ar="ar"
32make="make"
pbrook6a882642006-04-17 13:57:12 +000033install="install"
bellard7d132992003-03-06 23:23:54 +000034strip="strip"
35cpu=`uname -m`
bellard5327cf42005-01-10 23:18:50 +000036target_list=""
bellard7d132992003-03-06 23:23:54 +000037case "$cpu" in
38 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +000039 cpu="i386"
bellard7d132992003-03-06 23:23:54 +000040 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000041 x86_64|amd64)
42 cpu="x86_64"
43 ;;
44 alpha)
45 cpu="alpha"
46 ;;
bellardba680552005-03-13 09:49:52 +000047 armv*b)
bellard808c4952004-12-19 23:33:47 +000048 cpu="armv4b"
49 ;;
bellardba680552005-03-13 09:49:52 +000050 armv*l)
bellard7d132992003-03-06 23:23:54 +000051 cpu="armv4l"
52 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000053 cris)
54 cpu="cris"
bellard7d132992003-03-06 23:23:54 +000055 ;;
aurel32f54b3f92008-04-12 20:14:54 +000056 parisc|parisc64)
57 cpu="hppa"
58 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000059 ia64)
60 cpu="ia64"
61 ;;
62 m68k)
63 cpu="m68k"
bellard7d132992003-03-06 23:23:54 +000064 ;;
65 mips)
66 cpu="mips"
67 ;;
thsfbe4f652007-04-01 11:16:48 +000068 mips64)
69 cpu="mips64"
70 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000071 "Power Macintosh"|ppc|ppc64)
72 cpu="powerpc"
thse7daa602007-10-08 13:38:27 +000073 ;;
ths0e7b8a92007-08-01 00:09:31 +000074 s390*)
bellardfb3e5842003-03-29 17:32:36 +000075 cpu="s390"
76 ;;
blueswir131422552007-04-16 18:27:06 +000077 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +000078 cpu="sparc"
79 ;;
80 sparc64)
81 cpu="sparc64"
82 ;;
bellard7d132992003-03-06 23:23:54 +000083 *)
84 cpu="unknown"
85 ;;
86esac
87gprof="no"
aliguori03b4fe72008-10-07 19:16:17 +000088sparse="no"
bellard7d132992003-03-06 23:23:54 +000089bigendian="no"
bellard67b915a2004-03-31 23:37:16 +000090mingw32="no"
91EXESUF=""
92gdbstub="yes"
bellard443f1372004-06-04 11:13:20 +000093slirp="yes"
aliguorie0e6c8c02008-07-23 18:14:33 +000094vde="yes"
bellard102a52e2004-11-14 19:57:29 +000095fmod_lib=""
96fmod_inc=""
blueswir12f6a1ab2008-08-21 18:00:53 +000097oss_lib=""
ths8d5d2d42007-08-25 01:37:51 +000098vnc_tls="yes"
pbrookb1a550a2006-04-16 13:28:56 +000099bsd="no"
bellard5327cf42005-01-10 23:18:50 +0000100linux="no"
bellardc9ec1fe2005-02-10 21:55:30 +0000101kqemu="no"
bellard05c2a3e2006-02-08 22:39:17 +0000102profiler="no"
bellard5b0753e2005-03-01 21:37:28 +0000103cocoa="no"
bellard97ccc682005-07-02 13:32:17 +0000104check_gfx="yes"
bellard1aff3812005-11-02 22:30:45 +0000105check_gcc="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000106softmmu="yes"
ths831b7822007-01-18 20:06:33 +0000107linux_user="no"
108darwin_user="no"
pbrookcc8ae6d2006-04-23 17:57:59 +0000109build_docs="no"
pbrookc5937222006-05-14 11:30:38 +0000110uname_release=""
balrog4d3b6f62008-02-10 16:33:14 +0000111curses="yes"
blueswir1414f0da2008-08-15 18:20:52 +0000112aio="yes"
pbrookbd0c5662008-05-29 14:34:11 +0000113nptl="yes"
malc8ff9cbf2008-06-23 18:33:30 +0000114mixemu="no"
balrogfb599c92008-09-28 23:49:55 +0000115bluez="yes"
aliguori27463102008-09-27 20:58:43 +0000116signalfd="no"
117eventfd="no"
bellard7d132992003-03-06 23:23:54 +0000118
119# OS specific
120targetos=`uname -s`
121case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000122CYGWIN*)
123mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000124OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000125if [ "$cpu" = "i386" ] ; then
126 kqemu="yes"
127fi
malcc2de5c92008-06-28 19:13:06 +0000128audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000129;;
bellard67b915a2004-03-31 23:37:16 +0000130MINGW32*)
131mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000132if [ "$cpu" = "i386" ] ; then
133 kqemu="yes"
134fi
malcc2de5c92008-06-28 19:13:06 +0000135audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000136;;
ths5c40d2b2007-06-23 16:03:36 +0000137GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000138audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000139audio_possible_drivers="oss sdl esd pa"
ths5c40d2b2007-06-23 16:03:36 +0000140if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
141 kqemu="yes"
142fi
143;;
bellard7d3505c2004-05-12 19:32:15 +0000144FreeBSD)
145bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000146audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000147audio_possible_drivers="oss sdl esd pa"
bellarde99f9062005-07-28 21:45:38 +0000148if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000149 kqemu="yes"
150fi
bellard7d3505c2004-05-12 19:32:15 +0000151;;
152NetBSD)
153bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000154audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000155audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000156;;
157OpenBSD)
158bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000159openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000160audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000161audio_possible_drivers="oss sdl esd"
blueswir12f6a1ab2008-08-21 18:00:53 +0000162oss_lib="-lossaudio"
bellard7d3505c2004-05-12 19:32:15 +0000163;;
bellard83fb7ad2004-07-05 21:25:26 +0000164Darwin)
165bsd="yes"
166darwin="yes"
ths831b7822007-01-18 20:06:33 +0000167darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000168cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000169audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000170audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000171OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000172OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000173;;
bellardec530c82006-04-25 22:36:06 +0000174SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000175 solaris="yes"
176 make="gmake"
177 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000178 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000179 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000180 # have to select again, because `uname -m` returns i86pc
181 # even on an x86_64 box.
182 solariscpu=`isainfo -k`
183 if test "${solariscpu}" = "amd64" ; then
184 cpu="x86_64"
185 fi
thsc2b84fa2007-02-10 23:21:21 +0000186 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000187 if test "$solarisrev" -le 9 ; then
188 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
189 needs_libsunmath="yes"
190 else
191 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
192 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
193 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
194 echo "Studio 11 can be downloaded from www.sun.com."
195 exit 1
196 fi
197 fi
198 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000199 kqemu="yes"
200 fi
ths86b2bd92007-02-11 00:31:33 +0000201 fi
ths6b4d2ba2007-05-13 18:02:43 +0000202 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000203 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000204 fi
malcc2de5c92008-06-28 19:13:06 +0000205 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000206;;
bellard1d14ffa2005-10-30 18:58:22 +0000207*)
malc0c58ac12008-06-25 21:04:05 +0000208audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000209audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000210linux="yes"
ths831b7822007-01-18 20:06:33 +0000211linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000212if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000213 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000214 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000215fi
bellardfb065182004-11-09 23:09:44 +0000216;;
bellard7d132992003-03-06 23:23:54 +0000217esac
218
bellard7d3505c2004-05-12 19:32:15 +0000219if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000220 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000221 make="gmake"
222 fi
bellard7d3505c2004-05-12 19:32:15 +0000223fi
224
bellard7d132992003-03-06 23:23:54 +0000225# find source path
pbrookad064842006-04-16 12:41:07 +0000226source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000227source_path_used="no"
228workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000229if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000230 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000231else
232 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000233fi
pbrook724db112008-02-03 19:20:13 +0000234[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000235
bellard85aa5182007-11-11 20:17:03 +0000236werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000237# generate compile errors on warnings for development builds
238#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
239#werror="yes";
240#fi
bellard85aa5182007-11-11 20:17:03 +0000241
bellard7d132992003-03-06 23:23:54 +0000242for opt do
pbrooka46e4032006-04-29 23:05:22 +0000243 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000244 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000245 --help|-h) show_help=yes
246 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000247 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000248 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000249 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000250 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000251 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000252 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000253 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000254 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000255 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000256 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000257 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000258 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000259 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000260 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000261 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000262 ;;
pbrook6a882642006-04-17 13:57:12 +0000263 --install=*) install="$optarg"
264 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000265 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000266 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000267 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000268 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000269 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000270 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000271 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000272 ;;
bellard7d132992003-03-06 23:23:54 +0000273 --enable-gprof) gprof="yes"
274 ;;
bellard43ce4df2003-06-09 19:53:12 +0000275 --static) static="yes"
276 ;;
bellard97a847b2003-08-10 21:36:04 +0000277 --disable-sdl) sdl="no"
278 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000279 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000280 ;;
malcc2de5c92008-06-28 19:13:06 +0000281 --fmod-inc=*) fmod_inc="$optarg"
282 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000283 --oss-lib=*) oss_lib="$optarg"
284 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000285 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000286 ;;
287 --audio-drv-list=*) audio_drv_list="$optarg"
288 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000289 --enable-sparse) sparse="yes"
290 ;;
291 --disable-sparse) sparse="no"
292 ;;
ths8d5d2d42007-08-25 01:37:51 +0000293 --disable-vnc-tls) vnc_tls="no"
294 ;;
bellard443f1372004-06-04 11:13:20 +0000295 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000296 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000297 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000298 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000299 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000300 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000301 --disable-brlapi) brlapi="no"
302 ;;
balrogfb599c92008-09-28 23:49:55 +0000303 --disable-bluez) bluez="no"
304 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000305 --enable-profiler) profiler="yes"
306 ;;
malcc2de5c92008-06-28 19:13:06 +0000307 --enable-cocoa)
308 cocoa="yes" ;
309 sdl="no" ;
310 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000311 ;;
bellard97ccc682005-07-02 13:32:17 +0000312 --disable-gfx-check) check_gfx="no"
313 ;;
bellard1aff3812005-11-02 22:30:45 +0000314 --disable-gcc-check) check_gcc="no"
315 ;;
pbrookcad25d62006-03-19 16:31:11 +0000316 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000317 ;;
pbrookcad25d62006-03-19 16:31:11 +0000318 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000319 ;;
ths831b7822007-01-18 20:06:33 +0000320 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000321 ;;
ths831b7822007-01-18 20:06:33 +0000322 --enable-linux-user) linux_user="yes"
323 ;;
324 --disable-darwin-user) darwin_user="no"
325 ;;
326 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000327 ;;
pbrookc5937222006-05-14 11:30:38 +0000328 --enable-uname-release=*) uname_release="$optarg"
329 ;;
blueswir131422552007-04-16 18:27:06 +0000330 --sparc_cpu=*)
331 sparc_cpu="$optarg"
332 case $sparc_cpu in
333 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
334 target_cpu="sparc"; cpu="sparc" ;;
335 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
336 target_cpu="sparc"; cpu="sparc" ;;
337 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
338 target_cpu="sparc64"; cpu="sparc64" ;;
339 *) echo "undefined SPARC architecture. Exiting";exit 1;;
340 esac
341 ;;
bellard85aa5182007-11-11 20:17:03 +0000342 --enable-werror) werror="yes"
343 ;;
344 --disable-werror) werror="no"
345 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000346 --disable-curses) curses="no"
347 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000348 --disable-nptl) nptl="no"
349 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000350 --enable-mixemu) mixemu="yes"
351 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000352 --disable-aio) aio="no"
353 ;;
balrog7f1559c2007-11-17 10:24:32 +0000354 *) echo "ERROR: unknown option $opt"; show_help="yes"
355 ;;
bellard7d132992003-03-06 23:23:54 +0000356 esac
357done
358
ths6f30fa82007-01-05 01:00:47 +0000359# default flags for all hosts
blueswir1ac41a622008-09-14 06:46:31 +0000360CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
361CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
ths6f30fa82007-01-05 01:00:47 +0000362LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000363if test "$werror" = "yes" ; then
364CFLAGS="$CFLAGS -Werror"
365fi
ths6f30fa82007-01-05 01:00:47 +0000366
blueswir149237ac2008-09-17 19:05:19 +0000367if ld --version 2>/dev/null | grep -q "GNU ld" ; then
368 LDFLAGS="$LDFLAGS -Wl,--warn-common"
369fi
370
blueswir131422552007-04-16 18:27:06 +0000371#
372# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
373# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
374#
bellard40293e52008-01-31 11:32:10 +0000375case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000376 sparc) if test -z "$sparc_cpu" ; then
377 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
378 ARCH_LDFLAGS="-m32"
379 else
380 ARCH_CFLAGS="${SP_CFLAGS}"
381 ARCH_LDFLAGS="${SP_LDFLAGS}"
382 fi
383 ;;
384 sparc64) if test -z "$sparc_cpu" ; then
385 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
386 ARCH_LDFLAGS="-m64"
387 else
388 ARCH_CFLAGS="${SP_CFLAGS}"
389 ARCH_LDFLAGS="${SP_LDFLAGS}"
390 fi
391 ;;
ths76d83bd2007-11-18 21:22:10 +0000392 s390)
393 ARCH_CFLAGS="-march=z900"
394 ;;
bellard40293e52008-01-31 11:32:10 +0000395 i386)
396 ARCH_CFLAGS="-m32"
397 ARCH_LDFLAGS="-m32"
398 ;;
399 x86_64)
400 ARCH_CFLAGS="-m64"
401 ARCH_LDFLAGS="-m64"
402 ;;
blueswir131422552007-04-16 18:27:06 +0000403esac
404
pbrookaf5db582006-04-08 14:26:41 +0000405if test x"$show_help" = x"yes" ; then
406cat << EOF
407
408Usage: configure [options]
409Options: [defaults in brackets after descriptions]
410
411EOF
412echo "Standard options:"
413echo " --help print this message"
414echo " --prefix=PREFIX install in PREFIX [$prefix]"
415echo " --interp-prefix=PREFIX where to find shared libraries, etc."
416echo " use %M for cpu name [$interp_prefix]"
417echo " --target-list=LIST set target list [$target_list]"
418echo ""
419echo "kqemu kernel acceleration support:"
420echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000421echo ""
422echo "Advanced options (experts only):"
423echo " --source-path=PATH path of source code [$source_path]"
424echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
425echo " --cc=CC use C compiler CC [$cc]"
426echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
427echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000428echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000429echo " --static enable static build [$static]"
aliguori03b4fe72008-10-07 19:16:17 +0000430echo " --disable-sparse disable sparse checker"
bellard85aa5182007-11-11 20:17:03 +0000431echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000432echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000433echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000434echo " --audio-drv-list=LIST set audio drivers list:"
435echo " Available drivers: $audio_possible_drivers"
436echo " --audio-card-list=LIST set list of additional emulated audio cards"
437echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000438echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000439echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000440echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000441echo " --disable-curses disable curses output"
balrogfb599c92008-09-28 23:49:55 +0000442echo " --disable-bluez disable bluez stack connectivity"
pbrookbd0c5662008-05-29 14:34:11 +0000443echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000444echo " --enable-system enable all system emulation targets"
445echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000446echo " --enable-linux-user enable all linux usermode emulation targets"
447echo " --disable-linux-user disable all linux usermode emulation targets"
448echo " --enable-darwin-user enable all darwin usermode emulation targets"
449echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000450echo " --fmod-lib path to FMOD library"
451echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000452echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000453echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000454echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000455echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000456echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000457echo ""
ths5bf08932006-12-23 00:33:26 +0000458echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000459exit 1
460fi
461
bellard7d132992003-03-06 23:23:54 +0000462cc="${cross_prefix}${cc}"
463ar="${cross_prefix}${ar}"
464strip="${cross_prefix}${strip}"
465
pbrook064aae12006-05-08 00:51:44 +0000466# check that the C compiler works.
467cat > $TMPC <<EOF
468int main(void) {}
469EOF
470
pbrookdb7287e2008-02-03 16:27:13 +0000471if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000472 : C compiler works ok
473else
474 echo "ERROR: \"$cc\" either does not exist or does not work"
475 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000476fi
477
aliguoricd01b4a2008-08-21 19:25:45 +0000478# check compiler to see if we're on mingw32
479cat > $TMPC <<EOF
480#include <windows.h>
481#ifndef _WIN32
482#error not windows
483#endif
484int main(void) {}
485EOF
486
487if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
488 mingw32="yes"
489fi
490
bellard67b915a2004-03-31 23:37:16 +0000491if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000492 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000493 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000494 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000495 linux_user="no"
496fi
497
aliguori997306f2008-09-26 15:52:17 +0000498if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
aliguoricd01b4a2008-08-21 19:25:45 +0000499 AIOLIBS=
aliguori997306f2008-09-26 15:52:17 +0000500elif [ "$bsd" = "yes" ]; then
501 AIOLIBS="-lpthread"
aliguoricd01b4a2008-08-21 19:25:45 +0000502else
503 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
504 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000505fi
506
ths5fafdf22007-09-16 21:08:06 +0000507# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000508if test "$check_gcc" = "yes" ; then
509 cat > $TMPC <<EOF
510#if __GNUC__ < 4
511#error gcc3
512#endif
513int main(){return 0;}
514EOF
pbrookdb7287e2008-02-03 16:27:13 +0000515 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000516 echo "WARNING: \"$cc\" looks like gcc 4.x"
517 found_compat_cc="no"
518 if test "$gcc3_search" = "yes" ; then
519 echo "Looking for gcc 3.x"
520 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000521 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000522 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000523 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000524 found_compat_cc="yes"
525 break
526 fi
527 done
528 if test "$found_compat_cc" = "no" ; then
529 echo "gcc 3.x not found!"
530 fi
531 fi
532 if test "$found_compat_cc" = "no" ; then
533 echo "QEMU is known to have problems when compiled with gcc 4.x"
534 echo "It is recommended that you use gcc 3.x to build QEMU"
535 echo "To use this compiler anyway, configure with --disable-gcc-check"
536 exit 1;
537 fi
538 fi
539fi
540
aliguori03b4fe72008-10-07 19:16:17 +0000541if test ! -x "$(which cgcc 2>/dev/null)"; then
542 sparse="no"
543fi
544
bellardec530c82006-04-25 22:36:06 +0000545#
546# Solaris specific configure tool chain decisions
547#
548if test "$solaris" = "yes" ; then
549 #
550 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
551 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000552 #
bellardec530c82006-04-25 22:36:06 +0000553 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
554 solgcc=`which $cc`
555 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
556 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
557 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
558 echo "or get the latest patch from SunSolve for gcc"
559 exit 1
560 fi
561 fi
562 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
563 if test -z "$solinst" ; then
564 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
565 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
566 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
567 exit 1
568 fi
569 if test "$solinst" = "/usr/sbin/install" ; then
570 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
571 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
572 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
573 exit 1
574 fi
bellardec530c82006-04-25 22:36:06 +0000575 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
576 if test -z "$sol_ar" ; then
577 echo "Error: No path includes ar"
578 if test -f /usr/ccs/bin/ar ; then
579 echo "Add /usr/ccs/bin to your path and rerun configure"
580 fi
581 exit 1
582 fi
ths5fafdf22007-09-16 21:08:06 +0000583fi
bellardec530c82006-04-25 22:36:06 +0000584
585
bellard5327cf42005-01-10 23:18:50 +0000586if test -z "$target_list" ; then
587# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000588 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000589 target_list="\
590i386-softmmu \
591x86_64-softmmu \
592arm-softmmu \
593cris-softmmu \
594m68k-softmmu \
595mips-softmmu \
596mipsel-softmmu \
597mips64-softmmu \
598mips64el-softmmu \
599ppc-softmmu \
600ppcemb-softmmu \
601ppc64-softmmu \
602sh4-softmmu \
603sh4eb-softmmu \
604sparc-softmmu \
605"
pbrook0a8e90f2006-03-19 14:54:16 +0000606 fi
bellard5327cf42005-01-10 23:18:50 +0000607# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000608 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000609 target_list="${target_list}\
610i386-linux-user \
611x86_64-linux-user \
612alpha-linux-user \
613arm-linux-user \
614armeb-linux-user \
615cris-linux-user \
616m68k-linux-user \
617mips-linux-user \
618mipsel-linux-user \
619ppc-linux-user \
620ppc64-linux-user \
621ppc64abi32-linux-user \
622sh4-linux-user \
623sh4eb-linux-user \
624sparc-linux-user \
625sparc64-linux-user \
626sparc32plus-linux-user \
627"
ths831b7822007-01-18 20:06:33 +0000628 fi
629# the following are Darwin specific
630 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000631 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000632 fi
bellard6e20a452005-06-05 15:56:02 +0000633else
pbrookb1a550a2006-04-16 13:28:56 +0000634 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000635fi
pbrook0a8e90f2006-03-19 14:54:16 +0000636if test -z "$target_list" ; then
637 echo "No targets enabled"
638 exit 1
639fi
bellard5327cf42005-01-10 23:18:50 +0000640
bellard7d132992003-03-06 23:23:54 +0000641if test -z "$cross_prefix" ; then
642
643# ---
644# big/little endian test
645cat > $TMPC << EOF
646#include <inttypes.h>
647int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000648 volatile uint32_t i=0x01234567;
649 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000650}
651EOF
652
pbrookdb7287e2008-02-03 16:27:13 +0000653if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000654$TMPE && bigendian="yes"
655else
656echo big/little test failed
657fi
658
659else
660
661# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000662if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000663 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000664 -o "$cpu" = "m68k" \
665 -o "$cpu" = "mips" \
666 -o "$cpu" = "mips64" \
667 -o "$cpu" = "powerpc" \
668 -o "$cpu" = "s390" \
669 -o "$cpu" = "sparc" \
670 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000671 bigendian="yes"
672fi
673
674fi
675
bellardb6853692005-06-05 17:10:39 +0000676# host long bits test
677hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000678if test "$cpu" = "x86_64" \
679 -o "$cpu" = "alpha" \
680 -o "$cpu" = "ia64" \
681 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000682 hostlongbits="64"
683fi
684
malc810260a2008-07-23 19:17:46 +0000685# ppc specific hostlongbits selection
686if test "$cpu" = "powerpc" ; then
malc9d56d2d2008-09-30 19:44:32 +0000687 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
688 grep -q __powerpc64__ $TMPI && hostlongbits=64
malc810260a2008-07-23 19:17:46 +0000689 else
690 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000691 exit 1
malc810260a2008-07-23 19:17:46 +0000692 fi
693fi
694
bellarde8cd23d2003-06-25 16:08:13 +0000695# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000696cat > $TMPC <<EOF
697int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000698}
699EOF
700
pbrookbd0c5662008-05-29 14:34:11 +0000701# Check host NPTL support
702cat > $TMPC <<EOF
703#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000704#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000705void foo()
706{
707#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
708#error bork
709#endif
710}
711EOF
712
713if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
714 :
715else
716 nptl="no"
717fi
718
bellard11d9f692004-04-02 20:55:59 +0000719##########################################
720# SDL probe
721
722sdl_too_old=no
723
724if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000725 sdl_config="sdl-config"
726 sdl=no
727 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000728
729cat > $TMPC << EOF
730#include <SDL.h>
731#undef main /* We don't want SDL to override our main() */
732int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
733EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000734 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
735 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
736 if test "$_sdlversion" -lt 121 ; then
737 sdl_too_old=yes
738 else
739 if test "$cocoa" = "no" ; then
740 sdl=yes
741 fi
742 fi
743
744 # static link with sdl ?
745 if test "$sdl" = "yes" ; then
746 aa="no"
747 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
748 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
749 if [ "$aa" = "yes" ] ; then
750 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000751 fi
bellard11d9f692004-04-02 20:55:59 +0000752
aliguoricd01b4a2008-08-21 19:25:45 +0000753 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
754 sdl_static=yes
755 fi
756 fi # static link
757 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000758else
ths069b0bd2007-07-12 00:27:15 +0000759 # Make sure to disable cocoa if sdl was set
760 if test "$sdl" = "yes" ; then
761 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000762 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000763 fi
bellarda6e022a2004-04-02 21:55:47 +0000764fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000765
ths8f28f3f2007-01-05 21:25:54 +0000766##########################################
ths8d5d2d42007-08-25 01:37:51 +0000767# VNC TLS detection
768if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000769cat > $TMPC <<EOF
770#include <gnutls/gnutls.h>
771int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
772EOF
773 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
774 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
775 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
776 $vnc_tls_libs 2> /dev/null ; then
777 :
778 else
779 vnc_tls="no"
780 fi
ths8d5d2d42007-08-25 01:37:51 +0000781fi
782
783##########################################
ths8a16d272008-07-19 09:56:24 +0000784# vde libraries probe
785if test "$vde" = "yes" ; then
786 cat > $TMPC << EOF
787#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000788int main(void)
789{
790 struct vde_open_args a = {0, 0, 0};
791 vde_open("", "", &a);
792 return 0;
793}
ths8a16d272008-07-19 09:56:24 +0000794EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000795 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000796 :
797 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000798 vde="no"
ths8a16d272008-07-19 09:56:24 +0000799 fi
800fi
801
802##########################################
malcc2de5c92008-06-28 19:13:06 +0000803# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000804
malcc2de5c92008-06-28 19:13:06 +0000805audio_drv_probe()
806{
807 drv=$1
808 hdr=$2
809 lib=$3
810 exp=$4
811 cfl=$5
812 cat > $TMPC << EOF
813#include <$hdr>
814int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000815EOF
malcc2de5c92008-06-28 19:13:06 +0000816 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
817 :
818 else
819 echo
820 echo "Error: $drv check failed"
821 echo "Make sure to have the $drv libs and headers installed."
822 echo
823 exit 1
824 fi
825}
826
malc2fa7d3b2008-07-29 12:58:44 +0000827audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000828for drv in $audio_drv_list; do
829 case $drv in
830 alsa)
831 audio_drv_probe $drv alsa/asoundlib.h -lasound \
832 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
833 ;;
834
835 fmod)
836 if test -z $fmod_lib || test -z $fmod_inc; then
837 echo
838 echo "Error: You must specify path to FMOD library and headers"
839 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
840 echo
841 exit 1
842 fi
843 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
844 ;;
845
846 esd)
847 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
848 ;;
malcb8e59f12008-07-02 21:03:08 +0000849
850 pa)
851 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
852 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
853 ;;
854
blueswir12f6a1ab2008-08-21 18:00:53 +0000855 oss|sdl|core|wav|dsound)
856 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
857 ;;
858
malce4c63a62008-07-19 16:15:16 +0000859 *)
malc1c9b2a52008-07-19 16:57:30 +0000860 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000861 echo
862 echo "Error: Unknown driver '$drv' selected"
863 echo "Possible drivers are: $audio_possible_drivers"
864 echo
865 exit 1
866 }
867 ;;
malcc2de5c92008-06-28 19:13:06 +0000868 esac
869done
ths8f28f3f2007-01-05 21:25:54 +0000870
balrog4d3b6f62008-02-10 16:33:14 +0000871##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000872# BrlAPI probe
873
874if test -z "$brlapi" ; then
875 brlapi=no
876cat > $TMPC << EOF
877#include <brlapi.h>
878int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
879EOF
aurel32a40e56d2008-05-04 00:50:25 +0000880 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000881 brlapi=yes
882 fi # brlapi compile test
883fi # -z $brlapi
884
885##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000886# curses probe
887
888if test "$curses" = "yes" ; then
889 curses=no
890 cat > $TMPC << EOF
891#include <curses.h>
892int main(void) { return curses_version(); }
893EOF
pbrookaf896aa2008-03-23 00:47:42 +0000894 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000895 curses=yes
896 fi
897fi # test "$curses"
898
blueswir1414f0da2008-08-15 18:20:52 +0000899##########################################
balrogfb599c92008-09-28 23:49:55 +0000900# bluez support probe
901if test "$bluez" = "yes" ; then
902 `pkg-config bluez` || bluez="no"
903fi
904if test "$bluez" = "yes" ; then
balroge820e3f2008-09-30 02:27:44 +0000905 cat > $TMPC << EOF
906#include <bluetooth/bluetooth.h>
907int main(void) { return bt_error(0); }
908EOF
balrogfb599c92008-09-28 23:49:55 +0000909 bluez_cflags=`pkg-config --cflags bluez`
910 bluez_libs=`pkg-config --libs bluez`
balroge820e3f2008-09-30 02:27:44 +0000911 if $cc $ARCH_CFLAGS -o $TMPE ${OS_FLAGS} $bluez_cflags $TMPC \
912 $bluez_libs 2> /dev/null ; then
913 :
914 else
915 bluez="no"
916 fi
balrogfb599c92008-09-28 23:49:55 +0000917fi
918
919##########################################
blueswir1414f0da2008-08-15 18:20:52 +0000920# AIO probe
921if test "$aio" = "yes" ; then
922 aio=no
923 cat > $TMPC << EOF
924#include <aio.h>
925int main(void) { return aio_write(NULL); }
926EOF
927 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
928 aio=yes
929 fi
930fi
931
aliguori27463102008-09-27 20:58:43 +0000932##########################################
933# signalfd probe
934cat > $TMPC << EOF
935#define _GNU_SOURCE
936#include <unistd.h>
937#include <sys/syscall.h>
938#include <signal.h>
939int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
940EOF
941
942if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
943 signalfd=yes
944fi
945
946##########################################
947# eventfd probe
948cat > $TMPC << EOF
949#define _GNU_SOURCE
950#include <unistd.h>
951#include <sys/syscall.h>
952int main(void) { return syscall(SYS_eventfd, 0); }
953EOF
954
955if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
956 eventfd=yes
957fi
958
pbrookcc8ae6d2006-04-23 17:57:59 +0000959# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000960if [ -x "`which texi2html 2>/dev/null`" ] && \
961 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000962 build_docs="yes"
963fi
964
bellard11d9f692004-04-02 20:55:59 +0000965if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000966 if test -z "$prefix" ; then
967 prefix="/c/Program Files/Qemu"
968 fi
969 mansuffix=""
970 datasuffix=""
971 docsuffix=""
972 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000973else
pbrook308c3592007-02-27 00:52:01 +0000974 if test -z "$prefix" ; then
975 prefix="/usr/local"
976 fi
977 mansuffix="/share/man"
978 datasuffix="/share/qemu"
979 docsuffix="/share/doc/qemu"
980 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000981fi
bellard5a671352003-10-01 00:13:48 +0000982
bellard43ce4df2003-06-09 19:53:12 +0000983echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000984echo "BIOS directory $prefix$datasuffix"
985echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000986if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000987echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000988echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000989fi
bellard5a671352003-10-01 00:13:48 +0000990echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000991echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000992echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000993echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000994echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000995echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000996echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000997echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000998echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000999echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +00001000echo "sparse enabled $sparse"
bellard05c2a3e2006-02-08 22:39:17 +00001001echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +00001002echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +00001003echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +00001004if test "$darwin" = "yes" ; then
1005 echo "Cocoa support $cocoa"
1006fi
bellard97a847b2003-08-10 21:36:04 +00001007echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +00001008if test "$sdl" != "no" ; then
1009 echo "SDL static link $sdl_static"
1010fi
balrog4d3b6f62008-02-10 16:33:14 +00001011echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +00001012echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00001013echo "Audio drivers $audio_drv_list"
1014echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +00001015echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +00001016echo "VNC TLS support $vnc_tls"
1017if test "$vnc_tls" = "yes" ; then
1018 echo " TLS CFLAGS $vnc_tls_cflags"
1019 echo " TLS LIBS $vnc_tls_libs"
1020fi
blueswir131422552007-04-16 18:27:06 +00001021if test -n "$sparc_cpu"; then
1022 echo "Target Sparc Arch $sparc_cpu"
1023fi
bellard07f4ddb2005-04-23 17:44:28 +00001024echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +00001025echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +00001026echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +00001027[ ! -z "$uname_release" ] && \
1028echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +00001029echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +00001030echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +00001031echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +00001032
bellard97a847b2003-08-10 21:36:04 +00001033if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00001034echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00001035fi
ths20b40c62007-07-11 23:39:45 +00001036if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1037 echo "The error log from compiling the libSDL test is: "
1038 cat /tmp/qemu-$$-sdl-config.log
1039fi
1040rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +00001041#if test "$sdl_static" = "no"; then
1042# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1043#fi
bellard97a847b2003-08-10 21:36:04 +00001044config_mak="config-host.mak"
1045config_h="config-host.h"
1046
bellard7c1f25b2004-04-22 00:02:08 +00001047#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +00001048
ths15d9ca02007-07-31 23:07:32 +00001049test -f $config_h && mv $config_h ${config_h}~
1050
bellard97a847b2003-08-10 21:36:04 +00001051echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +00001052echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001053echo "/* Automatically generated by configure - do not modify */" > $config_h
1054
1055echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001056echo "bindir=\${prefix}$binsuffix" >> $config_mak
1057echo "mandir=\${prefix}$mansuffix" >> $config_mak
1058echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +00001059echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001060echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001061echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +00001062echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001063echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001064echo "HOST_CC=$host_cc" >> $config_mak
1065echo "AR=$ar" >> $config_mak
1066echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001067# XXX: only use CFLAGS and LDFLAGS ?
1068# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1069# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001070echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001071echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1072echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1073echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001074echo "CFLAGS=$CFLAGS" >> $config_mak
1075echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001076echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001077echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001078case "$cpu" in
1079 i386)
1080 echo "ARCH=i386" >> $config_mak
1081 echo "#define HOST_I386 1" >> $config_h
1082 ;;
1083 x86_64)
1084 echo "ARCH=x86_64" >> $config_mak
1085 echo "#define HOST_X86_64 1" >> $config_h
1086 ;;
1087 alpha)
1088 echo "ARCH=alpha" >> $config_mak
1089 echo "#define HOST_ALPHA 1" >> $config_h
1090 ;;
1091 armv4b)
1092 echo "ARCH=arm" >> $config_mak
1093 echo "#define HOST_ARM 1" >> $config_h
1094 ;;
1095 armv4l)
1096 echo "ARCH=arm" >> $config_mak
1097 echo "#define HOST_ARM 1" >> $config_h
1098 ;;
1099 cris)
1100 echo "ARCH=cris" >> $config_mak
1101 echo "#define HOST_CRIS 1" >> $config_h
1102 ;;
1103 hppa)
1104 echo "ARCH=hppa" >> $config_mak
1105 echo "#define HOST_HPPA 1" >> $config_h
1106 ;;
1107 ia64)
1108 echo "ARCH=ia64" >> $config_mak
1109 echo "#define HOST_IA64 1" >> $config_h
1110 ;;
1111 m68k)
1112 echo "ARCH=m68k" >> $config_mak
1113 echo "#define HOST_M68K 1" >> $config_h
1114 ;;
1115 mips)
1116 echo "ARCH=mips" >> $config_mak
1117 echo "#define HOST_MIPS 1" >> $config_h
1118 ;;
1119 mips64)
1120 echo "ARCH=mips64" >> $config_mak
1121 echo "#define HOST_MIPS64 1" >> $config_h
1122 ;;
1123 powerpc)
malc810260a2008-07-23 19:17:46 +00001124 if test "$hostlongbits" = "32"; then
1125 echo "ARCH=ppc" >> $config_mak
1126 echo "#define HOST_PPC 1" >> $config_h
1127 else
1128 echo "ARCH=ppc64" >> $config_mak
1129 echo "#define HOST_PPC64 1" >> $config_h
1130 fi
aurel322408a522008-04-20 20:19:44 +00001131 ;;
1132 s390)
1133 echo "ARCH=s390" >> $config_mak
1134 echo "#define HOST_S390 1" >> $config_h
1135 ;;
1136 sparc)
1137 echo "ARCH=sparc" >> $config_mak
1138 echo "#define HOST_SPARC 1" >> $config_h
1139 ;;
1140 sparc64)
1141 echo "ARCH=sparc64" >> $config_mak
1142 echo "#define HOST_SPARC64 1" >> $config_h
1143 ;;
1144 *)
1145 echo "Unsupported CPU = $cpu"
1146 exit 1
1147 ;;
1148esac
aliguori03b4fe72008-10-07 19:16:17 +00001149if test "$sparse" = "yes" ; then
1150 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
1151 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
1152 echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1153fi
bellard7d132992003-03-06 23:23:54 +00001154if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001155 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1156 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1157fi
bellardb6853692005-06-05 17:10:39 +00001158echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001159if test "$mingw32" = "yes" ; then
1160 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001161 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001162else
1163 cat > $TMPC << EOF
1164#include <byteswap.h>
1165int main(void) { return bswap_32(0); }
1166EOF
pbrookdb7287e2008-02-03 16:27:13 +00001167 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001168 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1169 fi
bellard67b915a2004-03-31 23:37:16 +00001170fi
blueswir1128ab2f2008-08-15 18:33:42 +00001171
1172if [ "$openbsd" = "yes" ] ; then
1173 echo "#define ENOTSUP 4096" >> $config_h
1174fi
1175
bellard83fb7ad2004-07-05 21:25:26 +00001176if test "$darwin" = "yes" ; then
1177 echo "CONFIG_DARWIN=yes" >> $config_mak
1178 echo "#define CONFIG_DARWIN 1" >> $config_h
1179fi
bellardec530c82006-04-25 22:36:06 +00001180if test "$solaris" = "yes" ; then
1181 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001182 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001183 if test "$needs_libsunmath" = "yes" ; then
1184 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1185 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1186 fi
bellardec530c82006-04-25 22:36:06 +00001187fi
blueswir131422552007-04-16 18:27:06 +00001188if test -n "$sparc_cpu"; then
1189 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1190 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1191fi
bellard67b915a2004-03-31 23:37:16 +00001192if test "$gdbstub" = "yes" ; then
1193 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1194 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1195fi
bellard97a847b2003-08-10 21:36:04 +00001196if test "$gprof" = "yes" ; then
1197 echo "TARGET_GPROF=yes" >> $config_mak
1198 echo "#define HAVE_GPROF 1" >> $config_h
1199fi
1200if test "$static" = "yes" ; then
1201 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001202 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001203fi
bellard05c2a3e2006-02-08 22:39:17 +00001204if test $profiler = "yes" ; then
1205 echo "#define CONFIG_PROFILER 1" >> $config_h
1206fi
bellardc20709a2004-04-21 23:27:19 +00001207if test "$slirp" = "yes" ; then
1208 echo "CONFIG_SLIRP=yes" >> $config_mak
1209 echo "#define CONFIG_SLIRP 1" >> $config_h
1210fi
ths8a16d272008-07-19 09:56:24 +00001211if test "$vde" = "yes" ; then
1212 echo "CONFIG_VDE=yes" >> $config_mak
1213 echo "#define CONFIG_VDE 1" >> $config_h
1214 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1215fi
malc0c58ac12008-06-25 21:04:05 +00001216for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001217 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001218 echo "$def=yes" >> $config_mak
1219 echo "#define $def 1" >> $config_h
1220done
1221echo "#define AUDIO_DRIVERS \\" >> $config_h
1222for drv in $audio_drv_list; do
1223 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001224 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001225 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001226 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001227 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1228 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001229 elif test "$drv" = "oss"; then
1230 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001231 fi
1232done
1233echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001234if test "$mixemu" = "yes" ; then
1235 echo "CONFIG_MIXEMU=yes" >> $config_mak
1236 echo "#define CONFIG_MIXEMU 1" >> $config_h
1237fi
ths8d5d2d42007-08-25 01:37:51 +00001238if test "$vnc_tls" = "yes" ; then
1239 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1240 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1241 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1242 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1243fi
pbrookb1a550a2006-04-16 13:28:56 +00001244qemu_version=`head $source_path/VERSION`
1245echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001246echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001247
1248echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001249if [ "$source_path_used" = "yes" ]; then
1250 echo "VPATH=$source_path" >> $config_mak
1251fi
bellard97a847b2003-08-10 21:36:04 +00001252echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001253if [ "$build_docs" = "yes" ] ; then
1254 echo "BUILD_DOCS=yes" >> $config_mak
1255fi
bellard49ecc3f2007-11-07 19:25:15 +00001256if test "$static" = "yes"; then
1257 sdl1=$sdl_static
1258else
1259 sdl1=$sdl
1260fi
1261if test "$sdl1" = "yes" ; then
1262 echo "#define CONFIG_SDL 1" >> $config_h
1263 echo "CONFIG_SDL=yes" >> $config_mak
1264 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1265 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1266 else
1267 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1268 fi
1269 if [ "${aa}" = "yes" ] ; then
1270 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1271 else
1272 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1273 fi
1274fi
1275if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001276 echo "#define CONFIG_COCOA 1" >> $config_h
1277 echo "CONFIG_COCOA=yes" >> $config_mak
1278fi
1279if test "$curses" = "yes" ; then
1280 echo "#define CONFIG_CURSES 1" >> $config_h
1281 echo "CONFIG_CURSES=yes" >> $config_mak
1282 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001283fi
aurel322e4d9fb2008-04-08 06:01:02 +00001284if test "$brlapi" = "yes" ; then
1285 echo "CONFIG_BRLAPI=yes" >> $config_mak
1286 echo "#define CONFIG_BRLAPI 1" >> $config_h
1287 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1288fi
balrogfb599c92008-09-28 23:49:55 +00001289if test "$bluez" = "yes" ; then
1290 echo "CONFIG_BLUEZ=yes" >> $config_mak
1291 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1292 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1293 echo "#define CONFIG_BLUEZ 1" >> $config_h
1294fi
blueswir1414f0da2008-08-15 18:20:52 +00001295if test "$aio" = "yes" ; then
1296 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001297 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001298fi
aliguori27463102008-09-27 20:58:43 +00001299if test "$signalfd" = "yes" ; then
1300 echo "#define CONFIG_signalfd 1" >> $config_h
1301fi
1302if test "$eventfd" = "yes" ; then
1303 echo "#define CONFIG_eventfd 1" >> $config_h
1304fi
bellard97a847b2003-08-10 21:36:04 +00001305
bellard83fb7ad2004-07-05 21:25:26 +00001306# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001307if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001308 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001309 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001310 echo "#define _BSD 1" >> $config_h
1311fi
1312
pbrookc5937222006-05-14 11:30:38 +00001313echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1314
pbrookc39e3332007-09-22 16:49:14 +00001315tools=
1316if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1317 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001318 if [ "$linux" = "yes" ] ; then
1319 tools="qemu-nbd\$(EXESUF) $tools"
1320 fi
pbrookc39e3332007-09-22 16:49:14 +00001321fi
1322echo "TOOLS=$tools" >> $config_mak
1323
ths15d9ca02007-07-31 23:07:32 +00001324test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1325
bellard1d14ffa2005-10-30 18:58:22 +00001326for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001327target_dir="$target"
1328config_mak=$target_dir/config.mak
1329config_h=$target_dir/config.h
1330target_cpu=`echo $target | cut -d '-' -f 1`
1331target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001332[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001333[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1334[ "$target_cpu" = "mips" ] && target_bigendian=yes
1335[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1336[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001337[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001338[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001339[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001340[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001341[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001342[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1343[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1344[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001345target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001346target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001347target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001348target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001349case "$target" in
1350 ${target_cpu}-softmmu)
1351 target_softmmu="yes"
1352 ;;
1353 ${target_cpu}-linux-user)
1354 target_user_only="yes"
1355 target_linux_user="yes"
1356 ;;
1357 ${target_cpu}-darwin-user)
1358 target_user_only="yes"
1359 target_darwin_user="yes"
1360 ;;
1361 *)
1362 echo "ERROR: Target '$target' not recognised"
1363 exit 1
1364 ;;
1365esac
ths831b7822007-01-18 20:06:33 +00001366
bellard97ccc682005-07-02 13:32:17 +00001367if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001368 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001369 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001370 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001371 echo "Note that this will disable all output from the virtual graphics card"
1372 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001373 exit 1;
1374fi
1375
bellard7c1f25b2004-04-22 00:02:08 +00001376#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001377
ths15d9ca02007-07-31 23:07:32 +00001378test -f $config_h && mv $config_h ${config_h}~
1379
bellard97a847b2003-08-10 21:36:04 +00001380mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001381mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001382mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001383if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001384 mkdir -p $target_dir/nwfpe
1385fi
1386
bellardec530c82006-04-25 22:36:06 +00001387#
1388# don't use ln -sf as not all "ln -sf" over write the file/link
1389#
1390rm -f $target_dir/Makefile
1391ln -s $source_path/Makefile.target $target_dir/Makefile
1392
bellard97a847b2003-08-10 21:36:04 +00001393
1394echo "# Automatically generated by configure - do not modify" > $config_mak
1395echo "/* Automatically generated by configure - do not modify */" > $config_h
1396
1397
1398echo "include ../config-host.mak" >> $config_mak
1399echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001400
pbrooke5fe0c52006-06-11 13:32:59 +00001401bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001402elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001403target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001404interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1405echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001406
aurel322408a522008-04-20 20:19:44 +00001407case "$target_cpu" in
1408 i386)
1409 echo "TARGET_ARCH=i386" >> $config_mak
1410 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1411 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001412 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001413 then
1414 echo "#define USE_KQEMU 1" >> $config_h
1415 fi
aurel32f2bf0942008-05-05 06:00:27 +00001416 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001417 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001418 then
1419 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1420 else
1421 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1422 fi
aurel322408a522008-04-20 20:19:44 +00001423 ;;
1424 x86_64)
1425 echo "TARGET_ARCH=x86_64" >> $config_mak
1426 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1427 echo "#define TARGET_I386 1" >> $config_h
1428 echo "#define TARGET_X86_64 1" >> $config_h
1429 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1430 then
1431 echo "#define USE_KQEMU 1" >> $config_h
1432 fi
1433 ;;
1434 alpha)
1435 echo "TARGET_ARCH=alpha" >> $config_mak
1436 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1437 echo "#define TARGET_ALPHA 1" >> $config_h
1438 ;;
1439 arm|armeb)
1440 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001441 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1442 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001443 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001444 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001445 ;;
1446 cris)
1447 echo "TARGET_ARCH=cris" >> $config_mak
1448 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1449 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001450 ;;
1451 m68k)
1452 echo "TARGET_ARCH=m68k" >> $config_mak
1453 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1454 echo "#define TARGET_M68K 1" >> $config_h
1455 bflt="yes"
1456 ;;
1457 mips|mipsel)
1458 echo "TARGET_ARCH=mips" >> $config_mak
1459 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1460 echo "#define TARGET_MIPS 1" >> $config_h
1461 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1462 ;;
1463 mipsn32|mipsn32el)
1464 echo "TARGET_ARCH=mipsn32" >> $config_mak
1465 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1466 echo "#define TARGET_MIPS 1" >> $config_h
1467 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1468 ;;
1469 mips64|mips64el)
1470 echo "TARGET_ARCH=mips64" >> $config_mak
1471 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1472 echo "#define TARGET_MIPS 1" >> $config_h
1473 echo "#define TARGET_MIPS64 1" >> $config_h
1474 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1475 ;;
1476 ppc)
1477 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001478 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001479 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1480 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001481 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001482 ;;
1483 ppcemb)
1484 echo "TARGET_ARCH=ppcemb" >> $config_mak
1485 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001486 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001487 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1488 echo "#define TARGET_PPC 1" >> $config_h
1489 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001490 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001491 ;;
1492 ppc64)
1493 echo "TARGET_ARCH=ppc64" >> $config_mak
1494 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001495 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001496 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1497 echo "#define TARGET_PPC 1" >> $config_h
1498 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001499 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001500 ;;
1501 ppc64abi32)
1502 echo "TARGET_ARCH=ppc64" >> $config_mak
1503 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1504 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001505 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001506 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1507 echo "#define TARGET_PPC 1" >> $config_h
1508 echo "#define TARGET_PPC64 1" >> $config_h
1509 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001510 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001511 ;;
1512 sh4|sh4eb)
1513 echo "TARGET_ARCH=sh4" >> $config_mak
1514 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1515 echo "#define TARGET_SH4 1" >> $config_h
1516 bflt="yes"
aurel320b6d3ae2008-09-15 07:43:43 +00001517 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001518 ;;
1519 sparc)
1520 echo "TARGET_ARCH=sparc" >> $config_mak
1521 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1522 echo "#define TARGET_SPARC 1" >> $config_h
1523 ;;
1524 sparc64)
1525 echo "TARGET_ARCH=sparc64" >> $config_mak
1526 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1527 echo "#define TARGET_SPARC 1" >> $config_h
1528 echo "#define TARGET_SPARC64 1" >> $config_h
1529 elfload32="yes"
1530 ;;
1531 sparc32plus)
1532 echo "TARGET_ARCH=sparc64" >> $config_mak
1533 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1534 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1535 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1536 echo "#define TARGET_SPARC 1" >> $config_h
1537 echo "#define TARGET_SPARC64 1" >> $config_h
1538 echo "#define TARGET_ABI32 1" >> $config_h
1539 ;;
1540 *)
1541 echo "Unsupported target CPU"
1542 exit 1
1543 ;;
1544esac
bellardde83cd02003-06-15 20:25:43 +00001545if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001546 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1547 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1548fi
1549if test "$target_softmmu" = "yes" ; then
1550 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1551 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001552fi
bellard997344f2003-10-27 21:10:39 +00001553if test "$target_user_only" = "yes" ; then
1554 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1555 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1556fi
ths831b7822007-01-18 20:06:33 +00001557if test "$target_linux_user" = "yes" ; then
1558 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1559 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1560fi
1561if test "$target_darwin_user" = "yes" ; then
1562 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1563 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1564fi
bellardde83cd02003-06-15 20:25:43 +00001565
aurel320938cda2008-04-11 21:36:06 +00001566if test "$target_cpu" = "arm" \
1567 -o "$target_cpu" = "armeb" \
1568 -o "$target_cpu" = "m68k" \
1569 -o "$target_cpu" = "mips" \
1570 -o "$target_cpu" = "mipsel" \
1571 -o "$target_cpu" = "mipsn32" \
1572 -o "$target_cpu" = "mipsn32el" \
1573 -o "$target_cpu" = "mips64" \
1574 -o "$target_cpu" = "mips64el" \
1575 -o "$target_cpu" = "sparc" \
1576 -o "$target_cpu" = "sparc64" \
1577 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001578 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1579 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1580fi
pbrooke5fe0c52006-06-11 13:32:59 +00001581if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1582 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1583 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1584fi
pbrookbd0c5662008-05-29 14:34:11 +00001585if test "$target_user_only" = "yes" \
1586 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1587 echo "#define USE_NPTL 1" >> $config_h
1588fi
blueswir1cb33da52007-10-09 16:34:29 +00001589# 32 bit ELF loader in addition to native 64 bit loader?
1590if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1591 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1592 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1593fi
bellard5b0753e2005-03-01 21:37:28 +00001594
ths15d9ca02007-07-31 23:07:32 +00001595test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1596
bellard97a847b2003-08-10 21:36:04 +00001597done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001598
1599# build tree in object directory if source path is different from current one
1600if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001601 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001602 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001603 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001604 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001605 for dir in $DIRS ; do
1606 mkdir -p $dir
1607 done
bellardec530c82006-04-25 22:36:06 +00001608 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001609 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001610 rm -f $f
1611 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001612 done
1613fi
bellard7d132992003-03-06 23:23:54 +00001614
malc9d56d2d2008-09-30 19:44:32 +00001615rm -f $TMPO $TMPC $TMPE $TMPS $TMPI