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