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