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