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