17d13299dSbellard#!/bin/sh 27d13299dSbellard# 33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard 47d13299dSbellard# 57d13299dSbellard# set temporary file name 67d13299dSbellardif test ! -z "$TMPDIR" ; then 77d13299dSbellard TMPDIR1="${TMPDIR}" 87d13299dSbellardelif test ! -z "$TEMPDIR" ; then 97d13299dSbellard TMPDIR1="${TEMPDIR}" 107d13299dSbellardelse 117d13299dSbellard TMPDIR1="/tmp" 127d13299dSbellardfi 137d13299dSbellard 143ef693a0SbellardTMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c" 153ef693a0SbellardTMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o" 163ef693a0SbellardTMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}" 173ef693a0SbellardTMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S" 187d13299dSbellard 197d13299dSbellard# default parameters 2011d9f695Sbellardprefix="" 211e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 2243ce4dfeSbellardstatic="no" 237d13299dSbellardcross_prefix="" 247d13299dSbellardcc="gcc" 25328a4240Spbrookgcc3_search="yes" 26fe8f78e4Sbalroggcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32" 270c58ac1cSmalcaudio_drv_list="" 280c58ac1cSmalcaudio_card_list="" 297d13299dSbellardhost_cc="gcc" 307d13299dSbellardar="ar" 317d13299dSbellardmake="make" 326a882643Spbrookinstall="install" 337d13299dSbellardstrip="strip" 347d13299dSbellardcpu=`uname -m` 355327cf48Sbellardtarget_list="" 367d13299dSbellardcase "$cpu" in 377d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 3897a847bcSbellard cpu="i386" 397d13299dSbellard ;; 40aaa5fa14Saurel32 x86_64|amd64) 41aaa5fa14Saurel32 cpu="x86_64" 42aaa5fa14Saurel32 ;; 43aaa5fa14Saurel32 alpha) 44aaa5fa14Saurel32 cpu="alpha" 45aaa5fa14Saurel32 ;; 46ba68055eSbellard armv*b) 47808c4954Sbellard cpu="armv4b" 48808c4954Sbellard ;; 49ba68055eSbellard armv*l) 507d13299dSbellard cpu="armv4l" 517d13299dSbellard ;; 52aaa5fa14Saurel32 cris) 53aaa5fa14Saurel32 cpu="cris" 547d13299dSbellard ;; 55f54b3f92Saurel32 parisc|parisc64) 56f54b3f92Saurel32 cpu="hppa" 57f54b3f92Saurel32 ;; 58aaa5fa14Saurel32 ia64) 59aaa5fa14Saurel32 cpu="ia64" 60aaa5fa14Saurel32 ;; 61aaa5fa14Saurel32 m68k) 62aaa5fa14Saurel32 cpu="m68k" 637d13299dSbellard ;; 647d13299dSbellard mips) 657d13299dSbellard cpu="mips" 667d13299dSbellard ;; 67fbe4f65bSths mips64) 68fbe4f65bSths cpu="mips64" 69fbe4f65bSths ;; 70aaa5fa14Saurel32 "Power Macintosh"|ppc|ppc64) 71aaa5fa14Saurel32 cpu="powerpc" 72e7daa605Sths ;; 730e7b8a9fSths s390*) 74fb3e5849Sbellard cpu="s390" 75fb3e5849Sbellard ;; 763142255cSblueswir1 sparc|sun4[cdmuv]) 77ae228531Sbellard cpu="sparc" 78ae228531Sbellard ;; 79ae228531Sbellard sparc64) 80ae228531Sbellard cpu="sparc64" 81ae228531Sbellard ;; 827d13299dSbellard *) 837d13299dSbellard cpu="unknown" 847d13299dSbellard ;; 857d13299dSbellardesac 867d13299dSbellardgprof="no" 877d13299dSbellardbigendian="no" 8867b915a5Sbellardmingw32="no" 8967b915a5SbellardEXESUF="" 9067b915a5Sbellardgdbstub="yes" 91443f1376Sbellardslirp="yes" 92e0e6c8c0Saliguorivde="yes" 93102a52e4Sbellardfmod_lib="" 94102a52e4Sbellardfmod_inc="" 952f6a1ab0Sblueswir1oss_lib="" 968d5d2d4cSthsvnc_tls="yes" 97b1a550a0Spbrookbsd="no" 985327cf48Sbellardlinux="no" 99c9ec1fe4Sbellardkqemu="no" 10005c2a3e7Sbellardprofiler="no" 1015b0753e0Sbellardcocoa="no" 10297ccc689Sbellardcheck_gfx="yes" 1031aff381fSbellardcheck_gcc="yes" 1040a8e90f4Spbrooksoftmmu="yes" 105831b7825Sthslinux_user="no" 106831b7825Sthsdarwin_user="no" 107cc8ae6deSpbrookbuild_docs="no" 108c5937220Spbrookuname_release="" 1094d3b6f6eSbalrogcurses="yes" 110414f0dabSblueswir1aio="yes" 111bd0c5661Spbrooknptl="yes" 1128ff9cbf7Smalcmixemu="no" 113*27463101Saliguorisignalfd="no" 114*27463101Saliguorieventfd="no" 1157d13299dSbellard 1167d13299dSbellard# OS specific 1177d13299dSbellardtargetos=`uname -s` 1187d13299dSbellardcase $targetos in 119c326e0afSbellardCYGWIN*) 120c326e0afSbellardmingw32="yes" 1216f30fa85SthsOS_CFLAGS="-mno-cygwin" 122db8d7dd1Sthsif [ "$cpu" = "i386" ] ; then 123db8d7dd1Sths kqemu="yes" 124db8d7dd1Sthsfi 125c2de5c91Smalcaudio_possible_drivers="sdl" 126c326e0afSbellard;; 12767b915a5SbellardMINGW32*) 12867b915a5Sbellardmingw32="yes" 129db8d7dd1Sthsif [ "$cpu" = "i386" ] ; then 130db8d7dd1Sths kqemu="yes" 131db8d7dd1Sthsfi 132c2de5c91Smalcaudio_possible_drivers="dsound sdl fmod" 13367b915a5Sbellard;; 1345c40d2bdSthsGNU/kFreeBSD) 1350c58ac1cSmalcaudio_drv_list="oss" 136f34af52cSaurel32audio_possible_drivers="oss sdl esd pa" 1375c40d2bdSthsif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 1385c40d2bdSths kqemu="yes" 1395c40d2bdSthsfi 1405c40d2bdSths;; 1417d3505c5SbellardFreeBSD) 1427d3505c5Sbellardbsd="yes" 1430c58ac1cSmalcaudio_drv_list="oss" 144f34af52cSaurel32audio_possible_drivers="oss sdl esd pa" 145e99f9060Sbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 14607f4ddbfSbellard kqemu="yes" 14707f4ddbfSbellardfi 1487d3505c5Sbellard;; 1497d3505c5SbellardNetBSD) 1507d3505c5Sbellardbsd="yes" 1510c58ac1cSmalcaudio_drv_list="oss" 152c2de5c91Smalcaudio_possible_drivers="oss sdl esd" 1537d3505c5Sbellard;; 1547d3505c5SbellardOpenBSD) 1557d3505c5Sbellardbsd="yes" 156128ab2ffSblueswir1openbsd="yes" 1570c58ac1cSmalcaudio_drv_list="oss" 158c2de5c91Smalcaudio_possible_drivers="oss sdl esd" 1592f6a1ab0Sblueswir1oss_lib="-lossaudio" 1607d3505c5Sbellard;; 16183fb7adfSbellardDarwin) 16283fb7adfSbellardbsd="yes" 16383fb7adfSbellarddarwin="yes" 164831b7825Sthsdarwin_user="yes" 165fd677642Sthscocoa="yes" 1660c58ac1cSmalcaudio_drv_list="coreaudio" 167c2de5c91Smalcaudio_possible_drivers="coreaudio sdl fmod" 1686f30fa85SthsOS_CFLAGS="-mdynamic-no-pic" 169c2c59c3eSthsOS_LDFLAGS="-framework CoreFoundation -framework IOKit" 17083fb7adfSbellard;; 171ec530c81SbellardSunOS) 172ec530c81Sbellard solaris="yes" 173c2b84fabSths make="gmake" 174c2b84fabSths install="ginstall" 1750475a5caSths needs_libsunmath="no" 176c2b84fabSths solarisrev=`uname -r | cut -f2 -d.` 177ef18c883Sths # have to select again, because `uname -m` returns i86pc 178ef18c883Sths # even on an x86_64 box. 179ef18c883Sths solariscpu=`isainfo -k` 180ef18c883Sths if test "${solariscpu}" = "amd64" ; then 181ef18c883Sths cpu="x86_64" 182ef18c883Sths fi 183c2b84fabSths if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 1840475a5caSths if test "$solarisrev" -le 9 ; then 1850475a5caSths if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then 1860475a5caSths needs_libsunmath="yes" 1870475a5caSths else 1880475a5caSths echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" 1890475a5caSths echo "libsunmath from the Sun Studio compilers tools, due to a lack of" 1900475a5caSths echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" 1910475a5caSths echo "Studio 11 can be downloaded from www.sun.com." 1920475a5caSths exit 1 1930475a5caSths fi 1940475a5caSths fi 1950475a5caSths if test "$solarisrev" -ge 9 ; then 196c2b84fabSths kqemu="yes" 197c2b84fabSths fi 19886b2bd93Sths fi 1996b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 2000c58ac1cSmalc audio_drv_list="oss" 2016b4d2ba1Sths fi 202c2de5c91Smalc audio_possible_drivers="oss sdl" 203ec530c81Sbellard;; 204fb065187Sbellard*) 2050c58ac1cSmalcaudio_drv_list="oss" 206b8e59f18Smalcaudio_possible_drivers="oss alsa sdl esd pa" 2075327cf48Sbellardlinux="yes" 208831b7825Sthslinux_user="yes" 20907f4ddbfSbellardif [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 210c9ec1fe4Sbellard kqemu="yes" 211c2de5c91Smalc audio_possible_drivers="$audio_possible_drivers fmod" 212c9ec1fe4Sbellardfi 213fb065187Sbellard;; 2147d13299dSbellardesac 2157d13299dSbellard 2167d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 217b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 2187d3505c5Sbellard make="gmake" 21983fb7adfSbellard fi 2207d3505c5Sbellardfi 2217d3505c5Sbellard 2227d13299dSbellard# find source path 223ad064840Spbrooksource_path=`dirname "$0"` 22459faef3aSbalrogsource_path_used="no" 22559faef3aSbalrogworkdir=`pwd` 226ad064840Spbrookif [ -z "$source_path" ]; then 22759faef3aSbalrog source_path=$workdir 228ad064840Spbrookelse 229ad064840Spbrook source_path=`cd "$source_path"; pwd` 2307d13299dSbellardfi 231724db118Spbrook[ -f "$workdir/vl.c" ] || source_path_used="yes" 2327d13299dSbellard 23385aa5189Sbellardwerror="no" 2340d1e2394Sbellard# generate compile errors on warnings for development builds 2350d1e2394Sbellard#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then 2360d1e2394Sbellard#werror="yes"; 2370d1e2394Sbellard#fi 23885aa5189Sbellard 2397d13299dSbellardfor opt do 240a46e4035Spbrook optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 2417d13299dSbellard case "$opt" in 2422efc3265Sbellard --help|-h) show_help=yes 2432efc3265Sbellard ;; 244b1a550a0Spbrook --prefix=*) prefix="$optarg" 2457d13299dSbellard ;; 246b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 24732ce6337Sbellard ;; 248b1a550a0Spbrook --source-path=*) source_path="$optarg" 249ad064840Spbrook source_path_used="yes" 2507d13299dSbellard ;; 251b1a550a0Spbrook --cross-prefix=*) cross_prefix="$optarg" 2527d13299dSbellard ;; 253b1a550a0Spbrook --cc=*) cc="$optarg" 254328a4240Spbrook gcc3_search="no" 2557d13299dSbellard ;; 256b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 25783469015Sbellard ;; 258b1a550a0Spbrook --make=*) make="$optarg" 2597d13299dSbellard ;; 2606a882643Spbrook --install=*) install="$optarg" 2616a882643Spbrook ;; 262b1a550a0Spbrook --extra-cflags=*) CFLAGS="$optarg" 2637d13299dSbellard ;; 264b1a550a0Spbrook --extra-ldflags=*) LDFLAGS="$optarg" 2657d13299dSbellard ;; 266b1a550a0Spbrook --cpu=*) cpu="$optarg" 2677d13299dSbellard ;; 268b1a550a0Spbrook --target-list=*) target_list="$optarg" 269de83cd02Sbellard ;; 2707d13299dSbellard --enable-gprof) gprof="yes" 2717d13299dSbellard ;; 27243ce4dfeSbellard --static) static="yes" 27343ce4dfeSbellard ;; 27497a847bcSbellard --disable-sdl) sdl="no" 27597a847bcSbellard ;; 276b1a550a0Spbrook --fmod-lib=*) fmod_lib="$optarg" 277102a52e4Sbellard ;; 278c2de5c91Smalc --fmod-inc=*) fmod_inc="$optarg" 279c2de5c91Smalc ;; 2802f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 2812f6a1ab0Sblueswir1 ;; 2822fa7d3bfSmalc --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'` 2830c58ac1cSmalc ;; 2840c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 2850c58ac1cSmalc ;; 2868d5d2d4cSths --disable-vnc-tls) vnc_tls="no" 2878d5d2d4cSths ;; 288443f1376Sbellard --disable-slirp) slirp="no" 289c20709aaSbellard ;; 290e0e6c8c0Saliguori --disable-vde) vde="no" 2918a16d273Sths ;; 292c9ec1fe4Sbellard --disable-kqemu) kqemu="no" 293c9ec1fe4Sbellard ;; 2942e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 2952e4d9fb1Saurel32 ;; 29605c2a3e7Sbellard --enable-profiler) profiler="yes" 29705c2a3e7Sbellard ;; 298c2de5c91Smalc --enable-cocoa) 299c2de5c91Smalc cocoa="yes" ; 300c2de5c91Smalc sdl="no" ; 301c2de5c91Smalc audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 3025b0753e0Sbellard ;; 30397ccc689Sbellard --disable-gfx-check) check_gfx="no" 30497ccc689Sbellard ;; 3051aff381fSbellard --disable-gcc-check) check_gcc="no" 3061aff381fSbellard ;; 307cad25d69Spbrook --disable-system) softmmu="no" 3080a8e90f4Spbrook ;; 309cad25d69Spbrook --enable-system) softmmu="yes" 3100a8e90f4Spbrook ;; 311831b7825Sths --disable-linux-user) linux_user="no" 3120a8e90f4Spbrook ;; 313831b7825Sths --enable-linux-user) linux_user="yes" 314831b7825Sths ;; 315831b7825Sths --disable-darwin-user) darwin_user="no" 316831b7825Sths ;; 317831b7825Sths --enable-darwin-user) darwin_user="yes" 3180a8e90f4Spbrook ;; 319c5937220Spbrook --enable-uname-release=*) uname_release="$optarg" 320c5937220Spbrook ;; 3213142255cSblueswir1 --sparc_cpu=*) 3223142255cSblueswir1 sparc_cpu="$optarg" 3233142255cSblueswir1 case $sparc_cpu in 3243142255cSblueswir1 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32" 3253142255cSblueswir1 target_cpu="sparc"; cpu="sparc" ;; 3263142255cSblueswir1 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32" 3273142255cSblueswir1 target_cpu="sparc"; cpu="sparc" ;; 3283142255cSblueswir1 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64" 3293142255cSblueswir1 target_cpu="sparc64"; cpu="sparc64" ;; 3303142255cSblueswir1 *) echo "undefined SPARC architecture. Exiting";exit 1;; 3313142255cSblueswir1 esac 3323142255cSblueswir1 ;; 33385aa5189Sbellard --enable-werror) werror="yes" 33485aa5189Sbellard ;; 33585aa5189Sbellard --disable-werror) werror="no" 33685aa5189Sbellard ;; 3374d3b6f6eSbalrog --disable-curses) curses="no" 3384d3b6f6eSbalrog ;; 339bd0c5661Spbrook --disable-nptl) nptl="no" 340bd0c5661Spbrook ;; 3418ff9cbf7Smalc --enable-mixemu) mixemu="yes" 3428ff9cbf7Smalc ;; 343414f0dabSblueswir1 --disable-aio) aio="no" 344414f0dabSblueswir1 ;; 3457f1559c6Sbalrog *) echo "ERROR: unknown option $opt"; show_help="yes" 3467f1559c6Sbalrog ;; 3477d13299dSbellard esac 3487d13299dSbellarddone 3497d13299dSbellard 3506f30fa85Sths# default flags for all hosts 351ac41a620Sblueswir1CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing" 352ac41a620Sblueswir1CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings" 3536f30fa85SthsLDFLAGS="$LDFLAGS -g" 35485aa5189Sbellardif test "$werror" = "yes" ; then 35585aa5189SbellardCFLAGS="$CFLAGS -Werror" 35685aa5189Sbellardfi 3576f30fa85Sths 35849237acdSblueswir1if ld --version 2>/dev/null | grep -q "GNU ld" ; then 35949237acdSblueswir1 LDFLAGS="$LDFLAGS -Wl,--warn-common" 36049237acdSblueswir1fi 36149237acdSblueswir1 3623142255cSblueswir1# 3633142255cSblueswir1# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right 3643142255cSblueswir1# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit) 3653142255cSblueswir1# 36640293e58Sbellardcase "$cpu" in 3673142255cSblueswir1 sparc) if test -z "$sparc_cpu" ; then 3683142255cSblueswir1 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__" 3693142255cSblueswir1 ARCH_LDFLAGS="-m32" 3703142255cSblueswir1 else 3713142255cSblueswir1 ARCH_CFLAGS="${SP_CFLAGS}" 3723142255cSblueswir1 ARCH_LDFLAGS="${SP_LDFLAGS}" 3733142255cSblueswir1 fi 3743142255cSblueswir1 ;; 3753142255cSblueswir1 sparc64) if test -z "$sparc_cpu" ; then 3763142255cSblueswir1 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__" 3773142255cSblueswir1 ARCH_LDFLAGS="-m64" 3783142255cSblueswir1 else 3793142255cSblueswir1 ARCH_CFLAGS="${SP_CFLAGS}" 3803142255cSblueswir1 ARCH_LDFLAGS="${SP_LDFLAGS}" 3813142255cSblueswir1 fi 3823142255cSblueswir1 ;; 38376d83bdeSths s390) 38476d83bdeSths ARCH_CFLAGS="-march=z900" 38576d83bdeSths ;; 38640293e58Sbellard i386) 38740293e58Sbellard ARCH_CFLAGS="-m32" 38840293e58Sbellard ARCH_LDFLAGS="-m32" 38940293e58Sbellard ;; 39040293e58Sbellard x86_64) 39140293e58Sbellard ARCH_CFLAGS="-m64" 39240293e58Sbellard ARCH_LDFLAGS="-m64" 39340293e58Sbellard ;; 3943142255cSblueswir1esac 3953142255cSblueswir1 396af5db58eSpbrookif test x"$show_help" = x"yes" ; then 397af5db58eSpbrookcat << EOF 398af5db58eSpbrook 399af5db58eSpbrookUsage: configure [options] 400af5db58eSpbrookOptions: [defaults in brackets after descriptions] 401af5db58eSpbrook 402af5db58eSpbrookEOF 403af5db58eSpbrookecho "Standard options:" 404af5db58eSpbrookecho " --help print this message" 405af5db58eSpbrookecho " --prefix=PREFIX install in PREFIX [$prefix]" 406af5db58eSpbrookecho " --interp-prefix=PREFIX where to find shared libraries, etc." 407af5db58eSpbrookecho " use %M for cpu name [$interp_prefix]" 408af5db58eSpbrookecho " --target-list=LIST set target list [$target_list]" 409af5db58eSpbrookecho "" 410af5db58eSpbrookecho "kqemu kernel acceleration support:" 411af5db58eSpbrookecho " --disable-kqemu disable kqemu support" 412af5db58eSpbrookecho "" 413af5db58eSpbrookecho "Advanced options (experts only):" 414af5db58eSpbrookecho " --source-path=PATH path of source code [$source_path]" 415af5db58eSpbrookecho " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" 416af5db58eSpbrookecho " --cc=CC use C compiler CC [$cc]" 417af5db58eSpbrookecho " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc." 418af5db58eSpbrookecho " --make=MAKE use specified make [$make]" 4196a882643Spbrookecho " --install=INSTALL use specified install [$install]" 420af5db58eSpbrookecho " --static enable static build [$static]" 42185aa5189Sbellardecho " --disable-werror disable compilation abort on warning" 422fe8f78e4Sbalrogecho " --disable-sdl disable SDL" 423af5db58eSpbrookecho " --enable-cocoa enable COCOA (Mac OS X only)" 424c2de5c91Smalcecho " --audio-drv-list=LIST set audio drivers list:" 425c2de5c91Smalcecho " Available drivers: $audio_possible_drivers" 426c2de5c91Smalcecho " --audio-card-list=LIST set list of additional emulated audio cards" 427c2de5c91Smalcecho " Available cards: ac97 adlib cs4231a gus" 4288ff9cbf7Smalcecho " --enable-mixemu enable mixer emulation" 4292e4d9fb1Saurel32echo " --disable-brlapi disable BrlAPI" 4308d5d2d4cSthsecho " --disable-vnc-tls disable TLS encryption for VNC server" 431af896aaaSpbrookecho " --disable-curses disable curses output" 432bd0c5661Spbrookecho " --disable-nptl disable usermode NPTL support" 433af5db58eSpbrookecho " --enable-system enable all system emulation targets" 434af5db58eSpbrookecho " --disable-system disable all system emulation targets" 435831b7825Sthsecho " --enable-linux-user enable all linux usermode emulation targets" 436831b7825Sthsecho " --disable-linux-user disable all linux usermode emulation targets" 437831b7825Sthsecho " --enable-darwin-user enable all darwin usermode emulation targets" 438831b7825Sthsecho " --disable-darwin-user disable all darwin usermode emulation targets" 439af5db58eSpbrookecho " --fmod-lib path to FMOD library" 440af5db58eSpbrookecho " --fmod-inc path to FMOD includes" 4412f6a1ab0Sblueswir1echo " --oss-lib path to OSS library" 442c5937220Spbrookecho " --enable-uname-release=R Return R for uname -r in usermode emulation" 4433142255cSblueswir1echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9" 444e0e6c8c0Saliguoriecho " --disable-vde disable support for vde network" 445414f0dabSblueswir1echo " --disable-aio disable AIO support" 446af5db58eSpbrookecho "" 4475bf08934Sthsecho "NOTE: The object files are built at the place where configure is launched" 448af5db58eSpbrookexit 1 449af5db58eSpbrookfi 450af5db58eSpbrook 4517d13299dSbellardcc="${cross_prefix}${cc}" 4527d13299dSbellardar="${cross_prefix}${ar}" 4537d13299dSbellardstrip="${cross_prefix}${strip}" 4547d13299dSbellard 455064aae13Spbrook# check that the C compiler works. 456064aae13Spbrookcat > $TMPC <<EOF 457064aae13Spbrookint main(void) {} 458064aae13SpbrookEOF 459064aae13Spbrook 460db7287edSpbrookif $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then 461064aae13Spbrook : C compiler works ok 462064aae13Spbrookelse 463064aae13Spbrook echo "ERROR: \"$cc\" either does not exist or does not work" 464064aae13Spbrook exit 1 465a7350fa1Sbellardfi 466a7350fa1Sbellard 467cd01b4a3Saliguori# check compiler to see if we're on mingw32 468cd01b4a3Saliguoricat > $TMPC <<EOF 469cd01b4a3Saliguori#include <windows.h> 470cd01b4a3Saliguori#ifndef _WIN32 471cd01b4a3Saliguori#error not windows 472cd01b4a3Saliguori#endif 473cd01b4a3Saliguoriint main(void) {} 474cd01b4a3SaliguoriEOF 475cd01b4a3Saliguori 476cd01b4a3Saliguoriif $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then 477cd01b4a3Saliguori mingw32="yes" 478cd01b4a3Saliguorifi 479cd01b4a3Saliguori 48067b915a5Sbellardif test "$mingw32" = "yes" ; then 4815327cf48Sbellard linux="no" 48267b915a5Sbellard EXESUF=".exe" 4839f059ecaSbellard oss="no" 484cd01b4a3Saliguori linux_user="no" 485cd01b4a3Saliguorifi 486cd01b4a3Saliguori 487997306fcSaliguoriif [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then 488cd01b4a3Saliguori AIOLIBS= 489997306fcSaliguorielif [ "$bsd" = "yes" ]; then 490997306fcSaliguori AIOLIBS="-lpthread" 491cd01b4a3Saliguorielse 492cd01b4a3Saliguori # Some Linux architectures (e.g. s390) don't imply -lpthread automatically. 493cd01b4a3Saliguori AIOLIBS="-lrt -lpthread" 49467b915a5Sbellardfi 49567b915a5Sbellard 496328a4240Spbrook# Check for gcc4, error if pre-gcc4 497328a4240Spbrookif test "$check_gcc" = "yes" ; then 498328a4240Spbrook cat > $TMPC <<EOF 499328a4240Spbrook#if __GNUC__ < 4 500328a4240Spbrook#error gcc3 501328a4240Spbrook#endif 502328a4240Spbrookint main(){return 0;} 503328a4240SpbrookEOF 504db7287edSpbrook if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then 505328a4240Spbrook echo "WARNING: \"$cc\" looks like gcc 4.x" 506328a4240Spbrook found_compat_cc="no" 507328a4240Spbrook if test "$gcc3_search" = "yes" ; then 508328a4240Spbrook echo "Looking for gcc 3.x" 509328a4240Spbrook for compat_cc in $gcc3_list ; do 510d4af3de2Sbalrog if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then 511328a4240Spbrook echo "Found \"$compat_cc\"" 5121124426aSpbrook cc="$cross_prefix$compat_cc" 513328a4240Spbrook found_compat_cc="yes" 514328a4240Spbrook break 515328a4240Spbrook fi 516328a4240Spbrook done 517328a4240Spbrook if test "$found_compat_cc" = "no" ; then 518328a4240Spbrook echo "gcc 3.x not found!" 519328a4240Spbrook fi 520328a4240Spbrook fi 521328a4240Spbrook if test "$found_compat_cc" = "no" ; then 522328a4240Spbrook echo "QEMU is known to have problems when compiled with gcc 4.x" 523328a4240Spbrook echo "It is recommended that you use gcc 3.x to build QEMU" 524328a4240Spbrook echo "To use this compiler anyway, configure with --disable-gcc-check" 525328a4240Spbrook exit 1; 526328a4240Spbrook fi 527328a4240Spbrook fi 528328a4240Spbrookfi 529328a4240Spbrook 530ec530c81Sbellard# 531ec530c81Sbellard# Solaris specific configure tool chain decisions 532ec530c81Sbellard# 533ec530c81Sbellardif test "$solaris" = "yes" ; then 534ec530c81Sbellard # 535ec530c81Sbellard # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly 536ec530c81Sbellard # override the check with --disable-gcc-check 537ec530c81Sbellard # 538ec530c81Sbellard if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then 539ec530c81Sbellard solgcc=`which $cc` 540ec530c81Sbellard if test "$solgcc" = "/usr/sfw/bin/gcc" ; then 541ec530c81Sbellard echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly." 542ec530c81Sbellard echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3" 543ec530c81Sbellard echo "or get the latest patch from SunSolve for gcc" 544ec530c81Sbellard exit 1 545ec530c81Sbellard fi 546ec530c81Sbellard fi 547ec530c81Sbellard solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"` 548ec530c81Sbellard if test -z "$solinst" ; then 549ec530c81Sbellard echo "Solaris install program not found. Use --install=/usr/ucb/install or" 550ec530c81Sbellard echo "install fileutils from www.blastwave.org using pkg-get -i fileutils" 551ec530c81Sbellard echo "to get ginstall which is used by default (which lives in /opt/csw/bin)" 552ec530c81Sbellard exit 1 553ec530c81Sbellard fi 554ec530c81Sbellard if test "$solinst" = "/usr/sbin/install" ; then 555ec530c81Sbellard echo "Error: Solaris /usr/sbin/install is not an appropriate install program." 556ec530c81Sbellard echo "try ginstall from the GNU fileutils available from www.blastwave.org" 557ec530c81Sbellard echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 558ec530c81Sbellard exit 1 559ec530c81Sbellard fi 560ec530c81Sbellard sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"` 561ec530c81Sbellard if test -z "$sol_ar" ; then 562ec530c81Sbellard echo "Error: No path includes ar" 563ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 564ec530c81Sbellard echo "Add /usr/ccs/bin to your path and rerun configure" 565ec530c81Sbellard fi 566ec530c81Sbellard exit 1 567ec530c81Sbellard fi 568ec530c81Sbellardfi 569ec530c81Sbellard 570ec530c81Sbellard 5715327cf48Sbellardif test -z "$target_list" ; then 5725327cf48Sbellard# these targets are portable 5730a8e90f4Spbrook if [ "$softmmu" = "yes" ] ; then 5742408a527Saurel32 target_list="\ 5752408a527Saurel32i386-softmmu \ 5762408a527Saurel32x86_64-softmmu \ 5772408a527Saurel32arm-softmmu \ 5782408a527Saurel32cris-softmmu \ 5792408a527Saurel32m68k-softmmu \ 5802408a527Saurel32mips-softmmu \ 5812408a527Saurel32mipsel-softmmu \ 5822408a527Saurel32mips64-softmmu \ 5832408a527Saurel32mips64el-softmmu \ 5842408a527Saurel32ppc-softmmu \ 5852408a527Saurel32ppcemb-softmmu \ 5862408a527Saurel32ppc64-softmmu \ 5872408a527Saurel32sh4-softmmu \ 5882408a527Saurel32sh4eb-softmmu \ 5892408a527Saurel32sparc-softmmu \ 5902408a527Saurel32" 5910a8e90f4Spbrook fi 5925327cf48Sbellard# the following are Linux specific 593831b7825Sths if [ "$linux_user" = "yes" ] ; then 5942408a527Saurel32 target_list="${target_list}\ 5952408a527Saurel32i386-linux-user \ 5962408a527Saurel32x86_64-linux-user \ 5972408a527Saurel32alpha-linux-user \ 5982408a527Saurel32arm-linux-user \ 5992408a527Saurel32armeb-linux-user \ 6002408a527Saurel32cris-linux-user \ 6012408a527Saurel32m68k-linux-user \ 6022408a527Saurel32mips-linux-user \ 6032408a527Saurel32mipsel-linux-user \ 6042408a527Saurel32ppc-linux-user \ 6052408a527Saurel32ppc64-linux-user \ 6062408a527Saurel32ppc64abi32-linux-user \ 6072408a527Saurel32sh4-linux-user \ 6082408a527Saurel32sh4eb-linux-user \ 6092408a527Saurel32sparc-linux-user \ 6102408a527Saurel32sparc64-linux-user \ 6112408a527Saurel32sparc32plus-linux-user \ 6122408a527Saurel32" 613831b7825Sths fi 614831b7825Sths# the following are Darwin specific 615831b7825Sths if [ "$darwin_user" = "yes" ] ; then 6162408a527Saurel32 target_list="$target_list i386-darwin-user ppc-darwin-user" 6175327cf48Sbellard fi 6186e20a45fSbellardelse 619b1a550a0Spbrook target_list=`echo "$target_list" | sed -e 's/,/ /g'` 6205327cf48Sbellardfi 6210a8e90f4Spbrookif test -z "$target_list" ; then 6220a8e90f4Spbrook echo "No targets enabled" 6230a8e90f4Spbrook exit 1 6240a8e90f4Spbrookfi 6255327cf48Sbellard 6267d13299dSbellardif test -z "$cross_prefix" ; then 6277d13299dSbellard 6287d13299dSbellard# --- 6297d13299dSbellard# big/little endian test 6307d13299dSbellardcat > $TMPC << EOF 6317d13299dSbellard#include <inttypes.h> 6327d13299dSbellardint main(int argc, char ** argv){ 6337d13299dSbellard volatile uint32_t i=0x01234567; 6347d13299dSbellard return (*((uint8_t*)(&i))) == 0x67; 6357d13299dSbellard} 6367d13299dSbellardEOF 6377d13299dSbellard 638db7287edSpbrookif $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then 6397d13299dSbellard$TMPE && bigendian="yes" 6407d13299dSbellardelse 6417d13299dSbellardecho big/little test failed 6427d13299dSbellardfi 6437d13299dSbellard 6447d13299dSbellardelse 6457d13299dSbellard 6467d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess 6470938cda5Saurel32if test "$cpu" = "armv4b" \ 648f54b3f92Saurel32 -o "$cpu" = "hppa" \ 6490938cda5Saurel32 -o "$cpu" = "m68k" \ 6500938cda5Saurel32 -o "$cpu" = "mips" \ 6510938cda5Saurel32 -o "$cpu" = "mips64" \ 6520938cda5Saurel32 -o "$cpu" = "powerpc" \ 6530938cda5Saurel32 -o "$cpu" = "s390" \ 6540938cda5Saurel32 -o "$cpu" = "sparc" \ 6550938cda5Saurel32 -o "$cpu" = "sparc64"; then 6567d13299dSbellard bigendian="yes" 6577d13299dSbellardfi 6587d13299dSbellard 6597d13299dSbellardfi 6607d13299dSbellard 661b6853697Sbellard# host long bits test 662b6853697Sbellardhostlongbits="32" 6630938cda5Saurel32if test "$cpu" = "x86_64" \ 6640938cda5Saurel32 -o "$cpu" = "alpha" \ 6650938cda5Saurel32 -o "$cpu" = "ia64" \ 6660938cda5Saurel32 -o "$cpu" = "sparc64"; then 667b6853697Sbellard hostlongbits="64" 668b6853697Sbellardfi 669b6853697Sbellard 670810260a8Smalc# ppc specific hostlongbits selection 671810260a8Smalcif test "$cpu" = "powerpc" ; then 672810260a8Smalc cat > $TMPC <<EOF 673810260a8Smalcint main(void){return sizeof(long);} 674810260a8SmalcEOF 675810260a8Smalc 676810260a8Smalc if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then 677810260a8Smalc $TMPE 678810260a8Smalc case $? in 679810260a8Smalc 4) hostlongbits="32";; 680810260a8Smalc 8) hostlongbits="64";; 681ba69a08aSmalc *) echo "Couldn't determine bits per long value"; exit 1;; 682810260a8Smalc esac 683810260a8Smalc else 684810260a8Smalc echo hostlongbits test failed 685ba69a08aSmalc exit 1 686810260a8Smalc fi 687810260a8Smalcfi 688810260a8Smalc 689e8cd23deSbellard# check gcc options support 69004369ff2Sbellardcat > $TMPC <<EOF 69104369ff2Sbellardint main(void) { 69204369ff2Sbellard} 69304369ff2SbellardEOF 69404369ff2Sbellard 695bd0c5661Spbrook# Check host NPTL support 696bd0c5661Spbrookcat > $TMPC <<EOF 697bd0c5661Spbrook#include <sched.h> 69830813ceaSpbrook#include <linux/futex.h> 699bd0c5661Spbrookvoid foo() 700bd0c5661Spbrook{ 701bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 702bd0c5661Spbrook#error bork 703bd0c5661Spbrook#endif 704bd0c5661Spbrook} 705bd0c5661SpbrookEOF 706bd0c5661Spbrook 707bd0c5661Spbrookif $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then 708bd0c5661Spbrook : 709bd0c5661Spbrookelse 710bd0c5661Spbrook nptl="no" 711bd0c5661Spbrookfi 712bd0c5661Spbrook 71311d9f695Sbellard########################################## 71411d9f695Sbellard# SDL probe 71511d9f695Sbellard 71611d9f695Sbellardsdl_too_old=no 71711d9f695Sbellard 71811d9f695Sbellardif test -z "$sdl" ; then 719a6e022adSbellard sdl_config="sdl-config" 720a6e022adSbellard sdl=no 7217c1f25b4Sbellard sdl_static=no 722a6e022adSbellard 72311d9f695Sbellardcat > $TMPC << EOF 72411d9f695Sbellard#include <SDL.h> 72511d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 72611d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 72711d9f695SbellardEOF 728db7287edSpbrook 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 729a6e022adSbellard _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'` 73011d9f695Sbellard if test "$_sdlversion" -lt 121 ; then 73111d9f695Sbellard sdl_too_old=yes 73211d9f695Sbellard else 733fd677642Sths if test "$cocoa" = "no" ; then 73411d9f695Sbellard sdl=yes 73511d9f695Sbellard fi 736fd677642Sths fi 7377c1f25b4Sbellard 7387c1f25b4Sbellard # static link with sdl ? 7397c1f25b4Sbellard if test "$sdl" = "yes" ; then 7407c1f25b4Sbellard aa="no" 741e14a693dSths `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes" 742e14a693dSths sdl_static_libs=`$sdl_config --static-libs 2>/dev/null` 7437c1f25b4Sbellard if [ "$aa" = "yes" ] ; then 744d8d8aa4eSbellard sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`" 74511d9f695Sbellard fi 74611d9f695Sbellard 7478281db4dSths if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then 7487c1f25b4Sbellard sdl_static=yes 7497c1f25b4Sbellard fi 7507c1f25b4Sbellard fi # static link 7517c1f25b4Sbellard fi # sdl compile test 752fd677642Sthselse 753fd677642Sths # Make sure to disable cocoa if sdl was set 754fd677642Sths if test "$sdl" = "yes" ; then 755fd677642Sths cocoa="no" 756c2de5c91Smalc audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`" 757fd677642Sths fi 758a6e022adSbellardfi # -z $sdl 75911d9f695Sbellard 7608f28f3fbSths########################################## 7618d5d2d4cSths# VNC TLS detection 7628d5d2d4cSthsif test "$vnc_tls" = "yes" ; then 763ae6b5e5aSaliguoricat > $TMPC <<EOF 764ae6b5e5aSaliguori#include <gnutls/gnutls.h> 765ae6b5e5aSaliguoriint main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 766ae6b5e5aSaliguoriEOF 767ae6b5e5aSaliguori vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null` 768ae6b5e5aSaliguori vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null` 769ae6b5e5aSaliguori if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \ 770ae6b5e5aSaliguori $vnc_tls_libs 2> /dev/null ; then 771ae6b5e5aSaliguori : 772ae6b5e5aSaliguori else 773ae6b5e5aSaliguori vnc_tls="no" 7748d5d2d4cSths fi 7758d5d2d4cSthsfi 7768d5d2d4cSths 7778d5d2d4cSths########################################## 7788a16d273Sths# vde libraries probe 7798a16d273Sthsif test "$vde" = "yes" ; then 7808a16d273Sths cat > $TMPC << EOF 7818a16d273Sths#include <libvdeplug.h> 7824a7f0e06Spbrookint main(void) 7834a7f0e06Spbrook{ 7844a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 7854a7f0e06Spbrook vde_open("", "", &a); 7864a7f0e06Spbrook return 0; 7874a7f0e06Spbrook} 7888a16d273SthsEOF 7894a7f0e06Spbrook if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then 7908a16d273Sths : 7918a16d273Sths else 792e0e6c8c0Saliguori vde="no" 7938a16d273Sths fi 7948a16d273Sthsfi 7958a16d273Sths 7968a16d273Sths########################################## 797c2de5c91Smalc# Sound support libraries probe 7988f28f3fbSths 799c2de5c91Smalcaudio_drv_probe() 800c2de5c91Smalc{ 801c2de5c91Smalc drv=$1 802c2de5c91Smalc hdr=$2 803c2de5c91Smalc lib=$3 804c2de5c91Smalc exp=$4 805c2de5c91Smalc cfl=$5 8068f28f3fbSths cat > $TMPC << EOF 807c2de5c91Smalc#include <$hdr> 808c2de5c91Smalcint main(void) { $exp } 8098f28f3fbSthsEOF 810c2de5c91Smalc if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then 8118f28f3fbSths : 8128f28f3fbSths else 8138f28f3fbSths echo 814c2de5c91Smalc echo "Error: $drv check failed" 815c2de5c91Smalc echo "Make sure to have the $drv libs and headers installed." 8168f28f3fbSths echo 8178f28f3fbSths exit 1 8188f28f3fbSths fi 819c2de5c91Smalc} 820c2de5c91Smalc 8212fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 822c2de5c91Smalcfor drv in $audio_drv_list; do 823c2de5c91Smalc case $drv in 824c2de5c91Smalc alsa) 825c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 826c2de5c91Smalc "snd_pcm_t **handle; return snd_pcm_close(*handle);" 827c2de5c91Smalc ;; 828c2de5c91Smalc 829c2de5c91Smalc fmod) 830c2de5c91Smalc if test -z $fmod_lib || test -z $fmod_inc; then 831c2de5c91Smalc echo 832c2de5c91Smalc echo "Error: You must specify path to FMOD library and headers" 833c2de5c91Smalc echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" 834c2de5c91Smalc echo 835c2de5c91Smalc exit 1 8368f28f3fbSths fi 837c2de5c91Smalc audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc" 838c2de5c91Smalc ;; 839c2de5c91Smalc 840c2de5c91Smalc esd) 841c2de5c91Smalc audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' 842c2de5c91Smalc ;; 843b8e59f18Smalc 844b8e59f18Smalc pa) 845b8e59f18Smalc audio_drv_probe $drv pulse/simple.h -lpulse-simple \ 846b8e59f18Smalc "pa_simple *s = NULL; pa_simple_free(s); return 0;" 847b8e59f18Smalc ;; 848b8e59f18Smalc 8492f6a1ab0Sblueswir1 oss|sdl|core|wav|dsound) 8502f6a1ab0Sblueswir1 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 8512f6a1ab0Sblueswir1 ;; 8522f6a1ab0Sblueswir1 853e4c63a6aSmalc *) 8541c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 855e4c63a6aSmalc echo 856e4c63a6aSmalc echo "Error: Unknown driver '$drv' selected" 857e4c63a6aSmalc echo "Possible drivers are: $audio_possible_drivers" 858e4c63a6aSmalc echo 859e4c63a6aSmalc exit 1 860e4c63a6aSmalc } 861e4c63a6aSmalc ;; 862c2de5c91Smalc esac 863c2de5c91Smalcdone 8648f28f3fbSths 8654d3b6f6eSbalrog########################################## 8662e4d9fb1Saurel32# BrlAPI probe 8672e4d9fb1Saurel32 8682e4d9fb1Saurel32if test -z "$brlapi" ; then 8692e4d9fb1Saurel32 brlapi=no 8702e4d9fb1Saurel32cat > $TMPC << EOF 8712e4d9fb1Saurel32#include <brlapi.h> 8722e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 8732e4d9fb1Saurel32EOF 874a40e56d5Saurel32 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then 8752e4d9fb1Saurel32 brlapi=yes 8762e4d9fb1Saurel32 fi # brlapi compile test 8772e4d9fb1Saurel32fi # -z $brlapi 8782e4d9fb1Saurel32 8792e4d9fb1Saurel32########################################## 8804d3b6f6eSbalrog# curses probe 8814d3b6f6eSbalrog 8824d3b6f6eSbalrogif test "$curses" = "yes" ; then 8834d3b6f6eSbalrog curses=no 8844d3b6f6eSbalrog cat > $TMPC << EOF 8854d3b6f6eSbalrog#include <curses.h> 8864d3b6f6eSbalrogint main(void) { return curses_version(); } 8874d3b6f6eSbalrogEOF 888af896aaaSpbrook if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then 8894d3b6f6eSbalrog curses=yes 8904d3b6f6eSbalrog fi 8914d3b6f6eSbalrogfi # test "$curses" 8924d3b6f6eSbalrog 893414f0dabSblueswir1########################################## 894414f0dabSblueswir1# AIO probe 895414f0dabSblueswir1if test "$aio" = "yes" ; then 896414f0dabSblueswir1 aio=no 897414f0dabSblueswir1 cat > $TMPC << EOF 898414f0dabSblueswir1#include <aio.h> 899414f0dabSblueswir1int main(void) { return aio_write(NULL); } 900414f0dabSblueswir1EOF 901414f0dabSblueswir1 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then 902414f0dabSblueswir1 aio=yes 903414f0dabSblueswir1 fi 904414f0dabSblueswir1fi 905414f0dabSblueswir1 906*27463101Saliguori########################################## 907*27463101Saliguori# signalfd probe 908*27463101Saliguoricat > $TMPC << EOF 909*27463101Saliguori#define _GNU_SOURCE 910*27463101Saliguori#include <unistd.h> 911*27463101Saliguori#include <sys/syscall.h> 912*27463101Saliguori#include <signal.h> 913*27463101Saliguoriint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 914*27463101SaliguoriEOF 915*27463101Saliguori 916*27463101Saliguoriif $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then 917*27463101Saliguori signalfd=yes 918*27463101Saliguorifi 919*27463101Saliguori 920*27463101Saliguori########################################## 921*27463101Saliguori# eventfd probe 922*27463101Saliguoricat > $TMPC << EOF 923*27463101Saliguori#define _GNU_SOURCE 924*27463101Saliguori#include <unistd.h> 925*27463101Saliguori#include <sys/syscall.h> 926*27463101Saliguoriint main(void) { return syscall(SYS_eventfd, 0); } 927*27463101SaliguoriEOF 928*27463101Saliguori 929*27463101Saliguoriif $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then 930*27463101Saliguori eventfd=yes 931*27463101Saliguorifi 932*27463101Saliguori 933cc8ae6deSpbrook# Check if tools are available to build documentation. 9346c591867Sthsif [ -x "`which texi2html 2>/dev/null`" ] && \ 9356c591867Sths [ -x "`which pod2man 2>/dev/null`" ]; then 936cc8ae6deSpbrook build_docs="yes" 937cc8ae6deSpbrookfi 938cc8ae6deSpbrook 93911d9f695Sbellardif test "$mingw32" = "yes" ; then 94011d9f695Sbellard if test -z "$prefix" ; then 94111d9f695Sbellard prefix="/c/Program Files/Qemu" 94211d9f695Sbellard fi 943308c3593Spbrook mansuffix="" 944308c3593Spbrook datasuffix="" 945308c3593Spbrook docsuffix="" 946308c3593Spbrook binsuffix="" 94711d9f695Sbellardelse 94811d9f695Sbellard if test -z "$prefix" ; then 94911d9f695Sbellard prefix="/usr/local" 95011d9f695Sbellard fi 951308c3593Spbrook mansuffix="/share/man" 952308c3593Spbrook datasuffix="/share/qemu" 953308c3593Spbrook docsuffix="/share/doc/qemu" 954308c3593Spbrook binsuffix="/bin" 95511d9f695Sbellardfi 9565a67135aSbellard 9577d13299dSbellardecho "Install prefix $prefix" 958308c3593Spbrookecho "BIOS directory $prefix$datasuffix" 959308c3593Spbrookecho "binary directory $prefix$binsuffix" 96011d9f695Sbellardif test "$mingw32" = "no" ; then 961308c3593Spbrookecho "Manual directory $prefix$mansuffix" 96243ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 96311d9f695Sbellardfi 9645a67135aSbellardecho "Source path $source_path" 9657d13299dSbellardecho "C compiler $cc" 96683469015Sbellardecho "Host C compiler $host_cc" 967db7287edSpbrookecho "ARCH_CFLAGS $ARCH_CFLAGS" 9687d13299dSbellardecho "make $make" 9696a882643Spbrookecho "install $install" 970a98fd896Sbellardecho "host CPU $cpu" 971de83cd02Sbellardecho "host big endian $bigendian" 97297a847bcSbellardecho "target list $target_list" 9737d13299dSbellardecho "gprof enabled $gprof" 97405c2a3e7Sbellardecho "profiler $profiler" 97543ce4dfeSbellardecho "static build $static" 97685aa5189Sbellardecho "-Werror enabled $werror" 9775b0753e0Sbellardif test "$darwin" = "yes" ; then 9785b0753e0Sbellard echo "Cocoa support $cocoa" 9795b0753e0Sbellardfi 98097a847bcSbellardecho "SDL support $sdl" 981e4afee97Sbellardif test "$sdl" != "no" ; then 9827c1f25b4Sbellard echo "SDL static link $sdl_static" 983e4afee97Sbellardfi 9844d3b6f6eSbalrogecho "curses support $curses" 98567b915a5Sbellardecho "mingw32 support $mingw32" 9860c58ac1cSmalcecho "Audio drivers $audio_drv_list" 9870c58ac1cSmalcecho "Extra audio cards $audio_card_list" 9888ff9cbf7Smalcecho "Mixer emulation $mixemu" 9898d5d2d4cSthsecho "VNC TLS support $vnc_tls" 9908d5d2d4cSthsif test "$vnc_tls" = "yes" ; then 9918d5d2d4cSths echo " TLS CFLAGS $vnc_tls_cflags" 9928d5d2d4cSths echo " TLS LIBS $vnc_tls_libs" 9938d5d2d4cSthsfi 9943142255cSblueswir1if test -n "$sparc_cpu"; then 9953142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 9963142255cSblueswir1fi 99707f4ddbfSbellardecho "kqemu support $kqemu" 9982e4d9fb1Saurel32echo "brlapi support $brlapi" 999cc8ae6deSpbrookecho "Documentation $build_docs" 1000c5937220Spbrook[ ! -z "$uname_release" ] && \ 1001c5937220Spbrookecho "uname -r $uname_release" 1002bd0c5661Spbrookecho "NPTL support $nptl" 10038a16d273Sthsecho "vde support $vde" 1004414f0dabSblueswir1echo "AIO support $aio" 100567b915a5Sbellard 100697a847bcSbellardif test $sdl_too_old = "yes"; then 100724b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 1008e8cd23deSbellardfi 100920b40c6aSthsif [ -s /tmp/qemu-$$-sdl-config.log ]; then 101020b40c6aSths echo "The error log from compiling the libSDL test is: " 101120b40c6aSths cat /tmp/qemu-$$-sdl-config.log 101220b40c6aSthsfi 101320b40c6aSthsrm -f /tmp/qemu-$$-sdl-config.log 101424b55b96Sbellard#if test "$sdl_static" = "no"; then 101524b55b96Sbellard# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output" 101624b55b96Sbellard#fi 101797a847bcSbellardconfig_mak="config-host.mak" 101897a847bcSbellardconfig_h="config-host.h" 101997a847bcSbellard 10207c1f25b4Sbellard#echo "Creating $config_mak and $config_h" 102197a847bcSbellard 102215d9ca0fSthstest -f $config_h && mv $config_h ${config_h}~ 102315d9ca0fSths 102497a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak 102529517134Spbrookecho "# Configured with: $0 $@" >> $config_mak 102697a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h 102797a847bcSbellard 102897a847bcSbellardecho "prefix=$prefix" >> $config_mak 1029308c3593Spbrookecho "bindir=\${prefix}$binsuffix" >> $config_mak 1030308c3593Spbrookecho "mandir=\${prefix}$mansuffix" >> $config_mak 1031308c3593Spbrookecho "datadir=\${prefix}$datasuffix" >> $config_mak 10324ad5b06dSthsecho "docdir=\${prefix}$docsuffix" >> $config_mak 1033308c3593Spbrookecho "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h 103497a847bcSbellardecho "MAKE=$make" >> $config_mak 10356a882643Spbrookecho "INSTALL=$install" >> $config_mak 103697a847bcSbellardecho "CC=$cc" >> $config_mak 103797a847bcSbellardecho "HOST_CC=$host_cc" >> $config_mak 103897a847bcSbellardecho "AR=$ar" >> $config_mak 103997a847bcSbellardecho "STRIP=$strip -s -R .comment -R .note" >> $config_mak 104040293e58Sbellard# XXX: only use CFLAGS and LDFLAGS ? 104140293e58Sbellard# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross 104240293e58Sbellard# compilation of dyngen tool (useful for win32 build on Linux host) 10436f30fa85Sthsecho "OS_CFLAGS=$OS_CFLAGS" >> $config_mak 10443142255cSblueswir1echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak 10453142255cSblueswir1echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak 10463142255cSblueswir1echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak 104797a847bcSbellardecho "CFLAGS=$CFLAGS" >> $config_mak 104897a847bcSbellardecho "LDFLAGS=$LDFLAGS" >> $config_mak 104967b915a5Sbellardecho "EXESUF=$EXESUF" >> $config_mak 105070956b77Sthsecho "AIOLIBS=$AIOLIBS" >> $config_mak 10512408a527Saurel32case "$cpu" in 10522408a527Saurel32 i386) 105397a847bcSbellard echo "ARCH=i386" >> $config_mak 105497a847bcSbellard echo "#define HOST_I386 1" >> $config_h 10552408a527Saurel32 ;; 10562408a527Saurel32 x86_64) 10570b0babc6Sbellard echo "ARCH=x86_64" >> $config_mak 10580b0babc6Sbellard echo "#define HOST_X86_64 1" >> $config_h 10592408a527Saurel32 ;; 10602408a527Saurel32 alpha) 10610938cda5Saurel32 echo "ARCH=alpha" >> $config_mak 10620938cda5Saurel32 echo "#define HOST_ALPHA 1" >> $config_h 10632408a527Saurel32 ;; 10642408a527Saurel32 armv4b) 1065808c4954Sbellard echo "ARCH=arm" >> $config_mak 1066808c4954Sbellard echo "#define HOST_ARM 1" >> $config_h 10672408a527Saurel32 ;; 10682408a527Saurel32 armv4l) 106997a847bcSbellard echo "ARCH=arm" >> $config_mak 107097a847bcSbellard echo "#define HOST_ARM 1" >> $config_h 10712408a527Saurel32 ;; 10722408a527Saurel32 cris) 1073e7daa605Sths echo "ARCH=cris" >> $config_mak 1074e7daa605Sths echo "#define HOST_CRIS 1" >> $config_h 10752408a527Saurel32 ;; 10762408a527Saurel32 hppa) 1077f54b3f92Saurel32 echo "ARCH=hppa" >> $config_mak 1078f54b3f92Saurel32 echo "#define HOST_HPPA 1" >> $config_h 10792408a527Saurel32 ;; 10802408a527Saurel32 ia64) 108197a847bcSbellard echo "ARCH=ia64" >> $config_mak 108297a847bcSbellard echo "#define HOST_IA64 1" >> $config_h 10832408a527Saurel32 ;; 10842408a527Saurel32 m68k) 108538ca2abcSbellard echo "ARCH=m68k" >> $config_mak 108638ca2abcSbellard echo "#define HOST_M68K 1" >> $config_h 10872408a527Saurel32 ;; 10882408a527Saurel32 mips) 10890938cda5Saurel32 echo "ARCH=mips" >> $config_mak 10900938cda5Saurel32 echo "#define HOST_MIPS 1" >> $config_h 10912408a527Saurel32 ;; 10922408a527Saurel32 mips64) 10930938cda5Saurel32 echo "ARCH=mips64" >> $config_mak 10940938cda5Saurel32 echo "#define HOST_MIPS64 1" >> $config_h 10952408a527Saurel32 ;; 10962408a527Saurel32 powerpc) 1097810260a8Smalc if test "$hostlongbits" = "32"; then 10980938cda5Saurel32 echo "ARCH=ppc" >> $config_mak 10990938cda5Saurel32 echo "#define HOST_PPC 1" >> $config_h 1100810260a8Smalc else 1101810260a8Smalc echo "ARCH=ppc64" >> $config_mak 1102810260a8Smalc echo "#define HOST_PPC64 1" >> $config_h 1103810260a8Smalc fi 11042408a527Saurel32 ;; 11052408a527Saurel32 s390) 11060938cda5Saurel32 echo "ARCH=s390" >> $config_mak 11070938cda5Saurel32 echo "#define HOST_S390 1" >> $config_h 11082408a527Saurel32 ;; 11092408a527Saurel32 sparc) 11100938cda5Saurel32 echo "ARCH=sparc" >> $config_mak 11110938cda5Saurel32 echo "#define HOST_SPARC 1" >> $config_h 11122408a527Saurel32 ;; 11132408a527Saurel32 sparc64) 11140938cda5Saurel32 echo "ARCH=sparc64" >> $config_mak 11150938cda5Saurel32 echo "#define HOST_SPARC64 1" >> $config_h 11162408a527Saurel32 ;; 11172408a527Saurel32 *) 11183142255cSblueswir1 echo "Unsupported CPU = $cpu" 11197d13299dSbellard exit 1 11202408a527Saurel32 ;; 11212408a527Saurel32esac 11227d13299dSbellardif test "$bigendian" = "yes" ; then 112397a847bcSbellard echo "WORDS_BIGENDIAN=yes" >> $config_mak 112497a847bcSbellard echo "#define WORDS_BIGENDIAN 1" >> $config_h 112597a847bcSbellardfi 1126b6853697Sbellardecho "#define HOST_LONG_BITS $hostlongbits" >> $config_h 112767b915a5Sbellardif test "$mingw32" = "yes" ; then 112867b915a5Sbellard echo "CONFIG_WIN32=yes" >> $config_mak 112911d9f695Sbellard echo "#define CONFIG_WIN32 1" >> $config_h 1130210fa556Spbrookelse 1131210fa556Spbrook cat > $TMPC << EOF 1132210fa556Spbrook#include <byteswap.h> 1133210fa556Spbrookint main(void) { return bswap_32(0); } 1134210fa556SpbrookEOF 1135db7287edSpbrook if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then 113697a847bcSbellard echo "#define HAVE_BYTESWAP_H 1" >> $config_h 113767b915a5Sbellard fi 1138210fa556Spbrookfi 1139128ab2ffSblueswir1 1140128ab2ffSblueswir1if [ "$openbsd" = "yes" ] ; then 1141128ab2ffSblueswir1 echo "#define ENOTSUP 4096" >> $config_h 1142128ab2ffSblueswir1fi 1143128ab2ffSblueswir1 114483fb7adfSbellardif test "$darwin" = "yes" ; then 114583fb7adfSbellard echo "CONFIG_DARWIN=yes" >> $config_mak 114683fb7adfSbellard echo "#define CONFIG_DARWIN 1" >> $config_h 114783fb7adfSbellardfi 1148ec530c81Sbellardif test "$solaris" = "yes" ; then 1149ec530c81Sbellard echo "CONFIG_SOLARIS=yes" >> $config_mak 115038cfa06cSbellard echo "#define HOST_SOLARIS $solarisrev" >> $config_h 11510475a5caSths if test "$needs_libsunmath" = "yes" ; then 11520475a5caSths echo "NEEDS_LIBSUNMATH=yes" >> $config_mak 11530475a5caSths echo "#define NEEDS_LIBSUNMATH 1" >> $config_h 11540475a5caSths fi 1155ec530c81Sbellardfi 11563142255cSblueswir1if test -n "$sparc_cpu"; then 11573142255cSblueswir1 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak 11583142255cSblueswir1 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h 11593142255cSblueswir1fi 116067b915a5Sbellardif test "$gdbstub" = "yes" ; then 116167b915a5Sbellard echo "CONFIG_GDBSTUB=yes" >> $config_mak 116267b915a5Sbellard echo "#define CONFIG_GDBSTUB 1" >> $config_h 116367b915a5Sbellardfi 116497a847bcSbellardif test "$gprof" = "yes" ; then 116597a847bcSbellard echo "TARGET_GPROF=yes" >> $config_mak 116697a847bcSbellard echo "#define HAVE_GPROF 1" >> $config_h 116797a847bcSbellardfi 116897a847bcSbellardif test "$static" = "yes" ; then 116997a847bcSbellard echo "CONFIG_STATIC=yes" >> $config_mak 117050863472Sbellard echo "#define CONFIG_STATIC 1" >> $config_h 117197a847bcSbellardfi 117205c2a3e7Sbellardif test $profiler = "yes" ; then 117305c2a3e7Sbellard echo "#define CONFIG_PROFILER 1" >> $config_h 117405c2a3e7Sbellardfi 1175c20709aaSbellardif test "$slirp" = "yes" ; then 1176c20709aaSbellard echo "CONFIG_SLIRP=yes" >> $config_mak 1177c20709aaSbellard echo "#define CONFIG_SLIRP 1" >> $config_h 1178c20709aaSbellardfi 11798a16d273Sthsif test "$vde" = "yes" ; then 11808a16d273Sths echo "CONFIG_VDE=yes" >> $config_mak 11818a16d273Sths echo "#define CONFIG_VDE 1" >> $config_h 11828a16d273Sths echo "VDE_LIBS=-lvdeplug" >> $config_mak 11838a16d273Sthsfi 11840c58ac1cSmalcfor card in $audio_card_list; do 1185f6e5889eSpbrook def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'` 11860c58ac1cSmalc echo "$def=yes" >> $config_mak 11870c58ac1cSmalc echo "#define $def 1" >> $config_h 11880c58ac1cSmalcdone 11890c58ac1cSmalcecho "#define AUDIO_DRIVERS \\" >> $config_h 11900c58ac1cSmalcfor drv in $audio_drv_list; do 11910c58ac1cSmalc echo " &${drv}_audio_driver, \\" >>$config_h 1192f6e5889eSpbrook def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'` 11930c58ac1cSmalc echo "$def=yes" >> $config_mak 1194923e4521Smalc if test "$drv" = "fmod"; then 11950c58ac1cSmalc echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak 11960c58ac1cSmalc echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak 11972f6a1ab0Sblueswir1 elif test "$drv" = "oss"; then 11982f6a1ab0Sblueswir1 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak 1199fb065187Sbellard fi 12000c58ac1cSmalcdone 12010c58ac1cSmalcecho "" >>$config_h 12028ff9cbf7Smalcif test "$mixemu" = "yes" ; then 12038ff9cbf7Smalc echo "CONFIG_MIXEMU=yes" >> $config_mak 12048ff9cbf7Smalc echo "#define CONFIG_MIXEMU 1" >> $config_h 12058ff9cbf7Smalcfi 12068d5d2d4cSthsif test "$vnc_tls" = "yes" ; then 12078d5d2d4cSths echo "CONFIG_VNC_TLS=yes" >> $config_mak 12088d5d2d4cSths echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak 12098d5d2d4cSths echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak 12108d5d2d4cSths echo "#define CONFIG_VNC_TLS 1" >> $config_h 12118d5d2d4cSthsfi 1212b1a550a0Spbrookqemu_version=`head $source_path/VERSION` 1213b1a550a0Spbrookecho "VERSION=$qemu_version" >>$config_mak 1214d4b8f039Spbrookecho "#define QEMU_VERSION \"$qemu_version\"" >> $config_h 121597a847bcSbellard 121697a847bcSbellardecho "SRC_PATH=$source_path" >> $config_mak 1217ad064840Spbrookif [ "$source_path_used" = "yes" ]; then 1218ad064840Spbrook echo "VPATH=$source_path" >> $config_mak 1219ad064840Spbrookfi 122097a847bcSbellardecho "TARGET_DIRS=$target_list" >> $config_mak 1221cc8ae6deSpbrookif [ "$build_docs" = "yes" ] ; then 1222cc8ae6deSpbrook echo "BUILD_DOCS=yes" >> $config_mak 1223cc8ae6deSpbrookfi 122449ecc3faSbellardif test "$static" = "yes"; then 122549ecc3faSbellard sdl1=$sdl_static 122649ecc3faSbellardelse 122749ecc3faSbellard sdl1=$sdl 122849ecc3faSbellardfi 122949ecc3faSbellardif test "$sdl1" = "yes" ; then 123049ecc3faSbellard echo "#define CONFIG_SDL 1" >> $config_h 123149ecc3faSbellard echo "CONFIG_SDL=yes" >> $config_mak 123249ecc3faSbellard if test "$target_softmmu" = "no" -o "$static" = "yes"; then 123349ecc3faSbellard echo "SDL_LIBS=$sdl_static_libs" >> $config_mak 123449ecc3faSbellard else 123549ecc3faSbellard echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak 123649ecc3faSbellard fi 123749ecc3faSbellard if [ "${aa}" = "yes" ] ; then 123849ecc3faSbellard echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak 123949ecc3faSbellard else 124049ecc3faSbellard echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak 124149ecc3faSbellard fi 124249ecc3faSbellardfi 124349ecc3faSbellardif test "$cocoa" = "yes" ; then 124449ecc3faSbellard echo "#define CONFIG_COCOA 1" >> $config_h 124549ecc3faSbellard echo "CONFIG_COCOA=yes" >> $config_mak 124649ecc3faSbellardfi 12474d3b6f6eSbalrogif test "$curses" = "yes" ; then 12484d3b6f6eSbalrog echo "#define CONFIG_CURSES 1" >> $config_h 12494d3b6f6eSbalrog echo "CONFIG_CURSES=yes" >> $config_mak 12504d3b6f6eSbalrog echo "CURSES_LIBS=-lcurses" >> $config_mak 12514d3b6f6eSbalrogfi 12522e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 12532e4d9fb1Saurel32 echo "CONFIG_BRLAPI=yes" >> $config_mak 12542e4d9fb1Saurel32 echo "#define CONFIG_BRLAPI 1" >> $config_h 12552e4d9fb1Saurel32 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak 12562e4d9fb1Saurel32fi 1257414f0dabSblueswir1if test "$aio" = "yes" ; then 1258414f0dabSblueswir1 echo "#define CONFIG_AIO 1" >> $config_h 1259a3392f9bSaliguori echo "CONFIG_AIO=yes" >> $config_mak 1260414f0dabSblueswir1fi 1261*27463101Saliguoriif test "$signalfd" = "yes" ; then 1262*27463101Saliguori echo "#define CONFIG_signalfd 1" >> $config_h 1263*27463101Saliguorifi 1264*27463101Saliguoriif test "$eventfd" = "yes" ; then 1265*27463101Saliguori echo "#define CONFIG_eventfd 1" >> $config_h 1266*27463101Saliguorifi 126797a847bcSbellard 126883fb7adfSbellard# XXX: suppress that 12697d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 127043003046Sbellard echo "#define O_LARGEFILE 0" >> $config_h 127143003046Sbellard echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h 12727d3505c5Sbellard echo "#define _BSD 1" >> $config_h 12737d3505c5Sbellardfi 12747d3505c5Sbellard 1275c5937220Spbrookecho "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h 1276c5937220Spbrook 1277c39e3338Spbrooktools= 1278c39e3338Spbrookif test `expr "$target_list" : ".*softmmu.*"` != 0 ; then 1279c39e3338Spbrook tools="qemu-img\$(EXESUF) $tools" 12807a5ca864Sbellard if [ "$linux" = "yes" ] ; then 12817a5ca864Sbellard tools="qemu-nbd\$(EXESUF) $tools" 12827a5ca864Sbellard fi 1283c39e3338Spbrookfi 1284c39e3338Spbrookecho "TOOLS=$tools" >> $config_mak 1285c39e3338Spbrook 128615d9ca0fSthstest -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h 128715d9ca0fSths 128897a847bcSbellardfor target in $target_list; do 128997a847bcSbellardtarget_dir="$target" 129097a847bcSbellardconfig_mak=$target_dir/config.mak 129197a847bcSbellardconfig_h=$target_dir/config.h 129297a847bcSbellardtarget_cpu=`echo $target | cut -d '-' -f 1` 129397a847bcSbellardtarget_bigendian="no" 1294808c4954Sbellard[ "$target_cpu" = "armeb" ] && target_bigendian=yes 12950938cda5Saurel32[ "$target_cpu" = "m68k" ] && target_bigendian=yes 12960938cda5Saurel32[ "$target_cpu" = "mips" ] && target_bigendian=yes 12970938cda5Saurel32[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes 12980938cda5Saurel32[ "$target_cpu" = "mips64" ] && target_bigendian=yes 129967867308Sbellard[ "$target_cpu" = "ppc" ] && target_bigendian=yes 1300d4082e95Sj_mayer[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes 130122f8a8b3Sj_mayer[ "$target_cpu" = "ppc64" ] && target_bigendian=yes 1302e85e7c6eSj_mayer[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes 1303908f52b0Spbrook[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes 13040938cda5Saurel32[ "$target_cpu" = "sparc" ] && target_bigendian=yes 13050938cda5Saurel32[ "$target_cpu" = "sparc64" ] && target_bigendian=yes 13060938cda5Saurel32[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes 130797a847bcSbellardtarget_softmmu="no" 1308997344f3Sbellardtarget_user_only="no" 1309831b7825Sthstarget_linux_user="no" 1310831b7825Sthstarget_darwin_user="no" 13119e407a85Spbrookcase "$target" in 13129e407a85Spbrook ${target_cpu}-softmmu) 13139e407a85Spbrook target_softmmu="yes" 13149e407a85Spbrook ;; 13159e407a85Spbrook ${target_cpu}-linux-user) 13169e407a85Spbrook target_user_only="yes" 13179e407a85Spbrook target_linux_user="yes" 13189e407a85Spbrook ;; 13199e407a85Spbrook ${target_cpu}-darwin-user) 13209e407a85Spbrook target_user_only="yes" 1321831b7825Sths target_darwin_user="yes" 13229e407a85Spbrook ;; 13239e407a85Spbrook *) 13249e407a85Spbrook echo "ERROR: Target '$target' not recognised" 13259e407a85Spbrook exit 1 13269e407a85Spbrook ;; 13279e407a85Spbrookesac 1328831b7825Sths 132997ccc689Sbellardif test "$target_user_only" = "no" -a "$check_gfx" = "yes" \ 133097ccc689Sbellard -a "$sdl" = "no" -a "$cocoa" = "no" ; then 133197ccc689Sbellard echo "ERROR: QEMU requires SDL or Cocoa for graphical output" 13329c038506Spbrook echo "To build QEMU without graphical output configure with --disable-gfx-check" 13334d3b6f6eSbalrog echo "Note that this will disable all output from the virtual graphics card" 13344d3b6f6eSbalrog echo "except through VNC or curses." 133597ccc689Sbellard exit 1; 133697ccc689Sbellardfi 133797ccc689Sbellard 13387c1f25b4Sbellard#echo "Creating $config_mak, $config_h and $target_dir/Makefile" 133997a847bcSbellard 134015d9ca0fSthstest -f $config_h && mv $config_h ${config_h}~ 134115d9ca0fSths 134297a847bcSbellardmkdir -p $target_dir 1343158142c2Sbellardmkdir -p $target_dir/fpu 134457fec1feSbellardmkdir -p $target_dir/tcg 1345831b7825Sthsif test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then 134669de927cSbellard mkdir -p $target_dir/nwfpe 134769de927cSbellardfi 134869de927cSbellard 1349ec530c81Sbellard# 1350ec530c81Sbellard# don't use ln -sf as not all "ln -sf" over write the file/link 1351ec530c81Sbellard# 1352ec530c81Sbellardrm -f $target_dir/Makefile 1353ec530c81Sbellardln -s $source_path/Makefile.target $target_dir/Makefile 1354ec530c81Sbellard 135597a847bcSbellard 135697a847bcSbellardecho "# Automatically generated by configure - do not modify" > $config_mak 135797a847bcSbellardecho "/* Automatically generated by configure - do not modify */" > $config_h 135897a847bcSbellard 135997a847bcSbellard 136097a847bcSbellardecho "include ../config-host.mak" >> $config_mak 136197a847bcSbellardecho "#include \"../config-host.h\"" >> $config_h 13621e43adfcSbellard 1363e5fe0c52Spbrookbflt="no" 1364cb33da57Sblueswir1elfload32="no" 1365bd0c5661Spbrooktarget_nptl="no" 13661e43adfcSbellardinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"` 13671e43adfcSbellardecho "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h 136897a847bcSbellard 13692408a527Saurel32case "$target_cpu" in 13702408a527Saurel32 i386) 137197a847bcSbellard echo "TARGET_ARCH=i386" >> $config_mak 137297a847bcSbellard echo "#define TARGET_ARCH \"i386\"" >> $config_h 137397a847bcSbellard echo "#define TARGET_I386 1" >> $config_h 1374da260249Sbellard if test $kqemu = "yes" -a "$target_softmmu" = "yes" 13752408a527Saurel32 then 1376824d560fSbellard echo "#define USE_KQEMU 1" >> $config_h 1377824d560fSbellard fi 1378f2bf094eSaurel32 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.` 137911d1fdb0Spbrook if test -n "$gcc3minver" && test $gcc3minver -gt 3 1380f2bf094eSaurel32 then 1381f2bf094eSaurel32 echo "HAVE_GT_GCC_3_3=true" >> $config_mak 1382f2bf094eSaurel32 else 1383f2bf094eSaurel32 echo "HAVE_GT_GCC_3_3=false" >> $config_mak 1384f2bf094eSaurel32 fi 13852408a527Saurel32 ;; 13862408a527Saurel32 x86_64) 13870938cda5Saurel32 echo "TARGET_ARCH=x86_64" >> $config_mak 13880938cda5Saurel32 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h 13890938cda5Saurel32 echo "#define TARGET_I386 1" >> $config_h 13900938cda5Saurel32 echo "#define TARGET_X86_64 1" >> $config_h 13912408a527Saurel32 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64" 13922408a527Saurel32 then 13930938cda5Saurel32 echo "#define USE_KQEMU 1" >> $config_h 13940938cda5Saurel32 fi 13952408a527Saurel32 ;; 13962408a527Saurel32 alpha) 13970938cda5Saurel32 echo "TARGET_ARCH=alpha" >> $config_mak 1398bf6247fbSblueswir1 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak 13990938cda5Saurel32 echo "#define TARGET_ARCH \"alpha\"" >> $config_h 14000938cda5Saurel32 echo "#define TARGET_ALPHA 1" >> $config_h 1401bf6247fbSblueswir1 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h 14022408a527Saurel32 ;; 14032408a527Saurel32 arm|armeb) 140497a847bcSbellard echo "TARGET_ARCH=arm" >> $config_mak 140597a847bcSbellard echo "#define TARGET_ARCH \"arm\"" >> $config_h 140697a847bcSbellard echo "#define TARGET_ARM 1" >> $config_h 1407e5fe0c52Spbrook bflt="yes" 1408bd0c5661Spbrook target_nptl="yes" 14092408a527Saurel32 ;; 14102408a527Saurel32 cris) 14110938cda5Saurel32 echo "TARGET_ARCH=cris" >> $config_mak 14120938cda5Saurel32 echo "#define TARGET_ARCH \"cris\"" >> $config_h 14130938cda5Saurel32 echo "#define TARGET_CRIS 1" >> $config_h 14142408a527Saurel32 ;; 14152408a527Saurel32 m68k) 14160938cda5Saurel32 echo "TARGET_ARCH=m68k" >> $config_mak 14170938cda5Saurel32 echo "#define TARGET_ARCH \"m68k\"" >> $config_h 14180938cda5Saurel32 echo "#define TARGET_M68K 1" >> $config_h 14190938cda5Saurel32 bflt="yes" 14202408a527Saurel32 ;; 14212408a527Saurel32 mips|mipsel) 14220938cda5Saurel32 echo "TARGET_ARCH=mips" >> $config_mak 14230938cda5Saurel32 echo "#define TARGET_ARCH \"mips\"" >> $config_h 14240938cda5Saurel32 echo "#define TARGET_MIPS 1" >> $config_h 14250938cda5Saurel32 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h 14262408a527Saurel32 ;; 14272408a527Saurel32 mipsn32|mipsn32el) 14280938cda5Saurel32 echo "TARGET_ARCH=mipsn32" >> $config_mak 14290938cda5Saurel32 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h 14300938cda5Saurel32 echo "#define TARGET_MIPS 1" >> $config_h 14310938cda5Saurel32 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h 14322408a527Saurel32 ;; 14332408a527Saurel32 mips64|mips64el) 14340938cda5Saurel32 echo "TARGET_ARCH=mips64" >> $config_mak 14350938cda5Saurel32 echo "#define TARGET_ARCH \"mips64\"" >> $config_h 14360938cda5Saurel32 echo "#define TARGET_MIPS 1" >> $config_h 14370938cda5Saurel32 echo "#define TARGET_MIPS64 1" >> $config_h 14380938cda5Saurel32 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h 14392408a527Saurel32 ;; 14402408a527Saurel32 ppc) 144167867308Sbellard echo "TARGET_ARCH=ppc" >> $config_mak 1442bf6247fbSblueswir1 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak 144367867308Sbellard echo "#define TARGET_ARCH \"ppc\"" >> $config_h 144467867308Sbellard echo "#define TARGET_PPC 1" >> $config_h 1445bf6247fbSblueswir1 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h 14462408a527Saurel32 ;; 14472408a527Saurel32 ppcemb) 1448d4082e95Sj_mayer echo "TARGET_ARCH=ppcemb" >> $config_mak 1449e85e7c6eSj_mayer echo "TARGET_ABI_DIR=ppc" >> $config_mak 1450bf6247fbSblueswir1 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak 1451d4082e95Sj_mayer echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h 1452d4082e95Sj_mayer echo "#define TARGET_PPC 1" >> $config_h 1453d4082e95Sj_mayer echo "#define TARGET_PPCEMB 1" >> $config_h 1454ec5b78cdSblueswir1 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h 14552408a527Saurel32 ;; 14562408a527Saurel32 ppc64) 145722f8a8b3Sj_mayer echo "TARGET_ARCH=ppc64" >> $config_mak 1458f85e9a68Sj_mayer echo "TARGET_ABI_DIR=ppc" >> $config_mak 1459bf6247fbSblueswir1 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak 14605e692ecdSj_mayer echo "#define TARGET_ARCH \"ppc64\"" >> $config_h 146122f8a8b3Sj_mayer echo "#define TARGET_PPC 1" >> $config_h 146222f8a8b3Sj_mayer echo "#define TARGET_PPC64 1" >> $config_h 1463bf6247fbSblueswir1 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h 14642408a527Saurel32 ;; 14652408a527Saurel32 ppc64abi32) 1466e85e7c6eSj_mayer echo "TARGET_ARCH=ppc64" >> $config_mak 1467e85e7c6eSj_mayer echo "TARGET_ABI_DIR=ppc" >> $config_mak 14680c64b9cdSbellard echo "TARGET_ARCH2=ppc64abi32" >> $config_mak 1469bf6247fbSblueswir1 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak 14705e692ecdSj_mayer echo "#define TARGET_ARCH \"ppc64\"" >> $config_h 1471e85e7c6eSj_mayer echo "#define TARGET_PPC 1" >> $config_h 1472e85e7c6eSj_mayer echo "#define TARGET_PPC64 1" >> $config_h 1473e85e7c6eSj_mayer echo "#define TARGET_ABI32 1" >> $config_h 1474bf6247fbSblueswir1 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h 14752408a527Saurel32 ;; 14762408a527Saurel32 sh4|sh4eb) 1477fdf9b3e8Sbellard echo "TARGET_ARCH=sh4" >> $config_mak 1478fdf9b3e8Sbellard echo "#define TARGET_ARCH \"sh4\"" >> $config_h 1479fdf9b3e8Sbellard echo "#define TARGET_SH4 1" >> $config_h 14804dbed897Spbrook bflt="yes" 14810b6d3ae0Saurel32 target_nptl="yes" 14822408a527Saurel32 ;; 14832408a527Saurel32 sparc) 14840938cda5Saurel32 echo "TARGET_ARCH=sparc" >> $config_mak 14850938cda5Saurel32 echo "#define TARGET_ARCH \"sparc\"" >> $config_h 14860938cda5Saurel32 echo "#define TARGET_SPARC 1" >> $config_h 14872408a527Saurel32 ;; 14882408a527Saurel32 sparc64) 14890938cda5Saurel32 echo "TARGET_ARCH=sparc64" >> $config_mak 14900938cda5Saurel32 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h 14910938cda5Saurel32 echo "#define TARGET_SPARC 1" >> $config_h 14920938cda5Saurel32 echo "#define TARGET_SPARC64 1" >> $config_h 14930938cda5Saurel32 elfload32="yes" 14942408a527Saurel32 ;; 14952408a527Saurel32 sparc32plus) 14960938cda5Saurel32 echo "TARGET_ARCH=sparc64" >> $config_mak 14970938cda5Saurel32 echo "TARGET_ABI_DIR=sparc" >> $config_mak 14980938cda5Saurel32 echo "TARGET_ARCH2=sparc32plus" >> $config_mak 14990938cda5Saurel32 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h 15000938cda5Saurel32 echo "#define TARGET_SPARC 1" >> $config_h 15010938cda5Saurel32 echo "#define TARGET_SPARC64 1" >> $config_h 15020938cda5Saurel32 echo "#define TARGET_ABI32 1" >> $config_h 15032408a527Saurel32 ;; 15042408a527Saurel32 *) 1505de83cd02Sbellard echo "Unsupported target CPU" 1506de83cd02Sbellard exit 1 15072408a527Saurel32 ;; 15082408a527Saurel32esac 1509de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 151097a847bcSbellard echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak 151197a847bcSbellard echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h 151297a847bcSbellardfi 151397a847bcSbellardif test "$target_softmmu" = "yes" ; then 151497a847bcSbellard echo "CONFIG_SOFTMMU=yes" >> $config_mak 151597a847bcSbellard echo "#define CONFIG_SOFTMMU 1" >> $config_h 1516de83cd02Sbellardfi 1517997344f3Sbellardif test "$target_user_only" = "yes" ; then 1518997344f3Sbellard echo "CONFIG_USER_ONLY=yes" >> $config_mak 1519997344f3Sbellard echo "#define CONFIG_USER_ONLY 1" >> $config_h 1520997344f3Sbellardfi 1521831b7825Sthsif test "$target_linux_user" = "yes" ; then 1522831b7825Sths echo "CONFIG_LINUX_USER=yes" >> $config_mak 1523831b7825Sths echo "#define CONFIG_LINUX_USER 1" >> $config_h 1524831b7825Sthsfi 1525831b7825Sthsif test "$target_darwin_user" = "yes" ; then 1526831b7825Sths echo "CONFIG_DARWIN_USER=yes" >> $config_mak 1527831b7825Sths echo "#define CONFIG_DARWIN_USER 1" >> $config_h 1528831b7825Sthsfi 1529de83cd02Sbellard 15300938cda5Saurel32if test "$target_cpu" = "arm" \ 15310938cda5Saurel32 -o "$target_cpu" = "armeb" \ 15320938cda5Saurel32 -o "$target_cpu" = "m68k" \ 15330938cda5Saurel32 -o "$target_cpu" = "mips" \ 15340938cda5Saurel32 -o "$target_cpu" = "mipsel" \ 15350938cda5Saurel32 -o "$target_cpu" = "mipsn32" \ 15360938cda5Saurel32 -o "$target_cpu" = "mipsn32el" \ 15370938cda5Saurel32 -o "$target_cpu" = "mips64" \ 15380938cda5Saurel32 -o "$target_cpu" = "mips64el" \ 15390938cda5Saurel32 -o "$target_cpu" = "sparc" \ 15400938cda5Saurel32 -o "$target_cpu" = "sparc64" \ 15410938cda5Saurel32 -o "$target_cpu" = "sparc32plus"; then 1542158142c2Sbellard echo "CONFIG_SOFTFLOAT=yes" >> $config_mak 1543158142c2Sbellard echo "#define CONFIG_SOFTFLOAT 1" >> $config_h 1544158142c2Sbellardfi 1545e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 1546e5fe0c52Spbrook echo "TARGET_HAS_BFLT=yes" >> $config_mak 1547e5fe0c52Spbrook echo "#define TARGET_HAS_BFLT 1" >> $config_h 1548e5fe0c52Spbrookfi 1549bd0c5661Spbrookif test "$target_user_only" = "yes" \ 1550bd0c5661Spbrook -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then 1551bd0c5661Spbrook echo "#define USE_NPTL 1" >> $config_h 1552bd0c5661Spbrookfi 1553cb33da57Sblueswir1# 32 bit ELF loader in addition to native 64 bit loader? 1554cb33da57Sblueswir1if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then 1555cb33da57Sblueswir1 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak 1556cb33da57Sblueswir1 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h 1557cb33da57Sblueswir1fi 15585b0753e0Sbellard 155915d9ca0fSthstest -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h 156015d9ca0fSths 156197a847bcSbellarddone # for target in $targets 15627d13299dSbellard 15637d13299dSbellard# build tree in object directory if source path is different from current one 15647d13299dSbellardif test "$source_path_used" = "yes" ; then 156549ecc3faSbellard DIRS="tests tests/cris slirp audio" 15667d13299dSbellard FILES="Makefile tests/Makefile" 1567e7daa605Sths FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" 1568e1ffb0f1Sedgar_igl FILES="$FILES tests/test-mmap.c" 15697d13299dSbellard for dir in $DIRS ; do 15707d13299dSbellard mkdir -p $dir 15717d13299dSbellard done 1572ec530c81Sbellard # remove the link and recreate it, as not all "ln -sf" overwrite the link 15737d13299dSbellard for f in $FILES ; do 1574ec530c81Sbellard rm -f $f 1575ec530c81Sbellard ln -s $source_path/$f $f 15767d13299dSbellard done 15777d13299dSbellardfi 15787d13299dSbellard 157997a847bcSbellardrm -f $TMPO $TMPC $TMPE $TMPS 1580