]> git.proxmox.com Git - qemu.git/blame - configure
linux-user: Fix target_statfs[64] on 64-bit hosts
[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"
b8e59f18 199audio_possible_drivers="oss alsa sdl esd pa"
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 ;;
b8e59f18 770
771 pa)
772 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
773 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
774 ;;
775
c2de5c91 776 esac
777done
8f28f3fb 778
2e4d9fb1
AJ
779##########################################
780# BrlAPI probe
781
782if test -z "$brlapi" ; then
783 brlapi=no
784cat > $TMPC << EOF
785#include <brlapi.h>
786int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
787EOF
a40e56d5 788 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
2e4d9fb1
AJ
789 brlapi=yes
790 fi # brlapi compile test
791fi # -z $brlapi
792
4d3b6f6e
AZ
793##########################################
794# curses probe
795
796if test "$curses" = "yes" ; then
797 curses=no
798 cat > $TMPC << EOF
799#include <curses.h>
800int main(void) { return curses_version(); }
801EOF
af896aaa 802 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
4d3b6f6e
AZ
803 curses=yes
804 fi
805fi # test "$curses"
806
cc8ae6de 807# Check if tools are available to build documentation.
6c591867
TS
808if [ -x "`which texi2html 2>/dev/null`" ] && \
809 [ -x "`which pod2man 2>/dev/null`" ]; then
cc8ae6de
PB
810 build_docs="yes"
811fi
812
11d9f695 813if test "$mingw32" = "yes" ; then
308c3593
PB
814 if test -z "$prefix" ; then
815 prefix="/c/Program Files/Qemu"
816 fi
817 mansuffix=""
818 datasuffix=""
819 docsuffix=""
820 binsuffix=""
11d9f695 821else
308c3593
PB
822 if test -z "$prefix" ; then
823 prefix="/usr/local"
824 fi
825 mansuffix="/share/man"
826 datasuffix="/share/qemu"
827 docsuffix="/share/doc/qemu"
828 binsuffix="/bin"
11d9f695 829fi
5a67135a 830
43ce4dfe 831echo "Install prefix $prefix"
308c3593
PB
832echo "BIOS directory $prefix$datasuffix"
833echo "binary directory $prefix$binsuffix"
11d9f695 834if test "$mingw32" = "no" ; then
308c3593 835echo "Manual directory $prefix$mansuffix"
43ce4dfe 836echo "ELF interp prefix $interp_prefix"
11d9f695 837fi
5a67135a 838echo "Source path $source_path"
43ce4dfe 839echo "C compiler $cc"
83469015 840echo "Host C compiler $host_cc"
db7287ed 841echo "ARCH_CFLAGS $ARCH_CFLAGS"
43ce4dfe 842echo "make $make"
6a882643 843echo "install $install"
43ce4dfe 844echo "host CPU $cpu"
de83cd02 845echo "host big endian $bigendian"
97a847bc 846echo "target list $target_list"
43ce4dfe 847echo "gprof enabled $gprof"
05c2a3e7 848echo "profiler $profiler"
43ce4dfe 849echo "static build $static"
85aa5189 850echo "-Werror enabled $werror"
5b0753e0
FB
851if test "$darwin" = "yes" ; then
852 echo "Cocoa support $cocoa"
853fi
97a847bc 854echo "SDL support $sdl"
e4afee97
FB
855if test "$sdl" != "no" ; then
856 echo "SDL static link $sdl_static"
857fi
4d3b6f6e 858echo "curses support $curses"
67b915a5 859echo "mingw32 support $mingw32"
0c58ac1c 860echo "Audio drivers $audio_drv_list"
861echo "Extra audio cards $audio_card_list"
8ff9cbf7 862echo "Mixer emulation $mixemu"
8d5d2d4c
TS
863echo "VNC TLS support $vnc_tls"
864if test "$vnc_tls" = "yes" ; then
865 echo " TLS CFLAGS $vnc_tls_cflags"
866 echo " TLS LIBS $vnc_tls_libs"
867fi
3142255c
BS
868if test -n "$sparc_cpu"; then
869 echo "Target Sparc Arch $sparc_cpu"
870fi
07f4ddbf 871echo "kqemu support $kqemu"
2e4d9fb1 872echo "brlapi support $brlapi"
cc8ae6de 873echo "Documentation $build_docs"
c5937220
PB
874[ ! -z "$uname_release" ] && \
875echo "uname -r $uname_release"
bd0c5661 876echo "NPTL support $nptl"
67b915a5 877
97a847bc 878if test $sdl_too_old = "yes"; then
24b55b96 879echo "-> Your SDL version is too old - please upgrade to have SDL support"
7c1f25b4 880fi
20b40c6a
TS
881if [ -s /tmp/qemu-$$-sdl-config.log ]; then
882 echo "The error log from compiling the libSDL test is: "
883 cat /tmp/qemu-$$-sdl-config.log
884fi
885rm -f /tmp/qemu-$$-sdl-config.log
24b55b96
FB
886#if test "$sdl_static" = "no"; then
887# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
888#fi
97a847bc
FB
889config_mak="config-host.mak"
890config_h="config-host.h"
7d13299d 891
7c1f25b4 892#echo "Creating $config_mak and $config_h"
7d13299d 893
15d9ca0f
TS
894test -f $config_h && mv $config_h ${config_h}~
895
97a847bc 896echo "# Automatically generated by configure - do not modify" > $config_mak
29517134 897echo "# Configured with: $0 $@" >> $config_mak
97a847bc 898echo "/* Automatically generated by configure - do not modify */" > $config_h
7d13299d 899
97a847bc 900echo "prefix=$prefix" >> $config_mak
308c3593
PB
901echo "bindir=\${prefix}$binsuffix" >> $config_mak
902echo "mandir=\${prefix}$mansuffix" >> $config_mak
903echo "datadir=\${prefix}$datasuffix" >> $config_mak
4ad5b06d 904echo "docdir=\${prefix}$docsuffix" >> $config_mak
308c3593 905echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
97a847bc 906echo "MAKE=$make" >> $config_mak
6a882643 907echo "INSTALL=$install" >> $config_mak
97a847bc 908echo "CC=$cc" >> $config_mak
97a847bc
FB
909echo "HOST_CC=$host_cc" >> $config_mak
910echo "AR=$ar" >> $config_mak
911echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
40293e58
FB
912# XXX: only use CFLAGS and LDFLAGS ?
913# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
914# compilation of dyngen tool (useful for win32 build on Linux host)
6f30fa85 915echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
3142255c
BS
916echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
917echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
918echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
97a847bc
FB
919echo "CFLAGS=$CFLAGS" >> $config_mak
920echo "LDFLAGS=$LDFLAGS" >> $config_mak
67b915a5 921echo "EXESUF=$EXESUF" >> $config_mak
70956b77 922echo "AIOLIBS=$AIOLIBS" >> $config_mak
2408a527
AJ
923case "$cpu" in
924 i386)
925 echo "ARCH=i386" >> $config_mak
926 echo "#define HOST_I386 1" >> $config_h
927 ;;
928 x86_64)
929 echo "ARCH=x86_64" >> $config_mak
930 echo "#define HOST_X86_64 1" >> $config_h
931 ;;
932 alpha)
933 echo "ARCH=alpha" >> $config_mak
934 echo "#define HOST_ALPHA 1" >> $config_h
935 ;;
936 armv4b)
937 echo "ARCH=arm" >> $config_mak
938 echo "#define HOST_ARM 1" >> $config_h
939 ;;
940 armv4l)
941 echo "ARCH=arm" >> $config_mak
942 echo "#define HOST_ARM 1" >> $config_h
943 ;;
944 cris)
945 echo "ARCH=cris" >> $config_mak
946 echo "#define HOST_CRIS 1" >> $config_h
947 ;;
948 hppa)
949 echo "ARCH=hppa" >> $config_mak
950 echo "#define HOST_HPPA 1" >> $config_h
951 ;;
952 ia64)
953 echo "ARCH=ia64" >> $config_mak
954 echo "#define HOST_IA64 1" >> $config_h
955 ;;
956 m68k)
957 echo "ARCH=m68k" >> $config_mak
958 echo "#define HOST_M68K 1" >> $config_h
959 ;;
960 mips)
961 echo "ARCH=mips" >> $config_mak
962 echo "#define HOST_MIPS 1" >> $config_h
963 ;;
964 mips64)
965 echo "ARCH=mips64" >> $config_mak
966 echo "#define HOST_MIPS64 1" >> $config_h
967 ;;
968 powerpc)
969 echo "ARCH=ppc" >> $config_mak
970 echo "#define HOST_PPC 1" >> $config_h
971 ;;
972 s390)
973 echo "ARCH=s390" >> $config_mak
974 echo "#define HOST_S390 1" >> $config_h
975 ;;
976 sparc)
977 echo "ARCH=sparc" >> $config_mak
978 echo "#define HOST_SPARC 1" >> $config_h
979 ;;
980 sparc64)
981 echo "ARCH=sparc64" >> $config_mak
982 echo "#define HOST_SPARC64 1" >> $config_h
983 ;;
984 *)
985 echo "Unsupported CPU = $cpu"
986 exit 1
987 ;;
988esac
7d13299d 989if test "$bigendian" = "yes" ; then
97a847bc
FB
990 echo "WORDS_BIGENDIAN=yes" >> $config_mak
991 echo "#define WORDS_BIGENDIAN 1" >> $config_h
992fi
b6853697 993echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
67b915a5
FB
994if test "$mingw32" = "yes" ; then
995 echo "CONFIG_WIN32=yes" >> $config_mak
11d9f695 996 echo "#define CONFIG_WIN32 1" >> $config_h
210fa556
PB
997else
998 cat > $TMPC << EOF
999#include <byteswap.h>
1000int main(void) { return bswap_32(0); }
1001EOF
db7287ed 1002 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
210fa556
PB
1003 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1004 fi
67b915a5 1005fi
83fb7adf
FB
1006if test "$darwin" = "yes" ; then
1007 echo "CONFIG_DARWIN=yes" >> $config_mak
1008 echo "#define CONFIG_DARWIN 1" >> $config_h
1009fi
ec530c81
FB
1010if test "$solaris" = "yes" ; then
1011 echo "CONFIG_SOLARIS=yes" >> $config_mak
38cfa06c 1012 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
0475a5ca
TS
1013 if test "$needs_libsunmath" = "yes" ; then
1014 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1015 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1016 fi
ec530c81 1017fi
3142255c
BS
1018if test -n "$sparc_cpu"; then
1019 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1020 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1021fi
67b915a5
FB
1022if test "$gdbstub" = "yes" ; then
1023 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1024 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1025fi
97a847bc
FB
1026if test "$gprof" = "yes" ; then
1027 echo "TARGET_GPROF=yes" >> $config_mak
1028 echo "#define HAVE_GPROF 1" >> $config_h
1029fi
1030if test "$static" = "yes" ; then
1031 echo "CONFIG_STATIC=yes" >> $config_mak
50863472 1032 echo "#define CONFIG_STATIC 1" >> $config_h
7d13299d 1033fi
05c2a3e7
FB
1034if test $profiler = "yes" ; then
1035 echo "#define CONFIG_PROFILER 1" >> $config_h
1036fi
c20709aa
FB
1037if test "$slirp" = "yes" ; then
1038 echo "CONFIG_SLIRP=yes" >> $config_mak
1039 echo "#define CONFIG_SLIRP 1" >> $config_h
1040fi
0c58ac1c 1041for card in $audio_card_list; do
f6e5889e 1042 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
0c58ac1c 1043 echo "$def=yes" >> $config_mak
1044 echo "#define $def 1" >> $config_h
1045done
1046echo "#define AUDIO_DRIVERS \\" >> $config_h
1047for drv in $audio_drv_list; do
1048 echo " &${drv}_audio_driver, \\" >>$config_h
f6e5889e 1049 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
0c58ac1c 1050 echo "$def=yes" >> $config_mak
923e4521 1051 if test "$drv" = "fmod"; then
0c58ac1c 1052 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1053 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
1054 fi
1055done
1056echo "" >>$config_h
8ff9cbf7 1057if test "$mixemu" = "yes" ; then
1058 echo "CONFIG_MIXEMU=yes" >> $config_mak
1059 echo "#define CONFIG_MIXEMU 1" >> $config_h
1060fi
8d5d2d4c
TS
1061if test "$vnc_tls" = "yes" ; then
1062 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1063 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1064 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1065 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1066fi
b1a550a0
PB
1067qemu_version=`head $source_path/VERSION`
1068echo "VERSION=$qemu_version" >>$config_mak
d4b8f039 1069echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
97a847bc
FB
1070
1071echo "SRC_PATH=$source_path" >> $config_mak
ad064840
PB
1072if [ "$source_path_used" = "yes" ]; then
1073 echo "VPATH=$source_path" >> $config_mak
1074fi
97a847bc 1075echo "TARGET_DIRS=$target_list" >> $config_mak
cc8ae6de
PB
1076if [ "$build_docs" = "yes" ] ; then
1077 echo "BUILD_DOCS=yes" >> $config_mak
1078fi
49ecc3fa
FB
1079if test "$static" = "yes"; then
1080 sdl1=$sdl_static
1081else
1082 sdl1=$sdl
1083fi
1084if test "$sdl1" = "yes" ; then
1085 echo "#define CONFIG_SDL 1" >> $config_h
1086 echo "CONFIG_SDL=yes" >> $config_mak
1087 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1088 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1089 else
1090 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1091 fi
1092 if [ "${aa}" = "yes" ] ; then
1093 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1094 else
1095 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1096 fi
1097fi
1098if test "$cocoa" = "yes" ; then
4d3b6f6e
AZ
1099 echo "#define CONFIG_COCOA 1" >> $config_h
1100 echo "CONFIG_COCOA=yes" >> $config_mak
1101fi
1102if test "$curses" = "yes" ; then
1103 echo "#define CONFIG_CURSES 1" >> $config_h
1104 echo "CONFIG_CURSES=yes" >> $config_mak
1105 echo "CURSES_LIBS=-lcurses" >> $config_mak
49ecc3fa 1106fi
2e4d9fb1
AJ
1107if test "$brlapi" = "yes" ; then
1108 echo "CONFIG_BRLAPI=yes" >> $config_mak
1109 echo "#define CONFIG_BRLAPI 1" >> $config_h
1110 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1111fi
97a847bc 1112
83fb7adf 1113# XXX: suppress that
7d3505c5 1114if [ "$bsd" = "yes" ] ; then
43003046 1115 echo "#define O_LARGEFILE 0" >> $config_h
43003046 1116 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
7d3505c5
FB
1117 echo "#define _BSD 1" >> $config_h
1118fi
1119
c5937220
PB
1120echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1121
c39e3338
PB
1122tools=
1123if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1124 tools="qemu-img\$(EXESUF) $tools"
7a5ca864
FB
1125 if [ "$linux" = "yes" ] ; then
1126 tools="qemu-nbd\$(EXESUF) $tools"
1127 fi
c39e3338
PB
1128fi
1129echo "TOOLS=$tools" >> $config_mak
1130
15d9ca0f
TS
1131test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1132
1d14ffa9 1133for target in $target_list; do
97a847bc
FB
1134target_dir="$target"
1135config_mak=$target_dir/config.mak
1136config_h=$target_dir/config.h
1137target_cpu=`echo $target | cut -d '-' -f 1`
1138target_bigendian="no"
808c4954 1139[ "$target_cpu" = "armeb" ] && target_bigendian=yes
0938cda5
AJ
1140[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1141[ "$target_cpu" = "mips" ] && target_bigendian=yes
1142[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1143[ "$target_cpu" = "mips64" ] && target_bigendian=yes
67867308 1144[ "$target_cpu" = "ppc" ] && target_bigendian=yes
d4082e95 1145[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
22f8a8b3 1146[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
e85e7c6e 1147[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
908f52b0 1148[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
0938cda5
AJ
1149[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1150[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1151[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
97a847bc 1152target_softmmu="no"
997344f3 1153target_user_only="no"
831b7825 1154target_linux_user="no"
831b7825 1155target_darwin_user="no"
9e407a85
PB
1156case "$target" in
1157 ${target_cpu}-softmmu)
1158 target_softmmu="yes"
1159 ;;
1160 ${target_cpu}-linux-user)
1161 target_user_only="yes"
1162 target_linux_user="yes"
1163 ;;
1164 ${target_cpu}-darwin-user)
1165 target_user_only="yes"
1166 target_darwin_user="yes"
1167 ;;
1168 *)
1169 echo "ERROR: Target '$target' not recognised"
1170 exit 1
1171 ;;
1172esac
831b7825 1173
97ccc689 1174if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
1d14ffa9 1175 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
97ccc689 1176 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
9c038506 1177 echo "To build QEMU without graphical output configure with --disable-gfx-check"
4d3b6f6e
AZ
1178 echo "Note that this will disable all output from the virtual graphics card"
1179 echo "except through VNC or curses."
97ccc689
FB
1180 exit 1;
1181fi
1182
7c1f25b4 1183#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
97a847bc 1184
15d9ca0f
TS
1185test -f $config_h && mv $config_h ${config_h}~
1186
97a847bc 1187mkdir -p $target_dir
158142c2 1188mkdir -p $target_dir/fpu
57fec1fe 1189mkdir -p $target_dir/tcg
831b7825 1190if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
69de927c
FB
1191 mkdir -p $target_dir/nwfpe
1192fi
1193
ec530c81
FB
1194#
1195# don't use ln -sf as not all "ln -sf" over write the file/link
1196#
1197rm -f $target_dir/Makefile
1198ln -s $source_path/Makefile.target $target_dir/Makefile
1199
97a847bc
FB
1200
1201echo "# Automatically generated by configure - do not modify" > $config_mak
1202echo "/* Automatically generated by configure - do not modify */" > $config_h
1203
de83cd02 1204
97a847bc
FB
1205echo "include ../config-host.mak" >> $config_mak
1206echo "#include \"../config-host.h\"" >> $config_h
1e43adfc 1207
e5fe0c52 1208bflt="no"
cb33da57 1209elfload32="no"
bd0c5661 1210target_nptl="no"
1e43adfc
FB
1211interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1212echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
97a847bc 1213
2408a527
AJ
1214case "$target_cpu" in
1215 i386)
1216 echo "TARGET_ARCH=i386" >> $config_mak
1217 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1218 echo "#define TARGET_I386 1" >> $config_h
da260249 1219 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
2408a527
AJ
1220 then
1221 echo "#define USE_KQEMU 1" >> $config_h
1222 fi
f2bf094e 1223 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
11d1fdb0 1224 if test -n "$gcc3minver" && test $gcc3minver -gt 3
f2bf094e
AJ
1225 then
1226 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1227 else
1228 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1229 fi
2408a527
AJ
1230 ;;
1231 x86_64)
1232 echo "TARGET_ARCH=x86_64" >> $config_mak
1233 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1234 echo "#define TARGET_I386 1" >> $config_h
1235 echo "#define TARGET_X86_64 1" >> $config_h
1236 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1237 then
1238 echo "#define USE_KQEMU 1" >> $config_h
1239 fi
1240 ;;
1241 alpha)
1242 echo "TARGET_ARCH=alpha" >> $config_mak
bf6247fb 1243 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1244 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1245 echo "#define TARGET_ALPHA 1" >> $config_h
bf6247fb 1246 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1247 ;;
1248 arm|armeb)
1249 echo "TARGET_ARCH=arm" >> $config_mak
2408a527
AJ
1250 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1251 echo "#define TARGET_ARM 1" >> $config_h
2408a527 1252 bflt="yes"
bd0c5661 1253 target_nptl="yes"
2408a527
AJ
1254 ;;
1255 cris)
1256 echo "TARGET_ARCH=cris" >> $config_mak
1257 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1258 echo "#define TARGET_CRIS 1" >> $config_h
2408a527
AJ
1259 ;;
1260 m68k)
1261 echo "TARGET_ARCH=m68k" >> $config_mak
1262 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1263 echo "#define TARGET_M68K 1" >> $config_h
1264 bflt="yes"
1265 ;;
1266 mips|mipsel)
1267 echo "TARGET_ARCH=mips" >> $config_mak
1268 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1269 echo "#define TARGET_MIPS 1" >> $config_h
1270 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1271 ;;
1272 mipsn32|mipsn32el)
1273 echo "TARGET_ARCH=mipsn32" >> $config_mak
1274 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1275 echo "#define TARGET_MIPS 1" >> $config_h
1276 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1277 ;;
1278 mips64|mips64el)
1279 echo "TARGET_ARCH=mips64" >> $config_mak
1280 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1281 echo "#define TARGET_MIPS 1" >> $config_h
1282 echo "#define TARGET_MIPS64 1" >> $config_h
1283 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1284 ;;
1285 ppc)
1286 echo "TARGET_ARCH=ppc" >> $config_mak
bf6247fb 1287 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1288 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1289 echo "#define TARGET_PPC 1" >> $config_h
bf6247fb 1290 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1291 ;;
1292 ppcemb)
1293 echo "TARGET_ARCH=ppcemb" >> $config_mak
1294 echo "TARGET_ABI_DIR=ppc" >> $config_mak
bf6247fb 1295 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1296 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1297 echo "#define TARGET_PPC 1" >> $config_h
1298 echo "#define TARGET_PPCEMB 1" >> $config_h
ec5b78cd 1299 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1300 ;;
1301 ppc64)
1302 echo "TARGET_ARCH=ppc64" >> $config_mak
1303 echo "TARGET_ABI_DIR=ppc" >> $config_mak
bf6247fb 1304 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1305 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1306 echo "#define TARGET_PPC 1" >> $config_h
1307 echo "#define TARGET_PPC64 1" >> $config_h
bf6247fb 1308 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1309 ;;
1310 ppc64abi32)
1311 echo "TARGET_ARCH=ppc64" >> $config_mak
1312 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1313 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
bf6247fb 1314 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1315 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1316 echo "#define TARGET_PPC 1" >> $config_h
1317 echo "#define TARGET_PPC64 1" >> $config_h
1318 echo "#define TARGET_ABI32 1" >> $config_h
bf6247fb 1319 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1320 ;;
1321 sh4|sh4eb)
1322 echo "TARGET_ARCH=sh4" >> $config_mak
bf6247fb 1323 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
2408a527
AJ
1324 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1325 echo "#define TARGET_SH4 1" >> $config_h
bf6247fb 1326 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
2408a527
AJ
1327 bflt="yes"
1328 ;;
1329 sparc)
1330 echo "TARGET_ARCH=sparc" >> $config_mak
1331 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1332 echo "#define TARGET_SPARC 1" >> $config_h
1333 ;;
1334 sparc64)
1335 echo "TARGET_ARCH=sparc64" >> $config_mak
1336 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1337 echo "#define TARGET_SPARC 1" >> $config_h
1338 echo "#define TARGET_SPARC64 1" >> $config_h
1339 elfload32="yes"
1340 ;;
1341 sparc32plus)
1342 echo "TARGET_ARCH=sparc64" >> $config_mak
1343 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1344 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1345 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1346 echo "#define TARGET_SPARC 1" >> $config_h
1347 echo "#define TARGET_SPARC64 1" >> $config_h
1348 echo "#define TARGET_ABI32 1" >> $config_h
1349 ;;
1350 *)
1351 echo "Unsupported target CPU"
1352 exit 1
1353 ;;
1354esac
de83cd02 1355if test "$target_bigendian" = "yes" ; then
97a847bc
FB
1356 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1357 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
de83cd02 1358fi
97a847bc
FB
1359if test "$target_softmmu" = "yes" ; then
1360 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1361 echo "#define CONFIG_SOFTMMU 1" >> $config_h
43ce4dfe 1362fi
997344f3
FB
1363if test "$target_user_only" = "yes" ; then
1364 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1365 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1366fi
831b7825
TS
1367if test "$target_linux_user" = "yes" ; then
1368 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1369 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1370fi
1371if test "$target_darwin_user" = "yes" ; then
1372 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1373 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1374fi
97a847bc 1375
0938cda5
AJ
1376if test "$target_cpu" = "arm" \
1377 -o "$target_cpu" = "armeb" \
1378 -o "$target_cpu" = "m68k" \
1379 -o "$target_cpu" = "mips" \
1380 -o "$target_cpu" = "mipsel" \
1381 -o "$target_cpu" = "mipsn32" \
1382 -o "$target_cpu" = "mipsn32el" \
1383 -o "$target_cpu" = "mips64" \
1384 -o "$target_cpu" = "mips64el" \
1385 -o "$target_cpu" = "sparc" \
1386 -o "$target_cpu" = "sparc64" \
1387 -o "$target_cpu" = "sparc32plus"; then
158142c2
FB
1388 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1389 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1390fi
e5fe0c52
PB
1391if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1392 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1393 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1394fi
bd0c5661
PB
1395if test "$target_user_only" = "yes" \
1396 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1397 echo "#define USE_NPTL 1" >> $config_h
1398fi
cb33da57
BS
1399# 32 bit ELF loader in addition to native 64 bit loader?
1400if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1401 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1402 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1403fi
5b0753e0 1404
15d9ca0f
TS
1405test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1406
97a847bc 1407done # for target in $targets
7d13299d
FB
1408
1409# build tree in object directory if source path is different from current one
1410if test "$source_path_used" = "yes" ; then
49ecc3fa 1411 DIRS="tests tests/cris slirp audio"
7d13299d 1412 FILES="Makefile tests/Makefile"
e7daa605 1413 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
e1ffb0f1 1414 FILES="$FILES tests/test-mmap.c"
7d13299d
FB
1415 for dir in $DIRS ; do
1416 mkdir -p $dir
1417 done
ec530c81 1418 # remove the link and recreate it, as not all "ln -sf" overwrite the link
7d13299d 1419 for f in $FILES ; do
ec530c81
FB
1420 rm -f $f
1421 ln -s $source_path/$f $f
7d13299d
FB
1422 done
1423fi
7d13299d 1424
97a847bc 1425rm -f $TMPO $TMPC $TMPE $TMPS