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