blob: f3ba9df31cceb9cf073b4faf4004cc2445ced8d9 [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"
malcc2de5c92008-06-28 19:13:06 +0000134audio_possible_drivers="oss sdl esd"
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"
malcc2de5c92008-06-28 19:13:06 +0000142audio_possible_drivers="oss sdl esd"
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 ;;
bellardb93aebe2007-02-15 22:58:18 +0000286 --enable-mingw32) mingw32="yes" ; cross_prefix="i386-mingw32-" ; linux_user="no"
bellard1d14ffa2005-10-30 18:58:22 +0000287 ;;
bellard443f1372004-06-04 11:13:20 +0000288 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000289 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000290 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000291 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000292 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000293 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000294 --disable-brlapi) brlapi="no"
295 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000296 --enable-profiler) profiler="yes"
297 ;;
malcc2de5c92008-06-28 19:13:06 +0000298 --enable-cocoa)
299 cocoa="yes" ;
300 sdl="no" ;
301 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000302 ;;
bellard97ccc682005-07-02 13:32:17 +0000303 --disable-gfx-check) check_gfx="no"
304 ;;
bellard1aff3812005-11-02 22:30:45 +0000305 --disable-gcc-check) check_gcc="no"
306 ;;
pbrookcad25d62006-03-19 16:31:11 +0000307 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000308 ;;
pbrookcad25d62006-03-19 16:31:11 +0000309 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000310 ;;
ths831b7822007-01-18 20:06:33 +0000311 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000312 ;;
ths831b7822007-01-18 20:06:33 +0000313 --enable-linux-user) linux_user="yes"
314 ;;
315 --disable-darwin-user) darwin_user="no"
316 ;;
317 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000318 ;;
pbrookc5937222006-05-14 11:30:38 +0000319 --enable-uname-release=*) uname_release="$optarg"
320 ;;
blueswir131422552007-04-16 18:27:06 +0000321 --sparc_cpu=*)
322 sparc_cpu="$optarg"
323 case $sparc_cpu in
324 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
325 target_cpu="sparc"; cpu="sparc" ;;
326 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
327 target_cpu="sparc"; cpu="sparc" ;;
328 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
329 target_cpu="sparc64"; cpu="sparc64" ;;
330 *) echo "undefined SPARC architecture. Exiting";exit 1;;
331 esac
332 ;;
bellard85aa5182007-11-11 20:17:03 +0000333 --enable-werror) werror="yes"
334 ;;
335 --disable-werror) werror="no"
336 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000337 --disable-curses) curses="no"
338 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000339 --disable-nptl) nptl="no"
340 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000341 --enable-mixemu) mixemu="yes"
342 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000343 --disable-aio) aio="no"
344 ;;
balrog7f1559c2007-11-17 10:24:32 +0000345 *) echo "ERROR: unknown option $opt"; show_help="yes"
346 ;;
bellard7d132992003-03-06 23:23:54 +0000347 esac
348done
349
ths209afb92007-03-25 20:55:00 +0000350if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
351 AIOLIBS=
352else
ths4259e1a2007-11-05 13:27:21 +0000353 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
354 AIOLIBS="-lrt -lpthread"
ths209afb92007-03-25 20:55:00 +0000355fi
356
ths6f30fa82007-01-05 01:00:47 +0000357# default flags for all hosts
358CFLAGS="$CFLAGS -Wall -O2 -g -fno-strict-aliasing"
359LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000360if test "$werror" = "yes" ; then
361CFLAGS="$CFLAGS -Werror"
362fi
ths6f30fa82007-01-05 01:00:47 +0000363
blueswir131422552007-04-16 18:27:06 +0000364#
365# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
366# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
367#
bellard40293e52008-01-31 11:32:10 +0000368case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000369 sparc) if test -z "$sparc_cpu" ; then
370 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
371 ARCH_LDFLAGS="-m32"
372 else
373 ARCH_CFLAGS="${SP_CFLAGS}"
374 ARCH_LDFLAGS="${SP_LDFLAGS}"
375 fi
376 ;;
377 sparc64) if test -z "$sparc_cpu" ; then
378 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
379 ARCH_LDFLAGS="-m64"
380 else
381 ARCH_CFLAGS="${SP_CFLAGS}"
382 ARCH_LDFLAGS="${SP_LDFLAGS}"
383 fi
384 ;;
ths76d83bd2007-11-18 21:22:10 +0000385 s390)
386 ARCH_CFLAGS="-march=z900"
387 ;;
bellard40293e52008-01-31 11:32:10 +0000388 i386)
389 ARCH_CFLAGS="-m32"
390 ARCH_LDFLAGS="-m32"
391 ;;
392 x86_64)
393 ARCH_CFLAGS="-m64"
394 ARCH_LDFLAGS="-m64"
395 ;;
blueswir131422552007-04-16 18:27:06 +0000396esac
397
pbrookaf5db582006-04-08 14:26:41 +0000398if test x"$show_help" = x"yes" ; then
399cat << EOF
400
401Usage: configure [options]
402Options: [defaults in brackets after descriptions]
403
404EOF
405echo "Standard options:"
406echo " --help print this message"
407echo " --prefix=PREFIX install in PREFIX [$prefix]"
408echo " --interp-prefix=PREFIX where to find shared libraries, etc."
409echo " use %M for cpu name [$interp_prefix]"
410echo " --target-list=LIST set target list [$target_list]"
411echo ""
412echo "kqemu kernel acceleration support:"
413echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000414echo ""
415echo "Advanced options (experts only):"
416echo " --source-path=PATH path of source code [$source_path]"
417echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
418echo " --cc=CC use C compiler CC [$cc]"
419echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
420echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000421echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000422echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000423echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000424echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000425echo " --enable-cocoa enable COCOA (Mac OS X only)"
426echo " --enable-mingw32 enable Win32 cross compilation with mingw32"
malcc2de5c92008-06-28 19:13:06 +0000427echo " --audio-drv-list=LIST set audio drivers list:"
428echo " Available drivers: $audio_possible_drivers"
429echo " --audio-card-list=LIST set list of additional emulated audio cards"
430echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000431echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000432echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000433echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000434echo " --disable-curses disable curses output"
pbrookbd0c5662008-05-29 14:34:11 +0000435echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000436echo " --enable-system enable all system emulation targets"
437echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000438echo " --enable-linux-user enable all linux usermode emulation targets"
439echo " --disable-linux-user disable all linux usermode emulation targets"
440echo " --enable-darwin-user enable all darwin usermode emulation targets"
441echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000442echo " --fmod-lib path to FMOD library"
443echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000444echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000445echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000446echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000447echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000448echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000449echo ""
ths5bf08932006-12-23 00:33:26 +0000450echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000451exit 1
452fi
453
bellard7d132992003-03-06 23:23:54 +0000454cc="${cross_prefix}${cc}"
455ar="${cross_prefix}${ar}"
456strip="${cross_prefix}${strip}"
457
pbrook064aae12006-05-08 00:51:44 +0000458# check that the C compiler works.
459cat > $TMPC <<EOF
460int main(void) {}
461EOF
462
pbrookdb7287e2008-02-03 16:27:13 +0000463if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000464 : C compiler works ok
465else
466 echo "ERROR: \"$cc\" either does not exist or does not work"
467 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000468fi
469
bellard67b915a2004-03-31 23:37:16 +0000470if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000471 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000472 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000473 oss="no"
bellard67b915a2004-03-31 23:37:16 +0000474fi
475
ths5fafdf22007-09-16 21:08:06 +0000476# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000477if test "$check_gcc" = "yes" ; then
478 cat > $TMPC <<EOF
479#if __GNUC__ < 4
480#error gcc3
481#endif
482int main(){return 0;}
483EOF
pbrookdb7287e2008-02-03 16:27:13 +0000484 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000485 echo "WARNING: \"$cc\" looks like gcc 4.x"
486 found_compat_cc="no"
487 if test "$gcc3_search" = "yes" ; then
488 echo "Looking for gcc 3.x"
489 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000490 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000491 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000492 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000493 found_compat_cc="yes"
494 break
495 fi
496 done
497 if test "$found_compat_cc" = "no" ; then
498 echo "gcc 3.x not found!"
499 fi
500 fi
501 if test "$found_compat_cc" = "no" ; then
502 echo "QEMU is known to have problems when compiled with gcc 4.x"
503 echo "It is recommended that you use gcc 3.x to build QEMU"
504 echo "To use this compiler anyway, configure with --disable-gcc-check"
505 exit 1;
506 fi
507 fi
508fi
509
bellardec530c82006-04-25 22:36:06 +0000510#
511# Solaris specific configure tool chain decisions
512#
513if test "$solaris" = "yes" ; then
514 #
515 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
516 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000517 #
bellardec530c82006-04-25 22:36:06 +0000518 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
519 solgcc=`which $cc`
520 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
521 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
522 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
523 echo "or get the latest patch from SunSolve for gcc"
524 exit 1
525 fi
526 fi
527 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
528 if test -z "$solinst" ; then
529 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
530 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
531 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
532 exit 1
533 fi
534 if test "$solinst" = "/usr/sbin/install" ; then
535 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
536 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
537 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
538 exit 1
539 fi
bellardec530c82006-04-25 22:36:06 +0000540 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
541 if test -z "$sol_ar" ; then
542 echo "Error: No path includes ar"
543 if test -f /usr/ccs/bin/ar ; then
544 echo "Add /usr/ccs/bin to your path and rerun configure"
545 fi
546 exit 1
547 fi
ths5fafdf22007-09-16 21:08:06 +0000548fi
bellardec530c82006-04-25 22:36:06 +0000549
550
bellard5327cf42005-01-10 23:18:50 +0000551if test -z "$target_list" ; then
552# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000553 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000554 target_list="\
555i386-softmmu \
556x86_64-softmmu \
557arm-softmmu \
558cris-softmmu \
559m68k-softmmu \
560mips-softmmu \
561mipsel-softmmu \
562mips64-softmmu \
563mips64el-softmmu \
564ppc-softmmu \
565ppcemb-softmmu \
566ppc64-softmmu \
567sh4-softmmu \
568sh4eb-softmmu \
569sparc-softmmu \
570"
pbrook0a8e90f2006-03-19 14:54:16 +0000571 fi
bellard5327cf42005-01-10 23:18:50 +0000572# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000573 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000574 target_list="${target_list}\
575i386-linux-user \
576x86_64-linux-user \
577alpha-linux-user \
578arm-linux-user \
579armeb-linux-user \
580cris-linux-user \
581m68k-linux-user \
582mips-linux-user \
583mipsel-linux-user \
584ppc-linux-user \
585ppc64-linux-user \
586ppc64abi32-linux-user \
587sh4-linux-user \
588sh4eb-linux-user \
589sparc-linux-user \
590sparc64-linux-user \
591sparc32plus-linux-user \
592"
ths831b7822007-01-18 20:06:33 +0000593 fi
594# the following are Darwin specific
595 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000596 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000597 fi
bellard6e20a452005-06-05 15:56:02 +0000598else
pbrookb1a550a2006-04-16 13:28:56 +0000599 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000600fi
pbrook0a8e90f2006-03-19 14:54:16 +0000601if test -z "$target_list" ; then
602 echo "No targets enabled"
603 exit 1
604fi
bellard5327cf42005-01-10 23:18:50 +0000605
bellard7d132992003-03-06 23:23:54 +0000606if test -z "$cross_prefix" ; then
607
608# ---
609# big/little endian test
610cat > $TMPC << EOF
611#include <inttypes.h>
612int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000613 volatile uint32_t i=0x01234567;
614 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000615}
616EOF
617
pbrookdb7287e2008-02-03 16:27:13 +0000618if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000619$TMPE && bigendian="yes"
620else
621echo big/little test failed
622fi
623
624else
625
626# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000627if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000628 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000629 -o "$cpu" = "m68k" \
630 -o "$cpu" = "mips" \
631 -o "$cpu" = "mips64" \
632 -o "$cpu" = "powerpc" \
633 -o "$cpu" = "s390" \
634 -o "$cpu" = "sparc" \
635 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000636 bigendian="yes"
637fi
638
639fi
640
bellardb6853692005-06-05 17:10:39 +0000641# host long bits test
642hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000643if test "$cpu" = "x86_64" \
644 -o "$cpu" = "alpha" \
645 -o "$cpu" = "ia64" \
646 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000647 hostlongbits="64"
648fi
649
malc810260a2008-07-23 19:17:46 +0000650# ppc specific hostlongbits selection
651if test "$cpu" = "powerpc" ; then
652 cat > $TMPC <<EOF
653int main(void){return sizeof(long);}
654EOF
655
656 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
657 $TMPE
658 case $? in
659 4) hostlongbits="32";;
660 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000661 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000662 esac
663 else
664 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000665 exit 1
malc810260a2008-07-23 19:17:46 +0000666 fi
667fi
668
bellarde8cd23d2003-06-25 16:08:13 +0000669# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000670cat > $TMPC <<EOF
671int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000672}
673EOF
674
pbrookbd0c5662008-05-29 14:34:11 +0000675# Check host NPTL support
676cat > $TMPC <<EOF
677#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000678#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000679void foo()
680{
681#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
682#error bork
683#endif
684}
685EOF
686
687if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
688 :
689else
690 nptl="no"
691fi
692
bellard11d9f692004-04-02 20:55:59 +0000693##########################################
694# SDL probe
695
696sdl_too_old=no
697
698if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000699 sdl_config="sdl-config"
700 sdl=no
701 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000702
ths069b0bd2007-07-12 00:27:15 +0000703 if test "$mingw32" = "yes" -a ! -z "$cross_prefix" ; then
704 # win32 cross compilation case
705 sdl_config="i386-mingw32msvc-sdl-config"
706 sdl=yes
707 else
708 # normal SDL probe
bellard11d9f692004-04-02 20:55:59 +0000709cat > $TMPC << EOF
710#include <SDL.h>
711#undef main /* We don't want SDL to override our main() */
712int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
713EOF
pbrookdb7287e2008-02-03 16:27:13 +0000714 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
ths069b0bd2007-07-12 00:27:15 +0000715 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
716 if test "$_sdlversion" -lt 121 ; then
717 sdl_too_old=yes
718 else
719 if test "$cocoa" = "no" ; then
720 sdl=yes
721 fi
722 fi
bellard11d9f692004-04-02 20:55:59 +0000723
ths069b0bd2007-07-12 00:27:15 +0000724 # static link with sdl ?
725 if test "$sdl" = "yes" ; then
726 aa="no"
727 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
728 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
729 if [ "$aa" = "yes" ] ; then
730 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
731 fi
732
ths8281db42007-11-18 21:37:07 +0000733 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
ths069b0bd2007-07-12 00:27:15 +0000734 sdl_static=yes
735 fi
736 fi # static link
737 fi # sdl compile test
738 fi # cross compilation
bellard11d9f692004-04-02 20:55:59 +0000739else
ths069b0bd2007-07-12 00:27:15 +0000740 # Make sure to disable cocoa if sdl was set
741 if test "$sdl" = "yes" ; then
742 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000743 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000744 fi
bellarda6e022a2004-04-02 21:55:47 +0000745fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000746
ths8f28f3f2007-01-05 21:25:54 +0000747##########################################
ths8d5d2d42007-08-25 01:37:51 +0000748# VNC TLS detection
749if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000750cat > $TMPC <<EOF
751#include <gnutls/gnutls.h>
752int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
753EOF
754 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
755 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
756 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
757 $vnc_tls_libs 2> /dev/null ; then
758 :
759 else
760 vnc_tls="no"
761 fi
ths8d5d2d42007-08-25 01:37:51 +0000762fi
763
764##########################################
ths8a16d272008-07-19 09:56:24 +0000765# vde libraries probe
766if test "$vde" = "yes" ; then
767 cat > $TMPC << EOF
768#include <libvdeplug.h>
769int main(void) { struct vde_open_args a = {0, 0, 0} ; return 0;}
770EOF
771 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
772 :
773 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000774 vde="no"
ths8a16d272008-07-19 09:56:24 +0000775 fi
776fi
777
778##########################################
malcc2de5c92008-06-28 19:13:06 +0000779# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000780
malcc2de5c92008-06-28 19:13:06 +0000781audio_drv_probe()
782{
783 drv=$1
784 hdr=$2
785 lib=$3
786 exp=$4
787 cfl=$5
788 cat > $TMPC << EOF
789#include <$hdr>
790int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000791EOF
malcc2de5c92008-06-28 19:13:06 +0000792 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
793 :
794 else
795 echo
796 echo "Error: $drv check failed"
797 echo "Make sure to have the $drv libs and headers installed."
798 echo
799 exit 1
800 fi
801}
802
malc2fa7d3b2008-07-29 12:58:44 +0000803audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000804for drv in $audio_drv_list; do
805 case $drv in
806 alsa)
807 audio_drv_probe $drv alsa/asoundlib.h -lasound \
808 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
809 ;;
810
811 fmod)
812 if test -z $fmod_lib || test -z $fmod_inc; then
813 echo
814 echo "Error: You must specify path to FMOD library and headers"
815 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
816 echo
817 exit 1
818 fi
819 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
820 ;;
821
822 esd)
823 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
824 ;;
malcb8e59f12008-07-02 21:03:08 +0000825
826 pa)
827 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
828 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
829 ;;
830
blueswir12f6a1ab2008-08-21 18:00:53 +0000831 oss|sdl|core|wav|dsound)
832 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
833 ;;
834
malce4c63a62008-07-19 16:15:16 +0000835 *)
malc1c9b2a52008-07-19 16:57:30 +0000836 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000837 echo
838 echo "Error: Unknown driver '$drv' selected"
839 echo "Possible drivers are: $audio_possible_drivers"
840 echo
841 exit 1
842 }
843 ;;
malcc2de5c92008-06-28 19:13:06 +0000844 esac
845done
ths8f28f3f2007-01-05 21:25:54 +0000846
balrog4d3b6f62008-02-10 16:33:14 +0000847##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000848# BrlAPI probe
849
850if test -z "$brlapi" ; then
851 brlapi=no
852cat > $TMPC << EOF
853#include <brlapi.h>
854int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
855EOF
aurel32a40e56d2008-05-04 00:50:25 +0000856 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000857 brlapi=yes
858 fi # brlapi compile test
859fi # -z $brlapi
860
861##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000862# curses probe
863
864if test "$curses" = "yes" ; then
865 curses=no
866 cat > $TMPC << EOF
867#include <curses.h>
868int main(void) { return curses_version(); }
869EOF
pbrookaf896aa2008-03-23 00:47:42 +0000870 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000871 curses=yes
872 fi
873fi # test "$curses"
874
blueswir1414f0da2008-08-15 18:20:52 +0000875##########################################
876# AIO probe
877if test "$aio" = "yes" ; then
878 aio=no
879 cat > $TMPC << EOF
880#include <aio.h>
881int main(void) { return aio_write(NULL); }
882EOF
883 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
884 aio=yes
885 fi
886fi
887
pbrookcc8ae6d2006-04-23 17:57:59 +0000888# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000889if [ -x "`which texi2html 2>/dev/null`" ] && \
890 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000891 build_docs="yes"
892fi
893
bellard11d9f692004-04-02 20:55:59 +0000894if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000895 if test -z "$prefix" ; then
896 prefix="/c/Program Files/Qemu"
897 fi
898 mansuffix=""
899 datasuffix=""
900 docsuffix=""
901 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000902else
pbrook308c3592007-02-27 00:52:01 +0000903 if test -z "$prefix" ; then
904 prefix="/usr/local"
905 fi
906 mansuffix="/share/man"
907 datasuffix="/share/qemu"
908 docsuffix="/share/doc/qemu"
909 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000910fi
bellard5a671352003-10-01 00:13:48 +0000911
bellard43ce4df2003-06-09 19:53:12 +0000912echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000913echo "BIOS directory $prefix$datasuffix"
914echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000915if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000916echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000917echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000918fi
bellard5a671352003-10-01 00:13:48 +0000919echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000920echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000921echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000922echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000923echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000924echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000925echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000926echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000927echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000928echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000929echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000930echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000931echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000932if test "$darwin" = "yes" ; then
933 echo "Cocoa support $cocoa"
934fi
bellard97a847b2003-08-10 21:36:04 +0000935echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000936if test "$sdl" != "no" ; then
937 echo "SDL static link $sdl_static"
938fi
balrog4d3b6f62008-02-10 16:33:14 +0000939echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000940echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +0000941echo "Audio drivers $audio_drv_list"
942echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +0000943echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +0000944echo "VNC TLS support $vnc_tls"
945if test "$vnc_tls" = "yes" ; then
946 echo " TLS CFLAGS $vnc_tls_cflags"
947 echo " TLS LIBS $vnc_tls_libs"
948fi
blueswir131422552007-04-16 18:27:06 +0000949if test -n "$sparc_cpu"; then
950 echo "Target Sparc Arch $sparc_cpu"
951fi
bellard07f4ddb2005-04-23 17:44:28 +0000952echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +0000953echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +0000954echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +0000955[ ! -z "$uname_release" ] && \
956echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +0000957echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +0000958echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +0000959echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +0000960
bellard97a847b2003-08-10 21:36:04 +0000961if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +0000962echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +0000963fi
ths20b40c62007-07-11 23:39:45 +0000964if [ -s /tmp/qemu-$$-sdl-config.log ]; then
965 echo "The error log from compiling the libSDL test is: "
966 cat /tmp/qemu-$$-sdl-config.log
967fi
968rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +0000969#if test "$sdl_static" = "no"; then
970# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
971#fi
bellard97a847b2003-08-10 21:36:04 +0000972config_mak="config-host.mak"
973config_h="config-host.h"
974
bellard7c1f25b2004-04-22 00:02:08 +0000975#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +0000976
ths15d9ca02007-07-31 23:07:32 +0000977test -f $config_h && mv $config_h ${config_h}~
978
bellard97a847b2003-08-10 21:36:04 +0000979echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +0000980echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000981echo "/* Automatically generated by configure - do not modify */" > $config_h
982
983echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000984echo "bindir=\${prefix}$binsuffix" >> $config_mak
985echo "mandir=\${prefix}$mansuffix" >> $config_mak
986echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +0000987echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000988echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000989echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +0000990echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000991echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000992echo "HOST_CC=$host_cc" >> $config_mak
993echo "AR=$ar" >> $config_mak
994echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +0000995# XXX: only use CFLAGS and LDFLAGS ?
996# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
997# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +0000998echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +0000999echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1000echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1001echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001002echo "CFLAGS=$CFLAGS" >> $config_mak
1003echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001004echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001005echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001006case "$cpu" in
1007 i386)
1008 echo "ARCH=i386" >> $config_mak
1009 echo "#define HOST_I386 1" >> $config_h
1010 ;;
1011 x86_64)
1012 echo "ARCH=x86_64" >> $config_mak
1013 echo "#define HOST_X86_64 1" >> $config_h
1014 ;;
1015 alpha)
1016 echo "ARCH=alpha" >> $config_mak
1017 echo "#define HOST_ALPHA 1" >> $config_h
1018 ;;
1019 armv4b)
1020 echo "ARCH=arm" >> $config_mak
1021 echo "#define HOST_ARM 1" >> $config_h
1022 ;;
1023 armv4l)
1024 echo "ARCH=arm" >> $config_mak
1025 echo "#define HOST_ARM 1" >> $config_h
1026 ;;
1027 cris)
1028 echo "ARCH=cris" >> $config_mak
1029 echo "#define HOST_CRIS 1" >> $config_h
1030 ;;
1031 hppa)
1032 echo "ARCH=hppa" >> $config_mak
1033 echo "#define HOST_HPPA 1" >> $config_h
1034 ;;
1035 ia64)
1036 echo "ARCH=ia64" >> $config_mak
1037 echo "#define HOST_IA64 1" >> $config_h
1038 ;;
1039 m68k)
1040 echo "ARCH=m68k" >> $config_mak
1041 echo "#define HOST_M68K 1" >> $config_h
1042 ;;
1043 mips)
1044 echo "ARCH=mips" >> $config_mak
1045 echo "#define HOST_MIPS 1" >> $config_h
1046 ;;
1047 mips64)
1048 echo "ARCH=mips64" >> $config_mak
1049 echo "#define HOST_MIPS64 1" >> $config_h
1050 ;;
1051 powerpc)
malc810260a2008-07-23 19:17:46 +00001052 if test "$hostlongbits" = "32"; then
1053 echo "ARCH=ppc" >> $config_mak
1054 echo "#define HOST_PPC 1" >> $config_h
1055 else
1056 echo "ARCH=ppc64" >> $config_mak
1057 echo "#define HOST_PPC64 1" >> $config_h
1058 fi
aurel322408a522008-04-20 20:19:44 +00001059 ;;
1060 s390)
1061 echo "ARCH=s390" >> $config_mak
1062 echo "#define HOST_S390 1" >> $config_h
1063 ;;
1064 sparc)
1065 echo "ARCH=sparc" >> $config_mak
1066 echo "#define HOST_SPARC 1" >> $config_h
1067 ;;
1068 sparc64)
1069 echo "ARCH=sparc64" >> $config_mak
1070 echo "#define HOST_SPARC64 1" >> $config_h
1071 ;;
1072 *)
1073 echo "Unsupported CPU = $cpu"
1074 exit 1
1075 ;;
1076esac
bellard7d132992003-03-06 23:23:54 +00001077if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001078 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1079 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1080fi
bellardb6853692005-06-05 17:10:39 +00001081echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001082if test "$mingw32" = "yes" ; then
1083 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001084 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001085else
1086 cat > $TMPC << EOF
1087#include <byteswap.h>
1088int main(void) { return bswap_32(0); }
1089EOF
pbrookdb7287e2008-02-03 16:27:13 +00001090 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001091 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1092 fi
bellard67b915a2004-03-31 23:37:16 +00001093fi
blueswir1128ab2f2008-08-15 18:33:42 +00001094
1095if [ "$openbsd" = "yes" ] ; then
1096 echo "#define ENOTSUP 4096" >> $config_h
1097fi
1098
bellard83fb7ad2004-07-05 21:25:26 +00001099if test "$darwin" = "yes" ; then
1100 echo "CONFIG_DARWIN=yes" >> $config_mak
1101 echo "#define CONFIG_DARWIN 1" >> $config_h
1102fi
bellardec530c82006-04-25 22:36:06 +00001103if test "$solaris" = "yes" ; then
1104 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001105 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001106 if test "$needs_libsunmath" = "yes" ; then
1107 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1108 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1109 fi
bellardec530c82006-04-25 22:36:06 +00001110fi
blueswir131422552007-04-16 18:27:06 +00001111if test -n "$sparc_cpu"; then
1112 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1113 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1114fi
bellard67b915a2004-03-31 23:37:16 +00001115if test "$gdbstub" = "yes" ; then
1116 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1117 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1118fi
bellard97a847b2003-08-10 21:36:04 +00001119if test "$gprof" = "yes" ; then
1120 echo "TARGET_GPROF=yes" >> $config_mak
1121 echo "#define HAVE_GPROF 1" >> $config_h
1122fi
1123if test "$static" = "yes" ; then
1124 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001125 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001126fi
bellard05c2a3e2006-02-08 22:39:17 +00001127if test $profiler = "yes" ; then
1128 echo "#define CONFIG_PROFILER 1" >> $config_h
1129fi
bellardc20709a2004-04-21 23:27:19 +00001130if test "$slirp" = "yes" ; then
1131 echo "CONFIG_SLIRP=yes" >> $config_mak
1132 echo "#define CONFIG_SLIRP 1" >> $config_h
1133fi
ths8a16d272008-07-19 09:56:24 +00001134if test "$vde" = "yes" ; then
1135 echo "CONFIG_VDE=yes" >> $config_mak
1136 echo "#define CONFIG_VDE 1" >> $config_h
1137 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1138fi
malc0c58ac12008-06-25 21:04:05 +00001139for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001140 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001141 echo "$def=yes" >> $config_mak
1142 echo "#define $def 1" >> $config_h
1143done
1144echo "#define AUDIO_DRIVERS \\" >> $config_h
1145for drv in $audio_drv_list; do
1146 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001147 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001148 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001149 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001150 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1151 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001152 elif test "$drv" = "oss"; then
1153 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001154 fi
1155done
1156echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001157if test "$mixemu" = "yes" ; then
1158 echo "CONFIG_MIXEMU=yes" >> $config_mak
1159 echo "#define CONFIG_MIXEMU 1" >> $config_h
1160fi
ths8d5d2d42007-08-25 01:37:51 +00001161if test "$vnc_tls" = "yes" ; then
1162 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1163 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1164 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1165 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1166fi
pbrookb1a550a2006-04-16 13:28:56 +00001167qemu_version=`head $source_path/VERSION`
1168echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001169echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001170
1171echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001172if [ "$source_path_used" = "yes" ]; then
1173 echo "VPATH=$source_path" >> $config_mak
1174fi
bellard97a847b2003-08-10 21:36:04 +00001175echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001176if [ "$build_docs" = "yes" ] ; then
1177 echo "BUILD_DOCS=yes" >> $config_mak
1178fi
bellard49ecc3f2007-11-07 19:25:15 +00001179if test "$static" = "yes"; then
1180 sdl1=$sdl_static
1181else
1182 sdl1=$sdl
1183fi
1184if test "$sdl1" = "yes" ; then
1185 echo "#define CONFIG_SDL 1" >> $config_h
1186 echo "CONFIG_SDL=yes" >> $config_mak
1187 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1188 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1189 else
1190 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1191 fi
1192 if [ "${aa}" = "yes" ] ; then
1193 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1194 else
1195 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1196 fi
1197fi
1198if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001199 echo "#define CONFIG_COCOA 1" >> $config_h
1200 echo "CONFIG_COCOA=yes" >> $config_mak
1201fi
1202if test "$curses" = "yes" ; then
1203 echo "#define CONFIG_CURSES 1" >> $config_h
1204 echo "CONFIG_CURSES=yes" >> $config_mak
1205 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001206fi
aurel322e4d9fb2008-04-08 06:01:02 +00001207if test "$brlapi" = "yes" ; then
1208 echo "CONFIG_BRLAPI=yes" >> $config_mak
1209 echo "#define CONFIG_BRLAPI 1" >> $config_h
1210 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1211fi
blueswir1414f0da2008-08-15 18:20:52 +00001212if test "$aio" = "yes" ; then
1213 echo "#define CONFIG_AIO 1" >> $config_h
1214fi
bellard97a847b2003-08-10 21:36:04 +00001215
bellard83fb7ad2004-07-05 21:25:26 +00001216# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001217if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001218 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001219 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001220 echo "#define _BSD 1" >> $config_h
1221fi
1222
pbrookc5937222006-05-14 11:30:38 +00001223echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1224
pbrookc39e3332007-09-22 16:49:14 +00001225tools=
1226if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1227 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001228 if [ "$linux" = "yes" ] ; then
1229 tools="qemu-nbd\$(EXESUF) $tools"
1230 fi
pbrookc39e3332007-09-22 16:49:14 +00001231fi
1232echo "TOOLS=$tools" >> $config_mak
1233
ths15d9ca02007-07-31 23:07:32 +00001234test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1235
bellard1d14ffa2005-10-30 18:58:22 +00001236for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001237target_dir="$target"
1238config_mak=$target_dir/config.mak
1239config_h=$target_dir/config.h
1240target_cpu=`echo $target | cut -d '-' -f 1`
1241target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001242[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001243[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1244[ "$target_cpu" = "mips" ] && target_bigendian=yes
1245[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1246[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001247[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001248[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001249[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001250[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001251[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001252[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1253[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1254[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001255target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001256target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001257target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001258target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001259case "$target" in
1260 ${target_cpu}-softmmu)
1261 target_softmmu="yes"
1262 ;;
1263 ${target_cpu}-linux-user)
1264 target_user_only="yes"
1265 target_linux_user="yes"
1266 ;;
1267 ${target_cpu}-darwin-user)
1268 target_user_only="yes"
1269 target_darwin_user="yes"
1270 ;;
1271 *)
1272 echo "ERROR: Target '$target' not recognised"
1273 exit 1
1274 ;;
1275esac
ths831b7822007-01-18 20:06:33 +00001276
bellard97ccc682005-07-02 13:32:17 +00001277if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001278 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001279 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001280 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001281 echo "Note that this will disable all output from the virtual graphics card"
1282 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001283 exit 1;
1284fi
1285
bellard7c1f25b2004-04-22 00:02:08 +00001286#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001287
ths15d9ca02007-07-31 23:07:32 +00001288test -f $config_h && mv $config_h ${config_h}~
1289
bellard97a847b2003-08-10 21:36:04 +00001290mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001291mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001292mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001293if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001294 mkdir -p $target_dir/nwfpe
1295fi
1296
bellardec530c82006-04-25 22:36:06 +00001297#
1298# don't use ln -sf as not all "ln -sf" over write the file/link
1299#
1300rm -f $target_dir/Makefile
1301ln -s $source_path/Makefile.target $target_dir/Makefile
1302
bellard97a847b2003-08-10 21:36:04 +00001303
1304echo "# Automatically generated by configure - do not modify" > $config_mak
1305echo "/* Automatically generated by configure - do not modify */" > $config_h
1306
1307
1308echo "include ../config-host.mak" >> $config_mak
1309echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001310
pbrooke5fe0c52006-06-11 13:32:59 +00001311bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001312elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001313target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001314interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1315echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001316
aurel322408a522008-04-20 20:19:44 +00001317case "$target_cpu" in
1318 i386)
1319 echo "TARGET_ARCH=i386" >> $config_mak
1320 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1321 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001322 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001323 then
1324 echo "#define USE_KQEMU 1" >> $config_h
1325 fi
aurel32f2bf0942008-05-05 06:00:27 +00001326 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001327 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001328 then
1329 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1330 else
1331 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1332 fi
aurel322408a522008-04-20 20:19:44 +00001333 ;;
1334 x86_64)
1335 echo "TARGET_ARCH=x86_64" >> $config_mak
1336 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1337 echo "#define TARGET_I386 1" >> $config_h
1338 echo "#define TARGET_X86_64 1" >> $config_h
1339 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1340 then
1341 echo "#define USE_KQEMU 1" >> $config_h
1342 fi
1343 ;;
1344 alpha)
1345 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001346 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001347 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1348 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001349 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001350 ;;
1351 arm|armeb)
1352 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001353 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1354 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001355 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001356 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001357 ;;
1358 cris)
1359 echo "TARGET_ARCH=cris" >> $config_mak
1360 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1361 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001362 ;;
1363 m68k)
1364 echo "TARGET_ARCH=m68k" >> $config_mak
1365 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1366 echo "#define TARGET_M68K 1" >> $config_h
1367 bflt="yes"
1368 ;;
1369 mips|mipsel)
1370 echo "TARGET_ARCH=mips" >> $config_mak
1371 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1372 echo "#define TARGET_MIPS 1" >> $config_h
1373 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1374 ;;
1375 mipsn32|mipsn32el)
1376 echo "TARGET_ARCH=mipsn32" >> $config_mak
1377 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1378 echo "#define TARGET_MIPS 1" >> $config_h
1379 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1380 ;;
1381 mips64|mips64el)
1382 echo "TARGET_ARCH=mips64" >> $config_mak
1383 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1384 echo "#define TARGET_MIPS 1" >> $config_h
1385 echo "#define TARGET_MIPS64 1" >> $config_h
1386 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1387 ;;
1388 ppc)
1389 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001390 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001391 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1392 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001393 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001394 ;;
1395 ppcemb)
1396 echo "TARGET_ARCH=ppcemb" >> $config_mak
1397 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001398 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001399 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1400 echo "#define TARGET_PPC 1" >> $config_h
1401 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001402 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001403 ;;
1404 ppc64)
1405 echo "TARGET_ARCH=ppc64" >> $config_mak
1406 echo "TARGET_ABI_DIR=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 \"ppc64\"" >> $config_h
1409 echo "#define TARGET_PPC 1" >> $config_h
1410 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001411 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001412 ;;
1413 ppc64abi32)
1414 echo "TARGET_ARCH=ppc64" >> $config_mak
1415 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1416 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001417 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001418 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1419 echo "#define TARGET_PPC 1" >> $config_h
1420 echo "#define TARGET_PPC64 1" >> $config_h
1421 echo "#define TARGET_ABI32 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 sh4|sh4eb)
1425 echo "TARGET_ARCH=sh4" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001426 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001427 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1428 echo "#define TARGET_SH4 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001429 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001430 bflt="yes"
1431 ;;
1432 sparc)
1433 echo "TARGET_ARCH=sparc" >> $config_mak
1434 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1435 echo "#define TARGET_SPARC 1" >> $config_h
1436 ;;
1437 sparc64)
1438 echo "TARGET_ARCH=sparc64" >> $config_mak
1439 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1440 echo "#define TARGET_SPARC 1" >> $config_h
1441 echo "#define TARGET_SPARC64 1" >> $config_h
1442 elfload32="yes"
1443 ;;
1444 sparc32plus)
1445 echo "TARGET_ARCH=sparc64" >> $config_mak
1446 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1447 echo "TARGET_ARCH2=sparc32plus" >> $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 echo "#define TARGET_ABI32 1" >> $config_h
1452 ;;
1453 *)
1454 echo "Unsupported target CPU"
1455 exit 1
1456 ;;
1457esac
bellardde83cd02003-06-15 20:25:43 +00001458if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001459 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1460 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1461fi
1462if test "$target_softmmu" = "yes" ; then
1463 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1464 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001465fi
bellard997344f2003-10-27 21:10:39 +00001466if test "$target_user_only" = "yes" ; then
1467 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1468 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1469fi
ths831b7822007-01-18 20:06:33 +00001470if test "$target_linux_user" = "yes" ; then
1471 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1472 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1473fi
1474if test "$target_darwin_user" = "yes" ; then
1475 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1476 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1477fi
bellardde83cd02003-06-15 20:25:43 +00001478
aurel320938cda2008-04-11 21:36:06 +00001479if test "$target_cpu" = "arm" \
1480 -o "$target_cpu" = "armeb" \
1481 -o "$target_cpu" = "m68k" \
1482 -o "$target_cpu" = "mips" \
1483 -o "$target_cpu" = "mipsel" \
1484 -o "$target_cpu" = "mipsn32" \
1485 -o "$target_cpu" = "mipsn32el" \
1486 -o "$target_cpu" = "mips64" \
1487 -o "$target_cpu" = "mips64el" \
1488 -o "$target_cpu" = "sparc" \
1489 -o "$target_cpu" = "sparc64" \
1490 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001491 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1492 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1493fi
pbrooke5fe0c52006-06-11 13:32:59 +00001494if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1495 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1496 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1497fi
pbrookbd0c5662008-05-29 14:34:11 +00001498if test "$target_user_only" = "yes" \
1499 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1500 echo "#define USE_NPTL 1" >> $config_h
1501fi
blueswir1cb33da52007-10-09 16:34:29 +00001502# 32 bit ELF loader in addition to native 64 bit loader?
1503if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1504 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1505 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1506fi
bellard5b0753e2005-03-01 21:37:28 +00001507
ths15d9ca02007-07-31 23:07:32 +00001508test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1509
bellard97a847b2003-08-10 21:36:04 +00001510done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001511
1512# build tree in object directory if source path is different from current one
1513if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001514 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001515 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001516 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001517 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001518 for dir in $DIRS ; do
1519 mkdir -p $dir
1520 done
bellardec530c82006-04-25 22:36:06 +00001521 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001522 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001523 rm -f $f
1524 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001525 done
1526fi
bellard7d132992003-03-06 23:23:54 +00001527
bellard97a847b2003-08-10 21:36:04 +00001528rm -f $TMPO $TMPC $TMPE $TMPS