blob: d77f9b8f60dff0a09a499556660f834dcab08f3c [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
blueswir131422552007-04-16 18:27:06 +0000356#
357# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
358# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
359#
bellard40293e52008-01-31 11:32:10 +0000360case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000361 sparc) if test -z "$sparc_cpu" ; then
362 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
363 ARCH_LDFLAGS="-m32"
364 else
365 ARCH_CFLAGS="${SP_CFLAGS}"
366 ARCH_LDFLAGS="${SP_LDFLAGS}"
367 fi
368 ;;
369 sparc64) if test -z "$sparc_cpu" ; then
370 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
371 ARCH_LDFLAGS="-m64"
372 else
373 ARCH_CFLAGS="${SP_CFLAGS}"
374 ARCH_LDFLAGS="${SP_LDFLAGS}"
375 fi
376 ;;
ths76d83bd2007-11-18 21:22:10 +0000377 s390)
378 ARCH_CFLAGS="-march=z900"
379 ;;
bellard40293e52008-01-31 11:32:10 +0000380 i386)
381 ARCH_CFLAGS="-m32"
382 ARCH_LDFLAGS="-m32"
383 ;;
384 x86_64)
385 ARCH_CFLAGS="-m64"
386 ARCH_LDFLAGS="-m64"
387 ;;
blueswir131422552007-04-16 18:27:06 +0000388esac
389
pbrookaf5db582006-04-08 14:26:41 +0000390if test x"$show_help" = x"yes" ; then
391cat << EOF
392
393Usage: configure [options]
394Options: [defaults in brackets after descriptions]
395
396EOF
397echo "Standard options:"
398echo " --help print this message"
399echo " --prefix=PREFIX install in PREFIX [$prefix]"
400echo " --interp-prefix=PREFIX where to find shared libraries, etc."
401echo " use %M for cpu name [$interp_prefix]"
402echo " --target-list=LIST set target list [$target_list]"
403echo ""
404echo "kqemu kernel acceleration support:"
405echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000406echo ""
407echo "Advanced options (experts only):"
408echo " --source-path=PATH path of source code [$source_path]"
409echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
410echo " --cc=CC use C compiler CC [$cc]"
411echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
412echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000413echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000414echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000415echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000416echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000417echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000418echo " --audio-drv-list=LIST set audio drivers list:"
419echo " Available drivers: $audio_possible_drivers"
420echo " --audio-card-list=LIST set list of additional emulated audio cards"
421echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000422echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000423echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000424echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000425echo " --disable-curses disable curses output"
pbrookbd0c5662008-05-29 14:34:11 +0000426echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000427echo " --enable-system enable all system emulation targets"
428echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000429echo " --enable-linux-user enable all linux usermode emulation targets"
430echo " --disable-linux-user disable all linux usermode emulation targets"
431echo " --enable-darwin-user enable all darwin usermode emulation targets"
432echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000433echo " --fmod-lib path to FMOD library"
434echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000435echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000436echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000437echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000438echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000439echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000440echo ""
ths5bf08932006-12-23 00:33:26 +0000441echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000442exit 1
443fi
444
bellard7d132992003-03-06 23:23:54 +0000445cc="${cross_prefix}${cc}"
446ar="${cross_prefix}${ar}"
447strip="${cross_prefix}${strip}"
448
pbrook064aae12006-05-08 00:51:44 +0000449# check that the C compiler works.
450cat > $TMPC <<EOF
451int main(void) {}
452EOF
453
pbrookdb7287e2008-02-03 16:27:13 +0000454if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000455 : C compiler works ok
456else
457 echo "ERROR: \"$cc\" either does not exist or does not work"
458 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000459fi
460
aliguoricd01b4a2008-08-21 19:25:45 +0000461# check compiler to see if we're on mingw32
462cat > $TMPC <<EOF
463#include <windows.h>
464#ifndef _WIN32
465#error not windows
466#endif
467int main(void) {}
468EOF
469
470if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
471 mingw32="yes"
472fi
473
bellard67b915a2004-03-31 23:37:16 +0000474if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000475 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000476 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000477 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000478 linux_user="no"
479fi
480
481if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
482 AIOLIBS=
483else
484 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
485 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000486fi
487
ths5fafdf22007-09-16 21:08:06 +0000488# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000489if test "$check_gcc" = "yes" ; then
490 cat > $TMPC <<EOF
491#if __GNUC__ < 4
492#error gcc3
493#endif
494int main(){return 0;}
495EOF
pbrookdb7287e2008-02-03 16:27:13 +0000496 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000497 echo "WARNING: \"$cc\" looks like gcc 4.x"
498 found_compat_cc="no"
499 if test "$gcc3_search" = "yes" ; then
500 echo "Looking for gcc 3.x"
501 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000502 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000503 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000504 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000505 found_compat_cc="yes"
506 break
507 fi
508 done
509 if test "$found_compat_cc" = "no" ; then
510 echo "gcc 3.x not found!"
511 fi
512 fi
513 if test "$found_compat_cc" = "no" ; then
514 echo "QEMU is known to have problems when compiled with gcc 4.x"
515 echo "It is recommended that you use gcc 3.x to build QEMU"
516 echo "To use this compiler anyway, configure with --disable-gcc-check"
517 exit 1;
518 fi
519 fi
520fi
521
bellardec530c82006-04-25 22:36:06 +0000522#
523# Solaris specific configure tool chain decisions
524#
525if test "$solaris" = "yes" ; then
526 #
527 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
528 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000529 #
bellardec530c82006-04-25 22:36:06 +0000530 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
531 solgcc=`which $cc`
532 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
533 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
534 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
535 echo "or get the latest patch from SunSolve for gcc"
536 exit 1
537 fi
538 fi
539 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
540 if test -z "$solinst" ; then
541 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
542 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
543 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
544 exit 1
545 fi
546 if test "$solinst" = "/usr/sbin/install" ; then
547 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
548 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
549 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
550 exit 1
551 fi
bellardec530c82006-04-25 22:36:06 +0000552 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
553 if test -z "$sol_ar" ; then
554 echo "Error: No path includes ar"
555 if test -f /usr/ccs/bin/ar ; then
556 echo "Add /usr/ccs/bin to your path and rerun configure"
557 fi
558 exit 1
559 fi
ths5fafdf22007-09-16 21:08:06 +0000560fi
bellardec530c82006-04-25 22:36:06 +0000561
562
bellard5327cf42005-01-10 23:18:50 +0000563if test -z "$target_list" ; then
564# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000565 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000566 target_list="\
567i386-softmmu \
568x86_64-softmmu \
569arm-softmmu \
570cris-softmmu \
571m68k-softmmu \
572mips-softmmu \
573mipsel-softmmu \
574mips64-softmmu \
575mips64el-softmmu \
576ppc-softmmu \
577ppcemb-softmmu \
578ppc64-softmmu \
579sh4-softmmu \
580sh4eb-softmmu \
581sparc-softmmu \
582"
pbrook0a8e90f2006-03-19 14:54:16 +0000583 fi
bellard5327cf42005-01-10 23:18:50 +0000584# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000585 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000586 target_list="${target_list}\
587i386-linux-user \
588x86_64-linux-user \
589alpha-linux-user \
590arm-linux-user \
591armeb-linux-user \
592cris-linux-user \
593m68k-linux-user \
594mips-linux-user \
595mipsel-linux-user \
596ppc-linux-user \
597ppc64-linux-user \
598ppc64abi32-linux-user \
599sh4-linux-user \
600sh4eb-linux-user \
601sparc-linux-user \
602sparc64-linux-user \
603sparc32plus-linux-user \
604"
ths831b7822007-01-18 20:06:33 +0000605 fi
606# the following are Darwin specific
607 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000608 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000609 fi
bellard6e20a452005-06-05 15:56:02 +0000610else
pbrookb1a550a2006-04-16 13:28:56 +0000611 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000612fi
pbrook0a8e90f2006-03-19 14:54:16 +0000613if test -z "$target_list" ; then
614 echo "No targets enabled"
615 exit 1
616fi
bellard5327cf42005-01-10 23:18:50 +0000617
bellard7d132992003-03-06 23:23:54 +0000618if test -z "$cross_prefix" ; then
619
620# ---
621# big/little endian test
622cat > $TMPC << EOF
623#include <inttypes.h>
624int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000625 volatile uint32_t i=0x01234567;
626 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000627}
628EOF
629
pbrookdb7287e2008-02-03 16:27:13 +0000630if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000631$TMPE && bigendian="yes"
632else
633echo big/little test failed
634fi
635
636else
637
638# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000639if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000640 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000641 -o "$cpu" = "m68k" \
642 -o "$cpu" = "mips" \
643 -o "$cpu" = "mips64" \
644 -o "$cpu" = "powerpc" \
645 -o "$cpu" = "s390" \
646 -o "$cpu" = "sparc" \
647 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000648 bigendian="yes"
649fi
650
651fi
652
bellardb6853692005-06-05 17:10:39 +0000653# host long bits test
654hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000655if test "$cpu" = "x86_64" \
656 -o "$cpu" = "alpha" \
657 -o "$cpu" = "ia64" \
658 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000659 hostlongbits="64"
660fi
661
malc810260a2008-07-23 19:17:46 +0000662# ppc specific hostlongbits selection
663if test "$cpu" = "powerpc" ; then
664 cat > $TMPC <<EOF
665int main(void){return sizeof(long);}
666EOF
667
668 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
669 $TMPE
670 case $? in
671 4) hostlongbits="32";;
672 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000673 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000674 esac
675 else
676 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000677 exit 1
malc810260a2008-07-23 19:17:46 +0000678 fi
679fi
680
bellarde8cd23d2003-06-25 16:08:13 +0000681# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000682cat > $TMPC <<EOF
683int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000684}
685EOF
686
pbrookbd0c5662008-05-29 14:34:11 +0000687# Check host NPTL support
688cat > $TMPC <<EOF
689#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000690#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000691void foo()
692{
693#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
694#error bork
695#endif
696}
697EOF
698
699if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
700 :
701else
702 nptl="no"
703fi
704
bellard11d9f692004-04-02 20:55:59 +0000705##########################################
706# SDL probe
707
708sdl_too_old=no
709
710if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000711 sdl_config="sdl-config"
712 sdl=no
713 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000714
715cat > $TMPC << EOF
716#include <SDL.h>
717#undef main /* We don't want SDL to override our main() */
718int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
719EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000720 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
721 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
722 if test "$_sdlversion" -lt 121 ; then
723 sdl_too_old=yes
724 else
725 if test "$cocoa" = "no" ; then
726 sdl=yes
727 fi
728 fi
729
730 # static link with sdl ?
731 if test "$sdl" = "yes" ; then
732 aa="no"
733 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
734 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
735 if [ "$aa" = "yes" ] ; then
736 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000737 fi
bellard11d9f692004-04-02 20:55:59 +0000738
aliguoricd01b4a2008-08-21 19:25:45 +0000739 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
740 sdl_static=yes
741 fi
742 fi # static link
743 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000744else
ths069b0bd2007-07-12 00:27:15 +0000745 # Make sure to disable cocoa if sdl was set
746 if test "$sdl" = "yes" ; then
747 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000748 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000749 fi
bellarda6e022a2004-04-02 21:55:47 +0000750fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000751
ths8f28f3f2007-01-05 21:25:54 +0000752##########################################
ths8d5d2d42007-08-25 01:37:51 +0000753# VNC TLS detection
754if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000755cat > $TMPC <<EOF
756#include <gnutls/gnutls.h>
757int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
758EOF
759 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
760 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
761 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
762 $vnc_tls_libs 2> /dev/null ; then
763 :
764 else
765 vnc_tls="no"
766 fi
ths8d5d2d42007-08-25 01:37:51 +0000767fi
768
769##########################################
ths8a16d272008-07-19 09:56:24 +0000770# vde libraries probe
771if test "$vde" = "yes" ; then
772 cat > $TMPC << EOF
773#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000774int main(void)
775{
776 struct vde_open_args a = {0, 0, 0};
777 vde_open("", "", &a);
778 return 0;
779}
ths8a16d272008-07-19 09:56:24 +0000780EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000781 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000782 :
783 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000784 vde="no"
ths8a16d272008-07-19 09:56:24 +0000785 fi
786fi
787
788##########################################
malcc2de5c92008-06-28 19:13:06 +0000789# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000790
malcc2de5c92008-06-28 19:13:06 +0000791audio_drv_probe()
792{
793 drv=$1
794 hdr=$2
795 lib=$3
796 exp=$4
797 cfl=$5
798 cat > $TMPC << EOF
799#include <$hdr>
800int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000801EOF
malcc2de5c92008-06-28 19:13:06 +0000802 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
803 :
804 else
805 echo
806 echo "Error: $drv check failed"
807 echo "Make sure to have the $drv libs and headers installed."
808 echo
809 exit 1
810 fi
811}
812
malc2fa7d3b2008-07-29 12:58:44 +0000813audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000814for drv in $audio_drv_list; do
815 case $drv in
816 alsa)
817 audio_drv_probe $drv alsa/asoundlib.h -lasound \
818 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
819 ;;
820
821 fmod)
822 if test -z $fmod_lib || test -z $fmod_inc; then
823 echo
824 echo "Error: You must specify path to FMOD library and headers"
825 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
826 echo
827 exit 1
828 fi
829 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
830 ;;
831
832 esd)
833 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
834 ;;
malcb8e59f12008-07-02 21:03:08 +0000835
836 pa)
837 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
838 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
839 ;;
840
blueswir12f6a1ab2008-08-21 18:00:53 +0000841 oss|sdl|core|wav|dsound)
842 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
843 ;;
844
malce4c63a62008-07-19 16:15:16 +0000845 *)
malc1c9b2a52008-07-19 16:57:30 +0000846 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000847 echo
848 echo "Error: Unknown driver '$drv' selected"
849 echo "Possible drivers are: $audio_possible_drivers"
850 echo
851 exit 1
852 }
853 ;;
malcc2de5c92008-06-28 19:13:06 +0000854 esac
855done
ths8f28f3f2007-01-05 21:25:54 +0000856
balrog4d3b6f62008-02-10 16:33:14 +0000857##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000858# BrlAPI probe
859
860if test -z "$brlapi" ; then
861 brlapi=no
862cat > $TMPC << EOF
863#include <brlapi.h>
864int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
865EOF
aurel32a40e56d2008-05-04 00:50:25 +0000866 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000867 brlapi=yes
868 fi # brlapi compile test
869fi # -z $brlapi
870
871##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000872# curses probe
873
874if test "$curses" = "yes" ; then
875 curses=no
876 cat > $TMPC << EOF
877#include <curses.h>
878int main(void) { return curses_version(); }
879EOF
pbrookaf896aa2008-03-23 00:47:42 +0000880 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000881 curses=yes
882 fi
883fi # test "$curses"
884
blueswir1414f0da2008-08-15 18:20:52 +0000885##########################################
886# AIO probe
887if test "$aio" = "yes" ; then
888 aio=no
889 cat > $TMPC << EOF
890#include <aio.h>
891int main(void) { return aio_write(NULL); }
892EOF
893 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
894 aio=yes
895 fi
896fi
897
pbrookcc8ae6d2006-04-23 17:57:59 +0000898# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000899if [ -x "`which texi2html 2>/dev/null`" ] && \
900 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000901 build_docs="yes"
902fi
903
bellard11d9f692004-04-02 20:55:59 +0000904if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000905 if test -z "$prefix" ; then
906 prefix="/c/Program Files/Qemu"
907 fi
908 mansuffix=""
909 datasuffix=""
910 docsuffix=""
911 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000912else
pbrook308c3592007-02-27 00:52:01 +0000913 if test -z "$prefix" ; then
914 prefix="/usr/local"
915 fi
916 mansuffix="/share/man"
917 datasuffix="/share/qemu"
918 docsuffix="/share/doc/qemu"
919 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000920fi
bellard5a671352003-10-01 00:13:48 +0000921
bellard43ce4df2003-06-09 19:53:12 +0000922echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000923echo "BIOS directory $prefix$datasuffix"
924echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000925if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000926echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000927echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000928fi
bellard5a671352003-10-01 00:13:48 +0000929echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000930echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000931echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000932echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000933echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000934echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000935echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000936echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000937echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000938echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000939echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000940echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000941echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000942if test "$darwin" = "yes" ; then
943 echo "Cocoa support $cocoa"
944fi
bellard97a847b2003-08-10 21:36:04 +0000945echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000946if test "$sdl" != "no" ; then
947 echo "SDL static link $sdl_static"
948fi
balrog4d3b6f62008-02-10 16:33:14 +0000949echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000950echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +0000951echo "Audio drivers $audio_drv_list"
952echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +0000953echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +0000954echo "VNC TLS support $vnc_tls"
955if test "$vnc_tls" = "yes" ; then
956 echo " TLS CFLAGS $vnc_tls_cflags"
957 echo " TLS LIBS $vnc_tls_libs"
958fi
blueswir131422552007-04-16 18:27:06 +0000959if test -n "$sparc_cpu"; then
960 echo "Target Sparc Arch $sparc_cpu"
961fi
bellard07f4ddb2005-04-23 17:44:28 +0000962echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +0000963echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +0000964echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +0000965[ ! -z "$uname_release" ] && \
966echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +0000967echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +0000968echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +0000969echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +0000970
bellard97a847b2003-08-10 21:36:04 +0000971if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +0000972echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +0000973fi
ths20b40c62007-07-11 23:39:45 +0000974if [ -s /tmp/qemu-$$-sdl-config.log ]; then
975 echo "The error log from compiling the libSDL test is: "
976 cat /tmp/qemu-$$-sdl-config.log
977fi
978rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +0000979#if test "$sdl_static" = "no"; then
980# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
981#fi
bellard97a847b2003-08-10 21:36:04 +0000982config_mak="config-host.mak"
983config_h="config-host.h"
984
bellard7c1f25b2004-04-22 00:02:08 +0000985#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +0000986
ths15d9ca02007-07-31 23:07:32 +0000987test -f $config_h && mv $config_h ${config_h}~
988
bellard97a847b2003-08-10 21:36:04 +0000989echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +0000990echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000991echo "/* Automatically generated by configure - do not modify */" > $config_h
992
993echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000994echo "bindir=\${prefix}$binsuffix" >> $config_mak
995echo "mandir=\${prefix}$mansuffix" >> $config_mak
996echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +0000997echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000998echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000999echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +00001000echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001001echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001002echo "HOST_CC=$host_cc" >> $config_mak
1003echo "AR=$ar" >> $config_mak
1004echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001005# XXX: only use CFLAGS and LDFLAGS ?
1006# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1007# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001008echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001009echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1010echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1011echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001012echo "CFLAGS=$CFLAGS" >> $config_mak
1013echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001014echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001015echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001016case "$cpu" in
1017 i386)
1018 echo "ARCH=i386" >> $config_mak
1019 echo "#define HOST_I386 1" >> $config_h
1020 ;;
1021 x86_64)
1022 echo "ARCH=x86_64" >> $config_mak
1023 echo "#define HOST_X86_64 1" >> $config_h
1024 ;;
1025 alpha)
1026 echo "ARCH=alpha" >> $config_mak
1027 echo "#define HOST_ALPHA 1" >> $config_h
1028 ;;
1029 armv4b)
1030 echo "ARCH=arm" >> $config_mak
1031 echo "#define HOST_ARM 1" >> $config_h
1032 ;;
1033 armv4l)
1034 echo "ARCH=arm" >> $config_mak
1035 echo "#define HOST_ARM 1" >> $config_h
1036 ;;
1037 cris)
1038 echo "ARCH=cris" >> $config_mak
1039 echo "#define HOST_CRIS 1" >> $config_h
1040 ;;
1041 hppa)
1042 echo "ARCH=hppa" >> $config_mak
1043 echo "#define HOST_HPPA 1" >> $config_h
1044 ;;
1045 ia64)
1046 echo "ARCH=ia64" >> $config_mak
1047 echo "#define HOST_IA64 1" >> $config_h
1048 ;;
1049 m68k)
1050 echo "ARCH=m68k" >> $config_mak
1051 echo "#define HOST_M68K 1" >> $config_h
1052 ;;
1053 mips)
1054 echo "ARCH=mips" >> $config_mak
1055 echo "#define HOST_MIPS 1" >> $config_h
1056 ;;
1057 mips64)
1058 echo "ARCH=mips64" >> $config_mak
1059 echo "#define HOST_MIPS64 1" >> $config_h
1060 ;;
1061 powerpc)
malc810260a2008-07-23 19:17:46 +00001062 if test "$hostlongbits" = "32"; then
1063 echo "ARCH=ppc" >> $config_mak
1064 echo "#define HOST_PPC 1" >> $config_h
1065 else
1066 echo "ARCH=ppc64" >> $config_mak
1067 echo "#define HOST_PPC64 1" >> $config_h
1068 fi
aurel322408a522008-04-20 20:19:44 +00001069 ;;
1070 s390)
1071 echo "ARCH=s390" >> $config_mak
1072 echo "#define HOST_S390 1" >> $config_h
1073 ;;
1074 sparc)
1075 echo "ARCH=sparc" >> $config_mak
1076 echo "#define HOST_SPARC 1" >> $config_h
1077 ;;
1078 sparc64)
1079 echo "ARCH=sparc64" >> $config_mak
1080 echo "#define HOST_SPARC64 1" >> $config_h
1081 ;;
1082 *)
1083 echo "Unsupported CPU = $cpu"
1084 exit 1
1085 ;;
1086esac
bellard7d132992003-03-06 23:23:54 +00001087if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001088 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1089 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1090fi
bellardb6853692005-06-05 17:10:39 +00001091echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001092if test "$mingw32" = "yes" ; then
1093 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001094 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001095else
1096 cat > $TMPC << EOF
1097#include <byteswap.h>
1098int main(void) { return bswap_32(0); }
1099EOF
pbrookdb7287e2008-02-03 16:27:13 +00001100 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001101 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1102 fi
bellard67b915a2004-03-31 23:37:16 +00001103fi
blueswir1128ab2f2008-08-15 18:33:42 +00001104
1105if [ "$openbsd" = "yes" ] ; then
1106 echo "#define ENOTSUP 4096" >> $config_h
1107fi
1108
bellard83fb7ad2004-07-05 21:25:26 +00001109if test "$darwin" = "yes" ; then
1110 echo "CONFIG_DARWIN=yes" >> $config_mak
1111 echo "#define CONFIG_DARWIN 1" >> $config_h
1112fi
bellardec530c82006-04-25 22:36:06 +00001113if test "$solaris" = "yes" ; then
1114 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001115 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001116 if test "$needs_libsunmath" = "yes" ; then
1117 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1118 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1119 fi
bellardec530c82006-04-25 22:36:06 +00001120fi
blueswir131422552007-04-16 18:27:06 +00001121if test -n "$sparc_cpu"; then
1122 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1123 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1124fi
bellard67b915a2004-03-31 23:37:16 +00001125if test "$gdbstub" = "yes" ; then
1126 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1127 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1128fi
bellard97a847b2003-08-10 21:36:04 +00001129if test "$gprof" = "yes" ; then
1130 echo "TARGET_GPROF=yes" >> $config_mak
1131 echo "#define HAVE_GPROF 1" >> $config_h
1132fi
1133if test "$static" = "yes" ; then
1134 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001135 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001136fi
bellard05c2a3e2006-02-08 22:39:17 +00001137if test $profiler = "yes" ; then
1138 echo "#define CONFIG_PROFILER 1" >> $config_h
1139fi
bellardc20709a2004-04-21 23:27:19 +00001140if test "$slirp" = "yes" ; then
1141 echo "CONFIG_SLIRP=yes" >> $config_mak
1142 echo "#define CONFIG_SLIRP 1" >> $config_h
1143fi
ths8a16d272008-07-19 09:56:24 +00001144if test "$vde" = "yes" ; then
1145 echo "CONFIG_VDE=yes" >> $config_mak
1146 echo "#define CONFIG_VDE 1" >> $config_h
1147 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1148fi
malc0c58ac12008-06-25 21:04:05 +00001149for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001150 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001151 echo "$def=yes" >> $config_mak
1152 echo "#define $def 1" >> $config_h
1153done
1154echo "#define AUDIO_DRIVERS \\" >> $config_h
1155for drv in $audio_drv_list; do
1156 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001157 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001158 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001159 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001160 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1161 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001162 elif test "$drv" = "oss"; then
1163 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001164 fi
1165done
1166echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001167if test "$mixemu" = "yes" ; then
1168 echo "CONFIG_MIXEMU=yes" >> $config_mak
1169 echo "#define CONFIG_MIXEMU 1" >> $config_h
1170fi
ths8d5d2d42007-08-25 01:37:51 +00001171if test "$vnc_tls" = "yes" ; then
1172 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1173 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1174 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1175 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1176fi
pbrookb1a550a2006-04-16 13:28:56 +00001177qemu_version=`head $source_path/VERSION`
1178echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001179echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001180
1181echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001182if [ "$source_path_used" = "yes" ]; then
1183 echo "VPATH=$source_path" >> $config_mak
1184fi
bellard97a847b2003-08-10 21:36:04 +00001185echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001186if [ "$build_docs" = "yes" ] ; then
1187 echo "BUILD_DOCS=yes" >> $config_mak
1188fi
bellard49ecc3f2007-11-07 19:25:15 +00001189if test "$static" = "yes"; then
1190 sdl1=$sdl_static
1191else
1192 sdl1=$sdl
1193fi
1194if test "$sdl1" = "yes" ; then
1195 echo "#define CONFIG_SDL 1" >> $config_h
1196 echo "CONFIG_SDL=yes" >> $config_mak
1197 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1198 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1199 else
1200 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1201 fi
1202 if [ "${aa}" = "yes" ] ; then
1203 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1204 else
1205 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1206 fi
1207fi
1208if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001209 echo "#define CONFIG_COCOA 1" >> $config_h
1210 echo "CONFIG_COCOA=yes" >> $config_mak
1211fi
1212if test "$curses" = "yes" ; then
1213 echo "#define CONFIG_CURSES 1" >> $config_h
1214 echo "CONFIG_CURSES=yes" >> $config_mak
1215 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001216fi
aurel322e4d9fb2008-04-08 06:01:02 +00001217if test "$brlapi" = "yes" ; then
1218 echo "CONFIG_BRLAPI=yes" >> $config_mak
1219 echo "#define CONFIG_BRLAPI 1" >> $config_h
1220 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1221fi
blueswir1414f0da2008-08-15 18:20:52 +00001222if test "$aio" = "yes" ; then
1223 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001224 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001225fi
bellard97a847b2003-08-10 21:36:04 +00001226
bellard83fb7ad2004-07-05 21:25:26 +00001227# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001228if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001229 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001230 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001231 echo "#define _BSD 1" >> $config_h
1232fi
1233
pbrookc5937222006-05-14 11:30:38 +00001234echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1235
pbrookc39e3332007-09-22 16:49:14 +00001236tools=
1237if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1238 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001239 if [ "$linux" = "yes" ] ; then
1240 tools="qemu-nbd\$(EXESUF) $tools"
1241 fi
pbrookc39e3332007-09-22 16:49:14 +00001242fi
1243echo "TOOLS=$tools" >> $config_mak
1244
ths15d9ca02007-07-31 23:07:32 +00001245test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1246
bellard1d14ffa2005-10-30 18:58:22 +00001247for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001248target_dir="$target"
1249config_mak=$target_dir/config.mak
1250config_h=$target_dir/config.h
1251target_cpu=`echo $target | cut -d '-' -f 1`
1252target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001253[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001254[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1255[ "$target_cpu" = "mips" ] && target_bigendian=yes
1256[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1257[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001258[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001259[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001260[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001261[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001262[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001263[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1264[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1265[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001266target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001267target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001268target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001269target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001270case "$target" in
1271 ${target_cpu}-softmmu)
1272 target_softmmu="yes"
1273 ;;
1274 ${target_cpu}-linux-user)
1275 target_user_only="yes"
1276 target_linux_user="yes"
1277 ;;
1278 ${target_cpu}-darwin-user)
1279 target_user_only="yes"
1280 target_darwin_user="yes"
1281 ;;
1282 *)
1283 echo "ERROR: Target '$target' not recognised"
1284 exit 1
1285 ;;
1286esac
ths831b7822007-01-18 20:06:33 +00001287
bellard97ccc682005-07-02 13:32:17 +00001288if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001289 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001290 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001291 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001292 echo "Note that this will disable all output from the virtual graphics card"
1293 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001294 exit 1;
1295fi
1296
bellard7c1f25b2004-04-22 00:02:08 +00001297#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001298
ths15d9ca02007-07-31 23:07:32 +00001299test -f $config_h && mv $config_h ${config_h}~
1300
bellard97a847b2003-08-10 21:36:04 +00001301mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001302mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001303mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001304if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001305 mkdir -p $target_dir/nwfpe
1306fi
1307
bellardec530c82006-04-25 22:36:06 +00001308#
1309# don't use ln -sf as not all "ln -sf" over write the file/link
1310#
1311rm -f $target_dir/Makefile
1312ln -s $source_path/Makefile.target $target_dir/Makefile
1313
bellard97a847b2003-08-10 21:36:04 +00001314
1315echo "# Automatically generated by configure - do not modify" > $config_mak
1316echo "/* Automatically generated by configure - do not modify */" > $config_h
1317
1318
1319echo "include ../config-host.mak" >> $config_mak
1320echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001321
pbrooke5fe0c52006-06-11 13:32:59 +00001322bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001323elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001324target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001325interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1326echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001327
aurel322408a522008-04-20 20:19:44 +00001328case "$target_cpu" in
1329 i386)
1330 echo "TARGET_ARCH=i386" >> $config_mak
1331 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1332 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001333 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001334 then
1335 echo "#define USE_KQEMU 1" >> $config_h
1336 fi
aurel32f2bf0942008-05-05 06:00:27 +00001337 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001338 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001339 then
1340 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1341 else
1342 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1343 fi
aurel322408a522008-04-20 20:19:44 +00001344 ;;
1345 x86_64)
1346 echo "TARGET_ARCH=x86_64" >> $config_mak
1347 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1348 echo "#define TARGET_I386 1" >> $config_h
1349 echo "#define TARGET_X86_64 1" >> $config_h
1350 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1351 then
1352 echo "#define USE_KQEMU 1" >> $config_h
1353 fi
1354 ;;
1355 alpha)
1356 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001357 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001358 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1359 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001360 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001361 ;;
1362 arm|armeb)
1363 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001364 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1365 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001366 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001367 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001368 ;;
1369 cris)
1370 echo "TARGET_ARCH=cris" >> $config_mak
1371 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1372 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001373 ;;
1374 m68k)
1375 echo "TARGET_ARCH=m68k" >> $config_mak
1376 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1377 echo "#define TARGET_M68K 1" >> $config_h
1378 bflt="yes"
1379 ;;
1380 mips|mipsel)
1381 echo "TARGET_ARCH=mips" >> $config_mak
1382 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1383 echo "#define TARGET_MIPS 1" >> $config_h
1384 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1385 ;;
1386 mipsn32|mipsn32el)
1387 echo "TARGET_ARCH=mipsn32" >> $config_mak
1388 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1389 echo "#define TARGET_MIPS 1" >> $config_h
1390 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1391 ;;
1392 mips64|mips64el)
1393 echo "TARGET_ARCH=mips64" >> $config_mak
1394 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1395 echo "#define TARGET_MIPS 1" >> $config_h
1396 echo "#define TARGET_MIPS64 1" >> $config_h
1397 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1398 ;;
1399 ppc)
1400 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001401 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001402 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1403 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001404 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001405 ;;
1406 ppcemb)
1407 echo "TARGET_ARCH=ppcemb" >> $config_mak
1408 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001409 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001410 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1411 echo "#define TARGET_PPC 1" >> $config_h
1412 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001413 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001414 ;;
1415 ppc64)
1416 echo "TARGET_ARCH=ppc64" >> $config_mak
1417 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001418 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001419 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1420 echo "#define TARGET_PPC 1" >> $config_h
1421 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001422 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001423 ;;
1424 ppc64abi32)
1425 echo "TARGET_ARCH=ppc64" >> $config_mak
1426 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1427 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001428 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001429 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1430 echo "#define TARGET_PPC 1" >> $config_h
1431 echo "#define TARGET_PPC64 1" >> $config_h
1432 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001433 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001434 ;;
1435 sh4|sh4eb)
1436 echo "TARGET_ARCH=sh4" >> $config_mak
1437 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1438 echo "#define TARGET_SH4 1" >> $config_h
1439 bflt="yes"
1440 ;;
1441 sparc)
1442 echo "TARGET_ARCH=sparc" >> $config_mak
1443 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1444 echo "#define TARGET_SPARC 1" >> $config_h
1445 ;;
1446 sparc64)
1447 echo "TARGET_ARCH=sparc64" >> $config_mak
1448 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1449 echo "#define TARGET_SPARC 1" >> $config_h
1450 echo "#define TARGET_SPARC64 1" >> $config_h
1451 elfload32="yes"
1452 ;;
1453 sparc32plus)
1454 echo "TARGET_ARCH=sparc64" >> $config_mak
1455 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1456 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1457 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1458 echo "#define TARGET_SPARC 1" >> $config_h
1459 echo "#define TARGET_SPARC64 1" >> $config_h
1460 echo "#define TARGET_ABI32 1" >> $config_h
1461 ;;
1462 *)
1463 echo "Unsupported target CPU"
1464 exit 1
1465 ;;
1466esac
bellardde83cd02003-06-15 20:25:43 +00001467if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001468 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1469 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1470fi
1471if test "$target_softmmu" = "yes" ; then
1472 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1473 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001474fi
bellard997344f2003-10-27 21:10:39 +00001475if test "$target_user_only" = "yes" ; then
1476 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1477 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1478fi
ths831b7822007-01-18 20:06:33 +00001479if test "$target_linux_user" = "yes" ; then
1480 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1481 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1482fi
1483if test "$target_darwin_user" = "yes" ; then
1484 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1485 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1486fi
bellardde83cd02003-06-15 20:25:43 +00001487
aurel320938cda2008-04-11 21:36:06 +00001488if test "$target_cpu" = "arm" \
1489 -o "$target_cpu" = "armeb" \
1490 -o "$target_cpu" = "m68k" \
1491 -o "$target_cpu" = "mips" \
1492 -o "$target_cpu" = "mipsel" \
1493 -o "$target_cpu" = "mipsn32" \
1494 -o "$target_cpu" = "mipsn32el" \
1495 -o "$target_cpu" = "mips64" \
1496 -o "$target_cpu" = "mips64el" \
1497 -o "$target_cpu" = "sparc" \
1498 -o "$target_cpu" = "sparc64" \
1499 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001500 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1501 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1502fi
pbrooke5fe0c52006-06-11 13:32:59 +00001503if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1504 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1505 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1506fi
pbrookbd0c5662008-05-29 14:34:11 +00001507if test "$target_user_only" = "yes" \
1508 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1509 echo "#define USE_NPTL 1" >> $config_h
1510fi
blueswir1cb33da52007-10-09 16:34:29 +00001511# 32 bit ELF loader in addition to native 64 bit loader?
1512if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1513 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1514 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1515fi
bellard5b0753e2005-03-01 21:37:28 +00001516
ths15d9ca02007-07-31 23:07:32 +00001517test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1518
bellard97a847b2003-08-10 21:36:04 +00001519done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001520
1521# build tree in object directory if source path is different from current one
1522if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001523 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001524 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001525 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001526 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001527 for dir in $DIRS ; do
1528 mkdir -p $dir
1529 done
bellardec530c82006-04-25 22:36:06 +00001530 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001531 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001532 rm -f $f
1533 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001534 done
1535fi
bellard7d132992003-03-06 23:23:54 +00001536
bellard97a847b2003-08-10 21:36:04 +00001537rm -f $TMPO $TMPC $TMPE $TMPS