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