17d13299dSbellard#!/bin/sh 27d13299dSbellard# 33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard 47d13299dSbellard# 58cd05ab6SPeter Maydell 699519e67SCornelia Huck# Unset some variables known to interfere with behavior of common tools, 799519e67SCornelia Huck# just as autoconf does. 899519e67SCornelia HuckCLICOLOR_FORCE= GREP_OPTIONS= 999519e67SCornelia Huckunset CLICOLOR_FORCE GREP_OPTIONS 1099519e67SCornelia Huck 115e4dfd3dSJohn Snow# Don't allow CCACHE, if present, to use cached results of compile tests! 125e4dfd3dSJohn Snowexport CCACHE_RECACHE=yes 135e4dfd3dSJohn Snow 148cd05ab6SPeter Maydell# Temporary directory used for files created while 158cd05ab6SPeter Maydell# configure runs. Since it is in the build directory 168cd05ab6SPeter Maydell# we can safely blow away any previous version of it 178cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete 188cd05ab6SPeter Maydell# it when configure exits.) 198cd05ab6SPeter MaydellTMPDIR1="config-temp" 208cd05ab6SPeter Maydellrm -rf "${TMPDIR1}" 218cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}" 228cd05ab6SPeter Maydellif [ $? -ne 0 ]; then 238cd05ab6SPeter Maydell echo "ERROR: failed to create temporary directory" 248cd05ab6SPeter Maydell exit 1 257d13299dSbellardfi 267d13299dSbellard 278cd05ab6SPeter MaydellTMPB="qemu-conf" 288cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c" 2966518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o" 309c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx" 318cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe" 326969ec6cSJames ClarkeTMPMO="${TMPDIR1}/${TMPB}.mo" 337d13299dSbellard 34da1d85e3SGerd Hoffmannrm -f config.log 359ac81bbbSmalc 36b48e3611SPeter Maydell# Print a helpful header at the top of config.log 37b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 38979ae168SPeter Maydellprintf "# Configured with:" >> config.log 39979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 40979ae168SPeter Maydellecho >> config.log 41b48e3611SPeter Maydellecho "#" >> config.log 42b48e3611SPeter Maydell 43d880a3baSPaolo Bonziniprint_error() { 44d880a3baSPaolo Bonzini (echo 4576ad07a4SPeter Maydell echo "ERROR: $1" 4676ad07a4SPeter Maydell while test -n "$2"; do 4776ad07a4SPeter Maydell echo " $2" 4876ad07a4SPeter Maydell shift 4976ad07a4SPeter Maydell done 50d880a3baSPaolo Bonzini echo) >&2 51d880a3baSPaolo Bonzini} 52d880a3baSPaolo Bonzini 53d880a3baSPaolo Bonzinierror_exit() { 54d880a3baSPaolo Bonzini print_error "$@" 5576ad07a4SPeter Maydell exit 1 5676ad07a4SPeter Maydell} 5776ad07a4SPeter Maydell 589c83ffd8SPeter Maydelldo_compiler() { 599c83ffd8SPeter Maydell # Run the compiler, capturing its output to the log. First argument 609c83ffd8SPeter Maydell # is compiler binary to execute. 619c83ffd8SPeter Maydell local compiler="$1" 629c83ffd8SPeter Maydell shift 639c83ffd8SPeter Maydell echo $compiler "$@" >> config.log 649c83ffd8SPeter Maydell $compiler "$@" >> config.log 2>&1 || return $? 658dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 668dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 678dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 688dc38a78SPeter Maydell # obvious to developers. 698dc38a78SPeter Maydell if test "$werror" != "yes"; then 708dc38a78SPeter Maydell return 0 718dc38a78SPeter Maydell fi 728dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 738dc38a78SPeter Maydell case "$*" in 748dc38a78SPeter Maydell *-Werror*) 758dc38a78SPeter Maydell return 0 768dc38a78SPeter Maydell ;; 778dc38a78SPeter Maydell esac 789c83ffd8SPeter Maydell echo $compiler -Werror "$@" >> config.log 799c83ffd8SPeter Maydell $compiler -Werror "$@" >> config.log 2>&1 && return $? 8076ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 8176ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 8276ad07a4SPeter Maydell "will be at the bottom of config.log." \ 8376ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 848dc38a78SPeter Maydell} 858dc38a78SPeter Maydell 869c83ffd8SPeter Maydelldo_cc() { 879c83ffd8SPeter Maydell do_compiler "$cc" "$@" 889c83ffd8SPeter Maydell} 899c83ffd8SPeter Maydell 909c83ffd8SPeter Maydelldo_cxx() { 919c83ffd8SPeter Maydell do_compiler "$cxx" "$@" 929c83ffd8SPeter Maydell} 939c83ffd8SPeter Maydell 949c83ffd8SPeter Maydellupdate_cxxflags() { 959c83ffd8SPeter Maydell # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 969c83ffd8SPeter Maydell # options which some versions of GCC's C++ compiler complain about 979c83ffd8SPeter Maydell # because they only make sense for C programs. 9811cde1c8SBruno Dominguez QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS" 9911cde1c8SBruno Dominguez 1009c83ffd8SPeter Maydell for arg in $QEMU_CFLAGS; do 1019c83ffd8SPeter Maydell case $arg in 1029c83ffd8SPeter Maydell -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 1039c83ffd8SPeter Maydell -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 1049c83ffd8SPeter Maydell ;; 1059c83ffd8SPeter Maydell *) 1069c83ffd8SPeter Maydell QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 1079c83ffd8SPeter Maydell ;; 1089c83ffd8SPeter Maydell esac 1099c83ffd8SPeter Maydell done 1109c83ffd8SPeter Maydell} 1119c83ffd8SPeter Maydell 11252166aa0SJuan Quintelacompile_object() { 113fd0e6053SJohn Snow local_cflags="$1" 114fd0e6053SJohn Snow do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC 11552166aa0SJuan Quintela} 11652166aa0SJuan Quintela 11752166aa0SJuan Quintelacompile_prog() { 11852166aa0SJuan Quintela local_cflags="$1" 11952166aa0SJuan Quintela local_ldflags="$2" 1208dc38a78SPeter Maydell do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags 12152166aa0SJuan Quintela} 12252166aa0SJuan Quintela 12311568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 12411568d6dSPaolo Bonzinisymlink() { 12572b8b5a1SStefan Weil rm -rf "$2" 126ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 12772b8b5a1SStefan Weil ln -s "$1" "$2" 12811568d6dSPaolo Bonzini} 12911568d6dSPaolo Bonzini 1300dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 1310dba6195SLoïc Minier# executable or a builtin) 1320dba6195SLoïc Minierhas() { 1330dba6195SLoïc Minier type "$1" >/dev/null 2>&1 1340dba6195SLoïc Minier} 1350dba6195SLoïc Minier 1360dba6195SLoïc Minier# search for an executable in PATH 1370dba6195SLoïc Minierpath_of() { 1380dba6195SLoïc Minier local_command="$1" 1390dba6195SLoïc Minier local_ifs="$IFS" 1400dba6195SLoïc Minier local_dir="" 1410dba6195SLoïc Minier 1420dba6195SLoïc Minier # pathname has a dir component? 1430dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 1440dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 1450dba6195SLoïc Minier echo "$local_command" 1460dba6195SLoïc Minier return 0 1470dba6195SLoïc Minier fi 1480dba6195SLoïc Minier fi 1490dba6195SLoïc Minier if [ -z "$local_command" ]; then 1500dba6195SLoïc Minier return 1 1510dba6195SLoïc Minier fi 1520dba6195SLoïc Minier 1530dba6195SLoïc Minier IFS=: 1540dba6195SLoïc Minier for local_dir in $PATH; do 1550dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 1560dba6195SLoïc Minier echo "$local_dir/$local_command" 1570dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1580dba6195SLoïc Minier return 0 1590dba6195SLoïc Minier fi 1600dba6195SLoïc Minier done 1610dba6195SLoïc Minier # not found 1620dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1630dba6195SLoïc Minier return 1 1640dba6195SLoïc Minier} 1650dba6195SLoïc Minier 1665b808275SLluís Vilanovahave_backend () { 1675b808275SLluís Vilanova echo "$trace_backends" | grep "$1" >/dev/null 1685b808275SLluís Vilanova} 1695b808275SLluís Vilanova 1703b6b7550SPaolo Bonziniglob() { 1713b6b7550SPaolo Bonzini eval test -z '"${1#'"$2"'}"' 1723b6b7550SPaolo Bonzini} 1733b6b7550SPaolo Bonzini 1743b6b7550SPaolo Bonzinisupported_hax_target() { 1753b6b7550SPaolo Bonzini test "$hax" = "yes" || return 1 1763b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 1773b6b7550SPaolo Bonzini case "${1%-softmmu}" in 1783b6b7550SPaolo Bonzini i386|x86_64) 1793b6b7550SPaolo Bonzini return 0 1803b6b7550SPaolo Bonzini ;; 1813b6b7550SPaolo Bonzini esac 1823b6b7550SPaolo Bonzini return 1 1833b6b7550SPaolo Bonzini} 1843b6b7550SPaolo Bonzini 1853b6b7550SPaolo Bonzinisupported_kvm_target() { 1863b6b7550SPaolo Bonzini test "$kvm" = "yes" || return 1 1873b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 1883b6b7550SPaolo Bonzini case "${1%-softmmu}:$cpu" in 1893b6b7550SPaolo Bonzini arm:arm | aarch64:aarch64 | \ 1903b6b7550SPaolo Bonzini i386:i386 | i386:x86_64 | i386:x32 | \ 1913b6b7550SPaolo Bonzini x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \ 1923b6b7550SPaolo Bonzini mips:mips | mipsel:mips | \ 1933b6b7550SPaolo Bonzini ppc:ppc | ppcemb:ppc | ppc64:ppc | \ 1943b6b7550SPaolo Bonzini ppc:ppc64 | ppcemb:ppc64 | ppc64:ppc64 | \ 1953b6b7550SPaolo Bonzini s390x:s390x) 1963b6b7550SPaolo Bonzini return 0 1973b6b7550SPaolo Bonzini ;; 1983b6b7550SPaolo Bonzini esac 1993b6b7550SPaolo Bonzini return 1 2003b6b7550SPaolo Bonzini} 2013b6b7550SPaolo Bonzini 2023b6b7550SPaolo Bonzinisupported_xen_target() { 2033b6b7550SPaolo Bonzini test "$xen" = "yes" || return 1 2043b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 205b5ed2e11SPaolo Bonzini # Only i386 and x86_64 provide the xenpv machine. 206b5ed2e11SPaolo Bonzini case "${1%-softmmu}" in 207b5ed2e11SPaolo Bonzini i386|x86_64) 2083b6b7550SPaolo Bonzini return 0 2093b6b7550SPaolo Bonzini ;; 2103b6b7550SPaolo Bonzini esac 2113b6b7550SPaolo Bonzini return 1 2123b6b7550SPaolo Bonzini} 2133b6b7550SPaolo Bonzini 214d880a3baSPaolo Bonzinisupported_target() { 215d880a3baSPaolo Bonzini case "$1" in 216d880a3baSPaolo Bonzini *-softmmu) 217d880a3baSPaolo Bonzini ;; 218d880a3baSPaolo Bonzini *-linux-user) 219d880a3baSPaolo Bonzini if test "$linux" != "yes"; then 220d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a Linux host" 221d880a3baSPaolo Bonzini return 1 222d880a3baSPaolo Bonzini fi 223d880a3baSPaolo Bonzini ;; 224d880a3baSPaolo Bonzini *-bsd-user) 225d880a3baSPaolo Bonzini if test "$bsd" != "yes"; then 226d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a BSD host" 227d880a3baSPaolo Bonzini return 1 228d880a3baSPaolo Bonzini fi 229d880a3baSPaolo Bonzini ;; 230d880a3baSPaolo Bonzini *) 231d880a3baSPaolo Bonzini print_error "Invalid target name '$target'" 232d880a3baSPaolo Bonzini return 1 233d880a3baSPaolo Bonzini ;; 234d880a3baSPaolo Bonzini esac 235b3f6ea7eSPaolo Bonzini test "$tcg" = "yes" && return 0 236b3f6ea7eSPaolo Bonzini supported_kvm_target "$1" && return 0 237b3f6ea7eSPaolo Bonzini supported_xen_target "$1" && return 0 238b3f6ea7eSPaolo Bonzini supported_hax_target "$1" && return 0 239b3f6ea7eSPaolo Bonzini print_error "TCG disabled, but hardware accelerator not available for '$target'" 240b3f6ea7eSPaolo Bonzini return 1 241d880a3baSPaolo Bonzini} 242d880a3baSPaolo Bonzini 243e9a3591fSChristian Borntraeger 244e9a3591fSChristian Borntraegerld_has() { 245e9a3591fSChristian Borntraeger $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1 246e9a3591fSChristian Borntraeger} 247e9a3591fSChristian Borntraeger 2487d13299dSbellard# default parameters 24989138857SStefan Weilsource_path=$(dirname "$0") 2502ff6b91eSJuan Quintelacpu="" 251a31a8642SMichael S. Tsirkiniasl="iasl" 2521e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 25343ce4dfeSbellardstatic="no" 2547d13299dSbellardcross_prefix="" 2550c58ac1cSmalcaudio_drv_list="" 256b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 257b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 258e49d021eSPeter Maydellhost_cc="cc" 25973da375eSJuan Quintelalibs_softmmu="" 2603e2e0e6bSJuan Quintelalibs_tools="" 26167f86e8eSJuan Quintelaaudio_pt_int="" 262d5631638Smalcaudio_win_int="" 2632b2e59e6SPaolo Bonzinicc_i386=i386-pc-linux-gnu-gcc 264957f1f99SMichael Rothlibs_qga="" 2655bc62e01SGerd Hoffmanndebug_info="yes" 26663678e17SSteven Noonanstack_protector="" 267ac0df51dSaliguori 26892712822SDaniel P. Berrangeif test -e "$source_path/.git" 26992712822SDaniel P. Berrangethen 270f62bbee5SDaniel P. Berrange git_update=yes 27192712822SDaniel P. Berrange git_submodules="ui/keycodemapdb" 27292712822SDaniel P. Berrangeelse 273f62bbee5SDaniel P. Berrange git_update=no 274aef45d51SDaniel P. Berrange git_submodules="" 27592712822SDaniel P. Berrangefi 276cc84d63aSDaniel P. Berrangegit="git" 277ac0df51dSaliguori 278afb63ebdSStefan Weil# Don't accept a target_list environment variable. 279afb63ebdSStefan Weilunset target_list 280377529c0SPaolo Bonzini 281377529c0SPaolo Bonzini# Default value for a variable defining feature "foo". 282377529c0SPaolo Bonzini# * foo="no" feature will only be used if --enable-foo arg is given 283377529c0SPaolo Bonzini# * foo="" feature will be searched for, and if found, will be used 284377529c0SPaolo Bonzini# unless --disable-foo is given 285377529c0SPaolo Bonzini# * foo="yes" this value will only be set by --enable-foo flag. 286377529c0SPaolo Bonzini# feature will searched for, 287377529c0SPaolo Bonzini# if not found, configure exits with error 288377529c0SPaolo Bonzini# 289377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args. 290377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it 291377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found. 292377529c0SPaolo Bonzini 293377529c0SPaolo Bonzinibluez="" 294377529c0SPaolo Bonzinibrlapi="" 295377529c0SPaolo Bonzinicurl="" 296377529c0SPaolo Bonzinicurses="" 297377529c0SPaolo Bonzinidocs="" 298377529c0SPaolo Bonzinifdt="" 29958952137SVincenzo Maffionenetmap="no" 300377529c0SPaolo Bonzinisdl="" 301ee8466d0SCole Robinsonsdlabi="" 302983eef5aSMeador Ingevirtfs="" 303fe8fc5aeSPaolo Bonzinimpath="" 304821601eaSJes Sorensenvnc="yes" 305377529c0SPaolo Bonzinisparse="no" 306377529c0SPaolo Bonzinivde="" 307377529c0SPaolo Bonzinivnc_sasl="" 308377529c0SPaolo Bonzinivnc_jpeg="" 309377529c0SPaolo Bonzinivnc_png="" 3106a021536SGerd Hoffmannxkbcommon="" 311377529c0SPaolo Bonzinixen="" 312d5b93ddfSAnthony PERARDxen_ctrl_version="" 31364a7ad6fSIan Campbellxen_pv_domain_build="no" 314eb6fda0fSAnthony PERARDxen_pci_passthrough="" 315377529c0SPaolo Bonzinilinux_aio="" 31647e98658SCorey Bryantcap_ng="" 317377529c0SPaolo Bonziniattr="" 3184f26f2b6SAvi Kivitylibattr="" 319377529c0SPaolo Bonzinixfs="" 320b3f6ea7eSPaolo Bonzinitcg="yes" 321377529c0SPaolo Bonzini 322d41a75a2SBradvhost_net="no" 3235e9be92dSNicholas Bellingervhost_scsi="no" 324fc0b9b0eSStefan Hajnoczivhost_vsock="no" 325e6a74868SMarc-André Lureauvhost_user="" 326d41a75a2SBradkvm="no" 327b0cb0a66SVincent Palatinhax="no" 3282da776dbSMichael R. Hinesrdma="" 329377529c0SPaolo Bonzinigprof="no" 330377529c0SPaolo Bonzinidebug_tcg="no" 331377529c0SPaolo Bonzinidebug="no" 332b553a042SJohn Snowfortify_source="" 333377529c0SPaolo Bonzinistrip_opt="yes" 3349195b2c2SStefan Weiltcg_interpreter="no" 335377529c0SPaolo Bonzinibigendian="no" 336377529c0SPaolo Bonzinimingw32="no" 3371d728c39SBlue Swirlgcov="no" 3381d728c39SBlue Swirlgcov_tool="gcov" 339377529c0SPaolo BonziniEXESUF="" 34017969268SFam ZhengDSOSUF=".so" 34117969268SFam ZhengLDFLAGS_SHARED="-shared" 34217969268SFam Zhengmodules="no" 343377529c0SPaolo Bonziniprefix="/usr/local" 344377529c0SPaolo Bonzinimandir="\${prefix}/share/man" 345528ae5b8SEduardo Habkostdatadir="\${prefix}/share" 3463d5eecabSGerd Hoffmannfirmwarepath="\${prefix}/share/qemu-firmware" 347850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu" 348377529c0SPaolo Bonzinibindir="\${prefix}/bin" 3493aa5d2beSAlon Levylibdir="\${prefix}/lib" 3508bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec" 3510f94d6daSAlon Levyincludedir="\${prefix}/include" 352377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc" 353785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var" 354377529c0SPaolo Bonziniconfsuffix="/qemu" 355377529c0SPaolo Bonzinislirp="yes" 356377529c0SPaolo Bonzinioss_lib="" 357377529c0SPaolo Bonzinibsd="no" 358377529c0SPaolo Bonzinilinux="no" 359377529c0SPaolo Bonzinisolaris="no" 360377529c0SPaolo Bonziniprofiler="no" 361377529c0SPaolo Bonzinicocoa="no" 362377529c0SPaolo Bonzinisoftmmu="yes" 363377529c0SPaolo Bonzinilinux_user="no" 364377529c0SPaolo Bonzinibsd_user="no" 365377529c0SPaolo Bonziniblobs="yes" 366377529c0SPaolo Bonzinipkgversion="" 36740d6444eSAvi Kivitypie="" 3683556c233SPaolo Bonziniqom_cast_debug="yes" 369baf86d6bSPaolo Bonzinitrace_backends="log" 370377529c0SPaolo Bonzinitrace_file="trace" 371377529c0SPaolo Bonzinispice="" 372377529c0SPaolo Bonzinirbd="" 3737b02f544SMarc-André Lureausmartcard="" 3742b2325ffSGerd Hoffmannlibusb="" 37569354a83SHans de Goedeusb_redir="" 376da076ffeSGerd Hoffmannopengl="" 377014cb152SGerd Hoffmannopengl_dmabuf="no" 3785dd89908SRichard Hendersoncpuid_h="no" 37999f2dbd3SLiang Liavx2_opt="no" 3801ece9905SAlon Levyzlib="yes" 3818ca80760SRichard Hendersoncapstone="" 382b25c9dffSStefan Weillzo="" 383b25c9dffSStefan Weilsnappy="" 3846b383c08SPeter Wubzip2="" 385e8ef31a3SMichael Tokarevguest_agent="" 386d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 38750cbebb9SMichael Rothguest_agent_ntddscsi="no" 3889dacf32dSYossi Hindinguest_agent_msi="" 389d9840e25STomoki Sekiyamavss_win32_sdk="" 390d9840e25STomoki Sekiyamawin_sdk="no" 3914b1c11fdSDaniel P. Berrangewant_tools="yes" 392c589b249SRonnie Sahlberglibiscsi="" 3936542aa9cSPeter Lievenlibnfs="" 394519175a2SAlex Barcelocoroutine="" 39570c60c08SStefan Hajnoczicoroutine_pool="" 3967d992e4dSPeter Lievendebug_stack_usage="no" 397f0d92b56SLongpeng(Mike)crypto_afalg="no" 398f794573eSEduardo Otuboseccomp="" 399eb100396SBharata B Raoglusterfs="" 400d85fa9ebSJeff Codyglusterfs_xlator_opt="no" 4010c14fb47SBharata B Raoglusterfs_discard="no" 402df3a429aSNiels de Vosglusterfs_fallocate="no" 4037c815372SBharata B Raoglusterfs_zerofill="no" 404a4ccabcfSAnthony Liguorigtk="" 4059e04c683SStefan Weilgtkabi="" 406925a0400SGerd Hoffmanngtk_gl="no" 407a1c5e949SDaniel P. Berrangetls_priority="NORMAL" 408ddbb0d09SDaniel P. Berrangegnutls="" 409b917da4cSDaniel P. Berrangegnutls_rnd="" 41091bfcdb0SDaniel P. Berrangenettle="" 411fff2f982SDaniel P. Berrangenettle_kdf="no" 41291bfcdb0SDaniel P. Berrangegcrypt="" 4131f923c70SLongpeng(Mike)gcrypt_hmac="no" 41437788f25SDaniel P. Berrangegcrypt_kdf="no" 415bbbf9bfbSStefan Weilvte="" 4169d9e1521SGerd Hoffmannvirglrenderer="" 417e91c793cSCole Robinsontpm="yes" 4180a12ec87SRichard W.M. Joneslibssh2="" 419ed1701c6SDr. David Alan Gilbertlive_block_migration="yes" 420a99d57bbSWanlong Gaonuma="" 4212847b469SFam Zhengtcmalloc="no" 4227b01cb97SAlexandre Derumierjemalloc="no" 423a6b1d4c0SChanglong Xiereplication="yes" 424da92c3ffSAshish Mittalvxhs="" 425377529c0SPaolo Bonzini 426898be3e0SPeter Maydellsupported_cpu="no" 427898be3e0SPeter Maydellsupported_os="no" 428fb59dabdSPeter Maydellbogus_os="no" 429*5a22ab71SYang Zhongmalloc_trim="" 430898be3e0SPeter Maydell 431ac0df51dSaliguori# parse CC options first 432ac0df51dSaliguorifor opt do 43389138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 434ac0df51dSaliguori case "$opt" in 435ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 436ac0df51dSaliguori ;; 4373d8df640SPaolo Bonzini --cc=*) CC="$optarg" 438ac0df51dSaliguori ;; 43983f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 44083f73fceSTomoki Sekiyama ;; 441ca4deeb1SPaolo Bonzini --source-path=*) source_path="$optarg" 442ca4deeb1SPaolo Bonzini ;; 4432ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 4442ff6b91eSJuan Quintela ;; 445de385287SAlex Bennée --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 446f9943cd5SGerd Hoffmann EXTRA_CFLAGS="$optarg" 447e2a2ed06SJuan Quintela ;; 44811cde1c8SBruno Dominguez --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg" 44911cde1c8SBruno Dominguez EXTRA_CXXFLAGS="$optarg" 45011cde1c8SBruno Dominguez ;; 451a4969e90SAlex Bennée --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg" 452f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 453e2a2ed06SJuan Quintela ;; 4545bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 4555bc62e01SGerd Hoffmann ;; 4565bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 4575bc62e01SGerd Hoffmann ;; 458ac0df51dSaliguori esac 459ac0df51dSaliguoridone 460ac0df51dSaliguori# OS specific 461ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 46293148aa5SStefan Weil# we can eliminate its usage altogether. 463ac0df51dSaliguori 464e49d021eSPeter Maydell# Preferred compiler: 465e49d021eSPeter Maydell# ${CC} (if set) 466e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 467e49d021eSPeter Maydell# system compiler 468e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 469e49d021eSPeter Maydell cc="$host_cc" 470e49d021eSPeter Maydellelse 471b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 472e49d021eSPeter Maydellfi 473e49d021eSPeter Maydell 47483f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 47583f73fceSTomoki Sekiyama cxx="c++" 47683f73fceSTomoki Sekiyamaelse 47783f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 47883f73fceSTomoki Sekiyamafi 47983f73fceSTomoki Sekiyama 480b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 481cdbd727cSRichard Hendersonas="${AS-${cross_prefix}as}" 4825f6f0e27SRichard Hendersonccas="${CCAS-$cc}" 4833dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 484b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 485b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 4869f81aeb5SAlistair Francisranlib="${RANLIB-${cross_prefix}ranlib}" 4874852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 488b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 489b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 49017884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 49117884d7bSSergei Trofimovichquery_pkg_config() { 49217884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 49317884d7bSSergei Trofimovich} 49417884d7bSSergei Trofimovichpkg_config=query_pkg_config 495b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 49647c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 497ac0df51dSaliguori 49845d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 49945d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 50045d285abSPeter Maydell 501be17dc90SMichael S. Tsirkin# default flags for all hosts 5022d31515bSPeter Maydell# We use -fwrapv to tell the compiler that we require a C dialect where 5032d31515bSPeter Maydell# left shift of signed integers is well defined and has the expected 5042d31515bSPeter Maydell# 2s-complement style results. (Both clang and gcc agree that it 5052d31515bSPeter Maydell# provides these semantics.) 5062d31515bSPeter MaydellQEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS" 507f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 508c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 509be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 510244f1441SYang ZhongQEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include" 5115bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then 5125bc62e01SGerd Hoffmann CFLAGS="-g $CFLAGS" 513be17dc90SMichael S. Tsirkin LDFLAGS="-g $LDFLAGS" 5145bc62e01SGerd Hoffmannfi 515be17dc90SMichael S. Tsirkin 516ca4deeb1SPaolo Bonzini# make source path absolute 51789138857SStefan Weilsource_path=$(cd "$source_path"; pwd) 518ca4deeb1SPaolo Bonzini 519cab00a5aSMichael S. Tsirkin# running configure in the source tree? 520cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 521cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 522cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 523cab00a5aSMichael S. Tsirkinelse 524cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 525cab00a5aSMichael S. Tsirkinfi 526cab00a5aSMichael S. Tsirkin 527ac0df51dSaliguoricheck_define() { 528ac0df51dSaliguoricat > $TMPC <<EOF 529ac0df51dSaliguori#if !defined($1) 530fd786e1aSPeter Maydell#error $1 not defined 531ac0df51dSaliguori#endif 532ac0df51dSaliguoriint main(void) { return 0; } 533ac0df51dSaliguoriEOF 53452166aa0SJuan Quintela compile_object 535ac0df51dSaliguori} 536ac0df51dSaliguori 537307119e7SGerd Hoffmanncheck_include() { 538307119e7SGerd Hoffmanncat > $TMPC <<EOF 539307119e7SGerd Hoffmann#include <$1> 540307119e7SGerd Hoffmannint main(void) { return 0; } 541307119e7SGerd HoffmannEOF 542307119e7SGerd Hoffmann compile_object 543307119e7SGerd Hoffmann} 544307119e7SGerd Hoffmann 54593b25869SJohn Snowwrite_c_skeleton() { 54693b25869SJohn Snow cat > $TMPC <<EOF 54793b25869SJohn Snowint main(void) { return 0; } 54893b25869SJohn SnowEOF 54993b25869SJohn Snow} 55093b25869SJohn Snow 551bbea4050SPeter Maydellif check_define __linux__ ; then 552bbea4050SPeter Maydell targetos="Linux" 553bbea4050SPeter Maydellelif check_define _WIN32 ; then 554bbea4050SPeter Maydell targetos='MINGW32' 555bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 556bbea4050SPeter Maydell targetos='OpenBSD' 557bbea4050SPeter Maydellelif check_define __sun__ ; then 558bbea4050SPeter Maydell targetos='SunOS' 559bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 560bbea4050SPeter Maydell targetos='Haiku' 561951fedfcSPeter Maydellelif check_define __FreeBSD__ ; then 562951fedfcSPeter Maydell targetos='FreeBSD' 563951fedfcSPeter Maydellelif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then 564951fedfcSPeter Maydell targetos='GNU/kFreeBSD' 565951fedfcSPeter Maydellelif check_define __DragonFly__ ; then 566951fedfcSPeter Maydell targetos='DragonFly' 567951fedfcSPeter Maydellelif check_define __NetBSD__; then 568951fedfcSPeter Maydell targetos='NetBSD' 569951fedfcSPeter Maydellelif check_define __APPLE__; then 570951fedfcSPeter Maydell targetos='Darwin' 571bbea4050SPeter Maydellelse 572951fedfcSPeter Maydell # This is a fatal error, but don't report it yet, because we 573951fedfcSPeter Maydell # might be going to just print the --help text, or it might 574951fedfcSPeter Maydell # be the result of a missing compiler. 575951fedfcSPeter Maydell targetos='bogus' 576951fedfcSPeter Maydell bogus_os='yes' 577bbea4050SPeter Maydellfi 578bbea4050SPeter Maydell 579bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 580bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 581bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 582bbea4050SPeter Maydell# the correct CPU with the --cpu option. 583bbea4050SPeter Maydellcase $targetos in 584bbea4050SPeter MaydellDarwin) 585bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 586bbea4050SPeter Maydell # run 64-bit userspace code. 587bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 588bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 589bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 590bbea4050SPeter Maydell cpu="x86_64" 591bbea4050SPeter Maydell fi 592bbea4050SPeter Maydell ;; 593bbea4050SPeter MaydellSunOS) 59489138857SStefan Weil # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo 595bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 596bbea4050SPeter Maydell cpu="x86_64" 597bbea4050SPeter Maydell fi 598bbea4050SPeter Maydellesac 599bbea4050SPeter Maydell 6002ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 6012ff6b91eSJuan Quintela # command line argument 6022ff6b91eSJuan Quintela : 6032ff6b91eSJuan Quintelaelif check_define __i386__ ; then 604ac0df51dSaliguori cpu="i386" 605ac0df51dSaliguorielif check_define __x86_64__ ; then 606c72b26ecSRichard Henderson if check_define __ILP32__ ; then 607c72b26ecSRichard Henderson cpu="x32" 608c72b26ecSRichard Henderson else 609ac0df51dSaliguori cpu="x86_64" 610c72b26ecSRichard Henderson fi 6113aa9bd6cSblueswir1elif check_define __sparc__ ; then 6123aa9bd6cSblueswir1 if check_define __arch64__ ; then 6133aa9bd6cSblueswir1 cpu="sparc64" 6143aa9bd6cSblueswir1 else 6153aa9bd6cSblueswir1 cpu="sparc" 6163aa9bd6cSblueswir1 fi 617fdf7ed96Smalcelif check_define _ARCH_PPC ; then 618fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 619fdf7ed96Smalc cpu="ppc64" 620ac0df51dSaliguori else 621fdf7ed96Smalc cpu="ppc" 622fdf7ed96Smalc fi 623afa05235SAurelien Jarnoelif check_define __mips__ ; then 624afa05235SAurelien Jarno cpu="mips" 625477ba620SAurelien Jarnoelif check_define __ia64__ ; then 626477ba620SAurelien Jarno cpu="ia64" 627d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 628d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 629d66ed0eaSAurelien Jarno cpu="s390x" 630d66ed0eaSAurelien Jarno else 631d66ed0eaSAurelien Jarno cpu="s390" 632d66ed0eaSAurelien Jarno fi 63321d89f84SPeter Maydellelif check_define __arm__ ; then 63421d89f84SPeter Maydell cpu="arm" 6351f080313SClaudio Fontanaelif check_define __aarch64__ ; then 6361f080313SClaudio Fontana cpu="aarch64" 637fdf7ed96Smalcelse 63889138857SStefan Weil cpu=$(uname -m) 639ac0df51dSaliguorifi 640ac0df51dSaliguori 641359bc95dSPeter MaydellARCH= 642359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 643359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 6447d13299dSbellardcase "$cpu" in 6456499fd15SPeter Maydell ppc|ppc64|s390|s390x|sparc64|x32) 646898be3e0SPeter Maydell cpu="$cpu" 647898be3e0SPeter Maydell supported_cpu="yes" 648898be3e0SPeter Maydell ;; 6497d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 65097a847bcSbellard cpu="i386" 651898be3e0SPeter Maydell supported_cpu="yes" 6527d13299dSbellard ;; 653aaa5fa14Saurel32 x86_64|amd64) 654aaa5fa14Saurel32 cpu="x86_64" 655898be3e0SPeter Maydell supported_cpu="yes" 656aaa5fa14Saurel32 ;; 65721d89f84SPeter Maydell armv*b|armv*l|arm) 65821d89f84SPeter Maydell cpu="arm" 659898be3e0SPeter Maydell supported_cpu="yes" 6607d13299dSbellard ;; 6611f080313SClaudio Fontana aarch64) 6621f080313SClaudio Fontana cpu="aarch64" 663898be3e0SPeter Maydell supported_cpu="yes" 6641f080313SClaudio Fontana ;; 665afa05235SAurelien Jarno mips*) 666afa05235SAurelien Jarno cpu="mips" 667898be3e0SPeter Maydell supported_cpu="yes" 668afa05235SAurelien Jarno ;; 6693142255cSblueswir1 sparc|sun4[cdmuv]) 670ae228531Sbellard cpu="sparc" 6716499fd15SPeter Maydell supported_cpu="yes" 672ae228531Sbellard ;; 6737d13299dSbellard *) 674359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 675359bc95dSPeter Maydell ARCH=unknown 6767d13299dSbellard ;; 6777d13299dSbellardesac 678359bc95dSPeter Maydellif test -z "$ARCH"; then 679359bc95dSPeter Maydell ARCH="$cpu" 680359bc95dSPeter Maydellfi 681e2d52ad3SJuan Quintela 6827d13299dSbellard# OS specific 6830dbfc675SJuan Quintela 684adfc3e91SStacey Son# host *BSD for user mode 685adfc3e91SStacey SonHOST_VARIANT_DIR="" 686adfc3e91SStacey Son 6877d13299dSbellardcase $targetos in 68867b915a5SbellardMINGW32*) 68967b915a5Sbellard mingw32="yes" 690b0cb0a66SVincent Palatin hax="yes" 6913cec7cc2SKővágó, Zoltán audio_possible_drivers="dsound sdl" 692307119e7SGerd Hoffmann if check_include dsound.h; then 6933cec7cc2SKővágó, Zoltán audio_drv_list="dsound" 694307119e7SGerd Hoffmann else 695307119e7SGerd Hoffmann audio_drv_list="" 696307119e7SGerd Hoffmann fi 697898be3e0SPeter Maydell supported_os="yes" 69867b915a5Sbellard;; 6995c40d2bdSthsGNU/kFreeBSD) 700a167ba50SAurelien Jarno bsd="yes" 7010c58ac1cSmalc audio_drv_list="oss" 7020bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 7035c40d2bdSths;; 7047d3505c5SbellardFreeBSD) 7057d3505c5Sbellard bsd="yes" 7060db4a067SPaolo Bonzini make="${MAKE-gmake}" 7070c58ac1cSmalc audio_drv_list="oss" 7080bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 709f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 710f01576f1SJuergen Lock LIBS="-lutil $LIBS" 711a7764f15SEd Maste # needed for kinfo_getproc 712a7764f15SEd Maste libs_qga="-lutil $libs_qga" 71358952137SVincenzo Maffione netmap="" # enable netmap autodetect 714adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 715898be3e0SPeter Maydell supported_os="yes" 7167d3505c5Sbellard;; 717c5e97233Sblueswir1DragonFly) 718c5e97233Sblueswir1 bsd="yes" 7190db4a067SPaolo Bonzini make="${MAKE-gmake}" 720c5e97233Sblueswir1 audio_drv_list="oss" 7210bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 722adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 723c5e97233Sblueswir1;; 7247d3505c5SbellardNetBSD) 7257d3505c5Sbellard bsd="yes" 7260db4a067SPaolo Bonzini make="${MAKE-gmake}" 7270c58ac1cSmalc audio_drv_list="oss" 7280bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl" 7298ef92a88Sblueswir1 oss_lib="-lossaudio" 730adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 7313c2bdbc1SKamil Rytarowski supported_os="yes" 7327d3505c5Sbellard;; 7337d3505c5SbellardOpenBSD) 7347d3505c5Sbellard bsd="yes" 7350db4a067SPaolo Bonzini make="${MAKE-gmake}" 7364f6ab397SBrad Smith audio_drv_list="sdl" 7370bac1111SKővágó, Zoltán audio_possible_drivers="sdl" 738adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 7397d3505c5Sbellard;; 74083fb7adfSbellardDarwin) 74183fb7adfSbellard bsd="yes" 74283fb7adfSbellard darwin="yes" 743b0cb0a66SVincent Palatin hax="yes" 74417969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 7451b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 746a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 7470c439cbfSJuan Quintela LDFLAGS="-arch x86_64 $LDFLAGS" 7481b0f9cc2Saliguori fi 749fd677642Sths cocoa="yes" 7500c58ac1cSmalc audio_drv_list="coreaudio" 75114382605SKővágó, Zoltán audio_possible_drivers="coreaudio sdl" 7520c439cbfSJuan Quintela LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 7537973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 754a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 755a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 756a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 757adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 758898be3e0SPeter Maydell supported_os="yes" 75983fb7adfSbellard;; 760ec530c81SbellardSunOS) 761ec530c81Sbellard solaris="yes" 7620db4a067SPaolo Bonzini make="${MAKE-gmake}" 7630db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 764e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 7656b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 7660c58ac1cSmalc audio_drv_list="oss" 7676b4d2ba1Sths fi 768c2de5c91Smalc audio_possible_drivers="oss sdl" 769d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 770d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 771d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 772d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 773a558ee17SJuan Quintela QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 774560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 775560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 776560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 777ec530c81Sbellard;; 778179cf400SAndreas FärberHaiku) 779179cf400SAndreas Färber haiku="yes" 780179cf400SAndreas Färber QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 781179cf400SAndreas Färber LIBS="-lposix_error_mapper -lnetwork $LIBS" 782179cf400SAndreas Färber;; 783898be3e0SPeter MaydellLinux) 7840c58ac1cSmalc audio_drv_list="oss" 7850bac1111SKővágó, Zoltán audio_possible_drivers="oss alsa sdl pa" 7865327cf48Sbellard linux="yes" 787831b7825Sths linux_user="yes" 788af2be207SJan Kiszka kvm="yes" 789af2be207SJan Kiszka vhost_net="yes" 7905e9be92dSNicholas Bellinger vhost_scsi="yes" 791fc0b9b0eSStefan Hajnoczi vhost_vsock="yes" 792a585140dSAlexey Kardashevskiy QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES" 793898be3e0SPeter Maydell supported_os="yes" 794898be3e0SPeter Maydell;; 7957d13299dSbellardesac 7967d13299dSbellard 7977d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 798b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 79984778508Sblueswir1 bsd_user="yes" 8007d3505c5Sbellard fi 80108de3949SAndreas Färberfi 8027d3505c5Sbellard 8030db4a067SPaolo Bonzini: ${make=${MAKE-make}} 8040db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 80552510f8bSStefan Weil: ${python=${PYTHON-python}} 806e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 8070db4a067SPaolo Bonzini 8083c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 8093c4a4d0dSPeter Maydellif has clang; then 8103c4a4d0dSPeter Maydell objcc=clang 8113c4a4d0dSPeter Maydellelse 8123c4a4d0dSPeter Maydell objcc="$cc" 8133c4a4d0dSPeter Maydellfi 8143c4a4d0dSPeter Maydell 8153457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 8163457a3f8SJuan Quintela EXESUF=".exe" 81717969268SFam Zheng DSOSUF=".dll" 818a558ee17SJuan Quintela QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 819e94a7936SStefan Weil # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 820e94a7936SStefan Weil QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 82178e9d4adSStefan Weil # MinGW needs -mthreads for TLS and macro _MT. 82278e9d4adSStefan Weil QEMU_CFLAGS="-mthreads $QEMU_CFLAGS" 823f7cf5d5bSStefan Weil LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 82493b25869SJohn Snow write_c_skeleton; 825f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 826f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 827f7cf5d5bSStefan Weil fi 828c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 829683035deSPaolo Bonzini mandir="\${prefix}" 830528ae5b8SEduardo Habkost datadir="\${prefix}" 831850da188SEduardo Habkost qemu_docdir="\${prefix}" 832683035deSPaolo Bonzini bindir="\${prefix}" 833683035deSPaolo Bonzini sysconfdir="\${prefix}" 8345a699bbbSLaszlo Ersek local_statedir= 835683035deSPaolo Bonzini confsuffix="" 836105fad6bSBishara AbuHattoum libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga" 8373457a3f8SJuan Quintelafi 8383457a3f8SJuan Quintela 839487fefdbSAnthony Liguoriwerror="" 84085aa5189Sbellard 8417d13299dSbellardfor opt do 84289138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 8437d13299dSbellard case "$opt" in 8442efc3265Sbellard --help|-h) show_help=yes 8452efc3265Sbellard ;; 84699123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 84799123e13SMike Frysinger ;; 848b1a550a0Spbrook --prefix=*) prefix="$optarg" 8497d13299dSbellard ;; 850b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 85132ce6337Sbellard ;; 852ca4deeb1SPaolo Bonzini --source-path=*) 8537d13299dSbellard ;; 854ac0df51dSaliguori --cross-prefix=*) 8557d13299dSbellard ;; 856ac0df51dSaliguori --cc=*) 8577d13299dSbellard ;; 858b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 85983469015Sbellard ;; 86083f73fceSTomoki Sekiyama --cxx=*) 86183f73fceSTomoki Sekiyama ;; 862e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 863e007dbecSMichael S. Tsirkin ;; 8643c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 8653c4a4d0dSPeter Maydell ;; 866b1a550a0Spbrook --make=*) make="$optarg" 8677d13299dSbellard ;; 8686a882643Spbrook --install=*) install="$optarg" 8696a882643Spbrook ;; 870c886edfbSBlue Swirl --python=*) python="$optarg" 871c886edfbSBlue Swirl ;; 8721d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 8731d728c39SBlue Swirl ;; 874e2d8830eSBrad --smbd=*) smbd="$optarg" 875e2d8830eSBrad ;; 876e2a2ed06SJuan Quintela --extra-cflags=*) 8777d13299dSbellard ;; 87811cde1c8SBruno Dominguez --extra-cxxflags=*) 87911cde1c8SBruno Dominguez ;; 880e2a2ed06SJuan Quintela --extra-ldflags=*) 8817d13299dSbellard ;; 8825bc62e01SGerd Hoffmann --enable-debug-info) 8835bc62e01SGerd Hoffmann ;; 8845bc62e01SGerd Hoffmann --disable-debug-info) 8855bc62e01SGerd Hoffmann ;; 88617969268SFam Zheng --enable-modules) 88717969268SFam Zheng modules="yes" 88817969268SFam Zheng ;; 8893aa88b31SStefan Hajnoczi --disable-modules) 8903aa88b31SStefan Hajnoczi modules="no" 8913aa88b31SStefan Hajnoczi ;; 8922ff6b91eSJuan Quintela --cpu=*) 8937d13299dSbellard ;; 894b1a550a0Spbrook --target-list=*) target_list="$optarg" 895de83cd02Sbellard ;; 8965b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 8975b808275SLluís Vilanova ;; 8985b808275SLluís Vilanova # XXX: backwards compatibility 8995b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 90094a420b1SStefan Hajnoczi ;; 90174242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 9029410b56cSPrerna Saxena ;; 9037d13299dSbellard --enable-gprof) gprof="yes" 9047d13299dSbellard ;; 9051d728c39SBlue Swirl --enable-gcov) gcov="yes" 9061d728c39SBlue Swirl ;; 90779427693SLoïc Minier --static) 90879427693SLoïc Minier static="yes" 90979427693SLoïc Minier LDFLAGS="-static $LDFLAGS" 91017884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 91143ce4dfeSbellard ;; 9120b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 9130b24e75fSPaolo Bonzini ;; 9140b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 9150b24e75fSPaolo Bonzini ;; 9163aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 9173aa5d2beSAlon Levy ;; 9188bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 9198bf188aaSMichael Tokarev ;; 9200f94d6daSAlon Levy --includedir=*) includedir="$optarg" 9210f94d6daSAlon Levy ;; 922528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 9230b24e75fSPaolo Bonzini ;; 924023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 925023d3d67SEduardo Habkost ;; 926850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 9270b24e75fSPaolo Bonzini ;; 928ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 92907381cc1SAnthony Liguori ;; 930785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 931785c23aeSLuiz Capitulino ;; 9323d5eecabSGerd Hoffmann --firmwarepath=*) firmwarepath="$optarg" 9333d5eecabSGerd Hoffmann ;; 934785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 935023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 936023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 937023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 938023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 939023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 940023ddd74SMax Filippov # lots of directory switches by default. 941023ddd74SMax Filippov ;; 94297a847bcSbellard --disable-sdl) sdl="no" 94397a847bcSbellard ;; 944c4198157SJuan Quintela --enable-sdl) sdl="yes" 945c4198157SJuan Quintela ;; 94647c03744SDave Airlie --with-sdlabi=*) sdlabi="$optarg" 94747c03744SDave Airlie ;; 9483556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 9493556c233SPaolo Bonzini ;; 9503556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 9513556c233SPaolo Bonzini ;; 952983eef5aSMeador Inge --disable-virtfs) virtfs="no" 953983eef5aSMeador Inge ;; 954983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 955983eef5aSMeador Inge ;; 956fe8fc5aeSPaolo Bonzini --disable-mpath) mpath="no" 957fe8fc5aeSPaolo Bonzini ;; 958fe8fc5aeSPaolo Bonzini --enable-mpath) mpath="yes" 959fe8fc5aeSPaolo Bonzini ;; 960821601eaSJes Sorensen --disable-vnc) vnc="no" 961821601eaSJes Sorensen ;; 962821601eaSJes Sorensen --enable-vnc) vnc="yes" 963821601eaSJes Sorensen ;; 9642f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 9652f6a1ab0Sblueswir1 ;; 9660c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 9670c58ac1cSmalc ;; 96889138857SStefan Weil --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 969b64ec4e4SFam Zheng ;; 97089138857SStefan Weil --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 971eb852011SMarkus Armbruster ;; 972f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 973f8393946Saurel32 ;; 974f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 975f8393946Saurel32 ;; 976f3d08ee6SPaul Brook --enable-debug) 977f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 978f3d08ee6SPaul Brook debug_tcg="yes" 979f3d08ee6SPaul Brook debug="yes" 980f3d08ee6SPaul Brook strip_opt="no" 981b553a042SJohn Snow fortify_source="no" 982f3d08ee6SPaul Brook ;; 98303b4fe7dSaliguori --enable-sparse) sparse="yes" 98403b4fe7dSaliguori ;; 98503b4fe7dSaliguori --disable-sparse) sparse="no" 98603b4fe7dSaliguori ;; 9871625af87Saliguori --disable-strip) strip_opt="no" 9881625af87Saliguori ;; 9892f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 9902f9606b3Saliguori ;; 991ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 992ea784e3bSJuan Quintela ;; 9932f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 9942f6f5c7aSCorentin Chary ;; 9952f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 9962f6f5c7aSCorentin Chary ;; 997efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 998efe556adSCorentin Chary ;; 999efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 1000efe556adSCorentin Chary ;; 1001443f1376Sbellard --disable-slirp) slirp="no" 1002c20709aaSbellard ;; 1003e0e6c8c0Saliguori --disable-vde) vde="no" 10048a16d273Sths ;; 1005dfb278bdSJuan Quintela --enable-vde) vde="yes" 1006dfb278bdSJuan Quintela ;; 100758952137SVincenzo Maffione --disable-netmap) netmap="no" 100858952137SVincenzo Maffione ;; 100958952137SVincenzo Maffione --enable-netmap) netmap="yes" 101058952137SVincenzo Maffione ;; 1011e37630caSaliguori --disable-xen) xen="no" 1012e37630caSaliguori ;; 1013fc321b4bSJuan Quintela --enable-xen) xen="yes" 1014fc321b4bSJuan Quintela ;; 1015eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 1016eb6fda0fSAnthony PERARD ;; 1017eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 1018eb6fda0fSAnthony PERARD ;; 101964a7ad6fSIan Campbell --disable-xen-pv-domain-build) xen_pv_domain_build="no" 102064a7ad6fSIan Campbell ;; 102164a7ad6fSIan Campbell --enable-xen-pv-domain-build) xen_pv_domain_build="yes" 102264a7ad6fSIan Campbell ;; 10232e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 10242e4d9fb1Saurel32 ;; 10254ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 10264ffcedb6SJuan Quintela ;; 1027fb599c9aSbalrog --disable-bluez) bluez="no" 1028fb599c9aSbalrog ;; 1029a20a6f46SJuan Quintela --enable-bluez) bluez="yes" 1030a20a6f46SJuan Quintela ;; 10317ba1e619Saliguori --disable-kvm) kvm="no" 10327ba1e619Saliguori ;; 1033b31a0277SJuan Quintela --enable-kvm) kvm="yes" 1034b31a0277SJuan Quintela ;; 1035b0cb0a66SVincent Palatin --disable-hax) hax="no" 1036180fb750Szhanghailiang ;; 1037b0cb0a66SVincent Palatin --enable-hax) hax="yes" 1038180fb750Szhanghailiang ;; 10399195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 10409195b2c2SStefan Weil ;; 10419195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 10429195b2c2SStefan Weil ;; 104347e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 104447e98658SCorey Bryant ;; 104547e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 104647e98658SCorey Bryant ;; 1047b3f6ea7eSPaolo Bonzini --disable-tcg) tcg="no" 1048b3f6ea7eSPaolo Bonzini ;; 1049b3f6ea7eSPaolo Bonzini --enable-tcg) tcg="yes" 1050b3f6ea7eSPaolo Bonzini ;; 1051*5a22ab71SYang Zhong --disable-malloc-trim) malloc_trim="no" 1052*5a22ab71SYang Zhong ;; 1053*5a22ab71SYang Zhong --enable-malloc-trim) malloc_trim="yes" 1054*5a22ab71SYang Zhong ;; 1055cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 1056cd4ec0b4SGerd Hoffmann ;; 1057cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 1058cd4ec0b4SGerd Hoffmann ;; 1059c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 1060c589b249SRonnie Sahlberg ;; 1061c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 1062c589b249SRonnie Sahlberg ;; 10636542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 10646542aa9cSPeter Lieven ;; 10656542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 10666542aa9cSPeter Lieven ;; 106705c2a3e7Sbellard --enable-profiler) profiler="yes" 106805c2a3e7Sbellard ;; 106914821030SPavel Borzenkov --disable-cocoa) cocoa="no" 107014821030SPavel Borzenkov ;; 1071c2de5c91Smalc --enable-cocoa) 1072c2de5c91Smalc cocoa="yes" ; 107389138857SStefan Weil audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)" 10745b0753e0Sbellard ;; 1075cad25d69Spbrook --disable-system) softmmu="no" 10760a8e90f4Spbrook ;; 1077cad25d69Spbrook --enable-system) softmmu="yes" 10780a8e90f4Spbrook ;; 10790953a80fSZachary Amsden --disable-user) 10800953a80fSZachary Amsden linux_user="no" ; 10810953a80fSZachary Amsden bsd_user="no" ; 10820953a80fSZachary Amsden ;; 10830953a80fSZachary Amsden --enable-user) ;; 1084831b7825Sths --disable-linux-user) linux_user="no" 10850a8e90f4Spbrook ;; 1086831b7825Sths --enable-linux-user) linux_user="yes" 1087831b7825Sths ;; 108884778508Sblueswir1 --disable-bsd-user) bsd_user="no" 108984778508Sblueswir1 ;; 109084778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 109184778508Sblueswir1 ;; 109240d6444eSAvi Kivity --enable-pie) pie="yes" 109334005a00SKirill A. Shutemov ;; 109440d6444eSAvi Kivity --disable-pie) pie="no" 109534005a00SKirill A. Shutemov ;; 109685aa5189Sbellard --enable-werror) werror="yes" 109785aa5189Sbellard ;; 109885aa5189Sbellard --disable-werror) werror="no" 109985aa5189Sbellard ;; 110063678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 110163678e17SSteven Noonan ;; 110263678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 110363678e17SSteven Noonan ;; 11044d3b6f6eSbalrog --disable-curses) curses="no" 11054d3b6f6eSbalrog ;; 1106c584a6d0SJuan Quintela --enable-curses) curses="yes" 1107c584a6d0SJuan Quintela ;; 1108769ce76dSAlexander Graf --disable-curl) curl="no" 1109769ce76dSAlexander Graf ;; 1110788c8196SJuan Quintela --enable-curl) curl="yes" 1111788c8196SJuan Quintela ;; 11122df87df7SJuan Quintela --disable-fdt) fdt="no" 11132df87df7SJuan Quintela ;; 11142df87df7SJuan Quintela --enable-fdt) fdt="yes" 11152df87df7SJuan Quintela ;; 11165c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 11175c6c3a6cSChristoph Hellwig ;; 11185c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 11195c6c3a6cSChristoph Hellwig ;; 1120758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 1121758e8e38SVenkateswararao Jujjuri (JV) ;; 1122758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 1123758e8e38SVenkateswararao Jujjuri (JV) ;; 112477755340Sths --disable-blobs) blobs="no" 112577755340Sths ;; 11264a19f1ecSpbrook --with-pkgversion=*) pkgversion=" ($optarg)" 11274a19f1ecSpbrook ;; 1128519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1129519175a2SAlex Barcelo ;; 113070c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 113170c60c08SStefan Hajnoczi ;; 113270c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 113370c60c08SStefan Hajnoczi ;; 11347d992e4dSPeter Lieven --enable-debug-stack-usage) debug_stack_usage="yes" 11357d992e4dSPeter Lieven ;; 1136f0d92b56SLongpeng(Mike) --enable-crypto-afalg) crypto_afalg="yes" 1137f0d92b56SLongpeng(Mike) ;; 1138f0d92b56SLongpeng(Mike) --disable-crypto-afalg) crypto_afalg="no" 1139f0d92b56SLongpeng(Mike) ;; 1140a25dba17SJuan Quintela --disable-docs) docs="no" 114170ec5dc0SAnthony Liguori ;; 1142a25dba17SJuan Quintela --enable-docs) docs="yes" 114383a3ab8bSJuan Quintela ;; 1144d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1145d5970055SMichael S. Tsirkin ;; 1146d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1147d5970055SMichael S. Tsirkin ;; 11485e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 11495e9be92dSNicholas Bellinger ;; 11505e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 11515e9be92dSNicholas Bellinger ;; 1152fc0b9b0eSStefan Hajnoczi --disable-vhost-vsock) vhost_vsock="no" 1153fc0b9b0eSStefan Hajnoczi ;; 1154fc0b9b0eSStefan Hajnoczi --enable-vhost-vsock) vhost_vsock="yes" 1155fc0b9b0eSStefan Hajnoczi ;; 1156da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 115720ff075bSMichael Walle ;; 1158da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 115920ff075bSMichael Walle ;; 1160f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1161f27aaf4bSChristian Brunner ;; 1162f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1163f27aaf4bSChristian Brunner ;; 11648c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 11658c84cf11SSergei Trofimovich ;; 11668c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 11678c84cf11SSergei Trofimovich ;; 11687b02f544SMarc-André Lureau --disable-smartcard) smartcard="no" 1169111a38b0SRobert Relyea ;; 11707b02f544SMarc-André Lureau --enable-smartcard) smartcard="yes" 1171111a38b0SRobert Relyea ;; 11722b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 11732b2325ffSGerd Hoffmann ;; 11742b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 11752b2325ffSGerd Hoffmann ;; 117669354a83SHans de Goede --disable-usb-redir) usb_redir="no" 117769354a83SHans de Goede ;; 117869354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 117969354a83SHans de Goede ;; 11801ece9905SAlon Levy --disable-zlib-test) zlib="no" 11811ece9905SAlon Levy ;; 1182b25c9dffSStefan Weil --disable-lzo) lzo="no" 1183b25c9dffSStefan Weil ;; 1184607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1185607dacd0Sqiaonuohan ;; 1186b25c9dffSStefan Weil --disable-snappy) snappy="no" 1187b25c9dffSStefan Weil ;; 1188607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1189607dacd0Sqiaonuohan ;; 11906b383c08SPeter Wu --disable-bzip2) bzip2="no" 11916b383c08SPeter Wu ;; 11926b383c08SPeter Wu --enable-bzip2) bzip2="yes" 11936b383c08SPeter Wu ;; 1194d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1195d138cee9SMichael Roth ;; 1196d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1197d138cee9SMichael Roth ;; 11989dacf32dSYossi Hindin --enable-guest-agent-msi) guest_agent_msi="yes" 11999dacf32dSYossi Hindin ;; 12009dacf32dSYossi Hindin --disable-guest-agent-msi) guest_agent_msi="no" 12019dacf32dSYossi Hindin ;; 1202d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1203d9840e25STomoki Sekiyama ;; 1204d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1205d9840e25STomoki Sekiyama ;; 1206d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1207d9840e25STomoki Sekiyama ;; 1208d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1209d9840e25STomoki Sekiyama ;; 1210d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1211d9840e25STomoki Sekiyama ;; 1212d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1213d9840e25STomoki Sekiyama ;; 12144b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 12154b1c11fdSDaniel P. Berrange ;; 12164b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 12174b1c11fdSDaniel P. Berrange ;; 1218f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1219f794573eSEduardo Otubo ;; 1220f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1221f794573eSEduardo Otubo ;; 1222eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1223eb100396SBharata B Rao ;; 1224eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1225eb100396SBharata B Rao ;; 122652b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 122752b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1228583f6e7bSStefan Hajnoczi ;; 1229cb6414dfSFam Zheng --enable-vhdx|--disable-vhdx) 1230cb6414dfSFam Zheng echo "$0: $opt is obsolete, VHDX driver is always built" >&2 1231cb6414dfSFam Zheng ;; 1232315d3184SFam Zheng --enable-uuid|--disable-uuid) 1233315d3184SFam Zheng echo "$0: $opt is obsolete, UUID support is always built" >&2 1234315d3184SFam Zheng ;; 1235a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1236a4ccabcfSAnthony Liguori ;; 1237a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1238a4ccabcfSAnthony Liguori ;; 1239a1c5e949SDaniel P. Berrange --tls-priority=*) tls_priority="$optarg" 1240a1c5e949SDaniel P. Berrange ;; 1241ddbb0d09SDaniel P. Berrange --disable-gnutls) gnutls="no" 1242ddbb0d09SDaniel P. Berrange ;; 1243ddbb0d09SDaniel P. Berrange --enable-gnutls) gnutls="yes" 1244ddbb0d09SDaniel P. Berrange ;; 124591bfcdb0SDaniel P. Berrange --disable-nettle) nettle="no" 124691bfcdb0SDaniel P. Berrange ;; 124791bfcdb0SDaniel P. Berrange --enable-nettle) nettle="yes" 124891bfcdb0SDaniel P. Berrange ;; 124991bfcdb0SDaniel P. Berrange --disable-gcrypt) gcrypt="no" 125091bfcdb0SDaniel P. Berrange ;; 125191bfcdb0SDaniel P. Berrange --enable-gcrypt) gcrypt="yes" 125291bfcdb0SDaniel P. Berrange ;; 12532da776dbSMichael R. Hines --enable-rdma) rdma="yes" 12542da776dbSMichael R. Hines ;; 12552da776dbSMichael R. Hines --disable-rdma) rdma="no" 12562da776dbSMichael R. Hines ;; 1257528de90aSDaniel P. Berrange --with-gtkabi=*) gtkabi="$optarg" 1258528de90aSDaniel P. Berrange ;; 1259bbbf9bfbSStefan Weil --disable-vte) vte="no" 1260bbbf9bfbSStefan Weil ;; 1261bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1262bbbf9bfbSStefan Weil ;; 12639d9e1521SGerd Hoffmann --disable-virglrenderer) virglrenderer="no" 12649d9e1521SGerd Hoffmann ;; 12659d9e1521SGerd Hoffmann --enable-virglrenderer) virglrenderer="yes" 12669d9e1521SGerd Hoffmann ;; 1267e91c793cSCole Robinson --disable-tpm) tpm="no" 1268e91c793cSCole Robinson ;; 1269ab214c29SStefan Berger --enable-tpm) tpm="yes" 1270ab214c29SStefan Berger ;; 12710a12ec87SRichard W.M. Jones --disable-libssh2) libssh2="no" 12720a12ec87SRichard W.M. Jones ;; 12730a12ec87SRichard W.M. Jones --enable-libssh2) libssh2="yes" 12740a12ec87SRichard W.M. Jones ;; 1275ed1701c6SDr. David Alan Gilbert --disable-live-block-migration) live_block_migration="no" 1276ed1701c6SDr. David Alan Gilbert ;; 1277ed1701c6SDr. David Alan Gilbert --enable-live-block-migration) live_block_migration="yes" 1278ed1701c6SDr. David Alan Gilbert ;; 1279a99d57bbSWanlong Gao --disable-numa) numa="no" 1280a99d57bbSWanlong Gao ;; 1281a99d57bbSWanlong Gao --enable-numa) numa="yes" 1282a99d57bbSWanlong Gao ;; 12832847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 12842847b469SFam Zheng ;; 12852847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 12862847b469SFam Zheng ;; 12877b01cb97SAlexandre Derumier --disable-jemalloc) jemalloc="no" 12887b01cb97SAlexandre Derumier ;; 12897b01cb97SAlexandre Derumier --enable-jemalloc) jemalloc="yes" 12907b01cb97SAlexandre Derumier ;; 1291a6b1d4c0SChanglong Xie --disable-replication) replication="no" 1292a6b1d4c0SChanglong Xie ;; 1293a6b1d4c0SChanglong Xie --enable-replication) replication="yes" 1294a6b1d4c0SChanglong Xie ;; 1295da92c3ffSAshish Mittal --disable-vxhs) vxhs="no" 1296da92c3ffSAshish Mittal ;; 1297da92c3ffSAshish Mittal --enable-vxhs) vxhs="yes" 1298da92c3ffSAshish Mittal ;; 1299e6a74868SMarc-André Lureau --disable-vhost-user) vhost_user="no" 1300e6a74868SMarc-André Lureau ;; 1301e6a74868SMarc-André Lureau --enable-vhost-user) 1302e6a74868SMarc-André Lureau vhost_user="yes" 1303e6a74868SMarc-André Lureau if test "$mingw32" = "yes"; then 1304e6a74868SMarc-André Lureau error_exit "vhost-user isn't available on win32" 1305e6a74868SMarc-André Lureau fi 1306e6a74868SMarc-André Lureau ;; 13078ca80760SRichard Henderson --disable-capstone) capstone="no" 13088ca80760SRichard Henderson ;; 13098ca80760SRichard Henderson --enable-capstone) capstone="yes" 13108ca80760SRichard Henderson ;; 1311e219c499SRichard Henderson --enable-capstone=git) capstone="git" 1312e219c499SRichard Henderson ;; 1313e219c499SRichard Henderson --enable-capstone=system) capstone="system" 1314e219c499SRichard Henderson ;; 1315cc84d63aSDaniel P. Berrange --with-git=*) git="$optarg" 1316cc84d63aSDaniel P. Berrange ;; 1317f62bbee5SDaniel P. Berrange --enable-git-update) git_update=yes 1318f62bbee5SDaniel P. Berrange ;; 1319f62bbee5SDaniel P. Berrange --disable-git-update) git_update=no 1320f62bbee5SDaniel P. Berrange ;; 13212d2ad6d0SFam Zheng *) 13222d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 13232d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 13242d2ad6d0SFam Zheng exit 1 13257f1559c6Sbalrog ;; 13267d13299dSbellard esac 13277d13299dSbellarddone 13287d13299dSbellard 1329e6a74868SMarc-André Lureauif test "$vhost_user" = ""; then 1330e6a74868SMarc-André Lureau if test "$mingw32" = "yes"; then 1331e6a74868SMarc-André Lureau vhost_user="no" 1332e6a74868SMarc-André Lureau else 1333e6a74868SMarc-André Lureau vhost_user="yes" 1334e6a74868SMarc-André Lureau fi 1335e6a74868SMarc-André Lureaufi 1336e6a74868SMarc-André Lureau 133740293e58Sbellardcase "$cpu" in 1338e3608d66SRichard Henderson ppc) 1339e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1340e3608d66SRichard Henderson LDFLAGS="-m32 $LDFLAGS" 1341e3608d66SRichard Henderson ;; 1342e3608d66SRichard Henderson ppc64) 1343e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1344e3608d66SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 1345e3608d66SRichard Henderson ;; 13469b9c37c3SRichard Henderson sparc) 1347f1079bb8SRichard Henderson CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" 1348f1079bb8SRichard Henderson LDFLAGS="-m32 -mv8plus $LDFLAGS" 13493142255cSblueswir1 ;; 1350ed968ff1SJuan Quintela sparc64) 135179f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 1352f1079bb8SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 13533142255cSblueswir1 ;; 135476d83bdeSths s390) 1355061cdd81SRichard Henderson CPU_CFLAGS="-m31" 135628d7cc49SRichard Henderson LDFLAGS="-m31 $LDFLAGS" 135728d7cc49SRichard Henderson ;; 135828d7cc49SRichard Henderson s390x) 1359061cdd81SRichard Henderson CPU_CFLAGS="-m64" 136028d7cc49SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 136176d83bdeSths ;; 136240293e58Sbellard i386) 136379f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 13640c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 13652b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 136640293e58Sbellard ;; 136740293e58Sbellard x86_64) 13687ebee43eSRichard Henderson # ??? Only extremely old AMD cpus do not have cmpxchg16b. 13697ebee43eSRichard Henderson # If we truly care, we should simply detect this case at 13707ebee43eSRichard Henderson # runtime and generate the fallback to serial emulation. 13717ebee43eSRichard Henderson CPU_CFLAGS="-m64 -mcx16" 13720c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 13732b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 1374379f6698SPaul Brook ;; 1375c72b26ecSRichard Henderson x32) 1376c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1377c72b26ecSRichard Henderson LDFLAGS="-mx32 $LDFLAGS" 1378c72b26ecSRichard Henderson cc_i386='$(CC) -m32' 1379c72b26ecSRichard Henderson ;; 138030163d89SPeter Maydell # No special flags required for other host CPUs 13813142255cSblueswir1esac 13823142255cSblueswir1 138379f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 138479f3b12fSPeter CrosthwaiteEXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS" 138579f3b12fSPeter Crosthwaite 1386affc88ccSPeter Maydell# For user-mode emulation the host arch has to be one we explicitly 1387affc88ccSPeter Maydell# support, even if we're using TCI. 1388affc88ccSPeter Maydellif [ "$ARCH" = "unknown" ]; then 1389affc88ccSPeter Maydell bsd_user="no" 1390affc88ccSPeter Maydell linux_user="no" 1391affc88ccSPeter Maydellfi 1392affc88ccSPeter Maydell 139360e0df25SPeter Maydelldefault_target_list="" 139460e0df25SPeter Maydell 13956e92f823SPeter Maydellmak_wilds="" 13966e92f823SPeter Maydell 139760e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 13986e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 139960e0df25SPeter Maydellfi 140060e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 14016e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 140260e0df25SPeter Maydellfi 140360e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 14046e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 140560e0df25SPeter Maydellfi 140660e0df25SPeter Maydell 14076e92f823SPeter Maydellfor config in $mak_wilds; do 14086e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 14096e92f823SPeter Maydelldone 14106e92f823SPeter Maydell 1411c53eeaf7SStefan Hajnoczi# Enumerate public trace backends for --help output 141264a6047dSGreg Kurztrace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/')) 1413c53eeaf7SStefan Hajnoczi 1414af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1415af5db58eSpbrookcat << EOF 1416af5db58eSpbrook 1417af5db58eSpbrookUsage: configure [options] 1418af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1419af5db58eSpbrook 142008fb77edSStefan WeilStandard options: 142108fb77edSStefan Weil --help print this message 142208fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 142308fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 142408fb77edSStefan Weil use %M for cpu name [$interp_prefix] 142508fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 142608fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 142708fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 142808fb77edSStefan Weil 142908fb77edSStefan WeilAdvanced options (experts only): 143008fb77edSStefan Weil --source-path=PATH path of source code [$source_path] 143108fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 143208fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 143308fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 143408fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 143508fb77edSStefan Weil build time 143608fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 143708fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 143808fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 143911cde1c8SBruno Dominguez --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS 144008fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 144108fb77edSStefan Weil --make=MAKE use specified make [$make] 144208fb77edSStefan Weil --install=INSTALL use specified install [$install] 144308fb77edSStefan Weil --python=PYTHON use specified python [$python] 144408fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 144508fb77edSStefan Weil --static enable static build [$static] 144608fb77edSStefan Weil --mandir=PATH install man pages in PATH 144708fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 144808fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 144908fb77edSStefan Weil --bindir=PATH install binaries in PATH 145008fb77edSStefan Weil --libdir=PATH install libraries in PATH 145108fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 145208fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 14533d5eecabSGerd Hoffmann --firmwarepath=PATH search PATH for firmware files 1454e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 145508fb77edSStefan Weil --enable-debug enable common debug build options 145608fb77edSStefan Weil --disable-strip disable stripping binaries 145708fb77edSStefan Weil --disable-werror disable compilation abort on warning 145863678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 145908fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 146008fb77edSStefan Weil Available drivers: $audio_possible_drivers 146108fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 146208fb77edSStefan Weil --block-drv-rw-whitelist=L 146308fb77edSStefan Weil set block driver read-write whitelist 146408fb77edSStefan Weil (affects only QEMU, not qemu-img) 146508fb77edSStefan Weil --block-drv-ro-whitelist=L 146608fb77edSStefan Weil set block driver read-only whitelist 146708fb77edSStefan Weil (affects only QEMU, not qemu-img) 14685b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 1469c53eeaf7SStefan Hajnoczi Available backends: $trace_backend_list 147008fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 147108fb77edSStefan Weil Default:trace-<pid> 1472c23f23b9SMichael Tokarev --disable-slirp disable SLIRP userspace network connectivity 1473c23f23b9SMichael Tokarev --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 1474*5a22ab71SYang Zhong --enable-malloc-trim enable libc malloc_trim() for memory optimization 1475c23f23b9SMichael Tokarev --oss-lib path to OSS library 1476c23f23b9SMichael Tokarev --cpu=CPU Build for host CPU [$cpu] 147708fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 147833c53c54SDaniel P. Berrange ucontext, sigaltstack, windows 147908fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 148008fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 1481c23f23b9SMichael Tokarev --disable-blobs disable installing provided firmware blobs 1482c23f23b9SMichael Tokarev --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1483c23f23b9SMichael Tokarev --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1484a1c5e949SDaniel P. Berrange --tls-priority default TLS protocol/cipher priority string 1485c12d66aaSLin Ma --enable-gprof QEMU profiling with gprof 1486c12d66aaSLin Ma --enable-profiler profiler support 1487c12d66aaSLin Ma --enable-xen-pv-domain-build 1488c12d66aaSLin Ma xen pv domain builder 1489c12d66aaSLin Ma --enable-debug-stack-usage 1490c12d66aaSLin Ma track the maximum stack usage of stacks created by qemu_alloc_stack 1491c23f23b9SMichael Tokarev 1492c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and 1493c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available: 1494c23f23b9SMichael Tokarev 1495c23f23b9SMichael Tokarev system all system emulation targets 1496c23f23b9SMichael Tokarev user supported user emulation targets 1497c23f23b9SMichael Tokarev linux-user all linux usermode emulation targets 1498c23f23b9SMichael Tokarev bsd-user all BSD usermode emulation targets 1499c23f23b9SMichael Tokarev docs build documentation 1500c23f23b9SMichael Tokarev guest-agent build the QEMU Guest Agent 1501c23f23b9SMichael Tokarev guest-agent-msi build guest agent Windows MSI installation package 1502c23f23b9SMichael Tokarev pie Position Independent Executables 1503c23f23b9SMichael Tokarev modules modules support 1504c23f23b9SMichael Tokarev debug-tcg TCG debugging (default is disabled) 1505c23f23b9SMichael Tokarev debug-info debugging information 1506c23f23b9SMichael Tokarev sparse sparse checker 1507c23f23b9SMichael Tokarev 1508ddbb0d09SDaniel P. Berrange gnutls GNUTLS cryptography support 150991bfcdb0SDaniel P. Berrange nettle nettle cryptography support 151091bfcdb0SDaniel P. Berrange gcrypt libgcrypt cryptography support 1511c23f23b9SMichael Tokarev sdl SDL UI 1512c23f23b9SMichael Tokarev --with-sdlabi select preferred SDL ABI 1.2 or 2.0 1513c23f23b9SMichael Tokarev gtk gtk UI 1514c23f23b9SMichael Tokarev --with-gtkabi select preferred GTK ABI 2.0 or 3.0 1515c23f23b9SMichael Tokarev vte vte support for the gtk UI 1516c23f23b9SMichael Tokarev curses curses UI 1517c23f23b9SMichael Tokarev vnc VNC UI support 1518c23f23b9SMichael Tokarev vnc-sasl SASL encryption for VNC server 1519c23f23b9SMichael Tokarev vnc-jpeg JPEG lossy compression for VNC server 1520c23f23b9SMichael Tokarev vnc-png PNG compression for VNC server 1521c23f23b9SMichael Tokarev cocoa Cocoa UI (Mac OS X only) 1522c23f23b9SMichael Tokarev virtfs VirtFS 1523fe8fc5aeSPaolo Bonzini mpath Multipath persistent reservation passthrough 1524c23f23b9SMichael Tokarev xen xen backend driver support 1525c23f23b9SMichael Tokarev xen-pci-passthrough 1526c23f23b9SMichael Tokarev brlapi BrlAPI (Braile) 1527c23f23b9SMichael Tokarev curl curl connectivity 1528c23f23b9SMichael Tokarev fdt fdt device tree 1529c23f23b9SMichael Tokarev bluez bluez stack connectivity 1530c23f23b9SMichael Tokarev kvm KVM acceleration support 1531b0cb0a66SVincent Palatin hax HAX acceleration support 1532c23f23b9SMichael Tokarev rdma RDMA-based migration support 1533c23f23b9SMichael Tokarev vde support for vde network 1534c23f23b9SMichael Tokarev netmap support for netmap network 1535c23f23b9SMichael Tokarev linux-aio Linux AIO support 1536c23f23b9SMichael Tokarev cap-ng libcap-ng support 1537c23f23b9SMichael Tokarev attr attr and xattr support 1538c23f23b9SMichael Tokarev vhost-net vhost-net acceleration support 1539c23f23b9SMichael Tokarev spice spice 1540c23f23b9SMichael Tokarev rbd rados block device (rbd) 1541c23f23b9SMichael Tokarev libiscsi iscsi support 1542c23f23b9SMichael Tokarev libnfs nfs support 15437b02f544SMarc-André Lureau smartcard smartcard support (libcacard) 1544c23f23b9SMichael Tokarev libusb libusb (for usb passthrough) 1545ed1701c6SDr. David Alan Gilbert live-block-migration Block migration in the main migration stream 1546c23f23b9SMichael Tokarev usb-redir usb network redirection support 1547c23f23b9SMichael Tokarev lzo support of lzo compression library 1548c23f23b9SMichael Tokarev snappy support of snappy compression library 1549c23f23b9SMichael Tokarev bzip2 support of bzip2 compression library 1550c23f23b9SMichael Tokarev (for reading bzip2-compressed dmg images) 1551c23f23b9SMichael Tokarev seccomp seccomp support 1552c23f23b9SMichael Tokarev coroutine-pool coroutine freelist (better performance) 1553c23f23b9SMichael Tokarev glusterfs GlusterFS backend 1554c23f23b9SMichael Tokarev tpm TPM support 1555c23f23b9SMichael Tokarev libssh2 ssh block device support 1556c23f23b9SMichael Tokarev numa libnuma support 1557c23f23b9SMichael Tokarev tcmalloc tcmalloc support 15587b01cb97SAlexandre Derumier jemalloc jemalloc support 1559a6b1d4c0SChanglong Xie replication replication support 1560c12d66aaSLin Ma vhost-vsock virtio sockets device support 1561c12d66aaSLin Ma opengl opengl support 1562c12d66aaSLin Ma virglrenderer virgl rendering support 1563c12d66aaSLin Ma xfsctl xfsctl support 1564c12d66aaSLin Ma qom-cast-debug cast debugging support 1565c12d66aaSLin Ma tools build qemu-io, qemu-nbd and qemu-image tools 1566da92c3ffSAshish Mittal vxhs Veritas HyperScale vDisk backend support 1567f0d92b56SLongpeng(Mike) crypto-afalg Linux AF_ALG crypto backend driver 1568e6a74868SMarc-André Lureau vhost-user vhost-user support 15698ca80760SRichard Henderson capstone capstone disassembler support 157008fb77edSStefan Weil 157108fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1572af5db58eSpbrookEOF 15732d2ad6d0SFam Zhengexit 0 1574af5db58eSpbrookfi 1575af5db58eSpbrook 1576c53eeaf7SStefan Hajnocziif ! has $python; then 1577c53eeaf7SStefan Hajnoczi error_exit "Python not found. Use --python=/path/to/python" 1578c53eeaf7SStefan Hajnoczifi 1579c53eeaf7SStefan Hajnoczi 1580c53eeaf7SStefan Hajnoczi# Note that if the Python conditional here evaluates True we will exit 1581c53eeaf7SStefan Hajnoczi# with status 1 which is a shell 'false' value. 1582c53eeaf7SStefan Hajnocziif ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then 1583c53eeaf7SStefan Hajnoczi error_exit "Cannot use '$python', Python 2.6 or later is required." \ 1584c53eeaf7SStefan Hajnoczi "Note that Python 3 or later is not yet supported." \ 1585c53eeaf7SStefan Hajnoczi "Use --python=/path/to/python to specify a supported Python." 1586c53eeaf7SStefan Hajnoczifi 1587c53eeaf7SStefan Hajnoczi 1588c53eeaf7SStefan Hajnoczi# Suppress writing compiled files 1589c53eeaf7SStefan Hajnoczipython="$python -B" 1590c53eeaf7SStefan Hajnoczi 15919aae6e54SDaniel Henrique Barboza# Check that the C compiler works. Doing this here before testing 15929aae6e54SDaniel Henrique Barboza# the host CPU ensures that we had a valid CC to autodetect the 15939aae6e54SDaniel Henrique Barboza# $cpu var (and we should bail right here if that's not the case). 15949aae6e54SDaniel Henrique Barboza# It also allows the help message to be printed without a CC. 15959aae6e54SDaniel Henrique Barbozawrite_c_skeleton; 15969aae6e54SDaniel Henrique Barbozaif compile_object ; then 15979aae6e54SDaniel Henrique Barboza : C compiler works ok 15989aae6e54SDaniel Henrique Barbozaelse 15999aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" either does not exist or does not work" 16009aae6e54SDaniel Henrique Barbozafi 16019aae6e54SDaniel Henrique Barbozaif ! compile_prog ; then 16029aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" cannot build an executable (is your linker broken?)" 16039aae6e54SDaniel Henrique Barbozafi 16049aae6e54SDaniel Henrique Barboza 1605359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 1606359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 1607359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 1608359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 1609359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1610359bc95dSPeter Maydell else 161176ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1612359bc95dSPeter Maydell fi 1613359bc95dSPeter Maydellfi 1614359bc95dSPeter Maydell 16159c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 16169c83ffd8SPeter Maydell# by default. Only enable by default for git builds 16179c83ffd8SPeter Maydellif test -z "$werror" ; then 16189c83ffd8SPeter Maydell if test -d "$source_path/.git" -a \ 1619e4650c81SThomas Huth \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then 16209c83ffd8SPeter Maydell werror="yes" 16219c83ffd8SPeter Maydell else 16229c83ffd8SPeter Maydell werror="no" 16239c83ffd8SPeter Maydell fi 16249c83ffd8SPeter Maydellfi 16259c83ffd8SPeter Maydell 1626fb59dabdSPeter Maydellif test "$bogus_os" = "yes"; then 1627fb59dabdSPeter Maydell # Now that we know that we're not printing the help and that 1628fb59dabdSPeter Maydell # the compiler works (so the results of the check_defines we used 1629fb59dabdSPeter Maydell # to identify the OS are reliable), if we didn't recognize the 1630fb59dabdSPeter Maydell # host OS we should stop now. 1631951fedfcSPeter Maydell error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')" 1632fb59dabdSPeter Maydellfi 1633fb59dabdSPeter Maydell 16348d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 16358d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 1636ac7568bdSDaniel P. Berrangegcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 1637435405acSPranith Kumargcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags" 1638b98fcfd8SPaolo Bonzinigcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags" 163971429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags" 16406ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would 16416ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due 16426ca026cbSPeter Maydell# to -Werror this would just silently disable some features, 16436ca026cbSPeter Maydell# so it's too error prone. 164493b25869SJohn Snow 164593b25869SJohn Snowcc_has_warning_flag() { 164693b25869SJohn Snow write_c_skeleton; 164793b25869SJohn Snow 1648a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 1649a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 1650a1d29d6cSPeter Maydell # warning options). 165193b25869SJohn Snow optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 165293b25869SJohn Snow compile_prog "-Werror $optflag" "" 165393b25869SJohn Snow} 165493b25869SJohn Snow 165593b25869SJohn Snowfor flag in $gcc_flags; do 165693b25869SJohn Snow if cc_has_warning_flag $flag ; then 16578d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 16588d05095cSPaolo Bonzini fi 16598d05095cSPaolo Bonzinidone 16608d05095cSPaolo Bonzini 166163678e17SSteven Noonanif test "$stack_protector" != "no"; then 1662fccd35a0SRodrigo Rebello cat > $TMPC << EOF 1663fccd35a0SRodrigo Rebelloint main(int argc, char *argv[]) 1664fccd35a0SRodrigo Rebello{ 1665fccd35a0SRodrigo Rebello char arr[64], *p = arr, *c = argv[0]; 1666fccd35a0SRodrigo Rebello while (*c) { 1667fccd35a0SRodrigo Rebello *p++ = *c++; 1668fccd35a0SRodrigo Rebello } 1669fccd35a0SRodrigo Rebello return 0; 1670fccd35a0SRodrigo Rebello} 1671fccd35a0SRodrigo RebelloEOF 167263678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 16733b463a3fSMiroslav Rezanina sp_on=0 167463678e17SSteven Noonan for flag in $gcc_flags; do 1675590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 1676590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 1677590e5dd9SPeter Maydell if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 1678590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 167963678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 16803b463a3fSMiroslav Rezanina sp_on=1 168163678e17SSteven Noonan break 168263678e17SSteven Noonan fi 168363678e17SSteven Noonan done 16843b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 16853b463a3fSMiroslav Rezanina if test $sp_on = 0; then 16863b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 16873b463a3fSMiroslav Rezanina fi 16883b463a3fSMiroslav Rezanina fi 168937746c5eSMarc-André Lureaufi 169037746c5eSMarc-André Lureau 169120bc94a2SPaolo Bonzini# Disable -Wmissing-braces on older compilers that warn even for 169220bc94a2SPaolo Bonzini# the "universal" C zero initializer {0}. 169320bc94a2SPaolo Bonzinicat > $TMPC << EOF 169420bc94a2SPaolo Bonzinistruct { 169520bc94a2SPaolo Bonzini int a[2]; 169620bc94a2SPaolo Bonzini} x = {0}; 169720bc94a2SPaolo BonziniEOF 169820bc94a2SPaolo Bonziniif compile_object "-Werror" "" ; then 169920bc94a2SPaolo Bonzini : 170020bc94a2SPaolo Bonzinielse 170120bc94a2SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces" 170220bc94a2SPaolo Bonzinifi 170320bc94a2SPaolo Bonzini 1704cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1705cbdd1999SPaolo Bonzini# large functions that use global variables. The bug is in all releases of 1706cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1707cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1708cbdd1999SPaolo Bonzinicat > $TMPC << EOF 1709cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1710cbdd1999SPaolo Bonziniint main(void) { return 0; } 1711cbdd1999SPaolo Bonzini#else 1712cbdd1999SPaolo Bonzini#error No bug in this compiler. 1713cbdd1999SPaolo Bonzini#endif 1714cbdd1999SPaolo BonziniEOF 1715cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then 1716cbdd1999SPaolo Bonzini TRANSLATE_OPT_CFLAGS=-fno-gcse 1717cbdd1999SPaolo Bonzinifi 1718cbdd1999SPaolo Bonzini 171940d6444eSAvi Kivityif test "$static" = "yes" ; then 1720aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 1721aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 1722aa0d1f44SPaolo Bonzini fi 172340d6444eSAvi Kivity if test "$pie" = "yes" ; then 172476ad07a4SPeter Maydell error_exit "static and pie are mutually incompatible" 172540d6444eSAvi Kivity else 172640d6444eSAvi Kivity pie="no" 172740d6444eSAvi Kivity fi 172840d6444eSAvi Kivityfi 172940d6444eSAvi Kivity 1730768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 1731768b7855SEmilio G. Cota cat > $TMPC << EOF 1732768b7855SEmilio G. Cotastatic __thread int tls_var; 1733768b7855SEmilio G. Cotaint main(void) { return tls_var; } 1734768b7855SEmilio G. CotaEOF 1735768b7855SEmilio G. Cota 1736768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 1737768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 1738768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 1739768b7855SEmilio G. Cotafi 1740768b7855SEmilio G. Cota 174140d6444eSAvi Kivityif test "$pie" = ""; then 174240d6444eSAvi Kivity case "$cpu-$targetos" in 1743c72b26ecSRichard Henderson i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 174440d6444eSAvi Kivity ;; 174540d6444eSAvi Kivity *) 174640d6444eSAvi Kivity pie="no" 174740d6444eSAvi Kivity ;; 174840d6444eSAvi Kivity esac 174940d6444eSAvi Kivityfi 175040d6444eSAvi Kivity 175140d6444eSAvi Kivityif test "$pie" != "no" ; then 175240d6444eSAvi Kivity cat > $TMPC << EOF 175321d4a791SAvi Kivity 175421d4a791SAvi Kivity#ifdef __linux__ 175521d4a791SAvi Kivity# define THREAD __thread 175621d4a791SAvi Kivity#else 175721d4a791SAvi Kivity# define THREAD 175821d4a791SAvi Kivity#endif 175921d4a791SAvi Kivity 176021d4a791SAvi Kivitystatic THREAD int tls_var; 176121d4a791SAvi Kivity 176221d4a791SAvi Kivityint main(void) { return tls_var; } 176321d4a791SAvi Kivity 176440d6444eSAvi KivityEOF 176540d6444eSAvi Kivity if compile_prog "-fPIE -DPIE" "-pie"; then 176640d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 176740d6444eSAvi Kivity LDFLAGS="-pie $LDFLAGS" 176840d6444eSAvi Kivity pie="yes" 176940d6444eSAvi Kivity if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 177040d6444eSAvi Kivity LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 177140d6444eSAvi Kivity fi 177240d6444eSAvi Kivity else 177340d6444eSAvi Kivity if test "$pie" = "yes"; then 177476ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 177540d6444eSAvi Kivity else 177640d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 177740d6444eSAvi Kivity pie="no" 177840d6444eSAvi Kivity fi 177940d6444eSAvi Kivity fi 178046eef33bSBrad 1781e4a7b344SStefan Hajnoczi if compile_prog "-Werror -fno-pie" "-nopie"; then 178246eef33bSBrad CFLAGS_NOPIE="-fno-pie" 178346eef33bSBrad LDFLAGS_NOPIE="-nopie" 178446eef33bSBrad fi 178540d6444eSAvi Kivityfi 178640d6444eSAvi Kivity 178709dada40SPaolo Bonzini########################################## 178809dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 178909dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 179009dada40SPaolo Bonzini# specification is necessary 179109dada40SPaolo Bonzini 179209dada40SPaolo Bonziniif test "$cpu" = "i386"; then 179309dada40SPaolo Bonzini cat > $TMPC << EOF 179409dada40SPaolo Bonzinistatic int sfaa(int *ptr) 179509dada40SPaolo Bonzini{ 179609dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 179709dada40SPaolo Bonzini} 179809dada40SPaolo Bonzini 179909dada40SPaolo Bonziniint main(void) 180009dada40SPaolo Bonzini{ 180109dada40SPaolo Bonzini int val = 42; 18021405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 180309dada40SPaolo Bonzini sfaa(&val); 180409dada40SPaolo Bonzini return val; 180509dada40SPaolo Bonzini} 180609dada40SPaolo BonziniEOF 180709dada40SPaolo Bonzini if ! compile_prog "" "" ; then 180809dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 180909dada40SPaolo Bonzini fi 181009dada40SPaolo Bonzinifi 181109dada40SPaolo Bonzini 181209dada40SPaolo Bonzini######################################### 1813ec530c81Sbellard# Solaris specific configure tool chain decisions 181409dada40SPaolo Bonzini 1815ec530c81Sbellardif test "$solaris" = "yes" ; then 18166792aa11SLoïc Minier if has $install; then 18176792aa11SLoïc Minier : 18186792aa11SLoïc Minier else 181976ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 182076ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 182176ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1822ec530c81Sbellard fi 182389138857SStefan Weil if test "$(path_of $install)" = "/usr/sbin/install" ; then 182476ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 182576ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 182676ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1827ec530c81Sbellard fi 18286792aa11SLoïc Minier if has ar; then 18296792aa11SLoïc Minier : 18306792aa11SLoïc Minier else 1831ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 183276ad07a4SPeter Maydell error_exit "No path includes ar" \ 183376ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 1834ec530c81Sbellard fi 183576ad07a4SPeter Maydell error_exit "No path includes ar" 1836ec530c81Sbellard fi 1837ec530c81Sbellardfi 1838ec530c81Sbellard 1839afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 1840d880a3baSPaolo Bonzini for target in $default_target_list; do 1841d880a3baSPaolo Bonzini supported_target $target 2>/dev/null && \ 1842d880a3baSPaolo Bonzini target_list="$target_list $target" 1843d880a3baSPaolo Bonzini done 1844d880a3baSPaolo Bonzini target_list="${target_list# }" 1845121afa9eSAnthony Liguorielse 184689138857SStefan Weil target_list=$(echo "$target_list" | sed -e 's/,/ /g') 1847d880a3baSPaolo Bonzini for target in $target_list; do 184825b48338SPeter Maydell # Check that we recognised the target name; this allows a more 184925b48338SPeter Maydell # friendly error message than if we let it fall through. 185025b48338SPeter Maydell case " $default_target_list " in 185125b48338SPeter Maydell *" $target "*) 185225b48338SPeter Maydell ;; 185325b48338SPeter Maydell *) 185425b48338SPeter Maydell error_exit "Unknown target name '$target'" 185525b48338SPeter Maydell ;; 185625b48338SPeter Maydell esac 1857d880a3baSPaolo Bonzini supported_target $target || exit 1 185825b48338SPeter Maydell done 1859d880a3baSPaolo Bonzinifi 186025b48338SPeter Maydell 1861f55fe278SPaolo Bonzini# see if system emulation was really requested 1862f55fe278SPaolo Bonzinicase " $target_list " in 1863f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 1864f55fe278SPaolo Bonzini ;; 1865f55fe278SPaolo Bonzini *) softmmu=no 1866f55fe278SPaolo Bonzini ;; 1867f55fe278SPaolo Bonziniesac 18685327cf48Sbellard 1869249247c9SJuan Quintelafeature_not_found() { 1870249247c9SJuan Quintela feature=$1 187121684af0SStewart Smith remedy=$2 1872249247c9SJuan Quintela 187376ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 187421684af0SStewart Smith "configure was not able to find it." \ 187521684af0SStewart Smith "$remedy" 1876249247c9SJuan Quintela} 1877249247c9SJuan Quintela 18787d13299dSbellard# --- 18797d13299dSbellard# big/little endian test 18807d13299dSbellardcat > $TMPC << EOF 188161cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 188261cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 188361cc919fSMike Frysingerextern int foo(short *, short *); 188461cc919fSMike Frysingerint main(int argc, char *argv[]) { 188561cc919fSMike Frysinger return foo(big_endian, little_endian); 18867d13299dSbellard} 18877d13299dSbellardEOF 18887d13299dSbellard 188961cc919fSMike Frysingerif compile_object ; then 189061cc919fSMike Frysinger if grep -q BiGeNdIaN $TMPO ; then 189161cc919fSMike Frysinger bigendian="yes" 189261cc919fSMike Frysinger elif grep -q LiTtLeEnDiAn $TMPO ; then 189361cc919fSMike Frysinger bigendian="no" 18947d13299dSbellard else 18957d13299dSbellard echo big/little test failed 18967d13299dSbellard fi 18977d13299dSbellardelse 189861cc919fSMike Frysinger echo big/little test failed 18997d13299dSbellardfi 19007d13299dSbellard 1901b0a47e79SJuan Quintela########################################## 1902a30878e7SPeter Maydell# cocoa implies not SDL or GTK 1903a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI 1904a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code) 1905a30878e7SPeter Maydellif test "$cocoa" = "yes"; then 1906a30878e7SPeter Maydell if test "$sdl" = "yes"; then 1907a30878e7SPeter Maydell error_exit "Cocoa and SDL UIs cannot both be enabled at once" 1908a30878e7SPeter Maydell fi 1909a30878e7SPeter Maydell if test "$gtk" = "yes"; then 1910a30878e7SPeter Maydell error_exit "Cocoa and GTK UIs cannot both be enabled at once" 1911a30878e7SPeter Maydell fi 1912a30878e7SPeter Maydell gtk=no 1913a30878e7SPeter Maydell sdl=no 1914a30878e7SPeter Maydellfi 1915a30878e7SPeter Maydell 19166b39b063SEric Blake# Some versions of Mac OS X incorrectly define SIZE_MAX 19176b39b063SEric Blakecat > $TMPC << EOF 19186b39b063SEric Blake#include <stdint.h> 19196b39b063SEric Blake#include <stdio.h> 19206b39b063SEric Blakeint main(int argc, char *argv[]) { 19216b39b063SEric Blake return printf("%zu", SIZE_MAX); 19226b39b063SEric Blake} 19236b39b063SEric BlakeEOF 19246b39b063SEric Blakehave_broken_size_max=no 19256b39b063SEric Blakeif ! compile_object -Werror ; then 19266b39b063SEric Blake have_broken_size_max=yes 19276b39b063SEric Blakefi 19286b39b063SEric Blake 1929a30878e7SPeter Maydell########################################## 1930015a33bdSGonglei# L2TPV3 probe 1931015a33bdSGonglei 1932015a33bdSGongleicat > $TMPC <<EOF 1933015a33bdSGonglei#include <sys/socket.h> 1934bff6cb72SMichael Tokarev#include <linux/ip.h> 1935015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 1936015a33bdSGongleiEOF 1937015a33bdSGongleiif compile_prog "" "" ; then 1938015a33bdSGonglei l2tpv3=yes 1939015a33bdSGongleielse 1940015a33bdSGonglei l2tpv3=no 1941015a33bdSGongleifi 1942015a33bdSGonglei 1943015a33bdSGonglei########################################## 19444d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check 19454d9310f4SDaniel P. Berrange 19464d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then 19474d9310f4SDaniel P. Berrange # Some versions of MinGW / Mingw-w64 lack localtime_r 19484d9310f4SDaniel P. Berrange # and gmtime_r entirely. 19494d9310f4SDaniel P. Berrange # 19504d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 define a macro for 19514d9310f4SDaniel P. Berrange # localtime_r/gmtime_r. 19524d9310f4SDaniel P. Berrange # 19534d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 will define functions 19544d9310f4SDaniel P. Berrange # for localtime_r/gmtime_r, but only if you have 19554d9310f4SDaniel P. Berrange # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun 19564d9310f4SDaniel P. Berrange # though, unistd.h and pthread.h both define 19574d9310f4SDaniel P. Berrange # that for you. 19584d9310f4SDaniel P. Berrange # 19594d9310f4SDaniel P. Berrange # So this #undef localtime_r and #include <unistd.h> 19604d9310f4SDaniel P. Berrange # are not in fact redundant. 19614d9310f4SDaniel P. Berrangecat > $TMPC << EOF 19624d9310f4SDaniel P. Berrange#include <unistd.h> 19634d9310f4SDaniel P. Berrange#include <time.h> 19644d9310f4SDaniel P. Berrange#undef localtime_r 19654d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; } 19664d9310f4SDaniel P. BerrangeEOF 19674d9310f4SDaniel P. Berrange if compile_prog "" "" ; then 19684d9310f4SDaniel P. Berrange localtime_r="yes" 19694d9310f4SDaniel P. Berrange else 19704d9310f4SDaniel P. Berrange localtime_r="no" 19714d9310f4SDaniel P. Berrange fi 19724d9310f4SDaniel P. Berrangefi 19734d9310f4SDaniel P. Berrange 19744d9310f4SDaniel P. Berrange########################################## 1975779ab5e3SStefan Weil# pkg-config probe 1976779ab5e3SStefan Weil 1977779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 197876ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 1979779ab5e3SStefan Weilfi 1980779ab5e3SStefan Weil 1981779ab5e3SStefan Weil########################################## 1982b0a47e79SJuan Quintela# NPTL probe 1983b0a47e79SJuan Quintela 198424cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 1985bd0c5661Spbrook cat > $TMPC <<EOF 1986bd0c5661Spbrook#include <sched.h> 198730813ceaSpbrook#include <linux/futex.h> 1988182eacc0SStefan Weilint main(void) { 1989bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1990bd0c5661Spbrook#error bork 1991bd0c5661Spbrook#endif 1992182eacc0SStefan Weil return 0; 1993bd0c5661Spbrook} 1994bd0c5661SpbrookEOF 199524cb36a6SPeter Maydell if ! compile_object ; then 199621684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 1997b0a47e79SJuan Quintela fi 1998bd0c5661Spbrookfi 1999bd0c5661Spbrook 200099f2dbd3SLiang Li######################################### 2001ac62922eSbalrog# zlib check 2002ac62922eSbalrog 20031ece9905SAlon Levyif test "$zlib" != "no" ; then 2004ac62922eSbalrog cat > $TMPC << EOF 2005ac62922eSbalrog#include <zlib.h> 2006ac62922eSbalrogint main(void) { zlibVersion(); return 0; } 2007ac62922eSbalrogEOF 200852166aa0SJuan Quintela if compile_prog "" "-lz" ; then 2009ac62922eSbalrog : 2010ac62922eSbalrog else 201176ad07a4SPeter Maydell error_exit "zlib check failed" \ 201276ad07a4SPeter Maydell "Make sure to have the zlib libs and headers installed." 2013ac62922eSbalrog fi 20141ece9905SAlon Levyfi 2015eb0ecd5aSWill NewtonLIBS="$LIBS -lz" 2016ac62922eSbalrog 2017ac62922eSbalrog########################################## 2018607dacd0Sqiaonuohan# lzo check 2019607dacd0Sqiaonuohan 2020607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 2021607dacd0Sqiaonuohan cat > $TMPC << EOF 2022607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 2023607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 2024607dacd0SqiaonuohanEOF 2025607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 2026607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 2027b25c9dffSStefan Weil lzo="yes" 2028b25c9dffSStefan Weil else 2029b25c9dffSStefan Weil if test "$lzo" = "yes"; then 2030b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 2031b25c9dffSStefan Weil fi 2032b25c9dffSStefan Weil lzo="no" 2033b25c9dffSStefan Weil fi 2034607dacd0Sqiaonuohanfi 2035607dacd0Sqiaonuohan 2036607dacd0Sqiaonuohan########################################## 2037607dacd0Sqiaonuohan# snappy check 2038607dacd0Sqiaonuohan 2039607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 2040607dacd0Sqiaonuohan cat > $TMPC << EOF 2041607dacd0Sqiaonuohan#include <snappy-c.h> 2042607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 2043607dacd0SqiaonuohanEOF 2044607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 2045607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 2046b25c9dffSStefan Weil snappy="yes" 2047b25c9dffSStefan Weil else 2048b25c9dffSStefan Weil if test "$snappy" = "yes"; then 2049b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 2050b25c9dffSStefan Weil fi 2051b25c9dffSStefan Weil snappy="no" 2052b25c9dffSStefan Weil fi 2053607dacd0Sqiaonuohanfi 2054607dacd0Sqiaonuohan 2055607dacd0Sqiaonuohan########################################## 20566b383c08SPeter Wu# bzip2 check 20576b383c08SPeter Wu 20586b383c08SPeter Wuif test "$bzip2" != "no" ; then 20596b383c08SPeter Wu cat > $TMPC << EOF 20606b383c08SPeter Wu#include <bzlib.h> 20616b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 20626b383c08SPeter WuEOF 20636b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 20646b383c08SPeter Wu bzip2="yes" 20656b383c08SPeter Wu else 20666b383c08SPeter Wu if test "$bzip2" = "yes"; then 20676b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 20686b383c08SPeter Wu fi 20696b383c08SPeter Wu bzip2="no" 20706b383c08SPeter Wu fi 20716b383c08SPeter Wufi 20726b383c08SPeter Wu 20736b383c08SPeter Wu########################################## 2074f794573eSEduardo Otubo# libseccomp check 2075f794573eSEduardo Otubo 2076f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 2077693e5910SAndrew Jones case "$cpu" in 2078693e5910SAndrew Jones i386|x86_64) 2079ba060c53Sdann frazier libseccomp_minver="2.1.0" 2080693e5910SAndrew Jones ;; 20815ce43972SJames Hogan mips) 20825ce43972SJames Hogan libseccomp_minver="2.2.0" 20835ce43972SJames Hogan ;; 2084693e5910SAndrew Jones arm|aarch64) 2085693e5910SAndrew Jones libseccomp_minver="2.2.3" 2086693e5910SAndrew Jones ;; 20873aa35fcfSThomas Huth ppc|ppc64|s390x) 20883e684455SMichael Strosaker libseccomp_minver="2.3.0" 20893e684455SMichael Strosaker ;; 2090693e5910SAndrew Jones *) 2091693e5910SAndrew Jones libseccomp_minver="" 2092693e5910SAndrew Jones ;; 2093693e5910SAndrew Jones esac 2094693e5910SAndrew Jones 2095693e5910SAndrew Jones if test "$libseccomp_minver" != "" && 2096693e5910SAndrew Jones $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then 2097c3883e1fSFam Zheng seccomp_cflags="$($pkg_config --cflags libseccomp)" 2098c3883e1fSFam Zheng seccomp_libs="$($pkg_config --libs libseccomp)" 2099f794573eSEduardo Otubo seccomp="yes" 2100f794573eSEduardo Otubo else 2101f794573eSEduardo Otubo if test "$seccomp" = "yes" ; then 2102693e5910SAndrew Jones if test "$libseccomp_minver" != "" ; then 2103693e5910SAndrew Jones feature_not_found "libseccomp" \ 2104693e5910SAndrew Jones "Install libseccomp devel >= $libseccomp_minver" 2105693e5910SAndrew Jones else 2106693e5910SAndrew Jones feature_not_found "libseccomp" \ 2107693e5910SAndrew Jones "libseccomp is not supported for host cpu $cpu" 2108693e5910SAndrew Jones fi 2109896848f0SEduardo Otubo fi 2110e84d5956SYann E. MORIN seccomp="no" 2111f794573eSEduardo Otubo fi 2112f794573eSEduardo Otubofi 2113f794573eSEduardo Otubo########################################## 2114e37630caSaliguori# xen probe 2115e37630caSaliguori 2116fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 2117c1cdd9d5SJuergen Gross # Check whether Xen library path is specified via --extra-ldflags to avoid 2118c1cdd9d5SJuergen Gross # overriding this setting with pkg-config output. If not, try pkg-config 2119c1cdd9d5SJuergen Gross # to obtain all needed flags. 2120c1cdd9d5SJuergen Gross 2121c1cdd9d5SJuergen Gross if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \ 2122c1cdd9d5SJuergen Gross $pkg_config --exists xencontrol ; then 2123c1cdd9d5SJuergen Gross xen_ctrl_version="$(printf '%d%02d%02d' \ 2124c1cdd9d5SJuergen Gross $($pkg_config --modversion xencontrol | sed 's/\./ /g') )" 2125c1cdd9d5SJuergen Gross xen=yes 2126c1cdd9d5SJuergen Gross xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab" 2127c1cdd9d5SJuergen Gross xen_pc="$xen_pc xenevtchn xendevicemodel" 2128c1cdd9d5SJuergen Gross QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)" 2129c1cdd9d5SJuergen Gross libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu" 2130c1cdd9d5SJuergen Gross LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS" 2131c1cdd9d5SJuergen Gross else 2132c1cdd9d5SJuergen Gross 2133b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 2134d9506cabSAnthony PERARD xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn" 2135d5b93ddfSAnthony PERARD 213650ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 213750ced5b3SStefan Weil # If no, we are done and there is no Xen support. 213850ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 213950ced5b3SStefan Weil 214050ced5b3SStefan Weil # Xen (any) 214150ced5b3SStefan Weil cat > $TMPC <<EOF 214250ced5b3SStefan Weil#include <xenctrl.h> 214350ced5b3SStefan Weilint main(void) { 214450ced5b3SStefan Weil return 0; 214550ced5b3SStefan Weil} 214650ced5b3SStefan WeilEOF 214750ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 214850ced5b3SStefan Weil # Xen not found 214950ced5b3SStefan Weil if test "$xen" = "yes" ; then 215021684af0SStewart Smith feature_not_found "xen" "Install xen devel" 215150ced5b3SStefan Weil fi 215250ced5b3SStefan Weil xen=no 215350ced5b3SStefan Weil 2154d5b93ddfSAnthony PERARD # Xen unstable 215569deef08SPeter Maydell elif 215669deef08SPeter Maydell cat > $TMPC <<EOF && 21575ba3d756SIgor Druzhinin#undef XC_WANT_COMPAT_MAP_FOREIGN_API 21585ba3d756SIgor Druzhinin#include <xenforeignmemory.h> 21595ba3d756SIgor Druzhininint main(void) { 21605ba3d756SIgor Druzhinin xenforeignmemory_handle *xfmem; 21615ba3d756SIgor Druzhinin 21625ba3d756SIgor Druzhinin xfmem = xenforeignmemory_open(0, 0); 21635ba3d756SIgor Druzhinin xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0); 21645ba3d756SIgor Druzhinin 21655ba3d756SIgor Druzhinin return 0; 21665ba3d756SIgor Druzhinin} 21675ba3d756SIgor DruzhininEOF 21685ba3d756SIgor Druzhinin compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 21695ba3d756SIgor Druzhinin then 21705ba3d756SIgor Druzhinin xen_stable_libs="-lxendevicemodel $xen_stable_libs" 21715ba3d756SIgor Druzhinin xen_ctrl_version=41000 21725ba3d756SIgor Druzhinin xen=yes 21735ba3d756SIgor Druzhinin elif 21745ba3d756SIgor Druzhinin cat > $TMPC <<EOF && 2175da8090ccSPaul Durrant#undef XC_WANT_COMPAT_DEVICEMODEL_API 2176da8090ccSPaul Durrant#define __XEN_TOOLS__ 2177da8090ccSPaul Durrant#include <xendevicemodel.h> 2178da8090ccSPaul Durrantint main(void) { 2179da8090ccSPaul Durrant xendevicemodel_handle *xd; 2180da8090ccSPaul Durrant 2181da8090ccSPaul Durrant xd = xendevicemodel_open(0, 0); 2182da8090ccSPaul Durrant xendevicemodel_close(xd); 2183da8090ccSPaul Durrant 2184da8090ccSPaul Durrant return 0; 2185da8090ccSPaul Durrant} 2186da8090ccSPaul DurrantEOF 2187da8090ccSPaul Durrant compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 2188da8090ccSPaul Durrant then 2189da8090ccSPaul Durrant xen_stable_libs="-lxendevicemodel $xen_stable_libs" 2190f1167ee6SJuergen Gross xen_ctrl_version=40900 2191da8090ccSPaul Durrant xen=yes 2192da8090ccSPaul Durrant elif 2193da8090ccSPaul Durrant cat > $TMPC <<EOF && 21945eeb39c2SIan Campbell/* 21955eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat 21965eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given. 2197b6eb9b45SPaulina Szubarczyk * 2198b6eb9b45SPaulina Szubarczyk * Also, check if xengnttab_grant_copy_segment_t is defined and 2199b6eb9b45SPaulina Szubarczyk * grant copy operation is implemented. 2200b6eb9b45SPaulina Szubarczyk */ 2201b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_EVTCHN_API 2202b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_GNTTAB_API 2203b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2204b6eb9b45SPaulina Szubarczyk#include <xenctrl.h> 2205b6eb9b45SPaulina Szubarczyk#include <xenstore.h> 2206b6eb9b45SPaulina Szubarczyk#include <xenevtchn.h> 2207b6eb9b45SPaulina Szubarczyk#include <xengnttab.h> 2208b6eb9b45SPaulina Szubarczyk#include <xenforeignmemory.h> 2209b6eb9b45SPaulina Szubarczyk#include <stdint.h> 2210b6eb9b45SPaulina Szubarczyk#include <xen/hvm/hvm_info_table.h> 2211b6eb9b45SPaulina Szubarczyk#if !defined(HVM_MAX_VCPUS) 2212b6eb9b45SPaulina Szubarczyk# error HVM_MAX_VCPUS not defined 2213b6eb9b45SPaulina Szubarczyk#endif 2214b6eb9b45SPaulina Szubarczykint main(void) { 2215b6eb9b45SPaulina Szubarczyk xc_interface *xc = NULL; 2216b6eb9b45SPaulina Szubarczyk xenforeignmemory_handle *xfmem; 2217b6eb9b45SPaulina Szubarczyk xenevtchn_handle *xe; 2218b6eb9b45SPaulina Szubarczyk xengnttab_handle *xg; 2219b6eb9b45SPaulina Szubarczyk xen_domain_handle_t handle; 2220b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy_segment_t* seg = NULL; 2221b6eb9b45SPaulina Szubarczyk 2222b6eb9b45SPaulina Szubarczyk xs_daemon_open(); 2223b6eb9b45SPaulina Szubarczyk 2224b6eb9b45SPaulina Szubarczyk xc = xc_interface_open(0, 0, 0); 2225b6eb9b45SPaulina Szubarczyk xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2226b6eb9b45SPaulina Szubarczyk xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2227b6eb9b45SPaulina Szubarczyk xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2228b6eb9b45SPaulina Szubarczyk xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2229b6eb9b45SPaulina Szubarczyk xc_domain_create(xc, 0, handle, 0, NULL, NULL); 2230b6eb9b45SPaulina Szubarczyk 2231b6eb9b45SPaulina Szubarczyk xfmem = xenforeignmemory_open(0, 0); 2232b6eb9b45SPaulina Szubarczyk xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 2233b6eb9b45SPaulina Szubarczyk 2234b6eb9b45SPaulina Szubarczyk xe = xenevtchn_open(0, 0); 2235b6eb9b45SPaulina Szubarczyk xenevtchn_fd(xe); 2236b6eb9b45SPaulina Szubarczyk 2237b6eb9b45SPaulina Szubarczyk xg = xengnttab_open(0, 0); 2238b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy(xg, 0, seg); 2239b6eb9b45SPaulina Szubarczyk 2240b6eb9b45SPaulina Szubarczyk return 0; 2241b6eb9b45SPaulina Szubarczyk} 2242b6eb9b45SPaulina SzubarczykEOF 2243b6eb9b45SPaulina Szubarczyk compile_prog "" "$xen_libs $xen_stable_libs" 2244b6eb9b45SPaulina Szubarczyk then 2245f1167ee6SJuergen Gross xen_ctrl_version=40800 2246b6eb9b45SPaulina Szubarczyk xen=yes 2247b6eb9b45SPaulina Szubarczyk elif 2248b6eb9b45SPaulina Szubarczyk cat > $TMPC <<EOF && 2249b6eb9b45SPaulina Szubarczyk/* 2250b6eb9b45SPaulina Szubarczyk * If we have stable libs the we don't want the libxc compat 2251b6eb9b45SPaulina Szubarczyk * layers, regardless of what CFLAGS we may have been given. 22525eeb39c2SIan Campbell */ 22535eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API 22545eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API 22555eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API 22565eeb39c2SIan Campbell#include <xenctrl.h> 22575eeb39c2SIan Campbell#include <xenstore.h> 22585eeb39c2SIan Campbell#include <xenevtchn.h> 22595eeb39c2SIan Campbell#include <xengnttab.h> 22605eeb39c2SIan Campbell#include <xenforeignmemory.h> 22615eeb39c2SIan Campbell#include <stdint.h> 22625eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h> 22635eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS) 22645eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined 22655eeb39c2SIan Campbell#endif 22665eeb39c2SIan Campbellint main(void) { 22675eeb39c2SIan Campbell xc_interface *xc = NULL; 22685eeb39c2SIan Campbell xenforeignmemory_handle *xfmem; 22695eeb39c2SIan Campbell xenevtchn_handle *xe; 22705eeb39c2SIan Campbell xengnttab_handle *xg; 22715eeb39c2SIan Campbell xen_domain_handle_t handle; 22725eeb39c2SIan Campbell 22735eeb39c2SIan Campbell xs_daemon_open(); 22745eeb39c2SIan Campbell 22755eeb39c2SIan Campbell xc = xc_interface_open(0, 0, 0); 22765eeb39c2SIan Campbell xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 22775eeb39c2SIan Campbell xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 22785eeb39c2SIan Campbell xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 22795eeb39c2SIan Campbell xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 22805eeb39c2SIan Campbell xc_domain_create(xc, 0, handle, 0, NULL, NULL); 22815eeb39c2SIan Campbell 22825eeb39c2SIan Campbell xfmem = xenforeignmemory_open(0, 0); 22835eeb39c2SIan Campbell xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 22845eeb39c2SIan Campbell 22855eeb39c2SIan Campbell xe = xenevtchn_open(0, 0); 22865eeb39c2SIan Campbell xenevtchn_fd(xe); 22875eeb39c2SIan Campbell 22885eeb39c2SIan Campbell xg = xengnttab_open(0, 0); 22895eeb39c2SIan Campbell xengnttab_map_grant_ref(xg, 0, 0, 0); 22905eeb39c2SIan Campbell 22915eeb39c2SIan Campbell return 0; 22925eeb39c2SIan Campbell} 22935eeb39c2SIan CampbellEOF 22945eeb39c2SIan Campbell compile_prog "" "$xen_libs $xen_stable_libs" 22955eeb39c2SIan Campbell then 2296f1167ee6SJuergen Gross xen_ctrl_version=40701 22975eeb39c2SIan Campbell xen=yes 22985eeb39c2SIan Campbell elif 22995eeb39c2SIan Campbell cat > $TMPC <<EOF && 2300e37630caSaliguori#include <xenctrl.h> 2301cdadde39SRoger Pau Monne#include <stdint.h> 2302cdadde39SRoger Pau Monneint main(void) { 2303cdadde39SRoger Pau Monne xc_interface *xc = NULL; 2304cdadde39SRoger Pau Monne xen_domain_handle_t handle; 2305cdadde39SRoger Pau Monne xc_domain_create(xc, 0, handle, 0, NULL, NULL); 2306cdadde39SRoger Pau Monne return 0; 2307cdadde39SRoger Pau Monne} 2308cdadde39SRoger Pau MonneEOF 2309cdadde39SRoger Pau Monne compile_prog "" "$xen_libs" 2310cdadde39SRoger Pau Monne then 2311f1167ee6SJuergen Gross xen_ctrl_version=40700 2312cdadde39SRoger Pau Monne xen=yes 2313cdadde39SRoger Pau Monne 2314cdadde39SRoger Pau Monne # Xen 4.6 2315cdadde39SRoger Pau Monne elif 2316cdadde39SRoger Pau Monne cat > $TMPC <<EOF && 2317cdadde39SRoger Pau Monne#include <xenctrl.h> 2318e108a3c1SAnthony PERARD#include <xenstore.h> 2319d5b93ddfSAnthony PERARD#include <stdint.h> 2320d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 2321d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 2322d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 2323d5b93ddfSAnthony PERARD#endif 2324d5b93ddfSAnthony PERARDint main(void) { 2325d5b93ddfSAnthony PERARD xc_interface *xc; 2326d5b93ddfSAnthony PERARD xs_daemon_open(); 2327d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 2328d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2329d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 2330b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 23318688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2332d8b441a3SJan Beulich xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 233320a544c7SKonrad Rzeszutek Wilk xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0); 2334d8b441a3SJan Beulich return 0; 2335d8b441a3SJan Beulich} 2336d8b441a3SJan BeulichEOF 2337d8b441a3SJan Beulich compile_prog "" "$xen_libs" 2338d8b441a3SJan Beulich then 2339f1167ee6SJuergen Gross xen_ctrl_version=40600 2340d8b441a3SJan Beulich xen=yes 2341d8b441a3SJan Beulich 2342d8b441a3SJan Beulich # Xen 4.5 2343d8b441a3SJan Beulich elif 2344d8b441a3SJan Beulich cat > $TMPC <<EOF && 2345d8b441a3SJan Beulich#include <xenctrl.h> 2346d8b441a3SJan Beulich#include <xenstore.h> 2347d8b441a3SJan Beulich#include <stdint.h> 2348d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h> 2349d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS) 2350d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined 2351d8b441a3SJan Beulich#endif 2352d8b441a3SJan Beulichint main(void) { 2353d8b441a3SJan Beulich xc_interface *xc; 2354d8b441a3SJan Beulich xs_daemon_open(); 2355d8b441a3SJan Beulich xc = xc_interface_open(0, 0, 0); 2356d8b441a3SJan Beulich xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2357d8b441a3SJan Beulich xc_gnttab_open(NULL, 0); 2358d8b441a3SJan Beulich xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2359d8b441a3SJan Beulich xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 23603996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 23613996e85cSPaul Durrant return 0; 23623996e85cSPaul Durrant} 23633996e85cSPaul DurrantEOF 23643996e85cSPaul Durrant compile_prog "" "$xen_libs" 23653996e85cSPaul Durrant then 2366f1167ee6SJuergen Gross xen_ctrl_version=40500 23673996e85cSPaul Durrant xen=yes 23683996e85cSPaul Durrant 23693996e85cSPaul Durrant elif 23703996e85cSPaul Durrant cat > $TMPC <<EOF && 23713996e85cSPaul Durrant#include <xenctrl.h> 23723996e85cSPaul Durrant#include <xenstore.h> 23733996e85cSPaul Durrant#include <stdint.h> 23743996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 23753996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 23763996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 23773996e85cSPaul Durrant#endif 23783996e85cSPaul Durrantint main(void) { 23793996e85cSPaul Durrant xc_interface *xc; 23803996e85cSPaul Durrant xs_daemon_open(); 23813996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 23823996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 23833996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 23843996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 23853996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 23868688e065SStefano Stabellini return 0; 23878688e065SStefano Stabellini} 23888688e065SStefano StabelliniEOF 23898688e065SStefano Stabellini compile_prog "" "$xen_libs" 239069deef08SPeter Maydell then 2391f1167ee6SJuergen Gross xen_ctrl_version=40200 23928688e065SStefano Stabellini xen=yes 23938688e065SStefano Stabellini 2394e37630caSaliguori else 2395fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 2396edfb07edSIan Campbell feature_not_found "xen (unsupported version)" \ 2397edfb07edSIan Campbell "Install a supported xen (xen 4.2 or newer)" 2398fc321b4bSJuan Quintela fi 2399fc321b4bSJuan Quintela xen=no 2400e37630caSaliguori fi 2401d5b93ddfSAnthony PERARD 2402d5b93ddfSAnthony PERARD if test "$xen" = yes; then 2403f1167ee6SJuergen Gross if test $xen_ctrl_version -ge 40701 ; then 24045eeb39c2SIan Campbell libs_softmmu="$xen_stable_libs $libs_softmmu" 24055eeb39c2SIan Campbell fi 2406d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 2407d5b93ddfSAnthony PERARD fi 2408e37630caSaliguori fi 2409c1cdd9d5SJuergen Grossfi 2410e37630caSaliguori 2411eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 2412edfb07edSIan Campbell if test "$xen" = "yes" && test "$linux" = "yes"; then 2413eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 2414eb6fda0fSAnthony PERARD else 2415eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 241676ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 241776ad07a4SPeter Maydell " but this feature requires /sys from Linux" 2418eb6fda0fSAnthony PERARD fi 2419eb6fda0fSAnthony PERARD xen_pci_passthrough=no 2420eb6fda0fSAnthony PERARD fi 2421eb6fda0fSAnthony PERARDfi 2422eb6fda0fSAnthony PERARD 242364a7ad6fSIan Campbellif test "$xen_pv_domain_build" = "yes" && 242464a7ad6fSIan Campbell test "$xen" != "yes"; then 242564a7ad6fSIan Campbell error_exit "User requested Xen PV domain builder support" \ 242664a7ad6fSIan Campbell "which requires Xen support." 242764a7ad6fSIan Campbellfi 242864a7ad6fSIan Campbell 2429e37630caSaliguori########################################## 2430dfffc653SJuan Quintela# Sparse probe 2431dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 24320dba6195SLoïc Minier if has cgcc; then 2433dfffc653SJuan Quintela sparse=yes 2434dfffc653SJuan Quintela else 2435dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 243621684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 2437dfffc653SJuan Quintela fi 2438dfffc653SJuan Quintela sparse=no 2439dfffc653SJuan Quintela fi 2440dfffc653SJuan Quintelafi 2441dfffc653SJuan Quintela 2442dfffc653SJuan Quintela########################################## 2443f676c67eSJeremy White# X11 probe 2444f676c67eSJeremy Whitex11_cflags= 2445f676c67eSJeremy Whitex11_libs=-lX11 2446f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 244789138857SStefan Weil x11_cflags=$($pkg_config --cflags x11) 244889138857SStefan Weil x11_libs=$($pkg_config --libs x11) 2449f676c67eSJeremy Whitefi 2450f676c67eSJeremy White 2451f676c67eSJeremy White########################################## 2452a4ccabcfSAnthony Liguori# GTK probe 2453a4ccabcfSAnthony Liguori 24549e04c683SStefan Weilif test "$gtkabi" = ""; then 24555fe309ffSGerd Hoffmann # The GTK ABI was not specified explicitly, so try whether 3.0 is available. 24565fe309ffSGerd Hoffmann # Use 2.0 as a fallback if that is available. 24575fe309ffSGerd Hoffmann if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 24589e04c683SStefan Weil gtkabi=3.0 24595fe309ffSGerd Hoffmann elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 24609e04c683SStefan Weil gtkabi=2.0 24615fe309ffSGerd Hoffmann else 24625fe309ffSGerd Hoffmann gtkabi=3.0 24639e04c683SStefan Weil fi 24649e04c683SStefan Weilfi 24659e04c683SStefan Weil 2466a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then 2467528de90aSDaniel P. Berrange gtkpackage="gtk+-$gtkabi" 24680a337ed0SGerd Hoffmann gtkx11package="gtk+-x11-$gtkabi" 2469528de90aSDaniel P. Berrange if test "$gtkabi" = "3.0" ; then 2470528de90aSDaniel P. Berrange gtkversion="3.0.0" 2471bbbf9bfbSStefan Weil else 2472bbbf9bfbSStefan Weil gtkversion="2.18.0" 2473bbbf9bfbSStefan Weil fi 2474bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 247589138857SStefan Weil gtk_cflags=$($pkg_config --cflags $gtkpackage) 247689138857SStefan Weil gtk_libs=$($pkg_config --libs $gtkpackage) 247789138857SStefan Weil gtk_version=$($pkg_config --modversion $gtkpackage) 24780a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 2479f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 2480f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 24810a337ed0SGerd Hoffmann fi 2482bbbf9bfbSStefan Weil libs_softmmu="$gtk_libs $libs_softmmu" 2483bbbf9bfbSStefan Weil gtk="yes" 2484bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 24855fe309ffSGerd Hoffmann feature_not_found "gtk" "Install gtk3-devel" 2486bbbf9bfbSStefan Weil else 2487bbbf9bfbSStefan Weil gtk="no" 2488bbbf9bfbSStefan Weil fi 2489bbbf9bfbSStefan Weilfi 2490bbbf9bfbSStefan Weil 2491ddbb0d09SDaniel P. Berrange 2492ddbb0d09SDaniel P. Berrange########################################## 2493ddbb0d09SDaniel P. Berrange# GNUTLS probe 2494ddbb0d09SDaniel P. Berrange 249537371299SPeter Maydellgnutls_works() { 249637371299SPeter Maydell # Unfortunately some distros have bad pkg-config information for gnutls 249737371299SPeter Maydell # such that it claims to exist but you get a compiler error if you try 249837371299SPeter Maydell # to use the options returned by --libs. Specifically, Ubuntu for --static 249937371299SPeter Maydell # builds doesn't work: 250037371299SPeter Maydell # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035 250137371299SPeter Maydell # 250237371299SPeter Maydell # So sanity check the cflags/libs before assuming gnutls can be used. 250337371299SPeter Maydell if ! $pkg_config --exists "gnutls"; then 250437371299SPeter Maydell return 1 250537371299SPeter Maydell fi 250637371299SPeter Maydell 250737371299SPeter Maydell write_c_skeleton 250837371299SPeter Maydell compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)" 250937371299SPeter Maydell} 251037371299SPeter Maydell 251162893b67SDaniel P. Berrangegnutls_gcrypt=no 2512ed754746SDaniel P. Berrangegnutls_nettle=no 2513ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then 251437371299SPeter Maydell if gnutls_works; then 251589138857SStefan Weil gnutls_cflags=$($pkg_config --cflags gnutls) 251689138857SStefan Weil gnutls_libs=$($pkg_config --libs gnutls) 2517ddbb0d09SDaniel P. Berrange libs_softmmu="$gnutls_libs $libs_softmmu" 2518ddbb0d09SDaniel P. Berrange libs_tools="$gnutls_libs $libs_tools" 2519ddbb0d09SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 2520ddbb0d09SDaniel P. Berrange gnutls="yes" 2521ddbb0d09SDaniel P. Berrange 2522b917da4cSDaniel P. Berrange # gnutls_rnd requires >= 2.11.0 2523b917da4cSDaniel P. Berrange if $pkg_config --exists "gnutls >= 2.11.0"; then 2524b917da4cSDaniel P. Berrange gnutls_rnd="yes" 2525b917da4cSDaniel P. Berrange else 2526b917da4cSDaniel P. Berrange gnutls_rnd="no" 2527b917da4cSDaniel P. Berrange fi 2528b917da4cSDaniel P. Berrange 252962893b67SDaniel P. Berrange if $pkg_config --exists 'gnutls >= 3.0'; then 253062893b67SDaniel P. Berrange gnutls_gcrypt=no 2531ed754746SDaniel P. Berrange gnutls_nettle=yes 253262893b67SDaniel P. Berrange elif $pkg_config --exists 'gnutls >= 2.12'; then 253389138857SStefan Weil case $($pkg_config --libs --static gnutls) in 2534ed754746SDaniel P. Berrange *gcrypt*) 2535ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2536ed754746SDaniel P. Berrange gnutls_nettle=no 2537ed754746SDaniel P. Berrange ;; 2538ed754746SDaniel P. Berrange *nettle*) 2539ed754746SDaniel P. Berrange gnutls_gcrypt=no 2540ed754746SDaniel P. Berrange gnutls_nettle=yes 2541ed754746SDaniel P. Berrange ;; 2542ed754746SDaniel P. Berrange *) 2543ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2544ed754746SDaniel P. Berrange gnutls_nettle=no 2545ed754746SDaniel P. Berrange ;; 254662893b67SDaniel P. Berrange esac 254762893b67SDaniel P. Berrange else 254862893b67SDaniel P. Berrange gnutls_gcrypt=yes 2549ed754746SDaniel P. Berrange gnutls_nettle=no 255062893b67SDaniel P. Berrange fi 2551ddbb0d09SDaniel P. Berrange elif test "$gnutls" = "yes"; then 2552ddbb0d09SDaniel P. Berrange feature_not_found "gnutls" "Install gnutls devel" 2553ddbb0d09SDaniel P. Berrange else 2554ddbb0d09SDaniel P. Berrange gnutls="no" 2555b917da4cSDaniel P. Berrange gnutls_rnd="no" 2556ddbb0d09SDaniel P. Berrange fi 2557ddbb0d09SDaniel P. Berrangeelse 2558b917da4cSDaniel P. Berrange gnutls_rnd="no" 2559ddbb0d09SDaniel P. Berrangefi 2560ddbb0d09SDaniel P. Berrange 256191bfcdb0SDaniel P. Berrange 256291bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag, 256391bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle 256491bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to nettle 256591bfcdb0SDaniel P. Berrangeif test -z "$gcrypt" 256691bfcdb0SDaniel P. Berrangethen 256791bfcdb0SDaniel P. Berrange if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes" 256891bfcdb0SDaniel P. Berrange then 256991bfcdb0SDaniel P. Berrange gcrypt="no" 257091bfcdb0SDaniel P. Berrange fi 257191bfcdb0SDaniel P. Berrangefi 257291bfcdb0SDaniel P. Berrange 257391bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag, 257491bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt 257591bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to gcrypt 257691bfcdb0SDaniel P. Berrangeif test -z "$nettle" 257791bfcdb0SDaniel P. Berrangethen 257891bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes" 257991bfcdb0SDaniel P. Berrange then 258091bfcdb0SDaniel P. Berrange nettle="no" 258191bfcdb0SDaniel P. Berrange fi 258291bfcdb0SDaniel P. Berrangefi 258391bfcdb0SDaniel P. Berrange 258491bfcdb0SDaniel P. Berrangehas_libgcrypt_config() { 258591bfcdb0SDaniel P. Berrange if ! has "libgcrypt-config" 258691bfcdb0SDaniel P. Berrange then 258791bfcdb0SDaniel P. Berrange return 1 258891bfcdb0SDaniel P. Berrange fi 258991bfcdb0SDaniel P. Berrange 259091bfcdb0SDaniel P. Berrange if test -n "$cross_prefix" 259191bfcdb0SDaniel P. Berrange then 259289138857SStefan Weil host=$(libgcrypt-config --host) 259391bfcdb0SDaniel P. Berrange if test "$host-" != $cross_prefix 259491bfcdb0SDaniel P. Berrange then 259591bfcdb0SDaniel P. Berrange return 1 259691bfcdb0SDaniel P. Berrange fi 259791bfcdb0SDaniel P. Berrange fi 259891bfcdb0SDaniel P. Berrange 259991bfcdb0SDaniel P. Berrange return 0 260091bfcdb0SDaniel P. Berrange} 260191bfcdb0SDaniel P. Berrange 260291bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then 260391bfcdb0SDaniel P. Berrange if has_libgcrypt_config; then 260489138857SStefan Weil gcrypt_cflags=$(libgcrypt-config --cflags) 260589138857SStefan Weil gcrypt_libs=$(libgcrypt-config --libs) 260691bfcdb0SDaniel P. Berrange # Debian has remove -lgpg-error from libgcrypt-config 260791bfcdb0SDaniel P. Berrange # as it "spreads unnecessary dependencies" which in 260891bfcdb0SDaniel P. Berrange # turn breaks static builds... 260991bfcdb0SDaniel P. Berrange if test "$static" = "yes" 261091bfcdb0SDaniel P. Berrange then 261191bfcdb0SDaniel P. Berrange gcrypt_libs="$gcrypt_libs -lgpg-error" 261291bfcdb0SDaniel P. Berrange fi 261362893b67SDaniel P. Berrange libs_softmmu="$gcrypt_libs $libs_softmmu" 261462893b67SDaniel P. Berrange libs_tools="$gcrypt_libs $libs_tools" 261562893b67SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" 261691bfcdb0SDaniel P. Berrange gcrypt="yes" 261791bfcdb0SDaniel P. Berrange if test -z "$nettle"; then 261891bfcdb0SDaniel P. Berrange nettle="no" 261991bfcdb0SDaniel P. Berrange fi 262037788f25SDaniel P. Berrange 262137788f25SDaniel P. Berrange cat > $TMPC << EOF 262237788f25SDaniel P. Berrange#include <gcrypt.h> 262337788f25SDaniel P. Berrangeint main(void) { 262437788f25SDaniel P. Berrange gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2, 262537788f25SDaniel P. Berrange GCRY_MD_SHA256, 262637788f25SDaniel P. Berrange NULL, 0, 0, 0, NULL); 262737788f25SDaniel P. Berrange return 0; 262837788f25SDaniel P. Berrange} 262937788f25SDaniel P. BerrangeEOF 263037788f25SDaniel P. Berrange if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 263137788f25SDaniel P. Berrange gcrypt_kdf=yes 263237788f25SDaniel P. Berrange fi 26331f923c70SLongpeng(Mike) 26341f923c70SLongpeng(Mike) cat > $TMPC << EOF 26351f923c70SLongpeng(Mike)#include <gcrypt.h> 26361f923c70SLongpeng(Mike)int main(void) { 26371f923c70SLongpeng(Mike) gcry_mac_hd_t handle; 26381f923c70SLongpeng(Mike) gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5, 26391f923c70SLongpeng(Mike) GCRY_MAC_FLAG_SECURE, NULL); 26401f923c70SLongpeng(Mike) return 0; 26411f923c70SLongpeng(Mike)} 26421f923c70SLongpeng(Mike)EOF 26431f923c70SLongpeng(Mike) if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 26441f923c70SLongpeng(Mike) gcrypt_hmac=yes 26451f923c70SLongpeng(Mike) fi 264662893b67SDaniel P. Berrange else 264791bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes"; then 264862893b67SDaniel P. Berrange feature_not_found "gcrypt" "Install gcrypt devel" 264991bfcdb0SDaniel P. Berrange else 265091bfcdb0SDaniel P. Berrange gcrypt="no" 265191bfcdb0SDaniel P. Berrange fi 265262893b67SDaniel P. Berrange fi 265362893b67SDaniel P. Berrangefi 265462893b67SDaniel P. Berrange 2655ddbb0d09SDaniel P. Berrange 265691bfcdb0SDaniel P. Berrangeif test "$nettle" != "no"; then 2657ed754746SDaniel P. Berrange if $pkg_config --exists "nettle"; then 265889138857SStefan Weil nettle_cflags=$($pkg_config --cflags nettle) 265989138857SStefan Weil nettle_libs=$($pkg_config --libs nettle) 266089138857SStefan Weil nettle_version=$($pkg_config --modversion nettle) 2661ed754746SDaniel P. Berrange libs_softmmu="$nettle_libs $libs_softmmu" 2662ed754746SDaniel P. Berrange libs_tools="$nettle_libs $libs_tools" 2663ed754746SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" 266491bfcdb0SDaniel P. Berrange nettle="yes" 2665fff2f982SDaniel P. Berrange 2666fff2f982SDaniel P. Berrange cat > $TMPC << EOF 26679e87a691SSteven Luo#include <stddef.h> 2668fff2f982SDaniel P. Berrange#include <nettle/pbkdf2.h> 2669fff2f982SDaniel P. Berrangeint main(void) { 2670fff2f982SDaniel P. Berrange pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL); 2671fff2f982SDaniel P. Berrange return 0; 2672fff2f982SDaniel P. Berrange} 2673fff2f982SDaniel P. BerrangeEOF 2674fff2f982SDaniel P. Berrange if compile_prog "$nettle_cflags" "$nettle_libs" ; then 2675fff2f982SDaniel P. Berrange nettle_kdf=yes 2676fff2f982SDaniel P. Berrange fi 2677ed754746SDaniel P. Berrange else 267891bfcdb0SDaniel P. Berrange if test "$nettle" = "yes"; then 2679ed754746SDaniel P. Berrange feature_not_found "nettle" "Install nettle devel" 268091bfcdb0SDaniel P. Berrange else 268191bfcdb0SDaniel P. Berrange nettle="no" 2682ed754746SDaniel P. Berrange fi 2683ed754746SDaniel P. Berrange fi 268491bfcdb0SDaniel P. Berrangefi 268591bfcdb0SDaniel P. Berrange 268691bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes" 268791bfcdb0SDaniel P. Berrangethen 268891bfcdb0SDaniel P. Berrange error_exit "Only one of gcrypt & nettle can be enabled" 268991bfcdb0SDaniel P. Berrangefi 2690ed754746SDaniel P. Berrange 26919a2fd434SDaniel P. Berrange########################################## 26929a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite 26939a2fd434SDaniel P. Berrange 26949a2fd434SDaniel P. Berrangetasn1=yes 269590246037SDaniel P. Berrangetasn1_cflags="" 269690246037SDaniel P. Berrangetasn1_libs="" 26979a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then 269889138857SStefan Weil tasn1_cflags=$($pkg_config --cflags libtasn1) 269989138857SStefan Weil tasn1_libs=$($pkg_config --libs libtasn1) 27009a2fd434SDaniel P. Berrangeelse 27019a2fd434SDaniel P. Berrange tasn1=no 27029a2fd434SDaniel P. Berrangefi 27039a2fd434SDaniel P. Berrange 2704ed754746SDaniel P. Berrange 2705bbbf9bfbSStefan Weil########################################## 2706559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket ) 2707559607eaSDaniel P. Berrange 2708559607eaSDaniel P. Berrangehave_ifaddrs_h=yes 2709559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then 2710559607eaSDaniel P. Berrange have_ifaddrs_h=no 2711559607eaSDaniel P. Berrangefi 2712559607eaSDaniel P. Berrange 2713559607eaSDaniel P. Berrange########################################## 2714bbbf9bfbSStefan Weil# VTE probe 2715bbbf9bfbSStefan Weil 2716bbbf9bfbSStefan Weilif test "$vte" != "no"; then 2717bbbf9bfbSStefan Weil if test "$gtkabi" = "3.0"; then 2718c6feff9eSCole Robinson vteminversion="0.32.0" 2719c6feff9eSCole Robinson if $pkg_config --exists "vte-2.91"; then 2720c6feff9eSCole Robinson vtepackage="vte-2.91" 2721c6feff9eSCole Robinson else 2722528de90aSDaniel P. Berrange vtepackage="vte-2.90" 2723c6feff9eSCole Robinson fi 2724528de90aSDaniel P. Berrange else 2725528de90aSDaniel P. Berrange vtepackage="vte" 2726c6feff9eSCole Robinson vteminversion="0.24.0" 2727528de90aSDaniel P. Berrange fi 2728c6feff9eSCole Robinson if $pkg_config --exists "$vtepackage >= $vteminversion"; then 272989138857SStefan Weil vte_cflags=$($pkg_config --cflags $vtepackage) 273089138857SStefan Weil vte_libs=$($pkg_config --libs $vtepackage) 273189138857SStefan Weil vteversion=$($pkg_config --modversion $vtepackage) 2732bbbf9bfbSStefan Weil libs_softmmu="$vte_libs $libs_softmmu" 2733bbbf9bfbSStefan Weil vte="yes" 2734bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 27359e04c683SStefan Weil if test "$gtkabi" = "3.0"; then 2736c6feff9eSCole Robinson feature_not_found "vte" "Install libvte-2.90/2.91 devel" 27379e04c683SStefan Weil else 27389e04c683SStefan Weil feature_not_found "vte" "Install libvte devel" 27399e04c683SStefan Weil fi 2740bbbf9bfbSStefan Weil else 2741bbbf9bfbSStefan Weil vte="no" 2742a4ccabcfSAnthony Liguori fi 2743a4ccabcfSAnthony Liguorifi 2744a4ccabcfSAnthony Liguori 2745a4ccabcfSAnthony Liguori########################################## 274611d9f695Sbellard# SDL probe 274711d9f695Sbellard 27483ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config). Try 27493ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 275047c03744SDave Airlie 2751ee8466d0SCole Robinsonif test "$sdlabi" = ""; then 27528f4ea9cdSGerd Hoffmann if $pkg_config --exists "sdl2"; then 2753ee8466d0SCole Robinson sdlabi=2.0 27548f4ea9cdSGerd Hoffmann elif $pkg_config --exists "sdl"; then 2755ee8466d0SCole Robinson sdlabi=1.2 27568f4ea9cdSGerd Hoffmann else 27578f4ea9cdSGerd Hoffmann sdlabi=2.0 2758ee8466d0SCole Robinson fi 2759ee8466d0SCole Robinsonfi 2760ee8466d0SCole Robinson 276147c03744SDave Airlieif test $sdlabi = "2.0"; then 276247c03744SDave Airlie sdl_config=$sdl2_config 276347c03744SDave Airlie sdlname=sdl2 276447c03744SDave Airlie sdlconfigname=sdl2_config 2765e07047cfSCole Robinsonelif test $sdlabi = "1.2"; then 276647c03744SDave Airlie sdlname=sdl 276747c03744SDave Airlie sdlconfigname=sdl_config 2768e07047cfSCole Robinsonelse 2769e07047cfSCole Robinson error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0" 27703ec87ffeSPaolo Bonzinifi 27713ec87ffeSPaolo Bonzini 277289138857SStefan Weilif test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then 277347c03744SDave Airlie sdl_config=$sdlconfigname 277447c03744SDave Airliefi 277547c03744SDave Airlie 277647c03744SDave Airlieif $pkg_config $sdlname --exists; then 277747c03744SDave Airlie sdlconfig="$pkg_config $sdlname" 277889138857SStefan Weil sdlversion=$($sdlconfig --modversion 2>/dev/null) 27793ec87ffeSPaolo Bonzinielif has ${sdl_config}; then 27803ec87ffeSPaolo Bonzini sdlconfig="$sdl_config" 278189138857SStefan Weil sdlversion=$($sdlconfig --version) 2782a0dfd8a4SLoïc Minierelse 2783a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 27848f4ea9cdSGerd Hoffmann feature_not_found "sdl" "Install SDL2-devel" 2785a0dfd8a4SLoïc Minier fi 2786a0dfd8a4SLoïc Minier sdl=no 27879316f803SPaolo Bonzinifi 278829e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 27893ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 27903ec87ffeSPaolo Bonzinifi 279111d9f695Sbellard 27929316f803SPaolo Bonzinisdl_too_old=no 2793c4198157SJuan Quintelaif test "$sdl" != "no" ; then 279411d9f695Sbellard cat > $TMPC << EOF 279511d9f695Sbellard#include <SDL.h> 279611d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 279711d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 279811d9f695SbellardEOF 279989138857SStefan Weil sdl_cflags=$($sdlconfig --cflags 2>/dev/null) 280074f42e18STeLeMan if test "$static" = "yes" ; then 28015f37e6d4SThomas Huth if $pkg_config $sdlname --exists; then 28025f37e6d4SThomas Huth sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null) 28035f37e6d4SThomas Huth else 280489138857SStefan Weil sdl_libs=$($sdlconfig --static-libs 2>/dev/null) 28055f37e6d4SThomas Huth fi 280674f42e18STeLeMan else 280789138857SStefan Weil sdl_libs=$($sdlconfig --libs 2>/dev/null) 280874f42e18STeLeMan fi 280952166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 281089138857SStefan Weil if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then 281111d9f695Sbellard sdl_too_old=yes 281211d9f695Sbellard else 281311d9f695Sbellard sdl=yes 281411d9f695Sbellard fi 28157c1f25b4Sbellard 281667c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 28171ac88f28SJuan Quintela if test "$sdl" = "yes" -a "$static" = "yes" ; then 281867c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 281989138857SStefan Weil sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)" 282089138857SStefan Weil sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)" 282111d9f695Sbellard fi 282252166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 28231ac88f28SJuan Quintela : 28241ac88f28SJuan Quintela else 28251ac88f28SJuan Quintela sdl=no 28267c1f25b4Sbellard fi 28277c1f25b4Sbellard fi # static link 2828c4198157SJuan Quintela else # sdl not found 2829c4198157SJuan Quintela if test "$sdl" = "yes" ; then 283021684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2831c4198157SJuan Quintela fi 2832c4198157SJuan Quintela sdl=no 28337c1f25b4Sbellard fi # sdl compile test 2834fd677642Sthsfi 283511d9f695Sbellard 28365368a422Saliguoriif test "$sdl" = "yes" ; then 28375368a422Saliguori cat > $TMPC <<EOF 28385368a422Saliguori#include <SDL.h> 28395368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 28405368a422Saliguori#include <X11/XKBlib.h> 28415368a422Saliguori#else 28425368a422Saliguori#error No x11 support 28435368a422Saliguori#endif 28445368a422Saliguoriint main(void) { return 0; } 28455368a422SaliguoriEOF 2846f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 2847f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 2848f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 28495368a422Saliguori fi 28505368a422Saliguorifi 28515368a422Saliguori 28528f28f3fbSths########################################## 28532da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 28542da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 28552da776dbSMichael R. Hines cat > $TMPC <<EOF 28562da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 28572da776dbSMichael R. Hinesint main(void) { return 0; } 28582da776dbSMichael R. HinesEOF 28592da776dbSMichael R. Hines rdma_libs="-lrdmacm -libverbs" 28602da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 28612da776dbSMichael R. Hines rdma="yes" 28622da776dbSMichael R. Hines else 28632da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 28642da776dbSMichael R. Hines error_exit \ 28652da776dbSMichael R. Hines " OpenFabrics librdmacm/libibverbs not present." \ 28662da776dbSMichael R. Hines " Your options:" \ 28672da776dbSMichael R. Hines " (1) Fast: Install infiniband packages from your distro." \ 28682da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 28692da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 28702da776dbSMichael R. Hines fi 28712da776dbSMichael R. Hines rdma="no" 28722da776dbSMichael R. Hines fi 28732da776dbSMichael R. Hinesfi 28742da776dbSMichael R. Hines 287595c6bff3SBenoît Canet 287695c6bff3SBenoît Canet########################################## 28772f9606b3Saliguori# VNC SASL detection 2878821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 28792f9606b3Saliguori cat > $TMPC <<EOF 28802f9606b3Saliguori#include <sasl/sasl.h> 28812f9606b3Saliguori#include <stdio.h> 28822f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 28832f9606b3SaliguoriEOF 28842f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 28852f9606b3Saliguori vnc_sasl_cflags="" 28862f9606b3Saliguori vnc_sasl_libs="-lsasl2" 288752166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2888ea784e3bSJuan Quintela vnc_sasl=yes 2889fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2890ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 28912f9606b3Saliguori else 2892ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 289321684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2894ea784e3bSJuan Quintela fi 2895ea784e3bSJuan Quintela vnc_sasl=no 28962f9606b3Saliguori fi 28972f9606b3Saliguorifi 28982f9606b3Saliguori 28992f9606b3Saliguori########################################## 29002f6f5c7aSCorentin Chary# VNC JPEG detection 2901821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 29022f6f5c7aSCorentin Charycat > $TMPC <<EOF 29032f6f5c7aSCorentin Chary#include <stdio.h> 29042f6f5c7aSCorentin Chary#include <jpeglib.h> 29052f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 29062f6f5c7aSCorentin CharyEOF 29072f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 29082f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 29092f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 29102f6f5c7aSCorentin Chary vnc_jpeg=yes 29112f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2912ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 29132f6f5c7aSCorentin Chary else 29142f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 291521684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 29162f6f5c7aSCorentin Chary fi 29172f6f5c7aSCorentin Chary vnc_jpeg=no 29182f6f5c7aSCorentin Chary fi 29192f6f5c7aSCorentin Charyfi 29202f6f5c7aSCorentin Chary 29212f6f5c7aSCorentin Chary########################################## 2922efe556adSCorentin Chary# VNC PNG detection 2923821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2924efe556adSCorentin Charycat > $TMPC <<EOF 2925efe556adSCorentin Chary//#include <stdio.h> 2926efe556adSCorentin Chary#include <png.h> 2927832ce9c2SScott Wood#include <stddef.h> 2928efe556adSCorentin Charyint main(void) { 2929efe556adSCorentin Chary png_structp png_ptr; 2930efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 29317edc3fedSPeter Maydell return png_ptr != 0; 2932efe556adSCorentin Chary} 2933efe556adSCorentin CharyEOF 293465d5d3f9SStefan Weil if $pkg_config libpng --exists; then 293589138857SStefan Weil vnc_png_cflags=$($pkg_config libpng --cflags) 293689138857SStefan Weil vnc_png_libs=$($pkg_config libpng --libs) 29379af8025eSBrad else 2938efe556adSCorentin Chary vnc_png_cflags="" 2939efe556adSCorentin Chary vnc_png_libs="-lpng" 29409af8025eSBrad fi 2941efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2942efe556adSCorentin Chary vnc_png=yes 2943efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 29449af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2945efe556adSCorentin Chary else 2946efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 294721684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 2948efe556adSCorentin Chary fi 2949efe556adSCorentin Chary vnc_png=no 2950efe556adSCorentin Chary fi 2951efe556adSCorentin Charyfi 2952efe556adSCorentin Chary 2953efe556adSCorentin Chary########################################## 29546a021536SGerd Hoffmann# xkbcommon probe 29556a021536SGerd Hoffmannif test "$xkbcommon" != "no" ; then 29566a021536SGerd Hoffmann if $pkg_config xkbcommon --exists; then 29576a021536SGerd Hoffmann xkbcommon_cflags=$($pkg_config xkbcommon --cflags) 29586a021536SGerd Hoffmann xkbcommon_libs=$($pkg_config xkbcommon --libs) 29596a021536SGerd Hoffmann xkbcommon=yes 29606a021536SGerd Hoffmann else 29616a021536SGerd Hoffmann if test "$xkbcommon" = "yes" ; then 29626a021536SGerd Hoffmann feature_not_found "xkbcommon" "Install libxkbcommon-devel" 29636a021536SGerd Hoffmann fi 29646a021536SGerd Hoffmann xkbcommon=no 29656a021536SGerd Hoffmann fi 29666a021536SGerd Hoffmannfi 29676a021536SGerd Hoffmann 29686a021536SGerd Hoffmann########################################## 296976655d6dSaliguori# fnmatch() probe, used for ACL routines 297076655d6dSaliguorifnmatch="no" 297176655d6dSaliguoricat > $TMPC << EOF 297276655d6dSaliguori#include <fnmatch.h> 297376655d6dSaliguoriint main(void) 297476655d6dSaliguori{ 297576655d6dSaliguori fnmatch("foo", "foo", 0); 297676655d6dSaliguori return 0; 297776655d6dSaliguori} 297876655d6dSaliguoriEOF 297952166aa0SJuan Quintelaif compile_prog "" "" ; then 298076655d6dSaliguori fnmatch="yes" 298176655d6dSaliguorifi 298276655d6dSaliguori 298376655d6dSaliguori########################################## 2984c1bb86cdSEric Blake# xfsctl() probe, used for file-posix.c 2985dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 2986dce512deSChristoph Hellwig cat > $TMPC << EOF 2987ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 2988dce512deSChristoph Hellwig#include <xfs/xfs.h> 2989dce512deSChristoph Hellwigint main(void) 2990dce512deSChristoph Hellwig{ 2991dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 2992dce512deSChristoph Hellwig return 0; 2993dce512deSChristoph Hellwig} 2994dce512deSChristoph HellwigEOF 2995dce512deSChristoph Hellwig if compile_prog "" "" ; then 2996dce512deSChristoph Hellwig xfs="yes" 2997dce512deSChristoph Hellwig else 2998dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 299921684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 3000dce512deSChristoph Hellwig fi 3001dce512deSChristoph Hellwig xfs=no 3002dce512deSChristoph Hellwig fi 3003dce512deSChristoph Hellwigfi 3004dce512deSChristoph Hellwig 3005dce512deSChristoph Hellwig########################################## 30068a16d273Sths# vde libraries probe 3007dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 30084baae0acSJuan Quintela vde_libs="-lvdeplug" 30098a16d273Sths cat > $TMPC << EOF 30108a16d273Sths#include <libvdeplug.h> 30114a7f0e06Spbrookint main(void) 30124a7f0e06Spbrook{ 30134a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 3014fea08e08SPeter Maydell char s[] = ""; 3015fea08e08SPeter Maydell vde_open(s, s, &a); 30164a7f0e06Spbrook return 0; 30174a7f0e06Spbrook} 30188a16d273SthsEOF 301952166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 30204baae0acSJuan Quintela vde=yes 3021dfb278bdSJuan Quintela else 3022dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 302321684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 3024dfb278bdSJuan Quintela fi 3025dfb278bdSJuan Quintela vde=no 30268a16d273Sths fi 30278a16d273Sthsfi 30288a16d273Sths 30298a16d273Sths########################################## 30300a985b37SVincenzo Maffione# netmap support probe 30310a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 30320a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 30330a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 30340a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 30350a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 303658952137SVincenzo Maffioneif test "$netmap" != "no" ; then 303758952137SVincenzo Maffione cat > $TMPC << EOF 303858952137SVincenzo Maffione#include <inttypes.h> 303958952137SVincenzo Maffione#include <net/if.h> 304058952137SVincenzo Maffione#include <net/netmap.h> 304158952137SVincenzo Maffione#include <net/netmap_user.h> 30420a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 30430a985b37SVincenzo Maffione#error 30440a985b37SVincenzo Maffione#endif 304558952137SVincenzo Maffioneint main(void) { return 0; } 304658952137SVincenzo MaffioneEOF 304758952137SVincenzo Maffione if compile_prog "" "" ; then 304858952137SVincenzo Maffione netmap=yes 304958952137SVincenzo Maffione else 305058952137SVincenzo Maffione if test "$netmap" = "yes" ; then 305158952137SVincenzo Maffione feature_not_found "netmap" 305258952137SVincenzo Maffione fi 305358952137SVincenzo Maffione netmap=no 305458952137SVincenzo Maffione fi 305558952137SVincenzo Maffionefi 305658952137SVincenzo Maffione 305758952137SVincenzo Maffione########################################## 305847e98658SCorey Bryant# libcap-ng library probe 305947e98658SCorey Bryantif test "$cap_ng" != "no" ; then 306047e98658SCorey Bryant cap_libs="-lcap-ng" 306147e98658SCorey Bryant cat > $TMPC << EOF 306247e98658SCorey Bryant#include <cap-ng.h> 306347e98658SCorey Bryantint main(void) 306447e98658SCorey Bryant{ 306547e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 306647e98658SCorey Bryant return 0; 306747e98658SCorey Bryant} 306847e98658SCorey BryantEOF 306947e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 307047e98658SCorey Bryant cap_ng=yes 307147e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 307247e98658SCorey Bryant else 307347e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 307421684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 307547e98658SCorey Bryant fi 307647e98658SCorey Bryant cap_ng=no 307747e98658SCorey Bryant fi 307847e98658SCorey Bryantfi 307947e98658SCorey Bryant 308047e98658SCorey Bryant########################################## 3081c2de5c91Smalc# Sound support libraries probe 30828f28f3fbSths 3083c2de5c91Smalcaudio_drv_probe() 3084c2de5c91Smalc{ 3085c2de5c91Smalc drv=$1 3086c2de5c91Smalc hdr=$2 3087c2de5c91Smalc lib=$3 3088c2de5c91Smalc exp=$4 3089c2de5c91Smalc cfl=$5 30908f28f3fbSths cat > $TMPC << EOF 3091c2de5c91Smalc#include <$hdr> 3092c2de5c91Smalcint main(void) { $exp } 30938f28f3fbSthsEOF 309452166aa0SJuan Quintela if compile_prog "$cfl" "$lib" ; then 30958f28f3fbSths : 30968f28f3fbSths else 309776ad07a4SPeter Maydell error_exit "$drv check failed" \ 309876ad07a4SPeter Maydell "Make sure to have the $drv libs and headers installed." 30998f28f3fbSths fi 3100c2de5c91Smalc} 3101c2de5c91Smalc 310289138857SStefan Weilaudio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g') 3103c2de5c91Smalcfor drv in $audio_drv_list; do 3104c2de5c91Smalc case $drv in 3105c2de5c91Smalc alsa) 3106c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 3107e35bcb0cSStefan Weil "return snd_pcm_close((snd_pcm_t *)0);" 3108b1149911SFam Zheng alsa_libs="-lasound" 3109c2de5c91Smalc ;; 3110c2de5c91Smalc 3111b8e59f18Smalc pa) 3112e58ff62dSPeter Krempa audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \ 3113e58ff62dSPeter Krempa "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;" 3114b1149911SFam Zheng pulse_libs="-lpulse" 311567f86e8eSJuan Quintela audio_pt_int="yes" 3116b8e59f18Smalc ;; 3117b8e59f18Smalc 3118373967b2SGerd Hoffmann sdl) 3119373967b2SGerd Hoffmann if test "$sdl" = "no"; then 3120373967b2SGerd Hoffmann error_exit "sdl not found or disabled, can not use sdl audio driver" 3121373967b2SGerd Hoffmann fi 3122373967b2SGerd Hoffmann ;; 3123373967b2SGerd Hoffmann 3124997e690aSJuan Quintela coreaudio) 3125b1149911SFam Zheng coreaudio_libs="-framework CoreAudio" 3126997e690aSJuan Quintela ;; 3127997e690aSJuan Quintela 3128a4bf6780SJuan Quintela dsound) 3129b1149911SFam Zheng dsound_libs="-lole32 -ldxguid" 3130d5631638Smalc audio_win_int="yes" 3131a4bf6780SJuan Quintela ;; 3132a4bf6780SJuan Quintela 3133a4bf6780SJuan Quintela oss) 3134b1149911SFam Zheng oss_libs="$oss_lib" 3135a4bf6780SJuan Quintela ;; 3136a4bf6780SJuan Quintela 3137373967b2SGerd Hoffmann wav) 3138373967b2SGerd Hoffmann # XXX: Probes for CoreAudio, DirectSound 31392f6a1ab0Sblueswir1 ;; 31402f6a1ab0Sblueswir1 3141e4c63a6aSmalc *) 31421c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 314376ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 314476ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 3145e4c63a6aSmalc } 3146e4c63a6aSmalc ;; 3147c2de5c91Smalc esac 3148c2de5c91Smalcdone 31498f28f3fbSths 31504d3b6f6eSbalrog########################################## 31512e4d9fb1Saurel32# BrlAPI probe 31522e4d9fb1Saurel32 31534ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 3154eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 31552e4d9fb1Saurel32 cat > $TMPC << EOF 31562e4d9fb1Saurel32#include <brlapi.h> 3157832ce9c2SScott Wood#include <stddef.h> 31582e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 31592e4d9fb1Saurel32EOF 316052166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 31612e4d9fb1Saurel32 brlapi=yes 31624ffcedb6SJuan Quintela else 31634ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 316421684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 31654ffcedb6SJuan Quintela fi 31664ffcedb6SJuan Quintela brlapi=no 3167eb82284fSJuan Quintela fi 3168eb82284fSJuan Quintelafi 31692e4d9fb1Saurel32 31702e4d9fb1Saurel32########################################## 31714d3b6f6eSbalrog# curses probe 3172a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 3173e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 31748ddc5bf9SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):" 31758ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 3176e095e2f3SStefan Weil else 31777c703002SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:" 31788ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw" 3179e095e2f3SStefan Weil fi 3180c584a6d0SJuan Quintela curses_found=no 31814d3b6f6eSbalrog cat > $TMPC << EOF 31828ddc5bf9SSamuel Thibault#include <locale.h> 31834d3b6f6eSbalrog#include <curses.h> 31848ddc5bf9SSamuel Thibault#include <wchar.h> 3185ef9a2524SStefan Weilint main(void) { 31868ddc5bf9SSamuel Thibault wchar_t wch = L'w'; 31878ddc5bf9SSamuel Thibault setlocale(LC_ALL, ""); 3188ef9a2524SStefan Weil resize_term(0, 0); 31898ddc5bf9SSamuel Thibault addwstr(L"wide chars\n"); 31908ddc5bf9SSamuel Thibault addnwstr(&wch, 1); 31917c703002SSamuel Thibault add_wch(WACS_DEGREE); 3192271f37abSKamil Rytarowski return 0; 3193ef9a2524SStefan Weil} 31944d3b6f6eSbalrogEOF 3195ecbe251fSVadim Evard IFS=: 31968ddc5bf9SSamuel Thibault for curses_inc in $curses_inc_list; do 3197b01a4fd3SPeter Maydell # Make sure we get the wide character prototypes 3198b01a4fd3SPeter Maydell curses_inc="-DNCURSES_WIDECHAR $curses_inc" 31997c703002SSamuel Thibault IFS=: 32008ddc5bf9SSamuel Thibault for curses_lib in $curses_lib_list; do 3201ecbe251fSVadim Evard unset IFS 32028ddc5bf9SSamuel Thibault if compile_prog "$curses_inc" "$curses_lib" ; then 3203c584a6d0SJuan Quintela curses_found=yes 32048ddc5bf9SSamuel Thibault QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS" 32054f78ef9aSJuan Quintela libs_softmmu="$curses_lib $libs_softmmu" 32064f78ef9aSJuan Quintela break 32074d3b6f6eSbalrog fi 32084f78ef9aSJuan Quintela done 32097c703002SSamuel Thibault if test "$curses_found" = yes ; then 32107c703002SSamuel Thibault break 32117c703002SSamuel Thibault fi 32128ddc5bf9SSamuel Thibault done 3213ecbe251fSVadim Evard unset IFS 3214c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 3215c584a6d0SJuan Quintela curses=yes 3216c584a6d0SJuan Quintela else 3217c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 321821684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 3219c584a6d0SJuan Quintela fi 3220c584a6d0SJuan Quintela curses=no 3221c584a6d0SJuan Quintela fi 32224f78ef9aSJuan Quintelafi 32234d3b6f6eSbalrog 3224414f0dabSblueswir1########################################## 3225769ce76dSAlexander Graf# curl probe 3226a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 322765d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 3228a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 32294e2b0658SPaolo Bonzini else 32304e2b0658SPaolo Bonzini curlconfig=curl-config 32314e2b0658SPaolo Bonzini fi 3232769ce76dSAlexander Graf cat > $TMPC << EOF 3233769ce76dSAlexander Graf#include <curl/curl.h> 32340b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 3235769ce76dSAlexander GrafEOF 323689138857SStefan Weil curl_cflags=$($curlconfig --cflags 2>/dev/null) 323789138857SStefan Weil curl_libs=$($curlconfig --libs 2>/dev/null) 3238b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 3239769ce76dSAlexander Graf curl=yes 3240788c8196SJuan Quintela else 3241788c8196SJuan Quintela if test "$curl" = "yes" ; then 324221684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 3243788c8196SJuan Quintela fi 3244788c8196SJuan Quintela curl=no 3245769ce76dSAlexander Graf fi 3246769ce76dSAlexander Graffi # test "$curl" 3247769ce76dSAlexander Graf 3248769ce76dSAlexander Graf########################################## 3249fb599c9aSbalrog# bluez support probe 3250a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then 3251e820e3f4Sbalrog cat > $TMPC << EOF 3252e820e3f4Sbalrog#include <bluetooth/bluetooth.h> 3253e820e3f4Sbalrogint main(void) { return bt_error(0); } 3254e820e3f4SbalrogEOF 325589138857SStefan Weil bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null) 325689138857SStefan Weil bluez_libs=$($pkg_config --libs bluez 2>/dev/null) 325752166aa0SJuan Quintela if compile_prog "$bluez_cflags" "$bluez_libs" ; then 3258a20a6f46SJuan Quintela bluez=yes 3259e482d56aSJuan Quintela libs_softmmu="$bluez_libs $libs_softmmu" 3260e820e3f4Sbalrog else 3261a20a6f46SJuan Quintela if test "$bluez" = "yes" ; then 326221684af0SStewart Smith feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 3263a20a6f46SJuan Quintela fi 3264e820e3f4Sbalrog bluez="no" 3265e820e3f4Sbalrog fi 3266fb599c9aSbalrogfi 3267fb599c9aSbalrog 3268fb599c9aSbalrog########################################## 3269e18df141SAnthony Liguori# glib support probe 3270a52d28afSPaolo Bonzini 3271ad04d8cbSPeter Maydellif test "$mingw32" = yes; then 3272ad04d8cbSPeter Maydell glib_req_ver=2.30 3273ad04d8cbSPeter Maydellelse 3274f40685c6SJohn Snow glib_req_ver=2.22 3275ad04d8cbSPeter Maydellfi 3276aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 3277aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 3278aa0d1f44SPaolo Bonzini glib_modules="$glib_modules gmodule-2.0" 3279aa0d1f44SPaolo Bonzinifi 3280e26110cfSFam Zheng 32814eaf7202SSameeh Jubran# This workaround is required due to a bug in pkg-config file for glib as it 32824eaf7202SSameeh Jubran# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static 32834eaf7202SSameeh Jubran 32844eaf7202SSameeh Jubranif test "$static" = yes -a "$mingw32" = yes; then 32854eaf7202SSameeh Jubran QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS" 32864eaf7202SSameeh Jubranfi 32874eaf7202SSameeh Jubran 3288aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 3289e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 329089138857SStefan Weil glib_cflags=$($pkg_config --cflags $i) 329189138857SStefan Weil glib_libs=$($pkg_config --libs $i) 32924a058899SMarc-André Lureau QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" 329314015304SAnthony Liguori LIBS="$glib_libs $LIBS" 3294957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 3295e18df141SAnthony Liguori else 3296e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 3297e26110cfSFam Zheng fi 3298e26110cfSFam Zhengdone 3299e26110cfSFam Zheng 3300977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the 3301977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches 3302977a82abSDaniel P. Berrange# problems on multi-arch where people try to build 3303977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers 3304977a82abSDaniel P. Berrangecat > $TMPC <<EOF 3305977a82abSDaniel P. Berrange#include <glib.h> 3306977a82abSDaniel P. Berrange#include <unistd.h> 3307977a82abSDaniel P. Berrange 3308977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \ 3309977a82abSDaniel P. Berrange typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 3310977a82abSDaniel P. Berrange 3311977a82abSDaniel P. Berrangeint main(void) { 3312977a82abSDaniel P. Berrange QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 3313977a82abSDaniel P. Berrange return 0; 3314977a82abSDaniel P. Berrange} 3315977a82abSDaniel P. BerrangeEOF 3316977a82abSDaniel P. Berrange 33175919e032SStefan Weilif ! compile_prog "$CFLAGS" "$LIBS" ; then 3318977a82abSDaniel P. Berrange error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 3319977a82abSDaniel P. Berrange "You probably need to set PKG_CONFIG_LIBDIR"\ 3320977a82abSDaniel P. Berrange "to point to the right pkg-config files for your"\ 3321977a82abSDaniel P. Berrange "build target" 3322977a82abSDaniel P. Berrangefi 3323977a82abSDaniel P. Berrange 33249d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests. 33259d41401bSMichael S. Tsirkinglib_subprocess=yes 3326a049223aSMarc-André Lureauif ! $pkg_config --atleast-version=2.38 glib-2.0; then 33279d41401bSMichael S. Tsirkin glib_subprocess=no 33289d41401bSMichael S. Tsirkinfi 33299d41401bSMichael S. Tsirkin 3330bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 3331bbbf2e04SJohn Snowcat > $TMPC << EOF 3332bbbf2e04SJohn Snow#include <glib.h> 3333bbbf2e04SJohn Snowint main(void) { return 0; } 3334bbbf2e04SJohn SnowEOF 3335bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 3336bbbf2e04SJohn Snow if cc_has_warning_flag "-Wno-unknown-attributes"; then 3337bbbf2e04SJohn Snow glib_cflags="-Wno-unknown-attributes $glib_cflags" 3338bbbf2e04SJohn Snow CFLAGS="-Wno-unknown-attributes $CFLAGS" 3339bbbf2e04SJohn Snow fi 3340bbbf2e04SJohn Snowfi 3341bbbf2e04SJohn Snow 3342e26110cfSFam Zheng########################################## 3343e26110cfSFam Zheng# SHA command probe for modules 3344e26110cfSFam Zhengif test "$modules" = yes; then 3345e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 3346e26110cfSFam Zheng for c in $shacmd_probe; do 33478ccefb91SFam Zheng if has $c; then 3348e26110cfSFam Zheng shacmd="$c" 3349e26110cfSFam Zheng break 3350e26110cfSFam Zheng fi 3351e26110cfSFam Zheng done 3352e26110cfSFam Zheng if test "$shacmd" = ""; then 3353e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 3354e26110cfSFam Zheng fi 3355e18df141SAnthony Liguorifi 3356e18df141SAnthony Liguori 3357e18df141SAnthony Liguori########################################## 3358e2134eb9SGerd Hoffmann# pixman support probe 3359e2134eb9SGerd Hoffmann 336074880fe2SRobert Schieleif test "$want_tools" = "no" -a "$softmmu" = "no"; then 336174880fe2SRobert Schiele pixman_cflags= 336274880fe2SRobert Schiele pixman_libs= 336335c4e86cSGerd Hoffmannelif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 336489138857SStefan Weil pixman_cflags=$($pkg_config --cflags pixman-1) 336589138857SStefan Weil pixman_libs=$($pkg_config --libs pixman-1) 3366e2134eb9SGerd Hoffmannelse 3367c12b6d70SGerd Hoffmann error_exit "pixman >= 0.21.8 not present." \ 3368c12b6d70SGerd Hoffmann "Please install the pixman devel package." 3369e2134eb9SGerd Hoffmannfi 3370e2134eb9SGerd Hoffmann 3371e2134eb9SGerd Hoffmann########################################## 3372fe8fc5aeSPaolo Bonzini# libmpathpersist probe 3373fe8fc5aeSPaolo Bonzini 3374fe8fc5aeSPaolo Bonziniif test "$mpath" != "no" ; then 3375fe8fc5aeSPaolo Bonzini cat > $TMPC <<EOF 3376fe8fc5aeSPaolo Bonzini#include <libudev.h> 3377fe8fc5aeSPaolo Bonzini#include <mpath_persist.h> 3378fe8fc5aeSPaolo Bonziniunsigned mpath_mx_alloc_len = 1024; 3379fe8fc5aeSPaolo Bonziniint logsink; 3380b3f1c8c4SPaolo Bonzinistatic struct config *multipath_conf; 3381b3f1c8c4SPaolo Bonziniextern struct udev *udev; 3382b3f1c8c4SPaolo Bonziniextern struct config *get_multipath_config(void); 3383b3f1c8c4SPaolo Bonziniextern void put_multipath_config(struct config *conf); 3384b3f1c8c4SPaolo Bonzinistruct udev *udev; 3385b3f1c8c4SPaolo Bonzinistruct config *get_multipath_config(void) { return multipath_conf; } 3386b3f1c8c4SPaolo Bonzinivoid put_multipath_config(struct config *conf) { } 3387b3f1c8c4SPaolo Bonzini 3388fe8fc5aeSPaolo Bonziniint main(void) { 3389b3f1c8c4SPaolo Bonzini udev = udev_new(); 3390b3f1c8c4SPaolo Bonzini multipath_conf = mpath_lib_init(); 3391fe8fc5aeSPaolo Bonzini return 0; 3392fe8fc5aeSPaolo Bonzini} 3393fe8fc5aeSPaolo BonziniEOF 3394fe8fc5aeSPaolo Bonzini if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 3395fe8fc5aeSPaolo Bonzini mpathpersist=yes 3396fe8fc5aeSPaolo Bonzini else 3397fe8fc5aeSPaolo Bonzini mpathpersist=no 3398fe8fc5aeSPaolo Bonzini fi 3399fe8fc5aeSPaolo Bonzinielse 3400fe8fc5aeSPaolo Bonzini mpathpersist=no 3401fe8fc5aeSPaolo Bonzinifi 3402fe8fc5aeSPaolo Bonzini 3403fe8fc5aeSPaolo Bonzini########################################## 340417bff52bSM. Mohan Kumar# libcap probe 340517bff52bSM. Mohan Kumar 340617bff52bSM. Mohan Kumarif test "$cap" != "no" ; then 340717bff52bSM. Mohan Kumar cat > $TMPC <<EOF 340817bff52bSM. Mohan Kumar#include <stdio.h> 340917bff52bSM. Mohan Kumar#include <sys/capability.h> 3410cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 341117bff52bSM. Mohan KumarEOF 341217bff52bSM. Mohan Kumar if compile_prog "" "-lcap" ; then 341317bff52bSM. Mohan Kumar cap=yes 341417bff52bSM. Mohan Kumar else 341517bff52bSM. Mohan Kumar cap=no 341617bff52bSM. Mohan Kumar fi 341717bff52bSM. Mohan Kumarfi 341817bff52bSM. Mohan Kumar 341917bff52bSM. Mohan Kumar########################################## 3420e5d355d1Saliguori# pthread probe 34214b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 34223c529d93Saliguori 3423e5d355d1Saliguoripthread=no 3424414f0dabSblueswir1cat > $TMPC << EOF 34253c529d93Saliguori#include <pthread.h> 34267a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 34277a42bbe4SStefan Weilint main(void) { 34287a42bbe4SStefan Weil pthread_t thread; 34297a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 34307a42bbe4SStefan Weil return 0; 34317a42bbe4SStefan Weil} 3432414f0dabSblueswir1EOF 3433bd00d539SAndreas Färberif compile_prog "" "" ; then 3434bd00d539SAndreas Färber pthread=yes 3435bd00d539SAndreas Färberelse 3436de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 343752166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 3438e5d355d1Saliguori pthread=yes 3439e3c56761SPeter Portante found=no 3440e3c56761SPeter Portante for lib_entry in $LIBS; do 3441e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 3442e3c56761SPeter Portante found=yes 3443e3c56761SPeter Portante break 3444e3c56761SPeter Portante fi 3445e3c56761SPeter Portante done 3446e3c56761SPeter Portante if test "$found" = "no"; then 34475572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 3448e3c56761SPeter Portante fi 3449409437e1SDaniel P. Berrange PTHREAD_LIB="$pthread_lib" 3450de65fe0fSSebastian Herbszt break 3451414f0dabSblueswir1 fi 3452de65fe0fSSebastian Herbszt done 3453bd00d539SAndreas Färberfi 3454414f0dabSblueswir1 34554617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then 345676ad07a4SPeter Maydell error_exit "pthread check failed" \ 345776ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 3458e5d355d1Saliguorifi 3459e5d355d1Saliguori 34605c312079SDr. David Alan Gilbert# check for pthread_setname_np 34615c312079SDr. David Alan Gilbertpthread_setname_np=no 34625c312079SDr. David Alan Gilbertcat > $TMPC << EOF 34635c312079SDr. David Alan Gilbert#include <pthread.h> 34645c312079SDr. David Alan Gilbert 34655c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 34665c312079SDr. David Alan Gilbertint main(void) 34675c312079SDr. David Alan Gilbert{ 34685c312079SDr. David Alan Gilbert pthread_t thread; 34695c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 34705c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 34715c312079SDr. David Alan Gilbert return 0; 34725c312079SDr. David Alan Gilbert} 34735c312079SDr. David Alan GilbertEOF 34745c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 34755c312079SDr. David Alan Gilbert pthread_setname_np=yes 34765c312079SDr. David Alan Gilbertfi 34775c312079SDr. David Alan Gilbert 3478bf9298b9Saliguori########################################## 3479f27aaf4bSChristian Brunner# rbd probe 3480f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 3481f27aaf4bSChristian Brunner cat > $TMPC <<EOF 3482f27aaf4bSChristian Brunner#include <stdio.h> 3483ad32e9c0SJosh Durgin#include <rbd/librbd.h> 3484f27aaf4bSChristian Brunnerint main(void) { 3485ad32e9c0SJosh Durgin rados_t cluster; 3486ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 3487f27aaf4bSChristian Brunner return 0; 3488f27aaf4bSChristian Brunner} 3489f27aaf4bSChristian BrunnerEOF 3490ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 3491f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 3492f27aaf4bSChristian Brunner rbd=yes 3493f27aaf4bSChristian Brunner else 3494f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 349521684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 3496f27aaf4bSChristian Brunner fi 3497f27aaf4bSChristian Brunner rbd=no 3498f27aaf4bSChristian Brunner fi 3499f27aaf4bSChristian Brunnerfi 3500f27aaf4bSChristian Brunner 3501f27aaf4bSChristian Brunner########################################## 35020a12ec87SRichard W.M. Jones# libssh2 probe 35034fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8 35040a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then 350565d5d3f9SStefan Weil if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 350689138857SStefan Weil libssh2_cflags=$($pkg_config libssh2 --cflags) 350789138857SStefan Weil libssh2_libs=$($pkg_config libssh2 --libs) 35080a12ec87SRichard W.M. Jones libssh2=yes 35090a12ec87SRichard W.M. Jones else 35100a12ec87SRichard W.M. Jones if test "$libssh2" = "yes" ; then 35114fc16838SRichard W.M. Jones error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 35120a12ec87SRichard W.M. Jones fi 35130a12ec87SRichard W.M. Jones libssh2=no 35140a12ec87SRichard W.M. Jones fi 35150a12ec87SRichard W.M. Jonesfi 35160a12ec87SRichard W.M. Jones 35170a12ec87SRichard W.M. Jones########################################## 35189a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe 35199a2d462eSRichard W.M. Jones 35209a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then 35219a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 35229a2d462eSRichard W.M. Jones#include <stdio.h> 35239a2d462eSRichard W.M. Jones#include <libssh2.h> 35249a2d462eSRichard W.M. Jones#include <libssh2_sftp.h> 35259a2d462eSRichard W.M. Jonesint main(void) { 35269a2d462eSRichard W.M. Jones LIBSSH2_SESSION *session; 35279a2d462eSRichard W.M. Jones LIBSSH2_SFTP *sftp; 35289a2d462eSRichard W.M. Jones LIBSSH2_SFTP_HANDLE *sftp_handle; 35299a2d462eSRichard W.M. Jones session = libssh2_session_init (); 35309a2d462eSRichard W.M. Jones sftp = libssh2_sftp_init (session); 35319a2d462eSRichard W.M. Jones sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 35329a2d462eSRichard W.M. Jones libssh2_sftp_fsync (sftp_handle); 35339a2d462eSRichard W.M. Jones return 0; 35349a2d462eSRichard W.M. Jones} 35359a2d462eSRichard W.M. JonesEOF 35369a2d462eSRichard W.M. Jones # libssh2_cflags/libssh2_libs defined in previous test. 35379a2d462eSRichard W.M. Jones if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 35389a2d462eSRichard W.M. Jones QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 35399a2d462eSRichard W.M. Jones fi 35409a2d462eSRichard W.M. Jonesfi 35419a2d462eSRichard W.M. Jones 35429a2d462eSRichard W.M. Jones########################################## 35435c6c3a6cSChristoph Hellwig# linux-aio probe 35445c6c3a6cSChristoph Hellwig 35455c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 35465c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 35475c6c3a6cSChristoph Hellwig#include <libaio.h> 35485c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 3549832ce9c2SScott Wood#include <stddef.h> 35505c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 35515c6c3a6cSChristoph HellwigEOF 35525c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 35535c6c3a6cSChristoph Hellwig linux_aio=yes 35545c6c3a6cSChristoph Hellwig else 35555c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 355621684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 35575c6c3a6cSChristoph Hellwig fi 35583cfcae3cSLuiz Capitulino linux_aio=no 35595c6c3a6cSChristoph Hellwig fi 35605c6c3a6cSChristoph Hellwigfi 35615c6c3a6cSChristoph Hellwig 35625c6c3a6cSChristoph Hellwig########################################## 35633b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux 35643b8acc11SPaolo Bonzini 35653b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 35663b8acc11SPaolo Bonzini tpm_passthrough=$tpm 35673b8acc11SPaolo Bonzinielse 35683b8acc11SPaolo Bonzini tpm_passthrough=no 35693b8acc11SPaolo Bonzinifi 35703b8acc11SPaolo Bonzini 3571f4ede81eSAmarnath Valluri# TPM emulator is for all posix systems 3572f4ede81eSAmarnath Valluriif test "$mingw32" != "yes"; then 3573f4ede81eSAmarnath Valluri tpm_emulator=$tpm 3574f4ede81eSAmarnath Vallurielse 3575f4ede81eSAmarnath Valluri tpm_emulator=no 3576f4ede81eSAmarnath Vallurifi 35773b8acc11SPaolo Bonzini########################################## 3578758e8e38SVenkateswararao Jujjuri (JV)# attr probe 3579758e8e38SVenkateswararao Jujjuri (JV) 3580758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 3581758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 3582758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 3583758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 3584f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 3585f2338fb4SPavel Borzenkov#include <attr/xattr.h> 3586f2338fb4SPavel Borzenkov#else 35874f26f2b6SAvi Kivity#include <sys/xattr.h> 3588f2338fb4SPavel Borzenkov#endif 3589758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3590758e8e38SVenkateswararao Jujjuri (JV)EOF 35914f26f2b6SAvi Kivity if compile_prog "" "" ; then 35924f26f2b6SAvi Kivity attr=yes 35934f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 3594f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3595758e8e38SVenkateswararao Jujjuri (JV) attr=yes 3596758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 35974f26f2b6SAvi Kivity libattr=yes 3598758e8e38SVenkateswararao Jujjuri (JV) else 3599758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 360021684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 3601758e8e38SVenkateswararao Jujjuri (JV) fi 3602758e8e38SVenkateswararao Jujjuri (JV) attr=no 3603758e8e38SVenkateswararao Jujjuri (JV) fi 3604758e8e38SVenkateswararao Jujjuri (JV)fi 3605758e8e38SVenkateswararao Jujjuri (JV) 3606758e8e38SVenkateswararao Jujjuri (JV)########################################## 3607bf9298b9Saliguori# iovec probe 3608bf9298b9Saliguoricat > $TMPC <<EOF 3609db34f0b3Sblueswir1#include <sys/types.h> 3610bf9298b9Saliguori#include <sys/uio.h> 3611db34f0b3Sblueswir1#include <unistd.h> 3612f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 3613bf9298b9SaliguoriEOF 3614bf9298b9Saliguoriiovec=no 361552166aa0SJuan Quintelaif compile_prog "" "" ; then 3616bf9298b9Saliguori iovec=yes 3617bf9298b9Saliguorifi 3618bf9298b9Saliguori 3619f652e6afSaurel32########################################## 3620ceb42de8Saliguori# preadv probe 3621ceb42de8Saliguoricat > $TMPC <<EOF 3622ceb42de8Saliguori#include <sys/types.h> 3623ceb42de8Saliguori#include <sys/uio.h> 3624ceb42de8Saliguori#include <unistd.h> 3625c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 3626ceb42de8SaliguoriEOF 3627ceb42de8Saliguoripreadv=no 362852166aa0SJuan Quintelaif compile_prog "" "" ; then 3629ceb42de8Saliguori preadv=yes 3630ceb42de8Saliguorifi 3631ceb42de8Saliguori 3632ceb42de8Saliguori########################################## 3633f652e6afSaurel32# fdt probe 3634e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 3635e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 3636e169e1e1SPeter Maydellfdt_required=no 3637e169e1e1SPeter Maydellfor target in $target_list; do 3638e169e1e1SPeter Maydell case $target in 3639df1d8a1fSPaul Burton aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu) 3640e169e1e1SPeter Maydell fdt_required=yes 3641e169e1e1SPeter Maydell ;; 3642e169e1e1SPeter Maydell esac 3643e169e1e1SPeter Maydelldone 3644e169e1e1SPeter Maydell 3645e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 3646e169e1e1SPeter Maydell if test "$fdt" = "no"; then 3647e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 3648e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 3649e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 3650e169e1e1SPeter Maydell fi 3651e169e1e1SPeter Maydell fdt=yes 3652e169e1e1SPeter Maydellfi 3653e169e1e1SPeter Maydell 36542df87df7SJuan Quintelaif test "$fdt" != "no" ; then 3655b41af4baSJuan Quintela fdt_libs="-lfdt" 365696ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 36576e85fce0SPaul Burton # and test for required functions to make sure we are on a version >= 1.4.2 3658f652e6afSaurel32 cat > $TMPC << EOF 365931ce0adbSThomas Huth#include <libfdt.h> 366096ce6545SPeter Crosthwaite#include <libfdt_env.h> 36616e85fce0SPaul Burtonint main(void) { fdt_first_subnode(0, 0); return 0; } 3662f652e6afSaurel32EOF 366352166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 3664a540f158SPeter Crosthwaite # system DTC is good - use it 3665f652e6afSaurel32 fdt=yes 3666aef45d51SDaniel P. Berrange else 3667aef45d51SDaniel P. Berrange # have GIT checkout, so activate dtc submodule 3668aef45d51SDaniel P. Berrange if test -e "${source_path}/.git" ; then 3669aef45d51SDaniel P. Berrange git_submodules="${git_submodules} dtc" 3670aef45d51SDaniel P. Berrange fi 3671aef45d51SDaniel P. Berrange if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then 3672a540f158SPeter Crosthwaite fdt=yes 3673a540f158SPeter Crosthwaite dtc_internal="yes" 3674a540f158SPeter Crosthwaite mkdir -p dtc 3675cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 3676a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3677a540f158SPeter Crosthwaite symlink "$source_path/dtc/scripts" "dtc/scripts" 36782df87df7SJuan Quintela fi 3679a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3680a540f158SPeter Crosthwaite fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3681a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 3682aef45d51SDaniel P. Berrange # Not a git build & no libfdt found, prompt for system install 3683aef45d51SDaniel P. Berrange error_exit "DTC (libfdt) version >= 1.4.2 not present." \ 3684aef45d51SDaniel P. Berrange "Please install the DTC (libfdt) devel package" 3685a540f158SPeter Crosthwaite else 3686a540f158SPeter Crosthwaite # don't have and don't want 3687de3a354aSMichael Walle fdt_libs= 36882df87df7SJuan Quintela fdt=no 3689f652e6afSaurel32 fi 3690f652e6afSaurel32 fi 3691aef45d51SDaniel P. Berrangefi 3692f652e6afSaurel32 3693a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 3694a540f158SPeter Crosthwaite 369520ff075bSMichael Walle########################################## 3696fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2) 3697b1546f32SGerd Hoffmann 3698da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 3699014cb152SGerd Hoffmann opengl_pkgs="epoxy libdrm gbm" 3700fb719563SOGAWA Hirofumi if $pkg_config $opengl_pkgs x11; then 3701f676c67eSJeremy White opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3702f676c67eSJeremy White opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3703da076ffeSGerd Hoffmann opengl=yes 3704925a0400SGerd Hoffmann if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 3705925a0400SGerd Hoffmann gtk_gl="yes" 3706925a0400SGerd Hoffmann fi 3707cc720a5dSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags" 370820ff075bSMichael Walle else 3709da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 3710dcf30025SGerd Hoffmann feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 371120ff075bSMichael Walle fi 3712f676c67eSJeremy White opengl_cflags="" 3713da076ffeSGerd Hoffmann opengl_libs="" 3714da076ffeSGerd Hoffmann opengl=no 371520ff075bSMichael Walle fi 371620ff075bSMichael Wallefi 371720ff075bSMichael Walle 3718014cb152SGerd Hoffmannif test "$opengl" = "yes"; then 3719014cb152SGerd Hoffmann cat > $TMPC << EOF 3720014cb152SGerd Hoffmann#include <epoxy/egl.h> 3721014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export 3722014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 3723014cb152SGerd Hoffmann#endif 3724014cb152SGerd Hoffmannint main(void) { return 0; } 3725014cb152SGerd HoffmannEOF 3726014cb152SGerd Hoffmann if compile_prog "" "" ; then 3727014cb152SGerd Hoffmann opengl_dmabuf=yes 3728014cb152SGerd Hoffmann fi 3729014cb152SGerd Hoffmannfi 3730c9a12e75SChrysostomos Nanakos 3731c9a12e75SChrysostomos Nanakos 3732eb100396SBharata B Rao########################################## 3733eb100396SBharata B Rao# glusterfs probe 3734eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 373565d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 3736e01bee08SBharata B Rao glusterfs="yes" 373789138857SStefan Weil glusterfs_cflags=$($pkg_config --cflags glusterfs-api) 373889138857SStefan Weil glusterfs_libs=$($pkg_config --libs glusterfs-api) 3739d85fa9ebSJeff Cody if $pkg_config --atleast-version=4 glusterfs-api; then 3740d85fa9ebSJeff Cody glusterfs_xlator_opt="yes" 3741d85fa9ebSJeff Cody fi 374265d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 37430c14fb47SBharata B Rao glusterfs_discard="yes" 37440c14fb47SBharata B Rao fi 37457c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 3746df3a429aSNiels de Vos glusterfs_fallocate="yes" 37477c815372SBharata B Rao glusterfs_zerofill="yes" 37487c815372SBharata B Rao fi 3749eb100396SBharata B Rao else 3750eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 37518efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 37528efc9363SHu Tao "Install glusterfs-api devel >= 3" 3753eb100396SBharata B Rao fi 3754e01bee08SBharata B Rao glusterfs="no" 3755eb100396SBharata B Rao fi 3756eb100396SBharata B Raofi 3757eb100396SBharata B Rao 375839386ac7Saurel32# Check for inotify functions when we are building linux-user 37593b3f24adSaurel32# emulator. This is done because older glibc versions don't 37603b3f24adSaurel32# have syscall stubs for these implemented. In that case we 37613b3f24adSaurel32# don't provide them even if kernel supports them. 37623b3f24adSaurel32# 37633b3f24adSaurel32inotify=no 37643b3f24adSaurel32cat > $TMPC << EOF 37653b3f24adSaurel32#include <sys/inotify.h> 37663b3f24adSaurel32 37673b3f24adSaurel32int 37683b3f24adSaurel32main(void) 37693b3f24adSaurel32{ 37703b3f24adSaurel32 /* try to start inotify */ 37718690e420Saurel32 return inotify_init(); 37723b3f24adSaurel32} 37733b3f24adSaurel32EOF 377452166aa0SJuan Quintelaif compile_prog "" "" ; then 37753b3f24adSaurel32 inotify=yes 37763b3f24adSaurel32fi 37773b3f24adSaurel32 3778c05c7a73SRiku Voipioinotify1=no 3779c05c7a73SRiku Voipiocat > $TMPC << EOF 3780c05c7a73SRiku Voipio#include <sys/inotify.h> 3781c05c7a73SRiku Voipio 3782c05c7a73SRiku Voipioint 3783c05c7a73SRiku Voipiomain(void) 3784c05c7a73SRiku Voipio{ 3785c05c7a73SRiku Voipio /* try to start inotify */ 3786c05c7a73SRiku Voipio return inotify_init1(0); 3787c05c7a73SRiku Voipio} 3788c05c7a73SRiku VoipioEOF 3789c05c7a73SRiku Voipioif compile_prog "" "" ; then 3790c05c7a73SRiku Voipio inotify1=yes 3791c05c7a73SRiku Voipiofi 3792c05c7a73SRiku Voipio 3793099d6b0fSRiku Voipio# check if pipe2 is there 3794099d6b0fSRiku Voipiopipe2=no 3795099d6b0fSRiku Voipiocat > $TMPC << EOF 3796099d6b0fSRiku Voipio#include <unistd.h> 3797099d6b0fSRiku Voipio#include <fcntl.h> 3798099d6b0fSRiku Voipio 3799099d6b0fSRiku Voipioint main(void) 3800099d6b0fSRiku Voipio{ 3801099d6b0fSRiku Voipio int pipefd[2]; 38029bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 3803099d6b0fSRiku Voipio} 3804099d6b0fSRiku VoipioEOF 380552166aa0SJuan Quintelaif compile_prog "" "" ; then 3806099d6b0fSRiku Voipio pipe2=yes 3807099d6b0fSRiku Voipiofi 3808099d6b0fSRiku Voipio 380940ff6d7eSKevin Wolf# check if accept4 is there 381040ff6d7eSKevin Wolfaccept4=no 381140ff6d7eSKevin Wolfcat > $TMPC << EOF 381240ff6d7eSKevin Wolf#include <sys/socket.h> 381340ff6d7eSKevin Wolf#include <stddef.h> 381440ff6d7eSKevin Wolf 381540ff6d7eSKevin Wolfint main(void) 381640ff6d7eSKevin Wolf{ 381740ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 381840ff6d7eSKevin Wolf return 0; 381940ff6d7eSKevin Wolf} 382040ff6d7eSKevin WolfEOF 382140ff6d7eSKevin Wolfif compile_prog "" "" ; then 382240ff6d7eSKevin Wolf accept4=yes 382340ff6d7eSKevin Wolffi 382440ff6d7eSKevin Wolf 38253ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 38263ce34dfbSvibisreenivasansplice=no 38273ce34dfbSvibisreenivasancat > $TMPC << EOF 38283ce34dfbSvibisreenivasan#include <unistd.h> 38293ce34dfbSvibisreenivasan#include <fcntl.h> 38303ce34dfbSvibisreenivasan#include <limits.h> 38313ce34dfbSvibisreenivasan 38323ce34dfbSvibisreenivasanint main(void) 38333ce34dfbSvibisreenivasan{ 383466ea0f22SStefan Weil int len, fd = 0; 38353ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 38363ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 38373ce34dfbSvibisreenivasan return 0; 38383ce34dfbSvibisreenivasan} 38393ce34dfbSvibisreenivasanEOF 384052166aa0SJuan Quintelaif compile_prog "" "" ; then 38413ce34dfbSvibisreenivasan splice=yes 38423ce34dfbSvibisreenivasanfi 38433ce34dfbSvibisreenivasan 3844dcc38d1cSMarcelo Tosatti########################################## 3845a99d57bbSWanlong Gao# libnuma probe 3846a99d57bbSWanlong Gao 3847a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 3848a99d57bbSWanlong Gao cat > $TMPC << EOF 3849a99d57bbSWanlong Gao#include <numa.h> 3850a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 3851a99d57bbSWanlong GaoEOF 3852a99d57bbSWanlong Gao 3853a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 3854a99d57bbSWanlong Gao numa=yes 3855a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 3856a99d57bbSWanlong Gao else 3857a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 3858a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 3859a99d57bbSWanlong Gao fi 3860a99d57bbSWanlong Gao numa=no 3861a99d57bbSWanlong Gao fi 3862a99d57bbSWanlong Gaofi 3863a99d57bbSWanlong Gao 38647b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 38657b01cb97SAlexandre Derumier echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 38667b01cb97SAlexandre Derumier exit 1 38677b01cb97SAlexandre Derumierfi 38687b01cb97SAlexandre Derumier 3869*5a22ab71SYang Zhong# Even if malloc_trim() is available, these non-libc memory allocators 3870*5a22ab71SYang Zhong# do not support it. 3871*5a22ab71SYang Zhongif test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then 3872*5a22ab71SYang Zhong if test "$malloc_trim" = "yes" ; then 3873*5a22ab71SYang Zhong echo "Disabling malloc_trim with non-libc memory allocator" 3874*5a22ab71SYang Zhong fi 3875*5a22ab71SYang Zhong malloc_trim="no" 3876*5a22ab71SYang Zhongfi 3877*5a22ab71SYang Zhong 3878*5a22ab71SYang Zhong####################################### 3879*5a22ab71SYang Zhong# malloc_trim 3880*5a22ab71SYang Zhong 3881*5a22ab71SYang Zhongif test "$malloc_trim" != "no" ; then 3882*5a22ab71SYang Zhong cat > $TMPC << EOF 3883*5a22ab71SYang Zhong#include <malloc.h> 3884*5a22ab71SYang Zhongint main(void) { malloc_trim(0); return 0; } 3885*5a22ab71SYang ZhongEOF 3886*5a22ab71SYang Zhong if compile_prog "" "" ; then 3887*5a22ab71SYang Zhong malloc_trim="yes" 3888*5a22ab71SYang Zhong else 3889*5a22ab71SYang Zhong malloc_trim="no" 3890*5a22ab71SYang Zhong fi 3891*5a22ab71SYang Zhongfi 3892*5a22ab71SYang Zhong 3893a99d57bbSWanlong Gao########################################## 38942847b469SFam Zheng# tcmalloc probe 38952847b469SFam Zheng 38962847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 38972847b469SFam Zheng cat > $TMPC << EOF 38982847b469SFam Zheng#include <stdlib.h> 38992847b469SFam Zhengint main(void) { malloc(1); return 0; } 39002847b469SFam ZhengEOF 39012847b469SFam Zheng 39022847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 39032847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 39042847b469SFam Zheng else 39052847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 39062847b469SFam Zheng fi 39072847b469SFam Zhengfi 39082847b469SFam Zheng 39092847b469SFam Zheng########################################## 39107b01cb97SAlexandre Derumier# jemalloc probe 39117b01cb97SAlexandre Derumier 39127b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then 39137b01cb97SAlexandre Derumier cat > $TMPC << EOF 39147b01cb97SAlexandre Derumier#include <stdlib.h> 39157b01cb97SAlexandre Derumierint main(void) { malloc(1); return 0; } 39167b01cb97SAlexandre DerumierEOF 39177b01cb97SAlexandre Derumier 39187b01cb97SAlexandre Derumier if compile_prog "" "-ljemalloc" ; then 39197b01cb97SAlexandre Derumier LIBS="-ljemalloc $LIBS" 39207b01cb97SAlexandre Derumier else 39217b01cb97SAlexandre Derumier feature_not_found "jemalloc" "install jemalloc devel" 39227b01cb97SAlexandre Derumier fi 39237b01cb97SAlexandre Derumierfi 39247b01cb97SAlexandre Derumier 39257b01cb97SAlexandre Derumier########################################## 3926dcc38d1cSMarcelo Tosatti# signalfd probe 3927dcc38d1cSMarcelo Tosattisignalfd="no" 3928dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 3929dcc38d1cSMarcelo Tosatti#include <unistd.h> 3930dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 3931dcc38d1cSMarcelo Tosatti#include <signal.h> 3932dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3933dcc38d1cSMarcelo TosattiEOF 3934dcc38d1cSMarcelo Tosatti 3935dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 3936dcc38d1cSMarcelo Tosatti signalfd=yes 3937dcc38d1cSMarcelo Tosattifi 3938dcc38d1cSMarcelo Tosatti 3939c2882b96SRiku Voipio# check if eventfd is supported 3940c2882b96SRiku Voipioeventfd=no 3941c2882b96SRiku Voipiocat > $TMPC << EOF 3942c2882b96SRiku Voipio#include <sys/eventfd.h> 3943c2882b96SRiku Voipio 3944c2882b96SRiku Voipioint main(void) 3945c2882b96SRiku Voipio{ 394655cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3947c2882b96SRiku Voipio} 3948c2882b96SRiku VoipioEOF 3949c2882b96SRiku Voipioif compile_prog "" "" ; then 3950c2882b96SRiku Voipio eventfd=yes 3951c2882b96SRiku Voipiofi 3952c2882b96SRiku Voipio 3953751bcc39SMarc-André Lureau# check if memfd is supported 3954751bcc39SMarc-André Lureaumemfd=no 3955751bcc39SMarc-André Lureaucat > $TMPC << EOF 395675e5b70eSPaolo Bonzini#include <sys/mman.h> 3957751bcc39SMarc-André Lureau 3958751bcc39SMarc-André Lureauint main(void) 3959751bcc39SMarc-André Lureau{ 3960751bcc39SMarc-André Lureau return memfd_create("foo", MFD_ALLOW_SEALING); 3961751bcc39SMarc-André Lureau} 3962751bcc39SMarc-André LureauEOF 3963751bcc39SMarc-André Lureauif compile_prog "" "" ; then 3964751bcc39SMarc-André Lureau memfd=yes 3965751bcc39SMarc-André Lureaufi 3966751bcc39SMarc-André Lureau 3967751bcc39SMarc-André Lureau 3968751bcc39SMarc-André Lureau 3969d0927938SUlrich Hecht# check for fallocate 3970d0927938SUlrich Hechtfallocate=no 3971d0927938SUlrich Hechtcat > $TMPC << EOF 3972d0927938SUlrich Hecht#include <fcntl.h> 3973d0927938SUlrich Hecht 3974d0927938SUlrich Hechtint main(void) 3975d0927938SUlrich Hecht{ 3976d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 3977d0927938SUlrich Hecht return 0; 3978d0927938SUlrich Hecht} 3979d0927938SUlrich HechtEOF 39808fb03151SPeter Maydellif compile_prog "" "" ; then 3981d0927938SUlrich Hecht fallocate=yes 3982d0927938SUlrich Hechtfi 3983d0927938SUlrich Hecht 39843d4fa43eSKusanagi Kouichi# check for fallocate hole punching 39853d4fa43eSKusanagi Kouichifallocate_punch_hole=no 39863d4fa43eSKusanagi Kouichicat > $TMPC << EOF 39873d4fa43eSKusanagi Kouichi#include <fcntl.h> 39883d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 39893d4fa43eSKusanagi Kouichi 39903d4fa43eSKusanagi Kouichiint main(void) 39913d4fa43eSKusanagi Kouichi{ 39923d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 39933d4fa43eSKusanagi Kouichi return 0; 39943d4fa43eSKusanagi Kouichi} 39953d4fa43eSKusanagi KouichiEOF 39963d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 39973d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 39983d4fa43eSKusanagi Kouichifi 39993d4fa43eSKusanagi Kouichi 4000b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 4001b953f075SDenis V. Lunevfallocate_zero_range=no 4002b953f075SDenis V. Lunevcat > $TMPC << EOF 4003b953f075SDenis V. Lunev#include <fcntl.h> 4004b953f075SDenis V. Lunev#include <linux/falloc.h> 4005b953f075SDenis V. Lunev 4006b953f075SDenis V. Lunevint main(void) 4007b953f075SDenis V. Lunev{ 4008b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 4009b953f075SDenis V. Lunev return 0; 4010b953f075SDenis V. Lunev} 4011b953f075SDenis V. LunevEOF 4012b953f075SDenis V. Lunevif compile_prog "" "" ; then 4013b953f075SDenis V. Lunev fallocate_zero_range=yes 4014b953f075SDenis V. Lunevfi 4015b953f075SDenis V. Lunev 4016ed911435SKevin Wolf# check for posix_fallocate 4017ed911435SKevin Wolfposix_fallocate=no 4018ed911435SKevin Wolfcat > $TMPC << EOF 4019ed911435SKevin Wolf#include <fcntl.h> 4020ed911435SKevin Wolf 4021ed911435SKevin Wolfint main(void) 4022ed911435SKevin Wolf{ 4023ed911435SKevin Wolf posix_fallocate(0, 0, 0); 4024ed911435SKevin Wolf return 0; 4025ed911435SKevin Wolf} 4026ed911435SKevin WolfEOF 4027ed911435SKevin Wolfif compile_prog "" "" ; then 4028ed911435SKevin Wolf posix_fallocate=yes 4029ed911435SKevin Wolffi 4030ed911435SKevin Wolf 4031c727f47dSPeter Maydell# check for sync_file_range 4032c727f47dSPeter Maydellsync_file_range=no 4033c727f47dSPeter Maydellcat > $TMPC << EOF 4034c727f47dSPeter Maydell#include <fcntl.h> 4035c727f47dSPeter Maydell 4036c727f47dSPeter Maydellint main(void) 4037c727f47dSPeter Maydell{ 4038c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 4039c727f47dSPeter Maydell return 0; 4040c727f47dSPeter Maydell} 4041c727f47dSPeter MaydellEOF 40428fb03151SPeter Maydellif compile_prog "" "" ; then 4043c727f47dSPeter Maydell sync_file_range=yes 4044c727f47dSPeter Maydellfi 4045c727f47dSPeter Maydell 4046dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 4047dace20dcSPeter Maydellfiemap=no 4048dace20dcSPeter Maydellcat > $TMPC << EOF 4049dace20dcSPeter Maydell#include <sys/ioctl.h> 4050dace20dcSPeter Maydell#include <linux/fs.h> 4051dace20dcSPeter Maydell#include <linux/fiemap.h> 4052dace20dcSPeter Maydell 4053dace20dcSPeter Maydellint main(void) 4054dace20dcSPeter Maydell{ 4055dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 4056dace20dcSPeter Maydell return 0; 4057dace20dcSPeter Maydell} 4058dace20dcSPeter MaydellEOF 40598fb03151SPeter Maydellif compile_prog "" "" ; then 4060dace20dcSPeter Maydell fiemap=yes 4061dace20dcSPeter Maydellfi 4062dace20dcSPeter Maydell 4063d0927938SUlrich Hecht# check for dup3 4064d0927938SUlrich Hechtdup3=no 4065d0927938SUlrich Hechtcat > $TMPC << EOF 4066d0927938SUlrich Hecht#include <unistd.h> 4067d0927938SUlrich Hecht 4068d0927938SUlrich Hechtint main(void) 4069d0927938SUlrich Hecht{ 4070d0927938SUlrich Hecht dup3(0, 0, 0); 4071d0927938SUlrich Hecht return 0; 4072d0927938SUlrich Hecht} 4073d0927938SUlrich HechtEOF 407478f5d726SJan Kiszkaif compile_prog "" "" ; then 4075d0927938SUlrich Hecht dup3=yes 4076d0927938SUlrich Hechtfi 4077d0927938SUlrich Hecht 40784e0c6529SAlex Bligh# check for ppoll support 40794e0c6529SAlex Blighppoll=no 40804e0c6529SAlex Blighcat > $TMPC << EOF 40814e0c6529SAlex Bligh#include <poll.h> 40824e0c6529SAlex Bligh 40834e0c6529SAlex Blighint main(void) 40844e0c6529SAlex Bligh{ 40854e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 40864e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 40874e0c6529SAlex Bligh return 0; 40884e0c6529SAlex Bligh} 40894e0c6529SAlex BlighEOF 40904e0c6529SAlex Blighif compile_prog "" "" ; then 40914e0c6529SAlex Bligh ppoll=yes 40924e0c6529SAlex Blighfi 40934e0c6529SAlex Bligh 4094cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 4095cd758dd0SAlex Blighprctl_pr_set_timerslack=no 4096cd758dd0SAlex Blighcat > $TMPC << EOF 4097cd758dd0SAlex Bligh#include <sys/prctl.h> 4098cd758dd0SAlex Bligh 4099cd758dd0SAlex Blighint main(void) 4100cd758dd0SAlex Bligh{ 4101cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 4102cd758dd0SAlex Bligh return 0; 4103cd758dd0SAlex Bligh} 4104cd758dd0SAlex BlighEOF 4105cd758dd0SAlex Blighif compile_prog "" "" ; then 4106cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 4107cd758dd0SAlex Blighfi 4108cd758dd0SAlex Bligh 41093b6edd16SPeter Maydell# check for epoll support 41103b6edd16SPeter Maydellepoll=no 41113b6edd16SPeter Maydellcat > $TMPC << EOF 41123b6edd16SPeter Maydell#include <sys/epoll.h> 41133b6edd16SPeter Maydell 41143b6edd16SPeter Maydellint main(void) 41153b6edd16SPeter Maydell{ 41163b6edd16SPeter Maydell epoll_create(0); 41173b6edd16SPeter Maydell return 0; 41183b6edd16SPeter Maydell} 41193b6edd16SPeter MaydellEOF 41208fb03151SPeter Maydellif compile_prog "" "" ; then 41213b6edd16SPeter Maydell epoll=yes 41223b6edd16SPeter Maydellfi 41233b6edd16SPeter Maydell 4124227f0214SPeter Maydell# epoll_create1 is a later addition 4125227f0214SPeter Maydell# so we must check separately for its presence 41263b6edd16SPeter Maydellepoll_create1=no 41273b6edd16SPeter Maydellcat > $TMPC << EOF 41283b6edd16SPeter Maydell#include <sys/epoll.h> 41293b6edd16SPeter Maydell 41303b6edd16SPeter Maydellint main(void) 41313b6edd16SPeter Maydell{ 413219e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 413319e83f6bSPeter Maydell * a function being called. This is necessary so that on 413419e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 413519e83f6bSPeter Maydell * the library but not declared in the header file we will 413619e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 413719e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 413819e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 413919e83f6bSPeter Maydell */ 4140c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 41413b6edd16SPeter Maydell} 41423b6edd16SPeter MaydellEOF 41438fb03151SPeter Maydellif compile_prog "" "" ; then 41443b6edd16SPeter Maydell epoll_create1=yes 41453b6edd16SPeter Maydellfi 41463b6edd16SPeter Maydell 4147a8fd1abaSPeter Maydell# check for sendfile support 4148a8fd1abaSPeter Maydellsendfile=no 4149a8fd1abaSPeter Maydellcat > $TMPC << EOF 4150a8fd1abaSPeter Maydell#include <sys/sendfile.h> 4151a8fd1abaSPeter Maydell 4152a8fd1abaSPeter Maydellint main(void) 4153a8fd1abaSPeter Maydell{ 4154a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 4155a8fd1abaSPeter Maydell} 4156a8fd1abaSPeter MaydellEOF 4157a8fd1abaSPeter Maydellif compile_prog "" "" ; then 4158a8fd1abaSPeter Maydell sendfile=yes 4159a8fd1abaSPeter Maydellfi 4160a8fd1abaSPeter Maydell 416151834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 416251834341SRiku Voipiotimerfd=no 416351834341SRiku Voipiocat > $TMPC << EOF 416451834341SRiku Voipio#include <sys/timerfd.h> 416551834341SRiku Voipio 416651834341SRiku Voipioint main(void) 416751834341SRiku Voipio{ 416851834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 416951834341SRiku Voipio} 417051834341SRiku VoipioEOF 417151834341SRiku Voipioif compile_prog "" "" ; then 417251834341SRiku Voipio timerfd=yes 417351834341SRiku Voipiofi 417451834341SRiku Voipio 41759af5c906SRiku Voipio# check for setns and unshare support 41769af5c906SRiku Voipiosetns=no 41779af5c906SRiku Voipiocat > $TMPC << EOF 41789af5c906SRiku Voipio#include <sched.h> 41799af5c906SRiku Voipio 41809af5c906SRiku Voipioint main(void) 41819af5c906SRiku Voipio{ 41829af5c906SRiku Voipio int ret; 41839af5c906SRiku Voipio ret = setns(0, 0); 41849af5c906SRiku Voipio ret = unshare(0); 41859af5c906SRiku Voipio return ret; 41869af5c906SRiku Voipio} 41879af5c906SRiku VoipioEOF 41889af5c906SRiku Voipioif compile_prog "" "" ; then 41899af5c906SRiku Voipio setns=yes 41909af5c906SRiku Voipiofi 41919af5c906SRiku Voipio 419238860a03SAleksandar Markovic# clock_adjtime probe 419338860a03SAleksandar Markovicclock_adjtime=no 419438860a03SAleksandar Markoviccat > $TMPC <<EOF 419538860a03SAleksandar Markovic#include <time.h> 419638860a03SAleksandar Markovic 419738860a03SAleksandar Markovicint main(void) 419838860a03SAleksandar Markovic{ 419938860a03SAleksandar Markovic return clock_adjtime(0, 0); 420038860a03SAleksandar Markovic} 420138860a03SAleksandar MarkovicEOF 420238860a03SAleksandar Markovicclock_adjtime=no 420338860a03SAleksandar Markovicif compile_prog "" "" ; then 420438860a03SAleksandar Markovic clock_adjtime=yes 420538860a03SAleksandar Markovicfi 420638860a03SAleksandar Markovic 42075a03cd00SAleksandar Markovic# syncfs probe 42085a03cd00SAleksandar Markovicsyncfs=no 42095a03cd00SAleksandar Markoviccat > $TMPC <<EOF 42105a03cd00SAleksandar Markovic#include <unistd.h> 42115a03cd00SAleksandar Markovic 42125a03cd00SAleksandar Markovicint main(void) 42135a03cd00SAleksandar Markovic{ 42145a03cd00SAleksandar Markovic return syncfs(0); 42155a03cd00SAleksandar Markovic} 42165a03cd00SAleksandar MarkovicEOF 42175a03cd00SAleksandar Markovicsyncfs=no 42185a03cd00SAleksandar Markovicif compile_prog "" "" ; then 42195a03cd00SAleksandar Markovic syncfs=yes 42205a03cd00SAleksandar Markovicfi 42215a03cd00SAleksandar Markovic 4222cc8ae6deSpbrook# Check if tools are available to build documentation. 4223a25dba17SJuan Quintelaif test "$docs" != "no" ; then 422401668d98SStefan Weil if has makeinfo && has pod2man; then 4225a25dba17SJuan Quintela docs=yes 422683a3ab8bSJuan Quintela else 4227a25dba17SJuan Quintela if test "$docs" = "yes" ; then 422821684af0SStewart Smith feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 422983a3ab8bSJuan Quintela fi 4230a25dba17SJuan Quintela docs=no 423183a3ab8bSJuan Quintela fi 4232cc8ae6deSpbrookfi 4233cc8ae6deSpbrook 4234f514f41cSStefan Weil# Search for bswap_32 function 42356ae9a1f4SJuan Quintelabyteswap_h=no 42366ae9a1f4SJuan Quintelacat > $TMPC << EOF 42376ae9a1f4SJuan Quintela#include <byteswap.h> 42386ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 42396ae9a1f4SJuan QuintelaEOF 424052166aa0SJuan Quintelaif compile_prog "" "" ; then 42416ae9a1f4SJuan Quintela byteswap_h=yes 42426ae9a1f4SJuan Quintelafi 42436ae9a1f4SJuan Quintela 424475f13596SStefan Weil# Search for bswap32 function 42456ae9a1f4SJuan Quintelabswap_h=no 42466ae9a1f4SJuan Quintelacat > $TMPC << EOF 42476ae9a1f4SJuan Quintela#include <sys/endian.h> 42486ae9a1f4SJuan Quintela#include <sys/types.h> 42496ae9a1f4SJuan Quintela#include <machine/bswap.h> 42506ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 42516ae9a1f4SJuan QuintelaEOF 425252166aa0SJuan Quintelaif compile_prog "" "" ; then 42536ae9a1f4SJuan Quintela bswap_h=yes 42546ae9a1f4SJuan Quintelafi 42556ae9a1f4SJuan Quintela 4256da93a1fdSaliguori########################################## 4257e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 4258c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 4259e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 42603c33ea96SPaolo Bonzini libiscsi="yes" 4261ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 4262ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 4263c589b249SRonnie Sahlberg else 4264c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 4265e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 4266c589b249SRonnie Sahlberg fi 4267c589b249SRonnie Sahlberg libiscsi="no" 4268c589b249SRonnie Sahlberg fi 4269c589b249SRonnie Sahlbergfi 4270c589b249SRonnie Sahlberg 4271c589b249SRonnie Sahlberg########################################## 42728bacde8dSNatanael Copa# Do we need libm 42738bacde8dSNatanael Copacat > $TMPC << EOF 42748bacde8dSNatanael Copa#include <math.h> 4275f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 42768bacde8dSNatanael CopaEOF 42778bacde8dSNatanael Copaif compile_prog "" "" ; then 42788bacde8dSNatanael Copa : 42798bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 42808bacde8dSNatanael Copa LIBS="-lm $LIBS" 42818bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 42828bacde8dSNatanael Copaelse 428376ad07a4SPeter Maydell error_exit "libm check failed" 42848bacde8dSNatanael Copafi 42858bacde8dSNatanael Copa 42868bacde8dSNatanael Copa########################################## 4287da93a1fdSaliguori# Do we need librt 42888bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 42898bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 42908bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 42918bacde8dSNatanael Copa# function in addition. 4292da93a1fdSaliguoricat > $TMPC <<EOF 4293da93a1fdSaliguori#include <signal.h> 4294da93a1fdSaliguori#include <time.h> 42958bacde8dSNatanael Copaint main(void) { 42968bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 42978bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 42988bacde8dSNatanael Copa} 4299da93a1fdSaliguoriEOF 4300da93a1fdSaliguori 430152166aa0SJuan Quintelaif compile_prog "" "" ; then 430207ffa4bdSJuan Quintela : 43038bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 430418e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 430518e588b1SRick Liu LIBS="$LIBS -lrt" 430618e588b1SRick Liu libs_qga="$libs_qga -lrt" 4307da93a1fdSaliguorifi 4308da93a1fdSaliguori 430931ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 431078723752SPeter Maydell "$haiku" != "yes" ; then 43116362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 43126362a53fSJuan Quintelafi 43136362a53fSJuan Quintela 4314de5071c5SBlue Swirl########################################## 4315cd4ec0b4SGerd Hoffmann# spice probe 4316cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 4317cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 4318cd4ec0b4SGerd Hoffmann#include <spice.h> 4319cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 4320cd4ec0b4SGerd HoffmannEOF 4321710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 4322710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 432365d5d3f9SStefan Weil if $pkg_config --atleast-version=0.12.0 spice-server && \ 432465d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 4325cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 4326cd4ec0b4SGerd Hoffmann spice="yes" 4327cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 4328cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 43292e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 43302e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 4331cd4ec0b4SGerd Hoffmann else 4332cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 43338efc9363SHu Tao feature_not_found "spice" \ 43348efc9363SHu Tao "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 4335cd4ec0b4SGerd Hoffmann fi 4336cd4ec0b4SGerd Hoffmann spice="no" 4337cd4ec0b4SGerd Hoffmann fi 4338cd4ec0b4SGerd Hoffmannfi 4339cd4ec0b4SGerd Hoffmann 43407b02f544SMarc-André Lureau# check for smartcard support 43417b02f544SMarc-André Lureauif test "$smartcard" != "no"; then 43427b02f544SMarc-André Lureau if $pkg_config libcacard; then 43437b02f544SMarc-André Lureau libcacard_cflags=$($pkg_config --cflags libcacard) 43447b02f544SMarc-André Lureau libcacard_libs=$($pkg_config --libs libcacard) 43457b02f544SMarc-André Lureau smartcard="yes" 4346111a38b0SRobert Relyea else 43477b02f544SMarc-André Lureau if test "$smartcard" = "yes"; then 43487b02f544SMarc-André Lureau feature_not_found "smartcard" "Install libcacard devel" 4349111a38b0SRobert Relyea fi 43507b02f544SMarc-André Lureau smartcard="no" 4351111a38b0SRobert Relyea fi 4352111a38b0SRobert Relyeafi 4353111a38b0SRobert Relyea 43542b2325ffSGerd Hoffmann# check for libusb 43552b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 435665d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 43572b2325ffSGerd Hoffmann libusb="yes" 4358ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 4359ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 43602b2325ffSGerd Hoffmann else 43612b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 43628efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 43632b2325ffSGerd Hoffmann fi 43642b2325ffSGerd Hoffmann libusb="no" 43652b2325ffSGerd Hoffmann fi 43662b2325ffSGerd Hoffmannfi 43672b2325ffSGerd Hoffmann 436869354a83SHans de Goede# check for usbredirparser for usb network redirection support 436969354a83SHans de Goedeif test "$usb_redir" != "no" ; then 437065d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 437169354a83SHans de Goede usb_redir="yes" 4372ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 4373ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 437469354a83SHans de Goede else 437569354a83SHans de Goede if test "$usb_redir" = "yes"; then 437621684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 437769354a83SHans de Goede fi 437869354a83SHans de Goede usb_redir="no" 437969354a83SHans de Goede fi 438069354a83SHans de Goedefi 438169354a83SHans de Goede 4382cd4ec0b4SGerd Hoffmann########################################## 4383d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 4384d9840e25STomoki Sekiyama 4385d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 4386d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 4387690604f6SMichael Roth "") vss_win32_include="-isystem $source_path" ;; 4388d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 4389d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 4390690604f6SMichael Roth vss_win32_include="-isystem $source_path/.sdk/vss" 4391d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 4392d9840e25STomoki Sekiyama ;; 4393690604f6SMichael Roth *) vss_win32_include="-isystem $vss_win32_sdk" 4394d9840e25STomoki Sekiyama esac 4395d9840e25STomoki Sekiyama cat > $TMPC << EOF 4396d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 4397d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 4398d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 4399d9840e25STomoki SekiyamaEOF 4400d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 4401d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 4402d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 4403315d3184SFam Zheng libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 4404f33ca81fSMichael Roth qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 4405d9840e25STomoki Sekiyama else 4406d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 4407d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 4408d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 4409d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 4410d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 4411d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 4412d9840e25STomoki Sekiyama feature_not_found "VSS support" 4413d9840e25STomoki Sekiyama fi 4414d9840e25STomoki Sekiyama guest_agent_with_vss="no" 4415d9840e25STomoki Sekiyama fi 4416d9840e25STomoki Sekiyamafi 4417d9840e25STomoki Sekiyama 4418d9840e25STomoki Sekiyama########################################## 4419d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 4420d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 4421d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 4422d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 4423d9840e25STomoki Sekiyama 4424d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 4425d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 4426d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 4427d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 4428d9840e25STomoki Sekiyama if test -n "$programfiles"; then 4429d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 4430d9840e25STomoki Sekiyama else 4431d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 4432d9840e25STomoki Sekiyama fi 4433d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 4434d9840e25STomoki Sekiyama win_sdk="" 4435d9840e25STomoki Sekiyama fi 4436d9840e25STomoki Sekiyamafi 4437d9840e25STomoki Sekiyama 4438d9840e25STomoki Sekiyama########################################## 443950cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h 444050cbebb9SMichael Rothif test "$mingw32" = "yes" -a "$guest_agent" != "no"; then 444150cbebb9SMichael Roth cat > $TMPC << EOF 444250cbebb9SMichael Roth#include <windows.h> 444350cbebb9SMichael Roth#include <ntddscsi.h> 444450cbebb9SMichael Rothint main(void) { 444550cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS) 444650cbebb9SMichael Roth#error Missing required ioctl definitions 444750cbebb9SMichael Roth#endif 444850cbebb9SMichael Roth SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 444950cbebb9SMichael Roth return addr.Lun; 445050cbebb9SMichael Roth} 445150cbebb9SMichael RothEOF 445250cbebb9SMichael Roth if compile_prog "" "" ; then 445350cbebb9SMichael Roth guest_agent_ntddscsi=yes 4454c54e1eb4SMichael Roth libs_qga="-lsetupapi $libs_qga" 445550cbebb9SMichael Roth fi 445650cbebb9SMichael Rothfi 445750cbebb9SMichael Roth 445850cbebb9SMichael Roth########################################## 44599d9e1521SGerd Hoffmann# virgl renderer probe 44609d9e1521SGerd Hoffmann 44619d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then 44629d9e1521SGerd Hoffmann cat > $TMPC << EOF 44639d9e1521SGerd Hoffmann#include <virglrenderer.h> 44649d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; } 44659d9e1521SGerd HoffmannEOF 44669d9e1521SGerd Hoffmann virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 44679d9e1521SGerd Hoffmann virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 44689d9e1521SGerd Hoffmann if $pkg_config virglrenderer >/dev/null 2>&1 && \ 44699d9e1521SGerd Hoffmann compile_prog "$virgl_cflags" "$virgl_libs" ; then 44709d9e1521SGerd Hoffmann virglrenderer="yes" 44719d9e1521SGerd Hoffmann else 44729d9e1521SGerd Hoffmann if test "$virglrenderer" = "yes" ; then 44739d9e1521SGerd Hoffmann feature_not_found "virglrenderer" 44749d9e1521SGerd Hoffmann fi 44759d9e1521SGerd Hoffmann virglrenderer="no" 44769d9e1521SGerd Hoffmann fi 44779d9e1521SGerd Hoffmannfi 44789d9e1521SGerd Hoffmann 44799d9e1521SGerd Hoffmann########################################## 44808ca80760SRichard Henderson# capstone 44818ca80760SRichard Henderson 4482e219c499SRichard Hendersoncase "$capstone" in 4483e219c499SRichard Henderson "" | yes) 44848ca80760SRichard Henderson if $pkg_config capstone; then 4485e219c499SRichard Henderson capstone=system 4486e219c499SRichard Henderson elif test -e "${source_path}/.git" ; then 4487e219c499SRichard Henderson capstone=git 4488e219c499SRichard Henderson elif test -e "${source_path}/capstone/Makefile" ; then 4489e219c499SRichard Henderson capstone=internal 4490e219c499SRichard Henderson elif test -z "$capstone" ; then 4491e219c499SRichard Henderson capstone=no 4492e219c499SRichard Henderson else 4493e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel or git submodule" 4494e219c499SRichard Henderson fi 4495e219c499SRichard Henderson ;; 4496e219c499SRichard Henderson 4497e219c499SRichard Henderson system) 4498e219c499SRichard Henderson if ! $pkg_config capstone; then 4499e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel" 4500e219c499SRichard Henderson fi 4501e219c499SRichard Henderson ;; 4502e219c499SRichard Hendersonesac 4503e219c499SRichard Henderson 4504e219c499SRichard Hendersoncase "$capstone" in 4505e219c499SRichard Henderson git | internal) 4506e219c499SRichard Henderson if test "$capstone" = git; then 4507e219c499SRichard Henderson git_submodules="${git_submodules} capstone" 4508e219c499SRichard Henderson fi 4509e219c499SRichard Henderson mkdir -p capstone 4510e219c499SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include" 4511e219c499SRichard Henderson if test "$mingw32" = "yes"; then 4512e219c499SRichard Henderson LIBCAPSTONE=capstone.lib 4513e219c499SRichard Henderson else 4514e219c499SRichard Henderson LIBCAPSTONE=libcapstone.a 4515e219c499SRichard Henderson fi 4516e219c499SRichard Henderson LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS" 4517e219c499SRichard Henderson ;; 4518e219c499SRichard Henderson 4519e219c499SRichard Henderson system) 45208ca80760SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" 45218ca80760SRichard Henderson LIBS="$($pkg_config --libs capstone) $LIBS" 4522e219c499SRichard Henderson ;; 4523e219c499SRichard Henderson 4524e219c499SRichard Henderson no) 4525e219c499SRichard Henderson ;; 4526e219c499SRichard Henderson *) 4527e219c499SRichard Henderson error_exit "Unknown state for capstone: $capstone" 4528e219c499SRichard Henderson ;; 4529e219c499SRichard Hendersonesac 45308ca80760SRichard Henderson 45318ca80760SRichard Henderson########################################## 45325f6b9e8fSBlue Swirl# check if we have fdatasync 45335f6b9e8fSBlue Swirl 45345f6b9e8fSBlue Swirlfdatasync=no 45355f6b9e8fSBlue Swirlcat > $TMPC << EOF 45365f6b9e8fSBlue Swirl#include <unistd.h> 4537d1722a27SAlexandre Raymondint main(void) { 4538d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 4539d1722a27SAlexandre Raymondreturn fdatasync(0); 4540d1722a27SAlexandre Raymond#else 4541e172fe11SStefan Weil#error Not supported 4542d1722a27SAlexandre Raymond#endif 4543d1722a27SAlexandre Raymond} 45445f6b9e8fSBlue SwirlEOF 45455f6b9e8fSBlue Swirlif compile_prog "" "" ; then 45465f6b9e8fSBlue Swirl fdatasync=yes 45475f6b9e8fSBlue Swirlfi 45485f6b9e8fSBlue Swirl 454994a420b1SStefan Hajnoczi########################################## 4550e78815a5SAndreas Färber# check if we have madvise 4551e78815a5SAndreas Färber 4552e78815a5SAndreas Färbermadvise=no 4553e78815a5SAndreas Färbercat > $TMPC << EOF 4554e78815a5SAndreas Färber#include <sys/types.h> 4555e78815a5SAndreas Färber#include <sys/mman.h> 4556832ce9c2SScott Wood#include <stddef.h> 4557e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 4558e78815a5SAndreas FärberEOF 4559e78815a5SAndreas Färberif compile_prog "" "" ; then 4560e78815a5SAndreas Färber madvise=yes 4561e78815a5SAndreas Färberfi 4562e78815a5SAndreas Färber 4563e78815a5SAndreas Färber########################################## 4564e78815a5SAndreas Färber# check if we have posix_madvise 4565e78815a5SAndreas Färber 4566e78815a5SAndreas Färberposix_madvise=no 4567e78815a5SAndreas Färbercat > $TMPC << EOF 4568e78815a5SAndreas Färber#include <sys/mman.h> 4569832ce9c2SScott Wood#include <stddef.h> 4570e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 4571e78815a5SAndreas FärberEOF 4572e78815a5SAndreas Färberif compile_prog "" "" ; then 4573e78815a5SAndreas Färber posix_madvise=yes 4574e78815a5SAndreas Färberfi 4575e78815a5SAndreas Färber 4576e78815a5SAndreas Färber########################################## 45770a852417SPaul Durrant# check if we have posix_syslog 45780a852417SPaul Durrant 45790a852417SPaul Durrantposix_syslog=no 45800a852417SPaul Durrantcat > $TMPC << EOF 45810a852417SPaul Durrant#include <syslog.h> 45820a852417SPaul Durrantint main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; } 45830a852417SPaul DurrantEOF 45840a852417SPaul Durrantif compile_prog "" "" ; then 45850a852417SPaul Durrant posix_syslog=yes 45860a852417SPaul Durrantfi 45870a852417SPaul Durrant 45880a852417SPaul Durrant########################################## 4589401bc051SPeter Maydell# check if we have sem_timedwait 4590401bc051SPeter Maydell 4591401bc051SPeter Maydellsem_timedwait=no 4592401bc051SPeter Maydellcat > $TMPC << EOF 4593401bc051SPeter Maydell#include <semaphore.h> 4594401bc051SPeter Maydellint main(void) { return sem_timedwait(0, 0); } 4595401bc051SPeter MaydellEOF 4596401bc051SPeter Maydellif compile_prog "" "" ; then 4597401bc051SPeter Maydell sem_timedwait=yes 4598401bc051SPeter Maydellfi 4599401bc051SPeter Maydell 4600401bc051SPeter Maydell########################################## 460194a420b1SStefan Hajnoczi# check if trace backend exists 460294a420b1SStefan Hajnoczi 46035b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 460494a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 46055b808275SLluís Vilanova error_exit "invalid trace backends" \ 46065b808275SLluís Vilanova "Please choose supported trace backends." 460794a420b1SStefan Hajnoczifi 460894a420b1SStefan Hajnoczi 46097e24e92aSStefan Hajnoczi########################################## 46107e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 46115b808275SLluís Vilanovaif have_backend "ust"; then 46127e24e92aSStefan Hajnoczi cat > $TMPC << EOF 4613bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 46147e24e92aSStefan Hajnocziint main(void) { return 0; } 46157e24e92aSStefan HajnocziEOF 4616c79ed23dSFrancis Deslauriers if compile_prog "" "-Wl,--no-as-needed -ldl" ; then 4617bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 461889138857SStefan Weil lttng_ust_libs=$($pkg_config --libs lttng-ust) 46197e24e92aSStefan Hajnoczi else 4620c79ed23dSFrancis Deslauriers lttng_ust_libs="-llttng-ust -ldl" 4621bf15f63cSMohamad Gebai fi 4622bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 462389138857SStefan Weil urcu_bp_libs=$($pkg_config --libs liburcu-bp) 4624bf15f63cSMohamad Gebai else 4625bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 4626bf15f63cSMohamad Gebai fi 4627bf15f63cSMohamad Gebai 4628bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 4629bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 4630bf15f63cSMohamad Gebai else 4631bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 46327e24e92aSStefan Hajnoczi fi 46337e24e92aSStefan Hajnoczifi 4634b3d08c02SDaniel P. Berrange 4635b3d08c02SDaniel P. Berrange########################################## 4636b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 46375b808275SLluís Vilanovaif have_backend "dtrace"; then 4638b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 463976ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 4640b3d08c02SDaniel P. Berrange fi 4641c276b17dSDaniel P. Berrange trace_backend_stap="no" 4642c276b17dSDaniel P. Berrange if has 'stap' ; then 4643c276b17dSDaniel P. Berrange trace_backend_stap="yes" 4644c276b17dSDaniel P. Berrange fi 4645b3d08c02SDaniel P. Berrangefi 4646b3d08c02SDaniel P. Berrange 46477e24e92aSStefan Hajnoczi########################################## 4648519175a2SAlex Barcelo# check and set a backend for coroutine 4649d0e2fce5SAneesh Kumar K.V 46507c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 465133c53c54SDaniel P. Berrange# is sigcontext. On Windows the only valid backend is the Windows 465233c53c54SDaniel P. Berrange# specific one. 46537c2acc70SPeter Maydell 46547c2acc70SPeter Maydellucontext_works=no 4655d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 4656d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 4657d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 4658cdf84806SPeter Maydell#ifdef __stub_makecontext 4659cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 4660cdf84806SPeter Maydell#endif 466175cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 4662d0e2fce5SAneesh Kumar K.VEOF 4663d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 46647c2acc70SPeter Maydell ucontext_works=yes 4665d0e2fce5SAneesh Kumar K.V fi 4666519175a2SAlex Barcelofi 46677c2acc70SPeter Maydell 46687c2acc70SPeter Maydellif test "$coroutine" = ""; then 46697c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 46707c2acc70SPeter Maydell coroutine=win32 46717c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 46727c2acc70SPeter Maydell coroutine=ucontext 4673519175a2SAlex Barcelo else 46747c2acc70SPeter Maydell coroutine=sigaltstack 46757c2acc70SPeter Maydell fi 46767c2acc70SPeter Maydellelse 46777c2acc70SPeter Maydell case $coroutine in 46787c2acc70SPeter Maydell windows) 46797c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 46807c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 46817c2acc70SPeter Maydell fi 46827c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 46837c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 46847c2acc70SPeter Maydell coroutine=win32 46857c2acc70SPeter Maydell ;; 46867c2acc70SPeter Maydell ucontext) 46877c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 46887c2acc70SPeter Maydell feature_not_found "ucontext" 46897c2acc70SPeter Maydell fi 46907c2acc70SPeter Maydell ;; 469133c53c54SDaniel P. Berrange sigaltstack) 46927c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 46937c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 46947c2acc70SPeter Maydell fi 46957c2acc70SPeter Maydell ;; 46967c2acc70SPeter Maydell *) 469776ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 46987c2acc70SPeter Maydell ;; 46997c2acc70SPeter Maydell esac 4700d0e2fce5SAneesh Kumar K.Vfi 4701d0e2fce5SAneesh Kumar K.V 470270c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 470370c60c08SStefan Hajnoczi coroutine_pool=yes 470470c60c08SStefan Hajnoczifi 470570c60c08SStefan Hajnoczi 47067d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes"; then 47077d992e4dSPeter Lieven if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then 47087d992e4dSPeter Lieven error_exit "stack usage debugging is not supported for $cpu" 47097d992e4dSPeter Lieven fi 47107d992e4dSPeter Lieven if test "$coroutine_pool" = "yes"; then 47117d992e4dSPeter Lieven echo "WARN: disabling coroutine pool for stack usage debugging" 47127d992e4dSPeter Lieven coroutine_pool=no 47137d992e4dSPeter Lieven fi 47147d992e4dSPeter Lievenfi 47157d992e4dSPeter Lieven 47167d992e4dSPeter Lieven 4717d0e2fce5SAneesh Kumar K.V########################################## 4718d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 4719d2042378SAneesh Kumar K.V 47204e1797f9SStefan Weilopen_by_handle_at=no 4721d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 4722d2042378SAneesh Kumar K.V#include <fcntl.h> 4723acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 4724acc55ba8SStefan Weil# error missing definition 4725acc55ba8SStefan Weil#else 472675cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4727acc55ba8SStefan Weil#endif 4728d2042378SAneesh Kumar K.VEOF 4729d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 4730d2042378SAneesh Kumar K.V open_by_handle_at=yes 4731d2042378SAneesh Kumar K.Vfi 4732d2042378SAneesh Kumar K.V 4733e06a765eSHarsh Prateek Bora######################################## 4734e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 4735e06a765eSHarsh Prateek Bora 4736e06a765eSHarsh Prateek Boralinux_magic_h=no 4737e06a765eSHarsh Prateek Boracat > $TMPC << EOF 4738e06a765eSHarsh Prateek Bora#include <linux/magic.h> 4739e06a765eSHarsh Prateek Boraint main(void) { 474075cafad7SStefan Weil return 0; 4741e06a765eSHarsh Prateek Bora} 4742e06a765eSHarsh Prateek BoraEOF 4743e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 4744e06a765eSHarsh Prateek Bora linux_magic_h=yes 4745e06a765eSHarsh Prateek Borafi 4746e06a765eSHarsh Prateek Bora 47478ab1bf12SLuiz Capitulino######################################## 4748c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 4749c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 4750c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 4751c95e3080SKevin Wolf# only a warning. 4752c95e3080SKevin Wolf# 4753c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 4754c95e3080SKevin Wolf# the build doesn't fail anyway. 4755c95e3080SKevin Wolf 475606d71fa1SPeter Maydellpragma_disable_unused_but_set=no 475706d71fa1SPeter Maydellcat > $TMPC << EOF 4758e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 475906d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4760c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4761e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 4762c95e3080SKevin Wolf 476306d71fa1SPeter Maydellint main(void) { 476406d71fa1SPeter Maydell return 0; 476506d71fa1SPeter Maydell} 476606d71fa1SPeter MaydellEOF 476706d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 4768cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 4769c95e3080SKevin Wolfelse 4770c95e3080SKevin Wolf werror=no 477106d71fa1SPeter Maydellfi 477206d71fa1SPeter Maydell 477306d71fa1SPeter Maydell######################################## 4774541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 47753f4349dcSKevin Wolf 47763f4349dcSKevin Wolfvalgrind_h=no 47773f4349dcSKevin Wolfcat > $TMPC << EOF 47783f4349dcSKevin Wolf#include <valgrind/valgrind.h> 47793f4349dcSKevin Wolfint main(void) { 47803f4349dcSKevin Wolf return 0; 47813f4349dcSKevin Wolf} 47823f4349dcSKevin WolfEOF 47833f4349dcSKevin Wolfif compile_prog "" "" ; then 47843f4349dcSKevin Wolf valgrind_h=yes 47853f4349dcSKevin Wolffi 47863f4349dcSKevin Wolf 47873f4349dcSKevin Wolf######################################## 47888ab1bf12SLuiz Capitulino# check if environ is declared 47898ab1bf12SLuiz Capitulino 47908ab1bf12SLuiz Capitulinohas_environ=no 47918ab1bf12SLuiz Capitulinocat > $TMPC << EOF 47928ab1bf12SLuiz Capitulino#include <unistd.h> 47938ab1bf12SLuiz Capitulinoint main(void) { 4794c075a723SBlue Swirl environ = 0; 47958ab1bf12SLuiz Capitulino return 0; 47968ab1bf12SLuiz Capitulino} 47978ab1bf12SLuiz CapitulinoEOF 47988ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 47998ab1bf12SLuiz Capitulino has_environ=yes 48008ab1bf12SLuiz Capitulinofi 48018ab1bf12SLuiz Capitulino 480276a347e1SRichard Henderson######################################## 480376a347e1SRichard Henderson# check if cpuid.h is usable. 480476a347e1SRichard Henderson 480576a347e1SRichard Hendersoncat > $TMPC << EOF 480676a347e1SRichard Henderson#include <cpuid.h> 480776a347e1SRichard Hendersonint main(void) { 4808774d566cSPeter Maydell unsigned a, b, c, d; 4809774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 4810774d566cSPeter Maydell 4811774d566cSPeter Maydell if (max >= 1) { 4812774d566cSPeter Maydell __cpuid(1, a, b, c, d); 4813774d566cSPeter Maydell } 4814774d566cSPeter Maydell 4815774d566cSPeter Maydell if (max >= 7) { 4816774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 4817774d566cSPeter Maydell } 4818774d566cSPeter Maydell 481976a347e1SRichard Henderson return 0; 482076a347e1SRichard Henderson} 482176a347e1SRichard HendersonEOF 482276a347e1SRichard Hendersonif compile_prog "" "" ; then 482376a347e1SRichard Henderson cpuid_h=yes 482476a347e1SRichard Hendersonfi 482576a347e1SRichard Henderson 48265dd89908SRichard Henderson########################################## 48275dd89908SRichard Henderson# avx2 optimization requirement check 48285dd89908SRichard Henderson# 48295dd89908SRichard Henderson# There is no point enabling this if cpuid.h is not usable, 48305dd89908SRichard Henderson# since we won't be able to select the new routines. 48315dd89908SRichard Henderson 48325dd89908SRichard Hendersonif test $cpuid_h = yes; then 48335dd89908SRichard Henderson cat > $TMPC << EOF 48345dd89908SRichard Henderson#pragma GCC push_options 48355dd89908SRichard Henderson#pragma GCC target("avx2") 48365dd89908SRichard Henderson#include <cpuid.h> 48375dd89908SRichard Henderson#include <immintrin.h> 48385dd89908SRichard Hendersonstatic int bar(void *a) { 48395dd89908SRichard Henderson __m256i x = *(__m256i *)a; 48405dd89908SRichard Henderson return _mm256_testz_si256(x, x); 48415dd89908SRichard Henderson} 48425dd89908SRichard Hendersonint main(int argc, char *argv[]) { return bar(argv[0]); } 48435dd89908SRichard HendersonEOF 48445dd89908SRichard Henderson if compile_object "" ; then 48455dd89908SRichard Henderson avx2_opt="yes" 48465dd89908SRichard Henderson fi 48475dd89908SRichard Hendersonfi 48485dd89908SRichard Henderson 4849f540166bSRichard Henderson######################################## 4850f540166bSRichard Henderson# check if __[u]int128_t is usable. 4851f540166bSRichard Henderson 4852f540166bSRichard Hendersonint128=no 4853f540166bSRichard Hendersoncat > $TMPC << EOF 4854a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__) 4855a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4856a00f66abSStefan Weil# error __int128_t does not work in CLANG before 3.2 4857a00f66abSStefan Weil# endif 4858a00f66abSStefan Weil#endif 4859f540166bSRichard Henderson__int128_t a; 4860f540166bSRichard Henderson__uint128_t b; 4861f540166bSRichard Hendersonint main (void) { 4862f540166bSRichard Henderson a = a + b; 4863f540166bSRichard Henderson b = a * b; 4864464e3671SPeter Maydell a = a * a; 4865f540166bSRichard Henderson return 0; 4866f540166bSRichard Henderson} 4867f540166bSRichard HendersonEOF 4868f540166bSRichard Hendersonif compile_prog "" "" ; then 4869f540166bSRichard Henderson int128=yes 4870f540166bSRichard Hendersonfi 487176a347e1SRichard Henderson 48727ebee43eSRichard Henderson######################################### 48737ebee43eSRichard Henderson# See if 128-bit atomic operations are supported. 48747ebee43eSRichard Henderson 48757ebee43eSRichard Hendersonatomic128=no 48767ebee43eSRichard Hendersonif test "$int128" = "yes"; then 48777ebee43eSRichard Henderson cat > $TMPC << EOF 48787ebee43eSRichard Hendersonint main(void) 48797ebee43eSRichard Henderson{ 48807ebee43eSRichard Henderson unsigned __int128 x = 0, y = 0; 48817ebee43eSRichard Henderson y = __atomic_load_16(&x, 0); 48827ebee43eSRichard Henderson __atomic_store_16(&x, y, 0); 48837ebee43eSRichard Henderson __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0); 48847ebee43eSRichard Henderson return 0; 48857ebee43eSRichard Henderson} 48867ebee43eSRichard HendersonEOF 48877ebee43eSRichard Henderson if compile_prog "" "" ; then 48887ebee43eSRichard Henderson atomic128=yes 48897ebee43eSRichard Henderson fi 48907ebee43eSRichard Hendersonfi 48917ebee43eSRichard Henderson 4892df79b996SRichard Henderson######################################### 4893df79b996SRichard Henderson# See if 64-bit atomic operations are supported. 4894df79b996SRichard Henderson# Note that without __atomic builtins, we can only 4895df79b996SRichard Henderson# assume atomic loads/stores max at pointer size. 4896df79b996SRichard Henderson 4897df79b996SRichard Hendersoncat > $TMPC << EOF 4898df79b996SRichard Henderson#include <stdint.h> 4899df79b996SRichard Hendersonint main(void) 4900df79b996SRichard Henderson{ 4901df79b996SRichard Henderson uint64_t x = 0, y = 0; 4902df79b996SRichard Henderson#ifdef __ATOMIC_RELAXED 4903df79b996SRichard Henderson y = __atomic_load_8(&x, 0); 4904df79b996SRichard Henderson __atomic_store_8(&x, y, 0); 4905df79b996SRichard Henderson __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); 4906df79b996SRichard Henderson __atomic_exchange_8(&x, y, 0); 4907df79b996SRichard Henderson __atomic_fetch_add_8(&x, y, 0); 4908df79b996SRichard Henderson#else 4909df79b996SRichard Henderson typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; 4910df79b996SRichard Henderson __sync_lock_test_and_set(&x, y); 4911df79b996SRichard Henderson __sync_val_compare_and_swap(&x, y, 0); 4912df79b996SRichard Henderson __sync_fetch_and_add(&x, y); 4913df79b996SRichard Henderson#endif 4914df79b996SRichard Henderson return 0; 4915df79b996SRichard Henderson} 4916df79b996SRichard HendersonEOF 4917df79b996SRichard Hendersonif compile_prog "" "" ; then 4918df79b996SRichard Henderson atomic64=yes 4919df79b996SRichard Hendersonfi 4920df79b996SRichard Henderson 49211e6e9acaSRichard Henderson######################################## 49221e6e9acaSRichard Henderson# check if getauxval is available. 49231e6e9acaSRichard Henderson 49241e6e9acaSRichard Hendersongetauxval=no 49251e6e9acaSRichard Hendersoncat > $TMPC << EOF 49261e6e9acaSRichard Henderson#include <sys/auxv.h> 49271e6e9acaSRichard Hendersonint main(void) { 49281e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 49291e6e9acaSRichard Henderson} 49301e6e9acaSRichard HendersonEOF 49311e6e9acaSRichard Hendersonif compile_prog "" "" ; then 49321e6e9acaSRichard Henderson getauxval=yes 49331e6e9acaSRichard Hendersonfi 49341e6e9acaSRichard Henderson 4935fd0e6053SJohn Snow######################################## 4936fd0e6053SJohn Snow# check if ccache is interfering with 4937fd0e6053SJohn Snow# semantic analysis of macros 4938fd0e6053SJohn Snow 49395e4dfd3dSJohn Snowunset CCACHE_CPP2 4940fd0e6053SJohn Snowccache_cpp2=no 4941fd0e6053SJohn Snowcat > $TMPC << EOF 4942fd0e6053SJohn Snowstatic const int Z = 1; 4943fd0e6053SJohn Snow#define fn() ({ Z; }) 4944fd0e6053SJohn Snow#define TAUT(X) ((X) == Z) 4945fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y) 4946fd0e6053SJohn Snow#define ID(X) (X) 4947fd0e6053SJohn Snowint main(int argc, char *argv[]) 4948fd0e6053SJohn Snow{ 4949fd0e6053SJohn Snow int x = 0, y = 0; 4950fd0e6053SJohn Snow x = ID(x); 4951fd0e6053SJohn Snow x = fn(); 4952fd0e6053SJohn Snow fn(); 4953fd0e6053SJohn Snow if (PAREN(x, y)) return 0; 4954fd0e6053SJohn Snow if (TAUT(Z)) return 0; 4955fd0e6053SJohn Snow return 0; 4956fd0e6053SJohn Snow} 4957fd0e6053SJohn SnowEOF 4958fd0e6053SJohn Snow 4959fd0e6053SJohn Snowif ! compile_object "-Werror"; then 4960fd0e6053SJohn Snow ccache_cpp2=yes 4961fd0e6053SJohn Snowfi 4962fd0e6053SJohn Snow 4963b553a042SJohn Snow################################################# 4964b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE. 4965b553a042SJohn Snow 4966b553a042SJohn Snowif test "$fortify_source" != "no"; then 4967b553a042SJohn Snow if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 4968b553a042SJohn Snow fortify_source="no"; 4969e189091fSPeter Maydell elif test -n "$cxx" && has $cxx && 4970cfcc7c14SJohn Snow echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 4971b553a042SJohn Snow fortify_source="no"; 4972b553a042SJohn Snow else 4973b553a042SJohn Snow fortify_source="yes" 4974b553a042SJohn Snow fi 4975b553a042SJohn Snowfi 4976b553a042SJohn Snow 4977d2042378SAneesh Kumar K.V########################################## 4978277abf15SJan Vesely# check if struct fsxattr is available via linux/fs.h 4979277abf15SJan Vesely 4980277abf15SJan Veselyhave_fsxattr=no 4981277abf15SJan Veselycat > $TMPC << EOF 4982277abf15SJan Vesely#include <linux/fs.h> 4983277abf15SJan Veselystruct fsxattr foo; 4984277abf15SJan Veselyint main(void) { 4985277abf15SJan Vesely return 0; 4986277abf15SJan Vesely} 4987277abf15SJan VeselyEOF 4988277abf15SJan Veselyif compile_prog "" "" ; then 4989277abf15SJan Vesely have_fsxattr=yes 4990277abf15SJan Veselyfi 4991277abf15SJan Vesely 4992b66e10e4SPeter Maydell########################################## 4993b66e10e4SPeter Maydell# check if rtnetlink.h exists and is useful 4994575b22b1SLaurent Vivierhave_rtnetlink=no 4995575b22b1SLaurent Viviercat > $TMPC << EOF 4996575b22b1SLaurent Vivier#include <linux/rtnetlink.h> 4997575b22b1SLaurent Vivierint main(void) { 4998575b22b1SLaurent Vivier return IFLA_PROTO_DOWN; 4999575b22b1SLaurent Vivier} 5000575b22b1SLaurent VivierEOF 5001575b22b1SLaurent Vivierif compile_prog "" "" ; then 5002575b22b1SLaurent Vivier have_rtnetlink=yes 5003575b22b1SLaurent Vivierfi 5004575b22b1SLaurent Vivier 50056a02c806SStefan Hajnoczi########################################## 50066a02c806SStefan Hajnoczi# check for usable AF_VSOCK environment 50076a02c806SStefan Hajnoczihave_af_vsock=no 50086a02c806SStefan Hajnoczicat > $TMPC << EOF 50096a02c806SStefan Hajnoczi#include <errno.h> 50106a02c806SStefan Hajnoczi#include <sys/types.h> 50116a02c806SStefan Hajnoczi#include <sys/socket.h> 50126a02c806SStefan Hajnoczi#if !defined(AF_VSOCK) 50136a02c806SStefan Hajnoczi# error missing AF_VSOCK flag 50146a02c806SStefan Hajnoczi#endif 50156a02c806SStefan Hajnoczi#include <linux/vm_sockets.h> 50166a02c806SStefan Hajnocziint main(void) { 50176a02c806SStefan Hajnoczi int sock, ret; 50186a02c806SStefan Hajnoczi struct sockaddr_vm svm; 50196a02c806SStefan Hajnoczi socklen_t len = sizeof(svm); 50206a02c806SStefan Hajnoczi sock = socket(AF_VSOCK, SOCK_STREAM, 0); 50216a02c806SStefan Hajnoczi ret = getpeername(sock, (struct sockaddr *)&svm, &len); 50226a02c806SStefan Hajnoczi if ((ret == -1) && (errno == ENOTCONN)) { 50236a02c806SStefan Hajnoczi return 0; 50246a02c806SStefan Hajnoczi } 50256a02c806SStefan Hajnoczi return -1; 50266a02c806SStefan Hajnoczi} 50276a02c806SStefan HajnocziEOF 50286a02c806SStefan Hajnocziif compile_prog "" "" ; then 50296a02c806SStefan Hajnoczi have_af_vsock=yes 50306a02c806SStefan Hajnoczifi 50316a02c806SStefan Hajnoczi 5032f0d92b56SLongpeng(Mike)########################################## 5033f0d92b56SLongpeng(Mike)# check for usable AF_ALG environment 5034f0d92b56SLongpeng(Mike)hava_afalg=no 5035f0d92b56SLongpeng(Mike)cat > $TMPC << EOF 5036f0d92b56SLongpeng(Mike)#include <errno.h> 5037f0d92b56SLongpeng(Mike)#include <sys/types.h> 5038f0d92b56SLongpeng(Mike)#include <sys/socket.h> 5039f0d92b56SLongpeng(Mike)#include <linux/if_alg.h> 5040f0d92b56SLongpeng(Mike)int main(void) { 5041f0d92b56SLongpeng(Mike) int sock; 5042f0d92b56SLongpeng(Mike) sock = socket(AF_ALG, SOCK_SEQPACKET, 0); 5043f0d92b56SLongpeng(Mike) return sock; 5044f0d92b56SLongpeng(Mike)} 5045f0d92b56SLongpeng(Mike)EOF 5046f0d92b56SLongpeng(Mike)if compile_prog "" "" ; then 5047f0d92b56SLongpeng(Mike) have_afalg=yes 5048f0d92b56SLongpeng(Mike)fi 5049f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" 5050f0d92b56SLongpeng(Mike)then 5051f0d92b56SLongpeng(Mike) if test "$have_afalg" != "yes" 5052f0d92b56SLongpeng(Mike) then 5053f0d92b56SLongpeng(Mike) error_exit "AF_ALG requested but could not be detected" 5054f0d92b56SLongpeng(Mike) fi 5055f0d92b56SLongpeng(Mike)fi 5056f0d92b56SLongpeng(Mike) 5057f0d92b56SLongpeng(Mike) 50586969ec6cSJames Clarke################################################# 50596969ec6cSJames Clarke# Sparc implicitly links with --relax, which is 50606969ec6cSJames Clarke# incompatible with -r, so --no-relax should be 50616969ec6cSJames Clarke# given. It does no harm to give it on other 50626969ec6cSJames Clarke# platforms too. 50636969ec6cSJames Clarke 50646969ec6cSJames Clarke# Note: the prototype is needed since QEMU_CFLAGS 50656969ec6cSJames Clarke# contains -Wmissing-prototypes 50666969ec6cSJames Clarkecat > $TMPC << EOF 50676969ec6cSJames Clarkeextern int foo(void); 50686969ec6cSJames Clarkeint foo(void) { return 0; } 50696969ec6cSJames ClarkeEOF 50706969ec6cSJames Clarkeif ! compile_object ""; then 50716969ec6cSJames Clarke error_exit "Failed to compile object file for LD_REL_FLAGS test" 50726969ec6cSJames Clarkefi 50737ecf44a5SPaolo Bonzinifor i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do 50747ecf44a5SPaolo Bonzini if do_cc -nostdlib $i -o $TMPMO $TMPO; then 50757ecf44a5SPaolo Bonzini LD_REL_FLAGS=$i 50767ecf44a5SPaolo Bonzini break 50777ecf44a5SPaolo Bonzini fi 50787ecf44a5SPaolo Bonzinidone 50797ecf44a5SPaolo Bonziniif test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then 50807ecf44a5SPaolo Bonzini feature_not_found "modules" "Cannot find how to build relocatable objects" 50816969ec6cSJames Clarkefi 50826969ec6cSJames Clarke 5083277abf15SJan Vesely########################################## 50844d04351fSChristopher Covington# check for sysmacros.h 50854d04351fSChristopher Covington 50864d04351fSChristopher Covingtonhave_sysmacros=no 50874d04351fSChristopher Covingtoncat > $TMPC << EOF 50884d04351fSChristopher Covington#include <sys/sysmacros.h> 50894d04351fSChristopher Covingtonint main(void) { 50904d04351fSChristopher Covington return makedev(0, 0); 50914d04351fSChristopher Covington} 50924d04351fSChristopher CovingtonEOF 50934d04351fSChristopher Covingtonif compile_prog "" "" ; then 50944d04351fSChristopher Covington have_sysmacros=yes 50954d04351fSChristopher Covingtonfi 50964d04351fSChristopher Covington 50974d04351fSChristopher Covington########################################## 5098da92c3ffSAshish Mittal# Veritas HyperScale block driver VxHS 5099da92c3ffSAshish Mittal# Check if libvxhs is installed 5100da92c3ffSAshish Mittal 5101da92c3ffSAshish Mittalif test "$vxhs" != "no" ; then 5102da92c3ffSAshish Mittal cat > $TMPC <<EOF 5103da92c3ffSAshish Mittal#include <stdint.h> 5104da92c3ffSAshish Mittal#include <qnio/qnio_api.h> 5105da92c3ffSAshish Mittal 5106da92c3ffSAshish Mittalvoid *vxhs_callback; 5107da92c3ffSAshish Mittal 5108da92c3ffSAshish Mittalint main(void) { 5109da92c3ffSAshish Mittal iio_init(QNIO_VERSION, vxhs_callback); 5110da92c3ffSAshish Mittal return 0; 5111da92c3ffSAshish Mittal} 5112da92c3ffSAshish MittalEOF 5113da92c3ffSAshish Mittal vxhs_libs="-lvxhs -lssl" 5114da92c3ffSAshish Mittal if compile_prog "" "$vxhs_libs" ; then 5115da92c3ffSAshish Mittal vxhs=yes 5116da92c3ffSAshish Mittal else 5117da92c3ffSAshish Mittal if test "$vxhs" = "yes" ; then 5118da92c3ffSAshish Mittal feature_not_found "vxhs block device" "Install libvxhs See github" 5119da92c3ffSAshish Mittal fi 5120da92c3ffSAshish Mittal vxhs=no 5121da92c3ffSAshish Mittal fi 5122da92c3ffSAshish Mittalfi 5123da92c3ffSAshish Mittal 5124da92c3ffSAshish Mittal########################################## 512549e00a18SAndreas Grapentin# check for _Static_assert() 512649e00a18SAndreas Grapentin 512749e00a18SAndreas Grapentinhave_static_assert=no 512849e00a18SAndreas Grapentincat > $TMPC << EOF 512949e00a18SAndreas Grapentin_Static_assert(1, "success"); 513049e00a18SAndreas Grapentinint main(void) { 513149e00a18SAndreas Grapentin return 0; 513249e00a18SAndreas Grapentin} 513349e00a18SAndreas GrapentinEOF 513449e00a18SAndreas Grapentinif compile_prog "" "" ; then 513549e00a18SAndreas Grapentin have_static_assert=yes 513649e00a18SAndreas Grapentinfi 513749e00a18SAndreas Grapentin 513849e00a18SAndreas Grapentin########################################## 5139e674605fSTomáš Golembiovský# check for utmpx.h, it is missing e.g. on OpenBSD 5140e674605fSTomáš Golembiovský 5141e674605fSTomáš Golembiovskýhave_utmpx=no 5142e674605fSTomáš Golembiovskýcat > $TMPC << EOF 5143e674605fSTomáš Golembiovský#include <utmpx.h> 5144e674605fSTomáš Golembiovskýstruct utmpx user_info; 5145e674605fSTomáš Golembiovskýint main(void) { 5146e674605fSTomáš Golembiovský return 0; 5147e674605fSTomáš Golembiovský} 5148e674605fSTomáš GolembiovskýEOF 5149e674605fSTomáš Golembiovskýif compile_prog "" "" ; then 5150e674605fSTomáš Golembiovský have_utmpx=yes 5151e674605fSTomáš Golembiovskýfi 5152e674605fSTomáš Golembiovský 5153e674605fSTomáš Golembiovský########################################## 5154e86ecd4bSJuan Quintela# End of CC checks 5155e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 5156e86ecd4bSJuan Quintela 51571d728c39SBlue Swirlif test "$gcov" = "yes" ; then 51581d728c39SBlue Swirl CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 51591d728c39SBlue Swirl LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 5160b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then 5161e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 5162ce278618SPeter Maydellelif test "$debug" = "no"; then 5163ce278618SPeter Maydell CFLAGS="-O2 $CFLAGS" 5164e86ecd4bSJuan Quintelafi 5165a316e378SJuan Quintela 51666542aa9cSPeter Lieven########################################## 51676542aa9cSPeter Lieven# Do we have libnfs 51686542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 5169b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 51706542aa9cSPeter Lieven libnfs="yes" 51716542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 51726542aa9cSPeter Lieven else 51736542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 51748efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 51756542aa9cSPeter Lieven fi 51766542aa9cSPeter Lieven libnfs="no" 51776542aa9cSPeter Lieven fi 51786542aa9cSPeter Lievenfi 51791d728c39SBlue Swirl 51806ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 51816ca026cbSPeter Maydellif test "$werror" = "yes"; then 51826ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 51836ca026cbSPeter Maydellfi 51846ca026cbSPeter Maydell 5185e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then 5186e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 51871156c669SJuan Quintela LDFLAGS="-Wl,--warn-common $LDFLAGS" 5188e86ecd4bSJuan Quintela fi 5189e86ecd4bSJuan Quintelafi 5190e86ecd4bSJuan Quintela 519194dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 519294dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 519394dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 519494dd53c5SGerd Hoffmannelse 519594dd53c5SGerd Hoffmann POD2MAN="pod2man" 519694dd53c5SGerd Hoffmannfi 519794dd53c5SGerd Hoffmann 5198952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 5199952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 5200952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 5201e9a3591fSChristian Borntraeger if ld_has $flag ; then 5202952afb71SBlue Swirl LDFLAGS="-Wl,$flag $LDFLAGS" 5203952afb71SBlue Swirl fi 5204952afb71SBlue Swirl done 5205952afb71SBlue Swirlfi 5206952afb71SBlue Swirl 520710ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 5208e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 5209528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 5210834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 52115a67135aSbellard 5212e0580342SKamil Rytarowski# We can only support ivshmem if we have eventfd 5213e0580342SKamil Rytarowskiif [ "$eventfd" = "yes" ]; then 5214e0580342SKamil Rytarowski ivshmem=yes 5215e0580342SKamil Rytarowskifi 5216e0580342SKamil Rytarowski 52174b1c11fdSDaniel P. Berrangetools="" 52184b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 5219ca35f780SPaolo Bonzini tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 52204b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 52214b1c11fdSDaniel P. Berrange tools="qemu-nbd\$(EXESUF) $tools" 5222b1449edbSKamil Rytarowski fi 5223b1449edbSKamil Rytarowski if [ "$ivshmem" = "yes" ]; then 5224a75eb03bSDavid Marchand tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" 52254b1c11fdSDaniel P. Berrange fi 52264b1c11fdSDaniel P. Berrangefi 52274b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 5228b855f8d1SPaolo Bonzini if test "$linux" = yes; then 5229b855f8d1SPaolo Bonzini if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then 5230983eef5aSMeador Inge virtfs=yes 523117bff52bSM. Mohan Kumar tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 5232983eef5aSMeador Inge else 5233983eef5aSMeador Inge if test "$virtfs" = yes; then 5234b855f8d1SPaolo Bonzini error_exit "VirtFS requires libcap devel and libattr devel" 5235983eef5aSMeador Inge fi 523617500370SAndreas Färber virtfs=no 5237983eef5aSMeador Inge fi 5238fe8fc5aeSPaolo Bonzini if test "$mpath" != no && test "$mpathpersist" = yes ; then 5239fe8fc5aeSPaolo Bonzini mpath=yes 5240fe8fc5aeSPaolo Bonzini else 5241fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 5242fe8fc5aeSPaolo Bonzini error_exit "Multipath requires libmpathpersist devel" 5243fe8fc5aeSPaolo Bonzini fi 5244fe8fc5aeSPaolo Bonzini mpath=no 5245fe8fc5aeSPaolo Bonzini fi 5246b855f8d1SPaolo Bonzini tools="$tools scsi/qemu-pr-helper\$(EXESUF)" 5247b855f8d1SPaolo Bonzini else 5248b855f8d1SPaolo Bonzini if test "$virtfs" = yes; then 5249b855f8d1SPaolo Bonzini error_exit "VirtFS is supported only on Linux" 5250b855f8d1SPaolo Bonzini fi 5251b855f8d1SPaolo Bonzini virtfs=no 5252fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 5253fe8fc5aeSPaolo Bonzini error_exit "Multipath is supported only on Linux" 5254fe8fc5aeSPaolo Bonzini fi 5255fe8fc5aeSPaolo Bonzini mpath=no 525617bff52bSM. Mohan Kumar fi 52576a021536SGerd Hoffmann if test "$xkbcommon" = "yes"; then 52586a021536SGerd Hoffmann tools="qemu-keymap\$(EXESUF) $tools" 52596a021536SGerd Hoffmann fi 5260ff69fd8cSLaurent Vivierfi 52619d6bc27bSMichael Roth 52629d6bc27bSMichael Roth# Probe for guest agent support/options 52639d6bc27bSMichael Roth 5264e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 5265b39297aeSTomoki Sekiyama if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 5266fafcaf1dSMichael Roth tools="qemu-ga $tools" 5267e8ef31a3SMichael Tokarev guest_agent=yes 5268e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 5269e8ef31a3SMichael Tokarev guest_agent=no 5270e8ef31a3SMichael Tokarev else 5271e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 5272ca35f780SPaolo Bonzini fi 52734b1c11fdSDaniel P. Berrangefi 5274ca35f780SPaolo Bonzini 52759d6bc27bSMichael Roth# Guest agent Window MSI package 52769d6bc27bSMichael Roth 52779d6bc27bSMichael Rothif test "$guest_agent" != yes; then 52789d6bc27bSMichael Roth if test "$guest_agent_msi" = yes; then 52799d6bc27bSMichael Roth error_exit "MSI guest agent package requires guest agent enabled" 52809d6bc27bSMichael Roth fi 52819d6bc27bSMichael Roth guest_agent_msi=no 52829d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then 52839d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 52849d6bc27bSMichael Roth error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 52859d6bc27bSMichael Roth fi 52869d6bc27bSMichael Roth guest_agent_msi=no 52879d6bc27bSMichael Rothelif ! has wixl; then 52889d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 52899d6bc27bSMichael Roth error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 52909d6bc27bSMichael Roth fi 52919d6bc27bSMichael Roth guest_agent_msi=no 52921a34904eSMichael Rothelse 52931a34904eSMichael Roth # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 52941a34904eSMichael Roth # disabled explicitly 52951a34904eSMichael Roth if test "$guest_agent_msi" != "no"; then 52961a34904eSMichael Roth guest_agent_msi=yes 52971a34904eSMichael Roth fi 52989d6bc27bSMichael Rothfi 52999d6bc27bSMichael Roth 53001a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then 53019d6bc27bSMichael Roth if test "$guest_agent_with_vss" = "yes"; then 53029d6bc27bSMichael Roth QEMU_GA_MSI_WITH_VSS="-D InstallVss" 53039d6bc27bSMichael Roth fi 53049d6bc27bSMichael Roth 53059d6bc27bSMichael Roth if test "$QEMU_GA_MANUFACTURER" = ""; then 53069d6bc27bSMichael Roth QEMU_GA_MANUFACTURER=QEMU 53079d6bc27bSMichael Roth fi 53089d6bc27bSMichael Roth 53099d6bc27bSMichael Roth if test "$QEMU_GA_DISTRO" = ""; then 53109d6bc27bSMichael Roth QEMU_GA_DISTRO=Linux 53119d6bc27bSMichael Roth fi 53129d6bc27bSMichael Roth 53139d6bc27bSMichael Roth if test "$QEMU_GA_VERSION" = ""; then 531489138857SStefan Weil QEMU_GA_VERSION=$(cat $source_path/VERSION) 53159d6bc27bSMichael Roth fi 53169d6bc27bSMichael Roth 531789138857SStefan Weil QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin" 53189d6bc27bSMichael Roth 53199d6bc27bSMichael Roth case "$cpu" in 53209d6bc27bSMichael Roth x86_64) 53219d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 53229d6bc27bSMichael Roth ;; 53239d6bc27bSMichael Roth i386) 53249d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-D Arch=32" 53259d6bc27bSMichael Roth ;; 53269d6bc27bSMichael Roth *) 53279d6bc27bSMichael Roth error_exit "CPU $cpu not supported for building installation package" 53289d6bc27bSMichael Roth ;; 53299d6bc27bSMichael Roth esac 53309d6bc27bSMichael Rothfi 53319d6bc27bSMichael Roth 5332ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 5333ca35f780SPaolo Bonziniroms= 5334ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 5335ca35f780SPaolo Bonzini "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 5336ca35f780SPaolo Bonzini "$softmmu" = yes ; then 5337e57218b6SPeter Maydell # Different host OS linkers have different ideas about the name of the ELF 5338c65d5e4eSBrad Smith # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd 5339c65d5e4eSBrad Smith # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe. 5340c65d5e4eSBrad Smith for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do 5341e57218b6SPeter Maydell if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then 5342e57218b6SPeter Maydell ld_i386_emulation="$emu" 5343ca35f780SPaolo Bonzini roms="optionrom" 5344e57218b6SPeter Maydell break 5345e57218b6SPeter Maydell fi 5346e57218b6SPeter Maydell done 5347ca35f780SPaolo Bonzinifi 5348d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 534939ac8455SDavid Gibson roms="$roms spapr-rtas" 535039ac8455SDavid Gibsonfi 5351ca35f780SPaolo Bonzini 53529933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 53539933c305SChristian Borntraeger roms="$roms s390-ccw" 53549933c305SChristian Borntraegerfi 53559933c305SChristian Borntraeger 5356964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary. 535792fe2ba8SPeter Maydellif ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then 5358964c6fa1SRichard Henderson textseg_addr= 5359964c6fa1SRichard Henderson case "$cpu" in 5360479eb121SRichard Henderson arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 5361479eb121SRichard Henderson # ??? Rationale for choosing this address 5362964c6fa1SRichard Henderson textseg_addr=0x60000000 5363964c6fa1SRichard Henderson ;; 5364964c6fa1SRichard Henderson mips) 5365479eb121SRichard Henderson # A 256M aligned address, high in the address space, with enough 5366479eb121SRichard Henderson # room for the code_gen_buffer above it before the stack. 5367479eb121SRichard Henderson textseg_addr=0x60000000 5368964c6fa1SRichard Henderson ;; 5369964c6fa1SRichard Henderson esac 5370964c6fa1SRichard Henderson if [ -n "$textseg_addr" ]; then 5371964c6fa1SRichard Henderson cat > $TMPC <<EOF 5372964c6fa1SRichard Henderson int main(void) { return 0; } 5373964c6fa1SRichard HendersonEOF 5374964c6fa1SRichard Henderson textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 5375964c6fa1SRichard Henderson if ! compile_prog "" "$textseg_ldflags"; then 5376964c6fa1SRichard Henderson # In case ld does not support -Ttext-segment, edit the default linker 5377964c6fa1SRichard Henderson # script via sed to set the .text start addr. This is needed on FreeBSD 5378964c6fa1SRichard Henderson # at least. 537992fe2ba8SPeter Maydell if ! $ld --verbose >/dev/null 2>&1; then 538092fe2ba8SPeter Maydell error_exit \ 538192fe2ba8SPeter Maydell "We need to link the QEMU user mode binaries at a" \ 538292fe2ba8SPeter Maydell "specific text address. Unfortunately your linker" \ 538392fe2ba8SPeter Maydell "doesn't support either the -Ttext-segment option or" \ 538492fe2ba8SPeter Maydell "printing the default linker script with --verbose." \ 538592fe2ba8SPeter Maydell "If you don't want the user mode binaries, pass the" \ 538692fe2ba8SPeter Maydell "--disable-user option to configure." 538792fe2ba8SPeter Maydell fi 538892fe2ba8SPeter Maydell 5389964c6fa1SRichard Henderson $ld --verbose | sed \ 5390964c6fa1SRichard Henderson -e '1,/==================================================/d' \ 5391964c6fa1SRichard Henderson -e '/==================================================/,$d' \ 5392964c6fa1SRichard Henderson -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 5393964c6fa1SRichard Henderson -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 5394964c6fa1SRichard Henderson textseg_ldflags="-Wl,-T../config-host.ld" 5395964c6fa1SRichard Henderson fi 5396964c6fa1SRichard Henderson fi 5397964c6fa1SRichard Hendersonfi 5398964c6fa1SRichard Henderson 539911cde1c8SBruno Dominguez# Check that the C++ compiler exists and works with the C compiler. 540011cde1c8SBruno 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. 540111cde1c8SBruno Dominguezif has $cxx; then 540211cde1c8SBruno Dominguez cat > $TMPC <<EOF 540311cde1c8SBruno Dominguezint c_function(void); 540411cde1c8SBruno Dominguezint main(void) { return c_function(); } 540511cde1c8SBruno DominguezEOF 540611cde1c8SBruno Dominguez 540711cde1c8SBruno Dominguez compile_object 540811cde1c8SBruno Dominguez 540911cde1c8SBruno Dominguez cat > $TMPCXX <<EOF 541011cde1c8SBruno Dominguezextern "C" { 541111cde1c8SBruno Dominguez int c_function(void); 541211cde1c8SBruno Dominguez} 541311cde1c8SBruno Dominguezint c_function(void) { return 42; } 541411cde1c8SBruno DominguezEOF 541511cde1c8SBruno Dominguez 541611cde1c8SBruno Dominguez update_cxxflags 541711cde1c8SBruno Dominguez 541811cde1c8SBruno Dominguez if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then 541911cde1c8SBruno Dominguez # C++ compiler $cxx works ok with C compiler $cc 542011cde1c8SBruno Dominguez : 542111cde1c8SBruno Dominguez else 542211cde1c8SBruno Dominguez echo "C++ compiler $cxx does not work with C compiler $cc" 542311cde1c8SBruno Dominguez echo "Disabling C++ specific optional code" 542411cde1c8SBruno Dominguez cxx= 542511cde1c8SBruno Dominguez fi 542611cde1c8SBruno Dominguezelse 542711cde1c8SBruno Dominguez echo "No C++ compiler available; disabling C++ specific optional code" 542811cde1c8SBruno Dominguez cxx= 542911cde1c8SBruno Dominguezfi 543011cde1c8SBruno Dominguez 543102d34f62SCole Robinsonecho_version() { 543202d34f62SCole Robinson if test "$1" = "yes" ; then 543302d34f62SCole Robinson echo "($2)" 543402d34f62SCole Robinson fi 543502d34f62SCole Robinson} 543602d34f62SCole Robinson 543750e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 543850e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 543950e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 54405ca9388aSGerd Hoffmann 54417d13299dSbellardecho "Install prefix $prefix" 544289138857SStefan Weilecho "BIOS directory $(eval echo $qemu_datadir)" 54433d5eecabSGerd Hoffmannecho "firmware path $(eval echo $firmwarepath)" 544489138857SStefan Weilecho "binary directory $(eval echo $bindir)" 544589138857SStefan Weilecho "library directory $(eval echo $libdir)" 544689138857SStefan Weilecho "module directory $(eval echo $qemu_moddir)" 544789138857SStefan Weilecho "libexec directory $(eval echo $libexecdir)" 544889138857SStefan Weilecho "include directory $(eval echo $includedir)" 544989138857SStefan Weilecho "config directory $(eval echo $sysconfdir)" 545011d9f695Sbellardif test "$mingw32" = "no" ; then 545189138857SStefan Weilecho "local state directory $(eval echo $local_statedir)" 545289138857SStefan Weilecho "Manual directory $(eval echo $mandir)" 545343ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 54545a699bbbSLaszlo Ersekelse 54555a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 5456d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 545711d9f695Sbellardfi 54585a67135aSbellardecho "Source path $source_path" 5459cc84d63aSDaniel P. Berrangeecho "GIT binary $git" 5460aef45d51SDaniel P. Berrangeecho "GIT submodules $git_submodules" 54617d13299dSbellardecho "C compiler $cc" 546283469015Sbellardecho "Host C compiler $host_cc" 546383f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 54643c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 546545d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 54660c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 5467a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 54680c439cbfSJuan Quintelaecho "LDFLAGS $LDFLAGS" 54697d13299dSbellardecho "make $make" 54706a882643Spbrookecho "install $install" 5471c886edfbSBlue Swirlecho "python $python" 5472e2d8830eSBradif test "$slirp" = "yes" ; then 5473e2d8830eSBrad echo "smbd $smbd" 5474e2d8830eSBradfi 547517969268SFam Zhengecho "module support $modules" 5476a98fd896Sbellardecho "host CPU $cpu" 5477de83cd02Sbellardecho "host big endian $bigendian" 547897a847bcSbellardecho "target list $target_list" 54797d13299dSbellardecho "gprof enabled $gprof" 548003b4fe7dSaliguoriecho "sparse enabled $sparse" 54811625af87Saliguoriecho "strip binaries $strip_opt" 548205c2a3e7Sbellardecho "profiler $profiler" 548343ce4dfeSbellardecho "static build $static" 54845b0753e0Sbellardif test "$darwin" = "yes" ; then 54855b0753e0Sbellard echo "Cocoa support $cocoa" 54865b0753e0Sbellardfi 548789138857SStefan Weilecho "SDL support $sdl $(echo_version $sdl $sdlversion)" 548889138857SStefan Weilecho "GTK support $gtk $(echo_version $gtk $gtk_version)" 5489925a0400SGerd Hoffmannecho "GTK GL support $gtk_gl" 549089138857SStefan Weilecho "VTE support $vte $(echo_version $vte $vteversion)" 5491a1c5e949SDaniel P. Berrangeecho "TLS priority $tls_priority" 5492ddbb0d09SDaniel P. Berrangeecho "GNUTLS support $gnutls" 5493b917da4cSDaniel P. Berrangeecho "GNUTLS rnd $gnutls_rnd" 549491bfcdb0SDaniel P. Berrangeecho "libgcrypt $gcrypt" 549537788f25SDaniel P. Berrangeecho "libgcrypt kdf $gcrypt_kdf" 549689138857SStefan Weilecho "nettle $nettle $(echo_version $nettle $nettle_version)" 5497fff2f982SDaniel P. Berrangeecho "nettle kdf $nettle_kdf" 54989a2fd434SDaniel P. Berrangeecho "libtasn1 $tasn1" 54994d3b6f6eSbalrogecho "curses support $curses" 55009d9e1521SGerd Hoffmannecho "virgl support $virglrenderer" 5501769ce76dSAlexander Grafecho "curl support $curl" 550267b915a5Sbellardecho "mingw32 support $mingw32" 55030c58ac1cSmalcecho "Audio drivers $audio_drv_list" 5504b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 5505b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 5506983eef5aSMeador Ingeecho "VirtFS support $virtfs" 5507fe8fc5aeSPaolo Bonziniecho "Multipath support $mpath" 5508821601eaSJes Sorensenecho "VNC support $vnc" 5509821601eaSJes Sorensenif test "$vnc" = "yes" ; then 55102f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 55112f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 5512efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 5513821601eaSJes Sorensenfi 55143142255cSblueswir1if test -n "$sparc_cpu"; then 55153142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 55163142255cSblueswir1fi 5517e37630caSaliguoriecho "xen support $xen" 55183996e85cSPaul Durrantif test "$xen" = "yes" ; then 55193996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 552064a7ad6fSIan Campbell echo "pv dom build $xen_pv_domain_build" 55213996e85cSPaul Durrantfi 55222e4d9fb1Saurel32echo "brlapi support $brlapi" 5523a20a6f46SJuan Quintelaecho "bluez support $bluez" 5524a25dba17SJuan Quintelaecho "Documentation $docs" 552540d6444eSAvi Kivityecho "PIE $pie" 55268a16d273Sthsecho "vde support $vde" 552758952137SVincenzo Maffioneecho "netmap support $netmap" 55285c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 5529758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 553077755340Sthsecho "Install blobs $blobs" 5531b31a0277SJuan Quintelaecho "KVM support $kvm" 5532b0cb0a66SVincent Palatinecho "HAX support $hax" 5533b3f6ea7eSPaolo Bonziniecho "TCG support $tcg" 5534b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes" ; then 5535b3f6ea7eSPaolo Bonzini echo "TCG debug enabled $debug_tcg" 55369195b2c2SStefan Weil echo "TCG interpreter $tcg_interpreter" 5537b3f6ea7eSPaolo Bonzinifi 5538*5a22ab71SYang Zhongecho "malloc trim support $malloc_trim" 5539b3f6ea7eSPaolo Bonziniecho "RDMA support $rdma" 5540f652e6afSaurel32echo "fdt support $fdt" 5541ceb42de8Saliguoriecho "preadv support $preadv" 55425f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 5543e78815a5SAndreas Färberecho "madvise $madvise" 5544e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 554547e98658SCorey Bryantecho "libcap-ng support $cap_ng" 5546d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 55475e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 5548fc0b9b0eSStefan Hajnocziecho "vhost-vsock support $vhost_vsock" 5549e6a74868SMarc-André Lureauecho "vhost-user support $vhost_user" 55505b808275SLluís Vilanovaecho "Trace backends $trace_backends" 5551713572a7SMarc-André Lureauif have_backend "simple"; then 55529410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 5553e00e36fbSStefan Weilfi 555489138857SStefan Weilecho "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)" 5555f27aaf4bSChristian Brunnerecho "rbd support $rbd" 5556dce512deSChristoph Hellwigecho "xfsctl support $xfs" 55577b02f544SMarc-André Lureauecho "smartcard support $smartcard" 55582b2325ffSGerd Hoffmannecho "libusb $libusb" 555969354a83SHans de Goedeecho "usb net redir $usb_redir" 5560da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 5561014cb152SGerd Hoffmannecho "OpenGL dmabufs $opengl_dmabuf" 5562c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 55636542aa9cSPeter Lievenecho "libnfs support $libnfs" 5564d138cee9SMichael Rothecho "build guest agent $guest_agent" 5565d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 556650cbebb9SMichael Rothecho "QGA w32 disk info $guest_agent_ntddscsi" 55674c875d89SMichael Rothecho "QGA MSI support $guest_agent_msi" 5568f794573eSEduardo Otuboecho "seccomp support $seccomp" 55697c2acc70SPeter Maydellecho "coroutine backend $coroutine" 557070c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 55717d992e4dSPeter Lievenecho "debug stack usage $debug_stack_usage" 5572f0d92b56SLongpeng(Mike)echo "crypto afalg $crypto_afalg" 5573eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 55741d728c39SBlue Swirlecho "gcov $gcov_tool" 55751d728c39SBlue Swirlecho "gcov enabled $gcov" 5576ab214c29SStefan Bergerecho "TPM support $tpm" 55770a12ec87SRichard W.M. Jonesecho "libssh2 support $libssh2" 55783b8acc11SPaolo Bonziniecho "TPM passthrough $tpm_passthrough" 5579f4ede81eSAmarnath Valluriecho "TPM emulator $tpm_emulator" 55803556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 5581ed1701c6SDr. David Alan Gilbertecho "Live block migration $live_block_migration" 5582607dacd0Sqiaonuohanecho "lzo support $lzo" 5583607dacd0Sqiaonuohanecho "snappy support $snappy" 55846b383c08SPeter Wuecho "bzip2 support $bzip2" 5585a99d57bbSWanlong Gaoecho "NUMA host support $numa" 55862847b469SFam Zhengecho "tcmalloc support $tcmalloc" 55877b01cb97SAlexandre Derumierecho "jemalloc support $jemalloc" 558899f2dbd3SLiang Liecho "avx2 optimization $avx2_opt" 5589a6b1d4c0SChanglong Xieecho "replication support $replication" 5590da92c3ffSAshish Mittalecho "VxHS block device $vxhs" 55918ca80760SRichard Hendersonecho "capstone $capstone" 559267b915a5Sbellard 55931ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then 559424b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 5595e8cd23deSbellardfi 559697a847bcSbellard 5597898be3e0SPeter Maydellif test "$supported_cpu" = "no"; then 5598898be3e0SPeter Maydell echo 5599898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!" 5600898be3e0SPeter Maydell echo 5601898be3e0SPeter Maydell echo "CPU host architecture $cpu support is not currently maintained." 5602898be3e0SPeter Maydell echo "The QEMU project intends to remove support for this host CPU in" 5603898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 5604898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 5605898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 5606898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 5607898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 5608898be3e0SPeter Maydellfi 5609898be3e0SPeter Maydell 5610898be3e0SPeter Maydellif test "$supported_os" = "no"; then 5611898be3e0SPeter Maydell echo 5612898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!" 5613898be3e0SPeter Maydell echo 5614c50126aaSPeter Maydell echo "Host OS $targetos support is not currently maintained." 5615c50126aaSPeter Maydell echo "The QEMU project intends to remove support for this host OS in" 5616898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 5617898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 5618898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 5619898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 5620898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 5621898be3e0SPeter Maydellfi 5622898be3e0SPeter Maydell 562398ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 562497a847bcSbellard 5625dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 5626dbd99ae3SStefan Weil 562798ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 562898ec69acSJuan Quintelaecho >> $config_host_mak 562998ec69acSJuan Quintela 5630e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 563199d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 563299d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 56333aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 56348bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 56350f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 563699d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 563799d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 563822d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 56399afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 56403d5eecabSGerd Hoffmannecho "qemu_firmwarepath=$firmwarepath" >> $config_host_mak 56419afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 5642e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 56435a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 5644785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 56455a699bbbSLaszlo Ersekfi 5646f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 5647f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 564811cde1c8SBruno Dominguezecho "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak 5649f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 5650834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 5651f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 5652cc84d63aSDaniel P. Berrangeecho "GIT=$git" >> $config_host_mak 5653aef45d51SDaniel P. Berrangeecho "GIT_SUBMODULES=$git_submodules" >> $config_host_mak 5654f62bbee5SDaniel P. Berrangeecho "GIT_UPDATE=$git_update" >> $config_host_mak 5655804edf29SJuan Quintela 565698ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 5657727e5283SPaolo Bonzini 5658f8393946Saurel32if test "$debug_tcg" = "yes" ; then 56592358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 5660f8393946Saurel32fi 56611625af87Saliguoriif test "$strip_opt" = "yes" ; then 566252ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 56631625af87Saliguorifi 56647d13299dSbellardif test "$bigendian" = "yes" ; then 5665e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 566697a847bcSbellardfi 566767b915a5Sbellardif test "$mingw32" = "yes" ; then 566898ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 566989138857SStefan Weil rc_version=$(cat $source_path/VERSION) 56709fe6de94SBlue Swirl version_major=${rc_version%%.*} 56719fe6de94SBlue Swirl rc_version=${rc_version#*.} 56729fe6de94SBlue Swirl version_minor=${rc_version%%.*} 56739fe6de94SBlue Swirl rc_version=${rc_version#*.} 56749fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 56759fe6de94SBlue Swirl version_micro=0 56769fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 56779fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 5678d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 5679d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 5680f33ca81fSMichael Roth echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 5681d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 5682d9840e25STomoki Sekiyama fi 568350cbebb9SMichael Roth if test "$guest_agent_ntddscsi" = "yes" ; then 568450cbebb9SMichael Roth echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak 568550cbebb9SMichael Roth fi 56861a34904eSMichael Roth if test "$guest_agent_msi" = "yes"; then 56879dacf32dSYossi Hindin echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 56889dacf32dSYossi Hindin echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 56899dacf32dSYossi Hindin echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 56909dacf32dSYossi Hindin echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 56919dacf32dSYossi Hindin echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 56929dacf32dSYossi Hindin echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 56939dacf32dSYossi Hindin echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 56949dacf32dSYossi Hindin fi 5695210fa556Spbrookelse 569635f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 5697210fa556Spbrookfi 5698128ab2ffSblueswir1 5699dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 5700dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 5701dffcb71cSMark McLoughlinfi 5702dffcb71cSMark McLoughlin 570383fb7adfSbellardif test "$darwin" = "yes" ; then 570498ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 570583fb7adfSbellardfi 5706b29fe3edSmalc 5707ec530c81Sbellardif test "$solaris" = "yes" ; then 570898ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 5709ec530c81Sbellardfi 5710179cf400SAndreas Färberif test "$haiku" = "yes" ; then 5711179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 5712179cf400SAndreas Färberfi 571397a847bcSbellardif test "$static" = "yes" ; then 571498ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 571597a847bcSbellardfi 57161ba16968SStefan Weilif test "$profiler" = "yes" ; then 57172358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 571805c2a3e7Sbellardfi 5719c20709aaSbellardif test "$slirp" = "yes" ; then 572098ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 5721e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 5722c20709aaSbellardfi 57238a16d273Sthsif test "$vde" = "yes" ; then 572498ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 5725e2ad6f16SFam Zheng echo "VDE_LIBS=$vde_libs" >> $config_host_mak 57268a16d273Sthsfi 572758952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 572858952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 572958952137SVincenzo Maffionefi 5730015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 5731015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 5732015a33bdSGongleifi 573347e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 573447e98658SCorey Bryant echo "CONFIG_LIBCAP=y" >> $config_host_mak 573547e98658SCorey Bryantfi 57362358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 57370c58ac1cSmalcfor drv in $audio_drv_list; do 573889138857SStefan Weil def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]') 573998ec69acSJuan Quintela echo "$def=y" >> $config_host_mak 57400c58ac1cSmalcdone 5741b1149911SFam Zhengecho "ALSA_LIBS=$alsa_libs" >> $config_host_mak 5742b1149911SFam Zhengecho "PULSE_LIBS=$pulse_libs" >> $config_host_mak 5743b1149911SFam Zhengecho "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak 5744b1149911SFam Zhengecho "DSOUND_LIBS=$dsound_libs" >> $config_host_mak 5745b1149911SFam Zhengecho "OSS_LIBS=$oss_libs" >> $config_host_mak 574667f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then 574767f86e8eSJuan Quintela echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 574867f86e8eSJuan Quintelafi 5749d5631638Smalcif test "$audio_win_int" = "yes" ; then 5750d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 5751d5631638Smalcfi 5752b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 5753b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 5754821601eaSJes Sorensenif test "$vnc" = "yes" ; then 5755821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 5756821601eaSJes Sorensenfi 57572f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 575898ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 57592f9606b3Saliguorifi 5760821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 57612f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 57622f6f5c7aSCorentin Charyfi 5763821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 5764efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 5765efe556adSCorentin Charyfi 57666a021536SGerd Hoffmannif test "$xkbcommon" = "yes" ; then 57676a021536SGerd Hoffmann echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak 57686a021536SGerd Hoffmann echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak 57696a021536SGerd Hoffmannfi 577076655d6dSaliguoriif test "$fnmatch" = "yes" ; then 57712358a494SJuan Quintela echo "CONFIG_FNMATCH=y" >> $config_host_mak 577276655d6dSaliguorifi 5773dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 5774dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 5775dce512deSChristoph Hellwigfi 577689138857SStefan Weilqemu_version=$(head $source_path/VERSION) 577798ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 57782358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 577998ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 578098ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak 5781a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 578298ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 5783cc8ae6deSpbrookfi 578417969268SFam Zhengif test "$modules" = "yes"; then 5785e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 5786e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 578789138857SStefan Weil echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak 578817969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 578917969268SFam Zhengfi 57901ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 579198ec69acSJuan Quintela echo "CONFIG_SDL=y" >> $config_host_mak 5792a3f4d63dSCole Robinson echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 57938ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 57948ecc89f6SFam Zheng echo "SDL_LIBS=$sdl_libs" >> $config_host_mak 579549ecc3faSbellardfi 579649ecc3faSbellardif test "$cocoa" = "yes" ; then 579798ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 579849ecc3faSbellardfi 57994d3b6f6eSbalrogif test "$curses" = "yes" ; then 580098ec69acSJuan Quintela echo "CONFIG_CURSES=y" >> $config_host_mak 5801ab4e5602SJan Kiszkafi 5802099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 58032358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 5804099d6b0fSRiku Voipiofi 580540ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 580640ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 580740ff6d7eSKevin Wolffi 58083ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 58092358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 58103ce34dfbSvibisreenivasanfi 5811c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 5812c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 5813c2882b96SRiku Voipiofi 5814751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then 5815751bcc39SMarc-André Lureau echo "CONFIG_MEMFD=y" >> $config_host_mak 5816751bcc39SMarc-André Lureaufi 5817d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 5818d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 5819d0927938SUlrich Hechtfi 58203d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 58213d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 58223d4fa43eSKusanagi Kouichifi 5823b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 5824b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 5825b953f075SDenis V. Lunevfi 5826ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 5827ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 5828ed911435SKevin Wolffi 5829c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 5830c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 5831c727f47dSPeter Maydellfi 5832dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 5833dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 5834dace20dcSPeter Maydellfi 5835d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 5836d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 5837d0927938SUlrich Hechtfi 58384e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 58394e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 58404e0c6529SAlex Blighfi 5841cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 5842cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 5843cd758dd0SAlex Blighfi 58443b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 58453b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 58463b6edd16SPeter Maydellfi 58473b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 58483b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 58493b6edd16SPeter Maydellfi 5850a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 5851a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 5852a8fd1abaSPeter Maydellfi 585351834341SRiku Voipioif test "$timerfd" = "yes" ; then 585451834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 585551834341SRiku Voipiofi 58569af5c906SRiku Voipioif test "$setns" = "yes" ; then 58579af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 58589af5c906SRiku Voipiofi 585938860a03SAleksandar Markovicif test "$clock_adjtime" = "yes" ; then 586038860a03SAleksandar Markovic echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak 586138860a03SAleksandar Markovicfi 58625a03cd00SAleksandar Markovicif test "$syncfs" = "yes" ; then 58635a03cd00SAleksandar Markovic echo "CONFIG_SYNCFS=y" >> $config_host_mak 58645a03cd00SAleksandar Markovicfi 58653b3f24adSaurel32if test "$inotify" = "yes" ; then 58662358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 58673b3f24adSaurel32fi 5868c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 5869c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 5870c05c7a73SRiku Voipiofi 5871401bc051SPeter Maydellif test "$sem_timedwait" = "yes" ; then 5872401bc051SPeter Maydell echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak 5873401bc051SPeter Maydellfi 58746ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 58756ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 58766ae9a1f4SJuan Quintelafi 58776ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 58786ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 58796ae9a1f4SJuan Quintelafi 5880769ce76dSAlexander Grafif test "$curl" = "yes" ; then 5881d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 5882b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 58836ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 5884769ce76dSAlexander Graffi 58852e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 588698ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 58878eca2889SFam Zheng echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak 58882e4d9fb1Saurel32fi 5889fb599c9aSbalrogif test "$bluez" = "yes" ; then 589098ec69acSJuan Quintela echo "CONFIG_BLUEZ=y" >> $config_host_mak 5891ef7635ecSJuan Quintela echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 5892fb599c9aSbalrogfi 5893d46f7c9eSDr. David Alan Gilbertif test "$glib_subprocess" = "yes" ; then 58949d41401bSMichael S. Tsirkin echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 58959d41401bSMichael S. Tsirkinfi 5896a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 5897a4ccabcfSAnthony Liguori echo "CONFIG_GTK=y" >> $config_host_mak 5898a3f4d63dSCole Robinson echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 5899a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 5900014cb152SGerd Hoffmann echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 5901925a0400SGerd Hoffmann if test "$gtk_gl" = "yes" ; then 5902925a0400SGerd Hoffmann echo "CONFIG_GTK_GL=y" >> $config_host_mak 5903925a0400SGerd Hoffmann fi 5904bbbf9bfbSStefan Weilfi 5905a1c5e949SDaniel P. Berrangeecho "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak 5906ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then 5907ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS=y" >> $config_host_mak 5908ddbb0d09SDaniel P. Berrangefi 5909b917da4cSDaniel P. Berrangeif test "$gnutls_rnd" = "yes" ; then 5910b917da4cSDaniel P. Berrange echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak 5911b917da4cSDaniel P. Berrangefi 591291bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then 591391bfcdb0SDaniel P. Berrange echo "CONFIG_GCRYPT=y" >> $config_host_mak 59141f923c70SLongpeng(Mike) if test "$gcrypt_hmac" = "yes" ; then 59151f923c70SLongpeng(Mike) echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak 59161f923c70SLongpeng(Mike) fi 591737788f25SDaniel P. Berrange if test "$gcrypt_kdf" = "yes" ; then 591837788f25SDaniel P. Berrange echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak 591937788f25SDaniel P. Berrange fi 592062893b67SDaniel P. Berrangefi 592191bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then 592291bfcdb0SDaniel P. Berrange echo "CONFIG_NETTLE=y" >> $config_host_mak 5923becaeb72SRadim Krčmář echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 5924fff2f982SDaniel P. Berrange if test "$nettle_kdf" = "yes" ; then 5925fff2f982SDaniel P. Berrange echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak 5926fff2f982SDaniel P. Berrange fi 5927ed754746SDaniel P. Berrangefi 59289a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then 59299a2fd434SDaniel P. Berrange echo "CONFIG_TASN1=y" >> $config_host_mak 59309a2fd434SDaniel P. Berrangefi 5931559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then 5932559607eaSDaniel P. Berrange echo "HAVE_IFADDRS_H=y" >> $config_host_mak 5933559607eaSDaniel P. Berrangefi 59346b39b063SEric Blakeif test "$have_broken_size_max" = "yes" ; then 59356b39b063SEric Blake echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak 59366b39b063SEric Blakefi 5937277abf15SJan Vesely 5938277abf15SJan Vesely# Work around a system header bug with some kernel/XFS header 5939277abf15SJan Vesely# versions where they both try to define 'struct fsxattr': 5940277abf15SJan Vesely# xfs headers will not try to redefine structs from linux headers 5941277abf15SJan Vesely# if this macro is set. 5942277abf15SJan Veselyif test "$have_fsxattr" = "yes" ; then 5943277abf15SJan Vesely echo "HAVE_FSXATTR=y" >> $config_host_mak 5944277abf15SJan Veselyfi 5945bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 5946bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 5947a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 5948a4ccabcfSAnthony Liguorifi 59499d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then 59509d9e1521SGerd Hoffmann echo "CONFIG_VIRGL=y" >> $config_host_mak 59519d9e1521SGerd Hoffmann echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 59529d9e1521SGerd Hoffmann echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 59539d9e1521SGerd Hoffmannfi 5954e37630caSaliguoriif test "$xen" = "yes" ; then 59556dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 5956d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 595764a7ad6fSIan Campbell if test "$xen_pv_domain_build" = "yes" ; then 595864a7ad6fSIan Campbell echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak 595964a7ad6fSIan Campbell fi 5960e37630caSaliguorifi 59615c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 59625c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 59635c6c3a6cSChristoph Hellwigfi 5964758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 5965758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 5966758e8e38SVenkateswararao Jujjuri (JV)fi 59674f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 59684f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 59694f26f2b6SAvi Kivityfi 5970983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 5971758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 5972758e8e38SVenkateswararao Jujjuri (JV)fi 5973fe8fc5aeSPaolo Bonziniif test "$mpath" = "yes" ; then 5974fe8fc5aeSPaolo Bonzini echo "CONFIG_MPATH=y" >> $config_host_mak 5975fe8fc5aeSPaolo Bonzinifi 59765e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 59775e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 59785e9be92dSNicholas Bellingerfi 5979e6a74868SMarc-André Lureauif test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then 598003ce5744SNikolay Nikolaev echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 598103ce5744SNikolay Nikolaevfi 5982fc0b9b0eSStefan Hajnocziif test "$vhost_vsock" = "yes" ; then 5983fc0b9b0eSStefan Hajnoczi echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak 5984fc0b9b0eSStefan Hajnoczifi 5985e6a74868SMarc-André Lureauif test "$vhost_user" = "yes" ; then 5986e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER=y" >> $config_host_mak 5987e6a74868SMarc-André Lureaufi 598877755340Sthsif test "$blobs" = "yes" ; then 598998ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 599077755340Sthsfi 5991bf9298b9Saliguoriif test "$iovec" = "yes" ; then 59922358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 5993bf9298b9Saliguorifi 5994ceb42de8Saliguoriif test "$preadv" = "yes" ; then 59952358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 5996ceb42de8Saliguorifi 5997f652e6afSaurel32if test "$fdt" = "yes" ; then 59983f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 5999f652e6afSaurel32fi 6000dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 6001dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 6002dcc38d1cSMarcelo Tosattifi 6003b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes"; then 6004b3f6ea7eSPaolo Bonzini echo "CONFIG_TCG=y" >> $config_host_mak 60059195b2c2SStefan Weil if test "$tcg_interpreter" = "yes" ; then 60069195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 60079195b2c2SStefan Weil fi 6008b3f6ea7eSPaolo Bonzinifi 60095f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 60105f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 60115f6b9e8fSBlue Swirlfi 6012e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 6013e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 6014e78815a5SAndreas Färberfi 6015e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 6016e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 6017e78815a5SAndreas Färberfi 601897a847bcSbellard 6019cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 6020cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 6021cd4ec0b4SGerd Hoffmannfi 6022cd4ec0b4SGerd Hoffmann 60237b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then 60247b02f544SMarc-André Lureau echo "CONFIG_SMARTCARD=y" >> $config_host_mak 60257b62bf5aSFam Zheng echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak 60267b62bf5aSFam Zheng echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak 6027111a38b0SRobert Relyeafi 6028111a38b0SRobert Relyea 60292b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 60302b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 6031b878b652SFam Zheng echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak 6032b878b652SFam Zheng echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak 60332b2325ffSGerd Hoffmannfi 60342b2325ffSGerd Hoffmann 603569354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 603669354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 6037cc7923fcSFam Zheng echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak 6038cc7923fcSFam Zheng echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak 603969354a83SHans de Goedefi 604069354a83SHans de Goede 6041da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 6042da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 6043da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 6044014cb152SGerd Hoffmann if test "$opengl_dmabuf" = "yes" ; then 6045014cb152SGerd Hoffmann echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 6046014cb152SGerd Hoffmann fi 604720ff075bSMichael Wallefi 604820ff075bSMichael Walle 6049*5a22ab71SYang Zhongif test "$malloc_trim" = "yes" ; then 6050*5a22ab71SYang Zhong echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak 6051*5a22ab71SYang Zhongfi 6052*5a22ab71SYang Zhong 605399f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then 605499f2dbd3SLiang Li echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 605599f2dbd3SLiang Lifi 605699f2dbd3SLiang Li 6057607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 6058607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 6059607dacd0Sqiaonuohanfi 6060607dacd0Sqiaonuohan 6061607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 6062607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 6063607dacd0Sqiaonuohanfi 6064607dacd0Sqiaonuohan 60656b383c08SPeter Wuif test "$bzip2" = "yes" ; then 60666b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 60676b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 60686b383c08SPeter Wufi 60696b383c08SPeter Wu 6070c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 6071d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 60726ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 60736ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 6074c589b249SRonnie Sahlbergfi 6075c589b249SRonnie Sahlberg 60766542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 60774be4879fSColin Lord echo "CONFIG_LIBNFS=m" >> $config_host_mak 60784be4879fSColin Lord echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak 60796542aa9cSPeter Lievenfi 60806542aa9cSPeter Lieven 6081f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 6082f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 6083c3883e1fSFam Zheng echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak 6084c3883e1fSFam Zheng echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak 6085f794573eSEduardo Otubofi 6086f794573eSEduardo Otubo 608783fb7adfSbellard# XXX: suppress that 60887d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 60892358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 60907d3505c5Sbellardfi 60917d3505c5Sbellard 60924d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then 60934d9310f4SDaniel P. Berrange echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 60944d9310f4SDaniel P. Berrangefi 60953556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 60963556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 60973556c233SPaolo Bonzinifi 6098f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 6099d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 61006ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 61016ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 6102f27aaf4bSChristian Brunnerfi 610320ff6c80SAnthony Liguori 61047c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 610570c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 610670c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 610770c60c08SStefan Hajnoczielse 610870c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 610970c60c08SStefan Hajnoczifi 6110d0e2fce5SAneesh Kumar K.V 61117d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes" ; then 61127d992e4dSPeter Lieven echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak 61137d992e4dSPeter Lievenfi 61147d992e4dSPeter Lieven 6115f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" ; then 6116f0d92b56SLongpeng(Mike) echo "CONFIG_AF_ALG=y" >> $config_host_mak 6117f0d92b56SLongpeng(Mike)fi 6118f0d92b56SLongpeng(Mike) 6119d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 6120d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 6121d2042378SAneesh Kumar K.Vfi 6122d2042378SAneesh Kumar K.V 6123e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 6124e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 6125e06a765eSHarsh Prateek Borafi 6126e06a765eSHarsh Prateek Bora 6127cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 6128cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 612906d71fa1SPeter Maydellfi 613006d71fa1SPeter Maydell 61313f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 61323f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 61333f4349dcSKevin Wolffi 61343f4349dcSKevin Wolf 61358ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 61368ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 61378ab1bf12SLuiz Capitulinofi 61388ab1bf12SLuiz Capitulino 613976a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 614076a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 614176a347e1SRichard Hendersonfi 614276a347e1SRichard Henderson 6143f540166bSRichard Hendersonif test "$int128" = "yes" ; then 6144f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 6145f540166bSRichard Hendersonfi 6146f540166bSRichard Henderson 61477ebee43eSRichard Hendersonif test "$atomic128" = "yes" ; then 61487ebee43eSRichard Henderson echo "CONFIG_ATOMIC128=y" >> $config_host_mak 61497ebee43eSRichard Hendersonfi 61507ebee43eSRichard Henderson 6151df79b996SRichard Hendersonif test "$atomic64" = "yes" ; then 6152df79b996SRichard Henderson echo "CONFIG_ATOMIC64=y" >> $config_host_mak 6153df79b996SRichard Hendersonfi 6154df79b996SRichard Henderson 61551e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 61561e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 61571e6e9acaSRichard Hendersonfi 61581e6e9acaSRichard Henderson 6159eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 6160d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 61616ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 61626ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 6163eb100396SBharata B Raofi 6164eb100396SBharata B Rao 6165d85fa9ebSJeff Codyif test "$glusterfs_xlator_opt" = "yes" ; then 6166d85fa9ebSJeff Cody echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak 6167d85fa9ebSJeff Codyfi 6168d85fa9ebSJeff Cody 61690c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 61700c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 61710c14fb47SBharata B Raofi 61720c14fb47SBharata B Rao 6173df3a429aSNiels de Vosif test "$glusterfs_fallocate" = "yes" ; then 6174df3a429aSNiels de Vos echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak 6175df3a429aSNiels de Vosfi 6176df3a429aSNiels de Vos 61777c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 61787c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 61797c815372SBharata B Raofi 61807c815372SBharata B Rao 61810a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then 6182d3399d7cSFam Zheng echo "CONFIG_LIBSSH2=m" >> $config_host_mak 61836ebc91e5SFam Zheng echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 61846ebc91e5SFam Zheng echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 61850a12ec87SRichard W.M. Jonesfi 61860a12ec87SRichard W.M. Jones 6187ed1701c6SDr. David Alan Gilbertif test "$live_block_migration" = "yes" ; then 6188ed1701c6SDr. David Alan Gilbert echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak 6189ed1701c6SDr. David Alan Gilbertfi 6190ed1701c6SDr. David Alan Gilbert 61913b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 61923b8acc11SPaolo Bonzini echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 6193f4ede81eSAmarnath Valluri # TPM passthrough support? 61943b8acc11SPaolo Bonzini if test "$tpm_passthrough" = "yes"; then 61953b8acc11SPaolo Bonzini echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 61963b8acc11SPaolo Bonzini fi 6197f4ede81eSAmarnath Valluri # TPM emulator support? 6198f4ede81eSAmarnath Valluri if test "$tpm_emulator" = "yes"; then 6199f4ede81eSAmarnath Valluri echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak 6200f4ede81eSAmarnath Valluri fi 62013b8acc11SPaolo Bonzinifi 62023b8acc11SPaolo Bonzini 62035b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 62045b808275SLluís Vilanovaif have_backend "nop"; then 62056d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 620622890ab5SPrerna Saxenafi 62075b808275SLluís Vilanovaif have_backend "simple"; then 62086d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 62096d8a764eSLluís # Set the appropriate trace file. 6210953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 62119410b56cSPrerna Saxenafi 6212ed7f5f1dSPaolo Bonziniif have_backend "log"; then 6213ed7f5f1dSPaolo Bonzini echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 62146d8a764eSLluísfi 62155b808275SLluís Vilanovaif have_backend "ust"; then 62166d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 62176d8a764eSLluísfi 62185b808275SLluís Vilanovaif have_backend "dtrace"; then 62196d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 62206d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 62216d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 62226d8a764eSLluís fi 6223c276b17dSDaniel P. Berrangefi 62245b808275SLluís Vilanovaif have_backend "ftrace"; then 6225781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 6226781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 6227781e9545SEiichi Tsukata else 622821684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 6229781e9545SEiichi Tsukata fi 6230781e9545SEiichi Tsukatafi 62310a852417SPaul Durrantif have_backend "syslog"; then 62320a852417SPaul Durrant if test "$posix_syslog" = "yes" ; then 62330a852417SPaul Durrant echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak 62340a852417SPaul Durrant else 62350a852417SPaul Durrant feature_not_found "syslog(trace backend)" "syslog not available" 62360a852417SPaul Durrant fi 62370a852417SPaul Durrantfi 62389410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 62399410b56cSPrerna Saxena 62402da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 62412da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 6242392fb643SFam Zheng echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak 62432da776dbSMichael R. Hinesfi 62442da776dbSMichael R. Hines 6245575b22b1SLaurent Vivierif test "$have_rtnetlink" = "yes" ; then 6246575b22b1SLaurent Vivier echo "CONFIG_RTNETLINK=y" >> $config_host_mak 6247575b22b1SLaurent Vivierfi 6248575b22b1SLaurent Vivier 6249a6b1d4c0SChanglong Xieif test "$replication" = "yes" ; then 6250a6b1d4c0SChanglong Xie echo "CONFIG_REPLICATION=y" >> $config_host_mak 6251a6b1d4c0SChanglong Xiefi 6252a6b1d4c0SChanglong Xie 62536a02c806SStefan Hajnocziif test "$have_af_vsock" = "yes" ; then 62546a02c806SStefan Hajnoczi echo "CONFIG_AF_VSOCK=y" >> $config_host_mak 62556a02c806SStefan Hajnoczifi 62566a02c806SStefan Hajnoczi 62574d04351fSChristopher Covingtonif test "$have_sysmacros" = "yes" ; then 62584d04351fSChristopher Covington echo "CONFIG_SYSMACROS=y" >> $config_host_mak 62594d04351fSChristopher Covingtonfi 62604d04351fSChristopher Covington 626149e00a18SAndreas Grapentinif test "$have_static_assert" = "yes" ; then 626249e00a18SAndreas Grapentin echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak 626349e00a18SAndreas Grapentinfi 626449e00a18SAndreas Grapentin 6265e674605fSTomáš Golembiovskýif test "$have_utmpx" = "yes" ; then 6266e674605fSTomáš Golembiovský echo "HAVE_UTMPX=y" >> $config_host_mak 6267e674605fSTomáš Golembiovskýfi 6268e674605fSTomáš Golembiovský 6269e0580342SKamil Rytarowskiif test "$ivshmem" = "yes" ; then 6270e0580342SKamil Rytarowski echo "CONFIG_IVSHMEM=y" >> $config_host_mak 6271e0580342SKamil Rytarowskifi 6272e219c499SRichard Hendersonif test "$capstone" != "no" ; then 62738ca80760SRichard Henderson echo "CONFIG_CAPSTONE=y" >> $config_host_mak 62748ca80760SRichard Hendersonfi 6275e0580342SKamil Rytarowski 62765c312079SDr. David Alan Gilbert# Hold two types of flag: 62775c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 62785c312079SDr. David Alan Gilbert# a thread we have a handle to 62795c312079SDr. David Alan Gilbert# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 62805c312079SDr. David Alan Gilbert# platform 62815c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then 62825c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 62835c312079SDr. David Alan Gilbert echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 62845c312079SDr. David Alan Gilbertfi 62855c312079SDr. David Alan Gilbert 6286da92c3ffSAshish Mittalif test "$vxhs" = "yes" ; then 6287da92c3ffSAshish Mittal echo "CONFIG_VXHS=y" >> $config_host_mak 6288da92c3ffSAshish Mittal echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak 6289da92c3ffSAshish Mittalfi 6290da92c3ffSAshish Mittal 62915b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 62925b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 62935b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 62945b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 62955b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 62965b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 6297c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 62985b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 629940d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 630040d964b5SRichard Henderson QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 63015b5e3037SPaolo Bonzinielse 63025b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 63035b5e3037SPaolo Bonzinifi 63045b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 63055b5e3037SPaolo Bonzini 630698ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 630798ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 6308804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 6309804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 63101901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 63111901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 63121901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 631321655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 6314c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 6315804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 6316a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 6317a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 6318a31a8642SMichael S. Tsirkinfi 63192b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak 6320804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 632183f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 63223c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 6323804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 632445d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 6325cdbd727cSRichard Hendersonecho "AS=$as" >> $config_host_mak 63265f6f0e27SRichard Hendersonecho "CCAS=$ccas" >> $config_host_mak 63273dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 6328804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 6329804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 63309f81aeb5SAlistair Francisecho "RANLIB=$ranlib" >> $config_host_mak 63314852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 63329fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 6333e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 633446eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 6335a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 633611cde1c8SBruno Dominguezecho "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak 6337f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 6338e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 6339e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 634080fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 63412944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 6342e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 6343e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 6344e39f0062SPaolo Bonzinifi 634542da6041SGerd Hoffmannif test "$cross_prefix" != ""; then 634642da6041SGerd Hoffmann echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 634742da6041SGerd Hoffmannelse 634842da6041SGerd Hoffmann echo "AUTOCONF_HOST := " >> $config_host_mak 634942da6041SGerd Hoffmannfi 6350e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak 635146eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 63526969ec6cSJames Clarkeecho "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak 6353e57218b6SPeter Maydellecho "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak 635473da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 63553e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 6356409437e1SDaniel P. Berrangeecho "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak 6357804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 635817969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 635917969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 6360957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 636190246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 636290246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 636394dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 6364cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 63651d728c39SBlue Swirlif test "$gcov" = "yes" ; then 63661d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 63671d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 63681d728c39SBlue Swirlfi 6369804edf29SJuan Quintela 63706efd7517SPeter Maydell# use included Linux headers 63716efd7517SPeter Maydellif test "$linux" = "yes" ; then 6372a307beb6SAndreas Färber mkdir -p linux-headers 63736efd7517SPeter Maydell case "$cpu" in 6374c72b26ecSRichard Henderson i386|x86_64|x32) 637508312a63SPeter Maydell linux_arch=x86 63766efd7517SPeter Maydell ;; 63776efd7517SPeter Maydell ppcemb|ppc|ppc64) 637808312a63SPeter Maydell linux_arch=powerpc 63796efd7517SPeter Maydell ;; 63806efd7517SPeter Maydell s390x) 638108312a63SPeter Maydell linux_arch=s390 638208312a63SPeter Maydell ;; 63831f080313SClaudio Fontana aarch64) 63841f080313SClaudio Fontana linux_arch=arm64 63851f080313SClaudio Fontana ;; 6386222e7d11SSanjay Lal mips64) 6387222e7d11SSanjay Lal linux_arch=mips 6388222e7d11SSanjay Lal ;; 638908312a63SPeter Maydell *) 639008312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 639108312a63SPeter Maydell linux_arch="$cpu" 63926efd7517SPeter Maydell ;; 63936efd7517SPeter Maydell esac 639408312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 639508312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 639608312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 639708312a63SPeter Maydell fi 63986efd7517SPeter Maydellfi 63996efd7517SPeter Maydell 640097a847bcSbellardfor target in $target_list; do 640197a847bcSbellardtarget_dir="$target" 640225be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 640389138857SStefan Weiltarget_name=$(echo $target | cut -d '-' -f 1) 640497a847bcSbellardtarget_bigendian="no" 64051f3d3c8fSJuan Quintela 6406c1799a84SPaolo Bonzinicase "$target_name" in 64074a09d0bbSRichard Henderson armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 6408ea2d6a39SJuan Quintela target_bigendian=yes 6409ea2d6a39SJuan Quintela ;; 6410ea2d6a39SJuan Quintelaesac 641197a847bcSbellardtarget_softmmu="no" 6412997344f3Sbellardtarget_user_only="no" 6413831b7825Sthstarget_linux_user="no" 641484778508Sblueswir1target_bsd_user="no" 64159e407a85Spbrookcase "$target" in 6416c1799a84SPaolo Bonzini ${target_name}-softmmu) 64179e407a85Spbrook target_softmmu="yes" 64189e407a85Spbrook ;; 6419c1799a84SPaolo Bonzini ${target_name}-linux-user) 64209e407a85Spbrook target_user_only="yes" 64219e407a85Spbrook target_linux_user="yes" 64229e407a85Spbrook ;; 6423c1799a84SPaolo Bonzini ${target_name}-bsd-user) 642484778508Sblueswir1 target_user_only="yes" 642584778508Sblueswir1 target_bsd_user="yes" 642684778508Sblueswir1 ;; 64279e407a85Spbrook *) 642876ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 64299e407a85Spbrook exit 1 64309e407a85Spbrook ;; 64319e407a85Spbrookesac 6432831b7825Sths 643397a847bcSbellardmkdir -p $target_dir 643425be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 643597a847bcSbellard 6436e5fe0c52Spbrookbflt="no" 6437ca759f9eSAlex Bennéemttcg="no" 643889138857SStefan Weilinterp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g") 643956aebc89Spbrookgdb_xml_files="" 64407ba1e619Saliguori 6441c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 64426acff7daSJuan QuintelaTARGET_BASE_ARCH="" 6443e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 6444e73aae67SJuan Quintela 6445c1799a84SPaolo Bonzinicase "$target_name" in 64462408a527Saurel32 i386) 6447b8158192SAbdallah Bouassida gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml" 64482408a527Saurel32 ;; 64492408a527Saurel32 x86_64) 64506acff7daSJuan Quintela TARGET_BASE_ARCH=i386 6451b8158192SAbdallah Bouassida gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml" 64522408a527Saurel32 ;; 64532408a527Saurel32 alpha) 64545ee4f3c2SRichard Henderson mttcg="yes" 64552408a527Saurel32 ;; 64562408a527Saurel32 arm|armeb) 6457b498c8a0SJuan Quintela TARGET_ARCH=arm 6458e5fe0c52Spbrook bflt="yes" 6459ca759f9eSAlex Bennée mttcg="yes" 646056aebc89Spbrook gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 64612408a527Saurel32 ;; 64626a49fa95SAlexander Graf aarch64) 64636a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 64646a49fa95SAlexander Graf bflt="yes" 6465ca759f9eSAlex Bennée mttcg="yes" 64668f95ce2eSPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 64676a49fa95SAlexander Graf ;; 64682408a527Saurel32 cris) 64692408a527Saurel32 ;; 647061766fe9SRichard Henderson hppa) 647161766fe9SRichard Henderson ;; 6472613a22c9SMichael Walle lm32) 6473613a22c9SMichael Walle ;; 64742408a527Saurel32 m68k) 64750938cda5Saurel32 bflt="yes" 64765a4526b2SLaurent Vivier gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml" 64772408a527Saurel32 ;; 6478877fdc12SEdgar E. Iglesias microblaze|microblazeel) 6479877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 648072b675caSEdgar E. Iglesias bflt="yes" 648172b675caSEdgar E. Iglesias ;; 64822408a527Saurel32 mips|mipsel) 6483b498c8a0SJuan Quintela TARGET_ARCH=mips 648425be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 64852408a527Saurel32 ;; 64862408a527Saurel32 mipsn32|mipsn32el) 6487597e2cecSRichard Henderson TARGET_ARCH=mips64 64886acff7daSJuan Quintela TARGET_BASE_ARCH=mips 648925be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 6490597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 64912408a527Saurel32 ;; 64922408a527Saurel32 mips64|mips64el) 6493b498c8a0SJuan Quintela TARGET_ARCH=mips64 64946acff7daSJuan Quintela TARGET_BASE_ARCH=mips 649525be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 64962408a527Saurel32 ;; 6497d15a9c23SAnthony Green moxie) 6498d15a9c23SAnthony Green ;; 6499e671711cSMarek Vasut nios2) 6500e671711cSMarek Vasut ;; 65014a09d0bbSRichard Henderson or1k) 6502e67db06eSJia Liu TARGET_ARCH=openrisc 6503e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 6504e67db06eSJia Liu ;; 65052408a527Saurel32 ppc) 6506c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 65072408a527Saurel32 ;; 65082408a527Saurel32 ppcemb) 65096acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6510e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 6511c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 65122408a527Saurel32 ;; 65132408a527Saurel32 ppc64) 65146acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6515e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 6516f0b0685dSNikunj A Dadhania mttcg=yes 65171438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 65182408a527Saurel32 ;; 65199c35126cSDoug Kwan ppc64le) 65209c35126cSDoug Kwan TARGET_ARCH=ppc64 65219c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 65229c35126cSDoug Kwan TARGET_ABI_DIR=ppc 6523f0b0685dSNikunj A Dadhania mttcg=yes 65241438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 65259c35126cSDoug Kwan ;; 65262408a527Saurel32 ppc64abi32) 6527b498c8a0SJuan Quintela TARGET_ARCH=ppc64 65286acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6529e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 653025be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 65311438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 65322408a527Saurel32 ;; 65332408a527Saurel32 sh4|sh4eb) 6534b498c8a0SJuan Quintela TARGET_ARCH=sh4 65354dbed897Spbrook bflt="yes" 65362408a527Saurel32 ;; 65372408a527Saurel32 sparc) 65382408a527Saurel32 ;; 65392408a527Saurel32 sparc64) 65406acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 65412408a527Saurel32 ;; 65422408a527Saurel32 sparc32plus) 6543b498c8a0SJuan Quintela TARGET_ARCH=sparc64 65446acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 6545e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 654625be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 65472408a527Saurel32 ;; 654824e804ecSAlexander Graf s390x) 654986158a2aSChristian 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" 655024e804ecSAlexander Graf ;; 6551444e06b1SChen Gang tilegx) 6552444e06b1SChen Gang ;; 65535ecaa4edSPeter Crosthwaite tricore) 65545ecaa4edSPeter Crosthwaite ;; 6555d2fbca94SGuan Xuetao unicore32) 6556d2fbca94SGuan Xuetao ;; 6557cfa550c6SMax Filippov xtensa|xtensaeb) 6558cfa550c6SMax Filippov TARGET_ARCH=xtensa 6559cfa550c6SMax Filippov ;; 65602408a527Saurel32 *) 656176ad07a4SPeter Maydell error_exit "Unsupported target CPU" 65622408a527Saurel32 ;; 65632408a527Saurel32esac 65645e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 65655e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 65665e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 65675e8861a0SPaolo Bonzinifi 65685e8861a0SPaolo Bonzini 65695e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 65705e8861a0SPaolo Bonzini 657199afc91dSDaniel P. Berrangeupper() { 657299afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 657399afc91dSDaniel P. Berrange} 657499afc91dSDaniel P. Berrange 657589138857SStefan Weiltarget_arch_name="$(upper $TARGET_ARCH)" 657625be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 6577c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 657825be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 6579e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 6580e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 6581e6e91b9cSJuan Quintelafi 658225be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 6583adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 6584adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 6585adfc3e91SStacey Sonfi 65863b6b7550SPaolo Bonzini 65873b6b7550SPaolo Bonziniif supported_xen_target $target; then 658825be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 6589eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 6590eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 6591eb6fda0fSAnthony PERARD fi 6592432d268cSJun Nakajimafi 65933b6b7550SPaolo Bonziniif supported_kvm_target $target; then 659425be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 65951ba16968SStefan Weil if test "$vhost_net" = "yes" ; then 6596d5970055SMichael S. Tsirkin echo "CONFIG_VHOST_NET=y" >> $config_target_mak 6597e6a74868SMarc-André Lureau if test "$vhost_user" = "yes" ; then 6598e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak 6599e6a74868SMarc-André Lureau fi 6600d5970055SMichael S. Tsirkin fi 6601c59249f9SJuan Quintelafi 66023b6b7550SPaolo Bonziniif supported_hax_target $target; then 6603b0cb0a66SVincent Palatin echo "CONFIG_HAX=y" >> $config_target_mak 6604b0cb0a66SVincent Palatinfi 6605de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 660625be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 660797a847bcSbellardfi 660897a847bcSbellardif test "$target_softmmu" = "yes" ; then 660925be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 6610ca759f9eSAlex Bennée if test "$mttcg" = "yes" ; then 6611ca759f9eSAlex Bennée echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak 6612ca759f9eSAlex Bennée fi 6613de83cd02Sbellardfi 6614997344f3Sbellardif test "$target_user_only" = "yes" ; then 661525be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 6616a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 6617997344f3Sbellardfi 6618831b7825Sthsif test "$target_linux_user" = "yes" ; then 661925be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 6620831b7825Sthsfi 662156aebc89Spbrooklist="" 662256aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 662356aebc89Spbrook for x in $gdb_xml_files; do 662456aebc89Spbrook list="$list $source_path/gdb-xml/$x" 662556aebc89Spbrook done 662625be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 66273d0f1517SJuan Quintelafi 6628de83cd02Sbellard 6629e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 663025be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 6631e5fe0c52Spbrookfi 663284778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 663325be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 663484778508Sblueswir1fi 66355b0753e0Sbellard 66364afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets 6637fa282484SJuan Quintela 66384afddb55SJuan Quintelacflags="" 6639fa282484SJuan Quintelaldflags="" 66409b8e111fSJuan Quintela 6641c765fcacSPeter Crosthwaitedisas_config() { 6642c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> $config_target_mak 6643c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 6644c765fcacSPeter Crosthwaite} 6645c765fcacSPeter Crosthwaite 664664656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 664764656024SJuan Quintela case "$i" in 664864656024SJuan Quintela alpha) 6649c765fcacSPeter Crosthwaite disas_config "ALPHA" 665064656024SJuan Quintela ;; 665182295d8aSRichard Henderson aarch64) 665282295d8aSRichard Henderson if test -n "${cxx}"; then 6653c765fcacSPeter Crosthwaite disas_config "ARM_A64" 665482295d8aSRichard Henderson fi 665582295d8aSRichard Henderson ;; 665664656024SJuan Quintela arm) 6657c765fcacSPeter Crosthwaite disas_config "ARM" 6658999b53ecSClaudio Fontana if test -n "${cxx}"; then 6659c765fcacSPeter Crosthwaite disas_config "ARM_A64" 6660999b53ecSClaudio Fontana fi 666164656024SJuan Quintela ;; 666264656024SJuan Quintela cris) 6663c765fcacSPeter Crosthwaite disas_config "CRIS" 666464656024SJuan Quintela ;; 6665429b31a2SRichard Henderson hppa) 6666429b31a2SRichard Henderson disas_config "HPPA" 6667429b31a2SRichard Henderson ;; 6668c72b26ecSRichard Henderson i386|x86_64|x32) 6669c765fcacSPeter Crosthwaite disas_config "I386" 667064656024SJuan Quintela ;; 667179368f49SMichael Walle lm32) 6672c765fcacSPeter Crosthwaite disas_config "LM32" 667379368f49SMichael Walle ;; 667464656024SJuan Quintela m68k) 6675c765fcacSPeter Crosthwaite disas_config "M68K" 667664656024SJuan Quintela ;; 6677877fdc12SEdgar E. Iglesias microblaze*) 6678c765fcacSPeter Crosthwaite disas_config "MICROBLAZE" 667964656024SJuan Quintela ;; 668064656024SJuan Quintela mips*) 6681c765fcacSPeter Crosthwaite disas_config "MIPS" 668264656024SJuan Quintela ;; 6683d15a9c23SAnthony Green moxie*) 6684c765fcacSPeter Crosthwaite disas_config "MOXIE" 6685d15a9c23SAnthony Green ;; 6686e671711cSMarek Vasut nios2) 6687e671711cSMarek Vasut disas_config "NIOS2" 6688e671711cSMarek Vasut ;; 66894a09d0bbSRichard Henderson or1k) 6690c765fcacSPeter Crosthwaite disas_config "OPENRISC" 6691e67db06eSJia Liu ;; 669264656024SJuan Quintela ppc*) 6693c765fcacSPeter Crosthwaite disas_config "PPC" 669464656024SJuan Quintela ;; 669524e804ecSAlexander Graf s390*) 6696c765fcacSPeter Crosthwaite disas_config "S390" 669764656024SJuan Quintela ;; 669864656024SJuan Quintela sh4) 6699c765fcacSPeter Crosthwaite disas_config "SH4" 670064656024SJuan Quintela ;; 670164656024SJuan Quintela sparc*) 6702c765fcacSPeter Crosthwaite disas_config "SPARC" 670364656024SJuan Quintela ;; 6704cfa550c6SMax Filippov xtensa*) 6705c765fcacSPeter Crosthwaite disas_config "XTENSA" 6706cfa550c6SMax Filippov ;; 670764656024SJuan Quintela esac 670864656024SJuan Quinteladone 67099195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 6710c765fcacSPeter Crosthwaite disas_config "TCI" 67119195b2c2SStefan Weilfi 671264656024SJuan Quintela 67136ee7126fSJuan Quintelacase "$ARCH" in 67146ee7126fSJuan Quintelaalpha) 67156ee7126fSJuan Quintela # Ensure there's only a single GP 67166ee7126fSJuan Quintela cflags="-msmall-data $cflags" 67176ee7126fSJuan Quintela;; 67186ee7126fSJuan Quintelaesac 67196ee7126fSJuan Quintela 6720d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 672125be210fSJuan Quintela echo "TARGET_GPROF=yes" >> $config_target_mak 6722d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 6723d02c1db3SJuan Quintela cflags="-p $cflags" 6724d02c1db3SJuan Quintela ldflags="-p $ldflags" 6725d02c1db3SJuan Quintela fi 6726d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 6727d02c1db3SJuan Quintela ldflags="-p $ldflags" 672825be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 6729d02c1db3SJuan Quintela fi 6730d02c1db3SJuan Quintelafi 6731d02c1db3SJuan Quintela 67329b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 6733964c6fa1SRichard Henderson ldflags="$ldflags $textseg_ldflags" 6734fa282484SJuan Quintelafi 6735fa282484SJuan Quintela 6736e9a3591fSChristian Borntraeger# Newer kernels on s390 check for an S390_PGSTE program header and 6737e9a3591fSChristian Borntraeger# enable the pgste page table extensions in that case. This makes 6738e9a3591fSChristian Borntraeger# the vm.allocate_pgste sysctl unnecessary. We enable this program 6739e9a3591fSChristian Borntraeger# header if 6740e9a3591fSChristian Borntraeger# - we build on s390x 6741e9a3591fSChristian Borntraeger# - we build the system emulation for s390x (qemu-system-s390x) 6742e9a3591fSChristian Borntraeger# - KVM is enabled 6743e9a3591fSChristian Borntraeger# - the linker supports --s390-pgste 6744e9a3591fSChristian Borntraegerif test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then 6745e9a3591fSChristian Borntraeger if ld_has --s390-pgste ; then 6746e9a3591fSChristian Borntraeger ldflags="-Wl,--s390-pgste $ldflags" 6747e9a3591fSChristian Borntraeger fi 6748e9a3591fSChristian Borntraegerfi 6749e9a3591fSChristian Borntraeger 675025be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak 675125be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 6752fa282484SJuan Quintela 675397a847bcSbellarddone # for target in $targets 67547d13299dSbellard 6755a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then 6756a540f158SPeter Crosthwaite echo "config-host.h: subdir-dtc" >> $config_host_mak 6757a540f158SPeter Crosthwaitefi 6758e219c499SRichard Hendersonif [ "$capstone" = "git" -o "$capstone" = "internal" ]; then 6759e219c499SRichard Henderson echo "config-host.h: subdir-capstone" >> $config_host_mak 6760e219c499SRichard Hendersonfi 6761e219c499SRichard Hendersonif test -n "$LIBCAPSTONE"; then 6762e219c499SRichard Henderson echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak 6763e219c499SRichard Hendersonfi 6764a540f158SPeter Crosthwaite 6765a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 6766a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 6767a99d57bbSWanlong Gaofi 6768a99d57bbSWanlong Gao 6769fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then 6770fd0e6053SJohn Snow echo "export CCACHE_CPP2=y" >> $config_host_mak 6771fd0e6053SJohn Snowfi 6772fd0e6053SJohn Snow 6773d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory 6774b1fb9a63SFam ZhengDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm" 6775b855f8d1SPaolo BonziniDIRS="$DIRS docs docs/interop fsdev scsi" 67769933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 67772d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 67782dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated" 6779c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 6780c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 6781aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 6782ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 6783446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile" 67849933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile" 67852d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 67864652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp" 67873a586d2fSStefan HajnocziFILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit 6788753d11f2SRichard Hendersonfor bios_file in \ 6789753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 6790225a9ab8SAlexey Kardashevskiy $source_path/pc-bios/*.lid \ 67915acc2ec0SGerd Hoffmann $source_path/pc-bios/*.aml \ 6792753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 6793753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 6794e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 6795753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 67964e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 6797753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 6798753d11f2SRichard Hendersondo 679989138857SStefan Weil FILES="$FILES pc-bios/$(basename $bios_file)" 68007ea78b74SJan Kiszkadone 680189138857SStefan Weilfor test_file in $(find $source_path/tests/acpi-test-data -type f) 6802c2304b52SMarcel Apfelbaumdo 680389138857SStefan Weil FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')" 6804c2304b52SMarcel Apfelbaumdone 6805d1807a4fSPaolo Bonzinimkdir -p $DIRS 68067d13299dSbellardfor f in $FILES ; do 6807cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 6808f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 6809f9245e10SPeter Maydell fi 68107d13299dSbellarddone 68111ad2134fSPaul Brook 6812c34ebfdcSAnthony Liguori# temporary config to build submodules 68132d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 6814c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 681537116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 6816c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 6817cdbd727cSRichard Henderson echo "AS=$as" >> $config_mak 68185f6f0e27SRichard Henderson echo "CCAS=$ccas" >> $config_mak 6819c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 6820c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 68213dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 6822c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 6823a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 6824c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 68259f81aeb5SAlistair Francis echo "RANLIB=$ranlib" >> $config_mak 6826c34ebfdcSAnthony Liguoridone 6827c34ebfdcSAnthony Liguori 6828fe31017fSMarc-André Lureau# set up tests data directory 6829fe31017fSMarc-André Lureauif [ ! -e tests/data ]; then 6830fe31017fSMarc-André Lureau symlink "$source_path/tests/data" tests/data 6831fe31017fSMarc-André Lureaufi 6832fe31017fSMarc-André Lureau 683376c7560aSMax Reitz# set up qemu-iotests in this build directory 683476c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 683576c7560aSMax Reitziotests_check="tests/qemu-iotests/check" 683676c7560aSMax Reitz 683776c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 683876c7560aSMax Reitzecho >> "$iotests_common_env" 683976c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 684076c7560aSMax Reitz 684176c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then 684276c7560aSMax Reitz symlink "$source_path/$iotests_check" "$iotests_check" 684376c7560aSMax Reitzfi 684476c7560aSMax Reitz 6845dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 6846dc655404SMichael S. Tsirkincat <<EOD >config.status 6847dc655404SMichael S. Tsirkin#!/bin/sh 6848dc655404SMichael S. Tsirkin# Generated by configure. 6849dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 6850dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 6851dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 6852dc655404SMichael S. TsirkinEOD 6853dc655404SMichael S. Tsirkinprintf "exec" >>config.status 6854dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status 6855cf7cc929SDr. David Alan Gilbertecho ' "$@"' >>config.status 6856dc655404SMichael S. Tsirkinchmod +x config.status 6857dc655404SMichael S. Tsirkin 68588cd05ab6SPeter Maydellrm -r "$TMPDIR1" 6859