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