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