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