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