blob: 6a727c0a5aa52e680ec65052a1f215fea7737d92 [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
5# set temporary file name
6if test ! -z "$TMPDIR" ; then
7 TMPDIR1="${TMPDIR}"
8elif test ! -z "$TEMPDIR" ; then
9 TMPDIR1="${TEMPDIR}"
10else
11 TMPDIR1="/tmp"
12fi
13
bellard3ef693a2003-03-23 20:17:16 +000014TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
bellard7d132992003-03-06 23:23:54 +000018
19# default parameters
bellard11d9f692004-04-02 20:55:59 +000020prefix=""
bellard1e43adf2003-09-30 20:54:24 +000021interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +000022static="no"
bellard7d132992003-03-06 23:23:54 +000023cross_prefix=""
24cc="gcc"
pbrook328a4242006-12-19 03:31:34 +000025gcc3_search="yes"
balrogfe8f78e2007-10-31 01:03:28 +000026gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
malc0c58ac12008-06-25 21:04:05 +000027audio_drv_list=""
28audio_card_list=""
bellard7d132992003-03-06 23:23:54 +000029host_cc="gcc"
30ar="ar"
31make="make"
pbrook6a882642006-04-17 13:57:12 +000032install="install"
bellard7d132992003-03-06 23:23:54 +000033strip="strip"
34cpu=`uname -m`
bellard5327cf42005-01-10 23:18:50 +000035target_list=""
bellard7d132992003-03-06 23:23:54 +000036case "$cpu" in
37 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +000038 cpu="i386"
bellard7d132992003-03-06 23:23:54 +000039 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000040 x86_64|amd64)
41 cpu="x86_64"
42 ;;
43 alpha)
44 cpu="alpha"
45 ;;
bellardba680552005-03-13 09:49:52 +000046 armv*b)
bellard808c4952004-12-19 23:33:47 +000047 cpu="armv4b"
48 ;;
bellardba680552005-03-13 09:49:52 +000049 armv*l)
bellard7d132992003-03-06 23:23:54 +000050 cpu="armv4l"
51 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000052 cris)
53 cpu="cris"
bellard7d132992003-03-06 23:23:54 +000054 ;;
aurel32f54b3f92008-04-12 20:14:54 +000055 parisc|parisc64)
56 cpu="hppa"
57 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000058 ia64)
59 cpu="ia64"
60 ;;
61 m68k)
62 cpu="m68k"
bellard7d132992003-03-06 23:23:54 +000063 ;;
64 mips)
65 cpu="mips"
66 ;;
thsfbe4f652007-04-01 11:16:48 +000067 mips64)
68 cpu="mips64"
69 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000070 "Power Macintosh"|ppc|ppc64)
71 cpu="powerpc"
thse7daa602007-10-08 13:38:27 +000072 ;;
ths0e7b8a92007-08-01 00:09:31 +000073 s390*)
bellardfb3e5842003-03-29 17:32:36 +000074 cpu="s390"
75 ;;
blueswir131422552007-04-16 18:27:06 +000076 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +000077 cpu="sparc"
78 ;;
79 sparc64)
80 cpu="sparc64"
81 ;;
bellard7d132992003-03-06 23:23:54 +000082 *)
83 cpu="unknown"
84 ;;
85esac
86gprof="no"
87bigendian="no"
bellard67b915a2004-03-31 23:37:16 +000088mingw32="no"
89EXESUF=""
90gdbstub="yes"
bellard443f1372004-06-04 11:13:20 +000091slirp="yes"
aliguorie0e6c8c02008-07-23 18:14:33 +000092vde="yes"
bellard102a52e2004-11-14 19:57:29 +000093fmod_lib=""
94fmod_inc=""
blueswir12f6a1ab2008-08-21 18:00:53 +000095oss_lib=""
ths8d5d2d42007-08-25 01:37:51 +000096vnc_tls="yes"
pbrookb1a550a2006-04-16 13:28:56 +000097bsd="no"
bellard5327cf42005-01-10 23:18:50 +000098linux="no"
bellardc9ec1fe2005-02-10 21:55:30 +000099kqemu="no"
bellard05c2a3e2006-02-08 22:39:17 +0000100profiler="no"
bellard5b0753e2005-03-01 21:37:28 +0000101cocoa="no"
bellard97ccc682005-07-02 13:32:17 +0000102check_gfx="yes"
bellard1aff3812005-11-02 22:30:45 +0000103check_gcc="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000104softmmu="yes"
ths831b7822007-01-18 20:06:33 +0000105linux_user="no"
106darwin_user="no"
pbrookcc8ae6d2006-04-23 17:57:59 +0000107build_docs="no"
pbrookc5937222006-05-14 11:30:38 +0000108uname_release=""
balrog4d3b6f62008-02-10 16:33:14 +0000109curses="yes"
blueswir1414f0da2008-08-15 18:20:52 +0000110aio="yes"
pbrookbd0c5662008-05-29 14:34:11 +0000111nptl="yes"
malc8ff9cbf2008-06-23 18:33:30 +0000112mixemu="no"
bellard7d132992003-03-06 23:23:54 +0000113
114# OS specific
115targetos=`uname -s`
116case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000117CYGWIN*)
118mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000119OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000120if [ "$cpu" = "i386" ] ; then
121 kqemu="yes"
122fi
malcc2de5c92008-06-28 19:13:06 +0000123audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000124;;
bellard67b915a2004-03-31 23:37:16 +0000125MINGW32*)
126mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000127if [ "$cpu" = "i386" ] ; then
128 kqemu="yes"
129fi
malcc2de5c92008-06-28 19:13:06 +0000130audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000131;;
ths5c40d2b2007-06-23 16:03:36 +0000132GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000133audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000134audio_possible_drivers="oss sdl esd pa"
ths5c40d2b2007-06-23 16:03:36 +0000135if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
136 kqemu="yes"
137fi
138;;
bellard7d3505c2004-05-12 19:32:15 +0000139FreeBSD)
140bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000141audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000142audio_possible_drivers="oss sdl esd pa"
bellarde99f9062005-07-28 21:45:38 +0000143if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000144 kqemu="yes"
145fi
bellard7d3505c2004-05-12 19:32:15 +0000146;;
147NetBSD)
148bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000149audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000150audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000151;;
152OpenBSD)
153bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000154openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000155audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000156audio_possible_drivers="oss sdl esd"
blueswir12f6a1ab2008-08-21 18:00:53 +0000157oss_lib="-lossaudio"
bellard7d3505c2004-05-12 19:32:15 +0000158;;
bellard83fb7ad2004-07-05 21:25:26 +0000159Darwin)
160bsd="yes"
161darwin="yes"
ths831b7822007-01-18 20:06:33 +0000162darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000163cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000164audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000165audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000166OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000167OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000168;;
bellardec530c82006-04-25 22:36:06 +0000169SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000170 solaris="yes"
171 make="gmake"
172 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000173 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000174 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000175 # have to select again, because `uname -m` returns i86pc
176 # even on an x86_64 box.
177 solariscpu=`isainfo -k`
178 if test "${solariscpu}" = "amd64" ; then
179 cpu="x86_64"
180 fi
thsc2b84fa2007-02-10 23:21:21 +0000181 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000182 if test "$solarisrev" -le 9 ; then
183 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
184 needs_libsunmath="yes"
185 else
186 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
187 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
188 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
189 echo "Studio 11 can be downloaded from www.sun.com."
190 exit 1
191 fi
192 fi
193 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000194 kqemu="yes"
195 fi
ths86b2bd92007-02-11 00:31:33 +0000196 fi
ths6b4d2ba2007-05-13 18:02:43 +0000197 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000198 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000199 fi
malcc2de5c92008-06-28 19:13:06 +0000200 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000201;;
bellard1d14ffa2005-10-30 18:58:22 +0000202*)
malc0c58ac12008-06-25 21:04:05 +0000203audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000204audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000205linux="yes"
ths831b7822007-01-18 20:06:33 +0000206linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000207if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000208 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000209 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000210fi
bellardfb065182004-11-09 23:09:44 +0000211;;
bellard7d132992003-03-06 23:23:54 +0000212esac
213
bellard7d3505c2004-05-12 19:32:15 +0000214if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000215 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000216 make="gmake"
217 fi
bellard7d3505c2004-05-12 19:32:15 +0000218fi
219
bellard7d132992003-03-06 23:23:54 +0000220# find source path
pbrookad064842006-04-16 12:41:07 +0000221source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000222source_path_used="no"
223workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000224if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000225 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000226else
227 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000228fi
pbrook724db112008-02-03 19:20:13 +0000229[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000230
bellard85aa5182007-11-11 20:17:03 +0000231werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000232# generate compile errors on warnings for development builds
233#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
234#werror="yes";
235#fi
bellard85aa5182007-11-11 20:17:03 +0000236
bellard7d132992003-03-06 23:23:54 +0000237for opt do
pbrooka46e4032006-04-29 23:05:22 +0000238 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000239 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000240 --help|-h) show_help=yes
241 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000242 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000243 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000244 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000245 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000246 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000247 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000248 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000249 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000250 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000251 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000252 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000253 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000254 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000255 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000256 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000257 ;;
pbrook6a882642006-04-17 13:57:12 +0000258 --install=*) install="$optarg"
259 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000260 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000261 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000262 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000263 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000264 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000265 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000266 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000267 ;;
bellard7d132992003-03-06 23:23:54 +0000268 --enable-gprof) gprof="yes"
269 ;;
bellard43ce4df2003-06-09 19:53:12 +0000270 --static) static="yes"
271 ;;
bellard97a847b2003-08-10 21:36:04 +0000272 --disable-sdl) sdl="no"
273 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000274 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000275 ;;
malcc2de5c92008-06-28 19:13:06 +0000276 --fmod-inc=*) fmod_inc="$optarg"
277 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000278 --oss-lib=*) oss_lib="$optarg"
279 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000280 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000281 ;;
282 --audio-drv-list=*) audio_drv_list="$optarg"
283 ;;
ths8d5d2d42007-08-25 01:37:51 +0000284 --disable-vnc-tls) vnc_tls="no"
285 ;;
bellard443f1372004-06-04 11:13:20 +0000286 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000287 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000288 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000289 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000290 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000291 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000292 --disable-brlapi) brlapi="no"
293 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000294 --enable-profiler) profiler="yes"
295 ;;
malcc2de5c92008-06-28 19:13:06 +0000296 --enable-cocoa)
297 cocoa="yes" ;
298 sdl="no" ;
299 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000300 ;;
bellard97ccc682005-07-02 13:32:17 +0000301 --disable-gfx-check) check_gfx="no"
302 ;;
bellard1aff3812005-11-02 22:30:45 +0000303 --disable-gcc-check) check_gcc="no"
304 ;;
pbrookcad25d62006-03-19 16:31:11 +0000305 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000306 ;;
pbrookcad25d62006-03-19 16:31:11 +0000307 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000308 ;;
ths831b7822007-01-18 20:06:33 +0000309 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000310 ;;
ths831b7822007-01-18 20:06:33 +0000311 --enable-linux-user) linux_user="yes"
312 ;;
313 --disable-darwin-user) darwin_user="no"
314 ;;
315 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000316 ;;
pbrookc5937222006-05-14 11:30:38 +0000317 --enable-uname-release=*) uname_release="$optarg"
318 ;;
blueswir131422552007-04-16 18:27:06 +0000319 --sparc_cpu=*)
320 sparc_cpu="$optarg"
321 case $sparc_cpu in
322 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
323 target_cpu="sparc"; cpu="sparc" ;;
324 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
325 target_cpu="sparc"; cpu="sparc" ;;
326 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
327 target_cpu="sparc64"; cpu="sparc64" ;;
328 *) echo "undefined SPARC architecture. Exiting";exit 1;;
329 esac
330 ;;
bellard85aa5182007-11-11 20:17:03 +0000331 --enable-werror) werror="yes"
332 ;;
333 --disable-werror) werror="no"
334 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000335 --disable-curses) curses="no"
336 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000337 --disable-nptl) nptl="no"
338 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000339 --enable-mixemu) mixemu="yes"
340 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000341 --disable-aio) aio="no"
342 ;;
balrog7f1559c2007-11-17 10:24:32 +0000343 *) echo "ERROR: unknown option $opt"; show_help="yes"
344 ;;
bellard7d132992003-03-06 23:23:54 +0000345 esac
346done
347
ths6f30fa82007-01-05 01:00:47 +0000348# default flags for all hosts
blueswir1ac41a622008-09-14 06:46:31 +0000349CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
350CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
ths6f30fa82007-01-05 01:00:47 +0000351LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000352if test "$werror" = "yes" ; then
353CFLAGS="$CFLAGS -Werror"
354fi
ths6f30fa82007-01-05 01:00:47 +0000355
blueswir149237ac2008-09-17 19:05:19 +0000356if ld --version 2>/dev/null | grep -q "GNU ld" ; then
357 LDFLAGS="$LDFLAGS -Wl,--warn-common"
358fi
359
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)"
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"
blueswir12f6a1ab2008-08-21 18:00:53 +0000439echo " --oss-lib path to OSS library"
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
aliguoricd01b4a2008-08-21 19:25:45 +0000465# check compiler to see if we're on mingw32
466cat > $TMPC <<EOF
467#include <windows.h>
468#ifndef _WIN32
469#error not windows
470#endif
471int main(void) {}
472EOF
473
474if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
475 mingw32="yes"
476fi
477
bellard67b915a2004-03-31 23:37:16 +0000478if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000479 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000480 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000481 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000482 linux_user="no"
483fi
484
aliguori997306f2008-09-26 15:52:17 +0000485if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
aliguoricd01b4a2008-08-21 19:25:45 +0000486 AIOLIBS=
aliguori997306f2008-09-26 15:52:17 +0000487elif [ "$bsd" = "yes" ]; then
488 AIOLIBS="-lpthread"
aliguoricd01b4a2008-08-21 19:25:45 +0000489else
490 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
491 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000492fi
493
ths5fafdf22007-09-16 21:08:06 +0000494# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000495if test "$check_gcc" = "yes" ; then
496 cat > $TMPC <<EOF
497#if __GNUC__ < 4
498#error gcc3
499#endif
500int main(){return 0;}
501EOF
pbrookdb7287e2008-02-03 16:27:13 +0000502 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000503 echo "WARNING: \"$cc\" looks like gcc 4.x"
504 found_compat_cc="no"
505 if test "$gcc3_search" = "yes" ; then
506 echo "Looking for gcc 3.x"
507 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000508 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000509 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000510 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000511 found_compat_cc="yes"
512 break
513 fi
514 done
515 if test "$found_compat_cc" = "no" ; then
516 echo "gcc 3.x not found!"
517 fi
518 fi
519 if test "$found_compat_cc" = "no" ; then
520 echo "QEMU is known to have problems when compiled with gcc 4.x"
521 echo "It is recommended that you use gcc 3.x to build QEMU"
522 echo "To use this compiler anyway, configure with --disable-gcc-check"
523 exit 1;
524 fi
525 fi
526fi
527
bellardec530c82006-04-25 22:36:06 +0000528#
529# Solaris specific configure tool chain decisions
530#
531if test "$solaris" = "yes" ; then
532 #
533 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
534 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000535 #
bellardec530c82006-04-25 22:36:06 +0000536 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
537 solgcc=`which $cc`
538 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
539 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
540 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
541 echo "or get the latest patch from SunSolve for gcc"
542 exit 1
543 fi
544 fi
545 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
546 if test -z "$solinst" ; then
547 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
548 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
549 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
550 exit 1
551 fi
552 if test "$solinst" = "/usr/sbin/install" ; then
553 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
554 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
555 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
556 exit 1
557 fi
bellardec530c82006-04-25 22:36:06 +0000558 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
559 if test -z "$sol_ar" ; then
560 echo "Error: No path includes ar"
561 if test -f /usr/ccs/bin/ar ; then
562 echo "Add /usr/ccs/bin to your path and rerun configure"
563 fi
564 exit 1
565 fi
ths5fafdf22007-09-16 21:08:06 +0000566fi
bellardec530c82006-04-25 22:36:06 +0000567
568
bellard5327cf42005-01-10 23:18:50 +0000569if test -z "$target_list" ; then
570# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000571 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000572 target_list="\
573i386-softmmu \
574x86_64-softmmu \
575arm-softmmu \
576cris-softmmu \
577m68k-softmmu \
578mips-softmmu \
579mipsel-softmmu \
580mips64-softmmu \
581mips64el-softmmu \
582ppc-softmmu \
583ppcemb-softmmu \
584ppc64-softmmu \
585sh4-softmmu \
586sh4eb-softmmu \
587sparc-softmmu \
588"
pbrook0a8e90f2006-03-19 14:54:16 +0000589 fi
bellard5327cf42005-01-10 23:18:50 +0000590# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000591 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000592 target_list="${target_list}\
593i386-linux-user \
594x86_64-linux-user \
595alpha-linux-user \
596arm-linux-user \
597armeb-linux-user \
598cris-linux-user \
599m68k-linux-user \
600mips-linux-user \
601mipsel-linux-user \
602ppc-linux-user \
603ppc64-linux-user \
604ppc64abi32-linux-user \
605sh4-linux-user \
606sh4eb-linux-user \
607sparc-linux-user \
608sparc64-linux-user \
609sparc32plus-linux-user \
610"
ths831b7822007-01-18 20:06:33 +0000611 fi
612# the following are Darwin specific
613 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000614 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000615 fi
bellard6e20a452005-06-05 15:56:02 +0000616else
pbrookb1a550a2006-04-16 13:28:56 +0000617 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000618fi
pbrook0a8e90f2006-03-19 14:54:16 +0000619if test -z "$target_list" ; then
620 echo "No targets enabled"
621 exit 1
622fi
bellard5327cf42005-01-10 23:18:50 +0000623
bellard7d132992003-03-06 23:23:54 +0000624if test -z "$cross_prefix" ; then
625
626# ---
627# big/little endian test
628cat > $TMPC << EOF
629#include <inttypes.h>
630int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000631 volatile uint32_t i=0x01234567;
632 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000633}
634EOF
635
pbrookdb7287e2008-02-03 16:27:13 +0000636if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000637$TMPE && bigendian="yes"
638else
639echo big/little test failed
640fi
641
642else
643
644# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000645if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000646 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000647 -o "$cpu" = "m68k" \
648 -o "$cpu" = "mips" \
649 -o "$cpu" = "mips64" \
650 -o "$cpu" = "powerpc" \
651 -o "$cpu" = "s390" \
652 -o "$cpu" = "sparc" \
653 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000654 bigendian="yes"
655fi
656
657fi
658
bellardb6853692005-06-05 17:10:39 +0000659# host long bits test
660hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000661if test "$cpu" = "x86_64" \
662 -o "$cpu" = "alpha" \
663 -o "$cpu" = "ia64" \
664 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000665 hostlongbits="64"
666fi
667
malc810260a2008-07-23 19:17:46 +0000668# ppc specific hostlongbits selection
669if test "$cpu" = "powerpc" ; then
670 cat > $TMPC <<EOF
671int main(void){return sizeof(long);}
672EOF
673
674 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
675 $TMPE
676 case $? in
677 4) hostlongbits="32";;
678 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000679 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000680 esac
681 else
682 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000683 exit 1
malc810260a2008-07-23 19:17:46 +0000684 fi
685fi
686
bellarde8cd23d2003-06-25 16:08:13 +0000687# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000688cat > $TMPC <<EOF
689int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000690}
691EOF
692
pbrookbd0c5662008-05-29 14:34:11 +0000693# Check host NPTL support
694cat > $TMPC <<EOF
695#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000696#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000697void foo()
698{
699#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
700#error bork
701#endif
702}
703EOF
704
705if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
706 :
707else
708 nptl="no"
709fi
710
bellard11d9f692004-04-02 20:55:59 +0000711##########################################
712# SDL probe
713
714sdl_too_old=no
715
716if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000717 sdl_config="sdl-config"
718 sdl=no
719 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000720
721cat > $TMPC << EOF
722#include <SDL.h>
723#undef main /* We don't want SDL to override our main() */
724int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
725EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000726 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
727 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
728 if test "$_sdlversion" -lt 121 ; then
729 sdl_too_old=yes
730 else
731 if test "$cocoa" = "no" ; then
732 sdl=yes
733 fi
734 fi
735
736 # static link with sdl ?
737 if test "$sdl" = "yes" ; then
738 aa="no"
739 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
740 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
741 if [ "$aa" = "yes" ] ; then
742 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000743 fi
bellard11d9f692004-04-02 20:55:59 +0000744
aliguoricd01b4a2008-08-21 19:25:45 +0000745 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
746 sdl_static=yes
747 fi
748 fi # static link
749 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000750else
ths069b0bd2007-07-12 00:27:15 +0000751 # Make sure to disable cocoa if sdl was set
752 if test "$sdl" = "yes" ; then
753 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000754 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000755 fi
bellarda6e022a2004-04-02 21:55:47 +0000756fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000757
ths8f28f3f2007-01-05 21:25:54 +0000758##########################################
ths8d5d2d42007-08-25 01:37:51 +0000759# VNC TLS detection
760if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000761cat > $TMPC <<EOF
762#include <gnutls/gnutls.h>
763int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
764EOF
765 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
766 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
767 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
768 $vnc_tls_libs 2> /dev/null ; then
769 :
770 else
771 vnc_tls="no"
772 fi
ths8d5d2d42007-08-25 01:37:51 +0000773fi
774
775##########################################
ths8a16d272008-07-19 09:56:24 +0000776# vde libraries probe
777if test "$vde" = "yes" ; then
778 cat > $TMPC << EOF
779#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000780int main(void)
781{
782 struct vde_open_args a = {0, 0, 0};
783 vde_open("", "", &a);
784 return 0;
785}
ths8a16d272008-07-19 09:56:24 +0000786EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000787 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000788 :
789 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000790 vde="no"
ths8a16d272008-07-19 09:56:24 +0000791 fi
792fi
793
794##########################################
malcc2de5c92008-06-28 19:13:06 +0000795# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000796
malcc2de5c92008-06-28 19:13:06 +0000797audio_drv_probe()
798{
799 drv=$1
800 hdr=$2
801 lib=$3
802 exp=$4
803 cfl=$5
804 cat > $TMPC << EOF
805#include <$hdr>
806int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000807EOF
malcc2de5c92008-06-28 19:13:06 +0000808 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
809 :
810 else
811 echo
812 echo "Error: $drv check failed"
813 echo "Make sure to have the $drv libs and headers installed."
814 echo
815 exit 1
816 fi
817}
818
malc2fa7d3b2008-07-29 12:58:44 +0000819audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000820for drv in $audio_drv_list; do
821 case $drv in
822 alsa)
823 audio_drv_probe $drv alsa/asoundlib.h -lasound \
824 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
825 ;;
826
827 fmod)
828 if test -z $fmod_lib || test -z $fmod_inc; then
829 echo
830 echo "Error: You must specify path to FMOD library and headers"
831 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
832 echo
833 exit 1
834 fi
835 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
836 ;;
837
838 esd)
839 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
840 ;;
malcb8e59f12008-07-02 21:03:08 +0000841
842 pa)
843 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
844 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
845 ;;
846
blueswir12f6a1ab2008-08-21 18:00:53 +0000847 oss|sdl|core|wav|dsound)
848 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
849 ;;
850
malce4c63a62008-07-19 16:15:16 +0000851 *)
malc1c9b2a52008-07-19 16:57:30 +0000852 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000853 echo
854 echo "Error: Unknown driver '$drv' selected"
855 echo "Possible drivers are: $audio_possible_drivers"
856 echo
857 exit 1
858 }
859 ;;
malcc2de5c92008-06-28 19:13:06 +0000860 esac
861done
ths8f28f3f2007-01-05 21:25:54 +0000862
balrog4d3b6f62008-02-10 16:33:14 +0000863##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000864# BrlAPI probe
865
866if test -z "$brlapi" ; then
867 brlapi=no
868cat > $TMPC << EOF
869#include <brlapi.h>
870int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
871EOF
aurel32a40e56d2008-05-04 00:50:25 +0000872 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000873 brlapi=yes
874 fi # brlapi compile test
875fi # -z $brlapi
876
877##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000878# curses probe
879
880if test "$curses" = "yes" ; then
881 curses=no
882 cat > $TMPC << EOF
883#include <curses.h>
884int main(void) { return curses_version(); }
885EOF
pbrookaf896aa2008-03-23 00:47:42 +0000886 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000887 curses=yes
888 fi
889fi # test "$curses"
890
blueswir1414f0da2008-08-15 18:20:52 +0000891##########################################
892# AIO probe
893if test "$aio" = "yes" ; then
894 aio=no
895 cat > $TMPC << EOF
896#include <aio.h>
897int main(void) { return aio_write(NULL); }
898EOF
899 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
900 aio=yes
901 fi
902fi
903
pbrookcc8ae6d2006-04-23 17:57:59 +0000904# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000905if [ -x "`which texi2html 2>/dev/null`" ] && \
906 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000907 build_docs="yes"
908fi
909
bellard11d9f692004-04-02 20:55:59 +0000910if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000911 if test -z "$prefix" ; then
912 prefix="/c/Program Files/Qemu"
913 fi
914 mansuffix=""
915 datasuffix=""
916 docsuffix=""
917 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000918else
pbrook308c3592007-02-27 00:52:01 +0000919 if test -z "$prefix" ; then
920 prefix="/usr/local"
921 fi
922 mansuffix="/share/man"
923 datasuffix="/share/qemu"
924 docsuffix="/share/doc/qemu"
925 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000926fi
bellard5a671352003-10-01 00:13:48 +0000927
bellard43ce4df2003-06-09 19:53:12 +0000928echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000929echo "BIOS directory $prefix$datasuffix"
930echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000931if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000932echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000933echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000934fi
bellard5a671352003-10-01 00:13:48 +0000935echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000936echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000937echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000938echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000939echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000940echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000941echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000942echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000943echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000944echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000945echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000946echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000947echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000948if test "$darwin" = "yes" ; then
949 echo "Cocoa support $cocoa"
950fi
bellard97a847b2003-08-10 21:36:04 +0000951echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000952if test "$sdl" != "no" ; then
953 echo "SDL static link $sdl_static"
954fi
balrog4d3b6f62008-02-10 16:33:14 +0000955echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000956echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +0000957echo "Audio drivers $audio_drv_list"
958echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +0000959echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +0000960echo "VNC TLS support $vnc_tls"
961if test "$vnc_tls" = "yes" ; then
962 echo " TLS CFLAGS $vnc_tls_cflags"
963 echo " TLS LIBS $vnc_tls_libs"
964fi
blueswir131422552007-04-16 18:27:06 +0000965if test -n "$sparc_cpu"; then
966 echo "Target Sparc Arch $sparc_cpu"
967fi
bellard07f4ddb2005-04-23 17:44:28 +0000968echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +0000969echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +0000970echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +0000971[ ! -z "$uname_release" ] && \
972echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +0000973echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +0000974echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +0000975echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +0000976
bellard97a847b2003-08-10 21:36:04 +0000977if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +0000978echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +0000979fi
ths20b40c62007-07-11 23:39:45 +0000980if [ -s /tmp/qemu-$$-sdl-config.log ]; then
981 echo "The error log from compiling the libSDL test is: "
982 cat /tmp/qemu-$$-sdl-config.log
983fi
984rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +0000985#if test "$sdl_static" = "no"; then
986# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
987#fi
bellard97a847b2003-08-10 21:36:04 +0000988config_mak="config-host.mak"
989config_h="config-host.h"
990
bellard7c1f25b2004-04-22 00:02:08 +0000991#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +0000992
ths15d9ca02007-07-31 23:07:32 +0000993test -f $config_h && mv $config_h ${config_h}~
994
bellard97a847b2003-08-10 21:36:04 +0000995echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +0000996echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000997echo "/* Automatically generated by configure - do not modify */" > $config_h
998
999echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001000echo "bindir=\${prefix}$binsuffix" >> $config_mak
1001echo "mandir=\${prefix}$mansuffix" >> $config_mak
1002echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +00001003echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001004echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001005echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +00001006echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001007echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001008echo "HOST_CC=$host_cc" >> $config_mak
1009echo "AR=$ar" >> $config_mak
1010echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001011# XXX: only use CFLAGS and LDFLAGS ?
1012# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1013# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001014echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001015echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1016echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1017echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001018echo "CFLAGS=$CFLAGS" >> $config_mak
1019echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001020echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001021echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001022case "$cpu" in
1023 i386)
1024 echo "ARCH=i386" >> $config_mak
1025 echo "#define HOST_I386 1" >> $config_h
1026 ;;
1027 x86_64)
1028 echo "ARCH=x86_64" >> $config_mak
1029 echo "#define HOST_X86_64 1" >> $config_h
1030 ;;
1031 alpha)
1032 echo "ARCH=alpha" >> $config_mak
1033 echo "#define HOST_ALPHA 1" >> $config_h
1034 ;;
1035 armv4b)
1036 echo "ARCH=arm" >> $config_mak
1037 echo "#define HOST_ARM 1" >> $config_h
1038 ;;
1039 armv4l)
1040 echo "ARCH=arm" >> $config_mak
1041 echo "#define HOST_ARM 1" >> $config_h
1042 ;;
1043 cris)
1044 echo "ARCH=cris" >> $config_mak
1045 echo "#define HOST_CRIS 1" >> $config_h
1046 ;;
1047 hppa)
1048 echo "ARCH=hppa" >> $config_mak
1049 echo "#define HOST_HPPA 1" >> $config_h
1050 ;;
1051 ia64)
1052 echo "ARCH=ia64" >> $config_mak
1053 echo "#define HOST_IA64 1" >> $config_h
1054 ;;
1055 m68k)
1056 echo "ARCH=m68k" >> $config_mak
1057 echo "#define HOST_M68K 1" >> $config_h
1058 ;;
1059 mips)
1060 echo "ARCH=mips" >> $config_mak
1061 echo "#define HOST_MIPS 1" >> $config_h
1062 ;;
1063 mips64)
1064 echo "ARCH=mips64" >> $config_mak
1065 echo "#define HOST_MIPS64 1" >> $config_h
1066 ;;
1067 powerpc)
malc810260a2008-07-23 19:17:46 +00001068 if test "$hostlongbits" = "32"; then
1069 echo "ARCH=ppc" >> $config_mak
1070 echo "#define HOST_PPC 1" >> $config_h
1071 else
1072 echo "ARCH=ppc64" >> $config_mak
1073 echo "#define HOST_PPC64 1" >> $config_h
1074 fi
aurel322408a522008-04-20 20:19:44 +00001075 ;;
1076 s390)
1077 echo "ARCH=s390" >> $config_mak
1078 echo "#define HOST_S390 1" >> $config_h
1079 ;;
1080 sparc)
1081 echo "ARCH=sparc" >> $config_mak
1082 echo "#define HOST_SPARC 1" >> $config_h
1083 ;;
1084 sparc64)
1085 echo "ARCH=sparc64" >> $config_mak
1086 echo "#define HOST_SPARC64 1" >> $config_h
1087 ;;
1088 *)
1089 echo "Unsupported CPU = $cpu"
1090 exit 1
1091 ;;
1092esac
bellard7d132992003-03-06 23:23:54 +00001093if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001094 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1095 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1096fi
bellardb6853692005-06-05 17:10:39 +00001097echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001098if test "$mingw32" = "yes" ; then
1099 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001100 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001101else
1102 cat > $TMPC << EOF
1103#include <byteswap.h>
1104int main(void) { return bswap_32(0); }
1105EOF
pbrookdb7287e2008-02-03 16:27:13 +00001106 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001107 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1108 fi
bellard67b915a2004-03-31 23:37:16 +00001109fi
blueswir1128ab2f2008-08-15 18:33:42 +00001110
1111if [ "$openbsd" = "yes" ] ; then
1112 echo "#define ENOTSUP 4096" >> $config_h
1113fi
1114
bellard83fb7ad2004-07-05 21:25:26 +00001115if test "$darwin" = "yes" ; then
1116 echo "CONFIG_DARWIN=yes" >> $config_mak
1117 echo "#define CONFIG_DARWIN 1" >> $config_h
1118fi
bellardec530c82006-04-25 22:36:06 +00001119if test "$solaris" = "yes" ; then
1120 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001121 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001122 if test "$needs_libsunmath" = "yes" ; then
1123 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1124 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1125 fi
bellardec530c82006-04-25 22:36:06 +00001126fi
blueswir131422552007-04-16 18:27:06 +00001127if test -n "$sparc_cpu"; then
1128 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1129 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1130fi
bellard67b915a2004-03-31 23:37:16 +00001131if test "$gdbstub" = "yes" ; then
1132 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1133 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1134fi
bellard97a847b2003-08-10 21:36:04 +00001135if test "$gprof" = "yes" ; then
1136 echo "TARGET_GPROF=yes" >> $config_mak
1137 echo "#define HAVE_GPROF 1" >> $config_h
1138fi
1139if test "$static" = "yes" ; then
1140 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001141 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001142fi
bellard05c2a3e2006-02-08 22:39:17 +00001143if test $profiler = "yes" ; then
1144 echo "#define CONFIG_PROFILER 1" >> $config_h
1145fi
bellardc20709a2004-04-21 23:27:19 +00001146if test "$slirp" = "yes" ; then
1147 echo "CONFIG_SLIRP=yes" >> $config_mak
1148 echo "#define CONFIG_SLIRP 1" >> $config_h
1149fi
ths8a16d272008-07-19 09:56:24 +00001150if test "$vde" = "yes" ; then
1151 echo "CONFIG_VDE=yes" >> $config_mak
1152 echo "#define CONFIG_VDE 1" >> $config_h
1153 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1154fi
malc0c58ac12008-06-25 21:04:05 +00001155for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001156 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001157 echo "$def=yes" >> $config_mak
1158 echo "#define $def 1" >> $config_h
1159done
1160echo "#define AUDIO_DRIVERS \\" >> $config_h
1161for drv in $audio_drv_list; do
1162 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001163 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001164 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001165 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001166 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1167 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001168 elif test "$drv" = "oss"; then
1169 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001170 fi
1171done
1172echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001173if test "$mixemu" = "yes" ; then
1174 echo "CONFIG_MIXEMU=yes" >> $config_mak
1175 echo "#define CONFIG_MIXEMU 1" >> $config_h
1176fi
ths8d5d2d42007-08-25 01:37:51 +00001177if test "$vnc_tls" = "yes" ; then
1178 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1179 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1180 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1181 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1182fi
pbrookb1a550a2006-04-16 13:28:56 +00001183qemu_version=`head $source_path/VERSION`
1184echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001185echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001186
1187echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001188if [ "$source_path_used" = "yes" ]; then
1189 echo "VPATH=$source_path" >> $config_mak
1190fi
bellard97a847b2003-08-10 21:36:04 +00001191echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001192if [ "$build_docs" = "yes" ] ; then
1193 echo "BUILD_DOCS=yes" >> $config_mak
1194fi
bellard49ecc3f2007-11-07 19:25:15 +00001195if test "$static" = "yes"; then
1196 sdl1=$sdl_static
1197else
1198 sdl1=$sdl
1199fi
1200if test "$sdl1" = "yes" ; then
1201 echo "#define CONFIG_SDL 1" >> $config_h
1202 echo "CONFIG_SDL=yes" >> $config_mak
1203 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1204 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1205 else
1206 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1207 fi
1208 if [ "${aa}" = "yes" ] ; then
1209 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1210 else
1211 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1212 fi
1213fi
1214if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001215 echo "#define CONFIG_COCOA 1" >> $config_h
1216 echo "CONFIG_COCOA=yes" >> $config_mak
1217fi
1218if test "$curses" = "yes" ; then
1219 echo "#define CONFIG_CURSES 1" >> $config_h
1220 echo "CONFIG_CURSES=yes" >> $config_mak
1221 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001222fi
aurel322e4d9fb2008-04-08 06:01:02 +00001223if test "$brlapi" = "yes" ; then
1224 echo "CONFIG_BRLAPI=yes" >> $config_mak
1225 echo "#define CONFIG_BRLAPI 1" >> $config_h
1226 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1227fi
blueswir1414f0da2008-08-15 18:20:52 +00001228if test "$aio" = "yes" ; then
1229 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001230 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001231fi
bellard97a847b2003-08-10 21:36:04 +00001232
bellard83fb7ad2004-07-05 21:25:26 +00001233# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001234if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001235 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001236 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001237 echo "#define _BSD 1" >> $config_h
1238fi
1239
pbrookc5937222006-05-14 11:30:38 +00001240echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1241
pbrookc39e3332007-09-22 16:49:14 +00001242tools=
1243if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1244 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001245 if [ "$linux" = "yes" ] ; then
1246 tools="qemu-nbd\$(EXESUF) $tools"
1247 fi
pbrookc39e3332007-09-22 16:49:14 +00001248fi
1249echo "TOOLS=$tools" >> $config_mak
1250
ths15d9ca02007-07-31 23:07:32 +00001251test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1252
bellard1d14ffa2005-10-30 18:58:22 +00001253for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001254target_dir="$target"
1255config_mak=$target_dir/config.mak
1256config_h=$target_dir/config.h
1257target_cpu=`echo $target | cut -d '-' -f 1`
1258target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001259[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001260[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1261[ "$target_cpu" = "mips" ] && target_bigendian=yes
1262[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1263[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001264[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001265[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001266[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001267[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001268[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001269[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1270[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1271[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001272target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001273target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001274target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001275target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001276case "$target" in
1277 ${target_cpu}-softmmu)
1278 target_softmmu="yes"
1279 ;;
1280 ${target_cpu}-linux-user)
1281 target_user_only="yes"
1282 target_linux_user="yes"
1283 ;;
1284 ${target_cpu}-darwin-user)
1285 target_user_only="yes"
1286 target_darwin_user="yes"
1287 ;;
1288 *)
1289 echo "ERROR: Target '$target' not recognised"
1290 exit 1
1291 ;;
1292esac
ths831b7822007-01-18 20:06:33 +00001293
bellard97ccc682005-07-02 13:32:17 +00001294if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001295 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001296 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001297 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001298 echo "Note that this will disable all output from the virtual graphics card"
1299 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001300 exit 1;
1301fi
1302
bellard7c1f25b2004-04-22 00:02:08 +00001303#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001304
ths15d9ca02007-07-31 23:07:32 +00001305test -f $config_h && mv $config_h ${config_h}~
1306
bellard97a847b2003-08-10 21:36:04 +00001307mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001308mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001309mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001310if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001311 mkdir -p $target_dir/nwfpe
1312fi
1313
bellardec530c82006-04-25 22:36:06 +00001314#
1315# don't use ln -sf as not all "ln -sf" over write the file/link
1316#
1317rm -f $target_dir/Makefile
1318ln -s $source_path/Makefile.target $target_dir/Makefile
1319
bellard97a847b2003-08-10 21:36:04 +00001320
1321echo "# Automatically generated by configure - do not modify" > $config_mak
1322echo "/* Automatically generated by configure - do not modify */" > $config_h
1323
1324
1325echo "include ../config-host.mak" >> $config_mak
1326echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001327
pbrooke5fe0c52006-06-11 13:32:59 +00001328bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001329elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001330target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001331interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1332echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001333
aurel322408a522008-04-20 20:19:44 +00001334case "$target_cpu" in
1335 i386)
1336 echo "TARGET_ARCH=i386" >> $config_mak
1337 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1338 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001339 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001340 then
1341 echo "#define USE_KQEMU 1" >> $config_h
1342 fi
aurel32f2bf0942008-05-05 06:00:27 +00001343 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001344 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001345 then
1346 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1347 else
1348 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1349 fi
aurel322408a522008-04-20 20:19:44 +00001350 ;;
1351 x86_64)
1352 echo "TARGET_ARCH=x86_64" >> $config_mak
1353 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1354 echo "#define TARGET_I386 1" >> $config_h
1355 echo "#define TARGET_X86_64 1" >> $config_h
1356 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1357 then
1358 echo "#define USE_KQEMU 1" >> $config_h
1359 fi
1360 ;;
1361 alpha)
1362 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001363 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001364 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1365 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001366 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001367 ;;
1368 arm|armeb)
1369 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001370 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1371 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001372 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001373 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001374 ;;
1375 cris)
1376 echo "TARGET_ARCH=cris" >> $config_mak
1377 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1378 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001379 ;;
1380 m68k)
1381 echo "TARGET_ARCH=m68k" >> $config_mak
1382 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1383 echo "#define TARGET_M68K 1" >> $config_h
1384 bflt="yes"
1385 ;;
1386 mips|mipsel)
1387 echo "TARGET_ARCH=mips" >> $config_mak
1388 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1389 echo "#define TARGET_MIPS 1" >> $config_h
1390 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1391 ;;
1392 mipsn32|mipsn32el)
1393 echo "TARGET_ARCH=mipsn32" >> $config_mak
1394 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1395 echo "#define TARGET_MIPS 1" >> $config_h
1396 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1397 ;;
1398 mips64|mips64el)
1399 echo "TARGET_ARCH=mips64" >> $config_mak
1400 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1401 echo "#define TARGET_MIPS 1" >> $config_h
1402 echo "#define TARGET_MIPS64 1" >> $config_h
1403 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1404 ;;
1405 ppc)
1406 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001407 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001408 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1409 echo "#define TARGET_PPC 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 ppcemb)
1413 echo "TARGET_ARCH=ppcemb" >> $config_mak
1414 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001415 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001416 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1417 echo "#define TARGET_PPC 1" >> $config_h
1418 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001419 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001420 ;;
1421 ppc64)
1422 echo "TARGET_ARCH=ppc64" >> $config_mak
1423 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001424 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001425 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1426 echo "#define TARGET_PPC 1" >> $config_h
1427 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001428 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001429 ;;
1430 ppc64abi32)
1431 echo "TARGET_ARCH=ppc64" >> $config_mak
1432 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1433 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001434 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001435 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1436 echo "#define TARGET_PPC 1" >> $config_h
1437 echo "#define TARGET_PPC64 1" >> $config_h
1438 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001439 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001440 ;;
1441 sh4|sh4eb)
1442 echo "TARGET_ARCH=sh4" >> $config_mak
1443 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1444 echo "#define TARGET_SH4 1" >> $config_h
1445 bflt="yes"
aurel320b6d3ae2008-09-15 07:43:43 +00001446 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001447 ;;
1448 sparc)
1449 echo "TARGET_ARCH=sparc" >> $config_mak
1450 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1451 echo "#define TARGET_SPARC 1" >> $config_h
1452 ;;
1453 sparc64)
1454 echo "TARGET_ARCH=sparc64" >> $config_mak
1455 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1456 echo "#define TARGET_SPARC 1" >> $config_h
1457 echo "#define TARGET_SPARC64 1" >> $config_h
1458 elfload32="yes"
1459 ;;
1460 sparc32plus)
1461 echo "TARGET_ARCH=sparc64" >> $config_mak
1462 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1463 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1464 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1465 echo "#define TARGET_SPARC 1" >> $config_h
1466 echo "#define TARGET_SPARC64 1" >> $config_h
1467 echo "#define TARGET_ABI32 1" >> $config_h
1468 ;;
1469 *)
1470 echo "Unsupported target CPU"
1471 exit 1
1472 ;;
1473esac
bellardde83cd02003-06-15 20:25:43 +00001474if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001475 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1476 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1477fi
1478if test "$target_softmmu" = "yes" ; then
1479 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1480 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001481fi
bellard997344f2003-10-27 21:10:39 +00001482if test "$target_user_only" = "yes" ; then
1483 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1484 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1485fi
ths831b7822007-01-18 20:06:33 +00001486if test "$target_linux_user" = "yes" ; then
1487 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1488 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1489fi
1490if test "$target_darwin_user" = "yes" ; then
1491 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1492 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1493fi
bellardde83cd02003-06-15 20:25:43 +00001494
aurel320938cda2008-04-11 21:36:06 +00001495if test "$target_cpu" = "arm" \
1496 -o "$target_cpu" = "armeb" \
1497 -o "$target_cpu" = "m68k" \
1498 -o "$target_cpu" = "mips" \
1499 -o "$target_cpu" = "mipsel" \
1500 -o "$target_cpu" = "mipsn32" \
1501 -o "$target_cpu" = "mipsn32el" \
1502 -o "$target_cpu" = "mips64" \
1503 -o "$target_cpu" = "mips64el" \
1504 -o "$target_cpu" = "sparc" \
1505 -o "$target_cpu" = "sparc64" \
1506 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001507 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1508 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1509fi
pbrooke5fe0c52006-06-11 13:32:59 +00001510if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1511 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1512 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1513fi
pbrookbd0c5662008-05-29 14:34:11 +00001514if test "$target_user_only" = "yes" \
1515 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1516 echo "#define USE_NPTL 1" >> $config_h
1517fi
blueswir1cb33da52007-10-09 16:34:29 +00001518# 32 bit ELF loader in addition to native 64 bit loader?
1519if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1520 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1521 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1522fi
bellard5b0753e2005-03-01 21:37:28 +00001523
ths15d9ca02007-07-31 23:07:32 +00001524test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1525
bellard97a847b2003-08-10 21:36:04 +00001526done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001527
1528# build tree in object directory if source path is different from current one
1529if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001530 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001531 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001532 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001533 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001534 for dir in $DIRS ; do
1535 mkdir -p $dir
1536 done
bellardec530c82006-04-25 22:36:06 +00001537 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001538 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001539 rm -f $f
1540 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001541 done
1542fi
bellard7d132992003-03-06 23:23:54 +00001543
bellard97a847b2003-08-10 21:36:04 +00001544rm -f $TMPO $TMPC $TMPE $TMPS