17d13299dSbellard#!/bin/sh 27d13299dSbellard# 33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard 47d13299dSbellard# 58cd05ab6SPeter Maydell 699519e67SCornelia Huck# Unset some variables known to interfere with behavior of common tools, 799519e67SCornelia Huck# just as autoconf does. 899519e67SCornelia HuckCLICOLOR_FORCE= GREP_OPTIONS= 999519e67SCornelia Huckunset CLICOLOR_FORCE GREP_OPTIONS 1099519e67SCornelia Huck 115e4dfd3dSJohn Snow# Don't allow CCACHE, if present, to use cached results of compile tests! 125e4dfd3dSJohn Snowexport CCACHE_RECACHE=yes 135e4dfd3dSJohn Snow 148cd05ab6SPeter Maydell# Temporary directory used for files created while 158cd05ab6SPeter Maydell# configure runs. Since it is in the build directory 168cd05ab6SPeter Maydell# we can safely blow away any previous version of it 178cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete 188cd05ab6SPeter Maydell# it when configure exits.) 198cd05ab6SPeter MaydellTMPDIR1="config-temp" 208cd05ab6SPeter Maydellrm -rf "${TMPDIR1}" 218cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}" 228cd05ab6SPeter Maydellif [ $? -ne 0 ]; then 238cd05ab6SPeter Maydell echo "ERROR: failed to create temporary directory" 248cd05ab6SPeter Maydell exit 1 257d13299dSbellardfi 267d13299dSbellard 278cd05ab6SPeter MaydellTMPB="qemu-conf" 288cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c" 2966518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o" 309c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx" 318cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe" 326969ec6cSJames ClarkeTMPMO="${TMPDIR1}/${TMPB}.mo" 337d13299dSbellard 34da1d85e3SGerd Hoffmannrm -f config.log 359ac81bbbSmalc 36b48e3611SPeter Maydell# Print a helpful header at the top of config.log 37b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 38979ae168SPeter Maydellprintf "# Configured with:" >> config.log 39979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 40979ae168SPeter Maydellecho >> config.log 41b48e3611SPeter Maydellecho "#" >> config.log 42b48e3611SPeter Maydell 43d880a3baSPaolo Bonziniprint_error() { 44d880a3baSPaolo Bonzini (echo 4576ad07a4SPeter Maydell echo "ERROR: $1" 4676ad07a4SPeter Maydell while test -n "$2"; do 4776ad07a4SPeter Maydell echo " $2" 4876ad07a4SPeter Maydell shift 4976ad07a4SPeter Maydell done 50d880a3baSPaolo Bonzini echo) >&2 51d880a3baSPaolo Bonzini} 52d880a3baSPaolo Bonzini 53d880a3baSPaolo Bonzinierror_exit() { 54d880a3baSPaolo Bonzini print_error "$@" 5576ad07a4SPeter Maydell exit 1 5676ad07a4SPeter Maydell} 5776ad07a4SPeter Maydell 589c83ffd8SPeter Maydelldo_compiler() { 599c83ffd8SPeter Maydell # Run the compiler, capturing its output to the log. First argument 609c83ffd8SPeter Maydell # is compiler binary to execute. 619c83ffd8SPeter Maydell local compiler="$1" 629c83ffd8SPeter Maydell shift 638bbe05d7SIan Jackson if test -n "$BASH_VERSION"; then eval ' 648bbe05d7SIan Jackson echo >>config.log " 658bbe05d7SIan Jacksonfuncs: ${FUNCNAME[*]} 668bbe05d7SIan Jacksonlines: ${BASH_LINENO[*]}" 678bbe05d7SIan Jackson '; fi 689c83ffd8SPeter Maydell echo $compiler "$@" >> config.log 699c83ffd8SPeter Maydell $compiler "$@" >> config.log 2>&1 || return $? 708dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 718dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 728dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 738dc38a78SPeter Maydell # obvious to developers. 748dc38a78SPeter Maydell if test "$werror" != "yes"; then 758dc38a78SPeter Maydell return 0 768dc38a78SPeter Maydell fi 778dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 788dc38a78SPeter Maydell case "$*" in 798dc38a78SPeter Maydell *-Werror*) 808dc38a78SPeter Maydell return 0 818dc38a78SPeter Maydell ;; 828dc38a78SPeter Maydell esac 839c83ffd8SPeter Maydell echo $compiler -Werror "$@" >> config.log 849c83ffd8SPeter Maydell $compiler -Werror "$@" >> config.log 2>&1 && return $? 8576ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 8676ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 8776ad07a4SPeter Maydell "will be at the bottom of config.log." \ 8876ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 898dc38a78SPeter Maydell} 908dc38a78SPeter Maydell 919c83ffd8SPeter Maydelldo_cc() { 929c83ffd8SPeter Maydell do_compiler "$cc" "$@" 939c83ffd8SPeter Maydell} 949c83ffd8SPeter Maydell 959c83ffd8SPeter Maydelldo_cxx() { 969c83ffd8SPeter Maydell do_compiler "$cxx" "$@" 979c83ffd8SPeter Maydell} 989c83ffd8SPeter Maydell 999c83ffd8SPeter Maydellupdate_cxxflags() { 1009c83ffd8SPeter Maydell # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 1019c83ffd8SPeter Maydell # options which some versions of GCC's C++ compiler complain about 1029c83ffd8SPeter Maydell # because they only make sense for C programs. 10311cde1c8SBruno Dominguez QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS" 10411cde1c8SBruno Dominguez 1059c83ffd8SPeter Maydell for arg in $QEMU_CFLAGS; do 1069c83ffd8SPeter Maydell case $arg in 1079c83ffd8SPeter Maydell -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 1089c83ffd8SPeter Maydell -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 1099c83ffd8SPeter Maydell ;; 1109c83ffd8SPeter Maydell *) 1119c83ffd8SPeter Maydell QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 1129c83ffd8SPeter Maydell ;; 1139c83ffd8SPeter Maydell esac 1149c83ffd8SPeter Maydell done 1159c83ffd8SPeter Maydell} 1169c83ffd8SPeter Maydell 11752166aa0SJuan Quintelacompile_object() { 118fd0e6053SJohn Snow local_cflags="$1" 119fd0e6053SJohn Snow do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC 12052166aa0SJuan Quintela} 12152166aa0SJuan Quintela 12252166aa0SJuan Quintelacompile_prog() { 12352166aa0SJuan Quintela local_cflags="$1" 12452166aa0SJuan Quintela local_ldflags="$2" 1258dc38a78SPeter Maydell do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags 12652166aa0SJuan Quintela} 12752166aa0SJuan Quintela 12811568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 12911568d6dSPaolo Bonzinisymlink() { 13072b8b5a1SStefan Weil rm -rf "$2" 131ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 13272b8b5a1SStefan Weil ln -s "$1" "$2" 13311568d6dSPaolo Bonzini} 13411568d6dSPaolo Bonzini 1350dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 1360dba6195SLoïc Minier# executable or a builtin) 1370dba6195SLoïc Minierhas() { 1380dba6195SLoïc Minier type "$1" >/dev/null 2>&1 1390dba6195SLoïc Minier} 1400dba6195SLoïc Minier 1410dba6195SLoïc Minier# search for an executable in PATH 1420dba6195SLoïc Minierpath_of() { 1430dba6195SLoïc Minier local_command="$1" 1440dba6195SLoïc Minier local_ifs="$IFS" 1450dba6195SLoïc Minier local_dir="" 1460dba6195SLoïc Minier 1470dba6195SLoïc Minier # pathname has a dir component? 1480dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 1490dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 1500dba6195SLoïc Minier echo "$local_command" 1510dba6195SLoïc Minier return 0 1520dba6195SLoïc Minier fi 1530dba6195SLoïc Minier fi 1540dba6195SLoïc Minier if [ -z "$local_command" ]; then 1550dba6195SLoïc Minier return 1 1560dba6195SLoïc Minier fi 1570dba6195SLoïc Minier 1580dba6195SLoïc Minier IFS=: 1590dba6195SLoïc Minier for local_dir in $PATH; do 1600dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 1610dba6195SLoïc Minier echo "$local_dir/$local_command" 1620dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1630dba6195SLoïc Minier return 0 1640dba6195SLoïc Minier fi 1650dba6195SLoïc Minier done 1660dba6195SLoïc Minier # not found 1670dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1680dba6195SLoïc Minier return 1 1690dba6195SLoïc Minier} 1700dba6195SLoïc Minier 1715b808275SLluís Vilanovahave_backend () { 1725b808275SLluís Vilanova echo "$trace_backends" | grep "$1" >/dev/null 1735b808275SLluís Vilanova} 1745b808275SLluís Vilanova 1753b6b7550SPaolo Bonziniglob() { 1763b6b7550SPaolo Bonzini eval test -z '"${1#'"$2"'}"' 1773b6b7550SPaolo Bonzini} 1783b6b7550SPaolo Bonzini 1793b6b7550SPaolo Bonzinisupported_hax_target() { 1803b6b7550SPaolo Bonzini test "$hax" = "yes" || return 1 1813b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 1823b6b7550SPaolo Bonzini case "${1%-softmmu}" in 1833b6b7550SPaolo Bonzini i386|x86_64) 1843b6b7550SPaolo Bonzini return 0 1853b6b7550SPaolo Bonzini ;; 1863b6b7550SPaolo Bonzini esac 1873b6b7550SPaolo Bonzini return 1 1883b6b7550SPaolo Bonzini} 1893b6b7550SPaolo Bonzini 1903b6b7550SPaolo Bonzinisupported_kvm_target() { 1913b6b7550SPaolo Bonzini test "$kvm" = "yes" || return 1 1923b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 1933b6b7550SPaolo Bonzini case "${1%-softmmu}:$cpu" in 1943b6b7550SPaolo Bonzini arm:arm | aarch64:aarch64 | \ 1953b6b7550SPaolo Bonzini i386:i386 | i386:x86_64 | i386:x32 | \ 1963b6b7550SPaolo Bonzini x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \ 1973b6b7550SPaolo Bonzini mips:mips | mipsel:mips | \ 1983b6b7550SPaolo Bonzini ppc:ppc | ppcemb:ppc | ppc64:ppc | \ 1993b6b7550SPaolo Bonzini ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \ 2003b6b7550SPaolo Bonzini s390x:s390x) 2013b6b7550SPaolo Bonzini return 0 2023b6b7550SPaolo Bonzini ;; 2033b6b7550SPaolo Bonzini esac 2043b6b7550SPaolo Bonzini return 1 2053b6b7550SPaolo Bonzini} 2063b6b7550SPaolo Bonzini 2073b6b7550SPaolo Bonzinisupported_xen_target() { 2083b6b7550SPaolo Bonzini test "$xen" = "yes" || return 1 2093b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 210b5ed2e11SPaolo Bonzini # Only i386 and x86_64 provide the xenpv machine. 211b5ed2e11SPaolo Bonzini case "${1%-softmmu}" in 212b5ed2e11SPaolo Bonzini i386|x86_64) 2133b6b7550SPaolo Bonzini return 0 2143b6b7550SPaolo Bonzini ;; 2153b6b7550SPaolo Bonzini esac 2163b6b7550SPaolo Bonzini return 1 2173b6b7550SPaolo Bonzini} 2183b6b7550SPaolo Bonzini 219c97d6d2cSSergio Andres Gomez Del Realsupported_hvf_target() { 220c97d6d2cSSergio Andres Gomez Del Real test "$hvf" = "yes" || return 1 221c97d6d2cSSergio Andres Gomez Del Real glob "$1" "*-softmmu" || return 1 222c97d6d2cSSergio Andres Gomez Del Real case "${1%-softmmu}" in 223c97d6d2cSSergio Andres Gomez Del Real x86_64) 224c97d6d2cSSergio Andres Gomez Del Real return 0 225c97d6d2cSSergio Andres Gomez Del Real ;; 226c97d6d2cSSergio Andres Gomez Del Real esac 227c97d6d2cSSergio Andres Gomez Del Real return 1 228c97d6d2cSSergio Andres Gomez Del Real} 229c97d6d2cSSergio Andres Gomez Del Real 230d661d9a4SJustin Terry (VM)supported_whpx_target() { 231d661d9a4SJustin Terry (VM) test "$whpx" = "yes" || return 1 232d661d9a4SJustin Terry (VM) glob "$1" "*-softmmu" || return 1 233d661d9a4SJustin Terry (VM) case "${1%-softmmu}" in 234d661d9a4SJustin Terry (VM) i386|x86_64) 235d661d9a4SJustin Terry (VM) return 0 236d661d9a4SJustin Terry (VM) ;; 237d661d9a4SJustin Terry (VM) esac 238d661d9a4SJustin Terry (VM) return 1 239d661d9a4SJustin Terry (VM)} 240d661d9a4SJustin Terry (VM) 241d880a3baSPaolo Bonzinisupported_target() { 242d880a3baSPaolo Bonzini case "$1" in 243d880a3baSPaolo Bonzini *-softmmu) 244d880a3baSPaolo Bonzini ;; 245d880a3baSPaolo Bonzini *-linux-user) 246d880a3baSPaolo Bonzini if test "$linux" != "yes"; then 247d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a Linux host" 248d880a3baSPaolo Bonzini return 1 249d880a3baSPaolo Bonzini fi 250d880a3baSPaolo Bonzini ;; 251d880a3baSPaolo Bonzini *-bsd-user) 252d880a3baSPaolo Bonzini if test "$bsd" != "yes"; then 253d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a BSD host" 254d880a3baSPaolo Bonzini return 1 255d880a3baSPaolo Bonzini fi 256d880a3baSPaolo Bonzini ;; 257d880a3baSPaolo Bonzini *) 258d880a3baSPaolo Bonzini print_error "Invalid target name '$target'" 259d880a3baSPaolo Bonzini return 1 260d880a3baSPaolo Bonzini ;; 261d880a3baSPaolo Bonzini esac 262b3f6ea7eSPaolo Bonzini test "$tcg" = "yes" && return 0 263b3f6ea7eSPaolo Bonzini supported_kvm_target "$1" && return 0 264b3f6ea7eSPaolo Bonzini supported_xen_target "$1" && return 0 265b3f6ea7eSPaolo Bonzini supported_hax_target "$1" && return 0 266c97d6d2cSSergio Andres Gomez Del Real supported_hvf_target "$1" && return 0 267d661d9a4SJustin Terry (VM) supported_whpx_target "$1" && return 0 268b3f6ea7eSPaolo Bonzini print_error "TCG disabled, but hardware accelerator not available for '$target'" 269b3f6ea7eSPaolo Bonzini return 1 270d880a3baSPaolo Bonzini} 271d880a3baSPaolo Bonzini 272e9a3591fSChristian Borntraeger 273e9a3591fSChristian Borntraegerld_has() { 274e9a3591fSChristian Borntraeger $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1 275e9a3591fSChristian Borntraeger} 276e9a3591fSChristian Borntraeger 2777d13299dSbellard# default parameters 27889138857SStefan Weilsource_path=$(dirname "$0") 2792ff6b91eSJuan Quintelacpu="" 280a31a8642SMichael S. Tsirkiniasl="iasl" 2811e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 28243ce4dfeSbellardstatic="no" 2837d13299dSbellardcross_prefix="" 2840c58ac1cSmalcaudio_drv_list="" 285b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 286b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 287e49d021eSPeter Maydellhost_cc="cc" 28873da375eSJuan Quintelalibs_softmmu="" 2893e2e0e6bSJuan Quintelalibs_tools="" 29067f86e8eSJuan Quintelaaudio_pt_int="" 291d5631638Smalcaudio_win_int="" 292957f1f99SMichael Rothlibs_qga="" 2935bc62e01SGerd Hoffmanndebug_info="yes" 29463678e17SSteven Noonanstack_protector="" 295ac0df51dSaliguori 29692712822SDaniel P. Berrangeif test -e "$source_path/.git" 29792712822SDaniel P. Berrangethen 298f62bbee5SDaniel P. Berrange git_update=yes 29992712822SDaniel P. Berrange git_submodules="ui/keycodemapdb" 30092712822SDaniel P. Berrangeelse 301f62bbee5SDaniel P. Berrange git_update=no 302aef45d51SDaniel P. Berrange git_submodules="" 30392712822SDaniel P. Berrangefi 304cc84d63aSDaniel P. Berrangegit="git" 305ac0df51dSaliguori 306afb63ebdSStefan Weil# Don't accept a target_list environment variable. 307afb63ebdSStefan Weilunset target_list 308377529c0SPaolo Bonzini 309377529c0SPaolo Bonzini# Default value for a variable defining feature "foo". 310377529c0SPaolo Bonzini# * foo="no" feature will only be used if --enable-foo arg is given 311377529c0SPaolo Bonzini# * foo="" feature will be searched for, and if found, will be used 312377529c0SPaolo Bonzini# unless --disable-foo is given 313377529c0SPaolo Bonzini# * foo="yes" this value will only be set by --enable-foo flag. 314377529c0SPaolo Bonzini# feature will searched for, 315377529c0SPaolo Bonzini# if not found, configure exits with error 316377529c0SPaolo Bonzini# 317377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args. 318377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it 319377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found. 320377529c0SPaolo Bonzini 321377529c0SPaolo Bonzinibluez="" 322377529c0SPaolo Bonzinibrlapi="" 323377529c0SPaolo Bonzinicurl="" 324377529c0SPaolo Bonzinicurses="" 325377529c0SPaolo Bonzinidocs="" 326377529c0SPaolo Bonzinifdt="" 32758952137SVincenzo Maffionenetmap="no" 328377529c0SPaolo Bonzinisdl="" 329ee8466d0SCole Robinsonsdlabi="" 330983eef5aSMeador Ingevirtfs="" 331fe8fc5aeSPaolo Bonzinimpath="" 332821601eaSJes Sorensenvnc="yes" 333377529c0SPaolo Bonzinisparse="no" 334377529c0SPaolo Bonzinivde="" 335377529c0SPaolo Bonzinivnc_sasl="" 336377529c0SPaolo Bonzinivnc_jpeg="" 337377529c0SPaolo Bonzinivnc_png="" 3386a021536SGerd Hoffmannxkbcommon="" 339377529c0SPaolo Bonzinixen="" 340d5b93ddfSAnthony PERARDxen_ctrl_version="" 34164a7ad6fSIan Campbellxen_pv_domain_build="no" 342eb6fda0fSAnthony PERARDxen_pci_passthrough="" 343377529c0SPaolo Bonzinilinux_aio="" 34447e98658SCorey Bryantcap_ng="" 345377529c0SPaolo Bonziniattr="" 3464f26f2b6SAvi Kivitylibattr="" 347377529c0SPaolo Bonzinixfs="" 348b3f6ea7eSPaolo Bonzinitcg="yes" 349a40161cbSPaolo Bonzinimembarrier="" 350d41a75a2SBradvhost_net="no" 351042cea27SGongleivhost_crypto="no" 3525e9be92dSNicholas Bellingervhost_scsi="no" 353fc0b9b0eSStefan Hajnoczivhost_vsock="no" 354e6a74868SMarc-André Lureauvhost_user="" 355d41a75a2SBradkvm="no" 356b0cb0a66SVincent Palatinhax="no" 357c97d6d2cSSergio Andres Gomez Del Realhvf="no" 358d661d9a4SJustin Terry (VM)whpx="no" 3592da776dbSMichael R. Hinesrdma="" 360377529c0SPaolo Bonzinigprof="no" 361377529c0SPaolo Bonzinidebug_tcg="no" 362377529c0SPaolo Bonzinidebug="no" 363247724cbSMarc-André Lureausanitizers="no" 364b553a042SJohn Snowfortify_source="" 365377529c0SPaolo Bonzinistrip_opt="yes" 3669195b2c2SStefan Weiltcg_interpreter="no" 367377529c0SPaolo Bonzinibigendian="no" 368377529c0SPaolo Bonzinimingw32="no" 3691d728c39SBlue Swirlgcov="no" 3701d728c39SBlue Swirlgcov_tool="gcov" 371377529c0SPaolo BonziniEXESUF="" 37217969268SFam ZhengDSOSUF=".so" 37317969268SFam ZhengLDFLAGS_SHARED="-shared" 37417969268SFam Zhengmodules="no" 375377529c0SPaolo Bonziniprefix="/usr/local" 376377529c0SPaolo Bonzinimandir="\${prefix}/share/man" 377528ae5b8SEduardo Habkostdatadir="\${prefix}/share" 3783d5eecabSGerd Hoffmannfirmwarepath="\${prefix}/share/qemu-firmware" 379850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu" 380377529c0SPaolo Bonzinibindir="\${prefix}/bin" 3813aa5d2beSAlon Levylibdir="\${prefix}/lib" 3828bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec" 3830f94d6daSAlon Levyincludedir="\${prefix}/include" 384377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc" 385785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var" 386377529c0SPaolo Bonziniconfsuffix="/qemu" 387377529c0SPaolo Bonzinislirp="yes" 388377529c0SPaolo Bonzinioss_lib="" 389377529c0SPaolo Bonzinibsd="no" 390377529c0SPaolo Bonzinilinux="no" 391377529c0SPaolo Bonzinisolaris="no" 392377529c0SPaolo Bonziniprofiler="no" 393377529c0SPaolo Bonzinicocoa="no" 394377529c0SPaolo Bonzinisoftmmu="yes" 395377529c0SPaolo Bonzinilinux_user="no" 396377529c0SPaolo Bonzinibsd_user="no" 397377529c0SPaolo Bonziniblobs="yes" 398377529c0SPaolo Bonzinipkgversion="" 39940d6444eSAvi Kivitypie="" 4003556c233SPaolo Bonziniqom_cast_debug="yes" 401baf86d6bSPaolo Bonzinitrace_backends="log" 402377529c0SPaolo Bonzinitrace_file="trace" 403377529c0SPaolo Bonzinispice="" 404377529c0SPaolo Bonzinirbd="" 4057b02f544SMarc-André Lureausmartcard="" 4062b2325ffSGerd Hoffmannlibusb="" 40769354a83SHans de Goedeusb_redir="" 408da076ffeSGerd Hoffmannopengl="" 409014cb152SGerd Hoffmannopengl_dmabuf="no" 4105dd89908SRichard Hendersoncpuid_h="no" 41199f2dbd3SLiang Liavx2_opt="no" 4121ece9905SAlon Levyzlib="yes" 4138ca80760SRichard Hendersoncapstone="" 414b25c9dffSStefan Weillzo="" 415b25c9dffSStefan Weilsnappy="" 4166b383c08SPeter Wubzip2="" 417e8ef31a3SMichael Tokarevguest_agent="" 418d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 41950cbebb9SMichael Rothguest_agent_ntddscsi="no" 4209dacf32dSYossi Hindinguest_agent_msi="" 421d9840e25STomoki Sekiyamavss_win32_sdk="" 422d9840e25STomoki Sekiyamawin_sdk="no" 4234b1c11fdSDaniel P. Berrangewant_tools="yes" 424c589b249SRonnie Sahlberglibiscsi="" 4256542aa9cSPeter Lievenlibnfs="" 426519175a2SAlex Barcelocoroutine="" 42770c60c08SStefan Hajnoczicoroutine_pool="" 4287d992e4dSPeter Lievendebug_stack_usage="no" 429f0d92b56SLongpeng(Mike)crypto_afalg="no" 430f794573eSEduardo Otuboseccomp="" 431eb100396SBharata B Raoglusterfs="" 432d85fa9ebSJeff Codyglusterfs_xlator_opt="no" 4330c14fb47SBharata B Raoglusterfs_discard="no" 434df3a429aSNiels de Vosglusterfs_fallocate="no" 4357c815372SBharata B Raoglusterfs_zerofill="no" 436a4ccabcfSAnthony Liguorigtk="" 4379e04c683SStefan Weilgtkabi="" 438925a0400SGerd Hoffmanngtk_gl="no" 439a1c5e949SDaniel P. Berrangetls_priority="NORMAL" 440ddbb0d09SDaniel P. Berrangegnutls="" 441b917da4cSDaniel P. Berrangegnutls_rnd="" 44291bfcdb0SDaniel P. Berrangenettle="" 443fff2f982SDaniel P. Berrangenettle_kdf="no" 44491bfcdb0SDaniel P. Berrangegcrypt="" 4451f923c70SLongpeng(Mike)gcrypt_hmac="no" 44637788f25SDaniel P. Berrangegcrypt_kdf="no" 447bbbf9bfbSStefan Weilvte="" 4489d9e1521SGerd Hoffmannvirglrenderer="" 449e91c793cSCole Robinsontpm="yes" 4500a12ec87SRichard W.M. Joneslibssh2="" 451ed1701c6SDr. David Alan Gilbertlive_block_migration="yes" 452a99d57bbSWanlong Gaonuma="" 4532847b469SFam Zhengtcmalloc="no" 4547b01cb97SAlexandre Derumierjemalloc="no" 455a6b1d4c0SChanglong Xiereplication="yes" 456da92c3ffSAshish Mittalvxhs="" 457ed279a06SKlim Kireevlibxml2="" 45851a12b51SAlex Bennéedocker="no" 459377529c0SPaolo Bonzini 460d75402b5SAlex Bennée# cross compilers defaults, can be overridden with --cross-cc-ARCH 461d75402b5SAlex Bennéecross_cc_aarch64="aarch64-linux-gnu-gcc" 462d75402b5SAlex Bennéecross_cc_arm="arm-linux-gnueabihf-gcc" 463*716a507cSAlex Bennéecross_cc_i386="i386-pc-linux-gnu-gcc" 464*716a507cSAlex Bennéecross_cc_cflags_i386="" 465d75402b5SAlex Bennéecross_cc_powerpc="powerpc-linux-gnu-gcc" 466d75402b5SAlex Bennée 467d75402b5SAlex Bennéeenabled_cross_compilers="" 468d75402b5SAlex Bennée 469898be3e0SPeter Maydellsupported_cpu="no" 470898be3e0SPeter Maydellsupported_os="no" 471fb59dabdSPeter Maydellbogus_os="no" 4725a22ab71SYang Zhongmalloc_trim="" 473898be3e0SPeter Maydell 474ac0df51dSaliguori# parse CC options first 475ac0df51dSaliguorifor opt do 47689138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 477ac0df51dSaliguori case "$opt" in 478ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 479ac0df51dSaliguori ;; 4803d8df640SPaolo Bonzini --cc=*) CC="$optarg" 481ac0df51dSaliguori ;; 48283f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 48383f73fceSTomoki Sekiyama ;; 484ca4deeb1SPaolo Bonzini --source-path=*) source_path="$optarg" 485ca4deeb1SPaolo Bonzini ;; 4862ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 4872ff6b91eSJuan Quintela ;; 488de385287SAlex Bennée --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 489e2a2ed06SJuan Quintela ;; 49011cde1c8SBruno Dominguez --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg" 49111cde1c8SBruno Dominguez ;; 492a4969e90SAlex Bennée --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg" 493f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 494e2a2ed06SJuan Quintela ;; 4955bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 4965bc62e01SGerd Hoffmann ;; 4975bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 4985bc62e01SGerd Hoffmann ;; 499d75402b5SAlex Bennée --cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option" 500d75402b5SAlex Bennée ;; 501d75402b5SAlex Bennée --cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*} 502d75402b5SAlex Bennée eval "cross_cc_${cc_arch}=\$optarg" 503d75402b5SAlex Bennée ;; 504ac0df51dSaliguori esac 505ac0df51dSaliguoridone 506ac0df51dSaliguori# OS specific 507ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 50893148aa5SStefan Weil# we can eliminate its usage altogether. 509ac0df51dSaliguori 510e49d021eSPeter Maydell# Preferred compiler: 511e49d021eSPeter Maydell# ${CC} (if set) 512e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 513e49d021eSPeter Maydell# system compiler 514e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 515e49d021eSPeter Maydell cc="$host_cc" 516e49d021eSPeter Maydellelse 517b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 518e49d021eSPeter Maydellfi 519e49d021eSPeter Maydell 52083f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 52183f73fceSTomoki Sekiyama cxx="c++" 52283f73fceSTomoki Sekiyamaelse 52383f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 52483f73fceSTomoki Sekiyamafi 52583f73fceSTomoki Sekiyama 526b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 527cdbd727cSRichard Hendersonas="${AS-${cross_prefix}as}" 5285f6f0e27SRichard Hendersonccas="${CCAS-$cc}" 5293dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 530b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 531b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 5329f81aeb5SAlistair Francisranlib="${RANLIB-${cross_prefix}ranlib}" 5334852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 534b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 535b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 53617884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 53717884d7bSSergei Trofimovichquery_pkg_config() { 53817884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 53917884d7bSSergei Trofimovich} 54017884d7bSSergei Trofimovichpkg_config=query_pkg_config 541b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 54247c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 543ac0df51dSaliguori 54445d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 54545d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 54645d285abSPeter Maydell 547be17dc90SMichael S. Tsirkin# default flags for all hosts 5482d31515bSPeter Maydell# We use -fwrapv to tell the compiler that we require a C dialect where 5492d31515bSPeter Maydell# left shift of signed integers is well defined and has the expected 5502d31515bSPeter Maydell# 2s-complement style results. (Both clang and gcc agree that it 5512d31515bSPeter Maydell# provides these semantics.) 5522d31515bSPeter MaydellQEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS" 553f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 554c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 555be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 5569edc19c9SMichael S. TsirkinQEMU_INCLUDES="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include" 5575bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then 5585bc62e01SGerd Hoffmann CFLAGS="-g $CFLAGS" 559be17dc90SMichael S. Tsirkin LDFLAGS="-g $LDFLAGS" 5605bc62e01SGerd Hoffmannfi 561be17dc90SMichael S. Tsirkin 562ca4deeb1SPaolo Bonzini# make source path absolute 56389138857SStefan Weilsource_path=$(cd "$source_path"; pwd) 564ca4deeb1SPaolo Bonzini 565cab00a5aSMichael S. Tsirkin# running configure in the source tree? 566cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 567cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 568cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 569cab00a5aSMichael S. Tsirkinelse 570cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 571cab00a5aSMichael S. Tsirkinfi 572cab00a5aSMichael S. Tsirkin 573ac0df51dSaliguoricheck_define() { 574ac0df51dSaliguoricat > $TMPC <<EOF 575ac0df51dSaliguori#if !defined($1) 576fd786e1aSPeter Maydell#error $1 not defined 577ac0df51dSaliguori#endif 578ac0df51dSaliguoriint main(void) { return 0; } 579ac0df51dSaliguoriEOF 58052166aa0SJuan Quintela compile_object 581ac0df51dSaliguori} 582ac0df51dSaliguori 583307119e7SGerd Hoffmanncheck_include() { 584307119e7SGerd Hoffmanncat > $TMPC <<EOF 585307119e7SGerd Hoffmann#include <$1> 586307119e7SGerd Hoffmannint main(void) { return 0; } 587307119e7SGerd HoffmannEOF 588307119e7SGerd Hoffmann compile_object 589307119e7SGerd Hoffmann} 590307119e7SGerd Hoffmann 59193b25869SJohn Snowwrite_c_skeleton() { 59293b25869SJohn Snow cat > $TMPC <<EOF 59393b25869SJohn Snowint main(void) { return 0; } 59493b25869SJohn SnowEOF 59593b25869SJohn Snow} 59693b25869SJohn Snow 597bbea4050SPeter Maydellif check_define __linux__ ; then 598bbea4050SPeter Maydell targetos="Linux" 599bbea4050SPeter Maydellelif check_define _WIN32 ; then 600bbea4050SPeter Maydell targetos='MINGW32' 601bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 602bbea4050SPeter Maydell targetos='OpenBSD' 603bbea4050SPeter Maydellelif check_define __sun__ ; then 604bbea4050SPeter Maydell targetos='SunOS' 605bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 606bbea4050SPeter Maydell targetos='Haiku' 607951fedfcSPeter Maydellelif check_define __FreeBSD__ ; then 608951fedfcSPeter Maydell targetos='FreeBSD' 609951fedfcSPeter Maydellelif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then 610951fedfcSPeter Maydell targetos='GNU/kFreeBSD' 611951fedfcSPeter Maydellelif check_define __DragonFly__ ; then 612951fedfcSPeter Maydell targetos='DragonFly' 613951fedfcSPeter Maydellelif check_define __NetBSD__; then 614951fedfcSPeter Maydell targetos='NetBSD' 615951fedfcSPeter Maydellelif check_define __APPLE__; then 616951fedfcSPeter Maydell targetos='Darwin' 617bbea4050SPeter Maydellelse 618951fedfcSPeter Maydell # This is a fatal error, but don't report it yet, because we 619951fedfcSPeter Maydell # might be going to just print the --help text, or it might 620951fedfcSPeter Maydell # be the result of a missing compiler. 621951fedfcSPeter Maydell targetos='bogus' 622951fedfcSPeter Maydell bogus_os='yes' 623bbea4050SPeter Maydellfi 624bbea4050SPeter Maydell 625bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 626bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 627bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 628bbea4050SPeter Maydell# the correct CPU with the --cpu option. 629bbea4050SPeter Maydellcase $targetos in 630bbea4050SPeter MaydellDarwin) 631bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 632bbea4050SPeter Maydell # run 64-bit userspace code. 633bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 634bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 635bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 636bbea4050SPeter Maydell cpu="x86_64" 637bbea4050SPeter Maydell fi 638bbea4050SPeter Maydell ;; 639bbea4050SPeter MaydellSunOS) 64089138857SStefan Weil # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo 641bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 642bbea4050SPeter Maydell cpu="x86_64" 643bbea4050SPeter Maydell fi 644bbea4050SPeter Maydellesac 645bbea4050SPeter Maydell 6462ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 6472ff6b91eSJuan Quintela # command line argument 6482ff6b91eSJuan Quintela : 6492ff6b91eSJuan Quintelaelif check_define __i386__ ; then 650ac0df51dSaliguori cpu="i386" 651ac0df51dSaliguorielif check_define __x86_64__ ; then 652c72b26ecSRichard Henderson if check_define __ILP32__ ; then 653c72b26ecSRichard Henderson cpu="x32" 654c72b26ecSRichard Henderson else 655ac0df51dSaliguori cpu="x86_64" 656c72b26ecSRichard Henderson fi 6573aa9bd6cSblueswir1elif check_define __sparc__ ; then 6583aa9bd6cSblueswir1 if check_define __arch64__ ; then 6593aa9bd6cSblueswir1 cpu="sparc64" 6603aa9bd6cSblueswir1 else 6613aa9bd6cSblueswir1 cpu="sparc" 6623aa9bd6cSblueswir1 fi 663fdf7ed96Smalcelif check_define _ARCH_PPC ; then 664fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 665fdf7ed96Smalc cpu="ppc64" 666ac0df51dSaliguori else 667fdf7ed96Smalc cpu="ppc" 668fdf7ed96Smalc fi 669afa05235SAurelien Jarnoelif check_define __mips__ ; then 670afa05235SAurelien Jarno cpu="mips" 671d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 672d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 673d66ed0eaSAurelien Jarno cpu="s390x" 674d66ed0eaSAurelien Jarno else 675d66ed0eaSAurelien Jarno cpu="s390" 676d66ed0eaSAurelien Jarno fi 67721d89f84SPeter Maydellelif check_define __arm__ ; then 67821d89f84SPeter Maydell cpu="arm" 6791f080313SClaudio Fontanaelif check_define __aarch64__ ; then 6801f080313SClaudio Fontana cpu="aarch64" 681fdf7ed96Smalcelse 68289138857SStefan Weil cpu=$(uname -m) 683ac0df51dSaliguorifi 684ac0df51dSaliguori 685359bc95dSPeter MaydellARCH= 686359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 687359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 6887d13299dSbellardcase "$cpu" in 6896499fd15SPeter Maydell ppc|ppc64|s390|s390x|sparc64|x32) 690898be3e0SPeter Maydell cpu="$cpu" 691898be3e0SPeter Maydell supported_cpu="yes" 692d75402b5SAlex Bennée eval "cross_cc_${cpu}=\$host_cc" 693898be3e0SPeter Maydell ;; 6947d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 69597a847bcSbellard cpu="i386" 696898be3e0SPeter Maydell supported_cpu="yes" 697d75402b5SAlex Bennée cross_cc_i386=$host_cc 6987d13299dSbellard ;; 699aaa5fa14Saurel32 x86_64|amd64) 700aaa5fa14Saurel32 cpu="x86_64" 701898be3e0SPeter Maydell supported_cpu="yes" 702d75402b5SAlex Bennée cross_cc_x86_64=$host_cc 703aaa5fa14Saurel32 ;; 70421d89f84SPeter Maydell armv*b|armv*l|arm) 70521d89f84SPeter Maydell cpu="arm" 706898be3e0SPeter Maydell supported_cpu="yes" 707d75402b5SAlex Bennée cross_cc_arm=$host_cc 7087d13299dSbellard ;; 7091f080313SClaudio Fontana aarch64) 7101f080313SClaudio Fontana cpu="aarch64" 711898be3e0SPeter Maydell supported_cpu="yes" 712d75402b5SAlex Bennée cross_cc_aarch64=$host_cc 7131f080313SClaudio Fontana ;; 714afa05235SAurelien Jarno mips*) 715afa05235SAurelien Jarno cpu="mips" 716898be3e0SPeter Maydell supported_cpu="yes" 717d75402b5SAlex Bennée cross_cc_mips=$host_cc 718afa05235SAurelien Jarno ;; 7193142255cSblueswir1 sparc|sun4[cdmuv]) 720ae228531Sbellard cpu="sparc" 7216499fd15SPeter Maydell supported_cpu="yes" 722d75402b5SAlex Bennée cross_cc_sparc=$host_cc 723ae228531Sbellard ;; 7247d13299dSbellard *) 725359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 726359bc95dSPeter Maydell ARCH=unknown 7277d13299dSbellard ;; 7287d13299dSbellardesac 729359bc95dSPeter Maydellif test -z "$ARCH"; then 730359bc95dSPeter Maydell ARCH="$cpu" 731359bc95dSPeter Maydellfi 732e2d52ad3SJuan Quintela 7337d13299dSbellard# OS specific 7340dbfc675SJuan Quintela 735adfc3e91SStacey Son# host *BSD for user mode 736adfc3e91SStacey SonHOST_VARIANT_DIR="" 737adfc3e91SStacey Son 7387d13299dSbellardcase $targetos in 73967b915a5SbellardMINGW32*) 74067b915a5Sbellard mingw32="yes" 741b0cb0a66SVincent Palatin hax="yes" 7423cec7cc2SKővágó, Zoltán audio_possible_drivers="dsound sdl" 743307119e7SGerd Hoffmann if check_include dsound.h; then 7443cec7cc2SKővágó, Zoltán audio_drv_list="dsound" 745307119e7SGerd Hoffmann else 746307119e7SGerd Hoffmann audio_drv_list="" 747307119e7SGerd Hoffmann fi 748898be3e0SPeter Maydell supported_os="yes" 74967b915a5Sbellard;; 7505c40d2bdSthsGNU/kFreeBSD) 751a167ba50SAurelien Jarno bsd="yes" 7520c58ac1cSmalc audio_drv_list="oss" 7530bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 7545c40d2bdSths;; 7557d3505c5SbellardFreeBSD) 7567d3505c5Sbellard bsd="yes" 7570db4a067SPaolo Bonzini make="${MAKE-gmake}" 7580c58ac1cSmalc audio_drv_list="oss" 7590bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 760f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 761f01576f1SJuergen Lock LIBS="-lutil $LIBS" 762a7764f15SEd Maste # needed for kinfo_getproc 763a7764f15SEd Maste libs_qga="-lutil $libs_qga" 76458952137SVincenzo Maffione netmap="" # enable netmap autodetect 765adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 766898be3e0SPeter Maydell supported_os="yes" 7677d3505c5Sbellard;; 768c5e97233Sblueswir1DragonFly) 769c5e97233Sblueswir1 bsd="yes" 7700db4a067SPaolo Bonzini make="${MAKE-gmake}" 771c5e97233Sblueswir1 audio_drv_list="oss" 7720bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 773adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 774c5e97233Sblueswir1;; 7757d3505c5SbellardNetBSD) 7767d3505c5Sbellard bsd="yes" 7770db4a067SPaolo Bonzini make="${MAKE-gmake}" 7780c58ac1cSmalc audio_drv_list="oss" 7790bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl" 7808ef92a88Sblueswir1 oss_lib="-lossaudio" 781adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 7823c2bdbc1SKamil Rytarowski supported_os="yes" 7837d3505c5Sbellard;; 7847d3505c5SbellardOpenBSD) 7857d3505c5Sbellard bsd="yes" 7860db4a067SPaolo Bonzini make="${MAKE-gmake}" 7874f6ab397SBrad Smith audio_drv_list="sdl" 7880bac1111SKővágó, Zoltán audio_possible_drivers="sdl" 789adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 7900a773d55SBrad Smith supported_os="yes" 7917d3505c5Sbellard;; 79283fb7adfSbellardDarwin) 79383fb7adfSbellard bsd="yes" 79483fb7adfSbellard darwin="yes" 795b0cb0a66SVincent Palatin hax="yes" 796c97d6d2cSSergio Andres Gomez Del Real hvf="yes" 79717969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 7981b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 799a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 8000c439cbfSJuan Quintela LDFLAGS="-arch x86_64 $LDFLAGS" 8011b0f9cc2Saliguori fi 802fd677642Sths cocoa="yes" 8030c58ac1cSmalc audio_drv_list="coreaudio" 80414382605SKővágó, Zoltán audio_possible_drivers="coreaudio sdl" 8050c439cbfSJuan Quintela LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 8067973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 807a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 808a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 809a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 810adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 811898be3e0SPeter Maydell supported_os="yes" 81283fb7adfSbellard;; 813ec530c81SbellardSunOS) 814ec530c81Sbellard solaris="yes" 8150db4a067SPaolo Bonzini make="${MAKE-gmake}" 8160db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 817e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 8186b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 8190c58ac1cSmalc audio_drv_list="oss" 8206b4d2ba1Sths fi 821c2de5c91Smalc audio_possible_drivers="oss sdl" 822d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 823d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 824d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 825d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 826a558ee17SJuan Quintela QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 827560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 828560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 829560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 830ec530c81Sbellard;; 831179cf400SAndreas FärberHaiku) 832179cf400SAndreas Färber haiku="yes" 833179cf400SAndreas Färber QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 834179cf400SAndreas Färber LIBS="-lposix_error_mapper -lnetwork $LIBS" 835179cf400SAndreas Färber;; 836898be3e0SPeter MaydellLinux) 8370c58ac1cSmalc audio_drv_list="oss" 8380bac1111SKővágó, Zoltán audio_possible_drivers="oss alsa sdl pa" 8395327cf48Sbellard linux="yes" 840831b7825Sths linux_user="yes" 841af2be207SJan Kiszka kvm="yes" 842af2be207SJan Kiszka vhost_net="yes" 843042cea27SGonglei vhost_crypto="yes" 8445e9be92dSNicholas Bellinger vhost_scsi="yes" 845fc0b9b0eSStefan Hajnoczi vhost_vsock="yes" 846a585140dSAlexey Kardashevskiy QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES" 847898be3e0SPeter Maydell supported_os="yes" 848898be3e0SPeter Maydell;; 8497d13299dSbellardesac 8507d13299dSbellard 8517d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 852b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 85384778508Sblueswir1 bsd_user="yes" 8547d3505c5Sbellard fi 85508de3949SAndreas Färberfi 8567d3505c5Sbellard 8570db4a067SPaolo Bonzini: ${make=${MAKE-make}} 8580db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 85952510f8bSStefan Weil: ${python=${PYTHON-python}} 860e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 8610db4a067SPaolo Bonzini 8623c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 8633c4a4d0dSPeter Maydellif has clang; then 8643c4a4d0dSPeter Maydell objcc=clang 8653c4a4d0dSPeter Maydellelse 8663c4a4d0dSPeter Maydell objcc="$cc" 8673c4a4d0dSPeter Maydellfi 8683c4a4d0dSPeter Maydell 8693457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 8703457a3f8SJuan Quintela EXESUF=".exe" 87117969268SFam Zheng DSOSUF=".dll" 872a558ee17SJuan Quintela QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 873e94a7936SStefan Weil # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 874e94a7936SStefan Weil QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 87578e9d4adSStefan Weil # MinGW needs -mthreads for TLS and macro _MT. 87678e9d4adSStefan Weil QEMU_CFLAGS="-mthreads $QEMU_CFLAGS" 877f7cf5d5bSStefan Weil LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 87893b25869SJohn Snow write_c_skeleton; 879f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 880f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 881f7cf5d5bSStefan Weil fi 882c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 883683035deSPaolo Bonzini mandir="\${prefix}" 884528ae5b8SEduardo Habkost datadir="\${prefix}" 885850da188SEduardo Habkost qemu_docdir="\${prefix}" 886683035deSPaolo Bonzini bindir="\${prefix}" 887683035deSPaolo Bonzini sysconfdir="\${prefix}" 8885a699bbbSLaszlo Ersek local_statedir= 889683035deSPaolo Bonzini confsuffix="" 890105fad6bSBishara AbuHattoum libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga" 8913457a3f8SJuan Quintelafi 8923457a3f8SJuan Quintela 893487fefdbSAnthony Liguoriwerror="" 89485aa5189Sbellard 8957d13299dSbellardfor opt do 89689138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 8977d13299dSbellard case "$opt" in 8982efc3265Sbellard --help|-h) show_help=yes 8992efc3265Sbellard ;; 90099123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 90199123e13SMike Frysinger ;; 902b1a550a0Spbrook --prefix=*) prefix="$optarg" 9037d13299dSbellard ;; 904b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 90532ce6337Sbellard ;; 906ca4deeb1SPaolo Bonzini --source-path=*) 9077d13299dSbellard ;; 908ac0df51dSaliguori --cross-prefix=*) 9097d13299dSbellard ;; 910ac0df51dSaliguori --cc=*) 9117d13299dSbellard ;; 912b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 91383469015Sbellard ;; 91483f73fceSTomoki Sekiyama --cxx=*) 91583f73fceSTomoki Sekiyama ;; 916e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 917e007dbecSMichael S. Tsirkin ;; 9183c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 9193c4a4d0dSPeter Maydell ;; 920b1a550a0Spbrook --make=*) make="$optarg" 9217d13299dSbellard ;; 9226a882643Spbrook --install=*) install="$optarg" 9236a882643Spbrook ;; 924c886edfbSBlue Swirl --python=*) python="$optarg" 925c886edfbSBlue Swirl ;; 9261d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 9271d728c39SBlue Swirl ;; 928e2d8830eSBrad --smbd=*) smbd="$optarg" 929e2d8830eSBrad ;; 930e2a2ed06SJuan Quintela --extra-cflags=*) 9317d13299dSbellard ;; 93211cde1c8SBruno Dominguez --extra-cxxflags=*) 93311cde1c8SBruno Dominguez ;; 934e2a2ed06SJuan Quintela --extra-ldflags=*) 9357d13299dSbellard ;; 9365bc62e01SGerd Hoffmann --enable-debug-info) 9375bc62e01SGerd Hoffmann ;; 9385bc62e01SGerd Hoffmann --disable-debug-info) 9395bc62e01SGerd Hoffmann ;; 940d75402b5SAlex Bennée --cross-cc-*) 941d75402b5SAlex Bennée ;; 94217969268SFam Zheng --enable-modules) 94317969268SFam Zheng modules="yes" 94417969268SFam Zheng ;; 9453aa88b31SStefan Hajnoczi --disable-modules) 9463aa88b31SStefan Hajnoczi modules="no" 9473aa88b31SStefan Hajnoczi ;; 9482ff6b91eSJuan Quintela --cpu=*) 9497d13299dSbellard ;; 950b1a550a0Spbrook --target-list=*) target_list="$optarg" 951de83cd02Sbellard ;; 9525b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 9535b808275SLluís Vilanova ;; 9545b808275SLluís Vilanova # XXX: backwards compatibility 9555b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 95694a420b1SStefan Hajnoczi ;; 95774242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 9589410b56cSPrerna Saxena ;; 9597d13299dSbellard --enable-gprof) gprof="yes" 9607d13299dSbellard ;; 9611d728c39SBlue Swirl --enable-gcov) gcov="yes" 9621d728c39SBlue Swirl ;; 96379427693SLoïc Minier --static) 96479427693SLoïc Minier static="yes" 96579427693SLoïc Minier LDFLAGS="-static $LDFLAGS" 96617884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 96743ce4dfeSbellard ;; 9680b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 9690b24e75fSPaolo Bonzini ;; 9700b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 9710b24e75fSPaolo Bonzini ;; 9723aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 9733aa5d2beSAlon Levy ;; 9748bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 9758bf188aaSMichael Tokarev ;; 9760f94d6daSAlon Levy --includedir=*) includedir="$optarg" 9770f94d6daSAlon Levy ;; 978528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 9790b24e75fSPaolo Bonzini ;; 980023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 981023d3d67SEduardo Habkost ;; 982850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 9830b24e75fSPaolo Bonzini ;; 984ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 98507381cc1SAnthony Liguori ;; 986785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 987785c23aeSLuiz Capitulino ;; 9883d5eecabSGerd Hoffmann --firmwarepath=*) firmwarepath="$optarg" 9893d5eecabSGerd Hoffmann ;; 990181ce1d0SOlaf Hering --host=*|--build=*|\ 991181ce1d0SOlaf Hering --disable-dependency-tracking|\ 992785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 993023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 994023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 995023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 996023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 997023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 998023ddd74SMax Filippov # lots of directory switches by default. 999023ddd74SMax Filippov ;; 100097a847bcSbellard --disable-sdl) sdl="no" 100197a847bcSbellard ;; 1002c4198157SJuan Quintela --enable-sdl) sdl="yes" 1003c4198157SJuan Quintela ;; 100447c03744SDave Airlie --with-sdlabi=*) sdlabi="$optarg" 100547c03744SDave Airlie ;; 10063556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 10073556c233SPaolo Bonzini ;; 10083556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 10093556c233SPaolo Bonzini ;; 1010983eef5aSMeador Inge --disable-virtfs) virtfs="no" 1011983eef5aSMeador Inge ;; 1012983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 1013983eef5aSMeador Inge ;; 1014fe8fc5aeSPaolo Bonzini --disable-mpath) mpath="no" 1015fe8fc5aeSPaolo Bonzini ;; 1016fe8fc5aeSPaolo Bonzini --enable-mpath) mpath="yes" 1017fe8fc5aeSPaolo Bonzini ;; 1018821601eaSJes Sorensen --disable-vnc) vnc="no" 1019821601eaSJes Sorensen ;; 1020821601eaSJes Sorensen --enable-vnc) vnc="yes" 1021821601eaSJes Sorensen ;; 10222f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 10232f6a1ab0Sblueswir1 ;; 10240c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 10250c58ac1cSmalc ;; 102689138857SStefan Weil --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1027b64ec4e4SFam Zheng ;; 102889138857SStefan Weil --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1029eb852011SMarkus Armbruster ;; 1030f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 1031f8393946Saurel32 ;; 1032f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 1033f8393946Saurel32 ;; 1034f3d08ee6SPaul Brook --enable-debug) 1035f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 1036f3d08ee6SPaul Brook debug_tcg="yes" 1037f3d08ee6SPaul Brook debug="yes" 1038f3d08ee6SPaul Brook strip_opt="no" 1039b553a042SJohn Snow fortify_source="no" 1040f3d08ee6SPaul Brook ;; 1041247724cbSMarc-André Lureau --enable-sanitizers) sanitizers="yes" 1042247724cbSMarc-André Lureau ;; 1043247724cbSMarc-André Lureau --disable-sanitizers) sanitizers="no" 1044247724cbSMarc-André Lureau ;; 104503b4fe7dSaliguori --enable-sparse) sparse="yes" 104603b4fe7dSaliguori ;; 104703b4fe7dSaliguori --disable-sparse) sparse="no" 104803b4fe7dSaliguori ;; 10491625af87Saliguori --disable-strip) strip_opt="no" 10501625af87Saliguori ;; 10512f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 10522f9606b3Saliguori ;; 1053ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 1054ea784e3bSJuan Quintela ;; 10552f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 10562f6f5c7aSCorentin Chary ;; 10572f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 10582f6f5c7aSCorentin Chary ;; 1059efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 1060efe556adSCorentin Chary ;; 1061efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 1062efe556adSCorentin Chary ;; 1063443f1376Sbellard --disable-slirp) slirp="no" 1064c20709aaSbellard ;; 1065e0e6c8c0Saliguori --disable-vde) vde="no" 10668a16d273Sths ;; 1067dfb278bdSJuan Quintela --enable-vde) vde="yes" 1068dfb278bdSJuan Quintela ;; 106958952137SVincenzo Maffione --disable-netmap) netmap="no" 107058952137SVincenzo Maffione ;; 107158952137SVincenzo Maffione --enable-netmap) netmap="yes" 107258952137SVincenzo Maffione ;; 1073e37630caSaliguori --disable-xen) xen="no" 1074e37630caSaliguori ;; 1075fc321b4bSJuan Quintela --enable-xen) xen="yes" 1076fc321b4bSJuan Quintela ;; 1077eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 1078eb6fda0fSAnthony PERARD ;; 1079eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 1080eb6fda0fSAnthony PERARD ;; 108164a7ad6fSIan Campbell --disable-xen-pv-domain-build) xen_pv_domain_build="no" 108264a7ad6fSIan Campbell ;; 108364a7ad6fSIan Campbell --enable-xen-pv-domain-build) xen_pv_domain_build="yes" 108464a7ad6fSIan Campbell ;; 10852e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 10862e4d9fb1Saurel32 ;; 10874ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 10884ffcedb6SJuan Quintela ;; 1089fb599c9aSbalrog --disable-bluez) bluez="no" 1090fb599c9aSbalrog ;; 1091a20a6f46SJuan Quintela --enable-bluez) bluez="yes" 1092a20a6f46SJuan Quintela ;; 10937ba1e619Saliguori --disable-kvm) kvm="no" 10947ba1e619Saliguori ;; 1095b31a0277SJuan Quintela --enable-kvm) kvm="yes" 1096b31a0277SJuan Quintela ;; 1097b0cb0a66SVincent Palatin --disable-hax) hax="no" 1098180fb750Szhanghailiang ;; 1099b0cb0a66SVincent Palatin --enable-hax) hax="yes" 1100180fb750Szhanghailiang ;; 1101c97d6d2cSSergio Andres Gomez Del Real --disable-hvf) hvf="no" 1102c97d6d2cSSergio Andres Gomez Del Real ;; 1103c97d6d2cSSergio Andres Gomez Del Real --enable-hvf) hvf="yes" 1104c97d6d2cSSergio Andres Gomez Del Real ;; 1105d661d9a4SJustin Terry (VM) --disable-whpx) whpx="no" 1106d661d9a4SJustin Terry (VM) ;; 1107d661d9a4SJustin Terry (VM) --enable-whpx) whpx="yes" 1108d661d9a4SJustin Terry (VM) ;; 11099195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 11109195b2c2SStefan Weil ;; 11119195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 11129195b2c2SStefan Weil ;; 111347e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 111447e98658SCorey Bryant ;; 111547e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 111647e98658SCorey Bryant ;; 1117b3f6ea7eSPaolo Bonzini --disable-tcg) tcg="no" 1118b3f6ea7eSPaolo Bonzini ;; 1119b3f6ea7eSPaolo Bonzini --enable-tcg) tcg="yes" 1120b3f6ea7eSPaolo Bonzini ;; 11215a22ab71SYang Zhong --disable-malloc-trim) malloc_trim="no" 11225a22ab71SYang Zhong ;; 11235a22ab71SYang Zhong --enable-malloc-trim) malloc_trim="yes" 11245a22ab71SYang Zhong ;; 1125cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 1126cd4ec0b4SGerd Hoffmann ;; 1127cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 1128cd4ec0b4SGerd Hoffmann ;; 1129c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 1130c589b249SRonnie Sahlberg ;; 1131c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 1132c589b249SRonnie Sahlberg ;; 11336542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 11346542aa9cSPeter Lieven ;; 11356542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 11366542aa9cSPeter Lieven ;; 113705c2a3e7Sbellard --enable-profiler) profiler="yes" 113805c2a3e7Sbellard ;; 113914821030SPavel Borzenkov --disable-cocoa) cocoa="no" 114014821030SPavel Borzenkov ;; 1141c2de5c91Smalc --enable-cocoa) 1142c2de5c91Smalc cocoa="yes" ; 114389138857SStefan Weil audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)" 11445b0753e0Sbellard ;; 1145cad25d69Spbrook --disable-system) softmmu="no" 11460a8e90f4Spbrook ;; 1147cad25d69Spbrook --enable-system) softmmu="yes" 11480a8e90f4Spbrook ;; 11490953a80fSZachary Amsden --disable-user) 11500953a80fSZachary Amsden linux_user="no" ; 11510953a80fSZachary Amsden bsd_user="no" ; 11520953a80fSZachary Amsden ;; 11530953a80fSZachary Amsden --enable-user) ;; 1154831b7825Sths --disable-linux-user) linux_user="no" 11550a8e90f4Spbrook ;; 1156831b7825Sths --enable-linux-user) linux_user="yes" 1157831b7825Sths ;; 115884778508Sblueswir1 --disable-bsd-user) bsd_user="no" 115984778508Sblueswir1 ;; 116084778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 116184778508Sblueswir1 ;; 116240d6444eSAvi Kivity --enable-pie) pie="yes" 116334005a00SKirill A. Shutemov ;; 116440d6444eSAvi Kivity --disable-pie) pie="no" 116534005a00SKirill A. Shutemov ;; 116685aa5189Sbellard --enable-werror) werror="yes" 116785aa5189Sbellard ;; 116885aa5189Sbellard --disable-werror) werror="no" 116985aa5189Sbellard ;; 117063678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 117163678e17SSteven Noonan ;; 117263678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 117363678e17SSteven Noonan ;; 11744d3b6f6eSbalrog --disable-curses) curses="no" 11754d3b6f6eSbalrog ;; 1176c584a6d0SJuan Quintela --enable-curses) curses="yes" 1177c584a6d0SJuan Quintela ;; 1178769ce76dSAlexander Graf --disable-curl) curl="no" 1179769ce76dSAlexander Graf ;; 1180788c8196SJuan Quintela --enable-curl) curl="yes" 1181788c8196SJuan Quintela ;; 11822df87df7SJuan Quintela --disable-fdt) fdt="no" 11832df87df7SJuan Quintela ;; 11842df87df7SJuan Quintela --enable-fdt) fdt="yes" 11852df87df7SJuan Quintela ;; 11865c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 11875c6c3a6cSChristoph Hellwig ;; 11885c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 11895c6c3a6cSChristoph Hellwig ;; 1190758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 1191758e8e38SVenkateswararao Jujjuri (JV) ;; 1192758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 1193758e8e38SVenkateswararao Jujjuri (JV) ;; 1194a40161cbSPaolo Bonzini --disable-membarrier) membarrier="no" 1195a40161cbSPaolo Bonzini ;; 1196a40161cbSPaolo Bonzini --enable-membarrier) membarrier="yes" 1197a40161cbSPaolo Bonzini ;; 119877755340Sths --disable-blobs) blobs="no" 119977755340Sths ;; 12007e563bfbSThomas Huth --with-pkgversion=*) pkgversion="$optarg" 12014a19f1ecSpbrook ;; 1202519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1203519175a2SAlex Barcelo ;; 120470c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 120570c60c08SStefan Hajnoczi ;; 120670c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 120770c60c08SStefan Hajnoczi ;; 12087d992e4dSPeter Lieven --enable-debug-stack-usage) debug_stack_usage="yes" 12097d992e4dSPeter Lieven ;; 1210f0d92b56SLongpeng(Mike) --enable-crypto-afalg) crypto_afalg="yes" 1211f0d92b56SLongpeng(Mike) ;; 1212f0d92b56SLongpeng(Mike) --disable-crypto-afalg) crypto_afalg="no" 1213f0d92b56SLongpeng(Mike) ;; 1214a25dba17SJuan Quintela --disable-docs) docs="no" 121570ec5dc0SAnthony Liguori ;; 1216a25dba17SJuan Quintela --enable-docs) docs="yes" 121783a3ab8bSJuan Quintela ;; 1218d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1219d5970055SMichael S. Tsirkin ;; 1220d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1221d5970055SMichael S. Tsirkin ;; 1222042cea27SGonglei --disable-vhost-crypto) vhost_crypto="no" 1223042cea27SGonglei ;; 1224042cea27SGonglei --enable-vhost-crypto) 1225042cea27SGonglei vhost_crypto="yes" 1226042cea27SGonglei if test "$mingw32" = "yes"; then 1227042cea27SGonglei error_exit "vhost-crypto isn't available on win32" 1228042cea27SGonglei fi 1229042cea27SGonglei ;; 12305e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 12315e9be92dSNicholas Bellinger ;; 12325e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 12335e9be92dSNicholas Bellinger ;; 1234fc0b9b0eSStefan Hajnoczi --disable-vhost-vsock) vhost_vsock="no" 1235fc0b9b0eSStefan Hajnoczi ;; 1236fc0b9b0eSStefan Hajnoczi --enable-vhost-vsock) vhost_vsock="yes" 1237fc0b9b0eSStefan Hajnoczi ;; 1238da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 123920ff075bSMichael Walle ;; 1240da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 124120ff075bSMichael Walle ;; 1242f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1243f27aaf4bSChristian Brunner ;; 1244f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1245f27aaf4bSChristian Brunner ;; 12468c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 12478c84cf11SSergei Trofimovich ;; 12488c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 12498c84cf11SSergei Trofimovich ;; 12507b02f544SMarc-André Lureau --disable-smartcard) smartcard="no" 1251111a38b0SRobert Relyea ;; 12527b02f544SMarc-André Lureau --enable-smartcard) smartcard="yes" 1253111a38b0SRobert Relyea ;; 12542b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 12552b2325ffSGerd Hoffmann ;; 12562b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 12572b2325ffSGerd Hoffmann ;; 125869354a83SHans de Goede --disable-usb-redir) usb_redir="no" 125969354a83SHans de Goede ;; 126069354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 126169354a83SHans de Goede ;; 12621ece9905SAlon Levy --disable-zlib-test) zlib="no" 12631ece9905SAlon Levy ;; 1264b25c9dffSStefan Weil --disable-lzo) lzo="no" 1265b25c9dffSStefan Weil ;; 1266607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1267607dacd0Sqiaonuohan ;; 1268b25c9dffSStefan Weil --disable-snappy) snappy="no" 1269b25c9dffSStefan Weil ;; 1270607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1271607dacd0Sqiaonuohan ;; 12726b383c08SPeter Wu --disable-bzip2) bzip2="no" 12736b383c08SPeter Wu ;; 12746b383c08SPeter Wu --enable-bzip2) bzip2="yes" 12756b383c08SPeter Wu ;; 1276d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1277d138cee9SMichael Roth ;; 1278d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1279d138cee9SMichael Roth ;; 12809dacf32dSYossi Hindin --enable-guest-agent-msi) guest_agent_msi="yes" 12819dacf32dSYossi Hindin ;; 12829dacf32dSYossi Hindin --disable-guest-agent-msi) guest_agent_msi="no" 12839dacf32dSYossi Hindin ;; 1284d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1285d9840e25STomoki Sekiyama ;; 1286d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1287d9840e25STomoki Sekiyama ;; 1288d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1289d9840e25STomoki Sekiyama ;; 1290d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1291d9840e25STomoki Sekiyama ;; 1292d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1293d9840e25STomoki Sekiyama ;; 1294d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1295d9840e25STomoki Sekiyama ;; 12964b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 12974b1c11fdSDaniel P. Berrange ;; 12984b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 12994b1c11fdSDaniel P. Berrange ;; 1300f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1301f794573eSEduardo Otubo ;; 1302f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1303f794573eSEduardo Otubo ;; 1304eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1305eb100396SBharata B Rao ;; 1306eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1307eb100396SBharata B Rao ;; 130852b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 130952b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1310583f6e7bSStefan Hajnoczi ;; 1311cb6414dfSFam Zheng --enable-vhdx|--disable-vhdx) 1312cb6414dfSFam Zheng echo "$0: $opt is obsolete, VHDX driver is always built" >&2 1313cb6414dfSFam Zheng ;; 1314315d3184SFam Zheng --enable-uuid|--disable-uuid) 1315315d3184SFam Zheng echo "$0: $opt is obsolete, UUID support is always built" >&2 1316315d3184SFam Zheng ;; 1317a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1318a4ccabcfSAnthony Liguori ;; 1319a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1320a4ccabcfSAnthony Liguori ;; 1321a1c5e949SDaniel P. Berrange --tls-priority=*) tls_priority="$optarg" 1322a1c5e949SDaniel P. Berrange ;; 1323ddbb0d09SDaniel P. Berrange --disable-gnutls) gnutls="no" 1324ddbb0d09SDaniel P. Berrange ;; 1325ddbb0d09SDaniel P. Berrange --enable-gnutls) gnutls="yes" 1326ddbb0d09SDaniel P. Berrange ;; 132791bfcdb0SDaniel P. Berrange --disable-nettle) nettle="no" 132891bfcdb0SDaniel P. Berrange ;; 132991bfcdb0SDaniel P. Berrange --enable-nettle) nettle="yes" 133091bfcdb0SDaniel P. Berrange ;; 133191bfcdb0SDaniel P. Berrange --disable-gcrypt) gcrypt="no" 133291bfcdb0SDaniel P. Berrange ;; 133391bfcdb0SDaniel P. Berrange --enable-gcrypt) gcrypt="yes" 133491bfcdb0SDaniel P. Berrange ;; 13352da776dbSMichael R. Hines --enable-rdma) rdma="yes" 13362da776dbSMichael R. Hines ;; 13372da776dbSMichael R. Hines --disable-rdma) rdma="no" 13382da776dbSMichael R. Hines ;; 1339528de90aSDaniel P. Berrange --with-gtkabi=*) gtkabi="$optarg" 1340528de90aSDaniel P. Berrange ;; 1341bbbf9bfbSStefan Weil --disable-vte) vte="no" 1342bbbf9bfbSStefan Weil ;; 1343bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1344bbbf9bfbSStefan Weil ;; 13459d9e1521SGerd Hoffmann --disable-virglrenderer) virglrenderer="no" 13469d9e1521SGerd Hoffmann ;; 13479d9e1521SGerd Hoffmann --enable-virglrenderer) virglrenderer="yes" 13489d9e1521SGerd Hoffmann ;; 1349e91c793cSCole Robinson --disable-tpm) tpm="no" 1350e91c793cSCole Robinson ;; 1351ab214c29SStefan Berger --enable-tpm) tpm="yes" 1352ab214c29SStefan Berger ;; 13530a12ec87SRichard W.M. Jones --disable-libssh2) libssh2="no" 13540a12ec87SRichard W.M. Jones ;; 13550a12ec87SRichard W.M. Jones --enable-libssh2) libssh2="yes" 13560a12ec87SRichard W.M. Jones ;; 1357ed1701c6SDr. David Alan Gilbert --disable-live-block-migration) live_block_migration="no" 1358ed1701c6SDr. David Alan Gilbert ;; 1359ed1701c6SDr. David Alan Gilbert --enable-live-block-migration) live_block_migration="yes" 1360ed1701c6SDr. David Alan Gilbert ;; 1361a99d57bbSWanlong Gao --disable-numa) numa="no" 1362a99d57bbSWanlong Gao ;; 1363a99d57bbSWanlong Gao --enable-numa) numa="yes" 1364a99d57bbSWanlong Gao ;; 1365ed279a06SKlim Kireev --disable-libxml2) libxml2="no" 1366ed279a06SKlim Kireev ;; 1367ed279a06SKlim Kireev --enable-libxml2) libxml2="yes" 1368ed279a06SKlim Kireev ;; 13692847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 13702847b469SFam Zheng ;; 13712847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 13722847b469SFam Zheng ;; 13737b01cb97SAlexandre Derumier --disable-jemalloc) jemalloc="no" 13747b01cb97SAlexandre Derumier ;; 13757b01cb97SAlexandre Derumier --enable-jemalloc) jemalloc="yes" 13767b01cb97SAlexandre Derumier ;; 1377a6b1d4c0SChanglong Xie --disable-replication) replication="no" 1378a6b1d4c0SChanglong Xie ;; 1379a6b1d4c0SChanglong Xie --enable-replication) replication="yes" 1380a6b1d4c0SChanglong Xie ;; 1381da92c3ffSAshish Mittal --disable-vxhs) vxhs="no" 1382da92c3ffSAshish Mittal ;; 1383da92c3ffSAshish Mittal --enable-vxhs) vxhs="yes" 1384da92c3ffSAshish Mittal ;; 1385e6a74868SMarc-André Lureau --disable-vhost-user) vhost_user="no" 1386e6a74868SMarc-André Lureau ;; 1387e6a74868SMarc-André Lureau --enable-vhost-user) 1388e6a74868SMarc-André Lureau vhost_user="yes" 1389e6a74868SMarc-André Lureau if test "$mingw32" = "yes"; then 1390e6a74868SMarc-André Lureau error_exit "vhost-user isn't available on win32" 1391e6a74868SMarc-André Lureau fi 1392e6a74868SMarc-André Lureau ;; 13938ca80760SRichard Henderson --disable-capstone) capstone="no" 13948ca80760SRichard Henderson ;; 13958ca80760SRichard Henderson --enable-capstone) capstone="yes" 13968ca80760SRichard Henderson ;; 1397e219c499SRichard Henderson --enable-capstone=git) capstone="git" 1398e219c499SRichard Henderson ;; 1399e219c499SRichard Henderson --enable-capstone=system) capstone="system" 1400e219c499SRichard Henderson ;; 1401cc84d63aSDaniel P. Berrange --with-git=*) git="$optarg" 1402cc84d63aSDaniel P. Berrange ;; 1403f62bbee5SDaniel P. Berrange --enable-git-update) git_update=yes 1404f62bbee5SDaniel P. Berrange ;; 1405f62bbee5SDaniel P. Berrange --disable-git-update) git_update=no 1406f62bbee5SDaniel P. Berrange ;; 14072d2ad6d0SFam Zheng *) 14082d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 14092d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 14102d2ad6d0SFam Zheng exit 1 14117f1559c6Sbalrog ;; 14127d13299dSbellard esac 14137d13299dSbellarddone 14147d13299dSbellard 1415e6a74868SMarc-André Lureauif test "$vhost_user" = ""; then 1416e6a74868SMarc-André Lureau if test "$mingw32" = "yes"; then 1417e6a74868SMarc-André Lureau vhost_user="no" 1418e6a74868SMarc-André Lureau else 1419e6a74868SMarc-André Lureau vhost_user="yes" 1420e6a74868SMarc-André Lureau fi 1421e6a74868SMarc-André Lureaufi 1422e6a74868SMarc-André Lureau 142340293e58Sbellardcase "$cpu" in 1424e3608d66SRichard Henderson ppc) 1425e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1426e3608d66SRichard Henderson LDFLAGS="-m32 $LDFLAGS" 1427e3608d66SRichard Henderson ;; 1428e3608d66SRichard Henderson ppc64) 1429e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1430e3608d66SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 1431e3608d66SRichard Henderson ;; 14329b9c37c3SRichard Henderson sparc) 1433f1079bb8SRichard Henderson CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" 1434f1079bb8SRichard Henderson LDFLAGS="-m32 -mv8plus $LDFLAGS" 14353142255cSblueswir1 ;; 1436ed968ff1SJuan Quintela sparc64) 143779f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 1438f1079bb8SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 14393142255cSblueswir1 ;; 144076d83bdeSths s390) 1441061cdd81SRichard Henderson CPU_CFLAGS="-m31" 144228d7cc49SRichard Henderson LDFLAGS="-m31 $LDFLAGS" 144328d7cc49SRichard Henderson ;; 144428d7cc49SRichard Henderson s390x) 1445061cdd81SRichard Henderson CPU_CFLAGS="-m64" 144628d7cc49SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 144776d83bdeSths ;; 144840293e58Sbellard i386) 144979f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 14500c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 1451*716a507cSAlex Bennée cross_cc_i386=$cc 1452*716a507cSAlex Bennée cross_cc_cflags_i386=$CPU_CFLAGS 145340293e58Sbellard ;; 145440293e58Sbellard x86_64) 14557ebee43eSRichard Henderson # ??? Only extremely old AMD cpus do not have cmpxchg16b. 14567ebee43eSRichard Henderson # If we truly care, we should simply detect this case at 14577ebee43eSRichard Henderson # runtime and generate the fallback to serial emulation. 14587ebee43eSRichard Henderson CPU_CFLAGS="-m64 -mcx16" 14590c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 1460*716a507cSAlex Bennée cross_cc_x86_64=$cc 1461*716a507cSAlex Bennée cross_cc_cflags_x86_64=$CPU_CFLAGS 1462379f6698SPaul Brook ;; 1463c72b26ecSRichard Henderson x32) 1464c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1465c72b26ecSRichard Henderson LDFLAGS="-mx32 $LDFLAGS" 1466*716a507cSAlex Bennée cross_cc_i386=$cc 1467*716a507cSAlex Bennée cross_cc_cflags_i386="-m32" 1468c72b26ecSRichard Henderson ;; 146930163d89SPeter Maydell # No special flags required for other host CPUs 14703142255cSblueswir1esac 14713142255cSblueswir1 147279f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 147379f3b12fSPeter Crosthwaite 1474affc88ccSPeter Maydell# For user-mode emulation the host arch has to be one we explicitly 1475affc88ccSPeter Maydell# support, even if we're using TCI. 1476affc88ccSPeter Maydellif [ "$ARCH" = "unknown" ]; then 1477affc88ccSPeter Maydell bsd_user="no" 1478affc88ccSPeter Maydell linux_user="no" 1479affc88ccSPeter Maydellfi 1480affc88ccSPeter Maydell 148160e0df25SPeter Maydelldefault_target_list="" 148260e0df25SPeter Maydell 14836e92f823SPeter Maydellmak_wilds="" 14846e92f823SPeter Maydell 148560e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 14866e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 148760e0df25SPeter Maydellfi 148860e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 14896e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 149060e0df25SPeter Maydellfi 149160e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 14926e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 149360e0df25SPeter Maydellfi 149460e0df25SPeter Maydell 14956e92f823SPeter Maydellfor config in $mak_wilds; do 14966e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 14976e92f823SPeter Maydelldone 14986e92f823SPeter Maydell 1499c53eeaf7SStefan Hajnoczi# Enumerate public trace backends for --help output 150064a6047dSGreg Kurztrace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/')) 1501c53eeaf7SStefan Hajnoczi 1502af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1503af5db58eSpbrookcat << EOF 1504af5db58eSpbrook 1505af5db58eSpbrookUsage: configure [options] 1506af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1507af5db58eSpbrook 150808fb77edSStefan WeilStandard options: 150908fb77edSStefan Weil --help print this message 151008fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 151108fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 151208fb77edSStefan Weil use %M for cpu name [$interp_prefix] 151308fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 151408fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 151508fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 151608fb77edSStefan Weil 151708fb77edSStefan WeilAdvanced options (experts only): 151808fb77edSStefan Weil --source-path=PATH path of source code [$source_path] 151908fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 152008fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 152108fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 152208fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 152308fb77edSStefan Weil build time 152408fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 152508fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 152608fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 152711cde1c8SBruno Dominguez --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS 152808fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 1529d75402b5SAlex Bennée --cross-cc-ARCH=CC use compiler when building ARCH guest test cases 153008fb77edSStefan Weil --make=MAKE use specified make [$make] 153108fb77edSStefan Weil --install=INSTALL use specified install [$install] 153208fb77edSStefan Weil --python=PYTHON use specified python [$python] 153308fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 1534db1b5f13SThomas Huth --with-git=GIT use specified git [$git] 153508fb77edSStefan Weil --static enable static build [$static] 153608fb77edSStefan Weil --mandir=PATH install man pages in PATH 153708fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 153808fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 153908fb77edSStefan Weil --bindir=PATH install binaries in PATH 154008fb77edSStefan Weil --libdir=PATH install libraries in PATH 1541db1b5f13SThomas Huth --libexecdir=PATH install helper binaries in PATH 154208fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 154308fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 15443d5eecabSGerd Hoffmann --firmwarepath=PATH search PATH for firmware files 1545e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 1546db1b5f13SThomas Huth --with-pkgversion=VERS use specified string as sub-version of the package 154708fb77edSStefan Weil --enable-debug enable common debug build options 1548247724cbSMarc-André Lureau --enable-sanitizers enable default sanitizers 154908fb77edSStefan Weil --disable-strip disable stripping binaries 155008fb77edSStefan Weil --disable-werror disable compilation abort on warning 155163678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 155208fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 155308fb77edSStefan Weil Available drivers: $audio_possible_drivers 155408fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 155508fb77edSStefan Weil --block-drv-rw-whitelist=L 155608fb77edSStefan Weil set block driver read-write whitelist 155708fb77edSStefan Weil (affects only QEMU, not qemu-img) 155808fb77edSStefan Weil --block-drv-ro-whitelist=L 155908fb77edSStefan Weil set block driver read-only whitelist 156008fb77edSStefan Weil (affects only QEMU, not qemu-img) 15615b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 1562c53eeaf7SStefan Hajnoczi Available backends: $trace_backend_list 156308fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 156408fb77edSStefan Weil Default:trace-<pid> 1565c23f23b9SMichael Tokarev --disable-slirp disable SLIRP userspace network connectivity 1566c23f23b9SMichael Tokarev --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 15675a22ab71SYang Zhong --enable-malloc-trim enable libc malloc_trim() for memory optimization 1568c23f23b9SMichael Tokarev --oss-lib path to OSS library 1569c23f23b9SMichael Tokarev --cpu=CPU Build for host CPU [$cpu] 157008fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 157133c53c54SDaniel P. Berrange ucontext, sigaltstack, windows 157208fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 157308fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 1574c23f23b9SMichael Tokarev --disable-blobs disable installing provided firmware blobs 1575c23f23b9SMichael Tokarev --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1576c23f23b9SMichael Tokarev --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1577a1c5e949SDaniel P. Berrange --tls-priority default TLS protocol/cipher priority string 1578c12d66aaSLin Ma --enable-gprof QEMU profiling with gprof 1579c12d66aaSLin Ma --enable-profiler profiler support 1580c12d66aaSLin Ma --enable-xen-pv-domain-build 1581c12d66aaSLin Ma xen pv domain builder 1582c12d66aaSLin Ma --enable-debug-stack-usage 1583c12d66aaSLin Ma track the maximum stack usage of stacks created by qemu_alloc_stack 1584c23f23b9SMichael Tokarev 1585c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and 1586c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available: 1587c23f23b9SMichael Tokarev 1588c23f23b9SMichael Tokarev system all system emulation targets 1589c23f23b9SMichael Tokarev user supported user emulation targets 1590c23f23b9SMichael Tokarev linux-user all linux usermode emulation targets 1591c23f23b9SMichael Tokarev bsd-user all BSD usermode emulation targets 1592c23f23b9SMichael Tokarev docs build documentation 1593c23f23b9SMichael Tokarev guest-agent build the QEMU Guest Agent 1594c23f23b9SMichael Tokarev guest-agent-msi build guest agent Windows MSI installation package 1595c23f23b9SMichael Tokarev pie Position Independent Executables 1596c23f23b9SMichael Tokarev modules modules support 1597c23f23b9SMichael Tokarev debug-tcg TCG debugging (default is disabled) 1598c23f23b9SMichael Tokarev debug-info debugging information 1599c23f23b9SMichael Tokarev sparse sparse checker 1600c23f23b9SMichael Tokarev 1601ddbb0d09SDaniel P. Berrange gnutls GNUTLS cryptography support 160291bfcdb0SDaniel P. Berrange nettle nettle cryptography support 160391bfcdb0SDaniel P. Berrange gcrypt libgcrypt cryptography support 1604c23f23b9SMichael Tokarev sdl SDL UI 1605c23f23b9SMichael Tokarev --with-sdlabi select preferred SDL ABI 1.2 or 2.0 1606c23f23b9SMichael Tokarev gtk gtk UI 1607c23f23b9SMichael Tokarev --with-gtkabi select preferred GTK ABI 2.0 or 3.0 1608c23f23b9SMichael Tokarev vte vte support for the gtk UI 1609c23f23b9SMichael Tokarev curses curses UI 1610c23f23b9SMichael Tokarev vnc VNC UI support 1611c23f23b9SMichael Tokarev vnc-sasl SASL encryption for VNC server 1612c23f23b9SMichael Tokarev vnc-jpeg JPEG lossy compression for VNC server 1613c23f23b9SMichael Tokarev vnc-png PNG compression for VNC server 1614c23f23b9SMichael Tokarev cocoa Cocoa UI (Mac OS X only) 1615c23f23b9SMichael Tokarev virtfs VirtFS 1616fe8fc5aeSPaolo Bonzini mpath Multipath persistent reservation passthrough 1617c23f23b9SMichael Tokarev xen xen backend driver support 161870c292afSAnthony PERARD xen-pci-passthrough PCI passthrough support for Xen 1619c23f23b9SMichael Tokarev brlapi BrlAPI (Braile) 1620c23f23b9SMichael Tokarev curl curl connectivity 1621a40161cbSPaolo Bonzini membarrier membarrier system call (for Linux 4.14+ or Windows) 1622c23f23b9SMichael Tokarev fdt fdt device tree 1623c23f23b9SMichael Tokarev bluez bluez stack connectivity 1624c23f23b9SMichael Tokarev kvm KVM acceleration support 1625b0cb0a66SVincent Palatin hax HAX acceleration support 1626c97d6d2cSSergio Andres Gomez Del Real hvf Hypervisor.framework acceleration support 1627d661d9a4SJustin Terry (VM) whpx Windows Hypervisor Platform acceleration support 1628ef6d4ccdSYuval Shaia rdma Enable RDMA-based migration and PVRDMA support 1629c23f23b9SMichael Tokarev vde support for vde network 1630c23f23b9SMichael Tokarev netmap support for netmap network 1631c23f23b9SMichael Tokarev linux-aio Linux AIO support 1632c23f23b9SMichael Tokarev cap-ng libcap-ng support 1633c23f23b9SMichael Tokarev attr attr and xattr support 1634c23f23b9SMichael Tokarev vhost-net vhost-net acceleration support 1635042cea27SGonglei vhost-crypto vhost-crypto acceleration support 1636c23f23b9SMichael Tokarev spice spice 1637c23f23b9SMichael Tokarev rbd rados block device (rbd) 1638c23f23b9SMichael Tokarev libiscsi iscsi support 1639c23f23b9SMichael Tokarev libnfs nfs support 16407b02f544SMarc-André Lureau smartcard smartcard support (libcacard) 1641c23f23b9SMichael Tokarev libusb libusb (for usb passthrough) 1642ed1701c6SDr. David Alan Gilbert live-block-migration Block migration in the main migration stream 1643c23f23b9SMichael Tokarev usb-redir usb network redirection support 1644c23f23b9SMichael Tokarev lzo support of lzo compression library 1645c23f23b9SMichael Tokarev snappy support of snappy compression library 1646c23f23b9SMichael Tokarev bzip2 support of bzip2 compression library 1647c23f23b9SMichael Tokarev (for reading bzip2-compressed dmg images) 1648c23f23b9SMichael Tokarev seccomp seccomp support 1649c23f23b9SMichael Tokarev coroutine-pool coroutine freelist (better performance) 1650c23f23b9SMichael Tokarev glusterfs GlusterFS backend 1651c23f23b9SMichael Tokarev tpm TPM support 1652c23f23b9SMichael Tokarev libssh2 ssh block device support 1653c23f23b9SMichael Tokarev numa libnuma support 1654ed279a06SKlim Kireev libxml2 for Parallels image format 1655c23f23b9SMichael Tokarev tcmalloc tcmalloc support 16567b01cb97SAlexandre Derumier jemalloc jemalloc support 1657a6b1d4c0SChanglong Xie replication replication support 1658c12d66aaSLin Ma vhost-vsock virtio sockets device support 1659c12d66aaSLin Ma opengl opengl support 1660c12d66aaSLin Ma virglrenderer virgl rendering support 1661c12d66aaSLin Ma xfsctl xfsctl support 1662c12d66aaSLin Ma qom-cast-debug cast debugging support 1663c12d66aaSLin Ma tools build qemu-io, qemu-nbd and qemu-image tools 1664da92c3ffSAshish Mittal vxhs Veritas HyperScale vDisk backend support 1665f0d92b56SLongpeng(Mike) crypto-afalg Linux AF_ALG crypto backend driver 1666e6a74868SMarc-André Lureau vhost-user vhost-user support 16678ca80760SRichard Henderson capstone capstone disassembler support 166808fb77edSStefan Weil 166908fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1670af5db58eSpbrookEOF 16712d2ad6d0SFam Zhengexit 0 1672af5db58eSpbrookfi 1673af5db58eSpbrook 1674c53eeaf7SStefan Hajnocziif ! has $python; then 1675c53eeaf7SStefan Hajnoczi error_exit "Python not found. Use --python=/path/to/python" 1676c53eeaf7SStefan Hajnoczifi 1677c53eeaf7SStefan Hajnoczi 1678c53eeaf7SStefan Hajnoczi# Note that if the Python conditional here evaluates True we will exit 1679c53eeaf7SStefan Hajnoczi# with status 1 which is a shell 'false' value. 16807f2b5544SEduardo Habkostif ! $python -c 'import sys; sys.exit(sys.version_info < (2,7))'; then 16817f2b5544SEduardo Habkost error_exit "Cannot use '$python', Python 2 >= 2.7 or Python 3 is required." \ 1682c53eeaf7SStefan Hajnoczi "Use --python=/path/to/python to specify a supported Python." 1683c53eeaf7SStefan Hajnoczifi 1684c53eeaf7SStefan Hajnoczi 1685c53eeaf7SStefan Hajnoczi# Suppress writing compiled files 1686c53eeaf7SStefan Hajnoczipython="$python -B" 1687c53eeaf7SStefan Hajnoczi 16889aae6e54SDaniel Henrique Barboza# Check that the C compiler works. Doing this here before testing 16899aae6e54SDaniel Henrique Barboza# the host CPU ensures that we had a valid CC to autodetect the 16909aae6e54SDaniel Henrique Barboza# $cpu var (and we should bail right here if that's not the case). 16919aae6e54SDaniel Henrique Barboza# It also allows the help message to be printed without a CC. 16929aae6e54SDaniel Henrique Barbozawrite_c_skeleton; 16939aae6e54SDaniel Henrique Barbozaif compile_object ; then 16949aae6e54SDaniel Henrique Barboza : C compiler works ok 16959aae6e54SDaniel Henrique Barbozaelse 16969aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" either does not exist or does not work" 16979aae6e54SDaniel Henrique Barbozafi 16989aae6e54SDaniel Henrique Barbozaif ! compile_prog ; then 16999aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" cannot build an executable (is your linker broken?)" 17009aae6e54SDaniel Henrique Barbozafi 17019aae6e54SDaniel Henrique Barboza 1702359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 1703359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 1704359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 1705359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 1706359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1707359bc95dSPeter Maydell else 170876ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1709359bc95dSPeter Maydell fi 1710359bc95dSPeter Maydellfi 1711359bc95dSPeter Maydell 17129c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 17139c83ffd8SPeter Maydell# by default. Only enable by default for git builds 17149c83ffd8SPeter Maydellif test -z "$werror" ; then 17159c83ffd8SPeter Maydell if test -d "$source_path/.git" -a \ 1716e4650c81SThomas Huth \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then 17179c83ffd8SPeter Maydell werror="yes" 17189c83ffd8SPeter Maydell else 17199c83ffd8SPeter Maydell werror="no" 17209c83ffd8SPeter Maydell fi 17219c83ffd8SPeter Maydellfi 17229c83ffd8SPeter Maydell 1723fb59dabdSPeter Maydellif test "$bogus_os" = "yes"; then 1724fb59dabdSPeter Maydell # Now that we know that we're not printing the help and that 1725fb59dabdSPeter Maydell # the compiler works (so the results of the check_defines we used 1726fb59dabdSPeter Maydell # to identify the OS are reliable), if we didn't recognize the 1727fb59dabdSPeter Maydell # host OS we should stop now. 1728951fedfcSPeter Maydell error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')" 1729fb59dabdSPeter Maydellfi 1730fb59dabdSPeter Maydell 17318d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 17328d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 1733ac7568bdSDaniel P. Berrangegcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 1734435405acSPranith Kumargcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags" 1735b98fcfd8SPaolo Bonzinigcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags" 173671429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags" 17370e39c4aaSGerd Hoffmanngcc_flags="-Wno-error=address-of-packed-member $gcc_flags" 17386ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would 17396ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due 17406ca026cbSPeter Maydell# to -Werror this would just silently disable some features, 17416ca026cbSPeter Maydell# so it's too error prone. 174293b25869SJohn Snow 174393b25869SJohn Snowcc_has_warning_flag() { 174493b25869SJohn Snow write_c_skeleton; 174593b25869SJohn Snow 1746a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 1747a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 1748a1d29d6cSPeter Maydell # warning options). 174993b25869SJohn Snow optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 175093b25869SJohn Snow compile_prog "-Werror $optflag" "" 175193b25869SJohn Snow} 175293b25869SJohn Snow 175393b25869SJohn Snowfor flag in $gcc_flags; do 175493b25869SJohn Snow if cc_has_warning_flag $flag ; then 17558d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 17568d05095cSPaolo Bonzini fi 17578d05095cSPaolo Bonzinidone 17588d05095cSPaolo Bonzini 175963678e17SSteven Noonanif test "$stack_protector" != "no"; then 1760fccd35a0SRodrigo Rebello cat > $TMPC << EOF 1761fccd35a0SRodrigo Rebelloint main(int argc, char *argv[]) 1762fccd35a0SRodrigo Rebello{ 1763fccd35a0SRodrigo Rebello char arr[64], *p = arr, *c = argv[0]; 1764fccd35a0SRodrigo Rebello while (*c) { 1765fccd35a0SRodrigo Rebello *p++ = *c++; 1766fccd35a0SRodrigo Rebello } 1767fccd35a0SRodrigo Rebello return 0; 1768fccd35a0SRodrigo Rebello} 1769fccd35a0SRodrigo RebelloEOF 177063678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 17713b463a3fSMiroslav Rezanina sp_on=0 177263678e17SSteven Noonan for flag in $gcc_flags; do 1773590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 1774590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 1775590e5dd9SPeter Maydell if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 1776590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 177763678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 17783b463a3fSMiroslav Rezanina sp_on=1 177963678e17SSteven Noonan break 178063678e17SSteven Noonan fi 178163678e17SSteven Noonan done 17823b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 17833b463a3fSMiroslav Rezanina if test $sp_on = 0; then 17843b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 17853b463a3fSMiroslav Rezanina fi 17863b463a3fSMiroslav Rezanina fi 178737746c5eSMarc-André Lureaufi 178837746c5eSMarc-André Lureau 178920bc94a2SPaolo Bonzini# Disable -Wmissing-braces on older compilers that warn even for 179020bc94a2SPaolo Bonzini# the "universal" C zero initializer {0}. 179120bc94a2SPaolo Bonzinicat > $TMPC << EOF 179220bc94a2SPaolo Bonzinistruct { 179320bc94a2SPaolo Bonzini int a[2]; 179420bc94a2SPaolo Bonzini} x = {0}; 179520bc94a2SPaolo BonziniEOF 179620bc94a2SPaolo Bonziniif compile_object "-Werror" "" ; then 179720bc94a2SPaolo Bonzini : 179820bc94a2SPaolo Bonzinielse 179920bc94a2SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces" 180020bc94a2SPaolo Bonzinifi 180120bc94a2SPaolo Bonzini 1802cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1803cbdd1999SPaolo Bonzini# large functions that use global variables. The bug is in all releases of 1804cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1805cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1806cbdd1999SPaolo Bonzinicat > $TMPC << EOF 1807cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1808cbdd1999SPaolo Bonziniint main(void) { return 0; } 1809cbdd1999SPaolo Bonzini#else 1810cbdd1999SPaolo Bonzini#error No bug in this compiler. 1811cbdd1999SPaolo Bonzini#endif 1812cbdd1999SPaolo BonziniEOF 1813cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then 1814cbdd1999SPaolo Bonzini TRANSLATE_OPT_CFLAGS=-fno-gcse 1815cbdd1999SPaolo Bonzinifi 1816cbdd1999SPaolo Bonzini 181740d6444eSAvi Kivityif test "$static" = "yes" ; then 1818aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 1819aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 1820aa0d1f44SPaolo Bonzini fi 182140d6444eSAvi Kivity if test "$pie" = "yes" ; then 182276ad07a4SPeter Maydell error_exit "static and pie are mutually incompatible" 182340d6444eSAvi Kivity else 182440d6444eSAvi Kivity pie="no" 182540d6444eSAvi Kivity fi 182640d6444eSAvi Kivityfi 182740d6444eSAvi Kivity 1828768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 1829768b7855SEmilio G. Cota cat > $TMPC << EOF 1830768b7855SEmilio G. Cotastatic __thread int tls_var; 1831768b7855SEmilio G. Cotaint main(void) { return tls_var; } 1832768b7855SEmilio G. CotaEOF 1833768b7855SEmilio G. Cota 1834768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 1835768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 1836768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 1837768b7855SEmilio G. Cotafi 1838768b7855SEmilio G. Cota 183940d6444eSAvi Kivityif test "$pie" = ""; then 184040d6444eSAvi Kivity case "$cpu-$targetos" in 1841c72b26ecSRichard Henderson i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 184240d6444eSAvi Kivity ;; 184340d6444eSAvi Kivity *) 184440d6444eSAvi Kivity pie="no" 184540d6444eSAvi Kivity ;; 184640d6444eSAvi Kivity esac 184740d6444eSAvi Kivityfi 184840d6444eSAvi Kivity 184940d6444eSAvi Kivityif test "$pie" != "no" ; then 185040d6444eSAvi Kivity cat > $TMPC << EOF 185121d4a791SAvi Kivity 185221d4a791SAvi Kivity#ifdef __linux__ 185321d4a791SAvi Kivity# define THREAD __thread 185421d4a791SAvi Kivity#else 185521d4a791SAvi Kivity# define THREAD 185621d4a791SAvi Kivity#endif 185721d4a791SAvi Kivity 185821d4a791SAvi Kivitystatic THREAD int tls_var; 185921d4a791SAvi Kivity 186021d4a791SAvi Kivityint main(void) { return tls_var; } 186121d4a791SAvi Kivity 186240d6444eSAvi KivityEOF 186340d6444eSAvi Kivity if compile_prog "-fPIE -DPIE" "-pie"; then 186440d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 186540d6444eSAvi Kivity LDFLAGS="-pie $LDFLAGS" 186640d6444eSAvi Kivity pie="yes" 186740d6444eSAvi Kivity if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 186840d6444eSAvi Kivity LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 186940d6444eSAvi Kivity fi 187040d6444eSAvi Kivity else 187140d6444eSAvi Kivity if test "$pie" = "yes"; then 187276ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 187340d6444eSAvi Kivity else 187440d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 187540d6444eSAvi Kivity pie="no" 187640d6444eSAvi Kivity fi 187740d6444eSAvi Kivity fi 187846eef33bSBrad 1879e4a7b344SStefan Hajnoczi if compile_prog "-Werror -fno-pie" "-nopie"; then 188046eef33bSBrad CFLAGS_NOPIE="-fno-pie" 188146eef33bSBrad LDFLAGS_NOPIE="-nopie" 188246eef33bSBrad fi 188340d6444eSAvi Kivityfi 188440d6444eSAvi Kivity 188509dada40SPaolo Bonzini########################################## 188609dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 188709dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 188809dada40SPaolo Bonzini# specification is necessary 188909dada40SPaolo Bonzini 189009dada40SPaolo Bonziniif test "$cpu" = "i386"; then 189109dada40SPaolo Bonzini cat > $TMPC << EOF 189209dada40SPaolo Bonzinistatic int sfaa(int *ptr) 189309dada40SPaolo Bonzini{ 189409dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 189509dada40SPaolo Bonzini} 189609dada40SPaolo Bonzini 189709dada40SPaolo Bonziniint main(void) 189809dada40SPaolo Bonzini{ 189909dada40SPaolo Bonzini int val = 42; 19001405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 190109dada40SPaolo Bonzini sfaa(&val); 190209dada40SPaolo Bonzini return val; 190309dada40SPaolo Bonzini} 190409dada40SPaolo BonziniEOF 190509dada40SPaolo Bonzini if ! compile_prog "" "" ; then 190609dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 190709dada40SPaolo Bonzini fi 190809dada40SPaolo Bonzinifi 190909dada40SPaolo Bonzini 191009dada40SPaolo Bonzini######################################### 1911ec530c81Sbellard# Solaris specific configure tool chain decisions 191209dada40SPaolo Bonzini 1913ec530c81Sbellardif test "$solaris" = "yes" ; then 19146792aa11SLoïc Minier if has $install; then 19156792aa11SLoïc Minier : 19166792aa11SLoïc Minier else 191776ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 191876ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 191976ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1920ec530c81Sbellard fi 192189138857SStefan Weil if test "$(path_of $install)" = "/usr/sbin/install" ; then 192276ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 192376ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 192476ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1925ec530c81Sbellard fi 19266792aa11SLoïc Minier if has ar; then 19276792aa11SLoïc Minier : 19286792aa11SLoïc Minier else 1929ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 193076ad07a4SPeter Maydell error_exit "No path includes ar" \ 193176ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 1932ec530c81Sbellard fi 193376ad07a4SPeter Maydell error_exit "No path includes ar" 1934ec530c81Sbellard fi 1935ec530c81Sbellardfi 1936ec530c81Sbellard 1937afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 1938d880a3baSPaolo Bonzini for target in $default_target_list; do 1939d880a3baSPaolo Bonzini supported_target $target 2>/dev/null && \ 1940d880a3baSPaolo Bonzini target_list="$target_list $target" 1941d880a3baSPaolo Bonzini done 1942d880a3baSPaolo Bonzini target_list="${target_list# }" 1943121afa9eSAnthony Liguorielse 194489138857SStefan Weil target_list=$(echo "$target_list" | sed -e 's/,/ /g') 1945d880a3baSPaolo Bonzini for target in $target_list; do 194625b48338SPeter Maydell # Check that we recognised the target name; this allows a more 194725b48338SPeter Maydell # friendly error message than if we let it fall through. 194825b48338SPeter Maydell case " $default_target_list " in 194925b48338SPeter Maydell *" $target "*) 195025b48338SPeter Maydell ;; 195125b48338SPeter Maydell *) 195225b48338SPeter Maydell error_exit "Unknown target name '$target'" 195325b48338SPeter Maydell ;; 195425b48338SPeter Maydell esac 1955d880a3baSPaolo Bonzini supported_target $target || exit 1 195625b48338SPeter Maydell done 1957d880a3baSPaolo Bonzinifi 195825b48338SPeter Maydell 1959f55fe278SPaolo Bonzini# see if system emulation was really requested 1960f55fe278SPaolo Bonzinicase " $target_list " in 1961f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 1962f55fe278SPaolo Bonzini ;; 1963f55fe278SPaolo Bonzini *) softmmu=no 1964f55fe278SPaolo Bonzini ;; 1965f55fe278SPaolo Bonziniesac 19665327cf48Sbellard 1967249247c9SJuan Quintelafeature_not_found() { 1968249247c9SJuan Quintela feature=$1 196921684af0SStewart Smith remedy=$2 1970249247c9SJuan Quintela 197176ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 197221684af0SStewart Smith "configure was not able to find it." \ 197321684af0SStewart Smith "$remedy" 1974249247c9SJuan Quintela} 1975249247c9SJuan Quintela 19767d13299dSbellard# --- 19777d13299dSbellard# big/little endian test 19787d13299dSbellardcat > $TMPC << EOF 197961cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 198061cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 198161cc919fSMike Frysingerextern int foo(short *, short *); 198261cc919fSMike Frysingerint main(int argc, char *argv[]) { 198361cc919fSMike Frysinger return foo(big_endian, little_endian); 19847d13299dSbellard} 19857d13299dSbellardEOF 19867d13299dSbellard 198761cc919fSMike Frysingerif compile_object ; then 198812f15c91SAlice Frosi if strings -a $TMPO | grep -q BiGeNdIaN ; then 198961cc919fSMike Frysinger bigendian="yes" 199012f15c91SAlice Frosi elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then 199161cc919fSMike Frysinger bigendian="no" 19927d13299dSbellard else 19937d13299dSbellard echo big/little test failed 19947d13299dSbellard fi 19957d13299dSbellardelse 199661cc919fSMike Frysinger echo big/little test failed 19977d13299dSbellardfi 19987d13299dSbellard 1999b0a47e79SJuan Quintela########################################## 2000a30878e7SPeter Maydell# cocoa implies not SDL or GTK 2001a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI 2002a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code) 2003a30878e7SPeter Maydellif test "$cocoa" = "yes"; then 2004a30878e7SPeter Maydell if test "$sdl" = "yes"; then 2005a30878e7SPeter Maydell error_exit "Cocoa and SDL UIs cannot both be enabled at once" 2006a30878e7SPeter Maydell fi 2007a30878e7SPeter Maydell if test "$gtk" = "yes"; then 2008a30878e7SPeter Maydell error_exit "Cocoa and GTK UIs cannot both be enabled at once" 2009a30878e7SPeter Maydell fi 2010a30878e7SPeter Maydell gtk=no 2011a30878e7SPeter Maydell sdl=no 2012a30878e7SPeter Maydellfi 2013a30878e7SPeter Maydell 20146b39b063SEric Blake# Some versions of Mac OS X incorrectly define SIZE_MAX 20156b39b063SEric Blakecat > $TMPC << EOF 20166b39b063SEric Blake#include <stdint.h> 20176b39b063SEric Blake#include <stdio.h> 20186b39b063SEric Blakeint main(int argc, char *argv[]) { 20196b39b063SEric Blake return printf("%zu", SIZE_MAX); 20206b39b063SEric Blake} 20216b39b063SEric BlakeEOF 20226b39b063SEric Blakehave_broken_size_max=no 20236b39b063SEric Blakeif ! compile_object -Werror ; then 20246b39b063SEric Blake have_broken_size_max=yes 20256b39b063SEric Blakefi 20266b39b063SEric Blake 2027a30878e7SPeter Maydell########################################## 2028015a33bdSGonglei# L2TPV3 probe 2029015a33bdSGonglei 2030015a33bdSGongleicat > $TMPC <<EOF 2031015a33bdSGonglei#include <sys/socket.h> 2032bff6cb72SMichael Tokarev#include <linux/ip.h> 2033015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 2034015a33bdSGongleiEOF 2035015a33bdSGongleiif compile_prog "" "" ; then 2036015a33bdSGonglei l2tpv3=yes 2037015a33bdSGongleielse 2038015a33bdSGonglei l2tpv3=no 2039015a33bdSGongleifi 2040015a33bdSGonglei 2041015a33bdSGonglei########################################## 20424d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check 20434d9310f4SDaniel P. Berrange 20444d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then 20454d9310f4SDaniel P. Berrange # Some versions of MinGW / Mingw-w64 lack localtime_r 20464d9310f4SDaniel P. Berrange # and gmtime_r entirely. 20474d9310f4SDaniel P. Berrange # 20484d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 define a macro for 20494d9310f4SDaniel P. Berrange # localtime_r/gmtime_r. 20504d9310f4SDaniel P. Berrange # 20514d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 will define functions 20524d9310f4SDaniel P. Berrange # for localtime_r/gmtime_r, but only if you have 20534d9310f4SDaniel P. Berrange # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun 20544d9310f4SDaniel P. Berrange # though, unistd.h and pthread.h both define 20554d9310f4SDaniel P. Berrange # that for you. 20564d9310f4SDaniel P. Berrange # 20574d9310f4SDaniel P. Berrange # So this #undef localtime_r and #include <unistd.h> 20584d9310f4SDaniel P. Berrange # are not in fact redundant. 20594d9310f4SDaniel P. Berrangecat > $TMPC << EOF 20604d9310f4SDaniel P. Berrange#include <unistd.h> 20614d9310f4SDaniel P. Berrange#include <time.h> 20624d9310f4SDaniel P. Berrange#undef localtime_r 20634d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; } 20644d9310f4SDaniel P. BerrangeEOF 20654d9310f4SDaniel P. Berrange if compile_prog "" "" ; then 20664d9310f4SDaniel P. Berrange localtime_r="yes" 20674d9310f4SDaniel P. Berrange else 20684d9310f4SDaniel P. Berrange localtime_r="no" 20694d9310f4SDaniel P. Berrange fi 20704d9310f4SDaniel P. Berrangefi 20714d9310f4SDaniel P. Berrange 20724d9310f4SDaniel P. Berrange########################################## 2073779ab5e3SStefan Weil# pkg-config probe 2074779ab5e3SStefan Weil 2075779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 207676ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 2077779ab5e3SStefan Weilfi 2078779ab5e3SStefan Weil 2079779ab5e3SStefan Weil########################################## 2080b0a47e79SJuan Quintela# NPTL probe 2081b0a47e79SJuan Quintela 208224cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 2083bd0c5661Spbrook cat > $TMPC <<EOF 2084bd0c5661Spbrook#include <sched.h> 208530813ceaSpbrook#include <linux/futex.h> 2086182eacc0SStefan Weilint main(void) { 2087bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 2088bd0c5661Spbrook#error bork 2089bd0c5661Spbrook#endif 2090182eacc0SStefan Weil return 0; 2091bd0c5661Spbrook} 2092bd0c5661SpbrookEOF 209324cb36a6SPeter Maydell if ! compile_object ; then 209421684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 2095b0a47e79SJuan Quintela fi 2096bd0c5661Spbrookfi 2097bd0c5661Spbrook 209899f2dbd3SLiang Li######################################### 2099ac62922eSbalrog# zlib check 2100ac62922eSbalrog 21011ece9905SAlon Levyif test "$zlib" != "no" ; then 2102ac62922eSbalrog cat > $TMPC << EOF 2103ac62922eSbalrog#include <zlib.h> 2104ac62922eSbalrogint main(void) { zlibVersion(); return 0; } 2105ac62922eSbalrogEOF 210652166aa0SJuan Quintela if compile_prog "" "-lz" ; then 2107ac62922eSbalrog : 2108ac62922eSbalrog else 210976ad07a4SPeter Maydell error_exit "zlib check failed" \ 211076ad07a4SPeter Maydell "Make sure to have the zlib libs and headers installed." 2111ac62922eSbalrog fi 21121ece9905SAlon Levyfi 2113eb0ecd5aSWill NewtonLIBS="$LIBS -lz" 2114ac62922eSbalrog 2115ac62922eSbalrog########################################## 2116607dacd0Sqiaonuohan# lzo check 2117607dacd0Sqiaonuohan 2118607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 2119607dacd0Sqiaonuohan cat > $TMPC << EOF 2120607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 2121607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 2122607dacd0SqiaonuohanEOF 2123607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 2124607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 2125b25c9dffSStefan Weil lzo="yes" 2126b25c9dffSStefan Weil else 2127b25c9dffSStefan Weil if test "$lzo" = "yes"; then 2128b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 2129b25c9dffSStefan Weil fi 2130b25c9dffSStefan Weil lzo="no" 2131b25c9dffSStefan Weil fi 2132607dacd0Sqiaonuohanfi 2133607dacd0Sqiaonuohan 2134607dacd0Sqiaonuohan########################################## 2135607dacd0Sqiaonuohan# snappy check 2136607dacd0Sqiaonuohan 2137607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 2138607dacd0Sqiaonuohan cat > $TMPC << EOF 2139607dacd0Sqiaonuohan#include <snappy-c.h> 2140607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 2141607dacd0SqiaonuohanEOF 2142607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 2143607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 2144b25c9dffSStefan Weil snappy="yes" 2145b25c9dffSStefan Weil else 2146b25c9dffSStefan Weil if test "$snappy" = "yes"; then 2147b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 2148b25c9dffSStefan Weil fi 2149b25c9dffSStefan Weil snappy="no" 2150b25c9dffSStefan Weil fi 2151607dacd0Sqiaonuohanfi 2152607dacd0Sqiaonuohan 2153607dacd0Sqiaonuohan########################################## 21546b383c08SPeter Wu# bzip2 check 21556b383c08SPeter Wu 21566b383c08SPeter Wuif test "$bzip2" != "no" ; then 21576b383c08SPeter Wu cat > $TMPC << EOF 21586b383c08SPeter Wu#include <bzlib.h> 21596b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 21606b383c08SPeter WuEOF 21616b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 21626b383c08SPeter Wu bzip2="yes" 21636b383c08SPeter Wu else 21646b383c08SPeter Wu if test "$bzip2" = "yes"; then 21656b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 21666b383c08SPeter Wu fi 21676b383c08SPeter Wu bzip2="no" 21686b383c08SPeter Wu fi 21696b383c08SPeter Wufi 21706b383c08SPeter Wu 21716b383c08SPeter Wu########################################## 2172f794573eSEduardo Otubo# libseccomp check 2173f794573eSEduardo Otubo 2174f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 2175693e5910SAndrew Jones case "$cpu" in 2176693e5910SAndrew Jones i386|x86_64) 2177ba060c53Sdann frazier libseccomp_minver="2.1.0" 2178693e5910SAndrew Jones ;; 21795ce43972SJames Hogan mips) 21805ce43972SJames Hogan libseccomp_minver="2.2.0" 21815ce43972SJames Hogan ;; 2182693e5910SAndrew Jones arm|aarch64) 2183693e5910SAndrew Jones libseccomp_minver="2.2.3" 2184693e5910SAndrew Jones ;; 21853aa35fcfSThomas Huth ppc|ppc64|s390x) 21863e684455SMichael Strosaker libseccomp_minver="2.3.0" 21873e684455SMichael Strosaker ;; 2188693e5910SAndrew Jones *) 2189693e5910SAndrew Jones libseccomp_minver="" 2190693e5910SAndrew Jones ;; 2191693e5910SAndrew Jones esac 2192693e5910SAndrew Jones 2193693e5910SAndrew Jones if test "$libseccomp_minver" != "" && 2194693e5910SAndrew Jones $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then 2195c3883e1fSFam Zheng seccomp_cflags="$($pkg_config --cflags libseccomp)" 2196c3883e1fSFam Zheng seccomp_libs="$($pkg_config --libs libseccomp)" 2197f794573eSEduardo Otubo seccomp="yes" 2198f794573eSEduardo Otubo else 2199f794573eSEduardo Otubo if test "$seccomp" = "yes" ; then 2200693e5910SAndrew Jones if test "$libseccomp_minver" != "" ; then 2201693e5910SAndrew Jones feature_not_found "libseccomp" \ 2202693e5910SAndrew Jones "Install libseccomp devel >= $libseccomp_minver" 2203693e5910SAndrew Jones else 2204693e5910SAndrew Jones feature_not_found "libseccomp" \ 2205693e5910SAndrew Jones "libseccomp is not supported for host cpu $cpu" 2206693e5910SAndrew Jones fi 2207896848f0SEduardo Otubo fi 2208e84d5956SYann E. MORIN seccomp="no" 2209f794573eSEduardo Otubo fi 2210f794573eSEduardo Otubofi 2211f794573eSEduardo Otubo########################################## 2212e37630caSaliguori# xen probe 2213e37630caSaliguori 2214fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 2215c1cdd9d5SJuergen Gross # Check whether Xen library path is specified via --extra-ldflags to avoid 2216c1cdd9d5SJuergen Gross # overriding this setting with pkg-config output. If not, try pkg-config 2217c1cdd9d5SJuergen Gross # to obtain all needed flags. 2218c1cdd9d5SJuergen Gross 2219c1cdd9d5SJuergen Gross if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \ 2220c1cdd9d5SJuergen Gross $pkg_config --exists xencontrol ; then 2221c1cdd9d5SJuergen Gross xen_ctrl_version="$(printf '%d%02d%02d' \ 2222c1cdd9d5SJuergen Gross $($pkg_config --modversion xencontrol | sed 's/\./ /g') )" 2223c1cdd9d5SJuergen Gross xen=yes 2224c1cdd9d5SJuergen Gross xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab" 2225c1cdd9d5SJuergen Gross xen_pc="$xen_pc xenevtchn xendevicemodel" 222658ea9a7aSAnthony PERARD if $pkg_config --exists xentoolcore; then 222758ea9a7aSAnthony PERARD xen_pc="$xen_pc xentoolcore" 222858ea9a7aSAnthony PERARD fi 2229c1cdd9d5SJuergen Gross QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)" 2230c1cdd9d5SJuergen Gross libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu" 2231c1cdd9d5SJuergen Gross LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS" 2232c1cdd9d5SJuergen Gross else 2233c1cdd9d5SJuergen Gross 2234b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 2235d9506cabSAnthony PERARD xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn" 2236d5b93ddfSAnthony PERARD 223750ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 223850ced5b3SStefan Weil # If no, we are done and there is no Xen support. 223950ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 224050ced5b3SStefan Weil 224150ced5b3SStefan Weil # Xen (any) 224250ced5b3SStefan Weil cat > $TMPC <<EOF 224350ced5b3SStefan Weil#include <xenctrl.h> 224450ced5b3SStefan Weilint main(void) { 224550ced5b3SStefan Weil return 0; 224650ced5b3SStefan Weil} 224750ced5b3SStefan WeilEOF 224850ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 224950ced5b3SStefan Weil # Xen not found 225050ced5b3SStefan Weil if test "$xen" = "yes" ; then 225121684af0SStewart Smith feature_not_found "xen" "Install xen devel" 225250ced5b3SStefan Weil fi 225350ced5b3SStefan Weil xen=no 225450ced5b3SStefan Weil 2255d5b93ddfSAnthony PERARD # Xen unstable 225669deef08SPeter Maydell elif 225769deef08SPeter Maydell cat > $TMPC <<EOF && 22582cbf8903SRoss Lagerwall#undef XC_WANT_COMPAT_DEVICEMODEL_API 22592cbf8903SRoss Lagerwall#define __XEN_TOOLS__ 22602cbf8903SRoss Lagerwall#include <xendevicemodel.h> 2261d3c49ebbSPaul Durrant#include <xenforeignmemory.h> 22622cbf8903SRoss Lagerwallint main(void) { 22632cbf8903SRoss Lagerwall xendevicemodel_handle *xd; 2264d3c49ebbSPaul Durrant xenforeignmemory_handle *xfmem; 22652cbf8903SRoss Lagerwall 22662cbf8903SRoss Lagerwall xd = xendevicemodel_open(0, 0); 22672cbf8903SRoss Lagerwall xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0); 22682cbf8903SRoss Lagerwall 2269d3c49ebbSPaul Durrant xfmem = xenforeignmemory_open(0, 0); 2270d3c49ebbSPaul Durrant xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0); 2271d3c49ebbSPaul Durrant 22722cbf8903SRoss Lagerwall return 0; 22732cbf8903SRoss Lagerwall} 22742cbf8903SRoss LagerwallEOF 22752cbf8903SRoss Lagerwall compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 22762cbf8903SRoss Lagerwall then 22772cbf8903SRoss Lagerwall xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 22782cbf8903SRoss Lagerwall xen_ctrl_version=41100 22792cbf8903SRoss Lagerwall xen=yes 22802cbf8903SRoss Lagerwall elif 22812cbf8903SRoss Lagerwall cat > $TMPC <<EOF && 22825ba3d756SIgor Druzhinin#undef XC_WANT_COMPAT_MAP_FOREIGN_API 22835ba3d756SIgor Druzhinin#include <xenforeignmemory.h> 228458ea9a7aSAnthony PERARD#include <xentoolcore.h> 22855ba3d756SIgor Druzhininint main(void) { 22865ba3d756SIgor Druzhinin xenforeignmemory_handle *xfmem; 22875ba3d756SIgor Druzhinin 22885ba3d756SIgor Druzhinin xfmem = xenforeignmemory_open(0, 0); 22895ba3d756SIgor Druzhinin xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0); 229058ea9a7aSAnthony PERARD xentoolcore_restrict_all(0); 22915ba3d756SIgor Druzhinin 22925ba3d756SIgor Druzhinin return 0; 22935ba3d756SIgor Druzhinin} 22945ba3d756SIgor DruzhininEOF 229558ea9a7aSAnthony PERARD compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 22965ba3d756SIgor Druzhinin then 229758ea9a7aSAnthony PERARD xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 22985ba3d756SIgor Druzhinin xen_ctrl_version=41000 22995ba3d756SIgor Druzhinin xen=yes 23005ba3d756SIgor Druzhinin elif 23015ba3d756SIgor Druzhinin cat > $TMPC <<EOF && 2302da8090ccSPaul Durrant#undef XC_WANT_COMPAT_DEVICEMODEL_API 2303da8090ccSPaul Durrant#define __XEN_TOOLS__ 2304da8090ccSPaul Durrant#include <xendevicemodel.h> 2305da8090ccSPaul Durrantint main(void) { 2306da8090ccSPaul Durrant xendevicemodel_handle *xd; 2307da8090ccSPaul Durrant 2308da8090ccSPaul Durrant xd = xendevicemodel_open(0, 0); 2309da8090ccSPaul Durrant xendevicemodel_close(xd); 2310da8090ccSPaul Durrant 2311da8090ccSPaul Durrant return 0; 2312da8090ccSPaul Durrant} 2313da8090ccSPaul DurrantEOF 2314da8090ccSPaul Durrant compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 2315da8090ccSPaul Durrant then 2316da8090ccSPaul Durrant xen_stable_libs="-lxendevicemodel $xen_stable_libs" 2317f1167ee6SJuergen Gross xen_ctrl_version=40900 2318da8090ccSPaul Durrant xen=yes 2319da8090ccSPaul Durrant elif 2320da8090ccSPaul Durrant cat > $TMPC <<EOF && 23215eeb39c2SIan Campbell/* 23225eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat 23235eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given. 2324b6eb9b45SPaulina Szubarczyk * 2325b6eb9b45SPaulina Szubarczyk * Also, check if xengnttab_grant_copy_segment_t is defined and 2326b6eb9b45SPaulina Szubarczyk * grant copy operation is implemented. 2327b6eb9b45SPaulina Szubarczyk */ 2328b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_EVTCHN_API 2329b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_GNTTAB_API 2330b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2331b6eb9b45SPaulina Szubarczyk#include <xenctrl.h> 2332b6eb9b45SPaulina Szubarczyk#include <xenstore.h> 2333b6eb9b45SPaulina Szubarczyk#include <xenevtchn.h> 2334b6eb9b45SPaulina Szubarczyk#include <xengnttab.h> 2335b6eb9b45SPaulina Szubarczyk#include <xenforeignmemory.h> 2336b6eb9b45SPaulina Szubarczyk#include <stdint.h> 2337b6eb9b45SPaulina Szubarczyk#include <xen/hvm/hvm_info_table.h> 2338b6eb9b45SPaulina Szubarczyk#if !defined(HVM_MAX_VCPUS) 2339b6eb9b45SPaulina Szubarczyk# error HVM_MAX_VCPUS not defined 2340b6eb9b45SPaulina Szubarczyk#endif 2341b6eb9b45SPaulina Szubarczykint main(void) { 2342b6eb9b45SPaulina Szubarczyk xc_interface *xc = NULL; 2343b6eb9b45SPaulina Szubarczyk xenforeignmemory_handle *xfmem; 2344b6eb9b45SPaulina Szubarczyk xenevtchn_handle *xe; 2345b6eb9b45SPaulina Szubarczyk xengnttab_handle *xg; 2346b6eb9b45SPaulina Szubarczyk xen_domain_handle_t handle; 2347b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy_segment_t* seg = NULL; 2348b6eb9b45SPaulina Szubarczyk 2349b6eb9b45SPaulina Szubarczyk xs_daemon_open(); 2350b6eb9b45SPaulina Szubarczyk 2351b6eb9b45SPaulina Szubarczyk xc = xc_interface_open(0, 0, 0); 2352b6eb9b45SPaulina Szubarczyk xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2353b6eb9b45SPaulina Szubarczyk xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2354b6eb9b45SPaulina Szubarczyk xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2355b6eb9b45SPaulina Szubarczyk xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2356b6eb9b45SPaulina Szubarczyk xc_domain_create(xc, 0, handle, 0, NULL, NULL); 2357b6eb9b45SPaulina Szubarczyk 2358b6eb9b45SPaulina Szubarczyk xfmem = xenforeignmemory_open(0, 0); 2359b6eb9b45SPaulina Szubarczyk xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 2360b6eb9b45SPaulina Szubarczyk 2361b6eb9b45SPaulina Szubarczyk xe = xenevtchn_open(0, 0); 2362b6eb9b45SPaulina Szubarczyk xenevtchn_fd(xe); 2363b6eb9b45SPaulina Szubarczyk 2364b6eb9b45SPaulina Szubarczyk xg = xengnttab_open(0, 0); 2365b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy(xg, 0, seg); 2366b6eb9b45SPaulina Szubarczyk 2367b6eb9b45SPaulina Szubarczyk return 0; 2368b6eb9b45SPaulina Szubarczyk} 2369b6eb9b45SPaulina SzubarczykEOF 2370b6eb9b45SPaulina Szubarczyk compile_prog "" "$xen_libs $xen_stable_libs" 2371b6eb9b45SPaulina Szubarczyk then 2372f1167ee6SJuergen Gross xen_ctrl_version=40800 2373b6eb9b45SPaulina Szubarczyk xen=yes 2374b6eb9b45SPaulina Szubarczyk elif 2375b6eb9b45SPaulina Szubarczyk cat > $TMPC <<EOF && 2376b6eb9b45SPaulina Szubarczyk/* 2377b6eb9b45SPaulina Szubarczyk * If we have stable libs the we don't want the libxc compat 2378b6eb9b45SPaulina Szubarczyk * layers, regardless of what CFLAGS we may have been given. 23795eeb39c2SIan Campbell */ 23805eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API 23815eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API 23825eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API 23835eeb39c2SIan Campbell#include <xenctrl.h> 23845eeb39c2SIan Campbell#include <xenstore.h> 23855eeb39c2SIan Campbell#include <xenevtchn.h> 23865eeb39c2SIan Campbell#include <xengnttab.h> 23875eeb39c2SIan Campbell#include <xenforeignmemory.h> 23885eeb39c2SIan Campbell#include <stdint.h> 23895eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h> 23905eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS) 23915eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined 23925eeb39c2SIan Campbell#endif 23935eeb39c2SIan Campbellint main(void) { 23945eeb39c2SIan Campbell xc_interface *xc = NULL; 23955eeb39c2SIan Campbell xenforeignmemory_handle *xfmem; 23965eeb39c2SIan Campbell xenevtchn_handle *xe; 23975eeb39c2SIan Campbell xengnttab_handle *xg; 23985eeb39c2SIan Campbell xen_domain_handle_t handle; 23995eeb39c2SIan Campbell 24005eeb39c2SIan Campbell xs_daemon_open(); 24015eeb39c2SIan Campbell 24025eeb39c2SIan Campbell xc = xc_interface_open(0, 0, 0); 24035eeb39c2SIan Campbell xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 24045eeb39c2SIan Campbell xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 24055eeb39c2SIan Campbell xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 24065eeb39c2SIan Campbell xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 24075eeb39c2SIan Campbell xc_domain_create(xc, 0, handle, 0, NULL, NULL); 24085eeb39c2SIan Campbell 24095eeb39c2SIan Campbell xfmem = xenforeignmemory_open(0, 0); 24105eeb39c2SIan Campbell xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 24115eeb39c2SIan Campbell 24125eeb39c2SIan Campbell xe = xenevtchn_open(0, 0); 24135eeb39c2SIan Campbell xenevtchn_fd(xe); 24145eeb39c2SIan Campbell 24155eeb39c2SIan Campbell xg = xengnttab_open(0, 0); 24165eeb39c2SIan Campbell xengnttab_map_grant_ref(xg, 0, 0, 0); 24175eeb39c2SIan Campbell 24185eeb39c2SIan Campbell return 0; 24195eeb39c2SIan Campbell} 24205eeb39c2SIan CampbellEOF 24215eeb39c2SIan Campbell compile_prog "" "$xen_libs $xen_stable_libs" 24225eeb39c2SIan Campbell then 2423f1167ee6SJuergen Gross xen_ctrl_version=40701 24245eeb39c2SIan Campbell xen=yes 24255eeb39c2SIan Campbell elif 24265eeb39c2SIan Campbell cat > $TMPC <<EOF && 2427e37630caSaliguori#include <xenctrl.h> 2428cdadde39SRoger Pau Monne#include <stdint.h> 2429cdadde39SRoger Pau Monneint main(void) { 2430cdadde39SRoger Pau Monne xc_interface *xc = NULL; 2431cdadde39SRoger Pau Monne xen_domain_handle_t handle; 2432cdadde39SRoger Pau Monne xc_domain_create(xc, 0, handle, 0, NULL, NULL); 2433cdadde39SRoger Pau Monne return 0; 2434cdadde39SRoger Pau Monne} 2435cdadde39SRoger Pau MonneEOF 2436cdadde39SRoger Pau Monne compile_prog "" "$xen_libs" 2437cdadde39SRoger Pau Monne then 2438f1167ee6SJuergen Gross xen_ctrl_version=40700 2439cdadde39SRoger Pau Monne xen=yes 2440cdadde39SRoger Pau Monne 2441cdadde39SRoger Pau Monne # Xen 4.6 2442cdadde39SRoger Pau Monne elif 2443cdadde39SRoger Pau Monne cat > $TMPC <<EOF && 2444cdadde39SRoger Pau Monne#include <xenctrl.h> 2445e108a3c1SAnthony PERARD#include <xenstore.h> 2446d5b93ddfSAnthony PERARD#include <stdint.h> 2447d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 2448d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 2449d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 2450d5b93ddfSAnthony PERARD#endif 2451d5b93ddfSAnthony PERARDint main(void) { 2452d5b93ddfSAnthony PERARD xc_interface *xc; 2453d5b93ddfSAnthony PERARD xs_daemon_open(); 2454d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 2455d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2456d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 2457b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 24588688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2459d8b441a3SJan Beulich xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 246020a544c7SKonrad Rzeszutek Wilk xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0); 2461d8b441a3SJan Beulich return 0; 2462d8b441a3SJan Beulich} 2463d8b441a3SJan BeulichEOF 2464d8b441a3SJan Beulich compile_prog "" "$xen_libs" 2465d8b441a3SJan Beulich then 2466f1167ee6SJuergen Gross xen_ctrl_version=40600 2467d8b441a3SJan Beulich xen=yes 2468d8b441a3SJan Beulich 2469d8b441a3SJan Beulich # Xen 4.5 2470d8b441a3SJan Beulich elif 2471d8b441a3SJan Beulich cat > $TMPC <<EOF && 2472d8b441a3SJan Beulich#include <xenctrl.h> 2473d8b441a3SJan Beulich#include <xenstore.h> 2474d8b441a3SJan Beulich#include <stdint.h> 2475d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h> 2476d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS) 2477d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined 2478d8b441a3SJan Beulich#endif 2479d8b441a3SJan Beulichint main(void) { 2480d8b441a3SJan Beulich xc_interface *xc; 2481d8b441a3SJan Beulich xs_daemon_open(); 2482d8b441a3SJan Beulich xc = xc_interface_open(0, 0, 0); 2483d8b441a3SJan Beulich xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2484d8b441a3SJan Beulich xc_gnttab_open(NULL, 0); 2485d8b441a3SJan Beulich xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2486d8b441a3SJan Beulich xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 24873996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 24883996e85cSPaul Durrant return 0; 24893996e85cSPaul Durrant} 24903996e85cSPaul DurrantEOF 24913996e85cSPaul Durrant compile_prog "" "$xen_libs" 24923996e85cSPaul Durrant then 2493f1167ee6SJuergen Gross xen_ctrl_version=40500 24943996e85cSPaul Durrant xen=yes 24953996e85cSPaul Durrant 24963996e85cSPaul Durrant elif 24973996e85cSPaul Durrant cat > $TMPC <<EOF && 24983996e85cSPaul Durrant#include <xenctrl.h> 24993996e85cSPaul Durrant#include <xenstore.h> 25003996e85cSPaul Durrant#include <stdint.h> 25013996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 25023996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 25033996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 25043996e85cSPaul Durrant#endif 25053996e85cSPaul Durrantint main(void) { 25063996e85cSPaul Durrant xc_interface *xc; 25073996e85cSPaul Durrant xs_daemon_open(); 25083996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 25093996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 25103996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 25113996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 25123996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 25138688e065SStefano Stabellini return 0; 25148688e065SStefano Stabellini} 25158688e065SStefano StabelliniEOF 25168688e065SStefano Stabellini compile_prog "" "$xen_libs" 251769deef08SPeter Maydell then 2518f1167ee6SJuergen Gross xen_ctrl_version=40200 25198688e065SStefano Stabellini xen=yes 25208688e065SStefano Stabellini 2521e37630caSaliguori else 2522fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 2523edfb07edSIan Campbell feature_not_found "xen (unsupported version)" \ 2524edfb07edSIan Campbell "Install a supported xen (xen 4.2 or newer)" 2525fc321b4bSJuan Quintela fi 2526fc321b4bSJuan Quintela xen=no 2527e37630caSaliguori fi 2528d5b93ddfSAnthony PERARD 2529d5b93ddfSAnthony PERARD if test "$xen" = yes; then 2530f1167ee6SJuergen Gross if test $xen_ctrl_version -ge 40701 ; then 25315eeb39c2SIan Campbell libs_softmmu="$xen_stable_libs $libs_softmmu" 25325eeb39c2SIan Campbell fi 2533d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 2534d5b93ddfSAnthony PERARD fi 2535e37630caSaliguori fi 2536c1cdd9d5SJuergen Grossfi 2537e37630caSaliguori 2538eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 2539edfb07edSIan Campbell if test "$xen" = "yes" && test "$linux" = "yes"; then 2540eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 2541eb6fda0fSAnthony PERARD else 2542eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 254376ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 254476ad07a4SPeter Maydell " but this feature requires /sys from Linux" 2545eb6fda0fSAnthony PERARD fi 2546eb6fda0fSAnthony PERARD xen_pci_passthrough=no 2547eb6fda0fSAnthony PERARD fi 2548eb6fda0fSAnthony PERARDfi 2549eb6fda0fSAnthony PERARD 255064a7ad6fSIan Campbellif test "$xen_pv_domain_build" = "yes" && 255164a7ad6fSIan Campbell test "$xen" != "yes"; then 255264a7ad6fSIan Campbell error_exit "User requested Xen PV domain builder support" \ 255364a7ad6fSIan Campbell "which requires Xen support." 255464a7ad6fSIan Campbellfi 255564a7ad6fSIan Campbell 2556e37630caSaliguori########################################## 2557d661d9a4SJustin Terry (VM)# Windows Hypervisor Platform accelerator (WHPX) check 2558d661d9a4SJustin Terry (VM)if test "$whpx" != "no" ; then 2559327fccb2SLucian Petrut if check_include "WinHvPlatform.h" && check_include "WinHvEmulation.h"; then 2560d661d9a4SJustin Terry (VM) whpx="yes" 2561d661d9a4SJustin Terry (VM) else 2562d661d9a4SJustin Terry (VM) if test "$whpx" = "yes"; then 256353537bb1SJustin Terry (VM) via Qemu-devel feature_not_found "WinHvPlatform" "WinHvEmulation is not installed" 2564d661d9a4SJustin Terry (VM) fi 2565d661d9a4SJustin Terry (VM) whpx="no" 2566d661d9a4SJustin Terry (VM) fi 2567d661d9a4SJustin Terry (VM)fi 2568d661d9a4SJustin Terry (VM) 2569d661d9a4SJustin Terry (VM)########################################## 2570dfffc653SJuan Quintela# Sparse probe 2571dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 25720dba6195SLoïc Minier if has cgcc; then 2573dfffc653SJuan Quintela sparse=yes 2574dfffc653SJuan Quintela else 2575dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 257621684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 2577dfffc653SJuan Quintela fi 2578dfffc653SJuan Quintela sparse=no 2579dfffc653SJuan Quintela fi 2580dfffc653SJuan Quintelafi 2581dfffc653SJuan Quintela 2582dfffc653SJuan Quintela########################################## 2583f676c67eSJeremy White# X11 probe 2584f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 25858781595bSGerd Hoffmann have_x11=yes 258689138857SStefan Weil x11_cflags=$($pkg_config --cflags x11) 258789138857SStefan Weil x11_libs=$($pkg_config --libs x11) 2588f676c67eSJeremy Whitefi 2589f676c67eSJeremy White 2590f676c67eSJeremy White########################################## 2591a4ccabcfSAnthony Liguori# GTK probe 2592a4ccabcfSAnthony Liguori 25935a464e6cSPeter Xuif test "$gtk" != "no"; then 25949e04c683SStefan Weil if test "$gtkabi" = ""; then 25955fe309ffSGerd Hoffmann # The GTK ABI was not specified explicitly, so try whether 3.0 is available. 25965fe309ffSGerd Hoffmann # Use 2.0 as a fallback if that is available. 25975fe309ffSGerd Hoffmann if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 25989e04c683SStefan Weil gtkabi=3.0 25995fe309ffSGerd Hoffmann elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 26009e04c683SStefan Weil gtkabi=2.0 26015fe309ffSGerd Hoffmann else 26025fe309ffSGerd Hoffmann gtkabi=3.0 26039e04c683SStefan Weil fi 26049e04c683SStefan Weil fi 2605528de90aSDaniel P. Berrange gtkpackage="gtk+-$gtkabi" 26060a337ed0SGerd Hoffmann gtkx11package="gtk+-x11-$gtkabi" 2607528de90aSDaniel P. Berrange if test "$gtkabi" = "3.0" ; then 2608528de90aSDaniel P. Berrange gtkversion="3.0.0" 2609bbbf9bfbSStefan Weil else 2610bbbf9bfbSStefan Weil gtkversion="2.18.0" 2611bbbf9bfbSStefan Weil fi 2612bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 261389138857SStefan Weil gtk_cflags=$($pkg_config --cflags $gtkpackage) 261489138857SStefan Weil gtk_libs=$($pkg_config --libs $gtkpackage) 261589138857SStefan Weil gtk_version=$($pkg_config --modversion $gtkpackage) 26160a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 26178781595bSGerd Hoffmann need_x11=yes 2618f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 2619f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 26200a337ed0SGerd Hoffmann fi 2621bbbf9bfbSStefan Weil gtk="yes" 2622bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 26235fe309ffSGerd Hoffmann feature_not_found "gtk" "Install gtk3-devel" 2624bbbf9bfbSStefan Weil else 2625bbbf9bfbSStefan Weil gtk="no" 2626bbbf9bfbSStefan Weil fi 2627bbbf9bfbSStefan Weilfi 2628bbbf9bfbSStefan Weil 2629ddbb0d09SDaniel P. Berrange 2630ddbb0d09SDaniel P. Berrange########################################## 2631ddbb0d09SDaniel P. Berrange# GNUTLS probe 2632ddbb0d09SDaniel P. Berrange 263337371299SPeter Maydellgnutls_works() { 263437371299SPeter Maydell # Unfortunately some distros have bad pkg-config information for gnutls 263537371299SPeter Maydell # such that it claims to exist but you get a compiler error if you try 263637371299SPeter Maydell # to use the options returned by --libs. Specifically, Ubuntu for --static 263737371299SPeter Maydell # builds doesn't work: 263837371299SPeter Maydell # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035 263937371299SPeter Maydell # 264037371299SPeter Maydell # So sanity check the cflags/libs before assuming gnutls can be used. 264137371299SPeter Maydell if ! $pkg_config --exists "gnutls"; then 264237371299SPeter Maydell return 1 264337371299SPeter Maydell fi 264437371299SPeter Maydell 264537371299SPeter Maydell write_c_skeleton 264637371299SPeter Maydell compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)" 264737371299SPeter Maydell} 264837371299SPeter Maydell 264962893b67SDaniel P. Berrangegnutls_gcrypt=no 2650ed754746SDaniel P. Berrangegnutls_nettle=no 2651ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then 265237371299SPeter Maydell if gnutls_works; then 265389138857SStefan Weil gnutls_cflags=$($pkg_config --cflags gnutls) 265489138857SStefan Weil gnutls_libs=$($pkg_config --libs gnutls) 2655ddbb0d09SDaniel P. Berrange libs_softmmu="$gnutls_libs $libs_softmmu" 2656ddbb0d09SDaniel P. Berrange libs_tools="$gnutls_libs $libs_tools" 2657ddbb0d09SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 2658ddbb0d09SDaniel P. Berrange gnutls="yes" 2659ddbb0d09SDaniel P. Berrange 2660b917da4cSDaniel P. Berrange # gnutls_rnd requires >= 2.11.0 2661b917da4cSDaniel P. Berrange if $pkg_config --exists "gnutls >= 2.11.0"; then 2662b917da4cSDaniel P. Berrange gnutls_rnd="yes" 2663b917da4cSDaniel P. Berrange else 2664b917da4cSDaniel P. Berrange gnutls_rnd="no" 2665b917da4cSDaniel P. Berrange fi 2666b917da4cSDaniel P. Berrange 266762893b67SDaniel P. Berrange if $pkg_config --exists 'gnutls >= 3.0'; then 266862893b67SDaniel P. Berrange gnutls_gcrypt=no 2669ed754746SDaniel P. Berrange gnutls_nettle=yes 267062893b67SDaniel P. Berrange elif $pkg_config --exists 'gnutls >= 2.12'; then 267189138857SStefan Weil case $($pkg_config --libs --static gnutls) in 2672ed754746SDaniel P. Berrange *gcrypt*) 2673ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2674ed754746SDaniel P. Berrange gnutls_nettle=no 2675ed754746SDaniel P. Berrange ;; 2676ed754746SDaniel P. Berrange *nettle*) 2677ed754746SDaniel P. Berrange gnutls_gcrypt=no 2678ed754746SDaniel P. Berrange gnutls_nettle=yes 2679ed754746SDaniel P. Berrange ;; 2680ed754746SDaniel P. Berrange *) 2681ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2682ed754746SDaniel P. Berrange gnutls_nettle=no 2683ed754746SDaniel P. Berrange ;; 268462893b67SDaniel P. Berrange esac 268562893b67SDaniel P. Berrange else 268662893b67SDaniel P. Berrange gnutls_gcrypt=yes 2687ed754746SDaniel P. Berrange gnutls_nettle=no 268862893b67SDaniel P. Berrange fi 2689ddbb0d09SDaniel P. Berrange elif test "$gnutls" = "yes"; then 2690ddbb0d09SDaniel P. Berrange feature_not_found "gnutls" "Install gnutls devel" 2691ddbb0d09SDaniel P. Berrange else 2692ddbb0d09SDaniel P. Berrange gnutls="no" 2693b917da4cSDaniel P. Berrange gnutls_rnd="no" 2694ddbb0d09SDaniel P. Berrange fi 2695ddbb0d09SDaniel P. Berrangeelse 2696b917da4cSDaniel P. Berrange gnutls_rnd="no" 2697ddbb0d09SDaniel P. Berrangefi 2698ddbb0d09SDaniel P. Berrange 269991bfcdb0SDaniel P. Berrange 270091bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag, 270191bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle 270291bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to nettle 270391bfcdb0SDaniel P. Berrangeif test -z "$gcrypt" 270491bfcdb0SDaniel P. Berrangethen 270591bfcdb0SDaniel P. Berrange if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes" 270691bfcdb0SDaniel P. Berrange then 270791bfcdb0SDaniel P. Berrange gcrypt="no" 270891bfcdb0SDaniel P. Berrange fi 270991bfcdb0SDaniel P. Berrangefi 271091bfcdb0SDaniel P. Berrange 271191bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag, 271291bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt 271391bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to gcrypt 271491bfcdb0SDaniel P. Berrangeif test -z "$nettle" 271591bfcdb0SDaniel P. Berrangethen 271691bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes" 271791bfcdb0SDaniel P. Berrange then 271891bfcdb0SDaniel P. Berrange nettle="no" 271991bfcdb0SDaniel P. Berrange fi 272091bfcdb0SDaniel P. Berrangefi 272191bfcdb0SDaniel P. Berrange 272291bfcdb0SDaniel P. Berrangehas_libgcrypt_config() { 272391bfcdb0SDaniel P. Berrange if ! has "libgcrypt-config" 272491bfcdb0SDaniel P. Berrange then 272591bfcdb0SDaniel P. Berrange return 1 272691bfcdb0SDaniel P. Berrange fi 272791bfcdb0SDaniel P. Berrange 272891bfcdb0SDaniel P. Berrange if test -n "$cross_prefix" 272991bfcdb0SDaniel P. Berrange then 273089138857SStefan Weil host=$(libgcrypt-config --host) 273191bfcdb0SDaniel P. Berrange if test "$host-" != $cross_prefix 273291bfcdb0SDaniel P. Berrange then 273391bfcdb0SDaniel P. Berrange return 1 273491bfcdb0SDaniel P. Berrange fi 273591bfcdb0SDaniel P. Berrange fi 273691bfcdb0SDaniel P. Berrange 273791bfcdb0SDaniel P. Berrange return 0 273891bfcdb0SDaniel P. Berrange} 273991bfcdb0SDaniel P. Berrange 274091bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then 274191bfcdb0SDaniel P. Berrange if has_libgcrypt_config; then 274289138857SStefan Weil gcrypt_cflags=$(libgcrypt-config --cflags) 274389138857SStefan Weil gcrypt_libs=$(libgcrypt-config --libs) 274491bfcdb0SDaniel P. Berrange # Debian has remove -lgpg-error from libgcrypt-config 274591bfcdb0SDaniel P. Berrange # as it "spreads unnecessary dependencies" which in 274691bfcdb0SDaniel P. Berrange # turn breaks static builds... 274791bfcdb0SDaniel P. Berrange if test "$static" = "yes" 274891bfcdb0SDaniel P. Berrange then 274991bfcdb0SDaniel P. Berrange gcrypt_libs="$gcrypt_libs -lgpg-error" 275091bfcdb0SDaniel P. Berrange fi 275162893b67SDaniel P. Berrange libs_softmmu="$gcrypt_libs $libs_softmmu" 275262893b67SDaniel P. Berrange libs_tools="$gcrypt_libs $libs_tools" 275362893b67SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" 275491bfcdb0SDaniel P. Berrange gcrypt="yes" 275591bfcdb0SDaniel P. Berrange if test -z "$nettle"; then 275691bfcdb0SDaniel P. Berrange nettle="no" 275791bfcdb0SDaniel P. Berrange fi 275837788f25SDaniel P. Berrange 275937788f25SDaniel P. Berrange cat > $TMPC << EOF 276037788f25SDaniel P. Berrange#include <gcrypt.h> 276137788f25SDaniel P. Berrangeint main(void) { 276237788f25SDaniel P. Berrange gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2, 276337788f25SDaniel P. Berrange GCRY_MD_SHA256, 276437788f25SDaniel P. Berrange NULL, 0, 0, 0, NULL); 276537788f25SDaniel P. Berrange return 0; 276637788f25SDaniel P. Berrange} 276737788f25SDaniel P. BerrangeEOF 276837788f25SDaniel P. Berrange if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 276937788f25SDaniel P. Berrange gcrypt_kdf=yes 277037788f25SDaniel P. Berrange fi 27711f923c70SLongpeng(Mike) 27721f923c70SLongpeng(Mike) cat > $TMPC << EOF 27731f923c70SLongpeng(Mike)#include <gcrypt.h> 27741f923c70SLongpeng(Mike)int main(void) { 27751f923c70SLongpeng(Mike) gcry_mac_hd_t handle; 27761f923c70SLongpeng(Mike) gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5, 27771f923c70SLongpeng(Mike) GCRY_MAC_FLAG_SECURE, NULL); 27781f923c70SLongpeng(Mike) return 0; 27791f923c70SLongpeng(Mike)} 27801f923c70SLongpeng(Mike)EOF 27811f923c70SLongpeng(Mike) if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 27821f923c70SLongpeng(Mike) gcrypt_hmac=yes 27831f923c70SLongpeng(Mike) fi 278462893b67SDaniel P. Berrange else 278591bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes"; then 278662893b67SDaniel P. Berrange feature_not_found "gcrypt" "Install gcrypt devel" 278791bfcdb0SDaniel P. Berrange else 278891bfcdb0SDaniel P. Berrange gcrypt="no" 278991bfcdb0SDaniel P. Berrange fi 279062893b67SDaniel P. Berrange fi 279162893b67SDaniel P. Berrangefi 279262893b67SDaniel P. Berrange 2793ddbb0d09SDaniel P. Berrange 279491bfcdb0SDaniel P. Berrangeif test "$nettle" != "no"; then 2795ed754746SDaniel P. Berrange if $pkg_config --exists "nettle"; then 279689138857SStefan Weil nettle_cflags=$($pkg_config --cflags nettle) 279789138857SStefan Weil nettle_libs=$($pkg_config --libs nettle) 279889138857SStefan Weil nettle_version=$($pkg_config --modversion nettle) 2799ed754746SDaniel P. Berrange libs_softmmu="$nettle_libs $libs_softmmu" 2800ed754746SDaniel P. Berrange libs_tools="$nettle_libs $libs_tools" 2801ed754746SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" 280291bfcdb0SDaniel P. Berrange nettle="yes" 2803fff2f982SDaniel P. Berrange 2804fff2f982SDaniel P. Berrange cat > $TMPC << EOF 28059e87a691SSteven Luo#include <stddef.h> 2806fff2f982SDaniel P. Berrange#include <nettle/pbkdf2.h> 2807fff2f982SDaniel P. Berrangeint main(void) { 2808fff2f982SDaniel P. Berrange pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL); 2809fff2f982SDaniel P. Berrange return 0; 2810fff2f982SDaniel P. Berrange} 2811fff2f982SDaniel P. BerrangeEOF 2812fff2f982SDaniel P. Berrange if compile_prog "$nettle_cflags" "$nettle_libs" ; then 2813fff2f982SDaniel P. Berrange nettle_kdf=yes 2814fff2f982SDaniel P. Berrange fi 2815ed754746SDaniel P. Berrange else 281691bfcdb0SDaniel P. Berrange if test "$nettle" = "yes"; then 2817ed754746SDaniel P. Berrange feature_not_found "nettle" "Install nettle devel" 281891bfcdb0SDaniel P. Berrange else 281991bfcdb0SDaniel P. Berrange nettle="no" 2820ed754746SDaniel P. Berrange fi 2821ed754746SDaniel P. Berrange fi 282291bfcdb0SDaniel P. Berrangefi 282391bfcdb0SDaniel P. Berrange 282491bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes" 282591bfcdb0SDaniel P. Berrangethen 282691bfcdb0SDaniel P. Berrange error_exit "Only one of gcrypt & nettle can be enabled" 282791bfcdb0SDaniel P. Berrangefi 2828ed754746SDaniel P. Berrange 28299a2fd434SDaniel P. Berrange########################################## 28309a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite 28319a2fd434SDaniel P. Berrange 28329a2fd434SDaniel P. Berrangetasn1=yes 283390246037SDaniel P. Berrangetasn1_cflags="" 283490246037SDaniel P. Berrangetasn1_libs="" 28359a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then 283689138857SStefan Weil tasn1_cflags=$($pkg_config --cflags libtasn1) 283789138857SStefan Weil tasn1_libs=$($pkg_config --libs libtasn1) 28389a2fd434SDaniel P. Berrangeelse 28399a2fd434SDaniel P. Berrange tasn1=no 28409a2fd434SDaniel P. Berrangefi 28419a2fd434SDaniel P. Berrange 2842ed754746SDaniel P. Berrange 2843bbbf9bfbSStefan Weil########################################## 2844559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket ) 2845559607eaSDaniel P. Berrange 2846559607eaSDaniel P. Berrangehave_ifaddrs_h=yes 2847559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then 2848559607eaSDaniel P. Berrange have_ifaddrs_h=no 2849559607eaSDaniel P. Berrangefi 2850559607eaSDaniel P. Berrange 2851559607eaSDaniel P. Berrange########################################## 2852bbbf9bfbSStefan Weil# VTE probe 2853bbbf9bfbSStefan Weil 2854bbbf9bfbSStefan Weilif test "$vte" != "no"; then 2855bbbf9bfbSStefan Weil if test "$gtkabi" = "3.0"; then 2856c6feff9eSCole Robinson vteminversion="0.32.0" 2857c6feff9eSCole Robinson if $pkg_config --exists "vte-2.91"; then 2858c6feff9eSCole Robinson vtepackage="vte-2.91" 2859c6feff9eSCole Robinson else 2860528de90aSDaniel P. Berrange vtepackage="vte-2.90" 2861c6feff9eSCole Robinson fi 2862528de90aSDaniel P. Berrange else 2863528de90aSDaniel P. Berrange vtepackage="vte" 2864c6feff9eSCole Robinson vteminversion="0.24.0" 2865528de90aSDaniel P. Berrange fi 2866c6feff9eSCole Robinson if $pkg_config --exists "$vtepackage >= $vteminversion"; then 286789138857SStefan Weil vte_cflags=$($pkg_config --cflags $vtepackage) 286889138857SStefan Weil vte_libs=$($pkg_config --libs $vtepackage) 286989138857SStefan Weil vteversion=$($pkg_config --modversion $vtepackage) 2870bbbf9bfbSStefan Weil vte="yes" 2871bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 28729e04c683SStefan Weil if test "$gtkabi" = "3.0"; then 2873c6feff9eSCole Robinson feature_not_found "vte" "Install libvte-2.90/2.91 devel" 28749e04c683SStefan Weil else 28759e04c683SStefan Weil feature_not_found "vte" "Install libvte devel" 28769e04c683SStefan Weil fi 2877bbbf9bfbSStefan Weil else 2878bbbf9bfbSStefan Weil vte="no" 2879a4ccabcfSAnthony Liguori fi 2880a4ccabcfSAnthony Liguorifi 2881a4ccabcfSAnthony Liguori 2882a4ccabcfSAnthony Liguori########################################## 288311d9f695Sbellard# SDL probe 288411d9f695Sbellard 28853ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config). Try 28863ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 288747c03744SDave Airlie 2888c6093a05SPeter Xusdl_probe () 2889c6093a05SPeter Xu{ 2890c6093a05SPeter Xu sdl_too_old=no 2891ee8466d0SCole Robinson if test "$sdlabi" = ""; then 28928f4ea9cdSGerd Hoffmann if $pkg_config --exists "sdl2"; then 2893ee8466d0SCole Robinson sdlabi=2.0 28948f4ea9cdSGerd Hoffmann elif $pkg_config --exists "sdl"; then 2895ee8466d0SCole Robinson sdlabi=1.2 28968f4ea9cdSGerd Hoffmann else 28978f4ea9cdSGerd Hoffmann sdlabi=2.0 2898ee8466d0SCole Robinson fi 2899ee8466d0SCole Robinson fi 2900ee8466d0SCole Robinson 290147c03744SDave Airlie if test $sdlabi = "2.0"; then 290247c03744SDave Airlie sdl_config=$sdl2_config 290347c03744SDave Airlie sdlname=sdl2 290447c03744SDave Airlie sdlconfigname=sdl2_config 2905e07047cfSCole Robinson elif test $sdlabi = "1.2"; then 290647c03744SDave Airlie sdlname=sdl 290747c03744SDave Airlie sdlconfigname=sdl_config 2908e07047cfSCole Robinson else 2909e07047cfSCole Robinson error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0" 29103ec87ffeSPaolo Bonzini fi 29113ec87ffeSPaolo Bonzini 291289138857SStefan Weil if test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then 291347c03744SDave Airlie sdl_config=$sdlconfigname 291447c03744SDave Airlie fi 291547c03744SDave Airlie 291647c03744SDave Airlie if $pkg_config $sdlname --exists; then 291747c03744SDave Airlie sdlconfig="$pkg_config $sdlname" 291889138857SStefan Weil sdlversion=$($sdlconfig --modversion 2>/dev/null) 29193ec87ffeSPaolo Bonzini elif has ${sdl_config}; then 29203ec87ffeSPaolo Bonzini sdlconfig="$sdl_config" 292189138857SStefan Weil sdlversion=$($sdlconfig --version) 2922a0dfd8a4SLoïc Minier else 2923a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 29248f4ea9cdSGerd Hoffmann feature_not_found "sdl" "Install SDL2-devel" 2925a0dfd8a4SLoïc Minier fi 2926a0dfd8a4SLoïc Minier sdl=no 2927c6093a05SPeter Xu # no need to do the rest 2928c6093a05SPeter Xu return 29299316f803SPaolo Bonzini fi 293029e5badaSScott Wood if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 29313ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 29323ec87ffeSPaolo Bonzini fi 293311d9f695Sbellard 293411d9f695Sbellard cat > $TMPC << EOF 293511d9f695Sbellard#include <SDL.h> 293611d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 293711d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 293811d9f695SbellardEOF 293989138857SStefan Weil sdl_cflags=$($sdlconfig --cflags 2>/dev/null) 29402ca5c430SGerd Hoffmann sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug 294174f42e18STeLeMan if test "$static" = "yes" ; then 29425f37e6d4SThomas Huth if $pkg_config $sdlname --exists; then 29435f37e6d4SThomas Huth sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null) 29445f37e6d4SThomas Huth else 294589138857SStefan Weil sdl_libs=$($sdlconfig --static-libs 2>/dev/null) 29465f37e6d4SThomas Huth fi 294774f42e18STeLeMan else 294889138857SStefan Weil sdl_libs=$($sdlconfig --libs 2>/dev/null) 294974f42e18STeLeMan fi 295052166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 295189138857SStefan Weil if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then 295211d9f695Sbellard sdl_too_old=yes 295311d9f695Sbellard else 295411d9f695Sbellard sdl=yes 295511d9f695Sbellard fi 29567c1f25b4Sbellard 295767c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 29581ac88f28SJuan Quintela if test "$sdl" = "yes" -a "$static" = "yes" ; then 295967c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 296089138857SStefan Weil sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)" 296189138857SStefan Weil sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)" 296211d9f695Sbellard fi 296352166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 29641ac88f28SJuan Quintela : 29651ac88f28SJuan Quintela else 29661ac88f28SJuan Quintela sdl=no 29677c1f25b4Sbellard fi 29687c1f25b4Sbellard fi # static link 2969c4198157SJuan Quintela else # sdl not found 2970c4198157SJuan Quintela if test "$sdl" = "yes" ; then 297121684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2972c4198157SJuan Quintela fi 2973c4198157SJuan Quintela sdl=no 29747c1f25b4Sbellard fi # sdl compile test 2975c6093a05SPeter Xu} 2976c6093a05SPeter Xu 2977c6093a05SPeter Xuif test "$sdl" != "no" ; then 2978c6093a05SPeter Xu sdl_probe 2979fd677642Sthsfi 298011d9f695Sbellard 29815368a422Saliguoriif test "$sdl" = "yes" ; then 29825368a422Saliguori cat > $TMPC <<EOF 29835368a422Saliguori#include <SDL.h> 29845368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 29855368a422Saliguori#include <X11/XKBlib.h> 29865368a422Saliguori#else 29875368a422Saliguori#error No x11 support 29885368a422Saliguori#endif 29895368a422Saliguoriint main(void) { return 0; } 29905368a422SaliguoriEOF 2991f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 29928781595bSGerd Hoffmann need_x11=yes 2993f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 2994f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 29955368a422Saliguori fi 29965368a422Saliguorifi 29975368a422Saliguori 29988f28f3fbSths########################################## 29992da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 30002da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 30012da776dbSMichael R. Hines cat > $TMPC <<EOF 30022da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 30032da776dbSMichael R. Hinesint main(void) { return 0; } 30042da776dbSMichael R. HinesEOF 3005ef6d4ccdSYuval Shaia rdma_libs="-lrdmacm -libverbs -libumad" 30062da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 30072da776dbSMichael R. Hines rdma="yes" 3008ef6d4ccdSYuval Shaia libs_softmmu="$libs_softmmu $rdma_libs" 30092da776dbSMichael R. Hines else 30102da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 30112da776dbSMichael R. Hines error_exit \ 3012ef6d4ccdSYuval Shaia " OpenFabrics librdmacm/libibverbs/libibumad not present." \ 30132da776dbSMichael R. Hines " Your options:" \ 3014ef6d4ccdSYuval Shaia " (1) Fast: Install infiniband packages (devel) from your distro." \ 30152da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 30162da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 30172da776dbSMichael R. Hines fi 30182da776dbSMichael R. Hines rdma="no" 30192da776dbSMichael R. Hines fi 30202da776dbSMichael R. Hinesfi 30212da776dbSMichael R. Hines 302295c6bff3SBenoît Canet 302395c6bff3SBenoît Canet########################################## 30242f9606b3Saliguori# VNC SASL detection 3025821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 30262f9606b3Saliguori cat > $TMPC <<EOF 30272f9606b3Saliguori#include <sasl/sasl.h> 30282f9606b3Saliguori#include <stdio.h> 30292f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 30302f9606b3SaliguoriEOF 30312f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 30322f9606b3Saliguori vnc_sasl_cflags="" 30332f9606b3Saliguori vnc_sasl_libs="-lsasl2" 303452166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 3035ea784e3bSJuan Quintela vnc_sasl=yes 3036fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 3037ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 30382f9606b3Saliguori else 3039ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 304021684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 3041ea784e3bSJuan Quintela fi 3042ea784e3bSJuan Quintela vnc_sasl=no 30432f9606b3Saliguori fi 30442f9606b3Saliguorifi 30452f9606b3Saliguori 30462f9606b3Saliguori########################################## 30472f6f5c7aSCorentin Chary# VNC JPEG detection 3048821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 30492f6f5c7aSCorentin Charycat > $TMPC <<EOF 30502f6f5c7aSCorentin Chary#include <stdio.h> 30512f6f5c7aSCorentin Chary#include <jpeglib.h> 30522f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 30532f6f5c7aSCorentin CharyEOF 30542f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 30552f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 30562f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 30572f6f5c7aSCorentin Chary vnc_jpeg=yes 30582f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 3059ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 30602f6f5c7aSCorentin Chary else 30612f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 306221684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 30632f6f5c7aSCorentin Chary fi 30642f6f5c7aSCorentin Chary vnc_jpeg=no 30652f6f5c7aSCorentin Chary fi 30662f6f5c7aSCorentin Charyfi 30672f6f5c7aSCorentin Chary 30682f6f5c7aSCorentin Chary########################################## 3069efe556adSCorentin Chary# VNC PNG detection 3070821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 3071efe556adSCorentin Charycat > $TMPC <<EOF 3072efe556adSCorentin Chary//#include <stdio.h> 3073efe556adSCorentin Chary#include <png.h> 3074832ce9c2SScott Wood#include <stddef.h> 3075efe556adSCorentin Charyint main(void) { 3076efe556adSCorentin Chary png_structp png_ptr; 3077efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 30787edc3fedSPeter Maydell return png_ptr != 0; 3079efe556adSCorentin Chary} 3080efe556adSCorentin CharyEOF 308165d5d3f9SStefan Weil if $pkg_config libpng --exists; then 308289138857SStefan Weil vnc_png_cflags=$($pkg_config libpng --cflags) 308389138857SStefan Weil vnc_png_libs=$($pkg_config libpng --libs) 30849af8025eSBrad else 3085efe556adSCorentin Chary vnc_png_cflags="" 3086efe556adSCorentin Chary vnc_png_libs="-lpng" 30879af8025eSBrad fi 3088efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 3089efe556adSCorentin Chary vnc_png=yes 3090efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 30919af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 3092efe556adSCorentin Chary else 3093efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 309421684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 3095efe556adSCorentin Chary fi 3096efe556adSCorentin Chary vnc_png=no 3097efe556adSCorentin Chary fi 3098efe556adSCorentin Charyfi 3099efe556adSCorentin Chary 3100efe556adSCorentin Chary########################################## 31016a021536SGerd Hoffmann# xkbcommon probe 31026a021536SGerd Hoffmannif test "$xkbcommon" != "no" ; then 31036a021536SGerd Hoffmann if $pkg_config xkbcommon --exists; then 31046a021536SGerd Hoffmann xkbcommon_cflags=$($pkg_config xkbcommon --cflags) 31056a021536SGerd Hoffmann xkbcommon_libs=$($pkg_config xkbcommon --libs) 31066a021536SGerd Hoffmann xkbcommon=yes 31076a021536SGerd Hoffmann else 31086a021536SGerd Hoffmann if test "$xkbcommon" = "yes" ; then 31096a021536SGerd Hoffmann feature_not_found "xkbcommon" "Install libxkbcommon-devel" 31106a021536SGerd Hoffmann fi 31116a021536SGerd Hoffmann xkbcommon=no 31126a021536SGerd Hoffmann fi 31136a021536SGerd Hoffmannfi 31146a021536SGerd Hoffmann 31156a021536SGerd Hoffmann########################################## 311676655d6dSaliguori# fnmatch() probe, used for ACL routines 311776655d6dSaliguorifnmatch="no" 311876655d6dSaliguoricat > $TMPC << EOF 311976655d6dSaliguori#include <fnmatch.h> 312076655d6dSaliguoriint main(void) 312176655d6dSaliguori{ 312276655d6dSaliguori fnmatch("foo", "foo", 0); 312376655d6dSaliguori return 0; 312476655d6dSaliguori} 312576655d6dSaliguoriEOF 312652166aa0SJuan Quintelaif compile_prog "" "" ; then 312776655d6dSaliguori fnmatch="yes" 312876655d6dSaliguorifi 312976655d6dSaliguori 313076655d6dSaliguori########################################## 3131c1bb86cdSEric Blake# xfsctl() probe, used for file-posix.c 3132dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 3133dce512deSChristoph Hellwig cat > $TMPC << EOF 3134ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 3135dce512deSChristoph Hellwig#include <xfs/xfs.h> 3136dce512deSChristoph Hellwigint main(void) 3137dce512deSChristoph Hellwig{ 3138dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 3139dce512deSChristoph Hellwig return 0; 3140dce512deSChristoph Hellwig} 3141dce512deSChristoph HellwigEOF 3142dce512deSChristoph Hellwig if compile_prog "" "" ; then 3143dce512deSChristoph Hellwig xfs="yes" 3144dce512deSChristoph Hellwig else 3145dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 314621684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 3147dce512deSChristoph Hellwig fi 3148dce512deSChristoph Hellwig xfs=no 3149dce512deSChristoph Hellwig fi 3150dce512deSChristoph Hellwigfi 3151dce512deSChristoph Hellwig 3152dce512deSChristoph Hellwig########################################## 31538a16d273Sths# vde libraries probe 3154dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 31554baae0acSJuan Quintela vde_libs="-lvdeplug" 31568a16d273Sths cat > $TMPC << EOF 31578a16d273Sths#include <libvdeplug.h> 31584a7f0e06Spbrookint main(void) 31594a7f0e06Spbrook{ 31604a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 3161fea08e08SPeter Maydell char s[] = ""; 3162fea08e08SPeter Maydell vde_open(s, s, &a); 31634a7f0e06Spbrook return 0; 31644a7f0e06Spbrook} 31658a16d273SthsEOF 316652166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 31674baae0acSJuan Quintela vde=yes 3168dfb278bdSJuan Quintela else 3169dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 317021684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 3171dfb278bdSJuan Quintela fi 3172dfb278bdSJuan Quintela vde=no 31738a16d273Sths fi 31748a16d273Sthsfi 31758a16d273Sths 31768a16d273Sths########################################## 31770a985b37SVincenzo Maffione# netmap support probe 31780a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 31790a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 31800a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 31810a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 31820a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 318358952137SVincenzo Maffioneif test "$netmap" != "no" ; then 318458952137SVincenzo Maffione cat > $TMPC << EOF 318558952137SVincenzo Maffione#include <inttypes.h> 318658952137SVincenzo Maffione#include <net/if.h> 318758952137SVincenzo Maffione#include <net/netmap.h> 318858952137SVincenzo Maffione#include <net/netmap_user.h> 31890a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 31900a985b37SVincenzo Maffione#error 31910a985b37SVincenzo Maffione#endif 319258952137SVincenzo Maffioneint main(void) { return 0; } 319358952137SVincenzo MaffioneEOF 319458952137SVincenzo Maffione if compile_prog "" "" ; then 319558952137SVincenzo Maffione netmap=yes 319658952137SVincenzo Maffione else 319758952137SVincenzo Maffione if test "$netmap" = "yes" ; then 319858952137SVincenzo Maffione feature_not_found "netmap" 319958952137SVincenzo Maffione fi 320058952137SVincenzo Maffione netmap=no 320158952137SVincenzo Maffione fi 320258952137SVincenzo Maffionefi 320358952137SVincenzo Maffione 320458952137SVincenzo Maffione########################################## 320547e98658SCorey Bryant# libcap-ng library probe 320647e98658SCorey Bryantif test "$cap_ng" != "no" ; then 320747e98658SCorey Bryant cap_libs="-lcap-ng" 320847e98658SCorey Bryant cat > $TMPC << EOF 320947e98658SCorey Bryant#include <cap-ng.h> 321047e98658SCorey Bryantint main(void) 321147e98658SCorey Bryant{ 321247e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 321347e98658SCorey Bryant return 0; 321447e98658SCorey Bryant} 321547e98658SCorey BryantEOF 321647e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 321747e98658SCorey Bryant cap_ng=yes 321847e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 321947e98658SCorey Bryant else 322047e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 322121684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 322247e98658SCorey Bryant fi 322347e98658SCorey Bryant cap_ng=no 322447e98658SCorey Bryant fi 322547e98658SCorey Bryantfi 322647e98658SCorey Bryant 322747e98658SCorey Bryant########################################## 3228c2de5c91Smalc# Sound support libraries probe 32298f28f3fbSths 3230c2de5c91Smalcaudio_drv_probe() 3231c2de5c91Smalc{ 3232c2de5c91Smalc drv=$1 3233c2de5c91Smalc hdr=$2 3234c2de5c91Smalc lib=$3 3235c2de5c91Smalc exp=$4 3236c2de5c91Smalc cfl=$5 32378f28f3fbSths cat > $TMPC << EOF 3238c2de5c91Smalc#include <$hdr> 3239c2de5c91Smalcint main(void) { $exp } 32408f28f3fbSthsEOF 324152166aa0SJuan Quintela if compile_prog "$cfl" "$lib" ; then 32428f28f3fbSths : 32438f28f3fbSths else 324476ad07a4SPeter Maydell error_exit "$drv check failed" \ 324576ad07a4SPeter Maydell "Make sure to have the $drv libs and headers installed." 32468f28f3fbSths fi 3247c2de5c91Smalc} 3248c2de5c91Smalc 324989138857SStefan Weilaudio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g') 3250c2de5c91Smalcfor drv in $audio_drv_list; do 3251c2de5c91Smalc case $drv in 3252c2de5c91Smalc alsa) 3253c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 3254e35bcb0cSStefan Weil "return snd_pcm_close((snd_pcm_t *)0);" 3255b1149911SFam Zheng alsa_libs="-lasound" 3256c2de5c91Smalc ;; 3257c2de5c91Smalc 3258b8e59f18Smalc pa) 3259e58ff62dSPeter Krempa audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \ 3260e58ff62dSPeter Krempa "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;" 3261b1149911SFam Zheng pulse_libs="-lpulse" 326267f86e8eSJuan Quintela audio_pt_int="yes" 3263b8e59f18Smalc ;; 3264b8e59f18Smalc 3265373967b2SGerd Hoffmann sdl) 3266373967b2SGerd Hoffmann if test "$sdl" = "no"; then 3267373967b2SGerd Hoffmann error_exit "sdl not found or disabled, can not use sdl audio driver" 3268373967b2SGerd Hoffmann fi 3269373967b2SGerd Hoffmann ;; 3270373967b2SGerd Hoffmann 3271997e690aSJuan Quintela coreaudio) 3272b1149911SFam Zheng coreaudio_libs="-framework CoreAudio" 3273997e690aSJuan Quintela ;; 3274997e690aSJuan Quintela 3275a4bf6780SJuan Quintela dsound) 3276b1149911SFam Zheng dsound_libs="-lole32 -ldxguid" 3277d5631638Smalc audio_win_int="yes" 3278a4bf6780SJuan Quintela ;; 3279a4bf6780SJuan Quintela 3280a4bf6780SJuan Quintela oss) 3281b1149911SFam Zheng oss_libs="$oss_lib" 3282a4bf6780SJuan Quintela ;; 3283a4bf6780SJuan Quintela 3284373967b2SGerd Hoffmann wav) 3285373967b2SGerd Hoffmann # XXX: Probes for CoreAudio, DirectSound 32862f6a1ab0Sblueswir1 ;; 32872f6a1ab0Sblueswir1 3288e4c63a6aSmalc *) 32891c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 329076ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 329176ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 3292e4c63a6aSmalc } 3293e4c63a6aSmalc ;; 3294c2de5c91Smalc esac 3295c2de5c91Smalcdone 32968f28f3fbSths 32974d3b6f6eSbalrog########################################## 32982e4d9fb1Saurel32# BrlAPI probe 32992e4d9fb1Saurel32 33004ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 3301eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 33022e4d9fb1Saurel32 cat > $TMPC << EOF 33032e4d9fb1Saurel32#include <brlapi.h> 3304832ce9c2SScott Wood#include <stddef.h> 33052e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 33062e4d9fb1Saurel32EOF 330752166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 33082e4d9fb1Saurel32 brlapi=yes 33094ffcedb6SJuan Quintela else 33104ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 331121684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 33124ffcedb6SJuan Quintela fi 33134ffcedb6SJuan Quintela brlapi=no 3314eb82284fSJuan Quintela fi 3315eb82284fSJuan Quintelafi 33162e4d9fb1Saurel32 33172e4d9fb1Saurel32########################################## 33184d3b6f6eSbalrog# curses probe 3319a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 3320e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 33218ddc5bf9SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):" 33228ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 3323e095e2f3SStefan Weil else 33247c703002SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:" 33258ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw" 3326e095e2f3SStefan Weil fi 3327c584a6d0SJuan Quintela curses_found=no 33284d3b6f6eSbalrog cat > $TMPC << EOF 33298ddc5bf9SSamuel Thibault#include <locale.h> 33304d3b6f6eSbalrog#include <curses.h> 33318ddc5bf9SSamuel Thibault#include <wchar.h> 3332ef9a2524SStefan Weilint main(void) { 33338ddc5bf9SSamuel Thibault wchar_t wch = L'w'; 33348ddc5bf9SSamuel Thibault setlocale(LC_ALL, ""); 3335ef9a2524SStefan Weil resize_term(0, 0); 33368ddc5bf9SSamuel Thibault addwstr(L"wide chars\n"); 33378ddc5bf9SSamuel Thibault addnwstr(&wch, 1); 33387c703002SSamuel Thibault add_wch(WACS_DEGREE); 3339271f37abSKamil Rytarowski return 0; 3340ef9a2524SStefan Weil} 33414d3b6f6eSbalrogEOF 3342ecbe251fSVadim Evard IFS=: 33438ddc5bf9SSamuel Thibault for curses_inc in $curses_inc_list; do 3344b01a4fd3SPeter Maydell # Make sure we get the wide character prototypes 3345b01a4fd3SPeter Maydell curses_inc="-DNCURSES_WIDECHAR $curses_inc" 33467c703002SSamuel Thibault IFS=: 33478ddc5bf9SSamuel Thibault for curses_lib in $curses_lib_list; do 3348ecbe251fSVadim Evard unset IFS 33498ddc5bf9SSamuel Thibault if compile_prog "$curses_inc" "$curses_lib" ; then 3350c584a6d0SJuan Quintela curses_found=yes 33514f78ef9aSJuan Quintela break 33524d3b6f6eSbalrog fi 33534f78ef9aSJuan Quintela done 33547c703002SSamuel Thibault if test "$curses_found" = yes ; then 33557c703002SSamuel Thibault break 33567c703002SSamuel Thibault fi 33578ddc5bf9SSamuel Thibault done 3358ecbe251fSVadim Evard unset IFS 3359c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 3360c584a6d0SJuan Quintela curses=yes 3361c584a6d0SJuan Quintela else 3362c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 336321684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 3364c584a6d0SJuan Quintela fi 3365c584a6d0SJuan Quintela curses=no 3366c584a6d0SJuan Quintela fi 33674f78ef9aSJuan Quintelafi 33684d3b6f6eSbalrog 3369414f0dabSblueswir1########################################## 3370769ce76dSAlexander Graf# curl probe 3371a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 337265d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 3373a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 33744e2b0658SPaolo Bonzini else 33754e2b0658SPaolo Bonzini curlconfig=curl-config 33764e2b0658SPaolo Bonzini fi 3377769ce76dSAlexander Graf cat > $TMPC << EOF 3378769ce76dSAlexander Graf#include <curl/curl.h> 33790b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 3380769ce76dSAlexander GrafEOF 338189138857SStefan Weil curl_cflags=$($curlconfig --cflags 2>/dev/null) 338289138857SStefan Weil curl_libs=$($curlconfig --libs 2>/dev/null) 3383b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 3384769ce76dSAlexander Graf curl=yes 3385788c8196SJuan Quintela else 3386788c8196SJuan Quintela if test "$curl" = "yes" ; then 338721684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 3388788c8196SJuan Quintela fi 3389788c8196SJuan Quintela curl=no 3390769ce76dSAlexander Graf fi 3391769ce76dSAlexander Graffi # test "$curl" 3392769ce76dSAlexander Graf 3393769ce76dSAlexander Graf########################################## 3394fb599c9aSbalrog# bluez support probe 3395a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then 3396e820e3f4Sbalrog cat > $TMPC << EOF 3397e820e3f4Sbalrog#include <bluetooth/bluetooth.h> 3398e820e3f4Sbalrogint main(void) { return bt_error(0); } 3399e820e3f4SbalrogEOF 340089138857SStefan Weil bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null) 340189138857SStefan Weil bluez_libs=$($pkg_config --libs bluez 2>/dev/null) 340252166aa0SJuan Quintela if compile_prog "$bluez_cflags" "$bluez_libs" ; then 3403a20a6f46SJuan Quintela bluez=yes 3404e482d56aSJuan Quintela libs_softmmu="$bluez_libs $libs_softmmu" 3405e820e3f4Sbalrog else 3406a20a6f46SJuan Quintela if test "$bluez" = "yes" ; then 340721684af0SStewart Smith feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 3408a20a6f46SJuan Quintela fi 3409e820e3f4Sbalrog bluez="no" 3410e820e3f4Sbalrog fi 3411fb599c9aSbalrogfi 3412fb599c9aSbalrog 3413fb599c9aSbalrog########################################## 3414e18df141SAnthony Liguori# glib support probe 3415a52d28afSPaolo Bonzini 3416ad04d8cbSPeter Maydellif test "$mingw32" = yes; then 3417ad04d8cbSPeter Maydell glib_req_ver=2.30 3418ad04d8cbSPeter Maydellelse 3419f40685c6SJohn Snow glib_req_ver=2.22 3420ad04d8cbSPeter Maydellfi 3421aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 3422aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 3423a88afc64SGerd Hoffmann glib_modules="$glib_modules gmodule-export-2.0" 3424aa0d1f44SPaolo Bonzinifi 3425e26110cfSFam Zheng 34264eaf7202SSameeh Jubran# This workaround is required due to a bug in pkg-config file for glib as it 34274eaf7202SSameeh Jubran# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static 34284eaf7202SSameeh Jubran 34294eaf7202SSameeh Jubranif test "$static" = yes -a "$mingw32" = yes; then 34304eaf7202SSameeh Jubran QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS" 34314eaf7202SSameeh Jubranfi 34324eaf7202SSameeh Jubran 3433aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 3434e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 343589138857SStefan Weil glib_cflags=$($pkg_config --cflags $i) 343689138857SStefan Weil glib_libs=$($pkg_config --libs $i) 34374a058899SMarc-André Lureau QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" 343814015304SAnthony Liguori LIBS="$glib_libs $LIBS" 3439957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 3440e18df141SAnthony Liguori else 3441e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 3442e26110cfSFam Zheng fi 3443e26110cfSFam Zhengdone 3444e26110cfSFam Zheng 3445977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the 3446977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches 3447977a82abSDaniel P. Berrange# problems on multi-arch where people try to build 3448977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers 3449977a82abSDaniel P. Berrangecat > $TMPC <<EOF 3450977a82abSDaniel P. Berrange#include <glib.h> 3451977a82abSDaniel P. Berrange#include <unistd.h> 3452977a82abSDaniel P. Berrange 3453977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \ 3454977a82abSDaniel P. Berrange typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 3455977a82abSDaniel P. Berrange 3456977a82abSDaniel P. Berrangeint main(void) { 3457977a82abSDaniel P. Berrange QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 3458977a82abSDaniel P. Berrange return 0; 3459977a82abSDaniel P. Berrange} 3460977a82abSDaniel P. BerrangeEOF 3461977a82abSDaniel P. Berrange 34625919e032SStefan Weilif ! compile_prog "$CFLAGS" "$LIBS" ; then 3463977a82abSDaniel P. Berrange error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 3464977a82abSDaniel P. Berrange "You probably need to set PKG_CONFIG_LIBDIR"\ 3465977a82abSDaniel P. Berrange "to point to the right pkg-config files for your"\ 3466977a82abSDaniel P. Berrange "build target" 3467977a82abSDaniel P. Berrangefi 3468977a82abSDaniel P. Berrange 34699d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests. 34709d41401bSMichael S. Tsirkinglib_subprocess=yes 3471a049223aSMarc-André Lureauif ! $pkg_config --atleast-version=2.38 glib-2.0; then 34729d41401bSMichael S. Tsirkin glib_subprocess=no 34739d41401bSMichael S. Tsirkinfi 34749d41401bSMichael S. Tsirkin 3475bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 3476bbbf2e04SJohn Snowcat > $TMPC << EOF 3477bbbf2e04SJohn Snow#include <glib.h> 3478bbbf2e04SJohn Snowint main(void) { return 0; } 3479bbbf2e04SJohn SnowEOF 3480bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 3481bbbf2e04SJohn Snow if cc_has_warning_flag "-Wno-unknown-attributes"; then 3482bbbf2e04SJohn Snow glib_cflags="-Wno-unknown-attributes $glib_cflags" 3483bbbf2e04SJohn Snow CFLAGS="-Wno-unknown-attributes $CFLAGS" 3484bbbf2e04SJohn Snow fi 3485bbbf2e04SJohn Snowfi 3486bbbf2e04SJohn Snow 3487e26110cfSFam Zheng########################################## 3488e26110cfSFam Zheng# SHA command probe for modules 3489e26110cfSFam Zhengif test "$modules" = yes; then 3490e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 3491e26110cfSFam Zheng for c in $shacmd_probe; do 34928ccefb91SFam Zheng if has $c; then 3493e26110cfSFam Zheng shacmd="$c" 3494e26110cfSFam Zheng break 3495e26110cfSFam Zheng fi 3496e26110cfSFam Zheng done 3497e26110cfSFam Zheng if test "$shacmd" = ""; then 3498e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 3499e26110cfSFam Zheng fi 3500e18df141SAnthony Liguorifi 3501e18df141SAnthony Liguori 3502e18df141SAnthony Liguori########################################## 3503e2134eb9SGerd Hoffmann# pixman support probe 3504e2134eb9SGerd Hoffmann 350574880fe2SRobert Schieleif test "$want_tools" = "no" -a "$softmmu" = "no"; then 350674880fe2SRobert Schiele pixman_cflags= 350774880fe2SRobert Schiele pixman_libs= 350835c4e86cSGerd Hoffmannelif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 350989138857SStefan Weil pixman_cflags=$($pkg_config --cflags pixman-1) 351089138857SStefan Weil pixman_libs=$($pkg_config --libs pixman-1) 3511e2134eb9SGerd Hoffmannelse 3512c12b6d70SGerd Hoffmann error_exit "pixman >= 0.21.8 not present." \ 3513c12b6d70SGerd Hoffmann "Please install the pixman devel package." 3514e2134eb9SGerd Hoffmannfi 3515e2134eb9SGerd Hoffmann 3516e2134eb9SGerd Hoffmann########################################## 3517fe8fc5aeSPaolo Bonzini# libmpathpersist probe 3518fe8fc5aeSPaolo Bonzini 3519fe8fc5aeSPaolo Bonziniif test "$mpath" != "no" ; then 3520fe8fc5aeSPaolo Bonzini cat > $TMPC <<EOF 3521fe8fc5aeSPaolo Bonzini#include <libudev.h> 3522fe8fc5aeSPaolo Bonzini#include <mpath_persist.h> 3523fe8fc5aeSPaolo Bonziniunsigned mpath_mx_alloc_len = 1024; 3524fe8fc5aeSPaolo Bonziniint logsink; 3525b3f1c8c4SPaolo Bonzinistatic struct config *multipath_conf; 3526b3f1c8c4SPaolo Bonziniextern struct udev *udev; 3527b3f1c8c4SPaolo Bonziniextern struct config *get_multipath_config(void); 3528b3f1c8c4SPaolo Bonziniextern void put_multipath_config(struct config *conf); 3529b3f1c8c4SPaolo Bonzinistruct udev *udev; 3530b3f1c8c4SPaolo Bonzinistruct config *get_multipath_config(void) { return multipath_conf; } 3531b3f1c8c4SPaolo Bonzinivoid put_multipath_config(struct config *conf) { } 3532b3f1c8c4SPaolo Bonzini 3533fe8fc5aeSPaolo Bonziniint main(void) { 3534b3f1c8c4SPaolo Bonzini udev = udev_new(); 3535b3f1c8c4SPaolo Bonzini multipath_conf = mpath_lib_init(); 3536fe8fc5aeSPaolo Bonzini return 0; 3537fe8fc5aeSPaolo Bonzini} 3538fe8fc5aeSPaolo BonziniEOF 3539fe8fc5aeSPaolo Bonzini if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 3540fe8fc5aeSPaolo Bonzini mpathpersist=yes 3541fe8fc5aeSPaolo Bonzini else 3542fe8fc5aeSPaolo Bonzini mpathpersist=no 3543fe8fc5aeSPaolo Bonzini fi 3544fe8fc5aeSPaolo Bonzinielse 3545fe8fc5aeSPaolo Bonzini mpathpersist=no 3546fe8fc5aeSPaolo Bonzinifi 3547fe8fc5aeSPaolo Bonzini 3548fe8fc5aeSPaolo Bonzini########################################## 354917bff52bSM. Mohan Kumar# libcap probe 355017bff52bSM. Mohan Kumar 355117bff52bSM. Mohan Kumarif test "$cap" != "no" ; then 355217bff52bSM. Mohan Kumar cat > $TMPC <<EOF 355317bff52bSM. Mohan Kumar#include <stdio.h> 355417bff52bSM. Mohan Kumar#include <sys/capability.h> 3555cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 355617bff52bSM. Mohan KumarEOF 355717bff52bSM. Mohan Kumar if compile_prog "" "-lcap" ; then 355817bff52bSM. Mohan Kumar cap=yes 355917bff52bSM. Mohan Kumar else 356017bff52bSM. Mohan Kumar cap=no 356117bff52bSM. Mohan Kumar fi 356217bff52bSM. Mohan Kumarfi 356317bff52bSM. Mohan Kumar 356417bff52bSM. Mohan Kumar########################################## 3565e5d355d1Saliguori# pthread probe 35664b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 35673c529d93Saliguori 3568e5d355d1Saliguoripthread=no 3569414f0dabSblueswir1cat > $TMPC << EOF 35703c529d93Saliguori#include <pthread.h> 35717a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 35727a42bbe4SStefan Weilint main(void) { 35737a42bbe4SStefan Weil pthread_t thread; 35747a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 35757a42bbe4SStefan Weil return 0; 35767a42bbe4SStefan Weil} 3577414f0dabSblueswir1EOF 3578bd00d539SAndreas Färberif compile_prog "" "" ; then 3579bd00d539SAndreas Färber pthread=yes 3580bd00d539SAndreas Färberelse 3581de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 358252166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 3583e5d355d1Saliguori pthread=yes 3584e3c56761SPeter Portante found=no 3585e3c56761SPeter Portante for lib_entry in $LIBS; do 3586e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 3587e3c56761SPeter Portante found=yes 3588e3c56761SPeter Portante break 3589e3c56761SPeter Portante fi 3590e3c56761SPeter Portante done 3591e3c56761SPeter Portante if test "$found" = "no"; then 35925572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 359314ab3aa7SMarc-André Lureau libs_qga="$pthread_lib $libs_qga" 3594e3c56761SPeter Portante fi 3595409437e1SDaniel P. Berrange PTHREAD_LIB="$pthread_lib" 3596de65fe0fSSebastian Herbszt break 3597414f0dabSblueswir1 fi 3598de65fe0fSSebastian Herbszt done 3599bd00d539SAndreas Färberfi 3600414f0dabSblueswir1 36014617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then 360276ad07a4SPeter Maydell error_exit "pthread check failed" \ 360376ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 3604e5d355d1Saliguorifi 3605e5d355d1Saliguori 36065c312079SDr. David Alan Gilbert# check for pthread_setname_np 36075c312079SDr. David Alan Gilbertpthread_setname_np=no 36085c312079SDr. David Alan Gilbertcat > $TMPC << EOF 36095c312079SDr. David Alan Gilbert#include <pthread.h> 36105c312079SDr. David Alan Gilbert 36115c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 36125c312079SDr. David Alan Gilbertint main(void) 36135c312079SDr. David Alan Gilbert{ 36145c312079SDr. David Alan Gilbert pthread_t thread; 36155c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 36165c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 36175c312079SDr. David Alan Gilbert return 0; 36185c312079SDr. David Alan Gilbert} 36195c312079SDr. David Alan GilbertEOF 36205c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 36215c312079SDr. David Alan Gilbert pthread_setname_np=yes 36225c312079SDr. David Alan Gilbertfi 36235c312079SDr. David Alan Gilbert 3624bf9298b9Saliguori########################################## 3625f27aaf4bSChristian Brunner# rbd probe 3626f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 3627f27aaf4bSChristian Brunner cat > $TMPC <<EOF 3628f27aaf4bSChristian Brunner#include <stdio.h> 3629ad32e9c0SJosh Durgin#include <rbd/librbd.h> 3630f27aaf4bSChristian Brunnerint main(void) { 3631ad32e9c0SJosh Durgin rados_t cluster; 3632ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 3633f27aaf4bSChristian Brunner return 0; 3634f27aaf4bSChristian Brunner} 3635f27aaf4bSChristian BrunnerEOF 3636ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 3637f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 3638f27aaf4bSChristian Brunner rbd=yes 3639f27aaf4bSChristian Brunner else 3640f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 364121684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 3642f27aaf4bSChristian Brunner fi 3643f27aaf4bSChristian Brunner rbd=no 3644f27aaf4bSChristian Brunner fi 3645f27aaf4bSChristian Brunnerfi 3646f27aaf4bSChristian Brunner 3647f27aaf4bSChristian Brunner########################################## 36480a12ec87SRichard W.M. Jones# libssh2 probe 36494fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8 36500a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then 365165d5d3f9SStefan Weil if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 365289138857SStefan Weil libssh2_cflags=$($pkg_config libssh2 --cflags) 365389138857SStefan Weil libssh2_libs=$($pkg_config libssh2 --libs) 36540a12ec87SRichard W.M. Jones libssh2=yes 36550a12ec87SRichard W.M. Jones else 36560a12ec87SRichard W.M. Jones if test "$libssh2" = "yes" ; then 36574fc16838SRichard W.M. Jones error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 36580a12ec87SRichard W.M. Jones fi 36590a12ec87SRichard W.M. Jones libssh2=no 36600a12ec87SRichard W.M. Jones fi 36610a12ec87SRichard W.M. Jonesfi 36620a12ec87SRichard W.M. Jones 36630a12ec87SRichard W.M. Jones########################################## 36649a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe 36659a2d462eSRichard W.M. Jones 36669a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then 36679a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 36689a2d462eSRichard W.M. Jones#include <stdio.h> 36699a2d462eSRichard W.M. Jones#include <libssh2.h> 36709a2d462eSRichard W.M. Jones#include <libssh2_sftp.h> 36719a2d462eSRichard W.M. Jonesint main(void) { 36729a2d462eSRichard W.M. Jones LIBSSH2_SESSION *session; 36739a2d462eSRichard W.M. Jones LIBSSH2_SFTP *sftp; 36749a2d462eSRichard W.M. Jones LIBSSH2_SFTP_HANDLE *sftp_handle; 36759a2d462eSRichard W.M. Jones session = libssh2_session_init (); 36769a2d462eSRichard W.M. Jones sftp = libssh2_sftp_init (session); 36779a2d462eSRichard W.M. Jones sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 36789a2d462eSRichard W.M. Jones libssh2_sftp_fsync (sftp_handle); 36799a2d462eSRichard W.M. Jones return 0; 36809a2d462eSRichard W.M. Jones} 36819a2d462eSRichard W.M. JonesEOF 36829a2d462eSRichard W.M. Jones # libssh2_cflags/libssh2_libs defined in previous test. 36839a2d462eSRichard W.M. Jones if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 36849a2d462eSRichard W.M. Jones QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 36859a2d462eSRichard W.M. Jones fi 36869a2d462eSRichard W.M. Jonesfi 36879a2d462eSRichard W.M. Jones 36889a2d462eSRichard W.M. Jones########################################## 36895c6c3a6cSChristoph Hellwig# linux-aio probe 36905c6c3a6cSChristoph Hellwig 36915c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 36925c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 36935c6c3a6cSChristoph Hellwig#include <libaio.h> 36945c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 3695832ce9c2SScott Wood#include <stddef.h> 36965c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 36975c6c3a6cSChristoph HellwigEOF 36985c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 36995c6c3a6cSChristoph Hellwig linux_aio=yes 37005c6c3a6cSChristoph Hellwig else 37015c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 370221684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 37035c6c3a6cSChristoph Hellwig fi 37043cfcae3cSLuiz Capitulino linux_aio=no 37055c6c3a6cSChristoph Hellwig fi 37065c6c3a6cSChristoph Hellwigfi 37075c6c3a6cSChristoph Hellwig 37085c6c3a6cSChristoph Hellwig########################################## 37093b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux 37103b8acc11SPaolo Bonzini 37113b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 37123b8acc11SPaolo Bonzini tpm_passthrough=$tpm 37133b8acc11SPaolo Bonzinielse 37143b8acc11SPaolo Bonzini tpm_passthrough=no 37153b8acc11SPaolo Bonzinifi 37163b8acc11SPaolo Bonzini 3717f4ede81eSAmarnath Valluri# TPM emulator is for all posix systems 3718f4ede81eSAmarnath Valluriif test "$mingw32" != "yes"; then 3719f4ede81eSAmarnath Valluri tpm_emulator=$tpm 3720f4ede81eSAmarnath Vallurielse 3721f4ede81eSAmarnath Valluri tpm_emulator=no 3722f4ede81eSAmarnath Vallurifi 37233b8acc11SPaolo Bonzini########################################## 3724758e8e38SVenkateswararao Jujjuri (JV)# attr probe 3725758e8e38SVenkateswararao Jujjuri (JV) 3726758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 3727758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 3728758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 3729758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 3730f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 3731f2338fb4SPavel Borzenkov#include <attr/xattr.h> 3732f2338fb4SPavel Borzenkov#else 37334f26f2b6SAvi Kivity#include <sys/xattr.h> 3734f2338fb4SPavel Borzenkov#endif 3735758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3736758e8e38SVenkateswararao Jujjuri (JV)EOF 37374f26f2b6SAvi Kivity if compile_prog "" "" ; then 37384f26f2b6SAvi Kivity attr=yes 37394f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 3740f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3741758e8e38SVenkateswararao Jujjuri (JV) attr=yes 3742758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 37434f26f2b6SAvi Kivity libattr=yes 3744758e8e38SVenkateswararao Jujjuri (JV) else 3745758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 374621684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 3747758e8e38SVenkateswararao Jujjuri (JV) fi 3748758e8e38SVenkateswararao Jujjuri (JV) attr=no 3749758e8e38SVenkateswararao Jujjuri (JV) fi 3750758e8e38SVenkateswararao Jujjuri (JV)fi 3751758e8e38SVenkateswararao Jujjuri (JV) 3752758e8e38SVenkateswararao Jujjuri (JV)########################################## 3753bf9298b9Saliguori# iovec probe 3754bf9298b9Saliguoricat > $TMPC <<EOF 3755db34f0b3Sblueswir1#include <sys/types.h> 3756bf9298b9Saliguori#include <sys/uio.h> 3757db34f0b3Sblueswir1#include <unistd.h> 3758f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 3759bf9298b9SaliguoriEOF 3760bf9298b9Saliguoriiovec=no 376152166aa0SJuan Quintelaif compile_prog "" "" ; then 3762bf9298b9Saliguori iovec=yes 3763bf9298b9Saliguorifi 3764bf9298b9Saliguori 3765f652e6afSaurel32########################################## 3766ceb42de8Saliguori# preadv probe 3767ceb42de8Saliguoricat > $TMPC <<EOF 3768ceb42de8Saliguori#include <sys/types.h> 3769ceb42de8Saliguori#include <sys/uio.h> 3770ceb42de8Saliguori#include <unistd.h> 3771c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 3772ceb42de8SaliguoriEOF 3773ceb42de8Saliguoripreadv=no 377452166aa0SJuan Quintelaif compile_prog "" "" ; then 3775ceb42de8Saliguori preadv=yes 3776ceb42de8Saliguorifi 3777ceb42de8Saliguori 3778ceb42de8Saliguori########################################## 3779f652e6afSaurel32# fdt probe 3780e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 3781e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 3782e169e1e1SPeter Maydellfdt_required=no 3783e169e1e1SPeter Maydellfor target in $target_list; do 3784e169e1e1SPeter Maydell case $target in 3785a666409fSKONRAD Frederic aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu) 3786e169e1e1SPeter Maydell fdt_required=yes 3787e169e1e1SPeter Maydell ;; 3788e169e1e1SPeter Maydell esac 3789e169e1e1SPeter Maydelldone 3790e169e1e1SPeter Maydell 3791e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 3792e169e1e1SPeter Maydell if test "$fdt" = "no"; then 3793e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 3794e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 3795e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 3796e169e1e1SPeter Maydell fi 3797e169e1e1SPeter Maydell fdt=yes 3798e169e1e1SPeter Maydellfi 3799e169e1e1SPeter Maydell 38002df87df7SJuan Quintelaif test "$fdt" != "no" ; then 3801b41af4baSJuan Quintela fdt_libs="-lfdt" 380296ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 38036e85fce0SPaul Burton # and test for required functions to make sure we are on a version >= 1.4.2 3804f652e6afSaurel32 cat > $TMPC << EOF 380531ce0adbSThomas Huth#include <libfdt.h> 380696ce6545SPeter Crosthwaite#include <libfdt_env.h> 38076e85fce0SPaul Burtonint main(void) { fdt_first_subnode(0, 0); return 0; } 3808f652e6afSaurel32EOF 380952166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 3810a540f158SPeter Crosthwaite # system DTC is good - use it 3811e3971d61SPhilippe Mathieu-Daudé fdt=system 3812aef45d51SDaniel P. Berrange else 3813aef45d51SDaniel P. Berrange # have GIT checkout, so activate dtc submodule 3814aef45d51SDaniel P. Berrange if test -e "${source_path}/.git" ; then 3815aef45d51SDaniel P. Berrange git_submodules="${git_submodules} dtc" 3816aef45d51SDaniel P. Berrange fi 3817aef45d51SDaniel P. Berrange if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then 3818e3971d61SPhilippe Mathieu-Daudé fdt=git 3819a540f158SPeter Crosthwaite mkdir -p dtc 3820cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 3821a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3822a540f158SPeter Crosthwaite symlink "$source_path/dtc/scripts" "dtc/scripts" 38232df87df7SJuan Quintela fi 3824a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 38258a99e9a3SPhilippe Mathieu-Daudé fdt_ldflags="-L\$(BUILD_DIR)/dtc/libfdt" 38268a99e9a3SPhilippe Mathieu-Daudé fdt_libs="$fdt_libs" 3827a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 3828aef45d51SDaniel P. Berrange # Not a git build & no libfdt found, prompt for system install 3829aef45d51SDaniel P. Berrange error_exit "DTC (libfdt) version >= 1.4.2 not present." \ 3830aef45d51SDaniel P. Berrange "Please install the DTC (libfdt) devel package" 3831a540f158SPeter Crosthwaite else 3832a540f158SPeter Crosthwaite # don't have and don't want 3833de3a354aSMichael Walle fdt_libs= 38342df87df7SJuan Quintela fdt=no 3835f652e6afSaurel32 fi 3836f652e6afSaurel32 fi 3837aef45d51SDaniel P. Berrangefi 3838f652e6afSaurel32 3839a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 3840a540f158SPeter Crosthwaite 384120ff075bSMichael Walle########################################## 3842fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2) 3843b1546f32SGerd Hoffmann 3844da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 3845014cb152SGerd Hoffmann opengl_pkgs="epoxy libdrm gbm" 38465f9b1e35SGerd Hoffmann if $pkg_config $opengl_pkgs; then 38475f9b1e35SGerd Hoffmann opengl_cflags="$($pkg_config --cflags $opengl_pkgs)" 38485f9b1e35SGerd Hoffmann opengl_libs="$($pkg_config --libs $opengl_pkgs)" 3849da076ffeSGerd Hoffmann opengl=yes 3850925a0400SGerd Hoffmann if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 3851925a0400SGerd Hoffmann gtk_gl="yes" 3852925a0400SGerd Hoffmann fi 3853cc720a5dSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags" 385420ff075bSMichael Walle else 3855da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 3856dcf30025SGerd Hoffmann feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 385720ff075bSMichael Walle fi 3858f676c67eSJeremy White opengl_cflags="" 3859da076ffeSGerd Hoffmann opengl_libs="" 3860da076ffeSGerd Hoffmann opengl=no 386120ff075bSMichael Walle fi 386220ff075bSMichael Wallefi 386320ff075bSMichael Walle 3864014cb152SGerd Hoffmannif test "$opengl" = "yes"; then 3865014cb152SGerd Hoffmann cat > $TMPC << EOF 3866014cb152SGerd Hoffmann#include <epoxy/egl.h> 3867014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export 3868014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 3869014cb152SGerd Hoffmann#endif 3870014cb152SGerd Hoffmannint main(void) { return 0; } 3871014cb152SGerd HoffmannEOF 3872014cb152SGerd Hoffmann if compile_prog "" "" ; then 3873014cb152SGerd Hoffmann opengl_dmabuf=yes 3874014cb152SGerd Hoffmann fi 3875014cb152SGerd Hoffmannfi 3876c9a12e75SChrysostomos Nanakos 3877ed279a06SKlim Kireev########################################## 3878ed279a06SKlim Kireev# libxml2 probe 3879ed279a06SKlim Kireevif test "$libxml2" != "no" ; then 3880ed279a06SKlim Kireev if $pkg_config --exists libxml-2.0; then 3881ed279a06SKlim Kireev libxml2="yes" 3882ed279a06SKlim Kireev libxml2_cflags=$($pkg_config --cflags libxml-2.0) 3883ed279a06SKlim Kireev libxml2_libs=$($pkg_config --libs libxml-2.0) 3884ed279a06SKlim Kireev else 3885ed279a06SKlim Kireev if test "$libxml2" = "yes"; then 3886ed279a06SKlim Kireev feature_not_found "libxml2" "Install libxml2 devel" 3887ed279a06SKlim Kireev fi 3888ed279a06SKlim Kireev libxml2="no" 3889ed279a06SKlim Kireev fi 3890ed279a06SKlim Kireevfi 3891c9a12e75SChrysostomos Nanakos 3892eb100396SBharata B Rao########################################## 3893eb100396SBharata B Rao# glusterfs probe 3894eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 389565d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 3896e01bee08SBharata B Rao glusterfs="yes" 389789138857SStefan Weil glusterfs_cflags=$($pkg_config --cflags glusterfs-api) 389889138857SStefan Weil glusterfs_libs=$($pkg_config --libs glusterfs-api) 3899d85fa9ebSJeff Cody if $pkg_config --atleast-version=4 glusterfs-api; then 3900d85fa9ebSJeff Cody glusterfs_xlator_opt="yes" 3901d85fa9ebSJeff Cody fi 390265d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 39030c14fb47SBharata B Rao glusterfs_discard="yes" 39040c14fb47SBharata B Rao fi 39057c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 3906df3a429aSNiels de Vos glusterfs_fallocate="yes" 39077c815372SBharata B Rao glusterfs_zerofill="yes" 39087c815372SBharata B Rao fi 3909eb100396SBharata B Rao else 3910eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 39118efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 39128efc9363SHu Tao "Install glusterfs-api devel >= 3" 3913eb100396SBharata B Rao fi 3914e01bee08SBharata B Rao glusterfs="no" 3915eb100396SBharata B Rao fi 3916eb100396SBharata B Raofi 3917eb100396SBharata B Rao 391839386ac7Saurel32# Check for inotify functions when we are building linux-user 39193b3f24adSaurel32# emulator. This is done because older glibc versions don't 39203b3f24adSaurel32# have syscall stubs for these implemented. In that case we 39213b3f24adSaurel32# don't provide them even if kernel supports them. 39223b3f24adSaurel32# 39233b3f24adSaurel32inotify=no 39243b3f24adSaurel32cat > $TMPC << EOF 39253b3f24adSaurel32#include <sys/inotify.h> 39263b3f24adSaurel32 39273b3f24adSaurel32int 39283b3f24adSaurel32main(void) 39293b3f24adSaurel32{ 39303b3f24adSaurel32 /* try to start inotify */ 39318690e420Saurel32 return inotify_init(); 39323b3f24adSaurel32} 39333b3f24adSaurel32EOF 393452166aa0SJuan Quintelaif compile_prog "" "" ; then 39353b3f24adSaurel32 inotify=yes 39363b3f24adSaurel32fi 39373b3f24adSaurel32 3938c05c7a73SRiku Voipioinotify1=no 3939c05c7a73SRiku Voipiocat > $TMPC << EOF 3940c05c7a73SRiku Voipio#include <sys/inotify.h> 3941c05c7a73SRiku Voipio 3942c05c7a73SRiku Voipioint 3943c05c7a73SRiku Voipiomain(void) 3944c05c7a73SRiku Voipio{ 3945c05c7a73SRiku Voipio /* try to start inotify */ 3946c05c7a73SRiku Voipio return inotify_init1(0); 3947c05c7a73SRiku Voipio} 3948c05c7a73SRiku VoipioEOF 3949c05c7a73SRiku Voipioif compile_prog "" "" ; then 3950c05c7a73SRiku Voipio inotify1=yes 3951c05c7a73SRiku Voipiofi 3952c05c7a73SRiku Voipio 3953099d6b0fSRiku Voipio# check if pipe2 is there 3954099d6b0fSRiku Voipiopipe2=no 3955099d6b0fSRiku Voipiocat > $TMPC << EOF 3956099d6b0fSRiku Voipio#include <unistd.h> 3957099d6b0fSRiku Voipio#include <fcntl.h> 3958099d6b0fSRiku Voipio 3959099d6b0fSRiku Voipioint main(void) 3960099d6b0fSRiku Voipio{ 3961099d6b0fSRiku Voipio int pipefd[2]; 39629bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 3963099d6b0fSRiku Voipio} 3964099d6b0fSRiku VoipioEOF 396552166aa0SJuan Quintelaif compile_prog "" "" ; then 3966099d6b0fSRiku Voipio pipe2=yes 3967099d6b0fSRiku Voipiofi 3968099d6b0fSRiku Voipio 396940ff6d7eSKevin Wolf# check if accept4 is there 397040ff6d7eSKevin Wolfaccept4=no 397140ff6d7eSKevin Wolfcat > $TMPC << EOF 397240ff6d7eSKevin Wolf#include <sys/socket.h> 397340ff6d7eSKevin Wolf#include <stddef.h> 397440ff6d7eSKevin Wolf 397540ff6d7eSKevin Wolfint main(void) 397640ff6d7eSKevin Wolf{ 397740ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 397840ff6d7eSKevin Wolf return 0; 397940ff6d7eSKevin Wolf} 398040ff6d7eSKevin WolfEOF 398140ff6d7eSKevin Wolfif compile_prog "" "" ; then 398240ff6d7eSKevin Wolf accept4=yes 398340ff6d7eSKevin Wolffi 398440ff6d7eSKevin Wolf 39853ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 39863ce34dfbSvibisreenivasansplice=no 39873ce34dfbSvibisreenivasancat > $TMPC << EOF 39883ce34dfbSvibisreenivasan#include <unistd.h> 39893ce34dfbSvibisreenivasan#include <fcntl.h> 39903ce34dfbSvibisreenivasan#include <limits.h> 39913ce34dfbSvibisreenivasan 39923ce34dfbSvibisreenivasanint main(void) 39933ce34dfbSvibisreenivasan{ 399466ea0f22SStefan Weil int len, fd = 0; 39953ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 39963ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 39973ce34dfbSvibisreenivasan return 0; 39983ce34dfbSvibisreenivasan} 39993ce34dfbSvibisreenivasanEOF 400052166aa0SJuan Quintelaif compile_prog "" "" ; then 40013ce34dfbSvibisreenivasan splice=yes 40023ce34dfbSvibisreenivasanfi 40033ce34dfbSvibisreenivasan 4004dcc38d1cSMarcelo Tosatti########################################## 4005a99d57bbSWanlong Gao# libnuma probe 4006a99d57bbSWanlong Gao 4007a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 4008a99d57bbSWanlong Gao cat > $TMPC << EOF 4009a99d57bbSWanlong Gao#include <numa.h> 4010a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 4011a99d57bbSWanlong GaoEOF 4012a99d57bbSWanlong Gao 4013a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 4014a99d57bbSWanlong Gao numa=yes 4015a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 4016a99d57bbSWanlong Gao else 4017a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 4018a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 4019a99d57bbSWanlong Gao fi 4020a99d57bbSWanlong Gao numa=no 4021a99d57bbSWanlong Gao fi 4022a99d57bbSWanlong Gaofi 4023a99d57bbSWanlong Gao 40247b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 40257b01cb97SAlexandre Derumier echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 40267b01cb97SAlexandre Derumier exit 1 40277b01cb97SAlexandre Derumierfi 40287b01cb97SAlexandre Derumier 40295a22ab71SYang Zhong# Even if malloc_trim() is available, these non-libc memory allocators 40305a22ab71SYang Zhong# do not support it. 40315a22ab71SYang Zhongif test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then 40325a22ab71SYang Zhong if test "$malloc_trim" = "yes" ; then 40335a22ab71SYang Zhong echo "Disabling malloc_trim with non-libc memory allocator" 40345a22ab71SYang Zhong fi 40355a22ab71SYang Zhong malloc_trim="no" 40365a22ab71SYang Zhongfi 40375a22ab71SYang Zhong 40385a22ab71SYang Zhong####################################### 40395a22ab71SYang Zhong# malloc_trim 40405a22ab71SYang Zhong 40415a22ab71SYang Zhongif test "$malloc_trim" != "no" ; then 40425a22ab71SYang Zhong cat > $TMPC << EOF 40435a22ab71SYang Zhong#include <malloc.h> 40445a22ab71SYang Zhongint main(void) { malloc_trim(0); return 0; } 40455a22ab71SYang ZhongEOF 40465a22ab71SYang Zhong if compile_prog "" "" ; then 40475a22ab71SYang Zhong malloc_trim="yes" 40485a22ab71SYang Zhong else 40495a22ab71SYang Zhong malloc_trim="no" 40505a22ab71SYang Zhong fi 40515a22ab71SYang Zhongfi 40525a22ab71SYang Zhong 4053a99d57bbSWanlong Gao########################################## 40542847b469SFam Zheng# tcmalloc probe 40552847b469SFam Zheng 40562847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 40572847b469SFam Zheng cat > $TMPC << EOF 40582847b469SFam Zheng#include <stdlib.h> 40592847b469SFam Zhengint main(void) { malloc(1); return 0; } 40602847b469SFam ZhengEOF 40612847b469SFam Zheng 40622847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 40632847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 40642847b469SFam Zheng else 40652847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 40662847b469SFam Zheng fi 40672847b469SFam Zhengfi 40682847b469SFam Zheng 40692847b469SFam Zheng########################################## 40707b01cb97SAlexandre Derumier# jemalloc probe 40717b01cb97SAlexandre Derumier 40727b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then 40737b01cb97SAlexandre Derumier cat > $TMPC << EOF 40747b01cb97SAlexandre Derumier#include <stdlib.h> 40757b01cb97SAlexandre Derumierint main(void) { malloc(1); return 0; } 40767b01cb97SAlexandre DerumierEOF 40777b01cb97SAlexandre Derumier 40787b01cb97SAlexandre Derumier if compile_prog "" "-ljemalloc" ; then 40797b01cb97SAlexandre Derumier LIBS="-ljemalloc $LIBS" 40807b01cb97SAlexandre Derumier else 40817b01cb97SAlexandre Derumier feature_not_found "jemalloc" "install jemalloc devel" 40827b01cb97SAlexandre Derumier fi 40837b01cb97SAlexandre Derumierfi 40847b01cb97SAlexandre Derumier 40857b01cb97SAlexandre Derumier########################################## 4086dcc38d1cSMarcelo Tosatti# signalfd probe 4087dcc38d1cSMarcelo Tosattisignalfd="no" 4088dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 4089dcc38d1cSMarcelo Tosatti#include <unistd.h> 4090dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 4091dcc38d1cSMarcelo Tosatti#include <signal.h> 4092dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 4093dcc38d1cSMarcelo TosattiEOF 4094dcc38d1cSMarcelo Tosatti 4095dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 4096dcc38d1cSMarcelo Tosatti signalfd=yes 4097dcc38d1cSMarcelo Tosattifi 4098dcc38d1cSMarcelo Tosatti 4099c2882b96SRiku Voipio# check if eventfd is supported 4100c2882b96SRiku Voipioeventfd=no 4101c2882b96SRiku Voipiocat > $TMPC << EOF 4102c2882b96SRiku Voipio#include <sys/eventfd.h> 4103c2882b96SRiku Voipio 4104c2882b96SRiku Voipioint main(void) 4105c2882b96SRiku Voipio{ 410655cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 4107c2882b96SRiku Voipio} 4108c2882b96SRiku VoipioEOF 4109c2882b96SRiku Voipioif compile_prog "" "" ; then 4110c2882b96SRiku Voipio eventfd=yes 4111c2882b96SRiku Voipiofi 4112c2882b96SRiku Voipio 4113751bcc39SMarc-André Lureau# check if memfd is supported 4114751bcc39SMarc-André Lureaumemfd=no 4115751bcc39SMarc-André Lureaucat > $TMPC << EOF 411675e5b70eSPaolo Bonzini#include <sys/mman.h> 4117751bcc39SMarc-André Lureau 4118751bcc39SMarc-André Lureauint main(void) 4119751bcc39SMarc-André Lureau{ 4120751bcc39SMarc-André Lureau return memfd_create("foo", MFD_ALLOW_SEALING); 4121751bcc39SMarc-André Lureau} 4122751bcc39SMarc-André LureauEOF 4123751bcc39SMarc-André Lureauif compile_prog "" "" ; then 4124751bcc39SMarc-André Lureau memfd=yes 4125751bcc39SMarc-André Lureaufi 4126751bcc39SMarc-André Lureau 4127751bcc39SMarc-André Lureau 4128751bcc39SMarc-André Lureau 4129d0927938SUlrich Hecht# check for fallocate 4130d0927938SUlrich Hechtfallocate=no 4131d0927938SUlrich Hechtcat > $TMPC << EOF 4132d0927938SUlrich Hecht#include <fcntl.h> 4133d0927938SUlrich Hecht 4134d0927938SUlrich Hechtint main(void) 4135d0927938SUlrich Hecht{ 4136d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 4137d0927938SUlrich Hecht return 0; 4138d0927938SUlrich Hecht} 4139d0927938SUlrich HechtEOF 41408fb03151SPeter Maydellif compile_prog "" "" ; then 4141d0927938SUlrich Hecht fallocate=yes 4142d0927938SUlrich Hechtfi 4143d0927938SUlrich Hecht 41443d4fa43eSKusanagi Kouichi# check for fallocate hole punching 41453d4fa43eSKusanagi Kouichifallocate_punch_hole=no 41463d4fa43eSKusanagi Kouichicat > $TMPC << EOF 41473d4fa43eSKusanagi Kouichi#include <fcntl.h> 41483d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 41493d4fa43eSKusanagi Kouichi 41503d4fa43eSKusanagi Kouichiint main(void) 41513d4fa43eSKusanagi Kouichi{ 41523d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 41533d4fa43eSKusanagi Kouichi return 0; 41543d4fa43eSKusanagi Kouichi} 41553d4fa43eSKusanagi KouichiEOF 41563d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 41573d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 41583d4fa43eSKusanagi Kouichifi 41593d4fa43eSKusanagi Kouichi 4160b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 4161b953f075SDenis V. Lunevfallocate_zero_range=no 4162b953f075SDenis V. Lunevcat > $TMPC << EOF 4163b953f075SDenis V. Lunev#include <fcntl.h> 4164b953f075SDenis V. Lunev#include <linux/falloc.h> 4165b953f075SDenis V. Lunev 4166b953f075SDenis V. Lunevint main(void) 4167b953f075SDenis V. Lunev{ 4168b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 4169b953f075SDenis V. Lunev return 0; 4170b953f075SDenis V. Lunev} 4171b953f075SDenis V. LunevEOF 4172b953f075SDenis V. Lunevif compile_prog "" "" ; then 4173b953f075SDenis V. Lunev fallocate_zero_range=yes 4174b953f075SDenis V. Lunevfi 4175b953f075SDenis V. Lunev 4176ed911435SKevin Wolf# check for posix_fallocate 4177ed911435SKevin Wolfposix_fallocate=no 4178ed911435SKevin Wolfcat > $TMPC << EOF 4179ed911435SKevin Wolf#include <fcntl.h> 4180ed911435SKevin Wolf 4181ed911435SKevin Wolfint main(void) 4182ed911435SKevin Wolf{ 4183ed911435SKevin Wolf posix_fallocate(0, 0, 0); 4184ed911435SKevin Wolf return 0; 4185ed911435SKevin Wolf} 4186ed911435SKevin WolfEOF 4187ed911435SKevin Wolfif compile_prog "" "" ; then 4188ed911435SKevin Wolf posix_fallocate=yes 4189ed911435SKevin Wolffi 4190ed911435SKevin Wolf 4191c727f47dSPeter Maydell# check for sync_file_range 4192c727f47dSPeter Maydellsync_file_range=no 4193c727f47dSPeter Maydellcat > $TMPC << EOF 4194c727f47dSPeter Maydell#include <fcntl.h> 4195c727f47dSPeter Maydell 4196c727f47dSPeter Maydellint main(void) 4197c727f47dSPeter Maydell{ 4198c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 4199c727f47dSPeter Maydell return 0; 4200c727f47dSPeter Maydell} 4201c727f47dSPeter MaydellEOF 42028fb03151SPeter Maydellif compile_prog "" "" ; then 4203c727f47dSPeter Maydell sync_file_range=yes 4204c727f47dSPeter Maydellfi 4205c727f47dSPeter Maydell 4206dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 4207dace20dcSPeter Maydellfiemap=no 4208dace20dcSPeter Maydellcat > $TMPC << EOF 4209dace20dcSPeter Maydell#include <sys/ioctl.h> 4210dace20dcSPeter Maydell#include <linux/fs.h> 4211dace20dcSPeter Maydell#include <linux/fiemap.h> 4212dace20dcSPeter Maydell 4213dace20dcSPeter Maydellint main(void) 4214dace20dcSPeter Maydell{ 4215dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 4216dace20dcSPeter Maydell return 0; 4217dace20dcSPeter Maydell} 4218dace20dcSPeter MaydellEOF 42198fb03151SPeter Maydellif compile_prog "" "" ; then 4220dace20dcSPeter Maydell fiemap=yes 4221dace20dcSPeter Maydellfi 4222dace20dcSPeter Maydell 4223d0927938SUlrich Hecht# check for dup3 4224d0927938SUlrich Hechtdup3=no 4225d0927938SUlrich Hechtcat > $TMPC << EOF 4226d0927938SUlrich Hecht#include <unistd.h> 4227d0927938SUlrich Hecht 4228d0927938SUlrich Hechtint main(void) 4229d0927938SUlrich Hecht{ 4230d0927938SUlrich Hecht dup3(0, 0, 0); 4231d0927938SUlrich Hecht return 0; 4232d0927938SUlrich Hecht} 4233d0927938SUlrich HechtEOF 423478f5d726SJan Kiszkaif compile_prog "" "" ; then 4235d0927938SUlrich Hecht dup3=yes 4236d0927938SUlrich Hechtfi 4237d0927938SUlrich Hecht 42384e0c6529SAlex Bligh# check for ppoll support 42394e0c6529SAlex Blighppoll=no 42404e0c6529SAlex Blighcat > $TMPC << EOF 42414e0c6529SAlex Bligh#include <poll.h> 42424e0c6529SAlex Bligh 42434e0c6529SAlex Blighint main(void) 42444e0c6529SAlex Bligh{ 42454e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 42464e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 42474e0c6529SAlex Bligh return 0; 42484e0c6529SAlex Bligh} 42494e0c6529SAlex BlighEOF 42504e0c6529SAlex Blighif compile_prog "" "" ; then 42514e0c6529SAlex Bligh ppoll=yes 42524e0c6529SAlex Blighfi 42534e0c6529SAlex Bligh 4254cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 4255cd758dd0SAlex Blighprctl_pr_set_timerslack=no 4256cd758dd0SAlex Blighcat > $TMPC << EOF 4257cd758dd0SAlex Bligh#include <sys/prctl.h> 4258cd758dd0SAlex Bligh 4259cd758dd0SAlex Blighint main(void) 4260cd758dd0SAlex Bligh{ 4261cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 4262cd758dd0SAlex Bligh return 0; 4263cd758dd0SAlex Bligh} 4264cd758dd0SAlex BlighEOF 4265cd758dd0SAlex Blighif compile_prog "" "" ; then 4266cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 4267cd758dd0SAlex Blighfi 4268cd758dd0SAlex Bligh 42693b6edd16SPeter Maydell# check for epoll support 42703b6edd16SPeter Maydellepoll=no 42713b6edd16SPeter Maydellcat > $TMPC << EOF 42723b6edd16SPeter Maydell#include <sys/epoll.h> 42733b6edd16SPeter Maydell 42743b6edd16SPeter Maydellint main(void) 42753b6edd16SPeter Maydell{ 42763b6edd16SPeter Maydell epoll_create(0); 42773b6edd16SPeter Maydell return 0; 42783b6edd16SPeter Maydell} 42793b6edd16SPeter MaydellEOF 42808fb03151SPeter Maydellif compile_prog "" "" ; then 42813b6edd16SPeter Maydell epoll=yes 42823b6edd16SPeter Maydellfi 42833b6edd16SPeter Maydell 4284227f0214SPeter Maydell# epoll_create1 is a later addition 4285227f0214SPeter Maydell# so we must check separately for its presence 42863b6edd16SPeter Maydellepoll_create1=no 42873b6edd16SPeter Maydellcat > $TMPC << EOF 42883b6edd16SPeter Maydell#include <sys/epoll.h> 42893b6edd16SPeter Maydell 42903b6edd16SPeter Maydellint main(void) 42913b6edd16SPeter Maydell{ 429219e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 429319e83f6bSPeter Maydell * a function being called. This is necessary so that on 429419e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 429519e83f6bSPeter Maydell * the library but not declared in the header file we will 429619e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 429719e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 429819e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 429919e83f6bSPeter Maydell */ 4300c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 43013b6edd16SPeter Maydell} 43023b6edd16SPeter MaydellEOF 43038fb03151SPeter Maydellif compile_prog "" "" ; then 43043b6edd16SPeter Maydell epoll_create1=yes 43053b6edd16SPeter Maydellfi 43063b6edd16SPeter Maydell 4307a8fd1abaSPeter Maydell# check for sendfile support 4308a8fd1abaSPeter Maydellsendfile=no 4309a8fd1abaSPeter Maydellcat > $TMPC << EOF 4310a8fd1abaSPeter Maydell#include <sys/sendfile.h> 4311a8fd1abaSPeter Maydell 4312a8fd1abaSPeter Maydellint main(void) 4313a8fd1abaSPeter Maydell{ 4314a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 4315a8fd1abaSPeter Maydell} 4316a8fd1abaSPeter MaydellEOF 4317a8fd1abaSPeter Maydellif compile_prog "" "" ; then 4318a8fd1abaSPeter Maydell sendfile=yes 4319a8fd1abaSPeter Maydellfi 4320a8fd1abaSPeter Maydell 432151834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 432251834341SRiku Voipiotimerfd=no 432351834341SRiku Voipiocat > $TMPC << EOF 432451834341SRiku Voipio#include <sys/timerfd.h> 432551834341SRiku Voipio 432651834341SRiku Voipioint main(void) 432751834341SRiku Voipio{ 432851834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 432951834341SRiku Voipio} 433051834341SRiku VoipioEOF 433151834341SRiku Voipioif compile_prog "" "" ; then 433251834341SRiku Voipio timerfd=yes 433351834341SRiku Voipiofi 433451834341SRiku Voipio 43359af5c906SRiku Voipio# check for setns and unshare support 43369af5c906SRiku Voipiosetns=no 43379af5c906SRiku Voipiocat > $TMPC << EOF 43389af5c906SRiku Voipio#include <sched.h> 43399af5c906SRiku Voipio 43409af5c906SRiku Voipioint main(void) 43419af5c906SRiku Voipio{ 43429af5c906SRiku Voipio int ret; 43439af5c906SRiku Voipio ret = setns(0, 0); 43449af5c906SRiku Voipio ret = unshare(0); 43459af5c906SRiku Voipio return ret; 43469af5c906SRiku Voipio} 43479af5c906SRiku VoipioEOF 43489af5c906SRiku Voipioif compile_prog "" "" ; then 43499af5c906SRiku Voipio setns=yes 43509af5c906SRiku Voipiofi 43519af5c906SRiku Voipio 435238860a03SAleksandar Markovic# clock_adjtime probe 435338860a03SAleksandar Markovicclock_adjtime=no 435438860a03SAleksandar Markoviccat > $TMPC <<EOF 435538860a03SAleksandar Markovic#include <time.h> 435638860a03SAleksandar Markovic 435738860a03SAleksandar Markovicint main(void) 435838860a03SAleksandar Markovic{ 435938860a03SAleksandar Markovic return clock_adjtime(0, 0); 436038860a03SAleksandar Markovic} 436138860a03SAleksandar MarkovicEOF 436238860a03SAleksandar Markovicclock_adjtime=no 436338860a03SAleksandar Markovicif compile_prog "" "" ; then 436438860a03SAleksandar Markovic clock_adjtime=yes 436538860a03SAleksandar Markovicfi 436638860a03SAleksandar Markovic 43675a03cd00SAleksandar Markovic# syncfs probe 43685a03cd00SAleksandar Markovicsyncfs=no 43695a03cd00SAleksandar Markoviccat > $TMPC <<EOF 43705a03cd00SAleksandar Markovic#include <unistd.h> 43715a03cd00SAleksandar Markovic 43725a03cd00SAleksandar Markovicint main(void) 43735a03cd00SAleksandar Markovic{ 43745a03cd00SAleksandar Markovic return syncfs(0); 43755a03cd00SAleksandar Markovic} 43765a03cd00SAleksandar MarkovicEOF 43775a03cd00SAleksandar Markovicsyncfs=no 43785a03cd00SAleksandar Markovicif compile_prog "" "" ; then 43795a03cd00SAleksandar Markovic syncfs=yes 43805a03cd00SAleksandar Markovicfi 43815a03cd00SAleksandar Markovic 4382cc8ae6deSpbrook# Check if tools are available to build documentation. 4383a25dba17SJuan Quintelaif test "$docs" != "no" ; then 438401668d98SStefan Weil if has makeinfo && has pod2man; then 4385a25dba17SJuan Quintela docs=yes 438683a3ab8bSJuan Quintela else 4387a25dba17SJuan Quintela if test "$docs" = "yes" ; then 438821684af0SStewart Smith feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 438983a3ab8bSJuan Quintela fi 4390a25dba17SJuan Quintela docs=no 439183a3ab8bSJuan Quintela fi 4392cc8ae6deSpbrookfi 4393cc8ae6deSpbrook 4394f514f41cSStefan Weil# Search for bswap_32 function 43956ae9a1f4SJuan Quintelabyteswap_h=no 43966ae9a1f4SJuan Quintelacat > $TMPC << EOF 43976ae9a1f4SJuan Quintela#include <byteswap.h> 43986ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 43996ae9a1f4SJuan QuintelaEOF 440052166aa0SJuan Quintelaif compile_prog "" "" ; then 44016ae9a1f4SJuan Quintela byteswap_h=yes 44026ae9a1f4SJuan Quintelafi 44036ae9a1f4SJuan Quintela 440475f13596SStefan Weil# Search for bswap32 function 44056ae9a1f4SJuan Quintelabswap_h=no 44066ae9a1f4SJuan Quintelacat > $TMPC << EOF 44076ae9a1f4SJuan Quintela#include <sys/endian.h> 44086ae9a1f4SJuan Quintela#include <sys/types.h> 44096ae9a1f4SJuan Quintela#include <machine/bswap.h> 44106ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 44116ae9a1f4SJuan QuintelaEOF 441252166aa0SJuan Quintelaif compile_prog "" "" ; then 44136ae9a1f4SJuan Quintela bswap_h=yes 44146ae9a1f4SJuan Quintelafi 44156ae9a1f4SJuan Quintela 4416da93a1fdSaliguori########################################## 4417e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 4418c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 4419e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 44203c33ea96SPaolo Bonzini libiscsi="yes" 4421ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 4422ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 4423c589b249SRonnie Sahlberg else 4424c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 4425e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 4426c589b249SRonnie Sahlberg fi 4427c589b249SRonnie Sahlberg libiscsi="no" 4428c589b249SRonnie Sahlberg fi 4429c589b249SRonnie Sahlbergfi 4430c589b249SRonnie Sahlberg 4431c589b249SRonnie Sahlberg########################################## 44328bacde8dSNatanael Copa# Do we need libm 44338bacde8dSNatanael Copacat > $TMPC << EOF 44348bacde8dSNatanael Copa#include <math.h> 4435f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 44368bacde8dSNatanael CopaEOF 44378bacde8dSNatanael Copaif compile_prog "" "" ; then 44388bacde8dSNatanael Copa : 44398bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 44408bacde8dSNatanael Copa LIBS="-lm $LIBS" 44418bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 44428bacde8dSNatanael Copaelse 444376ad07a4SPeter Maydell error_exit "libm check failed" 44448bacde8dSNatanael Copafi 44458bacde8dSNatanael Copa 44468bacde8dSNatanael Copa########################################## 4447da93a1fdSaliguori# Do we need librt 44488bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 44498bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 44508bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 44518bacde8dSNatanael Copa# function in addition. 4452da93a1fdSaliguoricat > $TMPC <<EOF 4453da93a1fdSaliguori#include <signal.h> 4454da93a1fdSaliguori#include <time.h> 44558bacde8dSNatanael Copaint main(void) { 44568bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 44578bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 44588bacde8dSNatanael Copa} 4459da93a1fdSaliguoriEOF 4460da93a1fdSaliguori 446152166aa0SJuan Quintelaif compile_prog "" "" ; then 446207ffa4bdSJuan Quintela : 44638bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 446418e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 446518e588b1SRick Liu LIBS="$LIBS -lrt" 446618e588b1SRick Liu libs_qga="$libs_qga -lrt" 4467da93a1fdSaliguorifi 4468da93a1fdSaliguori 446931ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 447078723752SPeter Maydell "$haiku" != "yes" ; then 44716362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 44726362a53fSJuan Quintelafi 44736362a53fSJuan Quintela 4474de5071c5SBlue Swirl########################################## 4475cd4ec0b4SGerd Hoffmann# spice probe 4476cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 4477cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 4478cd4ec0b4SGerd Hoffmann#include <spice.h> 4479cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 4480cd4ec0b4SGerd HoffmannEOF 4481710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 4482710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 448365d5d3f9SStefan Weil if $pkg_config --atleast-version=0.12.0 spice-server && \ 448465d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 4485cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 4486cd4ec0b4SGerd Hoffmann spice="yes" 4487cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 4488cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 44892e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 44902e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 4491cd4ec0b4SGerd Hoffmann else 4492cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 44938efc9363SHu Tao feature_not_found "spice" \ 44948efc9363SHu Tao "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 4495cd4ec0b4SGerd Hoffmann fi 4496cd4ec0b4SGerd Hoffmann spice="no" 4497cd4ec0b4SGerd Hoffmann fi 4498cd4ec0b4SGerd Hoffmannfi 4499cd4ec0b4SGerd Hoffmann 45007b02f544SMarc-André Lureau# check for smartcard support 45017b02f544SMarc-André Lureauif test "$smartcard" != "no"; then 45020f5c642dSMichal Privoznik if $pkg_config --atleast-version=2.5.1 libcacard; then 45037b02f544SMarc-André Lureau libcacard_cflags=$($pkg_config --cflags libcacard) 45047b02f544SMarc-André Lureau libcacard_libs=$($pkg_config --libs libcacard) 45057b02f544SMarc-André Lureau smartcard="yes" 4506111a38b0SRobert Relyea else 45077b02f544SMarc-André Lureau if test "$smartcard" = "yes"; then 45087b02f544SMarc-André Lureau feature_not_found "smartcard" "Install libcacard devel" 4509111a38b0SRobert Relyea fi 45107b02f544SMarc-André Lureau smartcard="no" 4511111a38b0SRobert Relyea fi 4512111a38b0SRobert Relyeafi 4513111a38b0SRobert Relyea 45142b2325ffSGerd Hoffmann# check for libusb 45152b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 451665d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 45172b2325ffSGerd Hoffmann libusb="yes" 4518ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 4519ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 45202b2325ffSGerd Hoffmann else 45212b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 45228efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 45232b2325ffSGerd Hoffmann fi 45242b2325ffSGerd Hoffmann libusb="no" 45252b2325ffSGerd Hoffmann fi 45262b2325ffSGerd Hoffmannfi 45272b2325ffSGerd Hoffmann 452869354a83SHans de Goede# check for usbredirparser for usb network redirection support 452969354a83SHans de Goedeif test "$usb_redir" != "no" ; then 453065d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 453169354a83SHans de Goede usb_redir="yes" 4532ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 4533ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 453469354a83SHans de Goede else 453569354a83SHans de Goede if test "$usb_redir" = "yes"; then 453621684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 453769354a83SHans de Goede fi 453869354a83SHans de Goede usb_redir="no" 453969354a83SHans de Goede fi 454069354a83SHans de Goedefi 454169354a83SHans de Goede 4542cd4ec0b4SGerd Hoffmann########################################## 4543d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 4544d9840e25STomoki Sekiyama 4545d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 4546d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 4547690604f6SMichael Roth "") vss_win32_include="-isystem $source_path" ;; 4548d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 4549d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 4550690604f6SMichael Roth vss_win32_include="-isystem $source_path/.sdk/vss" 4551d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 4552d9840e25STomoki Sekiyama ;; 4553690604f6SMichael Roth *) vss_win32_include="-isystem $vss_win32_sdk" 4554d9840e25STomoki Sekiyama esac 4555d9840e25STomoki Sekiyama cat > $TMPC << EOF 4556d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 4557d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 4558d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 4559d9840e25STomoki SekiyamaEOF 4560d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 4561d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 4562d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 4563315d3184SFam Zheng libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 4564f33ca81fSMichael Roth qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 4565d9840e25STomoki Sekiyama else 4566d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 4567d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 4568d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 4569d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 4570d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 4571d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 4572d9840e25STomoki Sekiyama feature_not_found "VSS support" 4573d9840e25STomoki Sekiyama fi 4574d9840e25STomoki Sekiyama guest_agent_with_vss="no" 4575d9840e25STomoki Sekiyama fi 4576d9840e25STomoki Sekiyamafi 4577d9840e25STomoki Sekiyama 4578d9840e25STomoki Sekiyama########################################## 4579d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 4580d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 4581d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 4582d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 4583d9840e25STomoki Sekiyama 4584d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 4585d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 4586d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 4587d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 4588d9840e25STomoki Sekiyama if test -n "$programfiles"; then 4589d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 4590d9840e25STomoki Sekiyama else 4591d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 4592d9840e25STomoki Sekiyama fi 4593d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 4594d9840e25STomoki Sekiyama win_sdk="" 4595d9840e25STomoki Sekiyama fi 4596d9840e25STomoki Sekiyamafi 4597d9840e25STomoki Sekiyama 4598d9840e25STomoki Sekiyama########################################## 459950cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h 460050cbebb9SMichael Rothif test "$mingw32" = "yes" -a "$guest_agent" != "no"; then 460150cbebb9SMichael Roth cat > $TMPC << EOF 460250cbebb9SMichael Roth#include <windows.h> 460350cbebb9SMichael Roth#include <ntddscsi.h> 460450cbebb9SMichael Rothint main(void) { 460550cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS) 460650cbebb9SMichael Roth#error Missing required ioctl definitions 460750cbebb9SMichael Roth#endif 460850cbebb9SMichael Roth SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 460950cbebb9SMichael Roth return addr.Lun; 461050cbebb9SMichael Roth} 461150cbebb9SMichael RothEOF 461250cbebb9SMichael Roth if compile_prog "" "" ; then 461350cbebb9SMichael Roth guest_agent_ntddscsi=yes 4614c54e1eb4SMichael Roth libs_qga="-lsetupapi $libs_qga" 461550cbebb9SMichael Roth fi 461650cbebb9SMichael Rothfi 461750cbebb9SMichael Roth 461850cbebb9SMichael Roth########################################## 46199d9e1521SGerd Hoffmann# virgl renderer probe 46209d9e1521SGerd Hoffmann 46219d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then 46229d9e1521SGerd Hoffmann cat > $TMPC << EOF 46239d9e1521SGerd Hoffmann#include <virglrenderer.h> 46249d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; } 46259d9e1521SGerd HoffmannEOF 46269d9e1521SGerd Hoffmann virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 46279d9e1521SGerd Hoffmann virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 462847479c55SMarc-André Lureau virgl_version=$($pkg_config --modversion virglrenderer 2>/dev/null) 46299d9e1521SGerd Hoffmann if $pkg_config virglrenderer >/dev/null 2>&1 && \ 46309d9e1521SGerd Hoffmann compile_prog "$virgl_cflags" "$virgl_libs" ; then 46319d9e1521SGerd Hoffmann virglrenderer="yes" 46329d9e1521SGerd Hoffmann else 46339d9e1521SGerd Hoffmann if test "$virglrenderer" = "yes" ; then 46349d9e1521SGerd Hoffmann feature_not_found "virglrenderer" 46359d9e1521SGerd Hoffmann fi 46369d9e1521SGerd Hoffmann virglrenderer="no" 46379d9e1521SGerd Hoffmann fi 46389d9e1521SGerd Hoffmannfi 46399d9e1521SGerd Hoffmann 46409d9e1521SGerd Hoffmann########################################## 46418ca80760SRichard Henderson# capstone 46428ca80760SRichard Henderson 4643e219c499SRichard Hendersoncase "$capstone" in 4644e219c499SRichard Henderson "" | yes) 46458ca80760SRichard Henderson if $pkg_config capstone; then 4646e219c499SRichard Henderson capstone=system 4647123ac0bbSAlexey Kardashevskiy elif test -e "${source_path}/.git" -a $git_update = 'yes' ; then 4648e219c499SRichard Henderson capstone=git 4649e219c499SRichard Henderson elif test -e "${source_path}/capstone/Makefile" ; then 4650e219c499SRichard Henderson capstone=internal 4651e219c499SRichard Henderson elif test -z "$capstone" ; then 4652e219c499SRichard Henderson capstone=no 4653e219c499SRichard Henderson else 4654e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel or git submodule" 4655e219c499SRichard Henderson fi 4656e219c499SRichard Henderson ;; 4657e219c499SRichard Henderson 4658e219c499SRichard Henderson system) 4659e219c499SRichard Henderson if ! $pkg_config capstone; then 4660e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel" 4661e219c499SRichard Henderson fi 4662e219c499SRichard Henderson ;; 4663e219c499SRichard Hendersonesac 4664e219c499SRichard Henderson 4665e219c499SRichard Hendersoncase "$capstone" in 4666e219c499SRichard Henderson git | internal) 4667e219c499SRichard Henderson if test "$capstone" = git; then 4668e219c499SRichard Henderson git_submodules="${git_submodules} capstone" 4669e219c499SRichard Henderson fi 4670e219c499SRichard Henderson mkdir -p capstone 4671e219c499SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include" 4672e219c499SRichard Henderson if test "$mingw32" = "yes"; then 4673e219c499SRichard Henderson LIBCAPSTONE=capstone.lib 4674e219c499SRichard Henderson else 4675e219c499SRichard Henderson LIBCAPSTONE=libcapstone.a 4676e219c499SRichard Henderson fi 4677e219c499SRichard Henderson LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS" 4678e219c499SRichard Henderson ;; 4679e219c499SRichard Henderson 4680e219c499SRichard Henderson system) 46818ca80760SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" 46828ca80760SRichard Henderson LIBS="$($pkg_config --libs capstone) $LIBS" 4683e219c499SRichard Henderson ;; 4684e219c499SRichard Henderson 4685e219c499SRichard Henderson no) 4686e219c499SRichard Henderson ;; 4687e219c499SRichard Henderson *) 4688e219c499SRichard Henderson error_exit "Unknown state for capstone: $capstone" 4689e219c499SRichard Henderson ;; 4690e219c499SRichard Hendersonesac 46918ca80760SRichard Henderson 46928ca80760SRichard Henderson########################################## 46935f6b9e8fSBlue Swirl# check if we have fdatasync 46945f6b9e8fSBlue Swirl 46955f6b9e8fSBlue Swirlfdatasync=no 46965f6b9e8fSBlue Swirlcat > $TMPC << EOF 46975f6b9e8fSBlue Swirl#include <unistd.h> 4698d1722a27SAlexandre Raymondint main(void) { 4699d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 4700d1722a27SAlexandre Raymondreturn fdatasync(0); 4701d1722a27SAlexandre Raymond#else 4702e172fe11SStefan Weil#error Not supported 4703d1722a27SAlexandre Raymond#endif 4704d1722a27SAlexandre Raymond} 47055f6b9e8fSBlue SwirlEOF 47065f6b9e8fSBlue Swirlif compile_prog "" "" ; then 47075f6b9e8fSBlue Swirl fdatasync=yes 47085f6b9e8fSBlue Swirlfi 47095f6b9e8fSBlue Swirl 471094a420b1SStefan Hajnoczi########################################## 4711e78815a5SAndreas Färber# check if we have madvise 4712e78815a5SAndreas Färber 4713e78815a5SAndreas Färbermadvise=no 4714e78815a5SAndreas Färbercat > $TMPC << EOF 4715e78815a5SAndreas Färber#include <sys/types.h> 4716e78815a5SAndreas Färber#include <sys/mman.h> 4717832ce9c2SScott Wood#include <stddef.h> 4718e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 4719e78815a5SAndreas FärberEOF 4720e78815a5SAndreas Färberif compile_prog "" "" ; then 4721e78815a5SAndreas Färber madvise=yes 4722e78815a5SAndreas Färberfi 4723e78815a5SAndreas Färber 4724e78815a5SAndreas Färber########################################## 4725e78815a5SAndreas Färber# check if we have posix_madvise 4726e78815a5SAndreas Färber 4727e78815a5SAndreas Färberposix_madvise=no 4728e78815a5SAndreas Färbercat > $TMPC << EOF 4729e78815a5SAndreas Färber#include <sys/mman.h> 4730832ce9c2SScott Wood#include <stddef.h> 4731e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 4732e78815a5SAndreas FärberEOF 4733e78815a5SAndreas Färberif compile_prog "" "" ; then 4734e78815a5SAndreas Färber posix_madvise=yes 4735e78815a5SAndreas Färberfi 4736e78815a5SAndreas Färber 4737e78815a5SAndreas Färber########################################## 47389bc5a719SAndreas Gustafsson# check if we have posix_memalign() 47399bc5a719SAndreas Gustafsson 47409bc5a719SAndreas Gustafssonposix_memalign=no 47419bc5a719SAndreas Gustafssoncat > $TMPC << EOF 47429bc5a719SAndreas Gustafsson#include <stdlib.h> 47439bc5a719SAndreas Gustafssonint main(void) { 47449bc5a719SAndreas Gustafsson void *p; 47459bc5a719SAndreas Gustafsson return posix_memalign(&p, 8, 8); 47469bc5a719SAndreas Gustafsson} 47479bc5a719SAndreas GustafssonEOF 47489bc5a719SAndreas Gustafssonif compile_prog "" "" ; then 47499bc5a719SAndreas Gustafsson posix_memalign=yes 47509bc5a719SAndreas Gustafssonfi 47519bc5a719SAndreas Gustafsson 47529bc5a719SAndreas Gustafsson########################################## 47530a852417SPaul Durrant# check if we have posix_syslog 47540a852417SPaul Durrant 47550a852417SPaul Durrantposix_syslog=no 47560a852417SPaul Durrantcat > $TMPC << EOF 47570a852417SPaul Durrant#include <syslog.h> 47580a852417SPaul Durrantint main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; } 47590a852417SPaul DurrantEOF 47600a852417SPaul Durrantif compile_prog "" "" ; then 47610a852417SPaul Durrant posix_syslog=yes 47620a852417SPaul Durrantfi 47630a852417SPaul Durrant 47640a852417SPaul Durrant########################################## 4765401bc051SPeter Maydell# check if we have sem_timedwait 4766401bc051SPeter Maydell 4767401bc051SPeter Maydellsem_timedwait=no 4768401bc051SPeter Maydellcat > $TMPC << EOF 4769401bc051SPeter Maydell#include <semaphore.h> 4770401bc051SPeter Maydellint main(void) { return sem_timedwait(0, 0); } 4771401bc051SPeter MaydellEOF 4772401bc051SPeter Maydellif compile_prog "" "" ; then 4773401bc051SPeter Maydell sem_timedwait=yes 4774401bc051SPeter Maydellfi 4775401bc051SPeter Maydell 4776401bc051SPeter Maydell########################################## 477794a420b1SStefan Hajnoczi# check if trace backend exists 477894a420b1SStefan Hajnoczi 47795b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 478094a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 47815b808275SLluís Vilanova error_exit "invalid trace backends" \ 47825b808275SLluís Vilanova "Please choose supported trace backends." 478394a420b1SStefan Hajnoczifi 478494a420b1SStefan Hajnoczi 47857e24e92aSStefan Hajnoczi########################################## 47867e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 47875b808275SLluís Vilanovaif have_backend "ust"; then 47887e24e92aSStefan Hajnoczi cat > $TMPC << EOF 4789bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 47907e24e92aSStefan Hajnocziint main(void) { return 0; } 47917e24e92aSStefan HajnocziEOF 4792c79ed23dSFrancis Deslauriers if compile_prog "" "-Wl,--no-as-needed -ldl" ; then 4793bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 479489138857SStefan Weil lttng_ust_libs=$($pkg_config --libs lttng-ust) 47957e24e92aSStefan Hajnoczi else 4796c79ed23dSFrancis Deslauriers lttng_ust_libs="-llttng-ust -ldl" 4797bf15f63cSMohamad Gebai fi 4798bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 479989138857SStefan Weil urcu_bp_libs=$($pkg_config --libs liburcu-bp) 4800bf15f63cSMohamad Gebai else 4801bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 4802bf15f63cSMohamad Gebai fi 4803bf15f63cSMohamad Gebai 4804bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 4805bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 4806bf15f63cSMohamad Gebai else 4807bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 48087e24e92aSStefan Hajnoczi fi 48097e24e92aSStefan Hajnoczifi 4810b3d08c02SDaniel P. Berrange 4811b3d08c02SDaniel P. Berrange########################################## 4812b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 48135b808275SLluís Vilanovaif have_backend "dtrace"; then 4814b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 481576ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 4816b3d08c02SDaniel P. Berrange fi 4817c276b17dSDaniel P. Berrange trace_backend_stap="no" 4818c276b17dSDaniel P. Berrange if has 'stap' ; then 4819c276b17dSDaniel P. Berrange trace_backend_stap="yes" 4820c276b17dSDaniel P. Berrange fi 4821b3d08c02SDaniel P. Berrangefi 4822b3d08c02SDaniel P. Berrange 48237e24e92aSStefan Hajnoczi########################################## 4824519175a2SAlex Barcelo# check and set a backend for coroutine 4825d0e2fce5SAneesh Kumar K.V 48267c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 482733c53c54SDaniel P. Berrange# is sigcontext. On Windows the only valid backend is the Windows 482833c53c54SDaniel P. Berrange# specific one. 48297c2acc70SPeter Maydell 48307c2acc70SPeter Maydellucontext_works=no 4831d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 4832d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 4833d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 4834cdf84806SPeter Maydell#ifdef __stub_makecontext 4835cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 4836cdf84806SPeter Maydell#endif 483775cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 4838d0e2fce5SAneesh Kumar K.VEOF 4839d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 48407c2acc70SPeter Maydell ucontext_works=yes 4841d0e2fce5SAneesh Kumar K.V fi 4842519175a2SAlex Barcelofi 48437c2acc70SPeter Maydell 48447c2acc70SPeter Maydellif test "$coroutine" = ""; then 48457c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 48467c2acc70SPeter Maydell coroutine=win32 48477c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 48487c2acc70SPeter Maydell coroutine=ucontext 4849519175a2SAlex Barcelo else 48507c2acc70SPeter Maydell coroutine=sigaltstack 48517c2acc70SPeter Maydell fi 48527c2acc70SPeter Maydellelse 48537c2acc70SPeter Maydell case $coroutine in 48547c2acc70SPeter Maydell windows) 48557c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 48567c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 48577c2acc70SPeter Maydell fi 48587c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 48597c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 48607c2acc70SPeter Maydell coroutine=win32 48617c2acc70SPeter Maydell ;; 48627c2acc70SPeter Maydell ucontext) 48637c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 48647c2acc70SPeter Maydell feature_not_found "ucontext" 48657c2acc70SPeter Maydell fi 48667c2acc70SPeter Maydell ;; 486733c53c54SDaniel P. Berrange sigaltstack) 48687c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 48697c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 48707c2acc70SPeter Maydell fi 48717c2acc70SPeter Maydell ;; 48727c2acc70SPeter Maydell *) 487376ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 48747c2acc70SPeter Maydell ;; 48757c2acc70SPeter Maydell esac 4876d0e2fce5SAneesh Kumar K.Vfi 4877d0e2fce5SAneesh Kumar K.V 487870c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 487970c60c08SStefan Hajnoczi coroutine_pool=yes 488070c60c08SStefan Hajnoczifi 488170c60c08SStefan Hajnoczi 48827d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes"; then 48837d992e4dSPeter Lieven if test "$coroutine_pool" = "yes"; then 48847d992e4dSPeter Lieven echo "WARN: disabling coroutine pool for stack usage debugging" 48857d992e4dSPeter Lieven coroutine_pool=no 48867d992e4dSPeter Lieven fi 48877d992e4dSPeter Lievenfi 48887d992e4dSPeter Lieven 48897d992e4dSPeter Lieven 4890d0e2fce5SAneesh Kumar K.V########################################## 4891d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 4892d2042378SAneesh Kumar K.V 48934e1797f9SStefan Weilopen_by_handle_at=no 4894d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 4895d2042378SAneesh Kumar K.V#include <fcntl.h> 4896acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 4897acc55ba8SStefan Weil# error missing definition 4898acc55ba8SStefan Weil#else 489975cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4900acc55ba8SStefan Weil#endif 4901d2042378SAneesh Kumar K.VEOF 4902d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 4903d2042378SAneesh Kumar K.V open_by_handle_at=yes 4904d2042378SAneesh Kumar K.Vfi 4905d2042378SAneesh Kumar K.V 4906e06a765eSHarsh Prateek Bora######################################## 4907e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 4908e06a765eSHarsh Prateek Bora 4909e06a765eSHarsh Prateek Boralinux_magic_h=no 4910e06a765eSHarsh Prateek Boracat > $TMPC << EOF 4911e06a765eSHarsh Prateek Bora#include <linux/magic.h> 4912e06a765eSHarsh Prateek Boraint main(void) { 491375cafad7SStefan Weil return 0; 4914e06a765eSHarsh Prateek Bora} 4915e06a765eSHarsh Prateek BoraEOF 4916e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 4917e06a765eSHarsh Prateek Bora linux_magic_h=yes 4918e06a765eSHarsh Prateek Borafi 4919e06a765eSHarsh Prateek Bora 49208ab1bf12SLuiz Capitulino######################################## 4921c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 4922c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 4923c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 4924c95e3080SKevin Wolf# only a warning. 4925c95e3080SKevin Wolf# 4926c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 4927c95e3080SKevin Wolf# the build doesn't fail anyway. 4928c95e3080SKevin Wolf 492906d71fa1SPeter Maydellpragma_disable_unused_but_set=no 493006d71fa1SPeter Maydellcat > $TMPC << EOF 4931e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 4932c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4933e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 4934c95e3080SKevin Wolf 493506d71fa1SPeter Maydellint main(void) { 493606d71fa1SPeter Maydell return 0; 493706d71fa1SPeter Maydell} 493806d71fa1SPeter MaydellEOF 493906d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 4940cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 4941c95e3080SKevin Wolfelse 4942c95e3080SKevin Wolf werror=no 494306d71fa1SPeter Maydellfi 494406d71fa1SPeter Maydell 494506d71fa1SPeter Maydell######################################## 4946541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 49473f4349dcSKevin Wolf 49483f4349dcSKevin Wolfvalgrind_h=no 49493f4349dcSKevin Wolfcat > $TMPC << EOF 49503f4349dcSKevin Wolf#include <valgrind/valgrind.h> 49513f4349dcSKevin Wolfint main(void) { 49523f4349dcSKevin Wolf return 0; 49533f4349dcSKevin Wolf} 49543f4349dcSKevin WolfEOF 49553f4349dcSKevin Wolfif compile_prog "" "" ; then 49563f4349dcSKevin Wolf valgrind_h=yes 49573f4349dcSKevin Wolffi 49583f4349dcSKevin Wolf 49593f4349dcSKevin Wolf######################################## 49608ab1bf12SLuiz Capitulino# check if environ is declared 49618ab1bf12SLuiz Capitulino 49628ab1bf12SLuiz Capitulinohas_environ=no 49638ab1bf12SLuiz Capitulinocat > $TMPC << EOF 49648ab1bf12SLuiz Capitulino#include <unistd.h> 49658ab1bf12SLuiz Capitulinoint main(void) { 4966c075a723SBlue Swirl environ = 0; 49678ab1bf12SLuiz Capitulino return 0; 49688ab1bf12SLuiz Capitulino} 49698ab1bf12SLuiz CapitulinoEOF 49708ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 49718ab1bf12SLuiz Capitulino has_environ=yes 49728ab1bf12SLuiz Capitulinofi 49738ab1bf12SLuiz Capitulino 497476a347e1SRichard Henderson######################################## 497576a347e1SRichard Henderson# check if cpuid.h is usable. 497676a347e1SRichard Henderson 497776a347e1SRichard Hendersoncat > $TMPC << EOF 497876a347e1SRichard Henderson#include <cpuid.h> 497976a347e1SRichard Hendersonint main(void) { 4980774d566cSPeter Maydell unsigned a, b, c, d; 4981774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 4982774d566cSPeter Maydell 4983774d566cSPeter Maydell if (max >= 1) { 4984774d566cSPeter Maydell __cpuid(1, a, b, c, d); 4985774d566cSPeter Maydell } 4986774d566cSPeter Maydell 4987774d566cSPeter Maydell if (max >= 7) { 4988774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 4989774d566cSPeter Maydell } 4990774d566cSPeter Maydell 499176a347e1SRichard Henderson return 0; 499276a347e1SRichard Henderson} 499376a347e1SRichard HendersonEOF 499476a347e1SRichard Hendersonif compile_prog "" "" ; then 499576a347e1SRichard Henderson cpuid_h=yes 499676a347e1SRichard Hendersonfi 499776a347e1SRichard Henderson 49985dd89908SRichard Henderson########################################## 49995dd89908SRichard Henderson# avx2 optimization requirement check 50005dd89908SRichard Henderson# 50015dd89908SRichard Henderson# There is no point enabling this if cpuid.h is not usable, 50025dd89908SRichard Henderson# since we won't be able to select the new routines. 50035dd89908SRichard Henderson 50045dd89908SRichard Hendersonif test $cpuid_h = yes; then 50055dd89908SRichard Henderson cat > $TMPC << EOF 50065dd89908SRichard Henderson#pragma GCC push_options 50075dd89908SRichard Henderson#pragma GCC target("avx2") 50085dd89908SRichard Henderson#include <cpuid.h> 50095dd89908SRichard Henderson#include <immintrin.h> 50105dd89908SRichard Hendersonstatic int bar(void *a) { 50115dd89908SRichard Henderson __m256i x = *(__m256i *)a; 50125dd89908SRichard Henderson return _mm256_testz_si256(x, x); 50135dd89908SRichard Henderson} 50145dd89908SRichard Hendersonint main(int argc, char *argv[]) { return bar(argv[0]); } 50155dd89908SRichard HendersonEOF 50165dd89908SRichard Henderson if compile_object "" ; then 50175dd89908SRichard Henderson avx2_opt="yes" 50185dd89908SRichard Henderson fi 50195dd89908SRichard Hendersonfi 50205dd89908SRichard Henderson 5021f540166bSRichard Henderson######################################## 5022f540166bSRichard Henderson# check if __[u]int128_t is usable. 5023f540166bSRichard Henderson 5024f540166bSRichard Hendersonint128=no 5025f540166bSRichard Hendersoncat > $TMPC << EOF 5026a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__) 5027a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 5028a00f66abSStefan Weil# error __int128_t does not work in CLANG before 3.2 5029a00f66abSStefan Weil# endif 5030a00f66abSStefan Weil#endif 5031f540166bSRichard Henderson__int128_t a; 5032f540166bSRichard Henderson__uint128_t b; 5033f540166bSRichard Hendersonint main (void) { 5034f540166bSRichard Henderson a = a + b; 5035f540166bSRichard Henderson b = a * b; 5036464e3671SPeter Maydell a = a * a; 5037f540166bSRichard Henderson return 0; 5038f540166bSRichard Henderson} 5039f540166bSRichard HendersonEOF 5040f540166bSRichard Hendersonif compile_prog "" "" ; then 5041f540166bSRichard Henderson int128=yes 5042f540166bSRichard Hendersonfi 504376a347e1SRichard Henderson 50447ebee43eSRichard Henderson######################################### 50457ebee43eSRichard Henderson# See if 128-bit atomic operations are supported. 50467ebee43eSRichard Henderson 50477ebee43eSRichard Hendersonatomic128=no 50487ebee43eSRichard Hendersonif test "$int128" = "yes"; then 50497ebee43eSRichard Henderson cat > $TMPC << EOF 50507ebee43eSRichard Hendersonint main(void) 50517ebee43eSRichard Henderson{ 50527ebee43eSRichard Henderson unsigned __int128 x = 0, y = 0; 50537ebee43eSRichard Henderson y = __atomic_load_16(&x, 0); 50547ebee43eSRichard Henderson __atomic_store_16(&x, y, 0); 50557ebee43eSRichard Henderson __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0); 50567ebee43eSRichard Henderson return 0; 50577ebee43eSRichard Henderson} 50587ebee43eSRichard HendersonEOF 50597ebee43eSRichard Henderson if compile_prog "" "" ; then 50607ebee43eSRichard Henderson atomic128=yes 50617ebee43eSRichard Henderson fi 50627ebee43eSRichard Hendersonfi 50637ebee43eSRichard Henderson 5064df79b996SRichard Henderson######################################### 5065df79b996SRichard Henderson# See if 64-bit atomic operations are supported. 5066df79b996SRichard Henderson# Note that without __atomic builtins, we can only 5067df79b996SRichard Henderson# assume atomic loads/stores max at pointer size. 5068df79b996SRichard Henderson 5069df79b996SRichard Hendersoncat > $TMPC << EOF 5070df79b996SRichard Henderson#include <stdint.h> 5071df79b996SRichard Hendersonint main(void) 5072df79b996SRichard Henderson{ 5073df79b996SRichard Henderson uint64_t x = 0, y = 0; 5074df79b996SRichard Henderson#ifdef __ATOMIC_RELAXED 5075df79b996SRichard Henderson y = __atomic_load_8(&x, 0); 5076df79b996SRichard Henderson __atomic_store_8(&x, y, 0); 5077df79b996SRichard Henderson __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); 5078df79b996SRichard Henderson __atomic_exchange_8(&x, y, 0); 5079df79b996SRichard Henderson __atomic_fetch_add_8(&x, y, 0); 5080df79b996SRichard Henderson#else 5081df79b996SRichard Henderson typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; 5082df79b996SRichard Henderson __sync_lock_test_and_set(&x, y); 5083df79b996SRichard Henderson __sync_val_compare_and_swap(&x, y, 0); 5084df79b996SRichard Henderson __sync_fetch_and_add(&x, y); 5085df79b996SRichard Henderson#endif 5086df79b996SRichard Henderson return 0; 5087df79b996SRichard Henderson} 5088df79b996SRichard HendersonEOF 5089df79b996SRichard Hendersonif compile_prog "" "" ; then 5090df79b996SRichard Henderson atomic64=yes 5091df79b996SRichard Hendersonfi 5092df79b996SRichard Henderson 50931e6e9acaSRichard Henderson######################################## 5094db432672SRichard Henderson# See if 16-byte vector operations are supported. 5095db432672SRichard Henderson# Even without a vector unit the compiler may expand these. 5096db432672SRichard Henderson# There is a bug in old GCC for PPC that crashes here. 5097db432672SRichard Henderson# Unfortunately it's the system compiler for Centos 7. 5098db432672SRichard Henderson 5099db432672SRichard Hendersoncat > $TMPC << EOF 5100db432672SRichard Hendersontypedef unsigned char U1 __attribute__((vector_size(16))); 5101db432672SRichard Hendersontypedef unsigned short U2 __attribute__((vector_size(16))); 5102db432672SRichard Hendersontypedef unsigned int U4 __attribute__((vector_size(16))); 5103db432672SRichard Hendersontypedef unsigned long long U8 __attribute__((vector_size(16))); 5104db432672SRichard Hendersontypedef signed char S1 __attribute__((vector_size(16))); 5105db432672SRichard Hendersontypedef signed short S2 __attribute__((vector_size(16))); 5106db432672SRichard Hendersontypedef signed int S4 __attribute__((vector_size(16))); 5107db432672SRichard Hendersontypedef signed long long S8 __attribute__((vector_size(16))); 5108db432672SRichard Hendersonstatic U1 a1, b1; 5109db432672SRichard Hendersonstatic U2 a2, b2; 5110db432672SRichard Hendersonstatic U4 a4, b4; 5111db432672SRichard Hendersonstatic U8 a8, b8; 5112db432672SRichard Hendersonstatic S1 c1; 5113db432672SRichard Hendersonstatic S2 c2; 5114db432672SRichard Hendersonstatic S4 c4; 5115db432672SRichard Hendersonstatic S8 c8; 5116db432672SRichard Hendersonstatic int i; 511774912f6dSLaurent Viviervoid helper(void *d, void *a, int shift, int i); 511874912f6dSLaurent Viviervoid helper(void *d, void *a, int shift, int i) 511974912f6dSLaurent Vivier{ 512074912f6dSLaurent Vivier *(U1 *)(d + i) = *(U1 *)(a + i) << shift; 512174912f6dSLaurent Vivier *(U2 *)(d + i) = *(U2 *)(a + i) << shift; 512274912f6dSLaurent Vivier *(U4 *)(d + i) = *(U4 *)(a + i) << shift; 512374912f6dSLaurent Vivier *(U8 *)(d + i) = *(U8 *)(a + i) << shift; 512474912f6dSLaurent Vivier} 5125db432672SRichard Hendersonint main(void) 5126db432672SRichard Henderson{ 5127db432672SRichard Henderson a1 += b1; a2 += b2; a4 += b4; a8 += b8; 5128db432672SRichard Henderson a1 -= b1; a2 -= b2; a4 -= b4; a8 -= b8; 5129db432672SRichard Henderson a1 *= b1; a2 *= b2; a4 *= b4; a8 *= b8; 5130db432672SRichard Henderson a1 &= b1; a2 &= b2; a4 &= b4; a8 &= b8; 5131db432672SRichard Henderson a1 |= b1; a2 |= b2; a4 |= b4; a8 |= b8; 5132db432672SRichard Henderson a1 ^= b1; a2 ^= b2; a4 ^= b4; a8 ^= b8; 5133db432672SRichard Henderson a1 <<= i; a2 <<= i; a4 <<= i; a8 <<= i; 5134db432672SRichard Henderson a1 >>= i; a2 >>= i; a4 >>= i; a8 >>= i; 5135db432672SRichard Henderson c1 >>= i; c2 >>= i; c4 >>= i; c8 >>= i; 5136db432672SRichard Henderson return 0; 5137db432672SRichard Henderson} 5138db432672SRichard HendersonEOF 5139db432672SRichard Henderson 5140db432672SRichard Hendersonvector16=no 5141db432672SRichard Hendersonif compile_prog "" "" ; then 5142db432672SRichard Henderson vector16=yes 5143db432672SRichard Hendersonfi 5144db432672SRichard Henderson 5145db432672SRichard Henderson######################################## 51461e6e9acaSRichard Henderson# check if getauxval is available. 51471e6e9acaSRichard Henderson 51481e6e9acaSRichard Hendersongetauxval=no 51491e6e9acaSRichard Hendersoncat > $TMPC << EOF 51501e6e9acaSRichard Henderson#include <sys/auxv.h> 51511e6e9acaSRichard Hendersonint main(void) { 51521e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 51531e6e9acaSRichard Henderson} 51541e6e9acaSRichard HendersonEOF 51551e6e9acaSRichard Hendersonif compile_prog "" "" ; then 51561e6e9acaSRichard Henderson getauxval=yes 51571e6e9acaSRichard Hendersonfi 51581e6e9acaSRichard Henderson 5159fd0e6053SJohn Snow######################################## 5160fd0e6053SJohn Snow# check if ccache is interfering with 5161fd0e6053SJohn Snow# semantic analysis of macros 5162fd0e6053SJohn Snow 51635e4dfd3dSJohn Snowunset CCACHE_CPP2 5164fd0e6053SJohn Snowccache_cpp2=no 5165fd0e6053SJohn Snowcat > $TMPC << EOF 5166fd0e6053SJohn Snowstatic const int Z = 1; 5167fd0e6053SJohn Snow#define fn() ({ Z; }) 5168fd0e6053SJohn Snow#define TAUT(X) ((X) == Z) 5169fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y) 5170fd0e6053SJohn Snow#define ID(X) (X) 5171fd0e6053SJohn Snowint main(int argc, char *argv[]) 5172fd0e6053SJohn Snow{ 5173fd0e6053SJohn Snow int x = 0, y = 0; 5174fd0e6053SJohn Snow x = ID(x); 5175fd0e6053SJohn Snow x = fn(); 5176fd0e6053SJohn Snow fn(); 5177fd0e6053SJohn Snow if (PAREN(x, y)) return 0; 5178fd0e6053SJohn Snow if (TAUT(Z)) return 0; 5179fd0e6053SJohn Snow return 0; 5180fd0e6053SJohn Snow} 5181fd0e6053SJohn SnowEOF 5182fd0e6053SJohn Snow 5183fd0e6053SJohn Snowif ! compile_object "-Werror"; then 5184fd0e6053SJohn Snow ccache_cpp2=yes 5185fd0e6053SJohn Snowfi 5186fd0e6053SJohn Snow 5187b553a042SJohn Snow################################################# 5188b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE. 5189b553a042SJohn Snow 5190b553a042SJohn Snowif test "$fortify_source" != "no"; then 5191b553a042SJohn Snow if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 5192b553a042SJohn Snow fortify_source="no"; 5193e189091fSPeter Maydell elif test -n "$cxx" && has $cxx && 5194cfcc7c14SJohn Snow echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 5195b553a042SJohn Snow fortify_source="no"; 5196b553a042SJohn Snow else 5197b553a042SJohn Snow fortify_source="yes" 5198b553a042SJohn Snow fi 5199b553a042SJohn Snowfi 5200b553a042SJohn Snow 52011efad060SFam Zheng############################################### 52021efad060SFam Zheng# Check if copy_file_range is provided by glibc 52031efad060SFam Zhenghave_copy_file_range=no 52041efad060SFam Zhengcat > $TMPC << EOF 52051efad060SFam Zheng#include <unistd.h> 52061efad060SFam Zhengint main(void) { 52071efad060SFam Zheng copy_file_range(0, NULL, 0, NULL, 0, 0); 52081efad060SFam Zheng return 0; 52091efad060SFam Zheng} 52101efad060SFam ZhengEOF 52111efad060SFam Zhengif compile_prog "" "" ; then 52121efad060SFam Zheng have_copy_file_range=yes 52131efad060SFam Zhengfi 52141efad060SFam Zheng 5215d2042378SAneesh Kumar K.V########################################## 5216277abf15SJan Vesely# check if struct fsxattr is available via linux/fs.h 5217277abf15SJan Vesely 5218277abf15SJan Veselyhave_fsxattr=no 5219277abf15SJan Veselycat > $TMPC << EOF 5220277abf15SJan Vesely#include <linux/fs.h> 5221277abf15SJan Veselystruct fsxattr foo; 5222277abf15SJan Veselyint main(void) { 5223277abf15SJan Vesely return 0; 5224277abf15SJan Vesely} 5225277abf15SJan VeselyEOF 5226277abf15SJan Veselyif compile_prog "" "" ; then 5227277abf15SJan Vesely have_fsxattr=yes 5228277abf15SJan Veselyfi 5229277abf15SJan Vesely 5230b66e10e4SPeter Maydell########################################## 5231a40161cbSPaolo Bonzini# check for usable membarrier system call 5232a40161cbSPaolo Bonziniif test "$membarrier" = "yes"; then 5233a40161cbSPaolo Bonzini have_membarrier=no 5234a40161cbSPaolo Bonzini if test "$mingw32" = "yes" ; then 5235a40161cbSPaolo Bonzini have_membarrier=yes 5236a40161cbSPaolo Bonzini elif test "$linux" = "yes" ; then 5237a40161cbSPaolo Bonzini cat > $TMPC << EOF 5238a40161cbSPaolo Bonzini #include <linux/membarrier.h> 5239a40161cbSPaolo Bonzini #include <sys/syscall.h> 5240a40161cbSPaolo Bonzini #include <unistd.h> 5241a40161cbSPaolo Bonzini #include <stdlib.h> 5242a40161cbSPaolo Bonzini int main(void) { 5243a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0); 5244a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0); 5245a40161cbSPaolo Bonzini exit(0); 5246a40161cbSPaolo Bonzini } 5247a40161cbSPaolo BonziniEOF 5248a40161cbSPaolo Bonzini if compile_prog "" "" ; then 5249a40161cbSPaolo Bonzini have_membarrier=yes 5250a40161cbSPaolo Bonzini fi 5251a40161cbSPaolo Bonzini fi 5252a40161cbSPaolo Bonzini if test "$have_membarrier" = "no"; then 5253a40161cbSPaolo Bonzini feature_not_found "membarrier" "membarrier system call not available" 5254a40161cbSPaolo Bonzini fi 5255a40161cbSPaolo Bonzinielse 5256a40161cbSPaolo Bonzini # Do not enable it by default even for Mingw32, because it doesn't 5257a40161cbSPaolo Bonzini # work on Wine. 5258a40161cbSPaolo Bonzini membarrier=no 5259a40161cbSPaolo Bonzinifi 5260a40161cbSPaolo Bonzini 5261a40161cbSPaolo Bonzini########################################## 5262b66e10e4SPeter Maydell# check if rtnetlink.h exists and is useful 5263575b22b1SLaurent Vivierhave_rtnetlink=no 5264575b22b1SLaurent Viviercat > $TMPC << EOF 5265575b22b1SLaurent Vivier#include <linux/rtnetlink.h> 5266575b22b1SLaurent Vivierint main(void) { 5267575b22b1SLaurent Vivier return IFLA_PROTO_DOWN; 5268575b22b1SLaurent Vivier} 5269575b22b1SLaurent VivierEOF 5270575b22b1SLaurent Vivierif compile_prog "" "" ; then 5271575b22b1SLaurent Vivier have_rtnetlink=yes 5272575b22b1SLaurent Vivierfi 5273575b22b1SLaurent Vivier 52746a02c806SStefan Hajnoczi########################################## 52756a02c806SStefan Hajnoczi# check for usable AF_VSOCK environment 52766a02c806SStefan Hajnoczihave_af_vsock=no 52776a02c806SStefan Hajnoczicat > $TMPC << EOF 52786a02c806SStefan Hajnoczi#include <errno.h> 52796a02c806SStefan Hajnoczi#include <sys/types.h> 52806a02c806SStefan Hajnoczi#include <sys/socket.h> 52816a02c806SStefan Hajnoczi#if !defined(AF_VSOCK) 52826a02c806SStefan Hajnoczi# error missing AF_VSOCK flag 52836a02c806SStefan Hajnoczi#endif 52846a02c806SStefan Hajnoczi#include <linux/vm_sockets.h> 52856a02c806SStefan Hajnocziint main(void) { 52866a02c806SStefan Hajnoczi int sock, ret; 52876a02c806SStefan Hajnoczi struct sockaddr_vm svm; 52886a02c806SStefan Hajnoczi socklen_t len = sizeof(svm); 52896a02c806SStefan Hajnoczi sock = socket(AF_VSOCK, SOCK_STREAM, 0); 52906a02c806SStefan Hajnoczi ret = getpeername(sock, (struct sockaddr *)&svm, &len); 52916a02c806SStefan Hajnoczi if ((ret == -1) && (errno == ENOTCONN)) { 52926a02c806SStefan Hajnoczi return 0; 52936a02c806SStefan Hajnoczi } 52946a02c806SStefan Hajnoczi return -1; 52956a02c806SStefan Hajnoczi} 52966a02c806SStefan HajnocziEOF 52976a02c806SStefan Hajnocziif compile_prog "" "" ; then 52986a02c806SStefan Hajnoczi have_af_vsock=yes 52996a02c806SStefan Hajnoczifi 53006a02c806SStefan Hajnoczi 5301f0d92b56SLongpeng(Mike)########################################## 5302f0d92b56SLongpeng(Mike)# check for usable AF_ALG environment 5303f0d92b56SLongpeng(Mike)hava_afalg=no 5304f0d92b56SLongpeng(Mike)cat > $TMPC << EOF 5305f0d92b56SLongpeng(Mike)#include <errno.h> 5306f0d92b56SLongpeng(Mike)#include <sys/types.h> 5307f0d92b56SLongpeng(Mike)#include <sys/socket.h> 5308f0d92b56SLongpeng(Mike)#include <linux/if_alg.h> 5309f0d92b56SLongpeng(Mike)int main(void) { 5310f0d92b56SLongpeng(Mike) int sock; 5311f0d92b56SLongpeng(Mike) sock = socket(AF_ALG, SOCK_SEQPACKET, 0); 5312f0d92b56SLongpeng(Mike) return sock; 5313f0d92b56SLongpeng(Mike)} 5314f0d92b56SLongpeng(Mike)EOF 5315f0d92b56SLongpeng(Mike)if compile_prog "" "" ; then 5316f0d92b56SLongpeng(Mike) have_afalg=yes 5317f0d92b56SLongpeng(Mike)fi 5318f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" 5319f0d92b56SLongpeng(Mike)then 5320f0d92b56SLongpeng(Mike) if test "$have_afalg" != "yes" 5321f0d92b56SLongpeng(Mike) then 5322f0d92b56SLongpeng(Mike) error_exit "AF_ALG requested but could not be detected" 5323f0d92b56SLongpeng(Mike) fi 5324f0d92b56SLongpeng(Mike)fi 5325f0d92b56SLongpeng(Mike) 5326f0d92b56SLongpeng(Mike) 53276969ec6cSJames Clarke################################################# 5328c97d6d2cSSergio Andres Gomez Del Real# Check to see if we have the Hypervisor framework 5329d2d08522SPeter Maydellif [ "$darwin" = "yes" ] ; then 5330c97d6d2cSSergio Andres Gomez Del Real cat > $TMPC << EOF 5331c97d6d2cSSergio Andres Gomez Del Real#include <Hypervisor/hv.h> 5332c97d6d2cSSergio Andres Gomez Del Realint main() { return 0;} 5333c97d6d2cSSergio Andres Gomez Del RealEOF 5334c97d6d2cSSergio Andres Gomez Del Real if ! compile_object ""; then 5335c97d6d2cSSergio Andres Gomez Del Real hvf='no' 5336c97d6d2cSSergio Andres Gomez Del Real else 5337c97d6d2cSSergio Andres Gomez Del Real hvf='yes' 5338c97d6d2cSSergio Andres Gomez Del Real LDFLAGS="-framework Hypervisor $LDFLAGS" 5339c97d6d2cSSergio Andres Gomez Del Real fi 5340c97d6d2cSSergio Andres Gomez Del Realfi 5341c97d6d2cSSergio Andres Gomez Del Real 5342c97d6d2cSSergio Andres Gomez Del Real################################################# 53436969ec6cSJames Clarke# Sparc implicitly links with --relax, which is 53446969ec6cSJames Clarke# incompatible with -r, so --no-relax should be 53456969ec6cSJames Clarke# given. It does no harm to give it on other 53466969ec6cSJames Clarke# platforms too. 53476969ec6cSJames Clarke 53486969ec6cSJames Clarke# Note: the prototype is needed since QEMU_CFLAGS 53496969ec6cSJames Clarke# contains -Wmissing-prototypes 53506969ec6cSJames Clarkecat > $TMPC << EOF 53516969ec6cSJames Clarkeextern int foo(void); 53526969ec6cSJames Clarkeint foo(void) { return 0; } 53536969ec6cSJames ClarkeEOF 53546969ec6cSJames Clarkeif ! compile_object ""; then 53556969ec6cSJames Clarke error_exit "Failed to compile object file for LD_REL_FLAGS test" 53566969ec6cSJames Clarkefi 53577ecf44a5SPaolo Bonzinifor i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do 53587ecf44a5SPaolo Bonzini if do_cc -nostdlib $i -o $TMPMO $TMPO; then 53597ecf44a5SPaolo Bonzini LD_REL_FLAGS=$i 53607ecf44a5SPaolo Bonzini break 53617ecf44a5SPaolo Bonzini fi 53627ecf44a5SPaolo Bonzinidone 53637ecf44a5SPaolo Bonziniif test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then 53647ecf44a5SPaolo Bonzini feature_not_found "modules" "Cannot find how to build relocatable objects" 53656969ec6cSJames Clarkefi 53666969ec6cSJames Clarke 5367277abf15SJan Vesely########################################## 53684d04351fSChristopher Covington# check for sysmacros.h 53694d04351fSChristopher Covington 53704d04351fSChristopher Covingtonhave_sysmacros=no 53714d04351fSChristopher Covingtoncat > $TMPC << EOF 53724d04351fSChristopher Covington#include <sys/sysmacros.h> 53734d04351fSChristopher Covingtonint main(void) { 53744d04351fSChristopher Covington return makedev(0, 0); 53754d04351fSChristopher Covington} 53764d04351fSChristopher CovingtonEOF 53774d04351fSChristopher Covingtonif compile_prog "" "" ; then 53784d04351fSChristopher Covington have_sysmacros=yes 53794d04351fSChristopher Covingtonfi 53804d04351fSChristopher Covington 53814d04351fSChristopher Covington########################################## 5382da92c3ffSAshish Mittal# Veritas HyperScale block driver VxHS 5383da92c3ffSAshish Mittal# Check if libvxhs is installed 5384da92c3ffSAshish Mittal 5385da92c3ffSAshish Mittalif test "$vxhs" != "no" ; then 5386da92c3ffSAshish Mittal cat > $TMPC <<EOF 5387da92c3ffSAshish Mittal#include <stdint.h> 5388da92c3ffSAshish Mittal#include <qnio/qnio_api.h> 5389da92c3ffSAshish Mittal 5390da92c3ffSAshish Mittalvoid *vxhs_callback; 5391da92c3ffSAshish Mittal 5392da92c3ffSAshish Mittalint main(void) { 5393da92c3ffSAshish Mittal iio_init(QNIO_VERSION, vxhs_callback); 5394da92c3ffSAshish Mittal return 0; 5395da92c3ffSAshish Mittal} 5396da92c3ffSAshish MittalEOF 5397da92c3ffSAshish Mittal vxhs_libs="-lvxhs -lssl" 5398da92c3ffSAshish Mittal if compile_prog "" "$vxhs_libs" ; then 5399da92c3ffSAshish Mittal vxhs=yes 5400da92c3ffSAshish Mittal else 5401da92c3ffSAshish Mittal if test "$vxhs" = "yes" ; then 5402da92c3ffSAshish Mittal feature_not_found "vxhs block device" "Install libvxhs See github" 5403da92c3ffSAshish Mittal fi 5404da92c3ffSAshish Mittal vxhs=no 5405da92c3ffSAshish Mittal fi 5406da92c3ffSAshish Mittalfi 5407da92c3ffSAshish Mittal 5408da92c3ffSAshish Mittal########################################## 540949e00a18SAndreas Grapentin# check for _Static_assert() 541049e00a18SAndreas Grapentin 541149e00a18SAndreas Grapentinhave_static_assert=no 541249e00a18SAndreas Grapentincat > $TMPC << EOF 541349e00a18SAndreas Grapentin_Static_assert(1, "success"); 541449e00a18SAndreas Grapentinint main(void) { 541549e00a18SAndreas Grapentin return 0; 541649e00a18SAndreas Grapentin} 541749e00a18SAndreas GrapentinEOF 541849e00a18SAndreas Grapentinif compile_prog "" "" ; then 541949e00a18SAndreas Grapentin have_static_assert=yes 542049e00a18SAndreas Grapentinfi 542149e00a18SAndreas Grapentin 542249e00a18SAndreas Grapentin########################################## 5423e674605fSTomáš Golembiovský# check for utmpx.h, it is missing e.g. on OpenBSD 5424e674605fSTomáš Golembiovský 5425e674605fSTomáš Golembiovskýhave_utmpx=no 5426e674605fSTomáš Golembiovskýcat > $TMPC << EOF 5427e674605fSTomáš Golembiovský#include <utmpx.h> 5428e674605fSTomáš Golembiovskýstruct utmpx user_info; 5429e674605fSTomáš Golembiovskýint main(void) { 5430e674605fSTomáš Golembiovský return 0; 5431e674605fSTomáš Golembiovský} 5432e674605fSTomáš GolembiovskýEOF 5433e674605fSTomáš Golembiovskýif compile_prog "" "" ; then 5434e674605fSTomáš Golembiovský have_utmpx=yes 5435e674605fSTomáš Golembiovskýfi 5436e674605fSTomáš Golembiovský 5437e674605fSTomáš Golembiovský########################################## 5438247724cbSMarc-André Lureau# checks for sanitizers 5439247724cbSMarc-André Lureau 5440247724cbSMarc-André Lureauhave_asan=no 5441247724cbSMarc-André Lureauhave_ubsan=no 5442d83414e1SMarc-André Lureauhave_asan_iface_h=no 5443d83414e1SMarc-André Lureauhave_asan_iface_fiber=no 5444247724cbSMarc-André Lureau 5445247724cbSMarc-André Lureauif test "$sanitizers" = "yes" ; then 5446b9f44da2SMarc-André Lureau write_c_skeleton 5447247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then 5448247724cbSMarc-André Lureau have_asan=yes 5449247724cbSMarc-André Lureau fi 5450b9f44da2SMarc-André Lureau 5451b9f44da2SMarc-André Lureau # we could use a simple skeleton for flags checks, but this also 5452b9f44da2SMarc-André Lureau # detect the static linking issue of ubsan, see also: 5453b9f44da2SMarc-André Lureau # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285 5454b9f44da2SMarc-André Lureau cat > $TMPC << EOF 5455b9f44da2SMarc-André Lureau#include <stdlib.h> 5456b9f44da2SMarc-André Lureauint main(void) { 5457b9f44da2SMarc-André Lureau void *tmp = malloc(10); 5458b9f44da2SMarc-André Lureau return *(int *)(tmp + 2); 5459b9f44da2SMarc-André Lureau} 5460b9f44da2SMarc-André LureauEOF 5461247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then 5462247724cbSMarc-André Lureau have_ubsan=yes 5463247724cbSMarc-André Lureau fi 5464d83414e1SMarc-André Lureau 5465d83414e1SMarc-André Lureau if check_include "sanitizer/asan_interface.h" ; then 5466d83414e1SMarc-André Lureau have_asan_iface_h=yes 5467d83414e1SMarc-André Lureau fi 5468d83414e1SMarc-André Lureau 5469d83414e1SMarc-André Lureau cat > $TMPC << EOF 5470d83414e1SMarc-André Lureau#include <sanitizer/asan_interface.h> 5471d83414e1SMarc-André Lureauint main(void) { 5472d83414e1SMarc-André Lureau __sanitizer_start_switch_fiber(0, 0, 0); 5473d83414e1SMarc-André Lureau return 0; 5474d83414e1SMarc-André Lureau} 5475d83414e1SMarc-André LureauEOF 5476d83414e1SMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" "" ; then 5477d83414e1SMarc-André Lureau have_asan_iface_fiber=yes 5478d83414e1SMarc-André Lureau fi 5479247724cbSMarc-André Lureaufi 5480247724cbSMarc-André Lureau 5481247724cbSMarc-André Lureau########################################## 548251a12b51SAlex Bennée# Docker and cross-compiler support 548351a12b51SAlex Bennée# 548451a12b51SAlex Bennée# This is specifically for building test 548551a12b51SAlex Bennée# cases for foreign architectures, not 548651a12b51SAlex Bennée# cross-compiling QEMU itself. 548751a12b51SAlex Bennée 548851a12b51SAlex Bennéeif has "docker"; then 548951a12b51SAlex Bennée docker=$($python $source_path/tests/docker/docker.py probe) 549051a12b51SAlex Bennéefi 549151a12b51SAlex Bennée 549251a12b51SAlex Bennée########################################## 5493e86ecd4bSJuan Quintela# End of CC checks 5494e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 5495e86ecd4bSJuan Quintela 5496d83414e1SMarc-André Lureauwrite_c_skeleton 5497d83414e1SMarc-André Lureau 54981d728c39SBlue Swirlif test "$gcov" = "yes" ; then 54991d728c39SBlue Swirl CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 55001d728c39SBlue Swirl LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 5501b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then 5502e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 550348e56d50SPaolo Bonzinielif test "$debug" = "no"; then 5504ce278618SPeter Maydell CFLAGS="-O2 $CFLAGS" 5505e86ecd4bSJuan Quintelafi 5506a316e378SJuan Quintela 5507247724cbSMarc-André Lureauif test "$have_asan" = "yes"; then 5508247724cbSMarc-André Lureau CFLAGS="-fsanitize=address $CFLAGS" 5509d83414e1SMarc-André Lureau if test "$have_asan_iface_h" = "no" ; then 5510d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header missing." \ 5511d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 5512d83414e1SMarc-André Lureau elif test "$have_asan_iface_fiber" = "no" ; then 5513d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header is too old." \ 5514d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 5515d83414e1SMarc-André Lureau fi 5516247724cbSMarc-André Lureaufi 5517247724cbSMarc-André Lureauif test "$have_ubsan" = "yes"; then 5518247724cbSMarc-André Lureau CFLAGS="-fsanitize=undefined $CFLAGS" 5519247724cbSMarc-André Lureaufi 5520247724cbSMarc-André Lureau 55216542aa9cSPeter Lieven########################################## 55226542aa9cSPeter Lieven# Do we have libnfs 55236542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 5524b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 55256542aa9cSPeter Lieven libnfs="yes" 55266542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 55276542aa9cSPeter Lieven else 55286542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 55298efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 55306542aa9cSPeter Lieven fi 55316542aa9cSPeter Lieven libnfs="no" 55326542aa9cSPeter Lieven fi 55336542aa9cSPeter Lievenfi 55341d728c39SBlue Swirl 55356ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 55366ca026cbSPeter Maydellif test "$werror" = "yes"; then 55376ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 55386ca026cbSPeter Maydellfi 55396ca026cbSPeter Maydell 5540e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then 5541e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 55421156c669SJuan Quintela LDFLAGS="-Wl,--warn-common $LDFLAGS" 5543e86ecd4bSJuan Quintela fi 5544e86ecd4bSJuan Quintelafi 5545e86ecd4bSJuan Quintela 554694dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 554794dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 554894dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 554994dd53c5SGerd Hoffmannelse 555094dd53c5SGerd Hoffmann POD2MAN="pod2man" 555194dd53c5SGerd Hoffmannfi 555294dd53c5SGerd Hoffmann 5553952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 5554952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 5555952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 5556e9a3591fSChristian Borntraeger if ld_has $flag ; then 5557952afb71SBlue Swirl LDFLAGS="-Wl,$flag $LDFLAGS" 5558952afb71SBlue Swirl fi 5559952afb71SBlue Swirl done 5560952afb71SBlue Swirlfi 5561952afb71SBlue Swirl 556210ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 5563e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 5564528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 5565834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 55665a67135aSbellard 5567e0580342SKamil Rytarowski# We can only support ivshmem if we have eventfd 5568e0580342SKamil Rytarowskiif [ "$eventfd" = "yes" ]; then 5569e0580342SKamil Rytarowski ivshmem=yes 5570e0580342SKamil Rytarowskifi 5571e0580342SKamil Rytarowski 55724b1c11fdSDaniel P. Berrangetools="" 55734b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 5574ca35f780SPaolo Bonzini tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 55754b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 55764b1c11fdSDaniel P. Berrange tools="qemu-nbd\$(EXESUF) $tools" 5577b1449edbSKamil Rytarowski fi 5578b1449edbSKamil Rytarowski if [ "$ivshmem" = "yes" ]; then 5579a75eb03bSDavid Marchand tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" 55804b1c11fdSDaniel P. Berrange fi 55814b1c11fdSDaniel P. Berrangefi 55824b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 5583b855f8d1SPaolo Bonzini if test "$linux" = yes; then 5584b855f8d1SPaolo Bonzini if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then 5585983eef5aSMeador Inge virtfs=yes 558617bff52bSM. Mohan Kumar tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 5587983eef5aSMeador Inge else 5588983eef5aSMeador Inge if test "$virtfs" = yes; then 5589b855f8d1SPaolo Bonzini error_exit "VirtFS requires libcap devel and libattr devel" 5590983eef5aSMeador Inge fi 559117500370SAndreas Färber virtfs=no 5592983eef5aSMeador Inge fi 5593fe8fc5aeSPaolo Bonzini if test "$mpath" != no && test "$mpathpersist" = yes ; then 5594fe8fc5aeSPaolo Bonzini mpath=yes 5595fe8fc5aeSPaolo Bonzini else 5596fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 5597fe8fc5aeSPaolo Bonzini error_exit "Multipath requires libmpathpersist devel" 5598fe8fc5aeSPaolo Bonzini fi 5599fe8fc5aeSPaolo Bonzini mpath=no 5600fe8fc5aeSPaolo Bonzini fi 5601b855f8d1SPaolo Bonzini tools="$tools scsi/qemu-pr-helper\$(EXESUF)" 5602b855f8d1SPaolo Bonzini else 5603b855f8d1SPaolo Bonzini if test "$virtfs" = yes; then 5604b855f8d1SPaolo Bonzini error_exit "VirtFS is supported only on Linux" 5605b855f8d1SPaolo Bonzini fi 5606b855f8d1SPaolo Bonzini virtfs=no 5607fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 5608fe8fc5aeSPaolo Bonzini error_exit "Multipath is supported only on Linux" 5609fe8fc5aeSPaolo Bonzini fi 5610fe8fc5aeSPaolo Bonzini mpath=no 561117bff52bSM. Mohan Kumar fi 56126a021536SGerd Hoffmann if test "$xkbcommon" = "yes"; then 56136a021536SGerd Hoffmann tools="qemu-keymap\$(EXESUF) $tools" 56146a021536SGerd Hoffmann fi 5615ff69fd8cSLaurent Vivierfi 56169d6bc27bSMichael Roth 56179d6bc27bSMichael Roth# Probe for guest agent support/options 56189d6bc27bSMichael Roth 5619e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 5620b39297aeSTomoki Sekiyama if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 5621fafcaf1dSMichael Roth tools="qemu-ga $tools" 5622e8ef31a3SMichael Tokarev guest_agent=yes 5623e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 5624e8ef31a3SMichael Tokarev guest_agent=no 5625e8ef31a3SMichael Tokarev else 5626e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 5627ca35f780SPaolo Bonzini fi 56284b1c11fdSDaniel P. Berrangefi 5629ca35f780SPaolo Bonzini 56309d6bc27bSMichael Roth# Guest agent Window MSI package 56319d6bc27bSMichael Roth 56329d6bc27bSMichael Rothif test "$guest_agent" != yes; then 56339d6bc27bSMichael Roth if test "$guest_agent_msi" = yes; then 56349d6bc27bSMichael Roth error_exit "MSI guest agent package requires guest agent enabled" 56359d6bc27bSMichael Roth fi 56369d6bc27bSMichael Roth guest_agent_msi=no 56379d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then 56389d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 56399d6bc27bSMichael Roth error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 56409d6bc27bSMichael Roth fi 56419d6bc27bSMichael Roth guest_agent_msi=no 56429d6bc27bSMichael Rothelif ! has wixl; then 56439d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 56449d6bc27bSMichael Roth error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 56459d6bc27bSMichael Roth fi 56469d6bc27bSMichael Roth guest_agent_msi=no 56471a34904eSMichael Rothelse 56481a34904eSMichael Roth # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 56491a34904eSMichael Roth # disabled explicitly 56501a34904eSMichael Roth if test "$guest_agent_msi" != "no"; then 56511a34904eSMichael Roth guest_agent_msi=yes 56521a34904eSMichael Roth fi 56539d6bc27bSMichael Rothfi 56549d6bc27bSMichael Roth 56551a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then 56569d6bc27bSMichael Roth if test "$guest_agent_with_vss" = "yes"; then 56579d6bc27bSMichael Roth QEMU_GA_MSI_WITH_VSS="-D InstallVss" 56589d6bc27bSMichael Roth fi 56599d6bc27bSMichael Roth 56609d6bc27bSMichael Roth if test "$QEMU_GA_MANUFACTURER" = ""; then 56619d6bc27bSMichael Roth QEMU_GA_MANUFACTURER=QEMU 56629d6bc27bSMichael Roth fi 56639d6bc27bSMichael Roth 56649d6bc27bSMichael Roth if test "$QEMU_GA_DISTRO" = ""; then 56659d6bc27bSMichael Roth QEMU_GA_DISTRO=Linux 56669d6bc27bSMichael Roth fi 56679d6bc27bSMichael Roth 56689d6bc27bSMichael Roth if test "$QEMU_GA_VERSION" = ""; then 566989138857SStefan Weil QEMU_GA_VERSION=$(cat $source_path/VERSION) 56709d6bc27bSMichael Roth fi 56719d6bc27bSMichael Roth 567289138857SStefan Weil QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin" 56739d6bc27bSMichael Roth 56749d6bc27bSMichael Roth case "$cpu" in 56759d6bc27bSMichael Roth x86_64) 56769d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 56779d6bc27bSMichael Roth ;; 56789d6bc27bSMichael Roth i386) 56799d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-D Arch=32" 56809d6bc27bSMichael Roth ;; 56819d6bc27bSMichael Roth *) 56829d6bc27bSMichael Roth error_exit "CPU $cpu not supported for building installation package" 56839d6bc27bSMichael Roth ;; 56849d6bc27bSMichael Roth esac 56859d6bc27bSMichael Rothfi 56869d6bc27bSMichael Roth 5687ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 5688ca35f780SPaolo Bonziniroms= 5689ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 5690ca35f780SPaolo Bonzini "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 5691ca35f780SPaolo Bonzini "$softmmu" = yes ; then 5692e57218b6SPeter Maydell # Different host OS linkers have different ideas about the name of the ELF 5693c65d5e4eSBrad Smith # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd 5694c65d5e4eSBrad Smith # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe. 5695c65d5e4eSBrad Smith for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do 5696e57218b6SPeter Maydell if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then 5697e57218b6SPeter Maydell ld_i386_emulation="$emu" 5698ca35f780SPaolo Bonzini roms="optionrom" 5699e57218b6SPeter Maydell break 5700e57218b6SPeter Maydell fi 5701e57218b6SPeter Maydell done 5702ca35f780SPaolo Bonzinifi 5703d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 570439ac8455SDavid Gibson roms="$roms spapr-rtas" 570539ac8455SDavid Gibsonfi 5706ca35f780SPaolo Bonzini 57079933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 57089933c305SChristian Borntraeger roms="$roms s390-ccw" 57099933c305SChristian Borntraegerfi 57109933c305SChristian Borntraeger 5711964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary. 571292fe2ba8SPeter Maydellif ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then 5713964c6fa1SRichard Henderson textseg_addr= 5714964c6fa1SRichard Henderson case "$cpu" in 5715479eb121SRichard Henderson arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 5716479eb121SRichard Henderson # ??? Rationale for choosing this address 5717964c6fa1SRichard Henderson textseg_addr=0x60000000 5718964c6fa1SRichard Henderson ;; 5719964c6fa1SRichard Henderson mips) 5720479eb121SRichard Henderson # A 256M aligned address, high in the address space, with enough 5721479eb121SRichard Henderson # room for the code_gen_buffer above it before the stack. 5722479eb121SRichard Henderson textseg_addr=0x60000000 5723964c6fa1SRichard Henderson ;; 5724964c6fa1SRichard Henderson esac 5725964c6fa1SRichard Henderson if [ -n "$textseg_addr" ]; then 5726964c6fa1SRichard Henderson cat > $TMPC <<EOF 5727964c6fa1SRichard Henderson int main(void) { return 0; } 5728964c6fa1SRichard HendersonEOF 5729964c6fa1SRichard Henderson textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 5730964c6fa1SRichard Henderson if ! compile_prog "" "$textseg_ldflags"; then 5731964c6fa1SRichard Henderson # In case ld does not support -Ttext-segment, edit the default linker 5732964c6fa1SRichard Henderson # script via sed to set the .text start addr. This is needed on FreeBSD 5733964c6fa1SRichard Henderson # at least. 573492fe2ba8SPeter Maydell if ! $ld --verbose >/dev/null 2>&1; then 573592fe2ba8SPeter Maydell error_exit \ 573692fe2ba8SPeter Maydell "We need to link the QEMU user mode binaries at a" \ 573792fe2ba8SPeter Maydell "specific text address. Unfortunately your linker" \ 573892fe2ba8SPeter Maydell "doesn't support either the -Ttext-segment option or" \ 573992fe2ba8SPeter Maydell "printing the default linker script with --verbose." \ 574092fe2ba8SPeter Maydell "If you don't want the user mode binaries, pass the" \ 574192fe2ba8SPeter Maydell "--disable-user option to configure." 574292fe2ba8SPeter Maydell fi 574392fe2ba8SPeter Maydell 5744964c6fa1SRichard Henderson $ld --verbose | sed \ 5745964c6fa1SRichard Henderson -e '1,/==================================================/d' \ 5746964c6fa1SRichard Henderson -e '/==================================================/,$d' \ 5747964c6fa1SRichard Henderson -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 5748964c6fa1SRichard Henderson -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 5749964c6fa1SRichard Henderson textseg_ldflags="-Wl,-T../config-host.ld" 5750964c6fa1SRichard Henderson fi 5751964c6fa1SRichard Henderson fi 5752964c6fa1SRichard Hendersonfi 5753964c6fa1SRichard Henderson 575411cde1c8SBruno Dominguez# Check that the C++ compiler exists and works with the C compiler. 575511cde1c8SBruno Dominguez# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added. 575611cde1c8SBruno Dominguezif has $cxx; then 575711cde1c8SBruno Dominguez cat > $TMPC <<EOF 575811cde1c8SBruno Dominguezint c_function(void); 575911cde1c8SBruno Dominguezint main(void) { return c_function(); } 576011cde1c8SBruno DominguezEOF 576111cde1c8SBruno Dominguez 576211cde1c8SBruno Dominguez compile_object 576311cde1c8SBruno Dominguez 576411cde1c8SBruno Dominguez cat > $TMPCXX <<EOF 576511cde1c8SBruno Dominguezextern "C" { 576611cde1c8SBruno Dominguez int c_function(void); 576711cde1c8SBruno Dominguez} 576811cde1c8SBruno Dominguezint c_function(void) { return 42; } 576911cde1c8SBruno DominguezEOF 577011cde1c8SBruno Dominguez 577111cde1c8SBruno Dominguez update_cxxflags 577211cde1c8SBruno Dominguez 577311cde1c8SBruno Dominguez if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then 577411cde1c8SBruno Dominguez # C++ compiler $cxx works ok with C compiler $cc 577511cde1c8SBruno Dominguez : 577611cde1c8SBruno Dominguez else 577711cde1c8SBruno Dominguez echo "C++ compiler $cxx does not work with C compiler $cc" 577811cde1c8SBruno Dominguez echo "Disabling C++ specific optional code" 577911cde1c8SBruno Dominguez cxx= 578011cde1c8SBruno Dominguez fi 578111cde1c8SBruno Dominguezelse 578211cde1c8SBruno Dominguez echo "No C++ compiler available; disabling C++ specific optional code" 578311cde1c8SBruno Dominguez cxx= 578411cde1c8SBruno Dominguezfi 578511cde1c8SBruno Dominguez 578602d34f62SCole Robinsonecho_version() { 578702d34f62SCole Robinson if test "$1" = "yes" ; then 578802d34f62SCole Robinson echo "($2)" 578902d34f62SCole Robinson fi 579002d34f62SCole Robinson} 579102d34f62SCole Robinson 579250e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 579350e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 57948a99e9a3SPhilippe Mathieu-DaudéQEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS" 579550e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 57965ca9388aSGerd Hoffmann 57977d13299dSbellardecho "Install prefix $prefix" 579889138857SStefan Weilecho "BIOS directory $(eval echo $qemu_datadir)" 57993d5eecabSGerd Hoffmannecho "firmware path $(eval echo $firmwarepath)" 580089138857SStefan Weilecho "binary directory $(eval echo $bindir)" 580189138857SStefan Weilecho "library directory $(eval echo $libdir)" 580289138857SStefan Weilecho "module directory $(eval echo $qemu_moddir)" 580389138857SStefan Weilecho "libexec directory $(eval echo $libexecdir)" 580489138857SStefan Weilecho "include directory $(eval echo $includedir)" 580589138857SStefan Weilecho "config directory $(eval echo $sysconfdir)" 580611d9f695Sbellardif test "$mingw32" = "no" ; then 580789138857SStefan Weilecho "local state directory $(eval echo $local_statedir)" 580889138857SStefan Weilecho "Manual directory $(eval echo $mandir)" 580943ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 58105a699bbbSLaszlo Ersekelse 58115a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 5812d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 581311d9f695Sbellardfi 58145a67135aSbellardecho "Source path $source_path" 5815cc84d63aSDaniel P. Berrangeecho "GIT binary $git" 5816aef45d51SDaniel P. Berrangeecho "GIT submodules $git_submodules" 58177d13299dSbellardecho "C compiler $cc" 581883469015Sbellardecho "Host C compiler $host_cc" 581983f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 58203c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 582145d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 58220c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 5823a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 58240c439cbfSJuan Quintelaecho "LDFLAGS $LDFLAGS" 58258a99e9a3SPhilippe Mathieu-Daudéecho "QEMU_LDFLAGS $QEMU_LDFLAGS" 58267d13299dSbellardecho "make $make" 58276a882643Spbrookecho "install $install" 5828c886edfbSBlue Swirlecho "python $python" 5829e2d8830eSBradif test "$slirp" = "yes" ; then 5830e2d8830eSBrad echo "smbd $smbd" 5831e2d8830eSBradfi 583217969268SFam Zhengecho "module support $modules" 5833a98fd896Sbellardecho "host CPU $cpu" 5834de83cd02Sbellardecho "host big endian $bigendian" 583597a847bcSbellardecho "target list $target_list" 58367d13299dSbellardecho "gprof enabled $gprof" 583703b4fe7dSaliguoriecho "sparse enabled $sparse" 58381625af87Saliguoriecho "strip binaries $strip_opt" 583905c2a3e7Sbellardecho "profiler $profiler" 584043ce4dfeSbellardecho "static build $static" 58415b0753e0Sbellardif test "$darwin" = "yes" ; then 58425b0753e0Sbellard echo "Cocoa support $cocoa" 58435b0753e0Sbellardfi 584489138857SStefan Weilecho "SDL support $sdl $(echo_version $sdl $sdlversion)" 584589138857SStefan Weilecho "GTK support $gtk $(echo_version $gtk $gtk_version)" 5846925a0400SGerd Hoffmannecho "GTK GL support $gtk_gl" 584789138857SStefan Weilecho "VTE support $vte $(echo_version $vte $vteversion)" 5848a1c5e949SDaniel P. Berrangeecho "TLS priority $tls_priority" 5849ddbb0d09SDaniel P. Berrangeecho "GNUTLS support $gnutls" 5850b917da4cSDaniel P. Berrangeecho "GNUTLS rnd $gnutls_rnd" 585191bfcdb0SDaniel P. Berrangeecho "libgcrypt $gcrypt" 585237788f25SDaniel P. Berrangeecho "libgcrypt kdf $gcrypt_kdf" 585389138857SStefan Weilecho "nettle $nettle $(echo_version $nettle $nettle_version)" 5854fff2f982SDaniel P. Berrangeecho "nettle kdf $nettle_kdf" 58559a2fd434SDaniel P. Berrangeecho "libtasn1 $tasn1" 58564d3b6f6eSbalrogecho "curses support $curses" 585747479c55SMarc-André Lureauecho "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)" 5858769ce76dSAlexander Grafecho "curl support $curl" 585967b915a5Sbellardecho "mingw32 support $mingw32" 58600c58ac1cSmalcecho "Audio drivers $audio_drv_list" 5861b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 5862b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 5863983eef5aSMeador Ingeecho "VirtFS support $virtfs" 5864fe8fc5aeSPaolo Bonziniecho "Multipath support $mpath" 5865821601eaSJes Sorensenecho "VNC support $vnc" 5866821601eaSJes Sorensenif test "$vnc" = "yes" ; then 58672f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 58682f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 5869efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 5870821601eaSJes Sorensenfi 58713142255cSblueswir1if test -n "$sparc_cpu"; then 58723142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 58733142255cSblueswir1fi 5874e37630caSaliguoriecho "xen support $xen" 58753996e85cSPaul Durrantif test "$xen" = "yes" ; then 58763996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 587764a7ad6fSIan Campbell echo "pv dom build $xen_pv_domain_build" 58783996e85cSPaul Durrantfi 58792e4d9fb1Saurel32echo "brlapi support $brlapi" 5880a20a6f46SJuan Quintelaecho "bluez support $bluez" 5881a25dba17SJuan Quintelaecho "Documentation $docs" 588240d6444eSAvi Kivityecho "PIE $pie" 58838a16d273Sthsecho "vde support $vde" 588458952137SVincenzo Maffioneecho "netmap support $netmap" 58855c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 5886758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 588777755340Sthsecho "Install blobs $blobs" 5888b31a0277SJuan Quintelaecho "KVM support $kvm" 5889b0cb0a66SVincent Palatinecho "HAX support $hax" 5890c97d6d2cSSergio Andres Gomez Del Realecho "HVF support $hvf" 5891d661d9a4SJustin Terry (VM)echo "WHPX support $whpx" 5892b3f6ea7eSPaolo Bonziniecho "TCG support $tcg" 5893b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes" ; then 5894b3f6ea7eSPaolo Bonzini echo "TCG debug enabled $debug_tcg" 58959195b2c2SStefan Weil echo "TCG interpreter $tcg_interpreter" 5896b3f6ea7eSPaolo Bonzinifi 58975a22ab71SYang Zhongecho "malloc trim support $malloc_trim" 5898b3f6ea7eSPaolo Bonziniecho "RDMA support $rdma" 5899f652e6afSaurel32echo "fdt support $fdt" 5900a40161cbSPaolo Bonziniecho "membarrier $membarrier" 5901ceb42de8Saliguoriecho "preadv support $preadv" 59025f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 5903e78815a5SAndreas Färberecho "madvise $madvise" 5904e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 59059bc5a719SAndreas Gustafssonecho "posix_memalign $posix_memalign" 590647e98658SCorey Bryantecho "libcap-ng support $cap_ng" 5907d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 5908042cea27SGongleiecho "vhost-crypto support $vhost_crypto" 59095e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 5910fc0b9b0eSStefan Hajnocziecho "vhost-vsock support $vhost_vsock" 5911e6a74868SMarc-André Lureauecho "vhost-user support $vhost_user" 59125b808275SLluís Vilanovaecho "Trace backends $trace_backends" 5913713572a7SMarc-André Lureauif have_backend "simple"; then 59149410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 5915e00e36fbSStefan Weilfi 591689138857SStefan Weilecho "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)" 5917f27aaf4bSChristian Brunnerecho "rbd support $rbd" 5918dce512deSChristoph Hellwigecho "xfsctl support $xfs" 59197b02f544SMarc-André Lureauecho "smartcard support $smartcard" 59202b2325ffSGerd Hoffmannecho "libusb $libusb" 592169354a83SHans de Goedeecho "usb net redir $usb_redir" 5922da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 5923014cb152SGerd Hoffmannecho "OpenGL dmabufs $opengl_dmabuf" 5924c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 59256542aa9cSPeter Lievenecho "libnfs support $libnfs" 5926d138cee9SMichael Rothecho "build guest agent $guest_agent" 5927d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 592850cbebb9SMichael Rothecho "QGA w32 disk info $guest_agent_ntddscsi" 59294c875d89SMichael Rothecho "QGA MSI support $guest_agent_msi" 5930f794573eSEduardo Otuboecho "seccomp support $seccomp" 59317c2acc70SPeter Maydellecho "coroutine backend $coroutine" 593270c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 59337d992e4dSPeter Lievenecho "debug stack usage $debug_stack_usage" 5934f0d92b56SLongpeng(Mike)echo "crypto afalg $crypto_afalg" 5935eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 59361d728c39SBlue Swirlecho "gcov $gcov_tool" 59371d728c39SBlue Swirlecho "gcov enabled $gcov" 5938ab214c29SStefan Bergerecho "TPM support $tpm" 59390a12ec87SRichard W.M. Jonesecho "libssh2 support $libssh2" 59403b8acc11SPaolo Bonziniecho "TPM passthrough $tpm_passthrough" 5941f4ede81eSAmarnath Valluriecho "TPM emulator $tpm_emulator" 59423556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 5943ed1701c6SDr. David Alan Gilbertecho "Live block migration $live_block_migration" 5944607dacd0Sqiaonuohanecho "lzo support $lzo" 5945607dacd0Sqiaonuohanecho "snappy support $snappy" 59466b383c08SPeter Wuecho "bzip2 support $bzip2" 5947a99d57bbSWanlong Gaoecho "NUMA host support $numa" 5948ed279a06SKlim Kireevecho "libxml2 $libxml2" 59492847b469SFam Zhengecho "tcmalloc support $tcmalloc" 59507b01cb97SAlexandre Derumierecho "jemalloc support $jemalloc" 595199f2dbd3SLiang Liecho "avx2 optimization $avx2_opt" 5952a6b1d4c0SChanglong Xieecho "replication support $replication" 5953da92c3ffSAshish Mittalecho "VxHS block device $vxhs" 59548ca80760SRichard Hendersonecho "capstone $capstone" 595551a12b51SAlex Bennéeecho "docker $docker" 595667b915a5Sbellard 59571ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then 595824b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 5959e8cd23deSbellardfi 596097a847bcSbellard 5961b7715af2SDaniel P. Berrangeif test "$gtkabi" = "2.0"; then 5962b7715af2SDaniel P. Berrange echo 5963b7715af2SDaniel P. Berrange echo "WARNING: Use of GTK 2.0 is deprecated and will be removed in" 5964b7715af2SDaniel P. Berrange echo "WARNING: future releases. Please switch to using GTK 3.0" 5965b7715af2SDaniel P. Berrangefi 5966b7715af2SDaniel P. Berrange 5967e52c6ba3SDaniel P. Berrangeif test "$sdlabi" = "1.2"; then 5968e52c6ba3SDaniel P. Berrange echo 5969e52c6ba3SDaniel P. Berrange echo "WARNING: Use of SDL 1.2 is deprecated and will be removed in" 5970e52c6ba3SDaniel P. Berrange echo "WARNING: future releases. Please switch to using SDL 2.0" 5971e52c6ba3SDaniel P. Berrangefi 5972e52c6ba3SDaniel P. Berrange 5973898be3e0SPeter Maydellif test "$supported_cpu" = "no"; then 5974898be3e0SPeter Maydell echo 5975898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!" 5976898be3e0SPeter Maydell echo 5977898be3e0SPeter Maydell echo "CPU host architecture $cpu support is not currently maintained." 5978898be3e0SPeter Maydell echo "The QEMU project intends to remove support for this host CPU in" 5979898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 5980898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 5981898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 5982898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 5983898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 5984898be3e0SPeter Maydellfi 5985898be3e0SPeter Maydell 5986898be3e0SPeter Maydellif test "$supported_os" = "no"; then 5987898be3e0SPeter Maydell echo 5988898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!" 5989898be3e0SPeter Maydell echo 5990c50126aaSPeter Maydell echo "Host OS $targetos support is not currently maintained." 5991c50126aaSPeter Maydell echo "The QEMU project intends to remove support for this host OS in" 5992898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 5993898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 5994898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 5995898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 5996898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 5997898be3e0SPeter Maydellfi 5998898be3e0SPeter Maydell 599998ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 600097a847bcSbellard 6001dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 6002dbd99ae3SStefan Weil 600398ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 600498ec69acSJuan Quintelaecho >> $config_host_mak 600598ec69acSJuan Quintela 6006e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 600799d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 600899d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 60093aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 60108bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 60110f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 601299d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 601399d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 601422d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 60159afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 60163d5eecabSGerd Hoffmannecho "qemu_firmwarepath=$firmwarepath" >> $config_host_mak 60179afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 6018e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 60195a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 6020785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 60215a699bbbSLaszlo Ersekfi 6022f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 6023834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 6024f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 6025cc84d63aSDaniel P. Berrangeecho "GIT=$git" >> $config_host_mak 6026aef45d51SDaniel P. Berrangeecho "GIT_SUBMODULES=$git_submodules" >> $config_host_mak 6027f62bbee5SDaniel P. Berrangeecho "GIT_UPDATE=$git_update" >> $config_host_mak 6028804edf29SJuan Quintela 602998ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 6030727e5283SPaolo Bonzini 6031f8393946Saurel32if test "$debug_tcg" = "yes" ; then 60322358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 6033f8393946Saurel32fi 60341625af87Saliguoriif test "$strip_opt" = "yes" ; then 603552ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 60361625af87Saliguorifi 60377d13299dSbellardif test "$bigendian" = "yes" ; then 6038e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 603997a847bcSbellardfi 604067b915a5Sbellardif test "$mingw32" = "yes" ; then 604198ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 604289138857SStefan Weil rc_version=$(cat $source_path/VERSION) 60439fe6de94SBlue Swirl version_major=${rc_version%%.*} 60449fe6de94SBlue Swirl rc_version=${rc_version#*.} 60459fe6de94SBlue Swirl version_minor=${rc_version%%.*} 60469fe6de94SBlue Swirl rc_version=${rc_version#*.} 60479fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 60489fe6de94SBlue Swirl version_micro=0 60499fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 60509fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 6051d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 6052d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 6053f33ca81fSMichael Roth echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 6054d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 6055d9840e25STomoki Sekiyama fi 605650cbebb9SMichael Roth if test "$guest_agent_ntddscsi" = "yes" ; then 605750cbebb9SMichael Roth echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak 605850cbebb9SMichael Roth fi 60591a34904eSMichael Roth if test "$guest_agent_msi" = "yes"; then 60609dacf32dSYossi Hindin echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 60619dacf32dSYossi Hindin echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 60629dacf32dSYossi Hindin echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 60639dacf32dSYossi Hindin echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 60649dacf32dSYossi Hindin echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 60659dacf32dSYossi Hindin echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 60669dacf32dSYossi Hindin echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 60679dacf32dSYossi Hindin fi 6068210fa556Spbrookelse 606935f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 6070210fa556Spbrookfi 6071128ab2ffSblueswir1 6072dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 6073dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 6074dffcb71cSMark McLoughlinfi 6075dffcb71cSMark McLoughlin 607683fb7adfSbellardif test "$darwin" = "yes" ; then 607798ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 607883fb7adfSbellardfi 6079b29fe3edSmalc 6080ec530c81Sbellardif test "$solaris" = "yes" ; then 608198ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 6082ec530c81Sbellardfi 6083179cf400SAndreas Färberif test "$haiku" = "yes" ; then 6084179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 6085179cf400SAndreas Färberfi 608697a847bcSbellardif test "$static" = "yes" ; then 608798ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 608897a847bcSbellardfi 60891ba16968SStefan Weilif test "$profiler" = "yes" ; then 60902358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 609105c2a3e7Sbellardfi 6092c20709aaSbellardif test "$slirp" = "yes" ; then 609398ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 6094e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 6095c20709aaSbellardfi 60968a16d273Sthsif test "$vde" = "yes" ; then 609798ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 6098e2ad6f16SFam Zheng echo "VDE_LIBS=$vde_libs" >> $config_host_mak 60998a16d273Sthsfi 610058952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 610158952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 610258952137SVincenzo Maffionefi 6103015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 6104015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 6105015a33bdSGongleifi 610647e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 610747e98658SCorey Bryant echo "CONFIG_LIBCAP=y" >> $config_host_mak 610847e98658SCorey Bryantfi 61092358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 61100c58ac1cSmalcfor drv in $audio_drv_list; do 61111ef1ec2aSGerd Hoffmann def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]') 6112ce3dc033SGerd Hoffmann case "$drv" in 6113051c7d5cSGerd Hoffmann alsa | oss | pa | sdl) 6114ce3dc033SGerd Hoffmann echo "$def=m" >> $config_host_mak ;; 6115ce3dc033SGerd Hoffmann *) 6116ce3dc033SGerd Hoffmann echo "$def=y" >> $config_host_mak ;; 6117ce3dc033SGerd Hoffmann esac 61180c58ac1cSmalcdone 6119b1149911SFam Zhengecho "ALSA_LIBS=$alsa_libs" >> $config_host_mak 6120b1149911SFam Zhengecho "PULSE_LIBS=$pulse_libs" >> $config_host_mak 6121b1149911SFam Zhengecho "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak 6122b1149911SFam Zhengecho "DSOUND_LIBS=$dsound_libs" >> $config_host_mak 6123b1149911SFam Zhengecho "OSS_LIBS=$oss_libs" >> $config_host_mak 612467f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then 612567f86e8eSJuan Quintela echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 612667f86e8eSJuan Quintelafi 6127d5631638Smalcif test "$audio_win_int" = "yes" ; then 6128d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 6129d5631638Smalcfi 6130b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 6131b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 6132821601eaSJes Sorensenif test "$vnc" = "yes" ; then 6133821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 6134821601eaSJes Sorensenfi 61352f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 613698ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 61372f9606b3Saliguorifi 6138821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 61392f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 61402f6f5c7aSCorentin Charyfi 6141821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 6142efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 6143efe556adSCorentin Charyfi 61446a021536SGerd Hoffmannif test "$xkbcommon" = "yes" ; then 61456a021536SGerd Hoffmann echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak 61466a021536SGerd Hoffmann echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak 61476a021536SGerd Hoffmannfi 614876655d6dSaliguoriif test "$fnmatch" = "yes" ; then 61492358a494SJuan Quintela echo "CONFIG_FNMATCH=y" >> $config_host_mak 615076655d6dSaliguorifi 6151dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 6152dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 6153dce512deSChristoph Hellwigfi 615489138857SStefan Weilqemu_version=$(head $source_path/VERSION) 615598ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 61562358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 615798ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 6158208ecb3eSFam Zhengecho "TARGET_LIST=$target_list" >> $config_host_mak 6159a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 616098ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 6161cc8ae6deSpbrookfi 616217969268SFam Zhengif test "$modules" = "yes"; then 6163e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 6164e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 616589138857SStefan Weil echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak 616617969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 616717969268SFam Zhengfi 61688781595bSGerd Hoffmannif test "$have_x11" = "yes" -a "$need_x11" = "yes"; then 61698781595bSGerd Hoffmann echo "CONFIG_X11=y" >> $config_host_mak 61708781595bSGerd Hoffmann echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak 61718781595bSGerd Hoffmann echo "X11_LIBS=$x11_libs" >> $config_host_mak 61728781595bSGerd Hoffmannfi 61731ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 617496400a14SGerd Hoffmann echo "CONFIG_SDL=m" >> $config_host_mak 6175a3f4d63dSCole Robinson echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 61768ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 61778ecc89f6SFam Zheng echo "SDL_LIBS=$sdl_libs" >> $config_host_mak 617849ecc3faSbellardfi 617949ecc3faSbellardif test "$cocoa" = "yes" ; then 618098ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 618149ecc3faSbellardfi 61824d3b6f6eSbalrogif test "$curses" = "yes" ; then 61832373f7d5SGerd Hoffmann echo "CONFIG_CURSES=m" >> $config_host_mak 61842373f7d5SGerd Hoffmann echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak 61852373f7d5SGerd Hoffmann echo "CURSES_LIBS=$curses_lib" >> $config_host_mak 6186ab4e5602SJan Kiszkafi 6187099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 61882358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 6189099d6b0fSRiku Voipiofi 619040ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 619140ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 619240ff6d7eSKevin Wolffi 61933ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 61942358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 61953ce34dfbSvibisreenivasanfi 6196c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 6197c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 6198c2882b96SRiku Voipiofi 6199751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then 6200751bcc39SMarc-André Lureau echo "CONFIG_MEMFD=y" >> $config_host_mak 6201751bcc39SMarc-André Lureaufi 6202d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 6203d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 6204d0927938SUlrich Hechtfi 62053d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 62063d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 62073d4fa43eSKusanagi Kouichifi 6208b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 6209b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 6210b953f075SDenis V. Lunevfi 6211ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 6212ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 6213ed911435SKevin Wolffi 6214c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 6215c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 6216c727f47dSPeter Maydellfi 6217dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 6218dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 6219dace20dcSPeter Maydellfi 6220d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 6221d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 6222d0927938SUlrich Hechtfi 62234e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 62244e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 62254e0c6529SAlex Blighfi 6226cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 6227cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 6228cd758dd0SAlex Blighfi 62293b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 62303b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 62313b6edd16SPeter Maydellfi 62323b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 62333b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 62343b6edd16SPeter Maydellfi 6235a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 6236a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 6237a8fd1abaSPeter Maydellfi 623851834341SRiku Voipioif test "$timerfd" = "yes" ; then 623951834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 624051834341SRiku Voipiofi 62419af5c906SRiku Voipioif test "$setns" = "yes" ; then 62429af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 62439af5c906SRiku Voipiofi 624438860a03SAleksandar Markovicif test "$clock_adjtime" = "yes" ; then 624538860a03SAleksandar Markovic echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak 624638860a03SAleksandar Markovicfi 62475a03cd00SAleksandar Markovicif test "$syncfs" = "yes" ; then 62485a03cd00SAleksandar Markovic echo "CONFIG_SYNCFS=y" >> $config_host_mak 62495a03cd00SAleksandar Markovicfi 62503b3f24adSaurel32if test "$inotify" = "yes" ; then 62512358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 62523b3f24adSaurel32fi 6253c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 6254c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 6255c05c7a73SRiku Voipiofi 6256401bc051SPeter Maydellif test "$sem_timedwait" = "yes" ; then 6257401bc051SPeter Maydell echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak 6258401bc051SPeter Maydellfi 62596ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 62606ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 62616ae9a1f4SJuan Quintelafi 62626ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 62636ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 62646ae9a1f4SJuan Quintelafi 6265769ce76dSAlexander Grafif test "$curl" = "yes" ; then 6266d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 6267b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 62686ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 6269769ce76dSAlexander Graffi 62702e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 627198ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 62728eca2889SFam Zheng echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak 62732e4d9fb1Saurel32fi 6274fb599c9aSbalrogif test "$bluez" = "yes" ; then 627598ec69acSJuan Quintela echo "CONFIG_BLUEZ=y" >> $config_host_mak 6276ef7635ecSJuan Quintela echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 6277fb599c9aSbalrogfi 6278d46f7c9eSDr. David Alan Gilbertif test "$glib_subprocess" = "yes" ; then 62799d41401bSMichael S. Tsirkin echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 62809d41401bSMichael S. Tsirkinfi 6281a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 6282e0fb129cSGerd Hoffmann echo "CONFIG_GTK=m" >> $config_host_mak 6283a3f4d63dSCole Robinson echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 6284a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 6285014cb152SGerd Hoffmann echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 6286925a0400SGerd Hoffmann if test "$gtk_gl" = "yes" ; then 6287925a0400SGerd Hoffmann echo "CONFIG_GTK_GL=y" >> $config_host_mak 6288925a0400SGerd Hoffmann fi 6289bbbf9bfbSStefan Weilfi 6290a1c5e949SDaniel P. Berrangeecho "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak 6291ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then 6292ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS=y" >> $config_host_mak 6293ddbb0d09SDaniel P. Berrangefi 6294b917da4cSDaniel P. Berrangeif test "$gnutls_rnd" = "yes" ; then 6295b917da4cSDaniel P. Berrange echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak 6296b917da4cSDaniel P. Berrangefi 629791bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then 629891bfcdb0SDaniel P. Berrange echo "CONFIG_GCRYPT=y" >> $config_host_mak 62991f923c70SLongpeng(Mike) if test "$gcrypt_hmac" = "yes" ; then 63001f923c70SLongpeng(Mike) echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak 63011f923c70SLongpeng(Mike) fi 630237788f25SDaniel P. Berrange if test "$gcrypt_kdf" = "yes" ; then 630337788f25SDaniel P. Berrange echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak 630437788f25SDaniel P. Berrange fi 630562893b67SDaniel P. Berrangefi 630691bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then 630791bfcdb0SDaniel P. Berrange echo "CONFIG_NETTLE=y" >> $config_host_mak 6308becaeb72SRadim Krčmář echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 6309fff2f982SDaniel P. Berrange if test "$nettle_kdf" = "yes" ; then 6310fff2f982SDaniel P. Berrange echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak 6311fff2f982SDaniel P. Berrange fi 6312ed754746SDaniel P. Berrangefi 63139a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then 63149a2fd434SDaniel P. Berrange echo "CONFIG_TASN1=y" >> $config_host_mak 63159a2fd434SDaniel P. Berrangefi 6316559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then 6317559607eaSDaniel P. Berrange echo "HAVE_IFADDRS_H=y" >> $config_host_mak 6318559607eaSDaniel P. Berrangefi 63196b39b063SEric Blakeif test "$have_broken_size_max" = "yes" ; then 63206b39b063SEric Blake echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak 63216b39b063SEric Blakefi 6322277abf15SJan Vesely 6323277abf15SJan Vesely# Work around a system header bug with some kernel/XFS header 6324277abf15SJan Vesely# versions where they both try to define 'struct fsxattr': 6325277abf15SJan Vesely# xfs headers will not try to redefine structs from linux headers 6326277abf15SJan Vesely# if this macro is set. 6327277abf15SJan Veselyif test "$have_fsxattr" = "yes" ; then 6328277abf15SJan Vesely echo "HAVE_FSXATTR=y" >> $config_host_mak 6329277abf15SJan Veselyfi 63301efad060SFam Zhengif test "$have_copy_file_range" = "yes" ; then 63311efad060SFam Zheng echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak 63321efad060SFam Zhengfi 6333bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 6334bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 6335a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 6336e0fb129cSGerd Hoffmann echo "VTE_LIBS=$vte_libs" >> $config_host_mak 6337a4ccabcfSAnthony Liguorifi 63389d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then 63399d9e1521SGerd Hoffmann echo "CONFIG_VIRGL=y" >> $config_host_mak 63409d9e1521SGerd Hoffmann echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 63419d9e1521SGerd Hoffmann echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 63429d9e1521SGerd Hoffmannfi 6343e37630caSaliguoriif test "$xen" = "yes" ; then 63446dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 6345d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 634664a7ad6fSIan Campbell if test "$xen_pv_domain_build" = "yes" ; then 634764a7ad6fSIan Campbell echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak 634864a7ad6fSIan Campbell fi 6349e37630caSaliguorifi 63505c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 63515c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 63525c6c3a6cSChristoph Hellwigfi 6353758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 6354758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 6355758e8e38SVenkateswararao Jujjuri (JV)fi 63564f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 63574f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 63584f26f2b6SAvi Kivityfi 6359983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 6360758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 6361758e8e38SVenkateswararao Jujjuri (JV)fi 6362fe8fc5aeSPaolo Bonziniif test "$mpath" = "yes" ; then 6363fe8fc5aeSPaolo Bonzini echo "CONFIG_MPATH=y" >> $config_host_mak 6364fe8fc5aeSPaolo Bonzinifi 63655e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 63665e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 63675e9be92dSNicholas Bellingerfi 6368e6a74868SMarc-André Lureauif test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then 636903ce5744SNikolay Nikolaev echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 637003ce5744SNikolay Nikolaevfi 6371042cea27SGongleiif test "$vhost_crypto" = "yes" ; then 6372042cea27SGonglei echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak 6373042cea27SGongleifi 6374fc0b9b0eSStefan Hajnocziif test "$vhost_vsock" = "yes" ; then 6375fc0b9b0eSStefan Hajnoczi echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak 6376fc0b9b0eSStefan Hajnoczifi 6377e6a74868SMarc-André Lureauif test "$vhost_user" = "yes" ; then 6378e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER=y" >> $config_host_mak 6379e6a74868SMarc-André Lureaufi 638077755340Sthsif test "$blobs" = "yes" ; then 638198ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 638277755340Sthsfi 6383bf9298b9Saliguoriif test "$iovec" = "yes" ; then 63842358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 6385bf9298b9Saliguorifi 6386ceb42de8Saliguoriif test "$preadv" = "yes" ; then 63872358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 6388ceb42de8Saliguorifi 6389e3971d61SPhilippe Mathieu-Daudéif test "$fdt" != "no" ; then 63903f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 6391f652e6afSaurel32fi 6392a40161cbSPaolo Bonziniif test "$membarrier" = "yes" ; then 6393a40161cbSPaolo Bonzini echo "CONFIG_MEMBARRIER=y" >> $config_host_mak 6394a40161cbSPaolo Bonzinifi 6395dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 6396dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 6397dcc38d1cSMarcelo Tosattifi 6398b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes"; then 6399b3f6ea7eSPaolo Bonzini echo "CONFIG_TCG=y" >> $config_host_mak 64009195b2c2SStefan Weil if test "$tcg_interpreter" = "yes" ; then 64019195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 64029195b2c2SStefan Weil fi 6403b3f6ea7eSPaolo Bonzinifi 64045f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 64055f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 64065f6b9e8fSBlue Swirlfi 6407e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 6408e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 6409e78815a5SAndreas Färberfi 6410e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 6411e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 6412e78815a5SAndreas Färberfi 64139bc5a719SAndreas Gustafssonif test "$posix_memalign" = "yes" ; then 64149bc5a719SAndreas Gustafsson echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak 64159bc5a719SAndreas Gustafssonfi 641697a847bcSbellard 6417cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 6418cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 6419cd4ec0b4SGerd Hoffmannfi 6420cd4ec0b4SGerd Hoffmann 64217b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then 64227b02f544SMarc-André Lureau echo "CONFIG_SMARTCARD=y" >> $config_host_mak 64237b62bf5aSFam Zheng echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak 64247b62bf5aSFam Zheng echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak 6425111a38b0SRobert Relyeafi 6426111a38b0SRobert Relyea 64272b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 64282b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 6429b878b652SFam Zheng echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak 6430b878b652SFam Zheng echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak 64312b2325ffSGerd Hoffmannfi 64322b2325ffSGerd Hoffmann 643369354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 643469354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 6435cc7923fcSFam Zheng echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak 6436cc7923fcSFam Zheng echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak 643769354a83SHans de Goedefi 643869354a83SHans de Goede 6439da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 6440da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 6441da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 6442014cb152SGerd Hoffmann if test "$opengl_dmabuf" = "yes" ; then 6443014cb152SGerd Hoffmann echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 6444014cb152SGerd Hoffmann fi 644520ff075bSMichael Wallefi 644620ff075bSMichael Walle 64475a22ab71SYang Zhongif test "$malloc_trim" = "yes" ; then 64485a22ab71SYang Zhong echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak 64495a22ab71SYang Zhongfi 64505a22ab71SYang Zhong 645199f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then 645299f2dbd3SLiang Li echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 645399f2dbd3SLiang Lifi 645499f2dbd3SLiang Li 6455607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 6456607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 6457607dacd0Sqiaonuohanfi 6458607dacd0Sqiaonuohan 6459607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 6460607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 6461607dacd0Sqiaonuohanfi 6462607dacd0Sqiaonuohan 64636b383c08SPeter Wuif test "$bzip2" = "yes" ; then 64646b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 64656b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 64666b383c08SPeter Wufi 64676b383c08SPeter Wu 6468c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 6469d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 64706ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 64716ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 6472c589b249SRonnie Sahlbergfi 6473c589b249SRonnie Sahlberg 64746542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 64754be4879fSColin Lord echo "CONFIG_LIBNFS=m" >> $config_host_mak 64764be4879fSColin Lord echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak 64776542aa9cSPeter Lievenfi 64786542aa9cSPeter Lieven 6479f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 6480f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 6481c3883e1fSFam Zheng echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak 6482c3883e1fSFam Zheng echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak 6483f794573eSEduardo Otubofi 6484f794573eSEduardo Otubo 648583fb7adfSbellard# XXX: suppress that 64867d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 64872358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 64887d3505c5Sbellardfi 64897d3505c5Sbellard 64904d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then 64914d9310f4SDaniel P. Berrange echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 64924d9310f4SDaniel P. Berrangefi 64933556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 64943556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 64953556c233SPaolo Bonzinifi 6496f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 6497d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 64986ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 64996ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 6500f27aaf4bSChristian Brunnerfi 650120ff6c80SAnthony Liguori 65027c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 650370c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 650470c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 650570c60c08SStefan Hajnoczielse 650670c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 650770c60c08SStefan Hajnoczifi 6508d0e2fce5SAneesh Kumar K.V 65097d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes" ; then 65107d992e4dSPeter Lieven echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak 65117d992e4dSPeter Lievenfi 65127d992e4dSPeter Lieven 6513f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" ; then 6514f0d92b56SLongpeng(Mike) echo "CONFIG_AF_ALG=y" >> $config_host_mak 6515f0d92b56SLongpeng(Mike)fi 6516f0d92b56SLongpeng(Mike) 6517d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 6518d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 6519d2042378SAneesh Kumar K.Vfi 6520d2042378SAneesh Kumar K.V 6521e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 6522e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 6523e06a765eSHarsh Prateek Borafi 6524e06a765eSHarsh Prateek Bora 6525cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 6526cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 652706d71fa1SPeter Maydellfi 652806d71fa1SPeter Maydell 65293f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 65303f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 65313f4349dcSKevin Wolffi 65323f4349dcSKevin Wolf 6533d83414e1SMarc-André Lureauif test "$have_asan_iface_fiber" = "yes" ; then 6534d83414e1SMarc-André Lureau echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak 6535d83414e1SMarc-André Lureaufi 6536d83414e1SMarc-André Lureau 65378ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 65388ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 65398ab1bf12SLuiz Capitulinofi 65408ab1bf12SLuiz Capitulino 654176a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 654276a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 654376a347e1SRichard Hendersonfi 654476a347e1SRichard Henderson 6545f540166bSRichard Hendersonif test "$int128" = "yes" ; then 6546f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 6547f540166bSRichard Hendersonfi 6548f540166bSRichard Henderson 65497ebee43eSRichard Hendersonif test "$atomic128" = "yes" ; then 65507ebee43eSRichard Henderson echo "CONFIG_ATOMIC128=y" >> $config_host_mak 65517ebee43eSRichard Hendersonfi 65527ebee43eSRichard Henderson 6553df79b996SRichard Hendersonif test "$atomic64" = "yes" ; then 6554df79b996SRichard Henderson echo "CONFIG_ATOMIC64=y" >> $config_host_mak 6555df79b996SRichard Hendersonfi 6556df79b996SRichard Henderson 6557db432672SRichard Hendersonif test "$vector16" = "yes" ; then 6558db432672SRichard Henderson echo "CONFIG_VECTOR16=y" >> $config_host_mak 6559db432672SRichard Hendersonfi 6560db432672SRichard Henderson 65611e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 65621e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 65631e6e9acaSRichard Hendersonfi 65641e6e9acaSRichard Henderson 6565eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 6566d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 65676ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 65686ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 6569eb100396SBharata B Raofi 6570eb100396SBharata B Rao 6571d85fa9ebSJeff Codyif test "$glusterfs_xlator_opt" = "yes" ; then 6572d85fa9ebSJeff Cody echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak 6573d85fa9ebSJeff Codyfi 6574d85fa9ebSJeff Cody 65750c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 65760c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 65770c14fb47SBharata B Raofi 65780c14fb47SBharata B Rao 6579df3a429aSNiels de Vosif test "$glusterfs_fallocate" = "yes" ; then 6580df3a429aSNiels de Vos echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak 6581df3a429aSNiels de Vosfi 6582df3a429aSNiels de Vos 65837c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 65847c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 65857c815372SBharata B Raofi 65867c815372SBharata B Rao 65870a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then 6588d3399d7cSFam Zheng echo "CONFIG_LIBSSH2=m" >> $config_host_mak 65896ebc91e5SFam Zheng echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 65906ebc91e5SFam Zheng echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 65910a12ec87SRichard W.M. Jonesfi 65920a12ec87SRichard W.M. Jones 6593ed1701c6SDr. David Alan Gilbertif test "$live_block_migration" = "yes" ; then 6594ed1701c6SDr. David Alan Gilbert echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak 6595ed1701c6SDr. David Alan Gilbertfi 6596ed1701c6SDr. David Alan Gilbert 65973b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 65983b8acc11SPaolo Bonzini echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 6599f4ede81eSAmarnath Valluri # TPM passthrough support? 66003b8acc11SPaolo Bonzini if test "$tpm_passthrough" = "yes"; then 66013b8acc11SPaolo Bonzini echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 66023b8acc11SPaolo Bonzini fi 6603f4ede81eSAmarnath Valluri # TPM emulator support? 6604f4ede81eSAmarnath Valluri if test "$tpm_emulator" = "yes"; then 6605f4ede81eSAmarnath Valluri echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak 6606f4ede81eSAmarnath Valluri fi 66073b8acc11SPaolo Bonzinifi 66083b8acc11SPaolo Bonzini 66095b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 66105b808275SLluís Vilanovaif have_backend "nop"; then 66116d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 661222890ab5SPrerna Saxenafi 66135b808275SLluís Vilanovaif have_backend "simple"; then 66146d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 66156d8a764eSLluís # Set the appropriate trace file. 6616953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 66179410b56cSPrerna Saxenafi 6618ed7f5f1dSPaolo Bonziniif have_backend "log"; then 6619ed7f5f1dSPaolo Bonzini echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 66206d8a764eSLluísfi 66215b808275SLluís Vilanovaif have_backend "ust"; then 66226d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 66236d8a764eSLluísfi 66245b808275SLluís Vilanovaif have_backend "dtrace"; then 66256d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 66266d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 66276d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 66286d8a764eSLluís fi 6629c276b17dSDaniel P. Berrangefi 66305b808275SLluís Vilanovaif have_backend "ftrace"; then 6631781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 6632781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 6633781e9545SEiichi Tsukata else 663421684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 6635781e9545SEiichi Tsukata fi 6636781e9545SEiichi Tsukatafi 66370a852417SPaul Durrantif have_backend "syslog"; then 66380a852417SPaul Durrant if test "$posix_syslog" = "yes" ; then 66390a852417SPaul Durrant echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak 66400a852417SPaul Durrant else 66410a852417SPaul Durrant feature_not_found "syslog(trace backend)" "syslog not available" 66420a852417SPaul Durrant fi 66430a852417SPaul Durrantfi 66449410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 66459410b56cSPrerna Saxena 66462da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 66472da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 6648392fb643SFam Zheng echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak 66492da776dbSMichael R. Hinesfi 66502da776dbSMichael R. Hines 6651575b22b1SLaurent Vivierif test "$have_rtnetlink" = "yes" ; then 6652575b22b1SLaurent Vivier echo "CONFIG_RTNETLINK=y" >> $config_host_mak 6653575b22b1SLaurent Vivierfi 6654575b22b1SLaurent Vivier 6655ed279a06SKlim Kireevif test "$libxml2" = "yes" ; then 6656ed279a06SKlim Kireev echo "CONFIG_LIBXML2=y" >> $config_host_mak 6657ed279a06SKlim Kireev echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak 6658ed279a06SKlim Kireev echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak 6659ed279a06SKlim Kireevfi 6660ed279a06SKlim Kireev 6661a6b1d4c0SChanglong Xieif test "$replication" = "yes" ; then 6662a6b1d4c0SChanglong Xie echo "CONFIG_REPLICATION=y" >> $config_host_mak 6663a6b1d4c0SChanglong Xiefi 6664a6b1d4c0SChanglong Xie 66656a02c806SStefan Hajnocziif test "$have_af_vsock" = "yes" ; then 66666a02c806SStefan Hajnoczi echo "CONFIG_AF_VSOCK=y" >> $config_host_mak 66676a02c806SStefan Hajnoczifi 66686a02c806SStefan Hajnoczi 66694d04351fSChristopher Covingtonif test "$have_sysmacros" = "yes" ; then 66704d04351fSChristopher Covington echo "CONFIG_SYSMACROS=y" >> $config_host_mak 66714d04351fSChristopher Covingtonfi 66724d04351fSChristopher Covington 667349e00a18SAndreas Grapentinif test "$have_static_assert" = "yes" ; then 667449e00a18SAndreas Grapentin echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak 667549e00a18SAndreas Grapentinfi 667649e00a18SAndreas Grapentin 6677e674605fSTomáš Golembiovskýif test "$have_utmpx" = "yes" ; then 6678e674605fSTomáš Golembiovský echo "HAVE_UTMPX=y" >> $config_host_mak 6679e674605fSTomáš Golembiovskýfi 6680e674605fSTomáš Golembiovský 6681e0580342SKamil Rytarowskiif test "$ivshmem" = "yes" ; then 6682e0580342SKamil Rytarowski echo "CONFIG_IVSHMEM=y" >> $config_host_mak 6683e0580342SKamil Rytarowskifi 6684e219c499SRichard Hendersonif test "$capstone" != "no" ; then 66858ca80760SRichard Henderson echo "CONFIG_CAPSTONE=y" >> $config_host_mak 66868ca80760SRichard Hendersonfi 6687e0580342SKamil Rytarowski 66885c312079SDr. David Alan Gilbert# Hold two types of flag: 66895c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 66905c312079SDr. David Alan Gilbert# a thread we have a handle to 66915c312079SDr. David Alan Gilbert# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 66925c312079SDr. David Alan Gilbert# platform 66935c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then 66945c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 66955c312079SDr. David Alan Gilbert echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 66965c312079SDr. David Alan Gilbertfi 66975c312079SDr. David Alan Gilbert 6698da92c3ffSAshish Mittalif test "$vxhs" = "yes" ; then 6699da92c3ffSAshish Mittal echo "CONFIG_VXHS=y" >> $config_host_mak 6700da92c3ffSAshish Mittal echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak 6701da92c3ffSAshish Mittalfi 6702da92c3ffSAshish Mittal 67035b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 67049edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 67055b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 67069edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 67075b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 67089edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 6709c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 67109edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 671140d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 67129edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 67135b5e3037SPaolo Bonzinielse 67149edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 67155b5e3037SPaolo Bonzinifi 67169edc19c9SMichael S. TsirkinQEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg $QEMU_INCLUDES" 67175b5e3037SPaolo Bonzini 671898ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 671998ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 6720804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 6721804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 67221901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 67231901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 67241901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 672521655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 6726c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 6727804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 6728a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 6729a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 6730a31a8642SMichael S. Tsirkinfi 6731804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 673283f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 67333c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 6734804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 673545d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 6736cdbd727cSRichard Hendersonecho "AS=$as" >> $config_host_mak 67375f6f0e27SRichard Hendersonecho "CCAS=$ccas" >> $config_host_mak 67383dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 6739804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 6740804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 67419f81aeb5SAlistair Francisecho "RANLIB=$ranlib" >> $config_host_mak 67424852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 67439fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 6744e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 674546eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 6746a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 674711cde1c8SBruno Dominguezecho "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak 6748f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 6749e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 6750e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 675180fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 67522944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 6753e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 6754e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 6755e39f0062SPaolo Bonzinifi 675642da6041SGerd Hoffmannif test "$cross_prefix" != ""; then 675742da6041SGerd Hoffmann echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 675842da6041SGerd Hoffmannelse 675942da6041SGerd Hoffmann echo "AUTOCONF_HOST := " >> $config_host_mak 676042da6041SGerd Hoffmannfi 6761e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak 676246eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 67638a99e9a3SPhilippe Mathieu-Daudéecho "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak 67646969ec6cSJames Clarkeecho "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak 6765e57218b6SPeter Maydellecho "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak 676673da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 67673e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 6768409437e1SDaniel P. Berrangeecho "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak 6769804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 677017969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 677117969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 6772957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 677390246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 677490246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 677594dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 6776cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 67771d728c39SBlue Swirlif test "$gcov" = "yes" ; then 67781d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 67791d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 67801d728c39SBlue Swirlfi 6781804edf29SJuan Quintela 678251a12b51SAlex Bennéeif test "$docker" != "no"; then 678351a12b51SAlex Bennée echo "HAVE_USER_DOCKER=y" >> $config_host_mak 678451a12b51SAlex Bennéefi 678551a12b51SAlex Bennée 67866efd7517SPeter Maydell# use included Linux headers 67876efd7517SPeter Maydellif test "$linux" = "yes" ; then 6788a307beb6SAndreas Färber mkdir -p linux-headers 67896efd7517SPeter Maydell case "$cpu" in 6790c72b26ecSRichard Henderson i386|x86_64|x32) 679108312a63SPeter Maydell linux_arch=x86 67926efd7517SPeter Maydell ;; 67936efd7517SPeter Maydell ppcemb|ppc|ppc64) 679408312a63SPeter Maydell linux_arch=powerpc 67956efd7517SPeter Maydell ;; 67966efd7517SPeter Maydell s390x) 679708312a63SPeter Maydell linux_arch=s390 679808312a63SPeter Maydell ;; 67991f080313SClaudio Fontana aarch64) 68001f080313SClaudio Fontana linux_arch=arm64 68011f080313SClaudio Fontana ;; 6802222e7d11SSanjay Lal mips64) 6803222e7d11SSanjay Lal linux_arch=mips 6804222e7d11SSanjay Lal ;; 680508312a63SPeter Maydell *) 680608312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 680708312a63SPeter Maydell linux_arch="$cpu" 68086efd7517SPeter Maydell ;; 68096efd7517SPeter Maydell esac 681008312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 681108312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 681208312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 681308312a63SPeter Maydell fi 68146efd7517SPeter Maydellfi 68156efd7517SPeter Maydell 681697a847bcSbellardfor target in $target_list; do 681797a847bcSbellardtarget_dir="$target" 681825be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 681989138857SStefan Weiltarget_name=$(echo $target | cut -d '-' -f 1) 682097a847bcSbellardtarget_bigendian="no" 68211f3d3c8fSJuan Quintela 6822c1799a84SPaolo Bonzinicase "$target_name" in 6823722dd7beSMichael Weiser armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 6824ea2d6a39SJuan Quintela target_bigendian=yes 6825ea2d6a39SJuan Quintela ;; 6826ea2d6a39SJuan Quintelaesac 682797a847bcSbellardtarget_softmmu="no" 6828997344f3Sbellardtarget_user_only="no" 6829831b7825Sthstarget_linux_user="no" 683084778508Sblueswir1target_bsd_user="no" 68319e407a85Spbrookcase "$target" in 6832c1799a84SPaolo Bonzini ${target_name}-softmmu) 68339e407a85Spbrook target_softmmu="yes" 68349e407a85Spbrook ;; 6835c1799a84SPaolo Bonzini ${target_name}-linux-user) 68369e407a85Spbrook target_user_only="yes" 68379e407a85Spbrook target_linux_user="yes" 68389e407a85Spbrook ;; 6839c1799a84SPaolo Bonzini ${target_name}-bsd-user) 684084778508Sblueswir1 target_user_only="yes" 684184778508Sblueswir1 target_bsd_user="yes" 684284778508Sblueswir1 ;; 68439e407a85Spbrook *) 684476ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 68459e407a85Spbrook exit 1 68469e407a85Spbrook ;; 68479e407a85Spbrookesac 6848831b7825Sths 6849d75402b5SAlex Bennéetarget_compiler="" 6850d75402b5SAlex Bennéetarget_compiler_static="" 6851*716a507cSAlex Bennéetarget_compiler_cflags="" 6852d75402b5SAlex Bennée 685397a847bcSbellardmkdir -p $target_dir 685425be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 685597a847bcSbellard 6856e5fe0c52Spbrookbflt="no" 6857ca759f9eSAlex Bennéemttcg="no" 685889138857SStefan Weilinterp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g") 685956aebc89Spbrookgdb_xml_files="" 68607ba1e619Saliguori 6861c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 68626acff7daSJuan QuintelaTARGET_BASE_ARCH="" 6863e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 6864e73aae67SJuan Quintela 6865c1799a84SPaolo Bonzinicase "$target_name" in 68662408a527Saurel32 i386) 6867b8158192SAbdallah Bouassida gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml" 6868d75402b5SAlex Bennée target_compiler=$cross_cc_i386 6869*716a507cSAlex Bennée target_compiler_cflags=$cross_cc_ccflags_i386 68702408a527Saurel32 ;; 68712408a527Saurel32 x86_64) 68726acff7daSJuan Quintela TARGET_BASE_ARCH=i386 6873b8158192SAbdallah Bouassida gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml" 6874d75402b5SAlex Bennée target_compiler=$cross_cc_x86_64 68752408a527Saurel32 ;; 68762408a527Saurel32 alpha) 68775ee4f3c2SRichard Henderson mttcg="yes" 6878d75402b5SAlex Bennée target_compiler=$cross_cc_alpha 68792408a527Saurel32 ;; 68802408a527Saurel32 arm|armeb) 6881b498c8a0SJuan Quintela TARGET_ARCH=arm 6882e5fe0c52Spbrook bflt="yes" 6883ca759f9eSAlex Bennée mttcg="yes" 688456aebc89Spbrook gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 6885d75402b5SAlex Bennée target_compiler=$cross_cc_arm 68862408a527Saurel32 ;; 6887722dd7beSMichael Weiser aarch64|aarch64_be) 6888722dd7beSMichael Weiser TARGET_ARCH=aarch64 68896a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 68906a49fa95SAlexander Graf bflt="yes" 6891ca759f9eSAlex Bennée mttcg="yes" 68928f95ce2eSPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 6893d75402b5SAlex Bennée target_compiler=$cross_cc_aarch64 68946a49fa95SAlexander Graf ;; 68952408a527Saurel32 cris) 6896d75402b5SAlex Bennée target_compiler=$cross_cc_cris 68972408a527Saurel32 ;; 689861766fe9SRichard Henderson hppa) 68997b93dab5SRichard Henderson mttcg="yes" 6900d75402b5SAlex Bennée target_compiler=$cross_cc_hppa 690161766fe9SRichard Henderson ;; 6902613a22c9SMichael Walle lm32) 6903d75402b5SAlex Bennée target_compiler=$cross_cc_lm32 6904613a22c9SMichael Walle ;; 69052408a527Saurel32 m68k) 69060938cda5Saurel32 bflt="yes" 69075a4526b2SLaurent Vivier gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml" 6908d75402b5SAlex Bennée target_compiler=$cross_cc_m68k 69092408a527Saurel32 ;; 6910877fdc12SEdgar E. Iglesias microblaze|microblazeel) 6911877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 691272b675caSEdgar E. Iglesias bflt="yes" 6913be73ef64SEdgar E. Iglesias echo "TARGET_ABI32=y" >> $config_target_mak 6914d75402b5SAlex Bennée target_compiler=$cross_cc_microblaze 691572b675caSEdgar E. Iglesias ;; 69162408a527Saurel32 mips|mipsel) 6917b498c8a0SJuan Quintela TARGET_ARCH=mips 6918d75402b5SAlex Bennée target_compiler=$cross_cc_mips 691925be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 69202408a527Saurel32 ;; 69212408a527Saurel32 mipsn32|mipsn32el) 6922597e2cecSRichard Henderson TARGET_ARCH=mips64 69236acff7daSJuan Quintela TARGET_BASE_ARCH=mips 6924d75402b5SAlex Bennée target_compiler=$cross_cc_mipsn32 692525be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 6926597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 69272408a527Saurel32 ;; 69282408a527Saurel32 mips64|mips64el) 6929b498c8a0SJuan Quintela TARGET_ARCH=mips64 69306acff7daSJuan Quintela TARGET_BASE_ARCH=mips 6931d75402b5SAlex Bennée target_compiler=$cross_cc_mips64 693225be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 69332408a527Saurel32 ;; 6934d15a9c23SAnthony Green moxie) 6935d75402b5SAlex Bennée target_compiler=$cross_cc_moxie 6936d15a9c23SAnthony Green ;; 6937e671711cSMarek Vasut nios2) 6938d75402b5SAlex Bennée target_compiler=$cross_cc_nios2 6939e671711cSMarek Vasut ;; 69404a09d0bbSRichard Henderson or1k) 6941d75402b5SAlex Bennée target_compiler=$cross_cc_or1k 6942e67db06eSJia Liu TARGET_ARCH=openrisc 6943e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 6944e67db06eSJia Liu ;; 69452408a527Saurel32 ppc) 6946c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 6947d75402b5SAlex Bennée target_compiler=$cross_cc_powerpc 69482408a527Saurel32 ;; 69492408a527Saurel32 ppcemb) 69506acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6951e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 6952c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 6953d75402b5SAlex Bennée target_compiler=$cross_cc_ppcemb 69542408a527Saurel32 ;; 69552408a527Saurel32 ppc64) 69566acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6957e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 6958f0b0685dSNikunj A Dadhania mttcg=yes 69591438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 6960d75402b5SAlex Bennée target_compiler=$cross_cc_ppc64 69612408a527Saurel32 ;; 69629c35126cSDoug Kwan ppc64le) 69639c35126cSDoug Kwan TARGET_ARCH=ppc64 69649c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 69659c35126cSDoug Kwan TARGET_ABI_DIR=ppc 6966f0b0685dSNikunj A Dadhania mttcg=yes 69671438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 6968d75402b5SAlex Bennée target_compiler=$cross_cc_ppc64le 69699c35126cSDoug Kwan ;; 69702408a527Saurel32 ppc64abi32) 6971b498c8a0SJuan Quintela TARGET_ARCH=ppc64 69726acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6973e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 697425be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 69751438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 6976d75402b5SAlex Bennée target_compiler=$cross_cc_ppc64abi32 69772408a527Saurel32 ;; 697825fa194bSMichael Clark riscv32) 697925fa194bSMichael Clark TARGET_BASE_ARCH=riscv 698025fa194bSMichael Clark TARGET_ABI_DIR=riscv 698125fa194bSMichael Clark mttcg=yes 6982d75402b5SAlex Bennée target_compiler=$cross_cc_riscv32 698325fa194bSMichael Clark ;; 698425fa194bSMichael Clark riscv64) 698525fa194bSMichael Clark TARGET_BASE_ARCH=riscv 698625fa194bSMichael Clark TARGET_ABI_DIR=riscv 698725fa194bSMichael Clark mttcg=yes 6988d75402b5SAlex Bennée target_compiler=$cross_cc_riscv64 698925fa194bSMichael Clark ;; 69902408a527Saurel32 sh4|sh4eb) 6991b498c8a0SJuan Quintela TARGET_ARCH=sh4 69924dbed897Spbrook bflt="yes" 6993d75402b5SAlex Bennée target_compiler=$cross_cc_sh4 69942408a527Saurel32 ;; 69952408a527Saurel32 sparc) 6996d75402b5SAlex Bennée target_compiler=$cross_cc_sparc 69972408a527Saurel32 ;; 69982408a527Saurel32 sparc64) 69996acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 7000d75402b5SAlex Bennée target_compiler=$cross_cc_sparc64 70012408a527Saurel32 ;; 70022408a527Saurel32 sparc32plus) 7003b498c8a0SJuan Quintela TARGET_ARCH=sparc64 70046acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 7005e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 7006d75402b5SAlex Bennée target_compiler=$cross_cc_sparc32plus 700725be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 70082408a527Saurel32 ;; 700924e804ecSAlexander Graf s390x) 701063685bc4SDavid Hildenbrand mttcg=yes 701186158a2aSChristian Borntraeger gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml" 7012d75402b5SAlex Bennée target_compiler=$cross_cc_s390x 701324e804ecSAlexander Graf ;; 7014444e06b1SChen Gang tilegx) 7015d75402b5SAlex Bennée target_compiler=$cross_cc_tilegx 7016444e06b1SChen Gang ;; 70175ecaa4edSPeter Crosthwaite tricore) 7018d75402b5SAlex Bennée target_compiler=$cross_cc_tricore 70195ecaa4edSPeter Crosthwaite ;; 7020d2fbca94SGuan Xuetao unicore32) 7021d75402b5SAlex Bennée target_compiler=$cross_cc_unicore32 7022d2fbca94SGuan Xuetao ;; 7023cfa550c6SMax Filippov xtensa|xtensaeb) 7024cfa550c6SMax Filippov TARGET_ARCH=xtensa 70259fb40342SMax Filippov mttcg="yes" 7026d75402b5SAlex Bennée target_compiler=$cross_cc_xtensa 7027cfa550c6SMax Filippov ;; 70282408a527Saurel32 *) 702976ad07a4SPeter Maydell error_exit "Unsupported target CPU" 70302408a527Saurel32 ;; 70312408a527Saurel32esac 70325e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 70335e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 70345e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 70355e8861a0SPaolo Bonzinifi 70365e8861a0SPaolo Bonzini 7037d75402b5SAlex Bennée# Do we have a cross compiler for this target? 7038d75402b5SAlex Bennéeif has $target_compiler; then 7039d75402b5SAlex Bennée 7040d75402b5SAlex Bennée write_c_skeleton 7041d75402b5SAlex Bennée 7042*716a507cSAlex Bennée if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC -static ; then 7043d75402b5SAlex Bennée # For host systems we might get away with building without -static 7044*716a507cSAlex Bennée if ! do_compiler "$target_compiler" $target_compiler_cflags -o $TMPE $TMPC ; then 7045d75402b5SAlex Bennée target_compiler="" 7046d75402b5SAlex Bennée else 7047d75402b5SAlex Bennée enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'" 7048d75402b5SAlex Bennée target_compiler_static="n" 7049d75402b5SAlex Bennée fi 7050d75402b5SAlex Bennée else 7051d75402b5SAlex Bennée enabled_cross_compilers="${enabled_cross_compilers} '${target_compiler}'" 7052d75402b5SAlex Bennée target_compiler_static="y" 7053d75402b5SAlex Bennée fi 7054d75402b5SAlex Bennéeelse 7055d75402b5SAlex Bennée target_compiler="" 7056d75402b5SAlex Bennéefi 7057d75402b5SAlex Bennée 70585e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 70595e8861a0SPaolo Bonzini 706099afc91dSDaniel P. Berrangeupper() { 706199afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 706299afc91dSDaniel P. Berrange} 706399afc91dSDaniel P. Berrange 706489138857SStefan Weiltarget_arch_name="$(upper $TARGET_ARCH)" 706525be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 7066c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 706725be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 7068e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 7069e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 7070e6e91b9cSJuan Quintelafi 707125be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 7072adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 7073adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 7074adfc3e91SStacey Sonfi 70753b6b7550SPaolo Bonzini 70763b6b7550SPaolo Bonziniif supported_xen_target $target; then 707725be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 7078eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 7079eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 7080eb6fda0fSAnthony PERARD fi 7081432d268cSJun Nakajimafi 70823b6b7550SPaolo Bonziniif supported_kvm_target $target; then 708325be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 70841ba16968SStefan Weil if test "$vhost_net" = "yes" ; then 7085d5970055SMichael S. Tsirkin echo "CONFIG_VHOST_NET=y" >> $config_target_mak 7086e6a74868SMarc-André Lureau if test "$vhost_user" = "yes" ; then 7087e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak 7088e6a74868SMarc-André Lureau fi 7089d5970055SMichael S. Tsirkin fi 7090c59249f9SJuan Quintelafi 70913b6b7550SPaolo Bonziniif supported_hax_target $target; then 7092b0cb0a66SVincent Palatin echo "CONFIG_HAX=y" >> $config_target_mak 7093b0cb0a66SVincent Palatinfi 7094c97d6d2cSSergio Andres Gomez Del Realif supported_hvf_target $target; then 7095c97d6d2cSSergio Andres Gomez Del Real echo "CONFIG_HVF=y" >> $config_target_mak 7096c97d6d2cSSergio Andres Gomez Del Realfi 7097d661d9a4SJustin Terry (VM)if supported_whpx_target $target; then 7098d661d9a4SJustin Terry (VM) echo "CONFIG_WHPX=y" >> $config_target_mak 7099d661d9a4SJustin Terry (VM)fi 7100de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 710125be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 710297a847bcSbellardfi 710397a847bcSbellardif test "$target_softmmu" = "yes" ; then 710425be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 7105ca759f9eSAlex Bennée if test "$mttcg" = "yes" ; then 7106ca759f9eSAlex Bennée echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak 7107ca759f9eSAlex Bennée fi 7108de83cd02Sbellardfi 7109997344f3Sbellardif test "$target_user_only" = "yes" ; then 711025be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 7111a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 7112997344f3Sbellardfi 7113831b7825Sthsif test "$target_linux_user" = "yes" ; then 711425be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 7115831b7825Sthsfi 711656aebc89Spbrooklist="" 711756aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 711856aebc89Spbrook for x in $gdb_xml_files; do 711956aebc89Spbrook list="$list $source_path/gdb-xml/$x" 712056aebc89Spbrook done 712125be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 71223d0f1517SJuan Quintelafi 7123de83cd02Sbellard 7124e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 712525be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 7126e5fe0c52Spbrookfi 712784778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 712825be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 712984778508Sblueswir1fi 71305b0753e0Sbellard 7131d75402b5SAlex Bennéeif test -n "$target_compiler"; then 7132d75402b5SAlex Bennée echo "CROSS_CC_GUEST=\"$target_compiler\"" >> $config_target_mak 7133d75402b5SAlex Bennée 7134d75402b5SAlex Bennée if test -n "$target_compiler_static"; then 7135d75402b5SAlex Bennée echo "CROSS_CC_GUEST_STATIC=$target_compiler_static" >> $config_target_mak 7136d75402b5SAlex Bennée fi 7137*716a507cSAlex Bennée 7138*716a507cSAlex Bennée if test -n "$target_compiler_cflags"; then 7139*716a507cSAlex Bennée echo "CROSS_CC_GUEST_CFLAGS=$target_compiler_cflags" >> $config_target_mak 7140d75402b5SAlex Bennée fi 7141*716a507cSAlex Bennéefi 7142*716a507cSAlex Bennée 7143d75402b5SAlex Bennée 71444afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets 7145fa282484SJuan Quintela 71464afddb55SJuan Quintelacflags="" 7147fa282484SJuan Quintelaldflags="" 71489b8e111fSJuan Quintela 7149c765fcacSPeter Crosthwaitedisas_config() { 7150c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> $config_target_mak 7151c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 7152c765fcacSPeter Crosthwaite} 7153c765fcacSPeter Crosthwaite 715464656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 715564656024SJuan Quintela case "$i" in 715664656024SJuan Quintela alpha) 7157c765fcacSPeter Crosthwaite disas_config "ALPHA" 715864656024SJuan Quintela ;; 715982295d8aSRichard Henderson aarch64) 716082295d8aSRichard Henderson if test -n "${cxx}"; then 7161c765fcacSPeter Crosthwaite disas_config "ARM_A64" 716282295d8aSRichard Henderson fi 716382295d8aSRichard Henderson ;; 716464656024SJuan Quintela arm) 7165c765fcacSPeter Crosthwaite disas_config "ARM" 7166999b53ecSClaudio Fontana if test -n "${cxx}"; then 7167c765fcacSPeter Crosthwaite disas_config "ARM_A64" 7168999b53ecSClaudio Fontana fi 716964656024SJuan Quintela ;; 717064656024SJuan Quintela cris) 7171c765fcacSPeter Crosthwaite disas_config "CRIS" 717264656024SJuan Quintela ;; 7173429b31a2SRichard Henderson hppa) 7174429b31a2SRichard Henderson disas_config "HPPA" 7175429b31a2SRichard Henderson ;; 7176c72b26ecSRichard Henderson i386|x86_64|x32) 7177c765fcacSPeter Crosthwaite disas_config "I386" 717864656024SJuan Quintela ;; 717979368f49SMichael Walle lm32) 7180c765fcacSPeter Crosthwaite disas_config "LM32" 718179368f49SMichael Walle ;; 718264656024SJuan Quintela m68k) 7183c765fcacSPeter Crosthwaite disas_config "M68K" 718464656024SJuan Quintela ;; 7185877fdc12SEdgar E. Iglesias microblaze*) 7186c765fcacSPeter Crosthwaite disas_config "MICROBLAZE" 718764656024SJuan Quintela ;; 718864656024SJuan Quintela mips*) 7189c765fcacSPeter Crosthwaite disas_config "MIPS" 719064656024SJuan Quintela ;; 7191d15a9c23SAnthony Green moxie*) 7192c765fcacSPeter Crosthwaite disas_config "MOXIE" 7193d15a9c23SAnthony Green ;; 7194e671711cSMarek Vasut nios2) 7195e671711cSMarek Vasut disas_config "NIOS2" 7196e671711cSMarek Vasut ;; 71974a09d0bbSRichard Henderson or1k) 7198c765fcacSPeter Crosthwaite disas_config "OPENRISC" 7199e67db06eSJia Liu ;; 720064656024SJuan Quintela ppc*) 7201c765fcacSPeter Crosthwaite disas_config "PPC" 720264656024SJuan Quintela ;; 720325fa194bSMichael Clark riscv) 720425fa194bSMichael Clark disas_config "RISCV" 720525fa194bSMichael Clark ;; 720624e804ecSAlexander Graf s390*) 7207c765fcacSPeter Crosthwaite disas_config "S390" 720864656024SJuan Quintela ;; 720964656024SJuan Quintela sh4) 7210c765fcacSPeter Crosthwaite disas_config "SH4" 721164656024SJuan Quintela ;; 721264656024SJuan Quintela sparc*) 7213c765fcacSPeter Crosthwaite disas_config "SPARC" 721464656024SJuan Quintela ;; 7215cfa550c6SMax Filippov xtensa*) 7216c765fcacSPeter Crosthwaite disas_config "XTENSA" 7217cfa550c6SMax Filippov ;; 721864656024SJuan Quintela esac 721964656024SJuan Quinteladone 72209195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 7221c765fcacSPeter Crosthwaite disas_config "TCI" 72229195b2c2SStefan Weilfi 722364656024SJuan Quintela 72246ee7126fSJuan Quintelacase "$ARCH" in 72256ee7126fSJuan Quintelaalpha) 72266ee7126fSJuan Quintela # Ensure there's only a single GP 72276ee7126fSJuan Quintela cflags="-msmall-data $cflags" 72286ee7126fSJuan Quintela;; 72296ee7126fSJuan Quintelaesac 72306ee7126fSJuan Quintela 7231d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 723225be210fSJuan Quintela echo "TARGET_GPROF=yes" >> $config_target_mak 7233d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 7234d02c1db3SJuan Quintela cflags="-p $cflags" 7235d02c1db3SJuan Quintela ldflags="-p $ldflags" 7236d02c1db3SJuan Quintela fi 7237d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 7238d02c1db3SJuan Quintela ldflags="-p $ldflags" 723925be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 7240d02c1db3SJuan Quintela fi 7241d02c1db3SJuan Quintelafi 7242d02c1db3SJuan Quintela 72439b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 7244964c6fa1SRichard Henderson ldflags="$ldflags $textseg_ldflags" 7245fa282484SJuan Quintelafi 7246fa282484SJuan Quintela 7247e9a3591fSChristian Borntraeger# Newer kernels on s390 check for an S390_PGSTE program header and 7248e9a3591fSChristian Borntraeger# enable the pgste page table extensions in that case. This makes 7249e9a3591fSChristian Borntraeger# the vm.allocate_pgste sysctl unnecessary. We enable this program 7250e9a3591fSChristian Borntraeger# header if 7251e9a3591fSChristian Borntraeger# - we build on s390x 7252e9a3591fSChristian Borntraeger# - we build the system emulation for s390x (qemu-system-s390x) 7253e9a3591fSChristian Borntraeger# - KVM is enabled 7254e9a3591fSChristian Borntraeger# - the linker supports --s390-pgste 7255e9a3591fSChristian Borntraegerif test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then 7256e9a3591fSChristian Borntraeger if ld_has --s390-pgste ; then 7257e9a3591fSChristian Borntraeger ldflags="-Wl,--s390-pgste $ldflags" 7258e9a3591fSChristian Borntraeger fi 7259e9a3591fSChristian Borntraegerfi 7260e9a3591fSChristian Borntraeger 726125be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak 726225be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 7263fa282484SJuan Quintela 726497a847bcSbellarddone # for target in $targets 72657d13299dSbellard 7266d75402b5SAlex Bennéeif test -n "$enabled_cross_compilers"; then 7267d75402b5SAlex Bennée echo 7268d75402b5SAlex Bennée echo "NOTE: cross-compilers enabled: $enabled_cross_compilers" 7269d75402b5SAlex Bennéefi 7270d75402b5SAlex Bennée 7271e3971d61SPhilippe Mathieu-Daudéif [ "$fdt" = "git" ]; then 7272a540f158SPeter Crosthwaite echo "config-host.h: subdir-dtc" >> $config_host_mak 7273a540f158SPeter Crosthwaitefi 7274e219c499SRichard Hendersonif [ "$capstone" = "git" -o "$capstone" = "internal" ]; then 7275e219c499SRichard Henderson echo "config-host.h: subdir-capstone" >> $config_host_mak 7276e219c499SRichard Hendersonfi 7277e219c499SRichard Hendersonif test -n "$LIBCAPSTONE"; then 7278e219c499SRichard Henderson echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak 7279e219c499SRichard Hendersonfi 7280a540f158SPeter Crosthwaite 7281a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 7282a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 7283a99d57bbSWanlong Gaofi 7284a99d57bbSWanlong Gao 7285fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then 7286fd0e6053SJohn Snow echo "export CCACHE_CPP2=y" >> $config_host_mak 7287fd0e6053SJohn Snowfi 7288fd0e6053SJohn Snow 7289d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory 7290b1fb9a63SFam ZhengDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm" 7291b855f8d1SPaolo BonziniDIRS="$DIRS docs docs/interop fsdev scsi" 72929933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 72932d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 7294c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 7295c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 7296aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 7297ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 7298446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile" 72999933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile" 73002d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 73014652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp" 73023a586d2fSStefan HajnocziFILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit 7303753d11f2SRichard Hendersonfor bios_file in \ 7304753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 7305225a9ab8SAlexey Kardashevskiy $source_path/pc-bios/*.lid \ 73065acc2ec0SGerd Hoffmann $source_path/pc-bios/*.aml \ 7307753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 7308753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 7309e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 7310753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 73114e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 7312753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 7313753d11f2SRichard Hendersondo 731489138857SStefan Weil FILES="$FILES pc-bios/$(basename $bios_file)" 73157ea78b74SJan Kiszkadone 731689138857SStefan Weilfor test_file in $(find $source_path/tests/acpi-test-data -type f) 7317c2304b52SMarcel Apfelbaumdo 731889138857SStefan Weil FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')" 7319c2304b52SMarcel Apfelbaumdone 7320d1807a4fSPaolo Bonzinimkdir -p $DIRS 73217d13299dSbellardfor f in $FILES ; do 7322cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 7323f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 7324f9245e10SPeter Maydell fi 73257d13299dSbellarddone 73261ad2134fSPaul Brook 7327c34ebfdcSAnthony Liguori# temporary config to build submodules 73282d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 7329c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 733037116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 7331c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 7332cdbd727cSRichard Henderson echo "AS=$as" >> $config_mak 73335f6f0e27SRichard Henderson echo "CCAS=$ccas" >> $config_mak 7334c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 7335c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 73363dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 7337c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 7338a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 7339c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 73409f81aeb5SAlistair Francis echo "RANLIB=$ranlib" >> $config_mak 7341c34ebfdcSAnthony Liguoridone 7342c34ebfdcSAnthony Liguori 7343fe31017fSMarc-André Lureau# set up tests data directory 73441b145d59SPhilippe Mathieu-Daudéfor tests_subdir in acceptance data; do 73451b145d59SPhilippe Mathieu-Daudé if [ ! -e tests/$tests_subdir ]; then 73461b145d59SPhilippe Mathieu-Daudé symlink "$source_path/tests/$tests_subdir" tests/$tests_subdir 7347fe31017fSMarc-André Lureau fi 73481b145d59SPhilippe Mathieu-Daudédone 7349fe31017fSMarc-André Lureau 735076c7560aSMax Reitz# set up qemu-iotests in this build directory 735176c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 735276c7560aSMax Reitziotests_check="tests/qemu-iotests/check" 735376c7560aSMax Reitz 735476c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 735576c7560aSMax Reitzecho >> "$iotests_common_env" 735676c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 735776c7560aSMax Reitz 735876c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then 735976c7560aSMax Reitz symlink "$source_path/$iotests_check" "$iotests_check" 736076c7560aSMax Reitzfi 736176c7560aSMax Reitz 7362dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 7363dc655404SMichael S. Tsirkincat <<EOD >config.status 7364dc655404SMichael S. Tsirkin#!/bin/sh 7365dc655404SMichael S. Tsirkin# Generated by configure. 7366dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 7367dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 7368dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 7369dc655404SMichael S. TsirkinEOD 7370dc655404SMichael S. Tsirkinprintf "exec" >>config.status 7371dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status 7372cf7cc929SDr. David Alan Gilbertecho ' "$@"' >>config.status 7373dc655404SMichael S. Tsirkinchmod +x config.status 7374dc655404SMichael S. Tsirkin 73758cd05ab6SPeter Maydellrm -r "$TMPDIR1" 7376