blob: a224e6a6b64bb28269b7cde15bb55ebeca44e6d9 [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"
88bigendian="no"
bellard67b915a2004-03-31 23:37:16 +000089mingw32="no"
90EXESUF=""
91gdbstub="yes"
bellard443f1372004-06-04 11:13:20 +000092slirp="yes"
aliguorie0e6c8c02008-07-23 18:14:33 +000093vde="yes"
bellard102a52e2004-11-14 19:57:29 +000094fmod_lib=""
95fmod_inc=""
blueswir12f6a1ab2008-08-21 18:00:53 +000096oss_lib=""
ths8d5d2d42007-08-25 01:37:51 +000097vnc_tls="yes"
pbrookb1a550a2006-04-16 13:28:56 +000098bsd="no"
bellard5327cf42005-01-10 23:18:50 +000099linux="no"
bellardc9ec1fe2005-02-10 21:55:30 +0000100kqemu="no"
bellard05c2a3e2006-02-08 22:39:17 +0000101profiler="no"
bellard5b0753e2005-03-01 21:37:28 +0000102cocoa="no"
bellard97ccc682005-07-02 13:32:17 +0000103check_gfx="yes"
bellard1aff3812005-11-02 22:30:45 +0000104check_gcc="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000105softmmu="yes"
ths831b7822007-01-18 20:06:33 +0000106linux_user="no"
107darwin_user="no"
pbrookcc8ae6d2006-04-23 17:57:59 +0000108build_docs="no"
pbrookc5937222006-05-14 11:30:38 +0000109uname_release=""
balrog4d3b6f62008-02-10 16:33:14 +0000110curses="yes"
blueswir1414f0da2008-08-15 18:20:52 +0000111aio="yes"
pbrookbd0c5662008-05-29 14:34:11 +0000112nptl="yes"
malc8ff9cbf2008-06-23 18:33:30 +0000113mixemu="no"
balrogfb599c92008-09-28 23:49:55 +0000114bluez="yes"
aliguori27463102008-09-27 20:58:43 +0000115signalfd="no"
116eventfd="no"
bellard7d132992003-03-06 23:23:54 +0000117
118# OS specific
119targetos=`uname -s`
120case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000121CYGWIN*)
122mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000123OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000124if [ "$cpu" = "i386" ] ; then
125 kqemu="yes"
126fi
malcc2de5c92008-06-28 19:13:06 +0000127audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000128;;
bellard67b915a2004-03-31 23:37:16 +0000129MINGW32*)
130mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000131if [ "$cpu" = "i386" ] ; then
132 kqemu="yes"
133fi
malcc2de5c92008-06-28 19:13:06 +0000134audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000135;;
ths5c40d2b2007-06-23 16:03:36 +0000136GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000137audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000138audio_possible_drivers="oss sdl esd pa"
ths5c40d2b2007-06-23 16:03:36 +0000139if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
140 kqemu="yes"
141fi
142;;
bellard7d3505c2004-05-12 19:32:15 +0000143FreeBSD)
144bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000145audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000146audio_possible_drivers="oss sdl esd pa"
bellarde99f9062005-07-28 21:45:38 +0000147if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000148 kqemu="yes"
149fi
bellard7d3505c2004-05-12 19:32:15 +0000150;;
151NetBSD)
152bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000153audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000154audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000155;;
156OpenBSD)
157bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000158openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000159audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000160audio_possible_drivers="oss sdl esd"
blueswir12f6a1ab2008-08-21 18:00:53 +0000161oss_lib="-lossaudio"
bellard7d3505c2004-05-12 19:32:15 +0000162;;
bellard83fb7ad2004-07-05 21:25:26 +0000163Darwin)
164bsd="yes"
165darwin="yes"
ths831b7822007-01-18 20:06:33 +0000166darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000167cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000168audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000169audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000170OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000171OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000172;;
bellardec530c82006-04-25 22:36:06 +0000173SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000174 solaris="yes"
175 make="gmake"
176 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000177 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000178 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000179 # have to select again, because `uname -m` returns i86pc
180 # even on an x86_64 box.
181 solariscpu=`isainfo -k`
182 if test "${solariscpu}" = "amd64" ; then
183 cpu="x86_64"
184 fi
thsc2b84fa2007-02-10 23:21:21 +0000185 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000186 if test "$solarisrev" -le 9 ; then
187 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
188 needs_libsunmath="yes"
189 else
190 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
191 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
192 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
193 echo "Studio 11 can be downloaded from www.sun.com."
194 exit 1
195 fi
196 fi
197 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000198 kqemu="yes"
199 fi
ths86b2bd92007-02-11 00:31:33 +0000200 fi
ths6b4d2ba2007-05-13 18:02:43 +0000201 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000202 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000203 fi
malcc2de5c92008-06-28 19:13:06 +0000204 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000205;;
bellard1d14ffa2005-10-30 18:58:22 +0000206*)
malc0c58ac12008-06-25 21:04:05 +0000207audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000208audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000209linux="yes"
ths831b7822007-01-18 20:06:33 +0000210linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000211if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000212 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000213 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000214fi
bellardfb065182004-11-09 23:09:44 +0000215;;
bellard7d132992003-03-06 23:23:54 +0000216esac
217
bellard7d3505c2004-05-12 19:32:15 +0000218if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000219 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000220 make="gmake"
221 fi
bellard7d3505c2004-05-12 19:32:15 +0000222fi
223
bellard7d132992003-03-06 23:23:54 +0000224# find source path
pbrookad064842006-04-16 12:41:07 +0000225source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000226source_path_used="no"
227workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000228if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000229 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000230else
231 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000232fi
pbrook724db112008-02-03 19:20:13 +0000233[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000234
bellard85aa5182007-11-11 20:17:03 +0000235werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000236# generate compile errors on warnings for development builds
237#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
238#werror="yes";
239#fi
bellard85aa5182007-11-11 20:17:03 +0000240
bellard7d132992003-03-06 23:23:54 +0000241for opt do
pbrooka46e4032006-04-29 23:05:22 +0000242 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000243 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000244 --help|-h) show_help=yes
245 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000246 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000247 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000248 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000249 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000250 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000251 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000252 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000253 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000254 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000255 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000256 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000257 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000258 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000259 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000260 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000261 ;;
pbrook6a882642006-04-17 13:57:12 +0000262 --install=*) install="$optarg"
263 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000264 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000265 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000266 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000267 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000268 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000269 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000270 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000271 ;;
bellard7d132992003-03-06 23:23:54 +0000272 --enable-gprof) gprof="yes"
273 ;;
bellard43ce4df2003-06-09 19:53:12 +0000274 --static) static="yes"
275 ;;
bellard97a847b2003-08-10 21:36:04 +0000276 --disable-sdl) sdl="no"
277 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000278 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000279 ;;
malcc2de5c92008-06-28 19:13:06 +0000280 --fmod-inc=*) fmod_inc="$optarg"
281 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000282 --oss-lib=*) oss_lib="$optarg"
283 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000284 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000285 ;;
286 --audio-drv-list=*) audio_drv_list="$optarg"
287 ;;
ths8d5d2d42007-08-25 01:37:51 +0000288 --disable-vnc-tls) vnc_tls="no"
289 ;;
bellard443f1372004-06-04 11:13:20 +0000290 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000291 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000292 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000293 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000294 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000295 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000296 --disable-brlapi) brlapi="no"
297 ;;
balrogfb599c92008-09-28 23:49:55 +0000298 --disable-bluez) bluez="no"
299 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000300 --enable-profiler) profiler="yes"
301 ;;
malcc2de5c92008-06-28 19:13:06 +0000302 --enable-cocoa)
303 cocoa="yes" ;
304 sdl="no" ;
305 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000306 ;;
bellard97ccc682005-07-02 13:32:17 +0000307 --disable-gfx-check) check_gfx="no"
308 ;;
bellard1aff3812005-11-02 22:30:45 +0000309 --disable-gcc-check) check_gcc="no"
310 ;;
pbrookcad25d62006-03-19 16:31:11 +0000311 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000312 ;;
pbrookcad25d62006-03-19 16:31:11 +0000313 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000314 ;;
ths831b7822007-01-18 20:06:33 +0000315 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000316 ;;
ths831b7822007-01-18 20:06:33 +0000317 --enable-linux-user) linux_user="yes"
318 ;;
319 --disable-darwin-user) darwin_user="no"
320 ;;
321 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000322 ;;
pbrookc5937222006-05-14 11:30:38 +0000323 --enable-uname-release=*) uname_release="$optarg"
324 ;;
blueswir131422552007-04-16 18:27:06 +0000325 --sparc_cpu=*)
326 sparc_cpu="$optarg"
327 case $sparc_cpu in
328 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
329 target_cpu="sparc"; cpu="sparc" ;;
330 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
331 target_cpu="sparc"; cpu="sparc" ;;
332 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
333 target_cpu="sparc64"; cpu="sparc64" ;;
334 *) echo "undefined SPARC architecture. Exiting";exit 1;;
335 esac
336 ;;
bellard85aa5182007-11-11 20:17:03 +0000337 --enable-werror) werror="yes"
338 ;;
339 --disable-werror) werror="no"
340 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000341 --disable-curses) curses="no"
342 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000343 --disable-nptl) nptl="no"
344 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000345 --enable-mixemu) mixemu="yes"
346 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000347 --disable-aio) aio="no"
348 ;;
balrog7f1559c2007-11-17 10:24:32 +0000349 *) echo "ERROR: unknown option $opt"; show_help="yes"
350 ;;
bellard7d132992003-03-06 23:23:54 +0000351 esac
352done
353
ths6f30fa82007-01-05 01:00:47 +0000354# default flags for all hosts
blueswir1ac41a622008-09-14 06:46:31 +0000355CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
356CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
ths6f30fa82007-01-05 01:00:47 +0000357LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000358if test "$werror" = "yes" ; then
359CFLAGS="$CFLAGS -Werror"
360fi
ths6f30fa82007-01-05 01:00:47 +0000361
blueswir149237ac2008-09-17 19:05:19 +0000362if ld --version 2>/dev/null | grep -q "GNU ld" ; then
363 LDFLAGS="$LDFLAGS -Wl,--warn-common"
364fi
365
blueswir131422552007-04-16 18:27:06 +0000366#
367# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
368# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
369#
bellard40293e52008-01-31 11:32:10 +0000370case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000371 sparc) if test -z "$sparc_cpu" ; then
372 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
373 ARCH_LDFLAGS="-m32"
374 else
375 ARCH_CFLAGS="${SP_CFLAGS}"
376 ARCH_LDFLAGS="${SP_LDFLAGS}"
377 fi
378 ;;
379 sparc64) if test -z "$sparc_cpu" ; then
380 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
381 ARCH_LDFLAGS="-m64"
382 else
383 ARCH_CFLAGS="${SP_CFLAGS}"
384 ARCH_LDFLAGS="${SP_LDFLAGS}"
385 fi
386 ;;
ths76d83bd2007-11-18 21:22:10 +0000387 s390)
388 ARCH_CFLAGS="-march=z900"
389 ;;
bellard40293e52008-01-31 11:32:10 +0000390 i386)
391 ARCH_CFLAGS="-m32"
392 ARCH_LDFLAGS="-m32"
393 ;;
394 x86_64)
395 ARCH_CFLAGS="-m64"
396 ARCH_LDFLAGS="-m64"
397 ;;
blueswir131422552007-04-16 18:27:06 +0000398esac
399
pbrookaf5db582006-04-08 14:26:41 +0000400if test x"$show_help" = x"yes" ; then
401cat << EOF
402
403Usage: configure [options]
404Options: [defaults in brackets after descriptions]
405
406EOF
407echo "Standard options:"
408echo " --help print this message"
409echo " --prefix=PREFIX install in PREFIX [$prefix]"
410echo " --interp-prefix=PREFIX where to find shared libraries, etc."
411echo " use %M for cpu name [$interp_prefix]"
412echo " --target-list=LIST set target list [$target_list]"
413echo ""
414echo "kqemu kernel acceleration support:"
415echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000416echo ""
417echo "Advanced options (experts only):"
418echo " --source-path=PATH path of source code [$source_path]"
419echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
420echo " --cc=CC use C compiler CC [$cc]"
421echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
422echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000423echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000424echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000425echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000426echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000427echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000428echo " --audio-drv-list=LIST set audio drivers list:"
429echo " Available drivers: $audio_possible_drivers"
430echo " --audio-card-list=LIST set list of additional emulated audio cards"
431echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000432echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000433echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000434echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000435echo " --disable-curses disable curses output"
balrogfb599c92008-09-28 23:49:55 +0000436echo " --disable-bluez disable bluez stack connectivity"
pbrookbd0c5662008-05-29 14:34:11 +0000437echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000438echo " --enable-system enable all system emulation targets"
439echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000440echo " --enable-linux-user enable all linux usermode emulation targets"
441echo " --disable-linux-user disable all linux usermode emulation targets"
442echo " --enable-darwin-user enable all darwin usermode emulation targets"
443echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000444echo " --fmod-lib path to FMOD library"
445echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000446echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000447echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000448echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000449echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000450echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000451echo ""
ths5bf08932006-12-23 00:33:26 +0000452echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000453exit 1
454fi
455
bellard7d132992003-03-06 23:23:54 +0000456cc="${cross_prefix}${cc}"
457ar="${cross_prefix}${ar}"
458strip="${cross_prefix}${strip}"
459
pbrook064aae12006-05-08 00:51:44 +0000460# check that the C compiler works.
461cat > $TMPC <<EOF
462int main(void) {}
463EOF
464
pbrookdb7287e2008-02-03 16:27:13 +0000465if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000466 : C compiler works ok
467else
468 echo "ERROR: \"$cc\" either does not exist or does not work"
469 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000470fi
471
aliguoricd01b4a2008-08-21 19:25:45 +0000472# check compiler to see if we're on mingw32
473cat > $TMPC <<EOF
474#include <windows.h>
475#ifndef _WIN32
476#error not windows
477#endif
478int main(void) {}
479EOF
480
481if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
482 mingw32="yes"
483fi
484
bellard67b915a2004-03-31 23:37:16 +0000485if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000486 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000487 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000488 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000489 linux_user="no"
490fi
491
aliguori997306f2008-09-26 15:52:17 +0000492if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
aliguoricd01b4a2008-08-21 19:25:45 +0000493 AIOLIBS=
aliguori997306f2008-09-26 15:52:17 +0000494elif [ "$bsd" = "yes" ]; then
495 AIOLIBS="-lpthread"
aliguoricd01b4a2008-08-21 19:25:45 +0000496else
497 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
498 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000499fi
500
ths5fafdf22007-09-16 21:08:06 +0000501# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000502if test "$check_gcc" = "yes" ; then
503 cat > $TMPC <<EOF
504#if __GNUC__ < 4
505#error gcc3
506#endif
507int main(){return 0;}
508EOF
pbrookdb7287e2008-02-03 16:27:13 +0000509 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000510 echo "WARNING: \"$cc\" looks like gcc 4.x"
511 found_compat_cc="no"
512 if test "$gcc3_search" = "yes" ; then
513 echo "Looking for gcc 3.x"
514 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000515 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000516 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000517 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000518 found_compat_cc="yes"
519 break
520 fi
521 done
522 if test "$found_compat_cc" = "no" ; then
523 echo "gcc 3.x not found!"
524 fi
525 fi
526 if test "$found_compat_cc" = "no" ; then
527 echo "QEMU is known to have problems when compiled with gcc 4.x"
528 echo "It is recommended that you use gcc 3.x to build QEMU"
529 echo "To use this compiler anyway, configure with --disable-gcc-check"
530 exit 1;
531 fi
532 fi
533fi
534
bellardec530c82006-04-25 22:36:06 +0000535#
536# Solaris specific configure tool chain decisions
537#
538if test "$solaris" = "yes" ; then
539 #
540 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
541 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000542 #
bellardec530c82006-04-25 22:36:06 +0000543 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
544 solgcc=`which $cc`
545 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
546 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
547 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
548 echo "or get the latest patch from SunSolve for gcc"
549 exit 1
550 fi
551 fi
552 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
553 if test -z "$solinst" ; then
554 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
555 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
556 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
557 exit 1
558 fi
559 if test "$solinst" = "/usr/sbin/install" ; then
560 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
561 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
562 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
563 exit 1
564 fi
bellardec530c82006-04-25 22:36:06 +0000565 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
566 if test -z "$sol_ar" ; then
567 echo "Error: No path includes ar"
568 if test -f /usr/ccs/bin/ar ; then
569 echo "Add /usr/ccs/bin to your path and rerun configure"
570 fi
571 exit 1
572 fi
ths5fafdf22007-09-16 21:08:06 +0000573fi
bellardec530c82006-04-25 22:36:06 +0000574
575
bellard5327cf42005-01-10 23:18:50 +0000576if test -z "$target_list" ; then
577# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000578 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000579 target_list="\
580i386-softmmu \
581x86_64-softmmu \
582arm-softmmu \
583cris-softmmu \
584m68k-softmmu \
585mips-softmmu \
586mipsel-softmmu \
587mips64-softmmu \
588mips64el-softmmu \
589ppc-softmmu \
590ppcemb-softmmu \
591ppc64-softmmu \
592sh4-softmmu \
593sh4eb-softmmu \
594sparc-softmmu \
595"
pbrook0a8e90f2006-03-19 14:54:16 +0000596 fi
bellard5327cf42005-01-10 23:18:50 +0000597# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000598 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000599 target_list="${target_list}\
600i386-linux-user \
601x86_64-linux-user \
602alpha-linux-user \
603arm-linux-user \
604armeb-linux-user \
605cris-linux-user \
606m68k-linux-user \
607mips-linux-user \
608mipsel-linux-user \
609ppc-linux-user \
610ppc64-linux-user \
611ppc64abi32-linux-user \
612sh4-linux-user \
613sh4eb-linux-user \
614sparc-linux-user \
615sparc64-linux-user \
616sparc32plus-linux-user \
617"
ths831b7822007-01-18 20:06:33 +0000618 fi
619# the following are Darwin specific
620 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000621 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000622 fi
bellard6e20a452005-06-05 15:56:02 +0000623else
pbrookb1a550a2006-04-16 13:28:56 +0000624 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000625fi
pbrook0a8e90f2006-03-19 14:54:16 +0000626if test -z "$target_list" ; then
627 echo "No targets enabled"
628 exit 1
629fi
bellard5327cf42005-01-10 23:18:50 +0000630
bellard7d132992003-03-06 23:23:54 +0000631if test -z "$cross_prefix" ; then
632
633# ---
634# big/little endian test
635cat > $TMPC << EOF
636#include <inttypes.h>
637int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000638 volatile uint32_t i=0x01234567;
639 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000640}
641EOF
642
pbrookdb7287e2008-02-03 16:27:13 +0000643if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000644$TMPE && bigendian="yes"
645else
646echo big/little test failed
647fi
648
649else
650
651# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000652if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000653 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000654 -o "$cpu" = "m68k" \
655 -o "$cpu" = "mips" \
656 -o "$cpu" = "mips64" \
657 -o "$cpu" = "powerpc" \
658 -o "$cpu" = "s390" \
659 -o "$cpu" = "sparc" \
660 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000661 bigendian="yes"
662fi
663
664fi
665
bellardb6853692005-06-05 17:10:39 +0000666# host long bits test
667hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000668if test "$cpu" = "x86_64" \
669 -o "$cpu" = "alpha" \
670 -o "$cpu" = "ia64" \
671 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000672 hostlongbits="64"
673fi
674
malc810260a2008-07-23 19:17:46 +0000675# ppc specific hostlongbits selection
676if test "$cpu" = "powerpc" ; then
malc9d56d2d2008-09-30 19:44:32 +0000677 if $cc $ARCH_CFLAGS -dM -E - -o $TMPI 2>/dev/null </dev/null; then
678 grep -q __powerpc64__ $TMPI && hostlongbits=64
malc810260a2008-07-23 19:17:46 +0000679 else
680 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000681 exit 1
malc810260a2008-07-23 19:17:46 +0000682 fi
683fi
684
bellarde8cd23d2003-06-25 16:08:13 +0000685# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000686cat > $TMPC <<EOF
687int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000688}
689EOF
690
pbrookbd0c5662008-05-29 14:34:11 +0000691# Check host NPTL support
692cat > $TMPC <<EOF
693#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000694#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000695void foo()
696{
697#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
698#error bork
699#endif
700}
701EOF
702
703if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
704 :
705else
706 nptl="no"
707fi
708
bellard11d9f692004-04-02 20:55:59 +0000709##########################################
710# SDL probe
711
712sdl_too_old=no
713
714if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000715 sdl_config="sdl-config"
716 sdl=no
717 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000718
719cat > $TMPC << EOF
720#include <SDL.h>
721#undef main /* We don't want SDL to override our main() */
722int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
723EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000724 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
725 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
726 if test "$_sdlversion" -lt 121 ; then
727 sdl_too_old=yes
728 else
729 if test "$cocoa" = "no" ; then
730 sdl=yes
731 fi
732 fi
733
734 # static link with sdl ?
735 if test "$sdl" = "yes" ; then
736 aa="no"
737 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
738 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
739 if [ "$aa" = "yes" ] ; then
740 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000741 fi
bellard11d9f692004-04-02 20:55:59 +0000742
aliguoricd01b4a2008-08-21 19:25:45 +0000743 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
744 sdl_static=yes
745 fi
746 fi # static link
747 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000748else
ths069b0bd2007-07-12 00:27:15 +0000749 # Make sure to disable cocoa if sdl was set
750 if test "$sdl" = "yes" ; then
751 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000752 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000753 fi
bellarda6e022a2004-04-02 21:55:47 +0000754fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000755
ths8f28f3f2007-01-05 21:25:54 +0000756##########################################
ths8d5d2d42007-08-25 01:37:51 +0000757# VNC TLS detection
758if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000759cat > $TMPC <<EOF
760#include <gnutls/gnutls.h>
761int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
762EOF
763 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
764 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
765 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
766 $vnc_tls_libs 2> /dev/null ; then
767 :
768 else
769 vnc_tls="no"
770 fi
ths8d5d2d42007-08-25 01:37:51 +0000771fi
772
773##########################################
ths8a16d272008-07-19 09:56:24 +0000774# vde libraries probe
775if test "$vde" = "yes" ; then
776 cat > $TMPC << EOF
777#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000778int main(void)
779{
780 struct vde_open_args a = {0, 0, 0};
781 vde_open("", "", &a);
782 return 0;
783}
ths8a16d272008-07-19 09:56:24 +0000784EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000785 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000786 :
787 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000788 vde="no"
ths8a16d272008-07-19 09:56:24 +0000789 fi
790fi
791
792##########################################
malcc2de5c92008-06-28 19:13:06 +0000793# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000794
malcc2de5c92008-06-28 19:13:06 +0000795audio_drv_probe()
796{
797 drv=$1
798 hdr=$2
799 lib=$3
800 exp=$4
801 cfl=$5
802 cat > $TMPC << EOF
803#include <$hdr>
804int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000805EOF
malcc2de5c92008-06-28 19:13:06 +0000806 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
807 :
808 else
809 echo
810 echo "Error: $drv check failed"
811 echo "Make sure to have the $drv libs and headers installed."
812 echo
813 exit 1
814 fi
815}
816
malc2fa7d3b2008-07-29 12:58:44 +0000817audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000818for drv in $audio_drv_list; do
819 case $drv in
820 alsa)
821 audio_drv_probe $drv alsa/asoundlib.h -lasound \
822 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
823 ;;
824
825 fmod)
826 if test -z $fmod_lib || test -z $fmod_inc; then
827 echo
828 echo "Error: You must specify path to FMOD library and headers"
829 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
830 echo
831 exit 1
832 fi
833 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
834 ;;
835
836 esd)
837 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
838 ;;
malcb8e59f12008-07-02 21:03:08 +0000839
840 pa)
841 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
842 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
843 ;;
844
blueswir12f6a1ab2008-08-21 18:00:53 +0000845 oss|sdl|core|wav|dsound)
846 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
847 ;;
848
malce4c63a62008-07-19 16:15:16 +0000849 *)
malc1c9b2a52008-07-19 16:57:30 +0000850 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000851 echo
852 echo "Error: Unknown driver '$drv' selected"
853 echo "Possible drivers are: $audio_possible_drivers"
854 echo
855 exit 1
856 }
857 ;;
malcc2de5c92008-06-28 19:13:06 +0000858 esac
859done
ths8f28f3f2007-01-05 21:25:54 +0000860
balrog4d3b6f62008-02-10 16:33:14 +0000861##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000862# BrlAPI probe
863
864if test -z "$brlapi" ; then
865 brlapi=no
866cat > $TMPC << EOF
867#include <brlapi.h>
868int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
869EOF
aurel32a40e56d2008-05-04 00:50:25 +0000870 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000871 brlapi=yes
872 fi # brlapi compile test
873fi # -z $brlapi
874
875##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000876# curses probe
877
878if test "$curses" = "yes" ; then
879 curses=no
880 cat > $TMPC << EOF
881#include <curses.h>
882int main(void) { return curses_version(); }
883EOF
pbrookaf896aa2008-03-23 00:47:42 +0000884 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000885 curses=yes
886 fi
887fi # test "$curses"
888
blueswir1414f0da2008-08-15 18:20:52 +0000889##########################################
balrogfb599c92008-09-28 23:49:55 +0000890# bluez support probe
891if test "$bluez" = "yes" ; then
892 `pkg-config bluez` || bluez="no"
893fi
894if test "$bluez" = "yes" ; then
balroge820e3f2008-09-30 02:27:44 +0000895 cat > $TMPC << EOF
896#include <bluetooth/bluetooth.h>
897int main(void) { return bt_error(0); }
898EOF
balrogfb599c92008-09-28 23:49:55 +0000899 bluez_cflags=`pkg-config --cflags bluez`
900 bluez_libs=`pkg-config --libs bluez`
balroge820e3f2008-09-30 02:27:44 +0000901 if $cc $ARCH_CFLAGS -o $TMPE ${OS_FLAGS} $bluez_cflags $TMPC \
902 $bluez_libs 2> /dev/null ; then
903 :
904 else
905 bluez="no"
906 fi
balrogfb599c92008-09-28 23:49:55 +0000907fi
908
909##########################################
blueswir1414f0da2008-08-15 18:20:52 +0000910# AIO probe
911if test "$aio" = "yes" ; then
912 aio=no
913 cat > $TMPC << EOF
914#include <aio.h>
915int main(void) { return aio_write(NULL); }
916EOF
917 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
918 aio=yes
919 fi
920fi
921
aliguori27463102008-09-27 20:58:43 +0000922##########################################
923# signalfd probe
924cat > $TMPC << EOF
925#define _GNU_SOURCE
926#include <unistd.h>
927#include <sys/syscall.h>
928#include <signal.h>
929int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
930EOF
931
932if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
933 signalfd=yes
934fi
935
936##########################################
937# eventfd probe
938cat > $TMPC << EOF
939#define _GNU_SOURCE
940#include <unistd.h>
941#include <sys/syscall.h>
942int main(void) { return syscall(SYS_eventfd, 0); }
943EOF
944
945if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
946 eventfd=yes
947fi
948
pbrookcc8ae6d2006-04-23 17:57:59 +0000949# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000950if [ -x "`which texi2html 2>/dev/null`" ] && \
951 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000952 build_docs="yes"
953fi
954
bellard11d9f692004-04-02 20:55:59 +0000955if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000956 if test -z "$prefix" ; then
957 prefix="/c/Program Files/Qemu"
958 fi
959 mansuffix=""
960 datasuffix=""
961 docsuffix=""
962 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000963else
pbrook308c3592007-02-27 00:52:01 +0000964 if test -z "$prefix" ; then
965 prefix="/usr/local"
966 fi
967 mansuffix="/share/man"
968 datasuffix="/share/qemu"
969 docsuffix="/share/doc/qemu"
970 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000971fi
bellard5a671352003-10-01 00:13:48 +0000972
bellard43ce4df2003-06-09 19:53:12 +0000973echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000974echo "BIOS directory $prefix$datasuffix"
975echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000976if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000977echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000978echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000979fi
bellard5a671352003-10-01 00:13:48 +0000980echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000981echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000982echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000983echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000984echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000985echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000986echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000987echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000988echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000989echo "gprof enabled $gprof"
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
bellard7d132992003-03-06 23:23:54 +00001138if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001139 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1140 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1141fi
bellardb6853692005-06-05 17:10:39 +00001142echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001143if test "$mingw32" = "yes" ; then
1144 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001145 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001146else
1147 cat > $TMPC << EOF
1148#include <byteswap.h>
1149int main(void) { return bswap_32(0); }
1150EOF
pbrookdb7287e2008-02-03 16:27:13 +00001151 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001152 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1153 fi
bellard67b915a2004-03-31 23:37:16 +00001154fi
blueswir1128ab2f2008-08-15 18:33:42 +00001155
1156if [ "$openbsd" = "yes" ] ; then
1157 echo "#define ENOTSUP 4096" >> $config_h
1158fi
1159
bellard83fb7ad2004-07-05 21:25:26 +00001160if test "$darwin" = "yes" ; then
1161 echo "CONFIG_DARWIN=yes" >> $config_mak
1162 echo "#define CONFIG_DARWIN 1" >> $config_h
1163fi
bellardec530c82006-04-25 22:36:06 +00001164if test "$solaris" = "yes" ; then
1165 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001166 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001167 if test "$needs_libsunmath" = "yes" ; then
1168 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1169 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1170 fi
bellardec530c82006-04-25 22:36:06 +00001171fi
blueswir131422552007-04-16 18:27:06 +00001172if test -n "$sparc_cpu"; then
1173 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1174 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1175fi
bellard67b915a2004-03-31 23:37:16 +00001176if test "$gdbstub" = "yes" ; then
1177 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1178 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1179fi
bellard97a847b2003-08-10 21:36:04 +00001180if test "$gprof" = "yes" ; then
1181 echo "TARGET_GPROF=yes" >> $config_mak
1182 echo "#define HAVE_GPROF 1" >> $config_h
1183fi
1184if test "$static" = "yes" ; then
1185 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001186 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001187fi
bellard05c2a3e2006-02-08 22:39:17 +00001188if test $profiler = "yes" ; then
1189 echo "#define CONFIG_PROFILER 1" >> $config_h
1190fi
bellardc20709a2004-04-21 23:27:19 +00001191if test "$slirp" = "yes" ; then
1192 echo "CONFIG_SLIRP=yes" >> $config_mak
1193 echo "#define CONFIG_SLIRP 1" >> $config_h
1194fi
ths8a16d272008-07-19 09:56:24 +00001195if test "$vde" = "yes" ; then
1196 echo "CONFIG_VDE=yes" >> $config_mak
1197 echo "#define CONFIG_VDE 1" >> $config_h
1198 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1199fi
malc0c58ac12008-06-25 21:04:05 +00001200for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001201 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001202 echo "$def=yes" >> $config_mak
1203 echo "#define $def 1" >> $config_h
1204done
1205echo "#define AUDIO_DRIVERS \\" >> $config_h
1206for drv in $audio_drv_list; do
1207 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001208 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001209 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001210 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001211 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1212 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001213 elif test "$drv" = "oss"; then
1214 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001215 fi
1216done
1217echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001218if test "$mixemu" = "yes" ; then
1219 echo "CONFIG_MIXEMU=yes" >> $config_mak
1220 echo "#define CONFIG_MIXEMU 1" >> $config_h
1221fi
ths8d5d2d42007-08-25 01:37:51 +00001222if test "$vnc_tls" = "yes" ; then
1223 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1224 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1225 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1226 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1227fi
pbrookb1a550a2006-04-16 13:28:56 +00001228qemu_version=`head $source_path/VERSION`
1229echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001230echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001231
1232echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001233if [ "$source_path_used" = "yes" ]; then
1234 echo "VPATH=$source_path" >> $config_mak
1235fi
bellard97a847b2003-08-10 21:36:04 +00001236echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001237if [ "$build_docs" = "yes" ] ; then
1238 echo "BUILD_DOCS=yes" >> $config_mak
1239fi
bellard49ecc3f2007-11-07 19:25:15 +00001240if test "$static" = "yes"; then
1241 sdl1=$sdl_static
1242else
1243 sdl1=$sdl
1244fi
1245if test "$sdl1" = "yes" ; then
1246 echo "#define CONFIG_SDL 1" >> $config_h
1247 echo "CONFIG_SDL=yes" >> $config_mak
1248 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1249 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1250 else
1251 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1252 fi
1253 if [ "${aa}" = "yes" ] ; then
1254 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1255 else
1256 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1257 fi
1258fi
1259if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001260 echo "#define CONFIG_COCOA 1" >> $config_h
1261 echo "CONFIG_COCOA=yes" >> $config_mak
1262fi
1263if test "$curses" = "yes" ; then
1264 echo "#define CONFIG_CURSES 1" >> $config_h
1265 echo "CONFIG_CURSES=yes" >> $config_mak
1266 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001267fi
aurel322e4d9fb2008-04-08 06:01:02 +00001268if test "$brlapi" = "yes" ; then
1269 echo "CONFIG_BRLAPI=yes" >> $config_mak
1270 echo "#define CONFIG_BRLAPI 1" >> $config_h
1271 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1272fi
balrogfb599c92008-09-28 23:49:55 +00001273if test "$bluez" = "yes" ; then
1274 echo "CONFIG_BLUEZ=yes" >> $config_mak
1275 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1276 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1277 echo "#define CONFIG_BLUEZ 1" >> $config_h
1278fi
blueswir1414f0da2008-08-15 18:20:52 +00001279if test "$aio" = "yes" ; then
1280 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001281 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001282fi
aliguori27463102008-09-27 20:58:43 +00001283if test "$signalfd" = "yes" ; then
1284 echo "#define CONFIG_signalfd 1" >> $config_h
1285fi
1286if test "$eventfd" = "yes" ; then
1287 echo "#define CONFIG_eventfd 1" >> $config_h
1288fi
bellard97a847b2003-08-10 21:36:04 +00001289
bellard83fb7ad2004-07-05 21:25:26 +00001290# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001291if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001292 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001293 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001294 echo "#define _BSD 1" >> $config_h
1295fi
1296
pbrookc5937222006-05-14 11:30:38 +00001297echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1298
pbrookc39e3332007-09-22 16:49:14 +00001299tools=
1300if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1301 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001302 if [ "$linux" = "yes" ] ; then
1303 tools="qemu-nbd\$(EXESUF) $tools"
1304 fi
pbrookc39e3332007-09-22 16:49:14 +00001305fi
1306echo "TOOLS=$tools" >> $config_mak
1307
ths15d9ca02007-07-31 23:07:32 +00001308test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1309
bellard1d14ffa2005-10-30 18:58:22 +00001310for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001311target_dir="$target"
1312config_mak=$target_dir/config.mak
1313config_h=$target_dir/config.h
1314target_cpu=`echo $target | cut -d '-' -f 1`
1315target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001316[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001317[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1318[ "$target_cpu" = "mips" ] && target_bigendian=yes
1319[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1320[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001321[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001322[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001323[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001324[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001325[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001326[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1327[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1328[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001329target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001330target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001331target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001332target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001333case "$target" in
1334 ${target_cpu}-softmmu)
1335 target_softmmu="yes"
1336 ;;
1337 ${target_cpu}-linux-user)
1338 target_user_only="yes"
1339 target_linux_user="yes"
1340 ;;
1341 ${target_cpu}-darwin-user)
1342 target_user_only="yes"
1343 target_darwin_user="yes"
1344 ;;
1345 *)
1346 echo "ERROR: Target '$target' not recognised"
1347 exit 1
1348 ;;
1349esac
ths831b7822007-01-18 20:06:33 +00001350
bellard97ccc682005-07-02 13:32:17 +00001351if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001352 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001353 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001354 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001355 echo "Note that this will disable all output from the virtual graphics card"
1356 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001357 exit 1;
1358fi
1359
bellard7c1f25b2004-04-22 00:02:08 +00001360#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001361
ths15d9ca02007-07-31 23:07:32 +00001362test -f $config_h && mv $config_h ${config_h}~
1363
bellard97a847b2003-08-10 21:36:04 +00001364mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001365mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001366mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001367if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001368 mkdir -p $target_dir/nwfpe
1369fi
1370
bellardec530c82006-04-25 22:36:06 +00001371#
1372# don't use ln -sf as not all "ln -sf" over write the file/link
1373#
1374rm -f $target_dir/Makefile
1375ln -s $source_path/Makefile.target $target_dir/Makefile
1376
bellard97a847b2003-08-10 21:36:04 +00001377
1378echo "# Automatically generated by configure - do not modify" > $config_mak
1379echo "/* Automatically generated by configure - do not modify */" > $config_h
1380
1381
1382echo "include ../config-host.mak" >> $config_mak
1383echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001384
pbrooke5fe0c52006-06-11 13:32:59 +00001385bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001386elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001387target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001388interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1389echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
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"
aurel322408a522008-04-20 20:19:44 +00001429 ;;
1430 cris)
1431 echo "TARGET_ARCH=cris" >> $config_mak
1432 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1433 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001434 ;;
1435 m68k)
1436 echo "TARGET_ARCH=m68k" >> $config_mak
1437 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1438 echo "#define TARGET_M68K 1" >> $config_h
1439 bflt="yes"
1440 ;;
1441 mips|mipsel)
1442 echo "TARGET_ARCH=mips" >> $config_mak
1443 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1444 echo "#define TARGET_MIPS 1" >> $config_h
1445 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1446 ;;
1447 mipsn32|mipsn32el)
1448 echo "TARGET_ARCH=mipsn32" >> $config_mak
1449 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1450 echo "#define TARGET_MIPS 1" >> $config_h
1451 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1452 ;;
1453 mips64|mips64el)
1454 echo "TARGET_ARCH=mips64" >> $config_mak
1455 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1456 echo "#define TARGET_MIPS 1" >> $config_h
1457 echo "#define TARGET_MIPS64 1" >> $config_h
1458 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1459 ;;
1460 ppc)
1461 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001462 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001463 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1464 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001465 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001466 ;;
1467 ppcemb)
1468 echo "TARGET_ARCH=ppcemb" >> $config_mak
1469 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001470 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001471 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1472 echo "#define TARGET_PPC 1" >> $config_h
1473 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001474 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001475 ;;
1476 ppc64)
1477 echo "TARGET_ARCH=ppc64" >> $config_mak
1478 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001479 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001480 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1481 echo "#define TARGET_PPC 1" >> $config_h
1482 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001483 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001484 ;;
1485 ppc64abi32)
1486 echo "TARGET_ARCH=ppc64" >> $config_mak
1487 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1488 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001489 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001490 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1491 echo "#define TARGET_PPC 1" >> $config_h
1492 echo "#define TARGET_PPC64 1" >> $config_h
1493 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001494 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001495 ;;
1496 sh4|sh4eb)
1497 echo "TARGET_ARCH=sh4" >> $config_mak
1498 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1499 echo "#define TARGET_SH4 1" >> $config_h
1500 bflt="yes"
aurel320b6d3ae2008-09-15 07:43:43 +00001501 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001502 ;;
1503 sparc)
1504 echo "TARGET_ARCH=sparc" >> $config_mak
1505 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1506 echo "#define TARGET_SPARC 1" >> $config_h
1507 ;;
1508 sparc64)
1509 echo "TARGET_ARCH=sparc64" >> $config_mak
1510 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1511 echo "#define TARGET_SPARC 1" >> $config_h
1512 echo "#define TARGET_SPARC64 1" >> $config_h
1513 elfload32="yes"
1514 ;;
1515 sparc32plus)
1516 echo "TARGET_ARCH=sparc64" >> $config_mak
1517 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1518 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1519 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1520 echo "#define TARGET_SPARC 1" >> $config_h
1521 echo "#define TARGET_SPARC64 1" >> $config_h
1522 echo "#define TARGET_ABI32 1" >> $config_h
1523 ;;
1524 *)
1525 echo "Unsupported target CPU"
1526 exit 1
1527 ;;
1528esac
bellardde83cd02003-06-15 20:25:43 +00001529if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001530 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1531 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1532fi
1533if test "$target_softmmu" = "yes" ; then
1534 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1535 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001536fi
bellard997344f2003-10-27 21:10:39 +00001537if test "$target_user_only" = "yes" ; then
1538 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1539 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1540fi
ths831b7822007-01-18 20:06:33 +00001541if test "$target_linux_user" = "yes" ; then
1542 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1543 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1544fi
1545if test "$target_darwin_user" = "yes" ; then
1546 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1547 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1548fi
bellardde83cd02003-06-15 20:25:43 +00001549
aurel320938cda2008-04-11 21:36:06 +00001550if test "$target_cpu" = "arm" \
1551 -o "$target_cpu" = "armeb" \
1552 -o "$target_cpu" = "m68k" \
1553 -o "$target_cpu" = "mips" \
1554 -o "$target_cpu" = "mipsel" \
1555 -o "$target_cpu" = "mipsn32" \
1556 -o "$target_cpu" = "mipsn32el" \
1557 -o "$target_cpu" = "mips64" \
1558 -o "$target_cpu" = "mips64el" \
1559 -o "$target_cpu" = "sparc" \
1560 -o "$target_cpu" = "sparc64" \
1561 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001562 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1563 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1564fi
pbrooke5fe0c52006-06-11 13:32:59 +00001565if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1566 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1567 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1568fi
pbrookbd0c5662008-05-29 14:34:11 +00001569if test "$target_user_only" = "yes" \
1570 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1571 echo "#define USE_NPTL 1" >> $config_h
1572fi
blueswir1cb33da52007-10-09 16:34:29 +00001573# 32 bit ELF loader in addition to native 64 bit loader?
1574if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1575 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1576 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1577fi
bellard5b0753e2005-03-01 21:37:28 +00001578
ths15d9ca02007-07-31 23:07:32 +00001579test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1580
bellard97a847b2003-08-10 21:36:04 +00001581done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001582
1583# build tree in object directory if source path is different from current one
1584if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001585 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001586 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001587 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001588 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001589 for dir in $DIRS ; do
1590 mkdir -p $dir
1591 done
bellardec530c82006-04-25 22:36:06 +00001592 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001593 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001594 rm -f $f
1595 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001596 done
1597fi
bellard7d132992003-03-06 23:23:54 +00001598
malc9d56d2d2008-09-30 19:44:32 +00001599rm -f $TMPO $TMPC $TMPE $TMPS $TMPI