blob: 5fdc2276239e1f3b9e792810e63c4be94a5d59e2 [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"
malc0c58ac12008-06-25 21:04:05 +0000153audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000154audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000155;;
bellard83fb7ad2004-07-05 21:25:26 +0000156Darwin)
157bsd="yes"
158darwin="yes"
ths831b7822007-01-18 20:06:33 +0000159darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000160cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000161audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000162audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000163OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000164OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000165;;
bellardec530c82006-04-25 22:36:06 +0000166SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000167 solaris="yes"
168 make="gmake"
169 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000170 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000171 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000172 # have to select again, because `uname -m` returns i86pc
173 # even on an x86_64 box.
174 solariscpu=`isainfo -k`
175 if test "${solariscpu}" = "amd64" ; then
176 cpu="x86_64"
177 fi
thsc2b84fa2007-02-10 23:21:21 +0000178 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000179 if test "$solarisrev" -le 9 ; then
180 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
181 needs_libsunmath="yes"
182 else
183 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
184 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
185 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
186 echo "Studio 11 can be downloaded from www.sun.com."
187 exit 1
188 fi
189 fi
190 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000191 kqemu="yes"
192 fi
ths86b2bd92007-02-11 00:31:33 +0000193 fi
ths6b4d2ba2007-05-13 18:02:43 +0000194 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000195 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000196 fi
malcc2de5c92008-06-28 19:13:06 +0000197 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000198;;
bellard1d14ffa2005-10-30 18:58:22 +0000199*)
malc0c58ac12008-06-25 21:04:05 +0000200audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000201audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000202linux="yes"
ths831b7822007-01-18 20:06:33 +0000203linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000204if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000205 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000206 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000207fi
bellardfb065182004-11-09 23:09:44 +0000208;;
bellard7d132992003-03-06 23:23:54 +0000209esac
210
bellard7d3505c2004-05-12 19:32:15 +0000211if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000212 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000213 make="gmake"
214 fi
bellard7d3505c2004-05-12 19:32:15 +0000215fi
216
bellard7d132992003-03-06 23:23:54 +0000217# find source path
pbrookad064842006-04-16 12:41:07 +0000218source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000219source_path_used="no"
220workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000221if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000222 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000223else
224 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000225fi
pbrook724db112008-02-03 19:20:13 +0000226[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000227
bellard85aa5182007-11-11 20:17:03 +0000228werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000229# generate compile errors on warnings for development builds
230#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
231#werror="yes";
232#fi
bellard85aa5182007-11-11 20:17:03 +0000233
bellard7d132992003-03-06 23:23:54 +0000234for opt do
pbrooka46e4032006-04-29 23:05:22 +0000235 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000236 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000237 --help|-h) show_help=yes
238 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000239 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000240 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000241 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000242 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000243 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000244 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000245 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000246 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000247 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000248 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000249 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000250 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000251 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000252 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000253 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000254 ;;
pbrook6a882642006-04-17 13:57:12 +0000255 --install=*) install="$optarg"
256 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000257 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000258 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000259 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000260 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000261 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000262 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000263 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000264 ;;
bellard7d132992003-03-06 23:23:54 +0000265 --enable-gprof) gprof="yes"
266 ;;
bellard43ce4df2003-06-09 19:53:12 +0000267 --static) static="yes"
268 ;;
bellard97a847b2003-08-10 21:36:04 +0000269 --disable-sdl) sdl="no"
270 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000271 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000272 ;;
malcc2de5c92008-06-28 19:13:06 +0000273 --fmod-inc=*) fmod_inc="$optarg"
274 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000275 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000276 ;;
277 --audio-drv-list=*) audio_drv_list="$optarg"
278 ;;
ths8d5d2d42007-08-25 01:37:51 +0000279 --disable-vnc-tls) vnc_tls="no"
280 ;;
bellardb93aebe2007-02-15 22:58:18 +0000281 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
bellard1d14ffa2005-10-30 18:58:22 +0000282 ;;
bellard443f1372004-06-04 11:13:20 +0000283 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000284 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000285 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000286 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000287 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000288 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000289 --disable-brlapi) brlapi="no"
290 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000291 --enable-profiler) profiler="yes"
292 ;;
malcc2de5c92008-06-28 19:13:06 +0000293 --enable-cocoa)
294 cocoa="yes" ;
295 sdl="no" ;
296 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000297 ;;
bellard97ccc682005-07-02 13:32:17 +0000298 --disable-gfx-check) check_gfx="no"
299 ;;
bellard1aff3812005-11-02 22:30:45 +0000300 --disable-gcc-check) check_gcc="no"
301 ;;
pbrookcad25d62006-03-19 16:31:11 +0000302 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000303 ;;
pbrookcad25d62006-03-19 16:31:11 +0000304 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000305 ;;
ths831b7822007-01-18 20:06:33 +0000306 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000307 ;;
ths831b7822007-01-18 20:06:33 +0000308 --enable-linux-user) linux_user="yes"
309 ;;
310 --disable-darwin-user) darwin_user="no"
311 ;;
312 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000313 ;;
pbrookc5937222006-05-14 11:30:38 +0000314 --enable-uname-release=*) uname_release="$optarg"
315 ;;
blueswir131422552007-04-16 18:27:06 +0000316 --sparc_cpu=*)
317 sparc_cpu="$optarg"
318 case $sparc_cpu in
319 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
320 target_cpu="sparc"; cpu="sparc" ;;
321 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
322 target_cpu="sparc"; cpu="sparc" ;;
323 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
324 target_cpu="sparc64"; cpu="sparc64" ;;
325 *) echo "undefined SPARC architecture. Exiting";exit 1;;
326 esac
327 ;;
bellard85aa5182007-11-11 20:17:03 +0000328 --enable-werror) werror="yes"
329 ;;
330 --disable-werror) werror="no"
331 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000332 --disable-curses) curses="no"
333 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000334 --disable-nptl) nptl="no"
335 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000336 --enable-mixemu) mixemu="yes"
337 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000338 --disable-aio) aio="no"
339 ;;
balrog7f1559c2007-11-17 10:24:32 +0000340 *) echo "ERROR: unknown option $opt"; show_help="yes"
341 ;;
bellard7d132992003-03-06 23:23:54 +0000342 esac
343done
344
ths209afb92007-03-25 20:55:00 +0000345if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
346 AIOLIBS=
347else
ths4259e1a2007-11-05 13:27:21 +0000348 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
349 AIOLIBS="-lrt -lpthread"
ths209afb92007-03-25 20:55:00 +0000350fi
351
ths6f30fa82007-01-05 01:00:47 +0000352# default flags for all hosts
353CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
354LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000355if test "$werror" = "yes" ; then
356CFLAGS="$CFLAGS -Werror"
357fi
ths6f30fa82007-01-05 01:00:47 +0000358
blueswir131422552007-04-16 18:27:06 +0000359#
360# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
361# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
362#
bellard40293e52008-01-31 11:32:10 +0000363case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000364 sparc) if test -z "$sparc_cpu" ; then
365 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
366 ARCH_LDFLAGS="-m32"
367 else
368 ARCH_CFLAGS="${SP_CFLAGS}"
369 ARCH_LDFLAGS="${SP_LDFLAGS}"
370 fi
371 ;;
372 sparc64) if test -z "$sparc_cpu" ; then
373 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
374 ARCH_LDFLAGS="-m64"
375 else
376 ARCH_CFLAGS="${SP_CFLAGS}"
377 ARCH_LDFLAGS="${SP_LDFLAGS}"
378 fi
379 ;;
ths76d83bd2007-11-18 21:22:10 +0000380 s390)
381 ARCH_CFLAGS="-march=z900"
382 ;;
bellard40293e52008-01-31 11:32:10 +0000383 i386)
384 ARCH_CFLAGS="-m32"
385 ARCH_LDFLAGS="-m32"
386 ;;
387 x86_64)
388 ARCH_CFLAGS="-m64"
389 ARCH_LDFLAGS="-m64"
390 ;;
blueswir131422552007-04-16 18:27:06 +0000391esac
392
pbrookaf5db582006-04-08 14:26:41 +0000393if test x"$show_help" = x"yes" ; then
394cat << EOF
395
396Usage: configure [options]
397Options: [defaults in brackets after descriptions]
398
399EOF
400echo "Standard options:"
401echo " --help print this message"
402echo " --prefix=PREFIX install in PREFIX [$prefix]"
403echo " --interp-prefix=PREFIX where to find shared libraries, etc."
404echo " use %M for cpu name [$interp_prefix]"
405echo " --target-list=LIST set target list [$target_list]"
406echo ""
407echo "kqemu kernel acceleration support:"
408echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000409echo ""
410echo "Advanced options (experts only):"
411echo " --source-path=PATH path of source code [$source_path]"
412echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
413echo " --cc=CC use C compiler CC [$cc]"
414echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
415echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000416echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000417echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000418echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000419echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000420echo " --enable-cocoa enable COCOA (Mac OS X only)"
421echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
malcc2de5c92008-06-28 19:13:06 +0000422echo " --audio-drv-list=LIST set audio drivers list:"
423echo " Available drivers: $audio_possible_drivers"
424echo " --audio-card-list=LIST set list of additional emulated audio cards"
425echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000426echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000427echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000428echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000429echo " --disable-curses disable curses output"
pbrookbd0c5662008-05-29 14:34:11 +0000430echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000431echo " --enable-system enable all system emulation targets"
432echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000433echo " --enable-linux-user enable all linux usermode emulation targets"
434echo " --disable-linux-user disable all linux usermode emulation targets"
435echo " --enable-darwin-user enable all darwin usermode emulation targets"
436echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000437echo " --fmod-lib path to FMOD library"
438echo " --fmod-inc path to FMOD includes"
pbrookc5937222006-05-14 11:30:38 +0000439echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000440echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000441echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000442echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000443echo ""
ths5bf08932006-12-23 00:33:26 +0000444echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000445exit 1
446fi
447
bellard7d132992003-03-06 23:23:54 +0000448cc="${cross_prefix}${cc}"
449ar="${cross_prefix}${ar}"
450strip="${cross_prefix}${strip}"
451
pbrook064aae12006-05-08 00:51:44 +0000452# check that the C compiler works.
453cat > $TMPC <<EOF
454int main(void) {}
455EOF
456
pbrookdb7287e2008-02-03 16:27:13 +0000457if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000458 : C compiler works ok
459else
460 echo "ERROR: \"$cc\" either does not exist or does not work"
461 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000462fi
463
bellard67b915a2004-03-31 23:37:16 +0000464if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000465 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000466 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000467 oss="no"
bellard67b915a2004-03-31 23:37:16 +0000468fi
469
ths5fafdf22007-09-16 21:08:06 +0000470# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000471if test "$check_gcc" = "yes" ; then
472 cat > $TMPC <<EOF
473#if __GNUC__ < 4
474#error gcc3
475#endif
476int main(){return 0;}
477EOF
pbrookdb7287e2008-02-03 16:27:13 +0000478 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000479 echo "WARNING: \"$cc\" looks like gcc 4.x"
480 found_compat_cc="no"
481 if test "$gcc3_search" = "yes" ; then
482 echo "Looking for gcc 3.x"
483 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000484 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000485 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000486 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000487 found_compat_cc="yes"
488 break
489 fi
490 done
491 if test "$found_compat_cc" = "no" ; then
492 echo "gcc 3.x not found!"
493 fi
494 fi
495 if test "$found_compat_cc" = "no" ; then
496 echo "QEMU is known to have problems when compiled with gcc 4.x"
497 echo "It is recommended that you use gcc 3.x to build QEMU"
498 echo "To use this compiler anyway, configure with --disable-gcc-check"
499 exit 1;
500 fi
501 fi
502fi
503
bellardec530c82006-04-25 22:36:06 +0000504#
505# Solaris specific configure tool chain decisions
506#
507if test "$solaris" = "yes" ; then
508 #
509 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
510 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000511 #
bellardec530c82006-04-25 22:36:06 +0000512 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
513 solgcc=`which $cc`
514 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
515 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
516 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
517 echo "or get the latest patch from SunSolve for gcc"
518 exit 1
519 fi
520 fi
521 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
522 if test -z "$solinst" ; then
523 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
524 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
525 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
526 exit 1
527 fi
528 if test "$solinst" = "/usr/sbin/install" ; then
529 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
530 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
531 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
532 exit 1
533 fi
bellardec530c82006-04-25 22:36:06 +0000534 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
535 if test -z "$sol_ar" ; then
536 echo "Error: No path includes ar"
537 if test -f /usr/ccs/bin/ar ; then
538 echo "Add /usr/ccs/bin to your path and rerun configure"
539 fi
540 exit 1
541 fi
ths5fafdf22007-09-16 21:08:06 +0000542fi
bellardec530c82006-04-25 22:36:06 +0000543
544
bellard5327cf42005-01-10 23:18:50 +0000545if test -z "$target_list" ; then
546# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000547 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000548 target_list="\
549i386-softmmu \
550x86_64-softmmu \
551arm-softmmu \
552cris-softmmu \
553m68k-softmmu \
554mips-softmmu \
555mipsel-softmmu \
556mips64-softmmu \
557mips64el-softmmu \
558ppc-softmmu \
559ppcemb-softmmu \
560ppc64-softmmu \
561sh4-softmmu \
562sh4eb-softmmu \
563sparc-softmmu \
564"
pbrook0a8e90f2006-03-19 14:54:16 +0000565 fi
bellard5327cf42005-01-10 23:18:50 +0000566# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000567 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000568 target_list="${target_list}\
569i386-linux-user \
570x86_64-linux-user \
571alpha-linux-user \
572arm-linux-user \
573armeb-linux-user \
574cris-linux-user \
575m68k-linux-user \
576mips-linux-user \
577mipsel-linux-user \
578ppc-linux-user \
579ppc64-linux-user \
580ppc64abi32-linux-user \
581sh4-linux-user \
582sh4eb-linux-user \
583sparc-linux-user \
584sparc64-linux-user \
585sparc32plus-linux-user \
586"
ths831b7822007-01-18 20:06:33 +0000587 fi
588# the following are Darwin specific
589 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000590 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000591 fi
bellard6e20a452005-06-05 15:56:02 +0000592else
pbrookb1a550a2006-04-16 13:28:56 +0000593 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000594fi
pbrook0a8e90f2006-03-19 14:54:16 +0000595if test -z "$target_list" ; then
596 echo "No targets enabled"
597 exit 1
598fi
bellard5327cf42005-01-10 23:18:50 +0000599
bellard7d132992003-03-06 23:23:54 +0000600if test -z "$cross_prefix" ; then
601
602# ---
603# big/little endian test
604cat > $TMPC << EOF
605#include <inttypes.h>
606int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000607 volatile uint32_t i=0x01234567;
608 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000609}
610EOF
611
pbrookdb7287e2008-02-03 16:27:13 +0000612if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000613$TMPE && bigendian="yes"
614else
615echo big/little test failed
616fi
617
618else
619
620# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000621if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000622 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000623 -o "$cpu" = "m68k" \
624 -o "$cpu" = "mips" \
625 -o "$cpu" = "mips64" \
626 -o "$cpu" = "powerpc" \
627 -o "$cpu" = "s390" \
628 -o "$cpu" = "sparc" \
629 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000630 bigendian="yes"
631fi
632
633fi
634
bellardb6853692005-06-05 17:10:39 +0000635# host long bits test
636hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000637if test "$cpu" = "x86_64" \
638 -o "$cpu" = "alpha" \
639 -o "$cpu" = "ia64" \
640 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000641 hostlongbits="64"
642fi
643
malc810260a2008-07-23 19:17:46 +0000644# ppc specific hostlongbits selection
645if test "$cpu" = "powerpc" ; then
646 cat > $TMPC <<EOF
647int main(void){return sizeof(long);}
648EOF
649
650 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
651 $TMPE
652 case $? in
653 4) hostlongbits="32";;
654 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000655 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000656 esac
657 else
658 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000659 exit 1
malc810260a2008-07-23 19:17:46 +0000660 fi
661fi
662
bellarde8cd23d2003-06-25 16:08:13 +0000663# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000664cat > $TMPC <<EOF
665int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000666}
667EOF
668
pbrookbd0c5662008-05-29 14:34:11 +0000669# Check host NPTL support
670cat > $TMPC <<EOF
671#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000672#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000673void foo()
674{
675#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
676#error bork
677#endif
678}
679EOF
680
681if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
682 :
683else
684 nptl="no"
685fi
686
bellard11d9f692004-04-02 20:55:59 +0000687##########################################
688# SDL probe
689
690sdl_too_old=no
691
692if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000693 sdl_config="sdl-config"
694 sdl=no
695 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000696
ths069b0bd2007-07-12 00:27:15 +0000697 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
698 # win32 cross compilation case
699 sdl_config="i386-mingw32msvc-sdl-config"
700 sdl=yes
701 else
702 # normal SDL probe
bellard11d9f692004-04-02 20:55:59 +0000703cat > $TMPC << EOF
704#include <SDL.h>
705#undef main /* We don't want SDL to override our main() */
706int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
707EOF
pbrookdb7287e2008-02-03 16:27:13 +0000708 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 +0000709 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
710 if test "$_sdlversion" -lt 121 ; then
711 sdl_too_old=yes
712 else
713 if test "$cocoa" = "no" ; then
714 sdl=yes
715 fi
716 fi
bellard11d9f692004-04-02 20:55:59 +0000717
ths069b0bd2007-07-12 00:27:15 +0000718 # static link with sdl ?
719 if test "$sdl" = "yes" ; then
720 aa="no"
721 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
722 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
723 if [ "$aa" = "yes" ] ; then
724 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
725 fi
726
ths8281db42007-11-18 21:37:07 +0000727 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 +0000728 sdl_static=yes
729 fi
730 fi # static link
731 fi # sdl compile test
732 fi # cross compilation
bellard11d9f692004-04-02 20:55:59 +0000733else
ths069b0bd2007-07-12 00:27:15 +0000734 # Make sure to disable cocoa if sdl was set
735 if test "$sdl" = "yes" ; then
736 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000737 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000738 fi
bellarda6e022a2004-04-02 21:55:47 +0000739fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000740
ths8f28f3f2007-01-05 21:25:54 +0000741##########################################
ths8d5d2d42007-08-25 01:37:51 +0000742# VNC TLS detection
743if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000744cat > $TMPC <<EOF
745#include <gnutls/gnutls.h>
746int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
747EOF
748 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
749 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
750 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
751 $vnc_tls_libs 2> /dev/null ; then
752 :
753 else
754 vnc_tls="no"
755 fi
ths8d5d2d42007-08-25 01:37:51 +0000756fi
757
758##########################################
ths8a16d272008-07-19 09:56:24 +0000759# vde libraries probe
760if test "$vde" = "yes" ; then
761 cat > $TMPC << EOF
762#include <libvdeplug.h>
763int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
764EOF
765 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
766 :
767 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000768 vde="no"
ths8a16d272008-07-19 09:56:24 +0000769 fi
770fi
771
772##########################################
malcc2de5c92008-06-28 19:13:06 +0000773# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000774
malcc2de5c92008-06-28 19:13:06 +0000775audio_drv_probe()
776{
777 drv=$1
778 hdr=$2
779 lib=$3
780 exp=$4
781 cfl=$5
782 cat > $TMPC << EOF
783#include <$hdr>
784int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000785EOF
malcc2de5c92008-06-28 19:13:06 +0000786 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
787 :
788 else
789 echo
790 echo "Error: $drv check failed"
791 echo "Make sure to have the $drv libs and headers installed."
792 echo
793 exit 1
794 fi
795}
796
malc2fa7d3b2008-07-29 12:58:44 +0000797audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000798for drv in $audio_drv_list; do
799 case $drv in
800 alsa)
801 audio_drv_probe $drv alsa/asoundlib.h -lasound \
802 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
803 ;;
804
805 fmod)
806 if test -z $fmod_lib || test -z $fmod_inc; then
807 echo
808 echo "Error: You must specify path to FMOD library and headers"
809 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
810 echo
811 exit 1
812 fi
813 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
814 ;;
815
816 esd)
817 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
818 ;;
malcb8e59f12008-07-02 21:03:08 +0000819
820 pa)
821 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
822 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
823 ;;
824
malce4c63a62008-07-19 16:15:16 +0000825 *)
malc1c9b2a52008-07-19 16:57:30 +0000826 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000827 echo
828 echo "Error: Unknown driver '$drv' selected"
829 echo "Possible drivers are: $audio_possible_drivers"
830 echo
831 exit 1
832 }
833 ;;
834
malc16b98a92008-08-13 21:48:01 +0000835 oss|sdl|core|wav|dsound)
836 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
837 ;;
838
malcc2de5c92008-06-28 19:13:06 +0000839 esac
840done
ths8f28f3f2007-01-05 21:25:54 +0000841
balrog4d3b6f62008-02-10 16:33:14 +0000842##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000843# BrlAPI probe
844
845if test -z "$brlapi" ; then
846 brlapi=no
847cat > $TMPC << EOF
848#include <brlapi.h>
849int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
850EOF
aurel32a40e56d2008-05-04 00:50:25 +0000851 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000852 brlapi=yes
853 fi # brlapi compile test
854fi # -z $brlapi
855
856##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000857# curses probe
858
859if test "$curses" = "yes" ; then
860 curses=no
861 cat > $TMPC << EOF
862#include <curses.h>
863int main(void) { return curses_version(); }
864EOF
pbrookaf896aa2008-03-23 00:47:42 +0000865 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000866 curses=yes
867 fi
868fi # test "$curses"
869
blueswir1414f0da2008-08-15 18:20:52 +0000870##########################################
871# AIO probe
872if test "$aio" = "yes" ; then
873 aio=no
874 cat > $TMPC << EOF
875#include <aio.h>
876int main(void) { return aio_write(NULL); }
877EOF
878 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
879 aio=yes
880 fi
881fi
882
pbrookcc8ae6d2006-04-23 17:57:59 +0000883# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000884if [ -x "`which texi2html 2>/dev/null`" ] && \
885 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000886 build_docs="yes"
887fi
888
bellard11d9f692004-04-02 20:55:59 +0000889if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000890 if test -z "$prefix" ; then
891 prefix="/c/Program Files/Qemu"
892 fi
893 mansuffix=""
894 datasuffix=""
895 docsuffix=""
896 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000897else
pbrook308c3592007-02-27 00:52:01 +0000898 if test -z "$prefix" ; then
899 prefix="/usr/local"
900 fi
901 mansuffix="/share/man"
902 datasuffix="/share/qemu"
903 docsuffix="/share/doc/qemu"
904 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000905fi
bellard5a671352003-10-01 00:13:48 +0000906
bellard43ce4df2003-06-09 19:53:12 +0000907echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000908echo "BIOS directory $prefix$datasuffix"
909echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000910if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000911echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000912echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000913fi
bellard5a671352003-10-01 00:13:48 +0000914echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000915echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000916echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000917echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000918echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000919echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000920echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000921echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000922echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000923echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000924echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000925echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000926echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000927if test "$darwin" = "yes" ; then
928 echo "Cocoa support $cocoa"
929fi
bellard97a847b2003-08-10 21:36:04 +0000930echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000931if test "$sdl" != "no" ; then
932 echo "SDL static link $sdl_static"
933fi
balrog4d3b6f62008-02-10 16:33:14 +0000934echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000935echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +0000936echo "Audio drivers $audio_drv_list"
937echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +0000938echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +0000939echo "VNC TLS support $vnc_tls"
940if test "$vnc_tls" = "yes" ; then
941 echo " TLS CFLAGS $vnc_tls_cflags"
942 echo " TLS LIBS $vnc_tls_libs"
943fi
blueswir131422552007-04-16 18:27:06 +0000944if test -n "$sparc_cpu"; then
945 echo "Target Sparc Arch $sparc_cpu"
946fi
bellard07f4ddb2005-04-23 17:44:28 +0000947echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +0000948echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +0000949echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +0000950[ ! -z "$uname_release" ] && \
951echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +0000952echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +0000953echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +0000954echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +0000955
bellard97a847b2003-08-10 21:36:04 +0000956if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +0000957echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +0000958fi
ths20b40c62007-07-11 23:39:45 +0000959if [ -s /tmp/qemu-$$-sdl-config.log ]; then
960 echo "The error log from compiling the libSDL test is: "
961 cat /tmp/qemu-$$-sdl-config.log
962fi
963rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +0000964#if test "$sdl_static" = "no"; then
965# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
966#fi
bellard97a847b2003-08-10 21:36:04 +0000967config_mak="config-host.mak"
968config_h="config-host.h"
969
bellard7c1f25b2004-04-22 00:02:08 +0000970#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +0000971
ths15d9ca02007-07-31 23:07:32 +0000972test -f $config_h && mv $config_h ${config_h}~
973
bellard97a847b2003-08-10 21:36:04 +0000974echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +0000975echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000976echo "/* Automatically generated by configure - do not modify */" > $config_h
977
978echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000979echo "bindir=\${prefix}$binsuffix" >> $config_mak
980echo "mandir=\${prefix}$mansuffix" >> $config_mak
981echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +0000982echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000983echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000984echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +0000985echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000986echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000987echo "HOST_CC=$host_cc" >> $config_mak
988echo "AR=$ar" >> $config_mak
989echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +0000990# XXX: only use CFLAGS and LDFLAGS ?
991# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
992# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +0000993echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +0000994echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
995echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
996echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000997echo "CFLAGS=$CFLAGS" >> $config_mak
998echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +0000999echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001000echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001001case "$cpu" in
1002 i386)
1003 echo "ARCH=i386" >> $config_mak
1004 echo "#define HOST_I386 1" >> $config_h
1005 ;;
1006 x86_64)
1007 echo "ARCH=x86_64" >> $config_mak
1008 echo "#define HOST_X86_64 1" >> $config_h
1009 ;;
1010 alpha)
1011 echo "ARCH=alpha" >> $config_mak
1012 echo "#define HOST_ALPHA 1" >> $config_h
1013 ;;
1014 armv4b)
1015 echo "ARCH=arm" >> $config_mak
1016 echo "#define HOST_ARM 1" >> $config_h
1017 ;;
1018 armv4l)
1019 echo "ARCH=arm" >> $config_mak
1020 echo "#define HOST_ARM 1" >> $config_h
1021 ;;
1022 cris)
1023 echo "ARCH=cris" >> $config_mak
1024 echo "#define HOST_CRIS 1" >> $config_h
1025 ;;
1026 hppa)
1027 echo "ARCH=hppa" >> $config_mak
1028 echo "#define HOST_HPPA 1" >> $config_h
1029 ;;
1030 ia64)
1031 echo "ARCH=ia64" >> $config_mak
1032 echo "#define HOST_IA64 1" >> $config_h
1033 ;;
1034 m68k)
1035 echo "ARCH=m68k" >> $config_mak
1036 echo "#define HOST_M68K 1" >> $config_h
1037 ;;
1038 mips)
1039 echo "ARCH=mips" >> $config_mak
1040 echo "#define HOST_MIPS 1" >> $config_h
1041 ;;
1042 mips64)
1043 echo "ARCH=mips64" >> $config_mak
1044 echo "#define HOST_MIPS64 1" >> $config_h
1045 ;;
1046 powerpc)
malc810260a2008-07-23 19:17:46 +00001047 if test "$hostlongbits" = "32"; then
1048 echo "ARCH=ppc" >> $config_mak
1049 echo "#define HOST_PPC 1" >> $config_h
1050 else
1051 echo "ARCH=ppc64" >> $config_mak
1052 echo "#define HOST_PPC64 1" >> $config_h
1053 fi
aurel322408a522008-04-20 20:19:44 +00001054 ;;
1055 s390)
1056 echo "ARCH=s390" >> $config_mak
1057 echo "#define HOST_S390 1" >> $config_h
1058 ;;
1059 sparc)
1060 echo "ARCH=sparc" >> $config_mak
1061 echo "#define HOST_SPARC 1" >> $config_h
1062 ;;
1063 sparc64)
1064 echo "ARCH=sparc64" >> $config_mak
1065 echo "#define HOST_SPARC64 1" >> $config_h
1066 ;;
1067 *)
1068 echo "Unsupported CPU = $cpu"
1069 exit 1
1070 ;;
1071esac
bellard7d132992003-03-06 23:23:54 +00001072if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001073 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1074 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1075fi
bellardb6853692005-06-05 17:10:39 +00001076echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001077if test "$mingw32" = "yes" ; then
1078 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001079 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001080else
1081 cat > $TMPC << EOF
1082#include <byteswap.h>
1083int main(void) { return bswap_32(0); }
1084EOF
pbrookdb7287e2008-02-03 16:27:13 +00001085 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001086 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1087 fi
bellard67b915a2004-03-31 23:37:16 +00001088fi
bellard83fb7ad2004-07-05 21:25:26 +00001089if test "$darwin" = "yes" ; then
1090 echo "CONFIG_DARWIN=yes" >> $config_mak
1091 echo "#define CONFIG_DARWIN 1" >> $config_h
1092fi
bellardec530c82006-04-25 22:36:06 +00001093if test "$solaris" = "yes" ; then
1094 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001095 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001096 if test "$needs_libsunmath" = "yes" ; then
1097 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1098 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1099 fi
bellardec530c82006-04-25 22:36:06 +00001100fi
blueswir131422552007-04-16 18:27:06 +00001101if test -n "$sparc_cpu"; then
1102 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1103 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1104fi
bellard67b915a2004-03-31 23:37:16 +00001105if test "$gdbstub" = "yes" ; then
1106 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1107 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1108fi
bellard97a847b2003-08-10 21:36:04 +00001109if test "$gprof" = "yes" ; then
1110 echo "TARGET_GPROF=yes" >> $config_mak
1111 echo "#define HAVE_GPROF 1" >> $config_h
1112fi
1113if test "$static" = "yes" ; then
1114 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001115 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001116fi
bellard05c2a3e2006-02-08 22:39:17 +00001117if test $profiler = "yes" ; then
1118 echo "#define CONFIG_PROFILER 1" >> $config_h
1119fi
bellardc20709a2004-04-21 23:27:19 +00001120if test "$slirp" = "yes" ; then
1121 echo "CONFIG_SLIRP=yes" >> $config_mak
1122 echo "#define CONFIG_SLIRP 1" >> $config_h
1123fi
ths8a16d272008-07-19 09:56:24 +00001124if test "$vde" = "yes" ; then
1125 echo "CONFIG_VDE=yes" >> $config_mak
1126 echo "#define CONFIG_VDE 1" >> $config_h
1127 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1128fi
malc0c58ac12008-06-25 21:04:05 +00001129for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001130 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001131 echo "$def=yes" >> $config_mak
1132 echo "#define $def 1" >> $config_h
1133done
1134echo "#define AUDIO_DRIVERS \\" >> $config_h
1135for drv in $audio_drv_list; do
1136 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001137 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001138 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001139 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001140 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1141 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1142 fi
1143done
1144echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001145if test "$mixemu" = "yes" ; then
1146 echo "CONFIG_MIXEMU=yes" >> $config_mak
1147 echo "#define CONFIG_MIXEMU 1" >> $config_h
1148fi
ths8d5d2d42007-08-25 01:37:51 +00001149if test "$vnc_tls" = "yes" ; then
1150 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1151 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1152 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1153 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1154fi
pbrookb1a550a2006-04-16 13:28:56 +00001155qemu_version=`head $source_path/VERSION`
1156echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001157echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001158
1159echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001160if [ "$source_path_used" = "yes" ]; then
1161 echo "VPATH=$source_path" >> $config_mak
1162fi
bellard97a847b2003-08-10 21:36:04 +00001163echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001164if [ "$build_docs" = "yes" ] ; then
1165 echo "BUILD_DOCS=yes" >> $config_mak
1166fi
bellard49ecc3f2007-11-07 19:25:15 +00001167if test "$static" = "yes"; then
1168 sdl1=$sdl_static
1169else
1170 sdl1=$sdl
1171fi
1172if test "$sdl1" = "yes" ; then
1173 echo "#define CONFIG_SDL 1" >> $config_h
1174 echo "CONFIG_SDL=yes" >> $config_mak
1175 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1176 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1177 else
1178 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1179 fi
1180 if [ "${aa}" = "yes" ] ; then
1181 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1182 else
1183 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1184 fi
1185fi
1186if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001187 echo "#define CONFIG_COCOA 1" >> $config_h
1188 echo "CONFIG_COCOA=yes" >> $config_mak
1189fi
1190if test "$curses" = "yes" ; then
1191 echo "#define CONFIG_CURSES 1" >> $config_h
1192 echo "CONFIG_CURSES=yes" >> $config_mak
1193 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001194fi
aurel322e4d9fb2008-04-08 06:01:02 +00001195if test "$brlapi" = "yes" ; then
1196 echo "CONFIG_BRLAPI=yes" >> $config_mak
1197 echo "#define CONFIG_BRLAPI 1" >> $config_h
1198 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1199fi
blueswir1414f0da2008-08-15 18:20:52 +00001200if test "$aio" = "yes" ; then
1201 echo "#define CONFIG_AIO 1" >> $config_h
1202fi
bellard97a847b2003-08-10 21:36:04 +00001203
bellard83fb7ad2004-07-05 21:25:26 +00001204# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001205if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001206 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001207 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001208 echo "#define _BSD 1" >> $config_h
1209fi
1210
pbrookc5937222006-05-14 11:30:38 +00001211echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1212
pbrookc39e3332007-09-22 16:49:14 +00001213tools=
1214if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1215 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001216 if [ "$linux" = "yes" ] ; then
1217 tools="qemu-nbd\$(EXESUF) $tools"
1218 fi
pbrookc39e3332007-09-22 16:49:14 +00001219fi
1220echo "TOOLS=$tools" >> $config_mak
1221
ths15d9ca02007-07-31 23:07:32 +00001222test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1223
bellard1d14ffa2005-10-30 18:58:22 +00001224for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001225target_dir="$target"
1226config_mak=$target_dir/config.mak
1227config_h=$target_dir/config.h
1228target_cpu=`echo $target | cut -d '-' -f 1`
1229target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001230[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001231[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1232[ "$target_cpu" = "mips" ] && target_bigendian=yes
1233[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1234[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001235[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001236[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001237[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001238[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001239[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001240[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1241[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1242[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001243target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001244target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001245target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001246target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001247case "$target" in
1248 ${target_cpu}-softmmu)
1249 target_softmmu="yes"
1250 ;;
1251 ${target_cpu}-linux-user)
1252 target_user_only="yes"
1253 target_linux_user="yes"
1254 ;;
1255 ${target_cpu}-darwin-user)
1256 target_user_only="yes"
1257 target_darwin_user="yes"
1258 ;;
1259 *)
1260 echo "ERROR: Target '$target' not recognised"
1261 exit 1
1262 ;;
1263esac
ths831b7822007-01-18 20:06:33 +00001264
bellard97ccc682005-07-02 13:32:17 +00001265if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001266 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001267 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001268 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001269 echo "Note that this will disable all output from the virtual graphics card"
1270 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001271 exit 1;
1272fi
1273
bellard7c1f25b2004-04-22 00:02:08 +00001274#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001275
ths15d9ca02007-07-31 23:07:32 +00001276test -f $config_h && mv $config_h ${config_h}~
1277
bellard97a847b2003-08-10 21:36:04 +00001278mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001279mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001280mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001281if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001282 mkdir -p $target_dir/nwfpe
1283fi
1284
bellardec530c82006-04-25 22:36:06 +00001285#
1286# don't use ln -sf as not all "ln -sf" over write the file/link
1287#
1288rm -f $target_dir/Makefile
1289ln -s $source_path/Makefile.target $target_dir/Makefile
1290
bellard97a847b2003-08-10 21:36:04 +00001291
1292echo "# Automatically generated by configure - do not modify" > $config_mak
1293echo "/* Automatically generated by configure - do not modify */" > $config_h
1294
1295
1296echo "include ../config-host.mak" >> $config_mak
1297echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001298
pbrooke5fe0c52006-06-11 13:32:59 +00001299bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001300elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001301target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001302interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1303echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001304
aurel322408a522008-04-20 20:19:44 +00001305case "$target_cpu" in
1306 i386)
1307 echo "TARGET_ARCH=i386" >> $config_mak
1308 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1309 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001310 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001311 then
1312 echo "#define USE_KQEMU 1" >> $config_h
1313 fi
aurel32f2bf0942008-05-05 06:00:27 +00001314 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001315 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001316 then
1317 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1318 else
1319 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1320 fi
aurel322408a522008-04-20 20:19:44 +00001321 ;;
1322 x86_64)
1323 echo "TARGET_ARCH=x86_64" >> $config_mak
1324 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1325 echo "#define TARGET_I386 1" >> $config_h
1326 echo "#define TARGET_X86_64 1" >> $config_h
1327 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1328 then
1329 echo "#define USE_KQEMU 1" >> $config_h
1330 fi
1331 ;;
1332 alpha)
1333 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001334 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001335 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1336 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001337 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001338 ;;
1339 arm|armeb)
1340 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001341 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1342 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001343 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001344 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001345 ;;
1346 cris)
1347 echo "TARGET_ARCH=cris" >> $config_mak
1348 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1349 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001350 ;;
1351 m68k)
1352 echo "TARGET_ARCH=m68k" >> $config_mak
1353 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1354 echo "#define TARGET_M68K 1" >> $config_h
1355 bflt="yes"
1356 ;;
1357 mips|mipsel)
1358 echo "TARGET_ARCH=mips" >> $config_mak
1359 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1360 echo "#define TARGET_MIPS 1" >> $config_h
1361 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1362 ;;
1363 mipsn32|mipsn32el)
1364 echo "TARGET_ARCH=mipsn32" >> $config_mak
1365 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1366 echo "#define TARGET_MIPS 1" >> $config_h
1367 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1368 ;;
1369 mips64|mips64el)
1370 echo "TARGET_ARCH=mips64" >> $config_mak
1371 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1372 echo "#define TARGET_MIPS 1" >> $config_h
1373 echo "#define TARGET_MIPS64 1" >> $config_h
1374 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1375 ;;
1376 ppc)
1377 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001378 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001379 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1380 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001381 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001382 ;;
1383 ppcemb)
1384 echo "TARGET_ARCH=ppcemb" >> $config_mak
1385 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001386 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001387 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1388 echo "#define TARGET_PPC 1" >> $config_h
1389 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001390 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001391 ;;
1392 ppc64)
1393 echo "TARGET_ARCH=ppc64" >> $config_mak
1394 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001395 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001396 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1397 echo "#define TARGET_PPC 1" >> $config_h
1398 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001399 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001400 ;;
1401 ppc64abi32)
1402 echo "TARGET_ARCH=ppc64" >> $config_mak
1403 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1404 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001405 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001406 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1407 echo "#define TARGET_PPC 1" >> $config_h
1408 echo "#define TARGET_PPC64 1" >> $config_h
1409 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001410 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001411 ;;
1412 sh4|sh4eb)
1413 echo "TARGET_ARCH=sh4" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001414 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001415 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1416 echo "#define TARGET_SH4 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001417 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001418 bflt="yes"
1419 ;;
1420 sparc)
1421 echo "TARGET_ARCH=sparc" >> $config_mak
1422 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1423 echo "#define TARGET_SPARC 1" >> $config_h
1424 ;;
1425 sparc64)
1426 echo "TARGET_ARCH=sparc64" >> $config_mak
1427 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1428 echo "#define TARGET_SPARC 1" >> $config_h
1429 echo "#define TARGET_SPARC64 1" >> $config_h
1430 elfload32="yes"
1431 ;;
1432 sparc32plus)
1433 echo "TARGET_ARCH=sparc64" >> $config_mak
1434 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1435 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1436 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1437 echo "#define TARGET_SPARC 1" >> $config_h
1438 echo "#define TARGET_SPARC64 1" >> $config_h
1439 echo "#define TARGET_ABI32 1" >> $config_h
1440 ;;
1441 *)
1442 echo "Unsupported target CPU"
1443 exit 1
1444 ;;
1445esac
bellardde83cd02003-06-15 20:25:43 +00001446if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001447 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1448 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1449fi
1450if test "$target_softmmu" = "yes" ; then
1451 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1452 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001453fi
bellard997344f2003-10-27 21:10:39 +00001454if test "$target_user_only" = "yes" ; then
1455 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1456 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1457fi
ths831b7822007-01-18 20:06:33 +00001458if test "$target_linux_user" = "yes" ; then
1459 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1460 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1461fi
1462if test "$target_darwin_user" = "yes" ; then
1463 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1464 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1465fi
bellardde83cd02003-06-15 20:25:43 +00001466
aurel320938cda2008-04-11 21:36:06 +00001467if test "$target_cpu" = "arm" \
1468 -o "$target_cpu" = "armeb" \
1469 -o "$target_cpu" = "m68k" \
1470 -o "$target_cpu" = "mips" \
1471 -o "$target_cpu" = "mipsel" \
1472 -o "$target_cpu" = "mipsn32" \
1473 -o "$target_cpu" = "mipsn32el" \
1474 -o "$target_cpu" = "mips64" \
1475 -o "$target_cpu" = "mips64el" \
1476 -o "$target_cpu" = "sparc" \
1477 -o "$target_cpu" = "sparc64" \
1478 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001479 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1480 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1481fi
pbrooke5fe0c52006-06-11 13:32:59 +00001482if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1483 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1484 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1485fi
pbrookbd0c5662008-05-29 14:34:11 +00001486if test "$target_user_only" = "yes" \
1487 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1488 echo "#define USE_NPTL 1" >> $config_h
1489fi
blueswir1cb33da52007-10-09 16:34:29 +00001490# 32 bit ELF loader in addition to native 64 bit loader?
1491if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1492 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1493 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1494fi
bellard5b0753e2005-03-01 21:37:28 +00001495
ths15d9ca02007-07-31 23:07:32 +00001496test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1497
bellard97a847b2003-08-10 21:36:04 +00001498done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001499
1500# build tree in object directory if source path is different from current one
1501if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001502 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001503 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001504 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001505 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001506 for dir in $DIRS ; do
1507 mkdir -p $dir
1508 done
bellardec530c82006-04-25 22:36:06 +00001509 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001510 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001511 rm -f $f
1512 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001513 done
1514fi
bellard7d132992003-03-06 23:23:54 +00001515
bellard97a847b2003-08-10 21:36:04 +00001516rm -f $TMPO $TMPC $TMPE $TMPS