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