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