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