]> git.proxmox.com Git - mirror_qemu.git/blame - configure
Fix whitespace damage in compatfd
[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
997306fc 485if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
cd01b4a3 486 AIOLIBS=
997306fc
AL
487elif [ "$bsd" = "yes" ]; then
488 AIOLIBS="-lpthread"
cd01b4a3
AL
489else
490 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
491 AIOLIBS="-lrt -lpthread"
67b915a5
FB
492fi
493
5fafdf24 494# Check for gcc4, error if pre-gcc4
328a4240
PB
495if test "$check_gcc" = "yes" ; then
496 cat > $TMPC <<EOF
497#if __GNUC__ < 4
498#error gcc3
499#endif
500int main(){return 0;}
501EOF
db7287ed 502 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
328a4240
PB
503 echo "WARNING: \"$cc\" looks like gcc 4.x"
504 found_compat_cc="no"
505 if test "$gcc3_search" = "yes" ; then
506 echo "Looking for gcc 3.x"
507 for compat_cc in $gcc3_list ; do
d4af3de2 508 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
328a4240 509 echo "Found \"$compat_cc\""
1124426a 510 cc="$cross_prefix$compat_cc"
328a4240
PB
511 found_compat_cc="yes"
512 break
513 fi
514 done
515 if test "$found_compat_cc" = "no" ; then
516 echo "gcc 3.x not found!"
517 fi
518 fi
519 if test "$found_compat_cc" = "no" ; then
520 echo "QEMU is known to have problems when compiled with gcc 4.x"
521 echo "It is recommended that you use gcc 3.x to build QEMU"
522 echo "To use this compiler anyway, configure with --disable-gcc-check"
523 exit 1;
524 fi
525 fi
526fi
527
ec530c81
FB
528#
529# Solaris specific configure tool chain decisions
530#
531if test "$solaris" = "yes" ; then
532 #
533 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
534 # override the check with --disable-gcc-check
5fafdf24 535 #
ec530c81
FB
536 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
537 solgcc=`which $cc`
538 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
539 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
540 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
541 echo "or get the latest patch from SunSolve for gcc"
542 exit 1
543 fi
544 fi
545 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
546 if test -z "$solinst" ; then
547 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
548 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
549 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
550 exit 1
551 fi
552 if test "$solinst" = "/usr/sbin/install" ; then
553 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
554 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
555 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
556 exit 1
557 fi
ec530c81
FB
558 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
559 if test -z "$sol_ar" ; then
560 echo "Error: No path includes ar"
561 if test -f /usr/ccs/bin/ar ; then
562 echo "Add /usr/ccs/bin to your path and rerun configure"
563 fi
564 exit 1
565 fi
5fafdf24 566fi
ec530c81
FB
567
568
5327cf48
FB
569if test -z "$target_list" ; then
570# these targets are portable
0a8e90f4 571 if [ "$softmmu" = "yes" ] ; then
2408a527
AJ
572 target_list="\
573i386-softmmu \
574x86_64-softmmu \
575arm-softmmu \
576cris-softmmu \
577m68k-softmmu \
578mips-softmmu \
579mipsel-softmmu \
580mips64-softmmu \
581mips64el-softmmu \
582ppc-softmmu \
583ppcemb-softmmu \
584ppc64-softmmu \
585sh4-softmmu \
586sh4eb-softmmu \
587sparc-softmmu \
588"
0a8e90f4 589 fi
5327cf48 590# the following are Linux specific
831b7825 591 if [ "$linux_user" = "yes" ] ; then
2408a527
AJ
592 target_list="${target_list}\
593i386-linux-user \
594x86_64-linux-user \
595alpha-linux-user \
596arm-linux-user \
597armeb-linux-user \
598cris-linux-user \
599m68k-linux-user \
600mips-linux-user \
601mipsel-linux-user \
602ppc-linux-user \
603ppc64-linux-user \
604ppc64abi32-linux-user \
605sh4-linux-user \
606sh4eb-linux-user \
607sparc-linux-user \
608sparc64-linux-user \
609sparc32plus-linux-user \
610"
831b7825
TS
611 fi
612# the following are Darwin specific
613 if [ "$darwin_user" = "yes" ] ; then
2408a527 614 target_list="$target_list i386-darwin-user ppc-darwin-user"
5327cf48 615 fi
6e20a45f 616else
b1a550a0 617 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
5327cf48 618fi
0a8e90f4
PB
619if test -z "$target_list" ; then
620 echo "No targets enabled"
621 exit 1
622fi
5327cf48 623
7d13299d
FB
624if test -z "$cross_prefix" ; then
625
626# ---
627# big/little endian test
628cat > $TMPC << EOF
629#include <inttypes.h>
630int main(int argc, char ** argv){
1d14ffa9
FB
631 volatile uint32_t i=0x01234567;
632 return (*((uint8_t*)(&i))) == 0x67;
7d13299d
FB
633}
634EOF
635
db7287ed 636if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
7d13299d
FB
637$TMPE && bigendian="yes"
638else
639echo big/little test failed
640fi
641
642else
643
644# if cross compiling, cannot launch a program, so make a static guess
0938cda5 645if test "$cpu" = "armv4b" \
f54b3f92 646 -o "$cpu" = "hppa" \
0938cda5
AJ
647 -o "$cpu" = "m68k" \
648 -o "$cpu" = "mips" \
649 -o "$cpu" = "mips64" \
650 -o "$cpu" = "powerpc" \
651 -o "$cpu" = "s390" \
652 -o "$cpu" = "sparc" \
653 -o "$cpu" = "sparc64"; then
7d13299d
FB
654 bigendian="yes"
655fi
656
657fi
658
b6853697
FB
659# host long bits test
660hostlongbits="32"
0938cda5
AJ
661if test "$cpu" = "x86_64" \
662 -o "$cpu" = "alpha" \
663 -o "$cpu" = "ia64" \
664 -o "$cpu" = "sparc64"; then
b6853697
FB
665 hostlongbits="64"
666fi
667
810260a8 668# ppc specific hostlongbits selection
669if test "$cpu" = "powerpc" ; then
670 cat > $TMPC <<EOF
671int main(void){return sizeof(long);}
672EOF
673
674 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
675 $TMPE
676 case $? in
677 4) hostlongbits="32";;
678 8) hostlongbits="64";;
ba69a08a 679 *) echo "Couldn't determine bits per long value"; exit 1;;
810260a8 680 esac
681 else
682 echo hostlongbits test failed
ba69a08a 683 exit 1
810260a8 684 fi
685fi
686
e8cd23de 687# check gcc options support
04369ff2
FB
688cat > $TMPC <<EOF
689int main(void) {
04369ff2
FB
690}
691EOF
692
bd0c5661
PB
693# Check host NPTL support
694cat > $TMPC <<EOF
695#include <sched.h>
30813cea 696#include <linux/futex.h>
bd0c5661
PB
697void foo()
698{
699#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
700#error bork
701#endif
702}
703EOF
704
705if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
706 :
707else
708 nptl="no"
709fi
710
11d9f695
FB
711##########################################
712# SDL probe
713
714sdl_too_old=no
715
716if test -z "$sdl" ; then
069b0bda
TS
717 sdl_config="sdl-config"
718 sdl=no
719 sdl_static=no
720
11d9f695
FB
721cat > $TMPC << EOF
722#include <SDL.h>
723#undef main /* We don't want SDL to override our main() */
724int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
725EOF
cd01b4a3
AL
726 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
727 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
728 if test "$_sdlversion" -lt 121 ; then
729 sdl_too_old=yes
730 else
731 if test "$cocoa" = "no" ; then
732 sdl=yes
069b0bda 733 fi
cd01b4a3 734 fi
11d9f695 735
cd01b4a3
AL
736 # static link with sdl ?
737 if test "$sdl" = "yes" ; then
738 aa="no"
739 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
740 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
741 if [ "$aa" = "yes" ] ; then
742 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
743 fi
744
745 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
746 sdl_static=yes
747 fi
748 fi # static link
749 fi # sdl compile test
fd677642 750else
069b0bda
TS
751 # Make sure to disable cocoa if sdl was set
752 if test "$sdl" = "yes" ; then
753 cocoa="no"
c2de5c91 754 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
069b0bda 755 fi
a6e022ad 756fi # -z $sdl
11d9f695 757
8d5d2d4c
TS
758##########################################
759# VNC TLS detection
760if test "$vnc_tls" = "yes" ; then
ae6b5e5a
AL
761cat > $TMPC <<EOF
762#include <gnutls/gnutls.h>
763int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
764EOF
765 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
766 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
767 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
768 $vnc_tls_libs 2> /dev/null ; then
769 :
770 else
771 vnc_tls="no"
772 fi
8d5d2d4c
TS
773fi
774
8a16d273
TS
775##########################################
776# vde libraries probe
777if test "$vde" = "yes" ; then
778 cat > $TMPC << EOF
779#include <libvdeplug.h>
4a7f0e06
PB
780int main(void)
781{
782 struct vde_open_args a = {0, 0, 0};
783 vde_open("", "", &a);
784 return 0;
785}
8a16d273 786EOF
4a7f0e06 787 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
8a16d273
TS
788 :
789 else
e0e6c8c0 790 vde="no"
8a16d273
TS
791 fi
792fi
793
8f28f3fb 794##########################################
c2de5c91 795# Sound support libraries probe
8f28f3fb 796
c2de5c91 797audio_drv_probe()
798{
799 drv=$1
800 hdr=$2
801 lib=$3
802 exp=$4
803 cfl=$5
804 cat > $TMPC << EOF
805#include <$hdr>
806int main(void) { $exp }
8f28f3fb 807EOF
c2de5c91 808 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
809 :
810 else
811 echo
812 echo "Error: $drv check failed"
813 echo "Make sure to have the $drv libs and headers installed."
814 echo
815 exit 1
816 fi
817}
818
2fa7d3bf 819audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
c2de5c91 820for drv in $audio_drv_list; do
821 case $drv in
822 alsa)
823 audio_drv_probe $drv alsa/asoundlib.h -lasound \
824 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
825 ;;
826
827 fmod)
828 if test -z $fmod_lib || test -z $fmod_inc; then
829 echo
830 echo "Error: You must specify path to FMOD library and headers"
831 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
832 echo
833 exit 1
834 fi
835 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
836 ;;
837
838 esd)
839 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
840 ;;
b8e59f18 841
842 pa)
843 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
844 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
845 ;;
846
2f6a1ab0
BS
847 oss|sdl|core|wav|dsound)
848 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
849 ;;
850
e4c63a6a 851 *)
1c9b2a52 852 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
e4c63a6a 853 echo
854 echo "Error: Unknown driver '$drv' selected"
855 echo "Possible drivers are: $audio_possible_drivers"
856 echo
857 exit 1
858 }
859 ;;
c2de5c91 860 esac
861done
8f28f3fb 862
2e4d9fb1
AJ
863##########################################
864# BrlAPI probe
865
866if test -z "$brlapi" ; then
867 brlapi=no
868cat > $TMPC << EOF
869#include <brlapi.h>
870int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
871EOF
a40e56d5 872 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
2e4d9fb1
AJ
873 brlapi=yes
874 fi # brlapi compile test
875fi # -z $brlapi
876
4d3b6f6e
AZ
877##########################################
878# curses probe
879
880if test "$curses" = "yes" ; then
881 curses=no
882 cat > $TMPC << EOF
883#include <curses.h>
884int main(void) { return curses_version(); }
885EOF
af896aaa 886 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
4d3b6f6e
AZ
887 curses=yes
888 fi
889fi # test "$curses"
890
414f0dab
BS
891##########################################
892# AIO probe
893if test "$aio" = "yes" ; then
894 aio=no
895 cat > $TMPC << EOF
896#include <aio.h>
897int main(void) { return aio_write(NULL); }
898EOF
899 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
900 aio=yes
901 fi
902fi
903
cc8ae6de 904# Check if tools are available to build documentation.
6c591867
TS
905if [ -x "`which texi2html 2>/dev/null`" ] && \
906 [ -x "`which pod2man 2>/dev/null`" ]; then
cc8ae6de
PB
907 build_docs="yes"
908fi
909
11d9f695 910if test "$mingw32" = "yes" ; then
308c3593
PB
911 if test -z "$prefix" ; then
912 prefix="/c/Program Files/Qemu"
913 fi
914 mansuffix=""
915 datasuffix=""
916 docsuffix=""
917 binsuffix=""
11d9f695 918else
308c3593
PB
919 if test -z "$prefix" ; then
920 prefix="/usr/local"
921 fi
922 mansuffix="/share/man"
923 datasuffix="/share/qemu"
924 docsuffix="/share/doc/qemu"
925 binsuffix="/bin"
11d9f695 926fi
5a67135a 927
43ce4dfe 928echo "Install prefix $prefix"
308c3593
PB
929echo "BIOS directory $prefix$datasuffix"
930echo "binary directory $prefix$binsuffix"
11d9f695 931if test "$mingw32" = "no" ; then
308c3593 932echo "Manual directory $prefix$mansuffix"
43ce4dfe 933echo "ELF interp prefix $interp_prefix"
11d9f695 934fi
5a67135a 935echo "Source path $source_path"
43ce4dfe 936echo "C compiler $cc"
83469015 937echo "Host C compiler $host_cc"
db7287ed 938echo "ARCH_CFLAGS $ARCH_CFLAGS"
43ce4dfe 939echo "make $make"
6a882643 940echo "install $install"
43ce4dfe 941echo "host CPU $cpu"
de83cd02 942echo "host big endian $bigendian"
97a847bc 943echo "target list $target_list"
43ce4dfe 944echo "gprof enabled $gprof"
05c2a3e7 945echo "profiler $profiler"
43ce4dfe 946echo "static build $static"
85aa5189 947echo "-Werror enabled $werror"
5b0753e0
FB
948if test "$darwin" = "yes" ; then
949 echo "Cocoa support $cocoa"
950fi
97a847bc 951echo "SDL support $sdl"
e4afee97
FB
952if test "$sdl" != "no" ; then
953 echo "SDL static link $sdl_static"
954fi
4d3b6f6e 955echo "curses support $curses"
67b915a5 956echo "mingw32 support $mingw32"
0c58ac1c 957echo "Audio drivers $audio_drv_list"
958echo "Extra audio cards $audio_card_list"
8ff9cbf7 959echo "Mixer emulation $mixemu"
8d5d2d4c
TS
960echo "VNC TLS support $vnc_tls"
961if test "$vnc_tls" = "yes" ; then
962 echo " TLS CFLAGS $vnc_tls_cflags"
963 echo " TLS LIBS $vnc_tls_libs"
964fi
3142255c
BS
965if test -n "$sparc_cpu"; then
966 echo "Target Sparc Arch $sparc_cpu"
967fi
07f4ddbf 968echo "kqemu support $kqemu"
2e4d9fb1 969echo "brlapi support $brlapi"
cc8ae6de 970echo "Documentation $build_docs"
c5937220
PB
971[ ! -z "$uname_release" ] && \
972echo "uname -r $uname_release"
bd0c5661 973echo "NPTL support $nptl"
8a16d273 974echo "vde support $vde"
414f0dab 975echo "AIO support $aio"
67b915a5 976
97a847bc 977if test $sdl_too_old = "yes"; then
24b55b96 978echo "-> Your SDL version is too old - please upgrade to have SDL support"
7c1f25b4 979fi
20b40c6a
TS
980if [ -s /tmp/qemu-$$-sdl-config.log ]; then
981 echo "The error log from compiling the libSDL test is: "
982 cat /tmp/qemu-$$-sdl-config.log
983fi
984rm -f /tmp/qemu-$$-sdl-config.log
24b55b96
FB
985#if test "$sdl_static" = "no"; then
986# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
987#fi
97a847bc
FB
988config_mak="config-host.mak"
989config_h="config-host.h"
7d13299d 990
7c1f25b4 991#echo "Creating $config_mak and $config_h"
7d13299d 992
15d9ca0f
TS
993test -f $config_h && mv $config_h ${config_h}~
994
97a847bc 995echo "# Automatically generated by configure - do not modify" > $config_mak
29517134 996echo "# Configured with: $0 $@" >> $config_mak
97a847bc 997echo "/* Automatically generated by configure - do not modify */" > $config_h
7d13299d 998
97a847bc 999echo "prefix=$prefix" >> $config_mak
308c3593
PB
1000echo "bindir=\${prefix}$binsuffix" >> $config_mak
1001echo "mandir=\${prefix}$mansuffix" >> $config_mak
1002echo "datadir=\${prefix}$datasuffix" >> $config_mak
4ad5b06d 1003echo "docdir=\${prefix}$docsuffix" >> $config_mak
308c3593 1004echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
97a847bc 1005echo "MAKE=$make" >> $config_mak
6a882643 1006echo "INSTALL=$install" >> $config_mak
97a847bc 1007echo "CC=$cc" >> $config_mak
97a847bc
FB
1008echo "HOST_CC=$host_cc" >> $config_mak
1009echo "AR=$ar" >> $config_mak
1010echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
40293e58
FB
1011# XXX: only use CFLAGS and LDFLAGS ?
1012# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1013# compilation of dyngen tool (useful for win32 build on Linux host)
6f30fa85 1014echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
3142255c
BS
1015echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1016echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1017echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
97a847bc
FB
1018echo "CFLAGS=$CFLAGS" >> $config_mak
1019echo "LDFLAGS=$LDFLAGS" >> $config_mak
67b915a5 1020echo "EXESUF=$EXESUF" >> $config_mak
70956b77 1021echo "AIOLIBS=$AIOLIBS" >> $config_mak
2408a527
AJ
1022case "$cpu" in
1023 i386)
1024 echo "ARCH=i386" >> $config_mak
1025 echo "#define HOST_I386 1" >> $config_h
1026 ;;
1027 x86_64)
1028 echo "ARCH=x86_64" >> $config_mak
1029 echo "#define HOST_X86_64 1" >> $config_h
1030 ;;
1031 alpha)
1032 echo "ARCH=alpha" >> $config_mak
1033 echo "#define HOST_ALPHA 1" >> $config_h
1034 ;;
1035 armv4b)
1036 echo "ARCH=arm" >> $config_mak
1037 echo "#define HOST_ARM 1" >> $config_h
1038 ;;
1039 armv4l)
1040 echo "ARCH=arm" >> $config_mak
1041 echo "#define HOST_ARM 1" >> $config_h
1042 ;;
1043 cris)
1044 echo "ARCH=cris" >> $config_mak
1045 echo "#define HOST_CRIS 1" >> $config_h
1046 ;;
1047 hppa)
1048 echo "ARCH=hppa" >> $config_mak
1049 echo "#define HOST_HPPA 1" >> $config_h
1050 ;;
1051 ia64)
1052 echo "ARCH=ia64" >> $config_mak
1053 echo "#define HOST_IA64 1" >> $config_h
1054 ;;
1055 m68k)
1056 echo "ARCH=m68k" >> $config_mak
1057 echo "#define HOST_M68K 1" >> $config_h
1058 ;;
1059 mips)
1060 echo "ARCH=mips" >> $config_mak
1061 echo "#define HOST_MIPS 1" >> $config_h
1062 ;;
1063 mips64)
1064 echo "ARCH=mips64" >> $config_mak
1065 echo "#define HOST_MIPS64 1" >> $config_h
1066 ;;
1067 powerpc)
810260a8 1068 if test "$hostlongbits" = "32"; then
1069 echo "ARCH=ppc" >> $config_mak
1070 echo "#define HOST_PPC 1" >> $config_h
1071 else
1072 echo "ARCH=ppc64" >> $config_mak
1073 echo "#define HOST_PPC64 1" >> $config_h
1074 fi
2408a527
AJ
1075 ;;
1076 s390)
1077 echo "ARCH=s390" >> $config_mak
1078 echo "#define HOST_S390 1" >> $config_h
1079 ;;
1080 sparc)
1081 echo "ARCH=sparc" >> $config_mak
1082 echo "#define HOST_SPARC 1" >> $config_h
1083 ;;
1084 sparc64)
1085 echo "ARCH=sparc64" >> $config_mak
1086 echo "#define HOST_SPARC64 1" >> $config_h
1087 ;;
1088 *)
1089 echo "Unsupported CPU = $cpu"
1090 exit 1
1091 ;;
1092esac
7d13299d 1093if test "$bigendian" = "yes" ; then
97a847bc
FB
1094 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1095 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1096fi
b6853697 1097echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
67b915a5
FB
1098if test "$mingw32" = "yes" ; then
1099 echo "CONFIG_WIN32=yes" >> $config_mak
11d9f695 1100 echo "#define CONFIG_WIN32 1" >> $config_h
210fa556
PB
1101else
1102 cat > $TMPC << EOF
1103#include <byteswap.h>
1104int main(void) { return bswap_32(0); }
1105EOF
db7287ed 1106 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
210fa556
PB
1107 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1108 fi
67b915a5 1109fi
128ab2ff
BS
1110
1111if [ "$openbsd" = "yes" ] ; then
1112 echo "#define ENOTSUP 4096" >> $config_h
1113fi
1114
83fb7adf
FB
1115if test "$darwin" = "yes" ; then
1116 echo "CONFIG_DARWIN=yes" >> $config_mak
1117 echo "#define CONFIG_DARWIN 1" >> $config_h
1118fi
ec530c81
FB
1119if test "$solaris" = "yes" ; then
1120 echo "CONFIG_SOLARIS=yes" >> $config_mak
38cfa06c 1121 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
0475a5ca
TS
1122 if test "$needs_libsunmath" = "yes" ; then
1123 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1124 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1125 fi
ec530c81 1126fi
3142255c
BS
1127if test -n "$sparc_cpu"; then
1128 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1129 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1130fi
67b915a5
FB
1131if test "$gdbstub" = "yes" ; then
1132 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1133 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1134fi
97a847bc
FB
1135if test "$gprof" = "yes" ; then
1136 echo "TARGET_GPROF=yes" >> $config_mak
1137 echo "#define HAVE_GPROF 1" >> $config_h
1138fi
1139if test "$static" = "yes" ; then
1140 echo "CONFIG_STATIC=yes" >> $config_mak
50863472 1141 echo "#define CONFIG_STATIC 1" >> $config_h
7d13299d 1142fi
05c2a3e7
FB
1143if test $profiler = "yes" ; then
1144 echo "#define CONFIG_PROFILER 1" >> $config_h
1145fi
c20709aa
FB
1146if test "$slirp" = "yes" ; then
1147 echo "CONFIG_SLIRP=yes" >> $config_mak
1148 echo "#define CONFIG_SLIRP 1" >> $config_h
1149fi
8a16d273
TS
1150if test "$vde" = "yes" ; then
1151 echo "CONFIG_VDE=yes" >> $config_mak
1152 echo "#define CONFIG_VDE 1" >> $config_h
1153 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1154fi
0c58ac1c 1155for card in $audio_card_list; do
f6e5889e 1156 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
0c58ac1c 1157 echo "$def=yes" >> $config_mak
1158 echo "#define $def 1" >> $config_h
1159done
1160echo "#define AUDIO_DRIVERS \\" >> $config_h
1161for drv in $audio_drv_list; do
1162 echo " &${drv}_audio_driver, \\" >>$config_h
f6e5889e 1163 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
0c58ac1c 1164 echo "$def=yes" >> $config_mak
923e4521 1165 if test "$drv" = "fmod"; then
0c58ac1c 1166 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1167 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
2f6a1ab0
BS
1168 elif test "$drv" = "oss"; then
1169 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
0c58ac1c 1170 fi
1171done
1172echo "" >>$config_h
8ff9cbf7 1173if test "$mixemu" = "yes" ; then
1174 echo "CONFIG_MIXEMU=yes" >> $config_mak
1175 echo "#define CONFIG_MIXEMU 1" >> $config_h
1176fi
8d5d2d4c
TS
1177if test "$vnc_tls" = "yes" ; then
1178 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1179 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1180 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1181 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1182fi
b1a550a0
PB
1183qemu_version=`head $source_path/VERSION`
1184echo "VERSION=$qemu_version" >>$config_mak
d4b8f039 1185echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
97a847bc
FB
1186
1187echo "SRC_PATH=$source_path" >> $config_mak
ad064840
PB
1188if [ "$source_path_used" = "yes" ]; then
1189 echo "VPATH=$source_path" >> $config_mak
1190fi
97a847bc 1191echo "TARGET_DIRS=$target_list" >> $config_mak
cc8ae6de
PB
1192if [ "$build_docs" = "yes" ] ; then
1193 echo "BUILD_DOCS=yes" >> $config_mak
1194fi
49ecc3fa
FB
1195if test "$static" = "yes"; then
1196 sdl1=$sdl_static
1197else
1198 sdl1=$sdl
1199fi
1200if test "$sdl1" = "yes" ; then
1201 echo "#define CONFIG_SDL 1" >> $config_h
1202 echo "CONFIG_SDL=yes" >> $config_mak
1203 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1204 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1205 else
1206 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1207 fi
1208 if [ "${aa}" = "yes" ] ; then
1209 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1210 else
1211 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1212 fi
1213fi
1214if test "$cocoa" = "yes" ; then
4d3b6f6e
AZ
1215 echo "#define CONFIG_COCOA 1" >> $config_h
1216 echo "CONFIG_COCOA=yes" >> $config_mak
1217fi
1218if test "$curses" = "yes" ; then
1219 echo "#define CONFIG_CURSES 1" >> $config_h
1220 echo "CONFIG_CURSES=yes" >> $config_mak
1221 echo "CURSES_LIBS=-lcurses" >> $config_mak
49ecc3fa 1222fi
2e4d9fb1
AJ
1223if test "$brlapi" = "yes" ; then
1224 echo "CONFIG_BRLAPI=yes" >> $config_mak
1225 echo "#define CONFIG_BRLAPI 1" >> $config_h
1226 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1227fi
414f0dab
BS
1228if test "$aio" = "yes" ; then
1229 echo "#define CONFIG_AIO 1" >> $config_h
a3392f9b 1230 echo "CONFIG_AIO=yes" >> $config_mak
414f0dab 1231fi
97a847bc 1232
83fb7adf 1233# XXX: suppress that
7d3505c5 1234if [ "$bsd" = "yes" ] ; then
43003046 1235 echo "#define O_LARGEFILE 0" >> $config_h
43003046 1236 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
7d3505c5
FB
1237 echo "#define _BSD 1" >> $config_h
1238fi
1239
c5937220
PB
1240echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1241
c39e3338
PB
1242tools=
1243if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1244 tools="qemu-img\$(EXESUF) $tools"
7a5ca864
FB
1245 if [ "$linux" = "yes" ] ; then
1246 tools="qemu-nbd\$(EXESUF) $tools"
1247 fi
c39e3338
PB
1248fi
1249echo "TOOLS=$tools" >> $config_mak
1250
15d9ca0f
TS
1251test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1252
1d14ffa9 1253for target in $target_list; do
97a847bc
FB
1254target_dir="$target"
1255config_mak=$target_dir/config.mak
1256config_h=$target_dir/config.h
1257target_cpu=`echo $target | cut -d '-' -f 1`
1258target_bigendian="no"
808c4954 1259[ "$target_cpu" = "armeb" ] && target_bigendian=yes
0938cda5
AJ
1260[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1261[ "$target_cpu" = "mips" ] && target_bigendian=yes
1262[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1263[ "$target_cpu" = "mips64" ] && target_bigendian=yes
67867308 1264[ "$target_cpu" = "ppc" ] && target_bigendian=yes
d4082e95 1265[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
22f8a8b3 1266[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
e85e7c6e 1267[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
908f52b0 1268[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
0938cda5
AJ
1269[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1270[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1271[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
97a847bc 1272target_softmmu="no"
997344f3 1273target_user_only="no"
831b7825 1274target_linux_user="no"
831b7825 1275target_darwin_user="no"
9e407a85
PB
1276case "$target" in
1277 ${target_cpu}-softmmu)
1278 target_softmmu="yes"
1279 ;;
1280 ${target_cpu}-linux-user)
1281 target_user_only="yes"
1282 target_linux_user="yes"
1283 ;;
1284 ${target_cpu}-darwin-user)
1285 target_user_only="yes"
1286 target_darwin_user="yes"
1287 ;;
1288 *)
1289 echo "ERROR: Target '$target' not recognised"
1290 exit 1
1291 ;;
1292esac
831b7825 1293
97ccc689 1294if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1d14ffa9 1295 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
97ccc689 1296 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
9c038506 1297 echo "To build QEMU without graphical output configure with --disable-gfx-check"
4d3b6f6e
AZ
1298 echo "Note that this will disable all output from the virtual graphics card"
1299 echo "except through VNC or curses."
97ccc689
FB
1300 exit 1;
1301fi
1302
7c1f25b4 1303#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
97a847bc 1304
15d9ca0f
TS
1305test -f $config_h && mv $config_h ${config_h}~
1306
97a847bc 1307mkdir -p $target_dir
158142c2 1308mkdir -p $target_dir/fpu
57fec1fe 1309mkdir -p $target_dir/tcg
831b7825 1310if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
69de927c
FB
1311 mkdir -p $target_dir/nwfpe
1312fi
1313
ec530c81
FB
1314#
1315# don't use ln -sf as not all "ln -sf" over write the file/link
1316#
1317rm -f $target_dir/Makefile
1318ln -s $source_path/Makefile.target $target_dir/Makefile
1319
97a847bc
FB
1320
1321echo "# Automatically generated by configure - do not modify" > $config_mak
1322echo "/* Automatically generated by configure - do not modify */" > $config_h
1323
de83cd02 1324
97a847bc
FB
1325echo "include ../config-host.mak" >> $config_mak
1326echo "#include \"../config-host.h\"" >> $config_h
1e43adfc 1327
e5fe0c52 1328bflt="no"
cb33da57 1329elfload32="no"
bd0c5661 1330target_nptl="no"
1e43adfc
FB
1331interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1332echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
97a847bc 1333
2408a527
AJ
1334case "$target_cpu" in
1335 i386)
1336 echo "TARGET_ARCH=i386" >> $config_mak
1337 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1338 echo "#define TARGET_I386 1" >> $config_h
da260249 1339 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
2408a527
AJ
1340 then
1341 echo "#define USE_KQEMU 1" >> $config_h
1342 fi
f2bf094e 1343 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
11d1fdb0 1344 if test -n "$gcc3minver" && test $gcc3minver -gt 3
f2bf094e
AJ
1345 then
1346 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1347 else
1348 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1349 fi
2408a527
AJ
1350 ;;
1351 x86_64)
1352 echo "TARGET_ARCH=x86_64" >> $config_mak
1353 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1354 echo "#define TARGET_I386 1" >> $config_h
1355 echo "#define TARGET_X86_64 1" >> $config_h
1356 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1357 then
1358 echo "#define USE_KQEMU 1" >> $config_h
1359 fi
1360 ;;
1361 alpha)
1362 echo "TARGET_ARCH=alpha" >> $config_mak
bf6247fb 1363 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1364 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1365 echo "#define TARGET_ALPHA 1" >> $config_h
bf6247fb 1366 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1367 ;;
1368 arm|armeb)
1369 echo "TARGET_ARCH=arm" >> $config_mak
2408a527
AJ
1370 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1371 echo "#define TARGET_ARM 1" >> $config_h
2408a527 1372 bflt="yes"
bd0c5661 1373 target_nptl="yes"
2408a527
AJ
1374 ;;
1375 cris)
1376 echo "TARGET_ARCH=cris" >> $config_mak
1377 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1378 echo "#define TARGET_CRIS 1" >> $config_h
2408a527
AJ
1379 ;;
1380 m68k)
1381 echo "TARGET_ARCH=m68k" >> $config_mak
1382 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1383 echo "#define TARGET_M68K 1" >> $config_h
1384 bflt="yes"
1385 ;;
1386 mips|mipsel)
1387 echo "TARGET_ARCH=mips" >> $config_mak
1388 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1389 echo "#define TARGET_MIPS 1" >> $config_h
1390 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1391 ;;
1392 mipsn32|mipsn32el)
1393 echo "TARGET_ARCH=mipsn32" >> $config_mak
1394 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1395 echo "#define TARGET_MIPS 1" >> $config_h
1396 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1397 ;;
1398 mips64|mips64el)
1399 echo "TARGET_ARCH=mips64" >> $config_mak
1400 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1401 echo "#define TARGET_MIPS 1" >> $config_h
1402 echo "#define TARGET_MIPS64 1" >> $config_h
1403 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1404 ;;
1405 ppc)
1406 echo "TARGET_ARCH=ppc" >> $config_mak
bf6247fb 1407 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1408 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1409 echo "#define TARGET_PPC 1" >> $config_h
bf6247fb 1410 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1411 ;;
1412 ppcemb)
1413 echo "TARGET_ARCH=ppcemb" >> $config_mak
1414 echo "TARGET_ABI_DIR=ppc" >> $config_mak
bf6247fb 1415 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1416 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1417 echo "#define TARGET_PPC 1" >> $config_h
1418 echo "#define TARGET_PPCEMB 1" >> $config_h
ec5b78cd 1419 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1420 ;;
1421 ppc64)
1422 echo "TARGET_ARCH=ppc64" >> $config_mak
1423 echo "TARGET_ABI_DIR=ppc" >> $config_mak
bf6247fb 1424 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1425 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1426 echo "#define TARGET_PPC 1" >> $config_h
1427 echo "#define TARGET_PPC64 1" >> $config_h
bf6247fb 1428 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1429 ;;
1430 ppc64abi32)
1431 echo "TARGET_ARCH=ppc64" >> $config_mak
1432 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1433 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
bf6247fb 1434 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1435 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1436 echo "#define TARGET_PPC 1" >> $config_h
1437 echo "#define TARGET_PPC64 1" >> $config_h
1438 echo "#define TARGET_ABI32 1" >> $config_h
bf6247fb 1439 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1440 ;;
1441 sh4|sh4eb)
1442 echo "TARGET_ARCH=sh4" >> $config_mak
1443 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1444 echo "#define TARGET_SH4 1" >> $config_h
1445 bflt="yes"
0b6d3ae0 1446 target_nptl="yes"
2408a527
AJ
1447 ;;
1448 sparc)
1449 echo "TARGET_ARCH=sparc" >> $config_mak
1450 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1451 echo "#define TARGET_SPARC 1" >> $config_h
1452 ;;
1453 sparc64)
1454 echo "TARGET_ARCH=sparc64" >> $config_mak
1455 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1456 echo "#define TARGET_SPARC 1" >> $config_h
1457 echo "#define TARGET_SPARC64 1" >> $config_h
1458 elfload32="yes"
1459 ;;
1460 sparc32plus)
1461 echo "TARGET_ARCH=sparc64" >> $config_mak
1462 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1463 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1464 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1465 echo "#define TARGET_SPARC 1" >> $config_h
1466 echo "#define TARGET_SPARC64 1" >> $config_h
1467 echo "#define TARGET_ABI32 1" >> $config_h
1468 ;;
1469 *)
1470 echo "Unsupported target CPU"
1471 exit 1
1472 ;;
1473esac
de83cd02 1474if test "$target_bigendian" = "yes" ; then
97a847bc
FB
1475 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1476 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
de83cd02 1477fi
97a847bc
FB
1478if test "$target_softmmu" = "yes" ; then
1479 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1480 echo "#define CONFIG_SOFTMMU 1" >> $config_h
43ce4dfe 1481fi
997344f3
FB
1482if test "$target_user_only" = "yes" ; then
1483 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1484 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1485fi
831b7825
TS
1486if test "$target_linux_user" = "yes" ; then
1487 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1488 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1489fi
1490if test "$target_darwin_user" = "yes" ; then
1491 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1492 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1493fi
97a847bc 1494
0938cda5
AJ
1495if test "$target_cpu" = "arm" \
1496 -o "$target_cpu" = "armeb" \
1497 -o "$target_cpu" = "m68k" \
1498 -o "$target_cpu" = "mips" \
1499 -o "$target_cpu" = "mipsel" \
1500 -o "$target_cpu" = "mipsn32" \
1501 -o "$target_cpu" = "mipsn32el" \
1502 -o "$target_cpu" = "mips64" \
1503 -o "$target_cpu" = "mips64el" \
1504 -o "$target_cpu" = "sparc" \
1505 -o "$target_cpu" = "sparc64" \
1506 -o "$target_cpu" = "sparc32plus"; then
158142c2
FB
1507 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1508 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1509fi
e5fe0c52
PB
1510if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1511 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1512 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1513fi
bd0c5661
PB
1514if test "$target_user_only" = "yes" \
1515 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1516 echo "#define USE_NPTL 1" >> $config_h
1517fi
cb33da57
BS
1518# 32 bit ELF loader in addition to native 64 bit loader?
1519if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1520 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1521 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1522fi
5b0753e0 1523
15d9ca0f
TS
1524test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1525
97a847bc 1526done # for target in $targets
7d13299d
FB
1527
1528# build tree in object directory if source path is different from current one
1529if test "$source_path_used" = "yes" ; then
49ecc3fa 1530 DIRS="tests tests/cris slirp audio"
7d13299d 1531 FILES="Makefile tests/Makefile"
e7daa605 1532 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
e1ffb0f1 1533 FILES="$FILES tests/test-mmap.c"
7d13299d
FB
1534 for dir in $DIRS ; do
1535 mkdir -p $dir
1536 done
ec530c81 1537 # remove the link and recreate it, as not all "ln -sf" overwrite the link
7d13299d 1538 for f in $FILES ; do
ec530c81
FB
1539 rm -f $f
1540 ln -s $source_path/$f $f
7d13299d
FB
1541 done
1542fi
7d13299d 1543
97a847bc 1544rm -f $TMPO $TMPC $TMPE $TMPS