blob: 5030558a455155911bb6db1abb303963e070d1ea [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"
aliguori27463102008-09-27 20:58:43 +0000113signalfd="no"
114eventfd="no"
bellard7d132992003-03-06 23:23:54 +0000115
116# OS specific
117targetos=`uname -s`
118case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000119CYGWIN*)
120mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000121OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000122if [ "$cpu" = "i386" ] ; then
123 kqemu="yes"
124fi
malcc2de5c92008-06-28 19:13:06 +0000125audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000126;;
bellard67b915a2004-03-31 23:37:16 +0000127MINGW32*)
128mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000129if [ "$cpu" = "i386" ] ; then
130 kqemu="yes"
131fi
malcc2de5c92008-06-28 19:13:06 +0000132audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000133;;
ths5c40d2b2007-06-23 16:03:36 +0000134GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000135audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000136audio_possible_drivers="oss sdl esd pa"
ths5c40d2b2007-06-23 16:03:36 +0000137if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
138 kqemu="yes"
139fi
140;;
bellard7d3505c2004-05-12 19:32:15 +0000141FreeBSD)
142bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000143audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000144audio_possible_drivers="oss sdl esd pa"
bellarde99f9062005-07-28 21:45:38 +0000145if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000146 kqemu="yes"
147fi
bellard7d3505c2004-05-12 19:32:15 +0000148;;
149NetBSD)
150bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000151audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000152audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000153;;
154OpenBSD)
155bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000156openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000157audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000158audio_possible_drivers="oss sdl esd"
blueswir12f6a1ab2008-08-21 18:00:53 +0000159oss_lib="-lossaudio"
bellard7d3505c2004-05-12 19:32:15 +0000160;;
bellard83fb7ad2004-07-05 21:25:26 +0000161Darwin)
162bsd="yes"
163darwin="yes"
ths831b7822007-01-18 20:06:33 +0000164darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000165cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000166audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000167audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000168OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000169OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000170;;
bellardec530c82006-04-25 22:36:06 +0000171SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000172 solaris="yes"
173 make="gmake"
174 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000175 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000176 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000177 # have to select again, because `uname -m` returns i86pc
178 # even on an x86_64 box.
179 solariscpu=`isainfo -k`
180 if test "${solariscpu}" = "amd64" ; then
181 cpu="x86_64"
182 fi
thsc2b84fa2007-02-10 23:21:21 +0000183 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000184 if test "$solarisrev" -le 9 ; then
185 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
186 needs_libsunmath="yes"
187 else
188 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
189 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
190 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
191 echo "Studio 11 can be downloaded from www.sun.com."
192 exit 1
193 fi
194 fi
195 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000196 kqemu="yes"
197 fi
ths86b2bd92007-02-11 00:31:33 +0000198 fi
ths6b4d2ba2007-05-13 18:02:43 +0000199 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000200 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000201 fi
malcc2de5c92008-06-28 19:13:06 +0000202 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000203;;
bellard1d14ffa2005-10-30 18:58:22 +0000204*)
malc0c58ac12008-06-25 21:04:05 +0000205audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000206audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000207linux="yes"
ths831b7822007-01-18 20:06:33 +0000208linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000209if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000210 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000211 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000212fi
bellardfb065182004-11-09 23:09:44 +0000213;;
bellard7d132992003-03-06 23:23:54 +0000214esac
215
bellard7d3505c2004-05-12 19:32:15 +0000216if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000217 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000218 make="gmake"
219 fi
bellard7d3505c2004-05-12 19:32:15 +0000220fi
221
bellard7d132992003-03-06 23:23:54 +0000222# find source path
pbrookad064842006-04-16 12:41:07 +0000223source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000224source_path_used="no"
225workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000226if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000227 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000228else
229 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000230fi
pbrook724db112008-02-03 19:20:13 +0000231[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000232
bellard85aa5182007-11-11 20:17:03 +0000233werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000234# generate compile errors on warnings for development builds
235#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
236#werror="yes";
237#fi
bellard85aa5182007-11-11 20:17:03 +0000238
bellard7d132992003-03-06 23:23:54 +0000239for opt do
pbrooka46e4032006-04-29 23:05:22 +0000240 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000241 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000242 --help|-h) show_help=yes
243 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000244 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000245 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000246 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000247 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000248 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000249 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000250 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000251 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000252 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000253 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000254 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000255 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000256 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000257 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000258 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000259 ;;
pbrook6a882642006-04-17 13:57:12 +0000260 --install=*) install="$optarg"
261 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000262 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000263 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000264 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000265 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000266 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000267 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000268 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000269 ;;
bellard7d132992003-03-06 23:23:54 +0000270 --enable-gprof) gprof="yes"
271 ;;
bellard43ce4df2003-06-09 19:53:12 +0000272 --static) static="yes"
273 ;;
bellard97a847b2003-08-10 21:36:04 +0000274 --disable-sdl) sdl="no"
275 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000276 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000277 ;;
malcc2de5c92008-06-28 19:13:06 +0000278 --fmod-inc=*) fmod_inc="$optarg"
279 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000280 --oss-lib=*) oss_lib="$optarg"
281 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000282 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000283 ;;
284 --audio-drv-list=*) audio_drv_list="$optarg"
285 ;;
ths8d5d2d42007-08-25 01:37:51 +0000286 --disable-vnc-tls) vnc_tls="no"
287 ;;
bellard443f1372004-06-04 11:13:20 +0000288 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000289 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000290 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000291 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000292 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000293 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000294 --disable-brlapi) brlapi="no"
295 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000296 --enable-profiler) profiler="yes"
297 ;;
malcc2de5c92008-06-28 19:13:06 +0000298 --enable-cocoa)
299 cocoa="yes" ;
300 sdl="no" ;
301 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000302 ;;
bellard97ccc682005-07-02 13:32:17 +0000303 --disable-gfx-check) check_gfx="no"
304 ;;
bellard1aff3812005-11-02 22:30:45 +0000305 --disable-gcc-check) check_gcc="no"
306 ;;
pbrookcad25d62006-03-19 16:31:11 +0000307 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000308 ;;
pbrookcad25d62006-03-19 16:31:11 +0000309 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000310 ;;
ths831b7822007-01-18 20:06:33 +0000311 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000312 ;;
ths831b7822007-01-18 20:06:33 +0000313 --enable-linux-user) linux_user="yes"
314 ;;
315 --disable-darwin-user) darwin_user="no"
316 ;;
317 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000318 ;;
pbrookc5937222006-05-14 11:30:38 +0000319 --enable-uname-release=*) uname_release="$optarg"
320 ;;
blueswir131422552007-04-16 18:27:06 +0000321 --sparc_cpu=*)
322 sparc_cpu="$optarg"
323 case $sparc_cpu in
324 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
325 target_cpu="sparc"; cpu="sparc" ;;
326 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
327 target_cpu="sparc"; cpu="sparc" ;;
328 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
329 target_cpu="sparc64"; cpu="sparc64" ;;
330 *) echo "undefined SPARC architecture. Exiting";exit 1;;
331 esac
332 ;;
bellard85aa5182007-11-11 20:17:03 +0000333 --enable-werror) werror="yes"
334 ;;
335 --disable-werror) werror="no"
336 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000337 --disable-curses) curses="no"
338 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000339 --disable-nptl) nptl="no"
340 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000341 --enable-mixemu) mixemu="yes"
342 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000343 --disable-aio) aio="no"
344 ;;
balrog7f1559c2007-11-17 10:24:32 +0000345 *) echo "ERROR: unknown option $opt"; show_help="yes"
346 ;;
bellard7d132992003-03-06 23:23:54 +0000347 esac
348done
349
ths6f30fa82007-01-05 01:00:47 +0000350# default flags for all hosts
blueswir1ac41a622008-09-14 06:46:31 +0000351CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
352CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
ths6f30fa82007-01-05 01:00:47 +0000353LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000354if test "$werror" = "yes" ; then
355CFLAGS="$CFLAGS -Werror"
356fi
ths6f30fa82007-01-05 01:00:47 +0000357
blueswir149237ac2008-09-17 19:05:19 +0000358if ld --version 2>/dev/null | grep -q "GNU ld" ; then
359 LDFLAGS="$LDFLAGS -Wl,--warn-common"
360fi
361
blueswir131422552007-04-16 18:27:06 +0000362#
363# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
364# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
365#
bellard40293e52008-01-31 11:32:10 +0000366case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000367 sparc) if test -z "$sparc_cpu" ; then
368 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
369 ARCH_LDFLAGS="-m32"
370 else
371 ARCH_CFLAGS="${SP_CFLAGS}"
372 ARCH_LDFLAGS="${SP_LDFLAGS}"
373 fi
374 ;;
375 sparc64) if test -z "$sparc_cpu" ; then
376 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
377 ARCH_LDFLAGS="-m64"
378 else
379 ARCH_CFLAGS="${SP_CFLAGS}"
380 ARCH_LDFLAGS="${SP_LDFLAGS}"
381 fi
382 ;;
ths76d83bd2007-11-18 21:22:10 +0000383 s390)
384 ARCH_CFLAGS="-march=z900"
385 ;;
bellard40293e52008-01-31 11:32:10 +0000386 i386)
387 ARCH_CFLAGS="-m32"
388 ARCH_LDFLAGS="-m32"
389 ;;
390 x86_64)
391 ARCH_CFLAGS="-m64"
392 ARCH_LDFLAGS="-m64"
393 ;;
blueswir131422552007-04-16 18:27:06 +0000394esac
395
pbrookaf5db582006-04-08 14:26:41 +0000396if test x"$show_help" = x"yes" ; then
397cat << EOF
398
399Usage: configure [options]
400Options: [defaults in brackets after descriptions]
401
402EOF
403echo "Standard options:"
404echo " --help print this message"
405echo " --prefix=PREFIX install in PREFIX [$prefix]"
406echo " --interp-prefix=PREFIX where to find shared libraries, etc."
407echo " use %M for cpu name [$interp_prefix]"
408echo " --target-list=LIST set target list [$target_list]"
409echo ""
410echo "kqemu kernel acceleration support:"
411echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000412echo ""
413echo "Advanced options (experts only):"
414echo " --source-path=PATH path of source code [$source_path]"
415echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
416echo " --cc=CC use C compiler CC [$cc]"
417echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
418echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000419echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000420echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000421echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000422echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000423echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000424echo " --audio-drv-list=LIST set audio drivers list:"
425echo " Available drivers: $audio_possible_drivers"
426echo " --audio-card-list=LIST set list of additional emulated audio cards"
427echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000428echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000429echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000430echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000431echo " --disable-curses disable curses output"
pbrookbd0c5662008-05-29 14:34:11 +0000432echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000433echo " --enable-system enable all system emulation targets"
434echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000435echo " --enable-linux-user enable all linux usermode emulation targets"
436echo " --disable-linux-user disable all linux usermode emulation targets"
437echo " --enable-darwin-user enable all darwin usermode emulation targets"
438echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000439echo " --fmod-lib path to FMOD library"
440echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000441echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000442echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000443echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000444echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000445echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000446echo ""
ths5bf08932006-12-23 00:33:26 +0000447echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000448exit 1
449fi
450
bellard7d132992003-03-06 23:23:54 +0000451cc="${cross_prefix}${cc}"
452ar="${cross_prefix}${ar}"
453strip="${cross_prefix}${strip}"
454
pbrook064aae12006-05-08 00:51:44 +0000455# check that the C compiler works.
456cat > $TMPC <<EOF
457int main(void) {}
458EOF
459
pbrookdb7287e2008-02-03 16:27:13 +0000460if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000461 : C compiler works ok
462else
463 echo "ERROR: \"$cc\" either does not exist or does not work"
464 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000465fi
466
aliguoricd01b4a2008-08-21 19:25:45 +0000467# check compiler to see if we're on mingw32
468cat > $TMPC <<EOF
469#include <windows.h>
470#ifndef _WIN32
471#error not windows
472#endif
473int main(void) {}
474EOF
475
476if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
477 mingw32="yes"
478fi
479
bellard67b915a2004-03-31 23:37:16 +0000480if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000481 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000482 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000483 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000484 linux_user="no"
485fi
486
aliguori997306f2008-09-26 15:52:17 +0000487if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
aliguoricd01b4a2008-08-21 19:25:45 +0000488 AIOLIBS=
aliguori997306f2008-09-26 15:52:17 +0000489elif [ "$bsd" = "yes" ]; then
490 AIOLIBS="-lpthread"
aliguoricd01b4a2008-08-21 19:25:45 +0000491else
492 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
493 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000494fi
495
ths5fafdf22007-09-16 21:08:06 +0000496# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000497if test "$check_gcc" = "yes" ; then
498 cat > $TMPC <<EOF
499#if __GNUC__ < 4
500#error gcc3
501#endif
502int main(){return 0;}
503EOF
pbrookdb7287e2008-02-03 16:27:13 +0000504 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000505 echo "WARNING: \"$cc\" looks like gcc 4.x"
506 found_compat_cc="no"
507 if test "$gcc3_search" = "yes" ; then
508 echo "Looking for gcc 3.x"
509 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000510 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000511 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000512 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000513 found_compat_cc="yes"
514 break
515 fi
516 done
517 if test "$found_compat_cc" = "no" ; then
518 echo "gcc 3.x not found!"
519 fi
520 fi
521 if test "$found_compat_cc" = "no" ; then
522 echo "QEMU is known to have problems when compiled with gcc 4.x"
523 echo "It is recommended that you use gcc 3.x to build QEMU"
524 echo "To use this compiler anyway, configure with --disable-gcc-check"
525 exit 1;
526 fi
527 fi
528fi
529
bellardec530c82006-04-25 22:36:06 +0000530#
531# Solaris specific configure tool chain decisions
532#
533if test "$solaris" = "yes" ; then
534 #
535 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
536 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000537 #
bellardec530c82006-04-25 22:36:06 +0000538 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
539 solgcc=`which $cc`
540 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
541 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
542 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
543 echo "or get the latest patch from SunSolve for gcc"
544 exit 1
545 fi
546 fi
547 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
548 if test -z "$solinst" ; then
549 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
550 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
551 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
552 exit 1
553 fi
554 if test "$solinst" = "/usr/sbin/install" ; then
555 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
556 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
557 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
558 exit 1
559 fi
bellardec530c82006-04-25 22:36:06 +0000560 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
561 if test -z "$sol_ar" ; then
562 echo "Error: No path includes ar"
563 if test -f /usr/ccs/bin/ar ; then
564 echo "Add /usr/ccs/bin to your path and rerun configure"
565 fi
566 exit 1
567 fi
ths5fafdf22007-09-16 21:08:06 +0000568fi
bellardec530c82006-04-25 22:36:06 +0000569
570
bellard5327cf42005-01-10 23:18:50 +0000571if test -z "$target_list" ; then
572# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000573 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000574 target_list="\
575i386-softmmu \
576x86_64-softmmu \
577arm-softmmu \
578cris-softmmu \
579m68k-softmmu \
580mips-softmmu \
581mipsel-softmmu \
582mips64-softmmu \
583mips64el-softmmu \
584ppc-softmmu \
585ppcemb-softmmu \
586ppc64-softmmu \
587sh4-softmmu \
588sh4eb-softmmu \
589sparc-softmmu \
590"
pbrook0a8e90f2006-03-19 14:54:16 +0000591 fi
bellard5327cf42005-01-10 23:18:50 +0000592# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000593 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000594 target_list="${target_list}\
595i386-linux-user \
596x86_64-linux-user \
597alpha-linux-user \
598arm-linux-user \
599armeb-linux-user \
600cris-linux-user \
601m68k-linux-user \
602mips-linux-user \
603mipsel-linux-user \
604ppc-linux-user \
605ppc64-linux-user \
606ppc64abi32-linux-user \
607sh4-linux-user \
608sh4eb-linux-user \
609sparc-linux-user \
610sparc64-linux-user \
611sparc32plus-linux-user \
612"
ths831b7822007-01-18 20:06:33 +0000613 fi
614# the following are Darwin specific
615 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000616 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000617 fi
bellard6e20a452005-06-05 15:56:02 +0000618else
pbrookb1a550a2006-04-16 13:28:56 +0000619 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000620fi
pbrook0a8e90f2006-03-19 14:54:16 +0000621if test -z "$target_list" ; then
622 echo "No targets enabled"
623 exit 1
624fi
bellard5327cf42005-01-10 23:18:50 +0000625
bellard7d132992003-03-06 23:23:54 +0000626if test -z "$cross_prefix" ; then
627
628# ---
629# big/little endian test
630cat > $TMPC << EOF
631#include <inttypes.h>
632int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000633 volatile uint32_t i=0x01234567;
634 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000635}
636EOF
637
pbrookdb7287e2008-02-03 16:27:13 +0000638if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000639$TMPE && bigendian="yes"
640else
641echo big/little test failed
642fi
643
644else
645
646# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000647if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000648 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000649 -o "$cpu" = "m68k" \
650 -o "$cpu" = "mips" \
651 -o "$cpu" = "mips64" \
652 -o "$cpu" = "powerpc" \
653 -o "$cpu" = "s390" \
654 -o "$cpu" = "sparc" \
655 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000656 bigendian="yes"
657fi
658
659fi
660
bellardb6853692005-06-05 17:10:39 +0000661# host long bits test
662hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000663if test "$cpu" = "x86_64" \
664 -o "$cpu" = "alpha" \
665 -o "$cpu" = "ia64" \
666 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000667 hostlongbits="64"
668fi
669
malc810260a2008-07-23 19:17:46 +0000670# ppc specific hostlongbits selection
671if test "$cpu" = "powerpc" ; then
672 cat > $TMPC <<EOF
673int main(void){return sizeof(long);}
674EOF
675
676 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
677 $TMPE
678 case $? in
679 4) hostlongbits="32";;
680 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000681 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000682 esac
683 else
684 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000685 exit 1
malc810260a2008-07-23 19:17:46 +0000686 fi
687fi
688
bellarde8cd23d2003-06-25 16:08:13 +0000689# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000690cat > $TMPC <<EOF
691int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000692}
693EOF
694
pbrookbd0c5662008-05-29 14:34:11 +0000695# Check host NPTL support
696cat > $TMPC <<EOF
697#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000698#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000699void foo()
700{
701#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
702#error bork
703#endif
704}
705EOF
706
707if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
708 :
709else
710 nptl="no"
711fi
712
bellard11d9f692004-04-02 20:55:59 +0000713##########################################
714# SDL probe
715
716sdl_too_old=no
717
718if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000719 sdl_config="sdl-config"
720 sdl=no
721 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000722
723cat > $TMPC << EOF
724#include <SDL.h>
725#undef main /* We don't want SDL to override our main() */
726int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
727EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000728 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
729 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
730 if test "$_sdlversion" -lt 121 ; then
731 sdl_too_old=yes
732 else
733 if test "$cocoa" = "no" ; then
734 sdl=yes
735 fi
736 fi
737
738 # static link with sdl ?
739 if test "$sdl" = "yes" ; then
740 aa="no"
741 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
742 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
743 if [ "$aa" = "yes" ] ; then
744 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000745 fi
bellard11d9f692004-04-02 20:55:59 +0000746
aliguoricd01b4a2008-08-21 19:25:45 +0000747 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
748 sdl_static=yes
749 fi
750 fi # static link
751 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000752else
ths069b0bd2007-07-12 00:27:15 +0000753 # Make sure to disable cocoa if sdl was set
754 if test "$sdl" = "yes" ; then
755 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000756 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000757 fi
bellarda6e022a2004-04-02 21:55:47 +0000758fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000759
ths8f28f3f2007-01-05 21:25:54 +0000760##########################################
ths8d5d2d42007-08-25 01:37:51 +0000761# VNC TLS detection
762if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000763cat > $TMPC <<EOF
764#include <gnutls/gnutls.h>
765int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
766EOF
767 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
768 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
769 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
770 $vnc_tls_libs 2> /dev/null ; then
771 :
772 else
773 vnc_tls="no"
774 fi
ths8d5d2d42007-08-25 01:37:51 +0000775fi
776
777##########################################
ths8a16d272008-07-19 09:56:24 +0000778# vde libraries probe
779if test "$vde" = "yes" ; then
780 cat > $TMPC << EOF
781#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000782int main(void)
783{
784 struct vde_open_args a = {0, 0, 0};
785 vde_open("", "", &a);
786 return 0;
787}
ths8a16d272008-07-19 09:56:24 +0000788EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000789 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000790 :
791 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000792 vde="no"
ths8a16d272008-07-19 09:56:24 +0000793 fi
794fi
795
796##########################################
malcc2de5c92008-06-28 19:13:06 +0000797# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000798
malcc2de5c92008-06-28 19:13:06 +0000799audio_drv_probe()
800{
801 drv=$1
802 hdr=$2
803 lib=$3
804 exp=$4
805 cfl=$5
806 cat > $TMPC << EOF
807#include <$hdr>
808int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000809EOF
malcc2de5c92008-06-28 19:13:06 +0000810 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
811 :
812 else
813 echo
814 echo "Error: $drv check failed"
815 echo "Make sure to have the $drv libs and headers installed."
816 echo
817 exit 1
818 fi
819}
820
malc2fa7d3b2008-07-29 12:58:44 +0000821audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000822for drv in $audio_drv_list; do
823 case $drv in
824 alsa)
825 audio_drv_probe $drv alsa/asoundlib.h -lasound \
826 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
827 ;;
828
829 fmod)
830 if test -z $fmod_lib || test -z $fmod_inc; then
831 echo
832 echo "Error: You must specify path to FMOD library and headers"
833 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
834 echo
835 exit 1
836 fi
837 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
838 ;;
839
840 esd)
841 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
842 ;;
malcb8e59f12008-07-02 21:03:08 +0000843
844 pa)
845 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
846 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
847 ;;
848
blueswir12f6a1ab2008-08-21 18:00:53 +0000849 oss|sdl|core|wav|dsound)
850 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
851 ;;
852
malce4c63a62008-07-19 16:15:16 +0000853 *)
malc1c9b2a52008-07-19 16:57:30 +0000854 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000855 echo
856 echo "Error: Unknown driver '$drv' selected"
857 echo "Possible drivers are: $audio_possible_drivers"
858 echo
859 exit 1
860 }
861 ;;
malcc2de5c92008-06-28 19:13:06 +0000862 esac
863done
ths8f28f3f2007-01-05 21:25:54 +0000864
balrog4d3b6f62008-02-10 16:33:14 +0000865##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000866# BrlAPI probe
867
868if test -z "$brlapi" ; then
869 brlapi=no
870cat > $TMPC << EOF
871#include <brlapi.h>
872int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
873EOF
aurel32a40e56d2008-05-04 00:50:25 +0000874 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000875 brlapi=yes
876 fi # brlapi compile test
877fi # -z $brlapi
878
879##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000880# curses probe
881
882if test "$curses" = "yes" ; then
883 curses=no
884 cat > $TMPC << EOF
885#include <curses.h>
886int main(void) { return curses_version(); }
887EOF
pbrookaf896aa2008-03-23 00:47:42 +0000888 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000889 curses=yes
890 fi
891fi # test "$curses"
892
blueswir1414f0da2008-08-15 18:20:52 +0000893##########################################
894# AIO probe
895if test "$aio" = "yes" ; then
896 aio=no
897 cat > $TMPC << EOF
898#include <aio.h>
899int main(void) { return aio_write(NULL); }
900EOF
901 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
902 aio=yes
903 fi
904fi
905
aliguori27463102008-09-27 20:58:43 +0000906##########################################
907# signalfd probe
908cat > $TMPC << EOF
909#define _GNU_SOURCE
910#include <unistd.h>
911#include <sys/syscall.h>
912#include <signal.h>
913int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
914EOF
915
916if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
917 signalfd=yes
918fi
919
920##########################################
921# eventfd probe
922cat > $TMPC << EOF
923#define _GNU_SOURCE
924#include <unistd.h>
925#include <sys/syscall.h>
926int main(void) { return syscall(SYS_eventfd, 0); }
927EOF
928
929if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
930 eventfd=yes
931fi
932
pbrookcc8ae6d2006-04-23 17:57:59 +0000933# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000934if [ -x "`which texi2html 2>/dev/null`" ] && \
935 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000936 build_docs="yes"
937fi
938
bellard11d9f692004-04-02 20:55:59 +0000939if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000940 if test -z "$prefix" ; then
941 prefix="/c/Program Files/Qemu"
942 fi
943 mansuffix=""
944 datasuffix=""
945 docsuffix=""
946 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000947else
pbrook308c3592007-02-27 00:52:01 +0000948 if test -z "$prefix" ; then
949 prefix="/usr/local"
950 fi
951 mansuffix="/share/man"
952 datasuffix="/share/qemu"
953 docsuffix="/share/doc/qemu"
954 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000955fi
bellard5a671352003-10-01 00:13:48 +0000956
bellard43ce4df2003-06-09 19:53:12 +0000957echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000958echo "BIOS directory $prefix$datasuffix"
959echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000960if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000961echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000962echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000963fi
bellard5a671352003-10-01 00:13:48 +0000964echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000965echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000966echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000967echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000968echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000969echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000970echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000971echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000972echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000973echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000974echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000975echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000976echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000977if test "$darwin" = "yes" ; then
978 echo "Cocoa support $cocoa"
979fi
bellard97a847b2003-08-10 21:36:04 +0000980echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000981if test "$sdl" != "no" ; then
982 echo "SDL static link $sdl_static"
983fi
balrog4d3b6f62008-02-10 16:33:14 +0000984echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000985echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +0000986echo "Audio drivers $audio_drv_list"
987echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +0000988echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +0000989echo "VNC TLS support $vnc_tls"
990if test "$vnc_tls" = "yes" ; then
991 echo " TLS CFLAGS $vnc_tls_cflags"
992 echo " TLS LIBS $vnc_tls_libs"
993fi
blueswir131422552007-04-16 18:27:06 +0000994if test -n "$sparc_cpu"; then
995 echo "Target Sparc Arch $sparc_cpu"
996fi
bellard07f4ddb2005-04-23 17:44:28 +0000997echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +0000998echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +0000999echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +00001000[ ! -z "$uname_release" ] && \
1001echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +00001002echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +00001003echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +00001004echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +00001005
bellard97a847b2003-08-10 21:36:04 +00001006if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00001007echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00001008fi
ths20b40c62007-07-11 23:39:45 +00001009if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1010 echo "The error log from compiling the libSDL test is: "
1011 cat /tmp/qemu-$$-sdl-config.log
1012fi
1013rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +00001014#if test "$sdl_static" = "no"; then
1015# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1016#fi
bellard97a847b2003-08-10 21:36:04 +00001017config_mak="config-host.mak"
1018config_h="config-host.h"
1019
bellard7c1f25b2004-04-22 00:02:08 +00001020#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +00001021
ths15d9ca02007-07-31 23:07:32 +00001022test -f $config_h && mv $config_h ${config_h}~
1023
bellard97a847b2003-08-10 21:36:04 +00001024echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +00001025echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001026echo "/* Automatically generated by configure - do not modify */" > $config_h
1027
1028echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001029echo "bindir=\${prefix}$binsuffix" >> $config_mak
1030echo "mandir=\${prefix}$mansuffix" >> $config_mak
1031echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +00001032echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001033echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001034echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +00001035echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001036echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001037echo "HOST_CC=$host_cc" >> $config_mak
1038echo "AR=$ar" >> $config_mak
1039echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001040# XXX: only use CFLAGS and LDFLAGS ?
1041# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1042# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001043echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001044echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1045echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1046echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001047echo "CFLAGS=$CFLAGS" >> $config_mak
1048echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001049echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001050echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001051case "$cpu" in
1052 i386)
1053 echo "ARCH=i386" >> $config_mak
1054 echo "#define HOST_I386 1" >> $config_h
1055 ;;
1056 x86_64)
1057 echo "ARCH=x86_64" >> $config_mak
1058 echo "#define HOST_X86_64 1" >> $config_h
1059 ;;
1060 alpha)
1061 echo "ARCH=alpha" >> $config_mak
1062 echo "#define HOST_ALPHA 1" >> $config_h
1063 ;;
1064 armv4b)
1065 echo "ARCH=arm" >> $config_mak
1066 echo "#define HOST_ARM 1" >> $config_h
1067 ;;
1068 armv4l)
1069 echo "ARCH=arm" >> $config_mak
1070 echo "#define HOST_ARM 1" >> $config_h
1071 ;;
1072 cris)
1073 echo "ARCH=cris" >> $config_mak
1074 echo "#define HOST_CRIS 1" >> $config_h
1075 ;;
1076 hppa)
1077 echo "ARCH=hppa" >> $config_mak
1078 echo "#define HOST_HPPA 1" >> $config_h
1079 ;;
1080 ia64)
1081 echo "ARCH=ia64" >> $config_mak
1082 echo "#define HOST_IA64 1" >> $config_h
1083 ;;
1084 m68k)
1085 echo "ARCH=m68k" >> $config_mak
1086 echo "#define HOST_M68K 1" >> $config_h
1087 ;;
1088 mips)
1089 echo "ARCH=mips" >> $config_mak
1090 echo "#define HOST_MIPS 1" >> $config_h
1091 ;;
1092 mips64)
1093 echo "ARCH=mips64" >> $config_mak
1094 echo "#define HOST_MIPS64 1" >> $config_h
1095 ;;
1096 powerpc)
malc810260a2008-07-23 19:17:46 +00001097 if test "$hostlongbits" = "32"; then
1098 echo "ARCH=ppc" >> $config_mak
1099 echo "#define HOST_PPC 1" >> $config_h
1100 else
1101 echo "ARCH=ppc64" >> $config_mak
1102 echo "#define HOST_PPC64 1" >> $config_h
1103 fi
aurel322408a522008-04-20 20:19:44 +00001104 ;;
1105 s390)
1106 echo "ARCH=s390" >> $config_mak
1107 echo "#define HOST_S390 1" >> $config_h
1108 ;;
1109 sparc)
1110 echo "ARCH=sparc" >> $config_mak
1111 echo "#define HOST_SPARC 1" >> $config_h
1112 ;;
1113 sparc64)
1114 echo "ARCH=sparc64" >> $config_mak
1115 echo "#define HOST_SPARC64 1" >> $config_h
1116 ;;
1117 *)
1118 echo "Unsupported CPU = $cpu"
1119 exit 1
1120 ;;
1121esac
bellard7d132992003-03-06 23:23:54 +00001122if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001123 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1124 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1125fi
bellardb6853692005-06-05 17:10:39 +00001126echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001127if test "$mingw32" = "yes" ; then
1128 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001129 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001130else
1131 cat > $TMPC << EOF
1132#include <byteswap.h>
1133int main(void) { return bswap_32(0); }
1134EOF
pbrookdb7287e2008-02-03 16:27:13 +00001135 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001136 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1137 fi
bellard67b915a2004-03-31 23:37:16 +00001138fi
blueswir1128ab2f2008-08-15 18:33:42 +00001139
1140if [ "$openbsd" = "yes" ] ; then
1141 echo "#define ENOTSUP 4096" >> $config_h
1142fi
1143
bellard83fb7ad2004-07-05 21:25:26 +00001144if test "$darwin" = "yes" ; then
1145 echo "CONFIG_DARWIN=yes" >> $config_mak
1146 echo "#define CONFIG_DARWIN 1" >> $config_h
1147fi
bellardec530c82006-04-25 22:36:06 +00001148if test "$solaris" = "yes" ; then
1149 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001150 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001151 if test "$needs_libsunmath" = "yes" ; then
1152 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1153 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1154 fi
bellardec530c82006-04-25 22:36:06 +00001155fi
blueswir131422552007-04-16 18:27:06 +00001156if test -n "$sparc_cpu"; then
1157 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1158 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1159fi
bellard67b915a2004-03-31 23:37:16 +00001160if test "$gdbstub" = "yes" ; then
1161 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1162 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1163fi
bellard97a847b2003-08-10 21:36:04 +00001164if test "$gprof" = "yes" ; then
1165 echo "TARGET_GPROF=yes" >> $config_mak
1166 echo "#define HAVE_GPROF 1" >> $config_h
1167fi
1168if test "$static" = "yes" ; then
1169 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001170 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001171fi
bellard05c2a3e2006-02-08 22:39:17 +00001172if test $profiler = "yes" ; then
1173 echo "#define CONFIG_PROFILER 1" >> $config_h
1174fi
bellardc20709a2004-04-21 23:27:19 +00001175if test "$slirp" = "yes" ; then
1176 echo "CONFIG_SLIRP=yes" >> $config_mak
1177 echo "#define CONFIG_SLIRP 1" >> $config_h
1178fi
ths8a16d272008-07-19 09:56:24 +00001179if test "$vde" = "yes" ; then
1180 echo "CONFIG_VDE=yes" >> $config_mak
1181 echo "#define CONFIG_VDE 1" >> $config_h
1182 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1183fi
malc0c58ac12008-06-25 21:04:05 +00001184for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001185 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001186 echo "$def=yes" >> $config_mak
1187 echo "#define $def 1" >> $config_h
1188done
1189echo "#define AUDIO_DRIVERS \\" >> $config_h
1190for drv in $audio_drv_list; do
1191 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001192 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001193 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001194 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001195 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1196 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001197 elif test "$drv" = "oss"; then
1198 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001199 fi
1200done
1201echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001202if test "$mixemu" = "yes" ; then
1203 echo "CONFIG_MIXEMU=yes" >> $config_mak
1204 echo "#define CONFIG_MIXEMU 1" >> $config_h
1205fi
ths8d5d2d42007-08-25 01:37:51 +00001206if test "$vnc_tls" = "yes" ; then
1207 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1208 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1209 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1210 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1211fi
pbrookb1a550a2006-04-16 13:28:56 +00001212qemu_version=`head $source_path/VERSION`
1213echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001214echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001215
1216echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001217if [ "$source_path_used" = "yes" ]; then
1218 echo "VPATH=$source_path" >> $config_mak
1219fi
bellard97a847b2003-08-10 21:36:04 +00001220echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001221if [ "$build_docs" = "yes" ] ; then
1222 echo "BUILD_DOCS=yes" >> $config_mak
1223fi
bellard49ecc3f2007-11-07 19:25:15 +00001224if test "$static" = "yes"; then
1225 sdl1=$sdl_static
1226else
1227 sdl1=$sdl
1228fi
1229if test "$sdl1" = "yes" ; then
1230 echo "#define CONFIG_SDL 1" >> $config_h
1231 echo "CONFIG_SDL=yes" >> $config_mak
1232 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1233 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1234 else
1235 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1236 fi
1237 if [ "${aa}" = "yes" ] ; then
1238 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1239 else
1240 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1241 fi
1242fi
1243if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001244 echo "#define CONFIG_COCOA 1" >> $config_h
1245 echo "CONFIG_COCOA=yes" >> $config_mak
1246fi
1247if test "$curses" = "yes" ; then
1248 echo "#define CONFIG_CURSES 1" >> $config_h
1249 echo "CONFIG_CURSES=yes" >> $config_mak
1250 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001251fi
aurel322e4d9fb2008-04-08 06:01:02 +00001252if test "$brlapi" = "yes" ; then
1253 echo "CONFIG_BRLAPI=yes" >> $config_mak
1254 echo "#define CONFIG_BRLAPI 1" >> $config_h
1255 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1256fi
blueswir1414f0da2008-08-15 18:20:52 +00001257if test "$aio" = "yes" ; then
1258 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001259 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001260fi
aliguori27463102008-09-27 20:58:43 +00001261if test "$signalfd" = "yes" ; then
1262 echo "#define CONFIG_signalfd 1" >> $config_h
1263fi
1264if test "$eventfd" = "yes" ; then
1265 echo "#define CONFIG_eventfd 1" >> $config_h
1266fi
bellard97a847b2003-08-10 21:36:04 +00001267
bellard83fb7ad2004-07-05 21:25:26 +00001268# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001269if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001270 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001271 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001272 echo "#define _BSD 1" >> $config_h
1273fi
1274
pbrookc5937222006-05-14 11:30:38 +00001275echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1276
pbrookc39e3332007-09-22 16:49:14 +00001277tools=
1278if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1279 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001280 if [ "$linux" = "yes" ] ; then
1281 tools="qemu-nbd\$(EXESUF) $tools"
1282 fi
pbrookc39e3332007-09-22 16:49:14 +00001283fi
1284echo "TOOLS=$tools" >> $config_mak
1285
ths15d9ca02007-07-31 23:07:32 +00001286test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1287
bellard1d14ffa2005-10-30 18:58:22 +00001288for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001289target_dir="$target"
1290config_mak=$target_dir/config.mak
1291config_h=$target_dir/config.h
1292target_cpu=`echo $target | cut -d '-' -f 1`
1293target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001294[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001295[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1296[ "$target_cpu" = "mips" ] && target_bigendian=yes
1297[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1298[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001299[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001300[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001301[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001302[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001303[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001304[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1305[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1306[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001307target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001308target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001309target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001310target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001311case "$target" in
1312 ${target_cpu}-softmmu)
1313 target_softmmu="yes"
1314 ;;
1315 ${target_cpu}-linux-user)
1316 target_user_only="yes"
1317 target_linux_user="yes"
1318 ;;
1319 ${target_cpu}-darwin-user)
1320 target_user_only="yes"
1321 target_darwin_user="yes"
1322 ;;
1323 *)
1324 echo "ERROR: Target '$target' not recognised"
1325 exit 1
1326 ;;
1327esac
ths831b7822007-01-18 20:06:33 +00001328
bellard97ccc682005-07-02 13:32:17 +00001329if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001330 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001331 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001332 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001333 echo "Note that this will disable all output from the virtual graphics card"
1334 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001335 exit 1;
1336fi
1337
bellard7c1f25b2004-04-22 00:02:08 +00001338#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001339
ths15d9ca02007-07-31 23:07:32 +00001340test -f $config_h && mv $config_h ${config_h}~
1341
bellard97a847b2003-08-10 21:36:04 +00001342mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001343mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001344mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001345if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001346 mkdir -p $target_dir/nwfpe
1347fi
1348
bellardec530c82006-04-25 22:36:06 +00001349#
1350# don't use ln -sf as not all "ln -sf" over write the file/link
1351#
1352rm -f $target_dir/Makefile
1353ln -s $source_path/Makefile.target $target_dir/Makefile
1354
bellard97a847b2003-08-10 21:36:04 +00001355
1356echo "# Automatically generated by configure - do not modify" > $config_mak
1357echo "/* Automatically generated by configure - do not modify */" > $config_h
1358
1359
1360echo "include ../config-host.mak" >> $config_mak
1361echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001362
pbrooke5fe0c52006-06-11 13:32:59 +00001363bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001364elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001365target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001366interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1367echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001368
aurel322408a522008-04-20 20:19:44 +00001369case "$target_cpu" in
1370 i386)
1371 echo "TARGET_ARCH=i386" >> $config_mak
1372 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1373 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001374 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001375 then
1376 echo "#define USE_KQEMU 1" >> $config_h
1377 fi
aurel32f2bf0942008-05-05 06:00:27 +00001378 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001379 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001380 then
1381 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1382 else
1383 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1384 fi
aurel322408a522008-04-20 20:19:44 +00001385 ;;
1386 x86_64)
1387 echo "TARGET_ARCH=x86_64" >> $config_mak
1388 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1389 echo "#define TARGET_I386 1" >> $config_h
1390 echo "#define TARGET_X86_64 1" >> $config_h
1391 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1392 then
1393 echo "#define USE_KQEMU 1" >> $config_h
1394 fi
1395 ;;
1396 alpha)
1397 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001398 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001399 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1400 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001401 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001402 ;;
1403 arm|armeb)
1404 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001405 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1406 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001407 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001408 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001409 ;;
1410 cris)
1411 echo "TARGET_ARCH=cris" >> $config_mak
1412 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1413 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001414 ;;
1415 m68k)
1416 echo "TARGET_ARCH=m68k" >> $config_mak
1417 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1418 echo "#define TARGET_M68K 1" >> $config_h
1419 bflt="yes"
1420 ;;
1421 mips|mipsel)
1422 echo "TARGET_ARCH=mips" >> $config_mak
1423 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1424 echo "#define TARGET_MIPS 1" >> $config_h
1425 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1426 ;;
1427 mipsn32|mipsn32el)
1428 echo "TARGET_ARCH=mipsn32" >> $config_mak
1429 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1430 echo "#define TARGET_MIPS 1" >> $config_h
1431 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1432 ;;
1433 mips64|mips64el)
1434 echo "TARGET_ARCH=mips64" >> $config_mak
1435 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1436 echo "#define TARGET_MIPS 1" >> $config_h
1437 echo "#define TARGET_MIPS64 1" >> $config_h
1438 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1439 ;;
1440 ppc)
1441 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001442 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001443 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1444 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001445 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001446 ;;
1447 ppcemb)
1448 echo "TARGET_ARCH=ppcemb" >> $config_mak
1449 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001450 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001451 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1452 echo "#define TARGET_PPC 1" >> $config_h
1453 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001454 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001455 ;;
1456 ppc64)
1457 echo "TARGET_ARCH=ppc64" >> $config_mak
1458 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001459 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001460 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1461 echo "#define TARGET_PPC 1" >> $config_h
1462 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001463 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001464 ;;
1465 ppc64abi32)
1466 echo "TARGET_ARCH=ppc64" >> $config_mak
1467 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1468 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001469 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001470 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1471 echo "#define TARGET_PPC 1" >> $config_h
1472 echo "#define TARGET_PPC64 1" >> $config_h
1473 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001474 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001475 ;;
1476 sh4|sh4eb)
1477 echo "TARGET_ARCH=sh4" >> $config_mak
1478 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1479 echo "#define TARGET_SH4 1" >> $config_h
1480 bflt="yes"
aurel320b6d3ae2008-09-15 07:43:43 +00001481 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001482 ;;
1483 sparc)
1484 echo "TARGET_ARCH=sparc" >> $config_mak
1485 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1486 echo "#define TARGET_SPARC 1" >> $config_h
1487 ;;
1488 sparc64)
1489 echo "TARGET_ARCH=sparc64" >> $config_mak
1490 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1491 echo "#define TARGET_SPARC 1" >> $config_h
1492 echo "#define TARGET_SPARC64 1" >> $config_h
1493 elfload32="yes"
1494 ;;
1495 sparc32plus)
1496 echo "TARGET_ARCH=sparc64" >> $config_mak
1497 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1498 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1499 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1500 echo "#define TARGET_SPARC 1" >> $config_h
1501 echo "#define TARGET_SPARC64 1" >> $config_h
1502 echo "#define TARGET_ABI32 1" >> $config_h
1503 ;;
1504 *)
1505 echo "Unsupported target CPU"
1506 exit 1
1507 ;;
1508esac
bellardde83cd02003-06-15 20:25:43 +00001509if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001510 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1511 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1512fi
1513if test "$target_softmmu" = "yes" ; then
1514 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1515 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001516fi
bellard997344f2003-10-27 21:10:39 +00001517if test "$target_user_only" = "yes" ; then
1518 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1519 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1520fi
ths831b7822007-01-18 20:06:33 +00001521if test "$target_linux_user" = "yes" ; then
1522 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1523 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1524fi
1525if test "$target_darwin_user" = "yes" ; then
1526 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1527 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1528fi
bellardde83cd02003-06-15 20:25:43 +00001529
aurel320938cda2008-04-11 21:36:06 +00001530if test "$target_cpu" = "arm" \
1531 -o "$target_cpu" = "armeb" \
1532 -o "$target_cpu" = "m68k" \
1533 -o "$target_cpu" = "mips" \
1534 -o "$target_cpu" = "mipsel" \
1535 -o "$target_cpu" = "mipsn32" \
1536 -o "$target_cpu" = "mipsn32el" \
1537 -o "$target_cpu" = "mips64" \
1538 -o "$target_cpu" = "mips64el" \
1539 -o "$target_cpu" = "sparc" \
1540 -o "$target_cpu" = "sparc64" \
1541 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001542 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1543 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1544fi
pbrooke5fe0c52006-06-11 13:32:59 +00001545if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1546 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1547 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1548fi
pbrookbd0c5662008-05-29 14:34:11 +00001549if test "$target_user_only" = "yes" \
1550 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1551 echo "#define USE_NPTL 1" >> $config_h
1552fi
blueswir1cb33da52007-10-09 16:34:29 +00001553# 32 bit ELF loader in addition to native 64 bit loader?
1554if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1555 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1556 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1557fi
bellard5b0753e2005-03-01 21:37:28 +00001558
ths15d9ca02007-07-31 23:07:32 +00001559test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1560
bellard97a847b2003-08-10 21:36:04 +00001561done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001562
1563# build tree in object directory if source path is different from current one
1564if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001565 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001566 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001567 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001568 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001569 for dir in $DIRS ; do
1570 mkdir -p $dir
1571 done
bellardec530c82006-04-25 22:36:06 +00001572 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001573 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001574 rm -f $f
1575 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001576 done
1577fi
bellard7d132992003-03-06 23:23:54 +00001578
bellard97a847b2003-08-10 21:36:04 +00001579rm -f $TMPO $TMPC $TMPE $TMPS