blob: 3859bc6c1d307bd200d6f7da7e748e0ffb07f478 [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"
bellard7d132992003-03-06 23:23:54 +000018
19# default parameters
bellard11d9f692004-04-02 20:55:59 +000020prefix=""
bellard1e43adf2003-09-30 20:54:24 +000021interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +000022static="no"
bellard7d132992003-03-06 23:23:54 +000023cross_prefix=""
24cc="gcc"
pbrook328a4242006-12-19 03:31:34 +000025gcc3_search="yes"
balrogfe8f78e2007-10-31 01:03:28 +000026gcc3_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 +000027audio_drv_list=""
28audio_card_list=""
bellard7d132992003-03-06 23:23:54 +000029host_cc="gcc"
30ar="ar"
31make="make"
pbrook6a882642006-04-17 13:57:12 +000032install="install"
bellard7d132992003-03-06 23:23:54 +000033strip="strip"
34cpu=`uname -m`
bellard5327cf42005-01-10 23:18:50 +000035target_list=""
bellard7d132992003-03-06 23:23:54 +000036case "$cpu" in
37 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +000038 cpu="i386"
bellard7d132992003-03-06 23:23:54 +000039 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000040 x86_64|amd64)
41 cpu="x86_64"
42 ;;
43 alpha)
44 cpu="alpha"
45 ;;
bellardba680552005-03-13 09:49:52 +000046 armv*b)
bellard808c4952004-12-19 23:33:47 +000047 cpu="armv4b"
48 ;;
bellardba680552005-03-13 09:49:52 +000049 armv*l)
bellard7d132992003-03-06 23:23:54 +000050 cpu="armv4l"
51 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000052 cris)
53 cpu="cris"
bellard7d132992003-03-06 23:23:54 +000054 ;;
aurel32f54b3f92008-04-12 20:14:54 +000055 parisc|parisc64)
56 cpu="hppa"
57 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000058 ia64)
59 cpu="ia64"
60 ;;
61 m68k)
62 cpu="m68k"
bellard7d132992003-03-06 23:23:54 +000063 ;;
64 mips)
65 cpu="mips"
66 ;;
thsfbe4f652007-04-01 11:16:48 +000067 mips64)
68 cpu="mips64"
69 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000070 "Power Macintosh"|ppc|ppc64)
71 cpu="powerpc"
thse7daa602007-10-08 13:38:27 +000072 ;;
ths0e7b8a92007-08-01 00:09:31 +000073 s390*)
bellardfb3e5842003-03-29 17:32:36 +000074 cpu="s390"
75 ;;
blueswir131422552007-04-16 18:27:06 +000076 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +000077 cpu="sparc"
78 ;;
79 sparc64)
80 cpu="sparc64"
81 ;;
bellard7d132992003-03-06 23:23:54 +000082 *)
83 cpu="unknown"
84 ;;
85esac
86gprof="no"
87bigendian="no"
bellard67b915a2004-03-31 23:37:16 +000088mingw32="no"
89EXESUF=""
90gdbstub="yes"
bellard443f1372004-06-04 11:13:20 +000091slirp="yes"
aliguorie0e6c8c02008-07-23 18:14:33 +000092vde="yes"
bellard102a52e2004-11-14 19:57:29 +000093fmod_lib=""
94fmod_inc=""
blueswir12f6a1ab2008-08-21 18:00:53 +000095oss_lib=""
ths8d5d2d42007-08-25 01:37:51 +000096vnc_tls="yes"
pbrookb1a550a2006-04-16 13:28:56 +000097bsd="no"
bellard5327cf42005-01-10 23:18:50 +000098linux="no"
bellardc9ec1fe2005-02-10 21:55:30 +000099kqemu="no"
bellard05c2a3e2006-02-08 22:39:17 +0000100profiler="no"
bellard5b0753e2005-03-01 21:37:28 +0000101cocoa="no"
bellard97ccc682005-07-02 13:32:17 +0000102check_gfx="yes"
bellard1aff3812005-11-02 22:30:45 +0000103check_gcc="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000104softmmu="yes"
ths831b7822007-01-18 20:06:33 +0000105linux_user="no"
106darwin_user="no"
pbrookcc8ae6d2006-04-23 17:57:59 +0000107build_docs="no"
pbrookc5937222006-05-14 11:30:38 +0000108uname_release=""
balrog4d3b6f62008-02-10 16:33:14 +0000109curses="yes"
blueswir1414f0da2008-08-15 18:20:52 +0000110aio="yes"
pbrookbd0c5662008-05-29 14:34:11 +0000111nptl="yes"
malc8ff9cbf2008-06-23 18:33:30 +0000112mixemu="no"
balrogfb599c92008-09-28 23:49:55 +0000113bluez="yes"
aliguori27463102008-09-27 20:58:43 +0000114signalfd="no"
115eventfd="no"
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 ;;
ths8d5d2d42007-08-25 01:37:51 +0000287 --disable-vnc-tls) vnc_tls="no"
288 ;;
bellard443f1372004-06-04 11:13:20 +0000289 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000290 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000291 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000292 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000293 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000294 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000295 --disable-brlapi) brlapi="no"
296 ;;
balrogfb599c92008-09-28 23:49:55 +0000297 --disable-bluez) bluez="no"
298 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000299 --enable-profiler) profiler="yes"
300 ;;
malcc2de5c92008-06-28 19:13:06 +0000301 --enable-cocoa)
302 cocoa="yes" ;
303 sdl="no" ;
304 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000305 ;;
bellard97ccc682005-07-02 13:32:17 +0000306 --disable-gfx-check) check_gfx="no"
307 ;;
bellard1aff3812005-11-02 22:30:45 +0000308 --disable-gcc-check) check_gcc="no"
309 ;;
pbrookcad25d62006-03-19 16:31:11 +0000310 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000311 ;;
pbrookcad25d62006-03-19 16:31:11 +0000312 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000313 ;;
ths831b7822007-01-18 20:06:33 +0000314 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000315 ;;
ths831b7822007-01-18 20:06:33 +0000316 --enable-linux-user) linux_user="yes"
317 ;;
318 --disable-darwin-user) darwin_user="no"
319 ;;
320 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000321 ;;
pbrookc5937222006-05-14 11:30:38 +0000322 --enable-uname-release=*) uname_release="$optarg"
323 ;;
blueswir131422552007-04-16 18:27:06 +0000324 --sparc_cpu=*)
325 sparc_cpu="$optarg"
326 case $sparc_cpu in
327 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
328 target_cpu="sparc"; cpu="sparc" ;;
329 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
330 target_cpu="sparc"; cpu="sparc" ;;
331 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
332 target_cpu="sparc64"; cpu="sparc64" ;;
333 *) echo "undefined SPARC architecture. Exiting";exit 1;;
334 esac
335 ;;
bellard85aa5182007-11-11 20:17:03 +0000336 --enable-werror) werror="yes"
337 ;;
338 --disable-werror) werror="no"
339 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000340 --disable-curses) curses="no"
341 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000342 --disable-nptl) nptl="no"
343 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000344 --enable-mixemu) mixemu="yes"
345 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000346 --disable-aio) aio="no"
347 ;;
balrog7f1559c2007-11-17 10:24:32 +0000348 *) echo "ERROR: unknown option $opt"; show_help="yes"
349 ;;
bellard7d132992003-03-06 23:23:54 +0000350 esac
351done
352
ths6f30fa82007-01-05 01:00:47 +0000353# default flags for all hosts
blueswir1ac41a622008-09-14 06:46:31 +0000354CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
355CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
ths6f30fa82007-01-05 01:00:47 +0000356LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000357if test "$werror" = "yes" ; then
358CFLAGS="$CFLAGS -Werror"
359fi
ths6f30fa82007-01-05 01:00:47 +0000360
blueswir149237ac2008-09-17 19:05:19 +0000361if ld --version 2>/dev/null | grep -q "GNU ld" ; then
362 LDFLAGS="$LDFLAGS -Wl,--warn-common"
363fi
364
blueswir131422552007-04-16 18:27:06 +0000365#
366# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
367# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
368#
bellard40293e52008-01-31 11:32:10 +0000369case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000370 sparc) if test -z "$sparc_cpu" ; then
371 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
372 ARCH_LDFLAGS="-m32"
373 else
374 ARCH_CFLAGS="${SP_CFLAGS}"
375 ARCH_LDFLAGS="${SP_LDFLAGS}"
376 fi
377 ;;
378 sparc64) if test -z "$sparc_cpu" ; then
379 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
380 ARCH_LDFLAGS="-m64"
381 else
382 ARCH_CFLAGS="${SP_CFLAGS}"
383 ARCH_LDFLAGS="${SP_LDFLAGS}"
384 fi
385 ;;
ths76d83bd2007-11-18 21:22:10 +0000386 s390)
387 ARCH_CFLAGS="-march=z900"
388 ;;
bellard40293e52008-01-31 11:32:10 +0000389 i386)
390 ARCH_CFLAGS="-m32"
391 ARCH_LDFLAGS="-m32"
392 ;;
393 x86_64)
394 ARCH_CFLAGS="-m64"
395 ARCH_LDFLAGS="-m64"
396 ;;
blueswir131422552007-04-16 18:27:06 +0000397esac
398
pbrookaf5db582006-04-08 14:26:41 +0000399if test x"$show_help" = x"yes" ; then
400cat << EOF
401
402Usage: configure [options]
403Options: [defaults in brackets after descriptions]
404
405EOF
406echo "Standard options:"
407echo " --help print this message"
408echo " --prefix=PREFIX install in PREFIX [$prefix]"
409echo " --interp-prefix=PREFIX where to find shared libraries, etc."
410echo " use %M for cpu name [$interp_prefix]"
411echo " --target-list=LIST set target list [$target_list]"
412echo ""
413echo "kqemu kernel acceleration support:"
414echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000415echo ""
416echo "Advanced options (experts only):"
417echo " --source-path=PATH path of source code [$source_path]"
418echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
419echo " --cc=CC use C compiler CC [$cc]"
420echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
421echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000422echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000423echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000424echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000425echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000426echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000427echo " --audio-drv-list=LIST set audio drivers list:"
428echo " Available drivers: $audio_possible_drivers"
429echo " --audio-card-list=LIST set list of additional emulated audio cards"
430echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000431echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000432echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000433echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000434echo " --disable-curses disable curses output"
balrogfb599c92008-09-28 23:49:55 +0000435echo " --disable-bluez disable bluez stack connectivity"
pbrookbd0c5662008-05-29 14:34:11 +0000436echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000437echo " --enable-system enable all system emulation targets"
438echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000439echo " --enable-linux-user enable all linux usermode emulation targets"
440echo " --disable-linux-user disable all linux usermode emulation targets"
441echo " --enable-darwin-user enable all darwin usermode emulation targets"
442echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000443echo " --fmod-lib path to FMOD library"
444echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000445echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000446echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000447echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000448echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000449echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000450echo ""
ths5bf08932006-12-23 00:33:26 +0000451echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000452exit 1
453fi
454
bellard7d132992003-03-06 23:23:54 +0000455cc="${cross_prefix}${cc}"
456ar="${cross_prefix}${ar}"
457strip="${cross_prefix}${strip}"
458
pbrook064aae12006-05-08 00:51:44 +0000459# check that the C compiler works.
460cat > $TMPC <<EOF
461int main(void) {}
462EOF
463
pbrookdb7287e2008-02-03 16:27:13 +0000464if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000465 : C compiler works ok
466else
467 echo "ERROR: \"$cc\" either does not exist or does not work"
468 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000469fi
470
aliguoricd01b4a2008-08-21 19:25:45 +0000471# check compiler to see if we're on mingw32
472cat > $TMPC <<EOF
473#include <windows.h>
474#ifndef _WIN32
475#error not windows
476#endif
477int main(void) {}
478EOF
479
480if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
481 mingw32="yes"
482fi
483
bellard67b915a2004-03-31 23:37:16 +0000484if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000485 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000486 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000487 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000488 linux_user="no"
489fi
490
aliguori997306f2008-09-26 15:52:17 +0000491if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
aliguoricd01b4a2008-08-21 19:25:45 +0000492 AIOLIBS=
aliguori997306f2008-09-26 15:52:17 +0000493elif [ "$bsd" = "yes" ]; then
494 AIOLIBS="-lpthread"
aliguoricd01b4a2008-08-21 19:25:45 +0000495else
496 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
497 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000498fi
499
ths5fafdf22007-09-16 21:08:06 +0000500# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000501if test "$check_gcc" = "yes" ; then
502 cat > $TMPC <<EOF
503#if __GNUC__ < 4
504#error gcc3
505#endif
506int main(){return 0;}
507EOF
pbrookdb7287e2008-02-03 16:27:13 +0000508 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000509 echo "WARNING: \"$cc\" looks like gcc 4.x"
510 found_compat_cc="no"
511 if test "$gcc3_search" = "yes" ; then
512 echo "Looking for gcc 3.x"
513 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000514 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000515 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000516 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000517 found_compat_cc="yes"
518 break
519 fi
520 done
521 if test "$found_compat_cc" = "no" ; then
522 echo "gcc 3.x not found!"
523 fi
524 fi
525 if test "$found_compat_cc" = "no" ; then
526 echo "QEMU is known to have problems when compiled with gcc 4.x"
527 echo "It is recommended that you use gcc 3.x to build QEMU"
528 echo "To use this compiler anyway, configure with --disable-gcc-check"
529 exit 1;
530 fi
531 fi
532fi
533
bellardec530c82006-04-25 22:36:06 +0000534#
535# Solaris specific configure tool chain decisions
536#
537if test "$solaris" = "yes" ; then
538 #
539 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
540 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000541 #
bellardec530c82006-04-25 22:36:06 +0000542 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
543 solgcc=`which $cc`
544 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
545 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
546 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
547 echo "or get the latest patch from SunSolve for gcc"
548 exit 1
549 fi
550 fi
551 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
552 if test -z "$solinst" ; then
553 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
554 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
555 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
556 exit 1
557 fi
558 if test "$solinst" = "/usr/sbin/install" ; then
559 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
560 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
561 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
562 exit 1
563 fi
bellardec530c82006-04-25 22:36:06 +0000564 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
565 if test -z "$sol_ar" ; then
566 echo "Error: No path includes ar"
567 if test -f /usr/ccs/bin/ar ; then
568 echo "Add /usr/ccs/bin to your path and rerun configure"
569 fi
570 exit 1
571 fi
ths5fafdf22007-09-16 21:08:06 +0000572fi
bellardec530c82006-04-25 22:36:06 +0000573
574
bellard5327cf42005-01-10 23:18:50 +0000575if test -z "$target_list" ; then
576# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000577 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000578 target_list="\
579i386-softmmu \
580x86_64-softmmu \
581arm-softmmu \
582cris-softmmu \
583m68k-softmmu \
584mips-softmmu \
585mipsel-softmmu \
586mips64-softmmu \
587mips64el-softmmu \
588ppc-softmmu \
589ppcemb-softmmu \
590ppc64-softmmu \
591sh4-softmmu \
592sh4eb-softmmu \
593sparc-softmmu \
594"
pbrook0a8e90f2006-03-19 14:54:16 +0000595 fi
bellard5327cf42005-01-10 23:18:50 +0000596# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000597 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000598 target_list="${target_list}\
599i386-linux-user \
600x86_64-linux-user \
601alpha-linux-user \
602arm-linux-user \
603armeb-linux-user \
604cris-linux-user \
605m68k-linux-user \
606mips-linux-user \
607mipsel-linux-user \
608ppc-linux-user \
609ppc64-linux-user \
610ppc64abi32-linux-user \
611sh4-linux-user \
612sh4eb-linux-user \
613sparc-linux-user \
614sparc64-linux-user \
615sparc32plus-linux-user \
616"
ths831b7822007-01-18 20:06:33 +0000617 fi
618# the following are Darwin specific
619 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000620 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000621 fi
bellard6e20a452005-06-05 15:56:02 +0000622else
pbrookb1a550a2006-04-16 13:28:56 +0000623 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000624fi
pbrook0a8e90f2006-03-19 14:54:16 +0000625if test -z "$target_list" ; then
626 echo "No targets enabled"
627 exit 1
628fi
bellard5327cf42005-01-10 23:18:50 +0000629
bellard7d132992003-03-06 23:23:54 +0000630if test -z "$cross_prefix" ; then
631
632# ---
633# big/little endian test
634cat > $TMPC << EOF
635#include <inttypes.h>
636int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000637 volatile uint32_t i=0x01234567;
638 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000639}
640EOF
641
pbrookdb7287e2008-02-03 16:27:13 +0000642if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000643$TMPE && bigendian="yes"
644else
645echo big/little test failed
646fi
647
648else
649
650# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000651if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000652 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000653 -o "$cpu" = "m68k" \
654 -o "$cpu" = "mips" \
655 -o "$cpu" = "mips64" \
656 -o "$cpu" = "powerpc" \
657 -o "$cpu" = "s390" \
658 -o "$cpu" = "sparc" \
659 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000660 bigendian="yes"
661fi
662
663fi
664
bellardb6853692005-06-05 17:10:39 +0000665# host long bits test
666hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000667if test "$cpu" = "x86_64" \
668 -o "$cpu" = "alpha" \
669 -o "$cpu" = "ia64" \
670 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000671 hostlongbits="64"
672fi
673
malc810260a2008-07-23 19:17:46 +0000674# ppc specific hostlongbits selection
675if test "$cpu" = "powerpc" ; then
676 cat > $TMPC <<EOF
677int main(void){return sizeof(long);}
678EOF
679
680 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
681 $TMPE
682 case $? in
683 4) hostlongbits="32";;
684 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000685 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000686 esac
687 else
688 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000689 exit 1
malc810260a2008-07-23 19:17:46 +0000690 fi
691fi
692
bellarde8cd23d2003-06-25 16:08:13 +0000693# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000694cat > $TMPC <<EOF
695int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000696}
697EOF
698
pbrookbd0c5662008-05-29 14:34:11 +0000699# Check host NPTL support
700cat > $TMPC <<EOF
701#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000702#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000703void foo()
704{
705#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
706#error bork
707#endif
708}
709EOF
710
711if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
712 :
713else
714 nptl="no"
715fi
716
bellard11d9f692004-04-02 20:55:59 +0000717##########################################
718# SDL probe
719
720sdl_too_old=no
721
722if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000723 sdl_config="sdl-config"
724 sdl=no
725 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000726
727cat > $TMPC << EOF
728#include <SDL.h>
729#undef main /* We don't want SDL to override our main() */
730int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
731EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000732 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
733 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
734 if test "$_sdlversion" -lt 121 ; then
735 sdl_too_old=yes
736 else
737 if test "$cocoa" = "no" ; then
738 sdl=yes
739 fi
740 fi
741
742 # static link with sdl ?
743 if test "$sdl" = "yes" ; then
744 aa="no"
745 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
746 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
747 if [ "$aa" = "yes" ] ; then
748 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000749 fi
bellard11d9f692004-04-02 20:55:59 +0000750
aliguoricd01b4a2008-08-21 19:25:45 +0000751 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
752 sdl_static=yes
753 fi
754 fi # static link
755 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000756else
ths069b0bd2007-07-12 00:27:15 +0000757 # Make sure to disable cocoa if sdl was set
758 if test "$sdl" = "yes" ; then
759 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000760 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000761 fi
bellarda6e022a2004-04-02 21:55:47 +0000762fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000763
ths8f28f3f2007-01-05 21:25:54 +0000764##########################################
ths8d5d2d42007-08-25 01:37:51 +0000765# VNC TLS detection
766if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000767cat > $TMPC <<EOF
768#include <gnutls/gnutls.h>
769int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
770EOF
771 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
772 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
773 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
774 $vnc_tls_libs 2> /dev/null ; then
775 :
776 else
777 vnc_tls="no"
778 fi
ths8d5d2d42007-08-25 01:37:51 +0000779fi
780
781##########################################
ths8a16d272008-07-19 09:56:24 +0000782# vde libraries probe
783if test "$vde" = "yes" ; then
784 cat > $TMPC << EOF
785#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000786int main(void)
787{
788 struct vde_open_args a = {0, 0, 0};
789 vde_open("", "", &a);
790 return 0;
791}
ths8a16d272008-07-19 09:56:24 +0000792EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000793 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000794 :
795 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000796 vde="no"
ths8a16d272008-07-19 09:56:24 +0000797 fi
798fi
799
800##########################################
malcc2de5c92008-06-28 19:13:06 +0000801# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000802
malcc2de5c92008-06-28 19:13:06 +0000803audio_drv_probe()
804{
805 drv=$1
806 hdr=$2
807 lib=$3
808 exp=$4
809 cfl=$5
810 cat > $TMPC << EOF
811#include <$hdr>
812int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000813EOF
malcc2de5c92008-06-28 19:13:06 +0000814 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
815 :
816 else
817 echo
818 echo "Error: $drv check failed"
819 echo "Make sure to have the $drv libs and headers installed."
820 echo
821 exit 1
822 fi
823}
824
malc2fa7d3b2008-07-29 12:58:44 +0000825audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000826for drv in $audio_drv_list; do
827 case $drv in
828 alsa)
829 audio_drv_probe $drv alsa/asoundlib.h -lasound \
830 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
831 ;;
832
833 fmod)
834 if test -z $fmod_lib || test -z $fmod_inc; then
835 echo
836 echo "Error: You must specify path to FMOD library and headers"
837 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
838 echo
839 exit 1
840 fi
841 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
842 ;;
843
844 esd)
845 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
846 ;;
malcb8e59f12008-07-02 21:03:08 +0000847
848 pa)
849 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
850 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
851 ;;
852
blueswir12f6a1ab2008-08-21 18:00:53 +0000853 oss|sdl|core|wav|dsound)
854 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
855 ;;
856
malce4c63a62008-07-19 16:15:16 +0000857 *)
malc1c9b2a52008-07-19 16:57:30 +0000858 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000859 echo
860 echo "Error: Unknown driver '$drv' selected"
861 echo "Possible drivers are: $audio_possible_drivers"
862 echo
863 exit 1
864 }
865 ;;
malcc2de5c92008-06-28 19:13:06 +0000866 esac
867done
ths8f28f3f2007-01-05 21:25:54 +0000868
balrog4d3b6f62008-02-10 16:33:14 +0000869##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000870# BrlAPI probe
871
872if test -z "$brlapi" ; then
873 brlapi=no
874cat > $TMPC << EOF
875#include <brlapi.h>
876int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
877EOF
aurel32a40e56d2008-05-04 00:50:25 +0000878 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000879 brlapi=yes
880 fi # brlapi compile test
881fi # -z $brlapi
882
883##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000884# curses probe
885
886if test "$curses" = "yes" ; then
887 curses=no
888 cat > $TMPC << EOF
889#include <curses.h>
890int main(void) { return curses_version(); }
891EOF
pbrookaf896aa2008-03-23 00:47:42 +0000892 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000893 curses=yes
894 fi
895fi # test "$curses"
896
blueswir1414f0da2008-08-15 18:20:52 +0000897##########################################
balrogfb599c92008-09-28 23:49:55 +0000898# bluez support probe
899if test "$bluez" = "yes" ; then
900 `pkg-config bluez` || bluez="no"
901fi
902if test "$bluez" = "yes" ; then
balroge820e3f2008-09-30 02:27:44 +0000903 cat > $TMPC << EOF
904#include <bluetooth/bluetooth.h>
905int main(void) { return bt_error(0); }
906EOF
balrogfb599c92008-09-28 23:49:55 +0000907 bluez_cflags=`pkg-config --cflags bluez`
908 bluez_libs=`pkg-config --libs bluez`
balroge820e3f2008-09-30 02:27:44 +0000909 if $cc $ARCH_CFLAGS -o $TMPE ${OS_FLAGS} $bluez_cflags $TMPC \
910 $bluez_libs 2> /dev/null ; then
911 :
912 else
913 bluez="no"
914 fi
balrogfb599c92008-09-28 23:49:55 +0000915fi
916
917##########################################
blueswir1414f0da2008-08-15 18:20:52 +0000918# AIO probe
919if test "$aio" = "yes" ; then
920 aio=no
921 cat > $TMPC << EOF
922#include <aio.h>
923int main(void) { return aio_write(NULL); }
924EOF
925 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
926 aio=yes
927 fi
928fi
929
aliguori27463102008-09-27 20:58:43 +0000930##########################################
931# signalfd probe
932cat > $TMPC << EOF
933#define _GNU_SOURCE
934#include <unistd.h>
935#include <sys/syscall.h>
936#include <signal.h>
937int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
938EOF
939
940if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
941 signalfd=yes
942fi
943
944##########################################
945# eventfd probe
946cat > $TMPC << EOF
947#define _GNU_SOURCE
948#include <unistd.h>
949#include <sys/syscall.h>
950int main(void) { return syscall(SYS_eventfd, 0); }
951EOF
952
953if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
954 eventfd=yes
955fi
956
pbrookcc8ae6d2006-04-23 17:57:59 +0000957# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000958if [ -x "`which texi2html 2>/dev/null`" ] && \
959 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000960 build_docs="yes"
961fi
962
bellard11d9f692004-04-02 20:55:59 +0000963if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000964 if test -z "$prefix" ; then
965 prefix="/c/Program Files/Qemu"
966 fi
967 mansuffix=""
968 datasuffix=""
969 docsuffix=""
970 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000971else
pbrook308c3592007-02-27 00:52:01 +0000972 if test -z "$prefix" ; then
973 prefix="/usr/local"
974 fi
975 mansuffix="/share/man"
976 datasuffix="/share/qemu"
977 docsuffix="/share/doc/qemu"
978 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000979fi
bellard5a671352003-10-01 00:13:48 +0000980
bellard43ce4df2003-06-09 19:53:12 +0000981echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000982echo "BIOS directory $prefix$datasuffix"
983echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000984if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000985echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000986echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000987fi
bellard5a671352003-10-01 00:13:48 +0000988echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000989echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000990echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000991echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000992echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000993echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000994echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000995echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000996echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000997echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000998echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000999echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +00001000echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +00001001if test "$darwin" = "yes" ; then
1002 echo "Cocoa support $cocoa"
1003fi
bellard97a847b2003-08-10 21:36:04 +00001004echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +00001005if test "$sdl" != "no" ; then
1006 echo "SDL static link $sdl_static"
1007fi
balrog4d3b6f62008-02-10 16:33:14 +00001008echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +00001009echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00001010echo "Audio drivers $audio_drv_list"
1011echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +00001012echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +00001013echo "VNC TLS support $vnc_tls"
1014if test "$vnc_tls" = "yes" ; then
1015 echo " TLS CFLAGS $vnc_tls_cflags"
1016 echo " TLS LIBS $vnc_tls_libs"
1017fi
blueswir131422552007-04-16 18:27:06 +00001018if test -n "$sparc_cpu"; then
1019 echo "Target Sparc Arch $sparc_cpu"
1020fi
bellard07f4ddb2005-04-23 17:44:28 +00001021echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +00001022echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +00001023echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +00001024[ ! -z "$uname_release" ] && \
1025echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +00001026echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +00001027echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +00001028echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +00001029
bellard97a847b2003-08-10 21:36:04 +00001030if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00001031echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00001032fi
ths20b40c62007-07-11 23:39:45 +00001033if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1034 echo "The error log from compiling the libSDL test is: "
1035 cat /tmp/qemu-$$-sdl-config.log
1036fi
1037rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +00001038#if test "$sdl_static" = "no"; then
1039# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1040#fi
bellard97a847b2003-08-10 21:36:04 +00001041config_mak="config-host.mak"
1042config_h="config-host.h"
1043
bellard7c1f25b2004-04-22 00:02:08 +00001044#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +00001045
ths15d9ca02007-07-31 23:07:32 +00001046test -f $config_h && mv $config_h ${config_h}~
1047
bellard97a847b2003-08-10 21:36:04 +00001048echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +00001049echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001050echo "/* Automatically generated by configure - do not modify */" > $config_h
1051
1052echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001053echo "bindir=\${prefix}$binsuffix" >> $config_mak
1054echo "mandir=\${prefix}$mansuffix" >> $config_mak
1055echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +00001056echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001057echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001058echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +00001059echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001060echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001061echo "HOST_CC=$host_cc" >> $config_mak
1062echo "AR=$ar" >> $config_mak
1063echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001064# XXX: only use CFLAGS and LDFLAGS ?
1065# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1066# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001067echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001068echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1069echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1070echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001071echo "CFLAGS=$CFLAGS" >> $config_mak
1072echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001073echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001074echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001075case "$cpu" in
1076 i386)
1077 echo "ARCH=i386" >> $config_mak
1078 echo "#define HOST_I386 1" >> $config_h
1079 ;;
1080 x86_64)
1081 echo "ARCH=x86_64" >> $config_mak
1082 echo "#define HOST_X86_64 1" >> $config_h
1083 ;;
1084 alpha)
1085 echo "ARCH=alpha" >> $config_mak
1086 echo "#define HOST_ALPHA 1" >> $config_h
1087 ;;
1088 armv4b)
1089 echo "ARCH=arm" >> $config_mak
1090 echo "#define HOST_ARM 1" >> $config_h
1091 ;;
1092 armv4l)
1093 echo "ARCH=arm" >> $config_mak
1094 echo "#define HOST_ARM 1" >> $config_h
1095 ;;
1096 cris)
1097 echo "ARCH=cris" >> $config_mak
1098 echo "#define HOST_CRIS 1" >> $config_h
1099 ;;
1100 hppa)
1101 echo "ARCH=hppa" >> $config_mak
1102 echo "#define HOST_HPPA 1" >> $config_h
1103 ;;
1104 ia64)
1105 echo "ARCH=ia64" >> $config_mak
1106 echo "#define HOST_IA64 1" >> $config_h
1107 ;;
1108 m68k)
1109 echo "ARCH=m68k" >> $config_mak
1110 echo "#define HOST_M68K 1" >> $config_h
1111 ;;
1112 mips)
1113 echo "ARCH=mips" >> $config_mak
1114 echo "#define HOST_MIPS 1" >> $config_h
1115 ;;
1116 mips64)
1117 echo "ARCH=mips64" >> $config_mak
1118 echo "#define HOST_MIPS64 1" >> $config_h
1119 ;;
1120 powerpc)
malc810260a2008-07-23 19:17:46 +00001121 if test "$hostlongbits" = "32"; then
1122 echo "ARCH=ppc" >> $config_mak
1123 echo "#define HOST_PPC 1" >> $config_h
1124 else
1125 echo "ARCH=ppc64" >> $config_mak
1126 echo "#define HOST_PPC64 1" >> $config_h
1127 fi
aurel322408a522008-04-20 20:19:44 +00001128 ;;
1129 s390)
1130 echo "ARCH=s390" >> $config_mak
1131 echo "#define HOST_S390 1" >> $config_h
1132 ;;
1133 sparc)
1134 echo "ARCH=sparc" >> $config_mak
1135 echo "#define HOST_SPARC 1" >> $config_h
1136 ;;
1137 sparc64)
1138 echo "ARCH=sparc64" >> $config_mak
1139 echo "#define HOST_SPARC64 1" >> $config_h
1140 ;;
1141 *)
1142 echo "Unsupported CPU = $cpu"
1143 exit 1
1144 ;;
1145esac
bellard7d132992003-03-06 23:23:54 +00001146if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001147 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1148 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1149fi
bellardb6853692005-06-05 17:10:39 +00001150echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001151if test "$mingw32" = "yes" ; then
1152 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001153 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001154else
1155 cat > $TMPC << EOF
1156#include <byteswap.h>
1157int main(void) { return bswap_32(0); }
1158EOF
pbrookdb7287e2008-02-03 16:27:13 +00001159 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001160 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1161 fi
bellard67b915a2004-03-31 23:37:16 +00001162fi
blueswir1128ab2f2008-08-15 18:33:42 +00001163
1164if [ "$openbsd" = "yes" ] ; then
1165 echo "#define ENOTSUP 4096" >> $config_h
1166fi
1167
bellard83fb7ad2004-07-05 21:25:26 +00001168if test "$darwin" = "yes" ; then
1169 echo "CONFIG_DARWIN=yes" >> $config_mak
1170 echo "#define CONFIG_DARWIN 1" >> $config_h
1171fi
bellardec530c82006-04-25 22:36:06 +00001172if test "$solaris" = "yes" ; then
1173 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001174 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001175 if test "$needs_libsunmath" = "yes" ; then
1176 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1177 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1178 fi
bellardec530c82006-04-25 22:36:06 +00001179fi
blueswir131422552007-04-16 18:27:06 +00001180if test -n "$sparc_cpu"; then
1181 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1182 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1183fi
bellard67b915a2004-03-31 23:37:16 +00001184if test "$gdbstub" = "yes" ; then
1185 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1186 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1187fi
bellard97a847b2003-08-10 21:36:04 +00001188if test "$gprof" = "yes" ; then
1189 echo "TARGET_GPROF=yes" >> $config_mak
1190 echo "#define HAVE_GPROF 1" >> $config_h
1191fi
1192if test "$static" = "yes" ; then
1193 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001194 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001195fi
bellard05c2a3e2006-02-08 22:39:17 +00001196if test $profiler = "yes" ; then
1197 echo "#define CONFIG_PROFILER 1" >> $config_h
1198fi
bellardc20709a2004-04-21 23:27:19 +00001199if test "$slirp" = "yes" ; then
1200 echo "CONFIG_SLIRP=yes" >> $config_mak
1201 echo "#define CONFIG_SLIRP 1" >> $config_h
1202fi
ths8a16d272008-07-19 09:56:24 +00001203if test "$vde" = "yes" ; then
1204 echo "CONFIG_VDE=yes" >> $config_mak
1205 echo "#define CONFIG_VDE 1" >> $config_h
1206 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1207fi
malc0c58ac12008-06-25 21:04:05 +00001208for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001209 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001210 echo "$def=yes" >> $config_mak
1211 echo "#define $def 1" >> $config_h
1212done
1213echo "#define AUDIO_DRIVERS \\" >> $config_h
1214for drv in $audio_drv_list; do
1215 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001216 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001217 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001218 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001219 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1220 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001221 elif test "$drv" = "oss"; then
1222 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001223 fi
1224done
1225echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001226if test "$mixemu" = "yes" ; then
1227 echo "CONFIG_MIXEMU=yes" >> $config_mak
1228 echo "#define CONFIG_MIXEMU 1" >> $config_h
1229fi
ths8d5d2d42007-08-25 01:37:51 +00001230if test "$vnc_tls" = "yes" ; then
1231 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1232 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1233 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1234 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1235fi
pbrookb1a550a2006-04-16 13:28:56 +00001236qemu_version=`head $source_path/VERSION`
1237echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001238echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001239
1240echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001241if [ "$source_path_used" = "yes" ]; then
1242 echo "VPATH=$source_path" >> $config_mak
1243fi
bellard97a847b2003-08-10 21:36:04 +00001244echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001245if [ "$build_docs" = "yes" ] ; then
1246 echo "BUILD_DOCS=yes" >> $config_mak
1247fi
bellard49ecc3f2007-11-07 19:25:15 +00001248if test "$static" = "yes"; then
1249 sdl1=$sdl_static
1250else
1251 sdl1=$sdl
1252fi
1253if test "$sdl1" = "yes" ; then
1254 echo "#define CONFIG_SDL 1" >> $config_h
1255 echo "CONFIG_SDL=yes" >> $config_mak
1256 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1257 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1258 else
1259 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1260 fi
1261 if [ "${aa}" = "yes" ] ; then
1262 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1263 else
1264 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1265 fi
1266fi
1267if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001268 echo "#define CONFIG_COCOA 1" >> $config_h
1269 echo "CONFIG_COCOA=yes" >> $config_mak
1270fi
1271if test "$curses" = "yes" ; then
1272 echo "#define CONFIG_CURSES 1" >> $config_h
1273 echo "CONFIG_CURSES=yes" >> $config_mak
1274 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001275fi
aurel322e4d9fb2008-04-08 06:01:02 +00001276if test "$brlapi" = "yes" ; then
1277 echo "CONFIG_BRLAPI=yes" >> $config_mak
1278 echo "#define CONFIG_BRLAPI 1" >> $config_h
1279 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1280fi
balrogfb599c92008-09-28 23:49:55 +00001281if test "$bluez" = "yes" ; then
1282 echo "CONFIG_BLUEZ=yes" >> $config_mak
1283 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1284 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1285 echo "#define CONFIG_BLUEZ 1" >> $config_h
1286fi
blueswir1414f0da2008-08-15 18:20:52 +00001287if test "$aio" = "yes" ; then
1288 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001289 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001290fi
aliguori27463102008-09-27 20:58:43 +00001291if test "$signalfd" = "yes" ; then
1292 echo "#define CONFIG_signalfd 1" >> $config_h
1293fi
1294if test "$eventfd" = "yes" ; then
1295 echo "#define CONFIG_eventfd 1" >> $config_h
1296fi
bellard97a847b2003-08-10 21:36:04 +00001297
bellard83fb7ad2004-07-05 21:25:26 +00001298# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001299if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001300 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001301 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001302 echo "#define _BSD 1" >> $config_h
1303fi
1304
pbrookc5937222006-05-14 11:30:38 +00001305echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1306
pbrookc39e3332007-09-22 16:49:14 +00001307tools=
1308if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1309 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001310 if [ "$linux" = "yes" ] ; then
1311 tools="qemu-nbd\$(EXESUF) $tools"
1312 fi
pbrookc39e3332007-09-22 16:49:14 +00001313fi
1314echo "TOOLS=$tools" >> $config_mak
1315
ths15d9ca02007-07-31 23:07:32 +00001316test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1317
bellard1d14ffa2005-10-30 18:58:22 +00001318for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001319target_dir="$target"
1320config_mak=$target_dir/config.mak
1321config_h=$target_dir/config.h
1322target_cpu=`echo $target | cut -d '-' -f 1`
1323target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001324[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001325[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1326[ "$target_cpu" = "mips" ] && target_bigendian=yes
1327[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1328[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001329[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001330[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001331[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001332[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001333[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001334[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1335[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1336[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001337target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001338target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001339target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001340target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001341case "$target" in
1342 ${target_cpu}-softmmu)
1343 target_softmmu="yes"
1344 ;;
1345 ${target_cpu}-linux-user)
1346 target_user_only="yes"
1347 target_linux_user="yes"
1348 ;;
1349 ${target_cpu}-darwin-user)
1350 target_user_only="yes"
1351 target_darwin_user="yes"
1352 ;;
1353 *)
1354 echo "ERROR: Target '$target' not recognised"
1355 exit 1
1356 ;;
1357esac
ths831b7822007-01-18 20:06:33 +00001358
bellard97ccc682005-07-02 13:32:17 +00001359if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001360 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001361 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001362 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001363 echo "Note that this will disable all output from the virtual graphics card"
1364 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001365 exit 1;
1366fi
1367
bellard7c1f25b2004-04-22 00:02:08 +00001368#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001369
ths15d9ca02007-07-31 23:07:32 +00001370test -f $config_h && mv $config_h ${config_h}~
1371
bellard97a847b2003-08-10 21:36:04 +00001372mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001373mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001374mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001375if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001376 mkdir -p $target_dir/nwfpe
1377fi
1378
bellardec530c82006-04-25 22:36:06 +00001379#
1380# don't use ln -sf as not all "ln -sf" over write the file/link
1381#
1382rm -f $target_dir/Makefile
1383ln -s $source_path/Makefile.target $target_dir/Makefile
1384
bellard97a847b2003-08-10 21:36:04 +00001385
1386echo "# Automatically generated by configure - do not modify" > $config_mak
1387echo "/* Automatically generated by configure - do not modify */" > $config_h
1388
1389
1390echo "include ../config-host.mak" >> $config_mak
1391echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001392
pbrooke5fe0c52006-06-11 13:32:59 +00001393bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001394elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001395target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001396interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1397echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001398
aurel322408a522008-04-20 20:19:44 +00001399case "$target_cpu" in
1400 i386)
1401 echo "TARGET_ARCH=i386" >> $config_mak
1402 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1403 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001404 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001405 then
1406 echo "#define USE_KQEMU 1" >> $config_h
1407 fi
aurel32f2bf0942008-05-05 06:00:27 +00001408 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001409 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001410 then
1411 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1412 else
1413 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1414 fi
aurel322408a522008-04-20 20:19:44 +00001415 ;;
1416 x86_64)
1417 echo "TARGET_ARCH=x86_64" >> $config_mak
1418 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1419 echo "#define TARGET_I386 1" >> $config_h
1420 echo "#define TARGET_X86_64 1" >> $config_h
1421 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1422 then
1423 echo "#define USE_KQEMU 1" >> $config_h
1424 fi
1425 ;;
1426 alpha)
1427 echo "TARGET_ARCH=alpha" >> $config_mak
1428 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1429 echo "#define TARGET_ALPHA 1" >> $config_h
1430 ;;
1431 arm|armeb)
1432 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001433 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1434 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001435 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001436 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001437 ;;
1438 cris)
1439 echo "TARGET_ARCH=cris" >> $config_mak
1440 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1441 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001442 ;;
1443 m68k)
1444 echo "TARGET_ARCH=m68k" >> $config_mak
1445 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1446 echo "#define TARGET_M68K 1" >> $config_h
1447 bflt="yes"
1448 ;;
1449 mips|mipsel)
1450 echo "TARGET_ARCH=mips" >> $config_mak
1451 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1452 echo "#define TARGET_MIPS 1" >> $config_h
1453 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1454 ;;
1455 mipsn32|mipsn32el)
1456 echo "TARGET_ARCH=mipsn32" >> $config_mak
1457 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1458 echo "#define TARGET_MIPS 1" >> $config_h
1459 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1460 ;;
1461 mips64|mips64el)
1462 echo "TARGET_ARCH=mips64" >> $config_mak
1463 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1464 echo "#define TARGET_MIPS 1" >> $config_h
1465 echo "#define TARGET_MIPS64 1" >> $config_h
1466 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1467 ;;
1468 ppc)
1469 echo "TARGET_ARCH=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 \"ppc\"" >> $config_h
1472 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001473 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001474 ;;
1475 ppcemb)
1476 echo "TARGET_ARCH=ppcemb" >> $config_mak
1477 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001478 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001479 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1480 echo "#define TARGET_PPC 1" >> $config_h
1481 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001482 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001483 ;;
1484 ppc64)
1485 echo "TARGET_ARCH=ppc64" >> $config_mak
1486 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001487 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001488 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1489 echo "#define TARGET_PPC 1" >> $config_h
1490 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001491 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001492 ;;
1493 ppc64abi32)
1494 echo "TARGET_ARCH=ppc64" >> $config_mak
1495 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1496 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001497 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001498 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1499 echo "#define TARGET_PPC 1" >> $config_h
1500 echo "#define TARGET_PPC64 1" >> $config_h
1501 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001502 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001503 ;;
1504 sh4|sh4eb)
1505 echo "TARGET_ARCH=sh4" >> $config_mak
1506 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1507 echo "#define TARGET_SH4 1" >> $config_h
1508 bflt="yes"
aurel320b6d3ae2008-09-15 07:43:43 +00001509 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001510 ;;
1511 sparc)
1512 echo "TARGET_ARCH=sparc" >> $config_mak
1513 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1514 echo "#define TARGET_SPARC 1" >> $config_h
1515 ;;
1516 sparc64)
1517 echo "TARGET_ARCH=sparc64" >> $config_mak
1518 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1519 echo "#define TARGET_SPARC 1" >> $config_h
1520 echo "#define TARGET_SPARC64 1" >> $config_h
1521 elfload32="yes"
1522 ;;
1523 sparc32plus)
1524 echo "TARGET_ARCH=sparc64" >> $config_mak
1525 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1526 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1527 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1528 echo "#define TARGET_SPARC 1" >> $config_h
1529 echo "#define TARGET_SPARC64 1" >> $config_h
1530 echo "#define TARGET_ABI32 1" >> $config_h
1531 ;;
1532 *)
1533 echo "Unsupported target CPU"
1534 exit 1
1535 ;;
1536esac
bellardde83cd02003-06-15 20:25:43 +00001537if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001538 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1539 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1540fi
1541if test "$target_softmmu" = "yes" ; then
1542 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1543 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001544fi
bellard997344f2003-10-27 21:10:39 +00001545if test "$target_user_only" = "yes" ; then
1546 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1547 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1548fi
ths831b7822007-01-18 20:06:33 +00001549if test "$target_linux_user" = "yes" ; then
1550 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1551 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1552fi
1553if test "$target_darwin_user" = "yes" ; then
1554 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1555 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1556fi
bellardde83cd02003-06-15 20:25:43 +00001557
aurel320938cda2008-04-11 21:36:06 +00001558if test "$target_cpu" = "arm" \
1559 -o "$target_cpu" = "armeb" \
1560 -o "$target_cpu" = "m68k" \
1561 -o "$target_cpu" = "mips" \
1562 -o "$target_cpu" = "mipsel" \
1563 -o "$target_cpu" = "mipsn32" \
1564 -o "$target_cpu" = "mipsn32el" \
1565 -o "$target_cpu" = "mips64" \
1566 -o "$target_cpu" = "mips64el" \
1567 -o "$target_cpu" = "sparc" \
1568 -o "$target_cpu" = "sparc64" \
1569 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001570 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1571 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1572fi
pbrooke5fe0c52006-06-11 13:32:59 +00001573if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1574 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1575 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1576fi
pbrookbd0c5662008-05-29 14:34:11 +00001577if test "$target_user_only" = "yes" \
1578 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1579 echo "#define USE_NPTL 1" >> $config_h
1580fi
blueswir1cb33da52007-10-09 16:34:29 +00001581# 32 bit ELF loader in addition to native 64 bit loader?
1582if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1583 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1584 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1585fi
bellard5b0753e2005-03-01 21:37:28 +00001586
ths15d9ca02007-07-31 23:07:32 +00001587test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1588
bellard97a847b2003-08-10 21:36:04 +00001589done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001590
1591# build tree in object directory if source path is different from current one
1592if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001593 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001594 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001595 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001596 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001597 for dir in $DIRS ; do
1598 mkdir -p $dir
1599 done
bellardec530c82006-04-25 22:36:06 +00001600 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001601 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001602 rm -f $f
1603 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001604 done
1605fi
bellard7d132992003-03-06 23:23:54 +00001606
bellard97a847b2003-08-10 21:36:04 +00001607rm -f $TMPO $TMPC $TMPE $TMPS