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