]> git.proxmox.com Git - mirror_qemu.git/blame - configure
alpha: convert cmov and bcond to TCG
[mirror_qemu.git] / configure
CommitLineData
7d13299d
FB
1#!/bin/sh
2#
3ef693a0 3# qemu configure script (c) 2003 Fabrice Bellard
7d13299d
FB
4#
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
3ef693a0
FB
14TMPC="${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"
7d13299d
FB
18
19# default parameters
11d9f695 20prefix=""
1e43adfc 21interp_prefix="/usr/gnemul/qemu-%M"
43ce4dfe 22static="no"
7d13299d
FB
23cross_prefix=""
24cc="gcc"
328a4240 25gcc3_search="yes"
fe8f78e4 26gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
0c58ac1c 27audio_drv_list=""
28audio_card_list=""
7d13299d
FB
29host_cc="gcc"
30ar="ar"
31make="make"
6a882643 32install="install"
7d13299d
FB
33strip="strip"
34cpu=`uname -m`
5327cf48 35target_list=""
7d13299d
FB
36case "$cpu" in
37 i386|i486|i586|i686|i86pc|BePC)
97a847bc 38 cpu="i386"
7d13299d 39 ;;
aaa5fa14
AJ
40 x86_64|amd64)
41 cpu="x86_64"
42 ;;
43 alpha)
44 cpu="alpha"
45 ;;
ba68055e 46 armv*b)
808c4954
FB
47 cpu="armv4b"
48 ;;
ba68055e 49 armv*l)
7d13299d
FB
50 cpu="armv4l"
51 ;;
aaa5fa14
AJ
52 cris)
53 cpu="cris"
7d13299d 54 ;;
f54b3f92
AJ
55 parisc|parisc64)
56 cpu="hppa"
57 ;;
aaa5fa14
AJ
58 ia64)
59 cpu="ia64"
60 ;;
61 m68k)
62 cpu="m68k"
7d13299d
FB
63 ;;
64 mips)
65 cpu="mips"
66 ;;
fbe4f65b
TS
67 mips64)
68 cpu="mips64"
69 ;;
aaa5fa14
AJ
70 "Power Macintosh"|ppc|ppc64)
71 cpu="powerpc"
e7daa605 72 ;;
0e7b8a9f 73 s390*)
fb3e5849
FB
74 cpu="s390"
75 ;;
3142255c 76 sparc|sun4[cdmuv])
ae228531
FB
77 cpu="sparc"
78 ;;
79 sparc64)
80 cpu="sparc64"
81 ;;
7d13299d
FB
82 *)
83 cpu="unknown"
84 ;;
85esac
86gprof="no"
87bigendian="no"
67b915a5
FB
88mingw32="no"
89EXESUF=""
90gdbstub="yes"
443f1376 91slirp="yes"
e0e6c8c0 92vde="yes"
102a52e4
FB
93fmod_lib=""
94fmod_inc=""
2f6a1ab0 95oss_lib=""
8d5d2d4c 96vnc_tls="yes"
b1a550a0 97bsd="no"
5327cf48 98linux="no"
c9ec1fe4 99kqemu="no"
05c2a3e7 100profiler="no"
5b0753e0 101cocoa="no"
97ccc689 102check_gfx="yes"
1aff381f 103check_gcc="yes"
0a8e90f4 104softmmu="yes"
831b7825
TS
105linux_user="no"
106darwin_user="no"
cc8ae6de 107build_docs="no"
c5937220 108uname_release=""
4d3b6f6e 109curses="yes"
414f0dab 110aio="yes"
bd0c5661 111nptl="yes"
8ff9cbf7 112mixemu="no"
7d13299d
FB
113
114# OS specific
115targetos=`uname -s`
116case $targetos in
c326e0af
FB
117CYGWIN*)
118mingw32="yes"
6f30fa85 119OS_CFLAGS="-mno-cygwin"
db8d7dd1
TS
120if [ "$cpu" = "i386" ] ; then
121 kqemu="yes"
122fi
c2de5c91 123audio_possible_drivers="sdl"
c326e0af 124;;
67b915a5
FB
125MINGW32*)
126mingw32="yes"
db8d7dd1
TS
127if [ "$cpu" = "i386" ] ; then
128 kqemu="yes"
129fi
c2de5c91 130audio_possible_drivers="dsound sdl fmod"
67b915a5 131;;
5c40d2bd 132GNU/kFreeBSD)
0c58ac1c 133audio_drv_list="oss"
f34af52c 134audio_possible_drivers="oss sdl esd pa"
5c40d2bd
TS
135if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
136 kqemu="yes"
137fi
138;;
7d3505c5
FB
139FreeBSD)
140bsd="yes"
0c58ac1c 141audio_drv_list="oss"
f34af52c 142audio_possible_drivers="oss sdl esd pa"
e99f9060 143if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
07f4ddbf
FB
144 kqemu="yes"
145fi
7d3505c5
FB
146;;
147NetBSD)
148bsd="yes"
0c58ac1c 149audio_drv_list="oss"
c2de5c91 150audio_possible_drivers="oss sdl esd"
7d3505c5
FB
151;;
152OpenBSD)
153bsd="yes"
128ab2ff 154openbsd="yes"
0c58ac1c 155audio_drv_list="oss"
c2de5c91 156audio_possible_drivers="oss sdl esd"
2f6a1ab0 157oss_lib="-lossaudio"
7d3505c5 158;;
83fb7adf
FB
159Darwin)
160bsd="yes"
161darwin="yes"
831b7825 162darwin_user="yes"
fd677642 163cocoa="yes"
0c58ac1c 164audio_drv_list="coreaudio"
c2de5c91 165audio_possible_drivers="coreaudio sdl fmod"
6f30fa85 166OS_CFLAGS="-mdynamic-no-pic"
c2c59c3e 167OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
83fb7adf 168;;
ec530c81 169SunOS)
c2b84fab
TS
170 solaris="yes"
171 make="gmake"
172 install="ginstall"
0475a5ca 173 needs_libsunmath="no"
c2b84fab 174 solarisrev=`uname -r | cut -f2 -d.`
ef18c883
TS
175 # 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
c2b84fab 181 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
0475a5ca
TS
182 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
c2b84fab
TS
194 kqemu="yes"
195 fi
86b2bd93 196 fi
6b4d2ba1 197 if test -f /usr/include/sys/soundcard.h ; then
0c58ac1c 198 audio_drv_list="oss"
6b4d2ba1 199 fi
c2de5c91 200 audio_possible_drivers="oss sdl"
86b2bd93 201;;
1d14ffa9 202*)
0c58ac1c 203audio_drv_list="oss"
b8e59f18 204audio_possible_drivers="oss alsa sdl esd pa"
5327cf48 205linux="yes"
831b7825 206linux_user="yes"
07f4ddbf 207if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
c9ec1fe4 208 kqemu="yes"
c2de5c91 209 audio_possible_drivers="$audio_possible_drivers fmod"
c9ec1fe4 210fi
fb065187 211;;
7d13299d
FB
212esac
213
7d3505c5 214if [ "$bsd" = "yes" ] ; then
b1a550a0 215 if [ "$darwin" != "yes" ] ; then
83fb7adf
FB
216 make="gmake"
217 fi
7d3505c5
FB
218fi
219
7d13299d 220# find source path
ad064840 221source_path=`dirname "$0"`
59faef3a
AZ
222source_path_used="no"
223workdir=`pwd`
ad064840 224if [ -z "$source_path" ]; then
59faef3a 225 source_path=$workdir
ad064840
PB
226else
227 source_path=`cd "$source_path"; pwd`
7d13299d 228fi
724db118 229[ -f "$workdir/vl.c" ] || source_path_used="yes"
7d13299d 230
85aa5189 231werror="no"
0d1e2394
FB
232# 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
85aa5189 236
7d13299d 237for opt do
a46e4035 238 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
7d13299d 239 case "$opt" in
2efc3265
FB
240 --help|-h) show_help=yes
241 ;;
b1a550a0 242 --prefix=*) prefix="$optarg"
7d13299d 243 ;;
b1a550a0 244 --interp-prefix=*) interp_prefix="$optarg"
32ce6337 245 ;;
b1a550a0 246 --source-path=*) source_path="$optarg"
ad064840 247 source_path_used="yes"
7d13299d 248 ;;
b1a550a0 249 --cross-prefix=*) cross_prefix="$optarg"
7d13299d 250 ;;
b1a550a0 251 --cc=*) cc="$optarg"
328a4240 252 gcc3_search="no"
7d13299d 253 ;;
b1a550a0 254 --host-cc=*) host_cc="$optarg"
83469015 255 ;;
b1a550a0 256 --make=*) make="$optarg"
7d13299d 257 ;;
6a882643
PB
258 --install=*) install="$optarg"
259 ;;
b1a550a0 260 --extra-cflags=*) CFLAGS="$optarg"
7d13299d 261 ;;
b1a550a0 262 --extra-ldflags=*) LDFLAGS="$optarg"
7d13299d 263 ;;
b1a550a0 264 --cpu=*) cpu="$optarg"
7d13299d 265 ;;
b1a550a0 266 --target-list=*) target_list="$optarg"
de83cd02 267 ;;
7d13299d
FB
268 --enable-gprof) gprof="yes"
269 ;;
43ce4dfe
FB
270 --static) static="yes"
271 ;;
97a847bc
FB
272 --disable-sdl) sdl="no"
273 ;;
0c58ac1c 274 --fmod-lib=*) fmod_lib="$optarg"
1d14ffa9 275 ;;
c2de5c91 276 --fmod-inc=*) fmod_inc="$optarg"
277 ;;
2f6a1ab0
BS
278 --oss-lib=*) oss_lib="$optarg"
279 ;;
2fa7d3bf 280 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
102a52e4 281 ;;
0c58ac1c 282 --audio-drv-list=*) audio_drv_list="$optarg"
102a52e4 283 ;;
8d5d2d4c
TS
284 --disable-vnc-tls) vnc_tls="no"
285 ;;
443f1376 286 --disable-slirp) slirp="no"
1d14ffa9 287 ;;
e0e6c8c0 288 --disable-vde) vde="no"
8a16d273 289 ;;
c9ec1fe4 290 --disable-kqemu) kqemu="no"
1d14ffa9 291 ;;
2e4d9fb1
AJ
292 --disable-brlapi) brlapi="no"
293 ;;
05c2a3e7
FB
294 --enable-profiler) profiler="yes"
295 ;;
c2de5c91 296 --enable-cocoa)
297 cocoa="yes" ;
298 sdl="no" ;
299 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
1d14ffa9 300 ;;
97ccc689
FB
301 --disable-gfx-check) check_gfx="no"
302 ;;
1aff381f
FB
303 --disable-gcc-check) check_gcc="no"
304 ;;
cad25d69 305 --disable-system) softmmu="no"
0a8e90f4 306 ;;
cad25d69 307 --enable-system) softmmu="yes"
0a8e90f4 308 ;;
831b7825 309 --disable-linux-user) linux_user="no"
0a8e90f4 310 ;;
831b7825
TS
311 --enable-linux-user) linux_user="yes"
312 ;;
313 --disable-darwin-user) darwin_user="no"
314 ;;
315 --enable-darwin-user) darwin_user="yes"
0a8e90f4 316 ;;
c5937220
PB
317 --enable-uname-release=*) uname_release="$optarg"
318 ;;
3142255c
BS
319 --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 ;;
85aa5189
FB
331 --enable-werror) werror="yes"
332 ;;
333 --disable-werror) werror="no"
334 ;;
4d3b6f6e
AZ
335 --disable-curses) curses="no"
336 ;;
bd0c5661
PB
337 --disable-nptl) nptl="no"
338 ;;
8ff9cbf7 339 --enable-mixemu) mixemu="yes"
340 ;;
414f0dab
BS
341 --disable-aio) aio="no"
342 ;;
7f1559c6
AZ
343 *) echo "ERROR: unknown option $opt"; show_help="yes"
344 ;;
7d13299d
FB
345 esac
346done
347
6f30fa85 348# default flags for all hosts
ac41a620
BS
349CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
350CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
6f30fa85 351LDFLAGS="$LDFLAGS -g"
85aa5189
FB
352if test "$werror" = "yes" ; then
353CFLAGS="$CFLAGS -Werror"
354fi
6f30fa85 355
49237acd
BS
356if ld --version 2>/dev/null | grep -q "GNU ld" ; then
357 LDFLAGS="$LDFLAGS -Wl,--warn-common"
358fi
359
3142255c
BS
360#
361# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
362# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
363#
40293e58 364case "$cpu" in
3142255c
BS
365 sparc) if test -z "$sparc_cpu" ; then
366 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
367 ARCH_LDFLAGS="-m32"
368 else
369 ARCH_CFLAGS="${SP_CFLAGS}"
370 ARCH_LDFLAGS="${SP_LDFLAGS}"
371 fi
372 ;;
373 sparc64) if test -z "$sparc_cpu" ; then
374 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
375 ARCH_LDFLAGS="-m64"
376 else
377 ARCH_CFLAGS="${SP_CFLAGS}"
378 ARCH_LDFLAGS="${SP_LDFLAGS}"
379 fi
380 ;;
76d83bde
TS
381 s390)
382 ARCH_CFLAGS="-march=z900"
383 ;;
40293e58
FB
384 i386)
385 ARCH_CFLAGS="-m32"
386 ARCH_LDFLAGS="-m32"
387 ;;
388 x86_64)
389 ARCH_CFLAGS="-m64"
390 ARCH_LDFLAGS="-m64"
391 ;;
3142255c
BS
392esac
393
af5db58e
PB
394if test x"$show_help" = x"yes" ; then
395cat << EOF
396
397Usage: configure [options]
398Options: [defaults in brackets after descriptions]
399
400EOF
401echo "Standard options:"
402echo " --help print this message"
403echo " --prefix=PREFIX install in PREFIX [$prefix]"
404echo " --interp-prefix=PREFIX where to find shared libraries, etc."
405echo " use %M for cpu name [$interp_prefix]"
406echo " --target-list=LIST set target list [$target_list]"
407echo ""
408echo "kqemu kernel acceleration support:"
409echo " --disable-kqemu disable kqemu support"
af5db58e
PB
410echo ""
411echo "Advanced options (experts only):"
412echo " --source-path=PATH path of source code [$source_path]"
413echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
414echo " --cc=CC use C compiler CC [$cc]"
415echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
416echo " --make=MAKE use specified make [$make]"
6a882643 417echo " --install=INSTALL use specified install [$install]"
af5db58e 418echo " --static enable static build [$static]"
85aa5189 419echo " --disable-werror disable compilation abort on warning"
fe8f78e4 420echo " --disable-sdl disable SDL"
af5db58e 421echo " --enable-cocoa enable COCOA (Mac OS X only)"
c2de5c91 422echo " --audio-drv-list=LIST set audio drivers list:"
423echo " Available drivers: $audio_possible_drivers"
424echo " --audio-card-list=LIST set list of additional emulated audio cards"
425echo " Available cards: ac97 adlib cs4231a gus"
8ff9cbf7 426echo " --enable-mixemu enable mixer emulation"
2e4d9fb1 427echo " --disable-brlapi disable BrlAPI"
8d5d2d4c 428echo " --disable-vnc-tls disable TLS encryption for VNC server"
af896aaa 429echo " --disable-curses disable curses output"
bd0c5661 430echo " --disable-nptl disable usermode NPTL support"
af5db58e
PB
431echo " --enable-system enable all system emulation targets"
432echo " --disable-system disable all system emulation targets"
831b7825
TS
433echo " --enable-linux-user enable all linux usermode emulation targets"
434echo " --disable-linux-user disable all linux usermode emulation targets"
435echo " --enable-darwin-user enable all darwin usermode emulation targets"
436echo " --disable-darwin-user disable all darwin usermode emulation targets"
af5db58e
PB
437echo " --fmod-lib path to FMOD library"
438echo " --fmod-inc path to FMOD includes"
2f6a1ab0 439echo " --oss-lib path to OSS library"
c5937220 440echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
3142255c 441echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
e0e6c8c0 442echo " --disable-vde disable support for vde network"
414f0dab 443echo " --disable-aio disable AIO support"
af5db58e 444echo ""
5bf08934 445echo "NOTE: The object files are built at the place where configure is launched"
af5db58e
PB
446exit 1
447fi
448
7d13299d
FB
449cc="${cross_prefix}${cc}"
450ar="${cross_prefix}${ar}"
451strip="${cross_prefix}${strip}"
452
064aae13
PB
453# check that the C compiler works.
454cat > $TMPC <<EOF
455int main(void) {}
456EOF
457
db7287ed 458if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
064aae13
PB
459 : C compiler works ok
460else
461 echo "ERROR: \"$cc\" either does not exist or does not work"
462 exit 1
a7350fa1
FB
463fi
464
cd01b4a3
AL
465# check compiler to see if we're on mingw32
466cat > $TMPC <<EOF
467#include <windows.h>
468#ifndef _WIN32
469#error not windows
470#endif
471int main(void) {}
472EOF
473
474if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
475 mingw32="yes"
476fi
477
67b915a5 478if test "$mingw32" = "yes" ; then
5327cf48 479 linux="no"
67b915a5 480 EXESUF=".exe"
9f059eca 481 oss="no"
cd01b4a3
AL
482 linux_user="no"
483fi
484
485if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
486 AIOLIBS=
487else
488 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
489 AIOLIBS="-lrt -lpthread"
67b915a5
FB
490fi
491
5fafdf24 492# Check for gcc4, error if pre-gcc4
328a4240
PB
493if test "$check_gcc" = "yes" ; then
494 cat > $TMPC <<EOF
495#if __GNUC__ < 4
496#error gcc3
497#endif
498int main(){return 0;}
499EOF
db7287ed 500 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
328a4240
PB
501 echo "WARNING: \"$cc\" looks like gcc 4.x"
502 found_compat_cc="no"
503 if test "$gcc3_search" = "yes" ; then
504 echo "Looking for gcc 3.x"
505 for compat_cc in $gcc3_list ; do
d4af3de2 506 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
328a4240 507 echo "Found \"$compat_cc\""
1124426a 508 cc="$cross_prefix$compat_cc"
328a4240
PB
509 found_compat_cc="yes"
510 break
511 fi
512 done
513 if test "$found_compat_cc" = "no" ; then
514 echo "gcc 3.x not found!"
515 fi
516 fi
517 if test "$found_compat_cc" = "no" ; then
518 echo "QEMU is known to have problems when compiled with gcc 4.x"
519 echo "It is recommended that you use gcc 3.x to build QEMU"
520 echo "To use this compiler anyway, configure with --disable-gcc-check"
521 exit 1;
522 fi
523 fi
524fi
525
ec530c81
FB
526#
527# Solaris specific configure tool chain decisions
528#
529if test "$solaris" = "yes" ; then
530 #
531 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
532 # override the check with --disable-gcc-check
5fafdf24 533 #
ec530c81
FB
534 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
535 solgcc=`which $cc`
536 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
537 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
538 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
539 echo "or get the latest patch from SunSolve for gcc"
540 exit 1
541 fi
542 fi
543 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
544 if test -z "$solinst" ; then
545 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
546 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
547 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
548 exit 1
549 fi
550 if test "$solinst" = "/usr/sbin/install" ; then
551 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
552 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
553 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
554 exit 1
555 fi
ec530c81
FB
556 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
557 if test -z "$sol_ar" ; then
558 echo "Error: No path includes ar"
559 if test -f /usr/ccs/bin/ar ; then
560 echo "Add /usr/ccs/bin to your path and rerun configure"
561 fi
562 exit 1
563 fi
5fafdf24 564fi
ec530c81
FB
565
566
5327cf48
FB
567if test -z "$target_list" ; then
568# these targets are portable
0a8e90f4 569 if [ "$softmmu" = "yes" ] ; then
2408a527
AJ
570 target_list="\
571i386-softmmu \
572x86_64-softmmu \
573arm-softmmu \
574cris-softmmu \
575m68k-softmmu \
576mips-softmmu \
577mipsel-softmmu \
578mips64-softmmu \
579mips64el-softmmu \
580ppc-softmmu \
581ppcemb-softmmu \
582ppc64-softmmu \
583sh4-softmmu \
584sh4eb-softmmu \
585sparc-softmmu \
586"
0a8e90f4 587 fi
5327cf48 588# the following are Linux specific
831b7825 589 if [ "$linux_user" = "yes" ] ; then
2408a527
AJ
590 target_list="${target_list}\
591i386-linux-user \
592x86_64-linux-user \
593alpha-linux-user \
594arm-linux-user \
595armeb-linux-user \
596cris-linux-user \
597m68k-linux-user \
598mips-linux-user \
599mipsel-linux-user \
600ppc-linux-user \
601ppc64-linux-user \
602ppc64abi32-linux-user \
603sh4-linux-user \
604sh4eb-linux-user \
605sparc-linux-user \
606sparc64-linux-user \
607sparc32plus-linux-user \
608"
831b7825
TS
609 fi
610# the following are Darwin specific
611 if [ "$darwin_user" = "yes" ] ; then
2408a527 612 target_list="$target_list i386-darwin-user ppc-darwin-user"
5327cf48 613 fi
6e20a45f 614else
b1a550a0 615 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
5327cf48 616fi
0a8e90f4
PB
617if test -z "$target_list" ; then
618 echo "No targets enabled"
619 exit 1
620fi
5327cf48 621
7d13299d
FB
622if test -z "$cross_prefix" ; then
623
624# ---
625# big/little endian test
626cat > $TMPC << EOF
627#include <inttypes.h>
628int main(int argc, char ** argv){
1d14ffa9
FB
629 volatile uint32_t i=0x01234567;
630 return (*((uint8_t*)(&i))) == 0x67;
7d13299d
FB
631}
632EOF
633
db7287ed 634if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
7d13299d
FB
635$TMPE && bigendian="yes"
636else
637echo big/little test failed
638fi
639
640else
641
642# if cross compiling, cannot launch a program, so make a static guess
0938cda5 643if test "$cpu" = "armv4b" \
f54b3f92 644 -o "$cpu" = "hppa" \
0938cda5
AJ
645 -o "$cpu" = "m68k" \
646 -o "$cpu" = "mips" \
647 -o "$cpu" = "mips64" \
648 -o "$cpu" = "powerpc" \
649 -o "$cpu" = "s390" \
650 -o "$cpu" = "sparc" \
651 -o "$cpu" = "sparc64"; then
7d13299d
FB
652 bigendian="yes"
653fi
654
655fi
656
b6853697
FB
657# host long bits test
658hostlongbits="32"
0938cda5
AJ
659if test "$cpu" = "x86_64" \
660 -o "$cpu" = "alpha" \
661 -o "$cpu" = "ia64" \
662 -o "$cpu" = "sparc64"; then
b6853697
FB
663 hostlongbits="64"
664fi
665
810260a8 666# ppc specific hostlongbits selection
667if test "$cpu" = "powerpc" ; then
668 cat > $TMPC <<EOF
669int main(void){return sizeof(long);}
670EOF
671
672 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
673 $TMPE
674 case $? in
675 4) hostlongbits="32";;
676 8) hostlongbits="64";;
ba69a08a 677 *) echo "Couldn't determine bits per long value"; exit 1;;
810260a8 678 esac
679 else
680 echo hostlongbits test failed
ba69a08a 681 exit 1
810260a8 682 fi
683fi
684
e8cd23de 685# check gcc options support
04369ff2
FB
686cat > $TMPC <<EOF
687int main(void) {
04369ff2
FB
688}
689EOF
690
bd0c5661
PB
691# Check host NPTL support
692cat > $TMPC <<EOF
693#include <sched.h>
30813cea 694#include <linux/futex.h>
bd0c5661
PB
695void foo()
696{
697#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
698#error bork
699#endif
700}
701EOF
702
703if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
704 :
705else
706 nptl="no"
707fi
708
11d9f695
FB
709##########################################
710# SDL probe
711
712sdl_too_old=no
713
714if test -z "$sdl" ; then
069b0bda
TS
715 sdl_config="sdl-config"
716 sdl=no
717 sdl_static=no
718
11d9f695
FB
719cat > $TMPC << EOF
720#include <SDL.h>
721#undef main /* We don't want SDL to override our main() */
722int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
723EOF
cd01b4a3
AL
724 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
725 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
726 if test "$_sdlversion" -lt 121 ; then
727 sdl_too_old=yes
728 else
729 if test "$cocoa" = "no" ; then
730 sdl=yes
069b0bda 731 fi
cd01b4a3 732 fi
11d9f695 733
cd01b4a3
AL
734 # static link with sdl ?
735 if test "$sdl" = "yes" ; then
736 aa="no"
737 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
738 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
739 if [ "$aa" = "yes" ] ; then
740 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
741 fi
742
743 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
744 sdl_static=yes
745 fi
746 fi # static link
747 fi # sdl compile test
fd677642 748else
069b0bda
TS
749 # Make sure to disable cocoa if sdl was set
750 if test "$sdl" = "yes" ; then
751 cocoa="no"
c2de5c91 752 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
069b0bda 753 fi
a6e022ad 754fi # -z $sdl
11d9f695 755
8d5d2d4c
TS
756##########################################
757# VNC TLS detection
758if test "$vnc_tls" = "yes" ; then
ae6b5e5a
AL
759cat > $TMPC <<EOF
760#include <gnutls/gnutls.h>
761int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
762EOF
763 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
764 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
765 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
766 $vnc_tls_libs 2> /dev/null ; then
767 :
768 else
769 vnc_tls="no"
770 fi
8d5d2d4c
TS
771fi
772
8a16d273
TS
773##########################################
774# vde libraries probe
775if test "$vde" = "yes" ; then
776 cat > $TMPC << EOF
777#include <libvdeplug.h>
4a7f0e06
PB
778int main(void)
779{
780 struct vde_open_args a = {0, 0, 0};
781 vde_open("", "", &a);
782 return 0;
783}
8a16d273 784EOF
4a7f0e06 785 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
8a16d273
TS
786 :
787 else
e0e6c8c0 788 vde="no"
8a16d273
TS
789 fi
790fi
791
8f28f3fb 792##########################################
c2de5c91 793# Sound support libraries probe
8f28f3fb 794
c2de5c91 795audio_drv_probe()
796{
797 drv=$1
798 hdr=$2
799 lib=$3
800 exp=$4
801 cfl=$5
802 cat > $TMPC << EOF
803#include <$hdr>
804int main(void) { $exp }
8f28f3fb 805EOF
c2de5c91 806 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
807 :
808 else
809 echo
810 echo "Error: $drv check failed"
811 echo "Make sure to have the $drv libs and headers installed."
812 echo
813 exit 1
814 fi
815}
816
2fa7d3bf 817audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
c2de5c91 818for drv in $audio_drv_list; do
819 case $drv in
820 alsa)
821 audio_drv_probe $drv alsa/asoundlib.h -lasound \
822 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
823 ;;
824
825 fmod)
826 if test -z $fmod_lib || test -z $fmod_inc; then
827 echo
828 echo "Error: You must specify path to FMOD library and headers"
829 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
830 echo
831 exit 1
832 fi
833 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
834 ;;
835
836 esd)
837 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
838 ;;
b8e59f18 839
840 pa)
841 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
842 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
843 ;;
844
2f6a1ab0
BS
845 oss|sdl|core|wav|dsound)
846 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
847 ;;
848
e4c63a6a 849 *)
1c9b2a52 850 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
e4c63a6a 851 echo
852 echo "Error: Unknown driver '$drv' selected"
853 echo "Possible drivers are: $audio_possible_drivers"
854 echo
855 exit 1
856 }
857 ;;
c2de5c91 858 esac
859done
8f28f3fb 860
2e4d9fb1
AJ
861##########################################
862# BrlAPI probe
863
864if test -z "$brlapi" ; then
865 brlapi=no
866cat > $TMPC << EOF
867#include <brlapi.h>
868int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
869EOF
a40e56d5 870 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
2e4d9fb1
AJ
871 brlapi=yes
872 fi # brlapi compile test
873fi # -z $brlapi
874
4d3b6f6e
AZ
875##########################################
876# curses probe
877
878if test "$curses" = "yes" ; then
879 curses=no
880 cat > $TMPC << EOF
881#include <curses.h>
882int main(void) { return curses_version(); }
883EOF
af896aaa 884 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
4d3b6f6e
AZ
885 curses=yes
886 fi
887fi # test "$curses"
888
414f0dab
BS
889##########################################
890# AIO probe
891if test "$aio" = "yes" ; then
892 aio=no
893 cat > $TMPC << EOF
894#include <aio.h>
895int main(void) { return aio_write(NULL); }
896EOF
897 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
898 aio=yes
899 fi
900fi
901
cc8ae6de 902# Check if tools are available to build documentation.
6c591867
TS
903if [ -x "`which texi2html 2>/dev/null`" ] && \
904 [ -x "`which pod2man 2>/dev/null`" ]; then
cc8ae6de
PB
905 build_docs="yes"
906fi
907
11d9f695 908if test "$mingw32" = "yes" ; then
308c3593
PB
909 if test -z "$prefix" ; then
910 prefix="/c/Program Files/Qemu"
911 fi
912 mansuffix=""
913 datasuffix=""
914 docsuffix=""
915 binsuffix=""
11d9f695 916else
308c3593
PB
917 if test -z "$prefix" ; then
918 prefix="/usr/local"
919 fi
920 mansuffix="/share/man"
921 datasuffix="/share/qemu"
922 docsuffix="/share/doc/qemu"
923 binsuffix="/bin"
11d9f695 924fi
5a67135a 925
43ce4dfe 926echo "Install prefix $prefix"
308c3593
PB
927echo "BIOS directory $prefix$datasuffix"
928echo "binary directory $prefix$binsuffix"
11d9f695 929if test "$mingw32" = "no" ; then
308c3593 930echo "Manual directory $prefix$mansuffix"
43ce4dfe 931echo "ELF interp prefix $interp_prefix"
11d9f695 932fi
5a67135a 933echo "Source path $source_path"
43ce4dfe 934echo "C compiler $cc"
83469015 935echo "Host C compiler $host_cc"
db7287ed 936echo "ARCH_CFLAGS $ARCH_CFLAGS"
43ce4dfe 937echo "make $make"
6a882643 938echo "install $install"
43ce4dfe 939echo "host CPU $cpu"
de83cd02 940echo "host big endian $bigendian"
97a847bc 941echo "target list $target_list"
43ce4dfe 942echo "gprof enabled $gprof"
05c2a3e7 943echo "profiler $profiler"
43ce4dfe 944echo "static build $static"
85aa5189 945echo "-Werror enabled $werror"
5b0753e0
FB
946if test "$darwin" = "yes" ; then
947 echo "Cocoa support $cocoa"
948fi
97a847bc 949echo "SDL support $sdl"
e4afee97
FB
950if test "$sdl" != "no" ; then
951 echo "SDL static link $sdl_static"
952fi
4d3b6f6e 953echo "curses support $curses"
67b915a5 954echo "mingw32 support $mingw32"
0c58ac1c 955echo "Audio drivers $audio_drv_list"
956echo "Extra audio cards $audio_card_list"
8ff9cbf7 957echo "Mixer emulation $mixemu"
8d5d2d4c
TS
958echo "VNC TLS support $vnc_tls"
959if test "$vnc_tls" = "yes" ; then
960 echo " TLS CFLAGS $vnc_tls_cflags"
961 echo " TLS LIBS $vnc_tls_libs"
962fi
3142255c
BS
963if test -n "$sparc_cpu"; then
964 echo "Target Sparc Arch $sparc_cpu"
965fi
07f4ddbf 966echo "kqemu support $kqemu"
2e4d9fb1 967echo "brlapi support $brlapi"
cc8ae6de 968echo "Documentation $build_docs"
c5937220
PB
969[ ! -z "$uname_release" ] && \
970echo "uname -r $uname_release"
bd0c5661 971echo "NPTL support $nptl"
8a16d273 972echo "vde support $vde"
414f0dab 973echo "AIO support $aio"
67b915a5 974
97a847bc 975if test $sdl_too_old = "yes"; then
24b55b96 976echo "-> Your SDL version is too old - please upgrade to have SDL support"
7c1f25b4 977fi
20b40c6a
TS
978if [ -s /tmp/qemu-$$-sdl-config.log ]; then
979 echo "The error log from compiling the libSDL test is: "
980 cat /tmp/qemu-$$-sdl-config.log
981fi
982rm -f /tmp/qemu-$$-sdl-config.log
24b55b96
FB
983#if test "$sdl_static" = "no"; then
984# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
985#fi
97a847bc
FB
986config_mak="config-host.mak"
987config_h="config-host.h"
7d13299d 988
7c1f25b4 989#echo "Creating $config_mak and $config_h"
7d13299d 990
15d9ca0f
TS
991test -f $config_h && mv $config_h ${config_h}~
992
97a847bc 993echo "# Automatically generated by configure - do not modify" > $config_mak
29517134 994echo "# Configured with: $0 $@" >> $config_mak
97a847bc 995echo "/* Automatically generated by configure - do not modify */" > $config_h
7d13299d 996
97a847bc 997echo "prefix=$prefix" >> $config_mak
308c3593
PB
998echo "bindir=\${prefix}$binsuffix" >> $config_mak
999echo "mandir=\${prefix}$mansuffix" >> $config_mak
1000echo "datadir=\${prefix}$datasuffix" >> $config_mak
4ad5b06d 1001echo "docdir=\${prefix}$docsuffix" >> $config_mak
308c3593 1002echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
97a847bc 1003echo "MAKE=$make" >> $config_mak
6a882643 1004echo "INSTALL=$install" >> $config_mak
97a847bc 1005echo "CC=$cc" >> $config_mak
97a847bc
FB
1006echo "HOST_CC=$host_cc" >> $config_mak
1007echo "AR=$ar" >> $config_mak
1008echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
40293e58
FB
1009# XXX: only use CFLAGS and LDFLAGS ?
1010# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1011# compilation of dyngen tool (useful for win32 build on Linux host)
6f30fa85 1012echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
3142255c
BS
1013echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1014echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1015echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
97a847bc
FB
1016echo "CFLAGS=$CFLAGS" >> $config_mak
1017echo "LDFLAGS=$LDFLAGS" >> $config_mak
67b915a5 1018echo "EXESUF=$EXESUF" >> $config_mak
70956b77 1019echo "AIOLIBS=$AIOLIBS" >> $config_mak
2408a527
AJ
1020case "$cpu" in
1021 i386)
1022 echo "ARCH=i386" >> $config_mak
1023 echo "#define HOST_I386 1" >> $config_h
1024 ;;
1025 x86_64)
1026 echo "ARCH=x86_64" >> $config_mak
1027 echo "#define HOST_X86_64 1" >> $config_h
1028 ;;
1029 alpha)
1030 echo "ARCH=alpha" >> $config_mak
1031 echo "#define HOST_ALPHA 1" >> $config_h
1032 ;;
1033 armv4b)
1034 echo "ARCH=arm" >> $config_mak
1035 echo "#define HOST_ARM 1" >> $config_h
1036 ;;
1037 armv4l)
1038 echo "ARCH=arm" >> $config_mak
1039 echo "#define HOST_ARM 1" >> $config_h
1040 ;;
1041 cris)
1042 echo "ARCH=cris" >> $config_mak
1043 echo "#define HOST_CRIS 1" >> $config_h
1044 ;;
1045 hppa)
1046 echo "ARCH=hppa" >> $config_mak
1047 echo "#define HOST_HPPA 1" >> $config_h
1048 ;;
1049 ia64)
1050 echo "ARCH=ia64" >> $config_mak
1051 echo "#define HOST_IA64 1" >> $config_h
1052 ;;
1053 m68k)
1054 echo "ARCH=m68k" >> $config_mak
1055 echo "#define HOST_M68K 1" >> $config_h
1056 ;;
1057 mips)
1058 echo "ARCH=mips" >> $config_mak
1059 echo "#define HOST_MIPS 1" >> $config_h
1060 ;;
1061 mips64)
1062 echo "ARCH=mips64" >> $config_mak
1063 echo "#define HOST_MIPS64 1" >> $config_h
1064 ;;
1065 powerpc)
810260a8 1066 if test "$hostlongbits" = "32"; then
1067 echo "ARCH=ppc" >> $config_mak
1068 echo "#define HOST_PPC 1" >> $config_h
1069 else
1070 echo "ARCH=ppc64" >> $config_mak
1071 echo "#define HOST_PPC64 1" >> $config_h
1072 fi
2408a527
AJ
1073 ;;
1074 s390)
1075 echo "ARCH=s390" >> $config_mak
1076 echo "#define HOST_S390 1" >> $config_h
1077 ;;
1078 sparc)
1079 echo "ARCH=sparc" >> $config_mak
1080 echo "#define HOST_SPARC 1" >> $config_h
1081 ;;
1082 sparc64)
1083 echo "ARCH=sparc64" >> $config_mak
1084 echo "#define HOST_SPARC64 1" >> $config_h
1085 ;;
1086 *)
1087 echo "Unsupported CPU = $cpu"
1088 exit 1
1089 ;;
1090esac
7d13299d 1091if test "$bigendian" = "yes" ; then
97a847bc
FB
1092 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1093 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1094fi
b6853697 1095echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
67b915a5
FB
1096if test "$mingw32" = "yes" ; then
1097 echo "CONFIG_WIN32=yes" >> $config_mak
11d9f695 1098 echo "#define CONFIG_WIN32 1" >> $config_h
210fa556
PB
1099else
1100 cat > $TMPC << EOF
1101#include <byteswap.h>
1102int main(void) { return bswap_32(0); }
1103EOF
db7287ed 1104 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
210fa556
PB
1105 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1106 fi
67b915a5 1107fi
128ab2ff
BS
1108
1109if [ "$openbsd" = "yes" ] ; then
1110 echo "#define ENOTSUP 4096" >> $config_h
1111fi
1112
83fb7adf
FB
1113if test "$darwin" = "yes" ; then
1114 echo "CONFIG_DARWIN=yes" >> $config_mak
1115 echo "#define CONFIG_DARWIN 1" >> $config_h
1116fi
ec530c81
FB
1117if test "$solaris" = "yes" ; then
1118 echo "CONFIG_SOLARIS=yes" >> $config_mak
38cfa06c 1119 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
0475a5ca
TS
1120 if test "$needs_libsunmath" = "yes" ; then
1121 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1122 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1123 fi
ec530c81 1124fi
3142255c
BS
1125if test -n "$sparc_cpu"; then
1126 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1127 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1128fi
67b915a5
FB
1129if test "$gdbstub" = "yes" ; then
1130 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1131 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1132fi
97a847bc
FB
1133if test "$gprof" = "yes" ; then
1134 echo "TARGET_GPROF=yes" >> $config_mak
1135 echo "#define HAVE_GPROF 1" >> $config_h
1136fi
1137if test "$static" = "yes" ; then
1138 echo "CONFIG_STATIC=yes" >> $config_mak
50863472 1139 echo "#define CONFIG_STATIC 1" >> $config_h
7d13299d 1140fi
05c2a3e7
FB
1141if test $profiler = "yes" ; then
1142 echo "#define CONFIG_PROFILER 1" >> $config_h
1143fi
c20709aa
FB
1144if test "$slirp" = "yes" ; then
1145 echo "CONFIG_SLIRP=yes" >> $config_mak
1146 echo "#define CONFIG_SLIRP 1" >> $config_h
1147fi
8a16d273
TS
1148if test "$vde" = "yes" ; then
1149 echo "CONFIG_VDE=yes" >> $config_mak
1150 echo "#define CONFIG_VDE 1" >> $config_h
1151 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1152fi
0c58ac1c 1153for card in $audio_card_list; do
f6e5889e 1154 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
0c58ac1c 1155 echo "$def=yes" >> $config_mak
1156 echo "#define $def 1" >> $config_h
1157done
1158echo "#define AUDIO_DRIVERS \\" >> $config_h
1159for drv in $audio_drv_list; do
1160 echo " &${drv}_audio_driver, \\" >>$config_h
f6e5889e 1161 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
0c58ac1c 1162 echo "$def=yes" >> $config_mak
923e4521 1163 if test "$drv" = "fmod"; then
0c58ac1c 1164 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1165 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
2f6a1ab0
BS
1166 elif test "$drv" = "oss"; then
1167 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
0c58ac1c 1168 fi
1169done
1170echo "" >>$config_h
8ff9cbf7 1171if test "$mixemu" = "yes" ; then
1172 echo "CONFIG_MIXEMU=yes" >> $config_mak
1173 echo "#define CONFIG_MIXEMU 1" >> $config_h
1174fi
8d5d2d4c
TS
1175if test "$vnc_tls" = "yes" ; then
1176 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1177 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1178 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1179 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1180fi
b1a550a0
PB
1181qemu_version=`head $source_path/VERSION`
1182echo "VERSION=$qemu_version" >>$config_mak
d4b8f039 1183echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
97a847bc
FB
1184
1185echo "SRC_PATH=$source_path" >> $config_mak
ad064840
PB
1186if [ "$source_path_used" = "yes" ]; then
1187 echo "VPATH=$source_path" >> $config_mak
1188fi
97a847bc 1189echo "TARGET_DIRS=$target_list" >> $config_mak
cc8ae6de
PB
1190if [ "$build_docs" = "yes" ] ; then
1191 echo "BUILD_DOCS=yes" >> $config_mak
1192fi
49ecc3fa
FB
1193if test "$static" = "yes"; then
1194 sdl1=$sdl_static
1195else
1196 sdl1=$sdl
1197fi
1198if test "$sdl1" = "yes" ; then
1199 echo "#define CONFIG_SDL 1" >> $config_h
1200 echo "CONFIG_SDL=yes" >> $config_mak
1201 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1202 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1203 else
1204 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1205 fi
1206 if [ "${aa}" = "yes" ] ; then
1207 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1208 else
1209 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1210 fi
1211fi
1212if test "$cocoa" = "yes" ; then
4d3b6f6e
AZ
1213 echo "#define CONFIG_COCOA 1" >> $config_h
1214 echo "CONFIG_COCOA=yes" >> $config_mak
1215fi
1216if test "$curses" = "yes" ; then
1217 echo "#define CONFIG_CURSES 1" >> $config_h
1218 echo "CONFIG_CURSES=yes" >> $config_mak
1219 echo "CURSES_LIBS=-lcurses" >> $config_mak
49ecc3fa 1220fi
2e4d9fb1
AJ
1221if test "$brlapi" = "yes" ; then
1222 echo "CONFIG_BRLAPI=yes" >> $config_mak
1223 echo "#define CONFIG_BRLAPI 1" >> $config_h
1224 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1225fi
414f0dab
BS
1226if test "$aio" = "yes" ; then
1227 echo "#define CONFIG_AIO 1" >> $config_h
a3392f9b 1228 echo "CONFIG_AIO=yes" >> $config_mak
414f0dab 1229fi
97a847bc 1230
83fb7adf 1231# XXX: suppress that
7d3505c5 1232if [ "$bsd" = "yes" ] ; then
43003046 1233 echo "#define O_LARGEFILE 0" >> $config_h
43003046 1234 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
7d3505c5
FB
1235 echo "#define _BSD 1" >> $config_h
1236fi
1237
c5937220
PB
1238echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1239
c39e3338
PB
1240tools=
1241if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1242 tools="qemu-img\$(EXESUF) $tools"
7a5ca864
FB
1243 if [ "$linux" = "yes" ] ; then
1244 tools="qemu-nbd\$(EXESUF) $tools"
1245 fi
c39e3338
PB
1246fi
1247echo "TOOLS=$tools" >> $config_mak
1248
15d9ca0f
TS
1249test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1250
1d14ffa9 1251for target in $target_list; do
97a847bc
FB
1252target_dir="$target"
1253config_mak=$target_dir/config.mak
1254config_h=$target_dir/config.h
1255target_cpu=`echo $target | cut -d '-' -f 1`
1256target_bigendian="no"
808c4954 1257[ "$target_cpu" = "armeb" ] && target_bigendian=yes
0938cda5
AJ
1258[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1259[ "$target_cpu" = "mips" ] && target_bigendian=yes
1260[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1261[ "$target_cpu" = "mips64" ] && target_bigendian=yes
67867308 1262[ "$target_cpu" = "ppc" ] && target_bigendian=yes
d4082e95 1263[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
22f8a8b3 1264[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
e85e7c6e 1265[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
908f52b0 1266[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
0938cda5
AJ
1267[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1268[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1269[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
97a847bc 1270target_softmmu="no"
997344f3 1271target_user_only="no"
831b7825 1272target_linux_user="no"
831b7825 1273target_darwin_user="no"
9e407a85
PB
1274case "$target" in
1275 ${target_cpu}-softmmu)
1276 target_softmmu="yes"
1277 ;;
1278 ${target_cpu}-linux-user)
1279 target_user_only="yes"
1280 target_linux_user="yes"
1281 ;;
1282 ${target_cpu}-darwin-user)
1283 target_user_only="yes"
1284 target_darwin_user="yes"
1285 ;;
1286 *)
1287 echo "ERROR: Target '$target' not recognised"
1288 exit 1
1289 ;;
1290esac
831b7825 1291
97ccc689 1292if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1d14ffa9 1293 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
97ccc689 1294 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
9c038506 1295 echo "To build QEMU without graphical output configure with --disable-gfx-check"
4d3b6f6e
AZ
1296 echo "Note that this will disable all output from the virtual graphics card"
1297 echo "except through VNC or curses."
97ccc689
FB
1298 exit 1;
1299fi
1300
7c1f25b4 1301#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
97a847bc 1302
15d9ca0f
TS
1303test -f $config_h && mv $config_h ${config_h}~
1304
97a847bc 1305mkdir -p $target_dir
158142c2 1306mkdir -p $target_dir/fpu
57fec1fe 1307mkdir -p $target_dir/tcg
831b7825 1308if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
69de927c
FB
1309 mkdir -p $target_dir/nwfpe
1310fi
1311
ec530c81
FB
1312#
1313# don't use ln -sf as not all "ln -sf" over write the file/link
1314#
1315rm -f $target_dir/Makefile
1316ln -s $source_path/Makefile.target $target_dir/Makefile
1317
97a847bc
FB
1318
1319echo "# Automatically generated by configure - do not modify" > $config_mak
1320echo "/* Automatically generated by configure - do not modify */" > $config_h
1321
de83cd02 1322
97a847bc
FB
1323echo "include ../config-host.mak" >> $config_mak
1324echo "#include \"../config-host.h\"" >> $config_h
1e43adfc 1325
e5fe0c52 1326bflt="no"
cb33da57 1327elfload32="no"
bd0c5661 1328target_nptl="no"
1e43adfc
FB
1329interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1330echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
97a847bc 1331
2408a527
AJ
1332case "$target_cpu" in
1333 i386)
1334 echo "TARGET_ARCH=i386" >> $config_mak
1335 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1336 echo "#define TARGET_I386 1" >> $config_h
da260249 1337 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
2408a527
AJ
1338 then
1339 echo "#define USE_KQEMU 1" >> $config_h
1340 fi
f2bf094e 1341 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
11d1fdb0 1342 if test -n "$gcc3minver" && test $gcc3minver -gt 3
f2bf094e
AJ
1343 then
1344 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1345 else
1346 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1347 fi
2408a527
AJ
1348 ;;
1349 x86_64)
1350 echo "TARGET_ARCH=x86_64" >> $config_mak
1351 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1352 echo "#define TARGET_I386 1" >> $config_h
1353 echo "#define TARGET_X86_64 1" >> $config_h
1354 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1355 then
1356 echo "#define USE_KQEMU 1" >> $config_h
1357 fi
1358 ;;
1359 alpha)
1360 echo "TARGET_ARCH=alpha" >> $config_mak
bf6247fb 1361 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1362 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1363 echo "#define TARGET_ALPHA 1" >> $config_h
bf6247fb 1364 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1365 ;;
1366 arm|armeb)
1367 echo "TARGET_ARCH=arm" >> $config_mak
2408a527
AJ
1368 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1369 echo "#define TARGET_ARM 1" >> $config_h
2408a527 1370 bflt="yes"
bd0c5661 1371 target_nptl="yes"
2408a527
AJ
1372 ;;
1373 cris)
1374 echo "TARGET_ARCH=cris" >> $config_mak
1375 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1376 echo "#define TARGET_CRIS 1" >> $config_h
2408a527
AJ
1377 ;;
1378 m68k)
1379 echo "TARGET_ARCH=m68k" >> $config_mak
1380 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1381 echo "#define TARGET_M68K 1" >> $config_h
1382 bflt="yes"
1383 ;;
1384 mips|mipsel)
1385 echo "TARGET_ARCH=mips" >> $config_mak
1386 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1387 echo "#define TARGET_MIPS 1" >> $config_h
1388 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1389 ;;
1390 mipsn32|mipsn32el)
1391 echo "TARGET_ARCH=mipsn32" >> $config_mak
1392 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1393 echo "#define TARGET_MIPS 1" >> $config_h
1394 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1395 ;;
1396 mips64|mips64el)
1397 echo "TARGET_ARCH=mips64" >> $config_mak
1398 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1399 echo "#define TARGET_MIPS 1" >> $config_h
1400 echo "#define TARGET_MIPS64 1" >> $config_h
1401 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1402 ;;
1403 ppc)
1404 echo "TARGET_ARCH=ppc" >> $config_mak
bf6247fb 1405 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1406 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1407 echo "#define TARGET_PPC 1" >> $config_h
bf6247fb 1408 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1409 ;;
1410 ppcemb)
1411 echo "TARGET_ARCH=ppcemb" >> $config_mak
1412 echo "TARGET_ABI_DIR=ppc" >> $config_mak
bf6247fb 1413 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1414 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1415 echo "#define TARGET_PPC 1" >> $config_h
1416 echo "#define TARGET_PPCEMB 1" >> $config_h
ec5b78cd 1417 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1418 ;;
1419 ppc64)
1420 echo "TARGET_ARCH=ppc64" >> $config_mak
1421 echo "TARGET_ABI_DIR=ppc" >> $config_mak
bf6247fb 1422 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1423 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1424 echo "#define TARGET_PPC 1" >> $config_h
1425 echo "#define TARGET_PPC64 1" >> $config_h
bf6247fb 1426 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1427 ;;
1428 ppc64abi32)
1429 echo "TARGET_ARCH=ppc64" >> $config_mak
1430 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1431 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
bf6247fb 1432 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1433 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1434 echo "#define TARGET_PPC 1" >> $config_h
1435 echo "#define TARGET_PPC64 1" >> $config_h
1436 echo "#define TARGET_ABI32 1" >> $config_h
bf6247fb 1437 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1438 ;;
1439 sh4|sh4eb)
1440 echo "TARGET_ARCH=sh4" >> $config_mak
1441 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1442 echo "#define TARGET_SH4 1" >> $config_h
1443 bflt="yes"
0b6d3ae0 1444 target_nptl="yes"
2408a527
AJ
1445 ;;
1446 sparc)
1447 echo "TARGET_ARCH=sparc" >> $config_mak
1448 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1449 echo "#define TARGET_SPARC 1" >> $config_h
1450 ;;
1451 sparc64)
1452 echo "TARGET_ARCH=sparc64" >> $config_mak
1453 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1454 echo "#define TARGET_SPARC 1" >> $config_h
1455 echo "#define TARGET_SPARC64 1" >> $config_h
1456 elfload32="yes"
1457 ;;
1458 sparc32plus)
1459 echo "TARGET_ARCH=sparc64" >> $config_mak
1460 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1461 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1462 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1463 echo "#define TARGET_SPARC 1" >> $config_h
1464 echo "#define TARGET_SPARC64 1" >> $config_h
1465 echo "#define TARGET_ABI32 1" >> $config_h
1466 ;;
1467 *)
1468 echo "Unsupported target CPU"
1469 exit 1
1470 ;;
1471esac
de83cd02 1472if test "$target_bigendian" = "yes" ; then
97a847bc
FB
1473 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1474 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
de83cd02 1475fi
97a847bc
FB
1476if test "$target_softmmu" = "yes" ; then
1477 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1478 echo "#define CONFIG_SOFTMMU 1" >> $config_h
43ce4dfe 1479fi
997344f3
FB
1480if test "$target_user_only" = "yes" ; then
1481 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1482 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1483fi
831b7825
TS
1484if test "$target_linux_user" = "yes" ; then
1485 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1486 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1487fi
1488if test "$target_darwin_user" = "yes" ; then
1489 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1490 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1491fi
97a847bc 1492
0938cda5
AJ
1493if test "$target_cpu" = "arm" \
1494 -o "$target_cpu" = "armeb" \
1495 -o "$target_cpu" = "m68k" \
1496 -o "$target_cpu" = "mips" \
1497 -o "$target_cpu" = "mipsel" \
1498 -o "$target_cpu" = "mipsn32" \
1499 -o "$target_cpu" = "mipsn32el" \
1500 -o "$target_cpu" = "mips64" \
1501 -o "$target_cpu" = "mips64el" \
1502 -o "$target_cpu" = "sparc" \
1503 -o "$target_cpu" = "sparc64" \
1504 -o "$target_cpu" = "sparc32plus"; then
158142c2
FB
1505 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1506 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1507fi
e5fe0c52
PB
1508if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1509 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1510 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1511fi
bd0c5661
PB
1512if test "$target_user_only" = "yes" \
1513 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1514 echo "#define USE_NPTL 1" >> $config_h
1515fi
cb33da57
BS
1516# 32 bit ELF loader in addition to native 64 bit loader?
1517if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1518 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1519 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1520fi
5b0753e0 1521
15d9ca0f
TS
1522test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1523
97a847bc 1524done # for target in $targets
7d13299d
FB
1525
1526# build tree in object directory if source path is different from current one
1527if test "$source_path_used" = "yes" ; then
49ecc3fa 1528 DIRS="tests tests/cris slirp audio"
7d13299d 1529 FILES="Makefile tests/Makefile"
e7daa605 1530 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
e1ffb0f1 1531 FILES="$FILES tests/test-mmap.c"
7d13299d
FB
1532 for dir in $DIRS ; do
1533 mkdir -p $dir
1534 done
ec530c81 1535 # remove the link and recreate it, as not all "ln -sf" overwrite the link
7d13299d 1536 for f in $FILES ; do
ec530c81
FB
1537 rm -f $f
1538 ln -s $source_path/$f $f
7d13299d
FB
1539 done
1540fi
7d13299d 1541
97a847bc 1542rm -f $TMPO $TMPC $TMPE $TMPS