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 14dedad027SDaniel P. Berrangé# make source path absolute 15dedad027SDaniel P. Berrangésource_path=$(cd "$(dirname -- "$0")"; pwd) 16dedad027SDaniel P. Berrangé 17dedad027SDaniel P. Berrangéif test "$PWD" = "$source_path" 18dedad027SDaniel P. Berrangéthen 19dedad027SDaniel P. Berrangé echo "Using './build' as the directory for build output" 20dedad027SDaniel P. Berrangé 21dedad027SDaniel P. Berrangé MARKER=build/auto-created-by-configure 22dedad027SDaniel P. Berrangé 23dedad027SDaniel P. Berrangé if test -e build 24dedad027SDaniel P. Berrangé then 25dedad027SDaniel P. Berrangé if test -f $MARKER 26dedad027SDaniel P. Berrangé then 27dedad027SDaniel P. Berrangé rm -rf build 28dedad027SDaniel P. Berrangé else 29dedad027SDaniel P. Berrangé echo "ERROR: ./build dir already exists and was not previously created by configure" 30dedad027SDaniel P. Berrangé exit 1 31dedad027SDaniel P. Berrangé fi 32dedad027SDaniel P. Berrangé fi 33dedad027SDaniel P. Berrangé 34dedad027SDaniel P. Berrangé mkdir build 35dedad027SDaniel P. Berrangé touch $MARKER 36dedad027SDaniel P. Berrangé 37dedad027SDaniel P. Berrangé cat > GNUmakefile <<'EOF' 38dedad027SDaniel P. Berrangé# This file is auto-generated by configure to support in-source tree 39dedad027SDaniel P. Berrangé# 'make' command invocation 40dedad027SDaniel P. Berrangé 41dedad027SDaniel P. Berrangéifeq ($(MAKECMDGOALS),) 42dedad027SDaniel P. Berrangérecurse: all 43dedad027SDaniel P. Berrangéendif 44dedad027SDaniel P. Berrangé 45dedad027SDaniel P. Berrangé.NOTPARALLEL: % 46dedad027SDaniel P. Berrangé%: force 47dedad027SDaniel P. Berrangé @echo 'changing dir to build for $(MAKE) "$(MAKECMDGOALS)"...' 48dedad027SDaniel P. Berrangé @$(MAKE) -C build -f Makefile $(MAKECMDGOALS) 49dedad027SDaniel P. Berrangé @if test "$(MAKECMDGOALS)" = "distclean" && \ 50dedad027SDaniel P. Berrangé test -e build/auto-created-by-configure ; \ 51dedad027SDaniel P. Berrangé then \ 52dedad027SDaniel P. Berrangé rm -rf build GNUmakefile ; \ 53dedad027SDaniel P. Berrangé fi 54dedad027SDaniel P. Berrangéforce: ; 55dedad027SDaniel P. Berrangé.PHONY: force 56dedad027SDaniel P. BerrangéGNUmakefile: ; 57dedad027SDaniel P. Berrangé 58dedad027SDaniel P. BerrangéEOF 59dedad027SDaniel P. Berrangé cd build 60dedad027SDaniel P. Berrangé exec $source_path/configure "$@" 61dedad027SDaniel P. Berrangéfi 62dedad027SDaniel P. Berrangé 638cd05ab6SPeter Maydell# Temporary directory used for files created while 648cd05ab6SPeter Maydell# configure runs. Since it is in the build directory 658cd05ab6SPeter Maydell# we can safely blow away any previous version of it 668cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete 678cd05ab6SPeter Maydell# it when configure exits.) 688cd05ab6SPeter MaydellTMPDIR1="config-temp" 698cd05ab6SPeter Maydellrm -rf "${TMPDIR1}" 708cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}" 718cd05ab6SPeter Maydellif [ $? -ne 0 ]; then 728cd05ab6SPeter Maydell echo "ERROR: failed to create temporary directory" 738cd05ab6SPeter Maydell exit 1 747d13299dSbellardfi 757d13299dSbellard 768cd05ab6SPeter MaydellTMPB="qemu-conf" 778cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c" 7866518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o" 799c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx" 808cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe" 816969ec6cSJames ClarkeTMPMO="${TMPDIR1}/${TMPB}.mo" 8226fffe29SEmilio G. CotaTMPTXT="${TMPDIR1}/${TMPB}.txt" 837d13299dSbellard 84da1d85e3SGerd Hoffmannrm -f config.log 859ac81bbbSmalc 86b48e3611SPeter Maydell# Print a helpful header at the top of config.log 87b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 88979ae168SPeter Maydellprintf "# Configured with:" >> config.log 89979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 90979ae168SPeter Maydellecho >> config.log 91b48e3611SPeter Maydellecho "#" >> config.log 92b48e3611SPeter Maydell 93d880a3baSPaolo Bonziniprint_error() { 94d880a3baSPaolo Bonzini (echo 9576ad07a4SPeter Maydell echo "ERROR: $1" 9676ad07a4SPeter Maydell while test -n "$2"; do 9776ad07a4SPeter Maydell echo " $2" 9876ad07a4SPeter Maydell shift 9976ad07a4SPeter Maydell done 100d880a3baSPaolo Bonzini echo) >&2 101d880a3baSPaolo Bonzini} 102d880a3baSPaolo Bonzini 103d880a3baSPaolo Bonzinierror_exit() { 104d880a3baSPaolo Bonzini print_error "$@" 10576ad07a4SPeter Maydell exit 1 10676ad07a4SPeter Maydell} 10776ad07a4SPeter Maydell 1089c83ffd8SPeter Maydelldo_compiler() { 1099c83ffd8SPeter Maydell # Run the compiler, capturing its output to the log. First argument 1109c83ffd8SPeter Maydell # is compiler binary to execute. 1119c83ffd8SPeter Maydell local compiler="$1" 1129c83ffd8SPeter Maydell shift 1138bbe05d7SIan Jackson if test -n "$BASH_VERSION"; then eval ' 1148bbe05d7SIan Jackson echo >>config.log " 1158bbe05d7SIan Jacksonfuncs: ${FUNCNAME[*]} 1168bbe05d7SIan Jacksonlines: ${BASH_LINENO[*]}" 1178bbe05d7SIan Jackson '; fi 1189c83ffd8SPeter Maydell echo $compiler "$@" >> config.log 1199c83ffd8SPeter Maydell $compiler "$@" >> config.log 2>&1 || return $? 1208dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 1218dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 1228dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 1238dc38a78SPeter Maydell # obvious to developers. 1248dc38a78SPeter Maydell if test "$werror" != "yes"; then 1258dc38a78SPeter Maydell return 0 1268dc38a78SPeter Maydell fi 1278dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 1288dc38a78SPeter Maydell case "$*" in 1298dc38a78SPeter Maydell *-Werror*) 1308dc38a78SPeter Maydell return 0 1318dc38a78SPeter Maydell ;; 1328dc38a78SPeter Maydell esac 1339c83ffd8SPeter Maydell echo $compiler -Werror "$@" >> config.log 1349c83ffd8SPeter Maydell $compiler -Werror "$@" >> config.log 2>&1 && return $? 13576ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 13676ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 13776ad07a4SPeter Maydell "will be at the bottom of config.log." \ 13876ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 1398dc38a78SPeter Maydell} 1408dc38a78SPeter Maydell 1419c83ffd8SPeter Maydelldo_cc() { 1429c83ffd8SPeter Maydell do_compiler "$cc" "$@" 1439c83ffd8SPeter Maydell} 1449c83ffd8SPeter Maydell 1459c83ffd8SPeter Maydelldo_cxx() { 1469c83ffd8SPeter Maydell do_compiler "$cxx" "$@" 1479c83ffd8SPeter Maydell} 1489c83ffd8SPeter Maydell 14900849b92SRichard Henderson# Append $2 to the variable named $1, with space separation 15000849b92SRichard Hendersonadd_to() { 15100849b92SRichard Henderson eval $1=\${$1:+\"\$$1 \"}\$2 15200849b92SRichard Henderson} 15300849b92SRichard Henderson 1549c83ffd8SPeter Maydellupdate_cxxflags() { 1559c83ffd8SPeter Maydell # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 1569c83ffd8SPeter Maydell # options which some versions of GCC's C++ compiler complain about 1579c83ffd8SPeter Maydell # because they only make sense for C programs. 15853422040SPaolo Bonzini QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS" 159086d5f75SPaolo Bonzini CXXFLAGS=$(echo "$CFLAGS" | sed s/-std=gnu99/-std=gnu++11/) 1609c83ffd8SPeter Maydell for arg in $QEMU_CFLAGS; do 1619c83ffd8SPeter Maydell case $arg in 1629c83ffd8SPeter Maydell -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 1639c83ffd8SPeter Maydell -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 1649c83ffd8SPeter Maydell ;; 1659c83ffd8SPeter Maydell *) 1669c83ffd8SPeter Maydell QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 1679c83ffd8SPeter Maydell ;; 1689c83ffd8SPeter Maydell esac 1699c83ffd8SPeter Maydell done 1709c83ffd8SPeter Maydell} 1719c83ffd8SPeter Maydell 17252166aa0SJuan Quintelacompile_object() { 173fd0e6053SJohn Snow local_cflags="$1" 174086d5f75SPaolo Bonzini do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC 17552166aa0SJuan Quintela} 17652166aa0SJuan Quintela 17752166aa0SJuan Quintelacompile_prog() { 17852166aa0SJuan Quintela local_cflags="$1" 17952166aa0SJuan Quintela local_ldflags="$2" 180086d5f75SPaolo Bonzini do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $QEMU_LDFLAGS $local_ldflags 18152166aa0SJuan Quintela} 18252166aa0SJuan Quintela 18311568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 18411568d6dSPaolo Bonzinisymlink() { 18572b8b5a1SStefan Weil rm -rf "$2" 186ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 18772b8b5a1SStefan Weil ln -s "$1" "$2" 18811568d6dSPaolo Bonzini} 18911568d6dSPaolo Bonzini 1900dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 1910dba6195SLoïc Minier# executable or a builtin) 1920dba6195SLoïc Minierhas() { 1930dba6195SLoïc Minier type "$1" >/dev/null 2>&1 1940dba6195SLoïc Minier} 1950dba6195SLoïc Minier 1960dba6195SLoïc Minier# search for an executable in PATH 1970dba6195SLoïc Minierpath_of() { 1980dba6195SLoïc Minier local_command="$1" 1990dba6195SLoïc Minier local_ifs="$IFS" 2000dba6195SLoïc Minier local_dir="" 2010dba6195SLoïc Minier 2020dba6195SLoïc Minier # pathname has a dir component? 2030dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 2040dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 2050dba6195SLoïc Minier echo "$local_command" 2060dba6195SLoïc Minier return 0 2070dba6195SLoïc Minier fi 2080dba6195SLoïc Minier fi 2090dba6195SLoïc Minier if [ -z "$local_command" ]; then 2100dba6195SLoïc Minier return 1 2110dba6195SLoïc Minier fi 2120dba6195SLoïc Minier 2130dba6195SLoïc Minier IFS=: 2140dba6195SLoïc Minier for local_dir in $PATH; do 2150dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 2160dba6195SLoïc Minier echo "$local_dir/$local_command" 2170dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 2180dba6195SLoïc Minier return 0 2190dba6195SLoïc Minier fi 2200dba6195SLoïc Minier done 2210dba6195SLoïc Minier # not found 2220dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 2230dba6195SLoïc Minier return 1 2240dba6195SLoïc Minier} 2250dba6195SLoïc Minier 226*0a01d76fSMarc-André Lureauversion_ge () { 227*0a01d76fSMarc-André Lureau local_ver1=`echo $1 | tr . ' '` 228*0a01d76fSMarc-André Lureau local_ver2=`echo $2 | tr . ' '` 229*0a01d76fSMarc-André Lureau while true; do 230*0a01d76fSMarc-André Lureau set x $local_ver1 231*0a01d76fSMarc-André Lureau local_first=${2-0} 232*0a01d76fSMarc-André Lureau # shift 2 does nothing if there are less than 2 arguments 233*0a01d76fSMarc-André Lureau shift; shift 234*0a01d76fSMarc-André Lureau local_ver1=$* 235*0a01d76fSMarc-André Lureau set x $local_ver2 236*0a01d76fSMarc-André Lureau # the second argument finished, the first must be greater or equal 237*0a01d76fSMarc-André Lureau test $# = 1 && return 0 238*0a01d76fSMarc-André Lureau test $local_first -lt $2 && return 1 239*0a01d76fSMarc-André Lureau test $local_first -gt $2 && return 0 240*0a01d76fSMarc-André Lureau shift; shift 241*0a01d76fSMarc-André Lureau local_ver2=$* 242*0a01d76fSMarc-André Lureau done 243*0a01d76fSMarc-André Lureau} 244*0a01d76fSMarc-André Lureau 2455b808275SLluís Vilanovahave_backend () { 2465b808275SLluís Vilanova echo "$trace_backends" | grep "$1" >/dev/null 2475b808275SLluís Vilanova} 2485b808275SLluís Vilanova 2493b6b7550SPaolo Bonziniglob() { 2503b6b7550SPaolo Bonzini eval test -z '"${1#'"$2"'}"' 2513b6b7550SPaolo Bonzini} 2523b6b7550SPaolo Bonzini 2533b6b7550SPaolo Bonzinisupported_hax_target() { 2543b6b7550SPaolo Bonzini test "$hax" = "yes" || return 1 2553b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 2563b6b7550SPaolo Bonzini case "${1%-softmmu}" in 2573b6b7550SPaolo Bonzini i386|x86_64) 2583b6b7550SPaolo Bonzini return 0 2593b6b7550SPaolo Bonzini ;; 2603b6b7550SPaolo Bonzini esac 2613b6b7550SPaolo Bonzini return 1 2623b6b7550SPaolo Bonzini} 2633b6b7550SPaolo Bonzini 2643b6b7550SPaolo Bonzinisupported_kvm_target() { 2653b6b7550SPaolo Bonzini test "$kvm" = "yes" || return 1 2663b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 2673b6b7550SPaolo Bonzini case "${1%-softmmu}:$cpu" in 2683b6b7550SPaolo Bonzini arm:arm | aarch64:aarch64 | \ 2693b6b7550SPaolo Bonzini i386:i386 | i386:x86_64 | i386:x32 | \ 2703b6b7550SPaolo Bonzini x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \ 271aa2953fdSHuacai Chen mips:mips | mipsel:mips | mips64:mips | mips64el:mips | \ 272f8378accSRichard Henderson ppc:ppc | ppc64:ppc | ppc:ppc64 | ppc64:ppc64 | ppc64:ppc64le | \ 2733b6b7550SPaolo Bonzini s390x:s390x) 2743b6b7550SPaolo Bonzini return 0 2753b6b7550SPaolo Bonzini ;; 2763b6b7550SPaolo Bonzini esac 2773b6b7550SPaolo Bonzini return 1 2783b6b7550SPaolo Bonzini} 2793b6b7550SPaolo Bonzini 2803b6b7550SPaolo Bonzinisupported_xen_target() { 2813b6b7550SPaolo Bonzini test "$xen" = "yes" || return 1 2823b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 283b5ed2e11SPaolo Bonzini # Only i386 and x86_64 provide the xenpv machine. 284b5ed2e11SPaolo Bonzini case "${1%-softmmu}" in 285b5ed2e11SPaolo Bonzini i386|x86_64) 2863b6b7550SPaolo Bonzini return 0 2873b6b7550SPaolo Bonzini ;; 2883b6b7550SPaolo Bonzini esac 2893b6b7550SPaolo Bonzini return 1 2903b6b7550SPaolo Bonzini} 2913b6b7550SPaolo Bonzini 292c97d6d2cSSergio Andres Gomez Del Realsupported_hvf_target() { 293c97d6d2cSSergio Andres Gomez Del Real test "$hvf" = "yes" || return 1 294c97d6d2cSSergio Andres Gomez Del Real glob "$1" "*-softmmu" || return 1 295c97d6d2cSSergio Andres Gomez Del Real case "${1%-softmmu}" in 296c97d6d2cSSergio Andres Gomez Del Real x86_64) 297c97d6d2cSSergio Andres Gomez Del Real return 0 298c97d6d2cSSergio Andres Gomez Del Real ;; 299c97d6d2cSSergio Andres Gomez Del Real esac 300c97d6d2cSSergio Andres Gomez Del Real return 1 301c97d6d2cSSergio Andres Gomez Del Real} 302c97d6d2cSSergio Andres Gomez Del Real 303d661d9a4SJustin Terry (VM)supported_whpx_target() { 304d661d9a4SJustin Terry (VM) test "$whpx" = "yes" || return 1 305d661d9a4SJustin Terry (VM) glob "$1" "*-softmmu" || return 1 306d661d9a4SJustin Terry (VM) case "${1%-softmmu}" in 307d661d9a4SJustin Terry (VM) i386|x86_64) 308d661d9a4SJustin Terry (VM) return 0 309d661d9a4SJustin Terry (VM) ;; 310d661d9a4SJustin Terry (VM) esac 311d661d9a4SJustin Terry (VM) return 1 312d661d9a4SJustin Terry (VM)} 313d661d9a4SJustin Terry (VM) 314d880a3baSPaolo Bonzinisupported_target() { 315d880a3baSPaolo Bonzini case "$1" in 316d880a3baSPaolo Bonzini *-softmmu) 317d880a3baSPaolo Bonzini ;; 318d880a3baSPaolo Bonzini *-linux-user) 319d880a3baSPaolo Bonzini if test "$linux" != "yes"; then 320d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a Linux host" 321d880a3baSPaolo Bonzini return 1 322d880a3baSPaolo Bonzini fi 323d880a3baSPaolo Bonzini ;; 324d880a3baSPaolo Bonzini *-bsd-user) 325d880a3baSPaolo Bonzini if test "$bsd" != "yes"; then 326d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a BSD host" 327d880a3baSPaolo Bonzini return 1 328d880a3baSPaolo Bonzini fi 329d880a3baSPaolo Bonzini ;; 330d880a3baSPaolo Bonzini *) 331d880a3baSPaolo Bonzini print_error "Invalid target name '$target'" 332d880a3baSPaolo Bonzini return 1 333d880a3baSPaolo Bonzini ;; 334d880a3baSPaolo Bonzini esac 335b3f6ea7eSPaolo Bonzini test "$tcg" = "yes" && return 0 336b3f6ea7eSPaolo Bonzini supported_kvm_target "$1" && return 0 337b3f6ea7eSPaolo Bonzini supported_xen_target "$1" && return 0 338b3f6ea7eSPaolo Bonzini supported_hax_target "$1" && return 0 339c97d6d2cSSergio Andres Gomez Del Real supported_hvf_target "$1" && return 0 340d661d9a4SJustin Terry (VM) supported_whpx_target "$1" && return 0 341b3f6ea7eSPaolo Bonzini print_error "TCG disabled, but hardware accelerator not available for '$target'" 342b3f6ea7eSPaolo Bonzini return 1 343d880a3baSPaolo Bonzini} 344d880a3baSPaolo Bonzini 345e9a3591fSChristian Borntraeger 346e9a3591fSChristian Borntraegerld_has() { 347e9a3591fSChristian Borntraeger $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1 348e9a3591fSChristian Borntraeger} 349e9a3591fSChristian Borntraeger 3504ace32e2SAntonio Ospiteif printf %s\\n "$source_path" "$PWD" | grep -q "[[:space:]:]"; 3514ace32e2SAntonio Ospitethen 3524ace32e2SAntonio Ospite error_exit "main directory cannot contain spaces nor colons" 3534ace32e2SAntonio Ospitefi 3544ace32e2SAntonio Ospite 35514211825SAntonio Ospite# default parameters 3562ff6b91eSJuan Quintelacpu="" 357a31a8642SMichael S. Tsirkiniasl="iasl" 3581e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 35943ce4dfeSbellardstatic="no" 3607d13299dSbellardcross_prefix="" 3610c58ac1cSmalcaudio_drv_list="" 362b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 363b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 364e49d021eSPeter Maydellhost_cc="cc" 36502f9135bSDaniel P. Berrangélibs_cpu="" 36673da375eSJuan Quintelalibs_softmmu="" 3673e2e0e6bSJuan Quintelalibs_tools="" 368d5631638Smalcaudio_win_int="" 369957f1f99SMichael Rothlibs_qga="" 3705bc62e01SGerd Hoffmanndebug_info="yes" 37163678e17SSteven Noonanstack_protector="" 3721e4f6065SDaniele Buonosafe_stack="" 373afc3a8f9SAlex Bennéeuse_containers="yes" 374f2385398SAlex Bennéegdb_bin=$(command -v "gdb-multiarch" || command -v "gdb") 375ac0df51dSaliguori 37692712822SDaniel P. Berrangeif test -e "$source_path/.git" 37792712822SDaniel P. Berrangethen 378f62bbee5SDaniel P. Berrange git_update=yes 37992712822SDaniel P. Berrange git_submodules="ui/keycodemapdb" 3803ac1f813SEmilio G. Cota git_submodules="$git_submodules tests/fp/berkeley-testfloat-3" 3813ac1f813SEmilio G. Cota git_submodules="$git_submodules tests/fp/berkeley-softfloat-3" 38292712822SDaniel P. Berrangeelse 383f62bbee5SDaniel P. Berrange git_update=no 384aef45d51SDaniel P. Berrange git_submodules="" 3855c0ef67aSDaniel P. Berrangé 3865c0ef67aSDaniel P. Berrangé if ! test -f "$source_path/ui/keycodemapdb/README" 3875c0ef67aSDaniel P. Berrangé then 3885c0ef67aSDaniel P. Berrangé echo 3895c0ef67aSDaniel P. Berrangé echo "ERROR: missing file $source_path/ui/keycodemapdb/README" 3905c0ef67aSDaniel P. Berrangé echo 3915c0ef67aSDaniel P. Berrangé echo "This is not a GIT checkout but module content appears to" 3925c0ef67aSDaniel P. Berrangé echo "be missing. Do not use 'git archive' or GitHub download links" 3935c0ef67aSDaniel P. Berrangé echo "to acquire QEMU source archives. Non-GIT builds are only" 3945c0ef67aSDaniel P. Berrangé echo "supported with source archives linked from:" 3955c0ef67aSDaniel P. Berrangé echo 396a3e3b521SPeter Maydell echo " https://www.qemu.org/download/#source" 3975c0ef67aSDaniel P. Berrangé echo 3985c0ef67aSDaniel P. Berrangé echo "Developers working with GIT can use scripts/archive-source.sh" 3995c0ef67aSDaniel P. Berrangé echo "if they need to create valid source archives." 4005c0ef67aSDaniel P. Berrangé echo 4015c0ef67aSDaniel P. Berrangé exit 1 4025c0ef67aSDaniel P. Berrangé fi 40392712822SDaniel P. Berrangefi 404cc84d63aSDaniel P. Berrangegit="git" 405ac0df51dSaliguori 406afb63ebdSStefan Weil# Don't accept a target_list environment variable. 407afb63ebdSStefan Weilunset target_list 408447e133fSAlex Bennéeunset target_list_exclude 409377529c0SPaolo Bonzini 410377529c0SPaolo Bonzini# Default value for a variable defining feature "foo". 411377529c0SPaolo Bonzini# * foo="no" feature will only be used if --enable-foo arg is given 412377529c0SPaolo Bonzini# * foo="" feature will be searched for, and if found, will be used 413377529c0SPaolo Bonzini# unless --disable-foo is given 414377529c0SPaolo Bonzini# * foo="yes" this value will only be set by --enable-foo flag. 415377529c0SPaolo Bonzini# feature will searched for, 416377529c0SPaolo Bonzini# if not found, configure exits with error 417377529c0SPaolo Bonzini# 418377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args. 419377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it 420377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found. 421377529c0SPaolo Bonzini 422377529c0SPaolo Bonzinibrlapi="" 423377529c0SPaolo Bonzinicurl="" 424377529c0SPaolo Bonzinicurses="" 425377529c0SPaolo Bonzinidocs="" 426377529c0SPaolo Bonzinifdt="" 42758952137SVincenzo Maffionenetmap="no" 428377529c0SPaolo Bonzinisdl="" 429a442fe2fSDaniel P. Berrangésdl_image="" 430983eef5aSMeador Ingevirtfs="" 431fe8fc5aeSPaolo Bonzinimpath="" 432821601eaSJes Sorensenvnc="yes" 433377529c0SPaolo Bonzinisparse="no" 434377529c0SPaolo Bonzinivde="" 435377529c0SPaolo Bonzinivnc_sasl="" 436377529c0SPaolo Bonzinivnc_jpeg="" 437377529c0SPaolo Bonzinivnc_png="" 4386a021536SGerd Hoffmannxkbcommon="" 439377529c0SPaolo Bonzinixen="" 440d5b93ddfSAnthony PERARDxen_ctrl_version="" 441eb6fda0fSAnthony PERARDxen_pci_passthrough="" 442377529c0SPaolo Bonzinilinux_aio="" 443c10dd856SAarushi Mehtalinux_io_uring="" 44447e98658SCorey Bryantcap_ng="" 445377529c0SPaolo Bonziniattr="" 4464f26f2b6SAvi Kivitylibattr="" 447377529c0SPaolo Bonzinixfs="" 448b3f6ea7eSPaolo Bonzinitcg="yes" 449a40161cbSPaolo Bonzinimembarrier="" 450299e6f19SPaolo Bonzinivhost_net="" 451299e6f19SPaolo Bonzinivhost_crypto="" 452299e6f19SPaolo Bonzinivhost_scsi="" 453299e6f19SPaolo Bonzinivhost_vsock="" 454e6a74868SMarc-André Lureauvhost_user="" 45598fc1adaSDr. David Alan Gilbertvhost_user_fs="" 456d41a75a2SBradkvm="no" 457b0cb0a66SVincent Palatinhax="no" 458c97d6d2cSSergio Andres Gomez Del Realhvf="no" 459d661d9a4SJustin Terry (VM)whpx="no" 4602da776dbSMichael R. Hinesrdma="" 46121ab34c9SMarcel Apfelbaumpvrdma="" 462377529c0SPaolo Bonzinigprof="no" 463377529c0SPaolo Bonzinidebug_tcg="no" 464377529c0SPaolo Bonzinidebug="no" 465247724cbSMarc-André Lureausanitizers="no" 4660aebab04SLingfeng Yangtsan="no" 467b553a042SJohn Snowfortify_source="" 468377529c0SPaolo Bonzinistrip_opt="yes" 4699195b2c2SStefan Weiltcg_interpreter="no" 470377529c0SPaolo Bonzinibigendian="no" 471377529c0SPaolo Bonzinimingw32="no" 4721d728c39SBlue Swirlgcov="no" 4731d728c39SBlue Swirlgcov_tool="gcov" 474377529c0SPaolo BonziniEXESUF="" 47517969268SFam ZhengDSOSUF=".so" 47617969268SFam ZhengLDFLAGS_SHARED="-shared" 47717969268SFam Zhengmodules="no" 478bd83c861SChristian Ehrhardtmodule_upgrades="no" 479377529c0SPaolo Bonziniprefix="/usr/local" 4803d5eecabSGerd Hoffmannfirmwarepath="\${prefix}/share/qemu-firmware" 481377529c0SPaolo Bonziniconfsuffix="/qemu" 482675b9b53SMarc-André Lureauslirp="" 483377529c0SPaolo Bonzinioss_lib="" 484377529c0SPaolo Bonzinibsd="no" 485377529c0SPaolo Bonzinilinux="no" 486377529c0SPaolo Bonzinisolaris="no" 487377529c0SPaolo Bonziniprofiler="no" 488377529c0SPaolo Bonzinicocoa="no" 489377529c0SPaolo Bonzinisoftmmu="yes" 490377529c0SPaolo Bonzinilinux_user="no" 491377529c0SPaolo Bonzinibsd_user="no" 492377529c0SPaolo Bonziniblobs="yes" 49305dfa22bSPhilippe Mathieu-Daudéedk2_blobs="no" 494377529c0SPaolo Bonzinipkgversion="" 49540d6444eSAvi Kivitypie="" 4963556c233SPaolo Bonziniqom_cast_debug="yes" 497baf86d6bSPaolo Bonzinitrace_backends="log" 498377529c0SPaolo Bonzinitrace_file="trace" 499377529c0SPaolo Bonzinispice="" 500377529c0SPaolo Bonzinirbd="" 5017b02f544SMarc-André Lureausmartcard="" 5022b2325ffSGerd Hoffmannlibusb="" 50369354a83SHans de Goedeusb_redir="" 504da076ffeSGerd Hoffmannopengl="" 505014cb152SGerd Hoffmannopengl_dmabuf="no" 5065dd89908SRichard Hendersoncpuid_h="no" 50786583a07SLiam Merwickavx2_opt="" 5081ece9905SAlon Levyzlib="yes" 5098ca80760SRichard Hendersoncapstone="" 510b25c9dffSStefan Weillzo="" 511b25c9dffSStefan Weilsnappy="" 5126b383c08SPeter Wubzip2="" 51383bc1f97SJulio Faraccolzfse="" 5143a678481SJuan Quintelazstd="" 515e8ef31a3SMichael Tokarevguest_agent="" 516d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 51750cbebb9SMichael Rothguest_agent_ntddscsi="no" 5189dacf32dSYossi Hindinguest_agent_msi="" 519d9840e25STomoki Sekiyamavss_win32_sdk="" 520d9840e25STomoki Sekiyamawin_sdk="no" 521e10ee3f5SPhilippe Mathieu-Daudéwant_tools="" 522c589b249SRonnie Sahlberglibiscsi="" 5236542aa9cSPeter Lievenlibnfs="" 524519175a2SAlex Barcelocoroutine="" 52570c60c08SStefan Hajnoczicoroutine_pool="" 5267d992e4dSPeter Lievendebug_stack_usage="no" 527f0d92b56SLongpeng(Mike)crypto_afalg="no" 528f794573eSEduardo Otuboseccomp="" 529eb100396SBharata B Raoglusterfs="" 530d85fa9ebSJeff Codyglusterfs_xlator_opt="no" 5310c14fb47SBharata B Raoglusterfs_discard="no" 532df3a429aSNiels de Vosglusterfs_fallocate="no" 5337c815372SBharata B Raoglusterfs_zerofill="no" 534e014dbe7SPrasanna Kumar Kaleverglusterfs_ftruncate_has_stat="no" 5350e3b891fSNiels de Vosglusterfs_iocb_has_stat="no" 536a4ccabcfSAnthony Liguorigtk="" 537925a0400SGerd Hoffmanngtk_gl="no" 538a1c5e949SDaniel P. Berrangetls_priority="NORMAL" 539ddbb0d09SDaniel P. Berrangegnutls="" 54091bfcdb0SDaniel P. Berrangenettle="" 541dc2207afSDaniel P. Berrangénettle_xts="no" 54291bfcdb0SDaniel P. Berrangegcrypt="" 5431f923c70SLongpeng(Mike)gcrypt_hmac="no" 544e0576942SDaniel P. Berrangégcrypt_xts="no" 545e0576942SDaniel P. Berrangéqemu_private_xts="yes" 5468953caf3SDaniel P. Berrangeauth_pam="" 547bbbf9bfbSStefan Weilvte="" 5489d9e1521SGerd Hoffmannvirglrenderer="" 5497aaa6a16SPaolo Bonzinitpm="" 550b10d49d7SPino Toscanolibssh="" 551ed1701c6SDr. David Alan Gilbertlive_block_migration="yes" 552a99d57bbSWanlong Gaonuma="" 5532847b469SFam Zhengtcmalloc="no" 5547b01cb97SAlexandre Derumierjemalloc="no" 555a6b1d4c0SChanglong Xiereplication="yes" 5562f740136SJeff Codybochs="yes" 5572f740136SJeff Codycloop="yes" 5582f740136SJeff Codydmg="yes" 5592f740136SJeff Codyqcow1="yes" 5602f740136SJeff Codyvdi="yes" 5612f740136SJeff Codyvvfat="yes" 5622f740136SJeff Codyqed="yes" 5632f740136SJeff Codyparallels="yes" 5642f740136SJeff Codysheepdog="yes" 565ed279a06SKlim Kireevlibxml2="" 566ba59fb77SPaolo Bonzinidebug_mutex="no" 56717824406SJunyan Helibpmem="" 568f3494749SPaolo Bonzinidefault_devices="yes" 56940e8c6f4SAlex Bennéeplugins="no" 570adc28027SAlexander Bulekovfuzzing="no" 571b767d257SMarek Marczykowski-Góreckirng_none="no" 57254e7aac0SAlexey Krasikovsecret_keyring="" 57321b2eca6SJingqi Liulibdaxctl="" 574a5665051SPaolo Bonzinimeson="" 575a5665051SPaolo Bonziniskip_meson=no 576377529c0SPaolo Bonzini 577898be3e0SPeter Maydellsupported_cpu="no" 578898be3e0SPeter Maydellsupported_os="no" 579fb59dabdSPeter Maydellbogus_os="no" 5805a22ab71SYang Zhongmalloc_trim="" 581898be3e0SPeter Maydell 582ac0df51dSaliguori# parse CC options first 583ac0df51dSaliguorifor opt do 58489138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 585ac0df51dSaliguori case "$opt" in 586ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 587ac0df51dSaliguori ;; 5883d8df640SPaolo Bonzini --cc=*) CC="$optarg" 589ac0df51dSaliguori ;; 59083f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 59183f73fceSTomoki Sekiyama ;; 5922ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 5932ff6b91eSJuan Quintela ;; 594de385287SAlex Bennée --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 595db5adeaaSPaolo Bonzini QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg" 596e2a2ed06SJuan Quintela ;; 59711cde1c8SBruno Dominguez --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg" 59811cde1c8SBruno Dominguez ;; 599db5adeaaSPaolo Bonzini --extra-ldflags=*) QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg" 600f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 601e2a2ed06SJuan Quintela ;; 6025bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 6035bc62e01SGerd Hoffmann ;; 6045bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 6055bc62e01SGerd Hoffmann ;; 606d75402b5SAlex Bennée --cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option" 607d75402b5SAlex Bennée ;; 608d422b2bcSAlex Bennée --cross-cc-cflags-*) cc_arch=${opt#--cross-cc-flags-}; cc_arch=${cc_arch%%=*} 609d422b2bcSAlex Bennée eval "cross_cc_cflags_${cc_arch}=\$optarg" 6102038f8c8SPaolo Bonzini cross_cc_vars="$cross_cc_vars cross_cc_cflags_${cc_arch}" 611d422b2bcSAlex Bennée ;; 612d75402b5SAlex Bennée --cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*} 6132038f8c8SPaolo Bonzini cc_archs="$cc_archs $cc_arch" 614d75402b5SAlex Bennée eval "cross_cc_${cc_arch}=\$optarg" 6152038f8c8SPaolo Bonzini cross_cc_vars="$cross_cc_vars cross_cc_${cc_arch}" 616d75402b5SAlex Bennée ;; 617ac0df51dSaliguori esac 618ac0df51dSaliguoridone 619ac0df51dSaliguori# OS specific 620ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 62193148aa5SStefan Weil# we can eliminate its usage altogether. 622ac0df51dSaliguori 623e49d021eSPeter Maydell# Preferred compiler: 624e49d021eSPeter Maydell# ${CC} (if set) 625e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 626e49d021eSPeter Maydell# system compiler 627e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 628e49d021eSPeter Maydell cc="$host_cc" 629e49d021eSPeter Maydellelse 630b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 631e49d021eSPeter Maydellfi 632e49d021eSPeter Maydell 63383f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 63483f73fceSTomoki Sekiyama cxx="c++" 63583f73fceSTomoki Sekiyamaelse 63683f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 63783f73fceSTomoki Sekiyamafi 63883f73fceSTomoki Sekiyama 639b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 640cdbd727cSRichard Hendersonas="${AS-${cross_prefix}as}" 6415f6f0e27SRichard Hendersonccas="${CCAS-$cc}" 6423dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 643b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 644b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 6459f81aeb5SAlistair Francisranlib="${RANLIB-${cross_prefix}ranlib}" 6464852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 647b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 648b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 64917884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 65017884d7bSSergei Trofimovichquery_pkg_config() { 65117884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 65217884d7bSSergei Trofimovich} 65317884d7bSSergei Trofimovichpkg_config=query_pkg_config 65447c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 655ac0df51dSaliguori 65645d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 65745d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 65845d285abSPeter Maydell 659be17dc90SMichael S. Tsirkin# default flags for all hosts 6602d31515bSPeter Maydell# We use -fwrapv to tell the compiler that we require a C dialect where 6612d31515bSPeter Maydell# left shift of signed integers is well defined and has the expected 6622d31515bSPeter Maydell# 2s-complement style results. (Both clang and gcc agree that it 6632d31515bSPeter Maydell# provides these semantics.) 664086d5f75SPaolo BonziniQEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS" 665086d5f75SPaolo BonziniQEMU_CFLAGS="-Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 666c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 667be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 66825211446SPaolo BonziniQEMU_INCLUDES="-iquote . -iquote ${source_path} -iquote ${source_path}/accel/tcg -iquote ${source_path}/include" 66925211446SPaolo BonziniQEMU_INCLUDES="$QEMU_INCLUDES -iquote ${source_path}/disas/libvixl" 670086d5f75SPaolo BonziniCFLAGS="-std=gnu99 -Wall" 671086d5f75SPaolo Bonzini 672be17dc90SMichael S. Tsirkin 673cab00a5aSMichael S. Tsirkin# running configure in the source tree? 674cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 675cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 676cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 677cab00a5aSMichael S. Tsirkinelse 678cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 679cab00a5aSMichael S. Tsirkinfi 680cab00a5aSMichael S. Tsirkin 681ac0df51dSaliguoricheck_define() { 682ac0df51dSaliguoricat > $TMPC <<EOF 683ac0df51dSaliguori#if !defined($1) 684fd786e1aSPeter Maydell#error $1 not defined 685ac0df51dSaliguori#endif 686ac0df51dSaliguoriint main(void) { return 0; } 687ac0df51dSaliguoriEOF 68852166aa0SJuan Quintela compile_object 689ac0df51dSaliguori} 690ac0df51dSaliguori 691307119e7SGerd Hoffmanncheck_include() { 692307119e7SGerd Hoffmanncat > $TMPC <<EOF 693307119e7SGerd Hoffmann#include <$1> 694307119e7SGerd Hoffmannint main(void) { return 0; } 695307119e7SGerd HoffmannEOF 696307119e7SGerd Hoffmann compile_object 697307119e7SGerd Hoffmann} 698307119e7SGerd Hoffmann 69993b25869SJohn Snowwrite_c_skeleton() { 70093b25869SJohn Snow cat > $TMPC <<EOF 70193b25869SJohn Snowint main(void) { return 0; } 70293b25869SJohn SnowEOF 70393b25869SJohn Snow} 70493b25869SJohn Snow 705adc28027SAlexander Bulekovwrite_c_fuzzer_skeleton() { 706adc28027SAlexander Bulekov cat > $TMPC <<EOF 707adc28027SAlexander Bulekov#include <stdint.h> 708adc28027SAlexander Bulekov#include <sys/types.h> 709adc28027SAlexander Bulekovint LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size); 710adc28027SAlexander Bulekovint LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; } 711adc28027SAlexander BulekovEOF 712adc28027SAlexander Bulekov} 713adc28027SAlexander Bulekov 714bbea4050SPeter Maydellif check_define __linux__ ; then 715bbea4050SPeter Maydell targetos="Linux" 716bbea4050SPeter Maydellelif check_define _WIN32 ; then 717bbea4050SPeter Maydell targetos='MINGW32' 718bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 719bbea4050SPeter Maydell targetos='OpenBSD' 720bbea4050SPeter Maydellelif check_define __sun__ ; then 721bbea4050SPeter Maydell targetos='SunOS' 722bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 723bbea4050SPeter Maydell targetos='Haiku' 724951fedfcSPeter Maydellelif check_define __FreeBSD__ ; then 725951fedfcSPeter Maydell targetos='FreeBSD' 726951fedfcSPeter Maydellelif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then 727951fedfcSPeter Maydell targetos='GNU/kFreeBSD' 728951fedfcSPeter Maydellelif check_define __DragonFly__ ; then 729951fedfcSPeter Maydell targetos='DragonFly' 730951fedfcSPeter Maydellelif check_define __NetBSD__; then 731951fedfcSPeter Maydell targetos='NetBSD' 732951fedfcSPeter Maydellelif check_define __APPLE__; then 733951fedfcSPeter Maydell targetos='Darwin' 734bbea4050SPeter Maydellelse 735951fedfcSPeter Maydell # This is a fatal error, but don't report it yet, because we 736951fedfcSPeter Maydell # might be going to just print the --help text, or it might 737951fedfcSPeter Maydell # be the result of a missing compiler. 738951fedfcSPeter Maydell targetos='bogus' 739951fedfcSPeter Maydell bogus_os='yes' 740bbea4050SPeter Maydellfi 741bbea4050SPeter Maydell 742bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 743bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 744bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 745bbea4050SPeter Maydell# the correct CPU with the --cpu option. 746bbea4050SPeter Maydellcase $targetos in 747bbea4050SPeter MaydellDarwin) 748bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 749bbea4050SPeter Maydell # run 64-bit userspace code. 750bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 751bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 752bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 753bbea4050SPeter Maydell cpu="x86_64" 754bbea4050SPeter Maydell fi 755bbea4050SPeter Maydell ;; 756bbea4050SPeter MaydellSunOS) 75789138857SStefan Weil # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo 758bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 759bbea4050SPeter Maydell cpu="x86_64" 760bbea4050SPeter Maydell fi 761bbea4050SPeter Maydellesac 762bbea4050SPeter Maydell 7632ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 7642ff6b91eSJuan Quintela # command line argument 7652ff6b91eSJuan Quintela : 7662ff6b91eSJuan Quintelaelif check_define __i386__ ; then 767ac0df51dSaliguori cpu="i386" 768ac0df51dSaliguorielif check_define __x86_64__ ; then 769c72b26ecSRichard Henderson if check_define __ILP32__ ; then 770c72b26ecSRichard Henderson cpu="x32" 771c72b26ecSRichard Henderson else 772ac0df51dSaliguori cpu="x86_64" 773c72b26ecSRichard Henderson fi 7743aa9bd6cSblueswir1elif check_define __sparc__ ; then 7753aa9bd6cSblueswir1 if check_define __arch64__ ; then 7763aa9bd6cSblueswir1 cpu="sparc64" 7773aa9bd6cSblueswir1 else 7783aa9bd6cSblueswir1 cpu="sparc" 7793aa9bd6cSblueswir1 fi 780fdf7ed96Smalcelif check_define _ARCH_PPC ; then 781fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 782f8378accSRichard Henderson if check_define _LITTLE_ENDIAN ; then 783f8378accSRichard Henderson cpu="ppc64le" 784f8378accSRichard Henderson else 785fdf7ed96Smalc cpu="ppc64" 786f8378accSRichard Henderson fi 787ac0df51dSaliguori else 788fdf7ed96Smalc cpu="ppc" 789fdf7ed96Smalc fi 790afa05235SAurelien Jarnoelif check_define __mips__ ; then 791afa05235SAurelien Jarno cpu="mips" 792d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 793d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 794d66ed0eaSAurelien Jarno cpu="s390x" 795d66ed0eaSAurelien Jarno else 796d66ed0eaSAurelien Jarno cpu="s390" 797d66ed0eaSAurelien Jarno fi 798c4f80543SAlistair Franciselif check_define __riscv ; then 799c4f80543SAlistair Francis if check_define _LP64 ; then 800c4f80543SAlistair Francis cpu="riscv64" 801c4f80543SAlistair Francis else 802c4f80543SAlistair Francis cpu="riscv32" 803c4f80543SAlistair Francis fi 80421d89f84SPeter Maydellelif check_define __arm__ ; then 80521d89f84SPeter Maydell cpu="arm" 8061f080313SClaudio Fontanaelif check_define __aarch64__ ; then 8071f080313SClaudio Fontana cpu="aarch64" 808fdf7ed96Smalcelse 80989138857SStefan Weil cpu=$(uname -m) 810ac0df51dSaliguorifi 811ac0df51dSaliguori 812359bc95dSPeter MaydellARCH= 813359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 814359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 8157d13299dSbellardcase "$cpu" in 816ee35e968SThomas Huth ppc|ppc64|s390x|sparc64|x32|riscv32|riscv64) 817898be3e0SPeter Maydell supported_cpu="yes" 818898be3e0SPeter Maydell ;; 819f8378accSRichard Henderson ppc64le) 820f8378accSRichard Henderson ARCH="ppc64" 821f8378accSRichard Henderson supported_cpu="yes" 822f8378accSRichard Henderson ;; 8237d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 82497a847bcSbellard cpu="i386" 825898be3e0SPeter Maydell supported_cpu="yes" 8267d13299dSbellard ;; 827aaa5fa14Saurel32 x86_64|amd64) 828aaa5fa14Saurel32 cpu="x86_64" 829898be3e0SPeter Maydell supported_cpu="yes" 830aaa5fa14Saurel32 ;; 83121d89f84SPeter Maydell armv*b|armv*l|arm) 83221d89f84SPeter Maydell cpu="arm" 833898be3e0SPeter Maydell supported_cpu="yes" 8347d13299dSbellard ;; 8351f080313SClaudio Fontana aarch64) 8361f080313SClaudio Fontana cpu="aarch64" 837898be3e0SPeter Maydell supported_cpu="yes" 8381f080313SClaudio Fontana ;; 839afa05235SAurelien Jarno mips*) 840afa05235SAurelien Jarno cpu="mips" 841898be3e0SPeter Maydell supported_cpu="yes" 842afa05235SAurelien Jarno ;; 8433142255cSblueswir1 sparc|sun4[cdmuv]) 844ae228531Sbellard cpu="sparc" 8456499fd15SPeter Maydell supported_cpu="yes" 846ae228531Sbellard ;; 8477d13299dSbellard *) 848359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 849359bc95dSPeter Maydell ARCH=unknown 8507d13299dSbellard ;; 8517d13299dSbellardesac 852359bc95dSPeter Maydellif test -z "$ARCH"; then 853359bc95dSPeter Maydell ARCH="$cpu" 854359bc95dSPeter Maydellfi 855e2d52ad3SJuan Quintela 8567d13299dSbellard# OS specific 8570dbfc675SJuan Quintela 858adfc3e91SStacey Son# host *BSD for user mode 859adfc3e91SStacey SonHOST_VARIANT_DIR="" 860adfc3e91SStacey Son 8617d13299dSbellardcase $targetos in 86267b915a5SbellardMINGW32*) 86367b915a5Sbellard mingw32="yes" 864b0cb0a66SVincent Palatin hax="yes" 865299e6f19SPaolo Bonzini vhost_user="no" 8663cec7cc2SKővágó, Zoltán audio_possible_drivers="dsound sdl" 867307119e7SGerd Hoffmann if check_include dsound.h; then 8683cec7cc2SKővágó, Zoltán audio_drv_list="dsound" 869307119e7SGerd Hoffmann else 870307119e7SGerd Hoffmann audio_drv_list="" 871307119e7SGerd Hoffmann fi 872898be3e0SPeter Maydell supported_os="yes" 873469a788cSAlex Bennée pie="no" 87467b915a5Sbellard;; 8755c40d2bdSthsGNU/kFreeBSD) 876a167ba50SAurelien Jarno bsd="yes" 8776a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8780bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 8795c40d2bdSths;; 8807d3505c5SbellardFreeBSD) 8817d3505c5Sbellard bsd="yes" 8820db4a067SPaolo Bonzini make="${MAKE-gmake}" 8836a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8840bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 885f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 886f01576f1SJuergen Lock LIBS="-lutil $LIBS" 887a7764f15SEd Maste # needed for kinfo_getproc 888a7764f15SEd Maste libs_qga="-lutil $libs_qga" 88958952137SVincenzo Maffione netmap="" # enable netmap autodetect 890adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 891898be3e0SPeter Maydell supported_os="yes" 8927d3505c5Sbellard;; 893c5e97233Sblueswir1DragonFly) 894c5e97233Sblueswir1 bsd="yes" 8950db4a067SPaolo Bonzini make="${MAKE-gmake}" 8966a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 8970bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 898adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 899c5e97233Sblueswir1;; 9007d3505c5SbellardNetBSD) 9017d3505c5Sbellard bsd="yes" 902604a5b99SKamil Rytarowski hax="yes" 9030db4a067SPaolo Bonzini make="${MAKE-gmake}" 9046a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 9050bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl" 9068ef92a88Sblueswir1 oss_lib="-lossaudio" 907adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 9083c2bdbc1SKamil Rytarowski supported_os="yes" 9097d3505c5Sbellard;; 9107d3505c5SbellardOpenBSD) 9117d3505c5Sbellard bsd="yes" 9120db4a067SPaolo Bonzini make="${MAKE-gmake}" 913f92c7168SGerd Hoffmann audio_drv_list="try-sdl" 9140bac1111SKővágó, Zoltán audio_possible_drivers="sdl" 915adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 9160a773d55SBrad Smith supported_os="yes" 9177d3505c5Sbellard;; 91883fb7adfSbellardDarwin) 91983fb7adfSbellard bsd="yes" 92083fb7adfSbellard darwin="yes" 921b0cb0a66SVincent Palatin hax="yes" 922c97d6d2cSSergio Andres Gomez Del Real hvf="yes" 92317969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 9241b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 925a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 926db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-arch x86_64 $QEMU_LDFLAGS" 9271b0f9cc2Saliguori fi 928fd677642Sths cocoa="yes" 9296a485418SGerd Hoffmann audio_drv_list="coreaudio try-sdl" 93014382605SKővágó, Zoltán audio_possible_drivers="coreaudio sdl" 931db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-framework CoreFoundation -framework IOKit $QEMU_LDFLAGS" 9327973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 933a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 934a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 935a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 936adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 937898be3e0SPeter Maydell supported_os="yes" 93883fb7adfSbellard;; 939ec530c81SbellardSunOS) 940ec530c81Sbellard solaris="yes" 9410db4a067SPaolo Bonzini make="${MAKE-gmake}" 9420db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 943e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 9446b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 9456a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 9466b4d2ba1Sths fi 947c2de5c91Smalc audio_possible_drivers="oss sdl" 948d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 949d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 950d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 951d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 952560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 953560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 954560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 955ec530c81Sbellard;; 956179cf400SAndreas FärberHaiku) 957179cf400SAndreas Färber haiku="yes" 958fc433430SDavid CARLIER QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -DBSD_SOURCE $QEMU_CFLAGS" 959fc433430SDavid CARLIER LIBS="-lposix_error_mapper -lnetwork -lbsd $LIBS" 960179cf400SAndreas Färber;; 961898be3e0SPeter MaydellLinux) 9627183834aSGerd Hoffmann audio_drv_list="try-pa oss" 9630bac1111SKővágó, Zoltán audio_possible_drivers="oss alsa sdl pa" 9645327cf48Sbellard linux="yes" 965831b7825Sths linux_user="yes" 966af2be207SJan Kiszka kvm="yes" 96725211446SPaolo Bonzini QEMU_INCLUDES="-isystem ${source_path}/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES" 968898be3e0SPeter Maydell supported_os="yes" 9693efac6ebSTomáš Golembiovský libudev="yes" 970898be3e0SPeter Maydell;; 9717d13299dSbellardesac 9727d13299dSbellard 9737d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 974b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 97584778508Sblueswir1 bsd_user="yes" 9767d3505c5Sbellard fi 97708de3949SAndreas Färberfi 9787d3505c5Sbellard 9790db4a067SPaolo Bonzini: ${make=${MAKE-make}} 9800db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 981faf44142SDaniel P. Berrangé# We prefer python 3.x. A bare 'python' is traditionally 982faf44142SDaniel P. Berrangé# python 2.x, but some distros have it as python 3.x, so 983ddf90699SEduardo Habkost# we check that too 984faf44142SDaniel P. Berrangépython= 985*0a01d76fSMarc-André Lureauexplicit_python=no 986ddf90699SEduardo Habkostfor binary in "${PYTHON-python3}" python 987faf44142SDaniel P. Berrangédo 988faf44142SDaniel P. Berrangé if has "$binary" 989faf44142SDaniel P. Berrangé then 99095c5f2deSPaolo Bonzini python=$(command -v "$binary") 991faf44142SDaniel P. Berrangé break 992faf44142SDaniel P. Berrangé fi 993faf44142SDaniel P. Berrangédone 994903458c8SMarkus Armbruster 995903458c8SMarkus Armbrustersphinx_build= 996903458c8SMarkus Armbrusterfor binary in sphinx-build-3 sphinx-build 997903458c8SMarkus Armbrusterdo 998903458c8SMarkus Armbruster if has "$binary" 999903458c8SMarkus Armbruster then 1000903458c8SMarkus Armbruster sphinx_build=$(command -v "$binary") 1001903458c8SMarkus Armbruster break 1002903458c8SMarkus Armbruster fi 1003903458c8SMarkus Armbrusterdone 1004903458c8SMarkus Armbruster 100539d87c8cSAlex Bennée# Check for ancillary tools used in testing 100639d87c8cSAlex Bennéegenisoimage= 10073df437c7SAlex Bennéefor binary in genisoimage mkisofs 100839d87c8cSAlex Bennéedo 100939d87c8cSAlex Bennée if has $binary 101039d87c8cSAlex Bennée then 101139d87c8cSAlex Bennée genisoimage=$(command -v "$binary") 101239d87c8cSAlex Bennée break 101339d87c8cSAlex Bennée fi 101439d87c8cSAlex Bennéedone 101539d87c8cSAlex Bennée 1016e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 10170db4a067SPaolo Bonzini 10183c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 10193c4a4d0dSPeter Maydellif has clang; then 10203c4a4d0dSPeter Maydell objcc=clang 10213c4a4d0dSPeter Maydellelse 10223c4a4d0dSPeter Maydell objcc="$cc" 10233c4a4d0dSPeter Maydellfi 10243c4a4d0dSPeter Maydell 10253457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 10263457a3f8SJuan Quintela EXESUF=".exe" 102717969268SFam Zheng DSOSUF=".dll" 102878e9d4adSStefan Weil # MinGW needs -mthreads for TLS and macro _MT. 1029086d5f75SPaolo Bonzini CFLAGS="-mthreads $CFLAGS" 1030b965e8c5SPaolo Bonzini LIBS="-lwinmm -lws2_32 $LIBS" 103193b25869SJohn Snow write_c_skeleton; 1032f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 1033f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 1034f7cf5d5bSStefan Weil fi 1035c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 1036683035deSPaolo Bonzini confsuffix="" 1037105fad6bSBishara AbuHattoum libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga" 10383457a3f8SJuan Quintelafi 10393457a3f8SJuan Quintela 1040487fefdbSAnthony Liguoriwerror="" 104185aa5189Sbellard 10427d13299dSbellardfor opt do 104389138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 10447d13299dSbellard case "$opt" in 10452efc3265Sbellard --help|-h) show_help=yes 10462efc3265Sbellard ;; 104799123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 104899123e13SMike Frysinger ;; 1049b1a550a0Spbrook --prefix=*) prefix="$optarg" 10507d13299dSbellard ;; 1051b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 105232ce6337Sbellard ;; 1053ac0df51dSaliguori --cross-prefix=*) 10547d13299dSbellard ;; 1055ac0df51dSaliguori --cc=*) 10567d13299dSbellard ;; 1057b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 105883469015Sbellard ;; 105983f73fceSTomoki Sekiyama --cxx=*) 106083f73fceSTomoki Sekiyama ;; 1061e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 1062e007dbecSMichael S. Tsirkin ;; 10633c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 10643c4a4d0dSPeter Maydell ;; 1065b1a550a0Spbrook --make=*) make="$optarg" 10667d13299dSbellard ;; 10676a882643Spbrook --install=*) install="$optarg" 10686a882643Spbrook ;; 1069*0a01d76fSMarc-André Lureau --python=*) python="$optarg" ; explicit_python=yes 1070c886edfbSBlue Swirl ;; 10712eb054c2SPeter Maydell --sphinx-build=*) sphinx_build="$optarg" 10722eb054c2SPeter Maydell ;; 1073a5665051SPaolo Bonzini --skip-meson) skip_meson=yes 1074a5665051SPaolo Bonzini ;; 1075a5665051SPaolo Bonzini --meson=*) meson="$optarg" 1076a5665051SPaolo Bonzini ;; 10771d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 10781d728c39SBlue Swirl ;; 1079e2d8830eSBrad --smbd=*) smbd="$optarg" 1080e2d8830eSBrad ;; 1081e2a2ed06SJuan Quintela --extra-cflags=*) 10827d13299dSbellard ;; 108311cde1c8SBruno Dominguez --extra-cxxflags=*) 108411cde1c8SBruno Dominguez ;; 1085e2a2ed06SJuan Quintela --extra-ldflags=*) 10867d13299dSbellard ;; 10875bc62e01SGerd Hoffmann --enable-debug-info) 10885bc62e01SGerd Hoffmann ;; 10895bc62e01SGerd Hoffmann --disable-debug-info) 10905bc62e01SGerd Hoffmann ;; 1091d75402b5SAlex Bennée --cross-cc-*) 1092d75402b5SAlex Bennée ;; 109317969268SFam Zheng --enable-modules) 109417969268SFam Zheng modules="yes" 109517969268SFam Zheng ;; 10963aa88b31SStefan Hajnoczi --disable-modules) 10973aa88b31SStefan Hajnoczi modules="no" 10983aa88b31SStefan Hajnoczi ;; 1099bd83c861SChristian Ehrhardt --disable-module-upgrades) module_upgrades="no" 1100bd83c861SChristian Ehrhardt ;; 1101bd83c861SChristian Ehrhardt --enable-module-upgrades) module_upgrades="yes" 1102bd83c861SChristian Ehrhardt ;; 11032ff6b91eSJuan Quintela --cpu=*) 11047d13299dSbellard ;; 1105b1a550a0Spbrook --target-list=*) target_list="$optarg" 1106447e133fSAlex Bennée if test "$target_list_exclude"; then 1107447e133fSAlex Bennée error_exit "Can't mix --target-list with --target-list-exclude" 1108447e133fSAlex Bennée fi 1109447e133fSAlex Bennée ;; 1110447e133fSAlex Bennée --target-list-exclude=*) target_list_exclude="$optarg" 1111447e133fSAlex Bennée if test "$target_list"; then 1112447e133fSAlex Bennée error_exit "Can't mix --target-list-exclude with --target-list" 1113447e133fSAlex Bennée fi 1114de83cd02Sbellard ;; 11155b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 11165b808275SLluís Vilanova ;; 11175b808275SLluís Vilanova # XXX: backwards compatibility 11185b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 111994a420b1SStefan Hajnoczi ;; 112074242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 11219410b56cSPrerna Saxena ;; 1122f3494749SPaolo Bonzini --with-default-devices) default_devices="yes" 1123f3494749SPaolo Bonzini ;; 1124f3494749SPaolo Bonzini --without-default-devices) default_devices="no" 1125f3494749SPaolo Bonzini ;; 11267d13299dSbellard --enable-gprof) gprof="yes" 11277d13299dSbellard ;; 11281d728c39SBlue Swirl --enable-gcov) gcov="yes" 11291d728c39SBlue Swirl ;; 113079427693SLoïc Minier --static) 113179427693SLoïc Minier static="yes" 113217884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 113343ce4dfeSbellard ;; 11340b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 11350b24e75fSPaolo Bonzini ;; 11360b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 11370b24e75fSPaolo Bonzini ;; 11383aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 11393aa5d2beSAlon Levy ;; 11408bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 11418bf188aaSMichael Tokarev ;; 11420f94d6daSAlon Levy --includedir=*) includedir="$optarg" 11430f94d6daSAlon Levy ;; 1144528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 11450b24e75fSPaolo Bonzini ;; 1146023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 1147023d3d67SEduardo Habkost ;; 1148850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 11490b24e75fSPaolo Bonzini ;; 1150ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 115107381cc1SAnthony Liguori ;; 1152785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 1153785c23aeSLuiz Capitulino ;; 11543d5eecabSGerd Hoffmann --firmwarepath=*) firmwarepath="$optarg" 11553d5eecabSGerd Hoffmann ;; 1156181ce1d0SOlaf Hering --host=*|--build=*|\ 1157181ce1d0SOlaf Hering --disable-dependency-tracking|\ 1158785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 1159023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 1160023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 1161023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 1162023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 1163023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 1164023ddd74SMax Filippov # lots of directory switches by default. 1165023ddd74SMax Filippov ;; 116697a847bcSbellard --disable-sdl) sdl="no" 116797a847bcSbellard ;; 1168c4198157SJuan Quintela --enable-sdl) sdl="yes" 1169c4198157SJuan Quintela ;; 1170a442fe2fSDaniel P. Berrangé --disable-sdl-image) sdl_image="no" 1171a442fe2fSDaniel P. Berrangé ;; 1172a442fe2fSDaniel P. Berrangé --enable-sdl-image) sdl_image="yes" 1173a442fe2fSDaniel P. Berrangé ;; 11743556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 11753556c233SPaolo Bonzini ;; 11763556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 11773556c233SPaolo Bonzini ;; 1178983eef5aSMeador Inge --disable-virtfs) virtfs="no" 1179983eef5aSMeador Inge ;; 1180983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 1181983eef5aSMeador Inge ;; 1182fe8fc5aeSPaolo Bonzini --disable-mpath) mpath="no" 1183fe8fc5aeSPaolo Bonzini ;; 1184fe8fc5aeSPaolo Bonzini --enable-mpath) mpath="yes" 1185fe8fc5aeSPaolo Bonzini ;; 1186821601eaSJes Sorensen --disable-vnc) vnc="no" 1187821601eaSJes Sorensen ;; 1188821601eaSJes Sorensen --enable-vnc) vnc="yes" 1189821601eaSJes Sorensen ;; 11902f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 11912f6a1ab0Sblueswir1 ;; 11920c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 11930c58ac1cSmalc ;; 119489138857SStefan Weil --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1195b64ec4e4SFam Zheng ;; 119689138857SStefan Weil --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1197eb852011SMarkus Armbruster ;; 1198f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 1199f8393946Saurel32 ;; 1200f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 1201f8393946Saurel32 ;; 1202f3d08ee6SPaul Brook --enable-debug) 1203f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 1204f3d08ee6SPaul Brook debug_tcg="yes" 12051fcc6d42SPeter Xu debug_mutex="yes" 1206f3d08ee6SPaul Brook debug="yes" 1207f3d08ee6SPaul Brook strip_opt="no" 1208b553a042SJohn Snow fortify_source="no" 1209f3d08ee6SPaul Brook ;; 1210247724cbSMarc-André Lureau --enable-sanitizers) sanitizers="yes" 1211247724cbSMarc-André Lureau ;; 1212247724cbSMarc-André Lureau --disable-sanitizers) sanitizers="no" 1213247724cbSMarc-André Lureau ;; 12140aebab04SLingfeng Yang --enable-tsan) tsan="yes" 12150aebab04SLingfeng Yang ;; 12160aebab04SLingfeng Yang --disable-tsan) tsan="no" 12170aebab04SLingfeng Yang ;; 121803b4fe7dSaliguori --enable-sparse) sparse="yes" 121903b4fe7dSaliguori ;; 122003b4fe7dSaliguori --disable-sparse) sparse="no" 122103b4fe7dSaliguori ;; 12221625af87Saliguori --disable-strip) strip_opt="no" 12231625af87Saliguori ;; 12242f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 12252f9606b3Saliguori ;; 1226ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 1227ea784e3bSJuan Quintela ;; 12282f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 12292f6f5c7aSCorentin Chary ;; 12302f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 12312f6f5c7aSCorentin Chary ;; 1232efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 1233efe556adSCorentin Chary ;; 1234efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 1235efe556adSCorentin Chary ;; 1236443f1376Sbellard --disable-slirp) slirp="no" 1237c20709aaSbellard ;; 12387c57bdd8SMarc-André Lureau --enable-slirp=git) slirp="git" 12397c57bdd8SMarc-André Lureau ;; 1240675b9b53SMarc-André Lureau --enable-slirp=system) slirp="system" 1241675b9b53SMarc-André Lureau ;; 1242e0e6c8c0Saliguori --disable-vde) vde="no" 12438a16d273Sths ;; 1244dfb278bdSJuan Quintela --enable-vde) vde="yes" 1245dfb278bdSJuan Quintela ;; 124658952137SVincenzo Maffione --disable-netmap) netmap="no" 124758952137SVincenzo Maffione ;; 124858952137SVincenzo Maffione --enable-netmap) netmap="yes" 124958952137SVincenzo Maffione ;; 1250e37630caSaliguori --disable-xen) xen="no" 1251e37630caSaliguori ;; 1252fc321b4bSJuan Quintela --enable-xen) xen="yes" 1253fc321b4bSJuan Quintela ;; 1254eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 1255eb6fda0fSAnthony PERARD ;; 1256eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 1257eb6fda0fSAnthony PERARD ;; 12582e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 12592e4d9fb1Saurel32 ;; 12604ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 12614ffcedb6SJuan Quintela ;; 12627ba1e619Saliguori --disable-kvm) kvm="no" 12637ba1e619Saliguori ;; 1264b31a0277SJuan Quintela --enable-kvm) kvm="yes" 1265b31a0277SJuan Quintela ;; 1266b0cb0a66SVincent Palatin --disable-hax) hax="no" 1267180fb750Szhanghailiang ;; 1268b0cb0a66SVincent Palatin --enable-hax) hax="yes" 1269180fb750Szhanghailiang ;; 1270c97d6d2cSSergio Andres Gomez Del Real --disable-hvf) hvf="no" 1271c97d6d2cSSergio Andres Gomez Del Real ;; 1272c97d6d2cSSergio Andres Gomez Del Real --enable-hvf) hvf="yes" 1273c97d6d2cSSergio Andres Gomez Del Real ;; 1274d661d9a4SJustin Terry (VM) --disable-whpx) whpx="no" 1275d661d9a4SJustin Terry (VM) ;; 1276d661d9a4SJustin Terry (VM) --enable-whpx) whpx="yes" 1277d661d9a4SJustin Terry (VM) ;; 12789195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 12799195b2c2SStefan Weil ;; 12809195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 12819195b2c2SStefan Weil ;; 128247e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 128347e98658SCorey Bryant ;; 128447e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 128547e98658SCorey Bryant ;; 1286b3f6ea7eSPaolo Bonzini --disable-tcg) tcg="no" 1287b3f6ea7eSPaolo Bonzini ;; 1288b3f6ea7eSPaolo Bonzini --enable-tcg) tcg="yes" 1289b3f6ea7eSPaolo Bonzini ;; 12905a22ab71SYang Zhong --disable-malloc-trim) malloc_trim="no" 12915a22ab71SYang Zhong ;; 12925a22ab71SYang Zhong --enable-malloc-trim) malloc_trim="yes" 12935a22ab71SYang Zhong ;; 1294cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 1295cd4ec0b4SGerd Hoffmann ;; 1296cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 1297cd4ec0b4SGerd Hoffmann ;; 1298c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 1299c589b249SRonnie Sahlberg ;; 1300c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 1301c589b249SRonnie Sahlberg ;; 13026542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 13036542aa9cSPeter Lieven ;; 13046542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 13056542aa9cSPeter Lieven ;; 130605c2a3e7Sbellard --enable-profiler) profiler="yes" 130705c2a3e7Sbellard ;; 130814821030SPavel Borzenkov --disable-cocoa) cocoa="no" 130914821030SPavel Borzenkov ;; 1310c2de5c91Smalc --enable-cocoa) 1311c2de5c91Smalc cocoa="yes" ; 131289138857SStefan Weil audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)" 13135b0753e0Sbellard ;; 1314cad25d69Spbrook --disable-system) softmmu="no" 13150a8e90f4Spbrook ;; 1316cad25d69Spbrook --enable-system) softmmu="yes" 13170a8e90f4Spbrook ;; 13180953a80fSZachary Amsden --disable-user) 13190953a80fSZachary Amsden linux_user="no" ; 13200953a80fSZachary Amsden bsd_user="no" ; 13210953a80fSZachary Amsden ;; 13220953a80fSZachary Amsden --enable-user) ;; 1323831b7825Sths --disable-linux-user) linux_user="no" 13240a8e90f4Spbrook ;; 1325831b7825Sths --enable-linux-user) linux_user="yes" 1326831b7825Sths ;; 132784778508Sblueswir1 --disable-bsd-user) bsd_user="no" 132884778508Sblueswir1 ;; 132984778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 133084778508Sblueswir1 ;; 133140d6444eSAvi Kivity --enable-pie) pie="yes" 133234005a00SKirill A. Shutemov ;; 133340d6444eSAvi Kivity --disable-pie) pie="no" 133434005a00SKirill A. Shutemov ;; 133585aa5189Sbellard --enable-werror) werror="yes" 133685aa5189Sbellard ;; 133785aa5189Sbellard --disable-werror) werror="no" 133885aa5189Sbellard ;; 133963678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 134063678e17SSteven Noonan ;; 134163678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 134263678e17SSteven Noonan ;; 13431e4f6065SDaniele Buono --enable-safe-stack) safe_stack="yes" 13441e4f6065SDaniele Buono ;; 13451e4f6065SDaniele Buono --disable-safe-stack) safe_stack="no" 13461e4f6065SDaniele Buono ;; 13474d3b6f6eSbalrog --disable-curses) curses="no" 13484d3b6f6eSbalrog ;; 1349c584a6d0SJuan Quintela --enable-curses) curses="yes" 1350c584a6d0SJuan Quintela ;; 1351e08bb301SSamuel Thibault --disable-iconv) iconv="no" 1352e08bb301SSamuel Thibault ;; 1353e08bb301SSamuel Thibault --enable-iconv) iconv="yes" 1354e08bb301SSamuel Thibault ;; 1355769ce76dSAlexander Graf --disable-curl) curl="no" 1356769ce76dSAlexander Graf ;; 1357788c8196SJuan Quintela --enable-curl) curl="yes" 1358788c8196SJuan Quintela ;; 13592df87df7SJuan Quintela --disable-fdt) fdt="no" 13602df87df7SJuan Quintela ;; 13612df87df7SJuan Quintela --enable-fdt) fdt="yes" 13622df87df7SJuan Quintela ;; 13635c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 13645c6c3a6cSChristoph Hellwig ;; 13655c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 13665c6c3a6cSChristoph Hellwig ;; 1367c10dd856SAarushi Mehta --disable-linux-io-uring) linux_io_uring="no" 1368c10dd856SAarushi Mehta ;; 1369c10dd856SAarushi Mehta --enable-linux-io-uring) linux_io_uring="yes" 1370c10dd856SAarushi Mehta ;; 1371758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 1372758e8e38SVenkateswararao Jujjuri (JV) ;; 1373758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 1374758e8e38SVenkateswararao Jujjuri (JV) ;; 1375a40161cbSPaolo Bonzini --disable-membarrier) membarrier="no" 1376a40161cbSPaolo Bonzini ;; 1377a40161cbSPaolo Bonzini --enable-membarrier) membarrier="yes" 1378a40161cbSPaolo Bonzini ;; 137977755340Sths --disable-blobs) blobs="no" 138077755340Sths ;; 13817e563bfbSThomas Huth --with-pkgversion=*) pkgversion="$optarg" 13824a19f1ecSpbrook ;; 1383519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1384519175a2SAlex Barcelo ;; 138570c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 138670c60c08SStefan Hajnoczi ;; 138770c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 138870c60c08SStefan Hajnoczi ;; 13897d992e4dSPeter Lieven --enable-debug-stack-usage) debug_stack_usage="yes" 13907d992e4dSPeter Lieven ;; 1391f0d92b56SLongpeng(Mike) --enable-crypto-afalg) crypto_afalg="yes" 1392f0d92b56SLongpeng(Mike) ;; 1393f0d92b56SLongpeng(Mike) --disable-crypto-afalg) crypto_afalg="no" 1394f0d92b56SLongpeng(Mike) ;; 1395a25dba17SJuan Quintela --disable-docs) docs="no" 139670ec5dc0SAnthony Liguori ;; 1397a25dba17SJuan Quintela --enable-docs) docs="yes" 139883a3ab8bSJuan Quintela ;; 1399d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1400d5970055SMichael S. Tsirkin ;; 1401d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1402d5970055SMichael S. Tsirkin ;; 1403042cea27SGonglei --disable-vhost-crypto) vhost_crypto="no" 1404042cea27SGonglei ;; 1405299e6f19SPaolo Bonzini --enable-vhost-crypto) vhost_crypto="yes" 1406042cea27SGonglei ;; 14075e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 14085e9be92dSNicholas Bellinger ;; 14095e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 14105e9be92dSNicholas Bellinger ;; 1411fc0b9b0eSStefan Hajnoczi --disable-vhost-vsock) vhost_vsock="no" 1412fc0b9b0eSStefan Hajnoczi ;; 1413fc0b9b0eSStefan Hajnoczi --enable-vhost-vsock) vhost_vsock="yes" 1414fc0b9b0eSStefan Hajnoczi ;; 141598fc1adaSDr. David Alan Gilbert --disable-vhost-user-fs) vhost_user_fs="no" 141698fc1adaSDr. David Alan Gilbert ;; 141798fc1adaSDr. David Alan Gilbert --enable-vhost-user-fs) vhost_user_fs="yes" 141898fc1adaSDr. David Alan Gilbert ;; 1419da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 142020ff075bSMichael Walle ;; 1421da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 142220ff075bSMichael Walle ;; 1423f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1424f27aaf4bSChristian Brunner ;; 1425f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1426f27aaf4bSChristian Brunner ;; 14278c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 14288c84cf11SSergei Trofimovich ;; 14298c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 14308c84cf11SSergei Trofimovich ;; 14317b02f544SMarc-André Lureau --disable-smartcard) smartcard="no" 1432111a38b0SRobert Relyea ;; 14337b02f544SMarc-André Lureau --enable-smartcard) smartcard="yes" 1434111a38b0SRobert Relyea ;; 14352b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 14362b2325ffSGerd Hoffmann ;; 14372b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 14382b2325ffSGerd Hoffmann ;; 143969354a83SHans de Goede --disable-usb-redir) usb_redir="no" 144069354a83SHans de Goede ;; 144169354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 144269354a83SHans de Goede ;; 14431ece9905SAlon Levy --disable-zlib-test) zlib="no" 14441ece9905SAlon Levy ;; 1445b25c9dffSStefan Weil --disable-lzo) lzo="no" 1446b25c9dffSStefan Weil ;; 1447607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1448607dacd0Sqiaonuohan ;; 1449b25c9dffSStefan Weil --disable-snappy) snappy="no" 1450b25c9dffSStefan Weil ;; 1451607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1452607dacd0Sqiaonuohan ;; 14536b383c08SPeter Wu --disable-bzip2) bzip2="no" 14546b383c08SPeter Wu ;; 14556b383c08SPeter Wu --enable-bzip2) bzip2="yes" 14566b383c08SPeter Wu ;; 145783bc1f97SJulio Faracco --enable-lzfse) lzfse="yes" 145883bc1f97SJulio Faracco ;; 145983bc1f97SJulio Faracco --disable-lzfse) lzfse="no" 146083bc1f97SJulio Faracco ;; 14613a678481SJuan Quintela --disable-zstd) zstd="no" 14623a678481SJuan Quintela ;; 14633a678481SJuan Quintela --enable-zstd) zstd="yes" 14643a678481SJuan Quintela ;; 1465d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1466d138cee9SMichael Roth ;; 1467d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1468d138cee9SMichael Roth ;; 14699dacf32dSYossi Hindin --enable-guest-agent-msi) guest_agent_msi="yes" 14709dacf32dSYossi Hindin ;; 14719dacf32dSYossi Hindin --disable-guest-agent-msi) guest_agent_msi="no" 14729dacf32dSYossi Hindin ;; 1473d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1474d9840e25STomoki Sekiyama ;; 1475d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1476d9840e25STomoki Sekiyama ;; 1477d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1478d9840e25STomoki Sekiyama ;; 1479d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1480d9840e25STomoki Sekiyama ;; 1481d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1482d9840e25STomoki Sekiyama ;; 1483d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1484d9840e25STomoki Sekiyama ;; 14854b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 14864b1c11fdSDaniel P. Berrange ;; 14874b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 14884b1c11fdSDaniel P. Berrange ;; 1489f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1490f794573eSEduardo Otubo ;; 1491f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1492f794573eSEduardo Otubo ;; 1493eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1494eb100396SBharata B Rao ;; 149586583a07SLiam Merwick --disable-avx2) avx2_opt="no" 149686583a07SLiam Merwick ;; 149786583a07SLiam Merwick --enable-avx2) avx2_opt="yes" 149886583a07SLiam Merwick ;; 14996b8cd447SRobert Hoo --disable-avx512f) avx512f_opt="no" 15006b8cd447SRobert Hoo ;; 15016b8cd447SRobert Hoo --enable-avx512f) avx512f_opt="yes" 15026b8cd447SRobert Hoo ;; 15036b8cd447SRobert Hoo 1504eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1505eb100396SBharata B Rao ;; 150652b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 150752b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1508583f6e7bSStefan Hajnoczi ;; 1509cb6414dfSFam Zheng --enable-vhdx|--disable-vhdx) 1510cb6414dfSFam Zheng echo "$0: $opt is obsolete, VHDX driver is always built" >&2 1511cb6414dfSFam Zheng ;; 1512315d3184SFam Zheng --enable-uuid|--disable-uuid) 1513315d3184SFam Zheng echo "$0: $opt is obsolete, UUID support is always built" >&2 1514315d3184SFam Zheng ;; 1515a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1516a4ccabcfSAnthony Liguori ;; 1517a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1518a4ccabcfSAnthony Liguori ;; 1519a1c5e949SDaniel P. Berrange --tls-priority=*) tls_priority="$optarg" 1520a1c5e949SDaniel P. Berrange ;; 1521ddbb0d09SDaniel P. Berrange --disable-gnutls) gnutls="no" 1522ddbb0d09SDaniel P. Berrange ;; 1523ddbb0d09SDaniel P. Berrange --enable-gnutls) gnutls="yes" 1524ddbb0d09SDaniel P. Berrange ;; 152591bfcdb0SDaniel P. Berrange --disable-nettle) nettle="no" 152691bfcdb0SDaniel P. Berrange ;; 152791bfcdb0SDaniel P. Berrange --enable-nettle) nettle="yes" 152891bfcdb0SDaniel P. Berrange ;; 152991bfcdb0SDaniel P. Berrange --disable-gcrypt) gcrypt="no" 153091bfcdb0SDaniel P. Berrange ;; 153191bfcdb0SDaniel P. Berrange --enable-gcrypt) gcrypt="yes" 153291bfcdb0SDaniel P. Berrange ;; 15338953caf3SDaniel P. Berrange --disable-auth-pam) auth_pam="no" 15348953caf3SDaniel P. Berrange ;; 15358953caf3SDaniel P. Berrange --enable-auth-pam) auth_pam="yes" 15368953caf3SDaniel P. Berrange ;; 15372da776dbSMichael R. Hines --enable-rdma) rdma="yes" 15382da776dbSMichael R. Hines ;; 15392da776dbSMichael R. Hines --disable-rdma) rdma="no" 15402da776dbSMichael R. Hines ;; 154121ab34c9SMarcel Apfelbaum --enable-pvrdma) pvrdma="yes" 154221ab34c9SMarcel Apfelbaum ;; 154321ab34c9SMarcel Apfelbaum --disable-pvrdma) pvrdma="no" 154421ab34c9SMarcel Apfelbaum ;; 1545bbbf9bfbSStefan Weil --disable-vte) vte="no" 1546bbbf9bfbSStefan Weil ;; 1547bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1548bbbf9bfbSStefan Weil ;; 15499d9e1521SGerd Hoffmann --disable-virglrenderer) virglrenderer="no" 15509d9e1521SGerd Hoffmann ;; 15519d9e1521SGerd Hoffmann --enable-virglrenderer) virglrenderer="yes" 15529d9e1521SGerd Hoffmann ;; 1553e91c793cSCole Robinson --disable-tpm) tpm="no" 1554e91c793cSCole Robinson ;; 1555ab214c29SStefan Berger --enable-tpm) tpm="yes" 1556ab214c29SStefan Berger ;; 1557b10d49d7SPino Toscano --disable-libssh) libssh="no" 15580a12ec87SRichard W.M. Jones ;; 1559b10d49d7SPino Toscano --enable-libssh) libssh="yes" 15600a12ec87SRichard W.M. Jones ;; 1561ed1701c6SDr. David Alan Gilbert --disable-live-block-migration) live_block_migration="no" 1562ed1701c6SDr. David Alan Gilbert ;; 1563ed1701c6SDr. David Alan Gilbert --enable-live-block-migration) live_block_migration="yes" 1564ed1701c6SDr. David Alan Gilbert ;; 1565a99d57bbSWanlong Gao --disable-numa) numa="no" 1566a99d57bbSWanlong Gao ;; 1567a99d57bbSWanlong Gao --enable-numa) numa="yes" 1568a99d57bbSWanlong Gao ;; 1569ed279a06SKlim Kireev --disable-libxml2) libxml2="no" 1570ed279a06SKlim Kireev ;; 1571ed279a06SKlim Kireev --enable-libxml2) libxml2="yes" 1572ed279a06SKlim Kireev ;; 15732847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 15742847b469SFam Zheng ;; 15752847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 15762847b469SFam Zheng ;; 15777b01cb97SAlexandre Derumier --disable-jemalloc) jemalloc="no" 15787b01cb97SAlexandre Derumier ;; 15797b01cb97SAlexandre Derumier --enable-jemalloc) jemalloc="yes" 15807b01cb97SAlexandre Derumier ;; 1581a6b1d4c0SChanglong Xie --disable-replication) replication="no" 1582a6b1d4c0SChanglong Xie ;; 1583a6b1d4c0SChanglong Xie --enable-replication) replication="yes" 1584a6b1d4c0SChanglong Xie ;; 15852f740136SJeff Cody --disable-bochs) bochs="no" 15862f740136SJeff Cody ;; 15872f740136SJeff Cody --enable-bochs) bochs="yes" 15882f740136SJeff Cody ;; 15892f740136SJeff Cody --disable-cloop) cloop="no" 15902f740136SJeff Cody ;; 15912f740136SJeff Cody --enable-cloop) cloop="yes" 15922f740136SJeff Cody ;; 15932f740136SJeff Cody --disable-dmg) dmg="no" 15942f740136SJeff Cody ;; 15952f740136SJeff Cody --enable-dmg) dmg="yes" 15962f740136SJeff Cody ;; 15972f740136SJeff Cody --disable-qcow1) qcow1="no" 15982f740136SJeff Cody ;; 15992f740136SJeff Cody --enable-qcow1) qcow1="yes" 16002f740136SJeff Cody ;; 16012f740136SJeff Cody --disable-vdi) vdi="no" 16022f740136SJeff Cody ;; 16032f740136SJeff Cody --enable-vdi) vdi="yes" 16042f740136SJeff Cody ;; 16052f740136SJeff Cody --disable-vvfat) vvfat="no" 16062f740136SJeff Cody ;; 16072f740136SJeff Cody --enable-vvfat) vvfat="yes" 16082f740136SJeff Cody ;; 16092f740136SJeff Cody --disable-qed) qed="no" 16102f740136SJeff Cody ;; 16112f740136SJeff Cody --enable-qed) qed="yes" 16122f740136SJeff Cody ;; 16132f740136SJeff Cody --disable-parallels) parallels="no" 16142f740136SJeff Cody ;; 16152f740136SJeff Cody --enable-parallels) parallels="yes" 16162f740136SJeff Cody ;; 16172f740136SJeff Cody --disable-sheepdog) sheepdog="no" 16182f740136SJeff Cody ;; 16192f740136SJeff Cody --enable-sheepdog) sheepdog="yes" 16202f740136SJeff Cody ;; 1621e6a74868SMarc-André Lureau --disable-vhost-user) vhost_user="no" 1622e6a74868SMarc-André Lureau ;; 1623299e6f19SPaolo Bonzini --enable-vhost-user) vhost_user="yes" 1624299e6f19SPaolo Bonzini ;; 1625108a6481SCindy Lu --disable-vhost-vdpa) vhost_vdpa="no" 1626108a6481SCindy Lu ;; 1627108a6481SCindy Lu --enable-vhost-vdpa) vhost_vdpa="yes" 1628108a6481SCindy Lu ;; 1629299e6f19SPaolo Bonzini --disable-vhost-kernel) vhost_kernel="no" 1630299e6f19SPaolo Bonzini ;; 1631299e6f19SPaolo Bonzini --enable-vhost-kernel) vhost_kernel="yes" 1632e6a74868SMarc-André Lureau ;; 16338ca80760SRichard Henderson --disable-capstone) capstone="no" 16348ca80760SRichard Henderson ;; 16358ca80760SRichard Henderson --enable-capstone) capstone="yes" 16368ca80760SRichard Henderson ;; 1637e219c499SRichard Henderson --enable-capstone=git) capstone="git" 1638e219c499SRichard Henderson ;; 1639e219c499SRichard Henderson --enable-capstone=system) capstone="system" 1640e219c499SRichard Henderson ;; 1641cc84d63aSDaniel P. Berrange --with-git=*) git="$optarg" 1642cc84d63aSDaniel P. Berrange ;; 1643f62bbee5SDaniel P. Berrange --enable-git-update) git_update=yes 1644f62bbee5SDaniel P. Berrange ;; 1645f62bbee5SDaniel P. Berrange --disable-git-update) git_update=no 1646f62bbee5SDaniel P. Berrange ;; 1647ba59fb77SPaolo Bonzini --enable-debug-mutex) debug_mutex=yes 1648ba59fb77SPaolo Bonzini ;; 1649ba59fb77SPaolo Bonzini --disable-debug-mutex) debug_mutex=no 1650ba59fb77SPaolo Bonzini ;; 165117824406SJunyan He --enable-libpmem) libpmem=yes 165217824406SJunyan He ;; 165317824406SJunyan He --disable-libpmem) libpmem=no 165417824406SJunyan He ;; 165575411919SJames Le Cuirot --enable-xkbcommon) xkbcommon=yes 165675411919SJames Le Cuirot ;; 165775411919SJames Le Cuirot --disable-xkbcommon) xkbcommon=no 165875411919SJames Le Cuirot ;; 165940e8c6f4SAlex Bennée --enable-plugins) plugins="yes" 166040e8c6f4SAlex Bennée ;; 166140e8c6f4SAlex Bennée --disable-plugins) plugins="no" 166240e8c6f4SAlex Bennée ;; 1663afc3a8f9SAlex Bennée --enable-containers) use_containers="yes" 1664afc3a8f9SAlex Bennée ;; 1665afc3a8f9SAlex Bennée --disable-containers) use_containers="no" 1666afc3a8f9SAlex Bennée ;; 1667adc28027SAlexander Bulekov --enable-fuzzing) fuzzing=yes 1668adc28027SAlexander Bulekov ;; 1669adc28027SAlexander Bulekov --disable-fuzzing) fuzzing=no 1670adc28027SAlexander Bulekov ;; 1671f48e590aSAlex Bennée --gdb=*) gdb_bin="$optarg" 1672f48e590aSAlex Bennée ;; 1673b767d257SMarek Marczykowski-Górecki --enable-rng-none) rng_none=yes 1674b767d257SMarek Marczykowski-Górecki ;; 1675b767d257SMarek Marczykowski-Górecki --disable-rng-none) rng_none=no 1676b767d257SMarek Marczykowski-Górecki ;; 167754e7aac0SAlexey Krasikov --enable-keyring) secret_keyring="yes" 167854e7aac0SAlexey Krasikov ;; 167954e7aac0SAlexey Krasikov --disable-keyring) secret_keyring="no" 168054e7aac0SAlexey Krasikov ;; 168121b2eca6SJingqi Liu --enable-libdaxctl) libdaxctl=yes 168221b2eca6SJingqi Liu ;; 168321b2eca6SJingqi Liu --disable-libdaxctl) libdaxctl=no 168421b2eca6SJingqi Liu ;; 16852d2ad6d0SFam Zheng *) 16862d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 16872d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 16882d2ad6d0SFam Zheng exit 1 16897f1559c6Sbalrog ;; 16907d13299dSbellard esac 16917d13299dSbellarddone 16927d13299dSbellard 169322a87800SMarc-André Lureaulibdir="${libdir:-$prefix/lib}" 169422a87800SMarc-André Lureaulibexecdir="${libexecdir:-$prefix/libexec}" 169522a87800SMarc-André Lureauincludedir="${includedir:-$prefix/include}" 169622a87800SMarc-André Lureau 169722a87800SMarc-André Lureauif test "$mingw32" = "yes" ; then 169822a87800SMarc-André Lureau mandir="$prefix" 169922a87800SMarc-André Lureau datadir="$prefix" 170022a87800SMarc-André Lureau qemu_docdir="$prefix" 170122a87800SMarc-André Lureau bindir="$prefix" 170222a87800SMarc-André Lureau sysconfdir="$prefix" 170322a87800SMarc-André Lureau local_statedir= 170422a87800SMarc-André Lureauelse 170522a87800SMarc-André Lureau mandir="${mandir:-$prefix/share/man}" 170622a87800SMarc-André Lureau datadir="${datadir:-$prefix/share}" 170722a87800SMarc-André Lureau qemu_docdir="${qemu_docdir:-$prefix/share/doc/qemu}" 170822a87800SMarc-André Lureau bindir="${bindir:-$prefix/bin}" 170922a87800SMarc-André Lureau sysconfdir="${sysconfdir:-$prefix/etc}" 171022a87800SMarc-André Lureau local_statedir="${local_statedir:-$prefix/var}" 171122a87800SMarc-André Lureaufi 171222a87800SMarc-André Lureau 171340293e58Sbellardcase "$cpu" in 1714e3608d66SRichard Henderson ppc) 1715e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1716db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 $QEMU_LDFLAGS" 1717e3608d66SRichard Henderson ;; 1718e3608d66SRichard Henderson ppc64) 1719e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1720db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1721e3608d66SRichard Henderson ;; 17229b9c37c3SRichard Henderson sparc) 1723f1079bb8SRichard Henderson CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" 1724db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 -mv8plus $QEMU_LDFLAGS" 17253142255cSblueswir1 ;; 1726ed968ff1SJuan Quintela sparc64) 172779f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 1728db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 17293142255cSblueswir1 ;; 173076d83bdeSths s390) 1731061cdd81SRichard Henderson CPU_CFLAGS="-m31" 1732db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m31 $QEMU_LDFLAGS" 173328d7cc49SRichard Henderson ;; 173428d7cc49SRichard Henderson s390x) 1735061cdd81SRichard Henderson CPU_CFLAGS="-m64" 1736db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 173776d83bdeSths ;; 173840293e58Sbellard i386) 173979f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 1740db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 $QEMU_LDFLAGS" 174140293e58Sbellard ;; 174240293e58Sbellard x86_64) 17437ebee43eSRichard Henderson # ??? Only extremely old AMD cpus do not have cmpxchg16b. 17447ebee43eSRichard Henderson # If we truly care, we should simply detect this case at 17457ebee43eSRichard Henderson # runtime and generate the fallback to serial emulation. 17467ebee43eSRichard Henderson CPU_CFLAGS="-m64 -mcx16" 1747db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1748379f6698SPaul Brook ;; 1749c72b26ecSRichard Henderson x32) 1750c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1751db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-mx32 $QEMU_LDFLAGS" 1752c72b26ecSRichard Henderson ;; 175330163d89SPeter Maydell # No special flags required for other host CPUs 17543142255cSblueswir1esac 17553142255cSblueswir1 17562038f8c8SPaolo Bonzinieval "cross_cc_${cpu}=\$host_cc" 17572038f8c8SPaolo Bonzinicross_cc_vars="$cross_cc_vars cross_cc_${cpu}" 175879f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 175979f3b12fSPeter Crosthwaite 1760affc88ccSPeter Maydell# For user-mode emulation the host arch has to be one we explicitly 1761affc88ccSPeter Maydell# support, even if we're using TCI. 1762affc88ccSPeter Maydellif [ "$ARCH" = "unknown" ]; then 1763affc88ccSPeter Maydell bsd_user="no" 1764affc88ccSPeter Maydell linux_user="no" 1765affc88ccSPeter Maydellfi 1766affc88ccSPeter Maydell 17671cf295beSPhilippe Mathieu-Daudéif [ "$bsd_user" = "no" -a "$linux_user" = "no" -a "$softmmu" = "no" ] ; then 17681cf295beSPhilippe Mathieu-Daudé tcg="no" 17691cf295beSPhilippe Mathieu-Daudéfi 17701cf295beSPhilippe Mathieu-Daudé 177160e0df25SPeter Maydelldefault_target_list="" 177260e0df25SPeter Maydell 17736e92f823SPeter Maydellmak_wilds="" 17746e92f823SPeter Maydell 177560e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 17766e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 177760e0df25SPeter Maydellfi 177860e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 17796e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 178060e0df25SPeter Maydellfi 178160e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 17826e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 178360e0df25SPeter Maydellfi 178460e0df25SPeter Maydell 1785447e133fSAlex Bennéeif test -z "$target_list_exclude"; then 17866e92f823SPeter Maydell for config in $mak_wilds; do 17876e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 17886e92f823SPeter Maydell done 1789447e133fSAlex Bennéeelse 1790447e133fSAlex Bennée exclude_list=$(echo "$target_list_exclude" | sed -e 's/,/ /g') 1791447e133fSAlex Bennée for config in $mak_wilds; do 1792447e133fSAlex Bennée target="$(basename "$config" .mak)" 1793447e133fSAlex Bennée exclude="no" 1794447e133fSAlex Bennée for excl in $exclude_list; do 1795447e133fSAlex Bennée if test "$excl" = "$target"; then 1796447e133fSAlex Bennée exclude="yes" 1797447e133fSAlex Bennée break; 1798447e133fSAlex Bennée fi 1799447e133fSAlex Bennée done 1800447e133fSAlex Bennée if test "$exclude" = "no"; then 1801447e133fSAlex Bennée default_target_list="${default_target_list} $target" 1802447e133fSAlex Bennée fi 1803447e133fSAlex Bennée done 1804447e133fSAlex Bennéefi 18056e92f823SPeter Maydell 1806c53eeaf7SStefan Hajnoczi# Enumerate public trace backends for --help output 180764a6047dSGreg Kurztrace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/')) 1808c53eeaf7SStefan Hajnoczi 1809af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1810af5db58eSpbrookcat << EOF 1811af5db58eSpbrook 1812af5db58eSpbrookUsage: configure [options] 1813af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1814af5db58eSpbrook 181508fb77edSStefan WeilStandard options: 181608fb77edSStefan Weil --help print this message 181708fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 181808fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 181908fb77edSStefan Weil use %M for cpu name [$interp_prefix] 182008fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 182108fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 182208fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 1823447e133fSAlex Bennée --target-list-exclude=LIST exclude a set of targets from the default target-list 182408fb77edSStefan Weil 182508fb77edSStefan WeilAdvanced options (experts only): 182608fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 182708fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 182808fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 182908fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 183008fb77edSStefan Weil build time 183108fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 183208fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 183308fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 183411cde1c8SBruno Dominguez --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS 183508fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 1836d75402b5SAlex Bennée --cross-cc-ARCH=CC use compiler when building ARCH guest test cases 1837d422b2bcSAlex Bennée --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests 183808fb77edSStefan Weil --make=MAKE use specified make [$make] 183908fb77edSStefan Weil --install=INSTALL use specified install [$install] 184008fb77edSStefan Weil --python=PYTHON use specified python [$python] 18412eb054c2SPeter Maydell --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build] 1842a5665051SPaolo Bonzini --meson=MESON use specified meson [$meson] 184308fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 1844db1b5f13SThomas Huth --with-git=GIT use specified git [$git] 184508fb77edSStefan Weil --static enable static build [$static] 184608fb77edSStefan Weil --mandir=PATH install man pages in PATH 184708fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 184808fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 184908fb77edSStefan Weil --bindir=PATH install binaries in PATH 185008fb77edSStefan Weil --libdir=PATH install libraries in PATH 1851db1b5f13SThomas Huth --libexecdir=PATH install helper binaries in PATH 185208fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 185308fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 18543d5eecabSGerd Hoffmann --firmwarepath=PATH search PATH for firmware files 185513336606SRobert Foley --efi-aarch64=PATH PATH of efi file to use for aarch64 VMs. 1856e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 1857db1b5f13SThomas Huth --with-pkgversion=VERS use specified string as sub-version of the package 185808fb77edSStefan Weil --enable-debug enable common debug build options 1859247724cbSMarc-André Lureau --enable-sanitizers enable default sanitizers 18600aebab04SLingfeng Yang --enable-tsan enable thread sanitizer 186108fb77edSStefan Weil --disable-strip disable stripping binaries 186208fb77edSStefan Weil --disable-werror disable compilation abort on warning 186363678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 186408fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 186508fb77edSStefan Weil Available drivers: $audio_possible_drivers 186608fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 186708fb77edSStefan Weil --block-drv-rw-whitelist=L 186808fb77edSStefan Weil set block driver read-write whitelist 186908fb77edSStefan Weil (affects only QEMU, not qemu-img) 187008fb77edSStefan Weil --block-drv-ro-whitelist=L 187108fb77edSStefan Weil set block driver read-only whitelist 187208fb77edSStefan Weil (affects only QEMU, not qemu-img) 18735b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 1874c53eeaf7SStefan Hajnoczi Available backends: $trace_backend_list 187508fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 187608fb77edSStefan Weil Default:trace-<pid> 1877c23f23b9SMichael Tokarev --disable-slirp disable SLIRP userspace network connectivity 1878c23f23b9SMichael Tokarev --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 18795a22ab71SYang Zhong --enable-malloc-trim enable libc malloc_trim() for memory optimization 1880c23f23b9SMichael Tokarev --oss-lib path to OSS library 1881c23f23b9SMichael Tokarev --cpu=CPU Build for host CPU [$cpu] 188208fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 188333c53c54SDaniel P. Berrange ucontext, sigaltstack, windows 188408fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 188508fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 1886c23f23b9SMichael Tokarev --disable-blobs disable installing provided firmware blobs 1887c23f23b9SMichael Tokarev --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1888c23f23b9SMichael Tokarev --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1889a1c5e949SDaniel P. Berrange --tls-priority default TLS protocol/cipher priority string 1890c12d66aaSLin Ma --enable-gprof QEMU profiling with gprof 1891c12d66aaSLin Ma --enable-profiler profiler support 1892c12d66aaSLin Ma --enable-debug-stack-usage 1893c12d66aaSLin Ma track the maximum stack usage of stacks created by qemu_alloc_stack 189440e8c6f4SAlex Bennée --enable-plugins 189540e8c6f4SAlex Bennée enable plugins via shared library loading 1896afc3a8f9SAlex Bennée --disable-containers don't use containers for cross-building 1897f48e590aSAlex Bennée --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin] 1898c23f23b9SMichael Tokarev 1899c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and 1900c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available: 1901c23f23b9SMichael Tokarev 1902c23f23b9SMichael Tokarev system all system emulation targets 1903c23f23b9SMichael Tokarev user supported user emulation targets 1904c23f23b9SMichael Tokarev linux-user all linux usermode emulation targets 1905c23f23b9SMichael Tokarev bsd-user all BSD usermode emulation targets 1906c23f23b9SMichael Tokarev docs build documentation 1907c23f23b9SMichael Tokarev guest-agent build the QEMU Guest Agent 1908c23f23b9SMichael Tokarev guest-agent-msi build guest agent Windows MSI installation package 1909c23f23b9SMichael Tokarev pie Position Independent Executables 191021e709aaSMarc-André Lureau modules modules support (non-Windows) 1911bd83c861SChristian Ehrhardt module-upgrades try to load modules from alternate paths for upgrades 1912c23f23b9SMichael Tokarev debug-tcg TCG debugging (default is disabled) 1913c23f23b9SMichael Tokarev debug-info debugging information 1914c23f23b9SMichael Tokarev sparse sparse checker 19151e4f6065SDaniele Buono safe-stack SafeStack Stack Smash Protection. Depends on 19161e4f6065SDaniele Buono clang/llvm >= 3.7 and requires coroutine backend ucontext. 1917c23f23b9SMichael Tokarev 1918ddbb0d09SDaniel P. Berrange gnutls GNUTLS cryptography support 191991bfcdb0SDaniel P. Berrange nettle nettle cryptography support 192091bfcdb0SDaniel P. Berrange gcrypt libgcrypt cryptography support 19218953caf3SDaniel P. Berrange auth-pam PAM access control 1922c23f23b9SMichael Tokarev sdl SDL UI 192304c6e16fSMarkus Armbruster sdl-image SDL Image support for icons 1924c23f23b9SMichael Tokarev gtk gtk UI 1925c23f23b9SMichael Tokarev vte vte support for the gtk UI 1926c23f23b9SMichael Tokarev curses curses UI 1927e08bb301SSamuel Thibault iconv font glyph conversion support 1928c23f23b9SMichael Tokarev vnc VNC UI support 1929c23f23b9SMichael Tokarev vnc-sasl SASL encryption for VNC server 1930c23f23b9SMichael Tokarev vnc-jpeg JPEG lossy compression for VNC server 1931c23f23b9SMichael Tokarev vnc-png PNG compression for VNC server 1932c23f23b9SMichael Tokarev cocoa Cocoa UI (Mac OS X only) 1933c23f23b9SMichael Tokarev virtfs VirtFS 1934fe8fc5aeSPaolo Bonzini mpath Multipath persistent reservation passthrough 1935c23f23b9SMichael Tokarev xen xen backend driver support 193670c292afSAnthony PERARD xen-pci-passthrough PCI passthrough support for Xen 1937c23f23b9SMichael Tokarev brlapi BrlAPI (Braile) 1938c23f23b9SMichael Tokarev curl curl connectivity 1939a40161cbSPaolo Bonzini membarrier membarrier system call (for Linux 4.14+ or Windows) 1940c23f23b9SMichael Tokarev fdt fdt device tree 1941c23f23b9SMichael Tokarev kvm KVM acceleration support 1942b0cb0a66SVincent Palatin hax HAX acceleration support 1943c97d6d2cSSergio Andres Gomez Del Real hvf Hypervisor.framework acceleration support 1944d661d9a4SJustin Terry (VM) whpx Windows Hypervisor Platform acceleration support 194521ab34c9SMarcel Apfelbaum rdma Enable RDMA-based migration 194621ab34c9SMarcel Apfelbaum pvrdma Enable PVRDMA support 1947c23f23b9SMichael Tokarev vde support for vde network 1948c23f23b9SMichael Tokarev netmap support for netmap network 1949c23f23b9SMichael Tokarev linux-aio Linux AIO support 1950c10dd856SAarushi Mehta linux-io-uring Linux io_uring support 1951c23f23b9SMichael Tokarev cap-ng libcap-ng support 1952c23f23b9SMichael Tokarev attr attr and xattr support 1953299e6f19SPaolo Bonzini vhost-net vhost-net kernel acceleration support 1954299e6f19SPaolo Bonzini vhost-vsock virtio sockets device support 1955299e6f19SPaolo Bonzini vhost-scsi vhost-scsi kernel target support 1956299e6f19SPaolo Bonzini vhost-crypto vhost-user-crypto backend support 1957299e6f19SPaolo Bonzini vhost-kernel vhost kernel backend support 1958299e6f19SPaolo Bonzini vhost-user vhost-user backend support 1959108a6481SCindy Lu vhost-vdpa vhost-vdpa kernel backend support 1960c23f23b9SMichael Tokarev spice spice 1961c23f23b9SMichael Tokarev rbd rados block device (rbd) 1962c23f23b9SMichael Tokarev libiscsi iscsi support 1963c23f23b9SMichael Tokarev libnfs nfs support 19647b02f544SMarc-André Lureau smartcard smartcard support (libcacard) 1965c23f23b9SMichael Tokarev libusb libusb (for usb passthrough) 1966ed1701c6SDr. David Alan Gilbert live-block-migration Block migration in the main migration stream 1967c23f23b9SMichael Tokarev usb-redir usb network redirection support 1968c23f23b9SMichael Tokarev lzo support of lzo compression library 1969c23f23b9SMichael Tokarev snappy support of snappy compression library 1970c23f23b9SMichael Tokarev bzip2 support of bzip2 compression library 1971c23f23b9SMichael Tokarev (for reading bzip2-compressed dmg images) 197283bc1f97SJulio Faracco lzfse support of lzfse compression library 197383bc1f97SJulio Faracco (for reading lzfse-compressed dmg images) 19743a678481SJuan Quintela zstd support for zstd compression library 1975d298ac10SDenis Plotnikov (for migration compression and qcow2 cluster compression) 1976c23f23b9SMichael Tokarev seccomp seccomp support 1977c23f23b9SMichael Tokarev coroutine-pool coroutine freelist (better performance) 1978c23f23b9SMichael Tokarev glusterfs GlusterFS backend 1979c23f23b9SMichael Tokarev tpm TPM support 1980b10d49d7SPino Toscano libssh ssh block device support 1981c23f23b9SMichael Tokarev numa libnuma support 1982ed279a06SKlim Kireev libxml2 for Parallels image format 1983c23f23b9SMichael Tokarev tcmalloc tcmalloc support 19847b01cb97SAlexandre Derumier jemalloc jemalloc support 198586583a07SLiam Merwick avx2 AVX2 optimization support 19866b8cd447SRobert Hoo avx512f AVX512F optimization support 1987a6b1d4c0SChanglong Xie replication replication support 1988c12d66aaSLin Ma opengl opengl support 1989c12d66aaSLin Ma virglrenderer virgl rendering support 1990c12d66aaSLin Ma xfsctl xfsctl support 1991c12d66aaSLin Ma qom-cast-debug cast debugging support 19928de73fa8SCleber Rosa tools build qemu-io, qemu-nbd and qemu-img tools 19932f740136SJeff Cody bochs bochs image format support 19942f740136SJeff Cody cloop cloop image format support 19952f740136SJeff Cody dmg dmg image format support 19962f740136SJeff Cody qcow1 qcow v1 image format support 19972f740136SJeff Cody vdi vdi image format support 19982f740136SJeff Cody vvfat vvfat image format support 19992f740136SJeff Cody qed qed image format support 20002f740136SJeff Cody parallels parallels image format support 20012f740136SJeff Cody sheepdog sheepdog block driver support 2002f0d92b56SLongpeng(Mike) crypto-afalg Linux AF_ALG crypto backend driver 20038ca80760SRichard Henderson capstone capstone disassembler support 2004ba59fb77SPaolo Bonzini debug-mutex mutex debugging support 200517824406SJunyan He libpmem libpmem support 200675411919SJames Le Cuirot xkbcommon xkbcommon support 2007b767d257SMarek Marczykowski-Górecki rng-none dummy RNG, avoid using /dev/(u)random and getrandom() 200821b2eca6SJingqi Liu libdaxctl libdaxctl support 200908fb77edSStefan Weil 201008fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 2011af5db58eSpbrookEOF 20122d2ad6d0SFam Zhengexit 0 2013af5db58eSpbrookfi 2014af5db58eSpbrook 20159c790242SThomas Huth# Remove old dependency files to make sure that they get properly regenerated 2016bb768f71SThomas Huthrm -f */config-devices.mak.d 20179c790242SThomas Huth 20184d6a835dSLaurent Vivier# Remove syscall_nr.h to be sure they will be regenerated in the build 20194d6a835dSLaurent Vivier# directory, not in the source directory 2020bb0cdc03SLaurent Vivierfor arch in alpha hppa m68k xtensa sh4 microblaze arm ppc s390x sparc sparc64 \ 2021686a0fe4SLaurent Vivier i386 x86_64 mips mips64 ; do 20224d6a835dSLaurent Vivier # remove the file if it has been generated in the source directory 20234d6a835dSLaurent Vivier rm -f "${source_path}/linux-user/${arch}/syscall_nr.h" 20244d6a835dSLaurent Vivier # remove the dependency files 202591e5998fSLaurent Vivier for target in ${arch}*-linux-user ; do 202691e5998fSLaurent Vivier test -d "${target}" && find "${target}" -type f -name "*.d" \ 20274d6a835dSLaurent Vivier -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \ 202891e5998fSLaurent Vivier -print | while read file ; do rm "${file}" "${file%.d}.o" ; done 202991e5998fSLaurent Vivier done 20304d6a835dSLaurent Vivierdone 20314d6a835dSLaurent Vivier 2032faf44142SDaniel P. Berrangéif test -z "$python" 2033faf44142SDaniel P. Berrangéthen 2034c53eeaf7SStefan Hajnoczi error_exit "Python not found. Use --python=/path/to/python" 2035c53eeaf7SStefan Hajnoczifi 2036c53eeaf7SStefan Hajnoczi 2037c53eeaf7SStefan Hajnoczi# Note that if the Python conditional here evaluates True we will exit 2038c53eeaf7SStefan Hajnoczi# with status 1 which is a shell 'false' value. 2039ddf90699SEduardo Habkostif ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then 2040ddf90699SEduardo Habkost error_exit "Cannot use '$python', Python >= 3.5 is required." \ 2041c53eeaf7SStefan Hajnoczi "Use --python=/path/to/python to specify a supported Python." 2042c53eeaf7SStefan Hajnoczifi 2043c53eeaf7SStefan Hajnoczi 2044755ee70fSCleber Rosa# Preserve python version since some functionality is dependent on it 2045406ab2f3SCleber 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) 2046755ee70fSCleber Rosa 2047c53eeaf7SStefan Hajnoczi# Suppress writing compiled files 2048c53eeaf7SStefan Hajnoczipython="$python -B" 2049c53eeaf7SStefan Hajnoczi 2050*0a01d76fSMarc-André Lureauif test -z "$meson"; then 2051*0a01d76fSMarc-André Lureau if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.0; then 2052*0a01d76fSMarc-André Lureau meson=meson 2053*0a01d76fSMarc-André Lureau elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 2054*0a01d76fSMarc-André Lureau meson=git 2055*0a01d76fSMarc-André Lureau elif test -e "${source_path}/meson/meson.py" ; then 2056*0a01d76fSMarc-André Lureau meson=internal 2057*0a01d76fSMarc-André Lureau else 2058*0a01d76fSMarc-André Lureau if test "$explicit_python" = yes; then 2059*0a01d76fSMarc-André Lureau error_exit "--python requires using QEMU's embedded Meson distribution, but it was not found." 2060*0a01d76fSMarc-André Lureau else 2061a5665051SPaolo Bonzini error_exit "Meson not found. Use --meson=/path/to/meson" 2062a5665051SPaolo Bonzini fi 2063*0a01d76fSMarc-André Lureau fi 2064*0a01d76fSMarc-André Lureauelse 2065*0a01d76fSMarc-André Lureau # Meson uses its own Python interpreter to invoke other Python scripts, 2066*0a01d76fSMarc-André Lureau # but the user wants to use the one they specified with --python. 2067*0a01d76fSMarc-André Lureau # 2068*0a01d76fSMarc-André Lureau # We do not want to override the distro Python interpreter (and sometimes 2069*0a01d76fSMarc-André Lureau # cannot: for example in Homebrew /usr/bin/meson is a bash script), so 2070*0a01d76fSMarc-André Lureau # just require --meson=git|internal together with --python. 2071*0a01d76fSMarc-André Lureau if test "$explicit_python" = yes; then 2072*0a01d76fSMarc-André Lureau case "$meson" in 2073*0a01d76fSMarc-André Lureau git | internal) ;; 2074*0a01d76fSMarc-André Lureau *) error_exit "--python requires using QEMU's embedded Meson distribution." ;; 2075*0a01d76fSMarc-André Lureau esac 2076*0a01d76fSMarc-André Lureau fi 2077*0a01d76fSMarc-André Lureaufi 2078a5665051SPaolo Bonzini 2079*0a01d76fSMarc-André Lureauif test "$meson" = git; then 2080*0a01d76fSMarc-André Lureau git_submodules="${git_submodules} meson" 2081*0a01d76fSMarc-André Lureaufi 2082*0a01d76fSMarc-André Lureauif test "$git_update" = yes; then 2083*0a01d76fSMarc-André Lureau (cd "${source_path}" && GIT="$git" "./scripts/git-submodule.sh" update "$git_submodules") 2084*0a01d76fSMarc-André Lureaufi 2085*0a01d76fSMarc-André Lureau 2086*0a01d76fSMarc-André Lureaucase "$meson" in 2087*0a01d76fSMarc-André Lureau git | internal) 2088a5665051SPaolo Bonzini if ! $python -c 'import pkg_resources' > /dev/null 2>&1; then 2089a5665051SPaolo Bonzini error_exit "Python setuptools not found" 2090a5665051SPaolo Bonzini fi 2091*0a01d76fSMarc-André Lureau meson="$python ${source_path}/meson/meson.py" 2092*0a01d76fSMarc-André Lureau ;; 2093*0a01d76fSMarc-André Lureau *) meson=$(command -v meson) ;; 2094*0a01d76fSMarc-André Lureauesac 2095*0a01d76fSMarc-André Lureau 2096a5665051SPaolo Bonzini 20979aae6e54SDaniel Henrique Barboza# Check that the C compiler works. Doing this here before testing 20989aae6e54SDaniel Henrique Barboza# the host CPU ensures that we had a valid CC to autodetect the 20999aae6e54SDaniel Henrique Barboza# $cpu var (and we should bail right here if that's not the case). 21009aae6e54SDaniel Henrique Barboza# It also allows the help message to be printed without a CC. 21019aae6e54SDaniel Henrique Barbozawrite_c_skeleton; 21029aae6e54SDaniel Henrique Barbozaif compile_object ; then 21039aae6e54SDaniel Henrique Barboza : C compiler works ok 21049aae6e54SDaniel Henrique Barbozaelse 21059aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" either does not exist or does not work" 21069aae6e54SDaniel Henrique Barbozafi 21079aae6e54SDaniel Henrique Barbozaif ! compile_prog ; then 21089aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" cannot build an executable (is your linker broken?)" 21099aae6e54SDaniel Henrique Barbozafi 21109aae6e54SDaniel Henrique Barboza 2111359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 2112359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 2113359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 2114359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 2115359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 2116359bc95dSPeter Maydell else 211776ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 2118359bc95dSPeter Maydell fi 2119359bc95dSPeter Maydellfi 2120359bc95dSPeter Maydell 21219c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 21229c83ffd8SPeter Maydell# by default. Only enable by default for git builds 21239c83ffd8SPeter Maydellif test -z "$werror" ; then 2124fd73745dSAlexey Kardashevskiy if test -e "$source_path/.git" && \ 2125e633a5c6SEric Blake { test "$linux" = "yes" || test "$mingw32" = "yes"; }; then 21269c83ffd8SPeter Maydell werror="yes" 21279c83ffd8SPeter Maydell else 21289c83ffd8SPeter Maydell werror="no" 21299c83ffd8SPeter Maydell fi 21309c83ffd8SPeter Maydellfi 21319c83ffd8SPeter Maydell 2132fb59dabdSPeter Maydellif test "$bogus_os" = "yes"; then 2133fb59dabdSPeter Maydell # Now that we know that we're not printing the help and that 2134fb59dabdSPeter Maydell # the compiler works (so the results of the check_defines we used 2135fb59dabdSPeter Maydell # to identify the OS are reliable), if we didn't recognize the 2136fb59dabdSPeter Maydell # host OS we should stop now. 2137951fedfcSPeter Maydell error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')" 2138fb59dabdSPeter Maydellfi 2139fb59dabdSPeter Maydell 2140efc6c070SThomas Huth# Check whether the compiler matches our minimum requirements: 2141efc6c070SThomas Huthcat > $TMPC << EOF 2142efc6c070SThomas Huth#if defined(__clang_major__) && defined(__clang_minor__) 2143efc6c070SThomas Huth# ifdef __apple_build_version__ 2144efc6c070SThomas Huth# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1) 2145efc6c070SThomas Huth# error You need at least XCode Clang v5.1 to compile QEMU 2146efc6c070SThomas Huth# endif 2147efc6c070SThomas Huth# else 2148efc6c070SThomas Huth# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4) 2149efc6c070SThomas Huth# error You need at least Clang v3.4 to compile QEMU 2150efc6c070SThomas Huth# endif 2151efc6c070SThomas Huth# endif 2152efc6c070SThomas Huth#elif defined(__GNUC__) && defined(__GNUC_MINOR__) 2153efc6c070SThomas Huth# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) 2154efc6c070SThomas Huth# error You need at least GCC v4.8 to compile QEMU 2155efc6c070SThomas Huth# endif 2156efc6c070SThomas Huth#else 2157efc6c070SThomas Huth# error You either need GCC or Clang to compiler QEMU 2158efc6c070SThomas Huth#endif 2159efc6c070SThomas Huthint main (void) { return 0; } 2160efc6c070SThomas HuthEOF 2161efc6c070SThomas Huthif ! compile_prog "" "" ; then 2162efc6c070SThomas Huth error_exit "You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)" 2163efc6c070SThomas Huthfi 2164efc6c070SThomas Huth 216500849b92SRichard Henderson# Accumulate -Wfoo and -Wno-bar separately. 216600849b92SRichard Henderson# We will list all of the enable flags first, and the disable flags second. 216700849b92SRichard Henderson# Note that we do not add -Werror, because that would enable it for all 216800849b92SRichard Henderson# configure tests. If a configure test failed due to -Werror this would 216900849b92SRichard Henderson# just silently disable some features, so it's too error prone. 217000849b92SRichard Henderson 217100849b92SRichard Hendersonwarn_flags= 217200849b92SRichard Hendersonadd_to warn_flags -Wold-style-declaration 217300849b92SRichard Hendersonadd_to warn_flags -Wold-style-definition 217400849b92SRichard Hendersonadd_to warn_flags -Wtype-limits 217500849b92SRichard Hendersonadd_to warn_flags -Wformat-security 217600849b92SRichard Hendersonadd_to warn_flags -Wformat-y2k 217700849b92SRichard Hendersonadd_to warn_flags -Winit-self 217800849b92SRichard Hendersonadd_to warn_flags -Wignored-qualifiers 217900849b92SRichard Hendersonadd_to warn_flags -Wempty-body 218000849b92SRichard Hendersonadd_to warn_flags -Wnested-externs 218100849b92SRichard Hendersonadd_to warn_flags -Wendif-labels 218200849b92SRichard Hendersonadd_to warn_flags -Wexpansion-to-defined 218300849b92SRichard Henderson 218400849b92SRichard Hendersonnowarn_flags= 218500849b92SRichard Hendersonadd_to nowarn_flags -Wno-initializer-overrides 218600849b92SRichard Hendersonadd_to nowarn_flags -Wno-missing-include-dirs 218700849b92SRichard Hendersonadd_to nowarn_flags -Wno-shift-negative-value 218800849b92SRichard Hendersonadd_to nowarn_flags -Wno-string-plus-int 218900849b92SRichard Hendersonadd_to nowarn_flags -Wno-typedef-redefinition 2190aabab967SRichard Hendersonadd_to nowarn_flags -Wno-tautological-type-limit-compare 2191bac8d222SRichard Hendersonadd_to nowarn_flags -Wno-psabi 219200849b92SRichard Henderson 219300849b92SRichard Hendersongcc_flags="$warn_flags $nowarn_flags" 219493b25869SJohn Snow 219593b25869SJohn Snowcc_has_warning_flag() { 219693b25869SJohn Snow write_c_skeleton; 219793b25869SJohn Snow 2198a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 2199a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 2200a1d29d6cSPeter Maydell # warning options). 220193b25869SJohn Snow optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 220293b25869SJohn Snow compile_prog "-Werror $optflag" "" 220393b25869SJohn Snow} 220493b25869SJohn Snow 220593b25869SJohn Snowfor flag in $gcc_flags; do 220693b25869SJohn Snow if cc_has_warning_flag $flag ; then 22078d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 22088d05095cSPaolo Bonzini fi 22098d05095cSPaolo Bonzinidone 22108d05095cSPaolo Bonzini 221163678e17SSteven Noonanif test "$stack_protector" != "no"; then 2212fccd35a0SRodrigo Rebello cat > $TMPC << EOF 2213fccd35a0SRodrigo Rebelloint main(int argc, char *argv[]) 2214fccd35a0SRodrigo Rebello{ 2215fccd35a0SRodrigo Rebello char arr[64], *p = arr, *c = argv[0]; 2216fccd35a0SRodrigo Rebello while (*c) { 2217fccd35a0SRodrigo Rebello *p++ = *c++; 2218fccd35a0SRodrigo Rebello } 2219fccd35a0SRodrigo Rebello return 0; 2220fccd35a0SRodrigo Rebello} 2221fccd35a0SRodrigo RebelloEOF 222263678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 22233b463a3fSMiroslav Rezanina sp_on=0 222463678e17SSteven Noonan for flag in $gcc_flags; do 2225590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 2226590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 2227086d5f75SPaolo Bonzini if compile_object "-Werror $flag" && 2228590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 222963678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 2230db5adeaaSPaolo Bonzini QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 22313b463a3fSMiroslav Rezanina sp_on=1 223263678e17SSteven Noonan break 223363678e17SSteven Noonan fi 223463678e17SSteven Noonan done 22353b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 22363b463a3fSMiroslav Rezanina if test $sp_on = 0; then 22373b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 22383b463a3fSMiroslav Rezanina fi 22393b463a3fSMiroslav Rezanina fi 224037746c5eSMarc-André Lureaufi 224137746c5eSMarc-André Lureau 224220bc94a2SPaolo Bonzini# Disable -Wmissing-braces on older compilers that warn even for 224320bc94a2SPaolo Bonzini# the "universal" C zero initializer {0}. 224420bc94a2SPaolo Bonzinicat > $TMPC << EOF 224520bc94a2SPaolo Bonzinistruct { 224620bc94a2SPaolo Bonzini int a[2]; 224720bc94a2SPaolo Bonzini} x = {0}; 224820bc94a2SPaolo BonziniEOF 224920bc94a2SPaolo Bonziniif compile_object "-Werror" "" ; then 225020bc94a2SPaolo Bonzini : 225120bc94a2SPaolo Bonzinielse 225220bc94a2SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces" 225320bc94a2SPaolo Bonzinifi 225420bc94a2SPaolo Bonzini 225521e709aaSMarc-André Lureau# Our module code doesn't support Windows 225621e709aaSMarc-André Lureauif test "$modules" = "yes" && test "$mingw32" = "yes" ; then 225721e709aaSMarc-André Lureau error_exit "Modules are not available for Windows" 225821e709aaSMarc-André Lureaufi 225921e709aaSMarc-André Lureau 2260bd83c861SChristian Ehrhardt# module_upgrades is only reasonable if modules are enabled 2261bd83c861SChristian Ehrhardtif test "$modules" = "no" && test "$module_upgrades" = "yes" ; then 2262bd83c861SChristian Ehrhardt error_exit "Can't enable module-upgrades as Modules are not enabled" 2263bd83c861SChristian Ehrhardtfi 2264bd83c861SChristian Ehrhardt 2265d376e9deSThomas Huth# Static linking is not possible with modules or PIE 226640d6444eSAvi Kivityif test "$static" = "yes" ; then 2267aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 2268aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 2269aa0d1f44SPaolo Bonzini fi 227040d6444eSAvi Kivityfi 227140d6444eSAvi Kivity 2272768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 2273768b7855SEmilio G. Cota cat > $TMPC << EOF 2274768b7855SEmilio G. Cotastatic __thread int tls_var; 2275768b7855SEmilio G. Cotaint main(void) { return tls_var; } 2276768b7855SEmilio G. CotaEOF 2277768b7855SEmilio G. Cota 2278768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 2279768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 2280768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 2281768b7855SEmilio G. Cotafi 2282768b7855SEmilio G. Cota 228340d6444eSAvi Kivitycat > $TMPC << EOF 228421d4a791SAvi Kivity 228521d4a791SAvi Kivity#ifdef __linux__ 228621d4a791SAvi Kivity# define THREAD __thread 228721d4a791SAvi Kivity#else 228821d4a791SAvi Kivity# define THREAD 228921d4a791SAvi Kivity#endif 229021d4a791SAvi Kivitystatic THREAD int tls_var; 229121d4a791SAvi Kivityint main(void) { return tls_var; } 229240d6444eSAvi KivityEOF 2293b2634124SRichard Henderson 2294b2634124SRichard Henderson# Check we support --no-pie first; we will need this for building ROMs. 2295412aeacdSAlex Bennéeif compile_prog "-Werror -fno-pie" "-no-pie"; then 2296412aeacdSAlex Bennée CFLAGS_NOPIE="-fno-pie" 2297b2634124SRichard Henderson LDFLAGS_NOPIE="-no-pie" 2298412aeacdSAlex Bennéefi 2299412aeacdSAlex Bennée 230012781462SRichard Hendersonif test "$static" = "yes"; then 2301eca7a8e6SRichard Henderson if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then 2302086d5f75SPaolo Bonzini CFLAGS="-fPIE -DPIE $CFLAGS" 230312781462SRichard Henderson QEMU_LDFLAGS="-static-pie $QEMU_LDFLAGS" 230412781462SRichard Henderson pie="yes" 230512781462SRichard Henderson elif test "$pie" = "yes"; then 230612781462SRichard Henderson error_exit "-static-pie not available due to missing toolchain support" 230712781462SRichard Henderson else 230812781462SRichard Henderson QEMU_LDFLAGS="-static $QEMU_LDFLAGS" 230912781462SRichard Henderson pie="no" 231012781462SRichard Henderson fi 231112781462SRichard Hendersonelif test "$pie" = "no"; then 2312086d5f75SPaolo Bonzini CFLAGS="$CFLAGS_NOPIE $CFLAGS" 2313086d5f75SPaolo Bonzini LDFLAGS="$LDFLAGS_NOPIE $LDFLAGS" 2314eca7a8e6SRichard Hendersonelif compile_prog "-Werror -fPIE -DPIE" "-pie"; then 2315086d5f75SPaolo Bonzini CFLAGS="-fPIE -DPIE $CFLAGS" 2316086d5f75SPaolo Bonzini LDFLAGS="-pie $LDFLAGS" 231740d6444eSAvi Kivity pie="yes" 23182c674109SRichard Hendersonelif test "$pie" = "yes"; then 231976ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 232040d6444eSAvi Kivityelse 232140d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 232240d6444eSAvi Kivity pie="no" 232340d6444eSAvi Kivityfi 232440d6444eSAvi Kivity 2325e6cbd751SRichard Henderson# Detect support for PT_GNU_RELRO + DT_BIND_NOW. 2326e6cbd751SRichard Henderson# The combination is known as "full relro", because .got.plt is read-only too. 2327e6cbd751SRichard Hendersonif compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 2328e6cbd751SRichard Henderson QEMU_LDFLAGS="-Wl,-z,relro -Wl,-z,now $QEMU_LDFLAGS" 2329e6cbd751SRichard Hendersonfi 2330e6cbd751SRichard Henderson 233109dada40SPaolo Bonzini########################################## 233209dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 233309dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 233409dada40SPaolo Bonzini# specification is necessary 233509dada40SPaolo Bonzini 233609dada40SPaolo Bonziniif test "$cpu" = "i386"; then 233709dada40SPaolo Bonzini cat > $TMPC << EOF 233809dada40SPaolo Bonzinistatic int sfaa(int *ptr) 233909dada40SPaolo Bonzini{ 234009dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 234109dada40SPaolo Bonzini} 234209dada40SPaolo Bonzini 234309dada40SPaolo Bonziniint main(void) 234409dada40SPaolo Bonzini{ 234509dada40SPaolo Bonzini int val = 42; 23461405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 234709dada40SPaolo Bonzini sfaa(&val); 234809dada40SPaolo Bonzini return val; 234909dada40SPaolo Bonzini} 235009dada40SPaolo BonziniEOF 235109dada40SPaolo Bonzini if ! compile_prog "" "" ; then 235209dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 235309dada40SPaolo Bonzini fi 235409dada40SPaolo Bonzinifi 235509dada40SPaolo Bonzini 235609dada40SPaolo Bonzini######################################### 2357ec530c81Sbellard# Solaris specific configure tool chain decisions 235809dada40SPaolo Bonzini 2359ec530c81Sbellardif test "$solaris" = "yes" ; then 23606792aa11SLoïc Minier if has $install; then 23616792aa11SLoïc Minier : 23626792aa11SLoïc Minier else 236376ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 236476ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 236576ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 2366ec530c81Sbellard fi 236789138857SStefan Weil if test "$(path_of $install)" = "/usr/sbin/install" ; then 236876ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 236976ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 237076ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 2371ec530c81Sbellard fi 23726792aa11SLoïc Minier if has ar; then 23736792aa11SLoïc Minier : 23746792aa11SLoïc Minier else 2375ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 237676ad07a4SPeter Maydell error_exit "No path includes ar" \ 237776ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 2378ec530c81Sbellard fi 237976ad07a4SPeter Maydell error_exit "No path includes ar" 2380ec530c81Sbellard fi 2381ec530c81Sbellardfi 2382ec530c81Sbellard 2383afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 2384d880a3baSPaolo Bonzini for target in $default_target_list; do 2385d880a3baSPaolo Bonzini supported_target $target 2>/dev/null && \ 2386d880a3baSPaolo Bonzini target_list="$target_list $target" 2387d880a3baSPaolo Bonzini done 2388d880a3baSPaolo Bonzini target_list="${target_list# }" 2389121afa9eSAnthony Liguorielse 239089138857SStefan Weil target_list=$(echo "$target_list" | sed -e 's/,/ /g') 2391d880a3baSPaolo Bonzini for target in $target_list; do 239225b48338SPeter Maydell # Check that we recognised the target name; this allows a more 239325b48338SPeter Maydell # friendly error message than if we let it fall through. 239425b48338SPeter Maydell case " $default_target_list " in 239525b48338SPeter Maydell *" $target "*) 239625b48338SPeter Maydell ;; 239725b48338SPeter Maydell *) 239825b48338SPeter Maydell error_exit "Unknown target name '$target'" 239925b48338SPeter Maydell ;; 240025b48338SPeter Maydell esac 2401d880a3baSPaolo Bonzini supported_target $target || exit 1 240225b48338SPeter Maydell done 2403d880a3baSPaolo Bonzinifi 240425b48338SPeter Maydell 2405f55fe278SPaolo Bonzini# see if system emulation was really requested 2406f55fe278SPaolo Bonzinicase " $target_list " in 2407f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 2408f55fe278SPaolo Bonzini ;; 2409f55fe278SPaolo Bonzini *) softmmu=no 2410f55fe278SPaolo Bonzini ;; 2411f55fe278SPaolo Bonziniesac 24125327cf48Sbellard 241305dfa22bSPhilippe Mathieu-Daudéfor target in $target_list; do 241405dfa22bSPhilippe Mathieu-Daudé case "$target" in 241505dfa22bSPhilippe Mathieu-Daudé arm-softmmu | aarch64-softmmu | i386-softmmu | x86_64-softmmu) 241605dfa22bSPhilippe Mathieu-Daudé edk2_blobs="yes" 241705dfa22bSPhilippe Mathieu-Daudé ;; 241805dfa22bSPhilippe Mathieu-Daudé esac 241905dfa22bSPhilippe Mathieu-Daudédone 2420623ef637SPhilippe Mathieu-Daudé# The EDK2 binaries are compressed with bzip2 2421623ef637SPhilippe Mathieu-Daudéif test "$edk2_blobs" = "yes" && ! has bzip2; then 2422623ef637SPhilippe Mathieu-Daudé error_exit "The bzip2 program is required for building QEMU" 2423623ef637SPhilippe Mathieu-Daudéfi 242405dfa22bSPhilippe Mathieu-Daudé 2425249247c9SJuan Quintelafeature_not_found() { 2426249247c9SJuan Quintela feature=$1 242721684af0SStewart Smith remedy=$2 2428249247c9SJuan Quintela 242976ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 243021684af0SStewart Smith "configure was not able to find it." \ 243121684af0SStewart Smith "$remedy" 2432249247c9SJuan Quintela} 2433249247c9SJuan Quintela 24347d13299dSbellard# --- 24357d13299dSbellard# big/little endian test 24367d13299dSbellardcat > $TMPC << EOF 243761cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 243861cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 243961cc919fSMike Frysingerextern int foo(short *, short *); 244061cc919fSMike Frysingerint main(int argc, char *argv[]) { 244161cc919fSMike Frysinger return foo(big_endian, little_endian); 24427d13299dSbellard} 24437d13299dSbellardEOF 24447d13299dSbellard 244561cc919fSMike Frysingerif compile_object ; then 244612f15c91SAlice Frosi if strings -a $TMPO | grep -q BiGeNdIaN ; then 244761cc919fSMike Frysinger bigendian="yes" 244812f15c91SAlice Frosi elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then 244961cc919fSMike Frysinger bigendian="no" 24507d13299dSbellard else 24517d13299dSbellard echo big/little test failed 24527d13299dSbellard fi 24537d13299dSbellardelse 245461cc919fSMike Frysinger echo big/little test failed 24557d13299dSbellardfi 24567d13299dSbellard 2457b0a47e79SJuan Quintela########################################## 2458e10ee3f5SPhilippe Mathieu-Daudé# system tools 2459e10ee3f5SPhilippe Mathieu-Daudéif test -z "$want_tools"; then 2460e10ee3f5SPhilippe Mathieu-Daudé if test "$softmmu" = "no"; then 2461e10ee3f5SPhilippe Mathieu-Daudé want_tools=no 2462e10ee3f5SPhilippe Mathieu-Daudé else 2463e10ee3f5SPhilippe Mathieu-Daudé want_tools=yes 2464e10ee3f5SPhilippe Mathieu-Daudé fi 2465e10ee3f5SPhilippe Mathieu-Daudéfi 2466e10ee3f5SPhilippe Mathieu-Daudé 2467e10ee3f5SPhilippe Mathieu-Daudé########################################## 2468a30878e7SPeter Maydell# cocoa implies not SDL or GTK 2469a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI 2470a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code) 2471a30878e7SPeter Maydellif test "$cocoa" = "yes"; then 2472a30878e7SPeter Maydell if test "$sdl" = "yes"; then 2473a30878e7SPeter Maydell error_exit "Cocoa and SDL UIs cannot both be enabled at once" 2474a30878e7SPeter Maydell fi 2475a30878e7SPeter Maydell if test "$gtk" = "yes"; then 2476a30878e7SPeter Maydell error_exit "Cocoa and GTK UIs cannot both be enabled at once" 2477a30878e7SPeter Maydell fi 2478a30878e7SPeter Maydell gtk=no 2479a30878e7SPeter Maydell sdl=no 2480a30878e7SPeter Maydellfi 2481a30878e7SPeter Maydell 24826b39b063SEric Blake# Some versions of Mac OS X incorrectly define SIZE_MAX 24836b39b063SEric Blakecat > $TMPC << EOF 24846b39b063SEric Blake#include <stdint.h> 24856b39b063SEric Blake#include <stdio.h> 24866b39b063SEric Blakeint main(int argc, char *argv[]) { 24876b39b063SEric Blake return printf("%zu", SIZE_MAX); 24886b39b063SEric Blake} 24896b39b063SEric BlakeEOF 24906b39b063SEric Blakehave_broken_size_max=no 24916b39b063SEric Blakeif ! compile_object -Werror ; then 24926b39b063SEric Blake have_broken_size_max=yes 24936b39b063SEric Blakefi 24946b39b063SEric Blake 2495a30878e7SPeter Maydell########################################## 2496015a33bdSGonglei# L2TPV3 probe 2497015a33bdSGonglei 2498015a33bdSGongleicat > $TMPC <<EOF 2499015a33bdSGonglei#include <sys/socket.h> 2500bff6cb72SMichael Tokarev#include <linux/ip.h> 2501015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 2502015a33bdSGongleiEOF 2503015a33bdSGongleiif compile_prog "" "" ; then 2504015a33bdSGonglei l2tpv3=yes 2505015a33bdSGongleielse 2506015a33bdSGonglei l2tpv3=no 2507015a33bdSGongleifi 2508015a33bdSGonglei 2509c9c8b88fSDavid CARLIERif check_include "pty.h" ; then 2510c9c8b88fSDavid CARLIER pty_h=yes 2511c9c8b88fSDavid CARLIERelse 2512c9c8b88fSDavid CARLIER pty_h=no 2513c9c8b88fSDavid CARLIERfi 2514c9c8b88fSDavid CARLIER 2515195588ccSDavid CARLIERcat > $TMPC <<EOF 2516195588ccSDavid CARLIER#include <sys/mman.h> 2517195588ccSDavid CARLIERint main(int argc, char *argv[]) { 2518195588ccSDavid CARLIER return mlockall(MCL_FUTURE); 2519195588ccSDavid CARLIER} 2520195588ccSDavid CARLIEREOF 2521195588ccSDavid CARLIERif compile_prog "" "" ; then 2522195588ccSDavid CARLIER have_mlockall=yes 2523195588ccSDavid CARLIERelse 2524195588ccSDavid CARLIER have_mlockall=no 2525195588ccSDavid CARLIERfi 2526195588ccSDavid CARLIER 2527299e6f19SPaolo Bonzini######################################### 2528299e6f19SPaolo Bonzini# vhost interdependencies and host support 2529299e6f19SPaolo Bonzini 2530299e6f19SPaolo Bonzini# vhost backends 2531299e6f19SPaolo Bonzinitest "$vhost_user" = "" && vhost_user=yes 2532299e6f19SPaolo Bonziniif test "$vhost_user" = "yes" && test "$mingw32" = "yes"; then 2533299e6f19SPaolo Bonzini error_exit "vhost-user isn't available on win32" 2534299e6f19SPaolo Bonzinifi 2535108a6481SCindy Lutest "$vhost_vdpa" = "" && vhost_vdpa=$linux 2536108a6481SCindy Luif test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then 2537108a6481SCindy Lu error_exit "vhost-vdpa is only available on Linux" 2538108a6481SCindy Lufi 2539299e6f19SPaolo Bonzinitest "$vhost_kernel" = "" && vhost_kernel=$linux 2540299e6f19SPaolo Bonziniif test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then 2541299e6f19SPaolo Bonzini error_exit "vhost-kernel is only available on Linux" 2542299e6f19SPaolo Bonzinifi 2543299e6f19SPaolo Bonzini 2544299e6f19SPaolo Bonzini# vhost-kernel devices 2545299e6f19SPaolo Bonzinitest "$vhost_scsi" = "" && vhost_scsi=$vhost_kernel 2546299e6f19SPaolo Bonziniif test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then 2547299e6f19SPaolo Bonzini error_exit "--enable-vhost-scsi requires --enable-vhost-kernel" 2548299e6f19SPaolo Bonzinifi 2549299e6f19SPaolo Bonzinitest "$vhost_vsock" = "" && vhost_vsock=$vhost_kernel 2550299e6f19SPaolo Bonziniif test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then 2551299e6f19SPaolo Bonzini error_exit "--enable-vhost-vsock requires --enable-vhost-kernel" 2552299e6f19SPaolo Bonzinifi 2553299e6f19SPaolo Bonzini 2554299e6f19SPaolo Bonzini# vhost-user backends 2555299e6f19SPaolo Bonzinitest "$vhost_net_user" = "" && vhost_net_user=$vhost_user 2556299e6f19SPaolo Bonziniif test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then 2557299e6f19SPaolo Bonzini error_exit "--enable-vhost-net-user requires --enable-vhost-user" 2558299e6f19SPaolo Bonzinifi 2559299e6f19SPaolo Bonzinitest "$vhost_crypto" = "" && vhost_crypto=$vhost_user 2560299e6f19SPaolo Bonziniif test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then 2561299e6f19SPaolo Bonzini error_exit "--enable-vhost-crypto requires --enable-vhost-user" 2562299e6f19SPaolo Bonzinifi 256398fc1adaSDr. David Alan Gilberttest "$vhost_user_fs" = "" && vhost_user_fs=$vhost_user 256498fc1adaSDr. David Alan Gilbertif test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then 256598fc1adaSDr. David Alan Gilbert error_exit "--enable-vhost-user-fs requires --enable-vhost-user" 256698fc1adaSDr. David Alan Gilbertfi 2567108a6481SCindy Lu#vhost-vdpa backends 2568108a6481SCindy Lutest "$vhost_net_vdpa" = "" && vhost_net_vdpa=$vhost_vdpa 2569108a6481SCindy Luif test "$vhost_net_vdpa" = "yes" && test "$vhost_vdpa" = "no"; then 2570108a6481SCindy Lu error_exit "--enable-vhost-net-vdpa requires --enable-vhost-vdpa" 2571108a6481SCindy Lufi 2572299e6f19SPaolo Bonzini 2573299e6f19SPaolo Bonzini# OR the vhost-kernel and vhost-user values for simplicity 2574299e6f19SPaolo Bonziniif test "$vhost_net" = ""; then 2575299e6f19SPaolo Bonzini test "$vhost_net_user" = "yes" && vhost_net=yes 2576299e6f19SPaolo Bonzini test "$vhost_kernel" = "yes" && vhost_net=yes 2577299e6f19SPaolo Bonzinifi 2578299e6f19SPaolo Bonzini 2579015a33bdSGonglei########################################## 25804d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check 25814d9310f4SDaniel P. Berrange 25824d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then 25834d9310f4SDaniel P. Berrange # Some versions of MinGW / Mingw-w64 lack localtime_r 25844d9310f4SDaniel P. Berrange # and gmtime_r entirely. 25854d9310f4SDaniel P. Berrange # 25864d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 define a macro for 25874d9310f4SDaniel P. Berrange # localtime_r/gmtime_r. 25884d9310f4SDaniel P. Berrange # 25894d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 will define functions 25904d9310f4SDaniel P. Berrange # for localtime_r/gmtime_r, but only if you have 25914d9310f4SDaniel P. Berrange # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun 25924d9310f4SDaniel P. Berrange # though, unistd.h and pthread.h both define 25934d9310f4SDaniel P. Berrange # that for you. 25944d9310f4SDaniel P. Berrange # 25954d9310f4SDaniel P. Berrange # So this #undef localtime_r and #include <unistd.h> 25964d9310f4SDaniel P. Berrange # are not in fact redundant. 25974d9310f4SDaniel P. Berrangecat > $TMPC << EOF 25984d9310f4SDaniel P. Berrange#include <unistd.h> 25994d9310f4SDaniel P. Berrange#include <time.h> 26004d9310f4SDaniel P. Berrange#undef localtime_r 26014d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; } 26024d9310f4SDaniel P. BerrangeEOF 26034d9310f4SDaniel P. Berrange if compile_prog "" "" ; then 26044d9310f4SDaniel P. Berrange localtime_r="yes" 26054d9310f4SDaniel P. Berrange else 26064d9310f4SDaniel P. Berrange localtime_r="no" 26074d9310f4SDaniel P. Berrange fi 26084d9310f4SDaniel P. Berrangefi 26094d9310f4SDaniel P. Berrange 26104d9310f4SDaniel P. Berrange########################################## 2611779ab5e3SStefan Weil# pkg-config probe 2612779ab5e3SStefan Weil 2613779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 261476ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 2615779ab5e3SStefan Weilfi 2616779ab5e3SStefan Weil 2617779ab5e3SStefan Weil########################################## 2618b0a47e79SJuan Quintela# NPTL probe 2619b0a47e79SJuan Quintela 262024cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 2621bd0c5661Spbrook cat > $TMPC <<EOF 2622bd0c5661Spbrook#include <sched.h> 262330813ceaSpbrook#include <linux/futex.h> 2624182eacc0SStefan Weilint main(void) { 2625bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 2626bd0c5661Spbrook#error bork 2627bd0c5661Spbrook#endif 2628182eacc0SStefan Weil return 0; 2629bd0c5661Spbrook} 2630bd0c5661SpbrookEOF 263124cb36a6SPeter Maydell if ! compile_object ; then 263221684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 2633b0a47e79SJuan Quintela fi 2634bd0c5661Spbrookfi 2635bd0c5661Spbrook 2636ac62922eSbalrog########################################## 2637607dacd0Sqiaonuohan# lzo check 2638607dacd0Sqiaonuohan 2639607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 2640607dacd0Sqiaonuohan cat > $TMPC << EOF 2641607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 2642607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 2643607dacd0SqiaonuohanEOF 2644607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 2645607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 2646b25c9dffSStefan Weil lzo="yes" 2647b25c9dffSStefan Weil else 2648b25c9dffSStefan Weil if test "$lzo" = "yes"; then 2649b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 2650b25c9dffSStefan Weil fi 2651b25c9dffSStefan Weil lzo="no" 2652b25c9dffSStefan Weil fi 2653607dacd0Sqiaonuohanfi 2654607dacd0Sqiaonuohan 2655607dacd0Sqiaonuohan########################################## 2656607dacd0Sqiaonuohan# snappy check 2657607dacd0Sqiaonuohan 2658607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 2659607dacd0Sqiaonuohan cat > $TMPC << EOF 2660607dacd0Sqiaonuohan#include <snappy-c.h> 2661607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 2662607dacd0SqiaonuohanEOF 2663607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 2664607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 2665b25c9dffSStefan Weil snappy="yes" 2666b25c9dffSStefan Weil else 2667b25c9dffSStefan Weil if test "$snappy" = "yes"; then 2668b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 2669b25c9dffSStefan Weil fi 2670b25c9dffSStefan Weil snappy="no" 2671b25c9dffSStefan Weil fi 2672607dacd0Sqiaonuohanfi 2673607dacd0Sqiaonuohan 2674607dacd0Sqiaonuohan########################################## 26756b383c08SPeter Wu# bzip2 check 26766b383c08SPeter Wu 26776b383c08SPeter Wuif test "$bzip2" != "no" ; then 26786b383c08SPeter Wu cat > $TMPC << EOF 26796b383c08SPeter Wu#include <bzlib.h> 26806b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 26816b383c08SPeter WuEOF 26826b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 26836b383c08SPeter Wu bzip2="yes" 26846b383c08SPeter Wu else 26856b383c08SPeter Wu if test "$bzip2" = "yes"; then 26866b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 26876b383c08SPeter Wu fi 26886b383c08SPeter Wu bzip2="no" 26896b383c08SPeter Wu fi 26906b383c08SPeter Wufi 26916b383c08SPeter Wu 26926b383c08SPeter Wu########################################## 269383bc1f97SJulio Faracco# lzfse check 269483bc1f97SJulio Faracco 269583bc1f97SJulio Faraccoif test "$lzfse" != "no" ; then 269683bc1f97SJulio Faracco cat > $TMPC << EOF 269783bc1f97SJulio Faracco#include <lzfse.h> 269883bc1f97SJulio Faraccoint main(void) { lzfse_decode_scratch_size(); return 0; } 269983bc1f97SJulio FaraccoEOF 270083bc1f97SJulio Faracco if compile_prog "" "-llzfse" ; then 270183bc1f97SJulio Faracco lzfse="yes" 270283bc1f97SJulio Faracco else 270383bc1f97SJulio Faracco if test "$lzfse" = "yes"; then 270483bc1f97SJulio Faracco feature_not_found "lzfse" "Install lzfse devel" 270583bc1f97SJulio Faracco fi 270683bc1f97SJulio Faracco lzfse="no" 270783bc1f97SJulio Faracco fi 270883bc1f97SJulio Faraccofi 270983bc1f97SJulio Faracco 271083bc1f97SJulio Faracco########################################## 27113a678481SJuan Quintela# zstd check 27123a678481SJuan Quintela 27133a678481SJuan Quintelaif test "$zstd" != "no" ; then 2714297254c7SJuan Quintela libzstd_minver="1.4.0" 2715297254c7SJuan Quintela if $pkg_config --atleast-version=$libzstd_minver libzstd ; then 27163a678481SJuan Quintela zstd_cflags="$($pkg_config --cflags libzstd)" 27173a678481SJuan Quintela zstd_libs="$($pkg_config --libs libzstd)" 27183a678481SJuan Quintela LIBS="$zstd_libs $LIBS" 27193a678481SJuan Quintela QEMU_CFLAGS="$QEMU_CFLAGS $zstd_cflags" 27203a678481SJuan Quintela zstd="yes" 27213a678481SJuan Quintela else 27223a678481SJuan Quintela if test "$zstd" = "yes" ; then 27233a678481SJuan Quintela feature_not_found "libzstd" "Install libzstd devel" 27243a678481SJuan Quintela fi 27253a678481SJuan Quintela zstd="no" 27263a678481SJuan Quintela fi 27273a678481SJuan Quintelafi 27283a678481SJuan Quintela 27293a678481SJuan Quintela########################################## 2730f794573eSEduardo Otubo# libseccomp check 2731f794573eSEduardo Otubo 2732f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 27333e684455SMichael Strosaker libseccomp_minver="2.3.0" 273425ed0eccSHelge Deller if $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then 2735c3883e1fSFam Zheng seccomp_cflags="$($pkg_config --cflags libseccomp)" 2736c3883e1fSFam Zheng seccomp_libs="$($pkg_config --libs libseccomp)" 2737f794573eSEduardo Otubo seccomp="yes" 2738f794573eSEduardo Otubo else 2739f794573eSEduardo Otubo if test "$seccomp" = "yes" ; then 2740693e5910SAndrew Jones feature_not_found "libseccomp" \ 2741693e5910SAndrew Jones "Install libseccomp devel >= $libseccomp_minver" 2742896848f0SEduardo Otubo fi 2743e84d5956SYann E. MORIN seccomp="no" 2744f794573eSEduardo Otubo fi 2745f794573eSEduardo Otubofi 2746f794573eSEduardo Otubo########################################## 2747e37630caSaliguori# xen probe 2748e37630caSaliguori 2749fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 2750c1cdd9d5SJuergen Gross # Check whether Xen library path is specified via --extra-ldflags to avoid 2751c1cdd9d5SJuergen Gross # overriding this setting with pkg-config output. If not, try pkg-config 2752c1cdd9d5SJuergen Gross # to obtain all needed flags. 2753c1cdd9d5SJuergen Gross 2754c1cdd9d5SJuergen Gross if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \ 2755c1cdd9d5SJuergen Gross $pkg_config --exists xencontrol ; then 2756c1cdd9d5SJuergen Gross xen_ctrl_version="$(printf '%d%02d%02d' \ 2757c1cdd9d5SJuergen Gross $($pkg_config --modversion xencontrol | sed 's/\./ /g') )" 2758c1cdd9d5SJuergen Gross xen=yes 2759c1cdd9d5SJuergen Gross xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab" 2760c1cdd9d5SJuergen Gross xen_pc="$xen_pc xenevtchn xendevicemodel" 276158ea9a7aSAnthony PERARD if $pkg_config --exists xentoolcore; then 276258ea9a7aSAnthony PERARD xen_pc="$xen_pc xentoolcore" 276358ea9a7aSAnthony PERARD fi 2764c1cdd9d5SJuergen Gross QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)" 2765c1cdd9d5SJuergen Gross libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu" 2766c1cdd9d5SJuergen Gross else 2767c1cdd9d5SJuergen Gross 2768b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 2769d9506cabSAnthony PERARD xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn" 2770d5b93ddfSAnthony PERARD 277150ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 277250ced5b3SStefan Weil # If no, we are done and there is no Xen support. 277350ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 277450ced5b3SStefan Weil 277550ced5b3SStefan Weil # Xen (any) 277650ced5b3SStefan Weil cat > $TMPC <<EOF 277750ced5b3SStefan Weil#include <xenctrl.h> 277850ced5b3SStefan Weilint main(void) { 277950ced5b3SStefan Weil return 0; 278050ced5b3SStefan Weil} 278150ced5b3SStefan WeilEOF 278250ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 278350ced5b3SStefan Weil # Xen not found 278450ced5b3SStefan Weil if test "$xen" = "yes" ; then 278521684af0SStewart Smith feature_not_found "xen" "Install xen devel" 278650ced5b3SStefan Weil fi 278750ced5b3SStefan Weil xen=no 278850ced5b3SStefan Weil 2789d5b93ddfSAnthony PERARD # Xen unstable 279069deef08SPeter Maydell elif 279169deef08SPeter Maydell cat > $TMPC <<EOF && 27922cbf8903SRoss Lagerwall#undef XC_WANT_COMPAT_DEVICEMODEL_API 27932cbf8903SRoss Lagerwall#define __XEN_TOOLS__ 27942cbf8903SRoss Lagerwall#include <xendevicemodel.h> 2795d3c49ebbSPaul Durrant#include <xenforeignmemory.h> 27962cbf8903SRoss Lagerwallint main(void) { 27972cbf8903SRoss Lagerwall xendevicemodel_handle *xd; 2798d3c49ebbSPaul Durrant xenforeignmemory_handle *xfmem; 27992cbf8903SRoss Lagerwall 28002cbf8903SRoss Lagerwall xd = xendevicemodel_open(0, 0); 28012cbf8903SRoss Lagerwall xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0); 28022cbf8903SRoss Lagerwall 2803d3c49ebbSPaul Durrant xfmem = xenforeignmemory_open(0, 0); 2804d3c49ebbSPaul Durrant xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0); 2805d3c49ebbSPaul Durrant 28062cbf8903SRoss Lagerwall return 0; 28072cbf8903SRoss Lagerwall} 28082cbf8903SRoss LagerwallEOF 28092cbf8903SRoss Lagerwall compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 28102cbf8903SRoss Lagerwall then 28112cbf8903SRoss Lagerwall xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 28122cbf8903SRoss Lagerwall xen_ctrl_version=41100 28132cbf8903SRoss Lagerwall xen=yes 28142cbf8903SRoss Lagerwall elif 28152cbf8903SRoss Lagerwall cat > $TMPC <<EOF && 28165ba3d756SIgor Druzhinin#undef XC_WANT_COMPAT_MAP_FOREIGN_API 28175ba3d756SIgor Druzhinin#include <xenforeignmemory.h> 281858ea9a7aSAnthony PERARD#include <xentoolcore.h> 28195ba3d756SIgor Druzhininint main(void) { 28205ba3d756SIgor Druzhinin xenforeignmemory_handle *xfmem; 28215ba3d756SIgor Druzhinin 28225ba3d756SIgor Druzhinin xfmem = xenforeignmemory_open(0, 0); 28235ba3d756SIgor Druzhinin xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0); 282458ea9a7aSAnthony PERARD xentoolcore_restrict_all(0); 28255ba3d756SIgor Druzhinin 28265ba3d756SIgor Druzhinin return 0; 28275ba3d756SIgor Druzhinin} 28285ba3d756SIgor DruzhininEOF 282958ea9a7aSAnthony PERARD compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 28305ba3d756SIgor Druzhinin then 283158ea9a7aSAnthony PERARD xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 28325ba3d756SIgor Druzhinin xen_ctrl_version=41000 28335ba3d756SIgor Druzhinin xen=yes 28345ba3d756SIgor Druzhinin elif 28355ba3d756SIgor Druzhinin cat > $TMPC <<EOF && 2836da8090ccSPaul Durrant#undef XC_WANT_COMPAT_DEVICEMODEL_API 2837da8090ccSPaul Durrant#define __XEN_TOOLS__ 2838da8090ccSPaul Durrant#include <xendevicemodel.h> 2839da8090ccSPaul Durrantint main(void) { 2840da8090ccSPaul Durrant xendevicemodel_handle *xd; 2841da8090ccSPaul Durrant 2842da8090ccSPaul Durrant xd = xendevicemodel_open(0, 0); 2843da8090ccSPaul Durrant xendevicemodel_close(xd); 2844da8090ccSPaul Durrant 2845da8090ccSPaul Durrant return 0; 2846da8090ccSPaul Durrant} 2847da8090ccSPaul DurrantEOF 2848da8090ccSPaul Durrant compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 2849da8090ccSPaul Durrant then 2850da8090ccSPaul Durrant xen_stable_libs="-lxendevicemodel $xen_stable_libs" 2851f1167ee6SJuergen Gross xen_ctrl_version=40900 2852da8090ccSPaul Durrant xen=yes 2853da8090ccSPaul Durrant elif 2854da8090ccSPaul Durrant cat > $TMPC <<EOF && 28555eeb39c2SIan Campbell/* 28565eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat 28575eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given. 2858b6eb9b45SPaulina Szubarczyk * 2859b6eb9b45SPaulina Szubarczyk * Also, check if xengnttab_grant_copy_segment_t is defined and 2860b6eb9b45SPaulina Szubarczyk * grant copy operation is implemented. 2861b6eb9b45SPaulina Szubarczyk */ 2862b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_EVTCHN_API 2863b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_GNTTAB_API 2864b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2865b6eb9b45SPaulina Szubarczyk#include <xenctrl.h> 2866b6eb9b45SPaulina Szubarczyk#include <xenstore.h> 2867b6eb9b45SPaulina Szubarczyk#include <xenevtchn.h> 2868b6eb9b45SPaulina Szubarczyk#include <xengnttab.h> 2869b6eb9b45SPaulina Szubarczyk#include <xenforeignmemory.h> 2870b6eb9b45SPaulina Szubarczyk#include <stdint.h> 2871b6eb9b45SPaulina Szubarczyk#include <xen/hvm/hvm_info_table.h> 2872b6eb9b45SPaulina Szubarczyk#if !defined(HVM_MAX_VCPUS) 2873b6eb9b45SPaulina Szubarczyk# error HVM_MAX_VCPUS not defined 2874b6eb9b45SPaulina Szubarczyk#endif 2875b6eb9b45SPaulina Szubarczykint main(void) { 2876b6eb9b45SPaulina Szubarczyk xc_interface *xc = NULL; 2877b6eb9b45SPaulina Szubarczyk xenforeignmemory_handle *xfmem; 2878b6eb9b45SPaulina Szubarczyk xenevtchn_handle *xe; 2879b6eb9b45SPaulina Szubarczyk xengnttab_handle *xg; 2880b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy_segment_t* seg = NULL; 2881b6eb9b45SPaulina Szubarczyk 2882b6eb9b45SPaulina Szubarczyk xs_daemon_open(); 2883b6eb9b45SPaulina Szubarczyk 2884b6eb9b45SPaulina Szubarczyk xc = xc_interface_open(0, 0, 0); 2885b6eb9b45SPaulina Szubarczyk xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2886b6eb9b45SPaulina Szubarczyk xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2887b6eb9b45SPaulina Szubarczyk xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2888b6eb9b45SPaulina Szubarczyk xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2889b6eb9b45SPaulina Szubarczyk 2890b6eb9b45SPaulina Szubarczyk xfmem = xenforeignmemory_open(0, 0); 2891b6eb9b45SPaulina Szubarczyk xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 2892b6eb9b45SPaulina Szubarczyk 2893b6eb9b45SPaulina Szubarczyk xe = xenevtchn_open(0, 0); 2894b6eb9b45SPaulina Szubarczyk xenevtchn_fd(xe); 2895b6eb9b45SPaulina Szubarczyk 2896b6eb9b45SPaulina Szubarczyk xg = xengnttab_open(0, 0); 2897b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy(xg, 0, seg); 2898b6eb9b45SPaulina Szubarczyk 2899b6eb9b45SPaulina Szubarczyk return 0; 2900b6eb9b45SPaulina Szubarczyk} 2901b6eb9b45SPaulina SzubarczykEOF 2902b6eb9b45SPaulina Szubarczyk compile_prog "" "$xen_libs $xen_stable_libs" 2903b6eb9b45SPaulina Szubarczyk then 2904f1167ee6SJuergen Gross xen_ctrl_version=40800 2905b6eb9b45SPaulina Szubarczyk xen=yes 2906b6eb9b45SPaulina Szubarczyk elif 2907b6eb9b45SPaulina Szubarczyk cat > $TMPC <<EOF && 2908b6eb9b45SPaulina Szubarczyk/* 2909b6eb9b45SPaulina Szubarczyk * If we have stable libs the we don't want the libxc compat 2910b6eb9b45SPaulina Szubarczyk * layers, regardless of what CFLAGS we may have been given. 29115eeb39c2SIan Campbell */ 29125eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API 29135eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API 29145eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API 29155eeb39c2SIan Campbell#include <xenctrl.h> 29165eeb39c2SIan Campbell#include <xenstore.h> 29175eeb39c2SIan Campbell#include <xenevtchn.h> 29185eeb39c2SIan Campbell#include <xengnttab.h> 29195eeb39c2SIan Campbell#include <xenforeignmemory.h> 29205eeb39c2SIan Campbell#include <stdint.h> 29215eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h> 29225eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS) 29235eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined 29245eeb39c2SIan Campbell#endif 29255eeb39c2SIan Campbellint main(void) { 29265eeb39c2SIan Campbell xc_interface *xc = NULL; 29275eeb39c2SIan Campbell xenforeignmemory_handle *xfmem; 29285eeb39c2SIan Campbell xenevtchn_handle *xe; 29295eeb39c2SIan Campbell xengnttab_handle *xg; 29305eeb39c2SIan Campbell 29315eeb39c2SIan Campbell xs_daemon_open(); 29325eeb39c2SIan Campbell 29335eeb39c2SIan Campbell xc = xc_interface_open(0, 0, 0); 29345eeb39c2SIan Campbell xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 29355eeb39c2SIan Campbell xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 29365eeb39c2SIan Campbell xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 29375eeb39c2SIan Campbell xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 29385eeb39c2SIan Campbell 29395eeb39c2SIan Campbell xfmem = xenforeignmemory_open(0, 0); 29405eeb39c2SIan Campbell xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 29415eeb39c2SIan Campbell 29425eeb39c2SIan Campbell xe = xenevtchn_open(0, 0); 29435eeb39c2SIan Campbell xenevtchn_fd(xe); 29445eeb39c2SIan Campbell 29455eeb39c2SIan Campbell xg = xengnttab_open(0, 0); 29465eeb39c2SIan Campbell xengnttab_map_grant_ref(xg, 0, 0, 0); 29475eeb39c2SIan Campbell 29485eeb39c2SIan Campbell return 0; 29495eeb39c2SIan Campbell} 29505eeb39c2SIan CampbellEOF 29515eeb39c2SIan Campbell compile_prog "" "$xen_libs $xen_stable_libs" 29525eeb39c2SIan Campbell then 2953f1167ee6SJuergen Gross xen_ctrl_version=40701 29545eeb39c2SIan Campbell xen=yes 2955cdadde39SRoger Pau Monne 2956cdadde39SRoger Pau Monne # Xen 4.6 2957cdadde39SRoger Pau Monne elif 2958cdadde39SRoger Pau Monne cat > $TMPC <<EOF && 2959cdadde39SRoger Pau Monne#include <xenctrl.h> 2960e108a3c1SAnthony PERARD#include <xenstore.h> 2961d5b93ddfSAnthony PERARD#include <stdint.h> 2962d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 2963d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 2964d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 2965d5b93ddfSAnthony PERARD#endif 2966d5b93ddfSAnthony PERARDint main(void) { 2967d5b93ddfSAnthony PERARD xc_interface *xc; 2968d5b93ddfSAnthony PERARD xs_daemon_open(); 2969d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 2970d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2971d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 2972b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 29738688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2974d8b441a3SJan Beulich xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 297520a544c7SKonrad Rzeszutek Wilk xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0); 2976d8b441a3SJan Beulich return 0; 2977d8b441a3SJan Beulich} 2978d8b441a3SJan BeulichEOF 2979d8b441a3SJan Beulich compile_prog "" "$xen_libs" 2980d8b441a3SJan Beulich then 2981f1167ee6SJuergen Gross xen_ctrl_version=40600 2982d8b441a3SJan Beulich xen=yes 2983d8b441a3SJan Beulich 2984d8b441a3SJan Beulich # Xen 4.5 2985d8b441a3SJan Beulich elif 2986d8b441a3SJan Beulich cat > $TMPC <<EOF && 2987d8b441a3SJan Beulich#include <xenctrl.h> 2988d8b441a3SJan Beulich#include <xenstore.h> 2989d8b441a3SJan Beulich#include <stdint.h> 2990d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h> 2991d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS) 2992d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined 2993d8b441a3SJan Beulich#endif 2994d8b441a3SJan Beulichint main(void) { 2995d8b441a3SJan Beulich xc_interface *xc; 2996d8b441a3SJan Beulich xs_daemon_open(); 2997d8b441a3SJan Beulich xc = xc_interface_open(0, 0, 0); 2998d8b441a3SJan Beulich xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2999d8b441a3SJan Beulich xc_gnttab_open(NULL, 0); 3000d8b441a3SJan Beulich xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 3001d8b441a3SJan Beulich xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 30023996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 30033996e85cSPaul Durrant return 0; 30043996e85cSPaul Durrant} 30053996e85cSPaul DurrantEOF 30063996e85cSPaul Durrant compile_prog "" "$xen_libs" 30073996e85cSPaul Durrant then 3008f1167ee6SJuergen Gross xen_ctrl_version=40500 30093996e85cSPaul Durrant xen=yes 30103996e85cSPaul Durrant 30113996e85cSPaul Durrant elif 30123996e85cSPaul Durrant cat > $TMPC <<EOF && 30133996e85cSPaul Durrant#include <xenctrl.h> 30143996e85cSPaul Durrant#include <xenstore.h> 30153996e85cSPaul Durrant#include <stdint.h> 30163996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 30173996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 30183996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 30193996e85cSPaul Durrant#endif 30203996e85cSPaul Durrantint main(void) { 30213996e85cSPaul Durrant xc_interface *xc; 30223996e85cSPaul Durrant xs_daemon_open(); 30233996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 30243996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 30253996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 30263996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 30273996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 30288688e065SStefano Stabellini return 0; 30298688e065SStefano Stabellini} 30308688e065SStefano StabelliniEOF 30318688e065SStefano Stabellini compile_prog "" "$xen_libs" 303269deef08SPeter Maydell then 3033f1167ee6SJuergen Gross xen_ctrl_version=40200 30348688e065SStefano Stabellini xen=yes 30358688e065SStefano Stabellini 3036e37630caSaliguori else 3037fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 3038edfb07edSIan Campbell feature_not_found "xen (unsupported version)" \ 3039edfb07edSIan Campbell "Install a supported xen (xen 4.2 or newer)" 3040fc321b4bSJuan Quintela fi 3041fc321b4bSJuan Quintela xen=no 3042e37630caSaliguori fi 3043d5b93ddfSAnthony PERARD 3044d5b93ddfSAnthony PERARD if test "$xen" = yes; then 3045f1167ee6SJuergen Gross if test $xen_ctrl_version -ge 40701 ; then 30465eeb39c2SIan Campbell libs_softmmu="$xen_stable_libs $libs_softmmu" 30475eeb39c2SIan Campbell fi 3048d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 3049d5b93ddfSAnthony PERARD fi 3050e37630caSaliguori fi 3051c1cdd9d5SJuergen Grossfi 3052e37630caSaliguori 3053eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 3054edfb07edSIan Campbell if test "$xen" = "yes" && test "$linux" = "yes"; then 3055eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 3056eb6fda0fSAnthony PERARD else 3057eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 305876ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 305976ad07a4SPeter Maydell " but this feature requires /sys from Linux" 3060eb6fda0fSAnthony PERARD fi 3061eb6fda0fSAnthony PERARD xen_pci_passthrough=no 3062eb6fda0fSAnthony PERARD fi 3063eb6fda0fSAnthony PERARDfi 3064eb6fda0fSAnthony PERARD 3065e37630caSaliguori########################################## 3066d661d9a4SJustin Terry (VM)# Windows Hypervisor Platform accelerator (WHPX) check 3067d661d9a4SJustin Terry (VM)if test "$whpx" != "no" ; then 3068327fccb2SLucian Petrut if check_include "WinHvPlatform.h" && check_include "WinHvEmulation.h"; then 3069d661d9a4SJustin Terry (VM) whpx="yes" 3070d661d9a4SJustin Terry (VM) else 3071d661d9a4SJustin Terry (VM) if test "$whpx" = "yes"; then 307253537bb1SJustin Terry (VM) via Qemu-devel feature_not_found "WinHvPlatform" "WinHvEmulation is not installed" 3073d661d9a4SJustin Terry (VM) fi 3074d661d9a4SJustin Terry (VM) whpx="no" 3075d661d9a4SJustin Terry (VM) fi 3076d661d9a4SJustin Terry (VM)fi 3077d661d9a4SJustin Terry (VM) 3078d661d9a4SJustin Terry (VM)########################################## 3079dfffc653SJuan Quintela# Sparse probe 3080dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 30810dba6195SLoïc Minier if has cgcc; then 3082dfffc653SJuan Quintela sparse=yes 3083dfffc653SJuan Quintela else 3084dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 308521684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 3086dfffc653SJuan Quintela fi 3087dfffc653SJuan Quintela sparse=no 3088dfffc653SJuan Quintela fi 3089dfffc653SJuan Quintelafi 3090dfffc653SJuan Quintela 3091dfffc653SJuan Quintela########################################## 3092f676c67eSJeremy White# X11 probe 3093f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 30948781595bSGerd Hoffmann have_x11=yes 309589138857SStefan Weil x11_cflags=$($pkg_config --cflags x11) 309689138857SStefan Weil x11_libs=$($pkg_config --libs x11) 3097f676c67eSJeremy Whitefi 3098f676c67eSJeremy White 3099f676c67eSJeremy White########################################## 3100a4ccabcfSAnthony Liguori# GTK probe 3101a4ccabcfSAnthony Liguori 31025a464e6cSPeter Xuif test "$gtk" != "no"; then 310389d85cdeSDaniel P. Berrangé gtkpackage="gtk+-3.0" 310489d85cdeSDaniel P. Berrangé gtkx11package="gtk+-x11-3.0" 31057b23d121SVolker Rümelin gtkversion="3.22.0" 3106bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 310789138857SStefan Weil gtk_cflags=$($pkg_config --cflags $gtkpackage) 310889138857SStefan Weil gtk_libs=$($pkg_config --libs $gtkpackage) 310989138857SStefan Weil gtk_version=$($pkg_config --modversion $gtkpackage) 31100a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 31118781595bSGerd Hoffmann need_x11=yes 3112f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 3113f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 31140a337ed0SGerd Hoffmann fi 3115bbbf9bfbSStefan Weil gtk="yes" 3116bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 31175fe309ffSGerd Hoffmann feature_not_found "gtk" "Install gtk3-devel" 3118bbbf9bfbSStefan Weil else 3119bbbf9bfbSStefan Weil gtk="no" 3120bbbf9bfbSStefan Weil fi 3121bbbf9bfbSStefan Weilfi 3122bbbf9bfbSStefan Weil 3123ddbb0d09SDaniel P. Berrange 3124ddbb0d09SDaniel P. Berrange########################################## 3125ddbb0d09SDaniel P. Berrange# GNUTLS probe 3126ddbb0d09SDaniel P. Berrange 3127ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then 3128a73e82efSRichard Henderson pass="no" 3129a0722409SDaniel P. Berrangé if $pkg_config --exists "gnutls >= 3.1.18"; then 313089138857SStefan Weil gnutls_cflags=$($pkg_config --cflags gnutls) 313189138857SStefan Weil gnutls_libs=$($pkg_config --libs gnutls) 3132a73e82efSRichard Henderson # Packaging for the static libraries is not always correct. 3133a73e82efSRichard Henderson # At least ubuntu 18.04 ships only shared libraries. 3134a73e82efSRichard Henderson write_c_skeleton 3135a73e82efSRichard Henderson if compile_prog "" "$gnutls_libs" ; then 3136243dc2cfSRichard Henderson LIBS="$gnutls_libs $LIBS" 3137ddbb0d09SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 3138a73e82efSRichard Henderson pass="yes" 3139a73e82efSRichard Henderson fi 3140a73e82efSRichard Henderson fi 3141a73e82efSRichard Henderson if test "$pass" = "no" && test "$gnutls" = "yes"; then 3142a0722409SDaniel P. Berrangé feature_not_found "gnutls" "Install gnutls devel >= 3.1.18" 3143ddbb0d09SDaniel P. Berrange else 3144a73e82efSRichard Henderson gnutls="$pass" 3145ddbb0d09SDaniel P. Berrange fi 3146ddbb0d09SDaniel P. Berrangefi 3147ddbb0d09SDaniel P. Berrange 314891bfcdb0SDaniel P. Berrange 314991bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag, 315091bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle 3151a0722409SDaniel P. Berrangé# explicitly 315291bfcdb0SDaniel P. Berrangeif test -z "$gcrypt" 315391bfcdb0SDaniel P. Berrangethen 3154a0722409SDaniel P. Berrangé if test "$nettle" = "yes" 315591bfcdb0SDaniel P. Berrange then 315691bfcdb0SDaniel P. Berrange gcrypt="no" 315791bfcdb0SDaniel P. Berrange fi 315891bfcdb0SDaniel P. Berrangefi 315991bfcdb0SDaniel P. Berrange 316091bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag, 316191bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt 3162a0722409SDaniel P. Berrangé# explicitly 316391bfcdb0SDaniel P. Berrangeif test -z "$nettle" 316491bfcdb0SDaniel P. Berrangethen 3165a0722409SDaniel P. Berrangé if test "$gcrypt" = "yes" 316691bfcdb0SDaniel P. Berrange then 316791bfcdb0SDaniel P. Berrange nettle="no" 316891bfcdb0SDaniel P. Berrange fi 316991bfcdb0SDaniel P. Berrangefi 317091bfcdb0SDaniel P. Berrange 3171dea7a64eSDaniel P. Berrangéhas_libgcrypt() { 317291bfcdb0SDaniel P. Berrange if ! has "libgcrypt-config" 317391bfcdb0SDaniel P. Berrange then 317491bfcdb0SDaniel P. Berrange return 1 317591bfcdb0SDaniel P. Berrange fi 317691bfcdb0SDaniel P. Berrange 317791bfcdb0SDaniel P. Berrange if test -n "$cross_prefix" 317891bfcdb0SDaniel P. Berrange then 317989138857SStefan Weil host=$(libgcrypt-config --host) 318091bfcdb0SDaniel P. Berrange if test "$host-" != $cross_prefix 318191bfcdb0SDaniel P. Berrange then 318291bfcdb0SDaniel P. Berrange return 1 318391bfcdb0SDaniel P. Berrange fi 318491bfcdb0SDaniel P. Berrange fi 318591bfcdb0SDaniel P. Berrange 3186dea7a64eSDaniel P. Berrangé maj=`libgcrypt-config --version | awk -F . '{print $1}'` 3187dea7a64eSDaniel P. Berrangé min=`libgcrypt-config --version | awk -F . '{print $2}'` 3188dea7a64eSDaniel P. Berrangé 3189dea7a64eSDaniel P. Berrangé if test $maj != 1 || test $min -lt 5 3190dea7a64eSDaniel P. Berrangé then 3191dea7a64eSDaniel P. Berrangé return 1 3192dea7a64eSDaniel P. Berrangé fi 3193dea7a64eSDaniel P. Berrangé 319491bfcdb0SDaniel P. Berrange return 0 319591bfcdb0SDaniel P. Berrange} 319691bfcdb0SDaniel P. Berrange 3197a0722409SDaniel P. Berrangé 3198a0722409SDaniel P. Berrangéif test "$nettle" != "no"; then 3199a73e82efSRichard Henderson pass="no" 320064dd2f3bSDaniel P. Berrangé if $pkg_config --exists "nettle >= 2.7.1"; then 3201a0722409SDaniel P. Berrangé nettle_cflags=$($pkg_config --cflags nettle) 3202a0722409SDaniel P. Berrangé nettle_libs=$($pkg_config --libs nettle) 3203a0722409SDaniel P. Berrangé nettle_version=$($pkg_config --modversion nettle) 3204a73e82efSRichard Henderson # Link test to make sure the given libraries work (e.g for static). 3205a73e82efSRichard Henderson write_c_skeleton 3206a73e82efSRichard Henderson if compile_prog "" "$nettle_libs" ; then 3207243dc2cfSRichard Henderson LIBS="$nettle_libs $LIBS" 3208a0722409SDaniel P. Berrangé QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" 3209a0722409SDaniel P. Berrangé if test -z "$gcrypt"; then 3210a0722409SDaniel P. Berrangé gcrypt="no" 3211a0722409SDaniel P. Berrangé fi 3212a73e82efSRichard Henderson pass="yes" 3213a73e82efSRichard Henderson fi 3214a73e82efSRichard Henderson fi 3215dc2207afSDaniel P. Berrangé if test "$pass" = "yes" 3216dc2207afSDaniel P. Berrangé then 3217dc2207afSDaniel P. Berrangé cat > $TMPC << EOF 3218dc2207afSDaniel P. Berrangé#include <nettle/xts.h> 3219dc2207afSDaniel P. Berrangéint main(void) { 3220dc2207afSDaniel P. Berrangé return 0; 3221dc2207afSDaniel P. Berrangé} 3222dc2207afSDaniel P. BerrangéEOF 3223dc2207afSDaniel P. Berrangé if compile_prog "$nettle_cflags" "$nettle_libs" ; then 3224dc2207afSDaniel P. Berrangé nettle_xts=yes 3225dc2207afSDaniel P. Berrangé qemu_private_xts=no 3226dc2207afSDaniel P. Berrangé fi 3227dc2207afSDaniel P. Berrangé fi 3228a73e82efSRichard Henderson if test "$pass" = "no" && test "$nettle" = "yes"; then 322964dd2f3bSDaniel P. Berrangé feature_not_found "nettle" "Install nettle devel >= 2.7.1" 3230a0722409SDaniel P. Berrangé else 3231a73e82efSRichard Henderson nettle="$pass" 3232a0722409SDaniel P. Berrangé fi 3233a0722409SDaniel P. Berrangéfi 3234a0722409SDaniel P. Berrangé 323591bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then 3236a73e82efSRichard Henderson pass="no" 3237dea7a64eSDaniel P. Berrangé if has_libgcrypt; then 323889138857SStefan Weil gcrypt_cflags=$(libgcrypt-config --cflags) 323989138857SStefan Weil gcrypt_libs=$(libgcrypt-config --libs) 3240a73e82efSRichard Henderson # Debian has removed -lgpg-error from libgcrypt-config 324191bfcdb0SDaniel P. Berrange # as it "spreads unnecessary dependencies" which in 324291bfcdb0SDaniel P. Berrange # turn breaks static builds... 324391bfcdb0SDaniel P. Berrange if test "$static" = "yes" 324491bfcdb0SDaniel P. Berrange then 324591bfcdb0SDaniel P. Berrange gcrypt_libs="$gcrypt_libs -lgpg-error" 324691bfcdb0SDaniel P. Berrange fi 32471f923c70SLongpeng(Mike) 3248a73e82efSRichard Henderson # Link test to make sure the given libraries work (e.g for static). 3249a73e82efSRichard Henderson write_c_skeleton 3250a73e82efSRichard Henderson if compile_prog "" "$gcrypt_libs" ; then 3251243dc2cfSRichard Henderson LIBS="$gcrypt_libs $LIBS" 325237788f25SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" 3253a73e82efSRichard Henderson pass="yes" 3254a73e82efSRichard Henderson fi 3255a73e82efSRichard Henderson fi 3256a73e82efSRichard Henderson if test "$pass" = "yes"; then 325737788f25SDaniel P. Berrange gcrypt="yes" 32581f923c70SLongpeng(Mike) cat > $TMPC << EOF 32591f923c70SLongpeng(Mike)#include <gcrypt.h> 32601f923c70SLongpeng(Mike)int main(void) { 32611f923c70SLongpeng(Mike) gcry_mac_hd_t handle; 32621f923c70SLongpeng(Mike) gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5, 32631f923c70SLongpeng(Mike) GCRY_MAC_FLAG_SECURE, NULL); 32641f923c70SLongpeng(Mike) return 0; 32651f923c70SLongpeng(Mike)} 32661f923c70SLongpeng(Mike)EOF 32671f923c70SLongpeng(Mike) if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 32681f923c70SLongpeng(Mike) gcrypt_hmac=yes 32691f923c70SLongpeng(Mike) fi 3270e0576942SDaniel P. Berrangé cat > $TMPC << EOF 3271e0576942SDaniel P. Berrangé#include <gcrypt.h> 3272e0576942SDaniel P. Berrangéint main(void) { 3273e0576942SDaniel P. Berrangé gcry_cipher_hd_t handle; 3274e0576942SDaniel P. Berrangé gcry_cipher_open(&handle, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_XTS, 0); 3275e0576942SDaniel P. Berrangé return 0; 3276e0576942SDaniel P. Berrangé} 3277e0576942SDaniel P. BerrangéEOF 3278e0576942SDaniel P. Berrangé if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 3279e0576942SDaniel P. Berrangé gcrypt_xts=yes 3280e0576942SDaniel P. Berrangé qemu_private_xts=no 3281e0576942SDaniel P. Berrangé fi 3282a73e82efSRichard Henderson elif test "$gcrypt" = "yes"; then 3283dea7a64eSDaniel P. Berrangé feature_not_found "gcrypt" "Install gcrypt devel >= 1.5.0" 328491bfcdb0SDaniel P. Berrange else 328591bfcdb0SDaniel P. Berrange gcrypt="no" 328691bfcdb0SDaniel P. Berrange fi 328762893b67SDaniel P. Berrangefi 328862893b67SDaniel P. Berrange 3289ddbb0d09SDaniel P. Berrange 329091bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes" 329191bfcdb0SDaniel P. Berrangethen 329291bfcdb0SDaniel P. Berrange error_exit "Only one of gcrypt & nettle can be enabled" 329391bfcdb0SDaniel P. Berrangefi 3294ed754746SDaniel P. Berrange 32959a2fd434SDaniel P. Berrange########################################## 32969a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite 32979a2fd434SDaniel P. Berrange 32989a2fd434SDaniel P. Berrangetasn1=yes 329990246037SDaniel P. Berrangetasn1_cflags="" 330090246037SDaniel P. Berrangetasn1_libs="" 33019a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then 330289138857SStefan Weil tasn1_cflags=$($pkg_config --cflags libtasn1) 330389138857SStefan Weil tasn1_libs=$($pkg_config --libs libtasn1) 33049a2fd434SDaniel P. Berrangeelse 33059a2fd434SDaniel P. Berrange tasn1=no 33069a2fd434SDaniel P. Berrangefi 33079a2fd434SDaniel P. Berrange 3308ed754746SDaniel P. Berrange 3309bbbf9bfbSStefan Weil########################################## 33108953caf3SDaniel P. Berrange# PAM probe 33118953caf3SDaniel P. Berrange 33128953caf3SDaniel P. Berrangeif test "$auth_pam" != "no"; then 33138953caf3SDaniel P. Berrange cat > $TMPC <<EOF 33148953caf3SDaniel P. Berrange#include <security/pam_appl.h> 33158953caf3SDaniel P. Berrange#include <stdio.h> 33168953caf3SDaniel P. Berrangeint main(void) { 33178953caf3SDaniel P. Berrange const char *service_name = "qemu"; 33188953caf3SDaniel P. Berrange const char *user = "frank"; 33199c9642d0SDr. David Alan Gilbert const struct pam_conv pam_conv = { 0 }; 33208953caf3SDaniel P. Berrange pam_handle_t *pamh = NULL; 33219c9642d0SDr. David Alan Gilbert pam_start(service_name, user, &pam_conv, &pamh); 33228953caf3SDaniel P. Berrange return 0; 33238953caf3SDaniel P. Berrange} 33248953caf3SDaniel P. BerrangeEOF 33258953caf3SDaniel P. Berrange if compile_prog "" "-lpam" ; then 33268953caf3SDaniel P. Berrange auth_pam=yes 33278953caf3SDaniel P. Berrange else 33288953caf3SDaniel P. Berrange if test "$auth_pam" = "yes"; then 33298953caf3SDaniel P. Berrange feature_not_found "PAM" "Install PAM development package" 33308953caf3SDaniel P. Berrange else 33318953caf3SDaniel P. Berrange auth_pam=no 33328953caf3SDaniel P. Berrange fi 33338953caf3SDaniel P. Berrange fi 33348953caf3SDaniel P. Berrangefi 33358953caf3SDaniel P. Berrange 33368953caf3SDaniel P. Berrange########################################## 3337559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket ) 3338559607eaSDaniel P. Berrange 3339559607eaSDaniel P. Berrangehave_ifaddrs_h=yes 3340559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then 3341559607eaSDaniel P. Berrange have_ifaddrs_h=no 3342559607eaSDaniel P. Berrangefi 3343559607eaSDaniel P. Berrange 3344e865b97fSChen Gang######################################### 3345e865b97fSChen Gang# libdrm check 3346e865b97fSChen Ganghave_drm_h=no 3347e865b97fSChen Gangif check_include "libdrm/drm.h" ; then 3348e865b97fSChen Gang have_drm_h=yes 3349e865b97fSChen Gangfi 3350e865b97fSChen Gang 33512a4b472cSDavid CARLIER######################################### 33522a4b472cSDavid CARLIER# sys/signal.h check 33532a4b472cSDavid CARLIERhave_sys_signal_h=no 33542a4b472cSDavid CARLIERif check_include "sys/signal.h" ; then 33552a4b472cSDavid CARLIER have_sys_signal_h=yes 33562a4b472cSDavid CARLIERfi 33572a4b472cSDavid CARLIER 3358559607eaSDaniel P. Berrange########################################## 3359bbbf9bfbSStefan Weil# VTE probe 3360bbbf9bfbSStefan Weil 3361bbbf9bfbSStefan Weilif test "$vte" != "no"; then 3362c6feff9eSCole Robinson vteminversion="0.32.0" 3363c6feff9eSCole Robinson if $pkg_config --exists "vte-2.91"; then 3364c6feff9eSCole Robinson vtepackage="vte-2.91" 3365c6feff9eSCole Robinson else 3366528de90aSDaniel P. Berrange vtepackage="vte-2.90" 3367c6feff9eSCole Robinson fi 3368c6feff9eSCole Robinson if $pkg_config --exists "$vtepackage >= $vteminversion"; then 336989138857SStefan Weil vte_cflags=$($pkg_config --cflags $vtepackage) 337089138857SStefan Weil vte_libs=$($pkg_config --libs $vtepackage) 337189138857SStefan Weil vteversion=$($pkg_config --modversion $vtepackage) 3372bbbf9bfbSStefan Weil vte="yes" 3373bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 3374c6feff9eSCole Robinson feature_not_found "vte" "Install libvte-2.90/2.91 devel" 33759e04c683SStefan Weil else 3376bbbf9bfbSStefan Weil vte="no" 3377a4ccabcfSAnthony Liguori fi 3378a4ccabcfSAnthony Liguorifi 3379a4ccabcfSAnthony Liguori 3380a4ccabcfSAnthony Liguori########################################## 338111d9f695Sbellard# SDL probe 338211d9f695Sbellard 3383aee8a619SCarlo Marcelo Arenas Belón# Look for sdl configuration program (pkg-config or sdl2-config). Try 3384aee8a619SCarlo Marcelo Arenas Belón# sdl2-config even without cross prefix, and favour pkg-config over sdl2-config. 338547c03744SDave Airlie 3386c6093a05SPeter Xusdl_probe () 3387c6093a05SPeter Xu{ 33880015ca5cSDaniel P. Berrangé if $pkg_config sdl2 --exists; then 33890015ca5cSDaniel P. Berrangé sdlconfig="$pkg_config sdl2" 339089138857SStefan Weil sdlversion=$($sdlconfig --modversion 2>/dev/null) 3391aee8a619SCarlo Marcelo Arenas Belón elif has "$sdl2_config"; then 33920015ca5cSDaniel P. Berrangé sdlconfig="$sdl2_config" 339389138857SStefan Weil sdlversion=$($sdlconfig --version) 3394a0dfd8a4SLoïc Minier else 3395a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 33968f4ea9cdSGerd Hoffmann feature_not_found "sdl" "Install SDL2-devel" 3397a0dfd8a4SLoïc Minier fi 3398a0dfd8a4SLoïc Minier sdl=no 3399c6093a05SPeter Xu # no need to do the rest 3400c6093a05SPeter Xu return 34019316f803SPaolo Bonzini fi 3402aee8a619SCarlo Marcelo Arenas Belón if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl2-config; then 34033ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 34043ec87ffeSPaolo Bonzini fi 340511d9f695Sbellard 340611d9f695Sbellard cat > $TMPC << EOF 340711d9f695Sbellard#include <SDL.h> 340811d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 340911d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 341011d9f695SbellardEOF 341189138857SStefan Weil sdl_cflags=$($sdlconfig --cflags 2>/dev/null) 34122ca5c430SGerd Hoffmann sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug 341374f42e18STeLeMan if test "$static" = "yes" ; then 34140015ca5cSDaniel P. Berrangé if $pkg_config sdl2 --exists; then 34150015ca5cSDaniel P. Berrangé sdl_libs=$($pkg_config sdl2 --static --libs 2>/dev/null) 34165f37e6d4SThomas Huth else 341789138857SStefan Weil sdl_libs=$($sdlconfig --static-libs 2>/dev/null) 34185f37e6d4SThomas Huth fi 341974f42e18STeLeMan else 342089138857SStefan Weil sdl_libs=$($sdlconfig --libs 2>/dev/null) 342174f42e18STeLeMan fi 342252166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 342311d9f695Sbellard sdl=yes 34247c1f25b4Sbellard 342567c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 3426e633a5c6SEric Blake if test "$sdl" = "yes" && test "$static" = "yes" ; then 342767c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 342889138857SStefan Weil sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)" 342989138857SStefan Weil sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)" 343011d9f695Sbellard fi 343152166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 34321ac88f28SJuan Quintela : 34331ac88f28SJuan Quintela else 34341ac88f28SJuan Quintela sdl=no 34357c1f25b4Sbellard fi 34367c1f25b4Sbellard fi # static link 3437c4198157SJuan Quintela else # sdl not found 3438c4198157SJuan Quintela if test "$sdl" = "yes" ; then 34390015ca5cSDaniel P. Berrangé feature_not_found "sdl" "Install SDL2 devel" 3440c4198157SJuan Quintela fi 3441c4198157SJuan Quintela sdl=no 34427c1f25b4Sbellard fi # sdl compile test 3443c6093a05SPeter Xu} 3444c6093a05SPeter Xu 3445a442fe2fSDaniel P. Berrangésdl_image_probe () 3446a442fe2fSDaniel P. Berrangé{ 3447a442fe2fSDaniel P. Berrangé if test "$sdl_image" != "no" ; then 3448a442fe2fSDaniel P. Berrangé if $pkg_config SDL2_image --exists; then 3449a442fe2fSDaniel P. Berrangé if test "$static" = "yes"; then 3450a442fe2fSDaniel P. Berrangé sdl_image_libs=$($pkg_config SDL2_image --libs --static 2>/dev/null) 3451a442fe2fSDaniel P. Berrangé else 3452a442fe2fSDaniel P. Berrangé sdl_image_libs=$($pkg_config SDL2_image --libs 2>/dev/null) 3453a442fe2fSDaniel P. Berrangé fi 3454a442fe2fSDaniel P. Berrangé sdl_image_cflags=$($pkg_config SDL2_image --cflags 2>/dev/null) 3455a442fe2fSDaniel P. Berrangé sdl_image=yes 3456a442fe2fSDaniel P. Berrangé 3457a442fe2fSDaniel P. Berrangé sdl_cflags="$sdl_cflags $sdl_image_cflags" 3458a442fe2fSDaniel P. Berrangé sdl_libs="$sdl_libs $sdl_image_libs" 3459a442fe2fSDaniel P. Berrangé else 3460a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes" ; then 3461a442fe2fSDaniel P. Berrangé feature_not_found "sdl_image" "Install SDL Image devel" 3462a442fe2fSDaniel P. Berrangé else 3463a442fe2fSDaniel P. Berrangé sdl_image=no 3464a442fe2fSDaniel P. Berrangé fi 3465a442fe2fSDaniel P. Berrangé fi 3466a442fe2fSDaniel P. Berrangé fi 3467a442fe2fSDaniel P. Berrangé} 3468a442fe2fSDaniel P. Berrangé 3469c6093a05SPeter Xuif test "$sdl" != "no" ; then 3470c6093a05SPeter Xu sdl_probe 3471fd677642Sthsfi 347211d9f695Sbellard 34735368a422Saliguoriif test "$sdl" = "yes" ; then 3474a442fe2fSDaniel P. Berrangé sdl_image_probe 3475a442fe2fSDaniel P. Berrangéelse 3476a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes"; then 3477a442fe2fSDaniel P. Berrangé echo "warning: SDL Image requested, but SDL is not available, disabling" 3478a442fe2fSDaniel P. Berrangé fi 3479a442fe2fSDaniel P. Berrangé sdl_image=no 3480a442fe2fSDaniel P. Berrangéfi 3481a442fe2fSDaniel P. Berrangé 3482a442fe2fSDaniel P. Berrangéif test "$sdl" = "yes" ; then 34835368a422Saliguori cat > $TMPC <<EOF 34845368a422Saliguori#include <SDL.h> 34855368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 34865368a422Saliguori#include <X11/XKBlib.h> 34875368a422Saliguori#else 34885368a422Saliguori#error No x11 support 34895368a422Saliguori#endif 34905368a422Saliguoriint main(void) { return 0; } 34915368a422SaliguoriEOF 3492f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 34938781595bSGerd Hoffmann need_x11=yes 3494f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 3495f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 34965368a422Saliguori fi 34975368a422Saliguorifi 34985368a422Saliguori 34998f28f3fbSths########################################## 35002da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 35012da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 35022da776dbSMichael R. Hines cat > $TMPC <<EOF 35032da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 35042da776dbSMichael R. Hinesint main(void) { return 0; } 35052da776dbSMichael R. HinesEOF 3506ef6d4ccdSYuval Shaia rdma_libs="-lrdmacm -libverbs -libumad" 35072da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 35082da776dbSMichael R. Hines rdma="yes" 3509ef6d4ccdSYuval Shaia libs_softmmu="$libs_softmmu $rdma_libs" 35102da776dbSMichael R. Hines else 35112da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 35122da776dbSMichael R. Hines error_exit \ 3513ef6d4ccdSYuval Shaia " OpenFabrics librdmacm/libibverbs/libibumad not present." \ 35142da776dbSMichael R. Hines " Your options:" \ 3515ef6d4ccdSYuval Shaia " (1) Fast: Install infiniband packages (devel) from your distro." \ 35162da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 35172da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 35182da776dbSMichael R. Hines fi 35192da776dbSMichael R. Hines rdma="no" 35202da776dbSMichael R. Hines fi 35212da776dbSMichael R. Hinesfi 35222da776dbSMichael R. Hines 352321ab34c9SMarcel Apfelbaum########################################## 352421ab34c9SMarcel Apfelbaum# PVRDMA detection 352521ab34c9SMarcel Apfelbaum 352621ab34c9SMarcel Apfelbaumcat > $TMPC <<EOF && 352721ab34c9SMarcel Apfelbaum#include <sys/mman.h> 352821ab34c9SMarcel Apfelbaum 352921ab34c9SMarcel Apfelbaumint 353021ab34c9SMarcel Apfelbaummain(void) 353121ab34c9SMarcel Apfelbaum{ 353221ab34c9SMarcel Apfelbaum char buf = 0; 353321ab34c9SMarcel Apfelbaum void *addr = &buf; 353421ab34c9SMarcel Apfelbaum addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED); 353521ab34c9SMarcel Apfelbaum 353621ab34c9SMarcel Apfelbaum return 0; 353721ab34c9SMarcel Apfelbaum} 353821ab34c9SMarcel ApfelbaumEOF 353921ab34c9SMarcel Apfelbaum 354021ab34c9SMarcel Apfelbaumif test "$rdma" = "yes" ; then 354121ab34c9SMarcel Apfelbaum case "$pvrdma" in 354221ab34c9SMarcel Apfelbaum "") 354321ab34c9SMarcel Apfelbaum if compile_prog "" ""; then 354421ab34c9SMarcel Apfelbaum pvrdma="yes" 354521ab34c9SMarcel Apfelbaum else 354621ab34c9SMarcel Apfelbaum pvrdma="no" 354721ab34c9SMarcel Apfelbaum fi 354821ab34c9SMarcel Apfelbaum ;; 354921ab34c9SMarcel Apfelbaum "yes") 355021ab34c9SMarcel Apfelbaum if ! compile_prog "" ""; then 355121ab34c9SMarcel Apfelbaum error_exit "PVRDMA is not supported since mremap is not implemented" 355221ab34c9SMarcel Apfelbaum fi 355321ab34c9SMarcel Apfelbaum pvrdma="yes" 355421ab34c9SMarcel Apfelbaum ;; 355521ab34c9SMarcel Apfelbaum "no") 355621ab34c9SMarcel Apfelbaum pvrdma="no" 355721ab34c9SMarcel Apfelbaum ;; 355821ab34c9SMarcel Apfelbaum esac 355921ab34c9SMarcel Apfelbaumelse 356021ab34c9SMarcel Apfelbaum if test "$pvrdma" = "yes" ; then 356121ab34c9SMarcel Apfelbaum error_exit "PVRDMA requires rdma suppport" 356221ab34c9SMarcel Apfelbaum fi 356321ab34c9SMarcel Apfelbaum pvrdma="no" 356421ab34c9SMarcel Apfelbaumfi 356595c6bff3SBenoît Canet 3566ee108585SYuval Shaia# Let's see if enhanced reg_mr is supported 3567ee108585SYuval Shaiaif test "$pvrdma" = "yes" ; then 3568ee108585SYuval Shaia 3569ee108585SYuval Shaiacat > $TMPC <<EOF && 3570ee108585SYuval Shaia#include <infiniband/verbs.h> 3571ee108585SYuval Shaia 3572ee108585SYuval Shaiaint 3573ee108585SYuval Shaiamain(void) 3574ee108585SYuval Shaia{ 3575ee108585SYuval Shaia struct ibv_mr *mr; 3576ee108585SYuval Shaia struct ibv_pd *pd = NULL; 3577ee108585SYuval Shaia size_t length = 10; 3578ee108585SYuval Shaia uint64_t iova = 0; 3579ee108585SYuval Shaia int access = 0; 3580ee108585SYuval Shaia void *addr = NULL; 3581ee108585SYuval Shaia 3582ee108585SYuval Shaia mr = ibv_reg_mr_iova(pd, addr, length, iova, access); 3583ee108585SYuval Shaia 3584ee108585SYuval Shaia ibv_dereg_mr(mr); 3585ee108585SYuval Shaia 3586ee108585SYuval Shaia return 0; 3587ee108585SYuval Shaia} 3588ee108585SYuval ShaiaEOF 3589ee108585SYuval Shaia if ! compile_prog "" "-libverbs"; then 3590ee108585SYuval Shaia QEMU_CFLAGS="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR" 3591ee108585SYuval Shaia fi 3592ee108585SYuval Shaiafi 3593ee108585SYuval Shaia 359495c6bff3SBenoît Canet########################################## 35952f9606b3Saliguori# VNC SASL detection 3596e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then 35972f9606b3Saliguori cat > $TMPC <<EOF 35982f9606b3Saliguori#include <sasl/sasl.h> 35992f9606b3Saliguori#include <stdio.h> 36002f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 36012f9606b3SaliguoriEOF 36022f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 3603bd702ffcSPhilippe Mathieu-Daudé # QEMU defines struct iovec in "qemu/osdep.h", 3604bd702ffcSPhilippe Mathieu-Daudé # we don't want libsasl to redefine it in <sasl/sasl.h>. 3605bd702ffcSPhilippe Mathieu-Daudé vnc_sasl_cflags="-DSTRUCT_IOVEC_DEFINED" 36062f9606b3Saliguori vnc_sasl_libs="-lsasl2" 360752166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 3608ea784e3bSJuan Quintela vnc_sasl=yes 3609fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 3610ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 36112f9606b3Saliguori else 3612ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 361321684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 3614ea784e3bSJuan Quintela fi 3615ea784e3bSJuan Quintela vnc_sasl=no 36162f9606b3Saliguori fi 36172f9606b3Saliguorifi 36182f9606b3Saliguori 36192f9606b3Saliguori########################################## 36202f6f5c7aSCorentin Chary# VNC JPEG detection 3621e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then 36222f6f5c7aSCorentin Charycat > $TMPC <<EOF 36232f6f5c7aSCorentin Chary#include <stdio.h> 36242f6f5c7aSCorentin Chary#include <jpeglib.h> 36252f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 36262f6f5c7aSCorentin CharyEOF 36272f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 36282f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 36292f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 36302f6f5c7aSCorentin Chary vnc_jpeg=yes 36312f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 3632ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 36332f6f5c7aSCorentin Chary else 36342f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 363521684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 36362f6f5c7aSCorentin Chary fi 36372f6f5c7aSCorentin Chary vnc_jpeg=no 36382f6f5c7aSCorentin Chary fi 36392f6f5c7aSCorentin Charyfi 36402f6f5c7aSCorentin Chary 36412f6f5c7aSCorentin Chary########################################## 3642efe556adSCorentin Chary# VNC PNG detection 3643e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_png" != "no" ; then 3644efe556adSCorentin Charycat > $TMPC <<EOF 3645efe556adSCorentin Chary//#include <stdio.h> 3646efe556adSCorentin Chary#include <png.h> 3647832ce9c2SScott Wood#include <stddef.h> 3648efe556adSCorentin Charyint main(void) { 3649efe556adSCorentin Chary png_structp png_ptr; 3650efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 36517edc3fedSPeter Maydell return png_ptr != 0; 3652efe556adSCorentin Chary} 3653efe556adSCorentin CharyEOF 365465d5d3f9SStefan Weil if $pkg_config libpng --exists; then 365589138857SStefan Weil vnc_png_cflags=$($pkg_config libpng --cflags) 365689138857SStefan Weil vnc_png_libs=$($pkg_config libpng --libs) 36579af8025eSBrad else 3658efe556adSCorentin Chary vnc_png_cflags="" 3659efe556adSCorentin Chary vnc_png_libs="-lpng" 36609af8025eSBrad fi 3661efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 3662efe556adSCorentin Chary vnc_png=yes 3663efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 36649af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 3665efe556adSCorentin Chary else 3666efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 366721684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 3668efe556adSCorentin Chary fi 3669efe556adSCorentin Chary vnc_png=no 3670efe556adSCorentin Chary fi 3671efe556adSCorentin Charyfi 3672efe556adSCorentin Chary 3673efe556adSCorentin Chary########################################## 36746a021536SGerd Hoffmann# xkbcommon probe 36756a021536SGerd Hoffmannif test "$xkbcommon" != "no" ; then 36766a021536SGerd Hoffmann if $pkg_config xkbcommon --exists; then 36776a021536SGerd Hoffmann xkbcommon_cflags=$($pkg_config xkbcommon --cflags) 36786a021536SGerd Hoffmann xkbcommon_libs=$($pkg_config xkbcommon --libs) 36796a021536SGerd Hoffmann xkbcommon=yes 36806a021536SGerd Hoffmann else 36816a021536SGerd Hoffmann if test "$xkbcommon" = "yes" ; then 36826a021536SGerd Hoffmann feature_not_found "xkbcommon" "Install libxkbcommon-devel" 36836a021536SGerd Hoffmann fi 36846a021536SGerd Hoffmann xkbcommon=no 36856a021536SGerd Hoffmann fi 36866a021536SGerd Hoffmannfi 36876a021536SGerd Hoffmann 368876655d6dSaliguori 368976655d6dSaliguori########################################## 3690c1bb86cdSEric Blake# xfsctl() probe, used for file-posix.c 3691dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 3692dce512deSChristoph Hellwig cat > $TMPC << EOF 3693ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 3694dce512deSChristoph Hellwig#include <xfs/xfs.h> 3695dce512deSChristoph Hellwigint main(void) 3696dce512deSChristoph Hellwig{ 3697dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 3698dce512deSChristoph Hellwig return 0; 3699dce512deSChristoph Hellwig} 3700dce512deSChristoph HellwigEOF 3701dce512deSChristoph Hellwig if compile_prog "" "" ; then 3702dce512deSChristoph Hellwig xfs="yes" 3703dce512deSChristoph Hellwig else 3704dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 370521684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 3706dce512deSChristoph Hellwig fi 3707dce512deSChristoph Hellwig xfs=no 3708dce512deSChristoph Hellwig fi 3709dce512deSChristoph Hellwigfi 3710dce512deSChristoph Hellwig 3711dce512deSChristoph Hellwig########################################## 37128a16d273Sths# vde libraries probe 3713dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 37144baae0acSJuan Quintela vde_libs="-lvdeplug" 37158a16d273Sths cat > $TMPC << EOF 37168a16d273Sths#include <libvdeplug.h> 37174a7f0e06Spbrookint main(void) 37184a7f0e06Spbrook{ 37194a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 3720fea08e08SPeter Maydell char s[] = ""; 3721fea08e08SPeter Maydell vde_open(s, s, &a); 37224a7f0e06Spbrook return 0; 37234a7f0e06Spbrook} 37248a16d273SthsEOF 372552166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 37264baae0acSJuan Quintela vde=yes 3727dfb278bdSJuan Quintela else 3728dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 372921684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 3730dfb278bdSJuan Quintela fi 3731dfb278bdSJuan Quintela vde=no 37328a16d273Sths fi 37338a16d273Sthsfi 37348a16d273Sths 37358a16d273Sths########################################## 37360a985b37SVincenzo Maffione# netmap support probe 37370a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 37380a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 37390a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 37400a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 37410a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 374258952137SVincenzo Maffioneif test "$netmap" != "no" ; then 374358952137SVincenzo Maffione cat > $TMPC << EOF 374458952137SVincenzo Maffione#include <inttypes.h> 374558952137SVincenzo Maffione#include <net/if.h> 374658952137SVincenzo Maffione#include <net/netmap.h> 374758952137SVincenzo Maffione#include <net/netmap_user.h> 37480a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 37490a985b37SVincenzo Maffione#error 37500a985b37SVincenzo Maffione#endif 375158952137SVincenzo Maffioneint main(void) { return 0; } 375258952137SVincenzo MaffioneEOF 375358952137SVincenzo Maffione if compile_prog "" "" ; then 375458952137SVincenzo Maffione netmap=yes 375558952137SVincenzo Maffione else 375658952137SVincenzo Maffione if test "$netmap" = "yes" ; then 375758952137SVincenzo Maffione feature_not_found "netmap" 375858952137SVincenzo Maffione fi 375958952137SVincenzo Maffione netmap=no 376058952137SVincenzo Maffione fi 376158952137SVincenzo Maffionefi 376258952137SVincenzo Maffione 376358952137SVincenzo Maffione########################################## 376447e98658SCorey Bryant# libcap-ng library probe 376547e98658SCorey Bryantif test "$cap_ng" != "no" ; then 376647e98658SCorey Bryant cap_libs="-lcap-ng" 376747e98658SCorey Bryant cat > $TMPC << EOF 376847e98658SCorey Bryant#include <cap-ng.h> 376947e98658SCorey Bryantint main(void) 377047e98658SCorey Bryant{ 377147e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 377247e98658SCorey Bryant return 0; 377347e98658SCorey Bryant} 377447e98658SCorey BryantEOF 377547e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 377647e98658SCorey Bryant cap_ng=yes 377747e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 377847e98658SCorey Bryant else 377947e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 378021684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 378147e98658SCorey Bryant fi 378247e98658SCorey Bryant cap_ng=no 378347e98658SCorey Bryant fi 378447e98658SCorey Bryantfi 378547e98658SCorey Bryant 378647e98658SCorey Bryant########################################## 3787c2de5c91Smalc# Sound support libraries probe 37888f28f3fbSths 378989138857SStefan Weilaudio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g') 3790c2de5c91Smalcfor drv in $audio_drv_list; do 3791c2de5c91Smalc case $drv in 3792e42975a1SGerd Hoffmann alsa | try-alsa) 3793c80a867fSGerd Hoffmann if $pkg_config alsa --exists; then 3794c80a867fSGerd Hoffmann alsa_libs=$($pkg_config alsa --libs) 3795e42975a1SGerd Hoffmann if test "$drv" = "try-alsa"; then 3796e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa/alsa/') 3797e42975a1SGerd Hoffmann fi 3798e42975a1SGerd Hoffmann else 3799e42975a1SGerd Hoffmann if test "$drv" = "try-alsa"; then 3800e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa//') 3801c80a867fSGerd Hoffmann else 3802c80a867fSGerd Hoffmann error_exit "$drv check failed" \ 3803c80a867fSGerd Hoffmann "Make sure to have the $drv libs and headers installed." 3804c80a867fSGerd Hoffmann fi 3805e42975a1SGerd Hoffmann fi 3806c2de5c91Smalc ;; 3807c2de5c91Smalc 3808e42975a1SGerd Hoffmann pa | try-pa) 3809c80a867fSGerd Hoffmann if $pkg_config libpulse --exists; then 3810c80a867fSGerd Hoffmann pulse_libs=$($pkg_config libpulse --libs) 3811e42975a1SGerd Hoffmann if test "$drv" = "try-pa"; then 3812e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa/pa/') 3813e42975a1SGerd Hoffmann fi 3814e42975a1SGerd Hoffmann else 3815e42975a1SGerd Hoffmann if test "$drv" = "try-pa"; then 3816e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa//') 3817c80a867fSGerd Hoffmann else 3818c80a867fSGerd Hoffmann error_exit "$drv check failed" \ 3819c80a867fSGerd Hoffmann "Make sure to have the $drv libs and headers installed." 3820c80a867fSGerd Hoffmann fi 3821e42975a1SGerd Hoffmann fi 3822b8e59f18Smalc ;; 3823b8e59f18Smalc 3824373967b2SGerd Hoffmann sdl) 3825373967b2SGerd Hoffmann if test "$sdl" = "no"; then 3826373967b2SGerd Hoffmann error_exit "sdl not found or disabled, can not use sdl audio driver" 3827373967b2SGerd Hoffmann fi 3828373967b2SGerd Hoffmann ;; 3829373967b2SGerd Hoffmann 3830e42975a1SGerd Hoffmann try-sdl) 3831e42975a1SGerd Hoffmann if test "$sdl" = "no"; then 3832e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl//') 3833e42975a1SGerd Hoffmann else 3834e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl/sdl/') 3835e42975a1SGerd Hoffmann fi 3836e42975a1SGerd Hoffmann ;; 3837e42975a1SGerd Hoffmann 3838997e690aSJuan Quintela coreaudio) 3839b1149911SFam Zheng coreaudio_libs="-framework CoreAudio" 3840997e690aSJuan Quintela ;; 3841997e690aSJuan Quintela 3842a4bf6780SJuan Quintela dsound) 3843b1149911SFam Zheng dsound_libs="-lole32 -ldxguid" 3844d5631638Smalc audio_win_int="yes" 3845a4bf6780SJuan Quintela ;; 3846a4bf6780SJuan Quintela 3847a4bf6780SJuan Quintela oss) 3848b1149911SFam Zheng oss_libs="$oss_lib" 3849a4bf6780SJuan Quintela ;; 3850a4bf6780SJuan Quintela 38512e445703SGeoffrey McRae jack | try-jack) 38522e445703SGeoffrey McRae if $pkg_config jack --exists; then 38532e445703SGeoffrey McRae jack_libs=$($pkg_config jack --libs) 38542e445703SGeoffrey McRae if test "$drv" = "try-jack"; then 38552e445703SGeoffrey McRae audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack/jack/') 38562e445703SGeoffrey McRae fi 38572e445703SGeoffrey McRae else 38582e445703SGeoffrey McRae if test "$drv" = "try-jack"; then 38592e445703SGeoffrey McRae audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack//') 38602e445703SGeoffrey McRae else 38612e445703SGeoffrey McRae error_exit "$drv check failed" \ 38622e445703SGeoffrey McRae "Make sure to have the $drv libs and headers installed." 38632e445703SGeoffrey McRae fi 38642e445703SGeoffrey McRae fi 38652e445703SGeoffrey McRae ;; 38662e445703SGeoffrey McRae 3867e4c63a6aSmalc *) 38681c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 386976ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 387076ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 3871e4c63a6aSmalc } 3872e4c63a6aSmalc ;; 3873c2de5c91Smalc esac 3874c2de5c91Smalcdone 38758f28f3fbSths 38764d3b6f6eSbalrog########################################## 38772e4d9fb1Saurel32# BrlAPI probe 38782e4d9fb1Saurel32 38794ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 3880eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 38812e4d9fb1Saurel32 cat > $TMPC << EOF 38822e4d9fb1Saurel32#include <brlapi.h> 3883832ce9c2SScott Wood#include <stddef.h> 38842e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 38852e4d9fb1Saurel32EOF 388652166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 38872e4d9fb1Saurel32 brlapi=yes 38884ffcedb6SJuan Quintela else 38894ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 389021684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 38914ffcedb6SJuan Quintela fi 38924ffcedb6SJuan Quintela brlapi=no 3893eb82284fSJuan Quintela fi 3894eb82284fSJuan Quintelafi 38952e4d9fb1Saurel32 38962e4d9fb1Saurel32########################################## 3897e08bb301SSamuel Thibault# iconv probe 3898e08bb301SSamuel Thibaultif test "$iconv" != "no" ; then 3899e08bb301SSamuel Thibault cat > $TMPC << EOF 3900e08bb301SSamuel Thibault#include <iconv.h> 3901e08bb301SSamuel Thibaultint main(void) { 3902e08bb301SSamuel Thibault iconv_t conv = iconv_open("WCHAR_T", "UCS-2"); 3903e08bb301SSamuel Thibault return conv != (iconv_t) -1; 3904e08bb301SSamuel Thibault} 3905e08bb301SSamuel ThibaultEOF 3906e08bb301SSamuel Thibault iconv_prefix_list="/usr/local:/usr" 3907e08bb301SSamuel Thibault iconv_lib_list=":-liconv" 3908e08bb301SSamuel Thibault IFS=: 3909e08bb301SSamuel Thibault for iconv_prefix in $iconv_prefix_list; do 3910e08bb301SSamuel Thibault IFS=: 3911e08bb301SSamuel Thibault iconv_cflags="-I$iconv_prefix/include" 3912e08bb301SSamuel Thibault iconv_ldflags="-L$iconv_prefix/lib" 3913e08bb301SSamuel Thibault for iconv_link in $iconv_lib_list; do 3914e08bb301SSamuel Thibault unset IFS 3915e08bb301SSamuel Thibault iconv_lib="$iconv_ldflags $iconv_link" 3916e08bb301SSamuel Thibault echo "looking at iconv in '$iconv_cflags' '$iconv_lib'" >> config.log 3917e08bb301SSamuel Thibault if compile_prog "$iconv_cflags" "$iconv_lib" ; then 3918e08bb301SSamuel Thibault iconv_found=yes 3919e08bb301SSamuel Thibault break 3920e08bb301SSamuel Thibault fi 3921e08bb301SSamuel Thibault done 3922e08bb301SSamuel Thibault if test "$iconv_found" = yes ; then 3923e08bb301SSamuel Thibault break 3924e08bb301SSamuel Thibault fi 3925e08bb301SSamuel Thibault done 3926e08bb301SSamuel Thibault if test "$iconv_found" = "yes" ; then 3927e08bb301SSamuel Thibault iconv=yes 3928e08bb301SSamuel Thibault else 3929e08bb301SSamuel Thibault if test "$iconv" = "yes" ; then 3930e08bb301SSamuel Thibault feature_not_found "iconv" "Install iconv devel" 3931e08bb301SSamuel Thibault fi 3932e08bb301SSamuel Thibault iconv=no 3933e08bb301SSamuel Thibault fi 3934e08bb301SSamuel Thibaultfi 3935e08bb301SSamuel Thibault 3936e08bb301SSamuel Thibault########################################## 39374d3b6f6eSbalrog# curses probe 3938e08bb301SSamuel Thibaultif test "$iconv" = "no" ; then 3939e08bb301SSamuel Thibault # curses will need iconv 3940e08bb301SSamuel Thibault curses=no 3941e08bb301SSamuel Thibaultfi 3942a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 3943e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 39448ddc5bf9SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):" 39458ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 3946e095e2f3SStefan Weil else 39477c703002SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:" 39488ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw" 3949e095e2f3SStefan Weil fi 3950c584a6d0SJuan Quintela curses_found=no 39514d3b6f6eSbalrog cat > $TMPC << EOF 39528ddc5bf9SSamuel Thibault#include <locale.h> 39534d3b6f6eSbalrog#include <curses.h> 39548ddc5bf9SSamuel Thibault#include <wchar.h> 39552f8b7cd5SSamuel Thibault#include <langinfo.h> 3956ef9a2524SStefan Weilint main(void) { 39572f8b7cd5SSamuel Thibault const char *codeset; 39588ddc5bf9SSamuel Thibault wchar_t wch = L'w'; 39598ddc5bf9SSamuel Thibault setlocale(LC_ALL, ""); 3960ef9a2524SStefan Weil resize_term(0, 0); 39618ddc5bf9SSamuel Thibault addwstr(L"wide chars\n"); 39628ddc5bf9SSamuel Thibault addnwstr(&wch, 1); 39637c703002SSamuel Thibault add_wch(WACS_DEGREE); 39642f8b7cd5SSamuel Thibault codeset = nl_langinfo(CODESET); 39652f8b7cd5SSamuel Thibault return codeset != 0; 3966ef9a2524SStefan Weil} 39674d3b6f6eSbalrogEOF 3968ecbe251fSVadim Evard IFS=: 39698ddc5bf9SSamuel Thibault for curses_inc in $curses_inc_list; do 3970b01a4fd3SPeter Maydell # Make sure we get the wide character prototypes 3971b01a4fd3SPeter Maydell curses_inc="-DNCURSES_WIDECHAR $curses_inc" 39727c703002SSamuel Thibault IFS=: 39738ddc5bf9SSamuel Thibault for curses_lib in $curses_lib_list; do 3974ecbe251fSVadim Evard unset IFS 39758ddc5bf9SSamuel Thibault if compile_prog "$curses_inc" "$curses_lib" ; then 3976c584a6d0SJuan Quintela curses_found=yes 39774f78ef9aSJuan Quintela break 39784d3b6f6eSbalrog fi 39794f78ef9aSJuan Quintela done 39807c703002SSamuel Thibault if test "$curses_found" = yes ; then 39817c703002SSamuel Thibault break 39827c703002SSamuel Thibault fi 39838ddc5bf9SSamuel Thibault done 3984ecbe251fSVadim Evard unset IFS 3985c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 3986c584a6d0SJuan Quintela curses=yes 3987c584a6d0SJuan Quintela else 3988c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 398921684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 3990c584a6d0SJuan Quintela fi 3991c584a6d0SJuan Quintela curses=no 3992c584a6d0SJuan Quintela fi 39934f78ef9aSJuan Quintelafi 39944d3b6f6eSbalrog 3995414f0dabSblueswir1########################################## 3996769ce76dSAlexander Graf# curl probe 3997a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 399865d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 3999a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 40004e2b0658SPaolo Bonzini else 40014e2b0658SPaolo Bonzini curlconfig=curl-config 40024e2b0658SPaolo Bonzini fi 4003769ce76dSAlexander Graf cat > $TMPC << EOF 4004769ce76dSAlexander Graf#include <curl/curl.h> 40050b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 4006769ce76dSAlexander GrafEOF 400789138857SStefan Weil curl_cflags=$($curlconfig --cflags 2>/dev/null) 400889138857SStefan Weil curl_libs=$($curlconfig --libs 2>/dev/null) 4009b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 4010769ce76dSAlexander Graf curl=yes 4011788c8196SJuan Quintela else 4012788c8196SJuan Quintela if test "$curl" = "yes" ; then 401321684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 4014788c8196SJuan Quintela fi 4015788c8196SJuan Quintela curl=no 4016769ce76dSAlexander Graf fi 4017769ce76dSAlexander Graffi # test "$curl" 4018769ce76dSAlexander Graf 4019769ce76dSAlexander Graf########################################## 4020e18df141SAnthony Liguori# glib support probe 4021a52d28afSPaolo Bonzini 402200f2cfbbSDaniel P. Berrangéglib_req_ver=2.48 4023aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 4024aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 4025a88afc64SGerd Hoffmann glib_modules="$glib_modules gmodule-export-2.0" 4026aa0d1f44SPaolo Bonzinifi 402754cb65d8SEmilio G. Cotaif test "$plugins" = yes; then 402854cb65d8SEmilio G. Cota glib_modules="$glib_modules gmodule-2.0" 402954cb65d8SEmilio G. Cotafi 4030e26110cfSFam Zheng 40314eaf7202SSameeh Jubran# This workaround is required due to a bug in pkg-config file for glib as it 40324eaf7202SSameeh Jubran# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static 40334eaf7202SSameeh Jubran 4034e633a5c6SEric Blakeif test "$static" = yes && test "$mingw32" = yes; then 40354eaf7202SSameeh Jubran QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS" 40364eaf7202SSameeh Jubranfi 40374eaf7202SSameeh Jubran 4038aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 4039e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 404089138857SStefan Weil glib_cflags=$($pkg_config --cflags $i) 404189138857SStefan Weil glib_libs=$($pkg_config --libs $i) 40424a058899SMarc-André Lureau QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" 404314015304SAnthony Liguori LIBS="$glib_libs $LIBS" 4044957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 4045e18df141SAnthony Liguori else 4046e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 4047e26110cfSFam Zheng fi 4048e26110cfSFam Zhengdone 4049e26110cfSFam Zheng 4050f876b765SMarc-André Lureauif $pkg_config --atleast-version=$glib_req_ver gio-2.0; then 4051f876b765SMarc-André Lureau gio=yes 4052f876b765SMarc-André Lureau gio_cflags=$($pkg_config --cflags gio-2.0) 4053f876b765SMarc-André Lureau gio_libs=$($pkg_config --libs gio-2.0) 405425a97a56SMarc-André Lureau gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0) 40550dba4897SMarc-André Lureau if [ ! -x "$gdbus_codegen" ]; then 40560dba4897SMarc-André Lureau gdbus_codegen= 40570dba4897SMarc-André Lureau fi 4058f876b765SMarc-André Lureauelse 4059f876b765SMarc-André Lureau gio=no 4060f876b765SMarc-André Lureaufi 4061f876b765SMarc-André Lureau 406225a97a56SMarc-André Lureauif $pkg_config --atleast-version=$glib_req_ver gio-unix-2.0; then 406325a97a56SMarc-André Lureau gio_cflags="$gio_cflags $($pkg_config --cflags gio-unix-2.0)" 406425a97a56SMarc-André Lureau gio_libs="$gio_libs $($pkg_config --libs gio-unix-2.0)" 406525a97a56SMarc-André Lureaufi 406625a97a56SMarc-André Lureau 4067977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the 4068977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches 4069977a82abSDaniel P. Berrange# problems on multi-arch where people try to build 4070977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers 4071977a82abSDaniel P. Berrangecat > $TMPC <<EOF 4072977a82abSDaniel P. Berrange#include <glib.h> 4073977a82abSDaniel P. Berrange#include <unistd.h> 4074977a82abSDaniel P. Berrange 4075977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \ 4076977a82abSDaniel P. Berrange typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 4077977a82abSDaniel P. Berrange 4078977a82abSDaniel P. Berrangeint main(void) { 4079977a82abSDaniel P. Berrange QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 4080977a82abSDaniel P. Berrange return 0; 4081977a82abSDaniel P. Berrange} 4082977a82abSDaniel P. BerrangeEOF 4083977a82abSDaniel P. Berrange 40845919e032SStefan Weilif ! compile_prog "$CFLAGS" "$LIBS" ; then 4085977a82abSDaniel P. Berrange error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 4086977a82abSDaniel P. Berrange "You probably need to set PKG_CONFIG_LIBDIR"\ 4087977a82abSDaniel P. Berrange "to point to the right pkg-config files for your"\ 4088977a82abSDaniel P. Berrange "build target" 4089977a82abSDaniel P. Berrangefi 4090977a82abSDaniel P. Berrange 4091bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 4092bbbf2e04SJohn Snowcat > $TMPC << EOF 4093bbbf2e04SJohn Snow#include <glib.h> 4094bbbf2e04SJohn Snowint main(void) { return 0; } 4095bbbf2e04SJohn SnowEOF 4096bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 4097bbbf2e04SJohn Snow if cc_has_warning_flag "-Wno-unknown-attributes"; then 4098bbbf2e04SJohn Snow glib_cflags="-Wno-unknown-attributes $glib_cflags" 4099086d5f75SPaolo Bonzini QEMU_CFLAGS="-Wno-unknown-attributes $CFLAGS" 4100bbbf2e04SJohn Snow fi 4101bbbf2e04SJohn Snowfi 4102bbbf2e04SJohn Snow 41039bda600bSEric Blake# Silence clang warnings triggered by glib < 2.57.2 41049bda600bSEric Blakecat > $TMPC << EOF 41059bda600bSEric Blake#include <glib.h> 41069bda600bSEric Blaketypedef struct Foo { 41079bda600bSEric Blake int i; 41089bda600bSEric Blake} Foo; 41099bda600bSEric Blakestatic void foo_free(Foo *f) 41109bda600bSEric Blake{ 41119bda600bSEric Blake g_free(f); 41129bda600bSEric Blake} 41139bda600bSEric BlakeG_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free); 41149bda600bSEric Blakeint main(void) { return 0; } 41159bda600bSEric BlakeEOF 41169bda600bSEric Blakeif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 41179bda600bSEric Blake if cc_has_warning_flag "-Wno-unused-function"; then 41189bda600bSEric Blake glib_cflags="$glib_cflags -Wno-unused-function" 41199bda600bSEric Blake CFLAGS="$CFLAGS -Wno-unused-function" 41209bda600bSEric Blake fi 41219bda600bSEric Blakefi 41229bda600bSEric Blake 41236a1f42bdSStefan Weil######################################### 41246a1f42bdSStefan Weil# zlib check 41256a1f42bdSStefan Weil 41266a1f42bdSStefan Weilif test "$zlib" != "no" ; then 41276a1f42bdSStefan Weil if $pkg_config --exists zlib; then 41286a1f42bdSStefan Weil zlib_cflags=$($pkg_config --cflags zlib) 41296a1f42bdSStefan Weil zlib_libs=$($pkg_config --libs zlib) 41306a1f42bdSStefan Weil QEMU_CFLAGS="$zlib_cflags $QEMU_CFLAGS" 41316a1f42bdSStefan Weil LIBS="$zlib_libs $LIBS" 41326a1f42bdSStefan Weil else 41336a1f42bdSStefan Weil cat > $TMPC << EOF 41346a1f42bdSStefan Weil#include <zlib.h> 41356a1f42bdSStefan Weilint main(void) { zlibVersion(); return 0; } 41366a1f42bdSStefan WeilEOF 41376a1f42bdSStefan Weil if compile_prog "" "-lz" ; then 41386a1f42bdSStefan Weil LIBS="$LIBS -lz" 41396a1f42bdSStefan Weil else 41406a1f42bdSStefan Weil error_exit "zlib check failed" \ 41416a1f42bdSStefan Weil "Make sure to have the zlib libs and headers installed." 41426a1f42bdSStefan Weil fi 41436a1f42bdSStefan Weil fi 41446a1f42bdSStefan Weilfi 41456a1f42bdSStefan Weil 4146e26110cfSFam Zheng########################################## 4147e26110cfSFam Zheng# SHA command probe for modules 4148e26110cfSFam Zhengif test "$modules" = yes; then 4149e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 4150e26110cfSFam Zheng for c in $shacmd_probe; do 41518ccefb91SFam Zheng if has $c; then 4152e26110cfSFam Zheng shacmd="$c" 4153e26110cfSFam Zheng break 4154e26110cfSFam Zheng fi 4155e26110cfSFam Zheng done 4156e26110cfSFam Zheng if test "$shacmd" = ""; then 4157e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 4158e26110cfSFam Zheng fi 4159e18df141SAnthony Liguorifi 4160e18df141SAnthony Liguori 4161e18df141SAnthony Liguori########################################## 4162e2134eb9SGerd Hoffmann# pixman support probe 4163e2134eb9SGerd Hoffmann 41649b52b17bSThomas Huthif test "$softmmu" = "no"; then 416574880fe2SRobert Schiele pixman_cflags= 416674880fe2SRobert Schiele pixman_libs= 416735c4e86cSGerd Hoffmannelif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 416889138857SStefan Weil pixman_cflags=$($pkg_config --cflags pixman-1) 416989138857SStefan Weil pixman_libs=$($pkg_config --libs pixman-1) 4170e2134eb9SGerd Hoffmannelse 4171c12b6d70SGerd Hoffmann error_exit "pixman >= 0.21.8 not present." \ 4172c12b6d70SGerd Hoffmann "Please install the pixman devel package." 4173e2134eb9SGerd Hoffmannfi 4174e2134eb9SGerd Hoffmann 4175e2134eb9SGerd Hoffmann########################################## 4176fe8fc5aeSPaolo Bonzini# libmpathpersist probe 4177fe8fc5aeSPaolo Bonzini 4178fe8fc5aeSPaolo Bonziniif test "$mpath" != "no" ; then 41791b0578f5SMurilo Opsfelder Araujo # probe for the new API 4180fe8fc5aeSPaolo Bonzini cat > $TMPC <<EOF 4181fe8fc5aeSPaolo Bonzini#include <libudev.h> 4182fe8fc5aeSPaolo Bonzini#include <mpath_persist.h> 4183fe8fc5aeSPaolo Bonziniunsigned mpath_mx_alloc_len = 1024; 4184fe8fc5aeSPaolo Bonziniint logsink; 4185b3f1c8c4SPaolo Bonzinistatic struct config *multipath_conf; 4186b3f1c8c4SPaolo Bonziniextern struct udev *udev; 4187b3f1c8c4SPaolo Bonziniextern struct config *get_multipath_config(void); 4188b3f1c8c4SPaolo Bonziniextern void put_multipath_config(struct config *conf); 4189b3f1c8c4SPaolo Bonzinistruct udev *udev; 4190b3f1c8c4SPaolo Bonzinistruct config *get_multipath_config(void) { return multipath_conf; } 4191b3f1c8c4SPaolo Bonzinivoid put_multipath_config(struct config *conf) { } 4192b3f1c8c4SPaolo Bonzini 4193fe8fc5aeSPaolo Bonziniint main(void) { 4194b3f1c8c4SPaolo Bonzini udev = udev_new(); 4195b3f1c8c4SPaolo Bonzini multipath_conf = mpath_lib_init(); 4196fe8fc5aeSPaolo Bonzini return 0; 4197fe8fc5aeSPaolo Bonzini} 4198fe8fc5aeSPaolo BonziniEOF 4199fe8fc5aeSPaolo Bonzini if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 4200fe8fc5aeSPaolo Bonzini mpathpersist=yes 42011b0578f5SMurilo Opsfelder Araujo mpathpersist_new_api=yes 42021b0578f5SMurilo Opsfelder Araujo else 42031b0578f5SMurilo Opsfelder Araujo # probe for the old API 42041b0578f5SMurilo Opsfelder Araujo cat > $TMPC <<EOF 42051b0578f5SMurilo Opsfelder Araujo#include <libudev.h> 42061b0578f5SMurilo Opsfelder Araujo#include <mpath_persist.h> 42071b0578f5SMurilo Opsfelder Araujounsigned mpath_mx_alloc_len = 1024; 42081b0578f5SMurilo Opsfelder Araujoint logsink; 42091b0578f5SMurilo Opsfelder Araujoint main(void) { 42101b0578f5SMurilo Opsfelder Araujo struct udev *udev = udev_new(); 42111b0578f5SMurilo Opsfelder Araujo mpath_lib_init(udev); 42121b0578f5SMurilo Opsfelder Araujo return 0; 42131b0578f5SMurilo Opsfelder Araujo} 42141b0578f5SMurilo Opsfelder AraujoEOF 42151b0578f5SMurilo Opsfelder Araujo if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 42161b0578f5SMurilo Opsfelder Araujo mpathpersist=yes 42171b0578f5SMurilo Opsfelder Araujo mpathpersist_new_api=no 4218fe8fc5aeSPaolo Bonzini else 4219fe8fc5aeSPaolo Bonzini mpathpersist=no 4220fe8fc5aeSPaolo Bonzini fi 42211b0578f5SMurilo Opsfelder Araujo fi 4222fe8fc5aeSPaolo Bonzinielse 4223fe8fc5aeSPaolo Bonzini mpathpersist=no 4224fe8fc5aeSPaolo Bonzinifi 4225fe8fc5aeSPaolo Bonzini 4226fe8fc5aeSPaolo Bonzini########################################## 4227e5d355d1Saliguori# pthread probe 42284b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 42293c529d93Saliguori 4230e5d355d1Saliguoripthread=no 4231414f0dabSblueswir1cat > $TMPC << EOF 42323c529d93Saliguori#include <pthread.h> 42337a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 42347a42bbe4SStefan Weilint main(void) { 42357a42bbe4SStefan Weil pthread_t thread; 42367a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 42377a42bbe4SStefan Weil return 0; 42387a42bbe4SStefan Weil} 4239414f0dabSblueswir1EOF 4240bd00d539SAndreas Färberif compile_prog "" "" ; then 4241bd00d539SAndreas Färber pthread=yes 4242bd00d539SAndreas Färberelse 4243de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 424452166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 4245e5d355d1Saliguori pthread=yes 4246e3c56761SPeter Portante found=no 4247e3c56761SPeter Portante for lib_entry in $LIBS; do 4248e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 4249e3c56761SPeter Portante found=yes 4250e3c56761SPeter Portante break 4251e3c56761SPeter Portante fi 4252e3c56761SPeter Portante done 4253e3c56761SPeter Portante if test "$found" = "no"; then 42545572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 425514ab3aa7SMarc-André Lureau libs_qga="$pthread_lib $libs_qga" 4256e3c56761SPeter Portante fi 4257409437e1SDaniel P. Berrange PTHREAD_LIB="$pthread_lib" 4258de65fe0fSSebastian Herbszt break 4259414f0dabSblueswir1 fi 4260de65fe0fSSebastian Herbszt done 4261bd00d539SAndreas Färberfi 4262414f0dabSblueswir1 4263e633a5c6SEric Blakeif test "$mingw32" != yes && test "$pthread" = no; then 426476ad07a4SPeter Maydell error_exit "pthread check failed" \ 426576ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 4266e5d355d1Saliguorifi 4267e5d355d1Saliguori 4268479a5747SRoman Bolshakov# check for pthread_setname_np with thread id 4269479a5747SRoman Bolshakovpthread_setname_np_w_tid=no 42705c312079SDr. David Alan Gilbertcat > $TMPC << EOF 42715c312079SDr. David Alan Gilbert#include <pthread.h> 42725c312079SDr. David Alan Gilbert 42735c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 42745c312079SDr. David Alan Gilbertint main(void) 42755c312079SDr. David Alan Gilbert{ 42765c312079SDr. David Alan Gilbert pthread_t thread; 42775c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 42785c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 42795c312079SDr. David Alan Gilbert return 0; 42805c312079SDr. David Alan Gilbert} 42815c312079SDr. David Alan GilbertEOF 42825c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 4283479a5747SRoman Bolshakov pthread_setname_np_w_tid=yes 4284479a5747SRoman Bolshakovfi 4285479a5747SRoman Bolshakov 4286479a5747SRoman Bolshakov# check for pthread_setname_np without thread id 4287479a5747SRoman Bolshakovpthread_setname_np_wo_tid=no 4288479a5747SRoman Bolshakovcat > $TMPC << EOF 4289479a5747SRoman Bolshakov#include <pthread.h> 4290479a5747SRoman Bolshakov 429112a9b8d8SThomas Huthstatic void *f(void *p) { pthread_setname_np("QEMU"); return NULL; } 4292479a5747SRoman Bolshakovint main(void) 4293479a5747SRoman Bolshakov{ 4294479a5747SRoman Bolshakov pthread_t thread; 4295479a5747SRoman Bolshakov pthread_create(&thread, 0, f, 0); 4296479a5747SRoman Bolshakov return 0; 4297479a5747SRoman Bolshakov} 4298479a5747SRoman BolshakovEOF 4299479a5747SRoman Bolshakovif compile_prog "" "$pthread_lib" ; then 4300479a5747SRoman Bolshakov pthread_setname_np_wo_tid=yes 43015c312079SDr. David Alan Gilbertfi 43025c312079SDr. David Alan Gilbert 4303bf9298b9Saliguori########################################## 4304f27aaf4bSChristian Brunner# rbd probe 4305f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 4306f27aaf4bSChristian Brunner cat > $TMPC <<EOF 4307f27aaf4bSChristian Brunner#include <stdio.h> 4308ad32e9c0SJosh Durgin#include <rbd/librbd.h> 4309f27aaf4bSChristian Brunnerint main(void) { 4310ad32e9c0SJosh Durgin rados_t cluster; 4311ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 4312f27aaf4bSChristian Brunner return 0; 4313f27aaf4bSChristian Brunner} 4314f27aaf4bSChristian BrunnerEOF 4315ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 4316f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 4317f27aaf4bSChristian Brunner rbd=yes 4318f27aaf4bSChristian Brunner else 4319f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 432021684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 4321f27aaf4bSChristian Brunner fi 4322f27aaf4bSChristian Brunner rbd=no 4323f27aaf4bSChristian Brunner fi 4324f27aaf4bSChristian Brunnerfi 4325f27aaf4bSChristian Brunner 4326f27aaf4bSChristian Brunner########################################## 4327b10d49d7SPino Toscano# libssh probe 4328b10d49d7SPino Toscanoif test "$libssh" != "no" ; then 4329b10d49d7SPino Toscano if $pkg_config --exists libssh; then 4330b10d49d7SPino Toscano libssh_cflags=$($pkg_config libssh --cflags) 4331b10d49d7SPino Toscano libssh_libs=$($pkg_config libssh --libs) 4332b10d49d7SPino Toscano libssh=yes 43330a12ec87SRichard W.M. Jones else 4334b10d49d7SPino Toscano if test "$libssh" = "yes" ; then 4335b10d49d7SPino Toscano error_exit "libssh required for --enable-libssh" 43360a12ec87SRichard W.M. Jones fi 4337b10d49d7SPino Toscano libssh=no 43380a12ec87SRichard W.M. Jones fi 43390a12ec87SRichard W.M. Jonesfi 43400a12ec87SRichard W.M. Jones 43410a12ec87SRichard W.M. Jones########################################## 4342b10d49d7SPino Toscano# Check for libssh 0.8 4343b10d49d7SPino Toscano# This is done like this instead of using the LIBSSH_VERSION_* and 4344b10d49d7SPino Toscano# SSH_VERSION_* macros because some distributions in the past shipped 4345b10d49d7SPino Toscano# snapshots of the future 0.8 from Git, and those snapshots did not 4346b10d49d7SPino Toscano# have updated version numbers (still referring to 0.7.0). 43479a2d462eSRichard W.M. Jones 4348b10d49d7SPino Toscanoif test "$libssh" = "yes"; then 43499a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 4350b10d49d7SPino Toscano#include <libssh/libssh.h> 4351b10d49d7SPino Toscanoint main(void) { return ssh_get_server_publickey(NULL, NULL); } 43529a2d462eSRichard W.M. JonesEOF 4353b10d49d7SPino Toscano if compile_prog "$libssh_cflags" "$libssh_libs"; then 4354b10d49d7SPino Toscano libssh_cflags="-DHAVE_LIBSSH_0_8 $libssh_cflags" 43559a2d462eSRichard W.M. Jones fi 43569a2d462eSRichard W.M. Jonesfi 43579a2d462eSRichard W.M. Jones 43589a2d462eSRichard W.M. Jones########################################## 43595c6c3a6cSChristoph Hellwig# linux-aio probe 43605c6c3a6cSChristoph Hellwig 43615c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 43625c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 43635c6c3a6cSChristoph Hellwig#include <libaio.h> 43645c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 4365832ce9c2SScott Wood#include <stddef.h> 43665c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 43675c6c3a6cSChristoph HellwigEOF 43685c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 43695c6c3a6cSChristoph Hellwig linux_aio=yes 43705c6c3a6cSChristoph Hellwig else 43715c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 437221684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 43735c6c3a6cSChristoph Hellwig fi 43743cfcae3cSLuiz Capitulino linux_aio=no 43755c6c3a6cSChristoph Hellwig fi 43765c6c3a6cSChristoph Hellwigfi 4377c10dd856SAarushi Mehta########################################## 4378c10dd856SAarushi Mehta# linux-io-uring probe 4379c10dd856SAarushi Mehta 4380c10dd856SAarushi Mehtaif test "$linux_io_uring" != "no" ; then 4381c10dd856SAarushi Mehta if $pkg_config liburing; then 4382c10dd856SAarushi Mehta linux_io_uring_cflags=$($pkg_config --cflags liburing) 4383c10dd856SAarushi Mehta linux_io_uring_libs=$($pkg_config --libs liburing) 4384c10dd856SAarushi Mehta linux_io_uring=yes 438573fd282eSStefan Hajnoczi 438673fd282eSStefan Hajnoczi # io_uring is used in libqemuutil.a where per-file -libs variables are not 438773fd282eSStefan Hajnoczi # seen by programs linking the archive. It's not ideal, but just add the 438873fd282eSStefan Hajnoczi # library dependency globally. 438973fd282eSStefan Hajnoczi LIBS="$linux_io_uring_libs $LIBS" 4390c10dd856SAarushi Mehta else 4391c10dd856SAarushi Mehta if test "$linux_io_uring" = "yes" ; then 4392c10dd856SAarushi Mehta feature_not_found "linux io_uring" "Install liburing devel" 4393c10dd856SAarushi Mehta fi 4394c10dd856SAarushi Mehta linux_io_uring=no 4395c10dd856SAarushi Mehta fi 4396c10dd856SAarushi Mehtafi 43975c6c3a6cSChristoph Hellwig 43985c6c3a6cSChristoph Hellwig########################################## 43997aaa6a16SPaolo Bonzini# TPM emulation is only on POSIX 44003b8acc11SPaolo Bonzini 44017aaa6a16SPaolo Bonziniif test "$tpm" = ""; then 44027aaa6a16SPaolo Bonzini if test "$mingw32" = "yes"; then 44037aaa6a16SPaolo Bonzini tpm=no 44043b8acc11SPaolo Bonzini else 44057aaa6a16SPaolo Bonzini tpm=yes 44067aaa6a16SPaolo Bonzini fi 44077aaa6a16SPaolo Bonzinielif test "$tpm" = "yes"; then 44087aaa6a16SPaolo Bonzini if test "$mingw32" = "yes" ; then 44097aaa6a16SPaolo Bonzini error_exit "TPM emulation only available on POSIX systems" 44107aaa6a16SPaolo Bonzini fi 44113b8acc11SPaolo Bonzinifi 44123b8acc11SPaolo Bonzini 44133b8acc11SPaolo Bonzini########################################## 4414758e8e38SVenkateswararao Jujjuri (JV)# attr probe 4415758e8e38SVenkateswararao Jujjuri (JV) 4416758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 4417758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 4418758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 4419758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 4420f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 4421f2338fb4SPavel Borzenkov#include <attr/xattr.h> 4422f2338fb4SPavel Borzenkov#else 44234f26f2b6SAvi Kivity#include <sys/xattr.h> 4424f2338fb4SPavel Borzenkov#endif 4425758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 4426758e8e38SVenkateswararao Jujjuri (JV)EOF 44274f26f2b6SAvi Kivity if compile_prog "" "" ; then 44284f26f2b6SAvi Kivity attr=yes 44294f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 4430f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 4431758e8e38SVenkateswararao Jujjuri (JV) attr=yes 4432758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 44334f26f2b6SAvi Kivity libattr=yes 4434758e8e38SVenkateswararao Jujjuri (JV) else 4435758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 443621684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 4437758e8e38SVenkateswararao Jujjuri (JV) fi 4438758e8e38SVenkateswararao Jujjuri (JV) attr=no 4439758e8e38SVenkateswararao Jujjuri (JV) fi 4440758e8e38SVenkateswararao Jujjuri (JV)fi 4441758e8e38SVenkateswararao Jujjuri (JV) 4442758e8e38SVenkateswararao Jujjuri (JV)########################################## 4443bf9298b9Saliguori# iovec probe 4444bf9298b9Saliguoricat > $TMPC <<EOF 4445db34f0b3Sblueswir1#include <sys/types.h> 4446bf9298b9Saliguori#include <sys/uio.h> 4447db34f0b3Sblueswir1#include <unistd.h> 4448f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 4449bf9298b9SaliguoriEOF 4450bf9298b9Saliguoriiovec=no 445152166aa0SJuan Quintelaif compile_prog "" "" ; then 4452bf9298b9Saliguori iovec=yes 4453bf9298b9Saliguorifi 4454bf9298b9Saliguori 4455f652e6afSaurel32########################################## 4456ceb42de8Saliguori# preadv probe 4457ceb42de8Saliguoricat > $TMPC <<EOF 4458ceb42de8Saliguori#include <sys/types.h> 4459ceb42de8Saliguori#include <sys/uio.h> 4460ceb42de8Saliguori#include <unistd.h> 4461c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 4462ceb42de8SaliguoriEOF 4463ceb42de8Saliguoripreadv=no 446452166aa0SJuan Quintelaif compile_prog "" "" ; then 4465ceb42de8Saliguori preadv=yes 4466ceb42de8Saliguorifi 4467ceb42de8Saliguori 4468ceb42de8Saliguori########################################## 4469f652e6afSaurel32# fdt probe 4470e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 4471e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 4472e169e1e1SPeter Maydellfdt_required=no 4473e169e1e1SPeter Maydellfor target in $target_list; do 4474e169e1e1SPeter Maydell case $target in 4475c8c35e5fSYoshinori Sato aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu|rx-softmmu) 4476e169e1e1SPeter Maydell fdt_required=yes 4477e169e1e1SPeter Maydell ;; 4478e169e1e1SPeter Maydell esac 4479e169e1e1SPeter Maydelldone 4480e169e1e1SPeter Maydell 4481e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 4482e169e1e1SPeter Maydell if test "$fdt" = "no"; then 4483e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 4484e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 4485e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 4486e169e1e1SPeter Maydell fi 4487e169e1e1SPeter Maydell fdt=yes 44887ba4a4d3SPhilippe Mathieu-Daudéelif test "$fdt" != "yes" ; then 44897ba4a4d3SPhilippe Mathieu-Daudé fdt=no 4490e169e1e1SPeter Maydellfi 4491e169e1e1SPeter Maydell 4492d599938aSLaurent Vivier# fdt is only required when building softmmu targets 4493d599938aSLaurent Vivierif test -z "$fdt" -a "$softmmu" != "yes" ; then 4494d599938aSLaurent Vivier fdt="no" 4495d599938aSLaurent Vivierfi 4496d599938aSLaurent Vivier 44972df87df7SJuan Quintelaif test "$fdt" != "no" ; then 4498b41af4baSJuan Quintela fdt_libs="-lfdt" 449996ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 45006e85fce0SPaul Burton # and test for required functions to make sure we are on a version >= 1.4.2 4501f652e6afSaurel32 cat > $TMPC << EOF 450231ce0adbSThomas Huth#include <libfdt.h> 450396ce6545SPeter Crosthwaite#include <libfdt_env.h> 4504fea35ca4SAlexey Kardashevskiyint main(void) { fdt_check_full(NULL, 0); return 0; } 4505f652e6afSaurel32EOF 450652166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 4507a540f158SPeter Crosthwaite # system DTC is good - use it 4508e3971d61SPhilippe Mathieu-Daudé fdt=system 4509aef45d51SDaniel P. Berrange else 4510aef45d51SDaniel P. Berrange # have GIT checkout, so activate dtc submodule 4511aef45d51SDaniel P. Berrange if test -e "${source_path}/.git" ; then 4512aef45d51SDaniel P. Berrange git_submodules="${git_submodules} dtc" 4513aef45d51SDaniel P. Berrange fi 4514aef45d51SDaniel P. Berrange if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then 4515e3971d61SPhilippe Mathieu-Daudé fdt=git 4516a540f158SPeter Crosthwaite mkdir -p dtc 4517cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 4518a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 45192df87df7SJuan Quintela fi 452025211446SPaolo Bonzini fdt_cflags="-I${source_path}/dtc/libfdt" 452125211446SPaolo Bonzini fdt_ldflags="-L$PWD/dtc/libfdt" 45228a99e9a3SPhilippe Mathieu-Daudé fdt_libs="$fdt_libs" 4523a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 4524aef45d51SDaniel P. Berrange # Not a git build & no libfdt found, prompt for system install 4525aef45d51SDaniel P. Berrange error_exit "DTC (libfdt) version >= 1.4.2 not present." \ 4526aef45d51SDaniel P. Berrange "Please install the DTC (libfdt) devel package" 4527a540f158SPeter Crosthwaite else 4528a540f158SPeter Crosthwaite # don't have and don't want 4529de3a354aSMichael Walle fdt_libs= 45302df87df7SJuan Quintela fdt=no 4531f652e6afSaurel32 fi 4532f652e6afSaurel32 fi 4533aef45d51SDaniel P. Berrangefi 4534f652e6afSaurel32 4535a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 4536a540f158SPeter Crosthwaite 453720ff075bSMichael Walle########################################## 4538fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2) 4539b1546f32SGerd Hoffmann 4540d52c454aSMarc-André Lureaugbm="no" 4541d52c454aSMarc-André Lureauif $pkg_config gbm; then 4542d52c454aSMarc-André Lureau gbm_cflags="$($pkg_config --cflags gbm)" 4543d52c454aSMarc-André Lureau gbm_libs="$($pkg_config --libs gbm)" 4544d52c454aSMarc-André Lureau gbm="yes" 4545d52c454aSMarc-André Lureaufi 4546d52c454aSMarc-André Lureau 4547da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 45484939a1dfSMichael Tokarev opengl_pkgs="epoxy gbm" 45495f9b1e35SGerd Hoffmann if $pkg_config $opengl_pkgs; then 45505f9b1e35SGerd Hoffmann opengl_cflags="$($pkg_config --cflags $opengl_pkgs)" 45515f9b1e35SGerd Hoffmann opengl_libs="$($pkg_config --libs $opengl_pkgs)" 4552da076ffeSGerd Hoffmann opengl=yes 4553925a0400SGerd Hoffmann if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 4554925a0400SGerd Hoffmann gtk_gl="yes" 4555925a0400SGerd Hoffmann fi 4556cc720a5dSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags" 455720ff075bSMichael Walle else 4558da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 4559dcf30025SGerd Hoffmann feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 456020ff075bSMichael Walle fi 4561f676c67eSJeremy White opengl_cflags="" 4562da076ffeSGerd Hoffmann opengl_libs="" 4563da076ffeSGerd Hoffmann opengl=no 456420ff075bSMichael Walle fi 456520ff075bSMichael Wallefi 456620ff075bSMichael Walle 4567014cb152SGerd Hoffmannif test "$opengl" = "yes"; then 4568014cb152SGerd Hoffmann cat > $TMPC << EOF 4569014cb152SGerd Hoffmann#include <epoxy/egl.h> 4570014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export 4571014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 4572014cb152SGerd Hoffmann#endif 4573014cb152SGerd Hoffmannint main(void) { return 0; } 4574014cb152SGerd HoffmannEOF 4575014cb152SGerd Hoffmann if compile_prog "" "" ; then 4576014cb152SGerd Hoffmann opengl_dmabuf=yes 4577014cb152SGerd Hoffmann fi 4578014cb152SGerd Hoffmannfi 4579c9a12e75SChrysostomos Nanakos 4580e633a5c6SEric Blakeif test "$opengl" = "yes" && test "$have_x11" = "yes"; then 458199e1a93bSPhilippe Mathieu-Daudé for target in $target_list; do 458299e1a93bSPhilippe Mathieu-Daudé case $target in 458399e1a93bSPhilippe Mathieu-Daudé lm32-softmmu) # milkymist-tmu2 requires X11 and OpenGL 458499e1a93bSPhilippe Mathieu-Daudé need_x11=yes 458599e1a93bSPhilippe Mathieu-Daudé ;; 458699e1a93bSPhilippe Mathieu-Daudé esac 458799e1a93bSPhilippe Mathieu-Daudé done 458899e1a93bSPhilippe Mathieu-Daudéfi 458999e1a93bSPhilippe Mathieu-Daudé 4590ed279a06SKlim Kireev########################################## 4591ed279a06SKlim Kireev# libxml2 probe 4592ed279a06SKlim Kireevif test "$libxml2" != "no" ; then 4593ed279a06SKlim Kireev if $pkg_config --exists libxml-2.0; then 4594ed279a06SKlim Kireev libxml2="yes" 4595ed279a06SKlim Kireev libxml2_cflags=$($pkg_config --cflags libxml-2.0) 4596ed279a06SKlim Kireev libxml2_libs=$($pkg_config --libs libxml-2.0) 4597ed279a06SKlim Kireev else 4598ed279a06SKlim Kireev if test "$libxml2" = "yes"; then 4599ed279a06SKlim Kireev feature_not_found "libxml2" "Install libxml2 devel" 4600ed279a06SKlim Kireev fi 4601ed279a06SKlim Kireev libxml2="no" 4602ed279a06SKlim Kireev fi 4603ed279a06SKlim Kireevfi 4604c9a12e75SChrysostomos Nanakos 4605eb100396SBharata B Rao########################################## 4606eb100396SBharata B Rao# glusterfs probe 4607eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 460865d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 4609e01bee08SBharata B Rao glusterfs="yes" 461089138857SStefan Weil glusterfs_cflags=$($pkg_config --cflags glusterfs-api) 461189138857SStefan Weil glusterfs_libs=$($pkg_config --libs glusterfs-api) 4612d85fa9ebSJeff Cody if $pkg_config --atleast-version=4 glusterfs-api; then 4613d85fa9ebSJeff Cody glusterfs_xlator_opt="yes" 4614d85fa9ebSJeff Cody fi 461565d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 46160c14fb47SBharata B Rao glusterfs_discard="yes" 46170c14fb47SBharata B Rao fi 46187c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 4619df3a429aSNiels de Vos glusterfs_fallocate="yes" 46207c815372SBharata B Rao glusterfs_zerofill="yes" 46217c815372SBharata B Rao fi 4622e014dbe7SPrasanna Kumar Kalever cat > $TMPC << EOF 4623e014dbe7SPrasanna Kumar Kalever#include <glusterfs/api/glfs.h> 4624e014dbe7SPrasanna Kumar Kalever 4625e014dbe7SPrasanna Kumar Kaleverint 4626e014dbe7SPrasanna Kumar Kalevermain(void) 4627e014dbe7SPrasanna Kumar Kalever{ 4628e014dbe7SPrasanna Kumar Kalever /* new glfs_ftruncate() passes two additional args */ 4629e014dbe7SPrasanna Kumar Kalever return glfs_ftruncate(NULL, 0, NULL, NULL); 4630e014dbe7SPrasanna Kumar Kalever} 4631e014dbe7SPrasanna Kumar KaleverEOF 4632e014dbe7SPrasanna Kumar Kalever if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then 4633e014dbe7SPrasanna Kumar Kalever glusterfs_ftruncate_has_stat="yes" 4634e014dbe7SPrasanna Kumar Kalever fi 46350e3b891fSNiels de Vos cat > $TMPC << EOF 46360e3b891fSNiels de Vos#include <glusterfs/api/glfs.h> 46370e3b891fSNiels de Vos 46380e3b891fSNiels de Vos/* new glfs_io_cbk() passes two additional glfs_stat structs */ 46390e3b891fSNiels de Vosstatic void 46400e3b891fSNiels de Vosglusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data) 46410e3b891fSNiels de Vos{} 46420e3b891fSNiels de Vos 46430e3b891fSNiels de Vosint 46440e3b891fSNiels de Vosmain(void) 46450e3b891fSNiels de Vos{ 46460e3b891fSNiels de Vos glfs_io_cbk iocb = &glusterfs_iocb; 46470e3b891fSNiels de Vos iocb(NULL, 0 , NULL, NULL, NULL); 46480e3b891fSNiels de Vos return 0; 46490e3b891fSNiels de Vos} 46500e3b891fSNiels de VosEOF 46510e3b891fSNiels de Vos if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then 46520e3b891fSNiels de Vos glusterfs_iocb_has_stat="yes" 46530e3b891fSNiels de Vos fi 4654eb100396SBharata B Rao else 4655eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 46568efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 46578efc9363SHu Tao "Install glusterfs-api devel >= 3" 4658eb100396SBharata B Rao fi 4659e01bee08SBharata B Rao glusterfs="no" 4660eb100396SBharata B Rao fi 4661eb100396SBharata B Raofi 4662eb100396SBharata B Rao 466339386ac7Saurel32# Check for inotify functions when we are building linux-user 46643b3f24adSaurel32# emulator. This is done because older glibc versions don't 46653b3f24adSaurel32# have syscall stubs for these implemented. In that case we 46663b3f24adSaurel32# don't provide them even if kernel supports them. 46673b3f24adSaurel32# 46683b3f24adSaurel32inotify=no 46693b3f24adSaurel32cat > $TMPC << EOF 46703b3f24adSaurel32#include <sys/inotify.h> 46713b3f24adSaurel32 46723b3f24adSaurel32int 46733b3f24adSaurel32main(void) 46743b3f24adSaurel32{ 46753b3f24adSaurel32 /* try to start inotify */ 46768690e420Saurel32 return inotify_init(); 46773b3f24adSaurel32} 46783b3f24adSaurel32EOF 467952166aa0SJuan Quintelaif compile_prog "" "" ; then 46803b3f24adSaurel32 inotify=yes 46813b3f24adSaurel32fi 46823b3f24adSaurel32 4683c05c7a73SRiku Voipioinotify1=no 4684c05c7a73SRiku Voipiocat > $TMPC << EOF 4685c05c7a73SRiku Voipio#include <sys/inotify.h> 4686c05c7a73SRiku Voipio 4687c05c7a73SRiku Voipioint 4688c05c7a73SRiku Voipiomain(void) 4689c05c7a73SRiku Voipio{ 4690c05c7a73SRiku Voipio /* try to start inotify */ 4691c05c7a73SRiku Voipio return inotify_init1(0); 4692c05c7a73SRiku Voipio} 4693c05c7a73SRiku VoipioEOF 4694c05c7a73SRiku Voipioif compile_prog "" "" ; then 4695c05c7a73SRiku Voipio inotify1=yes 4696c05c7a73SRiku Voipiofi 4697c05c7a73SRiku Voipio 4698099d6b0fSRiku Voipio# check if pipe2 is there 4699099d6b0fSRiku Voipiopipe2=no 4700099d6b0fSRiku Voipiocat > $TMPC << EOF 4701099d6b0fSRiku Voipio#include <unistd.h> 4702099d6b0fSRiku Voipio#include <fcntl.h> 4703099d6b0fSRiku Voipio 4704099d6b0fSRiku Voipioint main(void) 4705099d6b0fSRiku Voipio{ 4706099d6b0fSRiku Voipio int pipefd[2]; 47079bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 4708099d6b0fSRiku Voipio} 4709099d6b0fSRiku VoipioEOF 471052166aa0SJuan Quintelaif compile_prog "" "" ; then 4711099d6b0fSRiku Voipio pipe2=yes 4712099d6b0fSRiku Voipiofi 4713099d6b0fSRiku Voipio 471440ff6d7eSKevin Wolf# check if accept4 is there 471540ff6d7eSKevin Wolfaccept4=no 471640ff6d7eSKevin Wolfcat > $TMPC << EOF 471740ff6d7eSKevin Wolf#include <sys/socket.h> 471840ff6d7eSKevin Wolf#include <stddef.h> 471940ff6d7eSKevin Wolf 472040ff6d7eSKevin Wolfint main(void) 472140ff6d7eSKevin Wolf{ 472240ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 472340ff6d7eSKevin Wolf return 0; 472440ff6d7eSKevin Wolf} 472540ff6d7eSKevin WolfEOF 472640ff6d7eSKevin Wolfif compile_prog "" "" ; then 472740ff6d7eSKevin Wolf accept4=yes 472840ff6d7eSKevin Wolffi 472940ff6d7eSKevin Wolf 47303ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 47313ce34dfbSvibisreenivasansplice=no 47323ce34dfbSvibisreenivasancat > $TMPC << EOF 47333ce34dfbSvibisreenivasan#include <unistd.h> 47343ce34dfbSvibisreenivasan#include <fcntl.h> 47353ce34dfbSvibisreenivasan#include <limits.h> 47363ce34dfbSvibisreenivasan 47373ce34dfbSvibisreenivasanint main(void) 47383ce34dfbSvibisreenivasan{ 473966ea0f22SStefan Weil int len, fd = 0; 47403ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 47413ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 47423ce34dfbSvibisreenivasan return 0; 47433ce34dfbSvibisreenivasan} 47443ce34dfbSvibisreenivasanEOF 474552166aa0SJuan Quintelaif compile_prog "" "" ; then 47463ce34dfbSvibisreenivasan splice=yes 47473ce34dfbSvibisreenivasanfi 47483ce34dfbSvibisreenivasan 4749dcc38d1cSMarcelo Tosatti########################################## 4750a99d57bbSWanlong Gao# libnuma probe 4751a99d57bbSWanlong Gao 4752a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 4753a99d57bbSWanlong Gao cat > $TMPC << EOF 4754a99d57bbSWanlong Gao#include <numa.h> 4755a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 4756a99d57bbSWanlong GaoEOF 4757a99d57bbSWanlong Gao 4758a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 4759a99d57bbSWanlong Gao numa=yes 4760a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 4761a99d57bbSWanlong Gao else 4762a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 4763a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 4764a99d57bbSWanlong Gao fi 4765a99d57bbSWanlong Gao numa=no 4766a99d57bbSWanlong Gao fi 4767a99d57bbSWanlong Gaofi 4768a99d57bbSWanlong Gao 47697b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 47707b01cb97SAlexandre Derumier echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 47717b01cb97SAlexandre Derumier exit 1 47727b01cb97SAlexandre Derumierfi 47737b01cb97SAlexandre Derumier 47745a22ab71SYang Zhong# Even if malloc_trim() is available, these non-libc memory allocators 47755a22ab71SYang Zhong# do not support it. 47765a22ab71SYang Zhongif test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then 47775a22ab71SYang Zhong if test "$malloc_trim" = "yes" ; then 47785a22ab71SYang Zhong echo "Disabling malloc_trim with non-libc memory allocator" 47795a22ab71SYang Zhong fi 47805a22ab71SYang Zhong malloc_trim="no" 47815a22ab71SYang Zhongfi 47825a22ab71SYang Zhong 47835a22ab71SYang Zhong####################################### 47845a22ab71SYang Zhong# malloc_trim 47855a22ab71SYang Zhong 47865a22ab71SYang Zhongif test "$malloc_trim" != "no" ; then 47875a22ab71SYang Zhong cat > $TMPC << EOF 47885a22ab71SYang Zhong#include <malloc.h> 47895a22ab71SYang Zhongint main(void) { malloc_trim(0); return 0; } 47905a22ab71SYang ZhongEOF 47915a22ab71SYang Zhong if compile_prog "" "" ; then 47925a22ab71SYang Zhong malloc_trim="yes" 47935a22ab71SYang Zhong else 47945a22ab71SYang Zhong malloc_trim="no" 47955a22ab71SYang Zhong fi 47965a22ab71SYang Zhongfi 47975a22ab71SYang Zhong 4798a99d57bbSWanlong Gao########################################## 47992847b469SFam Zheng# tcmalloc probe 48002847b469SFam Zheng 48012847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 48022847b469SFam Zheng cat > $TMPC << EOF 48032847b469SFam Zheng#include <stdlib.h> 4804f2dfe54cSLeonid Blochint main(void) { 4805f2dfe54cSLeonid Bloch void *tmp = malloc(1); 4806f2dfe54cSLeonid Bloch if (tmp != NULL) { 4807f2dfe54cSLeonid Bloch return 0; 4808f2dfe54cSLeonid Bloch } 4809f2dfe54cSLeonid Bloch return 1; 4810f2dfe54cSLeonid Bloch} 48112847b469SFam ZhengEOF 48122847b469SFam Zheng 48132847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 48142847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 48152847b469SFam Zheng else 48162847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 48172847b469SFam Zheng fi 48182847b469SFam Zhengfi 48192847b469SFam Zheng 48202847b469SFam Zheng########################################## 48217b01cb97SAlexandre Derumier# jemalloc probe 48227b01cb97SAlexandre Derumier 48237b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then 48247b01cb97SAlexandre Derumier cat > $TMPC << EOF 48257b01cb97SAlexandre Derumier#include <stdlib.h> 4826f2dfe54cSLeonid Blochint main(void) { 4827f2dfe54cSLeonid Bloch void *tmp = malloc(1); 4828f2dfe54cSLeonid Bloch if (tmp != NULL) { 4829f2dfe54cSLeonid Bloch return 0; 4830f2dfe54cSLeonid Bloch } 4831f2dfe54cSLeonid Bloch return 1; 4832f2dfe54cSLeonid Bloch} 48337b01cb97SAlexandre DerumierEOF 48347b01cb97SAlexandre Derumier 48357b01cb97SAlexandre Derumier if compile_prog "" "-ljemalloc" ; then 48367b01cb97SAlexandre Derumier LIBS="-ljemalloc $LIBS" 48377b01cb97SAlexandre Derumier else 48387b01cb97SAlexandre Derumier feature_not_found "jemalloc" "install jemalloc devel" 48397b01cb97SAlexandre Derumier fi 48407b01cb97SAlexandre Derumierfi 48417b01cb97SAlexandre Derumier 48427b01cb97SAlexandre Derumier########################################## 4843dcc38d1cSMarcelo Tosatti# signalfd probe 4844dcc38d1cSMarcelo Tosattisignalfd="no" 4845dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 4846dcc38d1cSMarcelo Tosatti#include <unistd.h> 4847dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 4848dcc38d1cSMarcelo Tosatti#include <signal.h> 4849dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 4850dcc38d1cSMarcelo TosattiEOF 4851dcc38d1cSMarcelo Tosatti 4852dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 4853dcc38d1cSMarcelo Tosatti signalfd=yes 4854dcc38d1cSMarcelo Tosattifi 4855dcc38d1cSMarcelo Tosatti 4856d339d766SRichard W.M. Jones# check if optreset global is declared by <getopt.h> 4857d339d766SRichard W.M. Jonesoptreset="no" 4858d339d766SRichard W.M. Jonescat > $TMPC << EOF 4859d339d766SRichard W.M. Jones#include <getopt.h> 4860d339d766SRichard W.M. Jonesint main(void) { return optreset; } 4861d339d766SRichard W.M. JonesEOF 4862d339d766SRichard W.M. Jones 4863d339d766SRichard W.M. Jonesif compile_prog "" "" ; then 4864d339d766SRichard W.M. Jones optreset=yes 4865d339d766SRichard W.M. Jonesfi 4866d339d766SRichard W.M. Jones 4867c2882b96SRiku Voipio# check if eventfd is supported 4868c2882b96SRiku Voipioeventfd=no 4869c2882b96SRiku Voipiocat > $TMPC << EOF 4870c2882b96SRiku Voipio#include <sys/eventfd.h> 4871c2882b96SRiku Voipio 4872c2882b96SRiku Voipioint main(void) 4873c2882b96SRiku Voipio{ 487455cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 4875c2882b96SRiku Voipio} 4876c2882b96SRiku VoipioEOF 4877c2882b96SRiku Voipioif compile_prog "" "" ; then 4878c2882b96SRiku Voipio eventfd=yes 4879c2882b96SRiku Voipiofi 4880c2882b96SRiku Voipio 4881751bcc39SMarc-André Lureau# check if memfd is supported 4882751bcc39SMarc-André Lureaumemfd=no 4883751bcc39SMarc-André Lureaucat > $TMPC << EOF 488475e5b70eSPaolo Bonzini#include <sys/mman.h> 4885751bcc39SMarc-André Lureau 4886751bcc39SMarc-André Lureauint main(void) 4887751bcc39SMarc-André Lureau{ 4888751bcc39SMarc-André Lureau return memfd_create("foo", MFD_ALLOW_SEALING); 4889751bcc39SMarc-André Lureau} 4890751bcc39SMarc-André LureauEOF 4891751bcc39SMarc-André Lureauif compile_prog "" "" ; then 4892751bcc39SMarc-André Lureau memfd=yes 4893751bcc39SMarc-André Lureaufi 4894751bcc39SMarc-André Lureau 4895955727d2SCortland Tölva# check for usbfs 4896955727d2SCortland Tölvahave_usbfs=no 4897955727d2SCortland Tölvaif test "$linux_user" = "yes"; then 489896566d09SThomas Petazzoni cat > $TMPC << EOF 489996566d09SThomas Petazzoni#include <linux/usbdevice_fs.h> 490096566d09SThomas Petazzoni 490196566d09SThomas Petazzoni#ifndef USBDEVFS_GET_CAPABILITIES 490296566d09SThomas Petazzoni#error "USBDEVFS_GET_CAPABILITIES undefined" 490396566d09SThomas Petazzoni#endif 490496566d09SThomas Petazzoni 490596566d09SThomas Petazzoni#ifndef USBDEVFS_DISCONNECT_CLAIM 490696566d09SThomas Petazzoni#error "USBDEVFS_DISCONNECT_CLAIM undefined" 490796566d09SThomas Petazzoni#endif 490896566d09SThomas Petazzoni 490996566d09SThomas Petazzoniint main(void) 491096566d09SThomas Petazzoni{ 491196566d09SThomas Petazzoni return 0; 491296566d09SThomas Petazzoni} 491396566d09SThomas PetazzoniEOF 491496566d09SThomas Petazzoni if compile_prog "" ""; then 4915955727d2SCortland Tölva have_usbfs=yes 4916955727d2SCortland Tölva fi 4917955727d2SCortland Tölvafi 4918751bcc39SMarc-André Lureau 4919d0927938SUlrich Hecht# check for fallocate 4920d0927938SUlrich Hechtfallocate=no 4921d0927938SUlrich Hechtcat > $TMPC << EOF 4922d0927938SUlrich Hecht#include <fcntl.h> 4923d0927938SUlrich Hecht 4924d0927938SUlrich Hechtint main(void) 4925d0927938SUlrich Hecht{ 4926d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 4927d0927938SUlrich Hecht return 0; 4928d0927938SUlrich Hecht} 4929d0927938SUlrich HechtEOF 49308fb03151SPeter Maydellif compile_prog "" "" ; then 4931d0927938SUlrich Hecht fallocate=yes 4932d0927938SUlrich Hechtfi 4933d0927938SUlrich Hecht 49343d4fa43eSKusanagi Kouichi# check for fallocate hole punching 49353d4fa43eSKusanagi Kouichifallocate_punch_hole=no 49363d4fa43eSKusanagi Kouichicat > $TMPC << EOF 49373d4fa43eSKusanagi Kouichi#include <fcntl.h> 49383d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 49393d4fa43eSKusanagi Kouichi 49403d4fa43eSKusanagi Kouichiint main(void) 49413d4fa43eSKusanagi Kouichi{ 49423d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 49433d4fa43eSKusanagi Kouichi return 0; 49443d4fa43eSKusanagi Kouichi} 49453d4fa43eSKusanagi KouichiEOF 49463d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 49473d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 49483d4fa43eSKusanagi Kouichifi 49493d4fa43eSKusanagi Kouichi 4950b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 4951b953f075SDenis V. Lunevfallocate_zero_range=no 4952b953f075SDenis V. Lunevcat > $TMPC << EOF 4953b953f075SDenis V. Lunev#include <fcntl.h> 4954b953f075SDenis V. Lunev#include <linux/falloc.h> 4955b953f075SDenis V. Lunev 4956b953f075SDenis V. Lunevint main(void) 4957b953f075SDenis V. Lunev{ 4958b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 4959b953f075SDenis V. Lunev return 0; 4960b953f075SDenis V. Lunev} 4961b953f075SDenis V. LunevEOF 4962b953f075SDenis V. Lunevif compile_prog "" "" ; then 4963b953f075SDenis V. Lunev fallocate_zero_range=yes 4964b953f075SDenis V. Lunevfi 4965b953f075SDenis V. Lunev 4966ed911435SKevin Wolf# check for posix_fallocate 4967ed911435SKevin Wolfposix_fallocate=no 4968ed911435SKevin Wolfcat > $TMPC << EOF 4969ed911435SKevin Wolf#include <fcntl.h> 4970ed911435SKevin Wolf 4971ed911435SKevin Wolfint main(void) 4972ed911435SKevin Wolf{ 4973ed911435SKevin Wolf posix_fallocate(0, 0, 0); 4974ed911435SKevin Wolf return 0; 4975ed911435SKevin Wolf} 4976ed911435SKevin WolfEOF 4977ed911435SKevin Wolfif compile_prog "" "" ; then 4978ed911435SKevin Wolf posix_fallocate=yes 4979ed911435SKevin Wolffi 4980ed911435SKevin Wolf 4981c727f47dSPeter Maydell# check for sync_file_range 4982c727f47dSPeter Maydellsync_file_range=no 4983c727f47dSPeter Maydellcat > $TMPC << EOF 4984c727f47dSPeter Maydell#include <fcntl.h> 4985c727f47dSPeter Maydell 4986c727f47dSPeter Maydellint main(void) 4987c727f47dSPeter Maydell{ 4988c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 4989c727f47dSPeter Maydell return 0; 4990c727f47dSPeter Maydell} 4991c727f47dSPeter MaydellEOF 49928fb03151SPeter Maydellif compile_prog "" "" ; then 4993c727f47dSPeter Maydell sync_file_range=yes 4994c727f47dSPeter Maydellfi 4995c727f47dSPeter Maydell 4996dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 4997dace20dcSPeter Maydellfiemap=no 4998dace20dcSPeter Maydellcat > $TMPC << EOF 4999dace20dcSPeter Maydell#include <sys/ioctl.h> 5000dace20dcSPeter Maydell#include <linux/fs.h> 5001dace20dcSPeter Maydell#include <linux/fiemap.h> 5002dace20dcSPeter Maydell 5003dace20dcSPeter Maydellint main(void) 5004dace20dcSPeter Maydell{ 5005dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 5006dace20dcSPeter Maydell return 0; 5007dace20dcSPeter Maydell} 5008dace20dcSPeter MaydellEOF 50098fb03151SPeter Maydellif compile_prog "" "" ; then 5010dace20dcSPeter Maydell fiemap=yes 5011dace20dcSPeter Maydellfi 5012dace20dcSPeter Maydell 5013d0927938SUlrich Hecht# check for dup3 5014d0927938SUlrich Hechtdup3=no 5015d0927938SUlrich Hechtcat > $TMPC << EOF 5016d0927938SUlrich Hecht#include <unistd.h> 5017d0927938SUlrich Hecht 5018d0927938SUlrich Hechtint main(void) 5019d0927938SUlrich Hecht{ 5020d0927938SUlrich Hecht dup3(0, 0, 0); 5021d0927938SUlrich Hecht return 0; 5022d0927938SUlrich Hecht} 5023d0927938SUlrich HechtEOF 502478f5d726SJan Kiszkaif compile_prog "" "" ; then 5025d0927938SUlrich Hecht dup3=yes 5026d0927938SUlrich Hechtfi 5027d0927938SUlrich Hecht 50284e0c6529SAlex Bligh# check for ppoll support 50294e0c6529SAlex Blighppoll=no 50304e0c6529SAlex Blighcat > $TMPC << EOF 50314e0c6529SAlex Bligh#include <poll.h> 50324e0c6529SAlex Bligh 50334e0c6529SAlex Blighint main(void) 50344e0c6529SAlex Bligh{ 50354e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 50364e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 50374e0c6529SAlex Bligh return 0; 50384e0c6529SAlex Bligh} 50394e0c6529SAlex BlighEOF 50404e0c6529SAlex Blighif compile_prog "" "" ; then 50414e0c6529SAlex Bligh ppoll=yes 50424e0c6529SAlex Blighfi 50434e0c6529SAlex Bligh 5044cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 5045cd758dd0SAlex Blighprctl_pr_set_timerslack=no 5046cd758dd0SAlex Blighcat > $TMPC << EOF 5047cd758dd0SAlex Bligh#include <sys/prctl.h> 5048cd758dd0SAlex Bligh 5049cd758dd0SAlex Blighint main(void) 5050cd758dd0SAlex Bligh{ 5051cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 5052cd758dd0SAlex Bligh return 0; 5053cd758dd0SAlex Bligh} 5054cd758dd0SAlex BlighEOF 5055cd758dd0SAlex Blighif compile_prog "" "" ; then 5056cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 5057cd758dd0SAlex Blighfi 5058cd758dd0SAlex Bligh 50593b6edd16SPeter Maydell# check for epoll support 50603b6edd16SPeter Maydellepoll=no 50613b6edd16SPeter Maydellcat > $TMPC << EOF 50623b6edd16SPeter Maydell#include <sys/epoll.h> 50633b6edd16SPeter Maydell 50643b6edd16SPeter Maydellint main(void) 50653b6edd16SPeter Maydell{ 50663b6edd16SPeter Maydell epoll_create(0); 50673b6edd16SPeter Maydell return 0; 50683b6edd16SPeter Maydell} 50693b6edd16SPeter MaydellEOF 50708fb03151SPeter Maydellif compile_prog "" "" ; then 50713b6edd16SPeter Maydell epoll=yes 50723b6edd16SPeter Maydellfi 50733b6edd16SPeter Maydell 5074227f0214SPeter Maydell# epoll_create1 is a later addition 5075227f0214SPeter Maydell# so we must check separately for its presence 50763b6edd16SPeter Maydellepoll_create1=no 50773b6edd16SPeter Maydellcat > $TMPC << EOF 50783b6edd16SPeter Maydell#include <sys/epoll.h> 50793b6edd16SPeter Maydell 50803b6edd16SPeter Maydellint main(void) 50813b6edd16SPeter Maydell{ 508219e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 508319e83f6bSPeter Maydell * a function being called. This is necessary so that on 508419e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 508519e83f6bSPeter Maydell * the library but not declared in the header file we will 508619e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 508719e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 508819e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 508919e83f6bSPeter Maydell */ 5090c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 50913b6edd16SPeter Maydell} 50923b6edd16SPeter MaydellEOF 50938fb03151SPeter Maydellif compile_prog "" "" ; then 50943b6edd16SPeter Maydell epoll_create1=yes 50953b6edd16SPeter Maydellfi 50963b6edd16SPeter Maydell 5097a8fd1abaSPeter Maydell# check for sendfile support 5098a8fd1abaSPeter Maydellsendfile=no 5099a8fd1abaSPeter Maydellcat > $TMPC << EOF 5100a8fd1abaSPeter Maydell#include <sys/sendfile.h> 5101a8fd1abaSPeter Maydell 5102a8fd1abaSPeter Maydellint main(void) 5103a8fd1abaSPeter Maydell{ 5104a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 5105a8fd1abaSPeter Maydell} 5106a8fd1abaSPeter MaydellEOF 5107a8fd1abaSPeter Maydellif compile_prog "" "" ; then 5108a8fd1abaSPeter Maydell sendfile=yes 5109a8fd1abaSPeter Maydellfi 5110a8fd1abaSPeter Maydell 511151834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 511251834341SRiku Voipiotimerfd=no 511351834341SRiku Voipiocat > $TMPC << EOF 511451834341SRiku Voipio#include <sys/timerfd.h> 511551834341SRiku Voipio 511651834341SRiku Voipioint main(void) 511751834341SRiku Voipio{ 511851834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 511951834341SRiku Voipio} 512051834341SRiku VoipioEOF 512151834341SRiku Voipioif compile_prog "" "" ; then 512251834341SRiku Voipio timerfd=yes 512351834341SRiku Voipiofi 512451834341SRiku Voipio 51259af5c906SRiku Voipio# check for setns and unshare support 51269af5c906SRiku Voipiosetns=no 51279af5c906SRiku Voipiocat > $TMPC << EOF 51289af5c906SRiku Voipio#include <sched.h> 51299af5c906SRiku Voipio 51309af5c906SRiku Voipioint main(void) 51319af5c906SRiku Voipio{ 51329af5c906SRiku Voipio int ret; 51339af5c906SRiku Voipio ret = setns(0, 0); 51349af5c906SRiku Voipio ret = unshare(0); 51359af5c906SRiku Voipio return ret; 51369af5c906SRiku Voipio} 51379af5c906SRiku VoipioEOF 51389af5c906SRiku Voipioif compile_prog "" "" ; then 51399af5c906SRiku Voipio setns=yes 51409af5c906SRiku Voipiofi 51419af5c906SRiku Voipio 514238860a03SAleksandar Markovic# clock_adjtime probe 514338860a03SAleksandar Markovicclock_adjtime=no 514438860a03SAleksandar Markoviccat > $TMPC <<EOF 514538860a03SAleksandar Markovic#include <time.h> 514638860a03SAleksandar Markovic 514738860a03SAleksandar Markovicint main(void) 514838860a03SAleksandar Markovic{ 514938860a03SAleksandar Markovic return clock_adjtime(0, 0); 515038860a03SAleksandar Markovic} 515138860a03SAleksandar MarkovicEOF 515238860a03SAleksandar Markovicclock_adjtime=no 515338860a03SAleksandar Markovicif compile_prog "" "" ; then 515438860a03SAleksandar Markovic clock_adjtime=yes 515538860a03SAleksandar Markovicfi 515638860a03SAleksandar Markovic 51575a03cd00SAleksandar Markovic# syncfs probe 51585a03cd00SAleksandar Markovicsyncfs=no 51595a03cd00SAleksandar Markoviccat > $TMPC <<EOF 51605a03cd00SAleksandar Markovic#include <unistd.h> 51615a03cd00SAleksandar Markovic 51625a03cd00SAleksandar Markovicint main(void) 51635a03cd00SAleksandar Markovic{ 51645a03cd00SAleksandar Markovic return syncfs(0); 51655a03cd00SAleksandar Markovic} 51665a03cd00SAleksandar MarkovicEOF 51675a03cd00SAleksandar Markovicsyncfs=no 51685a03cd00SAleksandar Markovicif compile_prog "" "" ; then 51695a03cd00SAleksandar Markovic syncfs=yes 51705a03cd00SAleksandar Markovicfi 51715a03cd00SAleksandar Markovic 5172db37dd89SAleksandar Markovic# check for kcov support (kernel must be 4.4+, compiled with certain options) 5173db37dd89SAleksandar Markovickcov=no 5174db37dd89SAleksandar Markovicif check_include sys/kcov.h ; then 5175db37dd89SAleksandar Markovic kcov=yes 5176db37dd89SAleksandar Markovicfi 5177db37dd89SAleksandar Markovic 5178516e8b7dSPeter Maydell# If we're making warnings fatal, apply this to Sphinx runs as well 5179516e8b7dSPeter Maydellsphinx_werror="" 5180516e8b7dSPeter Maydellif test "$werror" = "yes"; then 5181516e8b7dSPeter Maydell sphinx_werror="-W" 5182516e8b7dSPeter Maydellfi 5183516e8b7dSPeter Maydell 51845f71eac0SPeter Maydell# Check we have a new enough version of sphinx-build 51855f71eac0SPeter Maydellhas_sphinx_build() { 51865f71eac0SPeter Maydell # This is a bit awkward but works: create a trivial document and 51875f71eac0SPeter Maydell # try to run it with our configuration file (which enforces a 51885f71eac0SPeter Maydell # version requirement). This will fail if either 51895f71eac0SPeter Maydell # sphinx-build doesn't exist at all or if it is too old. 51905f71eac0SPeter Maydell mkdir -p "$TMPDIR1/sphinx" 51915f71eac0SPeter Maydell touch "$TMPDIR1/sphinx/index.rst" 5192988ae6c3SAlex Bennée "$sphinx_build" $sphinx_werror -c "$source_path/docs" \ 5193988ae6c3SAlex Bennée -b html "$TMPDIR1/sphinx" \ 5194988ae6c3SAlex Bennée "$TMPDIR1/sphinx/out" >> config.log 2>&1 51955f71eac0SPeter Maydell} 51965f71eac0SPeter Maydell 5197cc8ae6deSpbrook# Check if tools are available to build documentation. 5198a25dba17SJuan Quintelaif test "$docs" != "no" ; then 5199758b617aSPeter Maydell if has_sphinx_build; then 5200758b617aSPeter Maydell sphinx_ok=yes 5201758b617aSPeter Maydell else 5202758b617aSPeter Maydell sphinx_ok=no 5203758b617aSPeter Maydell fi 5204758b617aSPeter Maydell if has makeinfo && has pod2man && test "$sphinx_ok" = "yes"; then 5205a25dba17SJuan Quintela docs=yes 520683a3ab8bSJuan Quintela else 5207a25dba17SJuan Quintela if test "$docs" = "yes" ; then 5208758b617aSPeter Maydell if has $sphinx_build && test "$sphinx_ok" != "yes"; then 5209758b617aSPeter Maydell echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2 5210758b617aSPeter Maydell fi 5211758b617aSPeter Maydell feature_not_found "docs" "Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx" 521283a3ab8bSJuan Quintela fi 5213a25dba17SJuan Quintela docs=no 521483a3ab8bSJuan Quintela fi 5215cc8ae6deSpbrookfi 5216cc8ae6deSpbrook 5217f514f41cSStefan Weil# Search for bswap_32 function 52186ae9a1f4SJuan Quintelabyteswap_h=no 52196ae9a1f4SJuan Quintelacat > $TMPC << EOF 52206ae9a1f4SJuan Quintela#include <byteswap.h> 52216ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 52226ae9a1f4SJuan QuintelaEOF 522352166aa0SJuan Quintelaif compile_prog "" "" ; then 52246ae9a1f4SJuan Quintela byteswap_h=yes 52256ae9a1f4SJuan Quintelafi 52266ae9a1f4SJuan Quintela 522775f13596SStefan Weil# Search for bswap32 function 52286ae9a1f4SJuan Quintelabswap_h=no 52296ae9a1f4SJuan Quintelacat > $TMPC << EOF 52306ae9a1f4SJuan Quintela#include <sys/endian.h> 52316ae9a1f4SJuan Quintela#include <sys/types.h> 52326ae9a1f4SJuan Quintela#include <machine/bswap.h> 52336ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 52346ae9a1f4SJuan QuintelaEOF 523552166aa0SJuan Quintelaif compile_prog "" "" ; then 52366ae9a1f4SJuan Quintela bswap_h=yes 52376ae9a1f4SJuan Quintelafi 52386ae9a1f4SJuan Quintela 5239da93a1fdSaliguori########################################## 5240e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 5241c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 5242e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 52433c33ea96SPaolo Bonzini libiscsi="yes" 5244ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 5245ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 5246c589b249SRonnie Sahlberg else 5247c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 5248e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 5249c589b249SRonnie Sahlberg fi 5250c589b249SRonnie Sahlberg libiscsi="no" 5251c589b249SRonnie Sahlberg fi 5252c589b249SRonnie Sahlbergfi 5253c589b249SRonnie Sahlberg 5254c589b249SRonnie Sahlberg########################################## 52558bacde8dSNatanael Copa# Do we need libm 52568bacde8dSNatanael Copacat > $TMPC << EOF 52578bacde8dSNatanael Copa#include <math.h> 5258f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 52598bacde8dSNatanael CopaEOF 52608bacde8dSNatanael Copaif compile_prog "" "" ; then 52618bacde8dSNatanael Copa : 52628bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 52638bacde8dSNatanael Copa LIBS="-lm $LIBS" 52648bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 52658bacde8dSNatanael Copaelse 526676ad07a4SPeter Maydell error_exit "libm check failed" 52678bacde8dSNatanael Copafi 52688bacde8dSNatanael Copa 52698bacde8dSNatanael Copa########################################## 5270da93a1fdSaliguori# Do we need librt 52718bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 52728bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 52738bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 52748bacde8dSNatanael Copa# function in addition. 5275da93a1fdSaliguoricat > $TMPC <<EOF 5276da93a1fdSaliguori#include <signal.h> 5277da93a1fdSaliguori#include <time.h> 52788bacde8dSNatanael Copaint main(void) { 52798bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 52808bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 52818bacde8dSNatanael Copa} 5282da93a1fdSaliguoriEOF 5283da93a1fdSaliguori 528452166aa0SJuan Quintelaif compile_prog "" "" ; then 528507ffa4bdSJuan Quintela : 52868bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 528718e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 528818e588b1SRick Liu LIBS="$LIBS -lrt" 528918e588b1SRick Liu libs_qga="$libs_qga -lrt" 5290da93a1fdSaliguorifi 5291da93a1fdSaliguori 5292d99e97e6SThomas Huth# Check whether we need to link libutil for openpty() 5293d99e97e6SThomas Huthcat > $TMPC << EOF 5294d99e97e6SThomas Huthextern int openpty(int *am, int *as, char *name, void *termp, void *winp); 5295d99e97e6SThomas Huthint main(void) { return openpty(0, 0, 0, 0, 0); } 5296d99e97e6SThomas HuthEOF 5297d99e97e6SThomas Huth 52989df8b20dSThomas Huthhave_openpty="no" 52999df8b20dSThomas Huthif compile_prog "" "" ; then 53009df8b20dSThomas Huth have_openpty="yes" 53019df8b20dSThomas Huthelse 5302d99e97e6SThomas Huth if compile_prog "" "-lutil" ; then 53036362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 5304d99e97e6SThomas Huth libs_tools="-lutil $libs_tools" 53059df8b20dSThomas Huth have_openpty="yes" 5306d99e97e6SThomas Huth fi 53076362a53fSJuan Quintelafi 53086362a53fSJuan Quintela 5309de5071c5SBlue Swirl########################################## 5310cd4ec0b4SGerd Hoffmann# spice probe 5311cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 5312cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 5313cd4ec0b4SGerd Hoffmann#include <spice.h> 5314cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 5315cd4ec0b4SGerd HoffmannEOF 5316710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 5317710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 53181b63665cSMarc-André Lureau if $pkg_config --atleast-version=0.12.5 spice-server && \ 531965d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 5320cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 5321cd4ec0b4SGerd Hoffmann spice="yes" 5322cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 5323cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 53242e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 53252e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 5326cd4ec0b4SGerd Hoffmann else 5327cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 53288efc9363SHu Tao feature_not_found "spice" \ 53291b63665cSMarc-André Lureau "Install spice-server(>=0.12.5) and spice-protocol(>=0.12.3) devel" 5330cd4ec0b4SGerd Hoffmann fi 5331cd4ec0b4SGerd Hoffmann spice="no" 5332cd4ec0b4SGerd Hoffmann fi 5333cd4ec0b4SGerd Hoffmannfi 5334cd4ec0b4SGerd Hoffmann 53357b02f544SMarc-André Lureau# check for smartcard support 53367b02f544SMarc-André Lureauif test "$smartcard" != "no"; then 53370f5c642dSMichal Privoznik if $pkg_config --atleast-version=2.5.1 libcacard; then 53387b02f544SMarc-André Lureau libcacard_cflags=$($pkg_config --cflags libcacard) 53397b02f544SMarc-André Lureau libcacard_libs=$($pkg_config --libs libcacard) 53407b02f544SMarc-André Lureau smartcard="yes" 5341111a38b0SRobert Relyea else 53427b02f544SMarc-André Lureau if test "$smartcard" = "yes"; then 53437b02f544SMarc-André Lureau feature_not_found "smartcard" "Install libcacard devel" 5344111a38b0SRobert Relyea fi 53457b02f544SMarc-André Lureau smartcard="no" 5346111a38b0SRobert Relyea fi 5347111a38b0SRobert Relyeafi 5348111a38b0SRobert Relyea 53492b2325ffSGerd Hoffmann# check for libusb 53502b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 535165d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 53522b2325ffSGerd Hoffmann libusb="yes" 5353ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 5354ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 53552b2325ffSGerd Hoffmann else 53562b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 53578efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 53582b2325ffSGerd Hoffmann fi 53592b2325ffSGerd Hoffmann libusb="no" 53602b2325ffSGerd Hoffmann fi 53612b2325ffSGerd Hoffmannfi 53622b2325ffSGerd Hoffmann 536369354a83SHans de Goede# check for usbredirparser for usb network redirection support 536469354a83SHans de Goedeif test "$usb_redir" != "no" ; then 536565d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 536669354a83SHans de Goede usb_redir="yes" 5367ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 5368ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 536969354a83SHans de Goede else 537069354a83SHans de Goede if test "$usb_redir" = "yes"; then 537121684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 537269354a83SHans de Goede fi 537369354a83SHans de Goede usb_redir="no" 537469354a83SHans de Goede fi 537569354a83SHans de Goedefi 537669354a83SHans de Goede 5377cd4ec0b4SGerd Hoffmann########################################## 5378d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 5379d9840e25STomoki Sekiyama 5380e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no" && \ 5381e633a5c6SEric Blake test "$vss_win32_sdk" != "no" ; then 5382d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 5383690604f6SMichael Roth "") vss_win32_include="-isystem $source_path" ;; 5384d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 5385d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 5386690604f6SMichael Roth vss_win32_include="-isystem $source_path/.sdk/vss" 5387d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 5388d9840e25STomoki Sekiyama ;; 5389690604f6SMichael Roth *) vss_win32_include="-isystem $vss_win32_sdk" 5390d9840e25STomoki Sekiyama esac 5391d9840e25STomoki Sekiyama cat > $TMPC << EOF 5392d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 5393d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 5394d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 5395d9840e25STomoki SekiyamaEOF 5396d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 5397d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 5398d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 5399315d3184SFam Zheng libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 5400f33ca81fSMichael Roth qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 5401d9840e25STomoki Sekiyama else 5402d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 5403d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 5404d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 5405d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 5406d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 5407d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 5408d9840e25STomoki Sekiyama feature_not_found "VSS support" 5409d9840e25STomoki Sekiyama fi 5410d9840e25STomoki Sekiyama guest_agent_with_vss="no" 5411d9840e25STomoki Sekiyama fi 5412d9840e25STomoki Sekiyamafi 5413d9840e25STomoki Sekiyama 5414d9840e25STomoki Sekiyama########################################## 5415d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 5416d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 5417d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 5418d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 5419d9840e25STomoki Sekiyama 5420e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no" && \ 5421e633a5c6SEric Blake test "$guest_agent_with_vss" = "yes" ; then 5422d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 5423d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 5424d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 5425d9840e25STomoki Sekiyama if test -n "$programfiles"; then 5426d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 5427d9840e25STomoki Sekiyama else 5428d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 5429d9840e25STomoki Sekiyama fi 5430d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 5431d9840e25STomoki Sekiyama win_sdk="" 5432d9840e25STomoki Sekiyama fi 5433d9840e25STomoki Sekiyamafi 5434d9840e25STomoki Sekiyama 5435d9840e25STomoki Sekiyama########################################## 543650cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h 5437e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no"; then 543850cbebb9SMichael Roth cat > $TMPC << EOF 543950cbebb9SMichael Roth#include <windows.h> 544050cbebb9SMichael Roth#include <ntddscsi.h> 544150cbebb9SMichael Rothint main(void) { 544250cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS) 544350cbebb9SMichael Roth#error Missing required ioctl definitions 544450cbebb9SMichael Roth#endif 544550cbebb9SMichael Roth SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 544650cbebb9SMichael Roth return addr.Lun; 544750cbebb9SMichael Roth} 544850cbebb9SMichael RothEOF 544950cbebb9SMichael Roth if compile_prog "" "" ; then 545050cbebb9SMichael Roth guest_agent_ntddscsi=yes 5451996b9cdcSMatt Hines libs_qga="-lsetupapi -lcfgmgr32 $libs_qga" 545250cbebb9SMichael Roth fi 545350cbebb9SMichael Rothfi 545450cbebb9SMichael Roth 545550cbebb9SMichael Roth########################################## 54569d9e1521SGerd Hoffmann# virgl renderer probe 54579d9e1521SGerd Hoffmann 54589d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then 54599d9e1521SGerd Hoffmann cat > $TMPC << EOF 54609d9e1521SGerd Hoffmann#include <virglrenderer.h> 54619d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; } 54629d9e1521SGerd HoffmannEOF 54639d9e1521SGerd Hoffmann virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 54649d9e1521SGerd Hoffmann virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 546547479c55SMarc-André Lureau virgl_version=$($pkg_config --modversion virglrenderer 2>/dev/null) 54669d9e1521SGerd Hoffmann if $pkg_config virglrenderer >/dev/null 2>&1 && \ 54679d9e1521SGerd Hoffmann compile_prog "$virgl_cflags" "$virgl_libs" ; then 54689d9e1521SGerd Hoffmann virglrenderer="yes" 54699d9e1521SGerd Hoffmann else 54709d9e1521SGerd Hoffmann if test "$virglrenderer" = "yes" ; then 54719d9e1521SGerd Hoffmann feature_not_found "virglrenderer" 54729d9e1521SGerd Hoffmann fi 54739d9e1521SGerd Hoffmann virglrenderer="no" 54749d9e1521SGerd Hoffmann fi 54759d9e1521SGerd Hoffmannfi 54769d9e1521SGerd Hoffmann 54779d9e1521SGerd Hoffmann########################################## 54788ca80760SRichard Henderson# capstone 54798ca80760SRichard Henderson 5480e219c499SRichard Hendersoncase "$capstone" in 5481e219c499SRichard Henderson "" | yes) 54828ca80760SRichard Henderson if $pkg_config capstone; then 5483e219c499SRichard Henderson capstone=system 5484e633a5c6SEric Blake elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 5485e219c499SRichard Henderson capstone=git 5486e219c499SRichard Henderson elif test -e "${source_path}/capstone/Makefile" ; then 5487e219c499SRichard Henderson capstone=internal 5488e219c499SRichard Henderson elif test -z "$capstone" ; then 5489e219c499SRichard Henderson capstone=no 5490e219c499SRichard Henderson else 5491e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel or git submodule" 5492e219c499SRichard Henderson fi 5493e219c499SRichard Henderson ;; 5494e219c499SRichard Henderson 5495e219c499SRichard Henderson system) 5496e219c499SRichard Henderson if ! $pkg_config capstone; then 5497e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel" 5498e219c499SRichard Henderson fi 5499e219c499SRichard Henderson ;; 5500e219c499SRichard Hendersonesac 5501e219c499SRichard Henderson 5502e219c499SRichard Hendersoncase "$capstone" in 5503e219c499SRichard Henderson git | internal) 5504e219c499SRichard Henderson if test "$capstone" = git; then 5505e219c499SRichard Henderson git_submodules="${git_submodules} capstone" 5506e219c499SRichard Henderson fi 5507e219c499SRichard Henderson mkdir -p capstone 550825211446SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -I${source_path}/capstone/include" 5509e219c499SRichard Henderson if test "$mingw32" = "yes"; then 5510e219c499SRichard Henderson LIBCAPSTONE=capstone.lib 5511e219c499SRichard Henderson else 5512e219c499SRichard Henderson LIBCAPSTONE=libcapstone.a 5513e219c499SRichard Henderson fi 551425211446SPaolo Bonzini libs_cpu="-L$PWD/capstone -lcapstone $libs_cpu" 5515e219c499SRichard Henderson ;; 5516e219c499SRichard Henderson 5517e219c499SRichard Henderson system) 55188ca80760SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" 551902f9135bSDaniel P. Berrangé libs_cpu="$($pkg_config --libs capstone) $libs_cpu" 5520e219c499SRichard Henderson ;; 5521e219c499SRichard Henderson 5522e219c499SRichard Henderson no) 5523e219c499SRichard Henderson ;; 5524e219c499SRichard Henderson *) 5525e219c499SRichard Henderson error_exit "Unknown state for capstone: $capstone" 5526e219c499SRichard Henderson ;; 5527e219c499SRichard Hendersonesac 55288ca80760SRichard Henderson 55298ca80760SRichard Henderson########################################## 55305f6b9e8fSBlue Swirl# check if we have fdatasync 55315f6b9e8fSBlue Swirl 55325f6b9e8fSBlue Swirlfdatasync=no 55335f6b9e8fSBlue Swirlcat > $TMPC << EOF 55345f6b9e8fSBlue Swirl#include <unistd.h> 5535d1722a27SAlexandre Raymondint main(void) { 5536d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 5537d1722a27SAlexandre Raymondreturn fdatasync(0); 5538d1722a27SAlexandre Raymond#else 5539e172fe11SStefan Weil#error Not supported 5540d1722a27SAlexandre Raymond#endif 5541d1722a27SAlexandre Raymond} 55425f6b9e8fSBlue SwirlEOF 55435f6b9e8fSBlue Swirlif compile_prog "" "" ; then 55445f6b9e8fSBlue Swirl fdatasync=yes 55455f6b9e8fSBlue Swirlfi 55465f6b9e8fSBlue Swirl 554794a420b1SStefan Hajnoczi########################################## 5548e78815a5SAndreas Färber# check if we have madvise 5549e78815a5SAndreas Färber 5550e78815a5SAndreas Färbermadvise=no 5551e78815a5SAndreas Färbercat > $TMPC << EOF 5552e78815a5SAndreas Färber#include <sys/types.h> 5553e78815a5SAndreas Färber#include <sys/mman.h> 5554832ce9c2SScott Wood#include <stddef.h> 5555e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 5556e78815a5SAndreas FärberEOF 5557e78815a5SAndreas Färberif compile_prog "" "" ; then 5558e78815a5SAndreas Färber madvise=yes 5559e78815a5SAndreas Färberfi 5560e78815a5SAndreas Färber 5561e78815a5SAndreas Färber########################################## 5562e78815a5SAndreas Färber# check if we have posix_madvise 5563e78815a5SAndreas Färber 5564e78815a5SAndreas Färberposix_madvise=no 5565e78815a5SAndreas Färbercat > $TMPC << EOF 5566e78815a5SAndreas Färber#include <sys/mman.h> 5567832ce9c2SScott Wood#include <stddef.h> 5568e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 5569e78815a5SAndreas FärberEOF 5570e78815a5SAndreas Färberif compile_prog "" "" ; then 5571e78815a5SAndreas Färber posix_madvise=yes 5572e78815a5SAndreas Färberfi 5573e78815a5SAndreas Färber 5574e78815a5SAndreas Färber########################################## 55759bc5a719SAndreas Gustafsson# check if we have posix_memalign() 55769bc5a719SAndreas Gustafsson 55779bc5a719SAndreas Gustafssonposix_memalign=no 55789bc5a719SAndreas Gustafssoncat > $TMPC << EOF 55799bc5a719SAndreas Gustafsson#include <stdlib.h> 55809bc5a719SAndreas Gustafssonint main(void) { 55819bc5a719SAndreas Gustafsson void *p; 55829bc5a719SAndreas Gustafsson return posix_memalign(&p, 8, 8); 55839bc5a719SAndreas Gustafsson} 55849bc5a719SAndreas GustafssonEOF 55859bc5a719SAndreas Gustafssonif compile_prog "" "" ; then 55869bc5a719SAndreas Gustafsson posix_memalign=yes 55879bc5a719SAndreas Gustafssonfi 55889bc5a719SAndreas Gustafsson 55899bc5a719SAndreas Gustafsson########################################## 55900a852417SPaul Durrant# check if we have posix_syslog 55910a852417SPaul Durrant 55920a852417SPaul Durrantposix_syslog=no 55930a852417SPaul Durrantcat > $TMPC << EOF 55940a852417SPaul Durrant#include <syslog.h> 55950a852417SPaul Durrantint main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; } 55960a852417SPaul DurrantEOF 55970a852417SPaul Durrantif compile_prog "" "" ; then 55980a852417SPaul Durrant posix_syslog=yes 55990a852417SPaul Durrantfi 56000a852417SPaul Durrant 56010a852417SPaul Durrant########################################## 5602401bc051SPeter Maydell# check if we have sem_timedwait 5603401bc051SPeter Maydell 5604401bc051SPeter Maydellsem_timedwait=no 5605401bc051SPeter Maydellcat > $TMPC << EOF 5606401bc051SPeter Maydell#include <semaphore.h> 5607811294b7SDaniel P. Berrangéint main(void) { sem_t s; struct timespec t = {0}; return sem_timedwait(&s, &t); } 5608401bc051SPeter MaydellEOF 5609401bc051SPeter Maydellif compile_prog "" "" ; then 5610401bc051SPeter Maydell sem_timedwait=yes 5611401bc051SPeter Maydellfi 5612401bc051SPeter Maydell 5613401bc051SPeter Maydell########################################## 56145c99fa37SKeno Fischer# check if we have strchrnul 56155c99fa37SKeno Fischer 56165c99fa37SKeno Fischerstrchrnul=no 56175c99fa37SKeno Fischercat > $TMPC << EOF 56185c99fa37SKeno Fischer#include <string.h> 56195c99fa37SKeno Fischerint main(void); 56205c99fa37SKeno Fischer// Use a haystack that the compiler shouldn't be able to constant fold 56215c99fa37SKeno Fischerchar *haystack = (char*)&main; 56225c99fa37SKeno Fischerint main(void) { return strchrnul(haystack, 'x') != &haystack[6]; } 56235c99fa37SKeno FischerEOF 56245c99fa37SKeno Fischerif compile_prog "" "" ; then 56255c99fa37SKeno Fischer strchrnul=yes 56265c99fa37SKeno Fischerfi 56275c99fa37SKeno Fischer 56288a792b03SJiufei Xue######################################### 56298a792b03SJiufei Xue# check if we have st_atim 56308a792b03SJiufei Xue 56318a792b03SJiufei Xuest_atim=no 56328a792b03SJiufei Xuecat > $TMPC << EOF 56338a792b03SJiufei Xue#include <sys/stat.h> 56348a792b03SJiufei Xue#include <stddef.h> 56358a792b03SJiufei Xueint main(void) { return offsetof(struct stat, st_atim); } 56368a792b03SJiufei XueEOF 56378a792b03SJiufei Xueif compile_prog "" "" ; then 56388a792b03SJiufei Xue st_atim=yes 56398a792b03SJiufei Xuefi 56408a792b03SJiufei Xue 56415c99fa37SKeno Fischer########################################## 564294a420b1SStefan Hajnoczi# check if trace backend exists 564394a420b1SStefan Hajnoczi 56445b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 564594a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 56465b808275SLluís Vilanova error_exit "invalid trace backends" \ 56475b808275SLluís Vilanova "Please choose supported trace backends." 564894a420b1SStefan Hajnoczifi 564994a420b1SStefan Hajnoczi 56507e24e92aSStefan Hajnoczi########################################## 56517e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 56525b808275SLluís Vilanovaif have_backend "ust"; then 56537e24e92aSStefan Hajnoczi cat > $TMPC << EOF 5654bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 56557e24e92aSStefan Hajnocziint main(void) { return 0; } 56567e24e92aSStefan HajnocziEOF 5657c79ed23dSFrancis Deslauriers if compile_prog "" "-Wl,--no-as-needed -ldl" ; then 5658bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 565989138857SStefan Weil lttng_ust_libs=$($pkg_config --libs lttng-ust) 56607e24e92aSStefan Hajnoczi else 5661c79ed23dSFrancis Deslauriers lttng_ust_libs="-llttng-ust -ldl" 5662bf15f63cSMohamad Gebai fi 5663bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 566489138857SStefan Weil urcu_bp_libs=$($pkg_config --libs liburcu-bp) 5665bf15f63cSMohamad Gebai else 5666bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 5667bf15f63cSMohamad Gebai fi 5668bf15f63cSMohamad Gebai 5669bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 5670bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 5671bf15f63cSMohamad Gebai else 5672bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 56737e24e92aSStefan Hajnoczi fi 56747e24e92aSStefan Hajnoczifi 5675b3d08c02SDaniel P. Berrange 5676b3d08c02SDaniel P. Berrange########################################## 5677b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 56785b808275SLluís Vilanovaif have_backend "dtrace"; then 5679b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 568076ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 5681b3d08c02SDaniel P. Berrange fi 5682c276b17dSDaniel P. Berrange trace_backend_stap="no" 5683c276b17dSDaniel P. Berrange if has 'stap' ; then 5684c276b17dSDaniel P. Berrange trace_backend_stap="yes" 5685c276b17dSDaniel P. Berrange fi 5686b3d08c02SDaniel P. Berrangefi 5687b3d08c02SDaniel P. Berrange 56887e24e92aSStefan Hajnoczi########################################## 5689519175a2SAlex Barcelo# check and set a backend for coroutine 5690d0e2fce5SAneesh Kumar K.V 56917c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 569233c53c54SDaniel P. Berrange# is sigcontext. On Windows the only valid backend is the Windows 569333c53c54SDaniel P. Berrange# specific one. 56947c2acc70SPeter Maydell 56957c2acc70SPeter Maydellucontext_works=no 5696d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 5697d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 5698d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 5699cdf84806SPeter Maydell#ifdef __stub_makecontext 5700cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 5701cdf84806SPeter Maydell#endif 570275cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 5703d0e2fce5SAneesh Kumar K.VEOF 5704d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 57057c2acc70SPeter Maydell ucontext_works=yes 5706d0e2fce5SAneesh Kumar K.V fi 5707519175a2SAlex Barcelofi 57087c2acc70SPeter Maydell 57097c2acc70SPeter Maydellif test "$coroutine" = ""; then 57107c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 57117c2acc70SPeter Maydell coroutine=win32 57127c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 57137c2acc70SPeter Maydell coroutine=ucontext 5714519175a2SAlex Barcelo else 57157c2acc70SPeter Maydell coroutine=sigaltstack 57167c2acc70SPeter Maydell fi 57177c2acc70SPeter Maydellelse 57187c2acc70SPeter Maydell case $coroutine in 57197c2acc70SPeter Maydell windows) 57207c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 57217c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 57227c2acc70SPeter Maydell fi 57237c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 57247c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 57257c2acc70SPeter Maydell coroutine=win32 57267c2acc70SPeter Maydell ;; 57277c2acc70SPeter Maydell ucontext) 57287c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 57297c2acc70SPeter Maydell feature_not_found "ucontext" 57307c2acc70SPeter Maydell fi 57317c2acc70SPeter Maydell ;; 573233c53c54SDaniel P. Berrange sigaltstack) 57337c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 57347c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 57357c2acc70SPeter Maydell fi 57367c2acc70SPeter Maydell ;; 57377c2acc70SPeter Maydell *) 573876ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 57397c2acc70SPeter Maydell ;; 57407c2acc70SPeter Maydell esac 5741d0e2fce5SAneesh Kumar K.Vfi 5742d0e2fce5SAneesh Kumar K.V 574370c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 574470c60c08SStefan Hajnoczi coroutine_pool=yes 574570c60c08SStefan Hajnoczifi 574670c60c08SStefan Hajnoczi 57477d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes"; then 57487d992e4dSPeter Lieven if test "$coroutine_pool" = "yes"; then 57497d992e4dSPeter Lieven echo "WARN: disabling coroutine pool for stack usage debugging" 57507d992e4dSPeter Lieven coroutine_pool=no 57517d992e4dSPeter Lieven fi 57527d992e4dSPeter Lievenfi 57537d992e4dSPeter Lieven 57541e4f6065SDaniele Buono################################################## 57551e4f6065SDaniele Buono# SafeStack 57561e4f6065SDaniele Buono 57571e4f6065SDaniele Buono 57581e4f6065SDaniele Buonoif test "$safe_stack" = "yes"; then 57591e4f6065SDaniele Buonocat > $TMPC << EOF 57601e4f6065SDaniele Buonoint main(int argc, char *argv[]) 57611e4f6065SDaniele Buono{ 57621e4f6065SDaniele Buono#if ! __has_feature(safe_stack) 57631e4f6065SDaniele Buono#error SafeStack Disabled 57641e4f6065SDaniele Buono#endif 57651e4f6065SDaniele Buono return 0; 57661e4f6065SDaniele Buono} 57671e4f6065SDaniele BuonoEOF 57681e4f6065SDaniele Buono flag="-fsanitize=safe-stack" 57691e4f6065SDaniele Buono # Check that safe-stack is supported and enabled. 57701e4f6065SDaniele Buono if compile_prog "-Werror $flag" "$flag"; then 57711e4f6065SDaniele Buono # Flag needed both at compilation and at linking 57721e4f6065SDaniele Buono QEMU_CFLAGS="$QEMU_CFLAGS $flag" 57731e4f6065SDaniele Buono QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 57741e4f6065SDaniele Buono else 57751e4f6065SDaniele Buono error_exit "SafeStack not supported by your compiler" 57761e4f6065SDaniele Buono fi 57771e4f6065SDaniele Buono if test "$coroutine" != "ucontext"; then 57781e4f6065SDaniele Buono error_exit "SafeStack is only supported by the coroutine backend ucontext" 57791e4f6065SDaniele Buono fi 57801e4f6065SDaniele Buonoelse 57811e4f6065SDaniele Buonocat > $TMPC << EOF 57821e4f6065SDaniele Buonoint main(int argc, char *argv[]) 57831e4f6065SDaniele Buono{ 57841e4f6065SDaniele Buono#if defined(__has_feature) 57851e4f6065SDaniele Buono#if __has_feature(safe_stack) 57861e4f6065SDaniele Buono#error SafeStack Enabled 57871e4f6065SDaniele Buono#endif 57881e4f6065SDaniele Buono#endif 57891e4f6065SDaniele Buono return 0; 57901e4f6065SDaniele Buono} 57911e4f6065SDaniele BuonoEOF 57921e4f6065SDaniele Buonoif test "$safe_stack" = "no"; then 57931e4f6065SDaniele Buono # Make sure that safe-stack is disabled 57941e4f6065SDaniele Buono if ! compile_prog "-Werror" ""; then 57951e4f6065SDaniele Buono # SafeStack was already enabled, try to explicitly remove the feature 57961e4f6065SDaniele Buono flag="-fno-sanitize=safe-stack" 57971e4f6065SDaniele Buono if ! compile_prog "-Werror $flag" "$flag"; then 57981e4f6065SDaniele Buono error_exit "Configure cannot disable SafeStack" 57991e4f6065SDaniele Buono fi 58001e4f6065SDaniele Buono QEMU_CFLAGS="$QEMU_CFLAGS $flag" 58011e4f6065SDaniele Buono QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 58021e4f6065SDaniele Buono fi 58031e4f6065SDaniele Buonoelse # "$safe_stack" = "" 58041e4f6065SDaniele Buono # Set safe_stack to yes or no based on pre-existing flags 58051e4f6065SDaniele Buono if compile_prog "-Werror" ""; then 58061e4f6065SDaniele Buono safe_stack="no" 58071e4f6065SDaniele Buono else 58081e4f6065SDaniele Buono safe_stack="yes" 58091e4f6065SDaniele Buono if test "$coroutine" != "ucontext"; then 58101e4f6065SDaniele Buono error_exit "SafeStack is only supported by the coroutine backend ucontext" 58111e4f6065SDaniele Buono fi 58121e4f6065SDaniele Buono fi 58131e4f6065SDaniele Buonofi 58141e4f6065SDaniele Buonofi 58157d992e4dSPeter Lieven 5816d0e2fce5SAneesh Kumar K.V########################################## 5817d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 5818d2042378SAneesh Kumar K.V 58194e1797f9SStefan Weilopen_by_handle_at=no 5820d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 5821d2042378SAneesh Kumar K.V#include <fcntl.h> 5822acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 5823acc55ba8SStefan Weil# error missing definition 5824acc55ba8SStefan Weil#else 582575cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 5826acc55ba8SStefan Weil#endif 5827d2042378SAneesh Kumar K.VEOF 5828d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 5829d2042378SAneesh Kumar K.V open_by_handle_at=yes 5830d2042378SAneesh Kumar K.Vfi 5831d2042378SAneesh Kumar K.V 5832e06a765eSHarsh Prateek Bora######################################## 5833e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 5834e06a765eSHarsh Prateek Bora 5835e06a765eSHarsh Prateek Boralinux_magic_h=no 5836e06a765eSHarsh Prateek Boracat > $TMPC << EOF 5837e06a765eSHarsh Prateek Bora#include <linux/magic.h> 5838e06a765eSHarsh Prateek Boraint main(void) { 583975cafad7SStefan Weil return 0; 5840e06a765eSHarsh Prateek Bora} 5841e06a765eSHarsh Prateek BoraEOF 5842e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 5843e06a765eSHarsh Prateek Bora linux_magic_h=yes 5844e06a765eSHarsh Prateek Borafi 5845e06a765eSHarsh Prateek Bora 58468ab1bf12SLuiz Capitulino######################################## 5847541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 58483f4349dcSKevin Wolf 58493f4349dcSKevin Wolfvalgrind_h=no 58503f4349dcSKevin Wolfcat > $TMPC << EOF 58513f4349dcSKevin Wolf#include <valgrind/valgrind.h> 58523f4349dcSKevin Wolfint main(void) { 58533f4349dcSKevin Wolf return 0; 58543f4349dcSKevin Wolf} 58553f4349dcSKevin WolfEOF 58563f4349dcSKevin Wolfif compile_prog "" "" ; then 58573f4349dcSKevin Wolf valgrind_h=yes 58583f4349dcSKevin Wolffi 58593f4349dcSKevin Wolf 58603f4349dcSKevin Wolf######################################## 58618ab1bf12SLuiz Capitulino# check if environ is declared 58628ab1bf12SLuiz Capitulino 58638ab1bf12SLuiz Capitulinohas_environ=no 58648ab1bf12SLuiz Capitulinocat > $TMPC << EOF 58658ab1bf12SLuiz Capitulino#include <unistd.h> 58668ab1bf12SLuiz Capitulinoint main(void) { 5867c075a723SBlue Swirl environ = 0; 58688ab1bf12SLuiz Capitulino return 0; 58698ab1bf12SLuiz Capitulino} 58708ab1bf12SLuiz CapitulinoEOF 58718ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 58728ab1bf12SLuiz Capitulino has_environ=yes 58738ab1bf12SLuiz Capitulinofi 58748ab1bf12SLuiz Capitulino 587576a347e1SRichard Henderson######################################## 587676a347e1SRichard Henderson# check if cpuid.h is usable. 587776a347e1SRichard Henderson 587876a347e1SRichard Hendersoncat > $TMPC << EOF 587976a347e1SRichard Henderson#include <cpuid.h> 588076a347e1SRichard Hendersonint main(void) { 5881774d566cSPeter Maydell unsigned a, b, c, d; 5882774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 5883774d566cSPeter Maydell 5884774d566cSPeter Maydell if (max >= 1) { 5885774d566cSPeter Maydell __cpuid(1, a, b, c, d); 5886774d566cSPeter Maydell } 5887774d566cSPeter Maydell 5888774d566cSPeter Maydell if (max >= 7) { 5889774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 5890774d566cSPeter Maydell } 5891774d566cSPeter Maydell 589276a347e1SRichard Henderson return 0; 589376a347e1SRichard Henderson} 589476a347e1SRichard HendersonEOF 589576a347e1SRichard Hendersonif compile_prog "" "" ; then 589676a347e1SRichard Henderson cpuid_h=yes 589776a347e1SRichard Hendersonfi 589876a347e1SRichard Henderson 58995dd89908SRichard Henderson########################################## 59005dd89908SRichard Henderson# avx2 optimization requirement check 59015dd89908SRichard Henderson# 59025dd89908SRichard Henderson# There is no point enabling this if cpuid.h is not usable, 59035dd89908SRichard Henderson# since we won't be able to select the new routines. 59045dd89908SRichard Henderson 5905e633a5c6SEric Blakeif test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then 59065dd89908SRichard Henderson cat > $TMPC << EOF 59075dd89908SRichard Henderson#pragma GCC push_options 59085dd89908SRichard Henderson#pragma GCC target("avx2") 59095dd89908SRichard Henderson#include <cpuid.h> 59105dd89908SRichard Henderson#include <immintrin.h> 59115dd89908SRichard Hendersonstatic int bar(void *a) { 59125dd89908SRichard Henderson __m256i x = *(__m256i *)a; 59135dd89908SRichard Henderson return _mm256_testz_si256(x, x); 59145dd89908SRichard Henderson} 59155dd89908SRichard Hendersonint main(int argc, char *argv[]) { return bar(argv[0]); } 59165dd89908SRichard HendersonEOF 59175dd89908SRichard Henderson if compile_object "" ; then 59185dd89908SRichard Henderson avx2_opt="yes" 591986583a07SLiam Merwick else 592086583a07SLiam Merwick avx2_opt="no" 59215dd89908SRichard Henderson fi 59225dd89908SRichard Hendersonfi 59235dd89908SRichard Henderson 59246b8cd447SRobert Hoo########################################## 59256b8cd447SRobert Hoo# avx512f optimization requirement check 59266b8cd447SRobert Hoo# 59276b8cd447SRobert Hoo# There is no point enabling this if cpuid.h is not usable, 59286b8cd447SRobert Hoo# since we won't be able to select the new routines. 59296b8cd447SRobert Hoo# by default, it is turned off. 59306b8cd447SRobert Hoo# if user explicitly want to enable it, check environment 59316b8cd447SRobert Hoo 59326b8cd447SRobert Hooif test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then 59336b8cd447SRobert Hoo cat > $TMPC << EOF 59346b8cd447SRobert Hoo#pragma GCC push_options 59356b8cd447SRobert Hoo#pragma GCC target("avx512f") 59366b8cd447SRobert Hoo#include <cpuid.h> 59376b8cd447SRobert Hoo#include <immintrin.h> 59386b8cd447SRobert Hoostatic int bar(void *a) { 59396b8cd447SRobert Hoo __m512i x = *(__m512i *)a; 59406b8cd447SRobert Hoo return _mm512_test_epi64_mask(x, x); 59416b8cd447SRobert Hoo} 59426b8cd447SRobert Hooint main(int argc, char *argv[]) 59436b8cd447SRobert Hoo{ 59446b8cd447SRobert Hoo return bar(argv[0]); 59456b8cd447SRobert Hoo} 59466b8cd447SRobert HooEOF 59476b8cd447SRobert Hoo if ! compile_object "" ; then 59486b8cd447SRobert Hoo avx512f_opt="no" 59496b8cd447SRobert Hoo fi 59506b8cd447SRobert Hooelse 59516b8cd447SRobert Hoo avx512f_opt="no" 59526b8cd447SRobert Hoofi 59536b8cd447SRobert Hoo 5954f540166bSRichard Henderson######################################## 5955f540166bSRichard Henderson# check if __[u]int128_t is usable. 5956f540166bSRichard Henderson 5957f540166bSRichard Hendersonint128=no 5958f540166bSRichard Hendersoncat > $TMPC << EOF 5959f540166bSRichard Henderson__int128_t a; 5960f540166bSRichard Henderson__uint128_t b; 5961f540166bSRichard Hendersonint main (void) { 5962f540166bSRichard Henderson a = a + b; 5963f540166bSRichard Henderson b = a * b; 5964464e3671SPeter Maydell a = a * a; 5965f540166bSRichard Henderson return 0; 5966f540166bSRichard Henderson} 5967f540166bSRichard HendersonEOF 5968f540166bSRichard Hendersonif compile_prog "" "" ; then 5969f540166bSRichard Henderson int128=yes 5970f540166bSRichard Hendersonfi 597176a347e1SRichard Henderson 59727ebee43eSRichard Henderson######################################### 59737ebee43eSRichard Henderson# See if 128-bit atomic operations are supported. 59747ebee43eSRichard Henderson 59757ebee43eSRichard Hendersonatomic128=no 59767ebee43eSRichard Hendersonif test "$int128" = "yes"; then 59777ebee43eSRichard Henderson cat > $TMPC << EOF 59787ebee43eSRichard Hendersonint main(void) 59797ebee43eSRichard Henderson{ 59807ebee43eSRichard Henderson unsigned __int128 x = 0, y = 0; 59817ebee43eSRichard Henderson y = __atomic_load_16(&x, 0); 59827ebee43eSRichard Henderson __atomic_store_16(&x, y, 0); 59837ebee43eSRichard Henderson __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0); 59847ebee43eSRichard Henderson return 0; 59857ebee43eSRichard Henderson} 59867ebee43eSRichard HendersonEOF 59877ebee43eSRichard Henderson if compile_prog "" "" ; then 59887ebee43eSRichard Henderson atomic128=yes 59897ebee43eSRichard Henderson fi 59907ebee43eSRichard Hendersonfi 59917ebee43eSRichard Henderson 5992e6cd4bb5SRichard Hendersoncmpxchg128=no 5993e633a5c6SEric Blakeif test "$int128" = yes && test "$atomic128" = no; then 5994e6cd4bb5SRichard Henderson cat > $TMPC << EOF 5995e6cd4bb5SRichard Hendersonint main(void) 5996e6cd4bb5SRichard Henderson{ 5997e6cd4bb5SRichard Henderson unsigned __int128 x = 0, y = 0; 5998e6cd4bb5SRichard Henderson __sync_val_compare_and_swap_16(&x, y, x); 5999e6cd4bb5SRichard Henderson return 0; 6000e6cd4bb5SRichard Henderson} 6001e6cd4bb5SRichard HendersonEOF 6002e6cd4bb5SRichard Henderson if compile_prog "" "" ; then 6003e6cd4bb5SRichard Henderson cmpxchg128=yes 6004e6cd4bb5SRichard Henderson fi 6005e6cd4bb5SRichard Hendersonfi 6006e6cd4bb5SRichard Henderson 6007df79b996SRichard Henderson######################################### 6008df79b996SRichard Henderson# See if 64-bit atomic operations are supported. 6009df79b996SRichard Henderson# Note that without __atomic builtins, we can only 6010df79b996SRichard Henderson# assume atomic loads/stores max at pointer size. 6011df79b996SRichard Henderson 6012df79b996SRichard Hendersoncat > $TMPC << EOF 6013df79b996SRichard Henderson#include <stdint.h> 6014df79b996SRichard Hendersonint main(void) 6015df79b996SRichard Henderson{ 6016df79b996SRichard Henderson uint64_t x = 0, y = 0; 6017df79b996SRichard Henderson#ifdef __ATOMIC_RELAXED 6018df79b996SRichard Henderson y = __atomic_load_8(&x, 0); 6019df79b996SRichard Henderson __atomic_store_8(&x, y, 0); 6020df79b996SRichard Henderson __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); 6021df79b996SRichard Henderson __atomic_exchange_8(&x, y, 0); 6022df79b996SRichard Henderson __atomic_fetch_add_8(&x, y, 0); 6023df79b996SRichard Henderson#else 6024df79b996SRichard Henderson typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; 6025df79b996SRichard Henderson __sync_lock_test_and_set(&x, y); 6026df79b996SRichard Henderson __sync_val_compare_and_swap(&x, y, 0); 6027df79b996SRichard Henderson __sync_fetch_and_add(&x, y); 6028df79b996SRichard Henderson#endif 6029df79b996SRichard Henderson return 0; 6030df79b996SRichard Henderson} 6031df79b996SRichard HendersonEOF 6032df79b996SRichard Hendersonif compile_prog "" "" ; then 6033df79b996SRichard Henderson atomic64=yes 6034df79b996SRichard Hendersonfi 6035df79b996SRichard Henderson 603626fffe29SEmilio G. Cota######################################### 603726fffe29SEmilio G. Cota# See if --dynamic-list is supported by the linker 603826fffe29SEmilio G. Cotald_dynamic_list="no" 603926fffe29SEmilio G. Cotaif test "$static" = "no" ; then 604026fffe29SEmilio G. Cota cat > $TMPTXT <<EOF 604126fffe29SEmilio G. Cota{ 604226fffe29SEmilio G. Cota foo; 604326fffe29SEmilio G. Cota}; 604426fffe29SEmilio G. CotaEOF 604526fffe29SEmilio G. Cota 604626fffe29SEmilio G. Cota cat > $TMPC <<EOF 604726fffe29SEmilio G. Cota#include <stdio.h> 604826fffe29SEmilio G. Cotavoid foo(void); 604926fffe29SEmilio G. Cota 605026fffe29SEmilio G. Cotavoid foo(void) 605126fffe29SEmilio G. Cota{ 605226fffe29SEmilio G. Cota printf("foo\n"); 605326fffe29SEmilio G. Cota} 605426fffe29SEmilio G. Cota 605526fffe29SEmilio G. Cotaint main(void) 605626fffe29SEmilio G. Cota{ 605726fffe29SEmilio G. Cota foo(); 605826fffe29SEmilio G. Cota return 0; 605926fffe29SEmilio G. Cota} 606026fffe29SEmilio G. CotaEOF 606126fffe29SEmilio G. Cota 606226fffe29SEmilio G. Cota if compile_prog "" "-Wl,--dynamic-list=$TMPTXT" ; then 606326fffe29SEmilio G. Cota ld_dynamic_list="yes" 606426fffe29SEmilio G. Cota fi 606526fffe29SEmilio G. Cotafi 606626fffe29SEmilio G. Cota 606726fffe29SEmilio G. Cota######################################### 606826fffe29SEmilio G. Cota# See if -exported_symbols_list is supported by the linker 606926fffe29SEmilio G. Cota 607026fffe29SEmilio G. Cotald_exported_symbols_list="no" 607126fffe29SEmilio G. Cotaif test "$static" = "no" ; then 607226fffe29SEmilio G. Cota cat > $TMPTXT <<EOF 607326fffe29SEmilio G. Cota _foo 607426fffe29SEmilio G. CotaEOF 607526fffe29SEmilio G. Cota 607626fffe29SEmilio G. Cota if compile_prog "" "-Wl,-exported_symbols_list,$TMPTXT" ; then 607726fffe29SEmilio G. Cota ld_exported_symbols_list="yes" 607826fffe29SEmilio G. Cota fi 607926fffe29SEmilio G. Cotafi 608026fffe29SEmilio G. Cota 608126fffe29SEmilio G. Cotaif test "$plugins" = "yes" && 608226fffe29SEmilio G. Cota test "$ld_dynamic_list" = "no" && 608326fffe29SEmilio G. Cota test "$ld_exported_symbols_list" = "no" ; then 608426fffe29SEmilio G. Cota error_exit \ 608526fffe29SEmilio G. Cota "Plugin support requires dynamic linking and specifying a set of symbols " \ 608626fffe29SEmilio G. Cota "that are exported to plugins. Unfortunately your linker doesn't " \ 608726fffe29SEmilio G. Cota "support the flag (--dynamic-list or -exported_symbols_list) used " \ 608826fffe29SEmilio G. Cota "for this purpose. You can't build with --static." 608926fffe29SEmilio G. Cotafi 609026fffe29SEmilio G. Cota 60911e6e9acaSRichard Henderson######################################## 6092db8aaae8SRichard Henderson# See if __attribute__((alias)) is supported. 6093db8aaae8SRichard Henderson# This false for Xcode 9, but has been remedied for Xcode 10. 6094db8aaae8SRichard Henderson# Unfortunately, travis uses Xcode 9 by default. 6095db8aaae8SRichard Henderson 6096db8aaae8SRichard Hendersonattralias=no 6097db8aaae8SRichard Hendersoncat > $TMPC << EOF 6098db8aaae8SRichard Hendersonint x = 1; 6099db8aaae8SRichard Hendersonextern const int y __attribute__((alias("x"))); 6100db8aaae8SRichard Hendersonint main(void) { return 0; } 6101db8aaae8SRichard HendersonEOF 6102db8aaae8SRichard Hendersonif compile_prog "" "" ; then 6103db8aaae8SRichard Henderson attralias=yes 6104db8aaae8SRichard Hendersonfi 6105db8aaae8SRichard Henderson 6106db8aaae8SRichard Henderson######################################## 61071e6e9acaSRichard Henderson# check if getauxval is available. 61081e6e9acaSRichard Henderson 61091e6e9acaSRichard Hendersongetauxval=no 61101e6e9acaSRichard Hendersoncat > $TMPC << EOF 61111e6e9acaSRichard Henderson#include <sys/auxv.h> 61121e6e9acaSRichard Hendersonint main(void) { 61131e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 61141e6e9acaSRichard Henderson} 61151e6e9acaSRichard HendersonEOF 61161e6e9acaSRichard Hendersonif compile_prog "" "" ; then 61171e6e9acaSRichard Henderson getauxval=yes 61181e6e9acaSRichard Hendersonfi 61191e6e9acaSRichard Henderson 6120fd0e6053SJohn Snow######################################## 6121fd0e6053SJohn Snow# check if ccache is interfering with 6122fd0e6053SJohn Snow# semantic analysis of macros 6123fd0e6053SJohn Snow 61245e4dfd3dSJohn Snowunset CCACHE_CPP2 6125fd0e6053SJohn Snowccache_cpp2=no 6126fd0e6053SJohn Snowcat > $TMPC << EOF 6127fd0e6053SJohn Snowstatic const int Z = 1; 6128fd0e6053SJohn Snow#define fn() ({ Z; }) 6129fd0e6053SJohn Snow#define TAUT(X) ((X) == Z) 6130fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y) 6131fd0e6053SJohn Snow#define ID(X) (X) 6132fd0e6053SJohn Snowint main(int argc, char *argv[]) 6133fd0e6053SJohn Snow{ 6134fd0e6053SJohn Snow int x = 0, y = 0; 6135fd0e6053SJohn Snow x = ID(x); 6136fd0e6053SJohn Snow x = fn(); 6137fd0e6053SJohn Snow fn(); 6138fd0e6053SJohn Snow if (PAREN(x, y)) return 0; 6139fd0e6053SJohn Snow if (TAUT(Z)) return 0; 6140fd0e6053SJohn Snow return 0; 6141fd0e6053SJohn Snow} 6142fd0e6053SJohn SnowEOF 6143fd0e6053SJohn Snow 6144fd0e6053SJohn Snowif ! compile_object "-Werror"; then 6145fd0e6053SJohn Snow ccache_cpp2=yes 6146fd0e6053SJohn Snowfi 6147fd0e6053SJohn Snow 6148b553a042SJohn Snow################################################# 6149b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE. 6150b553a042SJohn Snow 6151b553a042SJohn Snowif test "$fortify_source" != "no"; then 6152b553a042SJohn Snow if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 6153b553a042SJohn Snow fortify_source="no"; 6154e189091fSPeter Maydell elif test -n "$cxx" && has $cxx && 6155cfcc7c14SJohn Snow echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 6156b553a042SJohn Snow fortify_source="no"; 6157b553a042SJohn Snow else 6158b553a042SJohn Snow fortify_source="yes" 6159b553a042SJohn Snow fi 6160b553a042SJohn Snowfi 6161b553a042SJohn Snow 61621efad060SFam Zheng############################################### 61631efad060SFam Zheng# Check if copy_file_range is provided by glibc 61641efad060SFam Zhenghave_copy_file_range=no 61651efad060SFam Zhengcat > $TMPC << EOF 61661efad060SFam Zheng#include <unistd.h> 61671efad060SFam Zhengint main(void) { 61681efad060SFam Zheng copy_file_range(0, NULL, 0, NULL, 0, 0); 61691efad060SFam Zheng return 0; 61701efad060SFam Zheng} 61711efad060SFam ZhengEOF 61721efad060SFam Zhengif compile_prog "" "" ; then 61731efad060SFam Zheng have_copy_file_range=yes 61741efad060SFam Zhengfi 61751efad060SFam Zheng 6176d2042378SAneesh Kumar K.V########################################## 6177277abf15SJan Vesely# check if struct fsxattr is available via linux/fs.h 6178277abf15SJan Vesely 6179277abf15SJan Veselyhave_fsxattr=no 6180277abf15SJan Veselycat > $TMPC << EOF 6181277abf15SJan Vesely#include <linux/fs.h> 6182277abf15SJan Veselystruct fsxattr foo; 6183277abf15SJan Veselyint main(void) { 6184277abf15SJan Vesely return 0; 6185277abf15SJan Vesely} 6186277abf15SJan VeselyEOF 6187277abf15SJan Veselyif compile_prog "" "" ; then 6188277abf15SJan Vesely have_fsxattr=yes 6189277abf15SJan Veselyfi 6190277abf15SJan Vesely 6191b66e10e4SPeter Maydell########################################## 6192a40161cbSPaolo Bonzini# check for usable membarrier system call 6193a40161cbSPaolo Bonziniif test "$membarrier" = "yes"; then 6194a40161cbSPaolo Bonzini have_membarrier=no 6195a40161cbSPaolo Bonzini if test "$mingw32" = "yes" ; then 6196a40161cbSPaolo Bonzini have_membarrier=yes 6197a40161cbSPaolo Bonzini elif test "$linux" = "yes" ; then 6198a40161cbSPaolo Bonzini cat > $TMPC << EOF 6199a40161cbSPaolo Bonzini #include <linux/membarrier.h> 6200a40161cbSPaolo Bonzini #include <sys/syscall.h> 6201a40161cbSPaolo Bonzini #include <unistd.h> 6202a40161cbSPaolo Bonzini #include <stdlib.h> 6203a40161cbSPaolo Bonzini int main(void) { 6204a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0); 6205a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0); 6206a40161cbSPaolo Bonzini exit(0); 6207a40161cbSPaolo Bonzini } 6208a40161cbSPaolo BonziniEOF 6209a40161cbSPaolo Bonzini if compile_prog "" "" ; then 6210a40161cbSPaolo Bonzini have_membarrier=yes 6211a40161cbSPaolo Bonzini fi 6212a40161cbSPaolo Bonzini fi 6213a40161cbSPaolo Bonzini if test "$have_membarrier" = "no"; then 6214a40161cbSPaolo Bonzini feature_not_found "membarrier" "membarrier system call not available" 6215a40161cbSPaolo Bonzini fi 6216a40161cbSPaolo Bonzinielse 6217a40161cbSPaolo Bonzini # Do not enable it by default even for Mingw32, because it doesn't 6218a40161cbSPaolo Bonzini # work on Wine. 6219a40161cbSPaolo Bonzini membarrier=no 6220a40161cbSPaolo Bonzinifi 6221a40161cbSPaolo Bonzini 6222a40161cbSPaolo Bonzini########################################## 6223b66e10e4SPeter Maydell# check if rtnetlink.h exists and is useful 6224575b22b1SLaurent Vivierhave_rtnetlink=no 6225575b22b1SLaurent Viviercat > $TMPC << EOF 6226575b22b1SLaurent Vivier#include <linux/rtnetlink.h> 6227575b22b1SLaurent Vivierint main(void) { 6228575b22b1SLaurent Vivier return IFLA_PROTO_DOWN; 6229575b22b1SLaurent Vivier} 6230575b22b1SLaurent VivierEOF 6231575b22b1SLaurent Vivierif compile_prog "" "" ; then 6232575b22b1SLaurent Vivier have_rtnetlink=yes 6233575b22b1SLaurent Vivierfi 6234575b22b1SLaurent Vivier 62356a02c806SStefan Hajnoczi########################################## 62366a02c806SStefan Hajnoczi# check for usable AF_VSOCK environment 62376a02c806SStefan Hajnoczihave_af_vsock=no 62386a02c806SStefan Hajnoczicat > $TMPC << EOF 62396a02c806SStefan Hajnoczi#include <errno.h> 62406a02c806SStefan Hajnoczi#include <sys/types.h> 62416a02c806SStefan Hajnoczi#include <sys/socket.h> 62426a02c806SStefan Hajnoczi#if !defined(AF_VSOCK) 62436a02c806SStefan Hajnoczi# error missing AF_VSOCK flag 62446a02c806SStefan Hajnoczi#endif 62456a02c806SStefan Hajnoczi#include <linux/vm_sockets.h> 62466a02c806SStefan Hajnocziint main(void) { 62476a02c806SStefan Hajnoczi int sock, ret; 62486a02c806SStefan Hajnoczi struct sockaddr_vm svm; 62496a02c806SStefan Hajnoczi socklen_t len = sizeof(svm); 62506a02c806SStefan Hajnoczi sock = socket(AF_VSOCK, SOCK_STREAM, 0); 62516a02c806SStefan Hajnoczi ret = getpeername(sock, (struct sockaddr *)&svm, &len); 62526a02c806SStefan Hajnoczi if ((ret == -1) && (errno == ENOTCONN)) { 62536a02c806SStefan Hajnoczi return 0; 62546a02c806SStefan Hajnoczi } 62556a02c806SStefan Hajnoczi return -1; 62566a02c806SStefan Hajnoczi} 62576a02c806SStefan HajnocziEOF 62586a02c806SStefan Hajnocziif compile_prog "" "" ; then 62596a02c806SStefan Hajnoczi have_af_vsock=yes 62606a02c806SStefan Hajnoczifi 62616a02c806SStefan Hajnoczi 6262f0d92b56SLongpeng(Mike)########################################## 6263f0d92b56SLongpeng(Mike)# check for usable AF_ALG environment 62644f67366eSThomas Huthhave_afalg=no 6265f0d92b56SLongpeng(Mike)cat > $TMPC << EOF 6266f0d92b56SLongpeng(Mike)#include <errno.h> 6267f0d92b56SLongpeng(Mike)#include <sys/types.h> 6268f0d92b56SLongpeng(Mike)#include <sys/socket.h> 6269f0d92b56SLongpeng(Mike)#include <linux/if_alg.h> 6270f0d92b56SLongpeng(Mike)int main(void) { 6271f0d92b56SLongpeng(Mike) int sock; 6272f0d92b56SLongpeng(Mike) sock = socket(AF_ALG, SOCK_SEQPACKET, 0); 6273f0d92b56SLongpeng(Mike) return sock; 6274f0d92b56SLongpeng(Mike)} 6275f0d92b56SLongpeng(Mike)EOF 6276f0d92b56SLongpeng(Mike)if compile_prog "" "" ; then 6277f0d92b56SLongpeng(Mike) have_afalg=yes 6278f0d92b56SLongpeng(Mike)fi 6279f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" 6280f0d92b56SLongpeng(Mike)then 6281f0d92b56SLongpeng(Mike) if test "$have_afalg" != "yes" 6282f0d92b56SLongpeng(Mike) then 6283f0d92b56SLongpeng(Mike) error_exit "AF_ALG requested but could not be detected" 6284f0d92b56SLongpeng(Mike) fi 6285f0d92b56SLongpeng(Mike)fi 6286f0d92b56SLongpeng(Mike) 6287f0d92b56SLongpeng(Mike) 62886969ec6cSJames Clarke################################################# 6289c97d6d2cSSergio Andres Gomez Del Real# Check to see if we have the Hypervisor framework 6290d2d08522SPeter Maydellif [ "$darwin" = "yes" ] ; then 6291c97d6d2cSSergio Andres Gomez Del Real cat > $TMPC << EOF 6292c97d6d2cSSergio Andres Gomez Del Real#include <Hypervisor/hv.h> 6293c97d6d2cSSergio Andres Gomez Del Realint main() { return 0;} 6294c97d6d2cSSergio Andres Gomez Del RealEOF 6295c97d6d2cSSergio Andres Gomez Del Real if ! compile_object ""; then 6296c97d6d2cSSergio Andres Gomez Del Real hvf='no' 6297c97d6d2cSSergio Andres Gomez Del Real else 6298c97d6d2cSSergio Andres Gomez Del Real hvf='yes' 6299db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-framework Hypervisor $QEMU_LDFLAGS" 6300c97d6d2cSSergio Andres Gomez Del Real fi 6301c97d6d2cSSergio Andres Gomez Del Realfi 6302c97d6d2cSSergio Andres Gomez Del Real 6303c97d6d2cSSergio Andres Gomez Del Real################################################# 63046969ec6cSJames Clarke# Sparc implicitly links with --relax, which is 63056969ec6cSJames Clarke# incompatible with -r, so --no-relax should be 63066969ec6cSJames Clarke# given. It does no harm to give it on other 63076969ec6cSJames Clarke# platforms too. 63086969ec6cSJames Clarke 63096969ec6cSJames Clarke# Note: the prototype is needed since QEMU_CFLAGS 63106969ec6cSJames Clarke# contains -Wmissing-prototypes 63116969ec6cSJames Clarkecat > $TMPC << EOF 63126969ec6cSJames Clarkeextern int foo(void); 63136969ec6cSJames Clarkeint foo(void) { return 0; } 63146969ec6cSJames ClarkeEOF 63156969ec6cSJames Clarkeif ! compile_object ""; then 63166969ec6cSJames Clarke error_exit "Failed to compile object file for LD_REL_FLAGS test" 63176969ec6cSJames Clarkefi 63187ecf44a5SPaolo Bonzinifor i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do 63197ecf44a5SPaolo Bonzini if do_cc -nostdlib $i -o $TMPMO $TMPO; then 63207ecf44a5SPaolo Bonzini LD_REL_FLAGS=$i 63217ecf44a5SPaolo Bonzini break 63227ecf44a5SPaolo Bonzini fi 63237ecf44a5SPaolo Bonzinidone 63247ecf44a5SPaolo Bonziniif test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then 63257ecf44a5SPaolo Bonzini feature_not_found "modules" "Cannot find how to build relocatable objects" 63266969ec6cSJames Clarkefi 63276969ec6cSJames Clarke 6328277abf15SJan Vesely########################################## 63294d04351fSChristopher Covington# check for sysmacros.h 63304d04351fSChristopher Covington 63314d04351fSChristopher Covingtonhave_sysmacros=no 63324d04351fSChristopher Covingtoncat > $TMPC << EOF 63334d04351fSChristopher Covington#include <sys/sysmacros.h> 63344d04351fSChristopher Covingtonint main(void) { 63354d04351fSChristopher Covington return makedev(0, 0); 63364d04351fSChristopher Covington} 63374d04351fSChristopher CovingtonEOF 63384d04351fSChristopher Covingtonif compile_prog "" "" ; then 63394d04351fSChristopher Covington have_sysmacros=yes 63404d04351fSChristopher Covingtonfi 63414d04351fSChristopher Covington 63424d04351fSChristopher Covington########################################## 634349e00a18SAndreas Grapentin# check for _Static_assert() 634449e00a18SAndreas Grapentin 634549e00a18SAndreas Grapentinhave_static_assert=no 634649e00a18SAndreas Grapentincat > $TMPC << EOF 634749e00a18SAndreas Grapentin_Static_assert(1, "success"); 634849e00a18SAndreas Grapentinint main(void) { 634949e00a18SAndreas Grapentin return 0; 635049e00a18SAndreas Grapentin} 635149e00a18SAndreas GrapentinEOF 635249e00a18SAndreas Grapentinif compile_prog "" "" ; then 635349e00a18SAndreas Grapentin have_static_assert=yes 635449e00a18SAndreas Grapentinfi 635549e00a18SAndreas Grapentin 635649e00a18SAndreas Grapentin########################################## 6357e674605fSTomáš Golembiovský# check for utmpx.h, it is missing e.g. on OpenBSD 6358e674605fSTomáš Golembiovský 6359e674605fSTomáš Golembiovskýhave_utmpx=no 6360e674605fSTomáš Golembiovskýcat > $TMPC << EOF 6361e674605fSTomáš Golembiovský#include <utmpx.h> 6362e674605fSTomáš Golembiovskýstruct utmpx user_info; 6363e674605fSTomáš Golembiovskýint main(void) { 6364e674605fSTomáš Golembiovský return 0; 6365e674605fSTomáš Golembiovský} 6366e674605fSTomáš GolembiovskýEOF 6367e674605fSTomáš Golembiovskýif compile_prog "" "" ; then 6368e674605fSTomáš Golembiovský have_utmpx=yes 6369e674605fSTomáš Golembiovskýfi 6370e674605fSTomáš Golembiovský 6371e674605fSTomáš Golembiovský########################################## 6372db1ed1abSRichard Henderson# check for getrandom() 6373db1ed1abSRichard Henderson 6374db1ed1abSRichard Hendersonhave_getrandom=no 6375db1ed1abSRichard Hendersoncat > $TMPC << EOF 6376db1ed1abSRichard Henderson#include <sys/random.h> 6377db1ed1abSRichard Hendersonint main(void) { 6378db1ed1abSRichard Henderson return getrandom(0, 0, GRND_NONBLOCK); 6379db1ed1abSRichard Henderson} 6380db1ed1abSRichard HendersonEOF 6381db1ed1abSRichard Hendersonif compile_prog "" "" ; then 6382db1ed1abSRichard Henderson have_getrandom=yes 6383db1ed1abSRichard Hendersonfi 6384db1ed1abSRichard Henderson 6385db1ed1abSRichard Henderson########################################## 6386247724cbSMarc-André Lureau# checks for sanitizers 6387247724cbSMarc-André Lureau 6388247724cbSMarc-André Lureauhave_asan=no 6389247724cbSMarc-André Lureauhave_ubsan=no 6390d83414e1SMarc-André Lureauhave_asan_iface_h=no 6391d83414e1SMarc-André Lureauhave_asan_iface_fiber=no 6392247724cbSMarc-André Lureau 6393247724cbSMarc-André Lureauif test "$sanitizers" = "yes" ; then 6394b9f44da2SMarc-André Lureau write_c_skeleton 6395247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then 6396247724cbSMarc-André Lureau have_asan=yes 6397247724cbSMarc-André Lureau fi 6398b9f44da2SMarc-André Lureau 6399b9f44da2SMarc-André Lureau # we could use a simple skeleton for flags checks, but this also 6400b9f44da2SMarc-André Lureau # detect the static linking issue of ubsan, see also: 6401b9f44da2SMarc-André Lureau # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285 6402b9f44da2SMarc-André Lureau cat > $TMPC << EOF 6403b9f44da2SMarc-André Lureau#include <stdlib.h> 6404b9f44da2SMarc-André Lureauint main(void) { 6405b9f44da2SMarc-André Lureau void *tmp = malloc(10); 6406f2dfe54cSLeonid Bloch if (tmp != NULL) { 6407b9f44da2SMarc-André Lureau return *(int *)(tmp + 2); 6408b9f44da2SMarc-André Lureau } 6409d1abf3fcSOlaf Hering return 1; 6410f2dfe54cSLeonid Bloch} 6411b9f44da2SMarc-André LureauEOF 6412247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then 6413247724cbSMarc-André Lureau have_ubsan=yes 6414247724cbSMarc-André Lureau fi 6415d83414e1SMarc-André Lureau 6416d83414e1SMarc-André Lureau if check_include "sanitizer/asan_interface.h" ; then 6417d83414e1SMarc-André Lureau have_asan_iface_h=yes 6418d83414e1SMarc-André Lureau fi 6419d83414e1SMarc-André Lureau 6420d83414e1SMarc-André Lureau cat > $TMPC << EOF 6421d83414e1SMarc-André Lureau#include <sanitizer/asan_interface.h> 6422d83414e1SMarc-André Lureauint main(void) { 6423d83414e1SMarc-André Lureau __sanitizer_start_switch_fiber(0, 0, 0); 6424d83414e1SMarc-André Lureau return 0; 6425d83414e1SMarc-André Lureau} 6426d83414e1SMarc-André LureauEOF 6427d83414e1SMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" "" ; then 6428d83414e1SMarc-André Lureau have_asan_iface_fiber=yes 6429d83414e1SMarc-André Lureau fi 6430247724cbSMarc-André Lureaufi 6431247724cbSMarc-André Lureau 6432247724cbSMarc-André Lureau########################################## 6433adc28027SAlexander Bulekov# checks for fuzzer 6434adc28027SAlexander Bulekovif test "$fuzzing" = "yes" ; then 6435adc28027SAlexander Bulekov write_c_fuzzer_skeleton 6436dd016265SAlexander Bulekov if compile_prog "$CPU_CFLAGS -Werror -fsanitize=fuzzer" ""; then 6437adc28027SAlexander Bulekov have_fuzzer=yes 6438adc28027SAlexander Bulekov fi 6439adc28027SAlexander Bulekovfi 6440adc28027SAlexander Bulekov 64410aebab04SLingfeng Yang# Thread sanitizer is, for now, much noisier than the other sanitizers; 64420aebab04SLingfeng Yang# keep it separate until that is not the case. 64430aebab04SLingfeng Yangif test "$tsan" = "yes" && test "$sanitizers" = "yes"; then 64440aebab04SLingfeng Yang error_exit "TSAN is not supported with other sanitiziers." 64450aebab04SLingfeng Yangfi 64460aebab04SLingfeng Yanghave_tsan=no 64470aebab04SLingfeng Yanghave_tsan_iface_fiber=no 64480aebab04SLingfeng Yangif test "$tsan" = "yes" ; then 64490aebab04SLingfeng Yang write_c_skeleton 64500aebab04SLingfeng Yang if compile_prog "$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then 64510aebab04SLingfeng Yang have_tsan=yes 64520aebab04SLingfeng Yang fi 64530aebab04SLingfeng Yang cat > $TMPC << EOF 64540aebab04SLingfeng Yang#include <sanitizer/tsan_interface.h> 64550aebab04SLingfeng Yangint main(void) { 64560aebab04SLingfeng Yang __tsan_create_fiber(0); 64570aebab04SLingfeng Yang return 0; 64580aebab04SLingfeng Yang} 64590aebab04SLingfeng YangEOF 64600aebab04SLingfeng Yang if compile_prog "$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then 64610aebab04SLingfeng Yang have_tsan_iface_fiber=yes 64620aebab04SLingfeng Yang fi 64630aebab04SLingfeng Yangfi 64640aebab04SLingfeng Yang 6465adc28027SAlexander Bulekov########################################## 646617824406SJunyan He# check for libpmem 646717824406SJunyan He 646817824406SJunyan Heif test "$libpmem" != "no"; then 646917824406SJunyan He if $pkg_config --exists "libpmem"; then 647017824406SJunyan He libpmem="yes" 647117824406SJunyan He libpmem_libs=$($pkg_config --libs libpmem) 647217824406SJunyan He libpmem_cflags=$($pkg_config --cflags libpmem) 647317824406SJunyan He libs_softmmu="$libs_softmmu $libpmem_libs" 647417824406SJunyan He QEMU_CFLAGS="$QEMU_CFLAGS $libpmem_cflags" 647517824406SJunyan He else 647617824406SJunyan He if test "$libpmem" = "yes" ; then 647717824406SJunyan He feature_not_found "libpmem" "Install nvml or pmdk" 647817824406SJunyan He fi 647917824406SJunyan He libpmem="no" 648017824406SJunyan He fi 648117824406SJunyan Hefi 648217824406SJunyan He 648317824406SJunyan He########################################## 648421b2eca6SJingqi Liu# check for libdaxctl 648521b2eca6SJingqi Liu 648621b2eca6SJingqi Liuif test "$libdaxctl" != "no"; then 648721b2eca6SJingqi Liu if $pkg_config --atleast-version=57 "libdaxctl"; then 648821b2eca6SJingqi Liu libdaxctl="yes" 648921b2eca6SJingqi Liu libdaxctl_libs=$($pkg_config --libs libdaxctl) 649021b2eca6SJingqi Liu libdaxctl_cflags=$($pkg_config --cflags libdaxctl) 649121b2eca6SJingqi Liu libs_softmmu="$libs_softmmu $libdaxctl_libs" 649221b2eca6SJingqi Liu QEMU_CFLAGS="$QEMU_CFLAGS $libdaxctl_cflags" 649321b2eca6SJingqi Liu else 649421b2eca6SJingqi Liu if test "$libdaxctl" = "yes" ; then 649521b2eca6SJingqi Liu feature_not_found "libdaxctl" "Install libdaxctl" 649621b2eca6SJingqi Liu fi 649721b2eca6SJingqi Liu libdaxctl="no" 649821b2eca6SJingqi Liu fi 649921b2eca6SJingqi Liufi 650021b2eca6SJingqi Liu 650121b2eca6SJingqi Liu########################################## 6502675b9b53SMarc-André Lureau# check for slirp 6503675b9b53SMarc-André Lureau 6504d599938aSLaurent Vivier# slirp is only required when building softmmu targets 6505d599938aSLaurent Vivierif test -z "$slirp" -a "$softmmu" != "yes" ; then 6506d599938aSLaurent Vivier slirp="no" 6507d599938aSLaurent Vivierfi 6508d599938aSLaurent Vivier 6509675b9b53SMarc-André Lureaucase "$slirp" in 6510675b9b53SMarc-André Lureau "" | yes) 6511675b9b53SMarc-André Lureau if $pkg_config slirp; then 6512675b9b53SMarc-André Lureau slirp=system 65137c57bdd8SMarc-André Lureau elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 65147c57bdd8SMarc-André Lureau slirp=git 6515675b9b53SMarc-André Lureau elif test -e "${source_path}/slirp/Makefile" ; then 6516675b9b53SMarc-André Lureau slirp=internal 6517675b9b53SMarc-André Lureau elif test -z "$slirp" ; then 6518675b9b53SMarc-André Lureau slirp=no 6519675b9b53SMarc-André Lureau else 6520675b9b53SMarc-André Lureau feature_not_found "slirp" "Install slirp devel or git submodule" 6521675b9b53SMarc-André Lureau fi 6522675b9b53SMarc-André Lureau ;; 6523675b9b53SMarc-André Lureau 6524675b9b53SMarc-André Lureau system) 6525675b9b53SMarc-André Lureau if ! $pkg_config slirp; then 6526675b9b53SMarc-André Lureau feature_not_found "slirp" "Install slirp devel" 6527675b9b53SMarc-André Lureau fi 6528675b9b53SMarc-André Lureau ;; 6529675b9b53SMarc-André Lureauesac 6530675b9b53SMarc-André Lureau 6531675b9b53SMarc-André Lureaucase "$slirp" in 65327c57bdd8SMarc-André Lureau git | internal) 65337c57bdd8SMarc-André Lureau if test "$slirp" = git; then 65347c57bdd8SMarc-André Lureau git_submodules="${git_submodules} slirp" 65357c57bdd8SMarc-André Lureau fi 6536675b9b53SMarc-André Lureau mkdir -p slirp 653725211446SPaolo Bonzini slirp_cflags="-I${source_path}/slirp/src -I$PWD/slirp/src" 653825211446SPaolo Bonzini slirp_libs="-L$PWD/slirp -lslirp" 6539b965e8c5SPaolo Bonzini if test "$mingw32" = "yes" ; then 6540b965e8c5SPaolo Bonzini slirp_libs="$slirp_libs -lws2_32 -liphlpapi" 6541b965e8c5SPaolo Bonzini fi 6542675b9b53SMarc-André Lureau ;; 6543675b9b53SMarc-André Lureau 6544675b9b53SMarc-André Lureau system) 6545675b9b53SMarc-André Lureau slirp_version=$($pkg_config --modversion slirp 2>/dev/null) 6546675b9b53SMarc-André Lureau slirp_cflags=$($pkg_config --cflags slirp 2>/dev/null) 6547675b9b53SMarc-André Lureau slirp_libs=$($pkg_config --libs slirp 2>/dev/null) 6548675b9b53SMarc-André Lureau ;; 6549675b9b53SMarc-André Lureau 6550675b9b53SMarc-André Lureau no) 6551675b9b53SMarc-André Lureau ;; 6552675b9b53SMarc-André Lureau *) 6553675b9b53SMarc-André Lureau error_exit "Unknown state for slirp: $slirp" 6554675b9b53SMarc-André Lureau ;; 6555675b9b53SMarc-André Lureauesac 6556675b9b53SMarc-André Lureau 655754e7aac0SAlexey Krasikov########################################## 655854e7aac0SAlexey Krasikov# check for usable __NR_keyctl syscall 655954e7aac0SAlexey Krasikov 656054e7aac0SAlexey Krasikovif test "$linux" = "yes" ; then 656154e7aac0SAlexey Krasikov 656254e7aac0SAlexey Krasikov have_keyring=no 656354e7aac0SAlexey Krasikov cat > $TMPC << EOF 656454e7aac0SAlexey Krasikov#include <errno.h> 656554e7aac0SAlexey Krasikov#include <asm/unistd.h> 656654e7aac0SAlexey Krasikov#include <linux/keyctl.h> 656754e7aac0SAlexey Krasikov#include <unistd.h> 656854e7aac0SAlexey Krasikovint main(void) { 656954e7aac0SAlexey Krasikov return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0); 657054e7aac0SAlexey Krasikov} 657154e7aac0SAlexey KrasikovEOF 657254e7aac0SAlexey Krasikov if compile_prog "" "" ; then 657354e7aac0SAlexey Krasikov have_keyring=yes 657454e7aac0SAlexey Krasikov fi 657554e7aac0SAlexey Krasikovfi 657654e7aac0SAlexey Krasikovif test "$secret_keyring" != "no" 657754e7aac0SAlexey Krasikovthen 6578b418d265SDavid Edmondson if test "$have_keyring" = "yes" 657954e7aac0SAlexey Krasikov then 658054e7aac0SAlexey Krasikov secret_keyring=yes 658154e7aac0SAlexey Krasikov else 658254e7aac0SAlexey Krasikov if test "$secret_keyring" = "yes" 658354e7aac0SAlexey Krasikov then 658454e7aac0SAlexey Krasikov error_exit "syscall __NR_keyctl requested, \ 658554e7aac0SAlexey Krasikovbut not implemented on your system" 658654e7aac0SAlexey Krasikov else 658754e7aac0SAlexey Krasikov secret_keyring=no 658854e7aac0SAlexey Krasikov fi 658954e7aac0SAlexey Krasikov fi 659054e7aac0SAlexey Krasikovfi 659154e7aac0SAlexey Krasikov 659292500362SAlexey Krasikov########################################## 659392500362SAlexey Krasikov# check for usable keyutils.h 659492500362SAlexey Krasikov 659592500362SAlexey Krasikovif test "$linux" = "yes" ; then 659692500362SAlexey Krasikov 659792500362SAlexey Krasikov have_keyutils=no 659892500362SAlexey Krasikov cat > $TMPC << EOF 659992500362SAlexey Krasikov#include <errno.h> 660092500362SAlexey Krasikov#include <asm/unistd.h> 660192500362SAlexey Krasikov#include <unistd.h> 660292500362SAlexey Krasikov#include <sys/types.h> 660392500362SAlexey Krasikov#include <keyutils.h> 660492500362SAlexey Krasikovint main(void) { 660592500362SAlexey Krasikov return request_key("user", NULL, NULL, 0); 660692500362SAlexey Krasikov} 660792500362SAlexey KrasikovEOF 660892500362SAlexey Krasikov if compile_prog "" "-lkeyutils"; then 660992500362SAlexey Krasikov have_keyutils=yes 661092500362SAlexey Krasikov fi 661192500362SAlexey Krasikovfi 661292500362SAlexey Krasikov 6613675b9b53SMarc-André Lureau 6614675b9b53SMarc-André Lureau########################################## 6615e86ecd4bSJuan Quintela# End of CC checks 6616e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 6617e86ecd4bSJuan Quintela 6618d83414e1SMarc-André Lureauwrite_c_skeleton 6619d83414e1SMarc-André Lureau 66201d728c39SBlue Swirlif test "$gcov" = "yes" ; then 6621db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fprofile-arcs -ftest-coverage -g $QEMU_CFLAGS" 6622db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fprofile-arcs -ftest-coverage $QEMU_LDFLAGS" 6623b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then 6624086d5f75SPaolo Bonzini QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS" 6625086d5f75SPaolo Bonzini debug=no 6626086d5f75SPaolo Bonzinifi 6627086d5f75SPaolo Bonziniif test "$debug_info" = "yes"; then 6628086d5f75SPaolo Bonzini CFLAGS="-g $CFLAGS" 6629086d5f75SPaolo Bonzini LDFLAGS="-g $LDFLAGS" 6630086d5f75SPaolo Bonzinifi 6631a5665051SPaolo Bonziniif test "$debug" = "no"; then 6632a5665051SPaolo Bonzini CFLAGS="-O2 $CFLAGS" 6633a5665051SPaolo Bonzinifi 6634086d5f75SPaolo Bonzini 6635086d5f75SPaolo Bonzinicase "$ARCH" in 6636086d5f75SPaolo Bonzinialpha) 6637086d5f75SPaolo Bonzini # Ensure there's only a single GP 6638086d5f75SPaolo Bonzini QEMU_CFLAGS="-msmall-data $QEMU_CFLAGS" 6639086d5f75SPaolo Bonzini;; 6640086d5f75SPaolo Bonziniesac 6641086d5f75SPaolo Bonzini 6642086d5f75SPaolo Bonziniif test "$gprof" = "yes" ; then 6643086d5f75SPaolo Bonzini QEMU_CFLAGS="-p $QEMU_CFLAGS" 6644086d5f75SPaolo Bonzini QEMU_LDFLAGS="-p $QEMU_LDFLAGS" 6645086d5f75SPaolo Bonzinifi 6646a316e378SJuan Quintela 6647247724cbSMarc-André Lureauif test "$have_asan" = "yes"; then 6648db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fsanitize=address $QEMU_CFLAGS" 6649db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fsanitize=address $QEMU_LDFLAGS" 6650d83414e1SMarc-André Lureau if test "$have_asan_iface_h" = "no" ; then 6651d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header missing." \ 6652d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 6653d83414e1SMarc-André Lureau elif test "$have_asan_iface_fiber" = "no" ; then 6654d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header is too old." \ 6655d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 6656d83414e1SMarc-André Lureau fi 6657247724cbSMarc-André Lureaufi 66580aebab04SLingfeng Yangif test "$have_tsan" = "yes" ; then 66590aebab04SLingfeng Yang if test "$have_tsan_iface_fiber" = "yes" ; then 66600aebab04SLingfeng Yang QEMU_CFLAGS="-fsanitize=thread $QEMU_CFLAGS" 66610aebab04SLingfeng Yang QEMU_LDFLAGS="-fsanitize=thread $QEMU_LDFLAGS" 66620aebab04SLingfeng Yang else 66630aebab04SLingfeng Yang error_exit "Cannot enable TSAN due to missing fiber annotation interface." 66640aebab04SLingfeng Yang fi 66650aebab04SLingfeng Yangelif test "$tsan" = "yes" ; then 66660aebab04SLingfeng Yang error_exit "Cannot enable TSAN due to missing sanitize thread interface." 66670aebab04SLingfeng Yangfi 6668247724cbSMarc-André Lureauif test "$have_ubsan" = "yes"; then 6669db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fsanitize=undefined $QEMU_CFLAGS" 6670db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fsanitize=undefined $QEMU_LDFLAGS" 6671247724cbSMarc-André Lureaufi 6672247724cbSMarc-André Lureau 66736542aa9cSPeter Lieven########################################## 66746542aa9cSPeter Lieven# Do we have libnfs 66756542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 6676b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 66776542aa9cSPeter Lieven libnfs="yes" 66786542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 66796542aa9cSPeter Lieven else 66806542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 66818efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 66826542aa9cSPeter Lieven fi 66836542aa9cSPeter Lieven libnfs="no" 66846542aa9cSPeter Lieven fi 66856542aa9cSPeter Lievenfi 66861d728c39SBlue Swirl 66873efac6ebSTomáš Golembiovský########################################## 66883efac6ebSTomáš Golembiovský# Do we have libudev 66893efac6ebSTomáš Golembiovskýif test "$libudev" != "no" ; then 66903efac6ebSTomáš Golembiovský if $pkg_config libudev && test "$static" != "yes"; then 66913efac6ebSTomáš Golembiovský libudev="yes" 66923efac6ebSTomáš Golembiovský libudev_libs=$($pkg_config --libs libudev) 66933efac6ebSTomáš Golembiovský else 66943efac6ebSTomáš Golembiovský libudev="no" 66953efac6ebSTomáš Golembiovský fi 66963efac6ebSTomáš Golembiovskýfi 66973efac6ebSTomáš Golembiovský 66986ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 66996ca026cbSPeter Maydellif test "$werror" = "yes"; then 67006ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 67016ca026cbSPeter Maydellfi 67026ca026cbSPeter Maydell 67030aebab04SLingfeng Yang# Exclude --warn-common with TSan to suppress warnings from the TSan libraries. 67040aebab04SLingfeng Yangif test "$solaris" = "no" && test "$tsan" = "no"; then 6705e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 6706db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-Wl,--warn-common $QEMU_LDFLAGS" 6707e86ecd4bSJuan Quintela fi 6708e86ecd4bSJuan Quintelafi 6709e86ecd4bSJuan Quintela 671094dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 671194dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 671294dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 671394dd53c5SGerd Hoffmannelse 671494dd53c5SGerd Hoffmann POD2MAN="pod2man" 671594dd53c5SGerd Hoffmannfi 671694dd53c5SGerd Hoffmann 6717952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 6718952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 6719952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 6720e9a3591fSChristian Borntraeger if ld_has $flag ; then 6721db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-Wl,$flag $QEMU_LDFLAGS" 6722952afb71SBlue Swirl fi 6723952afb71SBlue Swirl done 6724952afb71SBlue Swirlfi 6725952afb71SBlue Swirl 67267776ea6bSPhilippe Mathieu-Daudé# Disable OpenBSD W^X if available 67277776ea6bSPhilippe Mathieu-Daudéif test "$tcg" = "yes" && test "$targetos" = "OpenBSD"; then 67287776ea6bSPhilippe Mathieu-Daudé cat > $TMPC <<EOF 67297776ea6bSPhilippe Mathieu-Daudé int main(void) { return 0; } 67307776ea6bSPhilippe Mathieu-DaudéEOF 67317776ea6bSPhilippe Mathieu-Daudé wx_ldflags="-Wl,-z,wxneeded" 67327776ea6bSPhilippe Mathieu-Daudé if compile_prog "" "$wx_ldflags"; then 67337776ea6bSPhilippe Mathieu-Daudé QEMU_LDFLAGS="$QEMU_LDFLAGS $wx_ldflags" 67347776ea6bSPhilippe Mathieu-Daudé fi 67357776ea6bSPhilippe Mathieu-Daudéfi 67367776ea6bSPhilippe Mathieu-Daudé 673710ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 6738e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 6739528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 6740834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 6741a8260d38SDaniel P. Berrangéqemu_icondir="$datadir/icons" 674267ea9546SDaniel P. Berrangéqemu_desktopdir="$datadir/applications" 67435a67135aSbellard 6744e0580342SKamil Rytarowski# We can only support ivshmem if we have eventfd 6745e0580342SKamil Rytarowskiif [ "$eventfd" = "yes" ]; then 6746e0580342SKamil Rytarowski ivshmem=yes 6747e0580342SKamil Rytarowskifi 6748e0580342SKamil Rytarowski 67494b1c11fdSDaniel P. Berrangetools="" 67504b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 675172d277a7SGerd Hoffmann tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) qemu-edid\$(EXESUF) $tools" 67524b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 6753f353415fSKevin Wolf tools="qemu-nbd\$(EXESUF) qemu-storage-daemon\$(EXESUF) $tools" 6754b1449edbSKamil Rytarowski fi 6755b1449edbSKamil Rytarowski if [ "$ivshmem" = "yes" ]; then 6756a75eb03bSDavid Marchand tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" 67574b1c11fdSDaniel P. Berrange fi 67581b9d35f3SViktor Prutyanov if [ "$curl" = "yes" ]; then 67591b9d35f3SViktor Prutyanov tools="elf2dmp\$(EXESUF) $tools" 67603fa2d384SViktor Prutyanov fi 67614b1c11fdSDaniel P. Berrangefi 67624b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 6763b855f8d1SPaolo Bonzini if test "$linux" = yes; then 67647e462613SPaolo Bonzini if test "$virtfs" != no && test "$cap_ng" = yes && test "$attr" = yes ; then 6765983eef5aSMeador Inge virtfs=yes 6766fdbff6bdSPhilippe Mathieu-Daudé helpers="$helpers fsdev/virtfs-proxy-helper\$(EXESUF)" 6767983eef5aSMeador Inge else 6768983eef5aSMeador Inge if test "$virtfs" = yes; then 67697e462613SPaolo Bonzini error_exit "VirtFS requires libcap-ng devel and libattr devel" 6770983eef5aSMeador Inge fi 677117500370SAndreas Färber virtfs=no 6772983eef5aSMeador Inge fi 6773fe8fc5aeSPaolo Bonzini if test "$mpath" != no && test "$mpathpersist" = yes ; then 6774fe8fc5aeSPaolo Bonzini mpath=yes 6775fe8fc5aeSPaolo Bonzini else 6776fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 6777fe8fc5aeSPaolo Bonzini error_exit "Multipath requires libmpathpersist devel" 6778fe8fc5aeSPaolo Bonzini fi 6779fe8fc5aeSPaolo Bonzini mpath=no 6780fe8fc5aeSPaolo Bonzini fi 6781fdbff6bdSPhilippe Mathieu-Daudé helpers="$helpers scsi/qemu-pr-helper\$(EXESUF)" 6782b855f8d1SPaolo Bonzini else 6783b855f8d1SPaolo Bonzini if test "$virtfs" = yes; then 6784b855f8d1SPaolo Bonzini error_exit "VirtFS is supported only on Linux" 6785b855f8d1SPaolo Bonzini fi 6786b855f8d1SPaolo Bonzini virtfs=no 6787fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 6788fe8fc5aeSPaolo Bonzini error_exit "Multipath is supported only on Linux" 6789fe8fc5aeSPaolo Bonzini fi 6790fe8fc5aeSPaolo Bonzini mpath=no 679117bff52bSM. Mohan Kumar fi 67926a021536SGerd Hoffmann if test "$xkbcommon" = "yes"; then 67936a021536SGerd Hoffmann tools="qemu-keymap\$(EXESUF) $tools" 67946a021536SGerd Hoffmann fi 6795ff69fd8cSLaurent Vivierfi 67969d6bc27bSMichael Roth 67979d6bc27bSMichael Roth# Probe for guest agent support/options 67989d6bc27bSMichael Roth 6799e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 6800a5125905SLaurent Vivier if [ "$softmmu" = no -a "$want_tools" = no ] ; then 6801a5125905SLaurent Vivier guest_agent=no 6802a5125905SLaurent Vivier elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 68030814465aSPaolo Bonzini tools="qemu-ga\$(EXESUF) $tools" 6804e8ef31a3SMichael Tokarev guest_agent=yes 6805e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 6806e8ef31a3SMichael Tokarev guest_agent=no 6807e8ef31a3SMichael Tokarev else 6808e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 6809ca35f780SPaolo Bonzini fi 68104b1c11fdSDaniel P. Berrangefi 6811ca35f780SPaolo Bonzini 68129d6bc27bSMichael Roth# Guest agent Window MSI package 68139d6bc27bSMichael Roth 68149d6bc27bSMichael Rothif test "$guest_agent" != yes; then 68159d6bc27bSMichael Roth if test "$guest_agent_msi" = yes; then 68169d6bc27bSMichael Roth error_exit "MSI guest agent package requires guest agent enabled" 68179d6bc27bSMichael Roth fi 68189d6bc27bSMichael Roth guest_agent_msi=no 68199d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then 68209d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 68219d6bc27bSMichael Roth error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 68229d6bc27bSMichael Roth fi 68239d6bc27bSMichael Roth guest_agent_msi=no 68249d6bc27bSMichael Rothelif ! has wixl; then 68259d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 68269d6bc27bSMichael Roth error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 68279d6bc27bSMichael Roth fi 68289d6bc27bSMichael Roth guest_agent_msi=no 68291a34904eSMichael Rothelse 68301a34904eSMichael Roth # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 68311a34904eSMichael Roth # disabled explicitly 68321a34904eSMichael Roth if test "$guest_agent_msi" != "no"; then 68331a34904eSMichael Roth guest_agent_msi=yes 68341a34904eSMichael Roth fi 68359d6bc27bSMichael Rothfi 68369d6bc27bSMichael Roth 68371a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then 68389d6bc27bSMichael Roth if test "$guest_agent_with_vss" = "yes"; then 68399d6bc27bSMichael Roth QEMU_GA_MSI_WITH_VSS="-D InstallVss" 68409d6bc27bSMichael Roth fi 68419d6bc27bSMichael Roth 68429d6bc27bSMichael Roth if test "$QEMU_GA_MANUFACTURER" = ""; then 68439d6bc27bSMichael Roth QEMU_GA_MANUFACTURER=QEMU 68449d6bc27bSMichael Roth fi 68459d6bc27bSMichael Roth 68469d6bc27bSMichael Roth if test "$QEMU_GA_DISTRO" = ""; then 68479d6bc27bSMichael Roth QEMU_GA_DISTRO=Linux 68489d6bc27bSMichael Roth fi 68499d6bc27bSMichael Roth 68509d6bc27bSMichael Roth if test "$QEMU_GA_VERSION" = ""; then 685189138857SStefan Weil QEMU_GA_VERSION=$(cat $source_path/VERSION) 68529d6bc27bSMichael Roth fi 68539d6bc27bSMichael Roth 685489138857SStefan Weil QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin" 68559d6bc27bSMichael Roth 68569d6bc27bSMichael Roth case "$cpu" in 68579d6bc27bSMichael Roth x86_64) 68589d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 68599d6bc27bSMichael Roth ;; 68609d6bc27bSMichael Roth i386) 68619d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-D Arch=32" 68629d6bc27bSMichael Roth ;; 68639d6bc27bSMichael Roth *) 68649d6bc27bSMichael Roth error_exit "CPU $cpu not supported for building installation package" 68659d6bc27bSMichael Roth ;; 68669d6bc27bSMichael Roth esac 68679d6bc27bSMichael Rothfi 68689d6bc27bSMichael Roth 6869ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 6870ca35f780SPaolo Bonziniroms= 6871e633a5c6SEric Blakeif { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \ 6872e633a5c6SEric Blake test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \ 6873e633a5c6SEric Blake test "$softmmu" = yes ; then 6874e57218b6SPeter Maydell # Different host OS linkers have different ideas about the name of the ELF 6875c65d5e4eSBrad Smith # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd 6876c65d5e4eSBrad Smith # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe. 6877c65d5e4eSBrad Smith for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do 6878e57218b6SPeter Maydell if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then 6879e57218b6SPeter Maydell ld_i386_emulation="$emu" 6880ca35f780SPaolo Bonzini roms="optionrom" 6881e57218b6SPeter Maydell break 6882e57218b6SPeter Maydell fi 6883e57218b6SPeter Maydell done 6884ca35f780SPaolo Bonzinifi 6885ca35f780SPaolo Bonzini 68862e33c3f8SThomas Huth# Only build s390-ccw bios if we're on s390x and the compiler has -march=z900 68879933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 68882e33c3f8SThomas Huth write_c_skeleton 68892e33c3f8SThomas Huth if compile_prog "-march=z900" ""; then 68909933c305SChristian Borntraeger roms="$roms s390-ccw" 68911ef6bfc2SPhilippe Mathieu-Daudé # SLOF is required for building the s390-ccw firmware on s390x, 68921ef6bfc2SPhilippe Mathieu-Daudé # since it is using the libnet code from SLOF for network booting. 68931ef6bfc2SPhilippe Mathieu-Daudé if test -e "${source_path}/.git" ; then 68941ef6bfc2SPhilippe Mathieu-Daudé git_submodules="${git_submodules} roms/SLOF" 68951ef6bfc2SPhilippe Mathieu-Daudé fi 68969933c305SChristian Borntraeger fi 68972e33c3f8SThomas Huthfi 68989933c305SChristian Borntraeger 689911cde1c8SBruno Dominguez# Check that the C++ compiler exists and works with the C compiler. 690011cde1c8SBruno 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. 690111cde1c8SBruno Dominguezif has $cxx; then 690211cde1c8SBruno Dominguez cat > $TMPC <<EOF 690311cde1c8SBruno Dominguezint c_function(void); 690411cde1c8SBruno Dominguezint main(void) { return c_function(); } 690511cde1c8SBruno DominguezEOF 690611cde1c8SBruno Dominguez 690711cde1c8SBruno Dominguez compile_object 690811cde1c8SBruno Dominguez 690911cde1c8SBruno Dominguez cat > $TMPCXX <<EOF 691011cde1c8SBruno Dominguezextern "C" { 691111cde1c8SBruno Dominguez int c_function(void); 691211cde1c8SBruno Dominguez} 691311cde1c8SBruno Dominguezint c_function(void) { return 42; } 691411cde1c8SBruno DominguezEOF 691511cde1c8SBruno Dominguez 691611cde1c8SBruno Dominguez update_cxxflags 691711cde1c8SBruno Dominguez 6918086d5f75SPaolo Bonzini if do_cxx $CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then 691911cde1c8SBruno Dominguez # C++ compiler $cxx works ok with C compiler $cc 692011cde1c8SBruno Dominguez : 692111cde1c8SBruno Dominguez else 692211cde1c8SBruno Dominguez echo "C++ compiler $cxx does not work with C compiler $cc" 692311cde1c8SBruno Dominguez echo "Disabling C++ specific optional code" 692411cde1c8SBruno Dominguez cxx= 692511cde1c8SBruno Dominguez fi 692611cde1c8SBruno Dominguezelse 692711cde1c8SBruno Dominguez echo "No C++ compiler available; disabling C++ specific optional code" 692811cde1c8SBruno Dominguez cxx= 692911cde1c8SBruno Dominguezfi 693011cde1c8SBruno Dominguez 693102d34f62SCole Robinsonecho_version() { 693202d34f62SCole Robinson if test "$1" = "yes" ; then 693302d34f62SCole Robinson echo "($2)" 693402d34f62SCole Robinson fi 693502d34f62SCole Robinson} 693602d34f62SCole Robinson 693750e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 693850e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 69398a99e9a3SPhilippe Mathieu-DaudéQEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS" 694050e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 69415ca9388aSGerd Hoffmann 69427d13299dSbellardecho "Install prefix $prefix" 694389138857SStefan Weilecho "BIOS directory $(eval echo $qemu_datadir)" 69443d5eecabSGerd Hoffmannecho "firmware path $(eval echo $firmwarepath)" 694589138857SStefan Weilecho "binary directory $(eval echo $bindir)" 694689138857SStefan Weilecho "library directory $(eval echo $libdir)" 694789138857SStefan Weilecho "module directory $(eval echo $qemu_moddir)" 694889138857SStefan Weilecho "libexec directory $(eval echo $libexecdir)" 694989138857SStefan Weilecho "include directory $(eval echo $includedir)" 695089138857SStefan Weilecho "config directory $(eval echo $sysconfdir)" 695111d9f695Sbellardif test "$mingw32" = "no" ; then 695289138857SStefan Weilecho "local state directory $(eval echo $local_statedir)" 695389138857SStefan Weilecho "Manual directory $(eval echo $mandir)" 695443ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 69555a699bbbSLaszlo Ersekelse 69565a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 6957d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 695811d9f695Sbellardfi 6959bc4486fbSPaolo Bonziniecho "Build directory $(pwd)" 69605a67135aSbellardecho "Source path $source_path" 6961cc84d63aSDaniel P. Berrangeecho "GIT binary $git" 6962aef45d51SDaniel P. Berrangeecho "GIT submodules $git_submodules" 69637d13299dSbellardecho "C compiler $cc" 696483469015Sbellardecho "Host C compiler $host_cc" 696583f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 69663c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 696745d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 69680c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 6969a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 69708a99e9a3SPhilippe Mathieu-Daudéecho "QEMU_LDFLAGS $QEMU_LDFLAGS" 69717d13299dSbellardecho "make $make" 69726a882643Spbrookecho "install $install" 6973755ee70fSCleber Rosaecho "python $python ($python_version)" 69742eb054c2SPeter Maydellif test "$docs" != "no"; then 69752eb054c2SPeter Maydell echo "sphinx-build $sphinx_build" 69762eb054c2SPeter Maydellfi 697739d87c8cSAlex Bennéeecho "genisoimage $genisoimage" 6978675b9b53SMarc-André Lureauecho "slirp support $slirp $(echo_version $slirp $slirp_version)" 6979675b9b53SMarc-André Lureauif test "$slirp" != "no" ; then 6980e2d8830eSBrad echo "smbd $smbd" 6981e2d8830eSBradfi 698217969268SFam Zhengecho "module support $modules" 6983bd83c861SChristian Ehrhardtecho "alt path mod load $module_upgrades" 6984a98fd896Sbellardecho "host CPU $cpu" 6985de83cd02Sbellardecho "host big endian $bigendian" 698697a847bcSbellardecho "target list $target_list" 69877d13299dSbellardecho "gprof enabled $gprof" 698803b4fe7dSaliguoriecho "sparse enabled $sparse" 69891625af87Saliguoriecho "strip binaries $strip_opt" 699005c2a3e7Sbellardecho "profiler $profiler" 699143ce4dfeSbellardecho "static build $static" 69921e4f6065SDaniele Buonoecho "safe stack $safe_stack" 69935b0753e0Sbellardif test "$darwin" = "yes" ; then 69945b0753e0Sbellard echo "Cocoa support $cocoa" 69955b0753e0Sbellardfi 699689138857SStefan Weilecho "SDL support $sdl $(echo_version $sdl $sdlversion)" 6997a442fe2fSDaniel P. Berrangéecho "SDL image support $sdl_image" 699889138857SStefan Weilecho "GTK support $gtk $(echo_version $gtk $gtk_version)" 6999925a0400SGerd Hoffmannecho "GTK GL support $gtk_gl" 700089138857SStefan Weilecho "VTE support $vte $(echo_version $vte $vteversion)" 7001a1c5e949SDaniel P. Berrangeecho "TLS priority $tls_priority" 7002ddbb0d09SDaniel P. Berrangeecho "GNUTLS support $gnutls" 700391bfcdb0SDaniel P. Berrangeecho "libgcrypt $gcrypt" 7004e0576942SDaniel P. Berrangéif test "$gcrypt" = "yes" 7005e0576942SDaniel P. Berrangéthen 7006e0576942SDaniel P. Berrangé echo " hmac $gcrypt_hmac" 7007e0576942SDaniel P. Berrangé echo " XTS $gcrypt_xts" 7008e0576942SDaniel P. Berrangéfi 700989138857SStefan Weilecho "nettle $nettle $(echo_version $nettle $nettle_version)" 7010dc2207afSDaniel P. Berrangéif test "$nettle" = "yes" 7011dc2207afSDaniel P. Berrangéthen 7012dc2207afSDaniel P. Berrangé echo " XTS $nettle_xts" 7013dc2207afSDaniel P. Berrangéfi 70149a2fd434SDaniel P. Berrangeecho "libtasn1 $tasn1" 70158953caf3SDaniel P. Berrangeecho "PAM $auth_pam" 7016e08bb301SSamuel Thibaultecho "iconv support $iconv" 70174d3b6f6eSbalrogecho "curses support $curses" 701847479c55SMarc-André Lureauecho "virgl support $virglrenderer $(echo_version $virglrenderer $virgl_version)" 7019769ce76dSAlexander Grafecho "curl support $curl" 702067b915a5Sbellardecho "mingw32 support $mingw32" 70210c58ac1cSmalcecho "Audio drivers $audio_drv_list" 7022b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 7023b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 7024983eef5aSMeador Ingeecho "VirtFS support $virtfs" 7025fe8fc5aeSPaolo Bonziniecho "Multipath support $mpath" 7026821601eaSJes Sorensenecho "VNC support $vnc" 7027821601eaSJes Sorensenif test "$vnc" = "yes" ; then 70282f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 70292f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 7030efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 7031821601eaSJes Sorensenfi 7032e37630caSaliguoriecho "xen support $xen" 70333996e85cSPaul Durrantif test "$xen" = "yes" ; then 70343996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 70353996e85cSPaul Durrantfi 70362e4d9fb1Saurel32echo "brlapi support $brlapi" 7037a25dba17SJuan Quintelaecho "Documentation $docs" 703840d6444eSAvi Kivityecho "PIE $pie" 70398a16d273Sthsecho "vde support $vde" 704058952137SVincenzo Maffioneecho "netmap support $netmap" 70415c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 7042c10dd856SAarushi Mehtaecho "Linux io_uring support $linux_io_uring" 7043758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 704477755340Sthsecho "Install blobs $blobs" 7045b31a0277SJuan Quintelaecho "KVM support $kvm" 7046b0cb0a66SVincent Palatinecho "HAX support $hax" 7047c97d6d2cSSergio Andres Gomez Del Realecho "HVF support $hvf" 7048d661d9a4SJustin Terry (VM)echo "WHPX support $whpx" 7049b3f6ea7eSPaolo Bonziniecho "TCG support $tcg" 7050b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes" ; then 7051b3f6ea7eSPaolo Bonzini echo "TCG debug enabled $debug_tcg" 70529195b2c2SStefan Weil echo "TCG interpreter $tcg_interpreter" 7053b3f6ea7eSPaolo Bonzinifi 70545a22ab71SYang Zhongecho "malloc trim support $malloc_trim" 7055b3f6ea7eSPaolo Bonziniecho "RDMA support $rdma" 705621ab34c9SMarcel Apfelbaumecho "PVRDMA support $pvrdma" 7057f652e6afSaurel32echo "fdt support $fdt" 7058a40161cbSPaolo Bonziniecho "membarrier $membarrier" 7059ceb42de8Saliguoriecho "preadv support $preadv" 70605f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 7061e78815a5SAndreas Färberecho "madvise $madvise" 7062e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 70639bc5a719SAndreas Gustafssonecho "posix_memalign $posix_memalign" 706447e98658SCorey Bryantecho "libcap-ng support $cap_ng" 7065d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 7066042cea27SGongleiecho "vhost-crypto support $vhost_crypto" 70675e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 7068fc0b9b0eSStefan Hajnocziecho "vhost-vsock support $vhost_vsock" 7069e6a74868SMarc-André Lureauecho "vhost-user support $vhost_user" 707098fc1adaSDr. David Alan Gilbertecho "vhost-user-fs support $vhost_user_fs" 7071108a6481SCindy Luecho "vhost-vdpa support $vhost_vdpa" 70725b808275SLluís Vilanovaecho "Trace backends $trace_backends" 7073713572a7SMarc-André Lureauif have_backend "simple"; then 70749410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 7075e00e36fbSStefan Weilfi 707689138857SStefan Weilecho "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)" 7077f27aaf4bSChristian Brunnerecho "rbd support $rbd" 7078dce512deSChristoph Hellwigecho "xfsctl support $xfs" 70797b02f544SMarc-André Lureauecho "smartcard support $smartcard" 70802b2325ffSGerd Hoffmannecho "libusb $libusb" 708169354a83SHans de Goedeecho "usb net redir $usb_redir" 7082da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 7083014cb152SGerd Hoffmannecho "OpenGL dmabufs $opengl_dmabuf" 7084c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 70856542aa9cSPeter Lievenecho "libnfs support $libnfs" 7086d138cee9SMichael Rothecho "build guest agent $guest_agent" 7087d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 708850cbebb9SMichael Rothecho "QGA w32 disk info $guest_agent_ntddscsi" 70894c875d89SMichael Rothecho "QGA MSI support $guest_agent_msi" 7090f794573eSEduardo Otuboecho "seccomp support $seccomp" 70917c2acc70SPeter Maydellecho "coroutine backend $coroutine" 709270c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 70937d992e4dSPeter Lievenecho "debug stack usage $debug_stack_usage" 7094ba59fb77SPaolo Bonziniecho "mutex debugging $debug_mutex" 7095f0d92b56SLongpeng(Mike)echo "crypto afalg $crypto_afalg" 7096eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 70971d728c39SBlue Swirlecho "gcov $gcov_tool" 70981d728c39SBlue Swirlecho "gcov enabled $gcov" 7099ab214c29SStefan Bergerecho "TPM support $tpm" 7100b10d49d7SPino Toscanoecho "libssh support $libssh" 71013556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 7102ed1701c6SDr. David Alan Gilbertecho "Live block migration $live_block_migration" 7103607dacd0Sqiaonuohanecho "lzo support $lzo" 7104607dacd0Sqiaonuohanecho "snappy support $snappy" 71056b383c08SPeter Wuecho "bzip2 support $bzip2" 710683bc1f97SJulio Faraccoecho "lzfse support $lzfse" 71073a678481SJuan Quintelaecho "zstd support $zstd" 7108a99d57bbSWanlong Gaoecho "NUMA host support $numa" 7109ed279a06SKlim Kireevecho "libxml2 $libxml2" 71102847b469SFam Zhengecho "tcmalloc support $tcmalloc" 71117b01cb97SAlexandre Derumierecho "jemalloc support $jemalloc" 711299f2dbd3SLiang Liecho "avx2 optimization $avx2_opt" 71136b8cd447SRobert Hooecho "avx512f optimization $avx512f_opt" 7114a6b1d4c0SChanglong Xieecho "replication support $replication" 71152f740136SJeff Codyecho "bochs support $bochs" 71162f740136SJeff Codyecho "cloop support $cloop" 71172f740136SJeff Codyecho "dmg support $dmg" 71182f740136SJeff Codyecho "qcow v1 support $qcow1" 71192f740136SJeff Codyecho "vdi support $vdi" 71202f740136SJeff Codyecho "vvfat support $vvfat" 71212f740136SJeff Codyecho "qed support $qed" 71222f740136SJeff Codyecho "parallels support $parallels" 71232f740136SJeff Codyecho "sheepdog support $sheepdog" 71248ca80760SRichard Hendersonecho "capstone $capstone" 712517824406SJunyan Heecho "libpmem support $libpmem" 712621b2eca6SJingqi Liuecho "libdaxctl support $libdaxctl" 71273efac6ebSTomáš Golembiovskýecho "libudev $libudev" 7128f3494749SPaolo Bonziniecho "default devices $default_devices" 712940e8c6f4SAlex Bennéeecho "plugin support $plugins" 7130adc28027SAlexander Bulekovecho "fuzzing support $fuzzing" 7131f48e590aSAlex Bennéeecho "gdb $gdb_bin" 7132b767d257SMarek Marczykowski-Góreckiecho "rng-none $rng_none" 713354e7aac0SAlexey Krasikovecho "Linux keyring $secret_keyring" 713467b915a5Sbellard 7135898be3e0SPeter Maydellif test "$supported_cpu" = "no"; then 7136898be3e0SPeter Maydell echo 7137898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!" 7138898be3e0SPeter Maydell echo 7139898be3e0SPeter Maydell echo "CPU host architecture $cpu support is not currently maintained." 7140898be3e0SPeter Maydell echo "The QEMU project intends to remove support for this host CPU in" 7141898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 7142898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 7143898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 7144898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 7145898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 7146898be3e0SPeter Maydellfi 7147898be3e0SPeter Maydell 7148898be3e0SPeter Maydellif test "$supported_os" = "no"; then 7149898be3e0SPeter Maydell echo 7150898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!" 7151898be3e0SPeter Maydell echo 7152c50126aaSPeter Maydell echo "Host OS $targetos support is not currently maintained." 7153c50126aaSPeter Maydell echo "The QEMU project intends to remove support for this host OS in" 7154898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 7155898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 7156898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 7157898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 7158898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 7159898be3e0SPeter Maydellfi 7160898be3e0SPeter Maydell 716198ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 716297a847bcSbellard 7163dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 7164dbd99ae3SStefan Weil 716598ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 716698ec69acSJuan Quintelaecho >> $config_host_mak 716798ec69acSJuan Quintela 7168e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 716999d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 717099d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 71713aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 71728bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 71730f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 717499d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 717599d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 717622d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 71779afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 71783d5eecabSGerd Hoffmannecho "qemu_firmwarepath=$firmwarepath" >> $config_host_mak 71799afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 7180e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 71815a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 7182785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 71835a699bbbSLaszlo Ersekfi 7184f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 7185834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 7186a8260d38SDaniel P. Berrangéecho "qemu_icondir=$qemu_icondir" >> $config_host_mak 718767ea9546SDaniel P. Berrangéecho "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak 718802f9135bSDaniel P. Berrangéecho "libs_cpu=$libs_cpu" >> $config_host_mak 7189f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 7190cc84d63aSDaniel P. Berrangeecho "GIT=$git" >> $config_host_mak 7191aef45d51SDaniel P. Berrangeecho "GIT_SUBMODULES=$git_submodules" >> $config_host_mak 7192f62bbee5SDaniel P. Berrangeecho "GIT_UPDATE=$git_update" >> $config_host_mak 7193804edf29SJuan Quintela 719498ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 7195727e5283SPaolo Bonzini 7196777dddc5SAlex Bennéeecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 7197777dddc5SAlex Bennéeecho "GLIB_LDFLAGS=$glib_ldflags" >> $config_host_mak 7198777dddc5SAlex Bennée 7199f3494749SPaolo Bonziniif test "$default_devices" = "yes" ; then 7200f3494749SPaolo Bonzini echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak 7201f3494749SPaolo Bonzinielse 7202f3494749SPaolo Bonzini echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak 7203f3494749SPaolo Bonzinifi 7204f8393946Saurel32if test "$debug_tcg" = "yes" ; then 72052358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 7206f8393946Saurel32fi 72071625af87Saliguoriif test "$strip_opt" = "yes" ; then 720852ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 72091625af87Saliguorifi 72107d13299dSbellardif test "$bigendian" = "yes" ; then 7211e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 721297a847bcSbellardfi 721367b915a5Sbellardif test "$mingw32" = "yes" ; then 721498ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 721589138857SStefan Weil rc_version=$(cat $source_path/VERSION) 72169fe6de94SBlue Swirl version_major=${rc_version%%.*} 72179fe6de94SBlue Swirl rc_version=${rc_version#*.} 72189fe6de94SBlue Swirl version_minor=${rc_version%%.*} 72199fe6de94SBlue Swirl rc_version=${rc_version#*.} 72209fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 72219fe6de94SBlue Swirl version_micro=0 72229fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 72239fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 7224d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 7225d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 7226f33ca81fSMichael Roth echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 7227d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 7228d9840e25STomoki Sekiyama fi 722950cbebb9SMichael Roth if test "$guest_agent_ntddscsi" = "yes" ; then 723076dc75caSTomáš Golembiovský echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak 723150cbebb9SMichael Roth fi 72321a34904eSMichael Roth if test "$guest_agent_msi" = "yes"; then 72339dacf32dSYossi Hindin echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 72349dacf32dSYossi Hindin echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 72359dacf32dSYossi Hindin echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 72369dacf32dSYossi Hindin echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 72379dacf32dSYossi Hindin echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 72389dacf32dSYossi Hindin echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 72399dacf32dSYossi Hindin echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 72409dacf32dSYossi Hindin fi 7241210fa556Spbrookelse 724235f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 7243210fa556Spbrookfi 7244128ab2ffSblueswir1 7245dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 7246dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 7247dffcb71cSMark McLoughlinfi 7248dffcb71cSMark McLoughlin 724983fb7adfSbellardif test "$darwin" = "yes" ; then 725098ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 725183fb7adfSbellardfi 7252b29fe3edSmalc 7253ec530c81Sbellardif test "$solaris" = "yes" ; then 725498ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 7255ec530c81Sbellardfi 7256179cf400SAndreas Färberif test "$haiku" = "yes" ; then 7257179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 7258179cf400SAndreas Färberfi 725997a847bcSbellardif test "$static" = "yes" ; then 726098ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 726197a847bcSbellardfi 72621ba16968SStefan Weilif test "$profiler" = "yes" ; then 72632358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 726405c2a3e7Sbellardfi 7265c932ce31SPaolo Bonziniif test "$want_tools" = "yes" ; then 7266c932ce31SPaolo Bonzini echo "CONFIG_TOOLS=y" >> $config_host_mak 7267c932ce31SPaolo Bonzinifi 7268675b9b53SMarc-André Lureauif test "$slirp" != "no"; then 726998ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 7270e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 7271675b9b53SMarc-André Lureau echo "SLIRP_CFLAGS=$slirp_cflags" >> $config_host_mak 7272675b9b53SMarc-André Lureau echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak 7273675b9b53SMarc-André Lureaufi 72747c57bdd8SMarc-André Lureauif [ "$slirp" = "git" -o "$slirp" = "internal" ]; then 72753b8593eeSMarkus Armbruster echo "config-host.h: slirp/all" >> $config_host_mak 7276c20709aaSbellardfi 72778a16d273Sthsif test "$vde" = "yes" ; then 727898ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 7279e2ad6f16SFam Zheng echo "VDE_LIBS=$vde_libs" >> $config_host_mak 72808a16d273Sthsfi 728158952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 728258952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 728358952137SVincenzo Maffionefi 7284015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 7285015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 7286015a33bdSGongleifi 72874cc600d2SPaolo Bonziniif test "$gprof" = "yes" ; then 72884cc600d2SPaolo Bonzini echo "CONFIG_GPROF=y" >> $config_host_mak 72894cc600d2SPaolo Bonzinifi 729047e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 7291a358bca2SPaolo Bonzini echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak 729247e98658SCorey Bryantfi 72932358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 72940c58ac1cSmalcfor drv in $audio_drv_list; do 72951ef1ec2aSGerd Hoffmann def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]') 7296ce3dc033SGerd Hoffmann case "$drv" in 7297051c7d5cSGerd Hoffmann alsa | oss | pa | sdl) 7298ce3dc033SGerd Hoffmann echo "$def=m" >> $config_host_mak ;; 7299ce3dc033SGerd Hoffmann *) 7300ce3dc033SGerd Hoffmann echo "$def=y" >> $config_host_mak ;; 7301ce3dc033SGerd Hoffmann esac 73020c58ac1cSmalcdone 7303b1149911SFam Zhengecho "ALSA_LIBS=$alsa_libs" >> $config_host_mak 7304b1149911SFam Zhengecho "PULSE_LIBS=$pulse_libs" >> $config_host_mak 7305b1149911SFam Zhengecho "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak 7306b1149911SFam Zhengecho "DSOUND_LIBS=$dsound_libs" >> $config_host_mak 7307b1149911SFam Zhengecho "OSS_LIBS=$oss_libs" >> $config_host_mak 73082e445703SGeoffrey McRaeecho "JACK_LIBS=$jack_libs" >> $config_host_mak 7309d5631638Smalcif test "$audio_win_int" = "yes" ; then 7310d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 7311d5631638Smalcfi 7312b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 7313b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 7314821601eaSJes Sorensenif test "$vnc" = "yes" ; then 7315821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 7316821601eaSJes Sorensenfi 73172f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 731898ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 73192f9606b3Saliguorifi 7320821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 73212f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 73222f6f5c7aSCorentin Charyfi 7323821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 7324efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 7325efe556adSCorentin Charyfi 73266a021536SGerd Hoffmannif test "$xkbcommon" = "yes" ; then 73276a021536SGerd Hoffmann echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak 73286a021536SGerd Hoffmann echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak 73296a021536SGerd Hoffmannfi 7330dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 7331dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 7332dce512deSChristoph Hellwigfi 733389138857SStefan Weilqemu_version=$(head $source_path/VERSION) 733498ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 73352358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 733698ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 73372b1f35b9SAlex Bennéeecho "TARGET_DIRS=$target_list" >> $config_host_mak 7338a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 733998ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 7340cc8ae6deSpbrookfi 734117969268SFam Zhengif test "$modules" = "yes"; then 7342e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 7343e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 734489138857SStefan Weil echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak 734517969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 734617969268SFam Zhengfi 7347bd83c861SChristian Ehrhardtif test "$module_upgrades" = "yes"; then 7348bd83c861SChristian Ehrhardt echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak 7349bd83c861SChristian Ehrhardtfi 7350e633a5c6SEric Blakeif test "$have_x11" = "yes" && test "$need_x11" = "yes"; then 73518781595bSGerd Hoffmann echo "CONFIG_X11=y" >> $config_host_mak 73528781595bSGerd Hoffmann echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak 73538781595bSGerd Hoffmann echo "X11_LIBS=$x11_libs" >> $config_host_mak 73548781595bSGerd Hoffmannfi 73551ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 735696400a14SGerd Hoffmann echo "CONFIG_SDL=m" >> $config_host_mak 73578ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 73588ecc89f6SFam Zheng echo "SDL_LIBS=$sdl_libs" >> $config_host_mak 7359a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes" ; then 7360a442fe2fSDaniel P. Berrangé echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak 7361a442fe2fSDaniel P. Berrangé fi 736249ecc3faSbellardfi 736349ecc3faSbellardif test "$cocoa" = "yes" ; then 736498ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 736549ecc3faSbellardfi 7366e08bb301SSamuel Thibaultif test "$iconv" = "yes" ; then 7367e08bb301SSamuel Thibault echo "CONFIG_ICONV=y" >> $config_host_mak 7368e08bb301SSamuel Thibault echo "ICONV_CFLAGS=$iconv_cflags" >> $config_host_mak 7369e08bb301SSamuel Thibault echo "ICONV_LIBS=$iconv_lib" >> $config_host_mak 7370e08bb301SSamuel Thibaultfi 73714d3b6f6eSbalrogif test "$curses" = "yes" ; then 73722373f7d5SGerd Hoffmann echo "CONFIG_CURSES=m" >> $config_host_mak 73732373f7d5SGerd Hoffmann echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak 73742373f7d5SGerd Hoffmann echo "CURSES_LIBS=$curses_lib" >> $config_host_mak 7375ab4e5602SJan Kiszkafi 7376099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 73772358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 7378099d6b0fSRiku Voipiofi 737940ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 738040ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 738140ff6d7eSKevin Wolffi 73823ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 73832358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 73843ce34dfbSvibisreenivasanfi 7385c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 7386c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 7387c2882b96SRiku Voipiofi 7388751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then 7389751bcc39SMarc-André Lureau echo "CONFIG_MEMFD=y" >> $config_host_mak 7390751bcc39SMarc-André Lureaufi 7391955727d2SCortland Tölvaif test "$have_usbfs" = "yes" ; then 7392955727d2SCortland Tölva echo "CONFIG_USBFS=y" >> $config_host_mak 7393955727d2SCortland Tölvafi 7394d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 7395d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 7396d0927938SUlrich Hechtfi 73973d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 73983d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 73993d4fa43eSKusanagi Kouichifi 7400b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 7401b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 7402b953f075SDenis V. Lunevfi 7403ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 7404ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 7405ed911435SKevin Wolffi 7406c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 7407c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 7408c727f47dSPeter Maydellfi 7409dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 7410dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 7411dace20dcSPeter Maydellfi 7412d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 7413d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 7414d0927938SUlrich Hechtfi 74154e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 74164e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 74174e0c6529SAlex Blighfi 7418cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 7419cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 7420cd758dd0SAlex Blighfi 74213b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 74223b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 74233b6edd16SPeter Maydellfi 74243b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 74253b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 74263b6edd16SPeter Maydellfi 7427a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 7428a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 7429a8fd1abaSPeter Maydellfi 743051834341SRiku Voipioif test "$timerfd" = "yes" ; then 743151834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 743251834341SRiku Voipiofi 74339af5c906SRiku Voipioif test "$setns" = "yes" ; then 74349af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 74359af5c906SRiku Voipiofi 743638860a03SAleksandar Markovicif test "$clock_adjtime" = "yes" ; then 743738860a03SAleksandar Markovic echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak 743838860a03SAleksandar Markovicfi 74395a03cd00SAleksandar Markovicif test "$syncfs" = "yes" ; then 74405a03cd00SAleksandar Markovic echo "CONFIG_SYNCFS=y" >> $config_host_mak 74415a03cd00SAleksandar Markovicfi 7442db37dd89SAleksandar Markovicif test "$kcov" = "yes" ; then 7443db37dd89SAleksandar Markovic echo "CONFIG_KCOV=y" >> $config_host_mak 7444db37dd89SAleksandar Markovicfi 74453b3f24adSaurel32if test "$inotify" = "yes" ; then 74462358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 74473b3f24adSaurel32fi 7448c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 7449c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 7450c05c7a73SRiku Voipiofi 7451401bc051SPeter Maydellif test "$sem_timedwait" = "yes" ; then 7452401bc051SPeter Maydell echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak 7453401bc051SPeter Maydellfi 74545c99fa37SKeno Fischerif test "$strchrnul" = "yes" ; then 74555c99fa37SKeno Fischer echo "HAVE_STRCHRNUL=y" >> $config_host_mak 74565c99fa37SKeno Fischerfi 74578a792b03SJiufei Xueif test "$st_atim" = "yes" ; then 74588a792b03SJiufei Xue echo "HAVE_STRUCT_STAT_ST_ATIM=y" >> $config_host_mak 74598a792b03SJiufei Xuefi 74606ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 74616ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 74626ae9a1f4SJuan Quintelafi 74636ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 74646ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 74656ae9a1f4SJuan Quintelafi 7466769ce76dSAlexander Grafif test "$curl" = "yes" ; then 7467d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 7468b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 74696ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 7470769ce76dSAlexander Graffi 74712e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 747298ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 74738eca2889SFam Zheng echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak 74742e4d9fb1Saurel32fi 7475a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 7476e0fb129cSGerd Hoffmann echo "CONFIG_GTK=m" >> $config_host_mak 7477a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 7478014cb152SGerd Hoffmann echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 7479925a0400SGerd Hoffmann if test "$gtk_gl" = "yes" ; then 7480925a0400SGerd Hoffmann echo "CONFIG_GTK_GL=y" >> $config_host_mak 7481925a0400SGerd Hoffmann fi 7482bbbf9bfbSStefan Weilfi 7483f876b765SMarc-André Lureauif test "$gio" = "yes" ; then 7484f876b765SMarc-André Lureau echo "CONFIG_GIO=y" >> $config_host_mak 7485f876b765SMarc-André Lureau echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak 7486f876b765SMarc-André Lureau echo "GIO_LIBS=$gio_libs" >> $config_host_mak 748725a97a56SMarc-André Lureau echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak 7488f876b765SMarc-André Lureaufi 7489a1c5e949SDaniel P. Berrangeecho "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak 7490ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then 7491ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS=y" >> $config_host_mak 7492ddbb0d09SDaniel P. Berrangefi 749391bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then 749491bfcdb0SDaniel P. Berrange echo "CONFIG_GCRYPT=y" >> $config_host_mak 74951f923c70SLongpeng(Mike) if test "$gcrypt_hmac" = "yes" ; then 74961f923c70SLongpeng(Mike) echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak 74971f923c70SLongpeng(Mike) fi 749862893b67SDaniel P. Berrangefi 749991bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then 750091bfcdb0SDaniel P. Berrange echo "CONFIG_NETTLE=y" >> $config_host_mak 7501becaeb72SRadim Krčmář echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 7502ed754746SDaniel P. Berrangefi 7503e0576942SDaniel P. Berrangéif test "$qemu_private_xts" = "yes" ; then 7504e0576942SDaniel P. Berrangé echo "CONFIG_QEMU_PRIVATE_XTS=y" >> $config_host_mak 7505e0576942SDaniel P. Berrangéfi 75069a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then 75079a2fd434SDaniel P. Berrange echo "CONFIG_TASN1=y" >> $config_host_mak 75089a2fd434SDaniel P. Berrangefi 75098953caf3SDaniel P. Berrangeif test "$auth_pam" = "yes" ; then 75108953caf3SDaniel P. Berrange echo "CONFIG_AUTH_PAM=y" >> $config_host_mak 75118953caf3SDaniel P. Berrangefi 7512559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then 7513559607eaSDaniel P. Berrange echo "HAVE_IFADDRS_H=y" >> $config_host_mak 7514559607eaSDaniel P. Berrangefi 7515e865b97fSChen Gangif test "$have_drm_h" = "yes" ; then 7516e865b97fSChen Gang echo "HAVE_DRM_H=y" >> $config_host_mak 7517e865b97fSChen Gangfi 75186b39b063SEric Blakeif test "$have_broken_size_max" = "yes" ; then 75196b39b063SEric Blake echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak 75206b39b063SEric Blakefi 75219df8b20dSThomas Huthif test "$have_openpty" = "yes" ; then 75229df8b20dSThomas Huth echo "HAVE_OPENPTY=y" >> $config_host_mak 75239df8b20dSThomas Huthfi 75242a4b472cSDavid CARLIERif test "$have_sys_signal_h" = "yes" ; then 75252a4b472cSDavid CARLIER echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak 75262a4b472cSDavid CARLIERfi 7527277abf15SJan Vesely 7528277abf15SJan Vesely# Work around a system header bug with some kernel/XFS header 7529277abf15SJan Vesely# versions where they both try to define 'struct fsxattr': 7530277abf15SJan Vesely# xfs headers will not try to redefine structs from linux headers 7531277abf15SJan Vesely# if this macro is set. 7532277abf15SJan Veselyif test "$have_fsxattr" = "yes" ; then 7533277abf15SJan Vesely echo "HAVE_FSXATTR=y" >> $config_host_mak 7534277abf15SJan Veselyfi 75351efad060SFam Zhengif test "$have_copy_file_range" = "yes" ; then 75361efad060SFam Zheng echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak 75371efad060SFam Zhengfi 7538bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 7539bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 7540a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 7541e0fb129cSGerd Hoffmann echo "VTE_LIBS=$vte_libs" >> $config_host_mak 7542a4ccabcfSAnthony Liguorifi 75439d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then 75449d9e1521SGerd Hoffmann echo "CONFIG_VIRGL=y" >> $config_host_mak 75459d9e1521SGerd Hoffmann echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 75469d9e1521SGerd Hoffmann echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 75479d9e1521SGerd Hoffmannfi 7548e37630caSaliguoriif test "$xen" = "yes" ; then 75496dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 7550d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 7551e37630caSaliguorifi 75525c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 75535c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 75545c6c3a6cSChristoph Hellwigfi 7555c10dd856SAarushi Mehtaif test "$linux_io_uring" = "yes" ; then 7556c10dd856SAarushi Mehta echo "CONFIG_LINUX_IO_URING=y" >> $config_host_mak 7557c10dd856SAarushi Mehta echo "LINUX_IO_URING_CFLAGS=$linux_io_uring_cflags" >> $config_host_mak 7558c10dd856SAarushi Mehta echo "LINUX_IO_URING_LIBS=$linux_io_uring_libs" >> $config_host_mak 7559c10dd856SAarushi Mehtafi 7560758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 7561758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 7562758e8e38SVenkateswararao Jujjuri (JV)fi 75634f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 75644f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 75654f26f2b6SAvi Kivityfi 7566983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 7567758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 7568758e8e38SVenkateswararao Jujjuri (JV)fi 7569fe8fc5aeSPaolo Bonziniif test "$mpath" = "yes" ; then 7570fe8fc5aeSPaolo Bonzini echo "CONFIG_MPATH=y" >> $config_host_mak 75711b0578f5SMurilo Opsfelder Araujo if test "$mpathpersist_new_api" = "yes"; then 75721b0578f5SMurilo Opsfelder Araujo echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak 75731b0578f5SMurilo Opsfelder Araujo fi 7574fe8fc5aeSPaolo Bonzinifi 75755e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 75765e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 75775e9be92dSNicholas Bellingerfi 7578af3bba76SPaolo Bonziniif test "$vhost_net" = "yes" ; then 7579af3bba76SPaolo Bonzini echo "CONFIG_VHOST_NET=y" >> $config_host_mak 7580af3bba76SPaolo Bonzinifi 7581af3bba76SPaolo Bonziniif test "$vhost_net_user" = "yes" ; then 758256f41de7SPaolo Bonzini echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak 758303ce5744SNikolay Nikolaevfi 7584108a6481SCindy Luif test "$vhost_net_vdpa" = "yes" ; then 7585108a6481SCindy Lu echo "CONFIG_VHOST_NET_VDPA=y" >> $config_host_mak 7586108a6481SCindy Lufi 7587042cea27SGongleiif test "$vhost_crypto" = "yes" ; then 7588042cea27SGonglei echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak 7589042cea27SGongleifi 7590fc0b9b0eSStefan Hajnocziif test "$vhost_vsock" = "yes" ; then 7591fc0b9b0eSStefan Hajnoczi echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak 75925fe97d88SStefano Garzarella if test "$vhost_user" = "yes" ; then 75935fe97d88SStefano Garzarella echo "CONFIG_VHOST_USER_VSOCK=y" >> $config_host_mak 75945fe97d88SStefano Garzarella fi 7595fc0b9b0eSStefan Hajnoczifi 7596299e6f19SPaolo Bonziniif test "$vhost_kernel" = "yes" ; then 7597299e6f19SPaolo Bonzini echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak 7598299e6f19SPaolo Bonzinifi 7599e6a74868SMarc-André Lureauif test "$vhost_user" = "yes" ; then 7600e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER=y" >> $config_host_mak 7601e6a74868SMarc-André Lureaufi 7602108a6481SCindy Luif test "$vhost_vdpa" = "yes" ; then 7603108a6481SCindy Lu echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak 7604108a6481SCindy Lufi 760598fc1adaSDr. David Alan Gilbertif test "$vhost_user_fs" = "yes" ; then 760698fc1adaSDr. David Alan Gilbert echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak 760798fc1adaSDr. David Alan Gilbertfi 760877755340Sthsif test "$blobs" = "yes" ; then 760998ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 761077755340Sthsfi 7611bf9298b9Saliguoriif test "$iovec" = "yes" ; then 76122358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 7613bf9298b9Saliguorifi 7614ceb42de8Saliguoriif test "$preadv" = "yes" ; then 76152358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 7616ceb42de8Saliguorifi 7617e3971d61SPhilippe Mathieu-Daudéif test "$fdt" != "no" ; then 76183f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 7619f652e6afSaurel32fi 7620a40161cbSPaolo Bonziniif test "$membarrier" = "yes" ; then 7621a40161cbSPaolo Bonzini echo "CONFIG_MEMBARRIER=y" >> $config_host_mak 7622a40161cbSPaolo Bonzinifi 7623dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 7624dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 7625dcc38d1cSMarcelo Tosattifi 7626d339d766SRichard W.M. Jonesif test "$optreset" = "yes" ; then 7627d339d766SRichard W.M. Jones echo "HAVE_OPTRESET=y" >> $config_host_mak 7628d339d766SRichard W.M. Jonesfi 7629b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes"; then 7630b3f6ea7eSPaolo Bonzini echo "CONFIG_TCG=y" >> $config_host_mak 76319195b2c2SStefan Weil if test "$tcg_interpreter" = "yes" ; then 76329195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 76339195b2c2SStefan Weil fi 7634b3f6ea7eSPaolo Bonzinifi 76355f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 76365f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 76375f6b9e8fSBlue Swirlfi 7638e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 7639e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 7640e78815a5SAndreas Färberfi 7641e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 7642e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 7643e78815a5SAndreas Färberfi 76449bc5a719SAndreas Gustafssonif test "$posix_memalign" = "yes" ; then 76459bc5a719SAndreas Gustafsson echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak 76469bc5a719SAndreas Gustafssonfi 764797a847bcSbellard 7648cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 7649cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 7650cd4ec0b4SGerd Hoffmannfi 7651cd4ec0b4SGerd Hoffmann 76527b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then 76537b02f544SMarc-André Lureau echo "CONFIG_SMARTCARD=y" >> $config_host_mak 76547b62bf5aSFam Zheng echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak 76557b62bf5aSFam Zheng echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak 7656111a38b0SRobert Relyeafi 7657111a38b0SRobert Relyea 76582b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 76592b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 7660b878b652SFam Zheng echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak 7661b878b652SFam Zheng echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak 76622b2325ffSGerd Hoffmannfi 76632b2325ffSGerd Hoffmann 766469354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 766569354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 7666cc7923fcSFam Zheng echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak 7667cc7923fcSFam Zheng echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak 766869354a83SHans de Goedefi 766969354a83SHans de Goede 7670da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 7671da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 7672da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 7673014cb152SGerd Hoffmann if test "$opengl_dmabuf" = "yes" ; then 7674014cb152SGerd Hoffmann echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 7675014cb152SGerd Hoffmann fi 767620ff075bSMichael Wallefi 767720ff075bSMichael Walle 7678d52c454aSMarc-André Lureauif test "$gbm" = "yes" ; then 7679d52c454aSMarc-André Lureau echo "CONFIG_GBM=y" >> $config_host_mak 7680d52c454aSMarc-André Lureau echo "GBM_LIBS=$gbm_libs" >> $config_host_mak 7681d52c454aSMarc-André Lureau echo "GBM_CFLAGS=$gbm_cflags" >> $config_host_mak 7682d52c454aSMarc-André Lureaufi 7683d52c454aSMarc-André Lureau 7684d52c454aSMarc-André Lureau 76855a22ab71SYang Zhongif test "$malloc_trim" = "yes" ; then 76865a22ab71SYang Zhong echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak 76875a22ab71SYang Zhongfi 76885a22ab71SYang Zhong 768999f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then 769099f2dbd3SLiang Li echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 769199f2dbd3SLiang Lifi 769299f2dbd3SLiang Li 76936b8cd447SRobert Hooif test "$avx512f_opt" = "yes" ; then 76946b8cd447SRobert Hoo echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak 76956b8cd447SRobert Hoofi 76966b8cd447SRobert Hoo 7697607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 7698607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 7699607dacd0Sqiaonuohanfi 7700607dacd0Sqiaonuohan 7701607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 7702607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 7703607dacd0Sqiaonuohanfi 7704607dacd0Sqiaonuohan 77056b383c08SPeter Wuif test "$bzip2" = "yes" ; then 77066b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 77076b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 77086b383c08SPeter Wufi 77096b383c08SPeter Wu 771083bc1f97SJulio Faraccoif test "$lzfse" = "yes" ; then 771183bc1f97SJulio Faracco echo "CONFIG_LZFSE=y" >> $config_host_mak 771283bc1f97SJulio Faracco echo "LZFSE_LIBS=-llzfse" >> $config_host_mak 771383bc1f97SJulio Faraccofi 771483bc1f97SJulio Faracco 77153a678481SJuan Quintelaif test "$zstd" = "yes" ; then 77163a678481SJuan Quintela echo "CONFIG_ZSTD=y" >> $config_host_mak 77173a678481SJuan Quintelafi 77183a678481SJuan Quintela 7719c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 7720d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 77216ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 77226ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 7723c589b249SRonnie Sahlbergfi 7724c589b249SRonnie Sahlberg 77256542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 77264be4879fSColin Lord echo "CONFIG_LIBNFS=m" >> $config_host_mak 77274be4879fSColin Lord echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak 77286542aa9cSPeter Lievenfi 77296542aa9cSPeter Lieven 7730f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 7731f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 7732c3883e1fSFam Zheng echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak 7733c3883e1fSFam Zheng echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak 7734f794573eSEduardo Otubofi 7735f794573eSEduardo Otubo 773683fb7adfSbellard# XXX: suppress that 77377d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 77382358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 77397d3505c5Sbellardfi 77407d3505c5Sbellard 77414d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then 77424d9310f4SDaniel P. Berrange echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 77434d9310f4SDaniel P. Berrangefi 77443556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 77453556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 77463556c233SPaolo Bonzinifi 7747f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 7748d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 77496ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 77506ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 7751f27aaf4bSChristian Brunnerfi 775220ff6c80SAnthony Liguori 77537c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 775470c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 775570c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 775670c60c08SStefan Hajnoczielse 775770c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 775870c60c08SStefan Hajnoczifi 7759d0e2fce5SAneesh Kumar K.V 77607d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes" ; then 77617d992e4dSPeter Lieven echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak 77627d992e4dSPeter Lievenfi 77637d992e4dSPeter Lieven 7764f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" ; then 7765f0d92b56SLongpeng(Mike) echo "CONFIG_AF_ALG=y" >> $config_host_mak 7766f0d92b56SLongpeng(Mike)fi 7767f0d92b56SLongpeng(Mike) 7768d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 7769d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 7770d2042378SAneesh Kumar K.Vfi 7771d2042378SAneesh Kumar K.V 7772e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 7773e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 7774e06a765eSHarsh Prateek Borafi 7775e06a765eSHarsh Prateek Bora 77763f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 77773f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 77783f4349dcSKevin Wolffi 77793f4349dcSKevin Wolf 7780d83414e1SMarc-André Lureauif test "$have_asan_iface_fiber" = "yes" ; then 7781d83414e1SMarc-André Lureau echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak 7782d83414e1SMarc-André Lureaufi 7783d83414e1SMarc-André Lureau 77840aebab04SLingfeng Yangif test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then 77850aebab04SLingfeng Yang echo "CONFIG_TSAN=y" >> $config_host_mak 77860aebab04SLingfeng Yangfi 77870aebab04SLingfeng Yang 77888ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 77898ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 77908ab1bf12SLuiz Capitulinofi 77918ab1bf12SLuiz Capitulino 779276a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 779376a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 779476a347e1SRichard Hendersonfi 779576a347e1SRichard Henderson 7796f540166bSRichard Hendersonif test "$int128" = "yes" ; then 7797f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 7798f540166bSRichard Hendersonfi 7799f540166bSRichard Henderson 78007ebee43eSRichard Hendersonif test "$atomic128" = "yes" ; then 78017ebee43eSRichard Henderson echo "CONFIG_ATOMIC128=y" >> $config_host_mak 78027ebee43eSRichard Hendersonfi 78037ebee43eSRichard Henderson 7804e6cd4bb5SRichard Hendersonif test "$cmpxchg128" = "yes" ; then 7805e6cd4bb5SRichard Henderson echo "CONFIG_CMPXCHG128=y" >> $config_host_mak 7806e6cd4bb5SRichard Hendersonfi 7807e6cd4bb5SRichard Henderson 7808df79b996SRichard Hendersonif test "$atomic64" = "yes" ; then 7809df79b996SRichard Henderson echo "CONFIG_ATOMIC64=y" >> $config_host_mak 7810df79b996SRichard Hendersonfi 7811df79b996SRichard Henderson 7812db8aaae8SRichard Hendersonif test "$attralias" = "yes" ; then 7813db8aaae8SRichard Henderson echo "CONFIG_ATTRIBUTE_ALIAS=y" >> $config_host_mak 7814db8aaae8SRichard Hendersonfi 7815db8aaae8SRichard Henderson 78161e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 78171e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 78181e6e9acaSRichard Hendersonfi 78191e6e9acaSRichard Henderson 7820eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 7821d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 78226ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 78236ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 7824eb100396SBharata B Raofi 7825eb100396SBharata B Rao 7826d85fa9ebSJeff Codyif test "$glusterfs_xlator_opt" = "yes" ; then 7827d85fa9ebSJeff Cody echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak 7828d85fa9ebSJeff Codyfi 7829d85fa9ebSJeff Cody 78300c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 78310c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 78320c14fb47SBharata B Raofi 78330c14fb47SBharata B Rao 7834df3a429aSNiels de Vosif test "$glusterfs_fallocate" = "yes" ; then 7835df3a429aSNiels de Vos echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak 7836df3a429aSNiels de Vosfi 7837df3a429aSNiels de Vos 78387c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 78397c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 78407c815372SBharata B Raofi 78417c815372SBharata B Rao 7842e014dbe7SPrasanna Kumar Kaleverif test "$glusterfs_ftruncate_has_stat" = "yes" ; then 7843e014dbe7SPrasanna Kumar Kalever echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak 7844e014dbe7SPrasanna Kumar Kaleverfi 7845e014dbe7SPrasanna Kumar Kalever 78460e3b891fSNiels de Vosif test "$glusterfs_iocb_has_stat" = "yes" ; then 78470e3b891fSNiels de Vos echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak 78480e3b891fSNiels de Vosfi 78490e3b891fSNiels de Vos 7850b10d49d7SPino Toscanoif test "$libssh" = "yes" ; then 7851b10d49d7SPino Toscano echo "CONFIG_LIBSSH=m" >> $config_host_mak 7852b10d49d7SPino Toscano echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak 7853b10d49d7SPino Toscano echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak 78540a12ec87SRichard W.M. Jonesfi 78550a12ec87SRichard W.M. Jones 7856ed1701c6SDr. David Alan Gilbertif test "$live_block_migration" = "yes" ; then 7857ed1701c6SDr. David Alan Gilbert echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak 7858ed1701c6SDr. David Alan Gilbertfi 7859ed1701c6SDr. David Alan Gilbert 78603b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 78613cae16dbSPaolo Bonzini echo 'CONFIG_TPM=y' >> $config_host_mak 78623b8acc11SPaolo Bonzinifi 78633b8acc11SPaolo Bonzini 78645b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 78655b808275SLluís Vilanovaif have_backend "nop"; then 78666d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 786722890ab5SPrerna Saxenafi 78685b808275SLluís Vilanovaif have_backend "simple"; then 78696d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 78706d8a764eSLluís # Set the appropriate trace file. 7871953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 78729410b56cSPrerna Saxenafi 7873ed7f5f1dSPaolo Bonziniif have_backend "log"; then 7874ed7f5f1dSPaolo Bonzini echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 78756d8a764eSLluísfi 78765b808275SLluís Vilanovaif have_backend "ust"; then 78776d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 78786d8a764eSLluísfi 78795b808275SLluís Vilanovaif have_backend "dtrace"; then 78806d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 78816d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 78826d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 78836d8a764eSLluís fi 7884c276b17dSDaniel P. Berrangefi 78855b808275SLluís Vilanovaif have_backend "ftrace"; then 7886781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 7887781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 7888781e9545SEiichi Tsukata else 788921684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 7890781e9545SEiichi Tsukata fi 7891781e9545SEiichi Tsukatafi 78920a852417SPaul Durrantif have_backend "syslog"; then 78930a852417SPaul Durrant if test "$posix_syslog" = "yes" ; then 78940a852417SPaul Durrant echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak 78950a852417SPaul Durrant else 78960a852417SPaul Durrant feature_not_found "syslog(trace backend)" "syslog not available" 78970a852417SPaul Durrant fi 78980a852417SPaul Durrantfi 78999410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 79009410b56cSPrerna Saxena 79012da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 79022da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 7903392fb643SFam Zheng echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak 79042da776dbSMichael R. Hinesfi 79052da776dbSMichael R. Hines 790621ab34c9SMarcel Apfelbaumif test "$pvrdma" = "yes" ; then 790721ab34c9SMarcel Apfelbaum echo "CONFIG_PVRDMA=y" >> $config_host_mak 790821ab34c9SMarcel Apfelbaumfi 790921ab34c9SMarcel Apfelbaum 7910575b22b1SLaurent Vivierif test "$have_rtnetlink" = "yes" ; then 7911575b22b1SLaurent Vivier echo "CONFIG_RTNETLINK=y" >> $config_host_mak 7912575b22b1SLaurent Vivierfi 7913575b22b1SLaurent Vivier 7914ed279a06SKlim Kireevif test "$libxml2" = "yes" ; then 7915ed279a06SKlim Kireev echo "CONFIG_LIBXML2=y" >> $config_host_mak 7916ed279a06SKlim Kireev echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak 7917ed279a06SKlim Kireev echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak 7918ed279a06SKlim Kireevfi 7919ed279a06SKlim Kireev 7920a6b1d4c0SChanglong Xieif test "$replication" = "yes" ; then 7921a6b1d4c0SChanglong Xie echo "CONFIG_REPLICATION=y" >> $config_host_mak 7922a6b1d4c0SChanglong Xiefi 7923a6b1d4c0SChanglong Xie 79246a02c806SStefan Hajnocziif test "$have_af_vsock" = "yes" ; then 79256a02c806SStefan Hajnoczi echo "CONFIG_AF_VSOCK=y" >> $config_host_mak 79266a02c806SStefan Hajnoczifi 79276a02c806SStefan Hajnoczi 79284d04351fSChristopher Covingtonif test "$have_sysmacros" = "yes" ; then 79294d04351fSChristopher Covington echo "CONFIG_SYSMACROS=y" >> $config_host_mak 79304d04351fSChristopher Covingtonfi 79314d04351fSChristopher Covington 793249e00a18SAndreas Grapentinif test "$have_static_assert" = "yes" ; then 793349e00a18SAndreas Grapentin echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak 793449e00a18SAndreas Grapentinfi 793549e00a18SAndreas Grapentin 7936e674605fSTomáš Golembiovskýif test "$have_utmpx" = "yes" ; then 7937e674605fSTomáš Golembiovský echo "HAVE_UTMPX=y" >> $config_host_mak 7938e674605fSTomáš Golembiovskýfi 7939db1ed1abSRichard Hendersonif test "$have_getrandom" = "yes" ; then 7940db1ed1abSRichard Henderson echo "CONFIG_GETRANDOM=y" >> $config_host_mak 7941db1ed1abSRichard Hendersonfi 7942e0580342SKamil Rytarowskiif test "$ivshmem" = "yes" ; then 7943e0580342SKamil Rytarowski echo "CONFIG_IVSHMEM=y" >> $config_host_mak 7944e0580342SKamil Rytarowskifi 7945e219c499SRichard Hendersonif test "$capstone" != "no" ; then 79468ca80760SRichard Henderson echo "CONFIG_CAPSTONE=y" >> $config_host_mak 79478ca80760SRichard Hendersonfi 7948ba59fb77SPaolo Bonziniif test "$debug_mutex" = "yes" ; then 7949ba59fb77SPaolo Bonzini echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak 7950ba59fb77SPaolo Bonzinifi 7951e0580342SKamil Rytarowski 79525c312079SDr. David Alan Gilbert# Hold two types of flag: 79535c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 79545c312079SDr. David Alan Gilbert# a thread we have a handle to 7955479a5747SRoman Bolshakov# CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular 79565c312079SDr. David Alan Gilbert# platform 7957479a5747SRoman Bolshakovif test "$pthread_setname_np_w_tid" = "yes" ; then 79585c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 7959479a5747SRoman Bolshakov echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak 7960479a5747SRoman Bolshakovelif test "$pthread_setname_np_wo_tid" = "yes" ; then 7961479a5747SRoman Bolshakov echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 7962479a5747SRoman Bolshakov echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak 79635c312079SDr. David Alan Gilbertfi 79645c312079SDr. David Alan Gilbert 796517824406SJunyan Heif test "$libpmem" = "yes" ; then 796617824406SJunyan He echo "CONFIG_LIBPMEM=y" >> $config_host_mak 796717824406SJunyan Hefi 796817824406SJunyan He 796921b2eca6SJingqi Liuif test "$libdaxctl" = "yes" ; then 797021b2eca6SJingqi Liu echo "CONFIG_LIBDAXCTL=y" >> $config_host_mak 797121b2eca6SJingqi Liufi 797221b2eca6SJingqi Liu 79732f740136SJeff Codyif test "$bochs" = "yes" ; then 79742f740136SJeff Cody echo "CONFIG_BOCHS=y" >> $config_host_mak 79752f740136SJeff Codyfi 79762f740136SJeff Codyif test "$cloop" = "yes" ; then 79772f740136SJeff Cody echo "CONFIG_CLOOP=y" >> $config_host_mak 79782f740136SJeff Codyfi 79792f740136SJeff Codyif test "$dmg" = "yes" ; then 79802f740136SJeff Cody echo "CONFIG_DMG=y" >> $config_host_mak 79812f740136SJeff Codyfi 79822f740136SJeff Codyif test "$qcow1" = "yes" ; then 79832f740136SJeff Cody echo "CONFIG_QCOW1=y" >> $config_host_mak 79842f740136SJeff Codyfi 79852f740136SJeff Codyif test "$vdi" = "yes" ; then 79862f740136SJeff Cody echo "CONFIG_VDI=y" >> $config_host_mak 79872f740136SJeff Codyfi 79882f740136SJeff Codyif test "$vvfat" = "yes" ; then 79892f740136SJeff Cody echo "CONFIG_VVFAT=y" >> $config_host_mak 79902f740136SJeff Codyfi 79912f740136SJeff Codyif test "$qed" = "yes" ; then 79922f740136SJeff Cody echo "CONFIG_QED=y" >> $config_host_mak 79932f740136SJeff Codyfi 79942f740136SJeff Codyif test "$parallels" = "yes" ; then 79952f740136SJeff Cody echo "CONFIG_PARALLELS=y" >> $config_host_mak 79962f740136SJeff Codyfi 79972f740136SJeff Codyif test "$sheepdog" = "yes" ; then 79982f740136SJeff Cody echo "CONFIG_SHEEPDOG=y" >> $config_host_mak 79992f740136SJeff Codyfi 8000c9c8b88fSDavid CARLIERif test "$pty_h" = "yes" ; then 8001c9c8b88fSDavid CARLIER echo "HAVE_PTY_H=y" >> $config_host_mak 8002c9c8b88fSDavid CARLIERfi 8003195588ccSDavid CARLIERif test "$have_mlockall" = "yes" ; then 8004195588ccSDavid CARLIER echo "HAVE_MLOCKALL=y" >> $config_host_mak 8005195588ccSDavid CARLIERfi 8006adc28027SAlexander Bulekovif test "$fuzzing" = "yes" ; then 8007adc28027SAlexander Bulekov if test "$have_fuzzer" = "yes"; then 8008dd016265SAlexander Bulekov FUZZ_LDFLAGS=" -fsanitize=fuzzer" 8009dd016265SAlexander Bulekov FUZZ_CFLAGS=" -fsanitize=fuzzer" 8010086d5f75SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -fsanitize=fuzzer-no-link" 8011adc28027SAlexander Bulekov else 8012dd016265SAlexander Bulekov error_exit "Your compiler doesn't support -fsanitize=fuzzer" 8013adc28027SAlexander Bulekov exit 1 8014adc28027SAlexander Bulekov fi 8015adc28027SAlexander Bulekovfi 80162f740136SJeff Cody 801740e8c6f4SAlex Bennéeif test "$plugins" = "yes" ; then 801840e8c6f4SAlex Bennée echo "CONFIG_PLUGIN=y" >> $config_host_mak 801940e8c6f4SAlex Bennée LIBS="-ldl $LIBS" 802026fffe29SEmilio G. Cota # Copy the export object list to the build dir 802126fffe29SEmilio G. Cota if test "$ld_dynamic_list" = "yes" ; then 802226fffe29SEmilio G. Cota echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak 802326fffe29SEmilio G. Cota ld_symbols=qemu-plugins-ld.symbols 802426fffe29SEmilio G. Cota cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols 802526fffe29SEmilio G. Cota elif test "$ld_exported_symbols_list" = "yes" ; then 802626fffe29SEmilio G. Cota echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak 802726fffe29SEmilio G. Cota ld64_symbols=qemu-plugins-ld64.symbols 802826fffe29SEmilio G. Cota echo "# Automatically generated by configure - do not modify" > $ld64_symbols 802926fffe29SEmilio G. Cota grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" | sed 's/;//g' | \ 803026fffe29SEmilio G. Cota sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols 803126fffe29SEmilio G. Cota else 803226fffe29SEmilio G. Cota error_exit \ 803326fffe29SEmilio G. Cota "If \$plugins=yes, either \$ld_dynamic_list or " \ 803426fffe29SEmilio G. Cota "\$ld_exported_symbols_list should have been set to 'yes'." 803526fffe29SEmilio G. Cota fi 803640e8c6f4SAlex Bennéefi 803740e8c6f4SAlex Bennée 8038f48e590aSAlex Bennéeif test -n "$gdb_bin" ; then 8039f48e590aSAlex Bennée echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak 8040f48e590aSAlex Bennéefi 8041f48e590aSAlex Bennée 804254e7aac0SAlexey Krasikovif test "$secret_keyring" = "yes" ; then 804354e7aac0SAlexey Krasikov echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak 804492500362SAlexey Krasikov if test "$have_keyutils" = "yes" ; then 804592500362SAlexey Krasikov echo "CONFIG_TEST_SECRET_KEYRING=y" >> $config_host_mak 804692500362SAlexey Krasikov fi 804754e7aac0SAlexey Krasikovfi 804854e7aac0SAlexey Krasikov 80495b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 805025211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/tci $QEMU_INCLUDES" 80515b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 805225211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/sparc $QEMU_INCLUDES" 80535b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 805425211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/s390 $QEMU_INCLUDES" 8055e633a5c6SEric Blakeelif test "$ARCH" = "x86_64" || test "$ARCH" = "x32" ; then 805625211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/i386 $QEMU_INCLUDES" 805740d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 805825211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/ppc $QEMU_INCLUDES" 8059e633a5c6SEric Blakeelif test "$ARCH" = "riscv32" || test "$ARCH" = "riscv64" ; then 806025211446SPaolo Bonzini QEMU_INCLUDES="-I${source_path}/tcg/riscv $QEMU_INCLUDES" 80615b5e3037SPaolo Bonzinielse 806225211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/${ARCH} $QEMU_INCLUDES" 80635b5e3037SPaolo Bonzinifi 80645b5e3037SPaolo Bonzini 8065fdbff6bdSPhilippe Mathieu-Daudéecho "HELPERS=$helpers" >> $config_host_mak 806698ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 806798ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 8068804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 8069804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 80701901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 80711901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 80721901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 807321655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 8074c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 80752eb054c2SPeter Maydellecho "SPHINX_BUILD=$sphinx_build" >> $config_host_mak 8076516e8b7dSPeter Maydellecho "SPHINX_WERROR=$sphinx_werror" >> $config_host_mak 807739d87c8cSAlex Bennéeecho "GENISOIMAGE=$genisoimage" >> $config_host_mak 8078a5665051SPaolo Bonziniecho "MESON=$meson" >> $config_host_mak 8079804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 8080a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 8081a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 8082a31a8642SMichael S. Tsirkinfi 8083804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 808483f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 80853c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 8086804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 808745d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 8088cdbd727cSRichard Hendersonecho "AS=$as" >> $config_host_mak 80895f6f0e27SRichard Hendersonecho "CCAS=$ccas" >> $config_host_mak 80903dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 8091804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 8092804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 80939f81aeb5SAlistair Francisecho "RANLIB=$ranlib" >> $config_host_mak 80944852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 8095daa79d9aSAlex Bennéeecho "PKG_CONFIG=$pkg_config_exe" >> $config_host_mak 80969fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 8097e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 8098086d5f75SPaolo Bonziniecho "CXXFLAGS=$CXXFLAGS" >> $config_host_mak 809946eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 8100a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 810111cde1c8SBruno Dominguezecho "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak 8102f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 8103e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 8104e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 810580fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 81062944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 8107e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 8108e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 8109e39f0062SPaolo Bonzinifi 81108a99e9a3SPhilippe Mathieu-Daudéecho "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak 8111db5adeaaSPaolo Bonziniecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 81126969ec6cSJames Clarkeecho "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak 8113e57218b6SPeter Maydellecho "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak 811473da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 81153e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 8116409437e1SDaniel P. Berrangeecho "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak 8117804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 811817969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 811917969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 8120957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 812190246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 812290246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 812394dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 81241d728c39SBlue Swirlif test "$gcov" = "yes" ; then 81251d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 81261d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 81271d728c39SBlue Swirlfi 8128804edf29SJuan Quintela 81293efac6ebSTomáš Golembiovskýif test "$libudev" != "no"; then 81303efac6ebSTomáš Golembiovský echo "CONFIG_LIBUDEV=y" >> $config_host_mak 81313efac6ebSTomáš Golembiovský echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak 81323efac6ebSTomáš Golembiovskýfi 8133adc28027SAlexander Bulekovif test "$fuzzing" != "no"; then 8134adc28027SAlexander Bulekov echo "CONFIG_FUZZ=y" >> $config_host_mak 8135adc28027SAlexander Bulekov echo "FUZZ_CFLAGS=$FUZZ_CFLAGS" >> $config_host_mak 8136adc28027SAlexander Bulekov echo "FUZZ_LDFLAGS=$FUZZ_LDFLAGS" >> $config_host_mak 8137adc28027SAlexander Bulekovfi 81383efac6ebSTomáš Golembiovský 813905dfa22bSPhilippe Mathieu-Daudéif test "$edk2_blobs" = "yes" ; then 814005dfa22bSPhilippe Mathieu-Daudé echo "DECOMPRESS_EDK2_BLOBS=y" >> $config_host_mak 814105dfa22bSPhilippe Mathieu-Daudéfi 814205dfa22bSPhilippe Mathieu-Daudé 8143b767d257SMarek Marczykowski-Góreckiif test "$rng_none" = "yes"; then 8144b767d257SMarek Marczykowski-Górecki echo "CONFIG_RNG_NONE=y" >> $config_host_mak 8145b767d257SMarek Marczykowski-Góreckifi 8146b767d257SMarek Marczykowski-Górecki 81476efd7517SPeter Maydell# use included Linux headers 81486efd7517SPeter Maydellif test "$linux" = "yes" ; then 8149a307beb6SAndreas Färber mkdir -p linux-headers 81506efd7517SPeter Maydell case "$cpu" in 8151c72b26ecSRichard Henderson i386|x86_64|x32) 815208312a63SPeter Maydell linux_arch=x86 81536efd7517SPeter Maydell ;; 8154f8378accSRichard Henderson ppc|ppc64|ppc64le) 815508312a63SPeter Maydell linux_arch=powerpc 81566efd7517SPeter Maydell ;; 81576efd7517SPeter Maydell s390x) 815808312a63SPeter Maydell linux_arch=s390 815908312a63SPeter Maydell ;; 81601f080313SClaudio Fontana aarch64) 81611f080313SClaudio Fontana linux_arch=arm64 81621f080313SClaudio Fontana ;; 8163222e7d11SSanjay Lal mips64) 8164222e7d11SSanjay Lal linux_arch=mips 8165222e7d11SSanjay Lal ;; 816608312a63SPeter Maydell *) 816708312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 816808312a63SPeter Maydell linux_arch="$cpu" 81696efd7517SPeter Maydell ;; 81706efd7517SPeter Maydell esac 817108312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 817208312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 817308312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 817408312a63SPeter Maydell fi 81756efd7517SPeter Maydellfi 81766efd7517SPeter Maydell 817797a847bcSbellardfor target in $target_list; do 817897a847bcSbellardtarget_dir="$target" 817925be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 818089138857SStefan Weiltarget_name=$(echo $target | cut -d '-' -f 1) 818152bf9771Stony.nguyen@bt.comtarget_aligned_only="no" 818252bf9771Stony.nguyen@bt.comcase "$target_name" in 818352bf9771Stony.nguyen@bt.com alpha|hppa|mips64el|mips64|mipsel|mips|mipsn32|mipsn32el|sh4|sh4eb|sparc|sparc64|sparc32plus|xtensa|xtensaeb) 818452bf9771Stony.nguyen@bt.com target_aligned_only="yes" 818552bf9771Stony.nguyen@bt.com ;; 818652bf9771Stony.nguyen@bt.comesac 818797a847bcSbellardtarget_bigendian="no" 8188c1799a84SPaolo Bonzinicase "$target_name" in 8189a69dc537SThomas Huth armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 819052bf9771Stony.nguyen@bt.com target_bigendian="yes" 8191ea2d6a39SJuan Quintela ;; 8192ea2d6a39SJuan Quintelaesac 819397a847bcSbellardtarget_softmmu="no" 8194997344f3Sbellardtarget_user_only="no" 8195831b7825Sthstarget_linux_user="no" 819684778508Sblueswir1target_bsd_user="no" 81979e407a85Spbrookcase "$target" in 8198c1799a84SPaolo Bonzini ${target_name}-softmmu) 81999e407a85Spbrook target_softmmu="yes" 82009e407a85Spbrook ;; 8201c1799a84SPaolo Bonzini ${target_name}-linux-user) 82029e407a85Spbrook target_user_only="yes" 82039e407a85Spbrook target_linux_user="yes" 82049e407a85Spbrook ;; 8205c1799a84SPaolo Bonzini ${target_name}-bsd-user) 820684778508Sblueswir1 target_user_only="yes" 820784778508Sblueswir1 target_bsd_user="yes" 820884778508Sblueswir1 ;; 82099e407a85Spbrook *) 821076ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 82119e407a85Spbrook exit 1 82129e407a85Spbrook ;; 82139e407a85Spbrookesac 8214831b7825Sths 821597a847bcSbellardmkdir -p $target_dir 821625be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 821797a847bcSbellard 8218e5fe0c52Spbrookbflt="no" 8219ca759f9eSAlex Bennéemttcg="no" 822089138857SStefan Weilinterp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g") 822156aebc89Spbrookgdb_xml_files="" 82227ba1e619Saliguori 8223c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 82246acff7daSJuan QuintelaTARGET_BASE_ARCH="" 8225e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 8226e73aae67SJuan Quintela 8227c1799a84SPaolo Bonzinicase "$target_name" in 82282408a527Saurel32 i386) 82290a7fa00aSEmilio G. Cota mttcg="yes" 82307b0f97baSDoug Gale gdb_xml_files="i386-32bit.xml" 823128988117SLaurent Vivier TARGET_SYSTBL_ABI=i386 82322408a527Saurel32 ;; 82332408a527Saurel32 x86_64) 82346acff7daSJuan Quintela TARGET_BASE_ARCH=i386 82358d62f35aSLaurent Vivier TARGET_SYSTBL_ABI=common,64 82360a7fa00aSEmilio G. Cota mttcg="yes" 82377b0f97baSDoug Gale gdb_xml_files="i386-64bit.xml" 82382408a527Saurel32 ;; 82392408a527Saurel32 alpha) 82405ee4f3c2SRichard Henderson mttcg="yes" 82416116aea9SLaurent Vivier TARGET_SYSTBL_ABI=common 82422408a527Saurel32 ;; 82432408a527Saurel32 arm|armeb) 8244b498c8a0SJuan Quintela TARGET_ARCH=arm 82455bcb4986SLaurent Vivier TARGET_SYSTBL_ABI=common,oabi 8246e5fe0c52Spbrook bflt="yes" 8247ca759f9eSAlex Bennée mttcg="yes" 8248c888f7e0SPeter Maydell gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml arm-m-profile.xml" 82492408a527Saurel32 ;; 8250722dd7beSMichael Weiser aarch64|aarch64_be) 8251722dd7beSMichael Weiser TARGET_ARCH=aarch64 82526a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 82536a49fa95SAlexander Graf bflt="yes" 8254ca759f9eSAlex Bennée mttcg="yes" 8255c888f7e0SPeter 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" 82566a49fa95SAlexander Graf ;; 825742f3ff00SMichael Rolnik avr) 825842f3ff00SMichael Rolnik gdb_xml_files="avr-cpu.xml" 825942f3ff00SMichael Rolnik target_compiler=$cross_cc_avr 826042f3ff00SMichael Rolnik ;; 82612408a527Saurel32 cris) 82622408a527Saurel32 ;; 826361766fe9SRichard Henderson hppa) 82647b93dab5SRichard Henderson mttcg="yes" 82659566f4c6SLaurent Vivier TARGET_SYSTBL_ABI=common,32 826661766fe9SRichard Henderson ;; 8267613a22c9SMichael Walle lm32) 8268613a22c9SMichael Walle ;; 82692408a527Saurel32 m68k) 82700938cda5Saurel32 bflt="yes" 8271a976ed3fSKONRAD Frederic gdb_xml_files="cf-core.xml cf-fp.xml m68k-core.xml m68k-fp.xml" 82725b85cae9SLaurent Vivier TARGET_SYSTBL_ABI=common 82732408a527Saurel32 ;; 8274877fdc12SEdgar E. Iglesias microblaze|microblazeel) 8275877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 8276ddf0c4cdSLaurent Vivier TARGET_SYSTBL_ABI=common 827772b675caSEdgar E. Iglesias bflt="yes" 8278be73ef64SEdgar E. Iglesias echo "TARGET_ABI32=y" >> $config_target_mak 827972b675caSEdgar E. Iglesias ;; 82802408a527Saurel32 mips|mipsel) 82810454728cSAleksandar Markovic mttcg="yes" 8282b498c8a0SJuan Quintela TARGET_ARCH=mips 828325be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 8284c59716fcSLaurent Vivier TARGET_SYSTBL_ABI=o32 82852408a527Saurel32 ;; 82862408a527Saurel32 mipsn32|mipsn32el) 82870454728cSAleksandar Markovic mttcg="yes" 8288597e2cecSRichard Henderson TARGET_ARCH=mips64 82896acff7daSJuan Quintela TARGET_BASE_ARCH=mips 829025be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 8291597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 8292686a0fe4SLaurent Vivier TARGET_SYSTBL_ABI=n32 82932408a527Saurel32 ;; 82942408a527Saurel32 mips64|mips64el) 8295a092a955SAlex Bennée mttcg="no" 8296b498c8a0SJuan Quintela TARGET_ARCH=mips64 82976acff7daSJuan Quintela TARGET_BASE_ARCH=mips 829825be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 8299686a0fe4SLaurent Vivier TARGET_SYSTBL_ABI=n64 83002408a527Saurel32 ;; 8301d15a9c23SAnthony Green moxie) 8302d15a9c23SAnthony Green ;; 8303e671711cSMarek Vasut nios2) 8304e671711cSMarek Vasut ;; 83054a09d0bbSRichard Henderson or1k) 8306e67db06eSJia Liu TARGET_ARCH=openrisc 8307e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 8308e67db06eSJia Liu ;; 83092408a527Saurel32 ppc) 8310c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 831176a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,32 83122408a527Saurel32 ;; 83132408a527Saurel32 ppc64) 83146acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 8315e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 831676a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,64 8317f0b0685dSNikunj A Dadhania mttcg=yes 83181438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 83192408a527Saurel32 ;; 83209c35126cSDoug Kwan ppc64le) 83219c35126cSDoug Kwan TARGET_ARCH=ppc64 83229c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 83239c35126cSDoug Kwan TARGET_ABI_DIR=ppc 832476a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,64 8325f0b0685dSNikunj A Dadhania mttcg=yes 83261438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 83279c35126cSDoug Kwan ;; 83282408a527Saurel32 ppc64abi32) 8329b498c8a0SJuan Quintela TARGET_ARCH=ppc64 83306acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 8331e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 833276a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,32 833325be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 83341438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 83352408a527Saurel32 ;; 833625fa194bSMichael Clark riscv32) 833725fa194bSMichael Clark TARGET_BASE_ARCH=riscv 833825fa194bSMichael Clark TARGET_ABI_DIR=riscv 833925fa194bSMichael Clark mttcg=yes 8340ae4a70c0SKeith Packard gdb_xml_files="riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-32bit-csr.xml riscv-32bit-virtual.xml" 834125fa194bSMichael Clark ;; 834225fa194bSMichael Clark riscv64) 834325fa194bSMichael Clark TARGET_BASE_ARCH=riscv 834425fa194bSMichael Clark TARGET_ABI_DIR=riscv 834525fa194bSMichael Clark mttcg=yes 8346ae4a70c0SKeith Packard gdb_xml_files="riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml riscv-64bit-virtual.xml" 834725fa194bSMichael Clark ;; 8348c8c35e5fSYoshinori Sato rx) 8349c8c35e5fSYoshinori Sato TARGET_ARCH=rx 8350c8c35e5fSYoshinori Sato bflt="yes" 8351c8c35e5fSYoshinori Sato target_compiler=$cross_cc_rx 8352c8c35e5fSYoshinori Sato gdb_xml_files="rx-core.xml" 8353c8c35e5fSYoshinori Sato ;; 83542408a527Saurel32 sh4|sh4eb) 8355b498c8a0SJuan Quintela TARGET_ARCH=sh4 8356d0c832f6SLaurent Vivier TARGET_SYSTBL_ABI=common 83574dbed897Spbrook bflt="yes" 83582408a527Saurel32 ;; 83592408a527Saurel32 sparc) 8360bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,32 83612408a527Saurel32 ;; 83622408a527Saurel32 sparc64) 83636acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 8364bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,64 83652408a527Saurel32 ;; 83662408a527Saurel32 sparc32plus) 8367b498c8a0SJuan Quintela TARGET_ARCH=sparc64 83686acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 8369e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 8370bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,32 837125be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 83722408a527Saurel32 ;; 837324e804ecSAlexander Graf s390x) 8374318f371dSLaurent Vivier TARGET_SYSTBL_ABI=common,64 837563685bc4SDavid Hildenbrand mttcg=yes 837686158a2aSChristian 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" 837724e804ecSAlexander Graf ;; 8378444e06b1SChen Gang tilegx) 8379444e06b1SChen Gang ;; 83805ecaa4edSPeter Crosthwaite tricore) 83815ecaa4edSPeter Crosthwaite ;; 8382d2fbca94SGuan Xuetao unicore32) 8383d2fbca94SGuan Xuetao ;; 8384cfa550c6SMax Filippov xtensa|xtensaeb) 8385cfa550c6SMax Filippov TARGET_ARCH=xtensa 8386a4a93592SLaurent Vivier TARGET_SYSTBL_ABI=common 838702e33e9fSMax Filippov bflt="yes" 83889fb40342SMax Filippov mttcg="yes" 8389cfa550c6SMax Filippov ;; 83902408a527Saurel32 *) 839176ad07a4SPeter Maydell error_exit "Unsupported target CPU" 83922408a527Saurel32 ;; 83932408a527Saurel32esac 83945e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 83955e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 83965e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 83975e8861a0SPaolo Bonzinifi 83985e8861a0SPaolo Bonzini 83995e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 84005e8861a0SPaolo Bonzini 840199afc91dSDaniel P. Berrangeupper() { 840299afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 840399afc91dSDaniel P. Berrange} 840499afc91dSDaniel P. Berrange 840589138857SStefan Weiltarget_arch_name="$(upper $TARGET_ARCH)" 840625be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 8407c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 840825be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 8409e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 8410e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 8411e6e91b9cSJuan Quintelafi 841225be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 8413adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 8414adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 8415adfc3e91SStacey Sonfi 84164d6a835dSLaurent Vivierif [ "$TARGET_SYSTBL_ABI" != "" ]; then 84174d6a835dSLaurent Vivier echo "TARGET_SYSTBL_ABI=$TARGET_SYSTBL_ABI" >> $config_target_mak 84184d6a835dSLaurent Vivierfi 84193b6b7550SPaolo Bonzini 84203b6b7550SPaolo Bonziniif supported_xen_target $target; then 842125be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 8422e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_XEN=y" >> $config_host_mak 8423eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 8424eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 8425eb6fda0fSAnthony PERARD fi 8426e0e312f3SPaolo Bonzinielse 8427e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_XEN=n" >> $config_host_mak 8428432d268cSJun Nakajimafi 84293b6b7550SPaolo Bonziniif supported_kvm_target $target; then 843025be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 8431e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_KVM=y" >> $config_host_mak 8432e0e312f3SPaolo Bonzinielse 8433e0e312f3SPaolo Bonzini echo "$target/config-devices.mak: CONFIG_KVM=n" >> $config_host_mak 8434c59249f9SJuan Quintelafi 84353b6b7550SPaolo Bonziniif supported_hax_target $target; then 8436b0cb0a66SVincent Palatin echo "CONFIG_HAX=y" >> $config_target_mak 8437b0cb0a66SVincent Palatinfi 8438c97d6d2cSSergio Andres Gomez Del Realif supported_hvf_target $target; then 8439c97d6d2cSSergio Andres Gomez Del Real echo "CONFIG_HVF=y" >> $config_target_mak 8440c97d6d2cSSergio Andres Gomez Del Realfi 8441d661d9a4SJustin Terry (VM)if supported_whpx_target $target; then 8442d661d9a4SJustin Terry (VM) echo "CONFIG_WHPX=y" >> $config_target_mak 8443d661d9a4SJustin Terry (VM)fi 844452bf9771Stony.nguyen@bt.comif test "$target_aligned_only" = "yes" ; then 844552bf9771Stony.nguyen@bt.com echo "TARGET_ALIGNED_ONLY=y" >> $config_target_mak 844652bf9771Stony.nguyen@bt.comfi 8447de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 844825be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 844997a847bcSbellardfi 845097a847bcSbellardif test "$target_softmmu" = "yes" ; then 845125be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 8452ca759f9eSAlex Bennée if test "$mttcg" = "yes" ; then 8453ca759f9eSAlex Bennée echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak 8454ca759f9eSAlex Bennée fi 8455de83cd02Sbellardfi 8456997344f3Sbellardif test "$target_user_only" = "yes" ; then 845725be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 8458a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 8459997344f3Sbellardfi 8460831b7825Sthsif test "$target_linux_user" = "yes" ; then 846125be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 8462831b7825Sthsfi 846356aebc89Spbrooklist="" 846456aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 846556aebc89Spbrook for x in $gdb_xml_files; do 846656aebc89Spbrook list="$list $source_path/gdb-xml/$x" 846756aebc89Spbrook done 846825be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 84693d0f1517SJuan Quintelafi 8470de83cd02Sbellard 8471e633a5c6SEric Blakeif test "$target_user_only" = "yes" && test "$bflt" = "yes"; then 847225be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 8473e5fe0c52Spbrookfi 847484778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 847525be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 847684778508Sblueswir1fi 84775b0753e0Sbellard 8478d75402b5SAlex Bennée 8479db5adeaaSPaolo Bonzini# generate QEMU_CFLAGS/QEMU_LDFLAGS for targets 8480fa282484SJuan Quintela 84814afddb55SJuan Quintelacflags="" 8482fa282484SJuan Quintelaldflags="" 84839b8e111fSJuan Quintela 8484c765fcacSPeter Crosthwaitedisas_config() { 8485c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> $config_target_mak 8486c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 8487c765fcacSPeter Crosthwaite} 8488c765fcacSPeter Crosthwaite 848964656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 849064656024SJuan Quintela case "$i" in 849164656024SJuan Quintela alpha) 8492c765fcacSPeter Crosthwaite disas_config "ALPHA" 849364656024SJuan Quintela ;; 849482295d8aSRichard Henderson aarch64) 849582295d8aSRichard Henderson if test -n "${cxx}"; then 8496c765fcacSPeter Crosthwaite disas_config "ARM_A64" 849782295d8aSRichard Henderson fi 849882295d8aSRichard Henderson ;; 849964656024SJuan Quintela arm) 8500c765fcacSPeter Crosthwaite disas_config "ARM" 8501999b53ecSClaudio Fontana if test -n "${cxx}"; then 8502c765fcacSPeter Crosthwaite disas_config "ARM_A64" 8503999b53ecSClaudio Fontana fi 850464656024SJuan Quintela ;; 850542f3ff00SMichael Rolnik avr) 850642f3ff00SMichael Rolnik disas_config "AVR" 850742f3ff00SMichael Rolnik ;; 850864656024SJuan Quintela cris) 8509c765fcacSPeter Crosthwaite disas_config "CRIS" 851064656024SJuan Quintela ;; 8511429b31a2SRichard Henderson hppa) 8512429b31a2SRichard Henderson disas_config "HPPA" 8513429b31a2SRichard Henderson ;; 8514c72b26ecSRichard Henderson i386|x86_64|x32) 8515c765fcacSPeter Crosthwaite disas_config "I386" 851664656024SJuan Quintela ;; 851779368f49SMichael Walle lm32) 8518c765fcacSPeter Crosthwaite disas_config "LM32" 851979368f49SMichael Walle ;; 852064656024SJuan Quintela m68k) 8521c765fcacSPeter Crosthwaite disas_config "M68K" 852264656024SJuan Quintela ;; 8523877fdc12SEdgar E. Iglesias microblaze*) 8524c765fcacSPeter Crosthwaite disas_config "MICROBLAZE" 852564656024SJuan Quintela ;; 852664656024SJuan Quintela mips*) 8527c765fcacSPeter Crosthwaite disas_config "MIPS" 852889a955e8SAleksandar Markovic if test -n "${cxx}"; then 852989a955e8SAleksandar Markovic disas_config "NANOMIPS" 853089a955e8SAleksandar Markovic fi 853164656024SJuan Quintela ;; 8532d15a9c23SAnthony Green moxie*) 8533c765fcacSPeter Crosthwaite disas_config "MOXIE" 8534d15a9c23SAnthony Green ;; 8535e671711cSMarek Vasut nios2) 8536e671711cSMarek Vasut disas_config "NIOS2" 8537e671711cSMarek Vasut ;; 85384a09d0bbSRichard Henderson or1k) 8539c765fcacSPeter Crosthwaite disas_config "OPENRISC" 8540e67db06eSJia Liu ;; 854164656024SJuan Quintela ppc*) 8542c765fcacSPeter Crosthwaite disas_config "PPC" 854364656024SJuan Quintela ;; 8544c4f80543SAlistair Francis riscv*) 854525fa194bSMichael Clark disas_config "RISCV" 854625fa194bSMichael Clark ;; 8547c8c35e5fSYoshinori Sato rx) 8548c8c35e5fSYoshinori Sato disas_config "RX" 8549c8c35e5fSYoshinori Sato ;; 855024e804ecSAlexander Graf s390*) 8551c765fcacSPeter Crosthwaite disas_config "S390" 855264656024SJuan Quintela ;; 855364656024SJuan Quintela sh4) 8554c765fcacSPeter Crosthwaite disas_config "SH4" 855564656024SJuan Quintela ;; 855664656024SJuan Quintela sparc*) 8557c765fcacSPeter Crosthwaite disas_config "SPARC" 855864656024SJuan Quintela ;; 8559cfa550c6SMax Filippov xtensa*) 8560c765fcacSPeter Crosthwaite disas_config "XTENSA" 8561cfa550c6SMax Filippov ;; 856264656024SJuan Quintela esac 856364656024SJuan Quinteladone 85649195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 8565c765fcacSPeter Crosthwaite disas_config "TCI" 85669195b2c2SStefan Weilfi 856764656024SJuan Quintela 8568e9a3591fSChristian Borntraeger# Newer kernels on s390 check for an S390_PGSTE program header and 8569e9a3591fSChristian Borntraeger# enable the pgste page table extensions in that case. This makes 8570e9a3591fSChristian Borntraeger# the vm.allocate_pgste sysctl unnecessary. We enable this program 8571e9a3591fSChristian Borntraeger# header if 8572e9a3591fSChristian Borntraeger# - we build on s390x 8573e9a3591fSChristian Borntraeger# - we build the system emulation for s390x (qemu-system-s390x) 8574e9a3591fSChristian Borntraeger# - KVM is enabled 8575e9a3591fSChristian Borntraeger# - the linker supports --s390-pgste 8576e633a5c6SEric Blakeif test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \ 8577e633a5c6SEric Blake test "$ARCH" = "s390x" && test "$kvm" = "yes"; then 8578e9a3591fSChristian Borntraeger if ld_has --s390-pgste ; then 8579e9a3591fSChristian Borntraeger ldflags="-Wl,--s390-pgste $ldflags" 8580e9a3591fSChristian Borntraeger fi 8581e9a3591fSChristian Borntraegerfi 8582e9a3591fSChristian Borntraeger 8583db5adeaaSPaolo Bonziniecho "QEMU_LDFLAGS+=$ldflags" >> $config_target_mak 858425be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 8585fa282484SJuan Quintela 858697a847bcSbellarddone # for target in $targets 85877d13299dSbellard 8588d52c454aSMarc-André Lureauecho "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak 8589d52c454aSMarc-André Lureauecho "PIXMAN_LIBS=$pixman_libs" >> $config_host_mak 8590d52c454aSMarc-André Lureau 8591e3971d61SPhilippe Mathieu-Daudéif [ "$fdt" = "git" ]; then 85923b8593eeSMarkus Armbruster echo "config-host.h: dtc/all" >> $config_host_mak 8593a540f158SPeter Crosthwaitefi 8594e219c499SRichard Hendersonif [ "$capstone" = "git" -o "$capstone" = "internal" ]; then 85953b8593eeSMarkus Armbruster echo "config-host.h: capstone/all" >> $config_host_mak 8596e219c499SRichard Hendersonfi 8597e219c499SRichard Hendersonif test -n "$LIBCAPSTONE"; then 8598e219c499SRichard Henderson echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak 8599e219c499SRichard Hendersonfi 8600a540f158SPeter Crosthwaite 8601a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 8602a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 8603a99d57bbSWanlong Gaofi 8604a99d57bbSWanlong Gao 8605fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then 8606fd0e6053SJohn Snow echo "export CCACHE_CPP2=y" >> $config_host_mak 8607fd0e6053SJohn Snowfi 8608fd0e6053SJohn Snow 86091e4f6065SDaniele Buonoif test "$safe_stack" = "yes"; then 86101e4f6065SDaniele Buono echo "CONFIG_SAFESTACK=y" >> $config_host_mak 86111e4f6065SDaniele Buonofi 86121e4f6065SDaniele Buono 8613e29e5c6eSPeter Maydell# If we're using a separate build tree, set it up now. 8614e29e5c6eSPeter Maydell# DIRS are directories which we simply mkdir in the build tree; 8615e29e5c6eSPeter Maydell# LINKS are things to symlink back into the source tree 8616e29e5c6eSPeter Maydell# (these can be both files and directories). 8617e29e5c6eSPeter Maydell# Caution: do not add files or directories here using wildcards. This 8618e29e5c6eSPeter Maydell# will result in problems later if a new file matching the wildcard is 8619e29e5c6eSPeter Maydell# added to the source tree -- nothing will cause configure to be rerun 8620e29e5c6eSPeter Maydell# so the build tree will be missing the link back to the new file, and 8621e29e5c6eSPeter Maydell# tests might fail. Prefer to keep the relevant files in their own 8622e29e5c6eSPeter Maydell# directory and symlink the directory instead. 86231cf4323eSThomas HuthDIRS="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos" 86241cf4323eSThomas HuthDIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph" 8625b855f8d1SPaolo BonziniDIRS="$DIRS docs docs/interop fsdev scsi" 8626744a928cSAlexey KardashevskiyDIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw" 86278db2a4fdSGerd HoffmannDIRS="$DIRS roms/seabios" 86282038f8c8SPaolo BonziniLINKS="Makefile" 86292038f8c8SPaolo BonziniLINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile" 86302038f8c8SPaolo BonziniLINKS="$LINKS tests/tcg/Makefile.target tests/fp/Makefile" 8631671f760bSEmilio G. CotaLINKS="$LINKS tests/plugin/Makefile" 8632e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps" 8633e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/s390-ccw/Makefile" 86348db2a4fdSGerd HoffmannLINKS="$LINKS roms/seabios/Makefile" 8635e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/qemu-icon.bmp" 8636e29e5c6eSPeter MaydellLINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit 863739950353SPeter MaydellLINKS="$LINKS tests/acceptance tests/data" 863839950353SPeter MaydellLINKS="$LINKS tests/qemu-iotests/check" 86398f8fd9edSCleber RosaLINKS="$LINKS python" 8640753d11f2SRichard Hendersonfor bios_file in \ 8641753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 8642225a9ab8SAlexey Kardashevskiy $source_path/pc-bios/*.lid \ 8643753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 8644753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 8645e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 8646753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 86474e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 864826ce90fdSLaszlo Ersek $source_path/pc-bios/edk2-*.fd.bz2 \ 8649753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 8650753d11f2SRichard Hendersondo 8651e29e5c6eSPeter Maydell LINKS="$LINKS pc-bios/$(basename $bios_file)" 86527ea78b74SJan Kiszkadone 8653d1807a4fSPaolo Bonzinimkdir -p $DIRS 8654e29e5c6eSPeter Maydellfor f in $LINKS ; do 8655cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 8656f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 8657f9245e10SPeter Maydell fi 86587d13299dSbellarddone 86591ad2134fSPaul Brook 86602038f8c8SPaolo Bonzini(for i in $cross_cc_vars; do 86612038f8c8SPaolo Bonzini export $i 86622038f8c8SPaolo Bonzinidone 8663afc3a8f9SAlex Bennéeexport target_list source_path use_containers 86642038f8c8SPaolo Bonzini$source_path/tests/tcg/configure.sh) 86652038f8c8SPaolo Bonzini 8666c34ebfdcSAnthony Liguori# temporary config to build submodules 86678db2a4fdSGerd Hoffmannfor rom in seabios; do 8668c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 866937116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 8670c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 8671cdbd727cSRichard Henderson echo "AS=$as" >> $config_mak 86725f6f0e27SRichard Henderson echo "CCAS=$ccas" >> $config_mak 8673c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 8674c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 86753dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 8676c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 8677a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 8678c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 86799f81aeb5SAlistair Francis echo "RANLIB=$ranlib" >> $config_mak 8680c34ebfdcSAnthony Liguoridone 8681c34ebfdcSAnthony Liguori 868276c7560aSMax Reitz# set up qemu-iotests in this build directory 868376c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 868476c7560aSMax Reitz 868576c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 868676c7560aSMax Reitzecho >> "$iotests_common_env" 868776c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 868876c7560aSMax Reitz 8689a5665051SPaolo Bonziniif test "$skip_meson" = no; then 8690fc929892SMarc-André Lureaucross="config-meson.cross.new" 8691fc929892SMarc-André Lureaumeson_quote() { 8692fc929892SMarc-André Lureau echo "['$(echo $* | sed "s/ /','/g")']" 8693fc929892SMarc-André Lureau} 8694fc929892SMarc-André Lureau 8695fc929892SMarc-André Lureauecho "# Automatically generated by configure - do not modify" > $cross 8696fc929892SMarc-André Lureauecho "[properties]" >> $cross 8697fc929892SMarc-André Lureautest -z "$cxx" && echo "link_language = 'c'" >> $cross 8698fc929892SMarc-André Lureauecho "[binaries]" >> $cross 8699fc929892SMarc-André Lureauecho "c = $(meson_quote $cc)" >> $cross 8700fc929892SMarc-André Lureautest -n "$cxx" && echo "cpp = $(meson_quote $cxx)" >> $cross 8701fc929892SMarc-André Lureauecho "ar = $(meson_quote $ar)" >> $cross 8702fc929892SMarc-André Lureauecho "nm = $(meson_quote $nm)" >> $cross 8703fc929892SMarc-André Lureauecho "pkgconfig = $(meson_quote $pkg_config_exe)" >> $cross 8704fc929892SMarc-André Lureauecho "ranlib = $(meson_quote $ranlib)" >> $cross 8705fc929892SMarc-André Lureauecho "strip = $(meson_quote $strip)" >> $cross 8706fc929892SMarc-André Lureauecho "windres = $(meson_quote $windres)" >> $cross 8707fc929892SMarc-André Lureauif test -n "$cross_prefix"; then 8708fc929892SMarc-André Lureau cross_arg="--cross-file config-meson.cross" 8709fc929892SMarc-André Lureau # Hack: Meson expects an absolute path for the *build* machine 8710fc929892SMarc-André Lureau # for the prefix, so add a slash in front of a Windows path that 8711fc929892SMarc-André Lureau # includes a drive letter. 8712fc929892SMarc-André Lureau # 8713fc929892SMarc-André Lureau # See https://github.com/mesonbuild/meson/issues/7577. 8714fc929892SMarc-André Lureau echo "[host_machine]" >> $cross 8715fc929892SMarc-André Lureau if test "$mingw32" = "yes" ; then 8716fc929892SMarc-André Lureau echo "system = 'windows'" >> $cross 8717fc929892SMarc-André Lureau case $prefix in 8718fc929892SMarc-André Lureau ?:*) pre_prefix=/ ;; 8719fc929892SMarc-André Lureau esac 8720fc929892SMarc-André Lureau fi 8721fc929892SMarc-André Lureau case "$ARCH" in 8722fc929892SMarc-André Lureau i386|x86_64) 8723fc929892SMarc-André Lureau echo "cpu_family = 'x86'" >> $cross 8724fc929892SMarc-André Lureau ;; 8725fc929892SMarc-André Lureau ppc64le) 8726fc929892SMarc-André Lureau echo "cpu_family = 'ppc64'" >> $cross 8727fc929892SMarc-André Lureau ;; 8728fc929892SMarc-André Lureau *) 8729fc929892SMarc-André Lureau echo "cpu_family = '$ARCH'" >> $cross 8730fc929892SMarc-André Lureau ;; 8731fc929892SMarc-André Lureau esac 8732fc929892SMarc-André Lureau echo "cpu = '$cpu'" >> $cross 8733fc929892SMarc-André Lureau if test "$bigendian" = "yes" ; then 8734fc929892SMarc-André Lureau echo "endian = 'big'" >> $cross 8735fc929892SMarc-André Lureau else 8736fc929892SMarc-André Lureau echo "endian = 'little'" >> $cross 8737fc929892SMarc-André Lureau fi 8738fc929892SMarc-André Lureauelse 8739fc929892SMarc-André Lureau cross_arg="--native-file config-meson.cross" 8740fc929892SMarc-André Lureaufi 8741fc929892SMarc-André Lureaumv $cross config-meson.cross 8742fc929892SMarc-André Lureau 8743a5665051SPaolo Bonzinirm -rf meson-private meson-info meson-logs 8744a5665051SPaolo BonziniNINJA=$PWD/ninjatool $meson setup \ 8745fc929892SMarc-André Lureau --prefix "${pre_prefix}$prefix" \ 8746fc929892SMarc-André Lureau --libdir "${pre_prefix}$libdir" \ 8747fc929892SMarc-André Lureau --libexecdir "${pre_prefix}$libexecdir" \ 8748fc929892SMarc-André Lureau --bindir "${pre_prefix}$bindir" \ 8749fc929892SMarc-André Lureau --includedir "${pre_prefix}$includedir" \ 8750fc929892SMarc-André Lureau --datadir "${pre_prefix}$datadir" \ 8751fc929892SMarc-André Lureau --mandir "${pre_prefix}$mandir" \ 8752fc929892SMarc-André Lureau --sysconfdir "${pre_prefix}$sysconfdir" \ 8753fc929892SMarc-André Lureau --localstatedir "${pre_prefix}$local_statedir" \ 8754a5665051SPaolo Bonzini -Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \ 8755a5665051SPaolo Bonzini -Ddebug=$(if test "$debug_info" = yes; then echo true; else echo false; fi) \ 8756a5665051SPaolo Bonzini -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \ 8757a5665051SPaolo Bonzini -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \ 8758fc929892SMarc-André Lureau $cross_arg \ 8759a5665051SPaolo Bonzini "$PWD" "$source_path" 8760a5665051SPaolo Bonzini 8761a5665051SPaolo Bonziniif test "$?" -ne 0 ; then 8762a5665051SPaolo Bonzini error_exit "meson setup failed" 8763a5665051SPaolo Bonzinifi 8764a5665051SPaolo Bonzinitouch ninjatool.stamp 8765a5665051SPaolo Bonzinifi 8766a5665051SPaolo Bonzini 8767dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 8768dc655404SMichael S. Tsirkincat <<EOD >config.status 8769dc655404SMichael S. Tsirkin#!/bin/sh 8770dc655404SMichael S. Tsirkin# Generated by configure. 8771dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 8772dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 8773dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 8774dc655404SMichael S. TsirkinEOD 8775e811da7fSDaniel P. Berrangé 8776e811da7fSDaniel P. Berrangépreserve_env() { 8777e811da7fSDaniel P. Berrangé envname=$1 8778e811da7fSDaniel P. Berrangé 8779e811da7fSDaniel P. Berrangé eval envval=\$$envname 8780e811da7fSDaniel P. Berrangé 8781e811da7fSDaniel P. Berrangé if test -n "$envval" 8782e811da7fSDaniel P. Berrangé then 8783e811da7fSDaniel P. Berrangé echo "$envname='$envval'" >> config.status 8784e811da7fSDaniel P. Berrangé echo "export $envname" >> config.status 8785e811da7fSDaniel P. Berrangé else 8786e811da7fSDaniel P. Berrangé echo "unset $envname" >> config.status 8787e811da7fSDaniel P. Berrangé fi 8788e811da7fSDaniel P. Berrangé} 8789e811da7fSDaniel P. Berrangé 8790e811da7fSDaniel P. Berrangé# Preserve various env variables that influence what 8791e811da7fSDaniel P. Berrangé# features/build target configure will detect 8792e811da7fSDaniel P. Berrangépreserve_env AR 8793e811da7fSDaniel P. Berrangépreserve_env AS 8794e811da7fSDaniel P. Berrangépreserve_env CC 8795e811da7fSDaniel P. Berrangépreserve_env CPP 8796e811da7fSDaniel P. Berrangépreserve_env CXX 8797e811da7fSDaniel P. Berrangépreserve_env INSTALL 8798e811da7fSDaniel P. Berrangépreserve_env LD 8799e811da7fSDaniel P. Berrangépreserve_env LD_LIBRARY_PATH 8800e811da7fSDaniel P. Berrangépreserve_env LIBTOOL 8801e811da7fSDaniel P. Berrangépreserve_env MAKE 8802e811da7fSDaniel P. Berrangépreserve_env NM 8803e811da7fSDaniel P. Berrangépreserve_env OBJCOPY 8804e811da7fSDaniel P. Berrangépreserve_env PATH 8805e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG 8806e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG_LIBDIR 8807e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG_PATH 8808e811da7fSDaniel P. Berrangépreserve_env PYTHON 8809e811da7fSDaniel P. Berrangépreserve_env SDL2_CONFIG 8810e811da7fSDaniel P. Berrangépreserve_env SMBD 8811e811da7fSDaniel P. Berrangépreserve_env STRIP 8812e811da7fSDaniel P. Berrangépreserve_env WINDRES 8813e811da7fSDaniel P. Berrangé 8814dc655404SMichael S. Tsirkinprintf "exec" >>config.status 8815a5665051SPaolo Bonzinifor i in "$0" "$@"; do 8816a5665051SPaolo Bonzini test "$i" = --skip-meson || printf " '%s'" "$i" >>config.status 8817a5665051SPaolo Bonzinidone 8818cf7cc929SDr. David Alan Gilbertecho ' "$@"' >>config.status 8819dc655404SMichael S. Tsirkinchmod +x config.status 8820dc655404SMichael S. Tsirkin 88218cd05ab6SPeter Maydellrm -r "$TMPDIR1" 8822