blob: f14739be87be13b42b1bdf885ffdd1d0dafbde8d [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"
bellard7d132992003-03-06 23:23:54 +0000116
117# OS specific
118targetos=`uname -s`
119case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000120CYGWIN*)
121mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000122OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000123if [ "$cpu" = "i386" ] ; then
124 kqemu="yes"
125fi
malcc2de5c92008-06-28 19:13:06 +0000126audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000127;;
bellard67b915a2004-03-31 23:37:16 +0000128MINGW32*)
129mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000130if [ "$cpu" = "i386" ] ; then
131 kqemu="yes"
132fi
malcc2de5c92008-06-28 19:13:06 +0000133audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000134;;
ths5c40d2b2007-06-23 16:03:36 +0000135GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000136audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000137audio_possible_drivers="oss sdl esd pa"
ths5c40d2b2007-06-23 16:03:36 +0000138if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
139 kqemu="yes"
140fi
141;;
bellard7d3505c2004-05-12 19:32:15 +0000142FreeBSD)
143bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000144audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000145audio_possible_drivers="oss sdl esd pa"
bellarde99f9062005-07-28 21:45:38 +0000146if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000147 kqemu="yes"
148fi
bellard7d3505c2004-05-12 19:32:15 +0000149;;
150NetBSD)
151bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000152audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000153audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000154;;
155OpenBSD)
156bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000157openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000158audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000159audio_possible_drivers="oss sdl esd"
blueswir12f6a1ab2008-08-21 18:00:53 +0000160oss_lib="-lossaudio"
bellard7d3505c2004-05-12 19:32:15 +0000161;;
bellard83fb7ad2004-07-05 21:25:26 +0000162Darwin)
163bsd="yes"
164darwin="yes"
ths831b7822007-01-18 20:06:33 +0000165darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000166cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000167audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000168audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000169OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000170OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000171;;
bellardec530c82006-04-25 22:36:06 +0000172SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000173 solaris="yes"
174 make="gmake"
175 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000176 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000177 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000178 # have to select again, because `uname -m` returns i86pc
179 # even on an x86_64 box.
180 solariscpu=`isainfo -k`
181 if test "${solariscpu}" = "amd64" ; then
182 cpu="x86_64"
183 fi
thsc2b84fa2007-02-10 23:21:21 +0000184 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000185 if test "$solarisrev" -le 9 ; then
186 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
187 needs_libsunmath="yes"
188 else
189 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
190 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
191 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
192 echo "Studio 11 can be downloaded from www.sun.com."
193 exit 1
194 fi
195 fi
196 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000197 kqemu="yes"
198 fi
ths86b2bd92007-02-11 00:31:33 +0000199 fi
ths6b4d2ba2007-05-13 18:02:43 +0000200 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000201 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000202 fi
malcc2de5c92008-06-28 19:13:06 +0000203 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000204;;
bellard1d14ffa2005-10-30 18:58:22 +0000205*)
malc0c58ac12008-06-25 21:04:05 +0000206audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000207audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000208linux="yes"
ths831b7822007-01-18 20:06:33 +0000209linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000210if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000211 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000212 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000213fi
bellardfb065182004-11-09 23:09:44 +0000214;;
bellard7d132992003-03-06 23:23:54 +0000215esac
216
bellard7d3505c2004-05-12 19:32:15 +0000217if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000218 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000219 make="gmake"
220 fi
bellard7d3505c2004-05-12 19:32:15 +0000221fi
222
bellard7d132992003-03-06 23:23:54 +0000223# find source path
pbrookad064842006-04-16 12:41:07 +0000224source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000225source_path_used="no"
226workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000227if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000228 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000229else
230 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000231fi
pbrook724db112008-02-03 19:20:13 +0000232[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000233
bellard85aa5182007-11-11 20:17:03 +0000234werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000235# generate compile errors on warnings for development builds
236#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
237#werror="yes";
238#fi
bellard85aa5182007-11-11 20:17:03 +0000239
bellard7d132992003-03-06 23:23:54 +0000240for opt do
pbrooka46e4032006-04-29 23:05:22 +0000241 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000242 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000243 --help|-h) show_help=yes
244 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000245 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000246 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000247 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000248 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000249 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000250 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000251 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000252 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000253 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000254 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000255 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000256 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000257 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000258 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000259 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000260 ;;
pbrook6a882642006-04-17 13:57:12 +0000261 --install=*) install="$optarg"
262 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000263 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000264 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000265 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000266 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000267 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000268 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000269 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000270 ;;
bellard7d132992003-03-06 23:23:54 +0000271 --enable-gprof) gprof="yes"
272 ;;
bellard43ce4df2003-06-09 19:53:12 +0000273 --static) static="yes"
274 ;;
bellard97a847b2003-08-10 21:36:04 +0000275 --disable-sdl) sdl="no"
276 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000277 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000278 ;;
malcc2de5c92008-06-28 19:13:06 +0000279 --fmod-inc=*) fmod_inc="$optarg"
280 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000281 --oss-lib=*) oss_lib="$optarg"
282 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000283 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000284 ;;
285 --audio-drv-list=*) audio_drv_list="$optarg"
286 ;;
aliguori03b4fe72008-10-07 19:16:17 +0000287 --enable-sparse) sparse="yes"
288 ;;
289 --disable-sparse) sparse="no"
290 ;;
ths8d5d2d42007-08-25 01:37:51 +0000291 --disable-vnc-tls) vnc_tls="no"
292 ;;
bellard443f1372004-06-04 11:13:20 +0000293 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000294 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000295 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000296 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000297 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000298 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000299 --disable-brlapi) brlapi="no"
300 ;;
balrogfb599c92008-09-28 23:49:55 +0000301 --disable-bluez) bluez="no"
302 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000303 --enable-profiler) profiler="yes"
304 ;;
malcc2de5c92008-06-28 19:13:06 +0000305 --enable-cocoa)
306 cocoa="yes" ;
307 sdl="no" ;
308 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000309 ;;
bellard97ccc682005-07-02 13:32:17 +0000310 --disable-gfx-check) check_gfx="no"
311 ;;
bellard1aff3812005-11-02 22:30:45 +0000312 --disable-gcc-check) check_gcc="no"
313 ;;
pbrookcad25d62006-03-19 16:31:11 +0000314 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000315 ;;
pbrookcad25d62006-03-19 16:31:11 +0000316 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000317 ;;
ths831b7822007-01-18 20:06:33 +0000318 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000319 ;;
ths831b7822007-01-18 20:06:33 +0000320 --enable-linux-user) linux_user="yes"
321 ;;
322 --disable-darwin-user) darwin_user="no"
323 ;;
324 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000325 ;;
pbrookc5937222006-05-14 11:30:38 +0000326 --enable-uname-release=*) uname_release="$optarg"
327 ;;
blueswir131422552007-04-16 18:27:06 +0000328 --sparc_cpu=*)
329 sparc_cpu="$optarg"
330 case $sparc_cpu in
331 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
332 target_cpu="sparc"; cpu="sparc" ;;
333 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
334 target_cpu="sparc"; cpu="sparc" ;;
335 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
336 target_cpu="sparc64"; cpu="sparc64" ;;
337 *) echo "undefined SPARC architecture. Exiting";exit 1;;
338 esac
339 ;;
bellard85aa5182007-11-11 20:17:03 +0000340 --enable-werror) werror="yes"
341 ;;
342 --disable-werror) werror="no"
343 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000344 --disable-curses) curses="no"
345 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000346 --disable-nptl) nptl="no"
347 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000348 --enable-mixemu) mixemu="yes"
349 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000350 --disable-aio) aio="no"
351 ;;
balrog7f1559c2007-11-17 10:24:32 +0000352 *) echo "ERROR: unknown option $opt"; show_help="yes"
353 ;;
bellard7d132992003-03-06 23:23:54 +0000354 esac
355done
356
ths6f30fa82007-01-05 01:00:47 +0000357# default flags for all hosts
blueswir1ac41a622008-09-14 06:46:31 +0000358CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
359CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
ths6f30fa82007-01-05 01:00:47 +0000360LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000361if test "$werror" = "yes" ; then
362CFLAGS="$CFLAGS -Werror"
363fi
ths6f30fa82007-01-05 01:00:47 +0000364
blueswir149237ac2008-09-17 19:05:19 +0000365if ld --version 2>/dev/null | grep -q "GNU ld" ; then
366 LDFLAGS="$LDFLAGS -Wl,--warn-common"
367fi
368
blueswir131422552007-04-16 18:27:06 +0000369#
370# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
371# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
372#
bellard40293e52008-01-31 11:32:10 +0000373case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000374 sparc) if test -z "$sparc_cpu" ; then
375 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
376 ARCH_LDFLAGS="-m32"
377 else
378 ARCH_CFLAGS="${SP_CFLAGS}"
379 ARCH_LDFLAGS="${SP_LDFLAGS}"
380 fi
381 ;;
382 sparc64) if test -z "$sparc_cpu" ; then
383 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
384 ARCH_LDFLAGS="-m64"
385 else
386 ARCH_CFLAGS="${SP_CFLAGS}"
387 ARCH_LDFLAGS="${SP_LDFLAGS}"
388 fi
389 ;;
ths76d83bd2007-11-18 21:22:10 +0000390 s390)
391 ARCH_CFLAGS="-march=z900"
392 ;;
bellard40293e52008-01-31 11:32:10 +0000393 i386)
394 ARCH_CFLAGS="-m32"
395 ARCH_LDFLAGS="-m32"
396 ;;
397 x86_64)
398 ARCH_CFLAGS="-m64"
399 ARCH_LDFLAGS="-m64"
400 ;;
blueswir131422552007-04-16 18:27:06 +0000401esac
402
pbrookaf5db582006-04-08 14:26:41 +0000403if test x"$show_help" = x"yes" ; then
404cat << EOF
405
406Usage: configure [options]
407Options: [defaults in brackets after descriptions]
408
409EOF
410echo "Standard options:"
411echo " --help print this message"
412echo " --prefix=PREFIX install in PREFIX [$prefix]"
413echo " --interp-prefix=PREFIX where to find shared libraries, etc."
414echo " use %M for cpu name [$interp_prefix]"
415echo " --target-list=LIST set target list [$target_list]"
416echo ""
417echo "kqemu kernel acceleration support:"
418echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000419echo ""
420echo "Advanced options (experts only):"
421echo " --source-path=PATH path of source code [$source_path]"
422echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
423echo " --cc=CC use C compiler CC [$cc]"
424echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
425echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000426echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000427echo " --static enable static build [$static]"
aliguori890b1652008-10-07 21:22:41 +0000428echo " --enable-sparse enable sparse checker"
429echo " --disable-sparse disable sparse checker (default)"
bellard85aa5182007-11-11 20:17:03 +0000430echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000431echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000432echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000433echo " --audio-drv-list=LIST set audio drivers list:"
434echo " Available drivers: $audio_possible_drivers"
435echo " --audio-card-list=LIST set list of additional emulated audio cards"
436echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000437echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000438echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000439echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000440echo " --disable-curses disable curses output"
balrogfb599c92008-09-28 23:49:55 +0000441echo " --disable-bluez disable bluez stack connectivity"
pbrookbd0c5662008-05-29 14:34:11 +0000442echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000443echo " --enable-system enable all system emulation targets"
444echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000445echo " --enable-linux-user enable all linux usermode emulation targets"
446echo " --disable-linux-user disable all linux usermode emulation targets"
447echo " --enable-darwin-user enable all darwin usermode emulation targets"
448echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000449echo " --fmod-lib path to FMOD library"
450echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000451echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000452echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000453echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000454echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000455echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000456echo ""
ths5bf08932006-12-23 00:33:26 +0000457echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000458exit 1
459fi
460
bellard7d132992003-03-06 23:23:54 +0000461cc="${cross_prefix}${cc}"
462ar="${cross_prefix}${ar}"
463strip="${cross_prefix}${strip}"
464
pbrook064aae12006-05-08 00:51:44 +0000465# check that the C compiler works.
466cat > $TMPC <<EOF
467int main(void) {}
468EOF
469
pbrookdb7287e2008-02-03 16:27:13 +0000470if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000471 : C compiler works ok
472else
473 echo "ERROR: \"$cc\" either does not exist or does not work"
474 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000475fi
476
aliguoricd01b4a2008-08-21 19:25:45 +0000477# check compiler to see if we're on mingw32
478cat > $TMPC <<EOF
479#include <windows.h>
480#ifndef _WIN32
481#error not windows
482#endif
483int main(void) {}
484EOF
485
486if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
487 mingw32="yes"
488fi
489
bellard67b915a2004-03-31 23:37:16 +0000490if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000491 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000492 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000493 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000494 linux_user="no"
495fi
496
aliguori997306f2008-09-26 15:52:17 +0000497if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
aliguoricd01b4a2008-08-21 19:25:45 +0000498 AIOLIBS=
aliguori997306f2008-09-26 15:52:17 +0000499elif [ "$bsd" = "yes" ]; then
500 AIOLIBS="-lpthread"
aliguoricd01b4a2008-08-21 19:25:45 +0000501else
502 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
503 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000504fi
505
ths5fafdf22007-09-16 21:08:06 +0000506# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000507if test "$check_gcc" = "yes" ; then
508 cat > $TMPC <<EOF
509#if __GNUC__ < 4
510#error gcc3
511#endif
512int main(){return 0;}
513EOF
pbrookdb7287e2008-02-03 16:27:13 +0000514 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000515 echo "WARNING: \"$cc\" looks like gcc 4.x"
516 found_compat_cc="no"
517 if test "$gcc3_search" = "yes" ; then
518 echo "Looking for gcc 3.x"
519 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000520 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000521 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000522 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000523 found_compat_cc="yes"
524 break
525 fi
526 done
527 if test "$found_compat_cc" = "no" ; then
528 echo "gcc 3.x not found!"
529 fi
530 fi
531 if test "$found_compat_cc" = "no" ; then
532 echo "QEMU is known to have problems when compiled with gcc 4.x"
533 echo "It is recommended that you use gcc 3.x to build QEMU"
534 echo "To use this compiler anyway, configure with --disable-gcc-check"
535 exit 1;
536 fi
537 fi
538fi
539
aliguori03b4fe72008-10-07 19:16:17 +0000540if test ! -x "$(which cgcc 2>/dev/null)"; then
541 sparse="no"
542fi
543
bellardec530c82006-04-25 22:36:06 +0000544#
545# Solaris specific configure tool chain decisions
546#
547if test "$solaris" = "yes" ; then
548 #
549 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
550 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000551 #
bellardec530c82006-04-25 22:36:06 +0000552 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
553 solgcc=`which $cc`
554 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
555 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
556 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
557 echo "or get the latest patch from SunSolve for gcc"
558 exit 1
559 fi
560 fi
561 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
562 if test -z "$solinst" ; then
563 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
564 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
565 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
566 exit 1
567 fi
568 if test "$solinst" = "/usr/sbin/install" ; then
569 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
570 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
571 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
572 exit 1
573 fi
bellardec530c82006-04-25 22:36:06 +0000574 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
575 if test -z "$sol_ar" ; then
576 echo "Error: No path includes ar"
577 if test -f /usr/ccs/bin/ar ; then
578 echo "Add /usr/ccs/bin to your path and rerun configure"
579 fi
580 exit 1
581 fi
ths5fafdf22007-09-16 21:08:06 +0000582fi
bellardec530c82006-04-25 22:36:06 +0000583
584
bellard5327cf42005-01-10 23:18:50 +0000585if test -z "$target_list" ; then
586# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000587 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000588 target_list="\
589i386-softmmu \
590x86_64-softmmu \
591arm-softmmu \
592cris-softmmu \
593m68k-softmmu \
594mips-softmmu \
595mipsel-softmmu \
596mips64-softmmu \
597mips64el-softmmu \
598ppc-softmmu \
599ppcemb-softmmu \
600ppc64-softmmu \
601sh4-softmmu \
602sh4eb-softmmu \
603sparc-softmmu \
604"
pbrook0a8e90f2006-03-19 14:54:16 +0000605 fi
bellard5327cf42005-01-10 23:18:50 +0000606# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000607 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000608 target_list="${target_list}\
609i386-linux-user \
610x86_64-linux-user \
611alpha-linux-user \
612arm-linux-user \
613armeb-linux-user \
614cris-linux-user \
615m68k-linux-user \
616mips-linux-user \
617mipsel-linux-user \
618ppc-linux-user \
619ppc64-linux-user \
620ppc64abi32-linux-user \
621sh4-linux-user \
622sh4eb-linux-user \
623sparc-linux-user \
624sparc64-linux-user \
625sparc32plus-linux-user \
626"
ths831b7822007-01-18 20:06:33 +0000627 fi
628# the following are Darwin specific
629 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000630 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000631 fi
bellard6e20a452005-06-05 15:56:02 +0000632else
pbrookb1a550a2006-04-16 13:28:56 +0000633 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000634fi
pbrook0a8e90f2006-03-19 14:54:16 +0000635if test -z "$target_list" ; then
636 echo "No targets enabled"
637 exit 1
638fi
bellard5327cf42005-01-10 23:18:50 +0000639
bellard7d132992003-03-06 23:23:54 +0000640if test -z "$cross_prefix" ; then
641
642# ---
643# big/little endian test
644cat > $TMPC << EOF
645#include <inttypes.h>
646int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000647 volatile uint32_t i=0x01234567;
648 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000649}
650EOF
651
pbrookdb7287e2008-02-03 16:27:13 +0000652if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000653$TMPE && bigendian="yes"
654else
655echo big/little test failed
656fi
657
658else
659
660# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000661if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000662 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000663 -o "$cpu" = "m68k" \
664 -o "$cpu" = "mips" \
665 -o "$cpu" = "mips64" \
666 -o "$cpu" = "powerpc" \
667 -o "$cpu" = "s390" \
668 -o "$cpu" = "sparc" \
669 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000670 bigendian="yes"
671fi
672
673fi
674
bellardb6853692005-06-05 17:10:39 +0000675# host long bits test
676hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000677if test "$cpu" = "x86_64" \
678 -o "$cpu" = "alpha" \
679 -o "$cpu" = "ia64" \
680 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000681 hostlongbits="64"
682fi
683
malc810260a2008-07-23 19:17:46 +0000684# ppc specific hostlongbits selection
685if test "$cpu" = "powerpc" ; then
malc9d56d2d2008-09-30 19:44:32 +0000686 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
687 grep -q __powerpc64__ $TMPI && hostlongbits=64
malc810260a2008-07-23 19:17:46 +0000688 else
689 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000690 exit 1
malc810260a2008-07-23 19:17:46 +0000691 fi
692fi
693
bellarde8cd23d2003-06-25 16:08:13 +0000694# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000695cat > $TMPC <<EOF
696int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000697}
698EOF
699
pbrookbd0c5662008-05-29 14:34:11 +0000700# Check host NPTL support
701cat > $TMPC <<EOF
702#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000703#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000704void foo()
705{
706#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
707#error bork
708#endif
709}
710EOF
711
712if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
713 :
714else
715 nptl="no"
716fi
717
bellard11d9f692004-04-02 20:55:59 +0000718##########################################
balrogac629222008-10-11 09:56:04 +0000719# zlib check
720
721cat > $TMPC << EOF
722#include <zlib.h>
723int main(void) { zlibVersion(); return 0; }
724EOF
balrog17e15922008-10-11 12:00:42 +0000725if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $TMPC -lz 2> /dev/null ; then
balrogac629222008-10-11 09:56:04 +0000726 :
727else
728 echo
729 echo "Error: zlib check failed"
730 echo "Make sure to have the zlib libs and headers installed."
731 echo
732 exit 1
733fi
734
735##########################################
bellard11d9f692004-04-02 20:55:59 +0000736# SDL probe
737
738sdl_too_old=no
739
740if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000741 sdl_config="sdl-config"
742 sdl=no
743 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000744
745cat > $TMPC << EOF
746#include <SDL.h>
747#undef main /* We don't want SDL to override our main() */
748int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
749EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000750 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
751 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
752 if test "$_sdlversion" -lt 121 ; then
753 sdl_too_old=yes
754 else
755 if test "$cocoa" = "no" ; then
756 sdl=yes
757 fi
758 fi
759
760 # static link with sdl ?
761 if test "$sdl" = "yes" ; then
762 aa="no"
763 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
764 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
765 if [ "$aa" = "yes" ] ; then
766 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000767 fi
bellard11d9f692004-04-02 20:55:59 +0000768
aliguoricd01b4a2008-08-21 19:25:45 +0000769 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
770 sdl_static=yes
771 fi
772 fi # static link
773 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000774else
ths069b0bd2007-07-12 00:27:15 +0000775 # Make sure to disable cocoa if sdl was set
776 if test "$sdl" = "yes" ; then
777 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000778 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000779 fi
bellarda6e022a2004-04-02 21:55:47 +0000780fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000781
ths8f28f3f2007-01-05 21:25:54 +0000782##########################################
ths8d5d2d42007-08-25 01:37:51 +0000783# VNC TLS detection
784if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000785cat > $TMPC <<EOF
786#include <gnutls/gnutls.h>
787int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
788EOF
789 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
790 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
791 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
792 $vnc_tls_libs 2> /dev/null ; then
793 :
794 else
795 vnc_tls="no"
796 fi
ths8d5d2d42007-08-25 01:37:51 +0000797fi
798
799##########################################
ths8a16d272008-07-19 09:56:24 +0000800# vde libraries probe
801if test "$vde" = "yes" ; then
802 cat > $TMPC << EOF
803#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000804int main(void)
805{
806 struct vde_open_args a = {0, 0, 0};
807 vde_open("", "", &a);
808 return 0;
809}
ths8a16d272008-07-19 09:56:24 +0000810EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000811 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000812 :
813 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000814 vde="no"
ths8a16d272008-07-19 09:56:24 +0000815 fi
816fi
817
818##########################################
malcc2de5c92008-06-28 19:13:06 +0000819# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000820
malcc2de5c92008-06-28 19:13:06 +0000821audio_drv_probe()
822{
823 drv=$1
824 hdr=$2
825 lib=$3
826 exp=$4
827 cfl=$5
828 cat > $TMPC << EOF
829#include <$hdr>
830int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000831EOF
malcc2de5c92008-06-28 19:13:06 +0000832 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
833 :
834 else
835 echo
836 echo "Error: $drv check failed"
837 echo "Make sure to have the $drv libs and headers installed."
838 echo
839 exit 1
840 fi
841}
842
malc2fa7d3b2008-07-29 12:58:44 +0000843audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000844for drv in $audio_drv_list; do
845 case $drv in
846 alsa)
847 audio_drv_probe $drv alsa/asoundlib.h -lasound \
848 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
849 ;;
850
851 fmod)
852 if test -z $fmod_lib || test -z $fmod_inc; then
853 echo
854 echo "Error: You must specify path to FMOD library and headers"
855 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
856 echo
857 exit 1
858 fi
859 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
860 ;;
861
862 esd)
863 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
864 ;;
malcb8e59f12008-07-02 21:03:08 +0000865
866 pa)
867 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
868 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
869 ;;
870
blueswir12f6a1ab2008-08-21 18:00:53 +0000871 oss|sdl|core|wav|dsound)
872 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
873 ;;
874
malce4c63a62008-07-19 16:15:16 +0000875 *)
malc1c9b2a52008-07-19 16:57:30 +0000876 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000877 echo
878 echo "Error: Unknown driver '$drv' selected"
879 echo "Possible drivers are: $audio_possible_drivers"
880 echo
881 exit 1
882 }
883 ;;
malcc2de5c92008-06-28 19:13:06 +0000884 esac
885done
ths8f28f3f2007-01-05 21:25:54 +0000886
balrog4d3b6f62008-02-10 16:33:14 +0000887##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000888# BrlAPI probe
889
890if test -z "$brlapi" ; then
891 brlapi=no
892cat > $TMPC << EOF
893#include <brlapi.h>
894int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
895EOF
aurel32a40e56d2008-05-04 00:50:25 +0000896 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000897 brlapi=yes
898 fi # brlapi compile test
899fi # -z $brlapi
900
901##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000902# curses probe
903
904if test "$curses" = "yes" ; then
905 curses=no
906 cat > $TMPC << EOF
907#include <curses.h>
908int main(void) { return curses_version(); }
909EOF
pbrookaf896aa2008-03-23 00:47:42 +0000910 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000911 curses=yes
912 fi
913fi # test "$curses"
914
blueswir1414f0da2008-08-15 18:20:52 +0000915##########################################
balrogfb599c92008-09-28 23:49:55 +0000916# bluez support probe
917if test "$bluez" = "yes" ; then
918 `pkg-config bluez` || bluez="no"
919fi
920if test "$bluez" = "yes" ; then
balroge820e3f2008-09-30 02:27:44 +0000921 cat > $TMPC << EOF
922#include <bluetooth/bluetooth.h>
923int main(void) { return bt_error(0); }
924EOF
balrogfb599c92008-09-28 23:49:55 +0000925 bluez_cflags=`pkg-config --cflags bluez`
926 bluez_libs=`pkg-config --libs bluez`
balrog17e15922008-10-11 12:00:42 +0000927 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $bluez_cflags $TMPC \
balroge820e3f2008-09-30 02:27:44 +0000928 $bluez_libs 2> /dev/null ; then
929 :
930 else
931 bluez="no"
932 fi
balrogfb599c92008-09-28 23:49:55 +0000933fi
934
935##########################################
blueswir1414f0da2008-08-15 18:20:52 +0000936# AIO probe
937if test "$aio" = "yes" ; then
938 aio=no
939 cat > $TMPC << EOF
940#include <aio.h>
941int main(void) { return aio_write(NULL); }
942EOF
943 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
944 aio=yes
945 fi
946fi
947
pbrookcc8ae6d2006-04-23 17:57:59 +0000948# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000949if [ -x "`which texi2html 2>/dev/null`" ] && \
950 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000951 build_docs="yes"
952fi
953
bellard11d9f692004-04-02 20:55:59 +0000954if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000955 if test -z "$prefix" ; then
956 prefix="/c/Program Files/Qemu"
957 fi
958 mansuffix=""
959 datasuffix=""
960 docsuffix=""
961 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000962else
pbrook308c3592007-02-27 00:52:01 +0000963 if test -z "$prefix" ; then
964 prefix="/usr/local"
965 fi
966 mansuffix="/share/man"
967 datasuffix="/share/qemu"
968 docsuffix="/share/doc/qemu"
969 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000970fi
bellard5a671352003-10-01 00:13:48 +0000971
bellard43ce4df2003-06-09 19:53:12 +0000972echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000973echo "BIOS directory $prefix$datasuffix"
974echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000975if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000976echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000977echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000978fi
bellard5a671352003-10-01 00:13:48 +0000979echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000980echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000981echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000982echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000983echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000984echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000985echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000986echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000987echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000988echo "gprof enabled $gprof"
aliguori03b4fe72008-10-07 19:16:17 +0000989echo "sparse enabled $sparse"
bellard05c2a3e2006-02-08 22:39:17 +0000990echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000991echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000992echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000993if test "$darwin" = "yes" ; then
994 echo "Cocoa support $cocoa"
995fi
bellard97a847b2003-08-10 21:36:04 +0000996echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000997if test "$sdl" != "no" ; then
998 echo "SDL static link $sdl_static"
999fi
balrog4d3b6f62008-02-10 16:33:14 +00001000echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +00001001echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00001002echo "Audio drivers $audio_drv_list"
1003echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +00001004echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +00001005echo "VNC TLS support $vnc_tls"
1006if test "$vnc_tls" = "yes" ; then
1007 echo " TLS CFLAGS $vnc_tls_cflags"
1008 echo " TLS LIBS $vnc_tls_libs"
1009fi
blueswir131422552007-04-16 18:27:06 +00001010if test -n "$sparc_cpu"; then
1011 echo "Target Sparc Arch $sparc_cpu"
1012fi
bellard07f4ddb2005-04-23 17:44:28 +00001013echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +00001014echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +00001015echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +00001016[ ! -z "$uname_release" ] && \
1017echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +00001018echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +00001019echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +00001020echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +00001021
bellard97a847b2003-08-10 21:36:04 +00001022if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00001023echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00001024fi
ths20b40c62007-07-11 23:39:45 +00001025if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1026 echo "The error log from compiling the libSDL test is: "
1027 cat /tmp/qemu-$$-sdl-config.log
1028fi
1029rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +00001030#if test "$sdl_static" = "no"; then
1031# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1032#fi
bellard97a847b2003-08-10 21:36:04 +00001033config_mak="config-host.mak"
1034config_h="config-host.h"
1035
bellard7c1f25b2004-04-22 00:02:08 +00001036#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +00001037
ths15d9ca02007-07-31 23:07:32 +00001038test -f $config_h && mv $config_h ${config_h}~
1039
bellard97a847b2003-08-10 21:36:04 +00001040echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +00001041echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001042echo "/* Automatically generated by configure - do not modify */" > $config_h
1043
1044echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001045echo "bindir=\${prefix}$binsuffix" >> $config_mak
1046echo "mandir=\${prefix}$mansuffix" >> $config_mak
1047echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +00001048echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001049echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001050echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +00001051echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001052echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001053echo "HOST_CC=$host_cc" >> $config_mak
1054echo "AR=$ar" >> $config_mak
1055echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001056# XXX: only use CFLAGS and LDFLAGS ?
1057# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1058# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001059echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001060echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1061echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1062echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001063echo "CFLAGS=$CFLAGS" >> $config_mak
1064echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001065echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001066echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001067case "$cpu" in
1068 i386)
1069 echo "ARCH=i386" >> $config_mak
1070 echo "#define HOST_I386 1" >> $config_h
1071 ;;
1072 x86_64)
1073 echo "ARCH=x86_64" >> $config_mak
1074 echo "#define HOST_X86_64 1" >> $config_h
1075 ;;
1076 alpha)
1077 echo "ARCH=alpha" >> $config_mak
1078 echo "#define HOST_ALPHA 1" >> $config_h
1079 ;;
1080 armv4b)
1081 echo "ARCH=arm" >> $config_mak
1082 echo "#define HOST_ARM 1" >> $config_h
1083 ;;
1084 armv4l)
1085 echo "ARCH=arm" >> $config_mak
1086 echo "#define HOST_ARM 1" >> $config_h
1087 ;;
1088 cris)
1089 echo "ARCH=cris" >> $config_mak
1090 echo "#define HOST_CRIS 1" >> $config_h
1091 ;;
1092 hppa)
1093 echo "ARCH=hppa" >> $config_mak
1094 echo "#define HOST_HPPA 1" >> $config_h
1095 ;;
1096 ia64)
1097 echo "ARCH=ia64" >> $config_mak
1098 echo "#define HOST_IA64 1" >> $config_h
1099 ;;
1100 m68k)
1101 echo "ARCH=m68k" >> $config_mak
1102 echo "#define HOST_M68K 1" >> $config_h
1103 ;;
1104 mips)
1105 echo "ARCH=mips" >> $config_mak
1106 echo "#define HOST_MIPS 1" >> $config_h
1107 ;;
1108 mips64)
1109 echo "ARCH=mips64" >> $config_mak
1110 echo "#define HOST_MIPS64 1" >> $config_h
1111 ;;
1112 powerpc)
malc810260a2008-07-23 19:17:46 +00001113 if test "$hostlongbits" = "32"; then
1114 echo "ARCH=ppc" >> $config_mak
1115 echo "#define HOST_PPC 1" >> $config_h
1116 else
1117 echo "ARCH=ppc64" >> $config_mak
1118 echo "#define HOST_PPC64 1" >> $config_h
1119 fi
aurel322408a522008-04-20 20:19:44 +00001120 ;;
1121 s390)
1122 echo "ARCH=s390" >> $config_mak
1123 echo "#define HOST_S390 1" >> $config_h
1124 ;;
1125 sparc)
1126 echo "ARCH=sparc" >> $config_mak
1127 echo "#define HOST_SPARC 1" >> $config_h
1128 ;;
1129 sparc64)
1130 echo "ARCH=sparc64" >> $config_mak
1131 echo "#define HOST_SPARC64 1" >> $config_h
1132 ;;
1133 *)
1134 echo "Unsupported CPU = $cpu"
1135 exit 1
1136 ;;
1137esac
aliguori03b4fe72008-10-07 19:16:17 +00001138if test "$sparse" = "yes" ; then
1139 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_mak
1140 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_mak
1141 echo "CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_mak
1142fi
bellard7d132992003-03-06 23:23:54 +00001143if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001144 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1145 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1146fi
bellardb6853692005-06-05 17:10:39 +00001147echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001148if test "$mingw32" = "yes" ; then
1149 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001150 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001151else
1152 cat > $TMPC << EOF
1153#include <byteswap.h>
1154int main(void) { return bswap_32(0); }
1155EOF
pbrookdb7287e2008-02-03 16:27:13 +00001156 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001157 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1158 fi
bellard67b915a2004-03-31 23:37:16 +00001159fi
blueswir1128ab2f2008-08-15 18:33:42 +00001160
1161if [ "$openbsd" = "yes" ] ; then
1162 echo "#define ENOTSUP 4096" >> $config_h
1163fi
1164
bellard83fb7ad2004-07-05 21:25:26 +00001165if test "$darwin" = "yes" ; then
1166 echo "CONFIG_DARWIN=yes" >> $config_mak
1167 echo "#define CONFIG_DARWIN 1" >> $config_h
1168fi
bellardec530c82006-04-25 22:36:06 +00001169if test "$solaris" = "yes" ; then
1170 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001171 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001172 if test "$needs_libsunmath" = "yes" ; then
1173 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1174 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1175 fi
bellardec530c82006-04-25 22:36:06 +00001176fi
blueswir131422552007-04-16 18:27:06 +00001177if test -n "$sparc_cpu"; then
1178 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1179 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1180fi
bellard67b915a2004-03-31 23:37:16 +00001181if test "$gdbstub" = "yes" ; then
1182 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1183 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1184fi
bellard97a847b2003-08-10 21:36:04 +00001185if test "$gprof" = "yes" ; then
1186 echo "TARGET_GPROF=yes" >> $config_mak
1187 echo "#define HAVE_GPROF 1" >> $config_h
1188fi
1189if test "$static" = "yes" ; then
1190 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001191 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001192fi
bellard05c2a3e2006-02-08 22:39:17 +00001193if test $profiler = "yes" ; then
1194 echo "#define CONFIG_PROFILER 1" >> $config_h
1195fi
bellardc20709a2004-04-21 23:27:19 +00001196if test "$slirp" = "yes" ; then
1197 echo "CONFIG_SLIRP=yes" >> $config_mak
1198 echo "#define CONFIG_SLIRP 1" >> $config_h
1199fi
ths8a16d272008-07-19 09:56:24 +00001200if test "$vde" = "yes" ; then
1201 echo "CONFIG_VDE=yes" >> $config_mak
1202 echo "#define CONFIG_VDE 1" >> $config_h
1203 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1204fi
malc0c58ac12008-06-25 21:04:05 +00001205for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001206 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001207 echo "$def=yes" >> $config_mak
1208 echo "#define $def 1" >> $config_h
1209done
1210echo "#define AUDIO_DRIVERS \\" >> $config_h
1211for drv in $audio_drv_list; do
1212 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001213 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001214 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001215 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001216 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1217 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001218 elif test "$drv" = "oss"; then
1219 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001220 fi
1221done
1222echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001223if test "$mixemu" = "yes" ; then
1224 echo "CONFIG_MIXEMU=yes" >> $config_mak
1225 echo "#define CONFIG_MIXEMU 1" >> $config_h
1226fi
ths8d5d2d42007-08-25 01:37:51 +00001227if test "$vnc_tls" = "yes" ; then
1228 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1229 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1230 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1231 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1232fi
pbrookb1a550a2006-04-16 13:28:56 +00001233qemu_version=`head $source_path/VERSION`
1234echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001235echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001236
1237echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001238if [ "$source_path_used" = "yes" ]; then
1239 echo "VPATH=$source_path" >> $config_mak
1240fi
bellard97a847b2003-08-10 21:36:04 +00001241echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001242if [ "$build_docs" = "yes" ] ; then
1243 echo "BUILD_DOCS=yes" >> $config_mak
1244fi
bellard49ecc3f2007-11-07 19:25:15 +00001245if test "$static" = "yes"; then
1246 sdl1=$sdl_static
1247else
1248 sdl1=$sdl
1249fi
1250if test "$sdl1" = "yes" ; then
1251 echo "#define CONFIG_SDL 1" >> $config_h
1252 echo "CONFIG_SDL=yes" >> $config_mak
1253 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1254 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1255 else
1256 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1257 fi
1258 if [ "${aa}" = "yes" ] ; then
1259 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1260 else
1261 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1262 fi
1263fi
1264if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001265 echo "#define CONFIG_COCOA 1" >> $config_h
1266 echo "CONFIG_COCOA=yes" >> $config_mak
1267fi
1268if test "$curses" = "yes" ; then
1269 echo "#define CONFIG_CURSES 1" >> $config_h
1270 echo "CONFIG_CURSES=yes" >> $config_mak
1271 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001272fi
aurel322e4d9fb2008-04-08 06:01:02 +00001273if test "$brlapi" = "yes" ; then
1274 echo "CONFIG_BRLAPI=yes" >> $config_mak
1275 echo "#define CONFIG_BRLAPI 1" >> $config_h
1276 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1277fi
balrogfb599c92008-09-28 23:49:55 +00001278if test "$bluez" = "yes" ; then
1279 echo "CONFIG_BLUEZ=yes" >> $config_mak
1280 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1281 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1282 echo "#define CONFIG_BLUEZ 1" >> $config_h
1283fi
blueswir1414f0da2008-08-15 18:20:52 +00001284if test "$aio" = "yes" ; then
1285 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001286 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001287fi
bellard97a847b2003-08-10 21:36:04 +00001288
bellard83fb7ad2004-07-05 21:25:26 +00001289# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001290if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001291 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001292 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001293 echo "#define _BSD 1" >> $config_h
1294fi
1295
pbrookc5937222006-05-14 11:30:38 +00001296echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1297
pbrookc39e3332007-09-22 16:49:14 +00001298tools=
1299if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1300 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001301 if [ "$linux" = "yes" ] ; then
1302 tools="qemu-nbd\$(EXESUF) $tools"
1303 fi
pbrookc39e3332007-09-22 16:49:14 +00001304fi
1305echo "TOOLS=$tools" >> $config_mak
1306
ths15d9ca02007-07-31 23:07:32 +00001307test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1308
bellard1d14ffa2005-10-30 18:58:22 +00001309for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001310target_dir="$target"
1311config_mak=$target_dir/config.mak
1312config_h=$target_dir/config.h
1313target_cpu=`echo $target | cut -d '-' -f 1`
1314target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001315[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001316[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1317[ "$target_cpu" = "mips" ] && target_bigendian=yes
1318[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1319[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001320[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001321[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001322[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001323[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001324[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001325[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1326[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1327[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001328target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001329target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001330target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001331target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001332case "$target" in
1333 ${target_cpu}-softmmu)
1334 target_softmmu="yes"
1335 ;;
1336 ${target_cpu}-linux-user)
1337 target_user_only="yes"
1338 target_linux_user="yes"
1339 ;;
1340 ${target_cpu}-darwin-user)
1341 target_user_only="yes"
1342 target_darwin_user="yes"
1343 ;;
1344 *)
1345 echo "ERROR: Target '$target' not recognised"
1346 exit 1
1347 ;;
1348esac
ths831b7822007-01-18 20:06:33 +00001349
bellard97ccc682005-07-02 13:32:17 +00001350if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001351 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001352 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001353 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001354 echo "Note that this will disable all output from the virtual graphics card"
1355 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001356 exit 1;
1357fi
1358
bellard7c1f25b2004-04-22 00:02:08 +00001359#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001360
ths15d9ca02007-07-31 23:07:32 +00001361test -f $config_h && mv $config_h ${config_h}~
1362
bellard97a847b2003-08-10 21:36:04 +00001363mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001364mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001365mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001366if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001367 mkdir -p $target_dir/nwfpe
1368fi
1369
bellardec530c82006-04-25 22:36:06 +00001370#
1371# don't use ln -sf as not all "ln -sf" over write the file/link
1372#
1373rm -f $target_dir/Makefile
1374ln -s $source_path/Makefile.target $target_dir/Makefile
1375
bellard97a847b2003-08-10 21:36:04 +00001376
1377echo "# Automatically generated by configure - do not modify" > $config_mak
1378echo "/* Automatically generated by configure - do not modify */" > $config_h
1379
1380
1381echo "include ../config-host.mak" >> $config_mak
1382echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001383
pbrooke5fe0c52006-06-11 13:32:59 +00001384bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001385elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001386target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001387interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1388echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
pbrook56aebc82008-10-11 17:55:29 +00001389gdb_xml_files=""
bellard97a847b2003-08-10 21:36:04 +00001390
aurel322408a522008-04-20 20:19:44 +00001391case "$target_cpu" in
1392 i386)
1393 echo "TARGET_ARCH=i386" >> $config_mak
1394 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1395 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001396 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001397 then
1398 echo "#define USE_KQEMU 1" >> $config_h
1399 fi
aurel32f2bf0942008-05-05 06:00:27 +00001400 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001401 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001402 then
1403 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1404 else
1405 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1406 fi
aurel322408a522008-04-20 20:19:44 +00001407 ;;
1408 x86_64)
1409 echo "TARGET_ARCH=x86_64" >> $config_mak
1410 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1411 echo "#define TARGET_I386 1" >> $config_h
1412 echo "#define TARGET_X86_64 1" >> $config_h
1413 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1414 then
1415 echo "#define USE_KQEMU 1" >> $config_h
1416 fi
1417 ;;
1418 alpha)
1419 echo "TARGET_ARCH=alpha" >> $config_mak
1420 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1421 echo "#define TARGET_ALPHA 1" >> $config_h
1422 ;;
1423 arm|armeb)
1424 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001425 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1426 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001427 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001428 target_nptl="yes"
pbrook56aebc82008-10-11 17:55:29 +00001429 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
aurel322408a522008-04-20 20:19:44 +00001430 ;;
1431 cris)
1432 echo "TARGET_ARCH=cris" >> $config_mak
1433 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1434 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001435 ;;
1436 m68k)
1437 echo "TARGET_ARCH=m68k" >> $config_mak
1438 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1439 echo "#define TARGET_M68K 1" >> $config_h
1440 bflt="yes"
pbrook56aebc82008-10-11 17:55:29 +00001441 gdb_xml_files="cf-core.xml cf-fp.xml"
aurel322408a522008-04-20 20:19:44 +00001442 ;;
1443 mips|mipsel)
1444 echo "TARGET_ARCH=mips" >> $config_mak
1445 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1446 echo "#define TARGET_MIPS 1" >> $config_h
1447 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1448 ;;
1449 mipsn32|mipsn32el)
1450 echo "TARGET_ARCH=mipsn32" >> $config_mak
1451 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1452 echo "#define TARGET_MIPS 1" >> $config_h
1453 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1454 ;;
1455 mips64|mips64el)
1456 echo "TARGET_ARCH=mips64" >> $config_mak
1457 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1458 echo "#define TARGET_MIPS 1" >> $config_h
1459 echo "#define TARGET_MIPS64 1" >> $config_h
1460 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1461 ;;
1462 ppc)
1463 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001464 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001465 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1466 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001467 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001468 ;;
1469 ppcemb)
1470 echo "TARGET_ARCH=ppcemb" >> $config_mak
1471 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001472 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001473 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1474 echo "#define TARGET_PPC 1" >> $config_h
1475 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001476 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001477 ;;
1478 ppc64)
1479 echo "TARGET_ARCH=ppc64" >> $config_mak
1480 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001481 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001482 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1483 echo "#define TARGET_PPC 1" >> $config_h
1484 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001485 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001486 ;;
1487 ppc64abi32)
1488 echo "TARGET_ARCH=ppc64" >> $config_mak
1489 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1490 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001491 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001492 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1493 echo "#define TARGET_PPC 1" >> $config_h
1494 echo "#define TARGET_PPC64 1" >> $config_h
1495 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001496 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001497 ;;
1498 sh4|sh4eb)
1499 echo "TARGET_ARCH=sh4" >> $config_mak
1500 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1501 echo "#define TARGET_SH4 1" >> $config_h
1502 bflt="yes"
aurel320b6d3ae2008-09-15 07:43:43 +00001503 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001504 ;;
1505 sparc)
1506 echo "TARGET_ARCH=sparc" >> $config_mak
1507 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1508 echo "#define TARGET_SPARC 1" >> $config_h
1509 ;;
1510 sparc64)
1511 echo "TARGET_ARCH=sparc64" >> $config_mak
1512 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1513 echo "#define TARGET_SPARC 1" >> $config_h
1514 echo "#define TARGET_SPARC64 1" >> $config_h
1515 elfload32="yes"
1516 ;;
1517 sparc32plus)
1518 echo "TARGET_ARCH=sparc64" >> $config_mak
1519 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1520 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1521 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1522 echo "#define TARGET_SPARC 1" >> $config_h
1523 echo "#define TARGET_SPARC64 1" >> $config_h
1524 echo "#define TARGET_ABI32 1" >> $config_h
1525 ;;
1526 *)
1527 echo "Unsupported target CPU"
1528 exit 1
1529 ;;
1530esac
bellardde83cd02003-06-15 20:25:43 +00001531if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001532 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1533 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1534fi
1535if test "$target_softmmu" = "yes" ; then
1536 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1537 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001538fi
bellard997344f2003-10-27 21:10:39 +00001539if test "$target_user_only" = "yes" ; then
1540 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1541 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1542fi
ths831b7822007-01-18 20:06:33 +00001543if test "$target_linux_user" = "yes" ; then
1544 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1545 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1546fi
1547if test "$target_darwin_user" = "yes" ; then
1548 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1549 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1550fi
pbrook56aebc82008-10-11 17:55:29 +00001551list=""
1552if test ! -z "$gdb_xml_files" ; then
1553 for x in $gdb_xml_files; do
1554 list="$list $source_path/gdb-xml/$x"
1555 done
1556fi
1557echo "TARGET_XML_FILES=$list" >> $config_mak
bellardde83cd02003-06-15 20:25:43 +00001558
aurel320938cda2008-04-11 21:36:06 +00001559if test "$target_cpu" = "arm" \
1560 -o "$target_cpu" = "armeb" \
1561 -o "$target_cpu" = "m68k" \
1562 -o "$target_cpu" = "mips" \
1563 -o "$target_cpu" = "mipsel" \
1564 -o "$target_cpu" = "mipsn32" \
1565 -o "$target_cpu" = "mipsn32el" \
1566 -o "$target_cpu" = "mips64" \
1567 -o "$target_cpu" = "mips64el" \
1568 -o "$target_cpu" = "sparc" \
1569 -o "$target_cpu" = "sparc64" \
1570 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001571 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1572 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1573fi
pbrooke5fe0c52006-06-11 13:32:59 +00001574if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1575 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1576 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1577fi
pbrookbd0c5662008-05-29 14:34:11 +00001578if test "$target_user_only" = "yes" \
1579 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1580 echo "#define USE_NPTL 1" >> $config_h
1581fi
blueswir1cb33da52007-10-09 16:34:29 +00001582# 32 bit ELF loader in addition to native 64 bit loader?
1583if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1584 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1585 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1586fi
bellard5b0753e2005-03-01 21:37:28 +00001587
ths15d9ca02007-07-31 23:07:32 +00001588test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1589
bellard97a847b2003-08-10 21:36:04 +00001590done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001591
1592# build tree in object directory if source path is different from current one
1593if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001594 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001595 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001596 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001597 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001598 for dir in $DIRS ; do
1599 mkdir -p $dir
1600 done
bellardec530c82006-04-25 22:36:06 +00001601 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001602 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001603 rm -f $f
1604 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001605 done
1606fi
bellard7d132992003-03-06 23:23:54 +00001607
malc9d56d2d2008-09-30 19:44:32 +00001608rm -f $TMPO $TMPC $TMPE $TMPS $TMPI