blob: 74ce443ff946d15fde0c2175a6ba41f48ba41ff5 [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=""
ths8d5d2d42007-08-25 01:37:51 +000095vnc_tls="yes"
pbrookb1a550a2006-04-16 13:28:56 +000096bsd="no"
bellard5327cf42005-01-10 23:18:50 +000097linux="no"
bellardc9ec1fe2005-02-10 21:55:30 +000098kqemu="no"
bellard05c2a3e2006-02-08 22:39:17 +000099profiler="no"
bellard5b0753e2005-03-01 21:37:28 +0000100cocoa="no"
bellard97ccc682005-07-02 13:32:17 +0000101check_gfx="yes"
bellard1aff3812005-11-02 22:30:45 +0000102check_gcc="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000103softmmu="yes"
ths831b7822007-01-18 20:06:33 +0000104linux_user="no"
105darwin_user="no"
pbrookcc8ae6d2006-04-23 17:57:59 +0000106build_docs="no"
pbrookc5937222006-05-14 11:30:38 +0000107uname_release=""
balrog4d3b6f62008-02-10 16:33:14 +0000108curses="yes"
blueswir1414f0da2008-08-15 18:20:52 +0000109aio="yes"
pbrookbd0c5662008-05-29 14:34:11 +0000110nptl="yes"
malc8ff9cbf2008-06-23 18:33:30 +0000111mixemu="no"
bellard7d132992003-03-06 23:23:54 +0000112
113# OS specific
114targetos=`uname -s`
115case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000116CYGWIN*)
117mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000118OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000119if [ "$cpu" = "i386" ] ; then
120 kqemu="yes"
121fi
malcc2de5c92008-06-28 19:13:06 +0000122audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000123;;
bellard67b915a2004-03-31 23:37:16 +0000124MINGW32*)
125mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000126if [ "$cpu" = "i386" ] ; then
127 kqemu="yes"
128fi
malcc2de5c92008-06-28 19:13:06 +0000129audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000130;;
ths5c40d2b2007-06-23 16:03:36 +0000131GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000132audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000133audio_possible_drivers="oss sdl esd"
ths5c40d2b2007-06-23 16:03:36 +0000134if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
135 kqemu="yes"
136fi
137;;
bellard7d3505c2004-05-12 19:32:15 +0000138FreeBSD)
139bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000140audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000141audio_possible_drivers="oss sdl esd"
bellarde99f9062005-07-28 21:45:38 +0000142if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000143 kqemu="yes"
144fi
bellard7d3505c2004-05-12 19:32:15 +0000145;;
146NetBSD)
147bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000148audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000149audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000150;;
151OpenBSD)
152bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000153openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000154audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000155audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000156;;
bellard83fb7ad2004-07-05 21:25:26 +0000157Darwin)
158bsd="yes"
159darwin="yes"
ths831b7822007-01-18 20:06:33 +0000160darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000161cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000162audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000163audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000164OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000165OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000166;;
bellardec530c82006-04-25 22:36:06 +0000167SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000168 solaris="yes"
169 make="gmake"
170 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000171 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000172 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000173 # have to select again, because `uname -m` returns i86pc
174 # even on an x86_64 box.
175 solariscpu=`isainfo -k`
176 if test "${solariscpu}" = "amd64" ; then
177 cpu="x86_64"
178 fi
thsc2b84fa2007-02-10 23:21:21 +0000179 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000180 if test "$solarisrev" -le 9 ; then
181 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
182 needs_libsunmath="yes"
183 else
184 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
185 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
186 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
187 echo "Studio 11 can be downloaded from www.sun.com."
188 exit 1
189 fi
190 fi
191 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000192 kqemu="yes"
193 fi
ths86b2bd92007-02-11 00:31:33 +0000194 fi
ths6b4d2ba2007-05-13 18:02:43 +0000195 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000196 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000197 fi
malcc2de5c92008-06-28 19:13:06 +0000198 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000199;;
bellard1d14ffa2005-10-30 18:58:22 +0000200*)
malc0c58ac12008-06-25 21:04:05 +0000201audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000202audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000203linux="yes"
ths831b7822007-01-18 20:06:33 +0000204linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000205if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000206 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000207 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000208fi
bellardfb065182004-11-09 23:09:44 +0000209;;
bellard7d132992003-03-06 23:23:54 +0000210esac
211
bellard7d3505c2004-05-12 19:32:15 +0000212if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000213 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000214 make="gmake"
215 fi
bellard7d3505c2004-05-12 19:32:15 +0000216fi
217
bellard7d132992003-03-06 23:23:54 +0000218# find source path
pbrookad064842006-04-16 12:41:07 +0000219source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000220source_path_used="no"
221workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000222if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000223 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000224else
225 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000226fi
pbrook724db112008-02-03 19:20:13 +0000227[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000228
bellard85aa5182007-11-11 20:17:03 +0000229werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000230# generate compile errors on warnings for development builds
231#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
232#werror="yes";
233#fi
bellard85aa5182007-11-11 20:17:03 +0000234
bellard7d132992003-03-06 23:23:54 +0000235for opt do
pbrooka46e4032006-04-29 23:05:22 +0000236 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000237 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000238 --help|-h) show_help=yes
239 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000240 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000241 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000242 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000243 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000244 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000245 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000246 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000247 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000248 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000249 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000250 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000251 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000252 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000253 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000254 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000255 ;;
pbrook6a882642006-04-17 13:57:12 +0000256 --install=*) install="$optarg"
257 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000258 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000259 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000260 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000261 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000262 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000263 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000264 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000265 ;;
bellard7d132992003-03-06 23:23:54 +0000266 --enable-gprof) gprof="yes"
267 ;;
bellard43ce4df2003-06-09 19:53:12 +0000268 --static) static="yes"
269 ;;
bellard97a847b2003-08-10 21:36:04 +0000270 --disable-sdl) sdl="no"
271 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000272 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000273 ;;
malcc2de5c92008-06-28 19:13:06 +0000274 --fmod-inc=*) fmod_inc="$optarg"
275 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000276 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000277 ;;
278 --audio-drv-list=*) audio_drv_list="$optarg"
279 ;;
ths8d5d2d42007-08-25 01:37:51 +0000280 --disable-vnc-tls) vnc_tls="no"
281 ;;
bellardb93aebe2007-02-15 22:58:18 +0000282 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
bellard1d14ffa2005-10-30 18:58:22 +0000283 ;;
bellard443f1372004-06-04 11:13:20 +0000284 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000285 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000286 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000287 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000288 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000289 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000290 --disable-brlapi) brlapi="no"
291 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000292 --enable-profiler) profiler="yes"
293 ;;
malcc2de5c92008-06-28 19:13:06 +0000294 --enable-cocoa)
295 cocoa="yes" ;
296 sdl="no" ;
297 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000298 ;;
bellard97ccc682005-07-02 13:32:17 +0000299 --disable-gfx-check) check_gfx="no"
300 ;;
bellard1aff3812005-11-02 22:30:45 +0000301 --disable-gcc-check) check_gcc="no"
302 ;;
pbrookcad25d62006-03-19 16:31:11 +0000303 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000304 ;;
pbrookcad25d62006-03-19 16:31:11 +0000305 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000306 ;;
ths831b7822007-01-18 20:06:33 +0000307 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000308 ;;
ths831b7822007-01-18 20:06:33 +0000309 --enable-linux-user) linux_user="yes"
310 ;;
311 --disable-darwin-user) darwin_user="no"
312 ;;
313 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000314 ;;
pbrookc5937222006-05-14 11:30:38 +0000315 --enable-uname-release=*) uname_release="$optarg"
316 ;;
blueswir131422552007-04-16 18:27:06 +0000317 --sparc_cpu=*)
318 sparc_cpu="$optarg"
319 case $sparc_cpu in
320 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
321 target_cpu="sparc"; cpu="sparc" ;;
322 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
323 target_cpu="sparc"; cpu="sparc" ;;
324 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
325 target_cpu="sparc64"; cpu="sparc64" ;;
326 *) echo "undefined SPARC architecture. Exiting";exit 1;;
327 esac
328 ;;
bellard85aa5182007-11-11 20:17:03 +0000329 --enable-werror) werror="yes"
330 ;;
331 --disable-werror) werror="no"
332 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000333 --disable-curses) curses="no"
334 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000335 --disable-nptl) nptl="no"
336 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000337 --enable-mixemu) mixemu="yes"
338 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000339 --disable-aio) aio="no"
340 ;;
balrog7f1559c2007-11-17 10:24:32 +0000341 *) echo "ERROR: unknown option $opt"; show_help="yes"
342 ;;
bellard7d132992003-03-06 23:23:54 +0000343 esac
344done
345
ths209afb92007-03-25 20:55:00 +0000346if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
347 AIOLIBS=
348else
ths4259e1a2007-11-05 13:27:21 +0000349 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
350 AIOLIBS="-lrt -lpthread"
ths209afb92007-03-25 20:55:00 +0000351fi
352
ths6f30fa82007-01-05 01:00:47 +0000353# default flags for all hosts
354CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
355LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000356if test "$werror" = "yes" ; then
357CFLAGS="$CFLAGS -Werror"
358fi
ths6f30fa82007-01-05 01:00:47 +0000359
blueswir131422552007-04-16 18:27:06 +0000360#
361# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
362# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
363#
bellard40293e52008-01-31 11:32:10 +0000364case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000365 sparc) if test -z "$sparc_cpu" ; then
366 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
367 ARCH_LDFLAGS="-m32"
368 else
369 ARCH_CFLAGS="${SP_CFLAGS}"
370 ARCH_LDFLAGS="${SP_LDFLAGS}"
371 fi
372 ;;
373 sparc64) if test -z "$sparc_cpu" ; then
374 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
375 ARCH_LDFLAGS="-m64"
376 else
377 ARCH_CFLAGS="${SP_CFLAGS}"
378 ARCH_LDFLAGS="${SP_LDFLAGS}"
379 fi
380 ;;
ths76d83bd2007-11-18 21:22:10 +0000381 s390)
382 ARCH_CFLAGS="-march=z900"
383 ;;
bellard40293e52008-01-31 11:32:10 +0000384 i386)
385 ARCH_CFLAGS="-m32"
386 ARCH_LDFLAGS="-m32"
387 ;;
388 x86_64)
389 ARCH_CFLAGS="-m64"
390 ARCH_LDFLAGS="-m64"
391 ;;
blueswir131422552007-04-16 18:27:06 +0000392esac
393
pbrookaf5db582006-04-08 14:26:41 +0000394if test x"$show_help" = x"yes" ; then
395cat << EOF
396
397Usage: configure [options]
398Options: [defaults in brackets after descriptions]
399
400EOF
401echo "Standard options:"
402echo " --help print this message"
403echo " --prefix=PREFIX install in PREFIX [$prefix]"
404echo " --interp-prefix=PREFIX where to find shared libraries, etc."
405echo " use %M for cpu name [$interp_prefix]"
406echo " --target-list=LIST set target list [$target_list]"
407echo ""
408echo "kqemu kernel acceleration support:"
409echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000410echo ""
411echo "Advanced options (experts only):"
412echo " --source-path=PATH path of source code [$source_path]"
413echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
414echo " --cc=CC use C compiler CC [$cc]"
415echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
416echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000417echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000418echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000419echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000420echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000421echo " --enable-cocoa enable COCOA (Mac OS X only)"
422echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
malcc2de5c92008-06-28 19:13:06 +0000423echo " --audio-drv-list=LIST set audio drivers list:"
424echo " Available drivers: $audio_possible_drivers"
425echo " --audio-card-list=LIST set list of additional emulated audio cards"
426echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000427echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000428echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000429echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000430echo " --disable-curses disable curses output"
pbrookbd0c5662008-05-29 14:34:11 +0000431echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000432echo " --enable-system enable all system emulation targets"
433echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000434echo " --enable-linux-user enable all linux usermode emulation targets"
435echo " --disable-linux-user disable all linux usermode emulation targets"
436echo " --enable-darwin-user enable all darwin usermode emulation targets"
437echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000438echo " --fmod-lib path to FMOD library"
439echo " --fmod-inc path to FMOD includes"
pbrookc5937222006-05-14 11:30:38 +0000440echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000441echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000442echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000443echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000444echo ""
ths5bf08932006-12-23 00:33:26 +0000445echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000446exit 1
447fi
448
bellard7d132992003-03-06 23:23:54 +0000449cc="${cross_prefix}${cc}"
450ar="${cross_prefix}${ar}"
451strip="${cross_prefix}${strip}"
452
pbrook064aae12006-05-08 00:51:44 +0000453# check that the C compiler works.
454cat > $TMPC <<EOF
455int main(void) {}
456EOF
457
pbrookdb7287e2008-02-03 16:27:13 +0000458if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000459 : C compiler works ok
460else
461 echo "ERROR: \"$cc\" either does not exist or does not work"
462 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000463fi
464
bellard67b915a2004-03-31 23:37:16 +0000465if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000466 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000467 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000468 oss="no"
bellard67b915a2004-03-31 23:37:16 +0000469fi
470
ths5fafdf22007-09-16 21:08:06 +0000471# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000472if test "$check_gcc" = "yes" ; then
473 cat > $TMPC <<EOF
474#if __GNUC__ < 4
475#error gcc3
476#endif
477int main(){return 0;}
478EOF
pbrookdb7287e2008-02-03 16:27:13 +0000479 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000480 echo "WARNING: \"$cc\" looks like gcc 4.x"
481 found_compat_cc="no"
482 if test "$gcc3_search" = "yes" ; then
483 echo "Looking for gcc 3.x"
484 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000485 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000486 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000487 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000488 found_compat_cc="yes"
489 break
490 fi
491 done
492 if test "$found_compat_cc" = "no" ; then
493 echo "gcc 3.x not found!"
494 fi
495 fi
496 if test "$found_compat_cc" = "no" ; then
497 echo "QEMU is known to have problems when compiled with gcc 4.x"
498 echo "It is recommended that you use gcc 3.x to build QEMU"
499 echo "To use this compiler anyway, configure with --disable-gcc-check"
500 exit 1;
501 fi
502 fi
503fi
504
bellardec530c82006-04-25 22:36:06 +0000505#
506# Solaris specific configure tool chain decisions
507#
508if test "$solaris" = "yes" ; then
509 #
510 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
511 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000512 #
bellardec530c82006-04-25 22:36:06 +0000513 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
514 solgcc=`which $cc`
515 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
516 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
517 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
518 echo "or get the latest patch from SunSolve for gcc"
519 exit 1
520 fi
521 fi
522 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
523 if test -z "$solinst" ; then
524 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
525 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
526 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
527 exit 1
528 fi
529 if test "$solinst" = "/usr/sbin/install" ; then
530 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
531 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
532 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
533 exit 1
534 fi
bellardec530c82006-04-25 22:36:06 +0000535 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
536 if test -z "$sol_ar" ; then
537 echo "Error: No path includes ar"
538 if test -f /usr/ccs/bin/ar ; then
539 echo "Add /usr/ccs/bin to your path and rerun configure"
540 fi
541 exit 1
542 fi
ths5fafdf22007-09-16 21:08:06 +0000543fi
bellardec530c82006-04-25 22:36:06 +0000544
545
bellard5327cf42005-01-10 23:18:50 +0000546if test -z "$target_list" ; then
547# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000548 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000549 target_list="\
550i386-softmmu \
551x86_64-softmmu \
552arm-softmmu \
553cris-softmmu \
554m68k-softmmu \
555mips-softmmu \
556mipsel-softmmu \
557mips64-softmmu \
558mips64el-softmmu \
559ppc-softmmu \
560ppcemb-softmmu \
561ppc64-softmmu \
562sh4-softmmu \
563sh4eb-softmmu \
564sparc-softmmu \
565"
pbrook0a8e90f2006-03-19 14:54:16 +0000566 fi
bellard5327cf42005-01-10 23:18:50 +0000567# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000568 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000569 target_list="${target_list}\
570i386-linux-user \
571x86_64-linux-user \
572alpha-linux-user \
573arm-linux-user \
574armeb-linux-user \
575cris-linux-user \
576m68k-linux-user \
577mips-linux-user \
578mipsel-linux-user \
579ppc-linux-user \
580ppc64-linux-user \
581ppc64abi32-linux-user \
582sh4-linux-user \
583sh4eb-linux-user \
584sparc-linux-user \
585sparc64-linux-user \
586sparc32plus-linux-user \
587"
ths831b7822007-01-18 20:06:33 +0000588 fi
589# the following are Darwin specific
590 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000591 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000592 fi
bellard6e20a452005-06-05 15:56:02 +0000593else
pbrookb1a550a2006-04-16 13:28:56 +0000594 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000595fi
pbrook0a8e90f2006-03-19 14:54:16 +0000596if test -z "$target_list" ; then
597 echo "No targets enabled"
598 exit 1
599fi
bellard5327cf42005-01-10 23:18:50 +0000600
bellard7d132992003-03-06 23:23:54 +0000601if test -z "$cross_prefix" ; then
602
603# ---
604# big/little endian test
605cat > $TMPC << EOF
606#include <inttypes.h>
607int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000608 volatile uint32_t i=0x01234567;
609 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000610}
611EOF
612
pbrookdb7287e2008-02-03 16:27:13 +0000613if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000614$TMPE && bigendian="yes"
615else
616echo big/little test failed
617fi
618
619else
620
621# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000622if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000623 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000624 -o "$cpu" = "m68k" \
625 -o "$cpu" = "mips" \
626 -o "$cpu" = "mips64" \
627 -o "$cpu" = "powerpc" \
628 -o "$cpu" = "s390" \
629 -o "$cpu" = "sparc" \
630 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000631 bigendian="yes"
632fi
633
634fi
635
bellardb6853692005-06-05 17:10:39 +0000636# host long bits test
637hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000638if test "$cpu" = "x86_64" \
639 -o "$cpu" = "alpha" \
640 -o "$cpu" = "ia64" \
641 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000642 hostlongbits="64"
643fi
644
malc810260a2008-07-23 19:17:46 +0000645# ppc specific hostlongbits selection
646if test "$cpu" = "powerpc" ; then
647 cat > $TMPC <<EOF
648int main(void){return sizeof(long);}
649EOF
650
651 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
652 $TMPE
653 case $? in
654 4) hostlongbits="32";;
655 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000656 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000657 esac
658 else
659 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000660 exit 1
malc810260a2008-07-23 19:17:46 +0000661 fi
662fi
663
bellarde8cd23d2003-06-25 16:08:13 +0000664# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000665cat > $TMPC <<EOF
666int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000667}
668EOF
669
pbrookbd0c5662008-05-29 14:34:11 +0000670# Check host NPTL support
671cat > $TMPC <<EOF
672#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000673#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000674void foo()
675{
676#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
677#error bork
678#endif
679}
680EOF
681
682if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
683 :
684else
685 nptl="no"
686fi
687
bellard11d9f692004-04-02 20:55:59 +0000688##########################################
689# SDL probe
690
691sdl_too_old=no
692
693if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000694 sdl_config="sdl-config"
695 sdl=no
696 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000697
ths069b0bd2007-07-12 00:27:15 +0000698 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
699 # win32 cross compilation case
700 sdl_config="i386-mingw32msvc-sdl-config"
701 sdl=yes
702 else
703 # normal SDL probe
bellard11d9f692004-04-02 20:55:59 +0000704cat > $TMPC << EOF
705#include <SDL.h>
706#undef main /* We don't want SDL to override our main() */
707int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
708EOF
pbrookdb7287e2008-02-03 16:27:13 +0000709 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
ths069b0bd2007-07-12 00:27:15 +0000710 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
711 if test "$_sdlversion" -lt 121 ; then
712 sdl_too_old=yes
713 else
714 if test "$cocoa" = "no" ; then
715 sdl=yes
716 fi
717 fi
bellard11d9f692004-04-02 20:55:59 +0000718
ths069b0bd2007-07-12 00:27:15 +0000719 # static link with sdl ?
720 if test "$sdl" = "yes" ; then
721 aa="no"
722 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
723 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
724 if [ "$aa" = "yes" ] ; then
725 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
726 fi
727
ths8281db42007-11-18 21:37:07 +0000728 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
ths069b0bd2007-07-12 00:27:15 +0000729 sdl_static=yes
730 fi
731 fi # static link
732 fi # sdl compile test
733 fi # cross compilation
bellard11d9f692004-04-02 20:55:59 +0000734else
ths069b0bd2007-07-12 00:27:15 +0000735 # Make sure to disable cocoa if sdl was set
736 if test "$sdl" = "yes" ; then
737 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000738 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000739 fi
bellarda6e022a2004-04-02 21:55:47 +0000740fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000741
ths8f28f3f2007-01-05 21:25:54 +0000742##########################################
ths8d5d2d42007-08-25 01:37:51 +0000743# VNC TLS detection
744if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000745cat > $TMPC <<EOF
746#include <gnutls/gnutls.h>
747int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
748EOF
749 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
750 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
751 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
752 $vnc_tls_libs 2> /dev/null ; then
753 :
754 else
755 vnc_tls="no"
756 fi
ths8d5d2d42007-08-25 01:37:51 +0000757fi
758
759##########################################
ths8a16d272008-07-19 09:56:24 +0000760# vde libraries probe
761if test "$vde" = "yes" ; then
762 cat > $TMPC << EOF
763#include <libvdeplug.h>
764int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
765EOF
766 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
767 :
768 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000769 vde="no"
ths8a16d272008-07-19 09:56:24 +0000770 fi
771fi
772
773##########################################
malcc2de5c92008-06-28 19:13:06 +0000774# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000775
malcc2de5c92008-06-28 19:13:06 +0000776audio_drv_probe()
777{
778 drv=$1
779 hdr=$2
780 lib=$3
781 exp=$4
782 cfl=$5
783 cat > $TMPC << EOF
784#include <$hdr>
785int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000786EOF
malcc2de5c92008-06-28 19:13:06 +0000787 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
788 :
789 else
790 echo
791 echo "Error: $drv check failed"
792 echo "Make sure to have the $drv libs and headers installed."
793 echo
794 exit 1
795 fi
796}
797
malc2fa7d3b2008-07-29 12:58:44 +0000798audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000799for drv in $audio_drv_list; do
800 case $drv in
801 alsa)
802 audio_drv_probe $drv alsa/asoundlib.h -lasound \
803 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
804 ;;
805
806 fmod)
807 if test -z $fmod_lib || test -z $fmod_inc; then
808 echo
809 echo "Error: You must specify path to FMOD library and headers"
810 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
811 echo
812 exit 1
813 fi
814 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
815 ;;
816
817 esd)
818 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
819 ;;
malcb8e59f12008-07-02 21:03:08 +0000820
821 pa)
822 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
823 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
824 ;;
825
malce4c63a62008-07-19 16:15:16 +0000826 *)
malc1c9b2a52008-07-19 16:57:30 +0000827 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000828 echo
829 echo "Error: Unknown driver '$drv' selected"
830 echo "Possible drivers are: $audio_possible_drivers"
831 echo
832 exit 1
833 }
834 ;;
835
malc16b98a92008-08-13 21:48:01 +0000836 oss|sdl|core|wav|dsound)
837 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
838 ;;
839
malcc2de5c92008-06-28 19:13:06 +0000840 esac
841done
ths8f28f3f2007-01-05 21:25:54 +0000842
balrog4d3b6f62008-02-10 16:33:14 +0000843##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000844# BrlAPI probe
845
846if test -z "$brlapi" ; then
847 brlapi=no
848cat > $TMPC << EOF
849#include <brlapi.h>
850int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
851EOF
aurel32a40e56d2008-05-04 00:50:25 +0000852 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000853 brlapi=yes
854 fi # brlapi compile test
855fi # -z $brlapi
856
857##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000858# curses probe
859
860if test "$curses" = "yes" ; then
861 curses=no
862 cat > $TMPC << EOF
863#include <curses.h>
864int main(void) { return curses_version(); }
865EOF
pbrookaf896aa2008-03-23 00:47:42 +0000866 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000867 curses=yes
868 fi
869fi # test "$curses"
870
blueswir1414f0da2008-08-15 18:20:52 +0000871##########################################
872# AIO probe
873if test "$aio" = "yes" ; then
874 aio=no
875 cat > $TMPC << EOF
876#include <aio.h>
877int main(void) { return aio_write(NULL); }
878EOF
879 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
880 aio=yes
881 fi
882fi
883
pbrookcc8ae6d2006-04-23 17:57:59 +0000884# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000885if [ -x "`which texi2html 2>/dev/null`" ] && \
886 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000887 build_docs="yes"
888fi
889
bellard11d9f692004-04-02 20:55:59 +0000890if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000891 if test -z "$prefix" ; then
892 prefix="/c/Program Files/Qemu"
893 fi
894 mansuffix=""
895 datasuffix=""
896 docsuffix=""
897 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000898else
pbrook308c3592007-02-27 00:52:01 +0000899 if test -z "$prefix" ; then
900 prefix="/usr/local"
901 fi
902 mansuffix="/share/man"
903 datasuffix="/share/qemu"
904 docsuffix="/share/doc/qemu"
905 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000906fi
bellard5a671352003-10-01 00:13:48 +0000907
bellard43ce4df2003-06-09 19:53:12 +0000908echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000909echo "BIOS directory $prefix$datasuffix"
910echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000911if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000912echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000913echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000914fi
bellard5a671352003-10-01 00:13:48 +0000915echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000916echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000917echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000918echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000919echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000920echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000921echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000922echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000923echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000924echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000925echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000926echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000927echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000928if test "$darwin" = "yes" ; then
929 echo "Cocoa support $cocoa"
930fi
bellard97a847b2003-08-10 21:36:04 +0000931echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000932if test "$sdl" != "no" ; then
933 echo "SDL static link $sdl_static"
934fi
balrog4d3b6f62008-02-10 16:33:14 +0000935echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000936echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +0000937echo "Audio drivers $audio_drv_list"
938echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +0000939echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +0000940echo "VNC TLS support $vnc_tls"
941if test "$vnc_tls" = "yes" ; then
942 echo " TLS CFLAGS $vnc_tls_cflags"
943 echo " TLS LIBS $vnc_tls_libs"
944fi
blueswir131422552007-04-16 18:27:06 +0000945if test -n "$sparc_cpu"; then
946 echo "Target Sparc Arch $sparc_cpu"
947fi
bellard07f4ddb2005-04-23 17:44:28 +0000948echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +0000949echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +0000950echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +0000951[ ! -z "$uname_release" ] && \
952echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +0000953echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +0000954echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +0000955echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +0000956
bellard97a847b2003-08-10 21:36:04 +0000957if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +0000958echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +0000959fi
ths20b40c62007-07-11 23:39:45 +0000960if [ -s /tmp/qemu-$$-sdl-config.log ]; then
961 echo "The error log from compiling the libSDL test is: "
962 cat /tmp/qemu-$$-sdl-config.log
963fi
964rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +0000965#if test "$sdl_static" = "no"; then
966# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
967#fi
bellard97a847b2003-08-10 21:36:04 +0000968config_mak="config-host.mak"
969config_h="config-host.h"
970
bellard7c1f25b2004-04-22 00:02:08 +0000971#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +0000972
ths15d9ca02007-07-31 23:07:32 +0000973test -f $config_h && mv $config_h ${config_h}~
974
bellard97a847b2003-08-10 21:36:04 +0000975echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +0000976echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000977echo "/* Automatically generated by configure - do not modify */" > $config_h
978
979echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000980echo "bindir=\${prefix}$binsuffix" >> $config_mak
981echo "mandir=\${prefix}$mansuffix" >> $config_mak
982echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +0000983echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000984echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000985echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +0000986echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000987echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000988echo "HOST_CC=$host_cc" >> $config_mak
989echo "AR=$ar" >> $config_mak
990echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +0000991# XXX: only use CFLAGS and LDFLAGS ?
992# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
993# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +0000994echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +0000995echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
996echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
997echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000998echo "CFLAGS=$CFLAGS" >> $config_mak
999echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001000echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001001echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001002case "$cpu" in
1003 i386)
1004 echo "ARCH=i386" >> $config_mak
1005 echo "#define HOST_I386 1" >> $config_h
1006 ;;
1007 x86_64)
1008 echo "ARCH=x86_64" >> $config_mak
1009 echo "#define HOST_X86_64 1" >> $config_h
1010 ;;
1011 alpha)
1012 echo "ARCH=alpha" >> $config_mak
1013 echo "#define HOST_ALPHA 1" >> $config_h
1014 ;;
1015 armv4b)
1016 echo "ARCH=arm" >> $config_mak
1017 echo "#define HOST_ARM 1" >> $config_h
1018 ;;
1019 armv4l)
1020 echo "ARCH=arm" >> $config_mak
1021 echo "#define HOST_ARM 1" >> $config_h
1022 ;;
1023 cris)
1024 echo "ARCH=cris" >> $config_mak
1025 echo "#define HOST_CRIS 1" >> $config_h
1026 ;;
1027 hppa)
1028 echo "ARCH=hppa" >> $config_mak
1029 echo "#define HOST_HPPA 1" >> $config_h
1030 ;;
1031 ia64)
1032 echo "ARCH=ia64" >> $config_mak
1033 echo "#define HOST_IA64 1" >> $config_h
1034 ;;
1035 m68k)
1036 echo "ARCH=m68k" >> $config_mak
1037 echo "#define HOST_M68K 1" >> $config_h
1038 ;;
1039 mips)
1040 echo "ARCH=mips" >> $config_mak
1041 echo "#define HOST_MIPS 1" >> $config_h
1042 ;;
1043 mips64)
1044 echo "ARCH=mips64" >> $config_mak
1045 echo "#define HOST_MIPS64 1" >> $config_h
1046 ;;
1047 powerpc)
malc810260a2008-07-23 19:17:46 +00001048 if test "$hostlongbits" = "32"; then
1049 echo "ARCH=ppc" >> $config_mak
1050 echo "#define HOST_PPC 1" >> $config_h
1051 else
1052 echo "ARCH=ppc64" >> $config_mak
1053 echo "#define HOST_PPC64 1" >> $config_h
1054 fi
aurel322408a522008-04-20 20:19:44 +00001055 ;;
1056 s390)
1057 echo "ARCH=s390" >> $config_mak
1058 echo "#define HOST_S390 1" >> $config_h
1059 ;;
1060 sparc)
1061 echo "ARCH=sparc" >> $config_mak
1062 echo "#define HOST_SPARC 1" >> $config_h
1063 ;;
1064 sparc64)
1065 echo "ARCH=sparc64" >> $config_mak
1066 echo "#define HOST_SPARC64 1" >> $config_h
1067 ;;
1068 *)
1069 echo "Unsupported CPU = $cpu"
1070 exit 1
1071 ;;
1072esac
bellard7d132992003-03-06 23:23:54 +00001073if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001074 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1075 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1076fi
bellardb6853692005-06-05 17:10:39 +00001077echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001078if test "$mingw32" = "yes" ; then
1079 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001080 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001081else
1082 cat > $TMPC << EOF
1083#include <byteswap.h>
1084int main(void) { return bswap_32(0); }
1085EOF
pbrookdb7287e2008-02-03 16:27:13 +00001086 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001087 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1088 fi
bellard67b915a2004-03-31 23:37:16 +00001089fi
blueswir1128ab2f2008-08-15 18:33:42 +00001090
1091if [ "$openbsd" = "yes" ] ; then
1092 echo "#define ENOTSUP 4096" >> $config_h
1093fi
1094
bellard83fb7ad2004-07-05 21:25:26 +00001095if test "$darwin" = "yes" ; then
1096 echo "CONFIG_DARWIN=yes" >> $config_mak
1097 echo "#define CONFIG_DARWIN 1" >> $config_h
1098fi
bellardec530c82006-04-25 22:36:06 +00001099if test "$solaris" = "yes" ; then
1100 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001101 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001102 if test "$needs_libsunmath" = "yes" ; then
1103 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1104 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1105 fi
bellardec530c82006-04-25 22:36:06 +00001106fi
blueswir131422552007-04-16 18:27:06 +00001107if test -n "$sparc_cpu"; then
1108 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1109 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1110fi
bellard67b915a2004-03-31 23:37:16 +00001111if test "$gdbstub" = "yes" ; then
1112 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1113 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1114fi
bellard97a847b2003-08-10 21:36:04 +00001115if test "$gprof" = "yes" ; then
1116 echo "TARGET_GPROF=yes" >> $config_mak
1117 echo "#define HAVE_GPROF 1" >> $config_h
1118fi
1119if test "$static" = "yes" ; then
1120 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001121 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001122fi
bellard05c2a3e2006-02-08 22:39:17 +00001123if test $profiler = "yes" ; then
1124 echo "#define CONFIG_PROFILER 1" >> $config_h
1125fi
bellardc20709a2004-04-21 23:27:19 +00001126if test "$slirp" = "yes" ; then
1127 echo "CONFIG_SLIRP=yes" >> $config_mak
1128 echo "#define CONFIG_SLIRP 1" >> $config_h
1129fi
ths8a16d272008-07-19 09:56:24 +00001130if test "$vde" = "yes" ; then
1131 echo "CONFIG_VDE=yes" >> $config_mak
1132 echo "#define CONFIG_VDE 1" >> $config_h
1133 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1134fi
malc0c58ac12008-06-25 21:04:05 +00001135for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001136 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001137 echo "$def=yes" >> $config_mak
1138 echo "#define $def 1" >> $config_h
1139done
1140echo "#define AUDIO_DRIVERS \\" >> $config_h
1141for drv in $audio_drv_list; do
1142 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001143 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001144 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001145 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001146 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1147 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1148 fi
1149done
1150echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001151if test "$mixemu" = "yes" ; then
1152 echo "CONFIG_MIXEMU=yes" >> $config_mak
1153 echo "#define CONFIG_MIXEMU 1" >> $config_h
1154fi
ths8d5d2d42007-08-25 01:37:51 +00001155if test "$vnc_tls" = "yes" ; then
1156 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1157 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1158 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1159 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1160fi
pbrookb1a550a2006-04-16 13:28:56 +00001161qemu_version=`head $source_path/VERSION`
1162echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001163echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001164
1165echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001166if [ "$source_path_used" = "yes" ]; then
1167 echo "VPATH=$source_path" >> $config_mak
1168fi
bellard97a847b2003-08-10 21:36:04 +00001169echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001170if [ "$build_docs" = "yes" ] ; then
1171 echo "BUILD_DOCS=yes" >> $config_mak
1172fi
bellard49ecc3f2007-11-07 19:25:15 +00001173if test "$static" = "yes"; then
1174 sdl1=$sdl_static
1175else
1176 sdl1=$sdl
1177fi
1178if test "$sdl1" = "yes" ; then
1179 echo "#define CONFIG_SDL 1" >> $config_h
1180 echo "CONFIG_SDL=yes" >> $config_mak
1181 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1182 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1183 else
1184 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1185 fi
1186 if [ "${aa}" = "yes" ] ; then
1187 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1188 else
1189 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1190 fi
1191fi
1192if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001193 echo "#define CONFIG_COCOA 1" >> $config_h
1194 echo "CONFIG_COCOA=yes" >> $config_mak
1195fi
1196if test "$curses" = "yes" ; then
1197 echo "#define CONFIG_CURSES 1" >> $config_h
1198 echo "CONFIG_CURSES=yes" >> $config_mak
1199 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001200fi
aurel322e4d9fb2008-04-08 06:01:02 +00001201if test "$brlapi" = "yes" ; then
1202 echo "CONFIG_BRLAPI=yes" >> $config_mak
1203 echo "#define CONFIG_BRLAPI 1" >> $config_h
1204 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1205fi
blueswir1414f0da2008-08-15 18:20:52 +00001206if test "$aio" = "yes" ; then
1207 echo "#define CONFIG_AIO 1" >> $config_h
1208fi
bellard97a847b2003-08-10 21:36:04 +00001209
bellard83fb7ad2004-07-05 21:25:26 +00001210# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001211if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001212 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001213 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001214 echo "#define _BSD 1" >> $config_h
1215fi
1216
pbrookc5937222006-05-14 11:30:38 +00001217echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1218
pbrookc39e3332007-09-22 16:49:14 +00001219tools=
1220if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1221 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001222 if [ "$linux" = "yes" ] ; then
1223 tools="qemu-nbd\$(EXESUF) $tools"
1224 fi
pbrookc39e3332007-09-22 16:49:14 +00001225fi
1226echo "TOOLS=$tools" >> $config_mak
1227
ths15d9ca02007-07-31 23:07:32 +00001228test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1229
bellard1d14ffa2005-10-30 18:58:22 +00001230for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001231target_dir="$target"
1232config_mak=$target_dir/config.mak
1233config_h=$target_dir/config.h
1234target_cpu=`echo $target | cut -d '-' -f 1`
1235target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001236[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001237[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1238[ "$target_cpu" = "mips" ] && target_bigendian=yes
1239[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1240[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001241[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001242[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001243[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001244[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001245[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001246[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1247[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1248[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001249target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001250target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001251target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001252target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001253case "$target" in
1254 ${target_cpu}-softmmu)
1255 target_softmmu="yes"
1256 ;;
1257 ${target_cpu}-linux-user)
1258 target_user_only="yes"
1259 target_linux_user="yes"
1260 ;;
1261 ${target_cpu}-darwin-user)
1262 target_user_only="yes"
1263 target_darwin_user="yes"
1264 ;;
1265 *)
1266 echo "ERROR: Target '$target' not recognised"
1267 exit 1
1268 ;;
1269esac
ths831b7822007-01-18 20:06:33 +00001270
bellard97ccc682005-07-02 13:32:17 +00001271if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001272 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001273 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001274 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001275 echo "Note that this will disable all output from the virtual graphics card"
1276 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001277 exit 1;
1278fi
1279
bellard7c1f25b2004-04-22 00:02:08 +00001280#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001281
ths15d9ca02007-07-31 23:07:32 +00001282test -f $config_h && mv $config_h ${config_h}~
1283
bellard97a847b2003-08-10 21:36:04 +00001284mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001285mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001286mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001287if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001288 mkdir -p $target_dir/nwfpe
1289fi
1290
bellardec530c82006-04-25 22:36:06 +00001291#
1292# don't use ln -sf as not all "ln -sf" over write the file/link
1293#
1294rm -f $target_dir/Makefile
1295ln -s $source_path/Makefile.target $target_dir/Makefile
1296
bellard97a847b2003-08-10 21:36:04 +00001297
1298echo "# Automatically generated by configure - do not modify" > $config_mak
1299echo "/* Automatically generated by configure - do not modify */" > $config_h
1300
1301
1302echo "include ../config-host.mak" >> $config_mak
1303echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001304
pbrooke5fe0c52006-06-11 13:32:59 +00001305bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001306elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001307target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001308interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1309echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001310
aurel322408a522008-04-20 20:19:44 +00001311case "$target_cpu" in
1312 i386)
1313 echo "TARGET_ARCH=i386" >> $config_mak
1314 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1315 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001316 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001317 then
1318 echo "#define USE_KQEMU 1" >> $config_h
1319 fi
aurel32f2bf0942008-05-05 06:00:27 +00001320 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001321 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001322 then
1323 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1324 else
1325 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1326 fi
aurel322408a522008-04-20 20:19:44 +00001327 ;;
1328 x86_64)
1329 echo "TARGET_ARCH=x86_64" >> $config_mak
1330 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1331 echo "#define TARGET_I386 1" >> $config_h
1332 echo "#define TARGET_X86_64 1" >> $config_h
1333 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1334 then
1335 echo "#define USE_KQEMU 1" >> $config_h
1336 fi
1337 ;;
1338 alpha)
1339 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001340 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001341 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1342 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001343 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001344 ;;
1345 arm|armeb)
1346 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001347 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1348 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001349 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001350 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001351 ;;
1352 cris)
1353 echo "TARGET_ARCH=cris" >> $config_mak
1354 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1355 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001356 ;;
1357 m68k)
1358 echo "TARGET_ARCH=m68k" >> $config_mak
1359 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1360 echo "#define TARGET_M68K 1" >> $config_h
1361 bflt="yes"
1362 ;;
1363 mips|mipsel)
1364 echo "TARGET_ARCH=mips" >> $config_mak
1365 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1366 echo "#define TARGET_MIPS 1" >> $config_h
1367 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1368 ;;
1369 mipsn32|mipsn32el)
1370 echo "TARGET_ARCH=mipsn32" >> $config_mak
1371 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1372 echo "#define TARGET_MIPS 1" >> $config_h
1373 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1374 ;;
1375 mips64|mips64el)
1376 echo "TARGET_ARCH=mips64" >> $config_mak
1377 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1378 echo "#define TARGET_MIPS 1" >> $config_h
1379 echo "#define TARGET_MIPS64 1" >> $config_h
1380 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1381 ;;
1382 ppc)
1383 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001384 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001385 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1386 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001387 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001388 ;;
1389 ppcemb)
1390 echo "TARGET_ARCH=ppcemb" >> $config_mak
1391 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001392 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001393 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1394 echo "#define TARGET_PPC 1" >> $config_h
1395 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001396 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001397 ;;
1398 ppc64)
1399 echo "TARGET_ARCH=ppc64" >> $config_mak
1400 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001401 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001402 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1403 echo "#define TARGET_PPC 1" >> $config_h
1404 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001405 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001406 ;;
1407 ppc64abi32)
1408 echo "TARGET_ARCH=ppc64" >> $config_mak
1409 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1410 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001411 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001412 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1413 echo "#define TARGET_PPC 1" >> $config_h
1414 echo "#define TARGET_PPC64 1" >> $config_h
1415 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001416 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001417 ;;
1418 sh4|sh4eb)
1419 echo "TARGET_ARCH=sh4" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001420 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001421 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1422 echo "#define TARGET_SH4 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001423 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001424 bflt="yes"
1425 ;;
1426 sparc)
1427 echo "TARGET_ARCH=sparc" >> $config_mak
1428 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1429 echo "#define TARGET_SPARC 1" >> $config_h
1430 ;;
1431 sparc64)
1432 echo "TARGET_ARCH=sparc64" >> $config_mak
1433 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1434 echo "#define TARGET_SPARC 1" >> $config_h
1435 echo "#define TARGET_SPARC64 1" >> $config_h
1436 elfload32="yes"
1437 ;;
1438 sparc32plus)
1439 echo "TARGET_ARCH=sparc64" >> $config_mak
1440 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1441 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1442 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1443 echo "#define TARGET_SPARC 1" >> $config_h
1444 echo "#define TARGET_SPARC64 1" >> $config_h
1445 echo "#define TARGET_ABI32 1" >> $config_h
1446 ;;
1447 *)
1448 echo "Unsupported target CPU"
1449 exit 1
1450 ;;
1451esac
bellardde83cd02003-06-15 20:25:43 +00001452if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001453 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1454 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1455fi
1456if test "$target_softmmu" = "yes" ; then
1457 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1458 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001459fi
bellard997344f2003-10-27 21:10:39 +00001460if test "$target_user_only" = "yes" ; then
1461 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1462 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1463fi
ths831b7822007-01-18 20:06:33 +00001464if test "$target_linux_user" = "yes" ; then
1465 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1466 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1467fi
1468if test "$target_darwin_user" = "yes" ; then
1469 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1470 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1471fi
bellardde83cd02003-06-15 20:25:43 +00001472
aurel320938cda2008-04-11 21:36:06 +00001473if test "$target_cpu" = "arm" \
1474 -o "$target_cpu" = "armeb" \
1475 -o "$target_cpu" = "m68k" \
1476 -o "$target_cpu" = "mips" \
1477 -o "$target_cpu" = "mipsel" \
1478 -o "$target_cpu" = "mipsn32" \
1479 -o "$target_cpu" = "mipsn32el" \
1480 -o "$target_cpu" = "mips64" \
1481 -o "$target_cpu" = "mips64el" \
1482 -o "$target_cpu" = "sparc" \
1483 -o "$target_cpu" = "sparc64" \
1484 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001485 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1486 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1487fi
pbrooke5fe0c52006-06-11 13:32:59 +00001488if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1489 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1490 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1491fi
pbrookbd0c5662008-05-29 14:34:11 +00001492if test "$target_user_only" = "yes" \
1493 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1494 echo "#define USE_NPTL 1" >> $config_h
1495fi
blueswir1cb33da52007-10-09 16:34:29 +00001496# 32 bit ELF loader in addition to native 64 bit loader?
1497if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1498 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1499 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1500fi
bellard5b0753e2005-03-01 21:37:28 +00001501
ths15d9ca02007-07-31 23:07:32 +00001502test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1503
bellard97a847b2003-08-10 21:36:04 +00001504done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001505
1506# build tree in object directory if source path is different from current one
1507if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001508 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001509 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001510 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001511 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001512 for dir in $DIRS ; do
1513 mkdir -p $dir
1514 done
bellardec530c82006-04-25 22:36:06 +00001515 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001516 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001517 rm -f $f
1518 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001519 done
1520fi
bellard7d132992003-03-06 23:23:54 +00001521
bellard97a847b2003-08-10 21:36:04 +00001522rm -f $TMPO $TMPC $TMPE $TMPS