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" 3326fffe29SEmilio G. CotaTMPTXT="${TMPDIR1}/${TMPB}.txt" 347d13299dSbellard 35da1d85e3SGerd Hoffmannrm -f config.log 369ac81bbbSmalc 37b48e3611SPeter Maydell# Print a helpful header at the top of config.log 38b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 39979ae168SPeter Maydellprintf "# Configured with:" >> config.log 40979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 41979ae168SPeter Maydellecho >> config.log 42b48e3611SPeter Maydellecho "#" >> config.log 43b48e3611SPeter Maydell 44d880a3baSPaolo Bonziniprint_error() { 45d880a3baSPaolo Bonzini (echo 4676ad07a4SPeter Maydell echo "ERROR: $1" 4776ad07a4SPeter Maydell while test -n "$2"; do 4876ad07a4SPeter Maydell echo " $2" 4976ad07a4SPeter Maydell shift 5076ad07a4SPeter Maydell done 51d880a3baSPaolo Bonzini echo) >&2 52d880a3baSPaolo Bonzini} 53d880a3baSPaolo Bonzini 54d880a3baSPaolo Bonzinierror_exit() { 55d880a3baSPaolo Bonzini print_error "$@" 5676ad07a4SPeter Maydell exit 1 5776ad07a4SPeter Maydell} 5876ad07a4SPeter Maydell 599c83ffd8SPeter Maydelldo_compiler() { 609c83ffd8SPeter Maydell # Run the compiler, capturing its output to the log. First argument 619c83ffd8SPeter Maydell # is compiler binary to execute. 629c83ffd8SPeter Maydell local compiler="$1" 639c83ffd8SPeter Maydell shift 648bbe05d7SIan Jackson if test -n "$BASH_VERSION"; then eval ' 658bbe05d7SIan Jackson echo >>config.log " 668bbe05d7SIan Jacksonfuncs: ${FUNCNAME[*]} 678bbe05d7SIan Jacksonlines: ${BASH_LINENO[*]}" 688bbe05d7SIan Jackson '; fi 699c83ffd8SPeter Maydell echo $compiler "$@" >> config.log 709c83ffd8SPeter Maydell $compiler "$@" >> config.log 2>&1 || return $? 718dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 728dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 738dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 748dc38a78SPeter Maydell # obvious to developers. 758dc38a78SPeter Maydell if test "$werror" != "yes"; then 768dc38a78SPeter Maydell return 0 778dc38a78SPeter Maydell fi 788dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 798dc38a78SPeter Maydell case "$*" in 808dc38a78SPeter Maydell *-Werror*) 818dc38a78SPeter Maydell return 0 828dc38a78SPeter Maydell ;; 838dc38a78SPeter Maydell esac 849c83ffd8SPeter Maydell echo $compiler -Werror "$@" >> config.log 859c83ffd8SPeter Maydell $compiler -Werror "$@" >> config.log 2>&1 && return $? 8676ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 8776ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 8876ad07a4SPeter Maydell "will be at the bottom of config.log." \ 8976ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 908dc38a78SPeter Maydell} 918dc38a78SPeter Maydell 929c83ffd8SPeter Maydelldo_cc() { 939c83ffd8SPeter Maydell do_compiler "$cc" "$@" 949c83ffd8SPeter Maydell} 959c83ffd8SPeter Maydell 969c83ffd8SPeter Maydelldo_cxx() { 979c83ffd8SPeter Maydell do_compiler "$cxx" "$@" 989c83ffd8SPeter Maydell} 999c83ffd8SPeter Maydell 10000849b92SRichard Henderson# Append $2 to the variable named $1, with space separation 10100849b92SRichard Hendersonadd_to() { 10200849b92SRichard Henderson eval $1=\${$1:+\"\$$1 \"}\$2 10300849b92SRichard Henderson} 10400849b92SRichard Henderson 1059c83ffd8SPeter Maydellupdate_cxxflags() { 1069c83ffd8SPeter Maydell # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 1079c83ffd8SPeter Maydell # options which some versions of GCC's C++ compiler complain about 1089c83ffd8SPeter Maydell # because they only make sense for C programs. 10953422040SPaolo Bonzini QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS" 11011cde1c8SBruno Dominguez 1119c83ffd8SPeter Maydell for arg in $QEMU_CFLAGS; do 1129c83ffd8SPeter Maydell case $arg in 1139c83ffd8SPeter Maydell -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 1149c83ffd8SPeter Maydell -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 1159c83ffd8SPeter Maydell ;; 1167be41675SThomas Huth -std=gnu99) 1177be41675SThomas Huth QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }"-std=gnu++98" 1187be41675SThomas Huth ;; 1199c83ffd8SPeter Maydell *) 1209c83ffd8SPeter Maydell QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 1219c83ffd8SPeter Maydell ;; 1229c83ffd8SPeter Maydell esac 1239c83ffd8SPeter Maydell done 1249c83ffd8SPeter Maydell} 1259c83ffd8SPeter Maydell 12652166aa0SJuan Quintelacompile_object() { 127fd0e6053SJohn Snow local_cflags="$1" 128fd0e6053SJohn Snow do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC 12952166aa0SJuan Quintela} 13052166aa0SJuan Quintela 13152166aa0SJuan Quintelacompile_prog() { 13252166aa0SJuan Quintela local_cflags="$1" 13352166aa0SJuan Quintela local_ldflags="$2" 134db5adeaaSPaolo Bonzini do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $QEMU_LDFLAGS $local_ldflags 13552166aa0SJuan Quintela} 13652166aa0SJuan Quintela 13711568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 13811568d6dSPaolo Bonzinisymlink() { 13972b8b5a1SStefan Weil rm -rf "$2" 140ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 14172b8b5a1SStefan Weil ln -s "$1" "$2" 14211568d6dSPaolo Bonzini} 14311568d6dSPaolo Bonzini 1440dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 1450dba6195SLoïc Minier# executable or a builtin) 1460dba6195SLoïc Minierhas() { 1470dba6195SLoïc Minier type "$1" >/dev/null 2>&1 1480dba6195SLoïc Minier} 1490dba6195SLoïc Minier 1500dba6195SLoïc Minier# search for an executable in PATH 1510dba6195SLoïc Minierpath_of() { 1520dba6195SLoïc Minier local_command="$1" 1530dba6195SLoïc Minier local_ifs="$IFS" 1540dba6195SLoïc Minier local_dir="" 1550dba6195SLoïc Minier 1560dba6195SLoïc Minier # pathname has a dir component? 1570dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 1580dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 1590dba6195SLoïc Minier echo "$local_command" 1600dba6195SLoïc Minier return 0 1610dba6195SLoïc Minier fi 1620dba6195SLoïc Minier fi 1630dba6195SLoïc Minier if [ -z "$local_command" ]; then 1640dba6195SLoïc Minier return 1 1650dba6195SLoïc Minier fi 1660dba6195SLoïc Minier 1670dba6195SLoïc Minier IFS=: 1680dba6195SLoïc Minier for local_dir in $PATH; do 1690dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 1700dba6195SLoïc Minier echo "$local_dir/$local_command" 1710dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1720dba6195SLoïc Minier return 0 1730dba6195SLoïc Minier fi 1740dba6195SLoïc Minier done 1750dba6195SLoïc Minier # not found 1760dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1770dba6195SLoïc Minier return 1 1780dba6195SLoïc Minier} 1790dba6195SLoïc Minier 1805b808275SLluís Vilanovahave_backend () { 1815b808275SLluís Vilanova echo "$trace_backends" | grep "$1" >/dev/null 1825b808275SLluís Vilanova} 1835b808275SLluís Vilanova 1843b6b7550SPaolo Bonziniglob() { 1853b6b7550SPaolo Bonzini eval test -z '"${1#'"$2"'}"' 1863b6b7550SPaolo Bonzini} 1873b6b7550SPaolo Bonzini 1883b6b7550SPaolo Bonzinisupported_hax_target() { 1893b6b7550SPaolo Bonzini test "$hax" = "yes" || return 1 1903b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 1913b6b7550SPaolo Bonzini case "${1%-softmmu}" in 1923b6b7550SPaolo Bonzini i386|x86_64) 1933b6b7550SPaolo Bonzini return 0 1943b6b7550SPaolo Bonzini ;; 1953b6b7550SPaolo Bonzini esac 1963b6b7550SPaolo Bonzini return 1 1973b6b7550SPaolo Bonzini} 1983b6b7550SPaolo Bonzini 1993b6b7550SPaolo Bonzinisupported_kvm_target() { 2003b6b7550SPaolo Bonzini test "$kvm" = "yes" || return 1 2013b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 2023b6b7550SPaolo Bonzini case "${1%-softmmu}:$cpu" in 2033b6b7550SPaolo Bonzini arm:arm | aarch64:aarch64 | \ 2043b6b7550SPaolo Bonzini i386:i386 | i386:x86_64 | i386:x32 | \ 2053b6b7550SPaolo Bonzini x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \ 206aa2953fdSHuacai Chen mips:mips | mipsel:mips | mips64:mips | mips64el:mips | \ 207f8378accSRichard Henderson ppc:ppc | ppc64:ppc | ppc:ppc64 | ppc64:ppc64 | ppc64:ppc64le | \ 2083b6b7550SPaolo Bonzini s390x:s390x) 2093b6b7550SPaolo Bonzini return 0 2103b6b7550SPaolo Bonzini ;; 2113b6b7550SPaolo Bonzini esac 2123b6b7550SPaolo Bonzini return 1 2133b6b7550SPaolo Bonzini} 2143b6b7550SPaolo Bonzini 2153b6b7550SPaolo Bonzinisupported_xen_target() { 2163b6b7550SPaolo Bonzini test "$xen" = "yes" || return 1 2173b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 218b5ed2e11SPaolo Bonzini # Only i386 and x86_64 provide the xenpv machine. 219b5ed2e11SPaolo Bonzini case "${1%-softmmu}" in 220b5ed2e11SPaolo Bonzini i386|x86_64) 2213b6b7550SPaolo Bonzini return 0 2223b6b7550SPaolo Bonzini ;; 2233b6b7550SPaolo Bonzini esac 2243b6b7550SPaolo Bonzini return 1 2253b6b7550SPaolo Bonzini} 2263b6b7550SPaolo Bonzini 227c97d6d2cSSergio Andres Gomez Del Realsupported_hvf_target() { 228c97d6d2cSSergio Andres Gomez Del Real test "$hvf" = "yes" || return 1 229c97d6d2cSSergio Andres Gomez Del Real glob "$1" "*-softmmu" || return 1 230c97d6d2cSSergio Andres Gomez Del Real case "${1%-softmmu}" in 231c97d6d2cSSergio Andres Gomez Del Real x86_64) 232c97d6d2cSSergio Andres Gomez Del Real return 0 233c97d6d2cSSergio Andres Gomez Del Real ;; 234c97d6d2cSSergio Andres Gomez Del Real esac 235c97d6d2cSSergio Andres Gomez Del Real return 1 236c97d6d2cSSergio Andres Gomez Del Real} 237c97d6d2cSSergio Andres Gomez Del Real 238d661d9a4SJustin Terry (VM)supported_whpx_target() { 239d661d9a4SJustin Terry (VM) test "$whpx" = "yes" || return 1 240d661d9a4SJustin Terry (VM) glob "$1" "*-softmmu" || return 1 241d661d9a4SJustin Terry (VM) case "${1%-softmmu}" in 242d661d9a4SJustin Terry (VM) i386|x86_64) 243d661d9a4SJustin Terry (VM) return 0 244d661d9a4SJustin Terry (VM) ;; 245d661d9a4SJustin Terry (VM) esac 246d661d9a4SJustin Terry (VM) return 1 247d661d9a4SJustin Terry (VM)} 248d661d9a4SJustin Terry (VM) 249d880a3baSPaolo Bonzinisupported_target() { 250d880a3baSPaolo Bonzini case "$1" in 251d880a3baSPaolo Bonzini *-softmmu) 252d880a3baSPaolo Bonzini ;; 253d880a3baSPaolo Bonzini *-linux-user) 254d880a3baSPaolo Bonzini if test "$linux" != "yes"; then 255d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a Linux host" 256d880a3baSPaolo Bonzini return 1 257d880a3baSPaolo Bonzini fi 258d880a3baSPaolo Bonzini ;; 259d880a3baSPaolo Bonzini *-bsd-user) 260d880a3baSPaolo Bonzini if test "$bsd" != "yes"; then 261d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a BSD host" 262d880a3baSPaolo Bonzini return 1 263d880a3baSPaolo Bonzini fi 264d880a3baSPaolo Bonzini ;; 265d880a3baSPaolo Bonzini *) 266d880a3baSPaolo Bonzini print_error "Invalid target name '$target'" 267d880a3baSPaolo Bonzini return 1 268d880a3baSPaolo Bonzini ;; 269d880a3baSPaolo Bonzini esac 270b3f6ea7eSPaolo Bonzini test "$tcg" = "yes" && return 0 271b3f6ea7eSPaolo Bonzini supported_kvm_target "$1" && return 0 272b3f6ea7eSPaolo Bonzini supported_xen_target "$1" && return 0 273b3f6ea7eSPaolo Bonzini supported_hax_target "$1" && return 0 274c97d6d2cSSergio Andres Gomez Del Real supported_hvf_target "$1" && return 0 275d661d9a4SJustin Terry (VM) supported_whpx_target "$1" && return 0 276b3f6ea7eSPaolo Bonzini print_error "TCG disabled, but hardware accelerator not available for '$target'" 277b3f6ea7eSPaolo Bonzini return 1 278d880a3baSPaolo Bonzini} 279d880a3baSPaolo Bonzini 280e9a3591fSChristian Borntraeger 281e9a3591fSChristian Borntraegerld_has() { 282e9a3591fSChristian Borntraeger $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1 283e9a3591fSChristian Borntraeger} 284e9a3591fSChristian Borntraeger 28579d77bcdSPeter Maydell# make source path absolute 28614211825SAntonio Ospitesource_path=$(cd "$(dirname -- "$0")"; pwd) 28714211825SAntonio Ospite 2884ace32e2SAntonio Ospiteif printf %s\\n "$source_path" "$PWD" | grep -q "[[:space:]:]"; 2894ace32e2SAntonio Ospitethen 2904ace32e2SAntonio Ospite error_exit "main directory cannot contain spaces nor colons" 2914ace32e2SAntonio Ospitefi 2924ace32e2SAntonio Ospite 29314211825SAntonio Ospite# default parameters 2942ff6b91eSJuan Quintelacpu="" 295a31a8642SMichael S. Tsirkiniasl="iasl" 2961e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 29743ce4dfeSbellardstatic="no" 2987d13299dSbellardcross_prefix="" 2990c58ac1cSmalcaudio_drv_list="" 300b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 301b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 302e49d021eSPeter Maydellhost_cc="cc" 30302f9135bSDaniel P. Berrangélibs_cpu="" 30473da375eSJuan Quintelalibs_softmmu="" 3053e2e0e6bSJuan Quintelalibs_tools="" 306d5631638Smalcaudio_win_int="" 307957f1f99SMichael Rothlibs_qga="" 3085bc62e01SGerd Hoffmanndebug_info="yes" 30963678e17SSteven Noonanstack_protector="" 310*1e4f6065SDaniele Buonosafe_stack="" 311afc3a8f9SAlex Bennéeuse_containers="yes" 312f2385398SAlex Bennéegdb_bin=$(command -v "gdb-multiarch" || command -v "gdb") 313ac0df51dSaliguori 31492712822SDaniel P. Berrangeif test -e "$source_path/.git" 31592712822SDaniel P. Berrangethen 316f62bbee5SDaniel P. Berrange git_update=yes 31792712822SDaniel P. Berrange git_submodules="ui/keycodemapdb" 3183ac1f813SEmilio G. Cota git_submodules="$git_submodules tests/fp/berkeley-testfloat-3" 3193ac1f813SEmilio G. Cota git_submodules="$git_submodules tests/fp/berkeley-softfloat-3" 32092712822SDaniel P. Berrangeelse 321f62bbee5SDaniel P. Berrange git_update=no 322aef45d51SDaniel P. Berrange git_submodules="" 3235c0ef67aSDaniel P. Berrangé 3245c0ef67aSDaniel P. Berrangé if ! test -f "$source_path/ui/keycodemapdb/README" 3255c0ef67aSDaniel P. Berrangé then 3265c0ef67aSDaniel P. Berrangé echo 3275c0ef67aSDaniel P. Berrangé echo "ERROR: missing file $source_path/ui/keycodemapdb/README" 3285c0ef67aSDaniel P. Berrangé echo 3295c0ef67aSDaniel P. Berrangé echo "This is not a GIT checkout but module content appears to" 3305c0ef67aSDaniel P. Berrangé echo "be missing. Do not use 'git archive' or GitHub download links" 3315c0ef67aSDaniel P. Berrangé echo "to acquire QEMU source archives. Non-GIT builds are only" 3325c0ef67aSDaniel P. Berrangé echo "supported with source archives linked from:" 3335c0ef67aSDaniel P. Berrangé echo 334a3e3b521SPeter Maydell echo " https://www.qemu.org/download/#source" 3355c0ef67aSDaniel P. Berrangé echo 3365c0ef67aSDaniel P. Berrangé echo "Developers working with GIT can use scripts/archive-source.sh" 3375c0ef67aSDaniel P. Berrangé echo "if they need to create valid source archives." 3385c0ef67aSDaniel P. Berrangé echo 3395c0ef67aSDaniel P. Berrangé exit 1 3405c0ef67aSDaniel P. Berrangé fi 34192712822SDaniel P. Berrangefi 342cc84d63aSDaniel P. Berrangegit="git" 343ac0df51dSaliguori 344afb63ebdSStefan Weil# Don't accept a target_list environment variable. 345afb63ebdSStefan Weilunset target_list 346447e133fSAlex Bennéeunset target_list_exclude 347377529c0SPaolo Bonzini 348377529c0SPaolo Bonzini# Default value for a variable defining feature "foo". 349377529c0SPaolo Bonzini# * foo="no" feature will only be used if --enable-foo arg is given 350377529c0SPaolo Bonzini# * foo="" feature will be searched for, and if found, will be used 351377529c0SPaolo Bonzini# unless --disable-foo is given 352377529c0SPaolo Bonzini# * foo="yes" this value will only be set by --enable-foo flag. 353377529c0SPaolo Bonzini# feature will searched for, 354377529c0SPaolo Bonzini# if not found, configure exits with error 355377529c0SPaolo Bonzini# 356377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args. 357377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it 358377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found. 359377529c0SPaolo Bonzini 360377529c0SPaolo Bonzinibrlapi="" 361377529c0SPaolo Bonzinicurl="" 362377529c0SPaolo Bonzinicurses="" 363377529c0SPaolo Bonzinidocs="" 364377529c0SPaolo Bonzinifdt="" 36558952137SVincenzo Maffionenetmap="no" 366377529c0SPaolo Bonzinisdl="" 367a442fe2fSDaniel P. Berrangésdl_image="" 368983eef5aSMeador Ingevirtfs="" 369fe8fc5aeSPaolo Bonzinimpath="" 370821601eaSJes Sorensenvnc="yes" 371377529c0SPaolo Bonzinisparse="no" 372377529c0SPaolo Bonzinivde="" 373377529c0SPaolo Bonzinivnc_sasl="" 374377529c0SPaolo Bonzinivnc_jpeg="" 375377529c0SPaolo Bonzinivnc_png="" 3766a021536SGerd Hoffmannxkbcommon="" 377377529c0SPaolo Bonzinixen="" 378d5b93ddfSAnthony PERARDxen_ctrl_version="" 379eb6fda0fSAnthony PERARDxen_pci_passthrough="" 380377529c0SPaolo Bonzinilinux_aio="" 381c10dd856SAarushi Mehtalinux_io_uring="" 38247e98658SCorey Bryantcap_ng="" 383377529c0SPaolo Bonziniattr="" 3844f26f2b6SAvi Kivitylibattr="" 385377529c0SPaolo Bonzinixfs="" 386b3f6ea7eSPaolo Bonzinitcg="yes" 387a40161cbSPaolo Bonzinimembarrier="" 388299e6f19SPaolo Bonzinivhost_net="" 389299e6f19SPaolo Bonzinivhost_crypto="" 390299e6f19SPaolo Bonzinivhost_scsi="" 391299e6f19SPaolo Bonzinivhost_vsock="" 392e6a74868SMarc-André Lureauvhost_user="" 39398fc1adaSDr. David Alan Gilbertvhost_user_fs="" 394d41a75a2SBradkvm="no" 395b0cb0a66SVincent Palatinhax="no" 396c97d6d2cSSergio Andres Gomez Del Realhvf="no" 397d661d9a4SJustin Terry (VM)whpx="no" 3982da776dbSMichael R. Hinesrdma="" 39921ab34c9SMarcel Apfelbaumpvrdma="" 400377529c0SPaolo Bonzinigprof="no" 401377529c0SPaolo Bonzinidebug_tcg="no" 402377529c0SPaolo Bonzinidebug="no" 403247724cbSMarc-André Lureausanitizers="no" 4040aebab04SLingfeng Yangtsan="no" 405b553a042SJohn Snowfortify_source="" 406377529c0SPaolo Bonzinistrip_opt="yes" 4079195b2c2SStefan Weiltcg_interpreter="no" 408377529c0SPaolo Bonzinibigendian="no" 409377529c0SPaolo Bonzinimingw32="no" 4101d728c39SBlue Swirlgcov="no" 4111d728c39SBlue Swirlgcov_tool="gcov" 412377529c0SPaolo BonziniEXESUF="" 41317969268SFam ZhengDSOSUF=".so" 41417969268SFam ZhengLDFLAGS_SHARED="-shared" 41517969268SFam Zhengmodules="no" 416bd83c861SChristian Ehrhardtmodule_upgrades="no" 417377529c0SPaolo Bonziniprefix="/usr/local" 418377529c0SPaolo Bonzinimandir="\${prefix}/share/man" 419528ae5b8SEduardo Habkostdatadir="\${prefix}/share" 4203d5eecabSGerd Hoffmannfirmwarepath="\${prefix}/share/qemu-firmware" 421850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu" 422377529c0SPaolo Bonzinibindir="\${prefix}/bin" 4233aa5d2beSAlon Levylibdir="\${prefix}/lib" 4248bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec" 4250f94d6daSAlon Levyincludedir="\${prefix}/include" 426377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc" 427785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var" 428377529c0SPaolo Bonziniconfsuffix="/qemu" 429675b9b53SMarc-André Lureauslirp="" 430377529c0SPaolo Bonzinioss_lib="" 431377529c0SPaolo Bonzinibsd="no" 432377529c0SPaolo Bonzinilinux="no" 433377529c0SPaolo Bonzinisolaris="no" 434377529c0SPaolo Bonziniprofiler="no" 435377529c0SPaolo Bonzinicocoa="no" 436377529c0SPaolo Bonzinisoftmmu="yes" 437377529c0SPaolo Bonzinilinux_user="no" 438377529c0SPaolo Bonzinibsd_user="no" 439377529c0SPaolo Bonziniblobs="yes" 44005dfa22bSPhilippe Mathieu-Daudéedk2_blobs="no" 441377529c0SPaolo Bonzinipkgversion="" 44240d6444eSAvi Kivitypie="" 4433556c233SPaolo Bonziniqom_cast_debug="yes" 444baf86d6bSPaolo Bonzinitrace_backends="log" 445377529c0SPaolo Bonzinitrace_file="trace" 446377529c0SPaolo Bonzinispice="" 447377529c0SPaolo Bonzinirbd="" 4487b02f544SMarc-André Lureausmartcard="" 4492b2325ffSGerd Hoffmannlibusb="" 45069354a83SHans de Goedeusb_redir="" 451da076ffeSGerd Hoffmannopengl="" 452014cb152SGerd Hoffmannopengl_dmabuf="no" 4535dd89908SRichard Hendersoncpuid_h="no" 45486583a07SLiam Merwickavx2_opt="" 4551ece9905SAlon Levyzlib="yes" 4568ca80760SRichard Hendersoncapstone="" 457b25c9dffSStefan Weillzo="" 458b25c9dffSStefan Weilsnappy="" 4596b383c08SPeter Wubzip2="" 46083bc1f97SJulio Faraccolzfse="" 4613a678481SJuan Quintelazstd="" 462e8ef31a3SMichael Tokarevguest_agent="" 463d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 46450cbebb9SMichael Rothguest_agent_ntddscsi="no" 4659dacf32dSYossi Hindinguest_agent_msi="" 466d9840e25STomoki Sekiyamavss_win32_sdk="" 467d9840e25STomoki Sekiyamawin_sdk="no" 468e10ee3f5SPhilippe Mathieu-Daudéwant_tools="" 469c589b249SRonnie Sahlberglibiscsi="" 4706542aa9cSPeter Lievenlibnfs="" 471519175a2SAlex Barcelocoroutine="" 47270c60c08SStefan Hajnoczicoroutine_pool="" 4737d992e4dSPeter Lievendebug_stack_usage="no" 474f0d92b56SLongpeng(Mike)crypto_afalg="no" 475f794573eSEduardo Otuboseccomp="" 476eb100396SBharata B Raoglusterfs="" 477d85fa9ebSJeff Codyglusterfs_xlator_opt="no" 4780c14fb47SBharata B Raoglusterfs_discard="no" 479df3a429aSNiels de Vosglusterfs_fallocate="no" 4807c815372SBharata B Raoglusterfs_zerofill="no" 481e014dbe7SPrasanna Kumar Kaleverglusterfs_ftruncate_has_stat="no" 4820e3b891fSNiels de Vosglusterfs_iocb_has_stat="no" 483a4ccabcfSAnthony Liguorigtk="" 484925a0400SGerd Hoffmanngtk_gl="no" 485a1c5e949SDaniel P. Berrangetls_priority="NORMAL" 486ddbb0d09SDaniel P. Berrangegnutls="" 48791bfcdb0SDaniel P. Berrangenettle="" 488dc2207afSDaniel P. Berrangénettle_xts="no" 48991bfcdb0SDaniel P. Berrangegcrypt="" 4901f923c70SLongpeng(Mike)gcrypt_hmac="no" 491e0576942SDaniel P. Berrangégcrypt_xts="no" 492e0576942SDaniel P. Berrangéqemu_private_xts="yes" 4938953caf3SDaniel P. Berrangeauth_pam="" 494bbbf9bfbSStefan Weilvte="" 4959d9e1521SGerd Hoffmannvirglrenderer="" 4967aaa6a16SPaolo Bonzinitpm="" 497b10d49d7SPino Toscanolibssh="" 498ed1701c6SDr. David Alan Gilbertlive_block_migration="yes" 499a99d57bbSWanlong Gaonuma="" 5002847b469SFam Zhengtcmalloc="no" 5017b01cb97SAlexandre Derumierjemalloc="no" 502a6b1d4c0SChanglong Xiereplication="yes" 503da92c3ffSAshish Mittalvxhs="" 5042f740136SJeff Codybochs="yes" 5052f740136SJeff Codycloop="yes" 5062f740136SJeff Codydmg="yes" 5072f740136SJeff Codyqcow1="yes" 5082f740136SJeff Codyvdi="yes" 5092f740136SJeff Codyvvfat="yes" 5102f740136SJeff Codyqed="yes" 5112f740136SJeff Codyparallels="yes" 5122f740136SJeff Codysheepdog="yes" 513ed279a06SKlim Kireevlibxml2="" 514ba59fb77SPaolo Bonzinidebug_mutex="no" 51517824406SJunyan Helibpmem="" 516f3494749SPaolo Bonzinidefault_devices="yes" 51740e8c6f4SAlex Bennéeplugins="no" 518adc28027SAlexander Bulekovfuzzing="no" 519b767d257SMarek Marczykowski-Góreckirng_none="no" 52054e7aac0SAlexey Krasikovsecret_keyring="" 521377529c0SPaolo Bonzini 522898be3e0SPeter Maydellsupported_cpu="no" 523898be3e0SPeter Maydellsupported_os="no" 524fb59dabdSPeter Maydellbogus_os="no" 5255a22ab71SYang Zhongmalloc_trim="" 526898be3e0SPeter Maydell 527ac0df51dSaliguori# parse CC options first 528ac0df51dSaliguorifor opt do 52989138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 530ac0df51dSaliguori case "$opt" in 531ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 532ac0df51dSaliguori ;; 5333d8df640SPaolo Bonzini --cc=*) CC="$optarg" 534ac0df51dSaliguori ;; 53583f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 53683f73fceSTomoki Sekiyama ;; 5372ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 5382ff6b91eSJuan Quintela ;; 539de385287SAlex Bennée --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 540db5adeaaSPaolo Bonzini QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg" 541e2a2ed06SJuan Quintela ;; 54211cde1c8SBruno Dominguez --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg" 54311cde1c8SBruno Dominguez ;; 544db5adeaaSPaolo Bonzini --extra-ldflags=*) QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg" 545f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 546e2a2ed06SJuan Quintela ;; 5475bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 5485bc62e01SGerd Hoffmann ;; 5495bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 5505bc62e01SGerd Hoffmann ;; 551d75402b5SAlex Bennée --cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option" 552d75402b5SAlex Bennée ;; 553d422b2bcSAlex Bennée --cross-cc-cflags-*) cc_arch=${opt#--cross-cc-flags-}; cc_arch=${cc_arch%%=*} 554d422b2bcSAlex Bennée eval "cross_cc_cflags_${cc_arch}=\$optarg" 5552038f8c8SPaolo Bonzini cross_cc_vars="$cross_cc_vars cross_cc_cflags_${cc_arch}" 556d422b2bcSAlex Bennée ;; 557d75402b5SAlex Bennée --cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*} 5582038f8c8SPaolo Bonzini cc_archs="$cc_archs $cc_arch" 559d75402b5SAlex Bennée eval "cross_cc_${cc_arch}=\$optarg" 5602038f8c8SPaolo Bonzini cross_cc_vars="$cross_cc_vars cross_cc_${cc_arch}" 561d75402b5SAlex Bennée ;; 562ac0df51dSaliguori esac 563ac0df51dSaliguoridone 564ac0df51dSaliguori# OS specific 565ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 56693148aa5SStefan Weil# we can eliminate its usage altogether. 567ac0df51dSaliguori 568e49d021eSPeter Maydell# Preferred compiler: 569e49d021eSPeter Maydell# ${CC} (if set) 570e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 571e49d021eSPeter Maydell# system compiler 572e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 573e49d021eSPeter Maydell cc="$host_cc" 574e49d021eSPeter Maydellelse 575b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 576e49d021eSPeter Maydellfi 577e49d021eSPeter Maydell 57883f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 57983f73fceSTomoki Sekiyama cxx="c++" 58083f73fceSTomoki Sekiyamaelse 58183f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 58283f73fceSTomoki Sekiyamafi 58383f73fceSTomoki Sekiyama 584b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 585cdbd727cSRichard Hendersonas="${AS-${cross_prefix}as}" 5865f6f0e27SRichard Hendersonccas="${CCAS-$cc}" 5873dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 588b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 589b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 5909f81aeb5SAlistair Francisranlib="${RANLIB-${cross_prefix}ranlib}" 5914852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 592b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 593b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 59417884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 59517884d7bSSergei Trofimovichquery_pkg_config() { 59617884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 59717884d7bSSergei Trofimovich} 59817884d7bSSergei Trofimovichpkg_config=query_pkg_config 59947c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 600ac0df51dSaliguori 60145d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 60245d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 60345d285abSPeter Maydell 604be17dc90SMichael S. Tsirkin# default flags for all hosts 6052d31515bSPeter Maydell# We use -fwrapv to tell the compiler that we require a C dialect where 6062d31515bSPeter Maydell# left shift of signed integers is well defined and has the expected 6072d31515bSPeter Maydell# 2s-complement style results. (Both clang and gcc agree that it 6082d31515bSPeter Maydell# provides these semantics.) 6097be41675SThomas HuthQEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv -std=gnu99 $QEMU_CFLAGS" 610f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 611c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 612be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 6139edc19c9SMichael S. TsirkinQEMU_INCLUDES="-iquote . -iquote \$(SRC_PATH) -iquote \$(SRC_PATH)/accel/tcg -iquote \$(SRC_PATH)/include" 61453422040SPaolo BonziniQEMU_INCLUDES="$QEMU_INCLUDES -iquote \$(SRC_PATH)/disas/libvixl" 6155bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then 6165bc62e01SGerd Hoffmann CFLAGS="-g $CFLAGS" 6175bc62e01SGerd Hoffmannfi 618be17dc90SMichael S. Tsirkin 619cab00a5aSMichael S. Tsirkin# running configure in the source tree? 620cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 621cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 622cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 623cab00a5aSMichael S. Tsirkinelse 624cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 625cab00a5aSMichael S. Tsirkinfi 626cab00a5aSMichael S. Tsirkin 627ac0df51dSaliguoricheck_define() { 628ac0df51dSaliguoricat > $TMPC <<EOF 629ac0df51dSaliguori#if !defined($1) 630fd786e1aSPeter Maydell#error $1 not defined 631ac0df51dSaliguori#endif 632ac0df51dSaliguoriint main(void) { return 0; } 633ac0df51dSaliguoriEOF 63452166aa0SJuan Quintela compile_object 635ac0df51dSaliguori} 636ac0df51dSaliguori 637307119e7SGerd Hoffmanncheck_include() { 638307119e7SGerd Hoffmanncat > $TMPC <<EOF 639307119e7SGerd Hoffmann#include <$1> 640307119e7SGerd Hoffmannint main(void) { return 0; } 641307119e7SGerd HoffmannEOF 642307119e7SGerd Hoffmann compile_object 643307119e7SGerd Hoffmann} 644307119e7SGerd Hoffmann 64593b25869SJohn Snowwrite_c_skeleton() { 64693b25869SJohn Snow cat > $TMPC <<EOF 64793b25869SJohn Snowint main(void) { return 0; } 64893b25869SJohn SnowEOF 64993b25869SJohn Snow} 65093b25869SJohn Snow 651adc28027SAlexander Bulekovwrite_c_fuzzer_skeleton() { 652adc28027SAlexander Bulekov cat > $TMPC <<EOF 653adc28027SAlexander Bulekov#include <stdint.h> 654adc28027SAlexander Bulekov#include <sys/types.h> 655adc28027SAlexander Bulekovint LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size); 656adc28027SAlexander Bulekovint LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; } 657adc28027SAlexander BulekovEOF 658adc28027SAlexander Bulekov} 659adc28027SAlexander Bulekov 660bbea4050SPeter Maydellif check_define __linux__ ; then 661bbea4050SPeter Maydell targetos="Linux" 662bbea4050SPeter Maydellelif check_define _WIN32 ; then 663bbea4050SPeter Maydell targetos='MINGW32' 664bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 665bbea4050SPeter Maydell targetos='OpenBSD' 666bbea4050SPeter Maydellelif check_define __sun__ ; then 667bbea4050SPeter Maydell targetos='SunOS' 668bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 669bbea4050SPeter Maydell targetos='Haiku' 670951fedfcSPeter Maydellelif check_define __FreeBSD__ ; then 671951fedfcSPeter Maydell targetos='FreeBSD' 672951fedfcSPeter Maydellelif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then 673951fedfcSPeter Maydell targetos='GNU/kFreeBSD' 674951fedfcSPeter Maydellelif check_define __DragonFly__ ; then 675951fedfcSPeter Maydell targetos='DragonFly' 676951fedfcSPeter Maydellelif check_define __NetBSD__; then 677951fedfcSPeter Maydell targetos='NetBSD' 678951fedfcSPeter Maydellelif check_define __APPLE__; then 679951fedfcSPeter Maydell targetos='Darwin' 680bbea4050SPeter Maydellelse 681951fedfcSPeter Maydell # This is a fatal error, but don't report it yet, because we 682951fedfcSPeter Maydell # might be going to just print the --help text, or it might 683951fedfcSPeter Maydell # be the result of a missing compiler. 684951fedfcSPeter Maydell targetos='bogus' 685951fedfcSPeter Maydell bogus_os='yes' 686bbea4050SPeter Maydellfi 687bbea4050SPeter Maydell 688bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 689bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 690bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 691bbea4050SPeter Maydell# the correct CPU with the --cpu option. 692bbea4050SPeter Maydellcase $targetos in 693bbea4050SPeter MaydellDarwin) 694bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 695bbea4050SPeter Maydell # run 64-bit userspace code. 696bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 697bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 698bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 699bbea4050SPeter Maydell cpu="x86_64" 700bbea4050SPeter Maydell fi 701bbea4050SPeter Maydell ;; 702bbea4050SPeter MaydellSunOS) 70389138857SStefan Weil # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo 704bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 705bbea4050SPeter Maydell cpu="x86_64" 706bbea4050SPeter Maydell fi 707bbea4050SPeter Maydellesac 708bbea4050SPeter Maydell 7092ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 7102ff6b91eSJuan Quintela # command line argument 7112ff6b91eSJuan Quintela : 7122ff6b91eSJuan Quintelaelif check_define __i386__ ; then 713ac0df51dSaliguori cpu="i386" 714ac0df51dSaliguorielif check_define __x86_64__ ; then 715c72b26ecSRichard Henderson if check_define __ILP32__ ; then 716c72b26ecSRichard Henderson cpu="x32" 717c72b26ecSRichard Henderson else 718ac0df51dSaliguori cpu="x86_64" 719c72b26ecSRichard Henderson fi 7203aa9bd6cSblueswir1elif check_define __sparc__ ; then 7213aa9bd6cSblueswir1 if check_define __arch64__ ; then 7223aa9bd6cSblueswir1 cpu="sparc64" 7233aa9bd6cSblueswir1 else 7243aa9bd6cSblueswir1 cpu="sparc" 7253aa9bd6cSblueswir1 fi 726fdf7ed96Smalcelif check_define _ARCH_PPC ; then 727fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 728f8378accSRichard Henderson if check_define _LITTLE_ENDIAN ; then 729f8378accSRichard Henderson cpu="ppc64le" 730f8378accSRichard Henderson else 731fdf7ed96Smalc cpu="ppc64" 732f8378accSRichard Henderson fi 733ac0df51dSaliguori else 734fdf7ed96Smalc cpu="ppc" 735fdf7ed96Smalc fi 736afa05235SAurelien Jarnoelif check_define __mips__ ; then 737afa05235SAurelien Jarno cpu="mips" 738d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 739d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 740d66ed0eaSAurelien Jarno cpu="s390x" 741d66ed0eaSAurelien Jarno else 742d66ed0eaSAurelien Jarno cpu="s390" 743d66ed0eaSAurelien Jarno fi 744c4f80543SAlistair Franciselif check_define __riscv ; then 745c4f80543SAlistair Francis if check_define _LP64 ; then 746c4f80543SAlistair Francis cpu="riscv64" 747c4f80543SAlistair Francis else 748c4f80543SAlistair Francis cpu="riscv32" 749c4f80543SAlistair Francis fi 75021d89f84SPeter Maydellelif check_define __arm__ ; then 75121d89f84SPeter Maydell cpu="arm" 7521f080313SClaudio Fontanaelif check_define __aarch64__ ; then 7531f080313SClaudio Fontana cpu="aarch64" 754fdf7ed96Smalcelse 75589138857SStefan Weil cpu=$(uname -m) 756ac0df51dSaliguorifi 757ac0df51dSaliguori 758359bc95dSPeter MaydellARCH= 759359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 760359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 7617d13299dSbellardcase "$cpu" in 762ee35e968SThomas Huth ppc|ppc64|s390x|sparc64|x32|riscv32|riscv64) 763898be3e0SPeter Maydell supported_cpu="yes" 764898be3e0SPeter Maydell ;; 765f8378accSRichard Henderson ppc64le) 766f8378accSRichard Henderson ARCH="ppc64" 767f8378accSRichard Henderson supported_cpu="yes" 768f8378accSRichard Henderson ;; 7697d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 77097a847bcSbellard cpu="i386" 771898be3e0SPeter Maydell supported_cpu="yes" 7727d13299dSbellard ;; 773aaa5fa14Saurel32 x86_64|amd64) 774aaa5fa14Saurel32 cpu="x86_64" 775898be3e0SPeter Maydell supported_cpu="yes" 776aaa5fa14Saurel32 ;; 77721d89f84SPeter Maydell armv*b|armv*l|arm) 77821d89f84SPeter Maydell cpu="arm" 779898be3e0SPeter Maydell supported_cpu="yes" 7807d13299dSbellard ;; 7811f080313SClaudio Fontana aarch64) 7821f080313SClaudio Fontana cpu="aarch64" 783898be3e0SPeter Maydell supported_cpu="yes" 7841f080313SClaudio Fontana ;; 785afa05235SAurelien Jarno mips*) 786afa05235SAurelien Jarno cpu="mips" 787898be3e0SPeter Maydell supported_cpu="yes" 788afa05235SAurelien Jarno ;; 7893142255cSblueswir1 sparc|sun4[cdmuv]) 790ae228531Sbellard cpu="sparc" 7916499fd15SPeter Maydell supported_cpu="yes" 792ae228531Sbellard ;; 7937d13299dSbellard *) 794359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 795359bc95dSPeter Maydell ARCH=unknown 7967d13299dSbellard ;; 7977d13299dSbellardesac 798359bc95dSPeter Maydellif test -z "$ARCH"; then 799359bc95dSPeter Maydell ARCH="$cpu" 800359bc95dSPeter Maydellfi 801e2d52ad3SJuan Quintela 8027d13299dSbellard# OS specific 8030dbfc675SJuan Quintela 804adfc3e91SStacey Son# host *BSD for user mode 805adfc3e91SStacey SonHOST_VARIANT_DIR="" 806adfc3e91SStacey Son 8077d13299dSbellardcase $targetos in 80867b915a5SbellardMINGW32*) 80967b915a5Sbellard mingw32="yes" 810b0cb0a66SVincent Palatin hax="yes" 811299e6f19SPaolo Bonzini vhost_user="no" 8123cec7cc2SKővágó, Zoltán audio_possible_drivers="dsound sdl" 813307119e7SGerd Hoffmann if check_include dsound.h; then 8143cec7cc2SKővágó, Zoltán audio_drv_list="dsound" 815307119e7SGerd Hoffmann else 816307119e7SGerd Hoffmann audio_drv_list="" 817307119e7SGerd Hoffmann fi 818898be3e0SPeter Maydell supported_os="yes" 819469a788cSAlex Bennée pie="no" 82067b915a5Sbellard;; 8215c40d2bdSthsGNU/kFreeBSD) 822a167ba50SAurelien Jarno bsd="yes" 8236a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8240bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 8255c40d2bdSths;; 8267d3505c5SbellardFreeBSD) 8277d3505c5Sbellard bsd="yes" 8280db4a067SPaolo Bonzini make="${MAKE-gmake}" 8296a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8300bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 831f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 832f01576f1SJuergen Lock LIBS="-lutil $LIBS" 833a7764f15SEd Maste # needed for kinfo_getproc 834a7764f15SEd Maste libs_qga="-lutil $libs_qga" 83558952137SVincenzo Maffione netmap="" # enable netmap autodetect 836adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 837898be3e0SPeter Maydell supported_os="yes" 8387d3505c5Sbellard;; 839c5e97233Sblueswir1DragonFly) 840c5e97233Sblueswir1 bsd="yes" 8410db4a067SPaolo Bonzini make="${MAKE-gmake}" 8426a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8430bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 844adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 845c5e97233Sblueswir1;; 8467d3505c5SbellardNetBSD) 8477d3505c5Sbellard bsd="yes" 848604a5b99SKamil Rytarowski hax="yes" 8490db4a067SPaolo Bonzini make="${MAKE-gmake}" 8506a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8510bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl" 8528ef92a88Sblueswir1 oss_lib="-lossaudio" 853adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 8543c2bdbc1SKamil Rytarowski supported_os="yes" 8557d3505c5Sbellard;; 8567d3505c5SbellardOpenBSD) 8577d3505c5Sbellard bsd="yes" 8580db4a067SPaolo Bonzini make="${MAKE-gmake}" 859f92c7168SGerd Hoffmann audio_drv_list="try-sdl" 8600bac1111SKővágó, Zoltán audio_possible_drivers="sdl" 861adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 8620a773d55SBrad Smith supported_os="yes" 8637d3505c5Sbellard;; 86483fb7adfSbellardDarwin) 86583fb7adfSbellard bsd="yes" 86683fb7adfSbellard darwin="yes" 867b0cb0a66SVincent Palatin hax="yes" 868c97d6d2cSSergio Andres Gomez Del Real hvf="yes" 86917969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 8701b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 871a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 872db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-arch x86_64 $QEMU_LDFLAGS" 8731b0f9cc2Saliguori fi 874fd677642Sths cocoa="yes" 8756a485418SGerd Hoffmann audio_drv_list="coreaudio try-sdl" 87614382605SKővágó, Zoltán audio_possible_drivers="coreaudio sdl" 877db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-framework CoreFoundation -framework IOKit $QEMU_LDFLAGS" 8787973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 879a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 880a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 881a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 882adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 883898be3e0SPeter Maydell supported_os="yes" 88483fb7adfSbellard;; 885ec530c81SbellardSunOS) 886ec530c81Sbellard solaris="yes" 8870db4a067SPaolo Bonzini make="${MAKE-gmake}" 8880db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 889e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 8906b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 8916a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8926b4d2ba1Sths fi 893c2de5c91Smalc audio_possible_drivers="oss sdl" 894d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 895d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 896d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 897d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 898a558ee17SJuan Quintela QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 899560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 900560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 901560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 902ec530c81Sbellard;; 903179cf400SAndreas FärberHaiku) 904179cf400SAndreas Färber haiku="yes" 905179cf400SAndreas Färber QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 906179cf400SAndreas Färber LIBS="-lposix_error_mapper -lnetwork $LIBS" 907179cf400SAndreas Färber;; 908898be3e0SPeter MaydellLinux) 9097183834aSGerd Hoffmann audio_drv_list="try-pa oss" 9100bac1111SKővágó, Zoltán audio_possible_drivers="oss alsa sdl pa" 9115327cf48Sbellard linux="yes" 912831b7825Sths linux_user="yes" 913af2be207SJan Kiszka kvm="yes" 91467cf3f5cSEduardo Habkost QEMU_INCLUDES="-isystem \$(SRC_PATH)/linux-headers -isystem $PWD/linux-headers $QEMU_INCLUDES" 915898be3e0SPeter Maydell supported_os="yes" 9163efac6ebSTomáš Golembiovský libudev="yes" 917898be3e0SPeter Maydell;; 9187d13299dSbellardesac 9197d13299dSbellard 9207d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 921b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 92284778508Sblueswir1 bsd_user="yes" 9237d3505c5Sbellard fi 92408de3949SAndreas Färberfi 9257d3505c5Sbellard 9260db4a067SPaolo Bonzini: ${make=${MAKE-make}} 9270db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 928faf44142SDaniel P. Berrangé# We prefer python 3.x. A bare 'python' is traditionally 929faf44142SDaniel P. Berrangé# python 2.x, but some distros have it as python 3.x, so 930ddf90699SEduardo Habkost# we check that too 931faf44142SDaniel P. Berrangépython= 932ddf90699SEduardo Habkostfor binary in "${PYTHON-python3}" python 933faf44142SDaniel P. Berrangédo 934faf44142SDaniel P. Berrangé if has "$binary" 935faf44142SDaniel P. Berrangé then 93695c5f2deSPaolo Bonzini python=$(command -v "$binary") 937faf44142SDaniel P. Berrangé break 938faf44142SDaniel P. Berrangé fi 939faf44142SDaniel P. Berrangédone 940903458c8SMarkus Armbruster 941903458c8SMarkus Armbrustersphinx_build= 942903458c8SMarkus Armbrusterfor binary in sphinx-build-3 sphinx-build 943903458c8SMarkus Armbrusterdo 944903458c8SMarkus Armbruster if has "$binary" 945903458c8SMarkus Armbruster then 946903458c8SMarkus Armbruster sphinx_build=$(command -v "$binary") 947903458c8SMarkus Armbruster break 948903458c8SMarkus Armbruster fi 949903458c8SMarkus Armbrusterdone 950903458c8SMarkus Armbruster 95139d87c8cSAlex Bennée# Check for ancillary tools used in testing 95239d87c8cSAlex Bennéegenisoimage= 9533df437c7SAlex Bennéefor binary in genisoimage mkisofs 95439d87c8cSAlex Bennéedo 95539d87c8cSAlex Bennée if has $binary 95639d87c8cSAlex Bennée then 95739d87c8cSAlex Bennée genisoimage=$(command -v "$binary") 95839d87c8cSAlex Bennée break 95939d87c8cSAlex Bennée fi 96039d87c8cSAlex Bennéedone 96139d87c8cSAlex Bennée 962e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 9630db4a067SPaolo Bonzini 9643c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 9653c4a4d0dSPeter Maydellif has clang; then 9663c4a4d0dSPeter Maydell objcc=clang 9673c4a4d0dSPeter Maydellelse 9683c4a4d0dSPeter Maydell objcc="$cc" 9693c4a4d0dSPeter Maydellfi 9703c4a4d0dSPeter Maydell 9713457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 9723457a3f8SJuan Quintela EXESUF=".exe" 97317969268SFam Zheng DSOSUF=".dll" 97478e9d4adSStefan Weil # MinGW needs -mthreads for TLS and macro _MT. 97578e9d4adSStefan Weil QEMU_CFLAGS="-mthreads $QEMU_CFLAGS" 976b965e8c5SPaolo Bonzini LIBS="-lwinmm -lws2_32 $LIBS" 97793b25869SJohn Snow write_c_skeleton; 978f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 979f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 980f7cf5d5bSStefan Weil fi 981c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 982683035deSPaolo Bonzini mandir="\${prefix}" 983528ae5b8SEduardo Habkost datadir="\${prefix}" 984850da188SEduardo Habkost qemu_docdir="\${prefix}" 985683035deSPaolo Bonzini bindir="\${prefix}" 986683035deSPaolo Bonzini sysconfdir="\${prefix}" 9875a699bbbSLaszlo Ersek local_statedir= 988683035deSPaolo Bonzini confsuffix="" 989105fad6bSBishara AbuHattoum libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga" 9903457a3f8SJuan Quintelafi 9913457a3f8SJuan Quintela 992487fefdbSAnthony Liguoriwerror="" 99385aa5189Sbellard 9947d13299dSbellardfor opt do 99589138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 9967d13299dSbellard case "$opt" in 9972efc3265Sbellard --help|-h) show_help=yes 9982efc3265Sbellard ;; 99999123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 100099123e13SMike Frysinger ;; 1001b1a550a0Spbrook --prefix=*) prefix="$optarg" 10027d13299dSbellard ;; 1003b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 100432ce6337Sbellard ;; 1005ac0df51dSaliguori --cross-prefix=*) 10067d13299dSbellard ;; 1007ac0df51dSaliguori --cc=*) 10087d13299dSbellard ;; 1009b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 101083469015Sbellard ;; 101183f73fceSTomoki Sekiyama --cxx=*) 101283f73fceSTomoki Sekiyama ;; 1013e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 1014e007dbecSMichael S. Tsirkin ;; 10153c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 10163c4a4d0dSPeter Maydell ;; 1017b1a550a0Spbrook --make=*) make="$optarg" 10187d13299dSbellard ;; 10196a882643Spbrook --install=*) install="$optarg" 10206a882643Spbrook ;; 1021c886edfbSBlue Swirl --python=*) python="$optarg" 1022c886edfbSBlue Swirl ;; 10232eb054c2SPeter Maydell --sphinx-build=*) sphinx_build="$optarg" 10242eb054c2SPeter Maydell ;; 10251d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 10261d728c39SBlue Swirl ;; 1027e2d8830eSBrad --smbd=*) smbd="$optarg" 1028e2d8830eSBrad ;; 1029e2a2ed06SJuan Quintela --extra-cflags=*) 10307d13299dSbellard ;; 103111cde1c8SBruno Dominguez --extra-cxxflags=*) 103211cde1c8SBruno Dominguez ;; 1033e2a2ed06SJuan Quintela --extra-ldflags=*) 10347d13299dSbellard ;; 10355bc62e01SGerd Hoffmann --enable-debug-info) 10365bc62e01SGerd Hoffmann ;; 10375bc62e01SGerd Hoffmann --disable-debug-info) 10385bc62e01SGerd Hoffmann ;; 1039d75402b5SAlex Bennée --cross-cc-*) 1040d75402b5SAlex Bennée ;; 104117969268SFam Zheng --enable-modules) 104217969268SFam Zheng modules="yes" 104317969268SFam Zheng ;; 10443aa88b31SStefan Hajnoczi --disable-modules) 10453aa88b31SStefan Hajnoczi modules="no" 10463aa88b31SStefan Hajnoczi ;; 1047bd83c861SChristian Ehrhardt --disable-module-upgrades) module_upgrades="no" 1048bd83c861SChristian Ehrhardt ;; 1049bd83c861SChristian Ehrhardt --enable-module-upgrades) module_upgrades="yes" 1050bd83c861SChristian Ehrhardt ;; 10512ff6b91eSJuan Quintela --cpu=*) 10527d13299dSbellard ;; 1053b1a550a0Spbrook --target-list=*) target_list="$optarg" 1054447e133fSAlex Bennée if test "$target_list_exclude"; then 1055447e133fSAlex Bennée error_exit "Can't mix --target-list with --target-list-exclude" 1056447e133fSAlex Bennée fi 1057447e133fSAlex Bennée ;; 1058447e133fSAlex Bennée --target-list-exclude=*) target_list_exclude="$optarg" 1059447e133fSAlex Bennée if test "$target_list"; then 1060447e133fSAlex Bennée error_exit "Can't mix --target-list-exclude with --target-list" 1061447e133fSAlex Bennée fi 1062de83cd02Sbellard ;; 10635b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 10645b808275SLluís Vilanova ;; 10655b808275SLluís Vilanova # XXX: backwards compatibility 10665b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 106794a420b1SStefan Hajnoczi ;; 106874242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 10699410b56cSPrerna Saxena ;; 1070f3494749SPaolo Bonzini --with-default-devices) default_devices="yes" 1071f3494749SPaolo Bonzini ;; 1072f3494749SPaolo Bonzini --without-default-devices) default_devices="no" 1073f3494749SPaolo Bonzini ;; 10747d13299dSbellard --enable-gprof) gprof="yes" 10757d13299dSbellard ;; 10761d728c39SBlue Swirl --enable-gcov) gcov="yes" 10771d728c39SBlue Swirl ;; 107879427693SLoïc Minier --static) 107979427693SLoïc Minier static="yes" 108017884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 108143ce4dfeSbellard ;; 10820b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 10830b24e75fSPaolo Bonzini ;; 10840b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 10850b24e75fSPaolo Bonzini ;; 10863aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 10873aa5d2beSAlon Levy ;; 10888bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 10898bf188aaSMichael Tokarev ;; 10900f94d6daSAlon Levy --includedir=*) includedir="$optarg" 10910f94d6daSAlon Levy ;; 1092528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 10930b24e75fSPaolo Bonzini ;; 1094023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 1095023d3d67SEduardo Habkost ;; 1096850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 10970b24e75fSPaolo Bonzini ;; 1098ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 109907381cc1SAnthony Liguori ;; 1100785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 1101785c23aeSLuiz Capitulino ;; 11023d5eecabSGerd Hoffmann --firmwarepath=*) firmwarepath="$optarg" 11033d5eecabSGerd Hoffmann ;; 1104181ce1d0SOlaf Hering --host=*|--build=*|\ 1105181ce1d0SOlaf Hering --disable-dependency-tracking|\ 1106785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 1107023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 1108023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 1109023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 1110023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 1111023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 1112023ddd74SMax Filippov # lots of directory switches by default. 1113023ddd74SMax Filippov ;; 111497a847bcSbellard --disable-sdl) sdl="no" 111597a847bcSbellard ;; 1116c4198157SJuan Quintela --enable-sdl) sdl="yes" 1117c4198157SJuan Quintela ;; 1118a442fe2fSDaniel P. Berrangé --disable-sdl-image) sdl_image="no" 1119a442fe2fSDaniel P. Berrangé ;; 1120a442fe2fSDaniel P. Berrangé --enable-sdl-image) sdl_image="yes" 1121a442fe2fSDaniel P. Berrangé ;; 11223556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 11233556c233SPaolo Bonzini ;; 11243556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 11253556c233SPaolo Bonzini ;; 1126983eef5aSMeador Inge --disable-virtfs) virtfs="no" 1127983eef5aSMeador Inge ;; 1128983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 1129983eef5aSMeador Inge ;; 1130fe8fc5aeSPaolo Bonzini --disable-mpath) mpath="no" 1131fe8fc5aeSPaolo Bonzini ;; 1132fe8fc5aeSPaolo Bonzini --enable-mpath) mpath="yes" 1133fe8fc5aeSPaolo Bonzini ;; 1134821601eaSJes Sorensen --disable-vnc) vnc="no" 1135821601eaSJes Sorensen ;; 1136821601eaSJes Sorensen --enable-vnc) vnc="yes" 1137821601eaSJes Sorensen ;; 11382f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 11392f6a1ab0Sblueswir1 ;; 11400c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 11410c58ac1cSmalc ;; 114289138857SStefan Weil --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1143b64ec4e4SFam Zheng ;; 114489138857SStefan Weil --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1145eb852011SMarkus Armbruster ;; 1146f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 1147f8393946Saurel32 ;; 1148f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 1149f8393946Saurel32 ;; 1150f3d08ee6SPaul Brook --enable-debug) 1151f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 1152f3d08ee6SPaul Brook debug_tcg="yes" 11531fcc6d42SPeter Xu debug_mutex="yes" 1154f3d08ee6SPaul Brook debug="yes" 1155f3d08ee6SPaul Brook strip_opt="no" 1156b553a042SJohn Snow fortify_source="no" 1157f3d08ee6SPaul Brook ;; 1158247724cbSMarc-André Lureau --enable-sanitizers) sanitizers="yes" 1159247724cbSMarc-André Lureau ;; 1160247724cbSMarc-André Lureau --disable-sanitizers) sanitizers="no" 1161247724cbSMarc-André Lureau ;; 11620aebab04SLingfeng Yang --enable-tsan) tsan="yes" 11630aebab04SLingfeng Yang ;; 11640aebab04SLingfeng Yang --disable-tsan) tsan="no" 11650aebab04SLingfeng Yang ;; 116603b4fe7dSaliguori --enable-sparse) sparse="yes" 116703b4fe7dSaliguori ;; 116803b4fe7dSaliguori --disable-sparse) sparse="no" 116903b4fe7dSaliguori ;; 11701625af87Saliguori --disable-strip) strip_opt="no" 11711625af87Saliguori ;; 11722f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 11732f9606b3Saliguori ;; 1174ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 1175ea784e3bSJuan Quintela ;; 11762f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 11772f6f5c7aSCorentin Chary ;; 11782f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 11792f6f5c7aSCorentin Chary ;; 1180efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 1181efe556adSCorentin Chary ;; 1182efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 1183efe556adSCorentin Chary ;; 1184443f1376Sbellard --disable-slirp) slirp="no" 1185c20709aaSbellard ;; 11867c57bdd8SMarc-André Lureau --enable-slirp=git) slirp="git" 11877c57bdd8SMarc-André Lureau ;; 1188675b9b53SMarc-André Lureau --enable-slirp=system) slirp="system" 1189675b9b53SMarc-André Lureau ;; 1190e0e6c8c0Saliguori --disable-vde) vde="no" 11918a16d273Sths ;; 1192dfb278bdSJuan Quintela --enable-vde) vde="yes" 1193dfb278bdSJuan Quintela ;; 119458952137SVincenzo Maffione --disable-netmap) netmap="no" 119558952137SVincenzo Maffione ;; 119658952137SVincenzo Maffione --enable-netmap) netmap="yes" 119758952137SVincenzo Maffione ;; 1198e37630caSaliguori --disable-xen) xen="no" 1199e37630caSaliguori ;; 1200fc321b4bSJuan Quintela --enable-xen) xen="yes" 1201fc321b4bSJuan Quintela ;; 1202eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 1203eb6fda0fSAnthony PERARD ;; 1204eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 1205eb6fda0fSAnthony PERARD ;; 12062e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 12072e4d9fb1Saurel32 ;; 12084ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 12094ffcedb6SJuan Quintela ;; 12107ba1e619Saliguori --disable-kvm) kvm="no" 12117ba1e619Saliguori ;; 1212b31a0277SJuan Quintela --enable-kvm) kvm="yes" 1213b31a0277SJuan Quintela ;; 1214b0cb0a66SVincent Palatin --disable-hax) hax="no" 1215180fb750Szhanghailiang ;; 1216b0cb0a66SVincent Palatin --enable-hax) hax="yes" 1217180fb750Szhanghailiang ;; 1218c97d6d2cSSergio Andres Gomez Del Real --disable-hvf) hvf="no" 1219c97d6d2cSSergio Andres Gomez Del Real ;; 1220c97d6d2cSSergio Andres Gomez Del Real --enable-hvf) hvf="yes" 1221c97d6d2cSSergio Andres Gomez Del Real ;; 1222d661d9a4SJustin Terry (VM) --disable-whpx) whpx="no" 1223d661d9a4SJustin Terry (VM) ;; 1224d661d9a4SJustin Terry (VM) --enable-whpx) whpx="yes" 1225d661d9a4SJustin Terry (VM) ;; 12269195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 12279195b2c2SStefan Weil ;; 12289195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 12299195b2c2SStefan Weil ;; 123047e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 123147e98658SCorey Bryant ;; 123247e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 123347e98658SCorey Bryant ;; 1234b3f6ea7eSPaolo Bonzini --disable-tcg) tcg="no" 1235b3f6ea7eSPaolo Bonzini ;; 1236b3f6ea7eSPaolo Bonzini --enable-tcg) tcg="yes" 1237b3f6ea7eSPaolo Bonzini ;; 12385a22ab71SYang Zhong --disable-malloc-trim) malloc_trim="no" 12395a22ab71SYang Zhong ;; 12405a22ab71SYang Zhong --enable-malloc-trim) malloc_trim="yes" 12415a22ab71SYang Zhong ;; 1242cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 1243cd4ec0b4SGerd Hoffmann ;; 1244cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 1245cd4ec0b4SGerd Hoffmann ;; 1246c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 1247c589b249SRonnie Sahlberg ;; 1248c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 1249c589b249SRonnie Sahlberg ;; 12506542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 12516542aa9cSPeter Lieven ;; 12526542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 12536542aa9cSPeter Lieven ;; 125405c2a3e7Sbellard --enable-profiler) profiler="yes" 125505c2a3e7Sbellard ;; 125614821030SPavel Borzenkov --disable-cocoa) cocoa="no" 125714821030SPavel Borzenkov ;; 1258c2de5c91Smalc --enable-cocoa) 1259c2de5c91Smalc cocoa="yes" ; 126089138857SStefan Weil audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)" 12615b0753e0Sbellard ;; 1262cad25d69Spbrook --disable-system) softmmu="no" 12630a8e90f4Spbrook ;; 1264cad25d69Spbrook --enable-system) softmmu="yes" 12650a8e90f4Spbrook ;; 12660953a80fSZachary Amsden --disable-user) 12670953a80fSZachary Amsden linux_user="no" ; 12680953a80fSZachary Amsden bsd_user="no" ; 12690953a80fSZachary Amsden ;; 12700953a80fSZachary Amsden --enable-user) ;; 1271831b7825Sths --disable-linux-user) linux_user="no" 12720a8e90f4Spbrook ;; 1273831b7825Sths --enable-linux-user) linux_user="yes" 1274831b7825Sths ;; 127584778508Sblueswir1 --disable-bsd-user) bsd_user="no" 127684778508Sblueswir1 ;; 127784778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 127884778508Sblueswir1 ;; 127940d6444eSAvi Kivity --enable-pie) pie="yes" 128034005a00SKirill A. Shutemov ;; 128140d6444eSAvi Kivity --disable-pie) pie="no" 128234005a00SKirill A. Shutemov ;; 128385aa5189Sbellard --enable-werror) werror="yes" 128485aa5189Sbellard ;; 128585aa5189Sbellard --disable-werror) werror="no" 128685aa5189Sbellard ;; 128763678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 128863678e17SSteven Noonan ;; 128963678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 129063678e17SSteven Noonan ;; 1291*1e4f6065SDaniele Buono --enable-safe-stack) safe_stack="yes" 1292*1e4f6065SDaniele Buono ;; 1293*1e4f6065SDaniele Buono --disable-safe-stack) safe_stack="no" 1294*1e4f6065SDaniele Buono ;; 12954d3b6f6eSbalrog --disable-curses) curses="no" 12964d3b6f6eSbalrog ;; 1297c584a6d0SJuan Quintela --enable-curses) curses="yes" 1298c584a6d0SJuan Quintela ;; 1299e08bb301SSamuel Thibault --disable-iconv) iconv="no" 1300e08bb301SSamuel Thibault ;; 1301e08bb301SSamuel Thibault --enable-iconv) iconv="yes" 1302e08bb301SSamuel Thibault ;; 1303769ce76dSAlexander Graf --disable-curl) curl="no" 1304769ce76dSAlexander Graf ;; 1305788c8196SJuan Quintela --enable-curl) curl="yes" 1306788c8196SJuan Quintela ;; 13072df87df7SJuan Quintela --disable-fdt) fdt="no" 13082df87df7SJuan Quintela ;; 13092df87df7SJuan Quintela --enable-fdt) fdt="yes" 13102df87df7SJuan Quintela ;; 13115c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 13125c6c3a6cSChristoph Hellwig ;; 13135c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 13145c6c3a6cSChristoph Hellwig ;; 1315c10dd856SAarushi Mehta --disable-linux-io-uring) linux_io_uring="no" 1316c10dd856SAarushi Mehta ;; 1317c10dd856SAarushi Mehta --enable-linux-io-uring) linux_io_uring="yes" 1318c10dd856SAarushi Mehta ;; 1319758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 1320758e8e38SVenkateswararao Jujjuri (JV) ;; 1321758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 1322758e8e38SVenkateswararao Jujjuri (JV) ;; 1323a40161cbSPaolo Bonzini --disable-membarrier) membarrier="no" 1324a40161cbSPaolo Bonzini ;; 1325a40161cbSPaolo Bonzini --enable-membarrier) membarrier="yes" 1326a40161cbSPaolo Bonzini ;; 132777755340Sths --disable-blobs) blobs="no" 132877755340Sths ;; 13297e563bfbSThomas Huth --with-pkgversion=*) pkgversion="$optarg" 13304a19f1ecSpbrook ;; 1331519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1332519175a2SAlex Barcelo ;; 133370c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 133470c60c08SStefan Hajnoczi ;; 133570c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 133670c60c08SStefan Hajnoczi ;; 13377d992e4dSPeter Lieven --enable-debug-stack-usage) debug_stack_usage="yes" 13387d992e4dSPeter Lieven ;; 1339f0d92b56SLongpeng(Mike) --enable-crypto-afalg) crypto_afalg="yes" 1340f0d92b56SLongpeng(Mike) ;; 1341f0d92b56SLongpeng(Mike) --disable-crypto-afalg) crypto_afalg="no" 1342f0d92b56SLongpeng(Mike) ;; 1343a25dba17SJuan Quintela --disable-docs) docs="no" 134470ec5dc0SAnthony Liguori ;; 1345a25dba17SJuan Quintela --enable-docs) docs="yes" 134683a3ab8bSJuan Quintela ;; 1347d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1348d5970055SMichael S. Tsirkin ;; 1349d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1350d5970055SMichael S. Tsirkin ;; 1351042cea27SGonglei --disable-vhost-crypto) vhost_crypto="no" 1352042cea27SGonglei ;; 1353299e6f19SPaolo Bonzini --enable-vhost-crypto) vhost_crypto="yes" 1354042cea27SGonglei ;; 13555e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 13565e9be92dSNicholas Bellinger ;; 13575e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 13585e9be92dSNicholas Bellinger ;; 1359fc0b9b0eSStefan Hajnoczi --disable-vhost-vsock) vhost_vsock="no" 1360fc0b9b0eSStefan Hajnoczi ;; 1361fc0b9b0eSStefan Hajnoczi --enable-vhost-vsock) vhost_vsock="yes" 1362fc0b9b0eSStefan Hajnoczi ;; 136398fc1adaSDr. David Alan Gilbert --disable-vhost-user-fs) vhost_user_fs="no" 136498fc1adaSDr. David Alan Gilbert ;; 136598fc1adaSDr. David Alan Gilbert --enable-vhost-user-fs) vhost_user_fs="yes" 136698fc1adaSDr. David Alan Gilbert ;; 1367da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 136820ff075bSMichael Walle ;; 1369da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 137020ff075bSMichael Walle ;; 1371f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1372f27aaf4bSChristian Brunner ;; 1373f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1374f27aaf4bSChristian Brunner ;; 13758c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 13768c84cf11SSergei Trofimovich ;; 13778c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 13788c84cf11SSergei Trofimovich ;; 13797b02f544SMarc-André Lureau --disable-smartcard) smartcard="no" 1380111a38b0SRobert Relyea ;; 13817b02f544SMarc-André Lureau --enable-smartcard) smartcard="yes" 1382111a38b0SRobert Relyea ;; 13832b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 13842b2325ffSGerd Hoffmann ;; 13852b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 13862b2325ffSGerd Hoffmann ;; 138769354a83SHans de Goede --disable-usb-redir) usb_redir="no" 138869354a83SHans de Goede ;; 138969354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 139069354a83SHans de Goede ;; 13911ece9905SAlon Levy --disable-zlib-test) zlib="no" 13921ece9905SAlon Levy ;; 1393b25c9dffSStefan Weil --disable-lzo) lzo="no" 1394b25c9dffSStefan Weil ;; 1395607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1396607dacd0Sqiaonuohan ;; 1397b25c9dffSStefan Weil --disable-snappy) snappy="no" 1398b25c9dffSStefan Weil ;; 1399607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1400607dacd0Sqiaonuohan ;; 14016b383c08SPeter Wu --disable-bzip2) bzip2="no" 14026b383c08SPeter Wu ;; 14036b383c08SPeter Wu --enable-bzip2) bzip2="yes" 14046b383c08SPeter Wu ;; 140583bc1f97SJulio Faracco --enable-lzfse) lzfse="yes" 140683bc1f97SJulio Faracco ;; 140783bc1f97SJulio Faracco --disable-lzfse) lzfse="no" 140883bc1f97SJulio Faracco ;; 14093a678481SJuan Quintela --disable-zstd) zstd="no" 14103a678481SJuan Quintela ;; 14113a678481SJuan Quintela --enable-zstd) zstd="yes" 14123a678481SJuan Quintela ;; 1413d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1414d138cee9SMichael Roth ;; 1415d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1416d138cee9SMichael Roth ;; 14179dacf32dSYossi Hindin --enable-guest-agent-msi) guest_agent_msi="yes" 14189dacf32dSYossi Hindin ;; 14199dacf32dSYossi Hindin --disable-guest-agent-msi) guest_agent_msi="no" 14209dacf32dSYossi Hindin ;; 1421d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1422d9840e25STomoki Sekiyama ;; 1423d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1424d9840e25STomoki Sekiyama ;; 1425d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1426d9840e25STomoki Sekiyama ;; 1427d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1428d9840e25STomoki Sekiyama ;; 1429d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1430d9840e25STomoki Sekiyama ;; 1431d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1432d9840e25STomoki Sekiyama ;; 14334b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 14344b1c11fdSDaniel P. Berrange ;; 14354b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 14364b1c11fdSDaniel P. Berrange ;; 1437f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1438f794573eSEduardo Otubo ;; 1439f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1440f794573eSEduardo Otubo ;; 1441eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1442eb100396SBharata B Rao ;; 144386583a07SLiam Merwick --disable-avx2) avx2_opt="no" 144486583a07SLiam Merwick ;; 144586583a07SLiam Merwick --enable-avx2) avx2_opt="yes" 144686583a07SLiam Merwick ;; 14476b8cd447SRobert Hoo --disable-avx512f) avx512f_opt="no" 14486b8cd447SRobert Hoo ;; 14496b8cd447SRobert Hoo --enable-avx512f) avx512f_opt="yes" 14506b8cd447SRobert Hoo ;; 14516b8cd447SRobert Hoo 1452eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1453eb100396SBharata B Rao ;; 145452b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 145552b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1456583f6e7bSStefan Hajnoczi ;; 1457cb6414dfSFam Zheng --enable-vhdx|--disable-vhdx) 1458cb6414dfSFam Zheng echo "$0: $opt is obsolete, VHDX driver is always built" >&2 1459cb6414dfSFam Zheng ;; 1460315d3184SFam Zheng --enable-uuid|--disable-uuid) 1461315d3184SFam Zheng echo "$0: $opt is obsolete, UUID support is always built" >&2 1462315d3184SFam Zheng ;; 1463a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1464a4ccabcfSAnthony Liguori ;; 1465a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1466a4ccabcfSAnthony Liguori ;; 1467a1c5e949SDaniel P. Berrange --tls-priority=*) tls_priority="$optarg" 1468a1c5e949SDaniel P. Berrange ;; 1469ddbb0d09SDaniel P. Berrange --disable-gnutls) gnutls="no" 1470ddbb0d09SDaniel P. Berrange ;; 1471ddbb0d09SDaniel P. Berrange --enable-gnutls) gnutls="yes" 1472ddbb0d09SDaniel P. Berrange ;; 147391bfcdb0SDaniel P. Berrange --disable-nettle) nettle="no" 147491bfcdb0SDaniel P. Berrange ;; 147591bfcdb0SDaniel P. Berrange --enable-nettle) nettle="yes" 147691bfcdb0SDaniel P. Berrange ;; 147791bfcdb0SDaniel P. Berrange --disable-gcrypt) gcrypt="no" 147891bfcdb0SDaniel P. Berrange ;; 147991bfcdb0SDaniel P. Berrange --enable-gcrypt) gcrypt="yes" 148091bfcdb0SDaniel P. Berrange ;; 14818953caf3SDaniel P. Berrange --disable-auth-pam) auth_pam="no" 14828953caf3SDaniel P. Berrange ;; 14838953caf3SDaniel P. Berrange --enable-auth-pam) auth_pam="yes" 14848953caf3SDaniel P. Berrange ;; 14852da776dbSMichael R. Hines --enable-rdma) rdma="yes" 14862da776dbSMichael R. Hines ;; 14872da776dbSMichael R. Hines --disable-rdma) rdma="no" 14882da776dbSMichael R. Hines ;; 148921ab34c9SMarcel Apfelbaum --enable-pvrdma) pvrdma="yes" 149021ab34c9SMarcel Apfelbaum ;; 149121ab34c9SMarcel Apfelbaum --disable-pvrdma) pvrdma="no" 149221ab34c9SMarcel Apfelbaum ;; 1493bbbf9bfbSStefan Weil --disable-vte) vte="no" 1494bbbf9bfbSStefan Weil ;; 1495bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1496bbbf9bfbSStefan Weil ;; 14979d9e1521SGerd Hoffmann --disable-virglrenderer) virglrenderer="no" 14989d9e1521SGerd Hoffmann ;; 14999d9e1521SGerd Hoffmann --enable-virglrenderer) virglrenderer="yes" 15009d9e1521SGerd Hoffmann ;; 1501e91c793cSCole Robinson --disable-tpm) tpm="no" 1502e91c793cSCole Robinson ;; 1503ab214c29SStefan Berger --enable-tpm) tpm="yes" 1504ab214c29SStefan Berger ;; 1505b10d49d7SPino Toscano --disable-libssh) libssh="no" 15060a12ec87SRichard W.M. Jones ;; 1507b10d49d7SPino Toscano --enable-libssh) libssh="yes" 15080a12ec87SRichard W.M. Jones ;; 1509ed1701c6SDr. David Alan Gilbert --disable-live-block-migration) live_block_migration="no" 1510ed1701c6SDr. David Alan Gilbert ;; 1511ed1701c6SDr. David Alan Gilbert --enable-live-block-migration) live_block_migration="yes" 1512ed1701c6SDr. David Alan Gilbert ;; 1513a99d57bbSWanlong Gao --disable-numa) numa="no" 1514a99d57bbSWanlong Gao ;; 1515a99d57bbSWanlong Gao --enable-numa) numa="yes" 1516a99d57bbSWanlong Gao ;; 1517ed279a06SKlim Kireev --disable-libxml2) libxml2="no" 1518ed279a06SKlim Kireev ;; 1519ed279a06SKlim Kireev --enable-libxml2) libxml2="yes" 1520ed279a06SKlim Kireev ;; 15212847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 15222847b469SFam Zheng ;; 15232847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 15242847b469SFam Zheng ;; 15257b01cb97SAlexandre Derumier --disable-jemalloc) jemalloc="no" 15267b01cb97SAlexandre Derumier ;; 15277b01cb97SAlexandre Derumier --enable-jemalloc) jemalloc="yes" 15287b01cb97SAlexandre Derumier ;; 1529a6b1d4c0SChanglong Xie --disable-replication) replication="no" 1530a6b1d4c0SChanglong Xie ;; 1531a6b1d4c0SChanglong Xie --enable-replication) replication="yes" 1532a6b1d4c0SChanglong Xie ;; 1533da92c3ffSAshish Mittal --disable-vxhs) vxhs="no" 1534da92c3ffSAshish Mittal ;; 1535da92c3ffSAshish Mittal --enable-vxhs) vxhs="yes" 1536da92c3ffSAshish Mittal ;; 15372f740136SJeff Cody --disable-bochs) bochs="no" 15382f740136SJeff Cody ;; 15392f740136SJeff Cody --enable-bochs) bochs="yes" 15402f740136SJeff Cody ;; 15412f740136SJeff Cody --disable-cloop) cloop="no" 15422f740136SJeff Cody ;; 15432f740136SJeff Cody --enable-cloop) cloop="yes" 15442f740136SJeff Cody ;; 15452f740136SJeff Cody --disable-dmg) dmg="no" 15462f740136SJeff Cody ;; 15472f740136SJeff Cody --enable-dmg) dmg="yes" 15482f740136SJeff Cody ;; 15492f740136SJeff Cody --disable-qcow1) qcow1="no" 15502f740136SJeff Cody ;; 15512f740136SJeff Cody --enable-qcow1) qcow1="yes" 15522f740136SJeff Cody ;; 15532f740136SJeff Cody --disable-vdi) vdi="no" 15542f740136SJeff Cody ;; 15552f740136SJeff Cody --enable-vdi) vdi="yes" 15562f740136SJeff Cody ;; 15572f740136SJeff Cody --disable-vvfat) vvfat="no" 15582f740136SJeff Cody ;; 15592f740136SJeff Cody --enable-vvfat) vvfat="yes" 15602f740136SJeff Cody ;; 15612f740136SJeff Cody --disable-qed) qed="no" 15622f740136SJeff Cody ;; 15632f740136SJeff Cody --enable-qed) qed="yes" 15642f740136SJeff Cody ;; 15652f740136SJeff Cody --disable-parallels) parallels="no" 15662f740136SJeff Cody ;; 15672f740136SJeff Cody --enable-parallels) parallels="yes" 15682f740136SJeff Cody ;; 15692f740136SJeff Cody --disable-sheepdog) sheepdog="no" 15702f740136SJeff Cody ;; 15712f740136SJeff Cody --enable-sheepdog) sheepdog="yes" 15722f740136SJeff Cody ;; 1573e6a74868SMarc-André Lureau --disable-vhost-user) vhost_user="no" 1574e6a74868SMarc-André Lureau ;; 1575299e6f19SPaolo Bonzini --enable-vhost-user) vhost_user="yes" 1576299e6f19SPaolo Bonzini ;; 1577299e6f19SPaolo Bonzini --disable-vhost-kernel) vhost_kernel="no" 1578299e6f19SPaolo Bonzini ;; 1579299e6f19SPaolo Bonzini --enable-vhost-kernel) vhost_kernel="yes" 1580e6a74868SMarc-André Lureau ;; 15818ca80760SRichard Henderson --disable-capstone) capstone="no" 15828ca80760SRichard Henderson ;; 15838ca80760SRichard Henderson --enable-capstone) capstone="yes" 15848ca80760SRichard Henderson ;; 1585e219c499SRichard Henderson --enable-capstone=git) capstone="git" 1586e219c499SRichard Henderson ;; 1587e219c499SRichard Henderson --enable-capstone=system) capstone="system" 1588e219c499SRichard Henderson ;; 1589cc84d63aSDaniel P. Berrange --with-git=*) git="$optarg" 1590cc84d63aSDaniel P. Berrange ;; 1591f62bbee5SDaniel P. Berrange --enable-git-update) git_update=yes 1592f62bbee5SDaniel P. Berrange ;; 1593f62bbee5SDaniel P. Berrange --disable-git-update) git_update=no 1594f62bbee5SDaniel P. Berrange ;; 1595ba59fb77SPaolo Bonzini --enable-debug-mutex) debug_mutex=yes 1596ba59fb77SPaolo Bonzini ;; 1597ba59fb77SPaolo Bonzini --disable-debug-mutex) debug_mutex=no 1598ba59fb77SPaolo Bonzini ;; 159917824406SJunyan He --enable-libpmem) libpmem=yes 160017824406SJunyan He ;; 160117824406SJunyan He --disable-libpmem) libpmem=no 160217824406SJunyan He ;; 160375411919SJames Le Cuirot --enable-xkbcommon) xkbcommon=yes 160475411919SJames Le Cuirot ;; 160575411919SJames Le Cuirot --disable-xkbcommon) xkbcommon=no 160675411919SJames Le Cuirot ;; 160740e8c6f4SAlex Bennée --enable-plugins) plugins="yes" 160840e8c6f4SAlex Bennée ;; 160940e8c6f4SAlex Bennée --disable-plugins) plugins="no" 161040e8c6f4SAlex Bennée ;; 1611afc3a8f9SAlex Bennée --enable-containers) use_containers="yes" 1612afc3a8f9SAlex Bennée ;; 1613afc3a8f9SAlex Bennée --disable-containers) use_containers="no" 1614afc3a8f9SAlex Bennée ;; 1615adc28027SAlexander Bulekov --enable-fuzzing) fuzzing=yes 1616adc28027SAlexander Bulekov ;; 1617adc28027SAlexander Bulekov --disable-fuzzing) fuzzing=no 1618adc28027SAlexander Bulekov ;; 1619f48e590aSAlex Bennée --gdb=*) gdb_bin="$optarg" 1620f48e590aSAlex Bennée ;; 1621b767d257SMarek Marczykowski-Górecki --enable-rng-none) rng_none=yes 1622b767d257SMarek Marczykowski-Górecki ;; 1623b767d257SMarek Marczykowski-Górecki --disable-rng-none) rng_none=no 1624b767d257SMarek Marczykowski-Górecki ;; 162554e7aac0SAlexey Krasikov --enable-keyring) secret_keyring="yes" 162654e7aac0SAlexey Krasikov ;; 162754e7aac0SAlexey Krasikov --disable-keyring) secret_keyring="no" 162854e7aac0SAlexey Krasikov ;; 16292d2ad6d0SFam Zheng *) 16302d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 16312d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 16322d2ad6d0SFam Zheng exit 1 16337f1559c6Sbalrog ;; 16347d13299dSbellard esac 16357d13299dSbellarddone 16367d13299dSbellard 163740293e58Sbellardcase "$cpu" in 1638e3608d66SRichard Henderson ppc) 1639e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1640db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 $QEMU_LDFLAGS" 1641e3608d66SRichard Henderson ;; 1642e3608d66SRichard Henderson ppc64) 1643e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1644db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1645e3608d66SRichard Henderson ;; 16469b9c37c3SRichard Henderson sparc) 1647f1079bb8SRichard Henderson CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" 1648db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 -mv8plus $QEMU_LDFLAGS" 16493142255cSblueswir1 ;; 1650ed968ff1SJuan Quintela sparc64) 165179f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 1652db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 16533142255cSblueswir1 ;; 165476d83bdeSths s390) 1655061cdd81SRichard Henderson CPU_CFLAGS="-m31" 1656db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m31 $QEMU_LDFLAGS" 165728d7cc49SRichard Henderson ;; 165828d7cc49SRichard Henderson s390x) 1659061cdd81SRichard Henderson CPU_CFLAGS="-m64" 1660db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 166176d83bdeSths ;; 166240293e58Sbellard i386) 166379f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 1664db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 $QEMU_LDFLAGS" 166540293e58Sbellard ;; 166640293e58Sbellard x86_64) 16677ebee43eSRichard Henderson # ??? Only extremely old AMD cpus do not have cmpxchg16b. 16687ebee43eSRichard Henderson # If we truly care, we should simply detect this case at 16697ebee43eSRichard Henderson # runtime and generate the fallback to serial emulation. 16707ebee43eSRichard Henderson CPU_CFLAGS="-m64 -mcx16" 1671db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1672379f6698SPaul Brook ;; 1673c72b26ecSRichard Henderson x32) 1674c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1675db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-mx32 $QEMU_LDFLAGS" 1676c72b26ecSRichard Henderson ;; 167730163d89SPeter Maydell # No special flags required for other host CPUs 16783142255cSblueswir1esac 16793142255cSblueswir1 16802038f8c8SPaolo Bonzinieval "cross_cc_${cpu}=\$host_cc" 16812038f8c8SPaolo Bonzinicross_cc_vars="$cross_cc_vars cross_cc_${cpu}" 168279f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 168379f3b12fSPeter Crosthwaite 1684affc88ccSPeter Maydell# For user-mode emulation the host arch has to be one we explicitly 1685affc88ccSPeter Maydell# support, even if we're using TCI. 1686affc88ccSPeter Maydellif [ "$ARCH" = "unknown" ]; then 1687affc88ccSPeter Maydell bsd_user="no" 1688affc88ccSPeter Maydell linux_user="no" 1689affc88ccSPeter Maydellfi 1690affc88ccSPeter Maydell 16911cf295beSPhilippe Mathieu-Daudéif [ "$bsd_user" = "no" -a "$linux_user" = "no" -a "$softmmu" = "no" ] ; then 16921cf295beSPhilippe Mathieu-Daudé tcg="no" 16931cf295beSPhilippe Mathieu-Daudéfi 16941cf295beSPhilippe Mathieu-Daudé 169560e0df25SPeter Maydelldefault_target_list="" 169660e0df25SPeter Maydell 16976e92f823SPeter Maydellmak_wilds="" 16986e92f823SPeter Maydell 169960e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 17006e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 170160e0df25SPeter Maydellfi 170260e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 17036e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 170460e0df25SPeter Maydellfi 170560e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 17066e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 170760e0df25SPeter Maydellfi 170860e0df25SPeter Maydell 1709447e133fSAlex Bennéeif test -z "$target_list_exclude"; then 17106e92f823SPeter Maydell for config in $mak_wilds; do 17116e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 17126e92f823SPeter Maydell done 1713447e133fSAlex Bennéeelse 1714447e133fSAlex Bennée exclude_list=$(echo "$target_list_exclude" | sed -e 's/,/ /g') 1715447e133fSAlex Bennée for config in $mak_wilds; do 1716447e133fSAlex Bennée target="$(basename "$config" .mak)" 1717447e133fSAlex Bennée exclude="no" 1718447e133fSAlex Bennée for excl in $exclude_list; do 1719447e133fSAlex Bennée if test "$excl" = "$target"; then 1720447e133fSAlex Bennée exclude="yes" 1721447e133fSAlex Bennée break; 1722447e133fSAlex Bennée fi 1723447e133fSAlex Bennée done 1724447e133fSAlex Bennée if test "$exclude" = "no"; then 1725447e133fSAlex Bennée default_target_list="${default_target_list} $target" 1726447e133fSAlex Bennée fi 1727447e133fSAlex Bennée done 1728447e133fSAlex Bennéefi 17296e92f823SPeter Maydell 1730c53eeaf7SStefan Hajnoczi# Enumerate public trace backends for --help output 173164a6047dSGreg Kurztrace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/')) 1732c53eeaf7SStefan Hajnoczi 1733af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1734af5db58eSpbrookcat << EOF 1735af5db58eSpbrook 1736af5db58eSpbrookUsage: configure [options] 1737af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1738af5db58eSpbrook 173908fb77edSStefan WeilStandard options: 174008fb77edSStefan Weil --help print this message 174108fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 174208fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 174308fb77edSStefan Weil use %M for cpu name [$interp_prefix] 174408fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 174508fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 174608fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 1747447e133fSAlex Bennée --target-list-exclude=LIST exclude a set of targets from the default target-list 174808fb77edSStefan Weil 174908fb77edSStefan WeilAdvanced options (experts only): 175008fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 175108fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 175208fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 175308fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 175408fb77edSStefan Weil build time 175508fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 175608fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 175708fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 175811cde1c8SBruno Dominguez --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS 175908fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 1760d75402b5SAlex Bennée --cross-cc-ARCH=CC use compiler when building ARCH guest test cases 1761d422b2bcSAlex Bennée --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests 176208fb77edSStefan Weil --make=MAKE use specified make [$make] 176308fb77edSStefan Weil --install=INSTALL use specified install [$install] 176408fb77edSStefan Weil --python=PYTHON use specified python [$python] 17652eb054c2SPeter Maydell --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build] 176608fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 1767db1b5f13SThomas Huth --with-git=GIT use specified git [$git] 176808fb77edSStefan Weil --static enable static build [$static] 176908fb77edSStefan Weil --mandir=PATH install man pages in PATH 177008fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 177108fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 177208fb77edSStefan Weil --bindir=PATH install binaries in PATH 177308fb77edSStefan Weil --libdir=PATH install libraries in PATH 1774db1b5f13SThomas Huth --libexecdir=PATH install helper binaries in PATH 177508fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 177608fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 17773d5eecabSGerd Hoffmann --firmwarepath=PATH search PATH for firmware files 1778e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 1779db1b5f13SThomas Huth --with-pkgversion=VERS use specified string as sub-version of the package 178008fb77edSStefan Weil --enable-debug enable common debug build options 1781247724cbSMarc-André Lureau --enable-sanitizers enable default sanitizers 17820aebab04SLingfeng Yang --enable-tsan enable thread sanitizer 178308fb77edSStefan Weil --disable-strip disable stripping binaries 178408fb77edSStefan Weil --disable-werror disable compilation abort on warning 178563678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 178608fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 178708fb77edSStefan Weil Available drivers: $audio_possible_drivers 178808fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 178908fb77edSStefan Weil --block-drv-rw-whitelist=L 179008fb77edSStefan Weil set block driver read-write whitelist 179108fb77edSStefan Weil (affects only QEMU, not qemu-img) 179208fb77edSStefan Weil --block-drv-ro-whitelist=L 179308fb77edSStefan Weil set block driver read-only whitelist 179408fb77edSStefan Weil (affects only QEMU, not qemu-img) 17955b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 1796c53eeaf7SStefan Hajnoczi Available backends: $trace_backend_list 179708fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 179808fb77edSStefan Weil Default:trace-<pid> 1799c23f23b9SMichael Tokarev --disable-slirp disable SLIRP userspace network connectivity 1800c23f23b9SMichael Tokarev --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 18015a22ab71SYang Zhong --enable-malloc-trim enable libc malloc_trim() for memory optimization 1802c23f23b9SMichael Tokarev --oss-lib path to OSS library 1803c23f23b9SMichael Tokarev --cpu=CPU Build for host CPU [$cpu] 180408fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 180533c53c54SDaniel P. Berrange ucontext, sigaltstack, windows 180608fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 180708fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 1808c23f23b9SMichael Tokarev --disable-blobs disable installing provided firmware blobs 1809c23f23b9SMichael Tokarev --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1810c23f23b9SMichael Tokarev --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1811a1c5e949SDaniel P. Berrange --tls-priority default TLS protocol/cipher priority string 1812c12d66aaSLin Ma --enable-gprof QEMU profiling with gprof 1813c12d66aaSLin Ma --enable-profiler profiler support 1814c12d66aaSLin Ma --enable-debug-stack-usage 1815c12d66aaSLin Ma track the maximum stack usage of stacks created by qemu_alloc_stack 181640e8c6f4SAlex Bennée --enable-plugins 181740e8c6f4SAlex Bennée enable plugins via shared library loading 1818afc3a8f9SAlex Bennée --disable-containers don't use containers for cross-building 1819f48e590aSAlex Bennée --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin] 1820c23f23b9SMichael Tokarev 1821c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and 1822c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available: 1823c23f23b9SMichael Tokarev 1824c23f23b9SMichael Tokarev system all system emulation targets 1825c23f23b9SMichael Tokarev user supported user emulation targets 1826c23f23b9SMichael Tokarev linux-user all linux usermode emulation targets 1827c23f23b9SMichael Tokarev bsd-user all BSD usermode emulation targets 1828c23f23b9SMichael Tokarev docs build documentation 1829c23f23b9SMichael Tokarev guest-agent build the QEMU Guest Agent 1830c23f23b9SMichael Tokarev guest-agent-msi build guest agent Windows MSI installation package 1831c23f23b9SMichael Tokarev pie Position Independent Executables 183221e709aaSMarc-André Lureau modules modules support (non-Windows) 1833bd83c861SChristian Ehrhardt module-upgrades try to load modules from alternate paths for upgrades 1834c23f23b9SMichael Tokarev debug-tcg TCG debugging (default is disabled) 1835c23f23b9SMichael Tokarev debug-info debugging information 1836c23f23b9SMichael Tokarev sparse sparse checker 1837*1e4f6065SDaniele Buono safe-stack SafeStack Stack Smash Protection. Depends on 1838*1e4f6065SDaniele Buono clang/llvm >= 3.7 and requires coroutine backend ucontext. 1839c23f23b9SMichael Tokarev 1840ddbb0d09SDaniel P. Berrange gnutls GNUTLS cryptography support 184191bfcdb0SDaniel P. Berrange nettle nettle cryptography support 184291bfcdb0SDaniel P. Berrange gcrypt libgcrypt cryptography support 18438953caf3SDaniel P. Berrange auth-pam PAM access control 1844c23f23b9SMichael Tokarev sdl SDL UI 184504c6e16fSMarkus Armbruster sdl-image SDL Image support for icons 1846c23f23b9SMichael Tokarev gtk gtk UI 1847c23f23b9SMichael Tokarev vte vte support for the gtk UI 1848c23f23b9SMichael Tokarev curses curses UI 1849e08bb301SSamuel Thibault iconv font glyph conversion support 1850c23f23b9SMichael Tokarev vnc VNC UI support 1851c23f23b9SMichael Tokarev vnc-sasl SASL encryption for VNC server 1852c23f23b9SMichael Tokarev vnc-jpeg JPEG lossy compression for VNC server 1853c23f23b9SMichael Tokarev vnc-png PNG compression for VNC server 1854c23f23b9SMichael Tokarev cocoa Cocoa UI (Mac OS X only) 1855c23f23b9SMichael Tokarev virtfs VirtFS 1856fe8fc5aeSPaolo Bonzini mpath Multipath persistent reservation passthrough 1857c23f23b9SMichael Tokarev xen xen backend driver support 185870c292afSAnthony PERARD xen-pci-passthrough PCI passthrough support for Xen 1859c23f23b9SMichael Tokarev brlapi BrlAPI (Braile) 1860c23f23b9SMichael Tokarev curl curl connectivity 1861a40161cbSPaolo Bonzini membarrier membarrier system call (for Linux 4.14+ or Windows) 1862c23f23b9SMichael Tokarev fdt fdt device tree 1863c23f23b9SMichael Tokarev kvm KVM acceleration support 1864b0cb0a66SVincent Palatin hax HAX acceleration support 1865c97d6d2cSSergio Andres Gomez Del Real hvf Hypervisor.framework acceleration support 1866d661d9a4SJustin Terry (VM) whpx Windows Hypervisor Platform acceleration support 186721ab34c9SMarcel Apfelbaum rdma Enable RDMA-based migration 186821ab34c9SMarcel Apfelbaum pvrdma Enable PVRDMA support 1869c23f23b9SMichael Tokarev vde support for vde network 1870c23f23b9SMichael Tokarev netmap support for netmap network 1871c23f23b9SMichael Tokarev linux-aio Linux AIO support 1872c10dd856SAarushi Mehta linux-io-uring Linux io_uring support 1873c23f23b9SMichael Tokarev cap-ng libcap-ng support 1874c23f23b9SMichael Tokarev attr attr and xattr support 1875299e6f19SPaolo Bonzini vhost-net vhost-net kernel acceleration support 1876299e6f19SPaolo Bonzini vhost-vsock virtio sockets device support 1877299e6f19SPaolo Bonzini vhost-scsi vhost-scsi kernel target support 1878299e6f19SPaolo Bonzini vhost-crypto vhost-user-crypto backend support 1879299e6f19SPaolo Bonzini vhost-kernel vhost kernel backend support 1880299e6f19SPaolo Bonzini vhost-user vhost-user backend support 1881c23f23b9SMichael Tokarev spice spice 1882c23f23b9SMichael Tokarev rbd rados block device (rbd) 1883c23f23b9SMichael Tokarev libiscsi iscsi support 1884c23f23b9SMichael Tokarev libnfs nfs support 18857b02f544SMarc-André Lureau smartcard smartcard support (libcacard) 1886c23f23b9SMichael Tokarev libusb libusb (for usb passthrough) 1887ed1701c6SDr. David Alan Gilbert live-block-migration Block migration in the main migration stream 1888c23f23b9SMichael Tokarev usb-redir usb network redirection support 1889c23f23b9SMichael Tokarev lzo support of lzo compression library 1890c23f23b9SMichael Tokarev snappy support of snappy compression library 1891c23f23b9SMichael Tokarev bzip2 support of bzip2 compression library 1892c23f23b9SMichael Tokarev (for reading bzip2-compressed dmg images) 189383bc1f97SJulio Faracco lzfse support of lzfse compression library 189483bc1f97SJulio Faracco (for reading lzfse-compressed dmg images) 18953a678481SJuan Quintela zstd support for zstd compression library 1896d298ac10SDenis Plotnikov (for migration compression and qcow2 cluster compression) 1897c23f23b9SMichael Tokarev seccomp seccomp support 1898c23f23b9SMichael Tokarev coroutine-pool coroutine freelist (better performance) 1899c23f23b9SMichael Tokarev glusterfs GlusterFS backend 1900c23f23b9SMichael Tokarev tpm TPM support 1901b10d49d7SPino Toscano libssh ssh block device support 1902c23f23b9SMichael Tokarev numa libnuma support 1903ed279a06SKlim Kireev libxml2 for Parallels image format 1904c23f23b9SMichael Tokarev tcmalloc tcmalloc support 19057b01cb97SAlexandre Derumier jemalloc jemalloc support 190686583a07SLiam Merwick avx2 AVX2 optimization support 19076b8cd447SRobert Hoo avx512f AVX512F optimization support 1908a6b1d4c0SChanglong Xie replication replication support 1909c12d66aaSLin Ma opengl opengl support 1910c12d66aaSLin Ma virglrenderer virgl rendering support 1911c12d66aaSLin Ma xfsctl xfsctl support 1912c12d66aaSLin Ma qom-cast-debug cast debugging support 19138de73fa8SCleber Rosa tools build qemu-io, qemu-nbd and qemu-img tools 1914da92c3ffSAshish Mittal vxhs Veritas HyperScale vDisk backend support 19152f740136SJeff Cody bochs bochs image format support 19162f740136SJeff Cody cloop cloop image format support 19172f740136SJeff Cody dmg dmg image format support 19182f740136SJeff Cody qcow1 qcow v1 image format support 19192f740136SJeff Cody vdi vdi image format support 19202f740136SJeff Cody vvfat vvfat image format support 19212f740136SJeff Cody qed qed image format support 19222f740136SJeff Cody parallels parallels image format support 19232f740136SJeff Cody sheepdog sheepdog block driver support 1924f0d92b56SLongpeng(Mike) crypto-afalg Linux AF_ALG crypto backend driver 19258ca80760SRichard Henderson capstone capstone disassembler support 1926ba59fb77SPaolo Bonzini debug-mutex mutex debugging support 192717824406SJunyan He libpmem libpmem support 192875411919SJames Le Cuirot xkbcommon xkbcommon support 1929b767d257SMarek Marczykowski-Górecki rng-none dummy RNG, avoid using /dev/(u)random and getrandom() 193008fb77edSStefan Weil 193108fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1932af5db58eSpbrookEOF 19332d2ad6d0SFam Zhengexit 0 1934af5db58eSpbrookfi 1935af5db58eSpbrook 19369c790242SThomas Huth# Remove old dependency files to make sure that they get properly regenerated 1937bb768f71SThomas Huthrm -f */config-devices.mak.d 19389c790242SThomas Huth 19394d6a835dSLaurent Vivier# Remove syscall_nr.h to be sure they will be regenerated in the build 19404d6a835dSLaurent Vivier# directory, not in the source directory 1941bb0cdc03SLaurent Vivierfor arch in alpha hppa m68k xtensa sh4 microblaze arm ppc s390x sparc sparc64 \ 1942686a0fe4SLaurent Vivier i386 x86_64 mips mips64 ; do 19434d6a835dSLaurent Vivier # remove the file if it has been generated in the source directory 19444d6a835dSLaurent Vivier rm -f "${source_path}/linux-user/${arch}/syscall_nr.h" 19454d6a835dSLaurent Vivier # remove the dependency files 194691e5998fSLaurent Vivier for target in ${arch}*-linux-user ; do 194791e5998fSLaurent Vivier test -d "${target}" && find "${target}" -type f -name "*.d" \ 19484d6a835dSLaurent Vivier -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \ 194991e5998fSLaurent Vivier -print | while read file ; do rm "${file}" "${file%.d}.o" ; done 195091e5998fSLaurent Vivier done 19514d6a835dSLaurent Vivierdone 19524d6a835dSLaurent Vivier 1953faf44142SDaniel P. Berrangéif test -z "$python" 1954faf44142SDaniel P. Berrangéthen 1955c53eeaf7SStefan Hajnoczi error_exit "Python not found. Use --python=/path/to/python" 1956c53eeaf7SStefan Hajnoczifi 1957c53eeaf7SStefan Hajnoczi 1958c53eeaf7SStefan Hajnoczi# Note that if the Python conditional here evaluates True we will exit 1959c53eeaf7SStefan Hajnoczi# with status 1 which is a shell 'false' value. 1960ddf90699SEduardo Habkostif ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then 1961ddf90699SEduardo Habkost error_exit "Cannot use '$python', Python >= 3.5 is required." \ 1962c53eeaf7SStefan Hajnoczi "Use --python=/path/to/python to specify a supported Python." 1963c53eeaf7SStefan Hajnoczifi 1964c53eeaf7SStefan Hajnoczi 1965755ee70fSCleber Rosa# Preserve python version since some functionality is dependent on it 1966406ab2f3SCleber Rosapython_version=$($python -c 'import sys; print("%d.%d.%d" % (sys.version_info[0], sys.version_info[1], sys.version_info[2]))' 2>/dev/null) 1967755ee70fSCleber Rosa 1968c53eeaf7SStefan Hajnoczi# Suppress writing compiled files 1969c53eeaf7SStefan Hajnoczipython="$python -B" 1970c53eeaf7SStefan Hajnoczi 19719aae6e54SDaniel Henrique Barboza# Check that the C compiler works. Doing this here before testing 19729aae6e54SDaniel Henrique Barboza# the host CPU ensures that we had a valid CC to autodetect the 19739aae6e54SDaniel Henrique Barboza# $cpu var (and we should bail right here if that's not the case). 19749aae6e54SDaniel Henrique Barboza# It also allows the help message to be printed without a CC. 19759aae6e54SDaniel Henrique Barbozawrite_c_skeleton; 19769aae6e54SDaniel Henrique Barbozaif compile_object ; then 19779aae6e54SDaniel Henrique Barboza : C compiler works ok 19789aae6e54SDaniel Henrique Barbozaelse 19799aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" either does not exist or does not work" 19809aae6e54SDaniel Henrique Barbozafi 19819aae6e54SDaniel Henrique Barbozaif ! compile_prog ; then 19829aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" cannot build an executable (is your linker broken?)" 19839aae6e54SDaniel Henrique Barbozafi 19849aae6e54SDaniel Henrique Barboza 1985359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 1986359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 1987359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 1988359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 1989359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1990359bc95dSPeter Maydell else 199176ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1992359bc95dSPeter Maydell fi 1993359bc95dSPeter Maydellfi 1994359bc95dSPeter Maydell 19959c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 19969c83ffd8SPeter Maydell# by default. Only enable by default for git builds 19979c83ffd8SPeter Maydellif test -z "$werror" ; then 1998fd73745dSAlexey Kardashevskiy if test -e "$source_path/.git" && \ 1999e633a5c6SEric Blake { test "$linux" = "yes" || test "$mingw32" = "yes"; }; then 20009c83ffd8SPeter Maydell werror="yes" 20019c83ffd8SPeter Maydell else 20029c83ffd8SPeter Maydell werror="no" 20039c83ffd8SPeter Maydell fi 20049c83ffd8SPeter Maydellfi 20059c83ffd8SPeter Maydell 2006fb59dabdSPeter Maydellif test "$bogus_os" = "yes"; then 2007fb59dabdSPeter Maydell # Now that we know that we're not printing the help and that 2008fb59dabdSPeter Maydell # the compiler works (so the results of the check_defines we used 2009fb59dabdSPeter Maydell # to identify the OS are reliable), if we didn't recognize the 2010fb59dabdSPeter Maydell # host OS we should stop now. 2011951fedfcSPeter Maydell error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')" 2012fb59dabdSPeter Maydellfi 2013fb59dabdSPeter Maydell 2014efc6c070SThomas Huth# Check whether the compiler matches our minimum requirements: 2015efc6c070SThomas Huthcat > $TMPC << EOF 2016efc6c070SThomas Huth#if defined(__clang_major__) && defined(__clang_minor__) 2017efc6c070SThomas Huth# ifdef __apple_build_version__ 2018efc6c070SThomas Huth# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1) 2019efc6c070SThomas Huth# error You need at least XCode Clang v5.1 to compile QEMU 2020efc6c070SThomas Huth# endif 2021efc6c070SThomas Huth# else 2022efc6c070SThomas Huth# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4) 2023efc6c070SThomas Huth# error You need at least Clang v3.4 to compile QEMU 2024efc6c070SThomas Huth# endif 2025efc6c070SThomas Huth# endif 2026efc6c070SThomas Huth#elif defined(__GNUC__) && defined(__GNUC_MINOR__) 2027efc6c070SThomas Huth# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) 2028efc6c070SThomas Huth# error You need at least GCC v4.8 to compile QEMU 2029efc6c070SThomas Huth# endif 2030efc6c070SThomas Huth#else 2031efc6c070SThomas Huth# error You either need GCC or Clang to compiler QEMU 2032efc6c070SThomas Huth#endif 2033efc6c070SThomas Huthint main (void) { return 0; } 2034efc6c070SThomas HuthEOF 2035efc6c070SThomas Huthif ! compile_prog "" "" ; then 2036efc6c070SThomas Huth error_exit "You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)" 2037efc6c070SThomas Huthfi 2038efc6c070SThomas Huth 203900849b92SRichard Henderson# Accumulate -Wfoo and -Wno-bar separately. 204000849b92SRichard Henderson# We will list all of the enable flags first, and the disable flags second. 204100849b92SRichard Henderson# Note that we do not add -Werror, because that would enable it for all 204200849b92SRichard Henderson# configure tests. If a configure test failed due to -Werror this would 204300849b92SRichard Henderson# just silently disable some features, so it's too error prone. 204400849b92SRichard Henderson 204500849b92SRichard Hendersonwarn_flags= 204600849b92SRichard Hendersonadd_to warn_flags -Wold-style-declaration 204700849b92SRichard Hendersonadd_to warn_flags -Wold-style-definition 204800849b92SRichard Hendersonadd_to warn_flags -Wtype-limits 204900849b92SRichard Hendersonadd_to warn_flags -Wformat-security 205000849b92SRichard Hendersonadd_to warn_flags -Wformat-y2k 205100849b92SRichard Hendersonadd_to warn_flags -Winit-self 205200849b92SRichard Hendersonadd_to warn_flags -Wignored-qualifiers 205300849b92SRichard Hendersonadd_to warn_flags -Wempty-body 205400849b92SRichard Hendersonadd_to warn_flags -Wnested-externs 205500849b92SRichard Hendersonadd_to warn_flags -Wendif-labels 205600849b92SRichard Hendersonadd_to warn_flags -Wexpansion-to-defined 205700849b92SRichard Henderson 205800849b92SRichard Hendersonnowarn_flags= 205900849b92SRichard Hendersonadd_to nowarn_flags -Wno-initializer-overrides 206000849b92SRichard Hendersonadd_to nowarn_flags -Wno-missing-include-dirs 206100849b92SRichard Hendersonadd_to nowarn_flags -Wno-shift-negative-value 206200849b92SRichard Hendersonadd_to nowarn_flags -Wno-string-plus-int 206300849b92SRichard Hendersonadd_to nowarn_flags -Wno-typedef-redefinition 2064aabab967SRichard Hendersonadd_to nowarn_flags -Wno-tautological-type-limit-compare 2065bac8d222SRichard Hendersonadd_to nowarn_flags -Wno-psabi 206600849b92SRichard Henderson 206700849b92SRichard Hendersongcc_flags="$warn_flags $nowarn_flags" 206893b25869SJohn Snow 206993b25869SJohn Snowcc_has_warning_flag() { 207093b25869SJohn Snow write_c_skeleton; 207193b25869SJohn Snow 2072a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 2073a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 2074a1d29d6cSPeter Maydell # warning options). 207593b25869SJohn Snow optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 207693b25869SJohn Snow compile_prog "-Werror $optflag" "" 207793b25869SJohn Snow} 207893b25869SJohn Snow 207993b25869SJohn Snowfor flag in $gcc_flags; do 208093b25869SJohn Snow if cc_has_warning_flag $flag ; then 20818d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 20828d05095cSPaolo Bonzini fi 20838d05095cSPaolo Bonzinidone 20848d05095cSPaolo Bonzini 208563678e17SSteven Noonanif test "$stack_protector" != "no"; then 2086fccd35a0SRodrigo Rebello cat > $TMPC << EOF 2087fccd35a0SRodrigo Rebelloint main(int argc, char *argv[]) 2088fccd35a0SRodrigo Rebello{ 2089fccd35a0SRodrigo Rebello char arr[64], *p = arr, *c = argv[0]; 2090fccd35a0SRodrigo Rebello while (*c) { 2091fccd35a0SRodrigo Rebello *p++ = *c++; 2092fccd35a0SRodrigo Rebello } 2093fccd35a0SRodrigo Rebello return 0; 2094fccd35a0SRodrigo Rebello} 2095fccd35a0SRodrigo RebelloEOF 209663678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 20973b463a3fSMiroslav Rezanina sp_on=0 209863678e17SSteven Noonan for flag in $gcc_flags; do 2099590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 2100590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 2101590e5dd9SPeter Maydell if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 2102590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 210363678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 2104db5adeaaSPaolo Bonzini QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 21053b463a3fSMiroslav Rezanina sp_on=1 210663678e17SSteven Noonan break 210763678e17SSteven Noonan fi 210863678e17SSteven Noonan done 21093b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 21103b463a3fSMiroslav Rezanina if test $sp_on = 0; then 21113b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 21123b463a3fSMiroslav Rezanina fi 21133b463a3fSMiroslav Rezanina fi 211437746c5eSMarc-André Lureaufi 211537746c5eSMarc-André Lureau 211620bc94a2SPaolo Bonzini# Disable -Wmissing-braces on older compilers that warn even for 211720bc94a2SPaolo Bonzini# the "universal" C zero initializer {0}. 211820bc94a2SPaolo Bonzinicat > $TMPC << EOF 211920bc94a2SPaolo Bonzinistruct { 212020bc94a2SPaolo Bonzini int a[2]; 212120bc94a2SPaolo Bonzini} x = {0}; 212220bc94a2SPaolo BonziniEOF 212320bc94a2SPaolo Bonziniif compile_object "-Werror" "" ; then 212420bc94a2SPaolo Bonzini : 212520bc94a2SPaolo Bonzinielse 212620bc94a2SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces" 212720bc94a2SPaolo Bonzinifi 212820bc94a2SPaolo Bonzini 212921e709aaSMarc-André Lureau# Our module code doesn't support Windows 213021e709aaSMarc-André Lureauif test "$modules" = "yes" && test "$mingw32" = "yes" ; then 213121e709aaSMarc-André Lureau error_exit "Modules are not available for Windows" 213221e709aaSMarc-André Lureaufi 213321e709aaSMarc-André Lureau 2134bd83c861SChristian Ehrhardt# module_upgrades is only reasonable if modules are enabled 2135bd83c861SChristian Ehrhardtif test "$modules" = "no" && test "$module_upgrades" = "yes" ; then 2136bd83c861SChristian Ehrhardt error_exit "Can't enable module-upgrades as Modules are not enabled" 2137bd83c861SChristian Ehrhardtfi 2138bd83c861SChristian Ehrhardt 2139d376e9deSThomas Huth# Static linking is not possible with modules or PIE 214040d6444eSAvi Kivityif test "$static" = "yes" ; then 2141aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 2142aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 2143aa0d1f44SPaolo Bonzini fi 214440d6444eSAvi Kivityfi 214540d6444eSAvi Kivity 2146768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 2147768b7855SEmilio G. Cota cat > $TMPC << EOF 2148768b7855SEmilio G. Cotastatic __thread int tls_var; 2149768b7855SEmilio G. Cotaint main(void) { return tls_var; } 2150768b7855SEmilio G. CotaEOF 2151768b7855SEmilio G. Cota 2152768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 2153768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 2154768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 2155768b7855SEmilio G. Cotafi 2156768b7855SEmilio G. Cota 215740d6444eSAvi Kivitycat > $TMPC << EOF 215821d4a791SAvi Kivity 215921d4a791SAvi Kivity#ifdef __linux__ 216021d4a791SAvi Kivity# define THREAD __thread 216121d4a791SAvi Kivity#else 216221d4a791SAvi Kivity# define THREAD 216321d4a791SAvi Kivity#endif 216421d4a791SAvi Kivitystatic THREAD int tls_var; 216521d4a791SAvi Kivityint main(void) { return tls_var; } 216640d6444eSAvi KivityEOF 2167b2634124SRichard Henderson 2168b2634124SRichard Henderson# Check we support --no-pie first; we will need this for building ROMs. 2169412aeacdSAlex Bennéeif compile_prog "-Werror -fno-pie" "-no-pie"; then 2170412aeacdSAlex Bennée CFLAGS_NOPIE="-fno-pie" 2171b2634124SRichard Henderson LDFLAGS_NOPIE="-no-pie" 2172412aeacdSAlex Bennéefi 2173412aeacdSAlex Bennée 217412781462SRichard Hendersonif test "$static" = "yes"; then 2175eca7a8e6SRichard Henderson if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then 217612781462SRichard Henderson QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 217712781462SRichard Henderson QEMU_LDFLAGS="-static-pie $QEMU_LDFLAGS" 217812781462SRichard Henderson pie="yes" 217912781462SRichard Henderson elif test "$pie" = "yes"; then 218012781462SRichard Henderson error_exit "-static-pie not available due to missing toolchain support" 218112781462SRichard Henderson else 218212781462SRichard Henderson QEMU_LDFLAGS="-static $QEMU_LDFLAGS" 218312781462SRichard Henderson pie="no" 218412781462SRichard Henderson fi 218512781462SRichard Hendersonelif test "$pie" = "no"; then 21862c674109SRichard Henderson QEMU_CFLAGS="$CFLAGS_NOPIE $QEMU_CFLAGS" 21872c674109SRichard Henderson QEMU_LDFLAGS="$LDFLAGS_NOPIE $QEMU_LDFLAGS" 2188eca7a8e6SRichard Hendersonelif compile_prog "-Werror -fPIE -DPIE" "-pie"; then 218940d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 2190db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-pie $QEMU_LDFLAGS" 219140d6444eSAvi Kivity pie="yes" 21922c674109SRichard Hendersonelif test "$pie" = "yes"; then 219376ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 219440d6444eSAvi Kivityelse 219540d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 219640d6444eSAvi Kivity pie="no" 219740d6444eSAvi Kivityfi 219840d6444eSAvi Kivity 2199e6cbd751SRichard Henderson# Detect support for PT_GNU_RELRO + DT_BIND_NOW. 2200e6cbd751SRichard Henderson# The combination is known as "full relro", because .got.plt is read-only too. 2201e6cbd751SRichard Hendersonif compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 2202e6cbd751SRichard Henderson QEMU_LDFLAGS="-Wl,-z,relro -Wl,-z,now $QEMU_LDFLAGS" 2203e6cbd751SRichard Hendersonfi 2204e6cbd751SRichard Henderson 220509dada40SPaolo Bonzini########################################## 220609dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 220709dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 220809dada40SPaolo Bonzini# specification is necessary 220909dada40SPaolo Bonzini 221009dada40SPaolo Bonziniif test "$cpu" = "i386"; then 221109dada40SPaolo Bonzini cat > $TMPC << EOF 221209dada40SPaolo Bonzinistatic int sfaa(int *ptr) 221309dada40SPaolo Bonzini{ 221409dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 221509dada40SPaolo Bonzini} 221609dada40SPaolo Bonzini 221709dada40SPaolo Bonziniint main(void) 221809dada40SPaolo Bonzini{ 221909dada40SPaolo Bonzini int val = 42; 22201405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 222109dada40SPaolo Bonzini sfaa(&val); 222209dada40SPaolo Bonzini return val; 222309dada40SPaolo Bonzini} 222409dada40SPaolo BonziniEOF 222509dada40SPaolo Bonzini if ! compile_prog "" "" ; then 222609dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 222709dada40SPaolo Bonzini fi 222809dada40SPaolo Bonzinifi 222909dada40SPaolo Bonzini 223009dada40SPaolo Bonzini######################################### 2231ec530c81Sbellard# Solaris specific configure tool chain decisions 223209dada40SPaolo Bonzini 2233ec530c81Sbellardif test "$solaris" = "yes" ; then 22346792aa11SLoïc Minier if has $install; then 22356792aa11SLoïc Minier : 22366792aa11SLoïc Minier else 223776ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 223876ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 223976ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 2240ec530c81Sbellard fi 224189138857SStefan Weil if test "$(path_of $install)" = "/usr/sbin/install" ; then 224276ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 224376ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 224476ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 2245ec530c81Sbellard fi 22466792aa11SLoïc Minier if has ar; then 22476792aa11SLoïc Minier : 22486792aa11SLoïc Minier else 2249ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 225076ad07a4SPeter Maydell error_exit "No path includes ar" \ 225176ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 2252ec530c81Sbellard fi 225376ad07a4SPeter Maydell error_exit "No path includes ar" 2254ec530c81Sbellard fi 2255ec530c81Sbellardfi 2256ec530c81Sbellard 2257afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 2258d880a3baSPaolo Bonzini for target in $default_target_list; do 2259d880a3baSPaolo Bonzini supported_target $target 2>/dev/null && \ 2260d880a3baSPaolo Bonzini target_list="$target_list $target" 2261d880a3baSPaolo Bonzini done 2262d880a3baSPaolo Bonzini target_list="${target_list# }" 2263121afa9eSAnthony Liguorielse 226489138857SStefan Weil target_list=$(echo "$target_list" | sed -e 's/,/ /g') 2265d880a3baSPaolo Bonzini for target in $target_list; do 226625b48338SPeter Maydell # Check that we recognised the target name; this allows a more 226725b48338SPeter Maydell # friendly error message than if we let it fall through. 226825b48338SPeter Maydell case " $default_target_list " in 226925b48338SPeter Maydell *" $target "*) 227025b48338SPeter Maydell ;; 227125b48338SPeter Maydell *) 227225b48338SPeter Maydell error_exit "Unknown target name '$target'" 227325b48338SPeter Maydell ;; 227425b48338SPeter Maydell esac 2275d880a3baSPaolo Bonzini supported_target $target || exit 1 227625b48338SPeter Maydell done 2277d880a3baSPaolo Bonzinifi 227825b48338SPeter Maydell 2279f55fe278SPaolo Bonzini# see if system emulation was really requested 2280f55fe278SPaolo Bonzinicase " $target_list " in 2281f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 2282f55fe278SPaolo Bonzini ;; 2283f55fe278SPaolo Bonzini *) softmmu=no 2284f55fe278SPaolo Bonzini ;; 2285f55fe278SPaolo Bonziniesac 22865327cf48Sbellard 228705dfa22bSPhilippe Mathieu-Daudéfor target in $target_list; do 228805dfa22bSPhilippe Mathieu-Daudé case "$target" in 228905dfa22bSPhilippe Mathieu-Daudé arm-softmmu | aarch64-softmmu | i386-softmmu | x86_64-softmmu) 229005dfa22bSPhilippe Mathieu-Daudé edk2_blobs="yes" 229105dfa22bSPhilippe Mathieu-Daudé ;; 229205dfa22bSPhilippe Mathieu-Daudé esac 229305dfa22bSPhilippe Mathieu-Daudédone 2294623ef637SPhilippe Mathieu-Daudé# The EDK2 binaries are compressed with bzip2 2295623ef637SPhilippe Mathieu-Daudéif test "$edk2_blobs" = "yes" && ! has bzip2; then 2296623ef637SPhilippe Mathieu-Daudé error_exit "The bzip2 program is required for building QEMU" 2297623ef637SPhilippe Mathieu-Daudéfi 229805dfa22bSPhilippe Mathieu-Daudé 2299249247c9SJuan Quintelafeature_not_found() { 2300249247c9SJuan Quintela feature=$1 230121684af0SStewart Smith remedy=$2 2302249247c9SJuan Quintela 230376ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 230421684af0SStewart Smith "configure was not able to find it." \ 230521684af0SStewart Smith "$remedy" 2306249247c9SJuan Quintela} 2307249247c9SJuan Quintela 23087d13299dSbellard# --- 23097d13299dSbellard# big/little endian test 23107d13299dSbellardcat > $TMPC << EOF 231161cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 231261cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 231361cc919fSMike Frysingerextern int foo(short *, short *); 231461cc919fSMike Frysingerint main(int argc, char *argv[]) { 231561cc919fSMike Frysinger return foo(big_endian, little_endian); 23167d13299dSbellard} 23177d13299dSbellardEOF 23187d13299dSbellard 231961cc919fSMike Frysingerif compile_object ; then 232012f15c91SAlice Frosi if strings -a $TMPO | grep -q BiGeNdIaN ; then 232161cc919fSMike Frysinger bigendian="yes" 232212f15c91SAlice Frosi elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then 232361cc919fSMike Frysinger bigendian="no" 23247d13299dSbellard else 23257d13299dSbellard echo big/little test failed 23267d13299dSbellard fi 23277d13299dSbellardelse 232861cc919fSMike Frysinger echo big/little test failed 23297d13299dSbellardfi 23307d13299dSbellard 2331b0a47e79SJuan Quintela########################################## 2332e10ee3f5SPhilippe Mathieu-Daudé# system tools 2333e10ee3f5SPhilippe Mathieu-Daudéif test -z "$want_tools"; then 2334e10ee3f5SPhilippe Mathieu-Daudé if test "$softmmu" = "no"; then 2335e10ee3f5SPhilippe Mathieu-Daudé want_tools=no 2336e10ee3f5SPhilippe Mathieu-Daudé else 2337e10ee3f5SPhilippe Mathieu-Daudé want_tools=yes 2338e10ee3f5SPhilippe Mathieu-Daudé fi 2339e10ee3f5SPhilippe Mathieu-Daudéfi 2340e10ee3f5SPhilippe Mathieu-Daudé 2341e10ee3f5SPhilippe Mathieu-Daudé########################################## 2342a30878e7SPeter Maydell# cocoa implies not SDL or GTK 2343a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI 2344a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code) 2345a30878e7SPeter Maydellif test "$cocoa" = "yes"; then 2346a30878e7SPeter Maydell if test "$sdl" = "yes"; then 2347a30878e7SPeter Maydell error_exit "Cocoa and SDL UIs cannot both be enabled at once" 2348a30878e7SPeter Maydell fi 2349a30878e7SPeter Maydell if test "$gtk" = "yes"; then 2350a30878e7SPeter Maydell error_exit "Cocoa and GTK UIs cannot both be enabled at once" 2351a30878e7SPeter Maydell fi 2352a30878e7SPeter Maydell gtk=no 2353a30878e7SPeter Maydell sdl=no 2354a30878e7SPeter Maydellfi 2355a30878e7SPeter Maydell 23566b39b063SEric Blake# Some versions of Mac OS X incorrectly define SIZE_MAX 23576b39b063SEric Blakecat > $TMPC << EOF 23586b39b063SEric Blake#include <stdint.h> 23596b39b063SEric Blake#include <stdio.h> 23606b39b063SEric Blakeint main(int argc, char *argv[]) { 23616b39b063SEric Blake return printf("%zu", SIZE_MAX); 23626b39b063SEric Blake} 23636b39b063SEric BlakeEOF 23646b39b063SEric Blakehave_broken_size_max=no 23656b39b063SEric Blakeif ! compile_object -Werror ; then 23666b39b063SEric Blake have_broken_size_max=yes 23676b39b063SEric Blakefi 23686b39b063SEric Blake 2369a30878e7SPeter Maydell########################################## 2370015a33bdSGonglei# L2TPV3 probe 2371015a33bdSGonglei 2372015a33bdSGongleicat > $TMPC <<EOF 2373015a33bdSGonglei#include <sys/socket.h> 2374bff6cb72SMichael Tokarev#include <linux/ip.h> 2375015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 2376015a33bdSGongleiEOF 2377015a33bdSGongleiif compile_prog "" "" ; then 2378015a33bdSGonglei l2tpv3=yes 2379015a33bdSGongleielse 2380015a33bdSGonglei l2tpv3=no 2381015a33bdSGongleifi 2382015a33bdSGonglei 2383299e6f19SPaolo Bonzini######################################### 2384299e6f19SPaolo Bonzini# vhost interdependencies and host support 2385299e6f19SPaolo Bonzini 2386299e6f19SPaolo Bonzini# vhost backends 2387299e6f19SPaolo Bonzinitest "$vhost_user" = "" && vhost_user=yes 2388299e6f19SPaolo Bonziniif test "$vhost_user" = "yes" && test "$mingw32" = "yes"; then 2389299e6f19SPaolo Bonzini error_exit "vhost-user isn't available on win32" 2390299e6f19SPaolo Bonzinifi 2391299e6f19SPaolo Bonzinitest "$vhost_kernel" = "" && vhost_kernel=$linux 2392299e6f19SPaolo Bonziniif test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then 2393299e6f19SPaolo Bonzini error_exit "vhost-kernel is only available on Linux" 2394299e6f19SPaolo Bonzinifi 2395299e6f19SPaolo Bonzini 2396299e6f19SPaolo Bonzini# vhost-kernel devices 2397299e6f19SPaolo Bonzinitest "$vhost_scsi" = "" && vhost_scsi=$vhost_kernel 2398299e6f19SPaolo Bonziniif test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then 2399299e6f19SPaolo Bonzini error_exit "--enable-vhost-scsi requires --enable-vhost-kernel" 2400299e6f19SPaolo Bonzinifi 2401299e6f19SPaolo Bonzinitest "$vhost_vsock" = "" && vhost_vsock=$vhost_kernel 2402299e6f19SPaolo Bonziniif test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then 2403299e6f19SPaolo Bonzini error_exit "--enable-vhost-vsock requires --enable-vhost-kernel" 2404299e6f19SPaolo Bonzinifi 2405299e6f19SPaolo Bonzini 2406299e6f19SPaolo Bonzini# vhost-user backends 2407299e6f19SPaolo Bonzinitest "$vhost_net_user" = "" && vhost_net_user=$vhost_user 2408299e6f19SPaolo Bonziniif test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then 2409299e6f19SPaolo Bonzini error_exit "--enable-vhost-net-user requires --enable-vhost-user" 2410299e6f19SPaolo Bonzinifi 2411299e6f19SPaolo Bonzinitest "$vhost_crypto" = "" && vhost_crypto=$vhost_user 2412299e6f19SPaolo Bonziniif test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then 2413299e6f19SPaolo Bonzini error_exit "--enable-vhost-crypto requires --enable-vhost-user" 2414299e6f19SPaolo Bonzinifi 241598fc1adaSDr. David Alan Gilberttest "$vhost_user_fs" = "" && vhost_user_fs=$vhost_user 241698fc1adaSDr. David Alan Gilbertif test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then 241798fc1adaSDr. David Alan Gilbert error_exit "--enable-vhost-user-fs requires --enable-vhost-user" 241898fc1adaSDr. David Alan Gilbertfi 2419299e6f19SPaolo Bonzini 2420299e6f19SPaolo Bonzini# OR the vhost-kernel and vhost-user values for simplicity 2421299e6f19SPaolo Bonziniif test "$vhost_net" = ""; then 2422299e6f19SPaolo Bonzini test "$vhost_net_user" = "yes" && vhost_net=yes 2423299e6f19SPaolo Bonzini test "$vhost_kernel" = "yes" && vhost_net=yes 2424299e6f19SPaolo Bonzinifi 2425299e6f19SPaolo Bonzini 2426015a33bdSGonglei########################################## 24274d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check 24284d9310f4SDaniel P. Berrange 24294d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then 24304d9310f4SDaniel P. Berrange # Some versions of MinGW / Mingw-w64 lack localtime_r 24314d9310f4SDaniel P. Berrange # and gmtime_r entirely. 24324d9310f4SDaniel P. Berrange # 24334d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 define a macro for 24344d9310f4SDaniel P. Berrange # localtime_r/gmtime_r. 24354d9310f4SDaniel P. Berrange # 24364d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 will define functions 24374d9310f4SDaniel P. Berrange # for localtime_r/gmtime_r, but only if you have 24384d9310f4SDaniel P. Berrange # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun 24394d9310f4SDaniel P. Berrange # though, unistd.h and pthread.h both define 24404d9310f4SDaniel P. Berrange # that for you. 24414d9310f4SDaniel P. Berrange # 24424d9310f4SDaniel P. Berrange # So this #undef localtime_r and #include <unistd.h> 24434d9310f4SDaniel P. Berrange # are not in fact redundant. 24444d9310f4SDaniel P. Berrangecat > $TMPC << EOF 24454d9310f4SDaniel P. Berrange#include <unistd.h> 24464d9310f4SDaniel P. Berrange#include <time.h> 24474d9310f4SDaniel P. Berrange#undef localtime_r 24484d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; } 24494d9310f4SDaniel P. BerrangeEOF 24504d9310f4SDaniel P. Berrange if compile_prog "" "" ; then 24514d9310f4SDaniel P. Berrange localtime_r="yes" 24524d9310f4SDaniel P. Berrange else 24534d9310f4SDaniel P. Berrange localtime_r="no" 24544d9310f4SDaniel P. Berrange fi 24554d9310f4SDaniel P. Berrangefi 24564d9310f4SDaniel P. Berrange 24574d9310f4SDaniel P. Berrange########################################## 2458779ab5e3SStefan Weil# pkg-config probe 2459779ab5e3SStefan Weil 2460779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 246176ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 2462779ab5e3SStefan Weilfi 2463779ab5e3SStefan Weil 2464779ab5e3SStefan Weil########################################## 2465b0a47e79SJuan Quintela# NPTL probe 2466b0a47e79SJuan Quintela 246724cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 2468bd0c5661Spbrook cat > $TMPC <<EOF 2469bd0c5661Spbrook#include <sched.h> 247030813ceaSpbrook#include <linux/futex.h> 2471182eacc0SStefan Weilint main(void) { 2472bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 2473bd0c5661Spbrook#error bork 2474bd0c5661Spbrook#endif 2475182eacc0SStefan Weil return 0; 2476bd0c5661Spbrook} 2477bd0c5661SpbrookEOF 247824cb36a6SPeter Maydell if ! compile_object ; then 247921684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 2480b0a47e79SJuan Quintela fi 2481bd0c5661Spbrookfi 2482bd0c5661Spbrook 2483ac62922eSbalrog########################################## 2484607dacd0Sqiaonuohan# lzo check 2485607dacd0Sqiaonuohan 2486607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 2487607dacd0Sqiaonuohan cat > $TMPC << EOF 2488607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 2489607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 2490607dacd0SqiaonuohanEOF 2491607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 2492607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 2493b25c9dffSStefan Weil lzo="yes" 2494b25c9dffSStefan Weil else 2495b25c9dffSStefan Weil if test "$lzo" = "yes"; then 2496b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 2497b25c9dffSStefan Weil fi 2498b25c9dffSStefan Weil lzo="no" 2499b25c9dffSStefan Weil fi 2500607dacd0Sqiaonuohanfi 2501607dacd0Sqiaonuohan 2502607dacd0Sqiaonuohan########################################## 2503607dacd0Sqiaonuohan# snappy check 2504607dacd0Sqiaonuohan 2505607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 2506607dacd0Sqiaonuohan cat > $TMPC << EOF 2507607dacd0Sqiaonuohan#include <snappy-c.h> 2508607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 2509607dacd0SqiaonuohanEOF 2510607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 2511607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 2512b25c9dffSStefan Weil snappy="yes" 2513b25c9dffSStefan Weil else 2514b25c9dffSStefan Weil if test "$snappy" = "yes"; then 2515b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 2516b25c9dffSStefan Weil fi 2517b25c9dffSStefan Weil snappy="no" 2518b25c9dffSStefan Weil fi 2519607dacd0Sqiaonuohanfi 2520607dacd0Sqiaonuohan 2521607dacd0Sqiaonuohan########################################## 25226b383c08SPeter Wu# bzip2 check 25236b383c08SPeter Wu 25246b383c08SPeter Wuif test "$bzip2" != "no" ; then 25256b383c08SPeter Wu cat > $TMPC << EOF 25266b383c08SPeter Wu#include <bzlib.h> 25276b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 25286b383c08SPeter WuEOF 25296b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 25306b383c08SPeter Wu bzip2="yes" 25316b383c08SPeter Wu else 25326b383c08SPeter Wu if test "$bzip2" = "yes"; then 25336b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 25346b383c08SPeter Wu fi 25356b383c08SPeter Wu bzip2="no" 25366b383c08SPeter Wu fi 25376b383c08SPeter Wufi 25386b383c08SPeter Wu 25396b383c08SPeter Wu########################################## 254083bc1f97SJulio Faracco# lzfse check 254183bc1f97SJulio Faracco 254283bc1f97SJulio Faraccoif test "$lzfse" != "no" ; then 254383bc1f97SJulio Faracco cat > $TMPC << EOF 254483bc1f97SJulio Faracco#include <lzfse.h> 254583bc1f97SJulio Faraccoint main(void) { lzfse_decode_scratch_size(); return 0; } 254683bc1f97SJulio FaraccoEOF 254783bc1f97SJulio Faracco if compile_prog "" "-llzfse" ; then 254883bc1f97SJulio Faracco lzfse="yes" 254983bc1f97SJulio Faracco else 255083bc1f97SJulio Faracco if test "$lzfse" = "yes"; then 255183bc1f97SJulio Faracco feature_not_found "lzfse" "Install lzfse devel" 255283bc1f97SJulio Faracco fi 255383bc1f97SJulio Faracco lzfse="no" 255483bc1f97SJulio Faracco fi 255583bc1f97SJulio Faraccofi 255683bc1f97SJulio Faracco 255783bc1f97SJulio Faracco########################################## 25583a678481SJuan Quintela# zstd check 25593a678481SJuan Quintela 25603a678481SJuan Quintelaif test "$zstd" != "no" ; then 2561297254c7SJuan Quintela libzstd_minver="1.4.0" 2562297254c7SJuan Quintela if $pkg_config --atleast-version=$libzstd_minver libzstd ; then 25633a678481SJuan Quintela zstd_cflags="$($pkg_config --cflags libzstd)" 25643a678481SJuan Quintela zstd_libs="$($pkg_config --libs libzstd)" 25653a678481SJuan Quintela LIBS="$zstd_libs $LIBS" 25663a678481SJuan Quintela QEMU_CFLAGS="$QEMU_CFLAGS $zstd_cflags" 25673a678481SJuan Quintela zstd="yes" 25683a678481SJuan Quintela else 25693a678481SJuan Quintela if test "$zstd" = "yes" ; then 25703a678481SJuan Quintela feature_not_found "libzstd" "Install libzstd devel" 25713a678481SJuan Quintela fi 25723a678481SJuan Quintela zstd="no" 25733a678481SJuan Quintela fi 25743a678481SJuan Quintelafi 25753a678481SJuan Quintela 25763a678481SJuan Quintela########################################## 2577f794573eSEduardo Otubo# libseccomp check 2578f794573eSEduardo Otubo 2579f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 25803e684455SMichael Strosaker libseccomp_minver="2.3.0" 258125ed0eccSHelge Deller if $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then 2582c3883e1fSFam Zheng seccomp_cflags="$($pkg_config --cflags libseccomp)" 2583c3883e1fSFam Zheng seccomp_libs="$($pkg_config --libs libseccomp)" 2584f794573eSEduardo Otubo seccomp="yes" 2585f794573eSEduardo Otubo else 2586f794573eSEduardo Otubo if test "$seccomp" = "yes" ; then 2587693e5910SAndrew Jones feature_not_found "libseccomp" \ 2588693e5910SAndrew Jones "Install libseccomp devel >= $libseccomp_minver" 2589896848f0SEduardo Otubo fi 2590e84d5956SYann E. MORIN seccomp="no" 2591f794573eSEduardo Otubo fi 2592f794573eSEduardo Otubofi 2593f794573eSEduardo Otubo########################################## 2594e37630caSaliguori# xen probe 2595e37630caSaliguori 2596fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 2597c1cdd9d5SJuergen Gross # Check whether Xen library path is specified via --extra-ldflags to avoid 2598c1cdd9d5SJuergen Gross # overriding this setting with pkg-config output. If not, try pkg-config 2599c1cdd9d5SJuergen Gross # to obtain all needed flags. 2600c1cdd9d5SJuergen Gross 2601c1cdd9d5SJuergen Gross if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \ 2602c1cdd9d5SJuergen Gross $pkg_config --exists xencontrol ; then 2603c1cdd9d5SJuergen Gross xen_ctrl_version="$(printf '%d%02d%02d' \ 2604c1cdd9d5SJuergen Gross $($pkg_config --modversion xencontrol | sed 's/\./ /g') )" 2605c1cdd9d5SJuergen Gross xen=yes 2606c1cdd9d5SJuergen Gross xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab" 2607c1cdd9d5SJuergen Gross xen_pc="$xen_pc xenevtchn xendevicemodel" 260858ea9a7aSAnthony PERARD if $pkg_config --exists xentoolcore; then 260958ea9a7aSAnthony PERARD xen_pc="$xen_pc xentoolcore" 261058ea9a7aSAnthony PERARD fi 2611c1cdd9d5SJuergen Gross QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)" 2612c1cdd9d5SJuergen Gross libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu" 2613c1cdd9d5SJuergen Gross else 2614c1cdd9d5SJuergen Gross 2615b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 2616d9506cabSAnthony PERARD xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn" 2617d5b93ddfSAnthony PERARD 261850ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 261950ced5b3SStefan Weil # If no, we are done and there is no Xen support. 262050ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 262150ced5b3SStefan Weil 262250ced5b3SStefan Weil # Xen (any) 262350ced5b3SStefan Weil cat > $TMPC <<EOF 262450ced5b3SStefan Weil#include <xenctrl.h> 262550ced5b3SStefan Weilint main(void) { 262650ced5b3SStefan Weil return 0; 262750ced5b3SStefan Weil} 262850ced5b3SStefan WeilEOF 262950ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 263050ced5b3SStefan Weil # Xen not found 263150ced5b3SStefan Weil if test "$xen" = "yes" ; then 263221684af0SStewart Smith feature_not_found "xen" "Install xen devel" 263350ced5b3SStefan Weil fi 263450ced5b3SStefan Weil xen=no 263550ced5b3SStefan Weil 2636d5b93ddfSAnthony PERARD # Xen unstable 263769deef08SPeter Maydell elif 263869deef08SPeter Maydell cat > $TMPC <<EOF && 26392cbf8903SRoss Lagerwall#undef XC_WANT_COMPAT_DEVICEMODEL_API 26402cbf8903SRoss Lagerwall#define __XEN_TOOLS__ 26412cbf8903SRoss Lagerwall#include <xendevicemodel.h> 2642d3c49ebbSPaul Durrant#include <xenforeignmemory.h> 26432cbf8903SRoss Lagerwallint main(void) { 26442cbf8903SRoss Lagerwall xendevicemodel_handle *xd; 2645d3c49ebbSPaul Durrant xenforeignmemory_handle *xfmem; 26462cbf8903SRoss Lagerwall 26472cbf8903SRoss Lagerwall xd = xendevicemodel_open(0, 0); 26482cbf8903SRoss Lagerwall xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0); 26492cbf8903SRoss Lagerwall 2650d3c49ebbSPaul Durrant xfmem = xenforeignmemory_open(0, 0); 2651d3c49ebbSPaul Durrant xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0); 2652d3c49ebbSPaul Durrant 26532cbf8903SRoss Lagerwall return 0; 26542cbf8903SRoss Lagerwall} 26552cbf8903SRoss LagerwallEOF 26562cbf8903SRoss Lagerwall compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 26572cbf8903SRoss Lagerwall then 26582cbf8903SRoss Lagerwall xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 26592cbf8903SRoss Lagerwall xen_ctrl_version=41100 26602cbf8903SRoss Lagerwall xen=yes 26612cbf8903SRoss Lagerwall elif 26622cbf8903SRoss Lagerwall cat > $TMPC <<EOF && 26635ba3d756SIgor Druzhinin#undef XC_WANT_COMPAT_MAP_FOREIGN_API 26645ba3d756SIgor Druzhinin#include <xenforeignmemory.h> 266558ea9a7aSAnthony PERARD#include <xentoolcore.h> 26665ba3d756SIgor Druzhininint main(void) { 26675ba3d756SIgor Druzhinin xenforeignmemory_handle *xfmem; 26685ba3d756SIgor Druzhinin 26695ba3d756SIgor Druzhinin xfmem = xenforeignmemory_open(0, 0); 26705ba3d756SIgor Druzhinin xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0); 267158ea9a7aSAnthony PERARD xentoolcore_restrict_all(0); 26725ba3d756SIgor Druzhinin 26735ba3d756SIgor Druzhinin return 0; 26745ba3d756SIgor Druzhinin} 26755ba3d756SIgor DruzhininEOF 267658ea9a7aSAnthony PERARD compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 26775ba3d756SIgor Druzhinin then 267858ea9a7aSAnthony PERARD xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 26795ba3d756SIgor Druzhinin xen_ctrl_version=41000 26805ba3d756SIgor Druzhinin xen=yes 26815ba3d756SIgor Druzhinin elif 26825ba3d756SIgor Druzhinin cat > $TMPC <<EOF && 2683da8090ccSPaul Durrant#undef XC_WANT_COMPAT_DEVICEMODEL_API 2684da8090ccSPaul Durrant#define __XEN_TOOLS__ 2685da8090ccSPaul Durrant#include <xendevicemodel.h> 2686da8090ccSPaul Durrantint main(void) { 2687da8090ccSPaul Durrant xendevicemodel_handle *xd; 2688da8090ccSPaul Durrant 2689da8090ccSPaul Durrant xd = xendevicemodel_open(0, 0); 2690da8090ccSPaul Durrant xendevicemodel_close(xd); 2691da8090ccSPaul Durrant 2692da8090ccSPaul Durrant return 0; 2693da8090ccSPaul Durrant} 2694da8090ccSPaul DurrantEOF 2695da8090ccSPaul Durrant compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 2696da8090ccSPaul Durrant then 2697da8090ccSPaul Durrant xen_stable_libs="-lxendevicemodel $xen_stable_libs" 2698f1167ee6SJuergen Gross xen_ctrl_version=40900 2699da8090ccSPaul Durrant xen=yes 2700da8090ccSPaul Durrant elif 2701da8090ccSPaul Durrant cat > $TMPC <<EOF && 27025eeb39c2SIan Campbell/* 27035eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat 27045eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given. 2705b6eb9b45SPaulina Szubarczyk * 2706b6eb9b45SPaulina Szubarczyk * Also, check if xengnttab_grant_copy_segment_t is defined and 2707b6eb9b45SPaulina Szubarczyk * grant copy operation is implemented. 2708b6eb9b45SPaulina Szubarczyk */ 2709b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_EVTCHN_API 2710b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_GNTTAB_API 2711b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2712b6eb9b45SPaulina Szubarczyk#include <xenctrl.h> 2713b6eb9b45SPaulina Szubarczyk#include <xenstore.h> 2714b6eb9b45SPaulina Szubarczyk#include <xenevtchn.h> 2715b6eb9b45SPaulina Szubarczyk#include <xengnttab.h> 2716b6eb9b45SPaulina Szubarczyk#include <xenforeignmemory.h> 2717b6eb9b45SPaulina Szubarczyk#include <stdint.h> 2718b6eb9b45SPaulina Szubarczyk#include <xen/hvm/hvm_info_table.h> 2719b6eb9b45SPaulina Szubarczyk#if !defined(HVM_MAX_VCPUS) 2720b6eb9b45SPaulina Szubarczyk# error HVM_MAX_VCPUS not defined 2721b6eb9b45SPaulina Szubarczyk#endif 2722b6eb9b45SPaulina Szubarczykint main(void) { 2723b6eb9b45SPaulina Szubarczyk xc_interface *xc = NULL; 2724b6eb9b45SPaulina Szubarczyk xenforeignmemory_handle *xfmem; 2725b6eb9b45SPaulina Szubarczyk xenevtchn_handle *xe; 2726b6eb9b45SPaulina Szubarczyk xengnttab_handle *xg; 2727b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy_segment_t* seg = NULL; 2728b6eb9b45SPaulina Szubarczyk 2729b6eb9b45SPaulina Szubarczyk xs_daemon_open(); 2730b6eb9b45SPaulina Szubarczyk 2731b6eb9b45SPaulina Szubarczyk xc = xc_interface_open(0, 0, 0); 2732b6eb9b45SPaulina Szubarczyk xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2733b6eb9b45SPaulina Szubarczyk xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2734b6eb9b45SPaulina Szubarczyk xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2735b6eb9b45SPaulina Szubarczyk xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2736b6eb9b45SPaulina Szubarczyk 2737b6eb9b45SPaulina Szubarczyk xfmem = xenforeignmemory_open(0, 0); 2738b6eb9b45SPaulina Szubarczyk xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 2739b6eb9b45SPaulina Szubarczyk 2740b6eb9b45SPaulina Szubarczyk xe = xenevtchn_open(0, 0); 2741b6eb9b45SPaulina Szubarczyk xenevtchn_fd(xe); 2742b6eb9b45SPaulina Szubarczyk 2743b6eb9b45SPaulina Szubarczyk xg = xengnttab_open(0, 0); 2744b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy(xg, 0, seg); 2745b6eb9b45SPaulina Szubarczyk 2746b6eb9b45SPaulina Szubarczyk return 0; 2747b6eb9b45SPaulina Szubarczyk} 2748b6eb9b45SPaulina SzubarczykEOF 2749b6eb9b45SPaulina Szubarczyk compile_prog "" "$xen_libs $xen_stable_libs" 2750b6eb9b45SPaulina Szubarczyk then 2751f1167ee6SJuergen Gross xen_ctrl_version=40800 2752b6eb9b45SPaulina Szubarczyk xen=yes 2753b6eb9b45SPaulina Szubarczyk elif 2754b6eb9b45SPaulina Szubarczyk cat > $TMPC <<EOF && 2755b6eb9b45SPaulina Szubarczyk/* 2756b6eb9b45SPaulina Szubarczyk * If we have stable libs the we don't want the libxc compat 2757b6eb9b45SPaulina Szubarczyk * layers, regardless of what CFLAGS we may have been given. 27585eeb39c2SIan Campbell */ 27595eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API 27605eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API 27615eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API 27625eeb39c2SIan Campbell#include <xenctrl.h> 27635eeb39c2SIan Campbell#include <xenstore.h> 27645eeb39c2SIan Campbell#include <xenevtchn.h> 27655eeb39c2SIan Campbell#include <xengnttab.h> 27665eeb39c2SIan Campbell#include <xenforeignmemory.h> 27675eeb39c2SIan Campbell#include <stdint.h> 27685eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h> 27695eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS) 27705eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined 27715eeb39c2SIan Campbell#endif 27725eeb39c2SIan Campbellint main(void) { 27735eeb39c2SIan Campbell xc_interface *xc = NULL; 27745eeb39c2SIan Campbell xenforeignmemory_handle *xfmem; 27755eeb39c2SIan Campbell xenevtchn_handle *xe; 27765eeb39c2SIan Campbell xengnttab_handle *xg; 27775eeb39c2SIan Campbell 27785eeb39c2SIan Campbell xs_daemon_open(); 27795eeb39c2SIan Campbell 27805eeb39c2SIan Campbell xc = xc_interface_open(0, 0, 0); 27815eeb39c2SIan Campbell xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 27825eeb39c2SIan Campbell xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 27835eeb39c2SIan Campbell xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 27845eeb39c2SIan Campbell xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 27855eeb39c2SIan Campbell 27865eeb39c2SIan Campbell xfmem = xenforeignmemory_open(0, 0); 27875eeb39c2SIan Campbell xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 27885eeb39c2SIan Campbell 27895eeb39c2SIan Campbell xe = xenevtchn_open(0, 0); 27905eeb39c2SIan Campbell xenevtchn_fd(xe); 27915eeb39c2SIan Campbell 27925eeb39c2SIan Campbell xg = xengnttab_open(0, 0); 27935eeb39c2SIan Campbell xengnttab_map_grant_ref(xg, 0, 0, 0); 27945eeb39c2SIan Campbell 27955eeb39c2SIan Campbell return 0; 27965eeb39c2SIan Campbell} 27975eeb39c2SIan CampbellEOF 27985eeb39c2SIan Campbell compile_prog "" "$xen_libs $xen_stable_libs" 27995eeb39c2SIan Campbell then 2800f1167ee6SJuergen Gross xen_ctrl_version=40701 28015eeb39c2SIan Campbell xen=yes 2802cdadde39SRoger Pau Monne 2803cdadde39SRoger Pau Monne # Xen 4.6 2804cdadde39SRoger Pau Monne elif 2805cdadde39SRoger Pau Monne cat > $TMPC <<EOF && 2806cdadde39SRoger Pau Monne#include <xenctrl.h> 2807e108a3c1SAnthony PERARD#include <xenstore.h> 2808d5b93ddfSAnthony PERARD#include <stdint.h> 2809d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 2810d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 2811d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 2812d5b93ddfSAnthony PERARD#endif 2813d5b93ddfSAnthony PERARDint main(void) { 2814d5b93ddfSAnthony PERARD xc_interface *xc; 2815d5b93ddfSAnthony PERARD xs_daemon_open(); 2816d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 2817d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2818d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 2819b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 28208688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2821d8b441a3SJan Beulich xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 282220a544c7SKonrad Rzeszutek Wilk xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0); 2823d8b441a3SJan Beulich return 0; 2824d8b441a3SJan Beulich} 2825d8b441a3SJan BeulichEOF 2826d8b441a3SJan Beulich compile_prog "" "$xen_libs" 2827d8b441a3SJan Beulich then 2828f1167ee6SJuergen Gross xen_ctrl_version=40600 2829d8b441a3SJan Beulich xen=yes 2830d8b441a3SJan Beulich 2831d8b441a3SJan Beulich # Xen 4.5 2832d8b441a3SJan Beulich elif 2833d8b441a3SJan Beulich cat > $TMPC <<EOF && 2834d8b441a3SJan Beulich#include <xenctrl.h> 2835d8b441a3SJan Beulich#include <xenstore.h> 2836d8b441a3SJan Beulich#include <stdint.h> 2837d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h> 2838d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS) 2839d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined 2840d8b441a3SJan Beulich#endif 2841d8b441a3SJan Beulichint main(void) { 2842d8b441a3SJan Beulich xc_interface *xc; 2843d8b441a3SJan Beulich xs_daemon_open(); 2844d8b441a3SJan Beulich xc = xc_interface_open(0, 0, 0); 2845d8b441a3SJan Beulich xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2846d8b441a3SJan Beulich xc_gnttab_open(NULL, 0); 2847d8b441a3SJan Beulich xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2848d8b441a3SJan Beulich xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 28493996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 28503996e85cSPaul Durrant return 0; 28513996e85cSPaul Durrant} 28523996e85cSPaul DurrantEOF 28533996e85cSPaul Durrant compile_prog "" "$xen_libs" 28543996e85cSPaul Durrant then 2855f1167ee6SJuergen Gross xen_ctrl_version=40500 28563996e85cSPaul Durrant xen=yes 28573996e85cSPaul Durrant 28583996e85cSPaul Durrant elif 28593996e85cSPaul Durrant cat > $TMPC <<EOF && 28603996e85cSPaul Durrant#include <xenctrl.h> 28613996e85cSPaul Durrant#include <xenstore.h> 28623996e85cSPaul Durrant#include <stdint.h> 28633996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 28643996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 28653996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 28663996e85cSPaul Durrant#endif 28673996e85cSPaul Durrantint main(void) { 28683996e85cSPaul Durrant xc_interface *xc; 28693996e85cSPaul Durrant xs_daemon_open(); 28703996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 28713996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 28723996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 28733996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 28743996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 28758688e065SStefano Stabellini return 0; 28768688e065SStefano Stabellini} 28778688e065SStefano StabelliniEOF 28788688e065SStefano Stabellini compile_prog "" "$xen_libs" 287969deef08SPeter Maydell then 2880f1167ee6SJuergen Gross xen_ctrl_version=40200 28818688e065SStefano Stabellini xen=yes 28828688e065SStefano Stabellini 2883e37630caSaliguori else 2884fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 2885edfb07edSIan Campbell feature_not_found "xen (unsupported version)" \ 2886edfb07edSIan Campbell "Install a supported xen (xen 4.2 or newer)" 2887fc321b4bSJuan Quintela fi 2888fc321b4bSJuan Quintela xen=no 2889e37630caSaliguori fi 2890d5b93ddfSAnthony PERARD 2891d5b93ddfSAnthony PERARD if test "$xen" = yes; then 2892f1167ee6SJuergen Gross if test $xen_ctrl_version -ge 40701 ; then 28935eeb39c2SIan Campbell libs_softmmu="$xen_stable_libs $libs_softmmu" 28945eeb39c2SIan Campbell fi 2895d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 2896d5b93ddfSAnthony PERARD fi 2897e37630caSaliguori fi 2898c1cdd9d5SJuergen Grossfi 2899e37630caSaliguori 2900eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 2901edfb07edSIan Campbell if test "$xen" = "yes" && test "$linux" = "yes"; then 2902eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 2903eb6fda0fSAnthony PERARD else 2904eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 290576ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 290676ad07a4SPeter Maydell " but this feature requires /sys from Linux" 2907eb6fda0fSAnthony PERARD fi 2908eb6fda0fSAnthony PERARD xen_pci_passthrough=no 2909eb6fda0fSAnthony PERARD fi 2910eb6fda0fSAnthony PERARDfi 2911eb6fda0fSAnthony PERARD 2912e37630caSaliguori########################################## 2913d661d9a4SJustin Terry (VM)# Windows Hypervisor Platform accelerator (WHPX) check 2914d661d9a4SJustin Terry (VM)if test "$whpx" != "no" ; then 2915327fccb2SLucian Petrut if check_include "WinHvPlatform.h" && check_include "WinHvEmulation.h"; then 2916d661d9a4SJustin Terry (VM) whpx="yes" 2917d661d9a4SJustin Terry (VM) else 2918d661d9a4SJustin Terry (VM) if test "$whpx" = "yes"; then 291953537bb1SJustin Terry (VM) via Qemu-devel feature_not_found "WinHvPlatform" "WinHvEmulation is not installed" 2920d661d9a4SJustin Terry (VM) fi 2921d661d9a4SJustin Terry (VM) whpx="no" 2922d661d9a4SJustin Terry (VM) fi 2923d661d9a4SJustin Terry (VM)fi 2924d661d9a4SJustin Terry (VM) 2925d661d9a4SJustin Terry (VM)########################################## 2926dfffc653SJuan Quintela# Sparse probe 2927dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 29280dba6195SLoïc Minier if has cgcc; then 2929dfffc653SJuan Quintela sparse=yes 2930dfffc653SJuan Quintela else 2931dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 293221684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 2933dfffc653SJuan Quintela fi 2934dfffc653SJuan Quintela sparse=no 2935dfffc653SJuan Quintela fi 2936dfffc653SJuan Quintelafi 2937dfffc653SJuan Quintela 2938dfffc653SJuan Quintela########################################## 2939f676c67eSJeremy White# X11 probe 2940f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 29418781595bSGerd Hoffmann have_x11=yes 294289138857SStefan Weil x11_cflags=$($pkg_config --cflags x11) 294389138857SStefan Weil x11_libs=$($pkg_config --libs x11) 2944f676c67eSJeremy Whitefi 2945f676c67eSJeremy White 2946f676c67eSJeremy White########################################## 2947a4ccabcfSAnthony Liguori# GTK probe 2948a4ccabcfSAnthony Liguori 29495a464e6cSPeter Xuif test "$gtk" != "no"; then 295089d85cdeSDaniel P. Berrangé gtkpackage="gtk+-3.0" 295189d85cdeSDaniel P. Berrangé gtkx11package="gtk+-x11-3.0" 29527b23d121SVolker Rümelin gtkversion="3.22.0" 2953bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 295489138857SStefan Weil gtk_cflags=$($pkg_config --cflags $gtkpackage) 295589138857SStefan Weil gtk_libs=$($pkg_config --libs $gtkpackage) 295689138857SStefan Weil gtk_version=$($pkg_config --modversion $gtkpackage) 29570a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 29588781595bSGerd Hoffmann need_x11=yes 2959f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 2960f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 29610a337ed0SGerd Hoffmann fi 2962bbbf9bfbSStefan Weil gtk="yes" 2963bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 29645fe309ffSGerd Hoffmann feature_not_found "gtk" "Install gtk3-devel" 2965bbbf9bfbSStefan Weil else 2966bbbf9bfbSStefan Weil gtk="no" 2967bbbf9bfbSStefan Weil fi 2968bbbf9bfbSStefan Weilfi 2969bbbf9bfbSStefan Weil 2970ddbb0d09SDaniel P. Berrange 2971ddbb0d09SDaniel P. Berrange########################################## 2972ddbb0d09SDaniel P. Berrange# GNUTLS probe 2973ddbb0d09SDaniel P. Berrange 2974ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then 2975a73e82efSRichard Henderson pass="no" 2976a0722409SDaniel P. Berrangé if $pkg_config --exists "gnutls >= 3.1.18"; then 297789138857SStefan Weil gnutls_cflags=$($pkg_config --cflags gnutls) 297889138857SStefan Weil gnutls_libs=$($pkg_config --libs gnutls) 2979a73e82efSRichard Henderson # Packaging for the static libraries is not always correct. 2980a73e82efSRichard Henderson # At least ubuntu 18.04 ships only shared libraries. 2981a73e82efSRichard Henderson write_c_skeleton 2982a73e82efSRichard Henderson if compile_prog "" "$gnutls_libs" ; then 2983243dc2cfSRichard Henderson LIBS="$gnutls_libs $LIBS" 2984ddbb0d09SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 2985a73e82efSRichard Henderson pass="yes" 2986a73e82efSRichard Henderson fi 2987a73e82efSRichard Henderson fi 2988a73e82efSRichard Henderson if test "$pass" = "no" && test "$gnutls" = "yes"; then 2989a0722409SDaniel P. Berrangé feature_not_found "gnutls" "Install gnutls devel >= 3.1.18" 2990ddbb0d09SDaniel P. Berrange else 2991a73e82efSRichard Henderson gnutls="$pass" 2992ddbb0d09SDaniel P. Berrange fi 2993ddbb0d09SDaniel P. Berrangefi 2994ddbb0d09SDaniel P. Berrange 299591bfcdb0SDaniel P. Berrange 299691bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag, 299791bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle 2998a0722409SDaniel P. Berrangé# explicitly 299991bfcdb0SDaniel P. Berrangeif test -z "$gcrypt" 300091bfcdb0SDaniel P. Berrangethen 3001a0722409SDaniel P. Berrangé if test "$nettle" = "yes" 300291bfcdb0SDaniel P. Berrange then 300391bfcdb0SDaniel P. Berrange gcrypt="no" 300491bfcdb0SDaniel P. Berrange fi 300591bfcdb0SDaniel P. Berrangefi 300691bfcdb0SDaniel P. Berrange 300791bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag, 300891bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt 3009a0722409SDaniel P. Berrangé# explicitly 301091bfcdb0SDaniel P. Berrangeif test -z "$nettle" 301191bfcdb0SDaniel P. Berrangethen 3012a0722409SDaniel P. Berrangé if test "$gcrypt" = "yes" 301391bfcdb0SDaniel P. Berrange then 301491bfcdb0SDaniel P. Berrange nettle="no" 301591bfcdb0SDaniel P. Berrange fi 301691bfcdb0SDaniel P. Berrangefi 301791bfcdb0SDaniel P. Berrange 3018dea7a64eSDaniel P. Berrangéhas_libgcrypt() { 301991bfcdb0SDaniel P. Berrange if ! has "libgcrypt-config" 302091bfcdb0SDaniel P. Berrange then 302191bfcdb0SDaniel P. Berrange return 1 302291bfcdb0SDaniel P. Berrange fi 302391bfcdb0SDaniel P. Berrange 302491bfcdb0SDaniel P. Berrange if test -n "$cross_prefix" 302591bfcdb0SDaniel P. Berrange then 302689138857SStefan Weil host=$(libgcrypt-config --host) 302791bfcdb0SDaniel P. Berrange if test "$host-" != $cross_prefix 302891bfcdb0SDaniel P. Berrange then 302991bfcdb0SDaniel P. Berrange return 1 303091bfcdb0SDaniel P. Berrange fi 303191bfcdb0SDaniel P. Berrange fi 303291bfcdb0SDaniel P. Berrange 3033dea7a64eSDaniel P. Berrangé maj=`libgcrypt-config --version | awk -F . '{print $1}'` 3034dea7a64eSDaniel P. Berrangé min=`libgcrypt-config --version | awk -F . '{print $2}'` 3035dea7a64eSDaniel P. Berrangé 3036dea7a64eSDaniel P. Berrangé if test $maj != 1 || test $min -lt 5 3037dea7a64eSDaniel P. Berrangé then 3038dea7a64eSDaniel P. Berrangé return 1 3039dea7a64eSDaniel P. Berrangé fi 3040dea7a64eSDaniel P. Berrangé 304191bfcdb0SDaniel P. Berrange return 0 304291bfcdb0SDaniel P. Berrange} 304391bfcdb0SDaniel P. Berrange 3044a0722409SDaniel P. Berrangé 3045a0722409SDaniel P. Berrangéif test "$nettle" != "no"; then 3046a73e82efSRichard Henderson pass="no" 304764dd2f3bSDaniel P. Berrangé if $pkg_config --exists "nettle >= 2.7.1"; then 3048a0722409SDaniel P. Berrangé nettle_cflags=$($pkg_config --cflags nettle) 3049a0722409SDaniel P. Berrangé nettle_libs=$($pkg_config --libs nettle) 3050a0722409SDaniel P. Berrangé nettle_version=$($pkg_config --modversion nettle) 3051a73e82efSRichard Henderson # Link test to make sure the given libraries work (e.g for static). 3052a73e82efSRichard Henderson write_c_skeleton 3053a73e82efSRichard Henderson if compile_prog "" "$nettle_libs" ; then 3054243dc2cfSRichard Henderson LIBS="$nettle_libs $LIBS" 3055a0722409SDaniel P. Berrangé QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" 3056a0722409SDaniel P. Berrangé if test -z "$gcrypt"; then 3057a0722409SDaniel P. Berrangé gcrypt="no" 3058a0722409SDaniel P. Berrangé fi 3059a73e82efSRichard Henderson pass="yes" 3060a73e82efSRichard Henderson fi 3061a73e82efSRichard Henderson fi 3062dc2207afSDaniel P. Berrangé if test "$pass" = "yes" 3063dc2207afSDaniel P. Berrangé then 3064dc2207afSDaniel P. Berrangé cat > $TMPC << EOF 3065dc2207afSDaniel P. Berrangé#include <nettle/xts.h> 3066dc2207afSDaniel P. Berrangéint main(void) { 3067dc2207afSDaniel P. Berrangé return 0; 3068dc2207afSDaniel P. Berrangé} 3069dc2207afSDaniel P. BerrangéEOF 3070dc2207afSDaniel P. Berrangé if compile_prog "$nettle_cflags" "$nettle_libs" ; then 3071dc2207afSDaniel P. Berrangé nettle_xts=yes 3072dc2207afSDaniel P. Berrangé qemu_private_xts=no 3073dc2207afSDaniel P. Berrangé fi 3074dc2207afSDaniel P. Berrangé fi 3075a73e82efSRichard Henderson if test "$pass" = "no" && test "$nettle" = "yes"; then 307664dd2f3bSDaniel P. Berrangé feature_not_found "nettle" "Install nettle devel >= 2.7.1" 3077a0722409SDaniel P. Berrangé else 3078a73e82efSRichard Henderson nettle="$pass" 3079a0722409SDaniel P. Berrangé fi 3080a0722409SDaniel P. Berrangéfi 3081a0722409SDaniel P. Berrangé 308291bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then 3083a73e82efSRichard Henderson pass="no" 3084dea7a64eSDaniel P. Berrangé if has_libgcrypt; then 308589138857SStefan Weil gcrypt_cflags=$(libgcrypt-config --cflags) 308689138857SStefan Weil gcrypt_libs=$(libgcrypt-config --libs) 3087a73e82efSRichard Henderson # Debian has removed -lgpg-error from libgcrypt-config 308891bfcdb0SDaniel P. Berrange # as it "spreads unnecessary dependencies" which in 308991bfcdb0SDaniel P. Berrange # turn breaks static builds... 309091bfcdb0SDaniel P. Berrange if test "$static" = "yes" 309191bfcdb0SDaniel P. Berrange then 309291bfcdb0SDaniel P. Berrange gcrypt_libs="$gcrypt_libs -lgpg-error" 309391bfcdb0SDaniel P. Berrange fi 30941f923c70SLongpeng(Mike) 3095a73e82efSRichard Henderson # Link test to make sure the given libraries work (e.g for static). 3096a73e82efSRichard Henderson write_c_skeleton 3097a73e82efSRichard Henderson if compile_prog "" "$gcrypt_libs" ; then 3098243dc2cfSRichard Henderson LIBS="$gcrypt_libs $LIBS" 309937788f25SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" 3100a73e82efSRichard Henderson pass="yes" 3101a73e82efSRichard Henderson fi 3102a73e82efSRichard Henderson fi 3103a73e82efSRichard Henderson if test "$pass" = "yes"; then 310437788f25SDaniel P. Berrange gcrypt="yes" 31051f923c70SLongpeng(Mike) cat > $TMPC << EOF 31061f923c70SLongpeng(Mike)#include <gcrypt.h> 31071f923c70SLongpeng(Mike)int main(void) { 31081f923c70SLongpeng(Mike) gcry_mac_hd_t handle; 31091f923c70SLongpeng(Mike) gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5, 31101f923c70SLongpeng(Mike) GCRY_MAC_FLAG_SECURE, NULL); 31111f923c70SLongpeng(Mike) return 0; 31121f923c70SLongpeng(Mike)} 31131f923c70SLongpeng(Mike)EOF 31141f923c70SLongpeng(Mike) if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 31151f923c70SLongpeng(Mike) gcrypt_hmac=yes 31161f923c70SLongpeng(Mike) fi 3117e0576942SDaniel P. Berrangé cat > $TMPC << EOF 3118e0576942SDaniel P. Berrangé#include <gcrypt.h> 3119e0576942SDaniel P. Berrangéint main(void) { 3120e0576942SDaniel P. Berrangé gcry_cipher_hd_t handle; 3121e0576942SDaniel P. Berrangé gcry_cipher_open(&handle, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_XTS, 0); 3122e0576942SDaniel P. Berrangé return 0; 3123e0576942SDaniel P. Berrangé} 3124e0576942SDaniel P. BerrangéEOF 3125e0576942SDaniel P. Berrangé if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 3126e0576942SDaniel P. Berrangé gcrypt_xts=yes 3127e0576942SDaniel P. Berrangé qemu_private_xts=no 3128e0576942SDaniel P. Berrangé fi 3129a73e82efSRichard Henderson elif test "$gcrypt" = "yes"; then 3130dea7a64eSDaniel P. Berrangé feature_not_found "gcrypt" "Install gcrypt devel >= 1.5.0" 313191bfcdb0SDaniel P. Berrange else 313291bfcdb0SDaniel P. Berrange gcrypt="no" 313391bfcdb0SDaniel P. Berrange fi 313462893b67SDaniel P. Berrangefi 313562893b67SDaniel P. Berrange 3136ddbb0d09SDaniel P. Berrange 313791bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes" 313891bfcdb0SDaniel P. Berrangethen 313991bfcdb0SDaniel P. Berrange error_exit "Only one of gcrypt & nettle can be enabled" 314091bfcdb0SDaniel P. Berrangefi 3141ed754746SDaniel P. Berrange 31429a2fd434SDaniel P. Berrange########################################## 31439a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite 31449a2fd434SDaniel P. Berrange 31459a2fd434SDaniel P. Berrangetasn1=yes 314690246037SDaniel P. Berrangetasn1_cflags="" 314790246037SDaniel P. Berrangetasn1_libs="" 31489a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then 314989138857SStefan Weil tasn1_cflags=$($pkg_config --cflags libtasn1) 315089138857SStefan Weil tasn1_libs=$($pkg_config --libs libtasn1) 31519a2fd434SDaniel P. Berrangeelse 31529a2fd434SDaniel P. Berrange tasn1=no 31539a2fd434SDaniel P. Berrangefi 31549a2fd434SDaniel P. Berrange 3155ed754746SDaniel P. Berrange 3156bbbf9bfbSStefan Weil########################################## 31578953caf3SDaniel P. Berrange# PAM probe 31588953caf3SDaniel P. Berrange 31598953caf3SDaniel P. Berrangeif test "$auth_pam" != "no"; then 31608953caf3SDaniel P. Berrange cat > $TMPC <<EOF 31618953caf3SDaniel P. Berrange#include <security/pam_appl.h> 31628953caf3SDaniel P. Berrange#include <stdio.h> 31638953caf3SDaniel P. Berrangeint main(void) { 31648953caf3SDaniel P. Berrange const char *service_name = "qemu"; 31658953caf3SDaniel P. Berrange const char *user = "frank"; 31669c9642d0SDr. David Alan Gilbert const struct pam_conv pam_conv = { 0 }; 31678953caf3SDaniel P. Berrange pam_handle_t *pamh = NULL; 31689c9642d0SDr. David Alan Gilbert pam_start(service_name, user, &pam_conv, &pamh); 31698953caf3SDaniel P. Berrange return 0; 31708953caf3SDaniel P. Berrange} 31718953caf3SDaniel P. BerrangeEOF 31728953caf3SDaniel P. Berrange if compile_prog "" "-lpam" ; then 31738953caf3SDaniel P. Berrange auth_pam=yes 31748953caf3SDaniel P. Berrange else 31758953caf3SDaniel P. Berrange if test "$auth_pam" = "yes"; then 31768953caf3SDaniel P. Berrange feature_not_found "PAM" "Install PAM development package" 31778953caf3SDaniel P. Berrange else 31788953caf3SDaniel P. Berrange auth_pam=no 31798953caf3SDaniel P. Berrange fi 31808953caf3SDaniel P. Berrange fi 31818953caf3SDaniel P. Berrangefi 31828953caf3SDaniel P. Berrange 31838953caf3SDaniel P. Berrange########################################## 3184559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket ) 3185559607eaSDaniel P. Berrange 3186559607eaSDaniel P. Berrangehave_ifaddrs_h=yes 3187559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then 3188559607eaSDaniel P. Berrange have_ifaddrs_h=no 3189559607eaSDaniel P. Berrangefi 3190559607eaSDaniel P. Berrange 3191559607eaSDaniel P. Berrange########################################## 3192bbbf9bfbSStefan Weil# VTE probe 3193bbbf9bfbSStefan Weil 3194bbbf9bfbSStefan Weilif test "$vte" != "no"; then 3195c6feff9eSCole Robinson vteminversion="0.32.0" 3196c6feff9eSCole Robinson if $pkg_config --exists "vte-2.91"; then 3197c6feff9eSCole Robinson vtepackage="vte-2.91" 3198c6feff9eSCole Robinson else 3199528de90aSDaniel P. Berrange vtepackage="vte-2.90" 3200c6feff9eSCole Robinson fi 3201c6feff9eSCole Robinson if $pkg_config --exists "$vtepackage >= $vteminversion"; then 320289138857SStefan Weil vte_cflags=$($pkg_config --cflags $vtepackage) 320389138857SStefan Weil vte_libs=$($pkg_config --libs $vtepackage) 320489138857SStefan Weil vteversion=$($pkg_config --modversion $vtepackage) 3205bbbf9bfbSStefan Weil vte="yes" 3206bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 3207c6feff9eSCole Robinson feature_not_found "vte" "Install libvte-2.90/2.91 devel" 32089e04c683SStefan Weil else 3209bbbf9bfbSStefan Weil vte="no" 3210a4ccabcfSAnthony Liguori fi 3211a4ccabcfSAnthony Liguorifi 3212a4ccabcfSAnthony Liguori 3213a4ccabcfSAnthony Liguori########################################## 321411d9f695Sbellard# SDL probe 321511d9f695Sbellard 3216aee8a619SCarlo Marcelo Arenas Belón# Look for sdl configuration program (pkg-config or sdl2-config). Try 3217aee8a619SCarlo Marcelo Arenas Belón# sdl2-config even without cross prefix, and favour pkg-config over sdl2-config. 321847c03744SDave Airlie 3219c6093a05SPeter Xusdl_probe () 3220c6093a05SPeter Xu{ 32210015ca5cSDaniel P. Berrangé if $pkg_config sdl2 --exists; then 32220015ca5cSDaniel P. Berrangé sdlconfig="$pkg_config sdl2" 322389138857SStefan Weil sdlversion=$($sdlconfig --modversion 2>/dev/null) 3224aee8a619SCarlo Marcelo Arenas Belón elif has "$sdl2_config"; then 32250015ca5cSDaniel P. Berrangé sdlconfig="$sdl2_config" 322689138857SStefan Weil sdlversion=$($sdlconfig --version) 3227a0dfd8a4SLoïc Minier else 3228a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 32298f4ea9cdSGerd Hoffmann feature_not_found "sdl" "Install SDL2-devel" 3230a0dfd8a4SLoïc Minier fi 3231a0dfd8a4SLoïc Minier sdl=no 3232c6093a05SPeter Xu # no need to do the rest 3233c6093a05SPeter Xu return 32349316f803SPaolo Bonzini fi 3235aee8a619SCarlo Marcelo Arenas Belón if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl2-config; then 32363ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 32373ec87ffeSPaolo Bonzini fi 323811d9f695Sbellard 323911d9f695Sbellard cat > $TMPC << EOF 324011d9f695Sbellard#include <SDL.h> 324111d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 324211d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 324311d9f695SbellardEOF 324489138857SStefan Weil sdl_cflags=$($sdlconfig --cflags 2>/dev/null) 32452ca5c430SGerd Hoffmann sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug 324674f42e18STeLeMan if test "$static" = "yes" ; then 32470015ca5cSDaniel P. Berrangé if $pkg_config sdl2 --exists; then 32480015ca5cSDaniel P. Berrangé sdl_libs=$($pkg_config sdl2 --static --libs 2>/dev/null) 32495f37e6d4SThomas Huth else 325089138857SStefan Weil sdl_libs=$($sdlconfig --static-libs 2>/dev/null) 32515f37e6d4SThomas Huth fi 325274f42e18STeLeMan else 325389138857SStefan Weil sdl_libs=$($sdlconfig --libs 2>/dev/null) 325474f42e18STeLeMan fi 325552166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 325611d9f695Sbellard sdl=yes 32577c1f25b4Sbellard 325867c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 3259e633a5c6SEric Blake if test "$sdl" = "yes" && test "$static" = "yes" ; then 326067c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 326189138857SStefan Weil sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)" 326289138857SStefan Weil sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)" 326311d9f695Sbellard fi 326452166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 32651ac88f28SJuan Quintela : 32661ac88f28SJuan Quintela else 32671ac88f28SJuan Quintela sdl=no 32687c1f25b4Sbellard fi 32697c1f25b4Sbellard fi # static link 3270c4198157SJuan Quintela else # sdl not found 3271c4198157SJuan Quintela if test "$sdl" = "yes" ; then 32720015ca5cSDaniel P. Berrangé feature_not_found "sdl" "Install SDL2 devel" 3273c4198157SJuan Quintela fi 3274c4198157SJuan Quintela sdl=no 32757c1f25b4Sbellard fi # sdl compile test 3276c6093a05SPeter Xu} 3277c6093a05SPeter Xu 3278a442fe2fSDaniel P. Berrangésdl_image_probe () 3279a442fe2fSDaniel P. Berrangé{ 3280a442fe2fSDaniel P. Berrangé if test "$sdl_image" != "no" ; then 3281a442fe2fSDaniel P. Berrangé if $pkg_config SDL2_image --exists; then 3282a442fe2fSDaniel P. Berrangé if test "$static" = "yes"; then 3283a442fe2fSDaniel P. Berrangé sdl_image_libs=$($pkg_config SDL2_image --libs --static 2>/dev/null) 3284a442fe2fSDaniel P. Berrangé else 3285a442fe2fSDaniel P. Berrangé sdl_image_libs=$($pkg_config SDL2_image --libs 2>/dev/null) 3286a442fe2fSDaniel P. Berrangé fi 3287a442fe2fSDaniel P. Berrangé sdl_image_cflags=$($pkg_config SDL2_image --cflags 2>/dev/null) 3288a442fe2fSDaniel P. Berrangé sdl_image=yes 3289a442fe2fSDaniel P. Berrangé 3290a442fe2fSDaniel P. Berrangé sdl_cflags="$sdl_cflags $sdl_image_cflags" 3291a442fe2fSDaniel P. Berrangé sdl_libs="$sdl_libs $sdl_image_libs" 3292a442fe2fSDaniel P. Berrangé else 3293a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes" ; then 3294a442fe2fSDaniel P. Berrangé feature_not_found "sdl_image" "Install SDL Image devel" 3295a442fe2fSDaniel P. Berrangé else 3296a442fe2fSDaniel P. Berrangé sdl_image=no 3297a442fe2fSDaniel P. Berrangé fi 3298a442fe2fSDaniel P. Berrangé fi 3299a442fe2fSDaniel P. Berrangé fi 3300a442fe2fSDaniel P. Berrangé} 3301a442fe2fSDaniel P. Berrangé 3302c6093a05SPeter Xuif test "$sdl" != "no" ; then 3303c6093a05SPeter Xu sdl_probe 3304fd677642Sthsfi 330511d9f695Sbellard 33065368a422Saliguoriif test "$sdl" = "yes" ; then 3307a442fe2fSDaniel P. Berrangé sdl_image_probe 3308a442fe2fSDaniel P. Berrangéelse 3309a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes"; then 3310a442fe2fSDaniel P. Berrangé echo "warning: SDL Image requested, but SDL is not available, disabling" 3311a442fe2fSDaniel P. Berrangé fi 3312a442fe2fSDaniel P. Berrangé sdl_image=no 3313a442fe2fSDaniel P. Berrangéfi 3314a442fe2fSDaniel P. Berrangé 3315a442fe2fSDaniel P. Berrangéif test "$sdl" = "yes" ; then 33165368a422Saliguori cat > $TMPC <<EOF 33175368a422Saliguori#include <SDL.h> 33185368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 33195368a422Saliguori#include <X11/XKBlib.h> 33205368a422Saliguori#else 33215368a422Saliguori#error No x11 support 33225368a422Saliguori#endif 33235368a422Saliguoriint main(void) { return 0; } 33245368a422SaliguoriEOF 3325f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 33268781595bSGerd Hoffmann need_x11=yes 3327f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 3328f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 33295368a422Saliguori fi 33305368a422Saliguorifi 33315368a422Saliguori 33328f28f3fbSths########################################## 33332da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 33342da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 33352da776dbSMichael R. Hines cat > $TMPC <<EOF 33362da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 33372da776dbSMichael R. Hinesint main(void) { return 0; } 33382da776dbSMichael R. HinesEOF 3339ef6d4ccdSYuval Shaia rdma_libs="-lrdmacm -libverbs -libumad" 33402da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 33412da776dbSMichael R. Hines rdma="yes" 3342ef6d4ccdSYuval Shaia libs_softmmu="$libs_softmmu $rdma_libs" 33432da776dbSMichael R. Hines else 33442da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 33452da776dbSMichael R. Hines error_exit \ 3346ef6d4ccdSYuval Shaia " OpenFabrics librdmacm/libibverbs/libibumad not present." \ 33472da776dbSMichael R. Hines " Your options:" \ 3348ef6d4ccdSYuval Shaia " (1) Fast: Install infiniband packages (devel) from your distro." \ 33492da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 33502da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 33512da776dbSMichael R. Hines fi 33522da776dbSMichael R. Hines rdma="no" 33532da776dbSMichael R. Hines fi 33542da776dbSMichael R. Hinesfi 33552da776dbSMichael R. Hines 335621ab34c9SMarcel Apfelbaum########################################## 335721ab34c9SMarcel Apfelbaum# PVRDMA detection 335821ab34c9SMarcel Apfelbaum 335921ab34c9SMarcel Apfelbaumcat > $TMPC <<EOF && 336021ab34c9SMarcel Apfelbaum#include <sys/mman.h> 336121ab34c9SMarcel Apfelbaum 336221ab34c9SMarcel Apfelbaumint 336321ab34c9SMarcel Apfelbaummain(void) 336421ab34c9SMarcel Apfelbaum{ 336521ab34c9SMarcel Apfelbaum char buf = 0; 336621ab34c9SMarcel Apfelbaum void *addr = &buf; 336721ab34c9SMarcel Apfelbaum addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED); 336821ab34c9SMarcel Apfelbaum 336921ab34c9SMarcel Apfelbaum return 0; 337021ab34c9SMarcel Apfelbaum} 337121ab34c9SMarcel ApfelbaumEOF 337221ab34c9SMarcel Apfelbaum 337321ab34c9SMarcel Apfelbaumif test "$rdma" = "yes" ; then 337421ab34c9SMarcel Apfelbaum case "$pvrdma" in 337521ab34c9SMarcel Apfelbaum "") 337621ab34c9SMarcel Apfelbaum if compile_prog "" ""; then 337721ab34c9SMarcel Apfelbaum pvrdma="yes" 337821ab34c9SMarcel Apfelbaum else 337921ab34c9SMarcel Apfelbaum pvrdma="no" 338021ab34c9SMarcel Apfelbaum fi 338121ab34c9SMarcel Apfelbaum ;; 338221ab34c9SMarcel Apfelbaum "yes") 338321ab34c9SMarcel Apfelbaum if ! compile_prog "" ""; then 338421ab34c9SMarcel Apfelbaum error_exit "PVRDMA is not supported since mremap is not implemented" 338521ab34c9SMarcel Apfelbaum fi 338621ab34c9SMarcel Apfelbaum pvrdma="yes" 338721ab34c9SMarcel Apfelbaum ;; 338821ab34c9SMarcel Apfelbaum "no") 338921ab34c9SMarcel Apfelbaum pvrdma="no" 339021ab34c9SMarcel Apfelbaum ;; 339121ab34c9SMarcel Apfelbaum esac 339221ab34c9SMarcel Apfelbaumelse 339321ab34c9SMarcel Apfelbaum if test "$pvrdma" = "yes" ; then 339421ab34c9SMarcel Apfelbaum error_exit "PVRDMA requires rdma suppport" 339521ab34c9SMarcel Apfelbaum fi 339621ab34c9SMarcel Apfelbaum pvrdma="no" 339721ab34c9SMarcel Apfelbaumfi 339895c6bff3SBenoît Canet 3399ee108585SYuval Shaia# Let's see if enhanced reg_mr is supported 3400ee108585SYuval Shaiaif test "$pvrdma" = "yes" ; then 3401ee108585SYuval Shaia 3402ee108585SYuval Shaiacat > $TMPC <<EOF && 3403ee108585SYuval Shaia#include <infiniband/verbs.h> 3404ee108585SYuval Shaia 3405ee108585SYuval Shaiaint 3406ee108585SYuval Shaiamain(void) 3407ee108585SYuval Shaia{ 3408ee108585SYuval Shaia struct ibv_mr *mr; 3409ee108585SYuval Shaia struct ibv_pd *pd = NULL; 3410ee108585SYuval Shaia size_t length = 10; 3411ee108585SYuval Shaia uint64_t iova = 0; 3412ee108585SYuval Shaia int access = 0; 3413ee108585SYuval Shaia void *addr = NULL; 3414ee108585SYuval Shaia 3415ee108585SYuval Shaia mr = ibv_reg_mr_iova(pd, addr, length, iova, access); 3416ee108585SYuval Shaia 3417ee108585SYuval Shaia ibv_dereg_mr(mr); 3418ee108585SYuval Shaia 3419ee108585SYuval Shaia return 0; 3420ee108585SYuval Shaia} 3421ee108585SYuval ShaiaEOF 3422ee108585SYuval Shaia if ! compile_prog "" "-libverbs"; then 3423ee108585SYuval Shaia QEMU_CFLAGS="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR" 3424ee108585SYuval Shaia fi 3425ee108585SYuval Shaiafi 3426ee108585SYuval Shaia 342795c6bff3SBenoît Canet########################################## 34282f9606b3Saliguori# VNC SASL detection 3429e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then 34302f9606b3Saliguori cat > $TMPC <<EOF 34312f9606b3Saliguori#include <sasl/sasl.h> 34322f9606b3Saliguori#include <stdio.h> 34332f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 34342f9606b3SaliguoriEOF 34352f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 3436bd702ffcSPhilippe Mathieu-Daudé # QEMU defines struct iovec in "qemu/osdep.h", 3437bd702ffcSPhilippe Mathieu-Daudé # we don't want libsasl to redefine it in <sasl/sasl.h>. 3438bd702ffcSPhilippe Mathieu-Daudé vnc_sasl_cflags="-DSTRUCT_IOVEC_DEFINED" 34392f9606b3Saliguori vnc_sasl_libs="-lsasl2" 344052166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 3441ea784e3bSJuan Quintela vnc_sasl=yes 3442fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 3443ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 34442f9606b3Saliguori else 3445ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 344621684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 3447ea784e3bSJuan Quintela fi 3448ea784e3bSJuan Quintela vnc_sasl=no 34492f9606b3Saliguori fi 34502f9606b3Saliguorifi 34512f9606b3Saliguori 34522f9606b3Saliguori########################################## 34532f6f5c7aSCorentin Chary# VNC JPEG detection 3454e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then 34552f6f5c7aSCorentin Charycat > $TMPC <<EOF 34562f6f5c7aSCorentin Chary#include <stdio.h> 34572f6f5c7aSCorentin Chary#include <jpeglib.h> 34582f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 34592f6f5c7aSCorentin CharyEOF 34602f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 34612f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 34622f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 34632f6f5c7aSCorentin Chary vnc_jpeg=yes 34642f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 3465ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 34662f6f5c7aSCorentin Chary else 34672f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 346821684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 34692f6f5c7aSCorentin Chary fi 34702f6f5c7aSCorentin Chary vnc_jpeg=no 34712f6f5c7aSCorentin Chary fi 34722f6f5c7aSCorentin Charyfi 34732f6f5c7aSCorentin Chary 34742f6f5c7aSCorentin Chary########################################## 3475efe556adSCorentin Chary# VNC PNG detection 3476e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_png" != "no" ; then 3477efe556adSCorentin Charycat > $TMPC <<EOF 3478efe556adSCorentin Chary//#include <stdio.h> 3479efe556adSCorentin Chary#include <png.h> 3480832ce9c2SScott Wood#include <stddef.h> 3481efe556adSCorentin Charyint main(void) { 3482efe556adSCorentin Chary png_structp png_ptr; 3483efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 34847edc3fedSPeter Maydell return png_ptr != 0; 3485efe556adSCorentin Chary} 3486efe556adSCorentin CharyEOF 348765d5d3f9SStefan Weil if $pkg_config libpng --exists; then 348889138857SStefan Weil vnc_png_cflags=$($pkg_config libpng --cflags) 348989138857SStefan Weil vnc_png_libs=$($pkg_config libpng --libs) 34909af8025eSBrad else 3491efe556adSCorentin Chary vnc_png_cflags="" 3492efe556adSCorentin Chary vnc_png_libs="-lpng" 34939af8025eSBrad fi 3494efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 3495efe556adSCorentin Chary vnc_png=yes 3496efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 34979af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 3498efe556adSCorentin Chary else 3499efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 350021684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 3501efe556adSCorentin Chary fi 3502efe556adSCorentin Chary vnc_png=no 3503efe556adSCorentin Chary fi 3504efe556adSCorentin Charyfi 3505efe556adSCorentin Chary 3506efe556adSCorentin Chary########################################## 35076a021536SGerd Hoffmann# xkbcommon probe 35086a021536SGerd Hoffmannif test "$xkbcommon" != "no" ; then 35096a021536SGerd Hoffmann if $pkg_config xkbcommon --exists; then 35106a021536SGerd Hoffmann xkbcommon_cflags=$($pkg_config xkbcommon --cflags) 35116a021536SGerd Hoffmann xkbcommon_libs=$($pkg_config xkbcommon --libs) 35126a021536SGerd Hoffmann xkbcommon=yes 35136a021536SGerd Hoffmann else 35146a021536SGerd Hoffmann if test "$xkbcommon" = "yes" ; then 35156a021536SGerd Hoffmann feature_not_found "xkbcommon" "Install libxkbcommon-devel" 35166a021536SGerd Hoffmann fi 35176a021536SGerd Hoffmann xkbcommon=no 35186a021536SGerd Hoffmann fi 35196a021536SGerd Hoffmannfi 35206a021536SGerd Hoffmann 352176655d6dSaliguori 352276655d6dSaliguori########################################## 3523c1bb86cdSEric Blake# xfsctl() probe, used for file-posix.c 3524dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 3525dce512deSChristoph Hellwig cat > $TMPC << EOF 3526ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 3527dce512deSChristoph Hellwig#include <xfs/xfs.h> 3528dce512deSChristoph Hellwigint main(void) 3529dce512deSChristoph Hellwig{ 3530dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 3531dce512deSChristoph Hellwig return 0; 3532dce512deSChristoph Hellwig} 3533dce512deSChristoph HellwigEOF 3534dce512deSChristoph Hellwig if compile_prog "" "" ; then 3535dce512deSChristoph Hellwig xfs="yes" 3536dce512deSChristoph Hellwig else 3537dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 353821684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 3539dce512deSChristoph Hellwig fi 3540dce512deSChristoph Hellwig xfs=no 3541dce512deSChristoph Hellwig fi 3542dce512deSChristoph Hellwigfi 3543dce512deSChristoph Hellwig 3544dce512deSChristoph Hellwig########################################## 35458a16d273Sths# vde libraries probe 3546dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 35474baae0acSJuan Quintela vde_libs="-lvdeplug" 35488a16d273Sths cat > $TMPC << EOF 35498a16d273Sths#include <libvdeplug.h> 35504a7f0e06Spbrookint main(void) 35514a7f0e06Spbrook{ 35524a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 3553fea08e08SPeter Maydell char s[] = ""; 3554fea08e08SPeter Maydell vde_open(s, s, &a); 35554a7f0e06Spbrook return 0; 35564a7f0e06Spbrook} 35578a16d273SthsEOF 355852166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 35594baae0acSJuan Quintela vde=yes 3560dfb278bdSJuan Quintela else 3561dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 356221684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 3563dfb278bdSJuan Quintela fi 3564dfb278bdSJuan Quintela vde=no 35658a16d273Sths fi 35668a16d273Sthsfi 35678a16d273Sths 35688a16d273Sths########################################## 35690a985b37SVincenzo Maffione# netmap support probe 35700a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 35710a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 35720a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 35730a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 35740a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 357558952137SVincenzo Maffioneif test "$netmap" != "no" ; then 357658952137SVincenzo Maffione cat > $TMPC << EOF 357758952137SVincenzo Maffione#include <inttypes.h> 357858952137SVincenzo Maffione#include <net/if.h> 357958952137SVincenzo Maffione#include <net/netmap.h> 358058952137SVincenzo Maffione#include <net/netmap_user.h> 35810a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 35820a985b37SVincenzo Maffione#error 35830a985b37SVincenzo Maffione#endif 358458952137SVincenzo Maffioneint main(void) { return 0; } 358558952137SVincenzo MaffioneEOF 358658952137SVincenzo Maffione if compile_prog "" "" ; then 358758952137SVincenzo Maffione netmap=yes 358858952137SVincenzo Maffione else 358958952137SVincenzo Maffione if test "$netmap" = "yes" ; then 359058952137SVincenzo Maffione feature_not_found "netmap" 359158952137SVincenzo Maffione fi 359258952137SVincenzo Maffione netmap=no 359358952137SVincenzo Maffione fi 359458952137SVincenzo Maffionefi 359558952137SVincenzo Maffione 359658952137SVincenzo Maffione########################################## 359747e98658SCorey Bryant# libcap-ng library probe 359847e98658SCorey Bryantif test "$cap_ng" != "no" ; then 359947e98658SCorey Bryant cap_libs="-lcap-ng" 360047e98658SCorey Bryant cat > $TMPC << EOF 360147e98658SCorey Bryant#include <cap-ng.h> 360247e98658SCorey Bryantint main(void) 360347e98658SCorey Bryant{ 360447e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 360547e98658SCorey Bryant return 0; 360647e98658SCorey Bryant} 360747e98658SCorey BryantEOF 360847e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 360947e98658SCorey Bryant cap_ng=yes 361047e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 361147e98658SCorey Bryant else 361247e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 361321684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 361447e98658SCorey Bryant fi 361547e98658SCorey Bryant cap_ng=no 361647e98658SCorey Bryant fi 361747e98658SCorey Bryantfi 361847e98658SCorey Bryant 361947e98658SCorey Bryant########################################## 3620c2de5c91Smalc# Sound support libraries probe 36218f28f3fbSths 362289138857SStefan Weilaudio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g') 3623c2de5c91Smalcfor drv in $audio_drv_list; do 3624c2de5c91Smalc case $drv in 3625e42975a1SGerd Hoffmann alsa | try-alsa) 3626c80a867fSGerd Hoffmann if $pkg_config alsa --exists; then 3627c80a867fSGerd Hoffmann alsa_libs=$($pkg_config alsa --libs) 3628e42975a1SGerd Hoffmann if test "$drv" = "try-alsa"; then 3629e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa/alsa/') 3630e42975a1SGerd Hoffmann fi 3631e42975a1SGerd Hoffmann else 3632e42975a1SGerd Hoffmann if test "$drv" = "try-alsa"; then 3633e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa//') 3634c80a867fSGerd Hoffmann else 3635c80a867fSGerd Hoffmann error_exit "$drv check failed" \ 3636c80a867fSGerd Hoffmann "Make sure to have the $drv libs and headers installed." 3637c80a867fSGerd Hoffmann fi 3638e42975a1SGerd Hoffmann fi 3639c2de5c91Smalc ;; 3640c2de5c91Smalc 3641e42975a1SGerd Hoffmann pa | try-pa) 3642c80a867fSGerd Hoffmann if $pkg_config libpulse --exists; then 3643c80a867fSGerd Hoffmann pulse_libs=$($pkg_config libpulse --libs) 3644e42975a1SGerd Hoffmann if test "$drv" = "try-pa"; then 3645e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa/pa/') 3646e42975a1SGerd Hoffmann fi 3647e42975a1SGerd Hoffmann else 3648e42975a1SGerd Hoffmann if test "$drv" = "try-pa"; then 3649e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa//') 3650c80a867fSGerd Hoffmann else 3651c80a867fSGerd Hoffmann error_exit "$drv check failed" \ 3652c80a867fSGerd Hoffmann "Make sure to have the $drv libs and headers installed." 3653c80a867fSGerd Hoffmann fi 3654e42975a1SGerd Hoffmann fi 3655b8e59f18Smalc ;; 3656b8e59f18Smalc 3657373967b2SGerd Hoffmann sdl) 3658373967b2SGerd Hoffmann if test "$sdl" = "no"; then 3659373967b2SGerd Hoffmann error_exit "sdl not found or disabled, can not use sdl audio driver" 3660373967b2SGerd Hoffmann fi 3661373967b2SGerd Hoffmann ;; 3662373967b2SGerd Hoffmann 3663e42975a1SGerd Hoffmann try-sdl) 3664e42975a1SGerd Hoffmann if test "$sdl" = "no"; then 3665e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl//') 3666e42975a1SGerd Hoffmann else 3667e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl/sdl/') 3668e42975a1SGerd Hoffmann fi 3669e42975a1SGerd Hoffmann ;; 3670e42975a1SGerd Hoffmann 3671997e690aSJuan Quintela coreaudio) 3672b1149911SFam Zheng coreaudio_libs="-framework CoreAudio" 3673997e690aSJuan Quintela ;; 3674997e690aSJuan Quintela 3675a4bf6780SJuan Quintela dsound) 3676b1149911SFam Zheng dsound_libs="-lole32 -ldxguid" 3677d5631638Smalc audio_win_int="yes" 3678a4bf6780SJuan Quintela ;; 3679a4bf6780SJuan Quintela 3680a4bf6780SJuan Quintela oss) 3681b1149911SFam Zheng oss_libs="$oss_lib" 3682a4bf6780SJuan Quintela ;; 3683a4bf6780SJuan Quintela 36842e445703SGeoffrey McRae jack | try-jack) 36852e445703SGeoffrey McRae if $pkg_config jack --exists; then 36862e445703SGeoffrey McRae jack_libs=$($pkg_config jack --libs) 36872e445703SGeoffrey McRae if test "$drv" = "try-jack"; then 36882e445703SGeoffrey McRae audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack/jack/') 36892e445703SGeoffrey McRae fi 36902e445703SGeoffrey McRae else 36912e445703SGeoffrey McRae if test "$drv" = "try-jack"; then 36922e445703SGeoffrey McRae audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack//') 36932e445703SGeoffrey McRae else 36942e445703SGeoffrey McRae error_exit "$drv check failed" \ 36952e445703SGeoffrey McRae "Make sure to have the $drv libs and headers installed." 36962e445703SGeoffrey McRae fi 36972e445703SGeoffrey McRae fi 36982e445703SGeoffrey McRae ;; 36992e445703SGeoffrey McRae 3700e4c63a6aSmalc *) 37011c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 370276ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 370376ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 3704e4c63a6aSmalc } 3705e4c63a6aSmalc ;; 3706c2de5c91Smalc esac 3707c2de5c91Smalcdone 37088f28f3fbSths 37094d3b6f6eSbalrog########################################## 37102e4d9fb1Saurel32# BrlAPI probe 37112e4d9fb1Saurel32 37124ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 3713eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 37142e4d9fb1Saurel32 cat > $TMPC << EOF 37152e4d9fb1Saurel32#include <brlapi.h> 3716832ce9c2SScott Wood#include <stddef.h> 37172e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 37182e4d9fb1Saurel32EOF 371952166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 37202e4d9fb1Saurel32 brlapi=yes 37214ffcedb6SJuan Quintela else 37224ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 372321684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 37244ffcedb6SJuan Quintela fi 37254ffcedb6SJuan Quintela brlapi=no 3726eb82284fSJuan Quintela fi 3727eb82284fSJuan Quintelafi 37282e4d9fb1Saurel32 37292e4d9fb1Saurel32########################################## 3730e08bb301SSamuel Thibault# iconv probe 3731e08bb301SSamuel Thibaultif test "$iconv" != "no" ; then 3732e08bb301SSamuel Thibault cat > $TMPC << EOF 3733e08bb301SSamuel Thibault#include <iconv.h> 3734e08bb301SSamuel Thibaultint main(void) { 3735e08bb301SSamuel Thibault iconv_t conv = iconv_open("WCHAR_T", "UCS-2"); 3736e08bb301SSamuel Thibault return conv != (iconv_t) -1; 3737e08bb301SSamuel Thibault} 3738e08bb301SSamuel ThibaultEOF 3739e08bb301SSamuel Thibault iconv_prefix_list="/usr/local:/usr" 3740e08bb301SSamuel Thibault iconv_lib_list=":-liconv" 3741e08bb301SSamuel Thibault IFS=: 3742e08bb301SSamuel Thibault for iconv_prefix in $iconv_prefix_list; do 3743e08bb301SSamuel Thibault IFS=: 3744e08bb301SSamuel Thibault iconv_cflags="-I$iconv_prefix/include" 3745e08bb301SSamuel Thibault iconv_ldflags="-L$iconv_prefix/lib" 3746e08bb301SSamuel Thibault for iconv_link in $iconv_lib_list; do 3747e08bb301SSamuel Thibault unset IFS 3748e08bb301SSamuel Thibault iconv_lib="$iconv_ldflags $iconv_link" 3749e08bb301SSamuel Thibault echo "looking at iconv in '$iconv_cflags' '$iconv_lib'" >> config.log 3750e08bb301SSamuel Thibault if compile_prog "$iconv_cflags" "$iconv_lib" ; then 3751e08bb301SSamuel Thibault iconv_found=yes 3752e08bb301SSamuel Thibault break 3753e08bb301SSamuel Thibault fi 3754e08bb301SSamuel Thibault done 3755e08bb301SSamuel Thibault if test "$iconv_found" = yes ; then 3756e08bb301SSamuel Thibault break 3757e08bb301SSamuel Thibault fi 3758e08bb301SSamuel Thibault done 3759e08bb301SSamuel Thibault if test "$iconv_found" = "yes" ; then 3760e08bb301SSamuel Thibault iconv=yes 3761e08bb301SSamuel Thibault else 3762e08bb301SSamuel Thibault if test "$iconv" = "yes" ; then 3763e08bb301SSamuel Thibault feature_not_found "iconv" "Install iconv devel" 3764e08bb301SSamuel Thibault fi 3765e08bb301SSamuel Thibault iconv=no 3766e08bb301SSamuel Thibault fi 3767e08bb301SSamuel Thibaultfi 3768e08bb301SSamuel Thibault 3769e08bb301SSamuel Thibault########################################## 37704d3b6f6eSbalrog# curses probe 3771e08bb301SSamuel Thibaultif test "$iconv" = "no" ; then 3772e08bb301SSamuel Thibault # curses will need iconv 3773e08bb301SSamuel Thibault curses=no 3774e08bb301SSamuel Thibaultfi 3775a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 3776e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 37778ddc5bf9SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):" 37788ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 3779e095e2f3SStefan Weil else 37807c703002SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:" 37818ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw" 3782e095e2f3SStefan Weil fi 3783c584a6d0SJuan Quintela curses_found=no 37844d3b6f6eSbalrog cat > $TMPC << EOF 37858ddc5bf9SSamuel Thibault#include <locale.h> 37864d3b6f6eSbalrog#include <curses.h> 37878ddc5bf9SSamuel Thibault#include <wchar.h> 37882f8b7cd5SSamuel Thibault#include <langinfo.h> 3789ef9a2524SStefan Weilint main(void) { 37902f8b7cd5SSamuel Thibault const char *codeset; 37918ddc5bf9SSamuel Thibault wchar_t wch = L'w'; 37928ddc5bf9SSamuel Thibault setlocale(LC_ALL, ""); 3793ef9a2524SStefan Weil resize_term(0, 0); 37948ddc5bf9SSamuel Thibault addwstr(L"wide chars\n"); 37958ddc5bf9SSamuel Thibault addnwstr(&wch, 1); 37967c703002SSamuel Thibault add_wch(WACS_DEGREE); 37972f8b7cd5SSamuel Thibault codeset = nl_langinfo(CODESET); 37982f8b7cd5SSamuel Thibault return codeset != 0; 3799ef9a2524SStefan Weil} 38004d3b6f6eSbalrogEOF 3801ecbe251fSVadim Evard IFS=: 38028ddc5bf9SSamuel Thibault for curses_inc in $curses_inc_list; do 3803b01a4fd3SPeter Maydell # Make sure we get the wide character prototypes 3804b01a4fd3SPeter Maydell curses_inc="-DNCURSES_WIDECHAR $curses_inc" 38057c703002SSamuel Thibault IFS=: 38068ddc5bf9SSamuel Thibault for curses_lib in $curses_lib_list; do 3807ecbe251fSVadim Evard unset IFS 38088ddc5bf9SSamuel Thibault if compile_prog "$curses_inc" "$curses_lib" ; then 3809c584a6d0SJuan Quintela curses_found=yes 38104f78ef9aSJuan Quintela break 38114d3b6f6eSbalrog fi 38124f78ef9aSJuan Quintela done 38137c703002SSamuel Thibault if test "$curses_found" = yes ; then 38147c703002SSamuel Thibault break 38157c703002SSamuel Thibault fi 38168ddc5bf9SSamuel Thibault done 3817ecbe251fSVadim Evard unset IFS 3818c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 3819c584a6d0SJuan Quintela curses=yes 3820c584a6d0SJuan Quintela else 3821c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 382221684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 3823c584a6d0SJuan Quintela fi 3824c584a6d0SJuan Quintela curses=no 3825c584a6d0SJuan Quintela fi 38264f78ef9aSJuan Quintelafi 38274d3b6f6eSbalrog 3828414f0dabSblueswir1########################################## 3829769ce76dSAlexander Graf# curl probe 3830a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 383165d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 3832a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 38334e2b0658SPaolo Bonzini else 38344e2b0658SPaolo Bonzini curlconfig=curl-config 38354e2b0658SPaolo Bonzini fi 3836769ce76dSAlexander Graf cat > $TMPC << EOF 3837769ce76dSAlexander Graf#include <curl/curl.h> 38380b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 3839769ce76dSAlexander GrafEOF 384089138857SStefan Weil curl_cflags=$($curlconfig --cflags 2>/dev/null) 384189138857SStefan Weil curl_libs=$($curlconfig --libs 2>/dev/null) 3842b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 3843769ce76dSAlexander Graf curl=yes 3844788c8196SJuan Quintela else 3845788c8196SJuan Quintela if test "$curl" = "yes" ; then 384621684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 3847788c8196SJuan Quintela fi 3848788c8196SJuan Quintela curl=no 3849769ce76dSAlexander Graf fi 3850769ce76dSAlexander Graffi # test "$curl" 3851769ce76dSAlexander Graf 3852769ce76dSAlexander Graf########################################## 3853e18df141SAnthony Liguori# glib support probe 3854a52d28afSPaolo Bonzini 385500f2cfbbSDaniel P. Berrangéglib_req_ver=2.48 3856aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 3857aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 3858a88afc64SGerd Hoffmann glib_modules="$glib_modules gmodule-export-2.0" 3859aa0d1f44SPaolo Bonzinifi 386054cb65d8SEmilio G. Cotaif test "$plugins" = yes; then 386154cb65d8SEmilio G. Cota glib_modules="$glib_modules gmodule-2.0" 386254cb65d8SEmilio G. Cotafi 3863e26110cfSFam Zheng 38644eaf7202SSameeh Jubran# This workaround is required due to a bug in pkg-config file for glib as it 38654eaf7202SSameeh Jubran# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static 38664eaf7202SSameeh Jubran 3867e633a5c6SEric Blakeif test "$static" = yes && test "$mingw32" = yes; then 38684eaf7202SSameeh Jubran QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS" 38694eaf7202SSameeh Jubranfi 38704eaf7202SSameeh Jubran 3871aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 3872e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 387389138857SStefan Weil glib_cflags=$($pkg_config --cflags $i) 387489138857SStefan Weil glib_libs=$($pkg_config --libs $i) 38754a058899SMarc-André Lureau QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" 387614015304SAnthony Liguori LIBS="$glib_libs $LIBS" 3877957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 3878e18df141SAnthony Liguori else 3879e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 3880e26110cfSFam Zheng fi 3881e26110cfSFam Zhengdone 3882e26110cfSFam Zheng 3883f876b765SMarc-André Lureauif $pkg_config --atleast-version=$glib_req_ver gio-2.0; then 3884f876b765SMarc-André Lureau gio=yes 3885f876b765SMarc-André Lureau gio_cflags=$($pkg_config --cflags gio-2.0) 3886f876b765SMarc-André Lureau gio_libs=$($pkg_config --libs gio-2.0) 388725a97a56SMarc-André Lureau gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0) 38880dba4897SMarc-André Lureau if [ ! -x "$gdbus_codegen" ]; then 38890dba4897SMarc-André Lureau gdbus_codegen= 38900dba4897SMarc-André Lureau fi 3891f876b765SMarc-André Lureauelse 3892f876b765SMarc-André Lureau gio=no 3893f876b765SMarc-André Lureaufi 3894f876b765SMarc-André Lureau 389525a97a56SMarc-André Lureauif $pkg_config --atleast-version=$glib_req_ver gio-unix-2.0; then 389625a97a56SMarc-André Lureau gio_cflags="$gio_cflags $($pkg_config --cflags gio-unix-2.0)" 389725a97a56SMarc-André Lureau gio_libs="$gio_libs $($pkg_config --libs gio-unix-2.0)" 389825a97a56SMarc-André Lureaufi 389925a97a56SMarc-André Lureau 3900977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the 3901977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches 3902977a82abSDaniel P. Berrange# problems on multi-arch where people try to build 3903977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers 3904977a82abSDaniel P. Berrangecat > $TMPC <<EOF 3905977a82abSDaniel P. Berrange#include <glib.h> 3906977a82abSDaniel P. Berrange#include <unistd.h> 3907977a82abSDaniel P. Berrange 3908977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \ 3909977a82abSDaniel P. Berrange typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 3910977a82abSDaniel P. Berrange 3911977a82abSDaniel P. Berrangeint main(void) { 3912977a82abSDaniel P. Berrange QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 3913977a82abSDaniel P. Berrange return 0; 3914977a82abSDaniel P. Berrange} 3915977a82abSDaniel P. BerrangeEOF 3916977a82abSDaniel P. Berrange 39175919e032SStefan Weilif ! compile_prog "$CFLAGS" "$LIBS" ; then 3918977a82abSDaniel P. Berrange error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 3919977a82abSDaniel P. Berrange "You probably need to set PKG_CONFIG_LIBDIR"\ 3920977a82abSDaniel P. Berrange "to point to the right pkg-config files for your"\ 3921977a82abSDaniel P. Berrange "build target" 3922977a82abSDaniel P. Berrangefi 3923977a82abSDaniel P. Berrange 3924bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 3925bbbf2e04SJohn Snowcat > $TMPC << EOF 3926bbbf2e04SJohn Snow#include <glib.h> 3927bbbf2e04SJohn Snowint main(void) { return 0; } 3928bbbf2e04SJohn SnowEOF 3929bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 3930bbbf2e04SJohn Snow if cc_has_warning_flag "-Wno-unknown-attributes"; then 3931bbbf2e04SJohn Snow glib_cflags="-Wno-unknown-attributes $glib_cflags" 3932bbbf2e04SJohn Snow CFLAGS="-Wno-unknown-attributes $CFLAGS" 3933bbbf2e04SJohn Snow fi 3934bbbf2e04SJohn Snowfi 3935bbbf2e04SJohn Snow 39369bda600bSEric Blake# Silence clang warnings triggered by glib < 2.57.2 39379bda600bSEric Blakecat > $TMPC << EOF 39389bda600bSEric Blake#include <glib.h> 39399bda600bSEric Blaketypedef struct Foo { 39409bda600bSEric Blake int i; 39419bda600bSEric Blake} Foo; 39429bda600bSEric Blakestatic void foo_free(Foo *f) 39439bda600bSEric Blake{ 39449bda600bSEric Blake g_free(f); 39459bda600bSEric Blake} 39469bda600bSEric BlakeG_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free); 39479bda600bSEric Blakeint main(void) { return 0; } 39489bda600bSEric BlakeEOF 39499bda600bSEric Blakeif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 39509bda600bSEric Blake if cc_has_warning_flag "-Wno-unused-function"; then 39519bda600bSEric Blake glib_cflags="$glib_cflags -Wno-unused-function" 39529bda600bSEric Blake CFLAGS="$CFLAGS -Wno-unused-function" 39539bda600bSEric Blake fi 39549bda600bSEric Blakefi 39559bda600bSEric Blake 39566a1f42bdSStefan Weil######################################### 39576a1f42bdSStefan Weil# zlib check 39586a1f42bdSStefan Weil 39596a1f42bdSStefan Weilif test "$zlib" != "no" ; then 39606a1f42bdSStefan Weil if $pkg_config --exists zlib; then 39616a1f42bdSStefan Weil zlib_cflags=$($pkg_config --cflags zlib) 39626a1f42bdSStefan Weil zlib_libs=$($pkg_config --libs zlib) 39636a1f42bdSStefan Weil QEMU_CFLAGS="$zlib_cflags $QEMU_CFLAGS" 39646a1f42bdSStefan Weil LIBS="$zlib_libs $LIBS" 39656a1f42bdSStefan Weil else 39666a1f42bdSStefan Weil cat > $TMPC << EOF 39676a1f42bdSStefan Weil#include <zlib.h> 39686a1f42bdSStefan Weilint main(void) { zlibVersion(); return 0; } 39696a1f42bdSStefan WeilEOF 39706a1f42bdSStefan Weil if compile_prog "" "-lz" ; then 39716a1f42bdSStefan Weil LIBS="$LIBS -lz" 39726a1f42bdSStefan Weil else 39736a1f42bdSStefan Weil error_exit "zlib check failed" \ 39746a1f42bdSStefan Weil "Make sure to have the zlib libs and headers installed." 39756a1f42bdSStefan Weil fi 39766a1f42bdSStefan Weil fi 39776a1f42bdSStefan Weilfi 39786a1f42bdSStefan Weil 3979e26110cfSFam Zheng########################################## 3980e26110cfSFam Zheng# SHA command probe for modules 3981e26110cfSFam Zhengif test "$modules" = yes; then 3982e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 3983e26110cfSFam Zheng for c in $shacmd_probe; do 39848ccefb91SFam Zheng if has $c; then 3985e26110cfSFam Zheng shacmd="$c" 3986e26110cfSFam Zheng break 3987e26110cfSFam Zheng fi 3988e26110cfSFam Zheng done 3989e26110cfSFam Zheng if test "$shacmd" = ""; then 3990e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 3991e26110cfSFam Zheng fi 3992e18df141SAnthony Liguorifi 3993e18df141SAnthony Liguori 3994e18df141SAnthony Liguori########################################## 3995e2134eb9SGerd Hoffmann# pixman support probe 3996e2134eb9SGerd Hoffmann 3997e633a5c6SEric Blakeif test "$want_tools" = "no" && test "$softmmu" = "no"; then 399874880fe2SRobert Schiele pixman_cflags= 399974880fe2SRobert Schiele pixman_libs= 400035c4e86cSGerd Hoffmannelif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 400189138857SStefan Weil pixman_cflags=$($pkg_config --cflags pixman-1) 400289138857SStefan Weil pixman_libs=$($pkg_config --libs pixman-1) 4003e2134eb9SGerd Hoffmannelse 4004c12b6d70SGerd Hoffmann error_exit "pixman >= 0.21.8 not present." \ 4005c12b6d70SGerd Hoffmann "Please install the pixman devel package." 4006e2134eb9SGerd Hoffmannfi 4007e2134eb9SGerd Hoffmann 4008e2134eb9SGerd Hoffmann########################################## 4009fe8fc5aeSPaolo Bonzini# libmpathpersist probe 4010fe8fc5aeSPaolo Bonzini 4011fe8fc5aeSPaolo Bonziniif test "$mpath" != "no" ; then 40121b0578f5SMurilo Opsfelder Araujo # probe for the new API 4013fe8fc5aeSPaolo Bonzini cat > $TMPC <<EOF 4014fe8fc5aeSPaolo Bonzini#include <libudev.h> 4015fe8fc5aeSPaolo Bonzini#include <mpath_persist.h> 4016fe8fc5aeSPaolo Bonziniunsigned mpath_mx_alloc_len = 1024; 4017fe8fc5aeSPaolo Bonziniint logsink; 4018b3f1c8c4SPaolo Bonzinistatic struct config *multipath_conf; 4019b3f1c8c4SPaolo Bonziniextern struct udev *udev; 4020b3f1c8c4SPaolo Bonziniextern struct config *get_multipath_config(void); 4021b3f1c8c4SPaolo Bonziniextern void put_multipath_config(struct config *conf); 4022b3f1c8c4SPaolo Bonzinistruct udev *udev; 4023b3f1c8c4SPaolo Bonzinistruct config *get_multipath_config(void) { return multipath_conf; } 4024b3f1c8c4SPaolo Bonzinivoid put_multipath_config(struct config *conf) { } 4025b3f1c8c4SPaolo Bonzini 4026fe8fc5aeSPaolo Bonziniint main(void) { 4027b3f1c8c4SPaolo Bonzini udev = udev_new(); 4028b3f1c8c4SPaolo Bonzini multipath_conf = mpath_lib_init(); 4029fe8fc5aeSPaolo Bonzini return 0; 4030fe8fc5aeSPaolo Bonzini} 4031fe8fc5aeSPaolo BonziniEOF 4032fe8fc5aeSPaolo Bonzini if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 4033fe8fc5aeSPaolo Bonzini mpathpersist=yes 40341b0578f5SMurilo Opsfelder Araujo mpathpersist_new_api=yes 40351b0578f5SMurilo Opsfelder Araujo else 40361b0578f5SMurilo Opsfelder Araujo # probe for the old API 40371b0578f5SMurilo Opsfelder Araujo cat > $TMPC <<EOF 40381b0578f5SMurilo Opsfelder Araujo#include <libudev.h> 40391b0578f5SMurilo Opsfelder Araujo#include <mpath_persist.h> 40401b0578f5SMurilo Opsfelder Araujounsigned mpath_mx_alloc_len = 1024; 40411b0578f5SMurilo Opsfelder Araujoint logsink; 40421b0578f5SMurilo Opsfelder Araujoint main(void) { 40431b0578f5SMurilo Opsfelder Araujo struct udev *udev = udev_new(); 40441b0578f5SMurilo Opsfelder Araujo mpath_lib_init(udev); 40451b0578f5SMurilo Opsfelder Araujo return 0; 40461b0578f5SMurilo Opsfelder Araujo} 40471b0578f5SMurilo Opsfelder AraujoEOF 40481b0578f5SMurilo Opsfelder Araujo if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 40491b0578f5SMurilo Opsfelder Araujo mpathpersist=yes 40501b0578f5SMurilo Opsfelder Araujo mpathpersist_new_api=no 4051fe8fc5aeSPaolo Bonzini else 4052fe8fc5aeSPaolo Bonzini mpathpersist=no 4053fe8fc5aeSPaolo Bonzini fi 40541b0578f5SMurilo Opsfelder Araujo fi 4055fe8fc5aeSPaolo Bonzinielse 4056fe8fc5aeSPaolo Bonzini mpathpersist=no 4057fe8fc5aeSPaolo Bonzinifi 4058fe8fc5aeSPaolo Bonzini 4059fe8fc5aeSPaolo Bonzini########################################## 4060e5d355d1Saliguori# pthread probe 40614b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 40623c529d93Saliguori 4063e5d355d1Saliguoripthread=no 4064414f0dabSblueswir1cat > $TMPC << EOF 40653c529d93Saliguori#include <pthread.h> 40667a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 40677a42bbe4SStefan Weilint main(void) { 40687a42bbe4SStefan Weil pthread_t thread; 40697a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 40707a42bbe4SStefan Weil return 0; 40717a42bbe4SStefan Weil} 4072414f0dabSblueswir1EOF 4073bd00d539SAndreas Färberif compile_prog "" "" ; then 4074bd00d539SAndreas Färber pthread=yes 4075bd00d539SAndreas Färberelse 4076de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 407752166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 4078e5d355d1Saliguori pthread=yes 4079e3c56761SPeter Portante found=no 4080e3c56761SPeter Portante for lib_entry in $LIBS; do 4081e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 4082e3c56761SPeter Portante found=yes 4083e3c56761SPeter Portante break 4084e3c56761SPeter Portante fi 4085e3c56761SPeter Portante done 4086e3c56761SPeter Portante if test "$found" = "no"; then 40875572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 408814ab3aa7SMarc-André Lureau libs_qga="$pthread_lib $libs_qga" 4089e3c56761SPeter Portante fi 4090409437e1SDaniel P. Berrange PTHREAD_LIB="$pthread_lib" 4091de65fe0fSSebastian Herbszt break 4092414f0dabSblueswir1 fi 4093de65fe0fSSebastian Herbszt done 4094bd00d539SAndreas Färberfi 4095414f0dabSblueswir1 4096e633a5c6SEric Blakeif test "$mingw32" != yes && test "$pthread" = no; then 409776ad07a4SPeter Maydell error_exit "pthread check failed" \ 409876ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 4099e5d355d1Saliguorifi 4100e5d355d1Saliguori 4101479a5747SRoman Bolshakov# check for pthread_setname_np with thread id 4102479a5747SRoman Bolshakovpthread_setname_np_w_tid=no 41035c312079SDr. David Alan Gilbertcat > $TMPC << EOF 41045c312079SDr. David Alan Gilbert#include <pthread.h> 41055c312079SDr. David Alan Gilbert 41065c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 41075c312079SDr. David Alan Gilbertint main(void) 41085c312079SDr. David Alan Gilbert{ 41095c312079SDr. David Alan Gilbert pthread_t thread; 41105c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 41115c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 41125c312079SDr. David Alan Gilbert return 0; 41135c312079SDr. David Alan Gilbert} 41145c312079SDr. David Alan GilbertEOF 41155c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 4116479a5747SRoman Bolshakov pthread_setname_np_w_tid=yes 4117479a5747SRoman Bolshakovfi 4118479a5747SRoman Bolshakov 4119479a5747SRoman Bolshakov# check for pthread_setname_np without thread id 4120479a5747SRoman Bolshakovpthread_setname_np_wo_tid=no 4121479a5747SRoman Bolshakovcat > $TMPC << EOF 4122479a5747SRoman Bolshakov#include <pthread.h> 4123479a5747SRoman Bolshakov 4124479a5747SRoman Bolshakovstatic void *f(void *p) { pthread_setname_np("QEMU"); } 4125479a5747SRoman Bolshakovint main(void) 4126479a5747SRoman Bolshakov{ 4127479a5747SRoman Bolshakov pthread_t thread; 4128479a5747SRoman Bolshakov pthread_create(&thread, 0, f, 0); 4129479a5747SRoman Bolshakov return 0; 4130479a5747SRoman Bolshakov} 4131479a5747SRoman BolshakovEOF 4132479a5747SRoman Bolshakovif compile_prog "" "$pthread_lib" ; then 4133479a5747SRoman Bolshakov pthread_setname_np_wo_tid=yes 41345c312079SDr. David Alan Gilbertfi 41355c312079SDr. David Alan Gilbert 4136bf9298b9Saliguori########################################## 4137f27aaf4bSChristian Brunner# rbd probe 4138f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 4139f27aaf4bSChristian Brunner cat > $TMPC <<EOF 4140f27aaf4bSChristian Brunner#include <stdio.h> 4141ad32e9c0SJosh Durgin#include <rbd/librbd.h> 4142f27aaf4bSChristian Brunnerint main(void) { 4143ad32e9c0SJosh Durgin rados_t cluster; 4144ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 4145f27aaf4bSChristian Brunner return 0; 4146f27aaf4bSChristian Brunner} 4147f27aaf4bSChristian BrunnerEOF 4148ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 4149f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 4150f27aaf4bSChristian Brunner rbd=yes 4151f27aaf4bSChristian Brunner else 4152f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 415321684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 4154f27aaf4bSChristian Brunner fi 4155f27aaf4bSChristian Brunner rbd=no 4156f27aaf4bSChristian Brunner fi 4157f27aaf4bSChristian Brunnerfi 4158f27aaf4bSChristian Brunner 4159f27aaf4bSChristian Brunner########################################## 4160b10d49d7SPino Toscano# libssh probe 4161b10d49d7SPino Toscanoif test "$libssh" != "no" ; then 4162b10d49d7SPino Toscano if $pkg_config --exists libssh; then 4163b10d49d7SPino Toscano libssh_cflags=$($pkg_config libssh --cflags) 4164b10d49d7SPino Toscano libssh_libs=$($pkg_config libssh --libs) 4165b10d49d7SPino Toscano libssh=yes 41660a12ec87SRichard W.M. Jones else 4167b10d49d7SPino Toscano if test "$libssh" = "yes" ; then 4168b10d49d7SPino Toscano error_exit "libssh required for --enable-libssh" 41690a12ec87SRichard W.M. Jones fi 4170b10d49d7SPino Toscano libssh=no 41710a12ec87SRichard W.M. Jones fi 41720a12ec87SRichard W.M. Jonesfi 41730a12ec87SRichard W.M. Jones 41740a12ec87SRichard W.M. Jones########################################## 4175b10d49d7SPino Toscano# Check for libssh 0.8 4176b10d49d7SPino Toscano# This is done like this instead of using the LIBSSH_VERSION_* and 4177b10d49d7SPino Toscano# SSH_VERSION_* macros because some distributions in the past shipped 4178b10d49d7SPino Toscano# snapshots of the future 0.8 from Git, and those snapshots did not 4179b10d49d7SPino Toscano# have updated version numbers (still referring to 0.7.0). 41809a2d462eSRichard W.M. Jones 4181b10d49d7SPino Toscanoif test "$libssh" = "yes"; then 41829a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 4183b10d49d7SPino Toscano#include <libssh/libssh.h> 4184b10d49d7SPino Toscanoint main(void) { return ssh_get_server_publickey(NULL, NULL); } 41859a2d462eSRichard W.M. JonesEOF 4186b10d49d7SPino Toscano if compile_prog "$libssh_cflags" "$libssh_libs"; then 4187b10d49d7SPino Toscano libssh_cflags="-DHAVE_LIBSSH_0_8 $libssh_cflags" 41889a2d462eSRichard W.M. Jones fi 41899a2d462eSRichard W.M. Jonesfi 41909a2d462eSRichard W.M. Jones 41919a2d462eSRichard W.M. Jones########################################## 41925c6c3a6cSChristoph Hellwig# linux-aio probe 41935c6c3a6cSChristoph Hellwig 41945c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 41955c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 41965c6c3a6cSChristoph Hellwig#include <libaio.h> 41975c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 4198832ce9c2SScott Wood#include <stddef.h> 41995c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 42005c6c3a6cSChristoph HellwigEOF 42015c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 42025c6c3a6cSChristoph Hellwig linux_aio=yes 42035c6c3a6cSChristoph Hellwig else 42045c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 420521684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 42065c6c3a6cSChristoph Hellwig fi 42073cfcae3cSLuiz Capitulino linux_aio=no 42085c6c3a6cSChristoph Hellwig fi 42095c6c3a6cSChristoph Hellwigfi 4210c10dd856SAarushi Mehta########################################## 4211c10dd856SAarushi Mehta# linux-io-uring probe 4212c10dd856SAarushi Mehta 4213c10dd856SAarushi Mehtaif test "$linux_io_uring" != "no" ; then 4214c10dd856SAarushi Mehta if $pkg_config liburing; then 4215c10dd856SAarushi Mehta linux_io_uring_cflags=$($pkg_config --cflags liburing) 4216c10dd856SAarushi Mehta linux_io_uring_libs=$($pkg_config --libs liburing) 4217c10dd856SAarushi Mehta linux_io_uring=yes 421873fd282eSStefan Hajnoczi 421973fd282eSStefan Hajnoczi # io_uring is used in libqemuutil.a where per-file -libs variables are not 422073fd282eSStefan Hajnoczi # seen by programs linking the archive. It's not ideal, but just add the 422173fd282eSStefan Hajnoczi # library dependency globally. 422273fd282eSStefan Hajnoczi LIBS="$linux_io_uring_libs $LIBS" 4223c10dd856SAarushi Mehta else 4224c10dd856SAarushi Mehta if test "$linux_io_uring" = "yes" ; then 4225c10dd856SAarushi Mehta feature_not_found "linux io_uring" "Install liburing devel" 4226c10dd856SAarushi Mehta fi 4227c10dd856SAarushi Mehta linux_io_uring=no 4228c10dd856SAarushi Mehta fi 4229c10dd856SAarushi Mehtafi 42305c6c3a6cSChristoph Hellwig 42315c6c3a6cSChristoph Hellwig########################################## 42327aaa6a16SPaolo Bonzini# TPM emulation is only on POSIX 42333b8acc11SPaolo Bonzini 42347aaa6a16SPaolo Bonziniif test "$tpm" = ""; then 42357aaa6a16SPaolo Bonzini if test "$mingw32" = "yes"; then 42367aaa6a16SPaolo Bonzini tpm=no 42373b8acc11SPaolo Bonzini else 42387aaa6a16SPaolo Bonzini tpm=yes 42397aaa6a16SPaolo Bonzini fi 42407aaa6a16SPaolo Bonzinielif test "$tpm" = "yes"; then 42417aaa6a16SPaolo Bonzini if test "$mingw32" = "yes" ; then 42427aaa6a16SPaolo Bonzini error_exit "TPM emulation only available on POSIX systems" 42437aaa6a16SPaolo Bonzini fi 42443b8acc11SPaolo Bonzinifi 42453b8acc11SPaolo Bonzini 42463b8acc11SPaolo Bonzini########################################## 4247758e8e38SVenkateswararao Jujjuri (JV)# attr probe 4248758e8e38SVenkateswararao Jujjuri (JV) 4249758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 4250758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 4251758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 4252758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 4253f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 4254f2338fb4SPavel Borzenkov#include <attr/xattr.h> 4255f2338fb4SPavel Borzenkov#else 42564f26f2b6SAvi Kivity#include <sys/xattr.h> 4257f2338fb4SPavel Borzenkov#endif 4258758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 4259758e8e38SVenkateswararao Jujjuri (JV)EOF 42604f26f2b6SAvi Kivity if compile_prog "" "" ; then 42614f26f2b6SAvi Kivity attr=yes 42624f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 4263f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 4264758e8e38SVenkateswararao Jujjuri (JV) attr=yes 4265758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 42664f26f2b6SAvi Kivity libattr=yes 4267758e8e38SVenkateswararao Jujjuri (JV) else 4268758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 426921684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 4270758e8e38SVenkateswararao Jujjuri (JV) fi 4271758e8e38SVenkateswararao Jujjuri (JV) attr=no 4272758e8e38SVenkateswararao Jujjuri (JV) fi 4273758e8e38SVenkateswararao Jujjuri (JV)fi 4274758e8e38SVenkateswararao Jujjuri (JV) 4275758e8e38SVenkateswararao Jujjuri (JV)########################################## 4276bf9298b9Saliguori# iovec probe 4277bf9298b9Saliguoricat > $TMPC <<EOF 4278db34f0b3Sblueswir1#include <sys/types.h> 4279bf9298b9Saliguori#include <sys/uio.h> 4280db34f0b3Sblueswir1#include <unistd.h> 4281f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 4282bf9298b9SaliguoriEOF 4283bf9298b9Saliguoriiovec=no 428452166aa0SJuan Quintelaif compile_prog "" "" ; then 4285bf9298b9Saliguori iovec=yes 4286bf9298b9Saliguorifi 4287bf9298b9Saliguori 4288f652e6afSaurel32########################################## 4289ceb42de8Saliguori# preadv probe 4290ceb42de8Saliguoricat > $TMPC <<EOF 4291ceb42de8Saliguori#include <sys/types.h> 4292ceb42de8Saliguori#include <sys/uio.h> 4293ceb42de8Saliguori#include <unistd.h> 4294c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 4295ceb42de8SaliguoriEOF 4296ceb42de8Saliguoripreadv=no 429752166aa0SJuan Quintelaif compile_prog "" "" ; then 4298ceb42de8Saliguori preadv=yes 4299ceb42de8Saliguorifi 4300ceb42de8Saliguori 4301ceb42de8Saliguori########################################## 4302f652e6afSaurel32# fdt probe 4303e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 4304e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 4305e169e1e1SPeter Maydellfdt_required=no 4306e169e1e1SPeter Maydellfor target in $target_list; do 4307e169e1e1SPeter Maydell case $target in 4308c8c35e5fSYoshinori Sato aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu|rx-softmmu) 4309e169e1e1SPeter Maydell fdt_required=yes 4310e169e1e1SPeter Maydell ;; 4311e169e1e1SPeter Maydell esac 4312e169e1e1SPeter Maydelldone 4313e169e1e1SPeter Maydell 4314e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 4315e169e1e1SPeter Maydell if test "$fdt" = "no"; then 4316e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 4317e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 4318e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 4319e169e1e1SPeter Maydell fi 4320e169e1e1SPeter Maydell fdt=yes 43217ba4a4d3SPhilippe Mathieu-Daudéelif test "$fdt" != "yes" ; then 43227ba4a4d3SPhilippe Mathieu-Daudé fdt=no 4323e169e1e1SPeter Maydellfi 4324e169e1e1SPeter Maydell 4325d599938aSLaurent Vivier# fdt is only required when building softmmu targets 4326d599938aSLaurent Vivierif test -z "$fdt" -a "$softmmu" != "yes" ; then 4327d599938aSLaurent Vivier fdt="no" 4328d599938aSLaurent Vivierfi 4329d599938aSLaurent Vivier 43302df87df7SJuan Quintelaif test "$fdt" != "no" ; then 4331b41af4baSJuan Quintela fdt_libs="-lfdt" 433296ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 43336e85fce0SPaul Burton # and test for required functions to make sure we are on a version >= 1.4.2 4334f652e6afSaurel32 cat > $TMPC << EOF 433531ce0adbSThomas Huth#include <libfdt.h> 433696ce6545SPeter Crosthwaite#include <libfdt_env.h> 4337fea35ca4SAlexey Kardashevskiyint main(void) { fdt_check_full(NULL, 0); return 0; } 4338f652e6afSaurel32EOF 433952166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 4340a540f158SPeter Crosthwaite # system DTC is good - use it 4341e3971d61SPhilippe Mathieu-Daudé fdt=system 4342aef45d51SDaniel P. Berrange else 4343aef45d51SDaniel P. Berrange # have GIT checkout, so activate dtc submodule 4344aef45d51SDaniel P. Berrange if test -e "${source_path}/.git" ; then 4345aef45d51SDaniel P. Berrange git_submodules="${git_submodules} dtc" 4346aef45d51SDaniel P. Berrange fi 4347aef45d51SDaniel P. Berrange if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then 4348e3971d61SPhilippe Mathieu-Daudé fdt=git 4349a540f158SPeter Crosthwaite mkdir -p dtc 4350cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 4351a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 43522df87df7SJuan Quintela fi 4353a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 43548a99e9a3SPhilippe Mathieu-Daudé fdt_ldflags="-L\$(BUILD_DIR)/dtc/libfdt" 43558a99e9a3SPhilippe Mathieu-Daudé fdt_libs="$fdt_libs" 4356a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 4357aef45d51SDaniel P. Berrange # Not a git build & no libfdt found, prompt for system install 4358aef45d51SDaniel P. Berrange error_exit "DTC (libfdt) version >= 1.4.2 not present." \ 4359aef45d51SDaniel P. Berrange "Please install the DTC (libfdt) devel package" 4360a540f158SPeter Crosthwaite else 4361a540f158SPeter Crosthwaite # don't have and don't want 4362de3a354aSMichael Walle fdt_libs= 43632df87df7SJuan Quintela fdt=no 4364f652e6afSaurel32 fi 4365f652e6afSaurel32 fi 4366aef45d51SDaniel P. Berrangefi 4367f652e6afSaurel32 4368a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 4369a540f158SPeter Crosthwaite 437020ff075bSMichael Walle########################################## 4371fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2) 4372b1546f32SGerd Hoffmann 4373d52c454aSMarc-André Lureaugbm="no" 4374d52c454aSMarc-André Lureauif $pkg_config gbm; then 4375d52c454aSMarc-André Lureau gbm_cflags="$($pkg_config --cflags gbm)" 4376d52c454aSMarc-André Lureau gbm_libs="$($pkg_config --libs gbm)" 4377d52c454aSMarc-André Lureau gbm="yes" 4378d52c454aSMarc-André Lureaufi 4379d52c454aSMarc-André Lureau 4380da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 43814939a1dfSMichael Tokarev opengl_pkgs="epoxy gbm" 43825f9b1e35SGerd Hoffmann if $pkg_config $opengl_pkgs; then 43835f9b1e35SGerd Hoffmann opengl_cflags="$($pkg_config --cflags $opengl_pkgs)" 43845f9b1e35SGerd Hoffmann opengl_libs="$($pkg_config --libs $opengl_pkgs)" 4385da076ffeSGerd Hoffmann opengl=yes 4386925a0400SGerd Hoffmann if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 4387925a0400SGerd Hoffmann gtk_gl="yes" 4388925a0400SGerd Hoffmann fi 4389cc720a5dSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags" 439020ff075bSMichael Walle else 4391da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 4392dcf30025SGerd Hoffmann feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 439320ff075bSMichael Walle fi 4394f676c67eSJeremy White opengl_cflags="" 4395da076ffeSGerd Hoffmann opengl_libs="" 4396da076ffeSGerd Hoffmann opengl=no 439720ff075bSMichael Walle fi 439820ff075bSMichael Wallefi 439920ff075bSMichael Walle 4400014cb152SGerd Hoffmannif test "$opengl" = "yes"; then 4401014cb152SGerd Hoffmann cat > $TMPC << EOF 4402014cb152SGerd Hoffmann#include <epoxy/egl.h> 4403014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export 4404014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 4405014cb152SGerd Hoffmann#endif 4406014cb152SGerd Hoffmannint main(void) { return 0; } 4407014cb152SGerd HoffmannEOF 4408014cb152SGerd Hoffmann if compile_prog "" "" ; then 4409014cb152SGerd Hoffmann opengl_dmabuf=yes 4410014cb152SGerd Hoffmann fi 4411014cb152SGerd Hoffmannfi 4412c9a12e75SChrysostomos Nanakos 4413e633a5c6SEric Blakeif test "$opengl" = "yes" && test "$have_x11" = "yes"; then 441499e1a93bSPhilippe Mathieu-Daudé for target in $target_list; do 441599e1a93bSPhilippe Mathieu-Daudé case $target in 441699e1a93bSPhilippe Mathieu-Daudé lm32-softmmu) # milkymist-tmu2 requires X11 and OpenGL 441799e1a93bSPhilippe Mathieu-Daudé need_x11=yes 441899e1a93bSPhilippe Mathieu-Daudé ;; 441999e1a93bSPhilippe Mathieu-Daudé esac 442099e1a93bSPhilippe Mathieu-Daudé done 442199e1a93bSPhilippe Mathieu-Daudéfi 442299e1a93bSPhilippe Mathieu-Daudé 4423ed279a06SKlim Kireev########################################## 4424ed279a06SKlim Kireev# libxml2 probe 4425ed279a06SKlim Kireevif test "$libxml2" != "no" ; then 4426ed279a06SKlim Kireev if $pkg_config --exists libxml-2.0; then 4427ed279a06SKlim Kireev libxml2="yes" 4428ed279a06SKlim Kireev libxml2_cflags=$($pkg_config --cflags libxml-2.0) 4429ed279a06SKlim Kireev libxml2_libs=$($pkg_config --libs libxml-2.0) 4430ed279a06SKlim Kireev else 4431ed279a06SKlim Kireev if test "$libxml2" = "yes"; then 4432ed279a06SKlim Kireev feature_not_found "libxml2" "Install libxml2 devel" 4433ed279a06SKlim Kireev fi 4434ed279a06SKlim Kireev libxml2="no" 4435ed279a06SKlim Kireev fi 4436ed279a06SKlim Kireevfi 4437c9a12e75SChrysostomos Nanakos 4438eb100396SBharata B Rao########################################## 4439eb100396SBharata B Rao# glusterfs probe 4440eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 444165d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 4442e01bee08SBharata B Rao glusterfs="yes" 444389138857SStefan Weil glusterfs_cflags=$($pkg_config --cflags glusterfs-api) 444489138857SStefan Weil glusterfs_libs=$($pkg_config --libs glusterfs-api) 4445d85fa9ebSJeff Cody if $pkg_config --atleast-version=4 glusterfs-api; then 4446d85fa9ebSJeff Cody glusterfs_xlator_opt="yes" 4447d85fa9ebSJeff Cody fi 444865d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 44490c14fb47SBharata B Rao glusterfs_discard="yes" 44500c14fb47SBharata B Rao fi 44517c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 4452df3a429aSNiels de Vos glusterfs_fallocate="yes" 44537c815372SBharata B Rao glusterfs_zerofill="yes" 44547c815372SBharata B Rao fi 4455e014dbe7SPrasanna Kumar Kalever cat > $TMPC << EOF 4456e014dbe7SPrasanna Kumar Kalever#include <glusterfs/api/glfs.h> 4457e014dbe7SPrasanna Kumar Kalever 4458e014dbe7SPrasanna Kumar Kaleverint 4459e014dbe7SPrasanna Kumar Kalevermain(void) 4460e014dbe7SPrasanna Kumar Kalever{ 4461e014dbe7SPrasanna Kumar Kalever /* new glfs_ftruncate() passes two additional args */ 4462e014dbe7SPrasanna Kumar Kalever return glfs_ftruncate(NULL, 0, NULL, NULL); 4463e014dbe7SPrasanna Kumar Kalever} 4464e014dbe7SPrasanna Kumar KaleverEOF 4465e014dbe7SPrasanna Kumar Kalever if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then 4466e014dbe7SPrasanna Kumar Kalever glusterfs_ftruncate_has_stat="yes" 4467e014dbe7SPrasanna Kumar Kalever fi 44680e3b891fSNiels de Vos cat > $TMPC << EOF 44690e3b891fSNiels de Vos#include <glusterfs/api/glfs.h> 44700e3b891fSNiels de Vos 44710e3b891fSNiels de Vos/* new glfs_io_cbk() passes two additional glfs_stat structs */ 44720e3b891fSNiels de Vosstatic void 44730e3b891fSNiels de Vosglusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data) 44740e3b891fSNiels de Vos{} 44750e3b891fSNiels de Vos 44760e3b891fSNiels de Vosint 44770e3b891fSNiels de Vosmain(void) 44780e3b891fSNiels de Vos{ 44790e3b891fSNiels de Vos glfs_io_cbk iocb = &glusterfs_iocb; 44800e3b891fSNiels de Vos iocb(NULL, 0 , NULL, NULL, NULL); 44810e3b891fSNiels de Vos return 0; 44820e3b891fSNiels de Vos} 44830e3b891fSNiels de VosEOF 44840e3b891fSNiels de Vos if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then 44850e3b891fSNiels de Vos glusterfs_iocb_has_stat="yes" 44860e3b891fSNiels de Vos fi 4487eb100396SBharata B Rao else 4488eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 44898efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 44908efc9363SHu Tao "Install glusterfs-api devel >= 3" 4491eb100396SBharata B Rao fi 4492e01bee08SBharata B Rao glusterfs="no" 4493eb100396SBharata B Rao fi 4494eb100396SBharata B Raofi 4495eb100396SBharata B Rao 449639386ac7Saurel32# Check for inotify functions when we are building linux-user 44973b3f24adSaurel32# emulator. This is done because older glibc versions don't 44983b3f24adSaurel32# have syscall stubs for these implemented. In that case we 44993b3f24adSaurel32# don't provide them even if kernel supports them. 45003b3f24adSaurel32# 45013b3f24adSaurel32inotify=no 45023b3f24adSaurel32cat > $TMPC << EOF 45033b3f24adSaurel32#include <sys/inotify.h> 45043b3f24adSaurel32 45053b3f24adSaurel32int 45063b3f24adSaurel32main(void) 45073b3f24adSaurel32{ 45083b3f24adSaurel32 /* try to start inotify */ 45098690e420Saurel32 return inotify_init(); 45103b3f24adSaurel32} 45113b3f24adSaurel32EOF 451252166aa0SJuan Quintelaif compile_prog "" "" ; then 45133b3f24adSaurel32 inotify=yes 45143b3f24adSaurel32fi 45153b3f24adSaurel32 4516c05c7a73SRiku Voipioinotify1=no 4517c05c7a73SRiku Voipiocat > $TMPC << EOF 4518c05c7a73SRiku Voipio#include <sys/inotify.h> 4519c05c7a73SRiku Voipio 4520c05c7a73SRiku Voipioint 4521c05c7a73SRiku Voipiomain(void) 4522c05c7a73SRiku Voipio{ 4523c05c7a73SRiku Voipio /* try to start inotify */ 4524c05c7a73SRiku Voipio return inotify_init1(0); 4525c05c7a73SRiku Voipio} 4526c05c7a73SRiku VoipioEOF 4527c05c7a73SRiku Voipioif compile_prog "" "" ; then 4528c05c7a73SRiku Voipio inotify1=yes 4529c05c7a73SRiku Voipiofi 4530c05c7a73SRiku Voipio 4531099d6b0fSRiku Voipio# check if pipe2 is there 4532099d6b0fSRiku Voipiopipe2=no 4533099d6b0fSRiku Voipiocat > $TMPC << EOF 4534099d6b0fSRiku Voipio#include <unistd.h> 4535099d6b0fSRiku Voipio#include <fcntl.h> 4536099d6b0fSRiku Voipio 4537099d6b0fSRiku Voipioint main(void) 4538099d6b0fSRiku Voipio{ 4539099d6b0fSRiku Voipio int pipefd[2]; 45409bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 4541099d6b0fSRiku Voipio} 4542099d6b0fSRiku VoipioEOF 454352166aa0SJuan Quintelaif compile_prog "" "" ; then 4544099d6b0fSRiku Voipio pipe2=yes 4545099d6b0fSRiku Voipiofi 4546099d6b0fSRiku Voipio 454740ff6d7eSKevin Wolf# check if accept4 is there 454840ff6d7eSKevin Wolfaccept4=no 454940ff6d7eSKevin Wolfcat > $TMPC << EOF 455040ff6d7eSKevin Wolf#include <sys/socket.h> 455140ff6d7eSKevin Wolf#include <stddef.h> 455240ff6d7eSKevin Wolf 455340ff6d7eSKevin Wolfint main(void) 455440ff6d7eSKevin Wolf{ 455540ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 455640ff6d7eSKevin Wolf return 0; 455740ff6d7eSKevin Wolf} 455840ff6d7eSKevin WolfEOF 455940ff6d7eSKevin Wolfif compile_prog "" "" ; then 456040ff6d7eSKevin Wolf accept4=yes 456140ff6d7eSKevin Wolffi 456240ff6d7eSKevin Wolf 45633ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 45643ce34dfbSvibisreenivasansplice=no 45653ce34dfbSvibisreenivasancat > $TMPC << EOF 45663ce34dfbSvibisreenivasan#include <unistd.h> 45673ce34dfbSvibisreenivasan#include <fcntl.h> 45683ce34dfbSvibisreenivasan#include <limits.h> 45693ce34dfbSvibisreenivasan 45703ce34dfbSvibisreenivasanint main(void) 45713ce34dfbSvibisreenivasan{ 457266ea0f22SStefan Weil int len, fd = 0; 45733ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 45743ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 45753ce34dfbSvibisreenivasan return 0; 45763ce34dfbSvibisreenivasan} 45773ce34dfbSvibisreenivasanEOF 457852166aa0SJuan Quintelaif compile_prog "" "" ; then 45793ce34dfbSvibisreenivasan splice=yes 45803ce34dfbSvibisreenivasanfi 45813ce34dfbSvibisreenivasan 4582dcc38d1cSMarcelo Tosatti########################################## 4583a99d57bbSWanlong Gao# libnuma probe 4584a99d57bbSWanlong Gao 4585a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 4586a99d57bbSWanlong Gao cat > $TMPC << EOF 4587a99d57bbSWanlong Gao#include <numa.h> 4588a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 4589a99d57bbSWanlong GaoEOF 4590a99d57bbSWanlong Gao 4591a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 4592a99d57bbSWanlong Gao numa=yes 4593a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 4594a99d57bbSWanlong Gao else 4595a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 4596a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 4597a99d57bbSWanlong Gao fi 4598a99d57bbSWanlong Gao numa=no 4599a99d57bbSWanlong Gao fi 4600a99d57bbSWanlong Gaofi 4601a99d57bbSWanlong Gao 46027b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 46037b01cb97SAlexandre Derumier echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 46047b01cb97SAlexandre Derumier exit 1 46057b01cb97SAlexandre Derumierfi 46067b01cb97SAlexandre Derumier 46075a22ab71SYang Zhong# Even if malloc_trim() is available, these non-libc memory allocators 46085a22ab71SYang Zhong# do not support it. 46095a22ab71SYang Zhongif test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then 46105a22ab71SYang Zhong if test "$malloc_trim" = "yes" ; then 46115a22ab71SYang Zhong echo "Disabling malloc_trim with non-libc memory allocator" 46125a22ab71SYang Zhong fi 46135a22ab71SYang Zhong malloc_trim="no" 46145a22ab71SYang Zhongfi 46155a22ab71SYang Zhong 46165a22ab71SYang Zhong####################################### 46175a22ab71SYang Zhong# malloc_trim 46185a22ab71SYang Zhong 46195a22ab71SYang Zhongif test "$malloc_trim" != "no" ; then 46205a22ab71SYang Zhong cat > $TMPC << EOF 46215a22ab71SYang Zhong#include <malloc.h> 46225a22ab71SYang Zhongint main(void) { malloc_trim(0); return 0; } 46235a22ab71SYang ZhongEOF 46245a22ab71SYang Zhong if compile_prog "" "" ; then 46255a22ab71SYang Zhong malloc_trim="yes" 46265a22ab71SYang Zhong else 46275a22ab71SYang Zhong malloc_trim="no" 46285a22ab71SYang Zhong fi 46295a22ab71SYang Zhongfi 46305a22ab71SYang Zhong 4631a99d57bbSWanlong Gao########################################## 46322847b469SFam Zheng# tcmalloc probe 46332847b469SFam Zheng 46342847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 46352847b469SFam Zheng cat > $TMPC << EOF 46362847b469SFam Zheng#include <stdlib.h> 4637f2dfe54cSLeonid Blochint main(void) { 4638f2dfe54cSLeonid Bloch void *tmp = malloc(1); 4639f2dfe54cSLeonid Bloch if (tmp != NULL) { 4640f2dfe54cSLeonid Bloch return 0; 4641f2dfe54cSLeonid Bloch } 4642f2dfe54cSLeonid Bloch return 1; 4643f2dfe54cSLeonid Bloch} 46442847b469SFam ZhengEOF 46452847b469SFam Zheng 46462847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 46472847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 46482847b469SFam Zheng else 46492847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 46502847b469SFam Zheng fi 46512847b469SFam Zhengfi 46522847b469SFam Zheng 46532847b469SFam Zheng########################################## 46547b01cb97SAlexandre Derumier# jemalloc probe 46557b01cb97SAlexandre Derumier 46567b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then 46577b01cb97SAlexandre Derumier cat > $TMPC << EOF 46587b01cb97SAlexandre Derumier#include <stdlib.h> 4659f2dfe54cSLeonid Blochint main(void) { 4660f2dfe54cSLeonid Bloch void *tmp = malloc(1); 4661f2dfe54cSLeonid Bloch if (tmp != NULL) { 4662f2dfe54cSLeonid Bloch return 0; 4663f2dfe54cSLeonid Bloch } 4664f2dfe54cSLeonid Bloch return 1; 4665f2dfe54cSLeonid Bloch} 46667b01cb97SAlexandre DerumierEOF 46677b01cb97SAlexandre Derumier 46687b01cb97SAlexandre Derumier if compile_prog "" "-ljemalloc" ; then 46697b01cb97SAlexandre Derumier LIBS="-ljemalloc $LIBS" 46707b01cb97SAlexandre Derumier else 46717b01cb97SAlexandre Derumier feature_not_found "jemalloc" "install jemalloc devel" 46727b01cb97SAlexandre Derumier fi 46737b01cb97SAlexandre Derumierfi 46747b01cb97SAlexandre Derumier 46757b01cb97SAlexandre Derumier########################################## 4676dcc38d1cSMarcelo Tosatti# signalfd probe 4677dcc38d1cSMarcelo Tosattisignalfd="no" 4678dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 4679dcc38d1cSMarcelo Tosatti#include <unistd.h> 4680dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 4681dcc38d1cSMarcelo Tosatti#include <signal.h> 4682dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 4683dcc38d1cSMarcelo TosattiEOF 4684dcc38d1cSMarcelo Tosatti 4685dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 4686dcc38d1cSMarcelo Tosatti signalfd=yes 4687dcc38d1cSMarcelo Tosattifi 4688dcc38d1cSMarcelo Tosatti 4689d339d766SRichard W.M. Jones# check if optreset global is declared by <getopt.h> 4690d339d766SRichard W.M. Jonesoptreset="no" 4691d339d766SRichard W.M. Jonescat > $TMPC << EOF 4692d339d766SRichard W.M. Jones#include <getopt.h> 4693d339d766SRichard W.M. Jonesint main(void) { return optreset; } 4694d339d766SRichard W.M. JonesEOF 4695d339d766SRichard W.M. Jones 4696d339d766SRichard W.M. Jonesif compile_prog "" "" ; then 4697d339d766SRichard W.M. Jones optreset=yes 4698d339d766SRichard W.M. Jonesfi 4699d339d766SRichard W.M. Jones 4700c2882b96SRiku Voipio# check if eventfd is supported 4701c2882b96SRiku Voipioeventfd=no 4702c2882b96SRiku Voipiocat > $TMPC << EOF 4703c2882b96SRiku Voipio#include <sys/eventfd.h> 4704c2882b96SRiku Voipio 4705c2882b96SRiku Voipioint main(void) 4706c2882b96SRiku Voipio{ 470755cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 4708c2882b96SRiku Voipio} 4709c2882b96SRiku VoipioEOF 4710c2882b96SRiku Voipioif compile_prog "" "" ; then 4711c2882b96SRiku Voipio eventfd=yes 4712c2882b96SRiku Voipiofi 4713c2882b96SRiku Voipio 4714751bcc39SMarc-André Lureau# check if memfd is supported 4715751bcc39SMarc-André Lureaumemfd=no 4716751bcc39SMarc-André Lureaucat > $TMPC << EOF 471775e5b70eSPaolo Bonzini#include <sys/mman.h> 4718751bcc39SMarc-André Lureau 4719751bcc39SMarc-André Lureauint main(void) 4720751bcc39SMarc-André Lureau{ 4721751bcc39SMarc-André Lureau return memfd_create("foo", MFD_ALLOW_SEALING); 4722751bcc39SMarc-André Lureau} 4723751bcc39SMarc-André LureauEOF 4724751bcc39SMarc-André Lureauif compile_prog "" "" ; then 4725751bcc39SMarc-André Lureau memfd=yes 4726751bcc39SMarc-André Lureaufi 4727751bcc39SMarc-André Lureau 4728955727d2SCortland Tölva# check for usbfs 4729955727d2SCortland Tölvahave_usbfs=no 4730955727d2SCortland Tölvaif test "$linux_user" = "yes"; then 473196566d09SThomas Petazzoni cat > $TMPC << EOF 473296566d09SThomas Petazzoni#include <linux/usbdevice_fs.h> 473396566d09SThomas Petazzoni 473496566d09SThomas Petazzoni#ifndef USBDEVFS_GET_CAPABILITIES 473596566d09SThomas Petazzoni#error "USBDEVFS_GET_CAPABILITIES undefined" 473696566d09SThomas Petazzoni#endif 473796566d09SThomas Petazzoni 473896566d09SThomas Petazzoni#ifndef USBDEVFS_DISCONNECT_CLAIM 473996566d09SThomas Petazzoni#error "USBDEVFS_DISCONNECT_CLAIM undefined" 474096566d09SThomas Petazzoni#endif 474196566d09SThomas Petazzoni 474296566d09SThomas Petazzoniint main(void) 474396566d09SThomas Petazzoni{ 474496566d09SThomas Petazzoni return 0; 474596566d09SThomas Petazzoni} 474696566d09SThomas PetazzoniEOF 474796566d09SThomas Petazzoni if compile_prog "" ""; then 4748955727d2SCortland Tölva have_usbfs=yes 4749955727d2SCortland Tölva fi 4750955727d2SCortland Tölvafi 4751751bcc39SMarc-André Lureau 4752d0927938SUlrich Hecht# check for fallocate 4753d0927938SUlrich Hechtfallocate=no 4754d0927938SUlrich Hechtcat > $TMPC << EOF 4755d0927938SUlrich Hecht#include <fcntl.h> 4756d0927938SUlrich Hecht 4757d0927938SUlrich Hechtint main(void) 4758d0927938SUlrich Hecht{ 4759d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 4760d0927938SUlrich Hecht return 0; 4761d0927938SUlrich Hecht} 4762d0927938SUlrich HechtEOF 47638fb03151SPeter Maydellif compile_prog "" "" ; then 4764d0927938SUlrich Hecht fallocate=yes 4765d0927938SUlrich Hechtfi 4766d0927938SUlrich Hecht 47673d4fa43eSKusanagi Kouichi# check for fallocate hole punching 47683d4fa43eSKusanagi Kouichifallocate_punch_hole=no 47693d4fa43eSKusanagi Kouichicat > $TMPC << EOF 47703d4fa43eSKusanagi Kouichi#include <fcntl.h> 47713d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 47723d4fa43eSKusanagi Kouichi 47733d4fa43eSKusanagi Kouichiint main(void) 47743d4fa43eSKusanagi Kouichi{ 47753d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 47763d4fa43eSKusanagi Kouichi return 0; 47773d4fa43eSKusanagi Kouichi} 47783d4fa43eSKusanagi KouichiEOF 47793d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 47803d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 47813d4fa43eSKusanagi Kouichifi 47823d4fa43eSKusanagi Kouichi 4783b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 4784b953f075SDenis V. Lunevfallocate_zero_range=no 4785b953f075SDenis V. Lunevcat > $TMPC << EOF 4786b953f075SDenis V. Lunev#include <fcntl.h> 4787b953f075SDenis V. Lunev#include <linux/falloc.h> 4788b953f075SDenis V. Lunev 4789b953f075SDenis V. Lunevint main(void) 4790b953f075SDenis V. Lunev{ 4791b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 4792b953f075SDenis V. Lunev return 0; 4793b953f075SDenis V. Lunev} 4794b953f075SDenis V. LunevEOF 4795b953f075SDenis V. Lunevif compile_prog "" "" ; then 4796b953f075SDenis V. Lunev fallocate_zero_range=yes 4797b953f075SDenis V. Lunevfi 4798b953f075SDenis V. Lunev 4799ed911435SKevin Wolf# check for posix_fallocate 4800ed911435SKevin Wolfposix_fallocate=no 4801ed911435SKevin Wolfcat > $TMPC << EOF 4802ed911435SKevin Wolf#include <fcntl.h> 4803ed911435SKevin Wolf 4804ed911435SKevin Wolfint main(void) 4805ed911435SKevin Wolf{ 4806ed911435SKevin Wolf posix_fallocate(0, 0, 0); 4807ed911435SKevin Wolf return 0; 4808ed911435SKevin Wolf} 4809ed911435SKevin WolfEOF 4810ed911435SKevin Wolfif compile_prog "" "" ; then 4811ed911435SKevin Wolf posix_fallocate=yes 4812ed911435SKevin Wolffi 4813ed911435SKevin Wolf 4814c727f47dSPeter Maydell# check for sync_file_range 4815c727f47dSPeter Maydellsync_file_range=no 4816c727f47dSPeter Maydellcat > $TMPC << EOF 4817c727f47dSPeter Maydell#include <fcntl.h> 4818c727f47dSPeter Maydell 4819c727f47dSPeter Maydellint main(void) 4820c727f47dSPeter Maydell{ 4821c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 4822c727f47dSPeter Maydell return 0; 4823c727f47dSPeter Maydell} 4824c727f47dSPeter MaydellEOF 48258fb03151SPeter Maydellif compile_prog "" "" ; then 4826c727f47dSPeter Maydell sync_file_range=yes 4827c727f47dSPeter Maydellfi 4828c727f47dSPeter Maydell 4829dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 4830dace20dcSPeter Maydellfiemap=no 4831dace20dcSPeter Maydellcat > $TMPC << EOF 4832dace20dcSPeter Maydell#include <sys/ioctl.h> 4833dace20dcSPeter Maydell#include <linux/fs.h> 4834dace20dcSPeter Maydell#include <linux/fiemap.h> 4835dace20dcSPeter Maydell 4836dace20dcSPeter Maydellint main(void) 4837dace20dcSPeter Maydell{ 4838dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 4839dace20dcSPeter Maydell return 0; 4840dace20dcSPeter Maydell} 4841dace20dcSPeter MaydellEOF 48428fb03151SPeter Maydellif compile_prog "" "" ; then 4843dace20dcSPeter Maydell fiemap=yes 4844dace20dcSPeter Maydellfi 4845dace20dcSPeter Maydell 4846d0927938SUlrich Hecht# check for dup3 4847d0927938SUlrich Hechtdup3=no 4848d0927938SUlrich Hechtcat > $TMPC << EOF 4849d0927938SUlrich Hecht#include <unistd.h> 4850d0927938SUlrich Hecht 4851d0927938SUlrich Hechtint main(void) 4852d0927938SUlrich Hecht{ 4853d0927938SUlrich Hecht dup3(0, 0, 0); 4854d0927938SUlrich Hecht return 0; 4855d0927938SUlrich Hecht} 4856d0927938SUlrich HechtEOF 485778f5d726SJan Kiszkaif compile_prog "" "" ; then 4858d0927938SUlrich Hecht dup3=yes 4859d0927938SUlrich Hechtfi 4860d0927938SUlrich Hecht 48614e0c6529SAlex Bligh# check for ppoll support 48624e0c6529SAlex Blighppoll=no 48634e0c6529SAlex Blighcat > $TMPC << EOF 48644e0c6529SAlex Bligh#include <poll.h> 48654e0c6529SAlex Bligh 48664e0c6529SAlex Blighint main(void) 48674e0c6529SAlex Bligh{ 48684e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 48694e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 48704e0c6529SAlex Bligh return 0; 48714e0c6529SAlex Bligh} 48724e0c6529SAlex BlighEOF 48734e0c6529SAlex Blighif compile_prog "" "" ; then 48744e0c6529SAlex Bligh ppoll=yes 48754e0c6529SAlex Blighfi 48764e0c6529SAlex Bligh 4877cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 4878cd758dd0SAlex Blighprctl_pr_set_timerslack=no 4879cd758dd0SAlex Blighcat > $TMPC << EOF 4880cd758dd0SAlex Bligh#include <sys/prctl.h> 4881cd758dd0SAlex Bligh 4882cd758dd0SAlex Blighint main(void) 4883cd758dd0SAlex Bligh{ 4884cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 4885cd758dd0SAlex Bligh return 0; 4886cd758dd0SAlex Bligh} 4887cd758dd0SAlex BlighEOF 4888cd758dd0SAlex Blighif compile_prog "" "" ; then 4889cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 4890cd758dd0SAlex Blighfi 4891cd758dd0SAlex Bligh 48923b6edd16SPeter Maydell# check for epoll support 48933b6edd16SPeter Maydellepoll=no 48943b6edd16SPeter Maydellcat > $TMPC << EOF 48953b6edd16SPeter Maydell#include <sys/epoll.h> 48963b6edd16SPeter Maydell 48973b6edd16SPeter Maydellint main(void) 48983b6edd16SPeter Maydell{ 48993b6edd16SPeter Maydell epoll_create(0); 49003b6edd16SPeter Maydell return 0; 49013b6edd16SPeter Maydell} 49023b6edd16SPeter MaydellEOF 49038fb03151SPeter Maydellif compile_prog "" "" ; then 49043b6edd16SPeter Maydell epoll=yes 49053b6edd16SPeter Maydellfi 49063b6edd16SPeter Maydell 4907227f0214SPeter Maydell# epoll_create1 is a later addition 4908227f0214SPeter Maydell# so we must check separately for its presence 49093b6edd16SPeter Maydellepoll_create1=no 49103b6edd16SPeter Maydellcat > $TMPC << EOF 49113b6edd16SPeter Maydell#include <sys/epoll.h> 49123b6edd16SPeter Maydell 49133b6edd16SPeter Maydellint main(void) 49143b6edd16SPeter Maydell{ 491519e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 491619e83f6bSPeter Maydell * a function being called. This is necessary so that on 491719e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 491819e83f6bSPeter Maydell * the library but not declared in the header file we will 491919e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 492019e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 492119e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 492219e83f6bSPeter Maydell */ 4923c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 49243b6edd16SPeter Maydell} 49253b6edd16SPeter MaydellEOF 49268fb03151SPeter Maydellif compile_prog "" "" ; then 49273b6edd16SPeter Maydell epoll_create1=yes 49283b6edd16SPeter Maydellfi 49293b6edd16SPeter Maydell 4930a8fd1abaSPeter Maydell# check for sendfile support 4931a8fd1abaSPeter Maydellsendfile=no 4932a8fd1abaSPeter Maydellcat > $TMPC << EOF 4933a8fd1abaSPeter Maydell#include <sys/sendfile.h> 4934a8fd1abaSPeter Maydell 4935a8fd1abaSPeter Maydellint main(void) 4936a8fd1abaSPeter Maydell{ 4937a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 4938a8fd1abaSPeter Maydell} 4939a8fd1abaSPeter MaydellEOF 4940a8fd1abaSPeter Maydellif compile_prog "" "" ; then 4941a8fd1abaSPeter Maydell sendfile=yes 4942a8fd1abaSPeter Maydellfi 4943a8fd1abaSPeter Maydell 494451834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 494551834341SRiku Voipiotimerfd=no 494651834341SRiku Voipiocat > $TMPC << EOF 494751834341SRiku Voipio#include <sys/timerfd.h> 494851834341SRiku Voipio 494951834341SRiku Voipioint main(void) 495051834341SRiku Voipio{ 495151834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 495251834341SRiku Voipio} 495351834341SRiku VoipioEOF 495451834341SRiku Voipioif compile_prog "" "" ; then 495551834341SRiku Voipio timerfd=yes 495651834341SRiku Voipiofi 495751834341SRiku Voipio 49589af5c906SRiku Voipio# check for setns and unshare support 49599af5c906SRiku Voipiosetns=no 49609af5c906SRiku Voipiocat > $TMPC << EOF 49619af5c906SRiku Voipio#include <sched.h> 49629af5c906SRiku Voipio 49639af5c906SRiku Voipioint main(void) 49649af5c906SRiku Voipio{ 49659af5c906SRiku Voipio int ret; 49669af5c906SRiku Voipio ret = setns(0, 0); 49679af5c906SRiku Voipio ret = unshare(0); 49689af5c906SRiku Voipio return ret; 49699af5c906SRiku Voipio} 49709af5c906SRiku VoipioEOF 49719af5c906SRiku Voipioif compile_prog "" "" ; then 49729af5c906SRiku Voipio setns=yes 49739af5c906SRiku Voipiofi 49749af5c906SRiku Voipio 497538860a03SAleksandar Markovic# clock_adjtime probe 497638860a03SAleksandar Markovicclock_adjtime=no 497738860a03SAleksandar Markoviccat > $TMPC <<EOF 497838860a03SAleksandar Markovic#include <time.h> 497938860a03SAleksandar Markovic 498038860a03SAleksandar Markovicint main(void) 498138860a03SAleksandar Markovic{ 498238860a03SAleksandar Markovic return clock_adjtime(0, 0); 498338860a03SAleksandar Markovic} 498438860a03SAleksandar MarkovicEOF 498538860a03SAleksandar Markovicclock_adjtime=no 498638860a03SAleksandar Markovicif compile_prog "" "" ; then 498738860a03SAleksandar Markovic clock_adjtime=yes 498838860a03SAleksandar Markovicfi 498938860a03SAleksandar Markovic 49905a03cd00SAleksandar Markovic# syncfs probe 49915a03cd00SAleksandar Markovicsyncfs=no 49925a03cd00SAleksandar Markoviccat > $TMPC <<EOF 49935a03cd00SAleksandar Markovic#include <unistd.h> 49945a03cd00SAleksandar Markovic 49955a03cd00SAleksandar Markovicint main(void) 49965a03cd00SAleksandar Markovic{ 49975a03cd00SAleksandar Markovic return syncfs(0); 49985a03cd00SAleksandar Markovic} 49995a03cd00SAleksandar MarkovicEOF 50005a03cd00SAleksandar Markovicsyncfs=no 50015a03cd00SAleksandar Markovicif compile_prog "" "" ; then 50025a03cd00SAleksandar Markovic syncfs=yes 50035a03cd00SAleksandar Markovicfi 50045a03cd00SAleksandar Markovic 5005db37dd89SAleksandar Markovic# check for kcov support (kernel must be 4.4+, compiled with certain options) 5006db37dd89SAleksandar Markovickcov=no 5007db37dd89SAleksandar Markovicif check_include sys/kcov.h ; then 5008db37dd89SAleksandar Markovic kcov=yes 5009db37dd89SAleksandar Markovicfi 5010db37dd89SAleksandar Markovic 5011516e8b7dSPeter Maydell# If we're making warnings fatal, apply this to Sphinx runs as well 5012516e8b7dSPeter Maydellsphinx_werror="" 5013516e8b7dSPeter Maydellif test "$werror" = "yes"; then 5014516e8b7dSPeter Maydell sphinx_werror="-W" 5015516e8b7dSPeter Maydellfi 5016516e8b7dSPeter Maydell 50175f71eac0SPeter Maydell# Check we have a new enough version of sphinx-build 50185f71eac0SPeter Maydellhas_sphinx_build() { 50195f71eac0SPeter Maydell # This is a bit awkward but works: create a trivial document and 50205f71eac0SPeter Maydell # try to run it with our configuration file (which enforces a 50215f71eac0SPeter Maydell # version requirement). This will fail if either 50225f71eac0SPeter Maydell # sphinx-build doesn't exist at all or if it is too old. 50235f71eac0SPeter Maydell mkdir -p "$TMPDIR1/sphinx" 50245f71eac0SPeter Maydell touch "$TMPDIR1/sphinx/index.rst" 5025988ae6c3SAlex Bennée "$sphinx_build" $sphinx_werror -c "$source_path/docs" \ 5026988ae6c3SAlex Bennée -b html "$TMPDIR1/sphinx" \ 5027988ae6c3SAlex Bennée "$TMPDIR1/sphinx/out" >> config.log 2>&1 50285f71eac0SPeter Maydell} 50295f71eac0SPeter Maydell 5030cc8ae6deSpbrook# Check if tools are available to build documentation. 5031a25dba17SJuan Quintelaif test "$docs" != "no" ; then 5032758b617aSPeter Maydell if has_sphinx_build; then 5033758b617aSPeter Maydell sphinx_ok=yes 5034758b617aSPeter Maydell else 5035758b617aSPeter Maydell sphinx_ok=no 5036758b617aSPeter Maydell fi 5037758b617aSPeter Maydell if has makeinfo && has pod2man && test "$sphinx_ok" = "yes"; then 5038a25dba17SJuan Quintela docs=yes 503983a3ab8bSJuan Quintela else 5040a25dba17SJuan Quintela if test "$docs" = "yes" ; then 5041758b617aSPeter Maydell if has $sphinx_build && test "$sphinx_ok" != "yes"; then 5042758b617aSPeter Maydell echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2 5043758b617aSPeter Maydell fi 5044758b617aSPeter Maydell feature_not_found "docs" "Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx" 504583a3ab8bSJuan Quintela fi 5046a25dba17SJuan Quintela docs=no 504783a3ab8bSJuan Quintela fi 5048cc8ae6deSpbrookfi 5049cc8ae6deSpbrook 5050f514f41cSStefan Weil# Search for bswap_32 function 50516ae9a1f4SJuan Quintelabyteswap_h=no 50526ae9a1f4SJuan Quintelacat > $TMPC << EOF 50536ae9a1f4SJuan Quintela#include <byteswap.h> 50546ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 50556ae9a1f4SJuan QuintelaEOF 505652166aa0SJuan Quintelaif compile_prog "" "" ; then 50576ae9a1f4SJuan Quintela byteswap_h=yes 50586ae9a1f4SJuan Quintelafi 50596ae9a1f4SJuan Quintela 506075f13596SStefan Weil# Search for bswap32 function 50616ae9a1f4SJuan Quintelabswap_h=no 50626ae9a1f4SJuan Quintelacat > $TMPC << EOF 50636ae9a1f4SJuan Quintela#include <sys/endian.h> 50646ae9a1f4SJuan Quintela#include <sys/types.h> 50656ae9a1f4SJuan Quintela#include <machine/bswap.h> 50666ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 50676ae9a1f4SJuan QuintelaEOF 506852166aa0SJuan Quintelaif compile_prog "" "" ; then 50696ae9a1f4SJuan Quintela bswap_h=yes 50706ae9a1f4SJuan Quintelafi 50716ae9a1f4SJuan Quintela 5072da93a1fdSaliguori########################################## 5073e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 5074c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 5075e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 50763c33ea96SPaolo Bonzini libiscsi="yes" 5077ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 5078ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 5079c589b249SRonnie Sahlberg else 5080c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 5081e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 5082c589b249SRonnie Sahlberg fi 5083c589b249SRonnie Sahlberg libiscsi="no" 5084c589b249SRonnie Sahlberg fi 5085c589b249SRonnie Sahlbergfi 5086c589b249SRonnie Sahlberg 5087c589b249SRonnie Sahlberg########################################## 50888bacde8dSNatanael Copa# Do we need libm 50898bacde8dSNatanael Copacat > $TMPC << EOF 50908bacde8dSNatanael Copa#include <math.h> 5091f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 50928bacde8dSNatanael CopaEOF 50938bacde8dSNatanael Copaif compile_prog "" "" ; then 50948bacde8dSNatanael Copa : 50958bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 50968bacde8dSNatanael Copa LIBS="-lm $LIBS" 50978bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 50988bacde8dSNatanael Copaelse 509976ad07a4SPeter Maydell error_exit "libm check failed" 51008bacde8dSNatanael Copafi 51018bacde8dSNatanael Copa 51028bacde8dSNatanael Copa########################################## 5103da93a1fdSaliguori# Do we need librt 51048bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 51058bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 51068bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 51078bacde8dSNatanael Copa# function in addition. 5108da93a1fdSaliguoricat > $TMPC <<EOF 5109da93a1fdSaliguori#include <signal.h> 5110da93a1fdSaliguori#include <time.h> 51118bacde8dSNatanael Copaint main(void) { 51128bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 51138bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 51148bacde8dSNatanael Copa} 5115da93a1fdSaliguoriEOF 5116da93a1fdSaliguori 511752166aa0SJuan Quintelaif compile_prog "" "" ; then 511807ffa4bdSJuan Quintela : 51198bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 512018e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 512118e588b1SRick Liu LIBS="$LIBS -lrt" 512218e588b1SRick Liu libs_qga="$libs_qga -lrt" 5123da93a1fdSaliguorifi 5124da93a1fdSaliguori 5125d99e97e6SThomas Huth# Check whether we need to link libutil for openpty() 5126d99e97e6SThomas Huthcat > $TMPC << EOF 5127d99e97e6SThomas Huthextern int openpty(int *am, int *as, char *name, void *termp, void *winp); 5128d99e97e6SThomas Huthint main(void) { return openpty(0, 0, 0, 0, 0); } 5129d99e97e6SThomas HuthEOF 5130d99e97e6SThomas Huth 5131d99e97e6SThomas Huthif ! compile_prog "" "" ; then 5132d99e97e6SThomas Huth if compile_prog "" "-lutil" ; then 51336362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 5134d99e97e6SThomas Huth libs_tools="-lutil $libs_tools" 5135d99e97e6SThomas Huth fi 51366362a53fSJuan Quintelafi 51376362a53fSJuan Quintela 5138de5071c5SBlue Swirl########################################## 5139cd4ec0b4SGerd Hoffmann# spice probe 5140cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 5141cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 5142cd4ec0b4SGerd Hoffmann#include <spice.h> 5143cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 5144cd4ec0b4SGerd HoffmannEOF 5145710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 5146710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 51471b63665cSMarc-André Lureau if $pkg_config --atleast-version=0.12.5 spice-server && \ 514865d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 5149cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 5150cd4ec0b4SGerd Hoffmann spice="yes" 5151cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 5152cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 51532e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 51542e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 5155cd4ec0b4SGerd Hoffmann else 5156cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 51578efc9363SHu Tao feature_not_found "spice" \ 51581b63665cSMarc-André Lureau "Install spice-server(>=0.12.5) and spice-protocol(>=0.12.3) devel" 5159cd4ec0b4SGerd Hoffmann fi 5160cd4ec0b4SGerd Hoffmann spice="no" 5161cd4ec0b4SGerd Hoffmann fi 5162cd4ec0b4SGerd Hoffmannfi 5163cd4ec0b4SGerd Hoffmann 51647b02f544SMarc-André Lureau# check for smartcard support 51657b02f544SMarc-André Lureauif test "$smartcard" != "no"; then 51660f5c642dSMichal Privoznik if $pkg_config --atleast-version=2.5.1 libcacard; then 51677b02f544SMarc-André Lureau libcacard_cflags=$($pkg_config --cflags libcacard) 51687b02f544SMarc-André Lureau libcacard_libs=$($pkg_config --libs libcacard) 51697b02f544SMarc-André Lureau smartcard="yes" 5170111a38b0SRobert Relyea else 51717b02f544SMarc-André Lureau if test "$smartcard" = "yes"; then 51727b02f544SMarc-André Lureau feature_not_found "smartcard" "Install libcacard devel" 5173111a38b0SRobert Relyea fi 51747b02f544SMarc-André Lureau smartcard="no" 5175111a38b0SRobert Relyea fi 5176111a38b0SRobert Relyeafi 5177111a38b0SRobert Relyea 51782b2325ffSGerd Hoffmann# check for libusb 51792b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 518065d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 51812b2325ffSGerd Hoffmann libusb="yes" 5182ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 5183ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 51842b2325ffSGerd Hoffmann else 51852b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 51868efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 51872b2325ffSGerd Hoffmann fi 51882b2325ffSGerd Hoffmann libusb="no" 51892b2325ffSGerd Hoffmann fi 51902b2325ffSGerd Hoffmannfi 51912b2325ffSGerd Hoffmann 519269354a83SHans de Goede# check for usbredirparser for usb network redirection support 519369354a83SHans de Goedeif test "$usb_redir" != "no" ; then 519465d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 519569354a83SHans de Goede usb_redir="yes" 5196ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 5197ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 519869354a83SHans de Goede else 519969354a83SHans de Goede if test "$usb_redir" = "yes"; then 520021684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 520169354a83SHans de Goede fi 520269354a83SHans de Goede usb_redir="no" 520369354a83SHans de Goede fi 520469354a83SHans de Goedefi 520569354a83SHans de Goede 5206cd4ec0b4SGerd Hoffmann########################################## 5207d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 5208d9840e25STomoki Sekiyama 5209e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no" && \ 5210e633a5c6SEric Blake test "$vss_win32_sdk" != "no" ; then 5211d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 5212690604f6SMichael Roth "") vss_win32_include="-isystem $source_path" ;; 5213d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 5214d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 5215690604f6SMichael Roth vss_win32_include="-isystem $source_path/.sdk/vss" 5216d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 5217d9840e25STomoki Sekiyama ;; 5218690604f6SMichael Roth *) vss_win32_include="-isystem $vss_win32_sdk" 5219d9840e25STomoki Sekiyama esac 5220d9840e25STomoki Sekiyama cat > $TMPC << EOF 5221d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 5222d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 5223d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 5224d9840e25STomoki SekiyamaEOF 5225d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 5226d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 5227d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 5228315d3184SFam Zheng libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 5229f33ca81fSMichael Roth qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 5230d9840e25STomoki Sekiyama else 5231d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 5232d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 5233d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 5234d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 5235d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 5236d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 5237d9840e25STomoki Sekiyama feature_not_found "VSS support" 5238d9840e25STomoki Sekiyama fi 5239d9840e25STomoki Sekiyama guest_agent_with_vss="no" 5240d9840e25STomoki Sekiyama fi 5241d9840e25STomoki Sekiyamafi 5242d9840e25STomoki Sekiyama 5243d9840e25STomoki Sekiyama########################################## 5244d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 5245d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 5246d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 5247d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 5248d9840e25STomoki Sekiyama 5249e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no" && \ 5250e633a5c6SEric Blake test "$guest_agent_with_vss" = "yes" ; then 5251d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 5252d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 5253d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 5254d9840e25STomoki Sekiyama if test -n "$programfiles"; then 5255d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 5256d9840e25STomoki Sekiyama else 5257d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 5258d9840e25STomoki Sekiyama fi 5259d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 5260d9840e25STomoki Sekiyama win_sdk="" 5261d9840e25STomoki Sekiyama fi 5262d9840e25STomoki Sekiyamafi 5263d9840e25STomoki Sekiyama 5264d9840e25STomoki Sekiyama########################################## 526550cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h 5266e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no"; then 526750cbebb9SMichael Roth cat > $TMPC << EOF 526850cbebb9SMichael Roth#include <windows.h> 526950cbebb9SMichael Roth#include <ntddscsi.h> 527050cbebb9SMichael Rothint main(void) { 527150cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS) 527250cbebb9SMichael Roth#error Missing required ioctl definitions 527350cbebb9SMichael Roth#endif 527450cbebb9SMichael Roth SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 527550cbebb9SMichael Roth return addr.Lun; 527650cbebb9SMichael Roth} 527750cbebb9SMichael RothEOF 527850cbebb9SMichael Roth if compile_prog "" "" ; then 527950cbebb9SMichael Roth guest_agent_ntddscsi=yes 5280996b9cdcSMatt Hines libs_qga="-lsetupapi -lcfgmgr32 $libs_qga" 528150cbebb9SMichael Roth fi 528250cbebb9SMichael Rothfi 528350cbebb9SMichael Roth 528450cbebb9SMichael Roth########################################## 52859d9e1521SGerd Hoffmann# virgl renderer probe 52869d9e1521SGerd Hoffmann 52879d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then 52889d9e1521SGerd Hoffmann cat > $TMPC << EOF 52899d9e1521SGerd Hoffmann#include <virglrenderer.h> 52909d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; } 52919d9e1521SGerd HoffmannEOF 52929d9e1521SGerd Hoffmann virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 52939d9e1521SGerd Hoffmann virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 529447479c55SMarc-André Lureau virgl_version=$($pkg_config --modversion virglrenderer 2>/dev/null) 52959d9e1521SGerd Hoffmann if $pkg_config virglrenderer >/dev/null 2>&1 && \ 52969d9e1521SGerd Hoffmann compile_prog "$virgl_cflags" "$virgl_libs" ; then 52979d9e1521SGerd Hoffmann virglrenderer="yes" 52989d9e1521SGerd Hoffmann else 52999d9e1521SGerd Hoffmann if test "$virglrenderer" = "yes" ; then 53009d9e1521SGerd Hoffmann feature_not_found "virglrenderer" 53019d9e1521SGerd Hoffmann fi 53029d9e1521SGerd Hoffmann virglrenderer="no" 53039d9e1521SGerd Hoffmann fi 53049d9e1521SGerd Hoffmannfi 53059d9e1521SGerd Hoffmann 53069d9e1521SGerd Hoffmann########################################## 53078ca80760SRichard Henderson# capstone 53088ca80760SRichard Henderson 5309e219c499SRichard Hendersoncase "$capstone" in 5310e219c499SRichard Henderson "" | yes) 53118ca80760SRichard Henderson if $pkg_config capstone; then 5312e219c499SRichard Henderson capstone=system 5313e633a5c6SEric Blake elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 5314e219c499SRichard Henderson capstone=git 5315e219c499SRichard Henderson elif test -e "${source_path}/capstone/Makefile" ; then 5316e219c499SRichard Henderson capstone=internal 5317e219c499SRichard Henderson elif test -z "$capstone" ; then 5318e219c499SRichard Henderson capstone=no 5319e219c499SRichard Henderson else 5320e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel or git submodule" 5321e219c499SRichard Henderson fi 5322e219c499SRichard Henderson ;; 5323e219c499SRichard Henderson 5324e219c499SRichard Henderson system) 5325e219c499SRichard Henderson if ! $pkg_config capstone; then 5326e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel" 5327e219c499SRichard Henderson fi 5328e219c499SRichard Henderson ;; 5329e219c499SRichard Hendersonesac 5330e219c499SRichard Henderson 5331e219c499SRichard Hendersoncase "$capstone" in 5332e219c499SRichard Henderson git | internal) 5333e219c499SRichard Henderson if test "$capstone" = git; then 5334e219c499SRichard Henderson git_submodules="${git_submodules} capstone" 5335e219c499SRichard Henderson fi 5336e219c499SRichard Henderson mkdir -p capstone 5337e219c499SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include" 5338e219c499SRichard Henderson if test "$mingw32" = "yes"; then 5339e219c499SRichard Henderson LIBCAPSTONE=capstone.lib 5340e219c499SRichard Henderson else 5341e219c499SRichard Henderson LIBCAPSTONE=libcapstone.a 5342e219c499SRichard Henderson fi 534302f9135bSDaniel P. Berrangé libs_cpu="-L\$(BUILD_DIR)/capstone -lcapstone $libs_cpu" 5344e219c499SRichard Henderson ;; 5345e219c499SRichard Henderson 5346e219c499SRichard Henderson system) 53478ca80760SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" 534802f9135bSDaniel P. Berrangé libs_cpu="$($pkg_config --libs capstone) $libs_cpu" 5349e219c499SRichard Henderson ;; 5350e219c499SRichard Henderson 5351e219c499SRichard Henderson no) 5352e219c499SRichard Henderson ;; 5353e219c499SRichard Henderson *) 5354e219c499SRichard Henderson error_exit "Unknown state for capstone: $capstone" 5355e219c499SRichard Henderson ;; 5356e219c499SRichard Hendersonesac 53578ca80760SRichard Henderson 53588ca80760SRichard Henderson########################################## 53595f6b9e8fSBlue Swirl# check if we have fdatasync 53605f6b9e8fSBlue Swirl 53615f6b9e8fSBlue Swirlfdatasync=no 53625f6b9e8fSBlue Swirlcat > $TMPC << EOF 53635f6b9e8fSBlue Swirl#include <unistd.h> 5364d1722a27SAlexandre Raymondint main(void) { 5365d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 5366d1722a27SAlexandre Raymondreturn fdatasync(0); 5367d1722a27SAlexandre Raymond#else 5368e172fe11SStefan Weil#error Not supported 5369d1722a27SAlexandre Raymond#endif 5370d1722a27SAlexandre Raymond} 53715f6b9e8fSBlue SwirlEOF 53725f6b9e8fSBlue Swirlif compile_prog "" "" ; then 53735f6b9e8fSBlue Swirl fdatasync=yes 53745f6b9e8fSBlue Swirlfi 53755f6b9e8fSBlue Swirl 537694a420b1SStefan Hajnoczi########################################## 5377e78815a5SAndreas Färber# check if we have madvise 5378e78815a5SAndreas Färber 5379e78815a5SAndreas Färbermadvise=no 5380e78815a5SAndreas Färbercat > $TMPC << EOF 5381e78815a5SAndreas Färber#include <sys/types.h> 5382e78815a5SAndreas Färber#include <sys/mman.h> 5383832ce9c2SScott Wood#include <stddef.h> 5384e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 5385e78815a5SAndreas FärberEOF 5386e78815a5SAndreas Färberif compile_prog "" "" ; then 5387e78815a5SAndreas Färber madvise=yes 5388e78815a5SAndreas Färberfi 5389e78815a5SAndreas Färber 5390e78815a5SAndreas Färber########################################## 5391e78815a5SAndreas Färber# check if we have posix_madvise 5392e78815a5SAndreas Färber 5393e78815a5SAndreas Färberposix_madvise=no 5394e78815a5SAndreas Färbercat > $TMPC << EOF 5395e78815a5SAndreas Färber#include <sys/mman.h> 5396832ce9c2SScott Wood#include <stddef.h> 5397e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 5398e78815a5SAndreas FärberEOF 5399e78815a5SAndreas Färberif compile_prog "" "" ; then 5400e78815a5SAndreas Färber posix_madvise=yes 5401e78815a5SAndreas Färberfi 5402e78815a5SAndreas Färber 5403e78815a5SAndreas Färber########################################## 54049bc5a719SAndreas Gustafsson# check if we have posix_memalign() 54059bc5a719SAndreas Gustafsson 54069bc5a719SAndreas Gustafssonposix_memalign=no 54079bc5a719SAndreas Gustafssoncat > $TMPC << EOF 54089bc5a719SAndreas Gustafsson#include <stdlib.h> 54099bc5a719SAndreas Gustafssonint main(void) { 54109bc5a719SAndreas Gustafsson void *p; 54119bc5a719SAndreas Gustafsson return posix_memalign(&p, 8, 8); 54129bc5a719SAndreas Gustafsson} 54139bc5a719SAndreas GustafssonEOF 54149bc5a719SAndreas Gustafssonif compile_prog "" "" ; then 54159bc5a719SAndreas Gustafsson posix_memalign=yes 54169bc5a719SAndreas Gustafssonfi 54179bc5a719SAndreas Gustafsson 54189bc5a719SAndreas Gustafsson########################################## 54190a852417SPaul Durrant# check if we have posix_syslog 54200a852417SPaul Durrant 54210a852417SPaul Durrantposix_syslog=no 54220a852417SPaul Durrantcat > $TMPC << EOF 54230a852417SPaul Durrant#include <syslog.h> 54240a852417SPaul Durrantint main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; } 54250a852417SPaul DurrantEOF 54260a852417SPaul Durrantif compile_prog "" "" ; then 54270a852417SPaul Durrant posix_syslog=yes 54280a852417SPaul Durrantfi 54290a852417SPaul Durrant 54300a852417SPaul Durrant########################################## 5431401bc051SPeter Maydell# check if we have sem_timedwait 5432401bc051SPeter Maydell 5433401bc051SPeter Maydellsem_timedwait=no 5434401bc051SPeter Maydellcat > $TMPC << EOF 5435401bc051SPeter Maydell#include <semaphore.h> 5436811294b7SDaniel P. Berrangéint main(void) { sem_t s; struct timespec t = {0}; return sem_timedwait(&s, &t); } 5437401bc051SPeter MaydellEOF 5438401bc051SPeter Maydellif compile_prog "" "" ; then 5439401bc051SPeter Maydell sem_timedwait=yes 5440401bc051SPeter Maydellfi 5441401bc051SPeter Maydell 5442401bc051SPeter Maydell########################################## 54435c99fa37SKeno Fischer# check if we have strchrnul 54445c99fa37SKeno Fischer 54455c99fa37SKeno Fischerstrchrnul=no 54465c99fa37SKeno Fischercat > $TMPC << EOF 54475c99fa37SKeno Fischer#include <string.h> 54485c99fa37SKeno Fischerint main(void); 54495c99fa37SKeno Fischer// Use a haystack that the compiler shouldn't be able to constant fold 54505c99fa37SKeno Fischerchar *haystack = (char*)&main; 54515c99fa37SKeno Fischerint main(void) { return strchrnul(haystack, 'x') != &haystack[6]; } 54525c99fa37SKeno FischerEOF 54535c99fa37SKeno Fischerif compile_prog "" "" ; then 54545c99fa37SKeno Fischer strchrnul=yes 54555c99fa37SKeno Fischerfi 54565c99fa37SKeno Fischer 54578a792b03SJiufei Xue######################################### 54588a792b03SJiufei Xue# check if we have st_atim 54598a792b03SJiufei Xue 54608a792b03SJiufei Xuest_atim=no 54618a792b03SJiufei Xuecat > $TMPC << EOF 54628a792b03SJiufei Xue#include <sys/stat.h> 54638a792b03SJiufei Xue#include <stddef.h> 54648a792b03SJiufei Xueint main(void) { return offsetof(struct stat, st_atim); } 54658a792b03SJiufei XueEOF 54668a792b03SJiufei Xueif compile_prog "" "" ; then 54678a792b03SJiufei Xue st_atim=yes 54688a792b03SJiufei Xuefi 54698a792b03SJiufei Xue 54705c99fa37SKeno Fischer########################################## 547194a420b1SStefan Hajnoczi# check if trace backend exists 547294a420b1SStefan Hajnoczi 54735b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 547494a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 54755b808275SLluís Vilanova error_exit "invalid trace backends" \ 54765b808275SLluís Vilanova "Please choose supported trace backends." 547794a420b1SStefan Hajnoczifi 547894a420b1SStefan Hajnoczi 54797e24e92aSStefan Hajnoczi########################################## 54807e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 54815b808275SLluís Vilanovaif have_backend "ust"; then 54827e24e92aSStefan Hajnoczi cat > $TMPC << EOF 5483bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 54847e24e92aSStefan Hajnocziint main(void) { return 0; } 54857e24e92aSStefan HajnocziEOF 5486c79ed23dSFrancis Deslauriers if compile_prog "" "-Wl,--no-as-needed -ldl" ; then 5487bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 548889138857SStefan Weil lttng_ust_libs=$($pkg_config --libs lttng-ust) 54897e24e92aSStefan Hajnoczi else 5490c79ed23dSFrancis Deslauriers lttng_ust_libs="-llttng-ust -ldl" 5491bf15f63cSMohamad Gebai fi 5492bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 549389138857SStefan Weil urcu_bp_libs=$($pkg_config --libs liburcu-bp) 5494bf15f63cSMohamad Gebai else 5495bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 5496bf15f63cSMohamad Gebai fi 5497bf15f63cSMohamad Gebai 5498bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 5499bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 5500bf15f63cSMohamad Gebai else 5501bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 55027e24e92aSStefan Hajnoczi fi 55037e24e92aSStefan Hajnoczifi 5504b3d08c02SDaniel P. Berrange 5505b3d08c02SDaniel P. Berrange########################################## 5506b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 55075b808275SLluís Vilanovaif have_backend "dtrace"; then 5508b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 550976ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 5510b3d08c02SDaniel P. Berrange fi 5511c276b17dSDaniel P. Berrange trace_backend_stap="no" 5512c276b17dSDaniel P. Berrange if has 'stap' ; then 5513c276b17dSDaniel P. Berrange trace_backend_stap="yes" 5514c276b17dSDaniel P. Berrange fi 5515b3d08c02SDaniel P. Berrangefi 5516b3d08c02SDaniel P. Berrange 55177e24e92aSStefan Hajnoczi########################################## 5518519175a2SAlex Barcelo# check and set a backend for coroutine 5519d0e2fce5SAneesh Kumar K.V 55207c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 552133c53c54SDaniel P. Berrange# is sigcontext. On Windows the only valid backend is the Windows 552233c53c54SDaniel P. Berrange# specific one. 55237c2acc70SPeter Maydell 55247c2acc70SPeter Maydellucontext_works=no 5525d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 5526d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 5527d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 5528cdf84806SPeter Maydell#ifdef __stub_makecontext 5529cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 5530cdf84806SPeter Maydell#endif 553175cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 5532d0e2fce5SAneesh Kumar K.VEOF 5533d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 55347c2acc70SPeter Maydell ucontext_works=yes 5535d0e2fce5SAneesh Kumar K.V fi 5536519175a2SAlex Barcelofi 55377c2acc70SPeter Maydell 55387c2acc70SPeter Maydellif test "$coroutine" = ""; then 55397c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 55407c2acc70SPeter Maydell coroutine=win32 55417c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 55427c2acc70SPeter Maydell coroutine=ucontext 5543519175a2SAlex Barcelo else 55447c2acc70SPeter Maydell coroutine=sigaltstack 55457c2acc70SPeter Maydell fi 55467c2acc70SPeter Maydellelse 55477c2acc70SPeter Maydell case $coroutine in 55487c2acc70SPeter Maydell windows) 55497c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 55507c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 55517c2acc70SPeter Maydell fi 55527c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 55537c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 55547c2acc70SPeter Maydell coroutine=win32 55557c2acc70SPeter Maydell ;; 55567c2acc70SPeter Maydell ucontext) 55577c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 55587c2acc70SPeter Maydell feature_not_found "ucontext" 55597c2acc70SPeter Maydell fi 55607c2acc70SPeter Maydell ;; 556133c53c54SDaniel P. Berrange sigaltstack) 55627c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 55637c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 55647c2acc70SPeter Maydell fi 55657c2acc70SPeter Maydell ;; 55667c2acc70SPeter Maydell *) 556776ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 55687c2acc70SPeter Maydell ;; 55697c2acc70SPeter Maydell esac 5570d0e2fce5SAneesh Kumar K.Vfi 5571d0e2fce5SAneesh Kumar K.V 557270c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 557370c60c08SStefan Hajnoczi coroutine_pool=yes 557470c60c08SStefan Hajnoczifi 557570c60c08SStefan Hajnoczi 55767d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes"; then 55777d992e4dSPeter Lieven if test "$coroutine_pool" = "yes"; then 55787d992e4dSPeter Lieven echo "WARN: disabling coroutine pool for stack usage debugging" 55797d992e4dSPeter Lieven coroutine_pool=no 55807d992e4dSPeter Lieven fi 55817d992e4dSPeter Lievenfi 55827d992e4dSPeter Lieven 5583*1e4f6065SDaniele Buono################################################## 5584*1e4f6065SDaniele Buono# SafeStack 5585*1e4f6065SDaniele Buono 5586*1e4f6065SDaniele Buono 5587*1e4f6065SDaniele Buonoif test "$safe_stack" = "yes"; then 5588*1e4f6065SDaniele Buonocat > $TMPC << EOF 5589*1e4f6065SDaniele Buonoint main(int argc, char *argv[]) 5590*1e4f6065SDaniele Buono{ 5591*1e4f6065SDaniele Buono#if ! __has_feature(safe_stack) 5592*1e4f6065SDaniele Buono#error SafeStack Disabled 5593*1e4f6065SDaniele Buono#endif 5594*1e4f6065SDaniele Buono return 0; 5595*1e4f6065SDaniele Buono} 5596*1e4f6065SDaniele BuonoEOF 5597*1e4f6065SDaniele Buono flag="-fsanitize=safe-stack" 5598*1e4f6065SDaniele Buono # Check that safe-stack is supported and enabled. 5599*1e4f6065SDaniele Buono if compile_prog "-Werror $flag" "$flag"; then 5600*1e4f6065SDaniele Buono # Flag needed both at compilation and at linking 5601*1e4f6065SDaniele Buono QEMU_CFLAGS="$QEMU_CFLAGS $flag" 5602*1e4f6065SDaniele Buono QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 5603*1e4f6065SDaniele Buono else 5604*1e4f6065SDaniele Buono error_exit "SafeStack not supported by your compiler" 5605*1e4f6065SDaniele Buono fi 5606*1e4f6065SDaniele Buono if test "$coroutine" != "ucontext"; then 5607*1e4f6065SDaniele Buono error_exit "SafeStack is only supported by the coroutine backend ucontext" 5608*1e4f6065SDaniele Buono fi 5609*1e4f6065SDaniele Buonoelse 5610*1e4f6065SDaniele Buonocat > $TMPC << EOF 5611*1e4f6065SDaniele Buonoint main(int argc, char *argv[]) 5612*1e4f6065SDaniele Buono{ 5613*1e4f6065SDaniele Buono#if defined(__has_feature) 5614*1e4f6065SDaniele Buono#if __has_feature(safe_stack) 5615*1e4f6065SDaniele Buono#error SafeStack Enabled 5616*1e4f6065SDaniele Buono#endif 5617*1e4f6065SDaniele Buono#endif 5618*1e4f6065SDaniele Buono return 0; 5619*1e4f6065SDaniele Buono} 5620*1e4f6065SDaniele BuonoEOF 5621*1e4f6065SDaniele Buonoif test "$safe_stack" = "no"; then 5622*1e4f6065SDaniele Buono # Make sure that safe-stack is disabled 5623*1e4f6065SDaniele Buono if ! compile_prog "-Werror" ""; then 5624*1e4f6065SDaniele Buono # SafeStack was already enabled, try to explicitly remove the feature 5625*1e4f6065SDaniele Buono flag="-fno-sanitize=safe-stack" 5626*1e4f6065SDaniele Buono if ! compile_prog "-Werror $flag" "$flag"; then 5627*1e4f6065SDaniele Buono error_exit "Configure cannot disable SafeStack" 5628*1e4f6065SDaniele Buono fi 5629*1e4f6065SDaniele Buono QEMU_CFLAGS="$QEMU_CFLAGS $flag" 5630*1e4f6065SDaniele Buono QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 5631*1e4f6065SDaniele Buono fi 5632*1e4f6065SDaniele Buonoelse # "$safe_stack" = "" 5633*1e4f6065SDaniele Buono # Set safe_stack to yes or no based on pre-existing flags 5634*1e4f6065SDaniele Buono if compile_prog "-Werror" ""; then 5635*1e4f6065SDaniele Buono safe_stack="no" 5636*1e4f6065SDaniele Buono else 5637*1e4f6065SDaniele Buono safe_stack="yes" 5638*1e4f6065SDaniele Buono if test "$coroutine" != "ucontext"; then 5639*1e4f6065SDaniele Buono error_exit "SafeStack is only supported by the coroutine backend ucontext" 5640*1e4f6065SDaniele Buono fi 5641*1e4f6065SDaniele Buono fi 5642*1e4f6065SDaniele Buonofi 5643*1e4f6065SDaniele Buonofi 56447d992e4dSPeter Lieven 5645d0e2fce5SAneesh Kumar K.V########################################## 5646d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 5647d2042378SAneesh Kumar K.V 56484e1797f9SStefan Weilopen_by_handle_at=no 5649d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 5650d2042378SAneesh Kumar K.V#include <fcntl.h> 5651acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 5652acc55ba8SStefan Weil# error missing definition 5653acc55ba8SStefan Weil#else 565475cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 5655acc55ba8SStefan Weil#endif 5656d2042378SAneesh Kumar K.VEOF 5657d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 5658d2042378SAneesh Kumar K.V open_by_handle_at=yes 5659d2042378SAneesh Kumar K.Vfi 5660d2042378SAneesh Kumar K.V 5661e06a765eSHarsh Prateek Bora######################################## 5662e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 5663e06a765eSHarsh Prateek Bora 5664e06a765eSHarsh Prateek Boralinux_magic_h=no 5665e06a765eSHarsh Prateek Boracat > $TMPC << EOF 5666e06a765eSHarsh Prateek Bora#include <linux/magic.h> 5667e06a765eSHarsh Prateek Boraint main(void) { 566875cafad7SStefan Weil return 0; 5669e06a765eSHarsh Prateek Bora} 5670e06a765eSHarsh Prateek BoraEOF 5671e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 5672e06a765eSHarsh Prateek Bora linux_magic_h=yes 5673e06a765eSHarsh Prateek Borafi 5674e06a765eSHarsh Prateek Bora 56758ab1bf12SLuiz Capitulino######################################## 5676c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 5677c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 5678c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 5679c95e3080SKevin Wolf# only a warning. 5680c95e3080SKevin Wolf# 5681c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 5682c95e3080SKevin Wolf# the build doesn't fail anyway. 5683c95e3080SKevin Wolf 568406d71fa1SPeter Maydellpragma_disable_unused_but_set=no 568506d71fa1SPeter Maydellcat > $TMPC << EOF 5686e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 5687c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 5688e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 5689c95e3080SKevin Wolf 569006d71fa1SPeter Maydellint main(void) { 569106d71fa1SPeter Maydell return 0; 569206d71fa1SPeter Maydell} 569306d71fa1SPeter MaydellEOF 569406d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 5695cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 5696c95e3080SKevin Wolfelse 5697c95e3080SKevin Wolf werror=no 569806d71fa1SPeter Maydellfi 569906d71fa1SPeter Maydell 570006d71fa1SPeter Maydell######################################## 5701541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 57023f4349dcSKevin Wolf 57033f4349dcSKevin Wolfvalgrind_h=no 57043f4349dcSKevin Wolfcat > $TMPC << EOF 57053f4349dcSKevin Wolf#include <valgrind/valgrind.h> 57063f4349dcSKevin Wolfint main(void) { 57073f4349dcSKevin Wolf return 0; 57083f4349dcSKevin Wolf} 57093f4349dcSKevin WolfEOF 57103f4349dcSKevin Wolfif compile_prog "" "" ; then 57113f4349dcSKevin Wolf valgrind_h=yes 57123f4349dcSKevin Wolffi 57133f4349dcSKevin Wolf 57143f4349dcSKevin Wolf######################################## 57158ab1bf12SLuiz Capitulino# check if environ is declared 57168ab1bf12SLuiz Capitulino 57178ab1bf12SLuiz Capitulinohas_environ=no 57188ab1bf12SLuiz Capitulinocat > $TMPC << EOF 57198ab1bf12SLuiz Capitulino#include <unistd.h> 57208ab1bf12SLuiz Capitulinoint main(void) { 5721c075a723SBlue Swirl environ = 0; 57228ab1bf12SLuiz Capitulino return 0; 57238ab1bf12SLuiz Capitulino} 57248ab1bf12SLuiz CapitulinoEOF 57258ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 57268ab1bf12SLuiz Capitulino has_environ=yes 57278ab1bf12SLuiz Capitulinofi 57288ab1bf12SLuiz Capitulino 572976a347e1SRichard Henderson######################################## 573076a347e1SRichard Henderson# check if cpuid.h is usable. 573176a347e1SRichard Henderson 573276a347e1SRichard Hendersoncat > $TMPC << EOF 573376a347e1SRichard Henderson#include <cpuid.h> 573476a347e1SRichard Hendersonint main(void) { 5735774d566cSPeter Maydell unsigned a, b, c, d; 5736774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 5737774d566cSPeter Maydell 5738774d566cSPeter Maydell if (max >= 1) { 5739774d566cSPeter Maydell __cpuid(1, a, b, c, d); 5740774d566cSPeter Maydell } 5741774d566cSPeter Maydell 5742774d566cSPeter Maydell if (max >= 7) { 5743774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 5744774d566cSPeter Maydell } 5745774d566cSPeter Maydell 574676a347e1SRichard Henderson return 0; 574776a347e1SRichard Henderson} 574876a347e1SRichard HendersonEOF 574976a347e1SRichard Hendersonif compile_prog "" "" ; then 575076a347e1SRichard Henderson cpuid_h=yes 575176a347e1SRichard Hendersonfi 575276a347e1SRichard Henderson 57535dd89908SRichard Henderson########################################## 57545dd89908SRichard Henderson# avx2 optimization requirement check 57555dd89908SRichard Henderson# 57565dd89908SRichard Henderson# There is no point enabling this if cpuid.h is not usable, 57575dd89908SRichard Henderson# since we won't be able to select the new routines. 57585dd89908SRichard Henderson 5759e633a5c6SEric Blakeif test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then 57605dd89908SRichard Henderson cat > $TMPC << EOF 57615dd89908SRichard Henderson#pragma GCC push_options 57625dd89908SRichard Henderson#pragma GCC target("avx2") 57635dd89908SRichard Henderson#include <cpuid.h> 57645dd89908SRichard Henderson#include <immintrin.h> 57655dd89908SRichard Hendersonstatic int bar(void *a) { 57665dd89908SRichard Henderson __m256i x = *(__m256i *)a; 57675dd89908SRichard Henderson return _mm256_testz_si256(x, x); 57685dd89908SRichard Henderson} 57695dd89908SRichard Hendersonint main(int argc, char *argv[]) { return bar(argv[0]); } 57705dd89908SRichard HendersonEOF 57715dd89908SRichard Henderson if compile_object "" ; then 57725dd89908SRichard Henderson avx2_opt="yes" 577386583a07SLiam Merwick else 577486583a07SLiam Merwick avx2_opt="no" 57755dd89908SRichard Henderson fi 57765dd89908SRichard Hendersonfi 57775dd89908SRichard Henderson 57786b8cd447SRobert Hoo########################################## 57796b8cd447SRobert Hoo# avx512f optimization requirement check 57806b8cd447SRobert Hoo# 57816b8cd447SRobert Hoo# There is no point enabling this if cpuid.h is not usable, 57826b8cd447SRobert Hoo# since we won't be able to select the new routines. 57836b8cd447SRobert Hoo# by default, it is turned off. 57846b8cd447SRobert Hoo# if user explicitly want to enable it, check environment 57856b8cd447SRobert Hoo 57866b8cd447SRobert Hooif test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then 57876b8cd447SRobert Hoo cat > $TMPC << EOF 57886b8cd447SRobert Hoo#pragma GCC push_options 57896b8cd447SRobert Hoo#pragma GCC target("avx512f") 57906b8cd447SRobert Hoo#include <cpuid.h> 57916b8cd447SRobert Hoo#include <immintrin.h> 57926b8cd447SRobert Hoostatic int bar(void *a) { 57936b8cd447SRobert Hoo __m512i x = *(__m512i *)a; 57946b8cd447SRobert Hoo return _mm512_test_epi64_mask(x, x); 57956b8cd447SRobert Hoo} 57966b8cd447SRobert Hooint main(int argc, char *argv[]) 57976b8cd447SRobert Hoo{ 57986b8cd447SRobert Hoo return bar(argv[0]); 57996b8cd447SRobert Hoo} 58006b8cd447SRobert HooEOF 58016b8cd447SRobert Hoo if ! compile_object "" ; then 58026b8cd447SRobert Hoo avx512f_opt="no" 58036b8cd447SRobert Hoo fi 58046b8cd447SRobert Hooelse 58056b8cd447SRobert Hoo avx512f_opt="no" 58066b8cd447SRobert Hoofi 58076b8cd447SRobert Hoo 5808f540166bSRichard Henderson######################################## 5809f540166bSRichard Henderson# check if __[u]int128_t is usable. 5810f540166bSRichard Henderson 5811f540166bSRichard Hendersonint128=no 5812f540166bSRichard Hendersoncat > $TMPC << EOF 5813f540166bSRichard Henderson__int128_t a; 5814f540166bSRichard Henderson__uint128_t b; 5815f540166bSRichard Hendersonint main (void) { 5816f540166bSRichard Henderson a = a + b; 5817f540166bSRichard Henderson b = a * b; 5818464e3671SPeter Maydell a = a * a; 5819f540166bSRichard Henderson return 0; 5820f540166bSRichard Henderson} 5821f540166bSRichard HendersonEOF 5822f540166bSRichard Hendersonif compile_prog "" "" ; then 5823f540166bSRichard Henderson int128=yes 5824f540166bSRichard Hendersonfi 582576a347e1SRichard Henderson 58267ebee43eSRichard Henderson######################################### 58277ebee43eSRichard Henderson# See if 128-bit atomic operations are supported. 58287ebee43eSRichard Henderson 58297ebee43eSRichard Hendersonatomic128=no 58307ebee43eSRichard Hendersonif test "$int128" = "yes"; then 58317ebee43eSRichard Henderson cat > $TMPC << EOF 58327ebee43eSRichard Hendersonint main(void) 58337ebee43eSRichard Henderson{ 58347ebee43eSRichard Henderson unsigned __int128 x = 0, y = 0; 58357ebee43eSRichard Henderson y = __atomic_load_16(&x, 0); 58367ebee43eSRichard Henderson __atomic_store_16(&x, y, 0); 58377ebee43eSRichard Henderson __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0); 58387ebee43eSRichard Henderson return 0; 58397ebee43eSRichard Henderson} 58407ebee43eSRichard HendersonEOF 58417ebee43eSRichard Henderson if compile_prog "" "" ; then 58427ebee43eSRichard Henderson atomic128=yes 58437ebee43eSRichard Henderson fi 58447ebee43eSRichard Hendersonfi 58457ebee43eSRichard Henderson 5846e6cd4bb5SRichard Hendersoncmpxchg128=no 5847e633a5c6SEric Blakeif test "$int128" = yes && test "$atomic128" = no; then 5848e6cd4bb5SRichard Henderson cat > $TMPC << EOF 5849e6cd4bb5SRichard Hendersonint main(void) 5850e6cd4bb5SRichard Henderson{ 5851e6cd4bb5SRichard Henderson unsigned __int128 x = 0, y = 0; 5852e6cd4bb5SRichard Henderson __sync_val_compare_and_swap_16(&x, y, x); 5853e6cd4bb5SRichard Henderson return 0; 5854e6cd4bb5SRichard Henderson} 5855e6cd4bb5SRichard HendersonEOF 5856e6cd4bb5SRichard Henderson if compile_prog "" "" ; then 5857e6cd4bb5SRichard Henderson cmpxchg128=yes 5858e6cd4bb5SRichard Henderson fi 5859e6cd4bb5SRichard Hendersonfi 5860e6cd4bb5SRichard Henderson 5861df79b996SRichard Henderson######################################### 5862df79b996SRichard Henderson# See if 64-bit atomic operations are supported. 5863df79b996SRichard Henderson# Note that without __atomic builtins, we can only 5864df79b996SRichard Henderson# assume atomic loads/stores max at pointer size. 5865df79b996SRichard Henderson 5866df79b996SRichard Hendersoncat > $TMPC << EOF 5867df79b996SRichard Henderson#include <stdint.h> 5868df79b996SRichard Hendersonint main(void) 5869df79b996SRichard Henderson{ 5870df79b996SRichard Henderson uint64_t x = 0, y = 0; 5871df79b996SRichard Henderson#ifdef __ATOMIC_RELAXED 5872df79b996SRichard Henderson y = __atomic_load_8(&x, 0); 5873df79b996SRichard Henderson __atomic_store_8(&x, y, 0); 5874df79b996SRichard Henderson __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); 5875df79b996SRichard Henderson __atomic_exchange_8(&x, y, 0); 5876df79b996SRichard Henderson __atomic_fetch_add_8(&x, y, 0); 5877df79b996SRichard Henderson#else 5878df79b996SRichard Henderson typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; 5879df79b996SRichard Henderson __sync_lock_test_and_set(&x, y); 5880df79b996SRichard Henderson __sync_val_compare_and_swap(&x, y, 0); 5881df79b996SRichard Henderson __sync_fetch_and_add(&x, y); 5882df79b996SRichard Henderson#endif 5883df79b996SRichard Henderson return 0; 5884df79b996SRichard Henderson} 5885df79b996SRichard HendersonEOF 5886df79b996SRichard Hendersonif compile_prog "" "" ; then 5887df79b996SRichard Henderson atomic64=yes 5888df79b996SRichard Hendersonfi 5889df79b996SRichard Henderson 589026fffe29SEmilio G. Cota######################################### 589126fffe29SEmilio G. Cota# See if --dynamic-list is supported by the linker 589226fffe29SEmilio G. Cotald_dynamic_list="no" 589326fffe29SEmilio G. Cotaif test "$static" = "no" ; then 589426fffe29SEmilio G. Cota cat > $TMPTXT <<EOF 589526fffe29SEmilio G. Cota{ 589626fffe29SEmilio G. Cota foo; 589726fffe29SEmilio G. Cota}; 589826fffe29SEmilio G. CotaEOF 589926fffe29SEmilio G. Cota 590026fffe29SEmilio G. Cota cat > $TMPC <<EOF 590126fffe29SEmilio G. Cota#include <stdio.h> 590226fffe29SEmilio G. Cotavoid foo(void); 590326fffe29SEmilio G. Cota 590426fffe29SEmilio G. Cotavoid foo(void) 590526fffe29SEmilio G. Cota{ 590626fffe29SEmilio G. Cota printf("foo\n"); 590726fffe29SEmilio G. Cota} 590826fffe29SEmilio G. Cota 590926fffe29SEmilio G. Cotaint main(void) 591026fffe29SEmilio G. Cota{ 591126fffe29SEmilio G. Cota foo(); 591226fffe29SEmilio G. Cota return 0; 591326fffe29SEmilio G. Cota} 591426fffe29SEmilio G. CotaEOF 591526fffe29SEmilio G. Cota 591626fffe29SEmilio G. Cota if compile_prog "" "-Wl,--dynamic-list=$TMPTXT" ; then 591726fffe29SEmilio G. Cota ld_dynamic_list="yes" 591826fffe29SEmilio G. Cota fi 591926fffe29SEmilio G. Cotafi 592026fffe29SEmilio G. Cota 592126fffe29SEmilio G. Cota######################################### 592226fffe29SEmilio G. Cota# See if -exported_symbols_list is supported by the linker 592326fffe29SEmilio G. Cota 592426fffe29SEmilio G. Cotald_exported_symbols_list="no" 592526fffe29SEmilio G. Cotaif test "$static" = "no" ; then 592626fffe29SEmilio G. Cota cat > $TMPTXT <<EOF 592726fffe29SEmilio G. Cota _foo 592826fffe29SEmilio G. CotaEOF 592926fffe29SEmilio G. Cota 593026fffe29SEmilio G. Cota if compile_prog "" "-Wl,-exported_symbols_list,$TMPTXT" ; then 593126fffe29SEmilio G. Cota ld_exported_symbols_list="yes" 593226fffe29SEmilio G. Cota fi 593326fffe29SEmilio G. Cotafi 593426fffe29SEmilio G. Cota 593526fffe29SEmilio G. Cotaif test "$plugins" = "yes" && 593626fffe29SEmilio G. Cota test "$ld_dynamic_list" = "no" && 593726fffe29SEmilio G. Cota test "$ld_exported_symbols_list" = "no" ; then 593826fffe29SEmilio G. Cota error_exit \ 593926fffe29SEmilio G. Cota "Plugin support requires dynamic linking and specifying a set of symbols " \ 594026fffe29SEmilio G. Cota "that are exported to plugins. Unfortunately your linker doesn't " \ 594126fffe29SEmilio G. Cota "support the flag (--dynamic-list or -exported_symbols_list) used " \ 594226fffe29SEmilio G. Cota "for this purpose. You can't build with --static." 594326fffe29SEmilio G. Cotafi 594426fffe29SEmilio G. Cota 59451e6e9acaSRichard Henderson######################################## 5946db8aaae8SRichard Henderson# See if __attribute__((alias)) is supported. 5947db8aaae8SRichard Henderson# This false for Xcode 9, but has been remedied for Xcode 10. 5948db8aaae8SRichard Henderson# Unfortunately, travis uses Xcode 9 by default. 5949db8aaae8SRichard Henderson 5950db8aaae8SRichard Hendersonattralias=no 5951db8aaae8SRichard Hendersoncat > $TMPC << EOF 5952db8aaae8SRichard Hendersonint x = 1; 5953db8aaae8SRichard Hendersonextern const int y __attribute__((alias("x"))); 5954db8aaae8SRichard Hendersonint main(void) { return 0; } 5955db8aaae8SRichard HendersonEOF 5956db8aaae8SRichard Hendersonif compile_prog "" "" ; then 5957db8aaae8SRichard Henderson attralias=yes 5958db8aaae8SRichard Hendersonfi 5959db8aaae8SRichard Henderson 5960db8aaae8SRichard Henderson######################################## 59611e6e9acaSRichard Henderson# check if getauxval is available. 59621e6e9acaSRichard Henderson 59631e6e9acaSRichard Hendersongetauxval=no 59641e6e9acaSRichard Hendersoncat > $TMPC << EOF 59651e6e9acaSRichard Henderson#include <sys/auxv.h> 59661e6e9acaSRichard Hendersonint main(void) { 59671e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 59681e6e9acaSRichard Henderson} 59691e6e9acaSRichard HendersonEOF 59701e6e9acaSRichard Hendersonif compile_prog "" "" ; then 59711e6e9acaSRichard Henderson getauxval=yes 59721e6e9acaSRichard Hendersonfi 59731e6e9acaSRichard Henderson 5974fd0e6053SJohn Snow######################################## 5975fd0e6053SJohn Snow# check if ccache is interfering with 5976fd0e6053SJohn Snow# semantic analysis of macros 5977fd0e6053SJohn Snow 59785e4dfd3dSJohn Snowunset CCACHE_CPP2 5979fd0e6053SJohn Snowccache_cpp2=no 5980fd0e6053SJohn Snowcat > $TMPC << EOF 5981fd0e6053SJohn Snowstatic const int Z = 1; 5982fd0e6053SJohn Snow#define fn() ({ Z; }) 5983fd0e6053SJohn Snow#define TAUT(X) ((X) == Z) 5984fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y) 5985fd0e6053SJohn Snow#define ID(X) (X) 5986fd0e6053SJohn Snowint main(int argc, char *argv[]) 5987fd0e6053SJohn Snow{ 5988fd0e6053SJohn Snow int x = 0, y = 0; 5989fd0e6053SJohn Snow x = ID(x); 5990fd0e6053SJohn Snow x = fn(); 5991fd0e6053SJohn Snow fn(); 5992fd0e6053SJohn Snow if (PAREN(x, y)) return 0; 5993fd0e6053SJohn Snow if (TAUT(Z)) return 0; 5994fd0e6053SJohn Snow return 0; 5995fd0e6053SJohn Snow} 5996fd0e6053SJohn SnowEOF 5997fd0e6053SJohn Snow 5998fd0e6053SJohn Snowif ! compile_object "-Werror"; then 5999fd0e6053SJohn Snow ccache_cpp2=yes 6000fd0e6053SJohn Snowfi 6001fd0e6053SJohn Snow 6002b553a042SJohn Snow################################################# 6003b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE. 6004b553a042SJohn Snow 6005b553a042SJohn Snowif test "$fortify_source" != "no"; then 6006b553a042SJohn Snow if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 6007b553a042SJohn Snow fortify_source="no"; 6008e189091fSPeter Maydell elif test -n "$cxx" && has $cxx && 6009cfcc7c14SJohn Snow echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 6010b553a042SJohn Snow fortify_source="no"; 6011b553a042SJohn Snow else 6012b553a042SJohn Snow fortify_source="yes" 6013b553a042SJohn Snow fi 6014b553a042SJohn Snowfi 6015b553a042SJohn Snow 60161efad060SFam Zheng############################################### 60171efad060SFam Zheng# Check if copy_file_range is provided by glibc 60181efad060SFam Zhenghave_copy_file_range=no 60191efad060SFam Zhengcat > $TMPC << EOF 60201efad060SFam Zheng#include <unistd.h> 60211efad060SFam Zhengint main(void) { 60221efad060SFam Zheng copy_file_range(0, NULL, 0, NULL, 0, 0); 60231efad060SFam Zheng return 0; 60241efad060SFam Zheng} 60251efad060SFam ZhengEOF 60261efad060SFam Zhengif compile_prog "" "" ; then 60271efad060SFam Zheng have_copy_file_range=yes 60281efad060SFam Zhengfi 60291efad060SFam Zheng 6030d2042378SAneesh Kumar K.V########################################## 6031277abf15SJan Vesely# check if struct fsxattr is available via linux/fs.h 6032277abf15SJan Vesely 6033277abf15SJan Veselyhave_fsxattr=no 6034277abf15SJan Veselycat > $TMPC << EOF 6035277abf15SJan Vesely#include <linux/fs.h> 6036277abf15SJan Veselystruct fsxattr foo; 6037277abf15SJan Veselyint main(void) { 6038277abf15SJan Vesely return 0; 6039277abf15SJan Vesely} 6040277abf15SJan VeselyEOF 6041277abf15SJan Veselyif compile_prog "" "" ; then 6042277abf15SJan Vesely have_fsxattr=yes 6043277abf15SJan Veselyfi 6044277abf15SJan Vesely 6045b66e10e4SPeter Maydell########################################## 6046a40161cbSPaolo Bonzini# check for usable membarrier system call 6047a40161cbSPaolo Bonziniif test "$membarrier" = "yes"; then 6048a40161cbSPaolo Bonzini have_membarrier=no 6049a40161cbSPaolo Bonzini if test "$mingw32" = "yes" ; then 6050a40161cbSPaolo Bonzini have_membarrier=yes 6051a40161cbSPaolo Bonzini elif test "$linux" = "yes" ; then 6052a40161cbSPaolo Bonzini cat > $TMPC << EOF 6053a40161cbSPaolo Bonzini #include <linux/membarrier.h> 6054a40161cbSPaolo Bonzini #include <sys/syscall.h> 6055a40161cbSPaolo Bonzini #include <unistd.h> 6056a40161cbSPaolo Bonzini #include <stdlib.h> 6057a40161cbSPaolo Bonzini int main(void) { 6058a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0); 6059a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0); 6060a40161cbSPaolo Bonzini exit(0); 6061a40161cbSPaolo Bonzini } 6062a40161cbSPaolo BonziniEOF 6063a40161cbSPaolo Bonzini if compile_prog "" "" ; then 6064a40161cbSPaolo Bonzini have_membarrier=yes 6065a40161cbSPaolo Bonzini fi 6066a40161cbSPaolo Bonzini fi 6067a40161cbSPaolo Bonzini if test "$have_membarrier" = "no"; then 6068a40161cbSPaolo Bonzini feature_not_found "membarrier" "membarrier system call not available" 6069a40161cbSPaolo Bonzini fi 6070a40161cbSPaolo Bonzinielse 6071a40161cbSPaolo Bonzini # Do not enable it by default even for Mingw32, because it doesn't 6072a40161cbSPaolo Bonzini # work on Wine. 6073a40161cbSPaolo Bonzini membarrier=no 6074a40161cbSPaolo Bonzinifi 6075a40161cbSPaolo Bonzini 6076a40161cbSPaolo Bonzini########################################## 6077b66e10e4SPeter Maydell# check if rtnetlink.h exists and is useful 6078575b22b1SLaurent Vivierhave_rtnetlink=no 6079575b22b1SLaurent Viviercat > $TMPC << EOF 6080575b22b1SLaurent Vivier#include <linux/rtnetlink.h> 6081575b22b1SLaurent Vivierint main(void) { 6082575b22b1SLaurent Vivier return IFLA_PROTO_DOWN; 6083575b22b1SLaurent Vivier} 6084575b22b1SLaurent VivierEOF 6085575b22b1SLaurent Vivierif compile_prog "" "" ; then 6086575b22b1SLaurent Vivier have_rtnetlink=yes 6087575b22b1SLaurent Vivierfi 6088575b22b1SLaurent Vivier 60896a02c806SStefan Hajnoczi########################################## 60906a02c806SStefan Hajnoczi# check for usable AF_VSOCK environment 60916a02c806SStefan Hajnoczihave_af_vsock=no 60926a02c806SStefan Hajnoczicat > $TMPC << EOF 60936a02c806SStefan Hajnoczi#include <errno.h> 60946a02c806SStefan Hajnoczi#include <sys/types.h> 60956a02c806SStefan Hajnoczi#include <sys/socket.h> 60966a02c806SStefan Hajnoczi#if !defined(AF_VSOCK) 60976a02c806SStefan Hajnoczi# error missing AF_VSOCK flag 60986a02c806SStefan Hajnoczi#endif 60996a02c806SStefan Hajnoczi#include <linux/vm_sockets.h> 61006a02c806SStefan Hajnocziint main(void) { 61016a02c806SStefan Hajnoczi int sock, ret; 61026a02c806SStefan Hajnoczi struct sockaddr_vm svm; 61036a02c806SStefan Hajnoczi socklen_t len = sizeof(svm); 61046a02c806SStefan Hajnoczi sock = socket(AF_VSOCK, SOCK_STREAM, 0); 61056a02c806SStefan Hajnoczi ret = getpeername(sock, (struct sockaddr *)&svm, &len); 61066a02c806SStefan Hajnoczi if ((ret == -1) && (errno == ENOTCONN)) { 61076a02c806SStefan Hajnoczi return 0; 61086a02c806SStefan Hajnoczi } 61096a02c806SStefan Hajnoczi return -1; 61106a02c806SStefan Hajnoczi} 61116a02c806SStefan HajnocziEOF 61126a02c806SStefan Hajnocziif compile_prog "" "" ; then 61136a02c806SStefan Hajnoczi have_af_vsock=yes 61146a02c806SStefan Hajnoczifi 61156a02c806SStefan Hajnoczi 6116f0d92b56SLongpeng(Mike)########################################## 6117f0d92b56SLongpeng(Mike)# check for usable AF_ALG environment 61184f67366eSThomas Huthhave_afalg=no 6119f0d92b56SLongpeng(Mike)cat > $TMPC << EOF 6120f0d92b56SLongpeng(Mike)#include <errno.h> 6121f0d92b56SLongpeng(Mike)#include <sys/types.h> 6122f0d92b56SLongpeng(Mike)#include <sys/socket.h> 6123f0d92b56SLongpeng(Mike)#include <linux/if_alg.h> 6124f0d92b56SLongpeng(Mike)int main(void) { 6125f0d92b56SLongpeng(Mike) int sock; 6126f0d92b56SLongpeng(Mike) sock = socket(AF_ALG, SOCK_SEQPACKET, 0); 6127f0d92b56SLongpeng(Mike) return sock; 6128f0d92b56SLongpeng(Mike)} 6129f0d92b56SLongpeng(Mike)EOF 6130f0d92b56SLongpeng(Mike)if compile_prog "" "" ; then 6131f0d92b56SLongpeng(Mike) have_afalg=yes 6132f0d92b56SLongpeng(Mike)fi 6133f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" 6134f0d92b56SLongpeng(Mike)then 6135f0d92b56SLongpeng(Mike) if test "$have_afalg" != "yes" 6136f0d92b56SLongpeng(Mike) then 6137f0d92b56SLongpeng(Mike) error_exit "AF_ALG requested but could not be detected" 6138f0d92b56SLongpeng(Mike) fi 6139f0d92b56SLongpeng(Mike)fi 6140f0d92b56SLongpeng(Mike) 6141f0d92b56SLongpeng(Mike) 61426969ec6cSJames Clarke################################################# 6143c97d6d2cSSergio Andres Gomez Del Real# Check to see if we have the Hypervisor framework 6144d2d08522SPeter Maydellif [ "$darwin" = "yes" ] ; then 6145c97d6d2cSSergio Andres Gomez Del Real cat > $TMPC << EOF 6146c97d6d2cSSergio Andres Gomez Del Real#include <Hypervisor/hv.h> 6147c97d6d2cSSergio Andres Gomez Del Realint main() { return 0;} 6148c97d6d2cSSergio Andres Gomez Del RealEOF 6149c97d6d2cSSergio Andres Gomez Del Real if ! compile_object ""; then 6150c97d6d2cSSergio Andres Gomez Del Real hvf='no' 6151c97d6d2cSSergio Andres Gomez Del Real else 6152c97d6d2cSSergio Andres Gomez Del Real hvf='yes' 6153db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-framework Hypervisor $QEMU_LDFLAGS" 6154c97d6d2cSSergio Andres Gomez Del Real fi 6155c97d6d2cSSergio Andres Gomez Del Realfi 6156c97d6d2cSSergio Andres Gomez Del Real 6157c97d6d2cSSergio Andres Gomez Del Real################################################# 61586969ec6cSJames Clarke# Sparc implicitly links with --relax, which is 61596969ec6cSJames Clarke# incompatible with -r, so --no-relax should be 61606969ec6cSJames Clarke# given. It does no harm to give it on other 61616969ec6cSJames Clarke# platforms too. 61626969ec6cSJames Clarke 61636969ec6cSJames Clarke# Note: the prototype is needed since QEMU_CFLAGS 61646969ec6cSJames Clarke# contains -Wmissing-prototypes 61656969ec6cSJames Clarkecat > $TMPC << EOF 61666969ec6cSJames Clarkeextern int foo(void); 61676969ec6cSJames Clarkeint foo(void) { return 0; } 61686969ec6cSJames ClarkeEOF 61696969ec6cSJames Clarkeif ! compile_object ""; then 61706969ec6cSJames Clarke error_exit "Failed to compile object file for LD_REL_FLAGS test" 61716969ec6cSJames Clarkefi 61727ecf44a5SPaolo Bonzinifor i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do 61737ecf44a5SPaolo Bonzini if do_cc -nostdlib $i -o $TMPMO $TMPO; then 61747ecf44a5SPaolo Bonzini LD_REL_FLAGS=$i 61757ecf44a5SPaolo Bonzini break 61767ecf44a5SPaolo Bonzini fi 61777ecf44a5SPaolo Bonzinidone 61787ecf44a5SPaolo Bonziniif test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then 61797ecf44a5SPaolo Bonzini feature_not_found "modules" "Cannot find how to build relocatable objects" 61806969ec6cSJames Clarkefi 61816969ec6cSJames Clarke 6182277abf15SJan Vesely########################################## 61834d04351fSChristopher Covington# check for sysmacros.h 61844d04351fSChristopher Covington 61854d04351fSChristopher Covingtonhave_sysmacros=no 61864d04351fSChristopher Covingtoncat > $TMPC << EOF 61874d04351fSChristopher Covington#include <sys/sysmacros.h> 61884d04351fSChristopher Covingtonint main(void) { 61894d04351fSChristopher Covington return makedev(0, 0); 61904d04351fSChristopher Covington} 61914d04351fSChristopher CovingtonEOF 61924d04351fSChristopher Covingtonif compile_prog "" "" ; then 61934d04351fSChristopher Covington have_sysmacros=yes 61944d04351fSChristopher Covingtonfi 61954d04351fSChristopher Covington 61964d04351fSChristopher Covington########################################## 6197da92c3ffSAshish Mittal# Veritas HyperScale block driver VxHS 6198da92c3ffSAshish Mittal# Check if libvxhs is installed 6199da92c3ffSAshish Mittal 6200da92c3ffSAshish Mittalif test "$vxhs" != "no" ; then 6201da92c3ffSAshish Mittal cat > $TMPC <<EOF 6202da92c3ffSAshish Mittal#include <stdint.h> 6203da92c3ffSAshish Mittal#include <qnio/qnio_api.h> 6204da92c3ffSAshish Mittal 6205da92c3ffSAshish Mittalvoid *vxhs_callback; 6206da92c3ffSAshish Mittal 6207da92c3ffSAshish Mittalint main(void) { 6208da92c3ffSAshish Mittal iio_init(QNIO_VERSION, vxhs_callback); 6209da92c3ffSAshish Mittal return 0; 6210da92c3ffSAshish Mittal} 6211da92c3ffSAshish MittalEOF 6212da92c3ffSAshish Mittal vxhs_libs="-lvxhs -lssl" 6213da92c3ffSAshish Mittal if compile_prog "" "$vxhs_libs" ; then 6214da92c3ffSAshish Mittal vxhs=yes 6215da92c3ffSAshish Mittal else 6216da92c3ffSAshish Mittal if test "$vxhs" = "yes" ; then 6217da92c3ffSAshish Mittal feature_not_found "vxhs block device" "Install libvxhs See github" 6218da92c3ffSAshish Mittal fi 6219da92c3ffSAshish Mittal vxhs=no 6220da92c3ffSAshish Mittal fi 6221da92c3ffSAshish Mittalfi 6222da92c3ffSAshish Mittal 6223da92c3ffSAshish Mittal########################################## 622449e00a18SAndreas Grapentin# check for _Static_assert() 622549e00a18SAndreas Grapentin 622649e00a18SAndreas Grapentinhave_static_assert=no 622749e00a18SAndreas Grapentincat > $TMPC << EOF 622849e00a18SAndreas Grapentin_Static_assert(1, "success"); 622949e00a18SAndreas Grapentinint main(void) { 623049e00a18SAndreas Grapentin return 0; 623149e00a18SAndreas Grapentin} 623249e00a18SAndreas GrapentinEOF 623349e00a18SAndreas Grapentinif compile_prog "" "" ; then 623449e00a18SAndreas Grapentin have_static_assert=yes 623549e00a18SAndreas Grapentinfi 623649e00a18SAndreas Grapentin 623749e00a18SAndreas Grapentin########################################## 6238e674605fSTomáš Golembiovský# check for utmpx.h, it is missing e.g. on OpenBSD 6239e674605fSTomáš Golembiovský 6240e674605fSTomáš Golembiovskýhave_utmpx=no 6241e674605fSTomáš Golembiovskýcat > $TMPC << EOF 6242e674605fSTomáš Golembiovský#include <utmpx.h> 6243e674605fSTomáš Golembiovskýstruct utmpx user_info; 6244e674605fSTomáš Golembiovskýint main(void) { 6245e674605fSTomáš Golembiovský return 0; 6246e674605fSTomáš Golembiovský} 6247e674605fSTomáš GolembiovskýEOF 6248e674605fSTomáš Golembiovskýif compile_prog "" "" ; then 6249e674605fSTomáš Golembiovský have_utmpx=yes 6250e674605fSTomáš Golembiovskýfi 6251e674605fSTomáš Golembiovský 6252e674605fSTomáš Golembiovský########################################## 6253db1ed1abSRichard Henderson# check for getrandom() 6254db1ed1abSRichard Henderson 6255db1ed1abSRichard Hendersonhave_getrandom=no 6256db1ed1abSRichard Hendersoncat > $TMPC << EOF 6257db1ed1abSRichard Henderson#include <sys/random.h> 6258db1ed1abSRichard Hendersonint main(void) { 6259db1ed1abSRichard Henderson return getrandom(0, 0, GRND_NONBLOCK); 6260db1ed1abSRichard Henderson} 6261db1ed1abSRichard HendersonEOF 6262db1ed1abSRichard Hendersonif compile_prog "" "" ; then 6263db1ed1abSRichard Henderson have_getrandom=yes 6264db1ed1abSRichard Hendersonfi 6265db1ed1abSRichard Henderson 6266db1ed1abSRichard Henderson########################################## 6267247724cbSMarc-André Lureau# checks for sanitizers 6268247724cbSMarc-André Lureau 6269247724cbSMarc-André Lureauhave_asan=no 6270247724cbSMarc-André Lureauhave_ubsan=no 6271d83414e1SMarc-André Lureauhave_asan_iface_h=no 6272d83414e1SMarc-André Lureauhave_asan_iface_fiber=no 6273247724cbSMarc-André Lureau 6274247724cbSMarc-André Lureauif test "$sanitizers" = "yes" ; then 6275b9f44da2SMarc-André Lureau write_c_skeleton 6276247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then 6277247724cbSMarc-André Lureau have_asan=yes 6278247724cbSMarc-André Lureau fi 6279b9f44da2SMarc-André Lureau 6280b9f44da2SMarc-André Lureau # we could use a simple skeleton for flags checks, but this also 6281b9f44da2SMarc-André Lureau # detect the static linking issue of ubsan, see also: 6282b9f44da2SMarc-André Lureau # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285 6283b9f44da2SMarc-André Lureau cat > $TMPC << EOF 6284b9f44da2SMarc-André Lureau#include <stdlib.h> 6285b9f44da2SMarc-André Lureauint main(void) { 6286b9f44da2SMarc-André Lureau void *tmp = malloc(10); 6287f2dfe54cSLeonid Bloch if (tmp != NULL) { 6288b9f44da2SMarc-André Lureau return *(int *)(tmp + 2); 6289b9f44da2SMarc-André Lureau } 6290f2dfe54cSLeonid Bloch} 6291b9f44da2SMarc-André LureauEOF 6292247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then 6293247724cbSMarc-André Lureau have_ubsan=yes 6294247724cbSMarc-André Lureau fi 6295d83414e1SMarc-André Lureau 6296d83414e1SMarc-André Lureau if check_include "sanitizer/asan_interface.h" ; then 6297d83414e1SMarc-André Lureau have_asan_iface_h=yes 6298d83414e1SMarc-André Lureau fi 6299d83414e1SMarc-André Lureau 6300d83414e1SMarc-André Lureau cat > $TMPC << EOF 6301d83414e1SMarc-André Lureau#include <sanitizer/asan_interface.h> 6302d83414e1SMarc-André Lureauint main(void) { 6303d83414e1SMarc-André Lureau __sanitizer_start_switch_fiber(0, 0, 0); 6304d83414e1SMarc-André Lureau return 0; 6305d83414e1SMarc-André Lureau} 6306d83414e1SMarc-André LureauEOF 6307d83414e1SMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" "" ; then 6308d83414e1SMarc-André Lureau have_asan_iface_fiber=yes 6309d83414e1SMarc-André Lureau fi 6310247724cbSMarc-André Lureaufi 6311247724cbSMarc-André Lureau 6312247724cbSMarc-André Lureau########################################## 6313adc28027SAlexander Bulekov# checks for fuzzer 6314adc28027SAlexander Bulekovif test "$fuzzing" = "yes" ; then 6315adc28027SAlexander Bulekov write_c_fuzzer_skeleton 6316adc28027SAlexander Bulekov if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address,fuzzer" ""; then 6317adc28027SAlexander Bulekov have_fuzzer=yes 6318adc28027SAlexander Bulekov fi 6319adc28027SAlexander Bulekovfi 6320adc28027SAlexander Bulekov 63210aebab04SLingfeng Yang# Thread sanitizer is, for now, much noisier than the other sanitizers; 63220aebab04SLingfeng Yang# keep it separate until that is not the case. 63230aebab04SLingfeng Yangif test "$tsan" = "yes" && test "$sanitizers" = "yes"; then 63240aebab04SLingfeng Yang error_exit "TSAN is not supported with other sanitiziers." 63250aebab04SLingfeng Yangfi 63260aebab04SLingfeng Yanghave_tsan=no 63270aebab04SLingfeng Yanghave_tsan_iface_fiber=no 63280aebab04SLingfeng Yangif test "$tsan" = "yes" ; then 63290aebab04SLingfeng Yang write_c_skeleton 63300aebab04SLingfeng Yang if compile_prog "$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then 63310aebab04SLingfeng Yang have_tsan=yes 63320aebab04SLingfeng Yang fi 63330aebab04SLingfeng Yang cat > $TMPC << EOF 63340aebab04SLingfeng Yang#include <sanitizer/tsan_interface.h> 63350aebab04SLingfeng Yangint main(void) { 63360aebab04SLingfeng Yang __tsan_create_fiber(0); 63370aebab04SLingfeng Yang return 0; 63380aebab04SLingfeng Yang} 63390aebab04SLingfeng YangEOF 63400aebab04SLingfeng Yang if compile_prog "$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then 63410aebab04SLingfeng Yang have_tsan_iface_fiber=yes 63420aebab04SLingfeng Yang fi 63430aebab04SLingfeng Yangfi 63440aebab04SLingfeng Yang 6345adc28027SAlexander Bulekov########################################## 634617824406SJunyan He# check for libpmem 634717824406SJunyan He 634817824406SJunyan Heif test "$libpmem" != "no"; then 634917824406SJunyan He if $pkg_config --exists "libpmem"; then 635017824406SJunyan He libpmem="yes" 635117824406SJunyan He libpmem_libs=$($pkg_config --libs libpmem) 635217824406SJunyan He libpmem_cflags=$($pkg_config --cflags libpmem) 635317824406SJunyan He libs_softmmu="$libs_softmmu $libpmem_libs" 635417824406SJunyan He QEMU_CFLAGS="$QEMU_CFLAGS $libpmem_cflags" 635517824406SJunyan He else 635617824406SJunyan He if test "$libpmem" = "yes" ; then 635717824406SJunyan He feature_not_found "libpmem" "Install nvml or pmdk" 635817824406SJunyan He fi 635917824406SJunyan He libpmem="no" 636017824406SJunyan He fi 636117824406SJunyan Hefi 636217824406SJunyan He 636317824406SJunyan He########################################## 6364675b9b53SMarc-André Lureau# check for slirp 6365675b9b53SMarc-André Lureau 6366d599938aSLaurent Vivier# slirp is only required when building softmmu targets 6367d599938aSLaurent Vivierif test -z "$slirp" -a "$softmmu" != "yes" ; then 6368d599938aSLaurent Vivier slirp="no" 6369d599938aSLaurent Vivierfi 6370d599938aSLaurent Vivier 6371675b9b53SMarc-André Lureaucase "$slirp" in 6372675b9b53SMarc-André Lureau "" | yes) 6373675b9b53SMarc-André Lureau if $pkg_config slirp; then 6374675b9b53SMarc-André Lureau slirp=system 63757c57bdd8SMarc-André Lureau elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 63767c57bdd8SMarc-André Lureau slirp=git 6377675b9b53SMarc-André Lureau elif test -e "${source_path}/slirp/Makefile" ; then 6378675b9b53SMarc-André Lureau slirp=internal 6379675b9b53SMarc-André Lureau elif test -z "$slirp" ; then 6380675b9b53SMarc-André Lureau slirp=no 6381675b9b53SMarc-André Lureau else 6382675b9b53SMarc-André Lureau feature_not_found "slirp" "Install slirp devel or git submodule" 6383675b9b53SMarc-André Lureau fi 6384675b9b53SMarc-André Lureau ;; 6385675b9b53SMarc-André Lureau 6386675b9b53SMarc-André Lureau system) 6387675b9b53SMarc-André Lureau if ! $pkg_config slirp; then 6388675b9b53SMarc-André Lureau feature_not_found "slirp" "Install slirp devel" 6389675b9b53SMarc-André Lureau fi 6390675b9b53SMarc-André Lureau ;; 6391675b9b53SMarc-André Lureauesac 6392675b9b53SMarc-André Lureau 6393675b9b53SMarc-André Lureaucase "$slirp" in 63947c57bdd8SMarc-André Lureau git | internal) 63957c57bdd8SMarc-André Lureau if test "$slirp" = git; then 63967c57bdd8SMarc-André Lureau git_submodules="${git_submodules} slirp" 63977c57bdd8SMarc-André Lureau fi 6398675b9b53SMarc-André Lureau mkdir -p slirp 6399675b9b53SMarc-André Lureau slirp_cflags="-I\$(SRC_PATH)/slirp/src -I\$(BUILD_DIR)/slirp/src" 6400675b9b53SMarc-André Lureau slirp_libs="-L\$(BUILD_DIR)/slirp -lslirp" 6401b965e8c5SPaolo Bonzini if test "$mingw32" = "yes" ; then 6402b965e8c5SPaolo Bonzini slirp_libs="$slirp_libs -lws2_32 -liphlpapi" 6403b965e8c5SPaolo Bonzini fi 6404675b9b53SMarc-André Lureau ;; 6405675b9b53SMarc-André Lureau 6406675b9b53SMarc-André Lureau system) 6407675b9b53SMarc-André Lureau slirp_version=$($pkg_config --modversion slirp 2>/dev/null) 6408675b9b53SMarc-André Lureau slirp_cflags=$($pkg_config --cflags slirp 2>/dev/null) 6409675b9b53SMarc-André Lureau slirp_libs=$($pkg_config --libs slirp 2>/dev/null) 6410675b9b53SMarc-André Lureau ;; 6411675b9b53SMarc-André Lureau 6412675b9b53SMarc-André Lureau no) 6413675b9b53SMarc-André Lureau ;; 6414675b9b53SMarc-André Lureau *) 6415675b9b53SMarc-André Lureau error_exit "Unknown state for slirp: $slirp" 6416675b9b53SMarc-André Lureau ;; 6417675b9b53SMarc-André Lureauesac 6418675b9b53SMarc-André Lureau 641954e7aac0SAlexey Krasikov########################################## 642054e7aac0SAlexey Krasikov# check for usable __NR_keyctl syscall 642154e7aac0SAlexey Krasikov 642254e7aac0SAlexey Krasikovif test "$linux" = "yes" ; then 642354e7aac0SAlexey Krasikov 642454e7aac0SAlexey Krasikov have_keyring=no 642554e7aac0SAlexey Krasikov cat > $TMPC << EOF 642654e7aac0SAlexey Krasikov#include <errno.h> 642754e7aac0SAlexey Krasikov#include <asm/unistd.h> 642854e7aac0SAlexey Krasikov#include <linux/keyctl.h> 642954e7aac0SAlexey Krasikov#include <unistd.h> 643054e7aac0SAlexey Krasikovint main(void) { 643154e7aac0SAlexey Krasikov return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0); 643254e7aac0SAlexey Krasikov} 643354e7aac0SAlexey KrasikovEOF 643454e7aac0SAlexey Krasikov if compile_prog "" "" ; then 643554e7aac0SAlexey Krasikov have_keyring=yes 643654e7aac0SAlexey Krasikov fi 643754e7aac0SAlexey Krasikovfi 643854e7aac0SAlexey Krasikovif test "$secret_keyring" != "no" 643954e7aac0SAlexey Krasikovthen 644054e7aac0SAlexey Krasikov if test "$have_keyring" == "yes" 644154e7aac0SAlexey Krasikov then 644254e7aac0SAlexey Krasikov secret_keyring=yes 644354e7aac0SAlexey Krasikov else 644454e7aac0SAlexey Krasikov if test "$secret_keyring" = "yes" 644554e7aac0SAlexey Krasikov then 644654e7aac0SAlexey Krasikov error_exit "syscall __NR_keyctl requested, \ 644754e7aac0SAlexey Krasikovbut not implemented on your system" 644854e7aac0SAlexey Krasikov else 644954e7aac0SAlexey Krasikov secret_keyring=no 645054e7aac0SAlexey Krasikov fi 645154e7aac0SAlexey Krasikov fi 645254e7aac0SAlexey Krasikovfi 645354e7aac0SAlexey Krasikov 645492500362SAlexey Krasikov########################################## 645592500362SAlexey Krasikov# check for usable keyutils.h 645692500362SAlexey Krasikov 645792500362SAlexey Krasikovif test "$linux" = "yes" ; then 645892500362SAlexey Krasikov 645992500362SAlexey Krasikov have_keyutils=no 646092500362SAlexey Krasikov cat > $TMPC << EOF 646192500362SAlexey Krasikov#include <errno.h> 646292500362SAlexey Krasikov#include <asm/unistd.h> 646392500362SAlexey Krasikov#include <unistd.h> 646492500362SAlexey Krasikov#include <sys/types.h> 646592500362SAlexey Krasikov#include <keyutils.h> 646692500362SAlexey Krasikovint main(void) { 646792500362SAlexey Krasikov return request_key("user", NULL, NULL, 0); 646892500362SAlexey Krasikov} 646992500362SAlexey KrasikovEOF 647092500362SAlexey Krasikov if compile_prog "" "-lkeyutils"; then 647192500362SAlexey Krasikov have_keyutils=yes 647292500362SAlexey Krasikov fi 647392500362SAlexey Krasikovfi 647492500362SAlexey Krasikov 6475675b9b53SMarc-André Lureau 6476675b9b53SMarc-André Lureau########################################## 6477e86ecd4bSJuan Quintela# End of CC checks 6478e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 6479e86ecd4bSJuan Quintela 6480d83414e1SMarc-André Lureauwrite_c_skeleton 6481d83414e1SMarc-André Lureau 64821d728c39SBlue Swirlif test "$gcov" = "yes" ; then 6483db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fprofile-arcs -ftest-coverage -g $QEMU_CFLAGS" 6484db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fprofile-arcs -ftest-coverage $QEMU_LDFLAGS" 6485b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then 6486e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 648748e56d50SPaolo Bonzinielif test "$debug" = "no"; then 6488ce278618SPeter Maydell CFLAGS="-O2 $CFLAGS" 6489e86ecd4bSJuan Quintelafi 6490a316e378SJuan Quintela 6491247724cbSMarc-André Lureauif test "$have_asan" = "yes"; then 6492db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fsanitize=address $QEMU_CFLAGS" 6493db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fsanitize=address $QEMU_LDFLAGS" 6494d83414e1SMarc-André Lureau if test "$have_asan_iface_h" = "no" ; then 6495d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header missing." \ 6496d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 6497d83414e1SMarc-André Lureau elif test "$have_asan_iface_fiber" = "no" ; then 6498d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header is too old." \ 6499d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 6500d83414e1SMarc-André Lureau fi 6501247724cbSMarc-André Lureaufi 65020aebab04SLingfeng Yangif test "$have_tsan" = "yes" ; then 65030aebab04SLingfeng Yang if test "$have_tsan_iface_fiber" = "yes" ; then 65040aebab04SLingfeng Yang QEMU_CFLAGS="-fsanitize=thread $QEMU_CFLAGS" 65050aebab04SLingfeng Yang QEMU_LDFLAGS="-fsanitize=thread $QEMU_LDFLAGS" 65060aebab04SLingfeng Yang else 65070aebab04SLingfeng Yang error_exit "Cannot enable TSAN due to missing fiber annotation interface." 65080aebab04SLingfeng Yang fi 65090aebab04SLingfeng Yangelif test "$tsan" = "yes" ; then 65100aebab04SLingfeng Yang error_exit "Cannot enable TSAN due to missing sanitize thread interface." 65110aebab04SLingfeng Yangfi 6512247724cbSMarc-André Lureauif test "$have_ubsan" = "yes"; then 6513db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fsanitize=undefined $QEMU_CFLAGS" 6514db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fsanitize=undefined $QEMU_LDFLAGS" 6515247724cbSMarc-André Lureaufi 6516247724cbSMarc-André Lureau 65176542aa9cSPeter Lieven########################################## 65186542aa9cSPeter Lieven# Do we have libnfs 65196542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 6520b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 65216542aa9cSPeter Lieven libnfs="yes" 65226542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 65236542aa9cSPeter Lieven else 65246542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 65258efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 65266542aa9cSPeter Lieven fi 65276542aa9cSPeter Lieven libnfs="no" 65286542aa9cSPeter Lieven fi 65296542aa9cSPeter Lievenfi 65301d728c39SBlue Swirl 65313efac6ebSTomáš Golembiovský########################################## 65323efac6ebSTomáš Golembiovský# Do we have libudev 65333efac6ebSTomáš Golembiovskýif test "$libudev" != "no" ; then 65343efac6ebSTomáš Golembiovský if $pkg_config libudev && test "$static" != "yes"; then 65353efac6ebSTomáš Golembiovský libudev="yes" 65363efac6ebSTomáš Golembiovský libudev_libs=$($pkg_config --libs libudev) 65373efac6ebSTomáš Golembiovský else 65383efac6ebSTomáš Golembiovský libudev="no" 65393efac6ebSTomáš Golembiovský fi 65403efac6ebSTomáš Golembiovskýfi 65413efac6ebSTomáš Golembiovský 65426ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 65436ca026cbSPeter Maydellif test "$werror" = "yes"; then 65446ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 65456ca026cbSPeter Maydellfi 65466ca026cbSPeter Maydell 65470aebab04SLingfeng Yang# Exclude --warn-common with TSan to suppress warnings from the TSan libraries. 65480aebab04SLingfeng Yangif test "$solaris" = "no" && test "$tsan" = "no"; then 6549e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 6550db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-Wl,--warn-common $QEMU_LDFLAGS" 6551e86ecd4bSJuan Quintela fi 6552e86ecd4bSJuan Quintelafi 6553e86ecd4bSJuan Quintela 655494dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 655594dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 655694dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 655794dd53c5SGerd Hoffmannelse 655894dd53c5SGerd Hoffmann POD2MAN="pod2man" 655994dd53c5SGerd Hoffmannfi 656094dd53c5SGerd Hoffmann 6561952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 6562952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 6563952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 6564e9a3591fSChristian Borntraeger if ld_has $flag ; then 6565db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-Wl,$flag $QEMU_LDFLAGS" 6566952afb71SBlue Swirl fi 6567952afb71SBlue Swirl done 6568952afb71SBlue Swirlfi 6569952afb71SBlue Swirl 65707776ea6bSPhilippe Mathieu-Daudé# Disable OpenBSD W^X if available 65717776ea6bSPhilippe Mathieu-Daudéif test "$tcg" = "yes" && test "$targetos" = "OpenBSD"; then 65727776ea6bSPhilippe Mathieu-Daudé cat > $TMPC <<EOF 65737776ea6bSPhilippe Mathieu-Daudé int main(void) { return 0; } 65747776ea6bSPhilippe Mathieu-DaudéEOF 65757776ea6bSPhilippe Mathieu-Daudé wx_ldflags="-Wl,-z,wxneeded" 65767776ea6bSPhilippe Mathieu-Daudé if compile_prog "" "$wx_ldflags"; then 65777776ea6bSPhilippe Mathieu-Daudé QEMU_LDFLAGS="$QEMU_LDFLAGS $wx_ldflags" 65787776ea6bSPhilippe Mathieu-Daudé fi 65797776ea6bSPhilippe Mathieu-Daudéfi 65807776ea6bSPhilippe Mathieu-Daudé 658110ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 6582e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 6583528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 6584834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 6585a8260d38SDaniel P. Berrangéqemu_icondir="$datadir/icons" 658667ea9546SDaniel P. Berrangéqemu_desktopdir="$datadir/applications" 65875a67135aSbellard 6588e0580342SKamil Rytarowski# We can only support ivshmem if we have eventfd 6589e0580342SKamil Rytarowskiif [ "$eventfd" = "yes" ]; then 6590e0580342SKamil Rytarowski ivshmem=yes 6591e0580342SKamil Rytarowskifi 6592e0580342SKamil Rytarowski 65934b1c11fdSDaniel P. Berrangetools="" 65944b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 659572d277a7SGerd Hoffmann tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools" 65964b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 6597f353415fSKevin Wolf tools="qemu-nbd\$(EXESUF) qemu-storage-daemon\$(EXESUF) $tools" 6598b1449edbSKamil Rytarowski fi 6599b1449edbSKamil Rytarowski if [ "$ivshmem" = "yes" ]; then 6600a75eb03bSDavid Marchand tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" 66014b1c11fdSDaniel P. Berrange fi 66021b9d35f3SViktor Prutyanov if [ "$curl" = "yes" ]; then 66031b9d35f3SViktor Prutyanov tools="elf2dmp\$(EXESUF) $tools" 66043fa2d384SViktor Prutyanov fi 66054b1c11fdSDaniel P. Berrangefi 66064b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 6607b855f8d1SPaolo Bonzini if test "$linux" = yes; then 66087e462613SPaolo Bonzini if test "$virtfs" != no && test "$cap_ng" = yes && test "$attr" = yes ; then 6609983eef5aSMeador Inge virtfs=yes 6610fdbff6bdSPhilippe Mathieu-Daudé helpers="$helpers fsdev/virtfs-proxy-helper\$(EXESUF)" 6611983eef5aSMeador Inge else 6612983eef5aSMeador Inge if test "$virtfs" = yes; then 66137e462613SPaolo Bonzini error_exit "VirtFS requires libcap-ng devel and libattr devel" 6614983eef5aSMeador Inge fi 661517500370SAndreas Färber virtfs=no 6616983eef5aSMeador Inge fi 6617fe8fc5aeSPaolo Bonzini if test "$mpath" != no && test "$mpathpersist" = yes ; then 6618fe8fc5aeSPaolo Bonzini mpath=yes 6619fe8fc5aeSPaolo Bonzini else 6620fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 6621fe8fc5aeSPaolo Bonzini error_exit "Multipath requires libmpathpersist devel" 6622fe8fc5aeSPaolo Bonzini fi 6623fe8fc5aeSPaolo Bonzini mpath=no 6624fe8fc5aeSPaolo Bonzini fi 6625fdbff6bdSPhilippe Mathieu-Daudé helpers="$helpers scsi/qemu-pr-helper\$(EXESUF)" 6626b855f8d1SPaolo Bonzini else 6627b855f8d1SPaolo Bonzini if test "$virtfs" = yes; then 6628b855f8d1SPaolo Bonzini error_exit "VirtFS is supported only on Linux" 6629b855f8d1SPaolo Bonzini fi 6630b855f8d1SPaolo Bonzini virtfs=no 6631fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 6632fe8fc5aeSPaolo Bonzini error_exit "Multipath is supported only on Linux" 6633fe8fc5aeSPaolo Bonzini fi 6634fe8fc5aeSPaolo Bonzini mpath=no 663517bff52bSM. Mohan Kumar fi 66366a021536SGerd Hoffmann if test "$xkbcommon" = "yes"; then 66376a021536SGerd Hoffmann tools="qemu-keymap\$(EXESUF) $tools" 66386a021536SGerd Hoffmann fi 6639ff69fd8cSLaurent Vivierfi 66409d6bc27bSMichael Roth 66419d6bc27bSMichael Roth# Probe for guest agent support/options 66429d6bc27bSMichael Roth 6643e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 6644a5125905SLaurent Vivier if [ "$softmmu" = no -a "$want_tools" = no ] ; then 6645a5125905SLaurent Vivier guest_agent=no 6646a5125905SLaurent Vivier elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 66470814465aSPaolo Bonzini tools="qemu-ga\$(EXESUF) $tools" 6648e8ef31a3SMichael Tokarev guest_agent=yes 6649e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 6650e8ef31a3SMichael Tokarev guest_agent=no 6651e8ef31a3SMichael Tokarev else 6652e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 6653ca35f780SPaolo Bonzini fi 66544b1c11fdSDaniel P. Berrangefi 6655ca35f780SPaolo Bonzini 66569d6bc27bSMichael Roth# Guest agent Window MSI package 66579d6bc27bSMichael Roth 66589d6bc27bSMichael Rothif test "$guest_agent" != yes; then 66599d6bc27bSMichael Roth if test "$guest_agent_msi" = yes; then 66609d6bc27bSMichael Roth error_exit "MSI guest agent package requires guest agent enabled" 66619d6bc27bSMichael Roth fi 66629d6bc27bSMichael Roth guest_agent_msi=no 66639d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then 66649d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 66659d6bc27bSMichael Roth error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 66669d6bc27bSMichael Roth fi 66679d6bc27bSMichael Roth guest_agent_msi=no 66689d6bc27bSMichael Rothelif ! has wixl; then 66699d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 66709d6bc27bSMichael Roth error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 66719d6bc27bSMichael Roth fi 66729d6bc27bSMichael Roth guest_agent_msi=no 66731a34904eSMichael Rothelse 66741a34904eSMichael Roth # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 66751a34904eSMichael Roth # disabled explicitly 66761a34904eSMichael Roth if test "$guest_agent_msi" != "no"; then 66771a34904eSMichael Roth guest_agent_msi=yes 66781a34904eSMichael Roth fi 66799d6bc27bSMichael Rothfi 66809d6bc27bSMichael Roth 66811a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then 66829d6bc27bSMichael Roth if test "$guest_agent_with_vss" = "yes"; then 66839d6bc27bSMichael Roth QEMU_GA_MSI_WITH_VSS="-D InstallVss" 66849d6bc27bSMichael Roth fi 66859d6bc27bSMichael Roth 66869d6bc27bSMichael Roth if test "$QEMU_GA_MANUFACTURER" = ""; then 66879d6bc27bSMichael Roth QEMU_GA_MANUFACTURER=QEMU 66889d6bc27bSMichael Roth fi 66899d6bc27bSMichael Roth 66909d6bc27bSMichael Roth if test "$QEMU_GA_DISTRO" = ""; then 66919d6bc27bSMichael Roth QEMU_GA_DISTRO=Linux 66929d6bc27bSMichael Roth fi 66939d6bc27bSMichael Roth 66949d6bc27bSMichael Roth if test "$QEMU_GA_VERSION" = ""; then 669589138857SStefan Weil QEMU_GA_VERSION=$(cat $source_path/VERSION) 66969d6bc27bSMichael Roth fi 66979d6bc27bSMichael Roth 669889138857SStefan Weil QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin" 66999d6bc27bSMichael Roth 67009d6bc27bSMichael Roth case "$cpu" in 67019d6bc27bSMichael Roth x86_64) 67029d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 67039d6bc27bSMichael Roth ;; 67049d6bc27bSMichael Roth i386) 67059d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-D Arch=32" 67069d6bc27bSMichael Roth ;; 67079d6bc27bSMichael Roth *) 67089d6bc27bSMichael Roth error_exit "CPU $cpu not supported for building installation package" 67099d6bc27bSMichael Roth ;; 67109d6bc27bSMichael Roth esac 67119d6bc27bSMichael Rothfi 67129d6bc27bSMichael Roth 6713ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 6714ca35f780SPaolo Bonziniroms= 6715e633a5c6SEric Blakeif { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \ 6716e633a5c6SEric Blake test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \ 6717e633a5c6SEric Blake test "$softmmu" = yes ; then 6718e57218b6SPeter Maydell # Different host OS linkers have different ideas about the name of the ELF 6719c65d5e4eSBrad Smith # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd 6720c65d5e4eSBrad Smith # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe. 6721c65d5e4eSBrad Smith for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do 6722e57218b6SPeter Maydell if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then 6723e57218b6SPeter Maydell ld_i386_emulation="$emu" 6724ca35f780SPaolo Bonzini roms="optionrom" 6725e57218b6SPeter Maydell break 6726e57218b6SPeter Maydell fi 6727e57218b6SPeter Maydell done 6728ca35f780SPaolo Bonzinifi 6729ca35f780SPaolo Bonzini 67302e33c3f8SThomas Huth# Only build s390-ccw bios if we're on s390x and the compiler has -march=z900 67319933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 67322e33c3f8SThomas Huth write_c_skeleton 67332e33c3f8SThomas Huth if compile_prog "-march=z900" ""; then 67349933c305SChristian Borntraeger roms="$roms s390-ccw" 67351ef6bfc2SPhilippe Mathieu-Daudé # SLOF is required for building the s390-ccw firmware on s390x, 67361ef6bfc2SPhilippe Mathieu-Daudé # since it is using the libnet code from SLOF for network booting. 67371ef6bfc2SPhilippe Mathieu-Daudé if test -e "${source_path}/.git" ; then 67381ef6bfc2SPhilippe Mathieu-Daudé git_submodules="${git_submodules} roms/SLOF" 67391ef6bfc2SPhilippe Mathieu-Daudé fi 67409933c305SChristian Borntraeger fi 67412e33c3f8SThomas Huthfi 67429933c305SChristian Borntraeger 674311cde1c8SBruno Dominguez# Check that the C++ compiler exists and works with the C compiler. 674411cde1c8SBruno 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. 674511cde1c8SBruno Dominguezif has $cxx; then 674611cde1c8SBruno Dominguez cat > $TMPC <<EOF 674711cde1c8SBruno Dominguezint c_function(void); 674811cde1c8SBruno Dominguezint main(void) { return c_function(); } 674911cde1c8SBruno DominguezEOF 675011cde1c8SBruno Dominguez 675111cde1c8SBruno Dominguez compile_object 675211cde1c8SBruno Dominguez 675311cde1c8SBruno Dominguez cat > $TMPCXX <<EOF 675411cde1c8SBruno Dominguezextern "C" { 675511cde1c8SBruno Dominguez int c_function(void); 675611cde1c8SBruno Dominguez} 675711cde1c8SBruno Dominguezint c_function(void) { return 42; } 675811cde1c8SBruno DominguezEOF 675911cde1c8SBruno Dominguez 676011cde1c8SBruno Dominguez update_cxxflags 676111cde1c8SBruno Dominguez 6762db5adeaaSPaolo Bonzini if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then 676311cde1c8SBruno Dominguez # C++ compiler $cxx works ok with C compiler $cc 676411cde1c8SBruno Dominguez : 676511cde1c8SBruno Dominguez else 676611cde1c8SBruno Dominguez echo "C++ compiler $cxx does not work with C compiler $cc" 676711cde1c8SBruno Dominguez echo "Disabling C++ specific optional code" 676811cde1c8SBruno Dominguez cxx= 676911cde1c8SBruno Dominguez fi 677011cde1c8SBruno Dominguezelse 677111cde1c8SBruno Dominguez echo "No C++ compiler available; disabling C++ specific optional code" 677211cde1c8SBruno Dominguez cxx= 677311cde1c8SBruno Dominguezfi 677411cde1c8SBruno Dominguez 677502d34f62SCole Robinsonecho_version() { 677602d34f62SCole Robinson if test "$1" = "yes" ; then 677702d34f62SCole Robinson echo "($2)" 677802d34f62SCole Robinson fi 677902d34f62SCole Robinson} 678002d34f62SCole Robinson 678150e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 678250e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 67838a99e9a3SPhilippe Mathieu-DaudéQEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS" 678450e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 67855ca9388aSGerd Hoffmann 67867d13299dSbellardecho "Install prefix $prefix" 678789138857SStefan Weilecho "BIOS directory $(eval echo $qemu_datadir)" 67883d5eecabSGerd Hoffmannecho "firmware path $(eval echo $firmwarepath)" 678989138857SStefan Weilecho "binary directory $(eval echo $bindir)" 679089138857SStefan Weilecho "library directory $(eval echo $libdir)" 679189138857SStefan Weilecho "module directory $(eval echo $qemu_moddir)" 679289138857SStefan Weilecho "libexec directory $(eval echo $libexecdir)" 679389138857SStefan Weilecho "include directory $(eval echo $includedir)" 679489138857SStefan Weilecho "config directory $(eval echo $sysconfdir)" 679511d9f695Sbellardif test "$mingw32" = "no" ; then 679689138857SStefan Weilecho "local state directory $(eval echo $local_statedir)" 679789138857SStefan Weilecho "Manual directory $(eval echo $mandir)" 679843ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 67995a699bbbSLaszlo Ersekelse 68005a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 6801d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 680211d9f695Sbellardfi 6803bc4486fbSPaolo Bonziniecho "Build directory $(pwd)" 68045a67135aSbellardecho "Source path $source_path" 6805cc84d63aSDaniel P. Berrangeecho "GIT binary $git" 6806aef45d51SDaniel P. Berrangeecho "GIT submodules $git_submodules" 68077d13299dSbellardecho "C compiler $cc" 680883469015Sbellardecho "Host C compiler $host_cc" 680983f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 68103c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 681145d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 68120c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 6813a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 68148a99e9a3SPhilippe Mathieu-Daudéecho "QEMU_LDFLAGS $QEMU_LDFLAGS" 68157d13299dSbellardecho "make $make" 68166a882643Spbrookecho "install $install" 6817755ee70fSCleber Rosaecho "python $python ($python_version)" 68182eb054c2SPeter Maydellif test "$docs" != "no"; then 68192eb054c2SPeter Maydell echo "sphinx-build $sphinx_build" 68202eb054c2SPeter Maydellfi 682139d87c8cSAlex Bennéeecho "genisoimage $genisoimage" 6822675b9b53SMarc-André Lureauecho "slirp support $slirp $(echo_version $slirp $slirp_version)" 6823675b9b53SMarc-André Lureauif test "$slirp" != "no" ; then 6824e2d8830eSBrad echo "smbd $smbd" 6825e2d8830eSBradfi 682617969268SFam Zhengecho "module support $modules" 6827bd83c861SChristian Ehrhardtecho "alt path mod load $module_upgrades" 6828a98fd896Sbellardecho "host CPU $cpu" 6829de83cd02Sbellardecho "host big endian $bigendian" 683097a847bcSbellardecho "target list $target_list" 68317d13299dSbellardecho "gprof enabled $gprof" 683203b4fe7dSaliguoriecho "sparse enabled $sparse" 68331625af87Saliguoriecho "strip binaries $strip_opt" 683405c2a3e7Sbellardecho "profiler $profiler" 683543ce4dfeSbellardecho "static build $static" 6836*1e4f6065SDaniele Buonoecho "safe stack $safe_stack" 68375b0753e0Sbellardif test "$darwin" = "yes" ; then 68385b0753e0Sbellard echo "Cocoa support $cocoa" 68395b0753e0Sbellardfi 684089138857SStefan Weilecho "SDL support $sdl $(echo_version $sdl $sdlversion)" 6841a442fe2fSDaniel P. Berrangéecho "SDL image support $sdl_image" 684289138857SStefan Weilecho "GTK support $gtk $(echo_version $gtk $gtk_version)" 6843925a0400SGerd Hoffmannecho "GTK GL support $gtk_gl" 684489138857SStefan Weilecho "VTE support $vte $(echo_version $vte $vteversion)" 6845a1c5e949SDaniel P. Berrangeecho "TLS priority $tls_priority" 6846ddbb0d09SDaniel P. Berrangeecho "GNUTLS support $gnutls" 684791bfcdb0SDaniel P. Berrangeecho "libgcrypt $gcrypt" 6848e0576942SDaniel P. Berrangéif test "$gcrypt" = "yes" 6849e0576942SDaniel P. Berrangéthen 6850e0576942SDaniel P. Berrangé echo " hmac $gcrypt_hmac" 6851e0576942SDaniel P. Berrangé echo " XTS $gcrypt_xts" 6852e0576942SDaniel P. Berrangéfi 685389138857SStefan Weilecho "nettle $nettle $(echo_version $nettle $nettle_version)" 6854dc2207afSDaniel P. Berrangéif test "$nettle" = "yes" 6855dc2207afSDaniel P. Berrangéthen 6856dc2207afSDaniel P. Berrangé echo " XTS $nettle_xts" 6857dc2207afSDaniel P. Berrangéfi 68589a2fd434SDaniel P. Berrangeecho "libtasn1 $tasn1" 68598953caf3SDaniel P. Berrangeecho "PAM $auth_pam" 6860e08bb301SSamuel Thibaultecho "iconv support $iconv" 68614d3b6f6eSbalrogecho "curses support $curses" 686247479c55SMarc-André Lureauecho "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)" 6863769ce76dSAlexander Grafecho "curl support $curl" 686467b915a5Sbellardecho "mingw32 support $mingw32" 68650c58ac1cSmalcecho "Audio drivers $audio_drv_list" 6866b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 6867b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 6868983eef5aSMeador Ingeecho "VirtFS support $virtfs" 6869fe8fc5aeSPaolo Bonziniecho "Multipath support $mpath" 6870821601eaSJes Sorensenecho "VNC support $vnc" 6871821601eaSJes Sorensenif test "$vnc" = "yes" ; then 68722f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 68732f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 6874efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 6875821601eaSJes Sorensenfi 6876e37630caSaliguoriecho "xen support $xen" 68773996e85cSPaul Durrantif test "$xen" = "yes" ; then 68783996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 68793996e85cSPaul Durrantfi 68802e4d9fb1Saurel32echo "brlapi support $brlapi" 6881a25dba17SJuan Quintelaecho "Documentation $docs" 688240d6444eSAvi Kivityecho "PIE $pie" 68838a16d273Sthsecho "vde support $vde" 688458952137SVincenzo Maffioneecho "netmap support $netmap" 68855c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 6886c10dd856SAarushi Mehtaecho "Linux io_uring support $linux_io_uring" 6887758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 688877755340Sthsecho "Install blobs $blobs" 6889b31a0277SJuan Quintelaecho "KVM support $kvm" 6890b0cb0a66SVincent Palatinecho "HAX support $hax" 6891c97d6d2cSSergio Andres Gomez Del Realecho "HVF support $hvf" 6892d661d9a4SJustin Terry (VM)echo "WHPX support $whpx" 6893b3f6ea7eSPaolo Bonziniecho "TCG support $tcg" 6894b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes" ; then 6895b3f6ea7eSPaolo Bonzini echo "TCG debug enabled $debug_tcg" 68969195b2c2SStefan Weil echo "TCG interpreter $tcg_interpreter" 6897b3f6ea7eSPaolo Bonzinifi 68985a22ab71SYang Zhongecho "malloc trim support $malloc_trim" 6899b3f6ea7eSPaolo Bonziniecho "RDMA support $rdma" 690021ab34c9SMarcel Apfelbaumecho "PVRDMA support $pvrdma" 6901f652e6afSaurel32echo "fdt support $fdt" 6902a40161cbSPaolo Bonziniecho "membarrier $membarrier" 6903ceb42de8Saliguoriecho "preadv support $preadv" 69045f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 6905e78815a5SAndreas Färberecho "madvise $madvise" 6906e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 69079bc5a719SAndreas Gustafssonecho "posix_memalign $posix_memalign" 690847e98658SCorey Bryantecho "libcap-ng support $cap_ng" 6909d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 6910042cea27SGongleiecho "vhost-crypto support $vhost_crypto" 69115e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 6912fc0b9b0eSStefan Hajnocziecho "vhost-vsock support $vhost_vsock" 6913e6a74868SMarc-André Lureauecho "vhost-user support $vhost_user" 691498fc1adaSDr. David Alan Gilbertecho "vhost-user-fs support $vhost_user_fs" 69155b808275SLluís Vilanovaecho "Trace backends $trace_backends" 6916713572a7SMarc-André Lureauif have_backend "simple"; then 69179410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 6918e00e36fbSStefan Weilfi 691989138857SStefan Weilecho "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)" 6920f27aaf4bSChristian Brunnerecho "rbd support $rbd" 6921dce512deSChristoph Hellwigecho "xfsctl support $xfs" 69227b02f544SMarc-André Lureauecho "smartcard support $smartcard" 69232b2325ffSGerd Hoffmannecho "libusb $libusb" 692469354a83SHans de Goedeecho "usb net redir $usb_redir" 6925da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 6926014cb152SGerd Hoffmannecho "OpenGL dmabufs $opengl_dmabuf" 6927c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 69286542aa9cSPeter Lievenecho "libnfs support $libnfs" 6929d138cee9SMichael Rothecho "build guest agent $guest_agent" 6930d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 693150cbebb9SMichael Rothecho "QGA w32 disk info $guest_agent_ntddscsi" 69324c875d89SMichael Rothecho "QGA MSI support $guest_agent_msi" 6933f794573eSEduardo Otuboecho "seccomp support $seccomp" 69347c2acc70SPeter Maydellecho "coroutine backend $coroutine" 693570c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 69367d992e4dSPeter Lievenecho "debug stack usage $debug_stack_usage" 6937ba59fb77SPaolo Bonziniecho "mutex debugging $debug_mutex" 6938f0d92b56SLongpeng(Mike)echo "crypto afalg $crypto_afalg" 6939eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 69401d728c39SBlue Swirlecho "gcov $gcov_tool" 69411d728c39SBlue Swirlecho "gcov enabled $gcov" 6942ab214c29SStefan Bergerecho "TPM support $tpm" 6943b10d49d7SPino Toscanoecho "libssh support $libssh" 69443556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 6945ed1701c6SDr. David Alan Gilbertecho "Live block migration $live_block_migration" 6946607dacd0Sqiaonuohanecho "lzo support $lzo" 6947607dacd0Sqiaonuohanecho "snappy support $snappy" 69486b383c08SPeter Wuecho "bzip2 support $bzip2" 694983bc1f97SJulio Faraccoecho "lzfse support $lzfse" 69503a678481SJuan Quintelaecho "zstd support $zstd" 6951a99d57bbSWanlong Gaoecho "NUMA host support $numa" 6952ed279a06SKlim Kireevecho "libxml2 $libxml2" 69532847b469SFam Zhengecho "tcmalloc support $tcmalloc" 69547b01cb97SAlexandre Derumierecho "jemalloc support $jemalloc" 695599f2dbd3SLiang Liecho "avx2 optimization $avx2_opt" 69566b8cd447SRobert Hooecho "avx512f optimization $avx512f_opt" 6957a6b1d4c0SChanglong Xieecho "replication support $replication" 6958da92c3ffSAshish Mittalecho "VxHS block device $vxhs" 69592f740136SJeff Codyecho "bochs support $bochs" 69602f740136SJeff Codyecho "cloop support $cloop" 69612f740136SJeff Codyecho "dmg support $dmg" 69622f740136SJeff Codyecho "qcow v1 support $qcow1" 69632f740136SJeff Codyecho "vdi support $vdi" 69642f740136SJeff Codyecho "vvfat support $vvfat" 69652f740136SJeff Codyecho "qed support $qed" 69662f740136SJeff Codyecho "parallels support $parallels" 69672f740136SJeff Codyecho "sheepdog support $sheepdog" 69688ca80760SRichard Hendersonecho "capstone $capstone" 696917824406SJunyan Heecho "libpmem support $libpmem" 69703efac6ebSTomáš Golembiovskýecho "libudev $libudev" 6971f3494749SPaolo Bonziniecho "default devices $default_devices" 697240e8c6f4SAlex Bennéeecho "plugin support $plugins" 6973adc28027SAlexander Bulekovecho "fuzzing support $fuzzing" 6974f48e590aSAlex Bennéeecho "gdb $gdb_bin" 6975b767d257SMarek Marczykowski-Góreckiecho "rng-none $rng_none" 697654e7aac0SAlexey Krasikovecho "Linux keyring $secret_keyring" 697767b915a5Sbellard 6978898be3e0SPeter Maydellif test "$supported_cpu" = "no"; then 6979898be3e0SPeter Maydell echo 6980898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!" 6981898be3e0SPeter Maydell echo 6982898be3e0SPeter Maydell echo "CPU host architecture $cpu support is not currently maintained." 6983898be3e0SPeter Maydell echo "The QEMU project intends to remove support for this host CPU in" 6984898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 6985898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 6986898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 6987898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 6988898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 6989898be3e0SPeter Maydellfi 6990898be3e0SPeter Maydell 6991898be3e0SPeter Maydellif test "$supported_os" = "no"; then 6992898be3e0SPeter Maydell echo 6993898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!" 6994898be3e0SPeter Maydell echo 6995c50126aaSPeter Maydell echo "Host OS $targetos support is not currently maintained." 6996c50126aaSPeter Maydell echo "The QEMU project intends to remove support for this host OS in" 6997898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 6998898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 6999898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 7000898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 7001898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 7002898be3e0SPeter Maydellfi 7003898be3e0SPeter Maydell 700498ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 700597a847bcSbellard 7006dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 7007dbd99ae3SStefan Weil 700898ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 700998ec69acSJuan Quintelaecho >> $config_host_mak 701098ec69acSJuan Quintela 7011e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 701299d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 701399d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 70143aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 70158bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 70160f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 701799d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 701899d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 701922d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 70209afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 70213d5eecabSGerd Hoffmannecho "qemu_firmwarepath=$firmwarepath" >> $config_host_mak 70229afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 7023e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 70245a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 7025785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 70265a699bbbSLaszlo Ersekfi 7027f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 7028834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 7029a8260d38SDaniel P. Berrangéecho "qemu_icondir=$qemu_icondir" >> $config_host_mak 703067ea9546SDaniel P. Berrangéecho "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak 703102f9135bSDaniel P. Berrangéecho "libs_cpu=$libs_cpu" >> $config_host_mak 7032f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 7033cc84d63aSDaniel P. Berrangeecho "GIT=$git" >> $config_host_mak 7034aef45d51SDaniel P. Berrangeecho "GIT_SUBMODULES=$git_submodules" >> $config_host_mak 7035f62bbee5SDaniel P. Berrangeecho "GIT_UPDATE=$git_update" >> $config_host_mak 7036804edf29SJuan Quintela 703798ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 7038727e5283SPaolo Bonzini 7039f3494749SPaolo Bonziniif test "$default_devices" = "yes" ; then 7040f3494749SPaolo Bonzini echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak 7041f3494749SPaolo Bonzinielse 7042f3494749SPaolo Bonzini echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak 7043f3494749SPaolo Bonzinifi 7044f8393946Saurel32if test "$debug_tcg" = "yes" ; then 70452358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 7046f8393946Saurel32fi 70471625af87Saliguoriif test "$strip_opt" = "yes" ; then 704852ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 70491625af87Saliguorifi 70507d13299dSbellardif test "$bigendian" = "yes" ; then 7051e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 705297a847bcSbellardfi 705367b915a5Sbellardif test "$mingw32" = "yes" ; then 705498ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 705589138857SStefan Weil rc_version=$(cat $source_path/VERSION) 70569fe6de94SBlue Swirl version_major=${rc_version%%.*} 70579fe6de94SBlue Swirl rc_version=${rc_version#*.} 70589fe6de94SBlue Swirl version_minor=${rc_version%%.*} 70599fe6de94SBlue Swirl rc_version=${rc_version#*.} 70609fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 70619fe6de94SBlue Swirl version_micro=0 70629fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 70639fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 7064d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 7065d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 7066f33ca81fSMichael Roth echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 7067d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 7068d9840e25STomoki Sekiyama fi 706950cbebb9SMichael Roth if test "$guest_agent_ntddscsi" = "yes" ; then 707076dc75caSTomáš Golembiovský echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak 707150cbebb9SMichael Roth fi 70721a34904eSMichael Roth if test "$guest_agent_msi" = "yes"; then 70739dacf32dSYossi Hindin echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 70749dacf32dSYossi Hindin echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 70759dacf32dSYossi Hindin echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 70769dacf32dSYossi Hindin echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 70779dacf32dSYossi Hindin echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 70789dacf32dSYossi Hindin echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 70799dacf32dSYossi Hindin echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 70809dacf32dSYossi Hindin fi 7081210fa556Spbrookelse 708235f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 7083210fa556Spbrookfi 7084128ab2ffSblueswir1 7085dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 7086dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 7087dffcb71cSMark McLoughlinfi 7088dffcb71cSMark McLoughlin 708983fb7adfSbellardif test "$darwin" = "yes" ; then 709098ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 709183fb7adfSbellardfi 7092b29fe3edSmalc 7093ec530c81Sbellardif test "$solaris" = "yes" ; then 709498ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 7095ec530c81Sbellardfi 7096179cf400SAndreas Färberif test "$haiku" = "yes" ; then 7097179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 7098179cf400SAndreas Färberfi 709997a847bcSbellardif test "$static" = "yes" ; then 710098ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 710197a847bcSbellardfi 71021ba16968SStefan Weilif test "$profiler" = "yes" ; then 71032358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 710405c2a3e7Sbellardfi 7105c932ce31SPaolo Bonziniif test "$want_tools" = "yes" ; then 7106c932ce31SPaolo Bonzini echo "CONFIG_TOOLS=y" >> $config_host_mak 7107c932ce31SPaolo Bonzinifi 7108675b9b53SMarc-André Lureauif test "$slirp" != "no"; then 710998ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 7110e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 7111675b9b53SMarc-André Lureau echo "SLIRP_CFLAGS=$slirp_cflags" >> $config_host_mak 7112675b9b53SMarc-André Lureau echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak 7113675b9b53SMarc-André Lureaufi 71147c57bdd8SMarc-André Lureauif [ "$slirp" = "git" -o "$slirp" = "internal" ]; then 71153b8593eeSMarkus Armbruster echo "config-host.h: slirp/all" >> $config_host_mak 7116c20709aaSbellardfi 71178a16d273Sthsif test "$vde" = "yes" ; then 711898ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 7119e2ad6f16SFam Zheng echo "VDE_LIBS=$vde_libs" >> $config_host_mak 71208a16d273Sthsfi 712158952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 712258952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 712358952137SVincenzo Maffionefi 7124015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 7125015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 7126015a33bdSGongleifi 71274cc600d2SPaolo Bonziniif test "$gprof" = "yes" ; then 71284cc600d2SPaolo Bonzini echo "CONFIG_GPROF=y" >> $config_host_mak 71294cc600d2SPaolo Bonzinifi 713047e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 7131a358bca2SPaolo Bonzini echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak 713247e98658SCorey Bryantfi 71332358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 71340c58ac1cSmalcfor drv in $audio_drv_list; do 71351ef1ec2aSGerd Hoffmann def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]') 7136ce3dc033SGerd Hoffmann case "$drv" in 7137051c7d5cSGerd Hoffmann alsa | oss | pa | sdl) 7138ce3dc033SGerd Hoffmann echo "$def=m" >> $config_host_mak ;; 7139ce3dc033SGerd Hoffmann *) 7140ce3dc033SGerd Hoffmann echo "$def=y" >> $config_host_mak ;; 7141ce3dc033SGerd Hoffmann esac 71420c58ac1cSmalcdone 7143b1149911SFam Zhengecho "ALSA_LIBS=$alsa_libs" >> $config_host_mak 7144b1149911SFam Zhengecho "PULSE_LIBS=$pulse_libs" >> $config_host_mak 7145b1149911SFam Zhengecho "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak 7146b1149911SFam Zhengecho "DSOUND_LIBS=$dsound_libs" >> $config_host_mak 7147b1149911SFam Zhengecho "OSS_LIBS=$oss_libs" >> $config_host_mak 71482e445703SGeoffrey McRaeecho "JACK_LIBS=$jack_libs" >> $config_host_mak 7149d5631638Smalcif test "$audio_win_int" = "yes" ; then 7150d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 7151d5631638Smalcfi 7152b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 7153b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 7154821601eaSJes Sorensenif test "$vnc" = "yes" ; then 7155821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 7156821601eaSJes Sorensenfi 71572f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 715898ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 71592f9606b3Saliguorifi 7160821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 71612f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 71622f6f5c7aSCorentin Charyfi 7163821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 7164efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 7165efe556adSCorentin Charyfi 71666a021536SGerd Hoffmannif test "$xkbcommon" = "yes" ; then 71676a021536SGerd Hoffmann echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak 71686a021536SGerd Hoffmann echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak 71696a021536SGerd Hoffmannfi 7170dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 7171dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 7172dce512deSChristoph Hellwigfi 717389138857SStefan Weilqemu_version=$(head $source_path/VERSION) 717498ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 71752358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 717698ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 71772b1f35b9SAlex Bennéeecho "TARGET_DIRS=$target_list" >> $config_host_mak 7178a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 717998ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 7180cc8ae6deSpbrookfi 718117969268SFam Zhengif test "$modules" = "yes"; then 7182e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 7183e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 718489138857SStefan Weil echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak 718517969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 718617969268SFam Zhengfi 7187bd83c861SChristian Ehrhardtif test "$module_upgrades" = "yes"; then 7188bd83c861SChristian Ehrhardt echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak 7189bd83c861SChristian Ehrhardtfi 7190e633a5c6SEric Blakeif test "$have_x11" = "yes" && test "$need_x11" = "yes"; then 71918781595bSGerd Hoffmann echo "CONFIG_X11=y" >> $config_host_mak 71928781595bSGerd Hoffmann echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak 71938781595bSGerd Hoffmann echo "X11_LIBS=$x11_libs" >> $config_host_mak 71948781595bSGerd Hoffmannfi 71951ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 719696400a14SGerd Hoffmann echo "CONFIG_SDL=m" >> $config_host_mak 71978ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 71988ecc89f6SFam Zheng echo "SDL_LIBS=$sdl_libs" >> $config_host_mak 7199a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes" ; then 7200a442fe2fSDaniel P. Berrangé echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak 7201a442fe2fSDaniel P. Berrangé fi 720249ecc3faSbellardfi 720349ecc3faSbellardif test "$cocoa" = "yes" ; then 720498ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 720549ecc3faSbellardfi 7206e08bb301SSamuel Thibaultif test "$iconv" = "yes" ; then 7207e08bb301SSamuel Thibault echo "CONFIG_ICONV=y" >> $config_host_mak 7208e08bb301SSamuel Thibault echo "ICONV_CFLAGS=$iconv_cflags" >> $config_host_mak 7209e08bb301SSamuel Thibault echo "ICONV_LIBS=$iconv_lib" >> $config_host_mak 7210e08bb301SSamuel Thibaultfi 72114d3b6f6eSbalrogif test "$curses" = "yes" ; then 72122373f7d5SGerd Hoffmann echo "CONFIG_CURSES=m" >> $config_host_mak 72132373f7d5SGerd Hoffmann echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak 72142373f7d5SGerd Hoffmann echo "CURSES_LIBS=$curses_lib" >> $config_host_mak 7215ab4e5602SJan Kiszkafi 7216099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 72172358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 7218099d6b0fSRiku Voipiofi 721940ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 722040ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 722140ff6d7eSKevin Wolffi 72223ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 72232358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 72243ce34dfbSvibisreenivasanfi 7225c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 7226c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 7227c2882b96SRiku Voipiofi 7228751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then 7229751bcc39SMarc-André Lureau echo "CONFIG_MEMFD=y" >> $config_host_mak 7230751bcc39SMarc-André Lureaufi 7231955727d2SCortland Tölvaif test "$have_usbfs" = "yes" ; then 7232955727d2SCortland Tölva echo "CONFIG_USBFS=y" >> $config_host_mak 7233955727d2SCortland Tölvafi 7234d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 7235d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 7236d0927938SUlrich Hechtfi 72373d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 72383d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 72393d4fa43eSKusanagi Kouichifi 7240b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 7241b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 7242b953f075SDenis V. Lunevfi 7243ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 7244ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 7245ed911435SKevin Wolffi 7246c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 7247c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 7248c727f47dSPeter Maydellfi 7249dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 7250dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 7251dace20dcSPeter Maydellfi 7252d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 7253d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 7254d0927938SUlrich Hechtfi 72554e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 72564e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 72574e0c6529SAlex Blighfi 7258cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 7259cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 7260cd758dd0SAlex Blighfi 72613b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 72623b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 72633b6edd16SPeter Maydellfi 72643b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 72653b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 72663b6edd16SPeter Maydellfi 7267a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 7268a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 7269a8fd1abaSPeter Maydellfi 727051834341SRiku Voipioif test "$timerfd" = "yes" ; then 727151834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 727251834341SRiku Voipiofi 72739af5c906SRiku Voipioif test "$setns" = "yes" ; then 72749af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 72759af5c906SRiku Voipiofi 727638860a03SAleksandar Markovicif test "$clock_adjtime" = "yes" ; then 727738860a03SAleksandar Markovic echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak 727838860a03SAleksandar Markovicfi 72795a03cd00SAleksandar Markovicif test "$syncfs" = "yes" ; then 72805a03cd00SAleksandar Markovic echo "CONFIG_SYNCFS=y" >> $config_host_mak 72815a03cd00SAleksandar Markovicfi 7282db37dd89SAleksandar Markovicif test "$kcov" = "yes" ; then 7283db37dd89SAleksandar Markovic echo "CONFIG_KCOV=y" >> $config_host_mak 7284db37dd89SAleksandar Markovicfi 72853b3f24adSaurel32if test "$inotify" = "yes" ; then 72862358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 72873b3f24adSaurel32fi 7288c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 7289c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 7290c05c7a73SRiku Voipiofi 7291401bc051SPeter Maydellif test "$sem_timedwait" = "yes" ; then 7292401bc051SPeter Maydell echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak 7293401bc051SPeter Maydellfi 72945c99fa37SKeno Fischerif test "$strchrnul" = "yes" ; then 72955c99fa37SKeno Fischer echo "HAVE_STRCHRNUL=y" >> $config_host_mak 72965c99fa37SKeno Fischerfi 72978a792b03SJiufei Xueif test "$st_atim" = "yes" ; then 72988a792b03SJiufei Xue echo "HAVE_STRUCT_STAT_ST_ATIM=y" >> $config_host_mak 72998a792b03SJiufei Xuefi 73006ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 73016ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 73026ae9a1f4SJuan Quintelafi 73036ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 73046ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 73056ae9a1f4SJuan Quintelafi 7306769ce76dSAlexander Grafif test "$curl" = "yes" ; then 7307d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 7308b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 73096ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 7310769ce76dSAlexander Graffi 73112e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 731298ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 73138eca2889SFam Zheng echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak 73142e4d9fb1Saurel32fi 7315a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 7316e0fb129cSGerd Hoffmann echo "CONFIG_GTK=m" >> $config_host_mak 7317a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 7318014cb152SGerd Hoffmann echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 7319925a0400SGerd Hoffmann if test "$gtk_gl" = "yes" ; then 7320925a0400SGerd Hoffmann echo "CONFIG_GTK_GL=y" >> $config_host_mak 7321925a0400SGerd Hoffmann fi 7322bbbf9bfbSStefan Weilfi 7323f876b765SMarc-André Lureauif test "$gio" = "yes" ; then 7324f876b765SMarc-André Lureau echo "CONFIG_GIO=y" >> $config_host_mak 7325f876b765SMarc-André Lureau echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak 7326f876b765SMarc-André Lureau echo "GIO_LIBS=$gio_libs" >> $config_host_mak 732725a97a56SMarc-André Lureau echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak 7328f876b765SMarc-André Lureaufi 7329a1c5e949SDaniel P. Berrangeecho "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak 7330ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then 7331ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS=y" >> $config_host_mak 7332ddbb0d09SDaniel P. Berrangefi 733391bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then 733491bfcdb0SDaniel P. Berrange echo "CONFIG_GCRYPT=y" >> $config_host_mak 73351f923c70SLongpeng(Mike) if test "$gcrypt_hmac" = "yes" ; then 73361f923c70SLongpeng(Mike) echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak 73371f923c70SLongpeng(Mike) fi 733862893b67SDaniel P. Berrangefi 733991bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then 734091bfcdb0SDaniel P. Berrange echo "CONFIG_NETTLE=y" >> $config_host_mak 7341becaeb72SRadim Krčmář echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 7342ed754746SDaniel P. Berrangefi 7343e0576942SDaniel P. Berrangéif test "$qemu_private_xts" = "yes" ; then 7344e0576942SDaniel P. Berrangé echo "CONFIG_QEMU_PRIVATE_XTS=y" >> $config_host_mak 7345e0576942SDaniel P. Berrangéfi 73469a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then 73479a2fd434SDaniel P. Berrange echo "CONFIG_TASN1=y" >> $config_host_mak 73489a2fd434SDaniel P. Berrangefi 73498953caf3SDaniel P. Berrangeif test "$auth_pam" = "yes" ; then 73508953caf3SDaniel P. Berrange echo "CONFIG_AUTH_PAM=y" >> $config_host_mak 73518953caf3SDaniel P. Berrangefi 7352559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then 7353559607eaSDaniel P. Berrange echo "HAVE_IFADDRS_H=y" >> $config_host_mak 7354559607eaSDaniel P. Berrangefi 73556b39b063SEric Blakeif test "$have_broken_size_max" = "yes" ; then 73566b39b063SEric Blake echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak 73576b39b063SEric Blakefi 7358277abf15SJan Vesely 7359277abf15SJan Vesely# Work around a system header bug with some kernel/XFS header 7360277abf15SJan Vesely# versions where they both try to define 'struct fsxattr': 7361277abf15SJan Vesely# xfs headers will not try to redefine structs from linux headers 7362277abf15SJan Vesely# if this macro is set. 7363277abf15SJan Veselyif test "$have_fsxattr" = "yes" ; then 7364277abf15SJan Vesely echo "HAVE_FSXATTR=y" >> $config_host_mak 7365277abf15SJan Veselyfi 73661efad060SFam Zhengif test "$have_copy_file_range" = "yes" ; then 73671efad060SFam Zheng echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak 73681efad060SFam Zhengfi 7369bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 7370bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 7371a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 7372e0fb129cSGerd Hoffmann echo "VTE_LIBS=$vte_libs" >> $config_host_mak 7373a4ccabcfSAnthony Liguorifi 73749d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then 73759d9e1521SGerd Hoffmann echo "CONFIG_VIRGL=y" >> $config_host_mak 73769d9e1521SGerd Hoffmann echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 73779d9e1521SGerd Hoffmann echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 73789d9e1521SGerd Hoffmannfi 7379e37630caSaliguoriif test "$xen" = "yes" ; then 73806dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 7381d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 7382e37630caSaliguorifi 73835c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 73845c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 73855c6c3a6cSChristoph Hellwigfi 7386c10dd856SAarushi Mehtaif test "$linux_io_uring" = "yes" ; then 7387c10dd856SAarushi Mehta echo "CONFIG_LINUX_IO_URING=y" >> $config_host_mak 7388c10dd856SAarushi Mehta echo "LINUX_IO_URING_CFLAGS=$linux_io_uring_cflags" >> $config_host_mak 7389c10dd856SAarushi Mehta echo "LINUX_IO_URING_LIBS=$linux_io_uring_libs" >> $config_host_mak 7390c10dd856SAarushi Mehtafi 7391758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 7392758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 7393758e8e38SVenkateswararao Jujjuri (JV)fi 73944f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 73954f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 73964f26f2b6SAvi Kivityfi 7397983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 7398758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 7399758e8e38SVenkateswararao Jujjuri (JV)fi 7400fe8fc5aeSPaolo Bonziniif test "$mpath" = "yes" ; then 7401fe8fc5aeSPaolo Bonzini echo "CONFIG_MPATH=y" >> $config_host_mak 74021b0578f5SMurilo Opsfelder Araujo if test "$mpathpersist_new_api" = "yes"; then 74031b0578f5SMurilo Opsfelder Araujo echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak 74041b0578f5SMurilo Opsfelder Araujo fi 7405fe8fc5aeSPaolo Bonzinifi 74065e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 74075e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 74085e9be92dSNicholas Bellingerfi 7409af3bba76SPaolo Bonziniif test "$vhost_net" = "yes" ; then 7410af3bba76SPaolo Bonzini echo "CONFIG_VHOST_NET=y" >> $config_host_mak 7411af3bba76SPaolo Bonzinifi 7412af3bba76SPaolo Bonziniif test "$vhost_net_user" = "yes" ; then 741356f41de7SPaolo Bonzini echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak 741403ce5744SNikolay Nikolaevfi 7415042cea27SGongleiif test "$vhost_crypto" = "yes" ; then 7416042cea27SGonglei echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak 7417042cea27SGongleifi 7418fc0b9b0eSStefan Hajnocziif test "$vhost_vsock" = "yes" ; then 7419fc0b9b0eSStefan Hajnoczi echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak 74205fe97d88SStefano Garzarella if test "$vhost_user" = "yes" ; then 74215fe97d88SStefano Garzarella echo "CONFIG_VHOST_USER_VSOCK=y" >> $config_host_mak 74225fe97d88SStefano Garzarella fi 7423fc0b9b0eSStefan Hajnoczifi 7424299e6f19SPaolo Bonziniif test "$vhost_kernel" = "yes" ; then 7425299e6f19SPaolo Bonzini echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak 7426299e6f19SPaolo Bonzinifi 7427e6a74868SMarc-André Lureauif test "$vhost_user" = "yes" ; then 7428e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER=y" >> $config_host_mak 7429e6a74868SMarc-André Lureaufi 743098fc1adaSDr. David Alan Gilbertif test "$vhost_user_fs" = "yes" ; then 743198fc1adaSDr. David Alan Gilbert echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak 743298fc1adaSDr. David Alan Gilbertfi 743377755340Sthsif test "$blobs" = "yes" ; then 743498ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 743577755340Sthsfi 7436bf9298b9Saliguoriif test "$iovec" = "yes" ; then 74372358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 7438bf9298b9Saliguorifi 7439ceb42de8Saliguoriif test "$preadv" = "yes" ; then 74402358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 7441ceb42de8Saliguorifi 7442e3971d61SPhilippe Mathieu-Daudéif test "$fdt" != "no" ; then 74433f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 7444f652e6afSaurel32fi 7445a40161cbSPaolo Bonziniif test "$membarrier" = "yes" ; then 7446a40161cbSPaolo Bonzini echo "CONFIG_MEMBARRIER=y" >> $config_host_mak 7447a40161cbSPaolo Bonzinifi 7448dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 7449dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 7450dcc38d1cSMarcelo Tosattifi 7451d339d766SRichard W.M. Jonesif test "$optreset" = "yes" ; then 7452d339d766SRichard W.M. Jones echo "HAVE_OPTRESET=y" >> $config_host_mak 7453d339d766SRichard W.M. Jonesfi 7454b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes"; then 7455b3f6ea7eSPaolo Bonzini echo "CONFIG_TCG=y" >> $config_host_mak 74569195b2c2SStefan Weil if test "$tcg_interpreter" = "yes" ; then 74579195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 74589195b2c2SStefan Weil fi 7459b3f6ea7eSPaolo Bonzinifi 74605f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 74615f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 74625f6b9e8fSBlue Swirlfi 7463e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 7464e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 7465e78815a5SAndreas Färberfi 7466e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 7467e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 7468e78815a5SAndreas Färberfi 74699bc5a719SAndreas Gustafssonif test "$posix_memalign" = "yes" ; then 74709bc5a719SAndreas Gustafsson echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak 74719bc5a719SAndreas Gustafssonfi 747297a847bcSbellard 7473cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 7474cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 7475cd4ec0b4SGerd Hoffmannfi 7476cd4ec0b4SGerd Hoffmann 74777b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then 74787b02f544SMarc-André Lureau echo "CONFIG_SMARTCARD=y" >> $config_host_mak 74797b62bf5aSFam Zheng echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak 74807b62bf5aSFam Zheng echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak 7481111a38b0SRobert Relyeafi 7482111a38b0SRobert Relyea 74832b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 74842b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 7485b878b652SFam Zheng echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak 7486b878b652SFam Zheng echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak 74872b2325ffSGerd Hoffmannfi 74882b2325ffSGerd Hoffmann 748969354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 749069354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 7491cc7923fcSFam Zheng echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak 7492cc7923fcSFam Zheng echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak 749369354a83SHans de Goedefi 749469354a83SHans de Goede 7495da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 7496da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 7497da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 7498014cb152SGerd Hoffmann if test "$opengl_dmabuf" = "yes" ; then 7499014cb152SGerd Hoffmann echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 7500014cb152SGerd Hoffmann fi 750120ff075bSMichael Wallefi 750220ff075bSMichael Walle 7503d52c454aSMarc-André Lureauif test "$gbm" = "yes" ; then 7504d52c454aSMarc-André Lureau echo "CONFIG_GBM=y" >> $config_host_mak 7505d52c454aSMarc-André Lureau echo "GBM_LIBS=$gbm_libs" >> $config_host_mak 7506d52c454aSMarc-André Lureau echo "GBM_CFLAGS=$gbm_cflags" >> $config_host_mak 7507d52c454aSMarc-André Lureaufi 7508d52c454aSMarc-André Lureau 7509d52c454aSMarc-André Lureau 75105a22ab71SYang Zhongif test "$malloc_trim" = "yes" ; then 75115a22ab71SYang Zhong echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak 75125a22ab71SYang Zhongfi 75135a22ab71SYang Zhong 751499f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then 751599f2dbd3SLiang Li echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 751699f2dbd3SLiang Lifi 751799f2dbd3SLiang Li 75186b8cd447SRobert Hooif test "$avx512f_opt" = "yes" ; then 75196b8cd447SRobert Hoo echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak 75206b8cd447SRobert Hoofi 75216b8cd447SRobert Hoo 7522607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 7523607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 7524607dacd0Sqiaonuohanfi 7525607dacd0Sqiaonuohan 7526607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 7527607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 7528607dacd0Sqiaonuohanfi 7529607dacd0Sqiaonuohan 75306b383c08SPeter Wuif test "$bzip2" = "yes" ; then 75316b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 75326b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 75336b383c08SPeter Wufi 75346b383c08SPeter Wu 753583bc1f97SJulio Faraccoif test "$lzfse" = "yes" ; then 753683bc1f97SJulio Faracco echo "CONFIG_LZFSE=y" >> $config_host_mak 753783bc1f97SJulio Faracco echo "LZFSE_LIBS=-llzfse" >> $config_host_mak 753883bc1f97SJulio Faraccofi 753983bc1f97SJulio Faracco 75403a678481SJuan Quintelaif test "$zstd" = "yes" ; then 75413a678481SJuan Quintela echo "CONFIG_ZSTD=y" >> $config_host_mak 75423a678481SJuan Quintelafi 75433a678481SJuan Quintela 7544c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 7545d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 75466ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 75476ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 7548c589b249SRonnie Sahlbergfi 7549c589b249SRonnie Sahlberg 75506542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 75514be4879fSColin Lord echo "CONFIG_LIBNFS=m" >> $config_host_mak 75524be4879fSColin Lord echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak 75536542aa9cSPeter Lievenfi 75546542aa9cSPeter Lieven 7555f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 7556f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 7557c3883e1fSFam Zheng echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak 7558c3883e1fSFam Zheng echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak 7559f794573eSEduardo Otubofi 7560f794573eSEduardo Otubo 756183fb7adfSbellard# XXX: suppress that 75627d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 75632358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 75647d3505c5Sbellardfi 75657d3505c5Sbellard 75664d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then 75674d9310f4SDaniel P. Berrange echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 75684d9310f4SDaniel P. Berrangefi 75693556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 75703556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 75713556c233SPaolo Bonzinifi 7572f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 7573d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 75746ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 75756ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 7576f27aaf4bSChristian Brunnerfi 757720ff6c80SAnthony Liguori 75787c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 757970c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 758070c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 758170c60c08SStefan Hajnoczielse 758270c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 758370c60c08SStefan Hajnoczifi 7584d0e2fce5SAneesh Kumar K.V 75857d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes" ; then 75867d992e4dSPeter Lieven echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak 75877d992e4dSPeter Lievenfi 75887d992e4dSPeter Lieven 7589f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" ; then 7590f0d92b56SLongpeng(Mike) echo "CONFIG_AF_ALG=y" >> $config_host_mak 7591f0d92b56SLongpeng(Mike)fi 7592f0d92b56SLongpeng(Mike) 7593d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 7594d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 7595d2042378SAneesh Kumar K.Vfi 7596d2042378SAneesh Kumar K.V 7597e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 7598e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 7599e06a765eSHarsh Prateek Borafi 7600e06a765eSHarsh Prateek Bora 7601cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 7602cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 760306d71fa1SPeter Maydellfi 760406d71fa1SPeter Maydell 76053f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 76063f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 76073f4349dcSKevin Wolffi 76083f4349dcSKevin Wolf 7609d83414e1SMarc-André Lureauif test "$have_asan_iface_fiber" = "yes" ; then 7610d83414e1SMarc-André Lureau echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak 7611d83414e1SMarc-André Lureaufi 7612d83414e1SMarc-André Lureau 76130aebab04SLingfeng Yangif test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then 76140aebab04SLingfeng Yang echo "CONFIG_TSAN=y" >> $config_host_mak 76150aebab04SLingfeng Yangfi 76160aebab04SLingfeng Yang 76178ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 76188ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 76198ab1bf12SLuiz Capitulinofi 76208ab1bf12SLuiz Capitulino 762176a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 762276a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 762376a347e1SRichard Hendersonfi 762476a347e1SRichard Henderson 7625f540166bSRichard Hendersonif test "$int128" = "yes" ; then 7626f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 7627f540166bSRichard Hendersonfi 7628f540166bSRichard Henderson 76297ebee43eSRichard Hendersonif test "$atomic128" = "yes" ; then 76307ebee43eSRichard Henderson echo "CONFIG_ATOMIC128=y" >> $config_host_mak 76317ebee43eSRichard Hendersonfi 76327ebee43eSRichard Henderson 7633e6cd4bb5SRichard Hendersonif test "$cmpxchg128" = "yes" ; then 7634e6cd4bb5SRichard Henderson echo "CONFIG_CMPXCHG128=y" >> $config_host_mak 7635e6cd4bb5SRichard Hendersonfi 7636e6cd4bb5SRichard Henderson 7637df79b996SRichard Hendersonif test "$atomic64" = "yes" ; then 7638df79b996SRichard Henderson echo "CONFIG_ATOMIC64=y" >> $config_host_mak 7639df79b996SRichard Hendersonfi 7640df79b996SRichard Henderson 7641db8aaae8SRichard Hendersonif test "$attralias" = "yes" ; then 7642db8aaae8SRichard Henderson echo "CONFIG_ATTRIBUTE_ALIAS=y" >> $config_host_mak 7643db8aaae8SRichard Hendersonfi 7644db8aaae8SRichard Henderson 76451e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 76461e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 76471e6e9acaSRichard Hendersonfi 76481e6e9acaSRichard Henderson 7649eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 7650d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 76516ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 76526ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 7653eb100396SBharata B Raofi 7654eb100396SBharata B Rao 7655d85fa9ebSJeff Codyif test "$glusterfs_xlator_opt" = "yes" ; then 7656d85fa9ebSJeff Cody echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak 7657d85fa9ebSJeff Codyfi 7658d85fa9ebSJeff Cody 76590c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 76600c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 76610c14fb47SBharata B Raofi 76620c14fb47SBharata B Rao 7663df3a429aSNiels de Vosif test "$glusterfs_fallocate" = "yes" ; then 7664df3a429aSNiels de Vos echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak 7665df3a429aSNiels de Vosfi 7666df3a429aSNiels de Vos 76677c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 76687c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 76697c815372SBharata B Raofi 76707c815372SBharata B Rao 7671e014dbe7SPrasanna Kumar Kaleverif test "$glusterfs_ftruncate_has_stat" = "yes" ; then 7672e014dbe7SPrasanna Kumar Kalever echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak 7673e014dbe7SPrasanna Kumar Kaleverfi 7674e014dbe7SPrasanna Kumar Kalever 76750e3b891fSNiels de Vosif test "$glusterfs_iocb_has_stat" = "yes" ; then 76760e3b891fSNiels de Vos echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak 76770e3b891fSNiels de Vosfi 76780e3b891fSNiels de Vos 7679b10d49d7SPino Toscanoif test "$libssh" = "yes" ; then 7680b10d49d7SPino Toscano echo "CONFIG_LIBSSH=m" >> $config_host_mak 7681b10d49d7SPino Toscano echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak 7682b10d49d7SPino Toscano echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak 76830a12ec87SRichard W.M. Jonesfi 76840a12ec87SRichard W.M. Jones 7685ed1701c6SDr. David Alan Gilbertif test "$live_block_migration" = "yes" ; then 7686ed1701c6SDr. David Alan Gilbert echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak 7687ed1701c6SDr. David Alan Gilbertfi 7688ed1701c6SDr. David Alan Gilbert 76893b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 76903cae16dbSPaolo Bonzini echo 'CONFIG_TPM=y' >> $config_host_mak 76913b8acc11SPaolo Bonzinifi 76923b8acc11SPaolo Bonzini 76935b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 76945b808275SLluís Vilanovaif have_backend "nop"; then 76956d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 769622890ab5SPrerna Saxenafi 76975b808275SLluís Vilanovaif have_backend "simple"; then 76986d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 76996d8a764eSLluís # Set the appropriate trace file. 7700953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 77019410b56cSPrerna Saxenafi 7702ed7f5f1dSPaolo Bonziniif have_backend "log"; then 7703ed7f5f1dSPaolo Bonzini echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 77046d8a764eSLluísfi 77055b808275SLluís Vilanovaif have_backend "ust"; then 77066d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 77076d8a764eSLluísfi 77085b808275SLluís Vilanovaif have_backend "dtrace"; then 77096d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 77106d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 77116d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 77126d8a764eSLluís fi 7713c276b17dSDaniel P. Berrangefi 77145b808275SLluís Vilanovaif have_backend "ftrace"; then 7715781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 7716781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 7717781e9545SEiichi Tsukata else 771821684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 7719781e9545SEiichi Tsukata fi 7720781e9545SEiichi Tsukatafi 77210a852417SPaul Durrantif have_backend "syslog"; then 77220a852417SPaul Durrant if test "$posix_syslog" = "yes" ; then 77230a852417SPaul Durrant echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak 77240a852417SPaul Durrant else 77250a852417SPaul Durrant feature_not_found "syslog(trace backend)" "syslog not available" 77260a852417SPaul Durrant fi 77270a852417SPaul Durrantfi 77289410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 77299410b56cSPrerna Saxena 77302da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 77312da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 7732392fb643SFam Zheng echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak 77332da776dbSMichael R. Hinesfi 77342da776dbSMichael R. Hines 773521ab34c9SMarcel Apfelbaumif test "$pvrdma" = "yes" ; then 773621ab34c9SMarcel Apfelbaum echo "CONFIG_PVRDMA=y" >> $config_host_mak 773721ab34c9SMarcel Apfelbaumfi 773821ab34c9SMarcel Apfelbaum 7739575b22b1SLaurent Vivierif test "$have_rtnetlink" = "yes" ; then 7740575b22b1SLaurent Vivier echo "CONFIG_RTNETLINK=y" >> $config_host_mak 7741575b22b1SLaurent Vivierfi 7742575b22b1SLaurent Vivier 7743ed279a06SKlim Kireevif test "$libxml2" = "yes" ; then 7744ed279a06SKlim Kireev echo "CONFIG_LIBXML2=y" >> $config_host_mak 7745ed279a06SKlim Kireev echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak 7746ed279a06SKlim Kireev echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak 7747ed279a06SKlim Kireevfi 7748ed279a06SKlim Kireev 7749a6b1d4c0SChanglong Xieif test "$replication" = "yes" ; then 7750a6b1d4c0SChanglong Xie echo "CONFIG_REPLICATION=y" >> $config_host_mak 7751a6b1d4c0SChanglong Xiefi 7752a6b1d4c0SChanglong Xie 77536a02c806SStefan Hajnocziif test "$have_af_vsock" = "yes" ; then 77546a02c806SStefan Hajnoczi echo "CONFIG_AF_VSOCK=y" >> $config_host_mak 77556a02c806SStefan Hajnoczifi 77566a02c806SStefan Hajnoczi 77574d04351fSChristopher Covingtonif test "$have_sysmacros" = "yes" ; then 77584d04351fSChristopher Covington echo "CONFIG_SYSMACROS=y" >> $config_host_mak 77594d04351fSChristopher Covingtonfi 77604d04351fSChristopher Covington 776149e00a18SAndreas Grapentinif test "$have_static_assert" = "yes" ; then 776249e00a18SAndreas Grapentin echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak 776349e00a18SAndreas Grapentinfi 776449e00a18SAndreas Grapentin 7765e674605fSTomáš Golembiovskýif test "$have_utmpx" = "yes" ; then 7766e674605fSTomáš Golembiovský echo "HAVE_UTMPX=y" >> $config_host_mak 7767e674605fSTomáš Golembiovskýfi 7768db1ed1abSRichard Hendersonif test "$have_getrandom" = "yes" ; then 7769db1ed1abSRichard Henderson echo "CONFIG_GETRANDOM=y" >> $config_host_mak 7770db1ed1abSRichard Hendersonfi 7771e0580342SKamil Rytarowskiif test "$ivshmem" = "yes" ; then 7772e0580342SKamil Rytarowski echo "CONFIG_IVSHMEM=y" >> $config_host_mak 7773e0580342SKamil Rytarowskifi 7774e219c499SRichard Hendersonif test "$capstone" != "no" ; then 77758ca80760SRichard Henderson echo "CONFIG_CAPSTONE=y" >> $config_host_mak 77768ca80760SRichard Hendersonfi 7777ba59fb77SPaolo Bonziniif test "$debug_mutex" = "yes" ; then 7778ba59fb77SPaolo Bonzini echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak 7779ba59fb77SPaolo Bonzinifi 7780e0580342SKamil Rytarowski 77815c312079SDr. David Alan Gilbert# Hold two types of flag: 77825c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 77835c312079SDr. David Alan Gilbert# a thread we have a handle to 7784479a5747SRoman Bolshakov# CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular 77855c312079SDr. David Alan Gilbert# platform 7786479a5747SRoman Bolshakovif test "$pthread_setname_np_w_tid" = "yes" ; then 77875c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 7788479a5747SRoman Bolshakov echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak 7789479a5747SRoman Bolshakovelif test "$pthread_setname_np_wo_tid" = "yes" ; then 7790479a5747SRoman Bolshakov echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 7791479a5747SRoman Bolshakov echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak 77925c312079SDr. David Alan Gilbertfi 77935c312079SDr. David Alan Gilbert 7794da92c3ffSAshish Mittalif test "$vxhs" = "yes" ; then 7795da92c3ffSAshish Mittal echo "CONFIG_VXHS=y" >> $config_host_mak 7796da92c3ffSAshish Mittal echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak 7797da92c3ffSAshish Mittalfi 7798da92c3ffSAshish Mittal 779917824406SJunyan Heif test "$libpmem" = "yes" ; then 780017824406SJunyan He echo "CONFIG_LIBPMEM=y" >> $config_host_mak 780117824406SJunyan Hefi 780217824406SJunyan He 78032f740136SJeff Codyif test "$bochs" = "yes" ; then 78042f740136SJeff Cody echo "CONFIG_BOCHS=y" >> $config_host_mak 78052f740136SJeff Codyfi 78062f740136SJeff Codyif test "$cloop" = "yes" ; then 78072f740136SJeff Cody echo "CONFIG_CLOOP=y" >> $config_host_mak 78082f740136SJeff Codyfi 78092f740136SJeff Codyif test "$dmg" = "yes" ; then 78102f740136SJeff Cody echo "CONFIG_DMG=y" >> $config_host_mak 78112f740136SJeff Codyfi 78122f740136SJeff Codyif test "$qcow1" = "yes" ; then 78132f740136SJeff Cody echo "CONFIG_QCOW1=y" >> $config_host_mak 78142f740136SJeff Codyfi 78152f740136SJeff Codyif test "$vdi" = "yes" ; then 78162f740136SJeff Cody echo "CONFIG_VDI=y" >> $config_host_mak 78172f740136SJeff Codyfi 78182f740136SJeff Codyif test "$vvfat" = "yes" ; then 78192f740136SJeff Cody echo "CONFIG_VVFAT=y" >> $config_host_mak 78202f740136SJeff Codyfi 78212f740136SJeff Codyif test "$qed" = "yes" ; then 78222f740136SJeff Cody echo "CONFIG_QED=y" >> $config_host_mak 78232f740136SJeff Codyfi 78242f740136SJeff Codyif test "$parallels" = "yes" ; then 78252f740136SJeff Cody echo "CONFIG_PARALLELS=y" >> $config_host_mak 78262f740136SJeff Codyfi 78272f740136SJeff Codyif test "$sheepdog" = "yes" ; then 78282f740136SJeff Cody echo "CONFIG_SHEEPDOG=y" >> $config_host_mak 78292f740136SJeff Codyfi 7830adc28027SAlexander Bulekovif test "$fuzzing" = "yes" ; then 7831adc28027SAlexander Bulekov if test "$have_fuzzer" = "yes"; then 7832adc28027SAlexander Bulekov FUZZ_LDFLAGS=" -fsanitize=address,fuzzer" 7833adc28027SAlexander Bulekov FUZZ_CFLAGS=" -fsanitize=address,fuzzer" 7834adc28027SAlexander Bulekov CFLAGS=" -fsanitize=address,fuzzer-no-link" 7835adc28027SAlexander Bulekov else 7836adc28027SAlexander Bulekov error_exit "Your compiler doesn't support -fsanitize=address,fuzzer" 7837adc28027SAlexander Bulekov exit 1 7838adc28027SAlexander Bulekov fi 7839adc28027SAlexander Bulekovfi 78402f740136SJeff Cody 784140e8c6f4SAlex Bennéeif test "$plugins" = "yes" ; then 784240e8c6f4SAlex Bennée echo "CONFIG_PLUGIN=y" >> $config_host_mak 784340e8c6f4SAlex Bennée LIBS="-ldl $LIBS" 784426fffe29SEmilio G. Cota # Copy the export object list to the build dir 784526fffe29SEmilio G. Cota if test "$ld_dynamic_list" = "yes" ; then 784626fffe29SEmilio G. Cota echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak 784726fffe29SEmilio G. Cota ld_symbols=qemu-plugins-ld.symbols 784826fffe29SEmilio G. Cota cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols 784926fffe29SEmilio G. Cota elif test "$ld_exported_symbols_list" = "yes" ; then 785026fffe29SEmilio G. Cota echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak 785126fffe29SEmilio G. Cota ld64_symbols=qemu-plugins-ld64.symbols 785226fffe29SEmilio G. Cota echo "# Automatically generated by configure - do not modify" > $ld64_symbols 785326fffe29SEmilio G. Cota grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" | sed 's/;//g' | \ 785426fffe29SEmilio G. Cota sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols 785526fffe29SEmilio G. Cota else 785626fffe29SEmilio G. Cota error_exit \ 785726fffe29SEmilio G. Cota "If \$plugins=yes, either \$ld_dynamic_list or " \ 785826fffe29SEmilio G. Cota "\$ld_exported_symbols_list should have been set to 'yes'." 785926fffe29SEmilio G. Cota fi 786040e8c6f4SAlex Bennéefi 786140e8c6f4SAlex Bennée 7862f48e590aSAlex Bennéeif test -n "$gdb_bin" ; then 7863f48e590aSAlex Bennée echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak 7864f48e590aSAlex Bennéefi 7865f48e590aSAlex Bennée 786654e7aac0SAlexey Krasikovif test "$secret_keyring" = "yes" ; then 786754e7aac0SAlexey Krasikov echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak 786892500362SAlexey Krasikov if test "$have_keyutils" = "yes" ; then 786992500362SAlexey Krasikov echo "CONFIG_TEST_SECRET_KEYRING=y" >> $config_host_mak 787092500362SAlexey Krasikov fi 787154e7aac0SAlexey Krasikovfi 787254e7aac0SAlexey Krasikov 78735b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 78749edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 78755b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 78769edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 78775b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 78789edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 7879e633a5c6SEric Blakeelif test "$ARCH" = "x86_64" || test "$ARCH" = "x32" ; then 78809edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 788140d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 78829edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 7883e633a5c6SEric Blakeelif test "$ARCH" = "riscv32" || test "$ARCH" = "riscv64" ; then 7884c4f80543SAlistair Francis QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/riscv $QEMU_INCLUDES" 78855b5e3037SPaolo Bonzinielse 78869edc19c9SMichael S. Tsirkin QEMU_INCLUDES="-iquote \$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 78875b5e3037SPaolo Bonzinifi 78885b5e3037SPaolo Bonzini 7889fdbff6bdSPhilippe Mathieu-Daudéecho "HELPERS=$helpers" >> $config_host_mak 789098ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 789198ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 7892804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 7893804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 78941901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 78951901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 78961901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 789721655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 7898c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 78992eb054c2SPeter Maydellecho "SPHINX_BUILD=$sphinx_build" >> $config_host_mak 7900516e8b7dSPeter Maydellecho "SPHINX_WERROR=$sphinx_werror" >> $config_host_mak 790139d87c8cSAlex Bennéeecho "GENISOIMAGE=$genisoimage" >> $config_host_mak 7902804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 7903a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 7904a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 7905a31a8642SMichael S. Tsirkinfi 7906804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 790783f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 79083c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 7909804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 791045d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 7911cdbd727cSRichard Hendersonecho "AS=$as" >> $config_host_mak 79125f6f0e27SRichard Hendersonecho "CCAS=$ccas" >> $config_host_mak 79133dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 7914804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 7915804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 79169f81aeb5SAlistair Francisecho "RANLIB=$ranlib" >> $config_host_mak 79174852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 7918daa79d9aSAlex Bennéeecho "PKG_CONFIG=$pkg_config_exe" >> $config_host_mak 79199fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 7920e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 792146eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 7922a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 792311cde1c8SBruno Dominguezecho "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak 7924f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 7925e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 7926e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 792780fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 79282944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 7929e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 7930e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 7931e39f0062SPaolo Bonzinifi 79328a99e9a3SPhilippe Mathieu-Daudéecho "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak 7933db5adeaaSPaolo Bonziniecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 79346969ec6cSJames Clarkeecho "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak 7935e57218b6SPeter Maydellecho "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak 793673da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 79373e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 7938409437e1SDaniel P. Berrangeecho "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak 7939804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 794017969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 794117969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 7942957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 794390246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 794490246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 794594dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 79461d728c39SBlue Swirlif test "$gcov" = "yes" ; then 79471d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 79481d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 79491d728c39SBlue Swirlfi 7950804edf29SJuan Quintela 79513efac6ebSTomáš Golembiovskýif test "$libudev" != "no"; then 79523efac6ebSTomáš Golembiovský echo "CONFIG_LIBUDEV=y" >> $config_host_mak 79533efac6ebSTomáš Golembiovský echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak 79543efac6ebSTomáš Golembiovskýfi 7955adc28027SAlexander Bulekovif test "$fuzzing" != "no"; then 7956adc28027SAlexander Bulekov echo "CONFIG_FUZZ=y" >> $config_host_mak 7957adc28027SAlexander Bulekov echo "FUZZ_CFLAGS=$FUZZ_CFLAGS" >> $config_host_mak 7958adc28027SAlexander Bulekov echo "FUZZ_LDFLAGS=$FUZZ_LDFLAGS" >> $config_host_mak 7959adc28027SAlexander Bulekovfi 79603efac6ebSTomáš Golembiovský 796105dfa22bSPhilippe Mathieu-Daudéif test "$edk2_blobs" = "yes" ; then 796205dfa22bSPhilippe Mathieu-Daudé echo "DECOMPRESS_EDK2_BLOBS=y" >> $config_host_mak 796305dfa22bSPhilippe Mathieu-Daudéfi 796405dfa22bSPhilippe Mathieu-Daudé 7965b767d257SMarek Marczykowski-Góreckiif test "$rng_none" = "yes"; then 7966b767d257SMarek Marczykowski-Górecki echo "CONFIG_RNG_NONE=y" >> $config_host_mak 7967b767d257SMarek Marczykowski-Góreckifi 7968b767d257SMarek Marczykowski-Górecki 79696efd7517SPeter Maydell# use included Linux headers 79706efd7517SPeter Maydellif test "$linux" = "yes" ; then 7971a307beb6SAndreas Färber mkdir -p linux-headers 79726efd7517SPeter Maydell case "$cpu" in 7973c72b26ecSRichard Henderson i386|x86_64|x32) 797408312a63SPeter Maydell linux_arch=x86 79756efd7517SPeter Maydell ;; 7976f8378accSRichard Henderson ppc|ppc64|ppc64le) 797708312a63SPeter Maydell linux_arch=powerpc 79786efd7517SPeter Maydell ;; 79796efd7517SPeter Maydell s390x) 798008312a63SPeter Maydell linux_arch=s390 798108312a63SPeter Maydell ;; 79821f080313SClaudio Fontana aarch64) 79831f080313SClaudio Fontana linux_arch=arm64 79841f080313SClaudio Fontana ;; 7985222e7d11SSanjay Lal mips64) 7986222e7d11SSanjay Lal linux_arch=mips 7987222e7d11SSanjay Lal ;; 798808312a63SPeter Maydell *) 798908312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 799008312a63SPeter Maydell linux_arch="$cpu" 79916efd7517SPeter Maydell ;; 79926efd7517SPeter Maydell esac 799308312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 799408312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 799508312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 799608312a63SPeter Maydell fi 79976efd7517SPeter Maydellfi 79986efd7517SPeter Maydell 799997a847bcSbellardfor target in $target_list; do 800097a847bcSbellardtarget_dir="$target" 800125be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 800289138857SStefan Weiltarget_name=$(echo $target | cut -d '-' -f 1) 800352bf9771Stony.nguyen@bt.comtarget_aligned_only="no" 800452bf9771Stony.nguyen@bt.comcase "$target_name" in 800552bf9771Stony.nguyen@bt.com alpha|hppa|mips64el|mips64|mipsel|mips|mipsn32|mipsn32el|sh4|sh4eb|sparc|sparc64|sparc32plus|xtensa|xtensaeb) 800652bf9771Stony.nguyen@bt.com target_aligned_only="yes" 800752bf9771Stony.nguyen@bt.com ;; 800852bf9771Stony.nguyen@bt.comesac 800997a847bcSbellardtarget_bigendian="no" 8010c1799a84SPaolo Bonzinicase "$target_name" in 8011a69dc537SThomas Huth armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 801252bf9771Stony.nguyen@bt.com target_bigendian="yes" 8013ea2d6a39SJuan Quintela ;; 8014ea2d6a39SJuan Quintelaesac 801597a847bcSbellardtarget_softmmu="no" 8016997344f3Sbellardtarget_user_only="no" 8017831b7825Sthstarget_linux_user="no" 801884778508Sblueswir1target_bsd_user="no" 80199e407a85Spbrookcase "$target" in 8020c1799a84SPaolo Bonzini ${target_name}-softmmu) 80219e407a85Spbrook target_softmmu="yes" 80229e407a85Spbrook ;; 8023c1799a84SPaolo Bonzini ${target_name}-linux-user) 80249e407a85Spbrook target_user_only="yes" 80259e407a85Spbrook target_linux_user="yes" 80269e407a85Spbrook ;; 8027c1799a84SPaolo Bonzini ${target_name}-bsd-user) 802884778508Sblueswir1 target_user_only="yes" 802984778508Sblueswir1 target_bsd_user="yes" 803084778508Sblueswir1 ;; 80319e407a85Spbrook *) 803276ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 80339e407a85Spbrook exit 1 80349e407a85Spbrook ;; 80359e407a85Spbrookesac 8036831b7825Sths 803797a847bcSbellardmkdir -p $target_dir 803825be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 803997a847bcSbellard 8040e5fe0c52Spbrookbflt="no" 8041ca759f9eSAlex Bennéemttcg="no" 804289138857SStefan Weilinterp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g") 804356aebc89Spbrookgdb_xml_files="" 80447ba1e619Saliguori 8045c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 80466acff7daSJuan QuintelaTARGET_BASE_ARCH="" 8047e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 8048e73aae67SJuan Quintela 8049c1799a84SPaolo Bonzinicase "$target_name" in 80502408a527Saurel32 i386) 80510a7fa00aSEmilio G. Cota mttcg="yes" 80527b0f97baSDoug Gale gdb_xml_files="i386-32bit.xml" 805328988117SLaurent Vivier TARGET_SYSTBL_ABI=i386 80542408a527Saurel32 ;; 80552408a527Saurel32 x86_64) 80566acff7daSJuan Quintela TARGET_BASE_ARCH=i386 80578d62f35aSLaurent Vivier TARGET_SYSTBL_ABI=common,64 80580a7fa00aSEmilio G. Cota mttcg="yes" 80597b0f97baSDoug Gale gdb_xml_files="i386-64bit.xml" 80602408a527Saurel32 ;; 80612408a527Saurel32 alpha) 80625ee4f3c2SRichard Henderson mttcg="yes" 80636116aea9SLaurent Vivier TARGET_SYSTBL_ABI=common 80642408a527Saurel32 ;; 80652408a527Saurel32 arm|armeb) 8066b498c8a0SJuan Quintela TARGET_ARCH=arm 80675bcb4986SLaurent Vivier TARGET_SYSTBL_ABI=common,oabi 8068e5fe0c52Spbrook bflt="yes" 8069ca759f9eSAlex Bennée mttcg="yes" 8070c888f7e0SPeter Maydell gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml arm-m-profile.xml" 80712408a527Saurel32 ;; 8072722dd7beSMichael Weiser aarch64|aarch64_be) 8073722dd7beSMichael Weiser TARGET_ARCH=aarch64 80746a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 80756a49fa95SAlexander Graf bflt="yes" 8076ca759f9eSAlex Bennée mttcg="yes" 8077c888f7e0SPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml arm-m-profile.xml" 80786a49fa95SAlexander Graf ;; 80792408a527Saurel32 cris) 80802408a527Saurel32 ;; 808161766fe9SRichard Henderson hppa) 80827b93dab5SRichard Henderson mttcg="yes" 80839566f4c6SLaurent Vivier TARGET_SYSTBL_ABI=common,32 808461766fe9SRichard Henderson ;; 8085613a22c9SMichael Walle lm32) 8086613a22c9SMichael Walle ;; 80872408a527Saurel32 m68k) 80880938cda5Saurel32 bflt="yes" 8089a976ed3fSKONRAD Frederic gdb_xml_files="cf-core.xml cf-fp.xml m68k-core.xml m68k-fp.xml" 80905b85cae9SLaurent Vivier TARGET_SYSTBL_ABI=common 80912408a527Saurel32 ;; 8092877fdc12SEdgar E. Iglesias microblaze|microblazeel) 8093877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 8094ddf0c4cdSLaurent Vivier TARGET_SYSTBL_ABI=common 809572b675caSEdgar E. Iglesias bflt="yes" 8096be73ef64SEdgar E. Iglesias echo "TARGET_ABI32=y" >> $config_target_mak 809772b675caSEdgar E. Iglesias ;; 80982408a527Saurel32 mips|mipsel) 80990454728cSAleksandar Markovic mttcg="yes" 8100b498c8a0SJuan Quintela TARGET_ARCH=mips 810125be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 8102c59716fcSLaurent Vivier TARGET_SYSTBL_ABI=o32 81032408a527Saurel32 ;; 81042408a527Saurel32 mipsn32|mipsn32el) 81050454728cSAleksandar Markovic mttcg="yes" 8106597e2cecSRichard Henderson TARGET_ARCH=mips64 81076acff7daSJuan Quintela TARGET_BASE_ARCH=mips 810825be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 8109597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 8110686a0fe4SLaurent Vivier TARGET_SYSTBL_ABI=n32 81112408a527Saurel32 ;; 81122408a527Saurel32 mips64|mips64el) 8113a092a955SAlex Bennée mttcg="no" 8114b498c8a0SJuan Quintela TARGET_ARCH=mips64 81156acff7daSJuan Quintela TARGET_BASE_ARCH=mips 811625be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 8117686a0fe4SLaurent Vivier TARGET_SYSTBL_ABI=n64 81182408a527Saurel32 ;; 8119d15a9c23SAnthony Green moxie) 8120d15a9c23SAnthony Green ;; 8121e671711cSMarek Vasut nios2) 8122e671711cSMarek Vasut ;; 81234a09d0bbSRichard Henderson or1k) 8124e67db06eSJia Liu TARGET_ARCH=openrisc 8125e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 8126e67db06eSJia Liu ;; 81272408a527Saurel32 ppc) 8128c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 812976a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,32 81302408a527Saurel32 ;; 81312408a527Saurel32 ppc64) 81326acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 8133e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 813476a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,64 8135f0b0685dSNikunj A Dadhania mttcg=yes 81361438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 81372408a527Saurel32 ;; 81389c35126cSDoug Kwan ppc64le) 81399c35126cSDoug Kwan TARGET_ARCH=ppc64 81409c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 81419c35126cSDoug Kwan TARGET_ABI_DIR=ppc 814276a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,64 8143f0b0685dSNikunj A Dadhania mttcg=yes 81441438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 81459c35126cSDoug Kwan ;; 81462408a527Saurel32 ppc64abi32) 8147b498c8a0SJuan Quintela TARGET_ARCH=ppc64 81486acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 8149e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 815076a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,32 815125be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 81521438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 81532408a527Saurel32 ;; 815425fa194bSMichael Clark riscv32) 815525fa194bSMichael Clark TARGET_BASE_ARCH=riscv 815625fa194bSMichael Clark TARGET_ABI_DIR=riscv 815725fa194bSMichael Clark mttcg=yes 8158ae4a70c0SKeith Packard gdb_xml_files="riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-32bit-csr.xml riscv-32bit-virtual.xml" 815925fa194bSMichael Clark ;; 816025fa194bSMichael Clark riscv64) 816125fa194bSMichael Clark TARGET_BASE_ARCH=riscv 816225fa194bSMichael Clark TARGET_ABI_DIR=riscv 816325fa194bSMichael Clark mttcg=yes 8164ae4a70c0SKeith Packard gdb_xml_files="riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml riscv-64bit-virtual.xml" 816525fa194bSMichael Clark ;; 8166c8c35e5fSYoshinori Sato rx) 8167c8c35e5fSYoshinori Sato TARGET_ARCH=rx 8168c8c35e5fSYoshinori Sato bflt="yes" 8169c8c35e5fSYoshinori Sato target_compiler=$cross_cc_rx 8170c8c35e5fSYoshinori Sato gdb_xml_files="rx-core.xml" 8171c8c35e5fSYoshinori Sato ;; 81722408a527Saurel32 sh4|sh4eb) 8173b498c8a0SJuan Quintela TARGET_ARCH=sh4 8174d0c832f6SLaurent Vivier TARGET_SYSTBL_ABI=common 81754dbed897Spbrook bflt="yes" 81762408a527Saurel32 ;; 81772408a527Saurel32 sparc) 8178bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,32 81792408a527Saurel32 ;; 81802408a527Saurel32 sparc64) 81816acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 8182bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,64 81832408a527Saurel32 ;; 81842408a527Saurel32 sparc32plus) 8185b498c8a0SJuan Quintela TARGET_ARCH=sparc64 81866acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 8187e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 8188bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,32 818925be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 81902408a527Saurel32 ;; 819124e804ecSAlexander Graf s390x) 8192318f371dSLaurent Vivier TARGET_SYSTBL_ABI=common,64 819363685bc4SDavid Hildenbrand mttcg=yes 819486158a2aSChristian 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" 819524e804ecSAlexander Graf ;; 8196444e06b1SChen Gang tilegx) 8197444e06b1SChen Gang ;; 81985ecaa4edSPeter Crosthwaite tricore) 81995ecaa4edSPeter Crosthwaite ;; 8200d2fbca94SGuan Xuetao unicore32) 8201d2fbca94SGuan Xuetao ;; 8202cfa550c6SMax Filippov xtensa|xtensaeb) 8203cfa550c6SMax Filippov TARGET_ARCH=xtensa 8204a4a93592SLaurent Vivier TARGET_SYSTBL_ABI=common 820502e33e9fSMax Filippov bflt="yes" 82069fb40342SMax Filippov mttcg="yes" 8207cfa550c6SMax Filippov ;; 82082408a527Saurel32 *) 820976ad07a4SPeter Maydell error_exit "Unsupported target CPU" 82102408a527Saurel32 ;; 82112408a527Saurel32esac 82125e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 82135e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 82145e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 82155e8861a0SPaolo Bonzinifi 82165e8861a0SPaolo Bonzini 82175e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 82185e8861a0SPaolo Bonzini 821999afc91dSDaniel P. Berrangeupper() { 822099afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 822199afc91dSDaniel P. Berrange} 822299afc91dSDaniel P. Berrange 822389138857SStefan Weiltarget_arch_name="$(upper $TARGET_ARCH)" 822425be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 8225c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 822625be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 8227e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 8228e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 8229e6e91b9cSJuan Quintelafi 823025be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 8231adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 8232adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 8233adfc3e91SStacey Sonfi 82344d6a835dSLaurent Vivierif [ "$TARGET_SYSTBL_ABI" != "" ]; then 82354d6a835dSLaurent Vivier echo "TARGET_SYSTBL_ABI=$TARGET_SYSTBL_ABI" >> $config_target_mak 82364d6a835dSLaurent Vivierfi 82373b6b7550SPaolo Bonzini 82383b6b7550SPaolo Bonziniif supported_xen_target $target; then 823925be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 8240e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak 8241eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 8242eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 8243eb6fda0fSAnthony PERARD fi 8244e0e312f3SPaolo Bonzinielse 8245e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak 8246432d268cSJun Nakajimafi 82473b6b7550SPaolo Bonziniif supported_kvm_target $target; then 824825be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 8249e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak 8250e0e312f3SPaolo Bonzinielse 8251e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak 8252c59249f9SJuan Quintelafi 82533b6b7550SPaolo Bonziniif supported_hax_target $target; then 8254b0cb0a66SVincent Palatin echo "CONFIG_HAX=y" >> $config_target_mak 8255b0cb0a66SVincent Palatinfi 8256c97d6d2cSSergio Andres Gomez Del Realif supported_hvf_target $target; then 8257c97d6d2cSSergio Andres Gomez Del Real echo "CONFIG_HVF=y" >> $config_target_mak 8258c97d6d2cSSergio Andres Gomez Del Realfi 8259d661d9a4SJustin Terry (VM)if supported_whpx_target $target; then 8260d661d9a4SJustin Terry (VM) echo "CONFIG_WHPX=y" >> $config_target_mak 8261d661d9a4SJustin Terry (VM)fi 826252bf9771Stony.nguyen@bt.comif test "$target_aligned_only" = "yes" ; then 826352bf9771Stony.nguyen@bt.com echo "TARGET_ALIGNED_ONLY=y" >> $config_target_mak 826452bf9771Stony.nguyen@bt.comfi 8265de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 826625be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 826797a847bcSbellardfi 826897a847bcSbellardif test "$target_softmmu" = "yes" ; then 826925be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 8270ca759f9eSAlex Bennée if test "$mttcg" = "yes" ; then 8271ca759f9eSAlex Bennée echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak 8272ca759f9eSAlex Bennée fi 8273de83cd02Sbellardfi 8274997344f3Sbellardif test "$target_user_only" = "yes" ; then 827525be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 8276a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 8277997344f3Sbellardfi 8278831b7825Sthsif test "$target_linux_user" = "yes" ; then 827925be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 8280831b7825Sthsfi 828156aebc89Spbrooklist="" 828256aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 828356aebc89Spbrook for x in $gdb_xml_files; do 828456aebc89Spbrook list="$list $source_path/gdb-xml/$x" 828556aebc89Spbrook done 828625be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 82873d0f1517SJuan Quintelafi 8288de83cd02Sbellard 8289e633a5c6SEric Blakeif test "$target_user_only" = "yes" && test "$bflt" = "yes"; then 829025be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 8291e5fe0c52Spbrookfi 829284778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 829325be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 829484778508Sblueswir1fi 82955b0753e0Sbellard 8296d75402b5SAlex Bennée 8297db5adeaaSPaolo Bonzini# generate QEMU_CFLAGS/QEMU_LDFLAGS for targets 8298fa282484SJuan Quintela 82994afddb55SJuan Quintelacflags="" 8300fa282484SJuan Quintelaldflags="" 83019b8e111fSJuan Quintela 8302c765fcacSPeter Crosthwaitedisas_config() { 8303c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> $config_target_mak 8304c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 8305c765fcacSPeter Crosthwaite} 8306c765fcacSPeter Crosthwaite 830764656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 830864656024SJuan Quintela case "$i" in 830964656024SJuan Quintela alpha) 8310c765fcacSPeter Crosthwaite disas_config "ALPHA" 831164656024SJuan Quintela ;; 831282295d8aSRichard Henderson aarch64) 831382295d8aSRichard Henderson if test -n "${cxx}"; then 8314c765fcacSPeter Crosthwaite disas_config "ARM_A64" 831582295d8aSRichard Henderson fi 831682295d8aSRichard Henderson ;; 831764656024SJuan Quintela arm) 8318c765fcacSPeter Crosthwaite disas_config "ARM" 8319999b53ecSClaudio Fontana if test -n "${cxx}"; then 8320c765fcacSPeter Crosthwaite disas_config "ARM_A64" 8321999b53ecSClaudio Fontana fi 832264656024SJuan Quintela ;; 832364656024SJuan Quintela cris) 8324c765fcacSPeter Crosthwaite disas_config "CRIS" 832564656024SJuan Quintela ;; 8326429b31a2SRichard Henderson hppa) 8327429b31a2SRichard Henderson disas_config "HPPA" 8328429b31a2SRichard Henderson ;; 8329c72b26ecSRichard Henderson i386|x86_64|x32) 8330c765fcacSPeter Crosthwaite disas_config "I386" 833164656024SJuan Quintela ;; 833279368f49SMichael Walle lm32) 8333c765fcacSPeter Crosthwaite disas_config "LM32" 833479368f49SMichael Walle ;; 833564656024SJuan Quintela m68k) 8336c765fcacSPeter Crosthwaite disas_config "M68K" 833764656024SJuan Quintela ;; 8338877fdc12SEdgar E. Iglesias microblaze*) 8339c765fcacSPeter Crosthwaite disas_config "MICROBLAZE" 834064656024SJuan Quintela ;; 834164656024SJuan Quintela mips*) 8342c765fcacSPeter Crosthwaite disas_config "MIPS" 834389a955e8SAleksandar Markovic if test -n "${cxx}"; then 834489a955e8SAleksandar Markovic disas_config "NANOMIPS" 834589a955e8SAleksandar Markovic fi 834664656024SJuan Quintela ;; 8347d15a9c23SAnthony Green moxie*) 8348c765fcacSPeter Crosthwaite disas_config "MOXIE" 8349d15a9c23SAnthony Green ;; 8350e671711cSMarek Vasut nios2) 8351e671711cSMarek Vasut disas_config "NIOS2" 8352e671711cSMarek Vasut ;; 83534a09d0bbSRichard Henderson or1k) 8354c765fcacSPeter Crosthwaite disas_config "OPENRISC" 8355e67db06eSJia Liu ;; 835664656024SJuan Quintela ppc*) 8357c765fcacSPeter Crosthwaite disas_config "PPC" 835864656024SJuan Quintela ;; 8359c4f80543SAlistair Francis riscv*) 836025fa194bSMichael Clark disas_config "RISCV" 836125fa194bSMichael Clark ;; 8362c8c35e5fSYoshinori Sato rx) 8363c8c35e5fSYoshinori Sato disas_config "RX" 8364c8c35e5fSYoshinori Sato ;; 836524e804ecSAlexander Graf s390*) 8366c765fcacSPeter Crosthwaite disas_config "S390" 836764656024SJuan Quintela ;; 836864656024SJuan Quintela sh4) 8369c765fcacSPeter Crosthwaite disas_config "SH4" 837064656024SJuan Quintela ;; 837164656024SJuan Quintela sparc*) 8372c765fcacSPeter Crosthwaite disas_config "SPARC" 837364656024SJuan Quintela ;; 8374cfa550c6SMax Filippov xtensa*) 8375c765fcacSPeter Crosthwaite disas_config "XTENSA" 8376cfa550c6SMax Filippov ;; 837764656024SJuan Quintela esac 837864656024SJuan Quinteladone 83799195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 8380c765fcacSPeter Crosthwaite disas_config "TCI" 83819195b2c2SStefan Weilfi 838264656024SJuan Quintela 83836ee7126fSJuan Quintelacase "$ARCH" in 83846ee7126fSJuan Quintelaalpha) 83856ee7126fSJuan Quintela # Ensure there's only a single GP 83866ee7126fSJuan Quintela cflags="-msmall-data $cflags" 83876ee7126fSJuan Quintela;; 83886ee7126fSJuan Quintelaesac 83896ee7126fSJuan Quintela 8390d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 8391d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 8392d02c1db3SJuan Quintela cflags="-p $cflags" 8393d02c1db3SJuan Quintela ldflags="-p $ldflags" 8394d02c1db3SJuan Quintela fi 8395d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 8396d02c1db3SJuan Quintela ldflags="-p $ldflags" 839725be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 8398d02c1db3SJuan Quintela fi 8399d02c1db3SJuan Quintelafi 8400d02c1db3SJuan Quintela 8401e9a3591fSChristian Borntraeger# Newer kernels on s390 check for an S390_PGSTE program header and 8402e9a3591fSChristian Borntraeger# enable the pgste page table extensions in that case. This makes 8403e9a3591fSChristian Borntraeger# the vm.allocate_pgste sysctl unnecessary. We enable this program 8404e9a3591fSChristian Borntraeger# header if 8405e9a3591fSChristian Borntraeger# - we build on s390x 8406e9a3591fSChristian Borntraeger# - we build the system emulation for s390x (qemu-system-s390x) 8407e9a3591fSChristian Borntraeger# - KVM is enabled 8408e9a3591fSChristian Borntraeger# - the linker supports --s390-pgste 8409e633a5c6SEric Blakeif test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \ 8410e633a5c6SEric Blake test "$ARCH" = "s390x" && test "$kvm" = "yes"; then 8411e9a3591fSChristian Borntraeger if ld_has --s390-pgste ; then 8412e9a3591fSChristian Borntraeger ldflags="-Wl,--s390-pgste $ldflags" 8413e9a3591fSChristian Borntraeger fi 8414e9a3591fSChristian Borntraegerfi 8415e9a3591fSChristian Borntraeger 8416db5adeaaSPaolo Bonziniecho "QEMU_LDFLAGS+=$ldflags" >> $config_target_mak 841725be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 8418fa282484SJuan Quintela 841997a847bcSbellarddone # for target in $targets 84207d13299dSbellard 8421d52c454aSMarc-André Lureauecho "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak 8422d52c454aSMarc-André Lureauecho "PIXMAN_LIBS=$pixman_libs" >> $config_host_mak 8423d52c454aSMarc-André Lureau 8424e3971d61SPhilippe Mathieu-Daudéif [ "$fdt" = "git" ]; then 84253b8593eeSMarkus Armbruster echo "config-host.h: dtc/all" >> $config_host_mak 8426a540f158SPeter Crosthwaitefi 8427e219c499SRichard Hendersonif [ "$capstone" = "git" -o "$capstone" = "internal" ]; then 84283b8593eeSMarkus Armbruster echo "config-host.h: capstone/all" >> $config_host_mak 8429e219c499SRichard Hendersonfi 8430e219c499SRichard Hendersonif test -n "$LIBCAPSTONE"; then 8431e219c499SRichard Henderson echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak 8432e219c499SRichard Hendersonfi 8433a540f158SPeter Crosthwaite 8434a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 8435a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 8436a99d57bbSWanlong Gaofi 8437a99d57bbSWanlong Gao 8438fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then 8439fd0e6053SJohn Snow echo "export CCACHE_CPP2=y" >> $config_host_mak 8440fd0e6053SJohn Snowfi 8441fd0e6053SJohn Snow 8442*1e4f6065SDaniele Buonoif test "$safe_stack" = "yes"; then 8443*1e4f6065SDaniele Buono echo "CONFIG_SAFESTACK=y" >> $config_host_mak 8444*1e4f6065SDaniele Buonofi 8445*1e4f6065SDaniele Buono 8446e29e5c6eSPeter Maydell# If we're using a separate build tree, set it up now. 8447e29e5c6eSPeter Maydell# DIRS are directories which we simply mkdir in the build tree; 8448e29e5c6eSPeter Maydell# LINKS are things to symlink back into the source tree 8449e29e5c6eSPeter Maydell# (these can be both files and directories). 8450e29e5c6eSPeter Maydell# Caution: do not add files or directories here using wildcards. This 8451e29e5c6eSPeter Maydell# will result in problems later if a new file matching the wildcard is 8452e29e5c6eSPeter Maydell# added to the source tree -- nothing will cause configure to be rerun 8453e29e5c6eSPeter Maydell# so the build tree will be missing the link back to the new file, and 8454e29e5c6eSPeter Maydell# tests might fail. Prefer to keep the relevant files in their own 8455e29e5c6eSPeter Maydell# directory and symlink the directory instead. 84561cf4323eSThomas HuthDIRS="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos" 84571cf4323eSThomas HuthDIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph" 8458b855f8d1SPaolo BonziniDIRS="$DIRS docs docs/interop fsdev scsi" 8459744a928cSAlexey KardashevskiyDIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw" 84602d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 84612038f8c8SPaolo BonziniLINKS="Makefile" 84622038f8c8SPaolo BonziniLINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile" 84632038f8c8SPaolo BonziniLINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile" 8464671f760bSEmilio G. CotaLINKS="$LINKS tests/plugin/Makefile" 8465e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps" 8466e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/s390-ccw/Makefile" 8467e29e5c6eSPeter MaydellLINKS="$LINKS roms/seabios/Makefile roms/vgabios/Makefile" 8468e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/qemu-icon.bmp" 8469e29e5c6eSPeter MaydellLINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit 847039950353SPeter MaydellLINKS="$LINKS tests/acceptance tests/data" 847139950353SPeter MaydellLINKS="$LINKS tests/qemu-iotests/check" 84728f8fd9edSCleber RosaLINKS="$LINKS python" 8473753d11f2SRichard Hendersonfor bios_file in \ 8474753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 8475225a9ab8SAlexey Kardashevskiy $source_path/pc-bios/*.lid \ 8476753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 8477753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 8478e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 8479753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 84804e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 848126ce90fdSLaszlo Ersek $source_path/pc-bios/edk2-*.fd.bz2 \ 8482753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 8483753d11f2SRichard Hendersondo 8484e29e5c6eSPeter Maydell LINKS="$LINKS pc-bios/$(basename $bios_file)" 84857ea78b74SJan Kiszkadone 8486d1807a4fSPaolo Bonzinimkdir -p $DIRS 8487e29e5c6eSPeter Maydellfor f in $LINKS ; do 8488cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 8489f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 8490f9245e10SPeter Maydell fi 84917d13299dSbellarddone 84921ad2134fSPaul Brook 84932038f8c8SPaolo Bonzini(for i in $cross_cc_vars; do 84942038f8c8SPaolo Bonzini export $i 84952038f8c8SPaolo Bonzinidone 8496afc3a8f9SAlex Bennéeexport target_list source_path use_containers 84972038f8c8SPaolo Bonzini$source_path/tests/tcg/configure.sh) 84982038f8c8SPaolo Bonzini 8499c34ebfdcSAnthony Liguori# temporary config to build submodules 85002d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 8501c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 850237116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 8503c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 8504cdbd727cSRichard Henderson echo "AS=$as" >> $config_mak 85055f6f0e27SRichard Henderson echo "CCAS=$ccas" >> $config_mak 8506c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 8507c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 85083dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 8509c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 8510a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 8511c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 85129f81aeb5SAlistair Francis echo "RANLIB=$ranlib" >> $config_mak 8513c34ebfdcSAnthony Liguoridone 8514c34ebfdcSAnthony Liguori 851576c7560aSMax Reitz# set up qemu-iotests in this build directory 851676c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 851776c7560aSMax Reitz 851876c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 851976c7560aSMax Reitzecho >> "$iotests_common_env" 852076c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 852176c7560aSMax Reitz 8522dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 8523dc655404SMichael S. Tsirkincat <<EOD >config.status 8524dc655404SMichael S. Tsirkin#!/bin/sh 8525dc655404SMichael S. Tsirkin# Generated by configure. 8526dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 8527dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 8528dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 8529dc655404SMichael S. TsirkinEOD 8530e811da7fSDaniel P. Berrangé 8531e811da7fSDaniel P. Berrangépreserve_env() { 8532e811da7fSDaniel P. Berrangé envname=$1 8533e811da7fSDaniel P. Berrangé 8534e811da7fSDaniel P. Berrangé eval envval=\$$envname 8535e811da7fSDaniel P. Berrangé 8536e811da7fSDaniel P. Berrangé if test -n "$envval" 8537e811da7fSDaniel P. Berrangé then 8538e811da7fSDaniel P. Berrangé echo "$envname='$envval'" >> config.status 8539e811da7fSDaniel P. Berrangé echo "export $envname" >> config.status 8540e811da7fSDaniel P. Berrangé else 8541e811da7fSDaniel P. Berrangé echo "unset $envname" >> config.status 8542e811da7fSDaniel P. Berrangé fi 8543e811da7fSDaniel P. Berrangé} 8544e811da7fSDaniel P. Berrangé 8545e811da7fSDaniel P. Berrangé# Preserve various env variables that influence what 8546e811da7fSDaniel P. Berrangé# features/build target configure will detect 8547e811da7fSDaniel P. Berrangépreserve_env AR 8548e811da7fSDaniel P. Berrangépreserve_env AS 8549e811da7fSDaniel P. Berrangépreserve_env CC 8550e811da7fSDaniel P. Berrangépreserve_env CPP 8551e811da7fSDaniel P. Berrangépreserve_env CXX 8552e811da7fSDaniel P. Berrangépreserve_env INSTALL 8553e811da7fSDaniel P. Berrangépreserve_env LD 8554e811da7fSDaniel P. Berrangépreserve_env LD_LIBRARY_PATH 8555e811da7fSDaniel P. Berrangépreserve_env LIBTOOL 8556e811da7fSDaniel P. Berrangépreserve_env MAKE 8557e811da7fSDaniel P. Berrangépreserve_env NM 8558e811da7fSDaniel P. Berrangépreserve_env OBJCOPY 8559e811da7fSDaniel P. Berrangépreserve_env PATH 8560e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG 8561e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG_LIBDIR 8562e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG_PATH 8563e811da7fSDaniel P. Berrangépreserve_env PYTHON 8564e811da7fSDaniel P. Berrangépreserve_env SDL2_CONFIG 8565e811da7fSDaniel P. Berrangépreserve_env SMBD 8566e811da7fSDaniel P. Berrangépreserve_env STRIP 8567e811da7fSDaniel P. Berrangépreserve_env WINDRES 8568e811da7fSDaniel P. Berrangé 8569dc655404SMichael S. Tsirkinprintf "exec" >>config.status 8570dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status 8571cf7cc929SDr. David Alan Gilbertecho ' "$@"' >>config.status 8572dc655404SMichael S. Tsirkinchmod +x config.status 8573dc655404SMichael S. Tsirkin 85748cd05ab6SPeter Maydellrm -r "$TMPDIR1" 8575