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 270*f62bbee5SDaniel P. Berrange git_update=yes 27192712822SDaniel P. Berrange git_submodules="ui/keycodemapdb" 27292712822SDaniel P. Berrangeelse 273*f62bbee5SDaniel 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" 429898be3e0SPeter Maydell 430ac0df51dSaliguori# parse CC options first 431ac0df51dSaliguorifor opt do 43289138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 433ac0df51dSaliguori case "$opt" in 434ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 435ac0df51dSaliguori ;; 4363d8df640SPaolo Bonzini --cc=*) CC="$optarg" 437ac0df51dSaliguori ;; 43883f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 43983f73fceSTomoki Sekiyama ;; 440ca4deeb1SPaolo Bonzini --source-path=*) source_path="$optarg" 441ca4deeb1SPaolo Bonzini ;; 4422ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 4432ff6b91eSJuan Quintela ;; 444de385287SAlex Bennée --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 445f9943cd5SGerd Hoffmann EXTRA_CFLAGS="$optarg" 446e2a2ed06SJuan Quintela ;; 44711cde1c8SBruno Dominguez --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg" 44811cde1c8SBruno Dominguez EXTRA_CXXFLAGS="$optarg" 44911cde1c8SBruno Dominguez ;; 450a4969e90SAlex Bennée --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg" 451f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 452e2a2ed06SJuan Quintela ;; 4535bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 4545bc62e01SGerd Hoffmann ;; 4555bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 4565bc62e01SGerd Hoffmann ;; 457ac0df51dSaliguori esac 458ac0df51dSaliguoridone 459ac0df51dSaliguori# OS specific 460ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 46193148aa5SStefan Weil# we can eliminate its usage altogether. 462ac0df51dSaliguori 463e49d021eSPeter Maydell# Preferred compiler: 464e49d021eSPeter Maydell# ${CC} (if set) 465e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 466e49d021eSPeter Maydell# system compiler 467e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 468e49d021eSPeter Maydell cc="$host_cc" 469e49d021eSPeter Maydellelse 470b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 471e49d021eSPeter Maydellfi 472e49d021eSPeter Maydell 47383f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 47483f73fceSTomoki Sekiyama cxx="c++" 47583f73fceSTomoki Sekiyamaelse 47683f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 47783f73fceSTomoki Sekiyamafi 47883f73fceSTomoki Sekiyama 479b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 480cdbd727cSRichard Hendersonas="${AS-${cross_prefix}as}" 4815f6f0e27SRichard Hendersonccas="${CCAS-$cc}" 4823dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 483b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 484b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 4854852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 486b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 487b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 48817884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 48917884d7bSSergei Trofimovichquery_pkg_config() { 49017884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 49117884d7bSSergei Trofimovich} 49217884d7bSSergei Trofimovichpkg_config=query_pkg_config 493b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 49447c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 495ac0df51dSaliguori 49645d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 49745d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 49845d285abSPeter Maydell 499be17dc90SMichael S. Tsirkin# default flags for all hosts 5002d31515bSPeter Maydell# We use -fwrapv to tell the compiler that we require a C dialect where 5012d31515bSPeter Maydell# left shift of signed integers is well defined and has the expected 5022d31515bSPeter Maydell# 2s-complement style results. (Both clang and gcc agree that it 5032d31515bSPeter Maydell# provides these semantics.) 5042d31515bSPeter MaydellQEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS" 505f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 506c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 507be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 508244f1441SYang ZhongQEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/accel/tcg -I\$(SRC_PATH)/include" 5095bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then 5105bc62e01SGerd Hoffmann CFLAGS="-g $CFLAGS" 511be17dc90SMichael S. Tsirkin LDFLAGS="-g $LDFLAGS" 5125bc62e01SGerd Hoffmannfi 513be17dc90SMichael S. Tsirkin 514ca4deeb1SPaolo Bonzini# make source path absolute 51589138857SStefan Weilsource_path=$(cd "$source_path"; pwd) 516ca4deeb1SPaolo Bonzini 517cab00a5aSMichael S. Tsirkin# running configure in the source tree? 518cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 519cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 520cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 521cab00a5aSMichael S. Tsirkinelse 522cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 523cab00a5aSMichael S. Tsirkinfi 524cab00a5aSMichael S. Tsirkin 525ac0df51dSaliguoricheck_define() { 526ac0df51dSaliguoricat > $TMPC <<EOF 527ac0df51dSaliguori#if !defined($1) 528fd786e1aSPeter Maydell#error $1 not defined 529ac0df51dSaliguori#endif 530ac0df51dSaliguoriint main(void) { return 0; } 531ac0df51dSaliguoriEOF 53252166aa0SJuan Quintela compile_object 533ac0df51dSaliguori} 534ac0df51dSaliguori 535307119e7SGerd Hoffmanncheck_include() { 536307119e7SGerd Hoffmanncat > $TMPC <<EOF 537307119e7SGerd Hoffmann#include <$1> 538307119e7SGerd Hoffmannint main(void) { return 0; } 539307119e7SGerd HoffmannEOF 540307119e7SGerd Hoffmann compile_object 541307119e7SGerd Hoffmann} 542307119e7SGerd Hoffmann 54393b25869SJohn Snowwrite_c_skeleton() { 54493b25869SJohn Snow cat > $TMPC <<EOF 54593b25869SJohn Snowint main(void) { return 0; } 54693b25869SJohn SnowEOF 54793b25869SJohn Snow} 54893b25869SJohn Snow 549bbea4050SPeter Maydellif check_define __linux__ ; then 550bbea4050SPeter Maydell targetos="Linux" 551bbea4050SPeter Maydellelif check_define _WIN32 ; then 552bbea4050SPeter Maydell targetos='MINGW32' 553bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 554bbea4050SPeter Maydell targetos='OpenBSD' 555bbea4050SPeter Maydellelif check_define __sun__ ; then 556bbea4050SPeter Maydell targetos='SunOS' 557bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 558bbea4050SPeter Maydell targetos='Haiku' 559951fedfcSPeter Maydellelif check_define __FreeBSD__ ; then 560951fedfcSPeter Maydell targetos='FreeBSD' 561951fedfcSPeter Maydellelif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then 562951fedfcSPeter Maydell targetos='GNU/kFreeBSD' 563951fedfcSPeter Maydellelif check_define __DragonFly__ ; then 564951fedfcSPeter Maydell targetos='DragonFly' 565951fedfcSPeter Maydellelif check_define __NetBSD__; then 566951fedfcSPeter Maydell targetos='NetBSD' 567951fedfcSPeter Maydellelif check_define __APPLE__; then 568951fedfcSPeter Maydell targetos='Darwin' 569bbea4050SPeter Maydellelse 570951fedfcSPeter Maydell # This is a fatal error, but don't report it yet, because we 571951fedfcSPeter Maydell # might be going to just print the --help text, or it might 572951fedfcSPeter Maydell # be the result of a missing compiler. 573951fedfcSPeter Maydell targetos='bogus' 574951fedfcSPeter Maydell bogus_os='yes' 575bbea4050SPeter Maydellfi 576bbea4050SPeter Maydell 577bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 578bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 579bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 580bbea4050SPeter Maydell# the correct CPU with the --cpu option. 581bbea4050SPeter Maydellcase $targetos in 582bbea4050SPeter MaydellDarwin) 583bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 584bbea4050SPeter Maydell # run 64-bit userspace code. 585bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 586bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 587bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 588bbea4050SPeter Maydell cpu="x86_64" 589bbea4050SPeter Maydell fi 590bbea4050SPeter Maydell ;; 591bbea4050SPeter MaydellSunOS) 59289138857SStefan Weil # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo 593bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 594bbea4050SPeter Maydell cpu="x86_64" 595bbea4050SPeter Maydell fi 596bbea4050SPeter Maydellesac 597bbea4050SPeter Maydell 5982ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 5992ff6b91eSJuan Quintela # command line argument 6002ff6b91eSJuan Quintela : 6012ff6b91eSJuan Quintelaelif check_define __i386__ ; then 602ac0df51dSaliguori cpu="i386" 603ac0df51dSaliguorielif check_define __x86_64__ ; then 604c72b26ecSRichard Henderson if check_define __ILP32__ ; then 605c72b26ecSRichard Henderson cpu="x32" 606c72b26ecSRichard Henderson else 607ac0df51dSaliguori cpu="x86_64" 608c72b26ecSRichard Henderson fi 6093aa9bd6cSblueswir1elif check_define __sparc__ ; then 6103aa9bd6cSblueswir1 if check_define __arch64__ ; then 6113aa9bd6cSblueswir1 cpu="sparc64" 6123aa9bd6cSblueswir1 else 6133aa9bd6cSblueswir1 cpu="sparc" 6143aa9bd6cSblueswir1 fi 615fdf7ed96Smalcelif check_define _ARCH_PPC ; then 616fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 617fdf7ed96Smalc cpu="ppc64" 618ac0df51dSaliguori else 619fdf7ed96Smalc cpu="ppc" 620fdf7ed96Smalc fi 621afa05235SAurelien Jarnoelif check_define __mips__ ; then 622afa05235SAurelien Jarno cpu="mips" 623477ba620SAurelien Jarnoelif check_define __ia64__ ; then 624477ba620SAurelien Jarno cpu="ia64" 625d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 626d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 627d66ed0eaSAurelien Jarno cpu="s390x" 628d66ed0eaSAurelien Jarno else 629d66ed0eaSAurelien Jarno cpu="s390" 630d66ed0eaSAurelien Jarno fi 63121d89f84SPeter Maydellelif check_define __arm__ ; then 63221d89f84SPeter Maydell cpu="arm" 6331f080313SClaudio Fontanaelif check_define __aarch64__ ; then 6341f080313SClaudio Fontana cpu="aarch64" 635fdf7ed96Smalcelse 63689138857SStefan Weil cpu=$(uname -m) 637ac0df51dSaliguorifi 638ac0df51dSaliguori 639359bc95dSPeter MaydellARCH= 640359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 641359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 6427d13299dSbellardcase "$cpu" in 6436499fd15SPeter Maydell ppc|ppc64|s390|s390x|sparc64|x32) 644898be3e0SPeter Maydell cpu="$cpu" 645898be3e0SPeter Maydell supported_cpu="yes" 646898be3e0SPeter Maydell ;; 6477d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 64897a847bcSbellard cpu="i386" 649898be3e0SPeter Maydell supported_cpu="yes" 6507d13299dSbellard ;; 651aaa5fa14Saurel32 x86_64|amd64) 652aaa5fa14Saurel32 cpu="x86_64" 653898be3e0SPeter Maydell supported_cpu="yes" 654aaa5fa14Saurel32 ;; 65521d89f84SPeter Maydell armv*b|armv*l|arm) 65621d89f84SPeter Maydell cpu="arm" 657898be3e0SPeter Maydell supported_cpu="yes" 6587d13299dSbellard ;; 6591f080313SClaudio Fontana aarch64) 6601f080313SClaudio Fontana cpu="aarch64" 661898be3e0SPeter Maydell supported_cpu="yes" 6621f080313SClaudio Fontana ;; 663afa05235SAurelien Jarno mips*) 664afa05235SAurelien Jarno cpu="mips" 665898be3e0SPeter Maydell supported_cpu="yes" 666afa05235SAurelien Jarno ;; 6673142255cSblueswir1 sparc|sun4[cdmuv]) 668ae228531Sbellard cpu="sparc" 6696499fd15SPeter Maydell supported_cpu="yes" 670ae228531Sbellard ;; 6717d13299dSbellard *) 672359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 673359bc95dSPeter Maydell ARCH=unknown 6747d13299dSbellard ;; 6757d13299dSbellardesac 676359bc95dSPeter Maydellif test -z "$ARCH"; then 677359bc95dSPeter Maydell ARCH="$cpu" 678359bc95dSPeter Maydellfi 679e2d52ad3SJuan Quintela 6807d13299dSbellard# OS specific 6810dbfc675SJuan Quintela 682adfc3e91SStacey Son# host *BSD for user mode 683adfc3e91SStacey SonHOST_VARIANT_DIR="" 684adfc3e91SStacey Son 6857d13299dSbellardcase $targetos in 68667b915a5SbellardMINGW32*) 68767b915a5Sbellard mingw32="yes" 688b0cb0a66SVincent Palatin hax="yes" 6893cec7cc2SKővágó, Zoltán audio_possible_drivers="dsound sdl" 690307119e7SGerd Hoffmann if check_include dsound.h; then 6913cec7cc2SKővágó, Zoltán audio_drv_list="dsound" 692307119e7SGerd Hoffmann else 693307119e7SGerd Hoffmann audio_drv_list="" 694307119e7SGerd Hoffmann fi 695898be3e0SPeter Maydell supported_os="yes" 69667b915a5Sbellard;; 6975c40d2bdSthsGNU/kFreeBSD) 698a167ba50SAurelien Jarno bsd="yes" 6990c58ac1cSmalc audio_drv_list="oss" 7000bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 7015c40d2bdSths;; 7027d3505c5SbellardFreeBSD) 7037d3505c5Sbellard bsd="yes" 7040db4a067SPaolo Bonzini make="${MAKE-gmake}" 7050c58ac1cSmalc audio_drv_list="oss" 7060bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 707f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 708f01576f1SJuergen Lock LIBS="-lutil $LIBS" 709a7764f15SEd Maste # needed for kinfo_getproc 710a7764f15SEd Maste libs_qga="-lutil $libs_qga" 71158952137SVincenzo Maffione netmap="" # enable netmap autodetect 712adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 713898be3e0SPeter Maydell supported_os="yes" 7147d3505c5Sbellard;; 715c5e97233Sblueswir1DragonFly) 716c5e97233Sblueswir1 bsd="yes" 7170db4a067SPaolo Bonzini make="${MAKE-gmake}" 718c5e97233Sblueswir1 audio_drv_list="oss" 7190bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 720adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 721c5e97233Sblueswir1;; 7227d3505c5SbellardNetBSD) 7237d3505c5Sbellard bsd="yes" 7240db4a067SPaolo Bonzini make="${MAKE-gmake}" 7250c58ac1cSmalc audio_drv_list="oss" 7260bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl" 7278ef92a88Sblueswir1 oss_lib="-lossaudio" 728adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 7293c2bdbc1SKamil Rytarowski supported_os="yes" 7307d3505c5Sbellard;; 7317d3505c5SbellardOpenBSD) 7327d3505c5Sbellard bsd="yes" 7330db4a067SPaolo Bonzini make="${MAKE-gmake}" 7344f6ab397SBrad Smith audio_drv_list="sdl" 7350bac1111SKővágó, Zoltán audio_possible_drivers="sdl" 736adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 7377d3505c5Sbellard;; 73883fb7adfSbellardDarwin) 73983fb7adfSbellard bsd="yes" 74083fb7adfSbellard darwin="yes" 741b0cb0a66SVincent Palatin hax="yes" 74217969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 7431b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 744a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 7450c439cbfSJuan Quintela LDFLAGS="-arch x86_64 $LDFLAGS" 7461b0f9cc2Saliguori fi 747fd677642Sths cocoa="yes" 7480c58ac1cSmalc audio_drv_list="coreaudio" 74914382605SKővágó, Zoltán audio_possible_drivers="coreaudio sdl" 7500c439cbfSJuan Quintela LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 7517973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 752a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 753a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 754a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 755adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 756898be3e0SPeter Maydell supported_os="yes" 75783fb7adfSbellard;; 758ec530c81SbellardSunOS) 759ec530c81Sbellard solaris="yes" 7600db4a067SPaolo Bonzini make="${MAKE-gmake}" 7610db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 762e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 7636b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 7640c58ac1cSmalc audio_drv_list="oss" 7656b4d2ba1Sths fi 766c2de5c91Smalc audio_possible_drivers="oss sdl" 767d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 768d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 769d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 770d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 771a558ee17SJuan Quintela QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 772560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 773560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 774560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 775ec530c81Sbellard;; 776179cf400SAndreas FärberHaiku) 777179cf400SAndreas Färber haiku="yes" 778179cf400SAndreas Färber QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 779179cf400SAndreas Färber LIBS="-lposix_error_mapper -lnetwork $LIBS" 780179cf400SAndreas Färber;; 781898be3e0SPeter MaydellLinux) 7820c58ac1cSmalc audio_drv_list="oss" 7830bac1111SKővágó, Zoltán audio_possible_drivers="oss alsa sdl pa" 7845327cf48Sbellard linux="yes" 785831b7825Sths linux_user="yes" 786af2be207SJan Kiszka kvm="yes" 787af2be207SJan Kiszka vhost_net="yes" 7885e9be92dSNicholas Bellinger vhost_scsi="yes" 789fc0b9b0eSStefan Hajnoczi vhost_vsock="yes" 790a585140dSAlexey Kardashevskiy QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES" 791898be3e0SPeter Maydell supported_os="yes" 792898be3e0SPeter Maydell;; 7937d13299dSbellardesac 7947d13299dSbellard 7957d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 796b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 79784778508Sblueswir1 bsd_user="yes" 7987d3505c5Sbellard fi 79908de3949SAndreas Färberfi 8007d3505c5Sbellard 8010db4a067SPaolo Bonzini: ${make=${MAKE-make}} 8020db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 80352510f8bSStefan Weil: ${python=${PYTHON-python}} 804e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 8050db4a067SPaolo Bonzini 8063c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 8073c4a4d0dSPeter Maydellif has clang; then 8083c4a4d0dSPeter Maydell objcc=clang 8093c4a4d0dSPeter Maydellelse 8103c4a4d0dSPeter Maydell objcc="$cc" 8113c4a4d0dSPeter Maydellfi 8123c4a4d0dSPeter Maydell 8133457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 8143457a3f8SJuan Quintela EXESUF=".exe" 81517969268SFam Zheng DSOSUF=".dll" 816a558ee17SJuan Quintela QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 817e94a7936SStefan Weil # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 818e94a7936SStefan Weil QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 81978e9d4adSStefan Weil # MinGW needs -mthreads for TLS and macro _MT. 82078e9d4adSStefan Weil QEMU_CFLAGS="-mthreads $QEMU_CFLAGS" 821f7cf5d5bSStefan Weil LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 82293b25869SJohn Snow write_c_skeleton; 823f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 824f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 825f7cf5d5bSStefan Weil fi 826c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 827683035deSPaolo Bonzini mandir="\${prefix}" 828528ae5b8SEduardo Habkost datadir="\${prefix}" 829850da188SEduardo Habkost qemu_docdir="\${prefix}" 830683035deSPaolo Bonzini bindir="\${prefix}" 831683035deSPaolo Bonzini sysconfdir="\${prefix}" 8325a699bbbSLaszlo Ersek local_statedir= 833683035deSPaolo Bonzini confsuffix="" 834105fad6bSBishara AbuHattoum libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga" 8353457a3f8SJuan Quintelafi 8363457a3f8SJuan Quintela 837487fefdbSAnthony Liguoriwerror="" 83885aa5189Sbellard 8397d13299dSbellardfor opt do 84089138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 8417d13299dSbellard case "$opt" in 8422efc3265Sbellard --help|-h) show_help=yes 8432efc3265Sbellard ;; 84499123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 84599123e13SMike Frysinger ;; 846b1a550a0Spbrook --prefix=*) prefix="$optarg" 8477d13299dSbellard ;; 848b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 84932ce6337Sbellard ;; 850ca4deeb1SPaolo Bonzini --source-path=*) 8517d13299dSbellard ;; 852ac0df51dSaliguori --cross-prefix=*) 8537d13299dSbellard ;; 854ac0df51dSaliguori --cc=*) 8557d13299dSbellard ;; 856b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 85783469015Sbellard ;; 85883f73fceSTomoki Sekiyama --cxx=*) 85983f73fceSTomoki Sekiyama ;; 860e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 861e007dbecSMichael S. Tsirkin ;; 8623c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 8633c4a4d0dSPeter Maydell ;; 864b1a550a0Spbrook --make=*) make="$optarg" 8657d13299dSbellard ;; 8666a882643Spbrook --install=*) install="$optarg" 8676a882643Spbrook ;; 868c886edfbSBlue Swirl --python=*) python="$optarg" 869c886edfbSBlue Swirl ;; 8701d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 8711d728c39SBlue Swirl ;; 872e2d8830eSBrad --smbd=*) smbd="$optarg" 873e2d8830eSBrad ;; 874e2a2ed06SJuan Quintela --extra-cflags=*) 8757d13299dSbellard ;; 87611cde1c8SBruno Dominguez --extra-cxxflags=*) 87711cde1c8SBruno Dominguez ;; 878e2a2ed06SJuan Quintela --extra-ldflags=*) 8797d13299dSbellard ;; 8805bc62e01SGerd Hoffmann --enable-debug-info) 8815bc62e01SGerd Hoffmann ;; 8825bc62e01SGerd Hoffmann --disable-debug-info) 8835bc62e01SGerd Hoffmann ;; 88417969268SFam Zheng --enable-modules) 88517969268SFam Zheng modules="yes" 88617969268SFam Zheng ;; 8873aa88b31SStefan Hajnoczi --disable-modules) 8883aa88b31SStefan Hajnoczi modules="no" 8893aa88b31SStefan Hajnoczi ;; 8902ff6b91eSJuan Quintela --cpu=*) 8917d13299dSbellard ;; 892b1a550a0Spbrook --target-list=*) target_list="$optarg" 893de83cd02Sbellard ;; 8945b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 8955b808275SLluís Vilanova ;; 8965b808275SLluís Vilanova # XXX: backwards compatibility 8975b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 89894a420b1SStefan Hajnoczi ;; 89974242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 9009410b56cSPrerna Saxena ;; 9017d13299dSbellard --enable-gprof) gprof="yes" 9027d13299dSbellard ;; 9031d728c39SBlue Swirl --enable-gcov) gcov="yes" 9041d728c39SBlue Swirl ;; 90579427693SLoïc Minier --static) 90679427693SLoïc Minier static="yes" 90779427693SLoïc Minier LDFLAGS="-static $LDFLAGS" 90817884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 90943ce4dfeSbellard ;; 9100b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 9110b24e75fSPaolo Bonzini ;; 9120b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 9130b24e75fSPaolo Bonzini ;; 9143aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 9153aa5d2beSAlon Levy ;; 9168bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 9178bf188aaSMichael Tokarev ;; 9180f94d6daSAlon Levy --includedir=*) includedir="$optarg" 9190f94d6daSAlon Levy ;; 920528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 9210b24e75fSPaolo Bonzini ;; 922023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 923023d3d67SEduardo Habkost ;; 924850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 9250b24e75fSPaolo Bonzini ;; 926ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 92707381cc1SAnthony Liguori ;; 928785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 929785c23aeSLuiz Capitulino ;; 9303d5eecabSGerd Hoffmann --firmwarepath=*) firmwarepath="$optarg" 9313d5eecabSGerd Hoffmann ;; 932785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 933023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 934023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 935023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 936023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 937023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 938023ddd74SMax Filippov # lots of directory switches by default. 939023ddd74SMax Filippov ;; 94097a847bcSbellard --disable-sdl) sdl="no" 94197a847bcSbellard ;; 942c4198157SJuan Quintela --enable-sdl) sdl="yes" 943c4198157SJuan Quintela ;; 94447c03744SDave Airlie --with-sdlabi=*) sdlabi="$optarg" 94547c03744SDave Airlie ;; 9463556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 9473556c233SPaolo Bonzini ;; 9483556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 9493556c233SPaolo Bonzini ;; 950983eef5aSMeador Inge --disable-virtfs) virtfs="no" 951983eef5aSMeador Inge ;; 952983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 953983eef5aSMeador Inge ;; 954fe8fc5aeSPaolo Bonzini --disable-mpath) mpath="no" 955fe8fc5aeSPaolo Bonzini ;; 956fe8fc5aeSPaolo Bonzini --enable-mpath) mpath="yes" 957fe8fc5aeSPaolo Bonzini ;; 958821601eaSJes Sorensen --disable-vnc) vnc="no" 959821601eaSJes Sorensen ;; 960821601eaSJes Sorensen --enable-vnc) vnc="yes" 961821601eaSJes Sorensen ;; 9622f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 9632f6a1ab0Sblueswir1 ;; 9640c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 9650c58ac1cSmalc ;; 96689138857SStefan Weil --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 967b64ec4e4SFam Zheng ;; 96889138857SStefan Weil --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 969eb852011SMarkus Armbruster ;; 970f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 971f8393946Saurel32 ;; 972f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 973f8393946Saurel32 ;; 974f3d08ee6SPaul Brook --enable-debug) 975f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 976f3d08ee6SPaul Brook debug_tcg="yes" 977f3d08ee6SPaul Brook debug="yes" 978f3d08ee6SPaul Brook strip_opt="no" 979b553a042SJohn Snow fortify_source="no" 980f3d08ee6SPaul Brook ;; 98103b4fe7dSaliguori --enable-sparse) sparse="yes" 98203b4fe7dSaliguori ;; 98303b4fe7dSaliguori --disable-sparse) sparse="no" 98403b4fe7dSaliguori ;; 9851625af87Saliguori --disable-strip) strip_opt="no" 9861625af87Saliguori ;; 9872f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 9882f9606b3Saliguori ;; 989ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 990ea784e3bSJuan Quintela ;; 9912f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 9922f6f5c7aSCorentin Chary ;; 9932f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 9942f6f5c7aSCorentin Chary ;; 995efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 996efe556adSCorentin Chary ;; 997efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 998efe556adSCorentin Chary ;; 999443f1376Sbellard --disable-slirp) slirp="no" 1000c20709aaSbellard ;; 1001e0e6c8c0Saliguori --disable-vde) vde="no" 10028a16d273Sths ;; 1003dfb278bdSJuan Quintela --enable-vde) vde="yes" 1004dfb278bdSJuan Quintela ;; 100558952137SVincenzo Maffione --disable-netmap) netmap="no" 100658952137SVincenzo Maffione ;; 100758952137SVincenzo Maffione --enable-netmap) netmap="yes" 100858952137SVincenzo Maffione ;; 1009e37630caSaliguori --disable-xen) xen="no" 1010e37630caSaliguori ;; 1011fc321b4bSJuan Quintela --enable-xen) xen="yes" 1012fc321b4bSJuan Quintela ;; 1013eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 1014eb6fda0fSAnthony PERARD ;; 1015eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 1016eb6fda0fSAnthony PERARD ;; 101764a7ad6fSIan Campbell --disable-xen-pv-domain-build) xen_pv_domain_build="no" 101864a7ad6fSIan Campbell ;; 101964a7ad6fSIan Campbell --enable-xen-pv-domain-build) xen_pv_domain_build="yes" 102064a7ad6fSIan Campbell ;; 10212e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 10222e4d9fb1Saurel32 ;; 10234ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 10244ffcedb6SJuan Quintela ;; 1025fb599c9aSbalrog --disable-bluez) bluez="no" 1026fb599c9aSbalrog ;; 1027a20a6f46SJuan Quintela --enable-bluez) bluez="yes" 1028a20a6f46SJuan Quintela ;; 10297ba1e619Saliguori --disable-kvm) kvm="no" 10307ba1e619Saliguori ;; 1031b31a0277SJuan Quintela --enable-kvm) kvm="yes" 1032b31a0277SJuan Quintela ;; 1033b0cb0a66SVincent Palatin --disable-hax) hax="no" 1034180fb750Szhanghailiang ;; 1035b0cb0a66SVincent Palatin --enable-hax) hax="yes" 1036180fb750Szhanghailiang ;; 10379195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 10389195b2c2SStefan Weil ;; 10399195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 10409195b2c2SStefan Weil ;; 104147e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 104247e98658SCorey Bryant ;; 104347e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 104447e98658SCorey Bryant ;; 1045b3f6ea7eSPaolo Bonzini --disable-tcg) tcg="no" 1046b3f6ea7eSPaolo Bonzini ;; 1047b3f6ea7eSPaolo Bonzini --enable-tcg) tcg="yes" 1048b3f6ea7eSPaolo Bonzini ;; 1049cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 1050cd4ec0b4SGerd Hoffmann ;; 1051cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 1052cd4ec0b4SGerd Hoffmann ;; 1053c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 1054c589b249SRonnie Sahlberg ;; 1055c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 1056c589b249SRonnie Sahlberg ;; 10576542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 10586542aa9cSPeter Lieven ;; 10596542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 10606542aa9cSPeter Lieven ;; 106105c2a3e7Sbellard --enable-profiler) profiler="yes" 106205c2a3e7Sbellard ;; 106314821030SPavel Borzenkov --disable-cocoa) cocoa="no" 106414821030SPavel Borzenkov ;; 1065c2de5c91Smalc --enable-cocoa) 1066c2de5c91Smalc cocoa="yes" ; 106789138857SStefan Weil audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)" 10685b0753e0Sbellard ;; 1069cad25d69Spbrook --disable-system) softmmu="no" 10700a8e90f4Spbrook ;; 1071cad25d69Spbrook --enable-system) softmmu="yes" 10720a8e90f4Spbrook ;; 10730953a80fSZachary Amsden --disable-user) 10740953a80fSZachary Amsden linux_user="no" ; 10750953a80fSZachary Amsden bsd_user="no" ; 10760953a80fSZachary Amsden ;; 10770953a80fSZachary Amsden --enable-user) ;; 1078831b7825Sths --disable-linux-user) linux_user="no" 10790a8e90f4Spbrook ;; 1080831b7825Sths --enable-linux-user) linux_user="yes" 1081831b7825Sths ;; 108284778508Sblueswir1 --disable-bsd-user) bsd_user="no" 108384778508Sblueswir1 ;; 108484778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 108584778508Sblueswir1 ;; 108640d6444eSAvi Kivity --enable-pie) pie="yes" 108734005a00SKirill A. Shutemov ;; 108840d6444eSAvi Kivity --disable-pie) pie="no" 108934005a00SKirill A. Shutemov ;; 109085aa5189Sbellard --enable-werror) werror="yes" 109185aa5189Sbellard ;; 109285aa5189Sbellard --disable-werror) werror="no" 109385aa5189Sbellard ;; 109463678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 109563678e17SSteven Noonan ;; 109663678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 109763678e17SSteven Noonan ;; 10984d3b6f6eSbalrog --disable-curses) curses="no" 10994d3b6f6eSbalrog ;; 1100c584a6d0SJuan Quintela --enable-curses) curses="yes" 1101c584a6d0SJuan Quintela ;; 1102769ce76dSAlexander Graf --disable-curl) curl="no" 1103769ce76dSAlexander Graf ;; 1104788c8196SJuan Quintela --enable-curl) curl="yes" 1105788c8196SJuan Quintela ;; 11062df87df7SJuan Quintela --disable-fdt) fdt="no" 11072df87df7SJuan Quintela ;; 11082df87df7SJuan Quintela --enable-fdt) fdt="yes" 11092df87df7SJuan Quintela ;; 11105c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 11115c6c3a6cSChristoph Hellwig ;; 11125c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 11135c6c3a6cSChristoph Hellwig ;; 1114758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 1115758e8e38SVenkateswararao Jujjuri (JV) ;; 1116758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 1117758e8e38SVenkateswararao Jujjuri (JV) ;; 111877755340Sths --disable-blobs) blobs="no" 111977755340Sths ;; 11204a19f1ecSpbrook --with-pkgversion=*) pkgversion=" ($optarg)" 11214a19f1ecSpbrook ;; 1122519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1123519175a2SAlex Barcelo ;; 112470c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 112570c60c08SStefan Hajnoczi ;; 112670c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 112770c60c08SStefan Hajnoczi ;; 11287d992e4dSPeter Lieven --enable-debug-stack-usage) debug_stack_usage="yes" 11297d992e4dSPeter Lieven ;; 1130f0d92b56SLongpeng(Mike) --enable-crypto-afalg) crypto_afalg="yes" 1131f0d92b56SLongpeng(Mike) ;; 1132f0d92b56SLongpeng(Mike) --disable-crypto-afalg) crypto_afalg="no" 1133f0d92b56SLongpeng(Mike) ;; 1134a25dba17SJuan Quintela --disable-docs) docs="no" 113570ec5dc0SAnthony Liguori ;; 1136a25dba17SJuan Quintela --enable-docs) docs="yes" 113783a3ab8bSJuan Quintela ;; 1138d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1139d5970055SMichael S. Tsirkin ;; 1140d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1141d5970055SMichael S. Tsirkin ;; 11425e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 11435e9be92dSNicholas Bellinger ;; 11445e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 11455e9be92dSNicholas Bellinger ;; 1146fc0b9b0eSStefan Hajnoczi --disable-vhost-vsock) vhost_vsock="no" 1147fc0b9b0eSStefan Hajnoczi ;; 1148fc0b9b0eSStefan Hajnoczi --enable-vhost-vsock) vhost_vsock="yes" 1149fc0b9b0eSStefan Hajnoczi ;; 1150da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 115120ff075bSMichael Walle ;; 1152da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 115320ff075bSMichael Walle ;; 1154f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1155f27aaf4bSChristian Brunner ;; 1156f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1157f27aaf4bSChristian Brunner ;; 11588c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 11598c84cf11SSergei Trofimovich ;; 11608c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 11618c84cf11SSergei Trofimovich ;; 11627b02f544SMarc-André Lureau --disable-smartcard) smartcard="no" 1163111a38b0SRobert Relyea ;; 11647b02f544SMarc-André Lureau --enable-smartcard) smartcard="yes" 1165111a38b0SRobert Relyea ;; 11662b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 11672b2325ffSGerd Hoffmann ;; 11682b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 11692b2325ffSGerd Hoffmann ;; 117069354a83SHans de Goede --disable-usb-redir) usb_redir="no" 117169354a83SHans de Goede ;; 117269354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 117369354a83SHans de Goede ;; 11741ece9905SAlon Levy --disable-zlib-test) zlib="no" 11751ece9905SAlon Levy ;; 1176b25c9dffSStefan Weil --disable-lzo) lzo="no" 1177b25c9dffSStefan Weil ;; 1178607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1179607dacd0Sqiaonuohan ;; 1180b25c9dffSStefan Weil --disable-snappy) snappy="no" 1181b25c9dffSStefan Weil ;; 1182607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1183607dacd0Sqiaonuohan ;; 11846b383c08SPeter Wu --disable-bzip2) bzip2="no" 11856b383c08SPeter Wu ;; 11866b383c08SPeter Wu --enable-bzip2) bzip2="yes" 11876b383c08SPeter Wu ;; 1188d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1189d138cee9SMichael Roth ;; 1190d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1191d138cee9SMichael Roth ;; 11929dacf32dSYossi Hindin --enable-guest-agent-msi) guest_agent_msi="yes" 11939dacf32dSYossi Hindin ;; 11949dacf32dSYossi Hindin --disable-guest-agent-msi) guest_agent_msi="no" 11959dacf32dSYossi Hindin ;; 1196d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1197d9840e25STomoki Sekiyama ;; 1198d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1199d9840e25STomoki Sekiyama ;; 1200d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1201d9840e25STomoki Sekiyama ;; 1202d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1203d9840e25STomoki Sekiyama ;; 1204d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1205d9840e25STomoki Sekiyama ;; 1206d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1207d9840e25STomoki Sekiyama ;; 12084b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 12094b1c11fdSDaniel P. Berrange ;; 12104b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 12114b1c11fdSDaniel P. Berrange ;; 1212f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1213f794573eSEduardo Otubo ;; 1214f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1215f794573eSEduardo Otubo ;; 1216eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1217eb100396SBharata B Rao ;; 1218eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1219eb100396SBharata B Rao ;; 122052b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 122152b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1222583f6e7bSStefan Hajnoczi ;; 1223cb6414dfSFam Zheng --enable-vhdx|--disable-vhdx) 1224cb6414dfSFam Zheng echo "$0: $opt is obsolete, VHDX driver is always built" >&2 1225cb6414dfSFam Zheng ;; 1226315d3184SFam Zheng --enable-uuid|--disable-uuid) 1227315d3184SFam Zheng echo "$0: $opt is obsolete, UUID support is always built" >&2 1228315d3184SFam Zheng ;; 1229a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1230a4ccabcfSAnthony Liguori ;; 1231a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1232a4ccabcfSAnthony Liguori ;; 1233a1c5e949SDaniel P. Berrange --tls-priority=*) tls_priority="$optarg" 1234a1c5e949SDaniel P. Berrange ;; 1235ddbb0d09SDaniel P. Berrange --disable-gnutls) gnutls="no" 1236ddbb0d09SDaniel P. Berrange ;; 1237ddbb0d09SDaniel P. Berrange --enable-gnutls) gnutls="yes" 1238ddbb0d09SDaniel P. Berrange ;; 123991bfcdb0SDaniel P. Berrange --disable-nettle) nettle="no" 124091bfcdb0SDaniel P. Berrange ;; 124191bfcdb0SDaniel P. Berrange --enable-nettle) nettle="yes" 124291bfcdb0SDaniel P. Berrange ;; 124391bfcdb0SDaniel P. Berrange --disable-gcrypt) gcrypt="no" 124491bfcdb0SDaniel P. Berrange ;; 124591bfcdb0SDaniel P. Berrange --enable-gcrypt) gcrypt="yes" 124691bfcdb0SDaniel P. Berrange ;; 12472da776dbSMichael R. Hines --enable-rdma) rdma="yes" 12482da776dbSMichael R. Hines ;; 12492da776dbSMichael R. Hines --disable-rdma) rdma="no" 12502da776dbSMichael R. Hines ;; 1251528de90aSDaniel P. Berrange --with-gtkabi=*) gtkabi="$optarg" 1252528de90aSDaniel P. Berrange ;; 1253bbbf9bfbSStefan Weil --disable-vte) vte="no" 1254bbbf9bfbSStefan Weil ;; 1255bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1256bbbf9bfbSStefan Weil ;; 12579d9e1521SGerd Hoffmann --disable-virglrenderer) virglrenderer="no" 12589d9e1521SGerd Hoffmann ;; 12599d9e1521SGerd Hoffmann --enable-virglrenderer) virglrenderer="yes" 12609d9e1521SGerd Hoffmann ;; 1261e91c793cSCole Robinson --disable-tpm) tpm="no" 1262e91c793cSCole Robinson ;; 1263ab214c29SStefan Berger --enable-tpm) tpm="yes" 1264ab214c29SStefan Berger ;; 12650a12ec87SRichard W.M. Jones --disable-libssh2) libssh2="no" 12660a12ec87SRichard W.M. Jones ;; 12670a12ec87SRichard W.M. Jones --enable-libssh2) libssh2="yes" 12680a12ec87SRichard W.M. Jones ;; 1269ed1701c6SDr. David Alan Gilbert --disable-live-block-migration) live_block_migration="no" 1270ed1701c6SDr. David Alan Gilbert ;; 1271ed1701c6SDr. David Alan Gilbert --enable-live-block-migration) live_block_migration="yes" 1272ed1701c6SDr. David Alan Gilbert ;; 1273a99d57bbSWanlong Gao --disable-numa) numa="no" 1274a99d57bbSWanlong Gao ;; 1275a99d57bbSWanlong Gao --enable-numa) numa="yes" 1276a99d57bbSWanlong Gao ;; 12772847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 12782847b469SFam Zheng ;; 12792847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 12802847b469SFam Zheng ;; 12817b01cb97SAlexandre Derumier --disable-jemalloc) jemalloc="no" 12827b01cb97SAlexandre Derumier ;; 12837b01cb97SAlexandre Derumier --enable-jemalloc) jemalloc="yes" 12847b01cb97SAlexandre Derumier ;; 1285a6b1d4c0SChanglong Xie --disable-replication) replication="no" 1286a6b1d4c0SChanglong Xie ;; 1287a6b1d4c0SChanglong Xie --enable-replication) replication="yes" 1288a6b1d4c0SChanglong Xie ;; 1289da92c3ffSAshish Mittal --disable-vxhs) vxhs="no" 1290da92c3ffSAshish Mittal ;; 1291da92c3ffSAshish Mittal --enable-vxhs) vxhs="yes" 1292da92c3ffSAshish Mittal ;; 1293e6a74868SMarc-André Lureau --disable-vhost-user) vhost_user="no" 1294e6a74868SMarc-André Lureau ;; 1295e6a74868SMarc-André Lureau --enable-vhost-user) 1296e6a74868SMarc-André Lureau vhost_user="yes" 1297e6a74868SMarc-André Lureau if test "$mingw32" = "yes"; then 1298e6a74868SMarc-André Lureau error_exit "vhost-user isn't available on win32" 1299e6a74868SMarc-André Lureau fi 1300e6a74868SMarc-André Lureau ;; 13018ca80760SRichard Henderson --disable-capstone) capstone="no" 13028ca80760SRichard Henderson ;; 13038ca80760SRichard Henderson --enable-capstone) capstone="yes" 13048ca80760SRichard Henderson ;; 1305e219c499SRichard Henderson --enable-capstone=git) capstone="git" 1306e219c499SRichard Henderson ;; 1307e219c499SRichard Henderson --enable-capstone=system) capstone="system" 1308e219c499SRichard Henderson ;; 1309cc84d63aSDaniel P. Berrange --with-git=*) git="$optarg" 1310cc84d63aSDaniel P. Berrange ;; 1311*f62bbee5SDaniel P. Berrange --enable-git-update) git_update=yes 1312*f62bbee5SDaniel P. Berrange ;; 1313*f62bbee5SDaniel P. Berrange --disable-git-update) git_update=no 1314*f62bbee5SDaniel P. Berrange ;; 13152d2ad6d0SFam Zheng *) 13162d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 13172d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 13182d2ad6d0SFam Zheng exit 1 13197f1559c6Sbalrog ;; 13207d13299dSbellard esac 13217d13299dSbellarddone 13227d13299dSbellard 1323e6a74868SMarc-André Lureauif test "$vhost_user" = ""; then 1324e6a74868SMarc-André Lureau if test "$mingw32" = "yes"; then 1325e6a74868SMarc-André Lureau vhost_user="no" 1326e6a74868SMarc-André Lureau else 1327e6a74868SMarc-André Lureau vhost_user="yes" 1328e6a74868SMarc-André Lureau fi 1329e6a74868SMarc-André Lureaufi 1330e6a74868SMarc-André Lureau 133140293e58Sbellardcase "$cpu" in 1332e3608d66SRichard Henderson ppc) 1333e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1334e3608d66SRichard Henderson LDFLAGS="-m32 $LDFLAGS" 1335e3608d66SRichard Henderson ;; 1336e3608d66SRichard Henderson ppc64) 1337e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1338e3608d66SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 1339e3608d66SRichard Henderson ;; 13409b9c37c3SRichard Henderson sparc) 1341f1079bb8SRichard Henderson CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" 1342f1079bb8SRichard Henderson LDFLAGS="-m32 -mv8plus $LDFLAGS" 13433142255cSblueswir1 ;; 1344ed968ff1SJuan Quintela sparc64) 134579f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 1346f1079bb8SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 13473142255cSblueswir1 ;; 134876d83bdeSths s390) 1349061cdd81SRichard Henderson CPU_CFLAGS="-m31" 135028d7cc49SRichard Henderson LDFLAGS="-m31 $LDFLAGS" 135128d7cc49SRichard Henderson ;; 135228d7cc49SRichard Henderson s390x) 1353061cdd81SRichard Henderson CPU_CFLAGS="-m64" 135428d7cc49SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 135576d83bdeSths ;; 135640293e58Sbellard i386) 135779f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 13580c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 13592b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 136040293e58Sbellard ;; 136140293e58Sbellard x86_64) 13627ebee43eSRichard Henderson # ??? Only extremely old AMD cpus do not have cmpxchg16b. 13637ebee43eSRichard Henderson # If we truly care, we should simply detect this case at 13647ebee43eSRichard Henderson # runtime and generate the fallback to serial emulation. 13657ebee43eSRichard Henderson CPU_CFLAGS="-m64 -mcx16" 13660c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 13672b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 1368379f6698SPaul Brook ;; 1369c72b26ecSRichard Henderson x32) 1370c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1371c72b26ecSRichard Henderson LDFLAGS="-mx32 $LDFLAGS" 1372c72b26ecSRichard Henderson cc_i386='$(CC) -m32' 1373c72b26ecSRichard Henderson ;; 137430163d89SPeter Maydell # No special flags required for other host CPUs 13753142255cSblueswir1esac 13763142255cSblueswir1 137779f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 137879f3b12fSPeter CrosthwaiteEXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS" 137979f3b12fSPeter Crosthwaite 1380affc88ccSPeter Maydell# For user-mode emulation the host arch has to be one we explicitly 1381affc88ccSPeter Maydell# support, even if we're using TCI. 1382affc88ccSPeter Maydellif [ "$ARCH" = "unknown" ]; then 1383affc88ccSPeter Maydell bsd_user="no" 1384affc88ccSPeter Maydell linux_user="no" 1385affc88ccSPeter Maydellfi 1386affc88ccSPeter Maydell 138760e0df25SPeter Maydelldefault_target_list="" 138860e0df25SPeter Maydell 13896e92f823SPeter Maydellmak_wilds="" 13906e92f823SPeter Maydell 139160e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 13926e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 139360e0df25SPeter Maydellfi 139460e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 13956e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 139660e0df25SPeter Maydellfi 139760e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 13986e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 139960e0df25SPeter Maydellfi 140060e0df25SPeter Maydell 14016e92f823SPeter Maydellfor config in $mak_wilds; do 14026e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 14036e92f823SPeter Maydelldone 14046e92f823SPeter Maydell 1405c53eeaf7SStefan Hajnoczi# Enumerate public trace backends for --help output 140664a6047dSGreg Kurztrace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/')) 1407c53eeaf7SStefan Hajnoczi 1408af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1409af5db58eSpbrookcat << EOF 1410af5db58eSpbrook 1411af5db58eSpbrookUsage: configure [options] 1412af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1413af5db58eSpbrook 141408fb77edSStefan WeilStandard options: 141508fb77edSStefan Weil --help print this message 141608fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 141708fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 141808fb77edSStefan Weil use %M for cpu name [$interp_prefix] 141908fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 142008fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 142108fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 142208fb77edSStefan Weil 142308fb77edSStefan WeilAdvanced options (experts only): 142408fb77edSStefan Weil --source-path=PATH path of source code [$source_path] 142508fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 142608fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 142708fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 142808fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 142908fb77edSStefan Weil build time 143008fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 143108fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 143208fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 143311cde1c8SBruno Dominguez --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS 143408fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 143508fb77edSStefan Weil --make=MAKE use specified make [$make] 143608fb77edSStefan Weil --install=INSTALL use specified install [$install] 143708fb77edSStefan Weil --python=PYTHON use specified python [$python] 143808fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 143908fb77edSStefan Weil --static enable static build [$static] 144008fb77edSStefan Weil --mandir=PATH install man pages in PATH 144108fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 144208fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 144308fb77edSStefan Weil --bindir=PATH install binaries in PATH 144408fb77edSStefan Weil --libdir=PATH install libraries in PATH 144508fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 144608fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 14473d5eecabSGerd Hoffmann --firmwarepath=PATH search PATH for firmware files 1448e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 144908fb77edSStefan Weil --enable-debug enable common debug build options 145008fb77edSStefan Weil --disable-strip disable stripping binaries 145108fb77edSStefan Weil --disable-werror disable compilation abort on warning 145263678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 145308fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 145408fb77edSStefan Weil Available drivers: $audio_possible_drivers 145508fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 145608fb77edSStefan Weil --block-drv-rw-whitelist=L 145708fb77edSStefan Weil set block driver read-write whitelist 145808fb77edSStefan Weil (affects only QEMU, not qemu-img) 145908fb77edSStefan Weil --block-drv-ro-whitelist=L 146008fb77edSStefan Weil set block driver read-only whitelist 146108fb77edSStefan Weil (affects only QEMU, not qemu-img) 14625b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 1463c53eeaf7SStefan Hajnoczi Available backends: $trace_backend_list 146408fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 146508fb77edSStefan Weil Default:trace-<pid> 1466c23f23b9SMichael Tokarev --disable-slirp disable SLIRP userspace network connectivity 1467c23f23b9SMichael Tokarev --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 1468c23f23b9SMichael Tokarev --oss-lib path to OSS library 1469c23f23b9SMichael Tokarev --cpu=CPU Build for host CPU [$cpu] 147008fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 147133c53c54SDaniel P. Berrange ucontext, sigaltstack, windows 147208fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 147308fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 1474c23f23b9SMichael Tokarev --disable-blobs disable installing provided firmware blobs 1475c23f23b9SMichael Tokarev --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1476c23f23b9SMichael Tokarev --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1477a1c5e949SDaniel P. Berrange --tls-priority default TLS protocol/cipher priority string 1478c12d66aaSLin Ma --enable-gprof QEMU profiling with gprof 1479c12d66aaSLin Ma --enable-profiler profiler support 1480c12d66aaSLin Ma --enable-xen-pv-domain-build 1481c12d66aaSLin Ma xen pv domain builder 1482c12d66aaSLin Ma --enable-debug-stack-usage 1483c12d66aaSLin Ma track the maximum stack usage of stacks created by qemu_alloc_stack 1484c23f23b9SMichael Tokarev 1485c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and 1486c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available: 1487c23f23b9SMichael Tokarev 1488c23f23b9SMichael Tokarev system all system emulation targets 1489c23f23b9SMichael Tokarev user supported user emulation targets 1490c23f23b9SMichael Tokarev linux-user all linux usermode emulation targets 1491c23f23b9SMichael Tokarev bsd-user all BSD usermode emulation targets 1492c23f23b9SMichael Tokarev docs build documentation 1493c23f23b9SMichael Tokarev guest-agent build the QEMU Guest Agent 1494c23f23b9SMichael Tokarev guest-agent-msi build guest agent Windows MSI installation package 1495c23f23b9SMichael Tokarev pie Position Independent Executables 1496c23f23b9SMichael Tokarev modules modules support 1497c23f23b9SMichael Tokarev debug-tcg TCG debugging (default is disabled) 1498c23f23b9SMichael Tokarev debug-info debugging information 1499c23f23b9SMichael Tokarev sparse sparse checker 1500c23f23b9SMichael Tokarev 1501ddbb0d09SDaniel P. Berrange gnutls GNUTLS cryptography support 150291bfcdb0SDaniel P. Berrange nettle nettle cryptography support 150391bfcdb0SDaniel P. Berrange gcrypt libgcrypt cryptography support 1504c23f23b9SMichael Tokarev sdl SDL UI 1505c23f23b9SMichael Tokarev --with-sdlabi select preferred SDL ABI 1.2 or 2.0 1506c23f23b9SMichael Tokarev gtk gtk UI 1507c23f23b9SMichael Tokarev --with-gtkabi select preferred GTK ABI 2.0 or 3.0 1508c23f23b9SMichael Tokarev vte vte support for the gtk UI 1509c23f23b9SMichael Tokarev curses curses UI 1510c23f23b9SMichael Tokarev vnc VNC UI support 1511c23f23b9SMichael Tokarev vnc-sasl SASL encryption for VNC server 1512c23f23b9SMichael Tokarev vnc-jpeg JPEG lossy compression for VNC server 1513c23f23b9SMichael Tokarev vnc-png PNG compression for VNC server 1514c23f23b9SMichael Tokarev cocoa Cocoa UI (Mac OS X only) 1515c23f23b9SMichael Tokarev virtfs VirtFS 1516fe8fc5aeSPaolo Bonzini mpath Multipath persistent reservation passthrough 1517c23f23b9SMichael Tokarev xen xen backend driver support 1518c23f23b9SMichael Tokarev xen-pci-passthrough 1519c23f23b9SMichael Tokarev brlapi BrlAPI (Braile) 1520c23f23b9SMichael Tokarev curl curl connectivity 1521c23f23b9SMichael Tokarev fdt fdt device tree 1522c23f23b9SMichael Tokarev bluez bluez stack connectivity 1523c23f23b9SMichael Tokarev kvm KVM acceleration support 1524b0cb0a66SVincent Palatin hax HAX acceleration support 1525c23f23b9SMichael Tokarev rdma RDMA-based migration support 1526c23f23b9SMichael Tokarev vde support for vde network 1527c23f23b9SMichael Tokarev netmap support for netmap network 1528c23f23b9SMichael Tokarev linux-aio Linux AIO support 1529c23f23b9SMichael Tokarev cap-ng libcap-ng support 1530c23f23b9SMichael Tokarev attr attr and xattr support 1531c23f23b9SMichael Tokarev vhost-net vhost-net acceleration support 1532c23f23b9SMichael Tokarev spice spice 1533c23f23b9SMichael Tokarev rbd rados block device (rbd) 1534c23f23b9SMichael Tokarev libiscsi iscsi support 1535c23f23b9SMichael Tokarev libnfs nfs support 15367b02f544SMarc-André Lureau smartcard smartcard support (libcacard) 1537c23f23b9SMichael Tokarev libusb libusb (for usb passthrough) 1538ed1701c6SDr. David Alan Gilbert live-block-migration Block migration in the main migration stream 1539c23f23b9SMichael Tokarev usb-redir usb network redirection support 1540c23f23b9SMichael Tokarev lzo support of lzo compression library 1541c23f23b9SMichael Tokarev snappy support of snappy compression library 1542c23f23b9SMichael Tokarev bzip2 support of bzip2 compression library 1543c23f23b9SMichael Tokarev (for reading bzip2-compressed dmg images) 1544c23f23b9SMichael Tokarev seccomp seccomp support 1545c23f23b9SMichael Tokarev coroutine-pool coroutine freelist (better performance) 1546c23f23b9SMichael Tokarev glusterfs GlusterFS backend 1547c23f23b9SMichael Tokarev tpm TPM support 1548c23f23b9SMichael Tokarev libssh2 ssh block device support 1549c23f23b9SMichael Tokarev numa libnuma support 1550c23f23b9SMichael Tokarev tcmalloc tcmalloc support 15517b01cb97SAlexandre Derumier jemalloc jemalloc support 1552a6b1d4c0SChanglong Xie replication replication support 1553c12d66aaSLin Ma vhost-vsock virtio sockets device support 1554c12d66aaSLin Ma opengl opengl support 1555c12d66aaSLin Ma virglrenderer virgl rendering support 1556c12d66aaSLin Ma xfsctl xfsctl support 1557c12d66aaSLin Ma qom-cast-debug cast debugging support 1558c12d66aaSLin Ma tools build qemu-io, qemu-nbd and qemu-image tools 1559da92c3ffSAshish Mittal vxhs Veritas HyperScale vDisk backend support 1560f0d92b56SLongpeng(Mike) crypto-afalg Linux AF_ALG crypto backend driver 1561e6a74868SMarc-André Lureau vhost-user vhost-user support 15628ca80760SRichard Henderson capstone capstone disassembler support 156308fb77edSStefan Weil 156408fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1565af5db58eSpbrookEOF 15662d2ad6d0SFam Zhengexit 0 1567af5db58eSpbrookfi 1568af5db58eSpbrook 1569c53eeaf7SStefan Hajnocziif ! has $python; then 1570c53eeaf7SStefan Hajnoczi error_exit "Python not found. Use --python=/path/to/python" 1571c53eeaf7SStefan Hajnoczifi 1572c53eeaf7SStefan Hajnoczi 1573c53eeaf7SStefan Hajnoczi# Note that if the Python conditional here evaluates True we will exit 1574c53eeaf7SStefan Hajnoczi# with status 1 which is a shell 'false' value. 1575c53eeaf7SStefan Hajnocziif ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then 1576c53eeaf7SStefan Hajnoczi error_exit "Cannot use '$python', Python 2.6 or later is required." \ 1577c53eeaf7SStefan Hajnoczi "Note that Python 3 or later is not yet supported." \ 1578c53eeaf7SStefan Hajnoczi "Use --python=/path/to/python to specify a supported Python." 1579c53eeaf7SStefan Hajnoczifi 1580c53eeaf7SStefan Hajnoczi 1581c53eeaf7SStefan Hajnoczi# Suppress writing compiled files 1582c53eeaf7SStefan Hajnoczipython="$python -B" 1583c53eeaf7SStefan Hajnoczi 1584359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 1585359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 1586359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 1587359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 1588359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1589359bc95dSPeter Maydell else 159076ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1591359bc95dSPeter Maydell fi 1592359bc95dSPeter Maydellfi 1593359bc95dSPeter Maydell 15949c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 15959c83ffd8SPeter Maydell# by default. Only enable by default for git builds 15969c83ffd8SPeter Maydellif test -z "$werror" ; then 15979c83ffd8SPeter Maydell if test -d "$source_path/.git" -a \ 1598e4650c81SThomas Huth \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then 15999c83ffd8SPeter Maydell werror="yes" 16009c83ffd8SPeter Maydell else 16019c83ffd8SPeter Maydell werror="no" 16029c83ffd8SPeter Maydell fi 16039c83ffd8SPeter Maydellfi 16049c83ffd8SPeter Maydell 16058d05095cSPaolo Bonzini# check that the C compiler works. 160693b25869SJohn Snowwrite_c_skeleton; 16078d05095cSPaolo Bonziniif compile_object ; then 16088d05095cSPaolo Bonzini : C compiler works ok 16098d05095cSPaolo Bonzinielse 161076ad07a4SPeter Maydell error_exit "\"$cc\" either does not exist or does not work" 16118d05095cSPaolo Bonzinifi 16120ef74c74SPeter Maydellif ! compile_prog ; then 16130ef74c74SPeter Maydell error_exit "\"$cc\" cannot build an executable (is your linker broken?)" 16140ef74c74SPeter Maydellfi 16158d05095cSPaolo Bonzini 1616fb59dabdSPeter Maydellif test "$bogus_os" = "yes"; then 1617fb59dabdSPeter Maydell # Now that we know that we're not printing the help and that 1618fb59dabdSPeter Maydell # the compiler works (so the results of the check_defines we used 1619fb59dabdSPeter Maydell # to identify the OS are reliable), if we didn't recognize the 1620fb59dabdSPeter Maydell # host OS we should stop now. 1621951fedfcSPeter Maydell error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')" 1622fb59dabdSPeter Maydellfi 1623fb59dabdSPeter Maydell 16248d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 16258d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 1626ac7568bdSDaniel P. Berrangegcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 1627435405acSPranith Kumargcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags" 1628b98fcfd8SPaolo Bonzinigcc_flags="-Wno-initializer-overrides -Wexpansion-to-defined $gcc_flags" 162971429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags" 16306ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would 16316ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due 16326ca026cbSPeter Maydell# to -Werror this would just silently disable some features, 16336ca026cbSPeter Maydell# so it's too error prone. 163493b25869SJohn Snow 163593b25869SJohn Snowcc_has_warning_flag() { 163693b25869SJohn Snow write_c_skeleton; 163793b25869SJohn Snow 1638a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 1639a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 1640a1d29d6cSPeter Maydell # warning options). 164193b25869SJohn Snow optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 164293b25869SJohn Snow compile_prog "-Werror $optflag" "" 164393b25869SJohn Snow} 164493b25869SJohn Snow 164593b25869SJohn Snowfor flag in $gcc_flags; do 164693b25869SJohn Snow if cc_has_warning_flag $flag ; then 16478d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 16488d05095cSPaolo Bonzini fi 16498d05095cSPaolo Bonzinidone 16508d05095cSPaolo Bonzini 165163678e17SSteven Noonanif test "$stack_protector" != "no"; then 1652fccd35a0SRodrigo Rebello cat > $TMPC << EOF 1653fccd35a0SRodrigo Rebelloint main(int argc, char *argv[]) 1654fccd35a0SRodrigo Rebello{ 1655fccd35a0SRodrigo Rebello char arr[64], *p = arr, *c = argv[0]; 1656fccd35a0SRodrigo Rebello while (*c) { 1657fccd35a0SRodrigo Rebello *p++ = *c++; 1658fccd35a0SRodrigo Rebello } 1659fccd35a0SRodrigo Rebello return 0; 1660fccd35a0SRodrigo Rebello} 1661fccd35a0SRodrigo RebelloEOF 166263678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 16633b463a3fSMiroslav Rezanina sp_on=0 166463678e17SSteven Noonan for flag in $gcc_flags; do 1665590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 1666590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 1667590e5dd9SPeter Maydell if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 1668590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 166963678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 16703b463a3fSMiroslav Rezanina sp_on=1 167163678e17SSteven Noonan break 167263678e17SSteven Noonan fi 167363678e17SSteven Noonan done 16743b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 16753b463a3fSMiroslav Rezanina if test $sp_on = 0; then 16763b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 16773b463a3fSMiroslav Rezanina fi 16783b463a3fSMiroslav Rezanina fi 167937746c5eSMarc-André Lureaufi 168037746c5eSMarc-André Lureau 168120bc94a2SPaolo Bonzini# Disable -Wmissing-braces on older compilers that warn even for 168220bc94a2SPaolo Bonzini# the "universal" C zero initializer {0}. 168320bc94a2SPaolo Bonzinicat > $TMPC << EOF 168420bc94a2SPaolo Bonzinistruct { 168520bc94a2SPaolo Bonzini int a[2]; 168620bc94a2SPaolo Bonzini} x = {0}; 168720bc94a2SPaolo BonziniEOF 168820bc94a2SPaolo Bonziniif compile_object "-Werror" "" ; then 168920bc94a2SPaolo Bonzini : 169020bc94a2SPaolo Bonzinielse 169120bc94a2SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces" 169220bc94a2SPaolo Bonzinifi 169320bc94a2SPaolo Bonzini 1694cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1695cbdd1999SPaolo Bonzini# large functions that use global variables. The bug is in all releases of 1696cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1697cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1698cbdd1999SPaolo Bonzinicat > $TMPC << EOF 1699cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1700cbdd1999SPaolo Bonziniint main(void) { return 0; } 1701cbdd1999SPaolo Bonzini#else 1702cbdd1999SPaolo Bonzini#error No bug in this compiler. 1703cbdd1999SPaolo Bonzini#endif 1704cbdd1999SPaolo BonziniEOF 1705cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then 1706cbdd1999SPaolo Bonzini TRANSLATE_OPT_CFLAGS=-fno-gcse 1707cbdd1999SPaolo Bonzinifi 1708cbdd1999SPaolo Bonzini 170940d6444eSAvi Kivityif test "$static" = "yes" ; then 1710aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 1711aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 1712aa0d1f44SPaolo Bonzini fi 171340d6444eSAvi Kivity if test "$pie" = "yes" ; then 171476ad07a4SPeter Maydell error_exit "static and pie are mutually incompatible" 171540d6444eSAvi Kivity else 171640d6444eSAvi Kivity pie="no" 171740d6444eSAvi Kivity fi 171840d6444eSAvi Kivityfi 171940d6444eSAvi Kivity 1720768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 1721768b7855SEmilio G. Cota cat > $TMPC << EOF 1722768b7855SEmilio G. Cotastatic __thread int tls_var; 1723768b7855SEmilio G. Cotaint main(void) { return tls_var; } 1724768b7855SEmilio G. CotaEOF 1725768b7855SEmilio G. Cota 1726768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 1727768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 1728768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 1729768b7855SEmilio G. Cotafi 1730768b7855SEmilio G. Cota 173140d6444eSAvi Kivityif test "$pie" = ""; then 173240d6444eSAvi Kivity case "$cpu-$targetos" in 1733c72b26ecSRichard Henderson i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 173440d6444eSAvi Kivity ;; 173540d6444eSAvi Kivity *) 173640d6444eSAvi Kivity pie="no" 173740d6444eSAvi Kivity ;; 173840d6444eSAvi Kivity esac 173940d6444eSAvi Kivityfi 174040d6444eSAvi Kivity 174140d6444eSAvi Kivityif test "$pie" != "no" ; then 174240d6444eSAvi Kivity cat > $TMPC << EOF 174321d4a791SAvi Kivity 174421d4a791SAvi Kivity#ifdef __linux__ 174521d4a791SAvi Kivity# define THREAD __thread 174621d4a791SAvi Kivity#else 174721d4a791SAvi Kivity# define THREAD 174821d4a791SAvi Kivity#endif 174921d4a791SAvi Kivity 175021d4a791SAvi Kivitystatic THREAD int tls_var; 175121d4a791SAvi Kivity 175221d4a791SAvi Kivityint main(void) { return tls_var; } 175321d4a791SAvi Kivity 175440d6444eSAvi KivityEOF 175540d6444eSAvi Kivity if compile_prog "-fPIE -DPIE" "-pie"; then 175640d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 175740d6444eSAvi Kivity LDFLAGS="-pie $LDFLAGS" 175840d6444eSAvi Kivity pie="yes" 175940d6444eSAvi Kivity if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 176040d6444eSAvi Kivity LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 176140d6444eSAvi Kivity fi 176240d6444eSAvi Kivity else 176340d6444eSAvi Kivity if test "$pie" = "yes"; then 176476ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 176540d6444eSAvi Kivity else 176640d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 176740d6444eSAvi Kivity pie="no" 176840d6444eSAvi Kivity fi 176940d6444eSAvi Kivity fi 177046eef33bSBrad 1771e4a7b344SStefan Hajnoczi if compile_prog "-Werror -fno-pie" "-nopie"; then 177246eef33bSBrad CFLAGS_NOPIE="-fno-pie" 177346eef33bSBrad LDFLAGS_NOPIE="-nopie" 177446eef33bSBrad fi 177540d6444eSAvi Kivityfi 177640d6444eSAvi Kivity 177709dada40SPaolo Bonzini########################################## 177809dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 177909dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 178009dada40SPaolo Bonzini# specification is necessary 178109dada40SPaolo Bonzini 178209dada40SPaolo Bonziniif test "$cpu" = "i386"; then 178309dada40SPaolo Bonzini cat > $TMPC << EOF 178409dada40SPaolo Bonzinistatic int sfaa(int *ptr) 178509dada40SPaolo Bonzini{ 178609dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 178709dada40SPaolo Bonzini} 178809dada40SPaolo Bonzini 178909dada40SPaolo Bonziniint main(void) 179009dada40SPaolo Bonzini{ 179109dada40SPaolo Bonzini int val = 42; 17921405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 179309dada40SPaolo Bonzini sfaa(&val); 179409dada40SPaolo Bonzini return val; 179509dada40SPaolo Bonzini} 179609dada40SPaolo BonziniEOF 179709dada40SPaolo Bonzini if ! compile_prog "" "" ; then 179809dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 179909dada40SPaolo Bonzini fi 180009dada40SPaolo Bonzinifi 180109dada40SPaolo Bonzini 180209dada40SPaolo Bonzini######################################### 1803ec530c81Sbellard# Solaris specific configure tool chain decisions 180409dada40SPaolo Bonzini 1805ec530c81Sbellardif test "$solaris" = "yes" ; then 18066792aa11SLoïc Minier if has $install; then 18076792aa11SLoïc Minier : 18086792aa11SLoïc Minier else 180976ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 181076ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 181176ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1812ec530c81Sbellard fi 181389138857SStefan Weil if test "$(path_of $install)" = "/usr/sbin/install" ; then 181476ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 181576ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 181676ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1817ec530c81Sbellard fi 18186792aa11SLoïc Minier if has ar; then 18196792aa11SLoïc Minier : 18206792aa11SLoïc Minier else 1821ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 182276ad07a4SPeter Maydell error_exit "No path includes ar" \ 182376ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 1824ec530c81Sbellard fi 182576ad07a4SPeter Maydell error_exit "No path includes ar" 1826ec530c81Sbellard fi 1827ec530c81Sbellardfi 1828ec530c81Sbellard 1829afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 1830d880a3baSPaolo Bonzini for target in $default_target_list; do 1831d880a3baSPaolo Bonzini supported_target $target 2>/dev/null && \ 1832d880a3baSPaolo Bonzini target_list="$target_list $target" 1833d880a3baSPaolo Bonzini done 1834d880a3baSPaolo Bonzini target_list="${target_list# }" 1835121afa9eSAnthony Liguorielse 183689138857SStefan Weil target_list=$(echo "$target_list" | sed -e 's/,/ /g') 1837d880a3baSPaolo Bonzini for target in $target_list; do 183825b48338SPeter Maydell # Check that we recognised the target name; this allows a more 183925b48338SPeter Maydell # friendly error message than if we let it fall through. 184025b48338SPeter Maydell case " $default_target_list " in 184125b48338SPeter Maydell *" $target "*) 184225b48338SPeter Maydell ;; 184325b48338SPeter Maydell *) 184425b48338SPeter Maydell error_exit "Unknown target name '$target'" 184525b48338SPeter Maydell ;; 184625b48338SPeter Maydell esac 1847d880a3baSPaolo Bonzini supported_target $target || exit 1 184825b48338SPeter Maydell done 1849d880a3baSPaolo Bonzinifi 185025b48338SPeter Maydell 1851f55fe278SPaolo Bonzini# see if system emulation was really requested 1852f55fe278SPaolo Bonzinicase " $target_list " in 1853f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 1854f55fe278SPaolo Bonzini ;; 1855f55fe278SPaolo Bonzini *) softmmu=no 1856f55fe278SPaolo Bonzini ;; 1857f55fe278SPaolo Bonziniesac 18585327cf48Sbellard 1859249247c9SJuan Quintelafeature_not_found() { 1860249247c9SJuan Quintela feature=$1 186121684af0SStewart Smith remedy=$2 1862249247c9SJuan Quintela 186376ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 186421684af0SStewart Smith "configure was not able to find it." \ 186521684af0SStewart Smith "$remedy" 1866249247c9SJuan Quintela} 1867249247c9SJuan Quintela 18687d13299dSbellard# --- 18697d13299dSbellard# big/little endian test 18707d13299dSbellardcat > $TMPC << EOF 187161cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 187261cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 187361cc919fSMike Frysingerextern int foo(short *, short *); 187461cc919fSMike Frysingerint main(int argc, char *argv[]) { 187561cc919fSMike Frysinger return foo(big_endian, little_endian); 18767d13299dSbellard} 18777d13299dSbellardEOF 18787d13299dSbellard 187961cc919fSMike Frysingerif compile_object ; then 188061cc919fSMike Frysinger if grep -q BiGeNdIaN $TMPO ; then 188161cc919fSMike Frysinger bigendian="yes" 188261cc919fSMike Frysinger elif grep -q LiTtLeEnDiAn $TMPO ; then 188361cc919fSMike Frysinger bigendian="no" 18847d13299dSbellard else 18857d13299dSbellard echo big/little test failed 18867d13299dSbellard fi 18877d13299dSbellardelse 188861cc919fSMike Frysinger echo big/little test failed 18897d13299dSbellardfi 18907d13299dSbellard 1891b0a47e79SJuan Quintela########################################## 1892a30878e7SPeter Maydell# cocoa implies not SDL or GTK 1893a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI 1894a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code) 1895a30878e7SPeter Maydellif test "$cocoa" = "yes"; then 1896a30878e7SPeter Maydell if test "$sdl" = "yes"; then 1897a30878e7SPeter Maydell error_exit "Cocoa and SDL UIs cannot both be enabled at once" 1898a30878e7SPeter Maydell fi 1899a30878e7SPeter Maydell if test "$gtk" = "yes"; then 1900a30878e7SPeter Maydell error_exit "Cocoa and GTK UIs cannot both be enabled at once" 1901a30878e7SPeter Maydell fi 1902a30878e7SPeter Maydell gtk=no 1903a30878e7SPeter Maydell sdl=no 1904a30878e7SPeter Maydellfi 1905a30878e7SPeter Maydell 19066b39b063SEric Blake# Some versions of Mac OS X incorrectly define SIZE_MAX 19076b39b063SEric Blakecat > $TMPC << EOF 19086b39b063SEric Blake#include <stdint.h> 19096b39b063SEric Blake#include <stdio.h> 19106b39b063SEric Blakeint main(int argc, char *argv[]) { 19116b39b063SEric Blake return printf("%zu", SIZE_MAX); 19126b39b063SEric Blake} 19136b39b063SEric BlakeEOF 19146b39b063SEric Blakehave_broken_size_max=no 19156b39b063SEric Blakeif ! compile_object -Werror ; then 19166b39b063SEric Blake have_broken_size_max=yes 19176b39b063SEric Blakefi 19186b39b063SEric Blake 1919a30878e7SPeter Maydell########################################## 1920015a33bdSGonglei# L2TPV3 probe 1921015a33bdSGonglei 1922015a33bdSGongleicat > $TMPC <<EOF 1923015a33bdSGonglei#include <sys/socket.h> 1924bff6cb72SMichael Tokarev#include <linux/ip.h> 1925015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 1926015a33bdSGongleiEOF 1927015a33bdSGongleiif compile_prog "" "" ; then 1928015a33bdSGonglei l2tpv3=yes 1929015a33bdSGongleielse 1930015a33bdSGonglei l2tpv3=no 1931015a33bdSGongleifi 1932015a33bdSGonglei 1933015a33bdSGonglei########################################## 19344d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check 19354d9310f4SDaniel P. Berrange 19364d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then 19374d9310f4SDaniel P. Berrange # Some versions of MinGW / Mingw-w64 lack localtime_r 19384d9310f4SDaniel P. Berrange # and gmtime_r entirely. 19394d9310f4SDaniel P. Berrange # 19404d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 define a macro for 19414d9310f4SDaniel P. Berrange # localtime_r/gmtime_r. 19424d9310f4SDaniel P. Berrange # 19434d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 will define functions 19444d9310f4SDaniel P. Berrange # for localtime_r/gmtime_r, but only if you have 19454d9310f4SDaniel P. Berrange # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun 19464d9310f4SDaniel P. Berrange # though, unistd.h and pthread.h both define 19474d9310f4SDaniel P. Berrange # that for you. 19484d9310f4SDaniel P. Berrange # 19494d9310f4SDaniel P. Berrange # So this #undef localtime_r and #include <unistd.h> 19504d9310f4SDaniel P. Berrange # are not in fact redundant. 19514d9310f4SDaniel P. Berrangecat > $TMPC << EOF 19524d9310f4SDaniel P. Berrange#include <unistd.h> 19534d9310f4SDaniel P. Berrange#include <time.h> 19544d9310f4SDaniel P. Berrange#undef localtime_r 19554d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; } 19564d9310f4SDaniel P. BerrangeEOF 19574d9310f4SDaniel P. Berrange if compile_prog "" "" ; then 19584d9310f4SDaniel P. Berrange localtime_r="yes" 19594d9310f4SDaniel P. Berrange else 19604d9310f4SDaniel P. Berrange localtime_r="no" 19614d9310f4SDaniel P. Berrange fi 19624d9310f4SDaniel P. Berrangefi 19634d9310f4SDaniel P. Berrange 19644d9310f4SDaniel P. Berrange########################################## 1965779ab5e3SStefan Weil# pkg-config probe 1966779ab5e3SStefan Weil 1967779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 196876ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 1969779ab5e3SStefan Weilfi 1970779ab5e3SStefan Weil 1971779ab5e3SStefan Weil########################################## 1972b0a47e79SJuan Quintela# NPTL probe 1973b0a47e79SJuan Quintela 197424cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 1975bd0c5661Spbrook cat > $TMPC <<EOF 1976bd0c5661Spbrook#include <sched.h> 197730813ceaSpbrook#include <linux/futex.h> 1978182eacc0SStefan Weilint main(void) { 1979bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1980bd0c5661Spbrook#error bork 1981bd0c5661Spbrook#endif 1982182eacc0SStefan Weil return 0; 1983bd0c5661Spbrook} 1984bd0c5661SpbrookEOF 198524cb36a6SPeter Maydell if ! compile_object ; then 198621684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 1987b0a47e79SJuan Quintela fi 1988bd0c5661Spbrookfi 1989bd0c5661Spbrook 199099f2dbd3SLiang Li######################################### 1991ac62922eSbalrog# zlib check 1992ac62922eSbalrog 19931ece9905SAlon Levyif test "$zlib" != "no" ; then 1994ac62922eSbalrog cat > $TMPC << EOF 1995ac62922eSbalrog#include <zlib.h> 1996ac62922eSbalrogint main(void) { zlibVersion(); return 0; } 1997ac62922eSbalrogEOF 199852166aa0SJuan Quintela if compile_prog "" "-lz" ; then 1999ac62922eSbalrog : 2000ac62922eSbalrog else 200176ad07a4SPeter Maydell error_exit "zlib check failed" \ 200276ad07a4SPeter Maydell "Make sure to have the zlib libs and headers installed." 2003ac62922eSbalrog fi 20041ece9905SAlon Levyfi 2005eb0ecd5aSWill NewtonLIBS="$LIBS -lz" 2006ac62922eSbalrog 2007ac62922eSbalrog########################################## 2008607dacd0Sqiaonuohan# lzo check 2009607dacd0Sqiaonuohan 2010607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 2011607dacd0Sqiaonuohan cat > $TMPC << EOF 2012607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 2013607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 2014607dacd0SqiaonuohanEOF 2015607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 2016607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 2017b25c9dffSStefan Weil lzo="yes" 2018b25c9dffSStefan Weil else 2019b25c9dffSStefan Weil if test "$lzo" = "yes"; then 2020b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 2021b25c9dffSStefan Weil fi 2022b25c9dffSStefan Weil lzo="no" 2023b25c9dffSStefan Weil fi 2024607dacd0Sqiaonuohanfi 2025607dacd0Sqiaonuohan 2026607dacd0Sqiaonuohan########################################## 2027607dacd0Sqiaonuohan# snappy check 2028607dacd0Sqiaonuohan 2029607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 2030607dacd0Sqiaonuohan cat > $TMPC << EOF 2031607dacd0Sqiaonuohan#include <snappy-c.h> 2032607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 2033607dacd0SqiaonuohanEOF 2034607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 2035607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 2036b25c9dffSStefan Weil snappy="yes" 2037b25c9dffSStefan Weil else 2038b25c9dffSStefan Weil if test "$snappy" = "yes"; then 2039b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 2040b25c9dffSStefan Weil fi 2041b25c9dffSStefan Weil snappy="no" 2042b25c9dffSStefan Weil fi 2043607dacd0Sqiaonuohanfi 2044607dacd0Sqiaonuohan 2045607dacd0Sqiaonuohan########################################## 20466b383c08SPeter Wu# bzip2 check 20476b383c08SPeter Wu 20486b383c08SPeter Wuif test "$bzip2" != "no" ; then 20496b383c08SPeter Wu cat > $TMPC << EOF 20506b383c08SPeter Wu#include <bzlib.h> 20516b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 20526b383c08SPeter WuEOF 20536b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 20546b383c08SPeter Wu bzip2="yes" 20556b383c08SPeter Wu else 20566b383c08SPeter Wu if test "$bzip2" = "yes"; then 20576b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 20586b383c08SPeter Wu fi 20596b383c08SPeter Wu bzip2="no" 20606b383c08SPeter Wu fi 20616b383c08SPeter Wufi 20626b383c08SPeter Wu 20636b383c08SPeter Wu########################################## 2064f794573eSEduardo Otubo# libseccomp check 2065f794573eSEduardo Otubo 2066f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 2067693e5910SAndrew Jones case "$cpu" in 2068693e5910SAndrew Jones i386|x86_64) 2069ba060c53Sdann frazier libseccomp_minver="2.1.0" 2070693e5910SAndrew Jones ;; 20715ce43972SJames Hogan mips) 20725ce43972SJames Hogan libseccomp_minver="2.2.0" 20735ce43972SJames Hogan ;; 2074693e5910SAndrew Jones arm|aarch64) 2075693e5910SAndrew Jones libseccomp_minver="2.2.3" 2076693e5910SAndrew Jones ;; 20773aa35fcfSThomas Huth ppc|ppc64|s390x) 20783e684455SMichael Strosaker libseccomp_minver="2.3.0" 20793e684455SMichael Strosaker ;; 2080693e5910SAndrew Jones *) 2081693e5910SAndrew Jones libseccomp_minver="" 2082693e5910SAndrew Jones ;; 2083693e5910SAndrew Jones esac 2084693e5910SAndrew Jones 2085693e5910SAndrew Jones if test "$libseccomp_minver" != "" && 2086693e5910SAndrew Jones $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then 2087c3883e1fSFam Zheng seccomp_cflags="$($pkg_config --cflags libseccomp)" 2088c3883e1fSFam Zheng seccomp_libs="$($pkg_config --libs libseccomp)" 2089f794573eSEduardo Otubo seccomp="yes" 2090f794573eSEduardo Otubo else 2091f794573eSEduardo Otubo if test "$seccomp" = "yes" ; then 2092693e5910SAndrew Jones if test "$libseccomp_minver" != "" ; then 2093693e5910SAndrew Jones feature_not_found "libseccomp" \ 2094693e5910SAndrew Jones "Install libseccomp devel >= $libseccomp_minver" 2095693e5910SAndrew Jones else 2096693e5910SAndrew Jones feature_not_found "libseccomp" \ 2097693e5910SAndrew Jones "libseccomp is not supported for host cpu $cpu" 2098693e5910SAndrew Jones fi 2099896848f0SEduardo Otubo fi 2100e84d5956SYann E. MORIN seccomp="no" 2101f794573eSEduardo Otubo fi 2102f794573eSEduardo Otubofi 2103f794573eSEduardo Otubo########################################## 2104e37630caSaliguori# xen probe 2105e37630caSaliguori 2106fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 2107c1cdd9d5SJuergen Gross # Check whether Xen library path is specified via --extra-ldflags to avoid 2108c1cdd9d5SJuergen Gross # overriding this setting with pkg-config output. If not, try pkg-config 2109c1cdd9d5SJuergen Gross # to obtain all needed flags. 2110c1cdd9d5SJuergen Gross 2111c1cdd9d5SJuergen Gross if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \ 2112c1cdd9d5SJuergen Gross $pkg_config --exists xencontrol ; then 2113c1cdd9d5SJuergen Gross xen_ctrl_version="$(printf '%d%02d%02d' \ 2114c1cdd9d5SJuergen Gross $($pkg_config --modversion xencontrol | sed 's/\./ /g') )" 2115c1cdd9d5SJuergen Gross xen=yes 2116c1cdd9d5SJuergen Gross xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab" 2117c1cdd9d5SJuergen Gross xen_pc="$xen_pc xenevtchn xendevicemodel" 2118c1cdd9d5SJuergen Gross QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)" 2119c1cdd9d5SJuergen Gross libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu" 2120c1cdd9d5SJuergen Gross LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS" 2121c1cdd9d5SJuergen Gross else 2122c1cdd9d5SJuergen Gross 2123b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 2124d9506cabSAnthony PERARD xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn" 2125d5b93ddfSAnthony PERARD 212650ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 212750ced5b3SStefan Weil # If no, we are done and there is no Xen support. 212850ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 212950ced5b3SStefan Weil 213050ced5b3SStefan Weil # Xen (any) 213150ced5b3SStefan Weil cat > $TMPC <<EOF 213250ced5b3SStefan Weil#include <xenctrl.h> 213350ced5b3SStefan Weilint main(void) { 213450ced5b3SStefan Weil return 0; 213550ced5b3SStefan Weil} 213650ced5b3SStefan WeilEOF 213750ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 213850ced5b3SStefan Weil # Xen not found 213950ced5b3SStefan Weil if test "$xen" = "yes" ; then 214021684af0SStewart Smith feature_not_found "xen" "Install xen devel" 214150ced5b3SStefan Weil fi 214250ced5b3SStefan Weil xen=no 214350ced5b3SStefan Weil 2144d5b93ddfSAnthony PERARD # Xen unstable 214569deef08SPeter Maydell elif 214669deef08SPeter Maydell cat > $TMPC <<EOF && 21475ba3d756SIgor Druzhinin#undef XC_WANT_COMPAT_MAP_FOREIGN_API 21485ba3d756SIgor Druzhinin#include <xenforeignmemory.h> 21495ba3d756SIgor Druzhininint main(void) { 21505ba3d756SIgor Druzhinin xenforeignmemory_handle *xfmem; 21515ba3d756SIgor Druzhinin 21525ba3d756SIgor Druzhinin xfmem = xenforeignmemory_open(0, 0); 21535ba3d756SIgor Druzhinin xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0); 21545ba3d756SIgor Druzhinin 21555ba3d756SIgor Druzhinin return 0; 21565ba3d756SIgor Druzhinin} 21575ba3d756SIgor DruzhininEOF 21585ba3d756SIgor Druzhinin compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 21595ba3d756SIgor Druzhinin then 21605ba3d756SIgor Druzhinin xen_stable_libs="-lxendevicemodel $xen_stable_libs" 21615ba3d756SIgor Druzhinin xen_ctrl_version=41000 21625ba3d756SIgor Druzhinin xen=yes 21635ba3d756SIgor Druzhinin elif 21645ba3d756SIgor Druzhinin cat > $TMPC <<EOF && 2165da8090ccSPaul Durrant#undef XC_WANT_COMPAT_DEVICEMODEL_API 2166da8090ccSPaul Durrant#define __XEN_TOOLS__ 2167da8090ccSPaul Durrant#include <xendevicemodel.h> 2168da8090ccSPaul Durrantint main(void) { 2169da8090ccSPaul Durrant xendevicemodel_handle *xd; 2170da8090ccSPaul Durrant 2171da8090ccSPaul Durrant xd = xendevicemodel_open(0, 0); 2172da8090ccSPaul Durrant xendevicemodel_close(xd); 2173da8090ccSPaul Durrant 2174da8090ccSPaul Durrant return 0; 2175da8090ccSPaul Durrant} 2176da8090ccSPaul DurrantEOF 2177da8090ccSPaul Durrant compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 2178da8090ccSPaul Durrant then 2179da8090ccSPaul Durrant xen_stable_libs="-lxendevicemodel $xen_stable_libs" 2180f1167ee6SJuergen Gross xen_ctrl_version=40900 2181da8090ccSPaul Durrant xen=yes 2182da8090ccSPaul Durrant elif 2183da8090ccSPaul Durrant cat > $TMPC <<EOF && 21845eeb39c2SIan Campbell/* 21855eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat 21865eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given. 2187b6eb9b45SPaulina Szubarczyk * 2188b6eb9b45SPaulina Szubarczyk * Also, check if xengnttab_grant_copy_segment_t is defined and 2189b6eb9b45SPaulina Szubarczyk * grant copy operation is implemented. 2190b6eb9b45SPaulina Szubarczyk */ 2191b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_EVTCHN_API 2192b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_GNTTAB_API 2193b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2194b6eb9b45SPaulina Szubarczyk#include <xenctrl.h> 2195b6eb9b45SPaulina Szubarczyk#include <xenstore.h> 2196b6eb9b45SPaulina Szubarczyk#include <xenevtchn.h> 2197b6eb9b45SPaulina Szubarczyk#include <xengnttab.h> 2198b6eb9b45SPaulina Szubarczyk#include <xenforeignmemory.h> 2199b6eb9b45SPaulina Szubarczyk#include <stdint.h> 2200b6eb9b45SPaulina Szubarczyk#include <xen/hvm/hvm_info_table.h> 2201b6eb9b45SPaulina Szubarczyk#if !defined(HVM_MAX_VCPUS) 2202b6eb9b45SPaulina Szubarczyk# error HVM_MAX_VCPUS not defined 2203b6eb9b45SPaulina Szubarczyk#endif 2204b6eb9b45SPaulina Szubarczykint main(void) { 2205b6eb9b45SPaulina Szubarczyk xc_interface *xc = NULL; 2206b6eb9b45SPaulina Szubarczyk xenforeignmemory_handle *xfmem; 2207b6eb9b45SPaulina Szubarczyk xenevtchn_handle *xe; 2208b6eb9b45SPaulina Szubarczyk xengnttab_handle *xg; 2209b6eb9b45SPaulina Szubarczyk xen_domain_handle_t handle; 2210b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy_segment_t* seg = NULL; 2211b6eb9b45SPaulina Szubarczyk 2212b6eb9b45SPaulina Szubarczyk xs_daemon_open(); 2213b6eb9b45SPaulina Szubarczyk 2214b6eb9b45SPaulina Szubarczyk xc = xc_interface_open(0, 0, 0); 2215b6eb9b45SPaulina Szubarczyk xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2216b6eb9b45SPaulina Szubarczyk xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2217b6eb9b45SPaulina Szubarczyk xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2218b6eb9b45SPaulina Szubarczyk xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2219b6eb9b45SPaulina Szubarczyk xc_domain_create(xc, 0, handle, 0, NULL, NULL); 2220b6eb9b45SPaulina Szubarczyk 2221b6eb9b45SPaulina Szubarczyk xfmem = xenforeignmemory_open(0, 0); 2222b6eb9b45SPaulina Szubarczyk xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 2223b6eb9b45SPaulina Szubarczyk 2224b6eb9b45SPaulina Szubarczyk xe = xenevtchn_open(0, 0); 2225b6eb9b45SPaulina Szubarczyk xenevtchn_fd(xe); 2226b6eb9b45SPaulina Szubarczyk 2227b6eb9b45SPaulina Szubarczyk xg = xengnttab_open(0, 0); 2228b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy(xg, 0, seg); 2229b6eb9b45SPaulina Szubarczyk 2230b6eb9b45SPaulina Szubarczyk return 0; 2231b6eb9b45SPaulina Szubarczyk} 2232b6eb9b45SPaulina SzubarczykEOF 2233b6eb9b45SPaulina Szubarczyk compile_prog "" "$xen_libs $xen_stable_libs" 2234b6eb9b45SPaulina Szubarczyk then 2235f1167ee6SJuergen Gross xen_ctrl_version=40800 2236b6eb9b45SPaulina Szubarczyk xen=yes 2237b6eb9b45SPaulina Szubarczyk elif 2238b6eb9b45SPaulina Szubarczyk cat > $TMPC <<EOF && 2239b6eb9b45SPaulina Szubarczyk/* 2240b6eb9b45SPaulina Szubarczyk * If we have stable libs the we don't want the libxc compat 2241b6eb9b45SPaulina Szubarczyk * layers, regardless of what CFLAGS we may have been given. 22425eeb39c2SIan Campbell */ 22435eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API 22445eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API 22455eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API 22465eeb39c2SIan Campbell#include <xenctrl.h> 22475eeb39c2SIan Campbell#include <xenstore.h> 22485eeb39c2SIan Campbell#include <xenevtchn.h> 22495eeb39c2SIan Campbell#include <xengnttab.h> 22505eeb39c2SIan Campbell#include <xenforeignmemory.h> 22515eeb39c2SIan Campbell#include <stdint.h> 22525eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h> 22535eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS) 22545eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined 22555eeb39c2SIan Campbell#endif 22565eeb39c2SIan Campbellint main(void) { 22575eeb39c2SIan Campbell xc_interface *xc = NULL; 22585eeb39c2SIan Campbell xenforeignmemory_handle *xfmem; 22595eeb39c2SIan Campbell xenevtchn_handle *xe; 22605eeb39c2SIan Campbell xengnttab_handle *xg; 22615eeb39c2SIan Campbell xen_domain_handle_t handle; 22625eeb39c2SIan Campbell 22635eeb39c2SIan Campbell xs_daemon_open(); 22645eeb39c2SIan Campbell 22655eeb39c2SIan Campbell xc = xc_interface_open(0, 0, 0); 22665eeb39c2SIan Campbell xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 22675eeb39c2SIan Campbell xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 22685eeb39c2SIan Campbell xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 22695eeb39c2SIan Campbell xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 22705eeb39c2SIan Campbell xc_domain_create(xc, 0, handle, 0, NULL, NULL); 22715eeb39c2SIan Campbell 22725eeb39c2SIan Campbell xfmem = xenforeignmemory_open(0, 0); 22735eeb39c2SIan Campbell xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 22745eeb39c2SIan Campbell 22755eeb39c2SIan Campbell xe = xenevtchn_open(0, 0); 22765eeb39c2SIan Campbell xenevtchn_fd(xe); 22775eeb39c2SIan Campbell 22785eeb39c2SIan Campbell xg = xengnttab_open(0, 0); 22795eeb39c2SIan Campbell xengnttab_map_grant_ref(xg, 0, 0, 0); 22805eeb39c2SIan Campbell 22815eeb39c2SIan Campbell return 0; 22825eeb39c2SIan Campbell} 22835eeb39c2SIan CampbellEOF 22845eeb39c2SIan Campbell compile_prog "" "$xen_libs $xen_stable_libs" 22855eeb39c2SIan Campbell then 2286f1167ee6SJuergen Gross xen_ctrl_version=40701 22875eeb39c2SIan Campbell xen=yes 22885eeb39c2SIan Campbell elif 22895eeb39c2SIan Campbell cat > $TMPC <<EOF && 2290e37630caSaliguori#include <xenctrl.h> 2291cdadde39SRoger Pau Monne#include <stdint.h> 2292cdadde39SRoger Pau Monneint main(void) { 2293cdadde39SRoger Pau Monne xc_interface *xc = NULL; 2294cdadde39SRoger Pau Monne xen_domain_handle_t handle; 2295cdadde39SRoger Pau Monne xc_domain_create(xc, 0, handle, 0, NULL, NULL); 2296cdadde39SRoger Pau Monne return 0; 2297cdadde39SRoger Pau Monne} 2298cdadde39SRoger Pau MonneEOF 2299cdadde39SRoger Pau Monne compile_prog "" "$xen_libs" 2300cdadde39SRoger Pau Monne then 2301f1167ee6SJuergen Gross xen_ctrl_version=40700 2302cdadde39SRoger Pau Monne xen=yes 2303cdadde39SRoger Pau Monne 2304cdadde39SRoger Pau Monne # Xen 4.6 2305cdadde39SRoger Pau Monne elif 2306cdadde39SRoger Pau Monne cat > $TMPC <<EOF && 2307cdadde39SRoger Pau Monne#include <xenctrl.h> 2308e108a3c1SAnthony PERARD#include <xenstore.h> 2309d5b93ddfSAnthony PERARD#include <stdint.h> 2310d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 2311d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 2312d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 2313d5b93ddfSAnthony PERARD#endif 2314d5b93ddfSAnthony PERARDint main(void) { 2315d5b93ddfSAnthony PERARD xc_interface *xc; 2316d5b93ddfSAnthony PERARD xs_daemon_open(); 2317d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 2318d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2319d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 2320b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 23218688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2322d8b441a3SJan Beulich xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 232320a544c7SKonrad Rzeszutek Wilk xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0); 2324d8b441a3SJan Beulich return 0; 2325d8b441a3SJan Beulich} 2326d8b441a3SJan BeulichEOF 2327d8b441a3SJan Beulich compile_prog "" "$xen_libs" 2328d8b441a3SJan Beulich then 2329f1167ee6SJuergen Gross xen_ctrl_version=40600 2330d8b441a3SJan Beulich xen=yes 2331d8b441a3SJan Beulich 2332d8b441a3SJan Beulich # Xen 4.5 2333d8b441a3SJan Beulich elif 2334d8b441a3SJan Beulich cat > $TMPC <<EOF && 2335d8b441a3SJan Beulich#include <xenctrl.h> 2336d8b441a3SJan Beulich#include <xenstore.h> 2337d8b441a3SJan Beulich#include <stdint.h> 2338d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h> 2339d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS) 2340d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined 2341d8b441a3SJan Beulich#endif 2342d8b441a3SJan Beulichint main(void) { 2343d8b441a3SJan Beulich xc_interface *xc; 2344d8b441a3SJan Beulich xs_daemon_open(); 2345d8b441a3SJan Beulich xc = xc_interface_open(0, 0, 0); 2346d8b441a3SJan Beulich xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2347d8b441a3SJan Beulich xc_gnttab_open(NULL, 0); 2348d8b441a3SJan Beulich xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2349d8b441a3SJan Beulich xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 23503996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 23513996e85cSPaul Durrant return 0; 23523996e85cSPaul Durrant} 23533996e85cSPaul DurrantEOF 23543996e85cSPaul Durrant compile_prog "" "$xen_libs" 23553996e85cSPaul Durrant then 2356f1167ee6SJuergen Gross xen_ctrl_version=40500 23573996e85cSPaul Durrant xen=yes 23583996e85cSPaul Durrant 23593996e85cSPaul Durrant elif 23603996e85cSPaul Durrant cat > $TMPC <<EOF && 23613996e85cSPaul Durrant#include <xenctrl.h> 23623996e85cSPaul Durrant#include <xenstore.h> 23633996e85cSPaul Durrant#include <stdint.h> 23643996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 23653996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 23663996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 23673996e85cSPaul Durrant#endif 23683996e85cSPaul Durrantint main(void) { 23693996e85cSPaul Durrant xc_interface *xc; 23703996e85cSPaul Durrant xs_daemon_open(); 23713996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 23723996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 23733996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 23743996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 23753996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 23768688e065SStefano Stabellini return 0; 23778688e065SStefano Stabellini} 23788688e065SStefano StabelliniEOF 23798688e065SStefano Stabellini compile_prog "" "$xen_libs" 238069deef08SPeter Maydell then 2381f1167ee6SJuergen Gross xen_ctrl_version=40200 23828688e065SStefano Stabellini xen=yes 23838688e065SStefano Stabellini 2384e37630caSaliguori else 2385fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 2386edfb07edSIan Campbell feature_not_found "xen (unsupported version)" \ 2387edfb07edSIan Campbell "Install a supported xen (xen 4.2 or newer)" 2388fc321b4bSJuan Quintela fi 2389fc321b4bSJuan Quintela xen=no 2390e37630caSaliguori fi 2391d5b93ddfSAnthony PERARD 2392d5b93ddfSAnthony PERARD if test "$xen" = yes; then 2393f1167ee6SJuergen Gross if test $xen_ctrl_version -ge 40701 ; then 23945eeb39c2SIan Campbell libs_softmmu="$xen_stable_libs $libs_softmmu" 23955eeb39c2SIan Campbell fi 2396d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 2397d5b93ddfSAnthony PERARD fi 2398e37630caSaliguori fi 2399c1cdd9d5SJuergen Grossfi 2400e37630caSaliguori 2401eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 2402edfb07edSIan Campbell if test "$xen" = "yes" && test "$linux" = "yes"; then 2403eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 2404eb6fda0fSAnthony PERARD else 2405eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 240676ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 240776ad07a4SPeter Maydell " but this feature requires /sys from Linux" 2408eb6fda0fSAnthony PERARD fi 2409eb6fda0fSAnthony PERARD xen_pci_passthrough=no 2410eb6fda0fSAnthony PERARD fi 2411eb6fda0fSAnthony PERARDfi 2412eb6fda0fSAnthony PERARD 241364a7ad6fSIan Campbellif test "$xen_pv_domain_build" = "yes" && 241464a7ad6fSIan Campbell test "$xen" != "yes"; then 241564a7ad6fSIan Campbell error_exit "User requested Xen PV domain builder support" \ 241664a7ad6fSIan Campbell "which requires Xen support." 241764a7ad6fSIan Campbellfi 241864a7ad6fSIan Campbell 2419e37630caSaliguori########################################## 2420dfffc653SJuan Quintela# Sparse probe 2421dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 24220dba6195SLoïc Minier if has cgcc; then 2423dfffc653SJuan Quintela sparse=yes 2424dfffc653SJuan Quintela else 2425dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 242621684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 2427dfffc653SJuan Quintela fi 2428dfffc653SJuan Quintela sparse=no 2429dfffc653SJuan Quintela fi 2430dfffc653SJuan Quintelafi 2431dfffc653SJuan Quintela 2432dfffc653SJuan Quintela########################################## 2433f676c67eSJeremy White# X11 probe 2434f676c67eSJeremy Whitex11_cflags= 2435f676c67eSJeremy Whitex11_libs=-lX11 2436f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 243789138857SStefan Weil x11_cflags=$($pkg_config --cflags x11) 243889138857SStefan Weil x11_libs=$($pkg_config --libs x11) 2439f676c67eSJeremy Whitefi 2440f676c67eSJeremy White 2441f676c67eSJeremy White########################################## 2442a4ccabcfSAnthony Liguori# GTK probe 2443a4ccabcfSAnthony Liguori 24449e04c683SStefan Weilif test "$gtkabi" = ""; then 24455fe309ffSGerd Hoffmann # The GTK ABI was not specified explicitly, so try whether 3.0 is available. 24465fe309ffSGerd Hoffmann # Use 2.0 as a fallback if that is available. 24475fe309ffSGerd Hoffmann if $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 24489e04c683SStefan Weil gtkabi=3.0 24495fe309ffSGerd Hoffmann elif $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 24509e04c683SStefan Weil gtkabi=2.0 24515fe309ffSGerd Hoffmann else 24525fe309ffSGerd Hoffmann gtkabi=3.0 24539e04c683SStefan Weil fi 24549e04c683SStefan Weilfi 24559e04c683SStefan Weil 2456a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then 2457528de90aSDaniel P. Berrange gtkpackage="gtk+-$gtkabi" 24580a337ed0SGerd Hoffmann gtkx11package="gtk+-x11-$gtkabi" 2459528de90aSDaniel P. Berrange if test "$gtkabi" = "3.0" ; then 2460528de90aSDaniel P. Berrange gtkversion="3.0.0" 2461bbbf9bfbSStefan Weil else 2462bbbf9bfbSStefan Weil gtkversion="2.18.0" 2463bbbf9bfbSStefan Weil fi 2464bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 246589138857SStefan Weil gtk_cflags=$($pkg_config --cflags $gtkpackage) 246689138857SStefan Weil gtk_libs=$($pkg_config --libs $gtkpackage) 246789138857SStefan Weil gtk_version=$($pkg_config --modversion $gtkpackage) 24680a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 2469f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 2470f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 24710a337ed0SGerd Hoffmann fi 2472bbbf9bfbSStefan Weil libs_softmmu="$gtk_libs $libs_softmmu" 2473bbbf9bfbSStefan Weil gtk="yes" 2474bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 24755fe309ffSGerd Hoffmann feature_not_found "gtk" "Install gtk3-devel" 2476bbbf9bfbSStefan Weil else 2477bbbf9bfbSStefan Weil gtk="no" 2478bbbf9bfbSStefan Weil fi 2479bbbf9bfbSStefan Weilfi 2480bbbf9bfbSStefan Weil 2481ddbb0d09SDaniel P. Berrange 2482ddbb0d09SDaniel P. Berrange########################################## 2483ddbb0d09SDaniel P. Berrange# GNUTLS probe 2484ddbb0d09SDaniel P. Berrange 248537371299SPeter Maydellgnutls_works() { 248637371299SPeter Maydell # Unfortunately some distros have bad pkg-config information for gnutls 248737371299SPeter Maydell # such that it claims to exist but you get a compiler error if you try 248837371299SPeter Maydell # to use the options returned by --libs. Specifically, Ubuntu for --static 248937371299SPeter Maydell # builds doesn't work: 249037371299SPeter Maydell # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035 249137371299SPeter Maydell # 249237371299SPeter Maydell # So sanity check the cflags/libs before assuming gnutls can be used. 249337371299SPeter Maydell if ! $pkg_config --exists "gnutls"; then 249437371299SPeter Maydell return 1 249537371299SPeter Maydell fi 249637371299SPeter Maydell 249737371299SPeter Maydell write_c_skeleton 249837371299SPeter Maydell compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)" 249937371299SPeter Maydell} 250037371299SPeter Maydell 250162893b67SDaniel P. Berrangegnutls_gcrypt=no 2502ed754746SDaniel P. Berrangegnutls_nettle=no 2503ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then 250437371299SPeter Maydell if gnutls_works; then 250589138857SStefan Weil gnutls_cflags=$($pkg_config --cflags gnutls) 250689138857SStefan Weil gnutls_libs=$($pkg_config --libs gnutls) 2507ddbb0d09SDaniel P. Berrange libs_softmmu="$gnutls_libs $libs_softmmu" 2508ddbb0d09SDaniel P. Berrange libs_tools="$gnutls_libs $libs_tools" 2509ddbb0d09SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 2510ddbb0d09SDaniel P. Berrange gnutls="yes" 2511ddbb0d09SDaniel P. Berrange 2512b917da4cSDaniel P. Berrange # gnutls_rnd requires >= 2.11.0 2513b917da4cSDaniel P. Berrange if $pkg_config --exists "gnutls >= 2.11.0"; then 2514b917da4cSDaniel P. Berrange gnutls_rnd="yes" 2515b917da4cSDaniel P. Berrange else 2516b917da4cSDaniel P. Berrange gnutls_rnd="no" 2517b917da4cSDaniel P. Berrange fi 2518b917da4cSDaniel P. Berrange 251962893b67SDaniel P. Berrange if $pkg_config --exists 'gnutls >= 3.0'; then 252062893b67SDaniel P. Berrange gnutls_gcrypt=no 2521ed754746SDaniel P. Berrange gnutls_nettle=yes 252262893b67SDaniel P. Berrange elif $pkg_config --exists 'gnutls >= 2.12'; then 252389138857SStefan Weil case $($pkg_config --libs --static gnutls) in 2524ed754746SDaniel P. Berrange *gcrypt*) 2525ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2526ed754746SDaniel P. Berrange gnutls_nettle=no 2527ed754746SDaniel P. Berrange ;; 2528ed754746SDaniel P. Berrange *nettle*) 2529ed754746SDaniel P. Berrange gnutls_gcrypt=no 2530ed754746SDaniel P. Berrange gnutls_nettle=yes 2531ed754746SDaniel P. Berrange ;; 2532ed754746SDaniel P. Berrange *) 2533ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2534ed754746SDaniel P. Berrange gnutls_nettle=no 2535ed754746SDaniel P. Berrange ;; 253662893b67SDaniel P. Berrange esac 253762893b67SDaniel P. Berrange else 253862893b67SDaniel P. Berrange gnutls_gcrypt=yes 2539ed754746SDaniel P. Berrange gnutls_nettle=no 254062893b67SDaniel P. Berrange fi 2541ddbb0d09SDaniel P. Berrange elif test "$gnutls" = "yes"; then 2542ddbb0d09SDaniel P. Berrange feature_not_found "gnutls" "Install gnutls devel" 2543ddbb0d09SDaniel P. Berrange else 2544ddbb0d09SDaniel P. Berrange gnutls="no" 2545b917da4cSDaniel P. Berrange gnutls_rnd="no" 2546ddbb0d09SDaniel P. Berrange fi 2547ddbb0d09SDaniel P. Berrangeelse 2548b917da4cSDaniel P. Berrange gnutls_rnd="no" 2549ddbb0d09SDaniel P. Berrangefi 2550ddbb0d09SDaniel P. Berrange 255191bfcdb0SDaniel P. Berrange 255291bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag, 255391bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle 255491bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to nettle 255591bfcdb0SDaniel P. Berrangeif test -z "$gcrypt" 255691bfcdb0SDaniel P. Berrangethen 255791bfcdb0SDaniel P. Berrange if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes" 255891bfcdb0SDaniel P. Berrange then 255991bfcdb0SDaniel P. Berrange gcrypt="no" 256091bfcdb0SDaniel P. Berrange fi 256191bfcdb0SDaniel P. Berrangefi 256291bfcdb0SDaniel P. Berrange 256391bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag, 256491bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt 256591bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to gcrypt 256691bfcdb0SDaniel P. Berrangeif test -z "$nettle" 256791bfcdb0SDaniel P. Berrangethen 256891bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes" 256991bfcdb0SDaniel P. Berrange then 257091bfcdb0SDaniel P. Berrange nettle="no" 257191bfcdb0SDaniel P. Berrange fi 257291bfcdb0SDaniel P. Berrangefi 257391bfcdb0SDaniel P. Berrange 257491bfcdb0SDaniel P. Berrangehas_libgcrypt_config() { 257591bfcdb0SDaniel P. Berrange if ! has "libgcrypt-config" 257691bfcdb0SDaniel P. Berrange then 257791bfcdb0SDaniel P. Berrange return 1 257891bfcdb0SDaniel P. Berrange fi 257991bfcdb0SDaniel P. Berrange 258091bfcdb0SDaniel P. Berrange if test -n "$cross_prefix" 258191bfcdb0SDaniel P. Berrange then 258289138857SStefan Weil host=$(libgcrypt-config --host) 258391bfcdb0SDaniel P. Berrange if test "$host-" != $cross_prefix 258491bfcdb0SDaniel P. Berrange then 258591bfcdb0SDaniel P. Berrange return 1 258691bfcdb0SDaniel P. Berrange fi 258791bfcdb0SDaniel P. Berrange fi 258891bfcdb0SDaniel P. Berrange 258991bfcdb0SDaniel P. Berrange return 0 259091bfcdb0SDaniel P. Berrange} 259191bfcdb0SDaniel P. Berrange 259291bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then 259391bfcdb0SDaniel P. Berrange if has_libgcrypt_config; then 259489138857SStefan Weil gcrypt_cflags=$(libgcrypt-config --cflags) 259589138857SStefan Weil gcrypt_libs=$(libgcrypt-config --libs) 259691bfcdb0SDaniel P. Berrange # Debian has remove -lgpg-error from libgcrypt-config 259791bfcdb0SDaniel P. Berrange # as it "spreads unnecessary dependencies" which in 259891bfcdb0SDaniel P. Berrange # turn breaks static builds... 259991bfcdb0SDaniel P. Berrange if test "$static" = "yes" 260091bfcdb0SDaniel P. Berrange then 260191bfcdb0SDaniel P. Berrange gcrypt_libs="$gcrypt_libs -lgpg-error" 260291bfcdb0SDaniel P. Berrange fi 260362893b67SDaniel P. Berrange libs_softmmu="$gcrypt_libs $libs_softmmu" 260462893b67SDaniel P. Berrange libs_tools="$gcrypt_libs $libs_tools" 260562893b67SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" 260691bfcdb0SDaniel P. Berrange gcrypt="yes" 260791bfcdb0SDaniel P. Berrange if test -z "$nettle"; then 260891bfcdb0SDaniel P. Berrange nettle="no" 260991bfcdb0SDaniel P. Berrange fi 261037788f25SDaniel P. Berrange 261137788f25SDaniel P. Berrange cat > $TMPC << EOF 261237788f25SDaniel P. Berrange#include <gcrypt.h> 261337788f25SDaniel P. Berrangeint main(void) { 261437788f25SDaniel P. Berrange gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2, 261537788f25SDaniel P. Berrange GCRY_MD_SHA256, 261637788f25SDaniel P. Berrange NULL, 0, 0, 0, NULL); 261737788f25SDaniel P. Berrange return 0; 261837788f25SDaniel P. Berrange} 261937788f25SDaniel P. BerrangeEOF 262037788f25SDaniel P. Berrange if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 262137788f25SDaniel P. Berrange gcrypt_kdf=yes 262237788f25SDaniel P. Berrange fi 26231f923c70SLongpeng(Mike) 26241f923c70SLongpeng(Mike) cat > $TMPC << EOF 26251f923c70SLongpeng(Mike)#include <gcrypt.h> 26261f923c70SLongpeng(Mike)int main(void) { 26271f923c70SLongpeng(Mike) gcry_mac_hd_t handle; 26281f923c70SLongpeng(Mike) gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5, 26291f923c70SLongpeng(Mike) GCRY_MAC_FLAG_SECURE, NULL); 26301f923c70SLongpeng(Mike) return 0; 26311f923c70SLongpeng(Mike)} 26321f923c70SLongpeng(Mike)EOF 26331f923c70SLongpeng(Mike) if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 26341f923c70SLongpeng(Mike) gcrypt_hmac=yes 26351f923c70SLongpeng(Mike) fi 263662893b67SDaniel P. Berrange else 263791bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes"; then 263862893b67SDaniel P. Berrange feature_not_found "gcrypt" "Install gcrypt devel" 263991bfcdb0SDaniel P. Berrange else 264091bfcdb0SDaniel P. Berrange gcrypt="no" 264191bfcdb0SDaniel P. Berrange fi 264262893b67SDaniel P. Berrange fi 264362893b67SDaniel P. Berrangefi 264462893b67SDaniel P. Berrange 2645ddbb0d09SDaniel P. Berrange 264691bfcdb0SDaniel P. Berrangeif test "$nettle" != "no"; then 2647ed754746SDaniel P. Berrange if $pkg_config --exists "nettle"; then 264889138857SStefan Weil nettle_cflags=$($pkg_config --cflags nettle) 264989138857SStefan Weil nettle_libs=$($pkg_config --libs nettle) 265089138857SStefan Weil nettle_version=$($pkg_config --modversion nettle) 2651ed754746SDaniel P. Berrange libs_softmmu="$nettle_libs $libs_softmmu" 2652ed754746SDaniel P. Berrange libs_tools="$nettle_libs $libs_tools" 2653ed754746SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" 265491bfcdb0SDaniel P. Berrange nettle="yes" 2655fff2f982SDaniel P. Berrange 2656fff2f982SDaniel P. Berrange cat > $TMPC << EOF 26579e87a691SSteven Luo#include <stddef.h> 2658fff2f982SDaniel P. Berrange#include <nettle/pbkdf2.h> 2659fff2f982SDaniel P. Berrangeint main(void) { 2660fff2f982SDaniel P. Berrange pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL); 2661fff2f982SDaniel P. Berrange return 0; 2662fff2f982SDaniel P. Berrange} 2663fff2f982SDaniel P. BerrangeEOF 2664fff2f982SDaniel P. Berrange if compile_prog "$nettle_cflags" "$nettle_libs" ; then 2665fff2f982SDaniel P. Berrange nettle_kdf=yes 2666fff2f982SDaniel P. Berrange fi 2667ed754746SDaniel P. Berrange else 266891bfcdb0SDaniel P. Berrange if test "$nettle" = "yes"; then 2669ed754746SDaniel P. Berrange feature_not_found "nettle" "Install nettle devel" 267091bfcdb0SDaniel P. Berrange else 267191bfcdb0SDaniel P. Berrange nettle="no" 2672ed754746SDaniel P. Berrange fi 2673ed754746SDaniel P. Berrange fi 267491bfcdb0SDaniel P. Berrangefi 267591bfcdb0SDaniel P. Berrange 267691bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes" 267791bfcdb0SDaniel P. Berrangethen 267891bfcdb0SDaniel P. Berrange error_exit "Only one of gcrypt & nettle can be enabled" 267991bfcdb0SDaniel P. Berrangefi 2680ed754746SDaniel P. Berrange 26819a2fd434SDaniel P. Berrange########################################## 26829a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite 26839a2fd434SDaniel P. Berrange 26849a2fd434SDaniel P. Berrangetasn1=yes 268590246037SDaniel P. Berrangetasn1_cflags="" 268690246037SDaniel P. Berrangetasn1_libs="" 26879a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then 268889138857SStefan Weil tasn1_cflags=$($pkg_config --cflags libtasn1) 268989138857SStefan Weil tasn1_libs=$($pkg_config --libs libtasn1) 26909a2fd434SDaniel P. Berrangeelse 26919a2fd434SDaniel P. Berrange tasn1=no 26929a2fd434SDaniel P. Berrangefi 26939a2fd434SDaniel P. Berrange 2694ed754746SDaniel P. Berrange 2695bbbf9bfbSStefan Weil########################################## 2696559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket ) 2697559607eaSDaniel P. Berrange 2698559607eaSDaniel P. Berrangehave_ifaddrs_h=yes 2699559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then 2700559607eaSDaniel P. Berrange have_ifaddrs_h=no 2701559607eaSDaniel P. Berrangefi 2702559607eaSDaniel P. Berrange 2703559607eaSDaniel P. Berrange########################################## 2704bbbf9bfbSStefan Weil# VTE probe 2705bbbf9bfbSStefan Weil 2706bbbf9bfbSStefan Weilif test "$vte" != "no"; then 2707bbbf9bfbSStefan Weil if test "$gtkabi" = "3.0"; then 2708c6feff9eSCole Robinson vteminversion="0.32.0" 2709c6feff9eSCole Robinson if $pkg_config --exists "vte-2.91"; then 2710c6feff9eSCole Robinson vtepackage="vte-2.91" 2711c6feff9eSCole Robinson else 2712528de90aSDaniel P. Berrange vtepackage="vte-2.90" 2713c6feff9eSCole Robinson fi 2714528de90aSDaniel P. Berrange else 2715528de90aSDaniel P. Berrange vtepackage="vte" 2716c6feff9eSCole Robinson vteminversion="0.24.0" 2717528de90aSDaniel P. Berrange fi 2718c6feff9eSCole Robinson if $pkg_config --exists "$vtepackage >= $vteminversion"; then 271989138857SStefan Weil vte_cflags=$($pkg_config --cflags $vtepackage) 272089138857SStefan Weil vte_libs=$($pkg_config --libs $vtepackage) 272189138857SStefan Weil vteversion=$($pkg_config --modversion $vtepackage) 2722bbbf9bfbSStefan Weil libs_softmmu="$vte_libs $libs_softmmu" 2723bbbf9bfbSStefan Weil vte="yes" 2724bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 27259e04c683SStefan Weil if test "$gtkabi" = "3.0"; then 2726c6feff9eSCole Robinson feature_not_found "vte" "Install libvte-2.90/2.91 devel" 27279e04c683SStefan Weil else 27289e04c683SStefan Weil feature_not_found "vte" "Install libvte devel" 27299e04c683SStefan Weil fi 2730bbbf9bfbSStefan Weil else 2731bbbf9bfbSStefan Weil vte="no" 2732a4ccabcfSAnthony Liguori fi 2733a4ccabcfSAnthony Liguorifi 2734a4ccabcfSAnthony Liguori 2735a4ccabcfSAnthony Liguori########################################## 273611d9f695Sbellard# SDL probe 273711d9f695Sbellard 27383ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config). Try 27393ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 274047c03744SDave Airlie 2741ee8466d0SCole Robinsonif test "$sdlabi" = ""; then 27428f4ea9cdSGerd Hoffmann if $pkg_config --exists "sdl2"; then 2743ee8466d0SCole Robinson sdlabi=2.0 27448f4ea9cdSGerd Hoffmann elif $pkg_config --exists "sdl"; then 2745ee8466d0SCole Robinson sdlabi=1.2 27468f4ea9cdSGerd Hoffmann else 27478f4ea9cdSGerd Hoffmann sdlabi=2.0 2748ee8466d0SCole Robinson fi 2749ee8466d0SCole Robinsonfi 2750ee8466d0SCole Robinson 275147c03744SDave Airlieif test $sdlabi = "2.0"; then 275247c03744SDave Airlie sdl_config=$sdl2_config 275347c03744SDave Airlie sdlname=sdl2 275447c03744SDave Airlie sdlconfigname=sdl2_config 2755e07047cfSCole Robinsonelif test $sdlabi = "1.2"; then 275647c03744SDave Airlie sdlname=sdl 275747c03744SDave Airlie sdlconfigname=sdl_config 2758e07047cfSCole Robinsonelse 2759e07047cfSCole Robinson error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0" 27603ec87ffeSPaolo Bonzinifi 27613ec87ffeSPaolo Bonzini 276289138857SStefan Weilif test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then 276347c03744SDave Airlie sdl_config=$sdlconfigname 276447c03744SDave Airliefi 276547c03744SDave Airlie 276647c03744SDave Airlieif $pkg_config $sdlname --exists; then 276747c03744SDave Airlie sdlconfig="$pkg_config $sdlname" 276889138857SStefan Weil sdlversion=$($sdlconfig --modversion 2>/dev/null) 27693ec87ffeSPaolo Bonzinielif has ${sdl_config}; then 27703ec87ffeSPaolo Bonzini sdlconfig="$sdl_config" 277189138857SStefan Weil sdlversion=$($sdlconfig --version) 2772a0dfd8a4SLoïc Minierelse 2773a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 27748f4ea9cdSGerd Hoffmann feature_not_found "sdl" "Install SDL2-devel" 2775a0dfd8a4SLoïc Minier fi 2776a0dfd8a4SLoïc Minier sdl=no 27779316f803SPaolo Bonzinifi 277829e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 27793ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 27803ec87ffeSPaolo Bonzinifi 278111d9f695Sbellard 27829316f803SPaolo Bonzinisdl_too_old=no 2783c4198157SJuan Quintelaif test "$sdl" != "no" ; then 278411d9f695Sbellard cat > $TMPC << EOF 278511d9f695Sbellard#include <SDL.h> 278611d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 278711d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 278811d9f695SbellardEOF 278989138857SStefan Weil sdl_cflags=$($sdlconfig --cflags 2>/dev/null) 279074f42e18STeLeMan if test "$static" = "yes" ; then 27915f37e6d4SThomas Huth if $pkg_config $sdlname --exists; then 27925f37e6d4SThomas Huth sdl_libs=$($pkg_config $sdlname --static --libs 2>/dev/null) 27935f37e6d4SThomas Huth else 279489138857SStefan Weil sdl_libs=$($sdlconfig --static-libs 2>/dev/null) 27955f37e6d4SThomas Huth fi 279674f42e18STeLeMan else 279789138857SStefan Weil sdl_libs=$($sdlconfig --libs 2>/dev/null) 279874f42e18STeLeMan fi 279952166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 280089138857SStefan Weil if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then 280111d9f695Sbellard sdl_too_old=yes 280211d9f695Sbellard else 280311d9f695Sbellard sdl=yes 280411d9f695Sbellard fi 28057c1f25b4Sbellard 280667c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 28071ac88f28SJuan Quintela if test "$sdl" = "yes" -a "$static" = "yes" ; then 280867c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 280989138857SStefan Weil sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)" 281089138857SStefan Weil sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)" 281111d9f695Sbellard fi 281252166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 28131ac88f28SJuan Quintela : 28141ac88f28SJuan Quintela else 28151ac88f28SJuan Quintela sdl=no 28167c1f25b4Sbellard fi 28177c1f25b4Sbellard fi # static link 2818c4198157SJuan Quintela else # sdl not found 2819c4198157SJuan Quintela if test "$sdl" = "yes" ; then 282021684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2821c4198157SJuan Quintela fi 2822c4198157SJuan Quintela sdl=no 28237c1f25b4Sbellard fi # sdl compile test 2824fd677642Sthsfi 282511d9f695Sbellard 28265368a422Saliguoriif test "$sdl" = "yes" ; then 28275368a422Saliguori cat > $TMPC <<EOF 28285368a422Saliguori#include <SDL.h> 28295368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 28305368a422Saliguori#include <X11/XKBlib.h> 28315368a422Saliguori#else 28325368a422Saliguori#error No x11 support 28335368a422Saliguori#endif 28345368a422Saliguoriint main(void) { return 0; } 28355368a422SaliguoriEOF 2836f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 2837f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 2838f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 28395368a422Saliguori fi 28405368a422Saliguorifi 28415368a422Saliguori 28428f28f3fbSths########################################## 28432da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 28442da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 28452da776dbSMichael R. Hines cat > $TMPC <<EOF 28462da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 28472da776dbSMichael R. Hinesint main(void) { return 0; } 28482da776dbSMichael R. HinesEOF 28492da776dbSMichael R. Hines rdma_libs="-lrdmacm -libverbs" 28502da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 28512da776dbSMichael R. Hines rdma="yes" 28522da776dbSMichael R. Hines else 28532da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 28542da776dbSMichael R. Hines error_exit \ 28552da776dbSMichael R. Hines " OpenFabrics librdmacm/libibverbs not present." \ 28562da776dbSMichael R. Hines " Your options:" \ 28572da776dbSMichael R. Hines " (1) Fast: Install infiniband packages from your distro." \ 28582da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 28592da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 28602da776dbSMichael R. Hines fi 28612da776dbSMichael R. Hines rdma="no" 28622da776dbSMichael R. Hines fi 28632da776dbSMichael R. Hinesfi 28642da776dbSMichael R. Hines 286595c6bff3SBenoît Canet 286695c6bff3SBenoît Canet########################################## 28672f9606b3Saliguori# VNC SASL detection 2868821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 28692f9606b3Saliguori cat > $TMPC <<EOF 28702f9606b3Saliguori#include <sasl/sasl.h> 28712f9606b3Saliguori#include <stdio.h> 28722f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 28732f9606b3SaliguoriEOF 28742f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 28752f9606b3Saliguori vnc_sasl_cflags="" 28762f9606b3Saliguori vnc_sasl_libs="-lsasl2" 287752166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2878ea784e3bSJuan Quintela vnc_sasl=yes 2879fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2880ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 28812f9606b3Saliguori else 2882ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 288321684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2884ea784e3bSJuan Quintela fi 2885ea784e3bSJuan Quintela vnc_sasl=no 28862f9606b3Saliguori fi 28872f9606b3Saliguorifi 28882f9606b3Saliguori 28892f9606b3Saliguori########################################## 28902f6f5c7aSCorentin Chary# VNC JPEG detection 2891821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 28922f6f5c7aSCorentin Charycat > $TMPC <<EOF 28932f6f5c7aSCorentin Chary#include <stdio.h> 28942f6f5c7aSCorentin Chary#include <jpeglib.h> 28952f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 28962f6f5c7aSCorentin CharyEOF 28972f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 28982f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 28992f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 29002f6f5c7aSCorentin Chary vnc_jpeg=yes 29012f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2902ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 29032f6f5c7aSCorentin Chary else 29042f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 290521684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 29062f6f5c7aSCorentin Chary fi 29072f6f5c7aSCorentin Chary vnc_jpeg=no 29082f6f5c7aSCorentin Chary fi 29092f6f5c7aSCorentin Charyfi 29102f6f5c7aSCorentin Chary 29112f6f5c7aSCorentin Chary########################################## 2912efe556adSCorentin Chary# VNC PNG detection 2913821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2914efe556adSCorentin Charycat > $TMPC <<EOF 2915efe556adSCorentin Chary//#include <stdio.h> 2916efe556adSCorentin Chary#include <png.h> 2917832ce9c2SScott Wood#include <stddef.h> 2918efe556adSCorentin Charyint main(void) { 2919efe556adSCorentin Chary png_structp png_ptr; 2920efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 29217edc3fedSPeter Maydell return png_ptr != 0; 2922efe556adSCorentin Chary} 2923efe556adSCorentin CharyEOF 292465d5d3f9SStefan Weil if $pkg_config libpng --exists; then 292589138857SStefan Weil vnc_png_cflags=$($pkg_config libpng --cflags) 292689138857SStefan Weil vnc_png_libs=$($pkg_config libpng --libs) 29279af8025eSBrad else 2928efe556adSCorentin Chary vnc_png_cflags="" 2929efe556adSCorentin Chary vnc_png_libs="-lpng" 29309af8025eSBrad fi 2931efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2932efe556adSCorentin Chary vnc_png=yes 2933efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 29349af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2935efe556adSCorentin Chary else 2936efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 293721684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 2938efe556adSCorentin Chary fi 2939efe556adSCorentin Chary vnc_png=no 2940efe556adSCorentin Chary fi 2941efe556adSCorentin Charyfi 2942efe556adSCorentin Chary 2943efe556adSCorentin Chary########################################## 29446a021536SGerd Hoffmann# xkbcommon probe 29456a021536SGerd Hoffmannif test "$xkbcommon" != "no" ; then 29466a021536SGerd Hoffmann if $pkg_config xkbcommon --exists; then 29476a021536SGerd Hoffmann xkbcommon_cflags=$($pkg_config xkbcommon --cflags) 29486a021536SGerd Hoffmann xkbcommon_libs=$($pkg_config xkbcommon --libs) 29496a021536SGerd Hoffmann xkbcommon=yes 29506a021536SGerd Hoffmann else 29516a021536SGerd Hoffmann if test "$xkbcommon" = "yes" ; then 29526a021536SGerd Hoffmann feature_not_found "xkbcommon" "Install libxkbcommon-devel" 29536a021536SGerd Hoffmann fi 29546a021536SGerd Hoffmann xkbcommon=no 29556a021536SGerd Hoffmann fi 29566a021536SGerd Hoffmannfi 29576a021536SGerd Hoffmann 29586a021536SGerd Hoffmann########################################## 295976655d6dSaliguori# fnmatch() probe, used for ACL routines 296076655d6dSaliguorifnmatch="no" 296176655d6dSaliguoricat > $TMPC << EOF 296276655d6dSaliguori#include <fnmatch.h> 296376655d6dSaliguoriint main(void) 296476655d6dSaliguori{ 296576655d6dSaliguori fnmatch("foo", "foo", 0); 296676655d6dSaliguori return 0; 296776655d6dSaliguori} 296876655d6dSaliguoriEOF 296952166aa0SJuan Quintelaif compile_prog "" "" ; then 297076655d6dSaliguori fnmatch="yes" 297176655d6dSaliguorifi 297276655d6dSaliguori 297376655d6dSaliguori########################################## 2974c1bb86cdSEric Blake# xfsctl() probe, used for file-posix.c 2975dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 2976dce512deSChristoph Hellwig cat > $TMPC << EOF 2977ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 2978dce512deSChristoph Hellwig#include <xfs/xfs.h> 2979dce512deSChristoph Hellwigint main(void) 2980dce512deSChristoph Hellwig{ 2981dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 2982dce512deSChristoph Hellwig return 0; 2983dce512deSChristoph Hellwig} 2984dce512deSChristoph HellwigEOF 2985dce512deSChristoph Hellwig if compile_prog "" "" ; then 2986dce512deSChristoph Hellwig xfs="yes" 2987dce512deSChristoph Hellwig else 2988dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 298921684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 2990dce512deSChristoph Hellwig fi 2991dce512deSChristoph Hellwig xfs=no 2992dce512deSChristoph Hellwig fi 2993dce512deSChristoph Hellwigfi 2994dce512deSChristoph Hellwig 2995dce512deSChristoph Hellwig########################################## 29968a16d273Sths# vde libraries probe 2997dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 29984baae0acSJuan Quintela vde_libs="-lvdeplug" 29998a16d273Sths cat > $TMPC << EOF 30008a16d273Sths#include <libvdeplug.h> 30014a7f0e06Spbrookint main(void) 30024a7f0e06Spbrook{ 30034a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 3004fea08e08SPeter Maydell char s[] = ""; 3005fea08e08SPeter Maydell vde_open(s, s, &a); 30064a7f0e06Spbrook return 0; 30074a7f0e06Spbrook} 30088a16d273SthsEOF 300952166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 30104baae0acSJuan Quintela vde=yes 3011dfb278bdSJuan Quintela else 3012dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 301321684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 3014dfb278bdSJuan Quintela fi 3015dfb278bdSJuan Quintela vde=no 30168a16d273Sths fi 30178a16d273Sthsfi 30188a16d273Sths 30198a16d273Sths########################################## 30200a985b37SVincenzo Maffione# netmap support probe 30210a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 30220a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 30230a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 30240a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 30250a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 302658952137SVincenzo Maffioneif test "$netmap" != "no" ; then 302758952137SVincenzo Maffione cat > $TMPC << EOF 302858952137SVincenzo Maffione#include <inttypes.h> 302958952137SVincenzo Maffione#include <net/if.h> 303058952137SVincenzo Maffione#include <net/netmap.h> 303158952137SVincenzo Maffione#include <net/netmap_user.h> 30320a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 30330a985b37SVincenzo Maffione#error 30340a985b37SVincenzo Maffione#endif 303558952137SVincenzo Maffioneint main(void) { return 0; } 303658952137SVincenzo MaffioneEOF 303758952137SVincenzo Maffione if compile_prog "" "" ; then 303858952137SVincenzo Maffione netmap=yes 303958952137SVincenzo Maffione else 304058952137SVincenzo Maffione if test "$netmap" = "yes" ; then 304158952137SVincenzo Maffione feature_not_found "netmap" 304258952137SVincenzo Maffione fi 304358952137SVincenzo Maffione netmap=no 304458952137SVincenzo Maffione fi 304558952137SVincenzo Maffionefi 304658952137SVincenzo Maffione 304758952137SVincenzo Maffione########################################## 304847e98658SCorey Bryant# libcap-ng library probe 304947e98658SCorey Bryantif test "$cap_ng" != "no" ; then 305047e98658SCorey Bryant cap_libs="-lcap-ng" 305147e98658SCorey Bryant cat > $TMPC << EOF 305247e98658SCorey Bryant#include <cap-ng.h> 305347e98658SCorey Bryantint main(void) 305447e98658SCorey Bryant{ 305547e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 305647e98658SCorey Bryant return 0; 305747e98658SCorey Bryant} 305847e98658SCorey BryantEOF 305947e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 306047e98658SCorey Bryant cap_ng=yes 306147e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 306247e98658SCorey Bryant else 306347e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 306421684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 306547e98658SCorey Bryant fi 306647e98658SCorey Bryant cap_ng=no 306747e98658SCorey Bryant fi 306847e98658SCorey Bryantfi 306947e98658SCorey Bryant 307047e98658SCorey Bryant########################################## 3071c2de5c91Smalc# Sound support libraries probe 30728f28f3fbSths 3073c2de5c91Smalcaudio_drv_probe() 3074c2de5c91Smalc{ 3075c2de5c91Smalc drv=$1 3076c2de5c91Smalc hdr=$2 3077c2de5c91Smalc lib=$3 3078c2de5c91Smalc exp=$4 3079c2de5c91Smalc cfl=$5 30808f28f3fbSths cat > $TMPC << EOF 3081c2de5c91Smalc#include <$hdr> 3082c2de5c91Smalcint main(void) { $exp } 30838f28f3fbSthsEOF 308452166aa0SJuan Quintela if compile_prog "$cfl" "$lib" ; then 30858f28f3fbSths : 30868f28f3fbSths else 308776ad07a4SPeter Maydell error_exit "$drv check failed" \ 308876ad07a4SPeter Maydell "Make sure to have the $drv libs and headers installed." 30898f28f3fbSths fi 3090c2de5c91Smalc} 3091c2de5c91Smalc 309289138857SStefan Weilaudio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g') 3093c2de5c91Smalcfor drv in $audio_drv_list; do 3094c2de5c91Smalc case $drv in 3095c2de5c91Smalc alsa) 3096c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 3097e35bcb0cSStefan Weil "return snd_pcm_close((snd_pcm_t *)0);" 3098b1149911SFam Zheng alsa_libs="-lasound" 3099c2de5c91Smalc ;; 3100c2de5c91Smalc 3101b8e59f18Smalc pa) 3102e58ff62dSPeter Krempa audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \ 3103e58ff62dSPeter Krempa "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;" 3104b1149911SFam Zheng pulse_libs="-lpulse" 310567f86e8eSJuan Quintela audio_pt_int="yes" 3106b8e59f18Smalc ;; 3107b8e59f18Smalc 3108373967b2SGerd Hoffmann sdl) 3109373967b2SGerd Hoffmann if test "$sdl" = "no"; then 3110373967b2SGerd Hoffmann error_exit "sdl not found or disabled, can not use sdl audio driver" 3111373967b2SGerd Hoffmann fi 3112373967b2SGerd Hoffmann ;; 3113373967b2SGerd Hoffmann 3114997e690aSJuan Quintela coreaudio) 3115b1149911SFam Zheng coreaudio_libs="-framework CoreAudio" 3116997e690aSJuan Quintela ;; 3117997e690aSJuan Quintela 3118a4bf6780SJuan Quintela dsound) 3119b1149911SFam Zheng dsound_libs="-lole32 -ldxguid" 3120d5631638Smalc audio_win_int="yes" 3121a4bf6780SJuan Quintela ;; 3122a4bf6780SJuan Quintela 3123a4bf6780SJuan Quintela oss) 3124b1149911SFam Zheng oss_libs="$oss_lib" 3125a4bf6780SJuan Quintela ;; 3126a4bf6780SJuan Quintela 3127373967b2SGerd Hoffmann wav) 3128373967b2SGerd Hoffmann # XXX: Probes for CoreAudio, DirectSound 31292f6a1ab0Sblueswir1 ;; 31302f6a1ab0Sblueswir1 3131e4c63a6aSmalc *) 31321c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 313376ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 313476ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 3135e4c63a6aSmalc } 3136e4c63a6aSmalc ;; 3137c2de5c91Smalc esac 3138c2de5c91Smalcdone 31398f28f3fbSths 31404d3b6f6eSbalrog########################################## 31412e4d9fb1Saurel32# BrlAPI probe 31422e4d9fb1Saurel32 31434ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 3144eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 31452e4d9fb1Saurel32 cat > $TMPC << EOF 31462e4d9fb1Saurel32#include <brlapi.h> 3147832ce9c2SScott Wood#include <stddef.h> 31482e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 31492e4d9fb1Saurel32EOF 315052166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 31512e4d9fb1Saurel32 brlapi=yes 31524ffcedb6SJuan Quintela else 31534ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 315421684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 31554ffcedb6SJuan Quintela fi 31564ffcedb6SJuan Quintela brlapi=no 3157eb82284fSJuan Quintela fi 3158eb82284fSJuan Quintelafi 31592e4d9fb1Saurel32 31602e4d9fb1Saurel32########################################## 31614d3b6f6eSbalrog# curses probe 3162a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 3163e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 31648ddc5bf9SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):" 31658ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 3166e095e2f3SStefan Weil else 31677c703002SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:" 31688ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw" 3169e095e2f3SStefan Weil fi 3170c584a6d0SJuan Quintela curses_found=no 31714d3b6f6eSbalrog cat > $TMPC << EOF 31728ddc5bf9SSamuel Thibault#include <locale.h> 31734d3b6f6eSbalrog#include <curses.h> 31748ddc5bf9SSamuel Thibault#include <wchar.h> 3175ef9a2524SStefan Weilint main(void) { 31768ddc5bf9SSamuel Thibault wchar_t wch = L'w'; 31778ddc5bf9SSamuel Thibault setlocale(LC_ALL, ""); 3178ef9a2524SStefan Weil resize_term(0, 0); 31798ddc5bf9SSamuel Thibault addwstr(L"wide chars\n"); 31808ddc5bf9SSamuel Thibault addnwstr(&wch, 1); 31817c703002SSamuel Thibault add_wch(WACS_DEGREE); 3182271f37abSKamil Rytarowski return 0; 3183ef9a2524SStefan Weil} 31844d3b6f6eSbalrogEOF 3185ecbe251fSVadim Evard IFS=: 31868ddc5bf9SSamuel Thibault for curses_inc in $curses_inc_list; do 3187b01a4fd3SPeter Maydell # Make sure we get the wide character prototypes 3188b01a4fd3SPeter Maydell curses_inc="-DNCURSES_WIDECHAR $curses_inc" 31897c703002SSamuel Thibault IFS=: 31908ddc5bf9SSamuel Thibault for curses_lib in $curses_lib_list; do 3191ecbe251fSVadim Evard unset IFS 31928ddc5bf9SSamuel Thibault if compile_prog "$curses_inc" "$curses_lib" ; then 3193c584a6d0SJuan Quintela curses_found=yes 31948ddc5bf9SSamuel Thibault QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS" 31954f78ef9aSJuan Quintela libs_softmmu="$curses_lib $libs_softmmu" 31964f78ef9aSJuan Quintela break 31974d3b6f6eSbalrog fi 31984f78ef9aSJuan Quintela done 31997c703002SSamuel Thibault if test "$curses_found" = yes ; then 32007c703002SSamuel Thibault break 32017c703002SSamuel Thibault fi 32028ddc5bf9SSamuel Thibault done 3203ecbe251fSVadim Evard unset IFS 3204c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 3205c584a6d0SJuan Quintela curses=yes 3206c584a6d0SJuan Quintela else 3207c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 320821684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 3209c584a6d0SJuan Quintela fi 3210c584a6d0SJuan Quintela curses=no 3211c584a6d0SJuan Quintela fi 32124f78ef9aSJuan Quintelafi 32134d3b6f6eSbalrog 3214414f0dabSblueswir1########################################## 3215769ce76dSAlexander Graf# curl probe 3216a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 321765d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 3218a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 32194e2b0658SPaolo Bonzini else 32204e2b0658SPaolo Bonzini curlconfig=curl-config 32214e2b0658SPaolo Bonzini fi 3222769ce76dSAlexander Graf cat > $TMPC << EOF 3223769ce76dSAlexander Graf#include <curl/curl.h> 32240b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 3225769ce76dSAlexander GrafEOF 322689138857SStefan Weil curl_cflags=$($curlconfig --cflags 2>/dev/null) 322789138857SStefan Weil curl_libs=$($curlconfig --libs 2>/dev/null) 3228b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 3229769ce76dSAlexander Graf curl=yes 3230788c8196SJuan Quintela else 3231788c8196SJuan Quintela if test "$curl" = "yes" ; then 323221684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 3233788c8196SJuan Quintela fi 3234788c8196SJuan Quintela curl=no 3235769ce76dSAlexander Graf fi 3236769ce76dSAlexander Graffi # test "$curl" 3237769ce76dSAlexander Graf 3238769ce76dSAlexander Graf########################################## 3239fb599c9aSbalrog# bluez support probe 3240a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then 3241e820e3f4Sbalrog cat > $TMPC << EOF 3242e820e3f4Sbalrog#include <bluetooth/bluetooth.h> 3243e820e3f4Sbalrogint main(void) { return bt_error(0); } 3244e820e3f4SbalrogEOF 324589138857SStefan Weil bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null) 324689138857SStefan Weil bluez_libs=$($pkg_config --libs bluez 2>/dev/null) 324752166aa0SJuan Quintela if compile_prog "$bluez_cflags" "$bluez_libs" ; then 3248a20a6f46SJuan Quintela bluez=yes 3249e482d56aSJuan Quintela libs_softmmu="$bluez_libs $libs_softmmu" 3250e820e3f4Sbalrog else 3251a20a6f46SJuan Quintela if test "$bluez" = "yes" ; then 325221684af0SStewart Smith feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 3253a20a6f46SJuan Quintela fi 3254e820e3f4Sbalrog bluez="no" 3255e820e3f4Sbalrog fi 3256fb599c9aSbalrogfi 3257fb599c9aSbalrog 3258fb599c9aSbalrog########################################## 3259e18df141SAnthony Liguori# glib support probe 3260a52d28afSPaolo Bonzini 3261ad04d8cbSPeter Maydellif test "$mingw32" = yes; then 3262ad04d8cbSPeter Maydell glib_req_ver=2.30 3263ad04d8cbSPeter Maydellelse 3264f40685c6SJohn Snow glib_req_ver=2.22 3265ad04d8cbSPeter Maydellfi 3266aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 3267aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 3268aa0d1f44SPaolo Bonzini glib_modules="$glib_modules gmodule-2.0" 3269aa0d1f44SPaolo Bonzinifi 3270e26110cfSFam Zheng 32714eaf7202SSameeh Jubran# This workaround is required due to a bug in pkg-config file for glib as it 32724eaf7202SSameeh Jubran# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static 32734eaf7202SSameeh Jubran 32744eaf7202SSameeh Jubranif test "$static" = yes -a "$mingw32" = yes; then 32754eaf7202SSameeh Jubran QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS" 32764eaf7202SSameeh Jubranfi 32774eaf7202SSameeh Jubran 3278aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 3279e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 328089138857SStefan Weil glib_cflags=$($pkg_config --cflags $i) 328189138857SStefan Weil glib_libs=$($pkg_config --libs $i) 32824a058899SMarc-André Lureau QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" 328314015304SAnthony Liguori LIBS="$glib_libs $LIBS" 3284957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 3285e18df141SAnthony Liguori else 3286e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 3287e26110cfSFam Zheng fi 3288e26110cfSFam Zhengdone 3289e26110cfSFam Zheng 3290977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the 3291977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches 3292977a82abSDaniel P. Berrange# problems on multi-arch where people try to build 3293977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers 3294977a82abSDaniel P. Berrangecat > $TMPC <<EOF 3295977a82abSDaniel P. Berrange#include <glib.h> 3296977a82abSDaniel P. Berrange#include <unistd.h> 3297977a82abSDaniel P. Berrange 3298977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \ 3299977a82abSDaniel P. Berrange typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 3300977a82abSDaniel P. Berrange 3301977a82abSDaniel P. Berrangeint main(void) { 3302977a82abSDaniel P. Berrange QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 3303977a82abSDaniel P. Berrange return 0; 3304977a82abSDaniel P. Berrange} 3305977a82abSDaniel P. BerrangeEOF 3306977a82abSDaniel P. Berrange 33075919e032SStefan Weilif ! compile_prog "$CFLAGS" "$LIBS" ; then 3308977a82abSDaniel P. Berrange error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 3309977a82abSDaniel P. Berrange "You probably need to set PKG_CONFIG_LIBDIR"\ 3310977a82abSDaniel P. Berrange "to point to the right pkg-config files for your"\ 3311977a82abSDaniel P. Berrange "build target" 3312977a82abSDaniel P. Berrangefi 3313977a82abSDaniel P. Berrange 33149d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests. 33159d41401bSMichael S. Tsirkinglib_subprocess=yes 3316a049223aSMarc-André Lureauif ! $pkg_config --atleast-version=2.38 glib-2.0; then 33179d41401bSMichael S. Tsirkin glib_subprocess=no 33189d41401bSMichael S. Tsirkinfi 33199d41401bSMichael S. Tsirkin 3320bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 3321bbbf2e04SJohn Snowcat > $TMPC << EOF 3322bbbf2e04SJohn Snow#include <glib.h> 3323bbbf2e04SJohn Snowint main(void) { return 0; } 3324bbbf2e04SJohn SnowEOF 3325bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 3326bbbf2e04SJohn Snow if cc_has_warning_flag "-Wno-unknown-attributes"; then 3327bbbf2e04SJohn Snow glib_cflags="-Wno-unknown-attributes $glib_cflags" 3328bbbf2e04SJohn Snow CFLAGS="-Wno-unknown-attributes $CFLAGS" 3329bbbf2e04SJohn Snow fi 3330bbbf2e04SJohn Snowfi 3331bbbf2e04SJohn Snow 3332e26110cfSFam Zheng########################################## 3333e26110cfSFam Zheng# SHA command probe for modules 3334e26110cfSFam Zhengif test "$modules" = yes; then 3335e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 3336e26110cfSFam Zheng for c in $shacmd_probe; do 33378ccefb91SFam Zheng if has $c; then 3338e26110cfSFam Zheng shacmd="$c" 3339e26110cfSFam Zheng break 3340e26110cfSFam Zheng fi 3341e26110cfSFam Zheng done 3342e26110cfSFam Zheng if test "$shacmd" = ""; then 3343e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 3344e26110cfSFam Zheng fi 3345e18df141SAnthony Liguorifi 3346e18df141SAnthony Liguori 3347e18df141SAnthony Liguori########################################## 3348e2134eb9SGerd Hoffmann# pixman support probe 3349e2134eb9SGerd Hoffmann 335074880fe2SRobert Schieleif test "$want_tools" = "no" -a "$softmmu" = "no"; then 335174880fe2SRobert Schiele pixman_cflags= 335274880fe2SRobert Schiele pixman_libs= 335335c4e86cSGerd Hoffmannelif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 335489138857SStefan Weil pixman_cflags=$($pkg_config --cflags pixman-1) 335589138857SStefan Weil pixman_libs=$($pkg_config --libs pixman-1) 3356e2134eb9SGerd Hoffmannelse 3357c12b6d70SGerd Hoffmann error_exit "pixman >= 0.21.8 not present." \ 3358c12b6d70SGerd Hoffmann "Please install the pixman devel package." 3359e2134eb9SGerd Hoffmannfi 3360e2134eb9SGerd Hoffmann 3361e2134eb9SGerd Hoffmann########################################## 3362fe8fc5aeSPaolo Bonzini# libmpathpersist probe 3363fe8fc5aeSPaolo Bonzini 3364fe8fc5aeSPaolo Bonziniif test "$mpath" != "no" ; then 3365fe8fc5aeSPaolo Bonzini cat > $TMPC <<EOF 3366fe8fc5aeSPaolo Bonzini#include <libudev.h> 3367fe8fc5aeSPaolo Bonzini#include <mpath_persist.h> 3368fe8fc5aeSPaolo Bonziniunsigned mpath_mx_alloc_len = 1024; 3369fe8fc5aeSPaolo Bonziniint logsink; 3370b3f1c8c4SPaolo Bonzinistatic struct config *multipath_conf; 3371b3f1c8c4SPaolo Bonziniextern struct udev *udev; 3372b3f1c8c4SPaolo Bonziniextern struct config *get_multipath_config(void); 3373b3f1c8c4SPaolo Bonziniextern void put_multipath_config(struct config *conf); 3374b3f1c8c4SPaolo Bonzinistruct udev *udev; 3375b3f1c8c4SPaolo Bonzinistruct config *get_multipath_config(void) { return multipath_conf; } 3376b3f1c8c4SPaolo Bonzinivoid put_multipath_config(struct config *conf) { } 3377b3f1c8c4SPaolo Bonzini 3378fe8fc5aeSPaolo Bonziniint main(void) { 3379b3f1c8c4SPaolo Bonzini udev = udev_new(); 3380b3f1c8c4SPaolo Bonzini multipath_conf = mpath_lib_init(); 3381fe8fc5aeSPaolo Bonzini return 0; 3382fe8fc5aeSPaolo Bonzini} 3383fe8fc5aeSPaolo BonziniEOF 3384fe8fc5aeSPaolo Bonzini if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 3385fe8fc5aeSPaolo Bonzini mpathpersist=yes 3386fe8fc5aeSPaolo Bonzini else 3387fe8fc5aeSPaolo Bonzini mpathpersist=no 3388fe8fc5aeSPaolo Bonzini fi 3389fe8fc5aeSPaolo Bonzinielse 3390fe8fc5aeSPaolo Bonzini mpathpersist=no 3391fe8fc5aeSPaolo Bonzinifi 3392fe8fc5aeSPaolo Bonzini 3393fe8fc5aeSPaolo Bonzini########################################## 339417bff52bSM. Mohan Kumar# libcap probe 339517bff52bSM. Mohan Kumar 339617bff52bSM. Mohan Kumarif test "$cap" != "no" ; then 339717bff52bSM. Mohan Kumar cat > $TMPC <<EOF 339817bff52bSM. Mohan Kumar#include <stdio.h> 339917bff52bSM. Mohan Kumar#include <sys/capability.h> 3400cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 340117bff52bSM. Mohan KumarEOF 340217bff52bSM. Mohan Kumar if compile_prog "" "-lcap" ; then 340317bff52bSM. Mohan Kumar cap=yes 340417bff52bSM. Mohan Kumar else 340517bff52bSM. Mohan Kumar cap=no 340617bff52bSM. Mohan Kumar fi 340717bff52bSM. Mohan Kumarfi 340817bff52bSM. Mohan Kumar 340917bff52bSM. Mohan Kumar########################################## 3410e5d355d1Saliguori# pthread probe 34114b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 34123c529d93Saliguori 3413e5d355d1Saliguoripthread=no 3414414f0dabSblueswir1cat > $TMPC << EOF 34153c529d93Saliguori#include <pthread.h> 34167a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 34177a42bbe4SStefan Weilint main(void) { 34187a42bbe4SStefan Weil pthread_t thread; 34197a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 34207a42bbe4SStefan Weil return 0; 34217a42bbe4SStefan Weil} 3422414f0dabSblueswir1EOF 3423bd00d539SAndreas Färberif compile_prog "" "" ; then 3424bd00d539SAndreas Färber pthread=yes 3425bd00d539SAndreas Färberelse 3426de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 342752166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 3428e5d355d1Saliguori pthread=yes 3429e3c56761SPeter Portante found=no 3430e3c56761SPeter Portante for lib_entry in $LIBS; do 3431e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 3432e3c56761SPeter Portante found=yes 3433e3c56761SPeter Portante break 3434e3c56761SPeter Portante fi 3435e3c56761SPeter Portante done 3436e3c56761SPeter Portante if test "$found" = "no"; then 34375572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 3438e3c56761SPeter Portante fi 3439409437e1SDaniel P. Berrange PTHREAD_LIB="$pthread_lib" 3440de65fe0fSSebastian Herbszt break 3441414f0dabSblueswir1 fi 3442de65fe0fSSebastian Herbszt done 3443bd00d539SAndreas Färberfi 3444414f0dabSblueswir1 34454617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then 344676ad07a4SPeter Maydell error_exit "pthread check failed" \ 344776ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 3448e5d355d1Saliguorifi 3449e5d355d1Saliguori 34505c312079SDr. David Alan Gilbert# check for pthread_setname_np 34515c312079SDr. David Alan Gilbertpthread_setname_np=no 34525c312079SDr. David Alan Gilbertcat > $TMPC << EOF 34535c312079SDr. David Alan Gilbert#include <pthread.h> 34545c312079SDr. David Alan Gilbert 34555c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 34565c312079SDr. David Alan Gilbertint main(void) 34575c312079SDr. David Alan Gilbert{ 34585c312079SDr. David Alan Gilbert pthread_t thread; 34595c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 34605c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 34615c312079SDr. David Alan Gilbert return 0; 34625c312079SDr. David Alan Gilbert} 34635c312079SDr. David Alan GilbertEOF 34645c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 34655c312079SDr. David Alan Gilbert pthread_setname_np=yes 34665c312079SDr. David Alan Gilbertfi 34675c312079SDr. David Alan Gilbert 3468bf9298b9Saliguori########################################## 3469f27aaf4bSChristian Brunner# rbd probe 3470f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 3471f27aaf4bSChristian Brunner cat > $TMPC <<EOF 3472f27aaf4bSChristian Brunner#include <stdio.h> 3473ad32e9c0SJosh Durgin#include <rbd/librbd.h> 3474f27aaf4bSChristian Brunnerint main(void) { 3475ad32e9c0SJosh Durgin rados_t cluster; 3476ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 3477f27aaf4bSChristian Brunner return 0; 3478f27aaf4bSChristian Brunner} 3479f27aaf4bSChristian BrunnerEOF 3480ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 3481f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 3482f27aaf4bSChristian Brunner rbd=yes 3483f27aaf4bSChristian Brunner else 3484f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 348521684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 3486f27aaf4bSChristian Brunner fi 3487f27aaf4bSChristian Brunner rbd=no 3488f27aaf4bSChristian Brunner fi 3489f27aaf4bSChristian Brunnerfi 3490f27aaf4bSChristian Brunner 3491f27aaf4bSChristian Brunner########################################## 34920a12ec87SRichard W.M. Jones# libssh2 probe 34934fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8 34940a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then 349565d5d3f9SStefan Weil if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 349689138857SStefan Weil libssh2_cflags=$($pkg_config libssh2 --cflags) 349789138857SStefan Weil libssh2_libs=$($pkg_config libssh2 --libs) 34980a12ec87SRichard W.M. Jones libssh2=yes 34990a12ec87SRichard W.M. Jones else 35000a12ec87SRichard W.M. Jones if test "$libssh2" = "yes" ; then 35014fc16838SRichard W.M. Jones error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 35020a12ec87SRichard W.M. Jones fi 35030a12ec87SRichard W.M. Jones libssh2=no 35040a12ec87SRichard W.M. Jones fi 35050a12ec87SRichard W.M. Jonesfi 35060a12ec87SRichard W.M. Jones 35070a12ec87SRichard W.M. Jones########################################## 35089a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe 35099a2d462eSRichard W.M. Jones 35109a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then 35119a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 35129a2d462eSRichard W.M. Jones#include <stdio.h> 35139a2d462eSRichard W.M. Jones#include <libssh2.h> 35149a2d462eSRichard W.M. Jones#include <libssh2_sftp.h> 35159a2d462eSRichard W.M. Jonesint main(void) { 35169a2d462eSRichard W.M. Jones LIBSSH2_SESSION *session; 35179a2d462eSRichard W.M. Jones LIBSSH2_SFTP *sftp; 35189a2d462eSRichard W.M. Jones LIBSSH2_SFTP_HANDLE *sftp_handle; 35199a2d462eSRichard W.M. Jones session = libssh2_session_init (); 35209a2d462eSRichard W.M. Jones sftp = libssh2_sftp_init (session); 35219a2d462eSRichard W.M. Jones sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 35229a2d462eSRichard W.M. Jones libssh2_sftp_fsync (sftp_handle); 35239a2d462eSRichard W.M. Jones return 0; 35249a2d462eSRichard W.M. Jones} 35259a2d462eSRichard W.M. JonesEOF 35269a2d462eSRichard W.M. Jones # libssh2_cflags/libssh2_libs defined in previous test. 35279a2d462eSRichard W.M. Jones if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 35289a2d462eSRichard W.M. Jones QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 35299a2d462eSRichard W.M. Jones fi 35309a2d462eSRichard W.M. Jonesfi 35319a2d462eSRichard W.M. Jones 35329a2d462eSRichard W.M. Jones########################################## 35335c6c3a6cSChristoph Hellwig# linux-aio probe 35345c6c3a6cSChristoph Hellwig 35355c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 35365c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 35375c6c3a6cSChristoph Hellwig#include <libaio.h> 35385c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 3539832ce9c2SScott Wood#include <stddef.h> 35405c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 35415c6c3a6cSChristoph HellwigEOF 35425c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 35435c6c3a6cSChristoph Hellwig linux_aio=yes 35445c6c3a6cSChristoph Hellwig else 35455c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 354621684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 35475c6c3a6cSChristoph Hellwig fi 35483cfcae3cSLuiz Capitulino linux_aio=no 35495c6c3a6cSChristoph Hellwig fi 35505c6c3a6cSChristoph Hellwigfi 35515c6c3a6cSChristoph Hellwig 35525c6c3a6cSChristoph Hellwig########################################## 35533b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux 35543b8acc11SPaolo Bonzini 35553b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 35563b8acc11SPaolo Bonzini tpm_passthrough=$tpm 35573b8acc11SPaolo Bonzinielse 35583b8acc11SPaolo Bonzini tpm_passthrough=no 35593b8acc11SPaolo Bonzinifi 35603b8acc11SPaolo Bonzini 3561f4ede81eSAmarnath Valluri# TPM emulator is for all posix systems 3562f4ede81eSAmarnath Valluriif test "$mingw32" != "yes"; then 3563f4ede81eSAmarnath Valluri tpm_emulator=$tpm 3564f4ede81eSAmarnath Vallurielse 3565f4ede81eSAmarnath Valluri tpm_emulator=no 3566f4ede81eSAmarnath Vallurifi 35673b8acc11SPaolo Bonzini########################################## 3568758e8e38SVenkateswararao Jujjuri (JV)# attr probe 3569758e8e38SVenkateswararao Jujjuri (JV) 3570758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 3571758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 3572758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 3573758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 3574f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 3575f2338fb4SPavel Borzenkov#include <attr/xattr.h> 3576f2338fb4SPavel Borzenkov#else 35774f26f2b6SAvi Kivity#include <sys/xattr.h> 3578f2338fb4SPavel Borzenkov#endif 3579758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3580758e8e38SVenkateswararao Jujjuri (JV)EOF 35814f26f2b6SAvi Kivity if compile_prog "" "" ; then 35824f26f2b6SAvi Kivity attr=yes 35834f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 3584f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3585758e8e38SVenkateswararao Jujjuri (JV) attr=yes 3586758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 35874f26f2b6SAvi Kivity libattr=yes 3588758e8e38SVenkateswararao Jujjuri (JV) else 3589758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 359021684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 3591758e8e38SVenkateswararao Jujjuri (JV) fi 3592758e8e38SVenkateswararao Jujjuri (JV) attr=no 3593758e8e38SVenkateswararao Jujjuri (JV) fi 3594758e8e38SVenkateswararao Jujjuri (JV)fi 3595758e8e38SVenkateswararao Jujjuri (JV) 3596758e8e38SVenkateswararao Jujjuri (JV)########################################## 3597bf9298b9Saliguori# iovec probe 3598bf9298b9Saliguoricat > $TMPC <<EOF 3599db34f0b3Sblueswir1#include <sys/types.h> 3600bf9298b9Saliguori#include <sys/uio.h> 3601db34f0b3Sblueswir1#include <unistd.h> 3602f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 3603bf9298b9SaliguoriEOF 3604bf9298b9Saliguoriiovec=no 360552166aa0SJuan Quintelaif compile_prog "" "" ; then 3606bf9298b9Saliguori iovec=yes 3607bf9298b9Saliguorifi 3608bf9298b9Saliguori 3609f652e6afSaurel32########################################## 3610ceb42de8Saliguori# preadv probe 3611ceb42de8Saliguoricat > $TMPC <<EOF 3612ceb42de8Saliguori#include <sys/types.h> 3613ceb42de8Saliguori#include <sys/uio.h> 3614ceb42de8Saliguori#include <unistd.h> 3615c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 3616ceb42de8SaliguoriEOF 3617ceb42de8Saliguoripreadv=no 361852166aa0SJuan Quintelaif compile_prog "" "" ; then 3619ceb42de8Saliguori preadv=yes 3620ceb42de8Saliguorifi 3621ceb42de8Saliguori 3622ceb42de8Saliguori########################################## 3623f652e6afSaurel32# fdt probe 3624e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 3625e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 3626e169e1e1SPeter Maydellfdt_required=no 3627e169e1e1SPeter Maydellfor target in $target_list; do 3628e169e1e1SPeter Maydell case $target in 3629df1d8a1fSPaul Burton aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu) 3630e169e1e1SPeter Maydell fdt_required=yes 3631e169e1e1SPeter Maydell ;; 3632e169e1e1SPeter Maydell esac 3633e169e1e1SPeter Maydelldone 3634e169e1e1SPeter Maydell 3635e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 3636e169e1e1SPeter Maydell if test "$fdt" = "no"; then 3637e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 3638e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 3639e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 3640e169e1e1SPeter Maydell fi 3641e169e1e1SPeter Maydell fdt=yes 3642e169e1e1SPeter Maydellfi 3643e169e1e1SPeter Maydell 36442df87df7SJuan Quintelaif test "$fdt" != "no" ; then 3645b41af4baSJuan Quintela fdt_libs="-lfdt" 364696ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 36476e85fce0SPaul Burton # and test for required functions to make sure we are on a version >= 1.4.2 3648f652e6afSaurel32 cat > $TMPC << EOF 364931ce0adbSThomas Huth#include <libfdt.h> 365096ce6545SPeter Crosthwaite#include <libfdt_env.h> 36516e85fce0SPaul Burtonint main(void) { fdt_first_subnode(0, 0); return 0; } 3652f652e6afSaurel32EOF 365352166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 3654a540f158SPeter Crosthwaite # system DTC is good - use it 3655f652e6afSaurel32 fdt=yes 3656aef45d51SDaniel P. Berrange else 3657aef45d51SDaniel P. Berrange # have GIT checkout, so activate dtc submodule 3658aef45d51SDaniel P. Berrange if test -e "${source_path}/.git" ; then 3659aef45d51SDaniel P. Berrange git_submodules="${git_submodules} dtc" 3660aef45d51SDaniel P. Berrange fi 3661aef45d51SDaniel P. Berrange if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then 3662a540f158SPeter Crosthwaite fdt=yes 3663a540f158SPeter Crosthwaite dtc_internal="yes" 3664a540f158SPeter Crosthwaite mkdir -p dtc 3665cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 3666a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3667a540f158SPeter Crosthwaite symlink "$source_path/dtc/scripts" "dtc/scripts" 36682df87df7SJuan Quintela fi 3669a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3670a540f158SPeter Crosthwaite fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3671a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 3672aef45d51SDaniel P. Berrange # Not a git build & no libfdt found, prompt for system install 3673aef45d51SDaniel P. Berrange error_exit "DTC (libfdt) version >= 1.4.2 not present." \ 3674aef45d51SDaniel P. Berrange "Please install the DTC (libfdt) devel package" 3675a540f158SPeter Crosthwaite else 3676a540f158SPeter Crosthwaite # don't have and don't want 3677de3a354aSMichael Walle fdt_libs= 36782df87df7SJuan Quintela fdt=no 3679f652e6afSaurel32 fi 3680f652e6afSaurel32 fi 3681aef45d51SDaniel P. Berrangefi 3682f652e6afSaurel32 3683a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 3684a540f158SPeter Crosthwaite 368520ff075bSMichael Walle########################################## 3686fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2) 3687b1546f32SGerd Hoffmann 3688da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 3689014cb152SGerd Hoffmann opengl_pkgs="epoxy libdrm gbm" 3690fb719563SOGAWA Hirofumi if $pkg_config $opengl_pkgs x11; then 3691f676c67eSJeremy White opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3692f676c67eSJeremy White opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3693da076ffeSGerd Hoffmann opengl=yes 3694925a0400SGerd Hoffmann if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 3695925a0400SGerd Hoffmann gtk_gl="yes" 3696925a0400SGerd Hoffmann fi 3697cc720a5dSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags" 369820ff075bSMichael Walle else 3699da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 3700dcf30025SGerd Hoffmann feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 370120ff075bSMichael Walle fi 3702f676c67eSJeremy White opengl_cflags="" 3703da076ffeSGerd Hoffmann opengl_libs="" 3704da076ffeSGerd Hoffmann opengl=no 370520ff075bSMichael Walle fi 370620ff075bSMichael Wallefi 370720ff075bSMichael Walle 3708014cb152SGerd Hoffmannif test "$opengl" = "yes"; then 3709014cb152SGerd Hoffmann cat > $TMPC << EOF 3710014cb152SGerd Hoffmann#include <epoxy/egl.h> 3711014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export 3712014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 3713014cb152SGerd Hoffmann#endif 3714014cb152SGerd Hoffmannint main(void) { return 0; } 3715014cb152SGerd HoffmannEOF 3716014cb152SGerd Hoffmann if compile_prog "" "" ; then 3717014cb152SGerd Hoffmann opengl_dmabuf=yes 3718014cb152SGerd Hoffmann fi 3719014cb152SGerd Hoffmannfi 3720c9a12e75SChrysostomos Nanakos 3721c9a12e75SChrysostomos Nanakos 3722eb100396SBharata B Rao########################################## 3723eb100396SBharata B Rao# glusterfs probe 3724eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 372565d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 3726e01bee08SBharata B Rao glusterfs="yes" 372789138857SStefan Weil glusterfs_cflags=$($pkg_config --cflags glusterfs-api) 372889138857SStefan Weil glusterfs_libs=$($pkg_config --libs glusterfs-api) 3729d85fa9ebSJeff Cody if $pkg_config --atleast-version=4 glusterfs-api; then 3730d85fa9ebSJeff Cody glusterfs_xlator_opt="yes" 3731d85fa9ebSJeff Cody fi 373265d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 37330c14fb47SBharata B Rao glusterfs_discard="yes" 37340c14fb47SBharata B Rao fi 37357c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 3736df3a429aSNiels de Vos glusterfs_fallocate="yes" 37377c815372SBharata B Rao glusterfs_zerofill="yes" 37387c815372SBharata B Rao fi 3739eb100396SBharata B Rao else 3740eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 37418efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 37428efc9363SHu Tao "Install glusterfs-api devel >= 3" 3743eb100396SBharata B Rao fi 3744e01bee08SBharata B Rao glusterfs="no" 3745eb100396SBharata B Rao fi 3746eb100396SBharata B Raofi 3747eb100396SBharata B Rao 374839386ac7Saurel32# Check for inotify functions when we are building linux-user 37493b3f24adSaurel32# emulator. This is done because older glibc versions don't 37503b3f24adSaurel32# have syscall stubs for these implemented. In that case we 37513b3f24adSaurel32# don't provide them even if kernel supports them. 37523b3f24adSaurel32# 37533b3f24adSaurel32inotify=no 37543b3f24adSaurel32cat > $TMPC << EOF 37553b3f24adSaurel32#include <sys/inotify.h> 37563b3f24adSaurel32 37573b3f24adSaurel32int 37583b3f24adSaurel32main(void) 37593b3f24adSaurel32{ 37603b3f24adSaurel32 /* try to start inotify */ 37618690e420Saurel32 return inotify_init(); 37623b3f24adSaurel32} 37633b3f24adSaurel32EOF 376452166aa0SJuan Quintelaif compile_prog "" "" ; then 37653b3f24adSaurel32 inotify=yes 37663b3f24adSaurel32fi 37673b3f24adSaurel32 3768c05c7a73SRiku Voipioinotify1=no 3769c05c7a73SRiku Voipiocat > $TMPC << EOF 3770c05c7a73SRiku Voipio#include <sys/inotify.h> 3771c05c7a73SRiku Voipio 3772c05c7a73SRiku Voipioint 3773c05c7a73SRiku Voipiomain(void) 3774c05c7a73SRiku Voipio{ 3775c05c7a73SRiku Voipio /* try to start inotify */ 3776c05c7a73SRiku Voipio return inotify_init1(0); 3777c05c7a73SRiku Voipio} 3778c05c7a73SRiku VoipioEOF 3779c05c7a73SRiku Voipioif compile_prog "" "" ; then 3780c05c7a73SRiku Voipio inotify1=yes 3781c05c7a73SRiku Voipiofi 3782c05c7a73SRiku Voipio 3783099d6b0fSRiku Voipio# check if pipe2 is there 3784099d6b0fSRiku Voipiopipe2=no 3785099d6b0fSRiku Voipiocat > $TMPC << EOF 3786099d6b0fSRiku Voipio#include <unistd.h> 3787099d6b0fSRiku Voipio#include <fcntl.h> 3788099d6b0fSRiku Voipio 3789099d6b0fSRiku Voipioint main(void) 3790099d6b0fSRiku Voipio{ 3791099d6b0fSRiku Voipio int pipefd[2]; 37929bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 3793099d6b0fSRiku Voipio} 3794099d6b0fSRiku VoipioEOF 379552166aa0SJuan Quintelaif compile_prog "" "" ; then 3796099d6b0fSRiku Voipio pipe2=yes 3797099d6b0fSRiku Voipiofi 3798099d6b0fSRiku Voipio 379940ff6d7eSKevin Wolf# check if accept4 is there 380040ff6d7eSKevin Wolfaccept4=no 380140ff6d7eSKevin Wolfcat > $TMPC << EOF 380240ff6d7eSKevin Wolf#include <sys/socket.h> 380340ff6d7eSKevin Wolf#include <stddef.h> 380440ff6d7eSKevin Wolf 380540ff6d7eSKevin Wolfint main(void) 380640ff6d7eSKevin Wolf{ 380740ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 380840ff6d7eSKevin Wolf return 0; 380940ff6d7eSKevin Wolf} 381040ff6d7eSKevin WolfEOF 381140ff6d7eSKevin Wolfif compile_prog "" "" ; then 381240ff6d7eSKevin Wolf accept4=yes 381340ff6d7eSKevin Wolffi 381440ff6d7eSKevin Wolf 38153ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 38163ce34dfbSvibisreenivasansplice=no 38173ce34dfbSvibisreenivasancat > $TMPC << EOF 38183ce34dfbSvibisreenivasan#include <unistd.h> 38193ce34dfbSvibisreenivasan#include <fcntl.h> 38203ce34dfbSvibisreenivasan#include <limits.h> 38213ce34dfbSvibisreenivasan 38223ce34dfbSvibisreenivasanint main(void) 38233ce34dfbSvibisreenivasan{ 382466ea0f22SStefan Weil int len, fd = 0; 38253ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 38263ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 38273ce34dfbSvibisreenivasan return 0; 38283ce34dfbSvibisreenivasan} 38293ce34dfbSvibisreenivasanEOF 383052166aa0SJuan Quintelaif compile_prog "" "" ; then 38313ce34dfbSvibisreenivasan splice=yes 38323ce34dfbSvibisreenivasanfi 38333ce34dfbSvibisreenivasan 3834dcc38d1cSMarcelo Tosatti########################################## 3835a99d57bbSWanlong Gao# libnuma probe 3836a99d57bbSWanlong Gao 3837a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 3838a99d57bbSWanlong Gao cat > $TMPC << EOF 3839a99d57bbSWanlong Gao#include <numa.h> 3840a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 3841a99d57bbSWanlong GaoEOF 3842a99d57bbSWanlong Gao 3843a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 3844a99d57bbSWanlong Gao numa=yes 3845a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 3846a99d57bbSWanlong Gao else 3847a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 3848a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 3849a99d57bbSWanlong Gao fi 3850a99d57bbSWanlong Gao numa=no 3851a99d57bbSWanlong Gao fi 3852a99d57bbSWanlong Gaofi 3853a99d57bbSWanlong Gao 38547b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 38557b01cb97SAlexandre Derumier echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 38567b01cb97SAlexandre Derumier exit 1 38577b01cb97SAlexandre Derumierfi 38587b01cb97SAlexandre Derumier 3859a99d57bbSWanlong Gao########################################## 38602847b469SFam Zheng# tcmalloc probe 38612847b469SFam Zheng 38622847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 38632847b469SFam Zheng cat > $TMPC << EOF 38642847b469SFam Zheng#include <stdlib.h> 38652847b469SFam Zhengint main(void) { malloc(1); return 0; } 38662847b469SFam ZhengEOF 38672847b469SFam Zheng 38682847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 38692847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 38702847b469SFam Zheng else 38712847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 38722847b469SFam Zheng fi 38732847b469SFam Zhengfi 38742847b469SFam Zheng 38752847b469SFam Zheng########################################## 38767b01cb97SAlexandre Derumier# jemalloc probe 38777b01cb97SAlexandre Derumier 38787b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then 38797b01cb97SAlexandre Derumier cat > $TMPC << EOF 38807b01cb97SAlexandre Derumier#include <stdlib.h> 38817b01cb97SAlexandre Derumierint main(void) { malloc(1); return 0; } 38827b01cb97SAlexandre DerumierEOF 38837b01cb97SAlexandre Derumier 38847b01cb97SAlexandre Derumier if compile_prog "" "-ljemalloc" ; then 38857b01cb97SAlexandre Derumier LIBS="-ljemalloc $LIBS" 38867b01cb97SAlexandre Derumier else 38877b01cb97SAlexandre Derumier feature_not_found "jemalloc" "install jemalloc devel" 38887b01cb97SAlexandre Derumier fi 38897b01cb97SAlexandre Derumierfi 38907b01cb97SAlexandre Derumier 38917b01cb97SAlexandre Derumier########################################## 3892dcc38d1cSMarcelo Tosatti# signalfd probe 3893dcc38d1cSMarcelo Tosattisignalfd="no" 3894dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 3895dcc38d1cSMarcelo Tosatti#include <unistd.h> 3896dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 3897dcc38d1cSMarcelo Tosatti#include <signal.h> 3898dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3899dcc38d1cSMarcelo TosattiEOF 3900dcc38d1cSMarcelo Tosatti 3901dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 3902dcc38d1cSMarcelo Tosatti signalfd=yes 3903dcc38d1cSMarcelo Tosattifi 3904dcc38d1cSMarcelo Tosatti 3905c2882b96SRiku Voipio# check if eventfd is supported 3906c2882b96SRiku Voipioeventfd=no 3907c2882b96SRiku Voipiocat > $TMPC << EOF 3908c2882b96SRiku Voipio#include <sys/eventfd.h> 3909c2882b96SRiku Voipio 3910c2882b96SRiku Voipioint main(void) 3911c2882b96SRiku Voipio{ 391255cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3913c2882b96SRiku Voipio} 3914c2882b96SRiku VoipioEOF 3915c2882b96SRiku Voipioif compile_prog "" "" ; then 3916c2882b96SRiku Voipio eventfd=yes 3917c2882b96SRiku Voipiofi 3918c2882b96SRiku Voipio 3919751bcc39SMarc-André Lureau# check if memfd is supported 3920751bcc39SMarc-André Lureaumemfd=no 3921751bcc39SMarc-André Lureaucat > $TMPC << EOF 3922751bcc39SMarc-André Lureau#include <sys/memfd.h> 3923751bcc39SMarc-André Lureau 3924751bcc39SMarc-André Lureauint main(void) 3925751bcc39SMarc-André Lureau{ 3926751bcc39SMarc-André Lureau return memfd_create("foo", MFD_ALLOW_SEALING); 3927751bcc39SMarc-André Lureau} 3928751bcc39SMarc-André LureauEOF 3929751bcc39SMarc-André Lureauif compile_prog "" "" ; then 3930751bcc39SMarc-André Lureau memfd=yes 3931751bcc39SMarc-André Lureaufi 3932751bcc39SMarc-André Lureau 3933751bcc39SMarc-André Lureau 3934751bcc39SMarc-André Lureau 3935d0927938SUlrich Hecht# check for fallocate 3936d0927938SUlrich Hechtfallocate=no 3937d0927938SUlrich Hechtcat > $TMPC << EOF 3938d0927938SUlrich Hecht#include <fcntl.h> 3939d0927938SUlrich Hecht 3940d0927938SUlrich Hechtint main(void) 3941d0927938SUlrich Hecht{ 3942d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 3943d0927938SUlrich Hecht return 0; 3944d0927938SUlrich Hecht} 3945d0927938SUlrich HechtEOF 39468fb03151SPeter Maydellif compile_prog "" "" ; then 3947d0927938SUlrich Hecht fallocate=yes 3948d0927938SUlrich Hechtfi 3949d0927938SUlrich Hecht 39503d4fa43eSKusanagi Kouichi# check for fallocate hole punching 39513d4fa43eSKusanagi Kouichifallocate_punch_hole=no 39523d4fa43eSKusanagi Kouichicat > $TMPC << EOF 39533d4fa43eSKusanagi Kouichi#include <fcntl.h> 39543d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 39553d4fa43eSKusanagi Kouichi 39563d4fa43eSKusanagi Kouichiint main(void) 39573d4fa43eSKusanagi Kouichi{ 39583d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 39593d4fa43eSKusanagi Kouichi return 0; 39603d4fa43eSKusanagi Kouichi} 39613d4fa43eSKusanagi KouichiEOF 39623d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 39633d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 39643d4fa43eSKusanagi Kouichifi 39653d4fa43eSKusanagi Kouichi 3966b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 3967b953f075SDenis V. Lunevfallocate_zero_range=no 3968b953f075SDenis V. Lunevcat > $TMPC << EOF 3969b953f075SDenis V. Lunev#include <fcntl.h> 3970b953f075SDenis V. Lunev#include <linux/falloc.h> 3971b953f075SDenis V. Lunev 3972b953f075SDenis V. Lunevint main(void) 3973b953f075SDenis V. Lunev{ 3974b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3975b953f075SDenis V. Lunev return 0; 3976b953f075SDenis V. Lunev} 3977b953f075SDenis V. LunevEOF 3978b953f075SDenis V. Lunevif compile_prog "" "" ; then 3979b953f075SDenis V. Lunev fallocate_zero_range=yes 3980b953f075SDenis V. Lunevfi 3981b953f075SDenis V. Lunev 3982ed911435SKevin Wolf# check for posix_fallocate 3983ed911435SKevin Wolfposix_fallocate=no 3984ed911435SKevin Wolfcat > $TMPC << EOF 3985ed911435SKevin Wolf#include <fcntl.h> 3986ed911435SKevin Wolf 3987ed911435SKevin Wolfint main(void) 3988ed911435SKevin Wolf{ 3989ed911435SKevin Wolf posix_fallocate(0, 0, 0); 3990ed911435SKevin Wolf return 0; 3991ed911435SKevin Wolf} 3992ed911435SKevin WolfEOF 3993ed911435SKevin Wolfif compile_prog "" "" ; then 3994ed911435SKevin Wolf posix_fallocate=yes 3995ed911435SKevin Wolffi 3996ed911435SKevin Wolf 3997c727f47dSPeter Maydell# check for sync_file_range 3998c727f47dSPeter Maydellsync_file_range=no 3999c727f47dSPeter Maydellcat > $TMPC << EOF 4000c727f47dSPeter Maydell#include <fcntl.h> 4001c727f47dSPeter Maydell 4002c727f47dSPeter Maydellint main(void) 4003c727f47dSPeter Maydell{ 4004c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 4005c727f47dSPeter Maydell return 0; 4006c727f47dSPeter Maydell} 4007c727f47dSPeter MaydellEOF 40088fb03151SPeter Maydellif compile_prog "" "" ; then 4009c727f47dSPeter Maydell sync_file_range=yes 4010c727f47dSPeter Maydellfi 4011c727f47dSPeter Maydell 4012dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 4013dace20dcSPeter Maydellfiemap=no 4014dace20dcSPeter Maydellcat > $TMPC << EOF 4015dace20dcSPeter Maydell#include <sys/ioctl.h> 4016dace20dcSPeter Maydell#include <linux/fs.h> 4017dace20dcSPeter Maydell#include <linux/fiemap.h> 4018dace20dcSPeter Maydell 4019dace20dcSPeter Maydellint main(void) 4020dace20dcSPeter Maydell{ 4021dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 4022dace20dcSPeter Maydell return 0; 4023dace20dcSPeter Maydell} 4024dace20dcSPeter MaydellEOF 40258fb03151SPeter Maydellif compile_prog "" "" ; then 4026dace20dcSPeter Maydell fiemap=yes 4027dace20dcSPeter Maydellfi 4028dace20dcSPeter Maydell 4029d0927938SUlrich Hecht# check for dup3 4030d0927938SUlrich Hechtdup3=no 4031d0927938SUlrich Hechtcat > $TMPC << EOF 4032d0927938SUlrich Hecht#include <unistd.h> 4033d0927938SUlrich Hecht 4034d0927938SUlrich Hechtint main(void) 4035d0927938SUlrich Hecht{ 4036d0927938SUlrich Hecht dup3(0, 0, 0); 4037d0927938SUlrich Hecht return 0; 4038d0927938SUlrich Hecht} 4039d0927938SUlrich HechtEOF 404078f5d726SJan Kiszkaif compile_prog "" "" ; then 4041d0927938SUlrich Hecht dup3=yes 4042d0927938SUlrich Hechtfi 4043d0927938SUlrich Hecht 40444e0c6529SAlex Bligh# check for ppoll support 40454e0c6529SAlex Blighppoll=no 40464e0c6529SAlex Blighcat > $TMPC << EOF 40474e0c6529SAlex Bligh#include <poll.h> 40484e0c6529SAlex Bligh 40494e0c6529SAlex Blighint main(void) 40504e0c6529SAlex Bligh{ 40514e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 40524e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 40534e0c6529SAlex Bligh return 0; 40544e0c6529SAlex Bligh} 40554e0c6529SAlex BlighEOF 40564e0c6529SAlex Blighif compile_prog "" "" ; then 40574e0c6529SAlex Bligh ppoll=yes 40584e0c6529SAlex Blighfi 40594e0c6529SAlex Bligh 4060cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 4061cd758dd0SAlex Blighprctl_pr_set_timerslack=no 4062cd758dd0SAlex Blighcat > $TMPC << EOF 4063cd758dd0SAlex Bligh#include <sys/prctl.h> 4064cd758dd0SAlex Bligh 4065cd758dd0SAlex Blighint main(void) 4066cd758dd0SAlex Bligh{ 4067cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 4068cd758dd0SAlex Bligh return 0; 4069cd758dd0SAlex Bligh} 4070cd758dd0SAlex BlighEOF 4071cd758dd0SAlex Blighif compile_prog "" "" ; then 4072cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 4073cd758dd0SAlex Blighfi 4074cd758dd0SAlex Bligh 40753b6edd16SPeter Maydell# check for epoll support 40763b6edd16SPeter Maydellepoll=no 40773b6edd16SPeter Maydellcat > $TMPC << EOF 40783b6edd16SPeter Maydell#include <sys/epoll.h> 40793b6edd16SPeter Maydell 40803b6edd16SPeter Maydellint main(void) 40813b6edd16SPeter Maydell{ 40823b6edd16SPeter Maydell epoll_create(0); 40833b6edd16SPeter Maydell return 0; 40843b6edd16SPeter Maydell} 40853b6edd16SPeter MaydellEOF 40868fb03151SPeter Maydellif compile_prog "" "" ; then 40873b6edd16SPeter Maydell epoll=yes 40883b6edd16SPeter Maydellfi 40893b6edd16SPeter Maydell 4090227f0214SPeter Maydell# epoll_create1 is a later addition 4091227f0214SPeter Maydell# so we must check separately for its presence 40923b6edd16SPeter Maydellepoll_create1=no 40933b6edd16SPeter Maydellcat > $TMPC << EOF 40943b6edd16SPeter Maydell#include <sys/epoll.h> 40953b6edd16SPeter Maydell 40963b6edd16SPeter Maydellint main(void) 40973b6edd16SPeter Maydell{ 409819e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 409919e83f6bSPeter Maydell * a function being called. This is necessary so that on 410019e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 410119e83f6bSPeter Maydell * the library but not declared in the header file we will 410219e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 410319e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 410419e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 410519e83f6bSPeter Maydell */ 4106c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 41073b6edd16SPeter Maydell} 41083b6edd16SPeter MaydellEOF 41098fb03151SPeter Maydellif compile_prog "" "" ; then 41103b6edd16SPeter Maydell epoll_create1=yes 41113b6edd16SPeter Maydellfi 41123b6edd16SPeter Maydell 4113a8fd1abaSPeter Maydell# check for sendfile support 4114a8fd1abaSPeter Maydellsendfile=no 4115a8fd1abaSPeter Maydellcat > $TMPC << EOF 4116a8fd1abaSPeter Maydell#include <sys/sendfile.h> 4117a8fd1abaSPeter Maydell 4118a8fd1abaSPeter Maydellint main(void) 4119a8fd1abaSPeter Maydell{ 4120a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 4121a8fd1abaSPeter Maydell} 4122a8fd1abaSPeter MaydellEOF 4123a8fd1abaSPeter Maydellif compile_prog "" "" ; then 4124a8fd1abaSPeter Maydell sendfile=yes 4125a8fd1abaSPeter Maydellfi 4126a8fd1abaSPeter Maydell 412751834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 412851834341SRiku Voipiotimerfd=no 412951834341SRiku Voipiocat > $TMPC << EOF 413051834341SRiku Voipio#include <sys/timerfd.h> 413151834341SRiku Voipio 413251834341SRiku Voipioint main(void) 413351834341SRiku Voipio{ 413451834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 413551834341SRiku Voipio} 413651834341SRiku VoipioEOF 413751834341SRiku Voipioif compile_prog "" "" ; then 413851834341SRiku Voipio timerfd=yes 413951834341SRiku Voipiofi 414051834341SRiku Voipio 41419af5c906SRiku Voipio# check for setns and unshare support 41429af5c906SRiku Voipiosetns=no 41439af5c906SRiku Voipiocat > $TMPC << EOF 41449af5c906SRiku Voipio#include <sched.h> 41459af5c906SRiku Voipio 41469af5c906SRiku Voipioint main(void) 41479af5c906SRiku Voipio{ 41489af5c906SRiku Voipio int ret; 41499af5c906SRiku Voipio ret = setns(0, 0); 41509af5c906SRiku Voipio ret = unshare(0); 41519af5c906SRiku Voipio return ret; 41529af5c906SRiku Voipio} 41539af5c906SRiku VoipioEOF 41549af5c906SRiku Voipioif compile_prog "" "" ; then 41559af5c906SRiku Voipio setns=yes 41569af5c906SRiku Voipiofi 41579af5c906SRiku Voipio 415838860a03SAleksandar Markovic# clock_adjtime probe 415938860a03SAleksandar Markovicclock_adjtime=no 416038860a03SAleksandar Markoviccat > $TMPC <<EOF 416138860a03SAleksandar Markovic#include <time.h> 416238860a03SAleksandar Markovic 416338860a03SAleksandar Markovicint main(void) 416438860a03SAleksandar Markovic{ 416538860a03SAleksandar Markovic return clock_adjtime(0, 0); 416638860a03SAleksandar Markovic} 416738860a03SAleksandar MarkovicEOF 416838860a03SAleksandar Markovicclock_adjtime=no 416938860a03SAleksandar Markovicif compile_prog "" "" ; then 417038860a03SAleksandar Markovic clock_adjtime=yes 417138860a03SAleksandar Markovicfi 417238860a03SAleksandar Markovic 41735a03cd00SAleksandar Markovic# syncfs probe 41745a03cd00SAleksandar Markovicsyncfs=no 41755a03cd00SAleksandar Markoviccat > $TMPC <<EOF 41765a03cd00SAleksandar Markovic#include <unistd.h> 41775a03cd00SAleksandar Markovic 41785a03cd00SAleksandar Markovicint main(void) 41795a03cd00SAleksandar Markovic{ 41805a03cd00SAleksandar Markovic return syncfs(0); 41815a03cd00SAleksandar Markovic} 41825a03cd00SAleksandar MarkovicEOF 41835a03cd00SAleksandar Markovicsyncfs=no 41845a03cd00SAleksandar Markovicif compile_prog "" "" ; then 41855a03cd00SAleksandar Markovic syncfs=yes 41865a03cd00SAleksandar Markovicfi 41875a03cd00SAleksandar Markovic 4188cc8ae6deSpbrook# Check if tools are available to build documentation. 4189a25dba17SJuan Quintelaif test "$docs" != "no" ; then 419001668d98SStefan Weil if has makeinfo && has pod2man; then 4191a25dba17SJuan Quintela docs=yes 419283a3ab8bSJuan Quintela else 4193a25dba17SJuan Quintela if test "$docs" = "yes" ; then 419421684af0SStewart Smith feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 419583a3ab8bSJuan Quintela fi 4196a25dba17SJuan Quintela docs=no 419783a3ab8bSJuan Quintela fi 4198cc8ae6deSpbrookfi 4199cc8ae6deSpbrook 4200f514f41cSStefan Weil# Search for bswap_32 function 42016ae9a1f4SJuan Quintelabyteswap_h=no 42026ae9a1f4SJuan Quintelacat > $TMPC << EOF 42036ae9a1f4SJuan Quintela#include <byteswap.h> 42046ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 42056ae9a1f4SJuan QuintelaEOF 420652166aa0SJuan Quintelaif compile_prog "" "" ; then 42076ae9a1f4SJuan Quintela byteswap_h=yes 42086ae9a1f4SJuan Quintelafi 42096ae9a1f4SJuan Quintela 421075f13596SStefan Weil# Search for bswap32 function 42116ae9a1f4SJuan Quintelabswap_h=no 42126ae9a1f4SJuan Quintelacat > $TMPC << EOF 42136ae9a1f4SJuan Quintela#include <sys/endian.h> 42146ae9a1f4SJuan Quintela#include <sys/types.h> 42156ae9a1f4SJuan Quintela#include <machine/bswap.h> 42166ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 42176ae9a1f4SJuan QuintelaEOF 421852166aa0SJuan Quintelaif compile_prog "" "" ; then 42196ae9a1f4SJuan Quintela bswap_h=yes 42206ae9a1f4SJuan Quintelafi 42216ae9a1f4SJuan Quintela 4222da93a1fdSaliguori########################################## 4223e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 4224c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 4225e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 42263c33ea96SPaolo Bonzini libiscsi="yes" 4227ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 4228ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 4229c589b249SRonnie Sahlberg else 4230c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 4231e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 4232c589b249SRonnie Sahlberg fi 4233c589b249SRonnie Sahlberg libiscsi="no" 4234c589b249SRonnie Sahlberg fi 4235c589b249SRonnie Sahlbergfi 4236c589b249SRonnie Sahlberg 4237c589b249SRonnie Sahlberg########################################## 42388bacde8dSNatanael Copa# Do we need libm 42398bacde8dSNatanael Copacat > $TMPC << EOF 42408bacde8dSNatanael Copa#include <math.h> 4241f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 42428bacde8dSNatanael CopaEOF 42438bacde8dSNatanael Copaif compile_prog "" "" ; then 42448bacde8dSNatanael Copa : 42458bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 42468bacde8dSNatanael Copa LIBS="-lm $LIBS" 42478bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 42488bacde8dSNatanael Copaelse 424976ad07a4SPeter Maydell error_exit "libm check failed" 42508bacde8dSNatanael Copafi 42518bacde8dSNatanael Copa 42528bacde8dSNatanael Copa########################################## 4253da93a1fdSaliguori# Do we need librt 42548bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 42558bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 42568bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 42578bacde8dSNatanael Copa# function in addition. 4258da93a1fdSaliguoricat > $TMPC <<EOF 4259da93a1fdSaliguori#include <signal.h> 4260da93a1fdSaliguori#include <time.h> 42618bacde8dSNatanael Copaint main(void) { 42628bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 42638bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 42648bacde8dSNatanael Copa} 4265da93a1fdSaliguoriEOF 4266da93a1fdSaliguori 426752166aa0SJuan Quintelaif compile_prog "" "" ; then 426807ffa4bdSJuan Quintela : 42698bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 427018e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 427118e588b1SRick Liu LIBS="$LIBS -lrt" 427218e588b1SRick Liu libs_qga="$libs_qga -lrt" 4273da93a1fdSaliguorifi 4274da93a1fdSaliguori 427531ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 427678723752SPeter Maydell "$haiku" != "yes" ; then 42776362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 42786362a53fSJuan Quintelafi 42796362a53fSJuan Quintela 4280de5071c5SBlue Swirl########################################## 4281cd4ec0b4SGerd Hoffmann# spice probe 4282cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 4283cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 4284cd4ec0b4SGerd Hoffmann#include <spice.h> 4285cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 4286cd4ec0b4SGerd HoffmannEOF 4287710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 4288710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 428965d5d3f9SStefan Weil if $pkg_config --atleast-version=0.12.0 spice-server && \ 429065d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 4291cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 4292cd4ec0b4SGerd Hoffmann spice="yes" 4293cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 4294cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 42952e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 42962e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 4297cd4ec0b4SGerd Hoffmann else 4298cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 42998efc9363SHu Tao feature_not_found "spice" \ 43008efc9363SHu Tao "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 4301cd4ec0b4SGerd Hoffmann fi 4302cd4ec0b4SGerd Hoffmann spice="no" 4303cd4ec0b4SGerd Hoffmann fi 4304cd4ec0b4SGerd Hoffmannfi 4305cd4ec0b4SGerd Hoffmann 43067b02f544SMarc-André Lureau# check for smartcard support 43077b02f544SMarc-André Lureauif test "$smartcard" != "no"; then 43087b02f544SMarc-André Lureau if $pkg_config libcacard; then 43097b02f544SMarc-André Lureau libcacard_cflags=$($pkg_config --cflags libcacard) 43107b02f544SMarc-André Lureau libcacard_libs=$($pkg_config --libs libcacard) 43117b02f544SMarc-André Lureau smartcard="yes" 4312111a38b0SRobert Relyea else 43137b02f544SMarc-André Lureau if test "$smartcard" = "yes"; then 43147b02f544SMarc-André Lureau feature_not_found "smartcard" "Install libcacard devel" 4315111a38b0SRobert Relyea fi 43167b02f544SMarc-André Lureau smartcard="no" 4317111a38b0SRobert Relyea fi 4318111a38b0SRobert Relyeafi 4319111a38b0SRobert Relyea 43202b2325ffSGerd Hoffmann# check for libusb 43212b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 432265d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 43232b2325ffSGerd Hoffmann libusb="yes" 4324ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 4325ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 43262b2325ffSGerd Hoffmann else 43272b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 43288efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 43292b2325ffSGerd Hoffmann fi 43302b2325ffSGerd Hoffmann libusb="no" 43312b2325ffSGerd Hoffmann fi 43322b2325ffSGerd Hoffmannfi 43332b2325ffSGerd Hoffmann 433469354a83SHans de Goede# check for usbredirparser for usb network redirection support 433569354a83SHans de Goedeif test "$usb_redir" != "no" ; then 433665d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 433769354a83SHans de Goede usb_redir="yes" 4338ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 4339ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 434069354a83SHans de Goede else 434169354a83SHans de Goede if test "$usb_redir" = "yes"; then 434221684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 434369354a83SHans de Goede fi 434469354a83SHans de Goede usb_redir="no" 434569354a83SHans de Goede fi 434669354a83SHans de Goedefi 434769354a83SHans de Goede 4348cd4ec0b4SGerd Hoffmann########################################## 4349d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 4350d9840e25STomoki Sekiyama 4351d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 4352d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 4353690604f6SMichael Roth "") vss_win32_include="-isystem $source_path" ;; 4354d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 4355d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 4356690604f6SMichael Roth vss_win32_include="-isystem $source_path/.sdk/vss" 4357d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 4358d9840e25STomoki Sekiyama ;; 4359690604f6SMichael Roth *) vss_win32_include="-isystem $vss_win32_sdk" 4360d9840e25STomoki Sekiyama esac 4361d9840e25STomoki Sekiyama cat > $TMPC << EOF 4362d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 4363d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 4364d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 4365d9840e25STomoki SekiyamaEOF 4366d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 4367d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 4368d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 4369315d3184SFam Zheng libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 4370f33ca81fSMichael Roth qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 4371d9840e25STomoki Sekiyama else 4372d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 4373d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 4374d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 4375d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 4376d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 4377d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 4378d9840e25STomoki Sekiyama feature_not_found "VSS support" 4379d9840e25STomoki Sekiyama fi 4380d9840e25STomoki Sekiyama guest_agent_with_vss="no" 4381d9840e25STomoki Sekiyama fi 4382d9840e25STomoki Sekiyamafi 4383d9840e25STomoki Sekiyama 4384d9840e25STomoki Sekiyama########################################## 4385d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 4386d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 4387d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 4388d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 4389d9840e25STomoki Sekiyama 4390d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 4391d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 4392d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 4393d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 4394d9840e25STomoki Sekiyama if test -n "$programfiles"; then 4395d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 4396d9840e25STomoki Sekiyama else 4397d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 4398d9840e25STomoki Sekiyama fi 4399d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 4400d9840e25STomoki Sekiyama win_sdk="" 4401d9840e25STomoki Sekiyama fi 4402d9840e25STomoki Sekiyamafi 4403d9840e25STomoki Sekiyama 4404d9840e25STomoki Sekiyama########################################## 440550cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h 440650cbebb9SMichael Rothif test "$mingw32" = "yes" -a "$guest_agent" != "no"; then 440750cbebb9SMichael Roth cat > $TMPC << EOF 440850cbebb9SMichael Roth#include <windows.h> 440950cbebb9SMichael Roth#include <ntddscsi.h> 441050cbebb9SMichael Rothint main(void) { 441150cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS) 441250cbebb9SMichael Roth#error Missing required ioctl definitions 441350cbebb9SMichael Roth#endif 441450cbebb9SMichael Roth SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 441550cbebb9SMichael Roth return addr.Lun; 441650cbebb9SMichael Roth} 441750cbebb9SMichael RothEOF 441850cbebb9SMichael Roth if compile_prog "" "" ; then 441950cbebb9SMichael Roth guest_agent_ntddscsi=yes 4420c54e1eb4SMichael Roth libs_qga="-lsetupapi $libs_qga" 442150cbebb9SMichael Roth fi 442250cbebb9SMichael Rothfi 442350cbebb9SMichael Roth 442450cbebb9SMichael Roth########################################## 44259d9e1521SGerd Hoffmann# virgl renderer probe 44269d9e1521SGerd Hoffmann 44279d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then 44289d9e1521SGerd Hoffmann cat > $TMPC << EOF 44299d9e1521SGerd Hoffmann#include <virglrenderer.h> 44309d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; } 44319d9e1521SGerd HoffmannEOF 44329d9e1521SGerd Hoffmann virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 44339d9e1521SGerd Hoffmann virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 44349d9e1521SGerd Hoffmann if $pkg_config virglrenderer >/dev/null 2>&1 && \ 44359d9e1521SGerd Hoffmann compile_prog "$virgl_cflags" "$virgl_libs" ; then 44369d9e1521SGerd Hoffmann virglrenderer="yes" 44379d9e1521SGerd Hoffmann else 44389d9e1521SGerd Hoffmann if test "$virglrenderer" = "yes" ; then 44399d9e1521SGerd Hoffmann feature_not_found "virglrenderer" 44409d9e1521SGerd Hoffmann fi 44419d9e1521SGerd Hoffmann virglrenderer="no" 44429d9e1521SGerd Hoffmann fi 44439d9e1521SGerd Hoffmannfi 44449d9e1521SGerd Hoffmann 44459d9e1521SGerd Hoffmann########################################## 44468ca80760SRichard Henderson# capstone 44478ca80760SRichard Henderson 4448e219c499SRichard Hendersoncase "$capstone" in 4449e219c499SRichard Henderson "" | yes) 44508ca80760SRichard Henderson if $pkg_config capstone; then 4451e219c499SRichard Henderson capstone=system 4452e219c499SRichard Henderson elif test -e "${source_path}/.git" ; then 4453e219c499SRichard Henderson capstone=git 4454e219c499SRichard Henderson elif test -e "${source_path}/capstone/Makefile" ; then 4455e219c499SRichard Henderson capstone=internal 4456e219c499SRichard Henderson elif test -z "$capstone" ; then 4457e219c499SRichard Henderson capstone=no 4458e219c499SRichard Henderson else 4459e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel or git submodule" 4460e219c499SRichard Henderson fi 4461e219c499SRichard Henderson ;; 4462e219c499SRichard Henderson 4463e219c499SRichard Henderson system) 4464e219c499SRichard Henderson if ! $pkg_config capstone; then 4465e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel" 4466e219c499SRichard Henderson fi 4467e219c499SRichard Henderson ;; 4468e219c499SRichard Hendersonesac 4469e219c499SRichard Henderson 4470e219c499SRichard Hendersoncase "$capstone" in 4471e219c499SRichard Henderson git | internal) 4472e219c499SRichard Henderson if test "$capstone" = git; then 4473e219c499SRichard Henderson git_submodules="${git_submodules} capstone" 4474e219c499SRichard Henderson fi 4475e219c499SRichard Henderson mkdir -p capstone 4476e219c499SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS -I\$(SRC_PATH)/capstone/include" 4477e219c499SRichard Henderson if test "$mingw32" = "yes"; then 4478e219c499SRichard Henderson LIBCAPSTONE=capstone.lib 4479e219c499SRichard Henderson else 4480e219c499SRichard Henderson LIBCAPSTONE=libcapstone.a 4481e219c499SRichard Henderson fi 4482e219c499SRichard Henderson LIBS="-L\$(BUILD_DIR)/capstone -lcapstone $LIBS" 4483e219c499SRichard Henderson ;; 4484e219c499SRichard Henderson 4485e219c499SRichard Henderson system) 44868ca80760SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" 44878ca80760SRichard Henderson LIBS="$($pkg_config --libs capstone) $LIBS" 4488e219c499SRichard Henderson ;; 4489e219c499SRichard Henderson 4490e219c499SRichard Henderson no) 4491e219c499SRichard Henderson ;; 4492e219c499SRichard Henderson *) 4493e219c499SRichard Henderson error_exit "Unknown state for capstone: $capstone" 4494e219c499SRichard Henderson ;; 4495e219c499SRichard Hendersonesac 44968ca80760SRichard Henderson 44978ca80760SRichard Henderson########################################## 44985f6b9e8fSBlue Swirl# check if we have fdatasync 44995f6b9e8fSBlue Swirl 45005f6b9e8fSBlue Swirlfdatasync=no 45015f6b9e8fSBlue Swirlcat > $TMPC << EOF 45025f6b9e8fSBlue Swirl#include <unistd.h> 4503d1722a27SAlexandre Raymondint main(void) { 4504d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 4505d1722a27SAlexandre Raymondreturn fdatasync(0); 4506d1722a27SAlexandre Raymond#else 4507e172fe11SStefan Weil#error Not supported 4508d1722a27SAlexandre Raymond#endif 4509d1722a27SAlexandre Raymond} 45105f6b9e8fSBlue SwirlEOF 45115f6b9e8fSBlue Swirlif compile_prog "" "" ; then 45125f6b9e8fSBlue Swirl fdatasync=yes 45135f6b9e8fSBlue Swirlfi 45145f6b9e8fSBlue Swirl 451594a420b1SStefan Hajnoczi########################################## 4516e78815a5SAndreas Färber# check if we have madvise 4517e78815a5SAndreas Färber 4518e78815a5SAndreas Färbermadvise=no 4519e78815a5SAndreas Färbercat > $TMPC << EOF 4520e78815a5SAndreas Färber#include <sys/types.h> 4521e78815a5SAndreas Färber#include <sys/mman.h> 4522832ce9c2SScott Wood#include <stddef.h> 4523e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 4524e78815a5SAndreas FärberEOF 4525e78815a5SAndreas Färberif compile_prog "" "" ; then 4526e78815a5SAndreas Färber madvise=yes 4527e78815a5SAndreas Färberfi 4528e78815a5SAndreas Färber 4529e78815a5SAndreas Färber########################################## 4530e78815a5SAndreas Färber# check if we have posix_madvise 4531e78815a5SAndreas Färber 4532e78815a5SAndreas Färberposix_madvise=no 4533e78815a5SAndreas Färbercat > $TMPC << EOF 4534e78815a5SAndreas Färber#include <sys/mman.h> 4535832ce9c2SScott Wood#include <stddef.h> 4536e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 4537e78815a5SAndreas FärberEOF 4538e78815a5SAndreas Färberif compile_prog "" "" ; then 4539e78815a5SAndreas Färber posix_madvise=yes 4540e78815a5SAndreas Färberfi 4541e78815a5SAndreas Färber 4542e78815a5SAndreas Färber########################################## 45430a852417SPaul Durrant# check if we have posix_syslog 45440a852417SPaul Durrant 45450a852417SPaul Durrantposix_syslog=no 45460a852417SPaul Durrantcat > $TMPC << EOF 45470a852417SPaul Durrant#include <syslog.h> 45480a852417SPaul Durrantint main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; } 45490a852417SPaul DurrantEOF 45500a852417SPaul Durrantif compile_prog "" "" ; then 45510a852417SPaul Durrant posix_syslog=yes 45520a852417SPaul Durrantfi 45530a852417SPaul Durrant 45540a852417SPaul Durrant########################################## 4555401bc051SPeter Maydell# check if we have sem_timedwait 4556401bc051SPeter Maydell 4557401bc051SPeter Maydellsem_timedwait=no 4558401bc051SPeter Maydellcat > $TMPC << EOF 4559401bc051SPeter Maydell#include <semaphore.h> 4560401bc051SPeter Maydellint main(void) { return sem_timedwait(0, 0); } 4561401bc051SPeter MaydellEOF 4562401bc051SPeter Maydellif compile_prog "" "" ; then 4563401bc051SPeter Maydell sem_timedwait=yes 4564401bc051SPeter Maydellfi 4565401bc051SPeter Maydell 4566401bc051SPeter Maydell########################################## 456794a420b1SStefan Hajnoczi# check if trace backend exists 456894a420b1SStefan Hajnoczi 45695b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 457094a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 45715b808275SLluís Vilanova error_exit "invalid trace backends" \ 45725b808275SLluís Vilanova "Please choose supported trace backends." 457394a420b1SStefan Hajnoczifi 457494a420b1SStefan Hajnoczi 45757e24e92aSStefan Hajnoczi########################################## 45767e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 45775b808275SLluís Vilanovaif have_backend "ust"; then 45787e24e92aSStefan Hajnoczi cat > $TMPC << EOF 4579bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 45807e24e92aSStefan Hajnocziint main(void) { return 0; } 45817e24e92aSStefan HajnocziEOF 4582c79ed23dSFrancis Deslauriers if compile_prog "" "-Wl,--no-as-needed -ldl" ; then 4583bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 458489138857SStefan Weil lttng_ust_libs=$($pkg_config --libs lttng-ust) 45857e24e92aSStefan Hajnoczi else 4586c79ed23dSFrancis Deslauriers lttng_ust_libs="-llttng-ust -ldl" 4587bf15f63cSMohamad Gebai fi 4588bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 458989138857SStefan Weil urcu_bp_libs=$($pkg_config --libs liburcu-bp) 4590bf15f63cSMohamad Gebai else 4591bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 4592bf15f63cSMohamad Gebai fi 4593bf15f63cSMohamad Gebai 4594bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 4595bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 4596bf15f63cSMohamad Gebai else 4597bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 45987e24e92aSStefan Hajnoczi fi 45997e24e92aSStefan Hajnoczifi 4600b3d08c02SDaniel P. Berrange 4601b3d08c02SDaniel P. Berrange########################################## 4602b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 46035b808275SLluís Vilanovaif have_backend "dtrace"; then 4604b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 460576ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 4606b3d08c02SDaniel P. Berrange fi 4607c276b17dSDaniel P. Berrange trace_backend_stap="no" 4608c276b17dSDaniel P. Berrange if has 'stap' ; then 4609c276b17dSDaniel P. Berrange trace_backend_stap="yes" 4610c276b17dSDaniel P. Berrange fi 4611b3d08c02SDaniel P. Berrangefi 4612b3d08c02SDaniel P. Berrange 46137e24e92aSStefan Hajnoczi########################################## 4614519175a2SAlex Barcelo# check and set a backend for coroutine 4615d0e2fce5SAneesh Kumar K.V 46167c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 461733c53c54SDaniel P. Berrange# is sigcontext. On Windows the only valid backend is the Windows 461833c53c54SDaniel P. Berrange# specific one. 46197c2acc70SPeter Maydell 46207c2acc70SPeter Maydellucontext_works=no 4621d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 4622d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 4623d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 4624cdf84806SPeter Maydell#ifdef __stub_makecontext 4625cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 4626cdf84806SPeter Maydell#endif 462775cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 4628d0e2fce5SAneesh Kumar K.VEOF 4629d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 46307c2acc70SPeter Maydell ucontext_works=yes 4631d0e2fce5SAneesh Kumar K.V fi 4632519175a2SAlex Barcelofi 46337c2acc70SPeter Maydell 46347c2acc70SPeter Maydellif test "$coroutine" = ""; then 46357c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 46367c2acc70SPeter Maydell coroutine=win32 46377c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 46387c2acc70SPeter Maydell coroutine=ucontext 4639519175a2SAlex Barcelo else 46407c2acc70SPeter Maydell coroutine=sigaltstack 46417c2acc70SPeter Maydell fi 46427c2acc70SPeter Maydellelse 46437c2acc70SPeter Maydell case $coroutine in 46447c2acc70SPeter Maydell windows) 46457c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 46467c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 46477c2acc70SPeter Maydell fi 46487c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 46497c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 46507c2acc70SPeter Maydell coroutine=win32 46517c2acc70SPeter Maydell ;; 46527c2acc70SPeter Maydell ucontext) 46537c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 46547c2acc70SPeter Maydell feature_not_found "ucontext" 46557c2acc70SPeter Maydell fi 46567c2acc70SPeter Maydell ;; 465733c53c54SDaniel P. Berrange sigaltstack) 46587c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 46597c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 46607c2acc70SPeter Maydell fi 46617c2acc70SPeter Maydell ;; 46627c2acc70SPeter Maydell *) 466376ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 46647c2acc70SPeter Maydell ;; 46657c2acc70SPeter Maydell esac 4666d0e2fce5SAneesh Kumar K.Vfi 4667d0e2fce5SAneesh Kumar K.V 466870c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 466970c60c08SStefan Hajnoczi coroutine_pool=yes 467070c60c08SStefan Hajnoczifi 467170c60c08SStefan Hajnoczi 46727d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes"; then 46737d992e4dSPeter Lieven if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then 46747d992e4dSPeter Lieven error_exit "stack usage debugging is not supported for $cpu" 46757d992e4dSPeter Lieven fi 46767d992e4dSPeter Lieven if test "$coroutine_pool" = "yes"; then 46777d992e4dSPeter Lieven echo "WARN: disabling coroutine pool for stack usage debugging" 46787d992e4dSPeter Lieven coroutine_pool=no 46797d992e4dSPeter Lieven fi 46807d992e4dSPeter Lievenfi 46817d992e4dSPeter Lieven 46827d992e4dSPeter Lieven 4683d0e2fce5SAneesh Kumar K.V########################################## 4684d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 4685d2042378SAneesh Kumar K.V 46864e1797f9SStefan Weilopen_by_handle_at=no 4687d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 4688d2042378SAneesh Kumar K.V#include <fcntl.h> 4689acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 4690acc55ba8SStefan Weil# error missing definition 4691acc55ba8SStefan Weil#else 469275cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4693acc55ba8SStefan Weil#endif 4694d2042378SAneesh Kumar K.VEOF 4695d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 4696d2042378SAneesh Kumar K.V open_by_handle_at=yes 4697d2042378SAneesh Kumar K.Vfi 4698d2042378SAneesh Kumar K.V 4699e06a765eSHarsh Prateek Bora######################################## 4700e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 4701e06a765eSHarsh Prateek Bora 4702e06a765eSHarsh Prateek Boralinux_magic_h=no 4703e06a765eSHarsh Prateek Boracat > $TMPC << EOF 4704e06a765eSHarsh Prateek Bora#include <linux/magic.h> 4705e06a765eSHarsh Prateek Boraint main(void) { 470675cafad7SStefan Weil return 0; 4707e06a765eSHarsh Prateek Bora} 4708e06a765eSHarsh Prateek BoraEOF 4709e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 4710e06a765eSHarsh Prateek Bora linux_magic_h=yes 4711e06a765eSHarsh Prateek Borafi 4712e06a765eSHarsh Prateek Bora 47138ab1bf12SLuiz Capitulino######################################## 4714c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 4715c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 4716c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 4717c95e3080SKevin Wolf# only a warning. 4718c95e3080SKevin Wolf# 4719c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 4720c95e3080SKevin Wolf# the build doesn't fail anyway. 4721c95e3080SKevin Wolf 472206d71fa1SPeter Maydellpragma_disable_unused_but_set=no 472306d71fa1SPeter Maydellcat > $TMPC << EOF 4724e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 472506d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4726c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4727e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 4728c95e3080SKevin Wolf 472906d71fa1SPeter Maydellint main(void) { 473006d71fa1SPeter Maydell return 0; 473106d71fa1SPeter Maydell} 473206d71fa1SPeter MaydellEOF 473306d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 4734cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 4735c95e3080SKevin Wolfelse 4736c95e3080SKevin Wolf werror=no 473706d71fa1SPeter Maydellfi 473806d71fa1SPeter Maydell 473906d71fa1SPeter Maydell######################################## 4740541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 47413f4349dcSKevin Wolf 47423f4349dcSKevin Wolfvalgrind_h=no 47433f4349dcSKevin Wolfcat > $TMPC << EOF 47443f4349dcSKevin Wolf#include <valgrind/valgrind.h> 47453f4349dcSKevin Wolfint main(void) { 47463f4349dcSKevin Wolf return 0; 47473f4349dcSKevin Wolf} 47483f4349dcSKevin WolfEOF 47493f4349dcSKevin Wolfif compile_prog "" "" ; then 47503f4349dcSKevin Wolf valgrind_h=yes 47513f4349dcSKevin Wolffi 47523f4349dcSKevin Wolf 47533f4349dcSKevin Wolf######################################## 47548ab1bf12SLuiz Capitulino# check if environ is declared 47558ab1bf12SLuiz Capitulino 47568ab1bf12SLuiz Capitulinohas_environ=no 47578ab1bf12SLuiz Capitulinocat > $TMPC << EOF 47588ab1bf12SLuiz Capitulino#include <unistd.h> 47598ab1bf12SLuiz Capitulinoint main(void) { 4760c075a723SBlue Swirl environ = 0; 47618ab1bf12SLuiz Capitulino return 0; 47628ab1bf12SLuiz Capitulino} 47638ab1bf12SLuiz CapitulinoEOF 47648ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 47658ab1bf12SLuiz Capitulino has_environ=yes 47668ab1bf12SLuiz Capitulinofi 47678ab1bf12SLuiz Capitulino 476876a347e1SRichard Henderson######################################## 476976a347e1SRichard Henderson# check if cpuid.h is usable. 477076a347e1SRichard Henderson 477176a347e1SRichard Hendersoncat > $TMPC << EOF 477276a347e1SRichard Henderson#include <cpuid.h> 477376a347e1SRichard Hendersonint main(void) { 4774774d566cSPeter Maydell unsigned a, b, c, d; 4775774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 4776774d566cSPeter Maydell 4777774d566cSPeter Maydell if (max >= 1) { 4778774d566cSPeter Maydell __cpuid(1, a, b, c, d); 4779774d566cSPeter Maydell } 4780774d566cSPeter Maydell 4781774d566cSPeter Maydell if (max >= 7) { 4782774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 4783774d566cSPeter Maydell } 4784774d566cSPeter Maydell 478576a347e1SRichard Henderson return 0; 478676a347e1SRichard Henderson} 478776a347e1SRichard HendersonEOF 478876a347e1SRichard Hendersonif compile_prog "" "" ; then 478976a347e1SRichard Henderson cpuid_h=yes 479076a347e1SRichard Hendersonfi 479176a347e1SRichard Henderson 47925dd89908SRichard Henderson########################################## 47935dd89908SRichard Henderson# avx2 optimization requirement check 47945dd89908SRichard Henderson# 47955dd89908SRichard Henderson# There is no point enabling this if cpuid.h is not usable, 47965dd89908SRichard Henderson# since we won't be able to select the new routines. 47975dd89908SRichard Henderson 47985dd89908SRichard Hendersonif test $cpuid_h = yes; then 47995dd89908SRichard Henderson cat > $TMPC << EOF 48005dd89908SRichard Henderson#pragma GCC push_options 48015dd89908SRichard Henderson#pragma GCC target("avx2") 48025dd89908SRichard Henderson#include <cpuid.h> 48035dd89908SRichard Henderson#include <immintrin.h> 48045dd89908SRichard Hendersonstatic int bar(void *a) { 48055dd89908SRichard Henderson __m256i x = *(__m256i *)a; 48065dd89908SRichard Henderson return _mm256_testz_si256(x, x); 48075dd89908SRichard Henderson} 48085dd89908SRichard Hendersonint main(int argc, char *argv[]) { return bar(argv[0]); } 48095dd89908SRichard HendersonEOF 48105dd89908SRichard Henderson if compile_object "" ; then 48115dd89908SRichard Henderson avx2_opt="yes" 48125dd89908SRichard Henderson fi 48135dd89908SRichard Hendersonfi 48145dd89908SRichard Henderson 4815f540166bSRichard Henderson######################################## 4816f540166bSRichard Henderson# check if __[u]int128_t is usable. 4817f540166bSRichard Henderson 4818f540166bSRichard Hendersonint128=no 4819f540166bSRichard Hendersoncat > $TMPC << EOF 4820a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__) 4821a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4822a00f66abSStefan Weil# error __int128_t does not work in CLANG before 3.2 4823a00f66abSStefan Weil# endif 4824a00f66abSStefan Weil#endif 4825f540166bSRichard Henderson__int128_t a; 4826f540166bSRichard Henderson__uint128_t b; 4827f540166bSRichard Hendersonint main (void) { 4828f540166bSRichard Henderson a = a + b; 4829f540166bSRichard Henderson b = a * b; 4830464e3671SPeter Maydell a = a * a; 4831f540166bSRichard Henderson return 0; 4832f540166bSRichard Henderson} 4833f540166bSRichard HendersonEOF 4834f540166bSRichard Hendersonif compile_prog "" "" ; then 4835f540166bSRichard Henderson int128=yes 4836f540166bSRichard Hendersonfi 483776a347e1SRichard Henderson 48387ebee43eSRichard Henderson######################################### 48397ebee43eSRichard Henderson# See if 128-bit atomic operations are supported. 48407ebee43eSRichard Henderson 48417ebee43eSRichard Hendersonatomic128=no 48427ebee43eSRichard Hendersonif test "$int128" = "yes"; then 48437ebee43eSRichard Henderson cat > $TMPC << EOF 48447ebee43eSRichard Hendersonint main(void) 48457ebee43eSRichard Henderson{ 48467ebee43eSRichard Henderson unsigned __int128 x = 0, y = 0; 48477ebee43eSRichard Henderson y = __atomic_load_16(&x, 0); 48487ebee43eSRichard Henderson __atomic_store_16(&x, y, 0); 48497ebee43eSRichard Henderson __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0); 48507ebee43eSRichard Henderson return 0; 48517ebee43eSRichard Henderson} 48527ebee43eSRichard HendersonEOF 48537ebee43eSRichard Henderson if compile_prog "" "" ; then 48547ebee43eSRichard Henderson atomic128=yes 48557ebee43eSRichard Henderson fi 48567ebee43eSRichard Hendersonfi 48577ebee43eSRichard Henderson 4858df79b996SRichard Henderson######################################### 4859df79b996SRichard Henderson# See if 64-bit atomic operations are supported. 4860df79b996SRichard Henderson# Note that without __atomic builtins, we can only 4861df79b996SRichard Henderson# assume atomic loads/stores max at pointer size. 4862df79b996SRichard Henderson 4863df79b996SRichard Hendersoncat > $TMPC << EOF 4864df79b996SRichard Henderson#include <stdint.h> 4865df79b996SRichard Hendersonint main(void) 4866df79b996SRichard Henderson{ 4867df79b996SRichard Henderson uint64_t x = 0, y = 0; 4868df79b996SRichard Henderson#ifdef __ATOMIC_RELAXED 4869df79b996SRichard Henderson y = __atomic_load_8(&x, 0); 4870df79b996SRichard Henderson __atomic_store_8(&x, y, 0); 4871df79b996SRichard Henderson __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); 4872df79b996SRichard Henderson __atomic_exchange_8(&x, y, 0); 4873df79b996SRichard Henderson __atomic_fetch_add_8(&x, y, 0); 4874df79b996SRichard Henderson#else 4875df79b996SRichard Henderson typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; 4876df79b996SRichard Henderson __sync_lock_test_and_set(&x, y); 4877df79b996SRichard Henderson __sync_val_compare_and_swap(&x, y, 0); 4878df79b996SRichard Henderson __sync_fetch_and_add(&x, y); 4879df79b996SRichard Henderson#endif 4880df79b996SRichard Henderson return 0; 4881df79b996SRichard Henderson} 4882df79b996SRichard HendersonEOF 4883df79b996SRichard Hendersonif compile_prog "" "" ; then 4884df79b996SRichard Henderson atomic64=yes 4885df79b996SRichard Hendersonfi 4886df79b996SRichard Henderson 48871e6e9acaSRichard Henderson######################################## 48881e6e9acaSRichard Henderson# check if getauxval is available. 48891e6e9acaSRichard Henderson 48901e6e9acaSRichard Hendersongetauxval=no 48911e6e9acaSRichard Hendersoncat > $TMPC << EOF 48921e6e9acaSRichard Henderson#include <sys/auxv.h> 48931e6e9acaSRichard Hendersonint main(void) { 48941e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 48951e6e9acaSRichard Henderson} 48961e6e9acaSRichard HendersonEOF 48971e6e9acaSRichard Hendersonif compile_prog "" "" ; then 48981e6e9acaSRichard Henderson getauxval=yes 48991e6e9acaSRichard Hendersonfi 49001e6e9acaSRichard Henderson 4901fd0e6053SJohn Snow######################################## 4902fd0e6053SJohn Snow# check if ccache is interfering with 4903fd0e6053SJohn Snow# semantic analysis of macros 4904fd0e6053SJohn Snow 49055e4dfd3dSJohn Snowunset CCACHE_CPP2 4906fd0e6053SJohn Snowccache_cpp2=no 4907fd0e6053SJohn Snowcat > $TMPC << EOF 4908fd0e6053SJohn Snowstatic const int Z = 1; 4909fd0e6053SJohn Snow#define fn() ({ Z; }) 4910fd0e6053SJohn Snow#define TAUT(X) ((X) == Z) 4911fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y) 4912fd0e6053SJohn Snow#define ID(X) (X) 4913fd0e6053SJohn Snowint main(int argc, char *argv[]) 4914fd0e6053SJohn Snow{ 4915fd0e6053SJohn Snow int x = 0, y = 0; 4916fd0e6053SJohn Snow x = ID(x); 4917fd0e6053SJohn Snow x = fn(); 4918fd0e6053SJohn Snow fn(); 4919fd0e6053SJohn Snow if (PAREN(x, y)) return 0; 4920fd0e6053SJohn Snow if (TAUT(Z)) return 0; 4921fd0e6053SJohn Snow return 0; 4922fd0e6053SJohn Snow} 4923fd0e6053SJohn SnowEOF 4924fd0e6053SJohn Snow 4925fd0e6053SJohn Snowif ! compile_object "-Werror"; then 4926fd0e6053SJohn Snow ccache_cpp2=yes 4927fd0e6053SJohn Snowfi 4928fd0e6053SJohn Snow 4929b553a042SJohn Snow################################################# 4930b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE. 4931b553a042SJohn Snow 4932b553a042SJohn Snowif test "$fortify_source" != "no"; then 4933b553a042SJohn Snow if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 4934b553a042SJohn Snow fortify_source="no"; 4935e189091fSPeter Maydell elif test -n "$cxx" && has $cxx && 4936cfcc7c14SJohn Snow echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 4937b553a042SJohn Snow fortify_source="no"; 4938b553a042SJohn Snow else 4939b553a042SJohn Snow fortify_source="yes" 4940b553a042SJohn Snow fi 4941b553a042SJohn Snowfi 4942b553a042SJohn Snow 4943d2042378SAneesh Kumar K.V########################################## 4944277abf15SJan Vesely# check if struct fsxattr is available via linux/fs.h 4945277abf15SJan Vesely 4946277abf15SJan Veselyhave_fsxattr=no 4947277abf15SJan Veselycat > $TMPC << EOF 4948277abf15SJan Vesely#include <linux/fs.h> 4949277abf15SJan Veselystruct fsxattr foo; 4950277abf15SJan Veselyint main(void) { 4951277abf15SJan Vesely return 0; 4952277abf15SJan Vesely} 4953277abf15SJan VeselyEOF 4954277abf15SJan Veselyif compile_prog "" "" ; then 4955277abf15SJan Vesely have_fsxattr=yes 4956277abf15SJan Veselyfi 4957277abf15SJan Vesely 4958b66e10e4SPeter Maydell########################################## 4959b66e10e4SPeter Maydell# check if rtnetlink.h exists and is useful 4960575b22b1SLaurent Vivierhave_rtnetlink=no 4961575b22b1SLaurent Viviercat > $TMPC << EOF 4962575b22b1SLaurent Vivier#include <linux/rtnetlink.h> 4963575b22b1SLaurent Vivierint main(void) { 4964575b22b1SLaurent Vivier return IFLA_PROTO_DOWN; 4965575b22b1SLaurent Vivier} 4966575b22b1SLaurent VivierEOF 4967575b22b1SLaurent Vivierif compile_prog "" "" ; then 4968575b22b1SLaurent Vivier have_rtnetlink=yes 4969575b22b1SLaurent Vivierfi 4970575b22b1SLaurent Vivier 49716a02c806SStefan Hajnoczi########################################## 49726a02c806SStefan Hajnoczi# check for usable AF_VSOCK environment 49736a02c806SStefan Hajnoczihave_af_vsock=no 49746a02c806SStefan Hajnoczicat > $TMPC << EOF 49756a02c806SStefan Hajnoczi#include <errno.h> 49766a02c806SStefan Hajnoczi#include <sys/types.h> 49776a02c806SStefan Hajnoczi#include <sys/socket.h> 49786a02c806SStefan Hajnoczi#if !defined(AF_VSOCK) 49796a02c806SStefan Hajnoczi# error missing AF_VSOCK flag 49806a02c806SStefan Hajnoczi#endif 49816a02c806SStefan Hajnoczi#include <linux/vm_sockets.h> 49826a02c806SStefan Hajnocziint main(void) { 49836a02c806SStefan Hajnoczi int sock, ret; 49846a02c806SStefan Hajnoczi struct sockaddr_vm svm; 49856a02c806SStefan Hajnoczi socklen_t len = sizeof(svm); 49866a02c806SStefan Hajnoczi sock = socket(AF_VSOCK, SOCK_STREAM, 0); 49876a02c806SStefan Hajnoczi ret = getpeername(sock, (struct sockaddr *)&svm, &len); 49886a02c806SStefan Hajnoczi if ((ret == -1) && (errno == ENOTCONN)) { 49896a02c806SStefan Hajnoczi return 0; 49906a02c806SStefan Hajnoczi } 49916a02c806SStefan Hajnoczi return -1; 49926a02c806SStefan Hajnoczi} 49936a02c806SStefan HajnocziEOF 49946a02c806SStefan Hajnocziif compile_prog "" "" ; then 49956a02c806SStefan Hajnoczi have_af_vsock=yes 49966a02c806SStefan Hajnoczifi 49976a02c806SStefan Hajnoczi 4998f0d92b56SLongpeng(Mike)########################################## 4999f0d92b56SLongpeng(Mike)# check for usable AF_ALG environment 5000f0d92b56SLongpeng(Mike)hava_afalg=no 5001f0d92b56SLongpeng(Mike)cat > $TMPC << EOF 5002f0d92b56SLongpeng(Mike)#include <errno.h> 5003f0d92b56SLongpeng(Mike)#include <sys/types.h> 5004f0d92b56SLongpeng(Mike)#include <sys/socket.h> 5005f0d92b56SLongpeng(Mike)#include <linux/if_alg.h> 5006f0d92b56SLongpeng(Mike)int main(void) { 5007f0d92b56SLongpeng(Mike) int sock; 5008f0d92b56SLongpeng(Mike) sock = socket(AF_ALG, SOCK_SEQPACKET, 0); 5009f0d92b56SLongpeng(Mike) return sock; 5010f0d92b56SLongpeng(Mike)} 5011f0d92b56SLongpeng(Mike)EOF 5012f0d92b56SLongpeng(Mike)if compile_prog "" "" ; then 5013f0d92b56SLongpeng(Mike) have_afalg=yes 5014f0d92b56SLongpeng(Mike)fi 5015f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" 5016f0d92b56SLongpeng(Mike)then 5017f0d92b56SLongpeng(Mike) if test "$have_afalg" != "yes" 5018f0d92b56SLongpeng(Mike) then 5019f0d92b56SLongpeng(Mike) error_exit "AF_ALG requested but could not be detected" 5020f0d92b56SLongpeng(Mike) fi 5021f0d92b56SLongpeng(Mike)fi 5022f0d92b56SLongpeng(Mike) 5023f0d92b56SLongpeng(Mike) 50246969ec6cSJames Clarke################################################# 50256969ec6cSJames Clarke# Sparc implicitly links with --relax, which is 50266969ec6cSJames Clarke# incompatible with -r, so --no-relax should be 50276969ec6cSJames Clarke# given. It does no harm to give it on other 50286969ec6cSJames Clarke# platforms too. 50296969ec6cSJames Clarke 50306969ec6cSJames Clarke# Note: the prototype is needed since QEMU_CFLAGS 50316969ec6cSJames Clarke# contains -Wmissing-prototypes 50326969ec6cSJames Clarkecat > $TMPC << EOF 50336969ec6cSJames Clarkeextern int foo(void); 50346969ec6cSJames Clarkeint foo(void) { return 0; } 50356969ec6cSJames ClarkeEOF 50366969ec6cSJames Clarkeif ! compile_object ""; then 50376969ec6cSJames Clarke error_exit "Failed to compile object file for LD_REL_FLAGS test" 50386969ec6cSJames Clarkefi 50397ecf44a5SPaolo Bonzinifor i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do 50407ecf44a5SPaolo Bonzini if do_cc -nostdlib $i -o $TMPMO $TMPO; then 50417ecf44a5SPaolo Bonzini LD_REL_FLAGS=$i 50427ecf44a5SPaolo Bonzini break 50437ecf44a5SPaolo Bonzini fi 50447ecf44a5SPaolo Bonzinidone 50457ecf44a5SPaolo Bonziniif test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then 50467ecf44a5SPaolo Bonzini feature_not_found "modules" "Cannot find how to build relocatable objects" 50476969ec6cSJames Clarkefi 50486969ec6cSJames Clarke 5049277abf15SJan Vesely########################################## 50504d04351fSChristopher Covington# check for sysmacros.h 50514d04351fSChristopher Covington 50524d04351fSChristopher Covingtonhave_sysmacros=no 50534d04351fSChristopher Covingtoncat > $TMPC << EOF 50544d04351fSChristopher Covington#include <sys/sysmacros.h> 50554d04351fSChristopher Covingtonint main(void) { 50564d04351fSChristopher Covington return makedev(0, 0); 50574d04351fSChristopher Covington} 50584d04351fSChristopher CovingtonEOF 50594d04351fSChristopher Covingtonif compile_prog "" "" ; then 50604d04351fSChristopher Covington have_sysmacros=yes 50614d04351fSChristopher Covingtonfi 50624d04351fSChristopher Covington 50634d04351fSChristopher Covington########################################## 5064da92c3ffSAshish Mittal# Veritas HyperScale block driver VxHS 5065da92c3ffSAshish Mittal# Check if libvxhs is installed 5066da92c3ffSAshish Mittal 5067da92c3ffSAshish Mittalif test "$vxhs" != "no" ; then 5068da92c3ffSAshish Mittal cat > $TMPC <<EOF 5069da92c3ffSAshish Mittal#include <stdint.h> 5070da92c3ffSAshish Mittal#include <qnio/qnio_api.h> 5071da92c3ffSAshish Mittal 5072da92c3ffSAshish Mittalvoid *vxhs_callback; 5073da92c3ffSAshish Mittal 5074da92c3ffSAshish Mittalint main(void) { 5075da92c3ffSAshish Mittal iio_init(QNIO_VERSION, vxhs_callback); 5076da92c3ffSAshish Mittal return 0; 5077da92c3ffSAshish Mittal} 5078da92c3ffSAshish MittalEOF 5079da92c3ffSAshish Mittal vxhs_libs="-lvxhs -lssl" 5080da92c3ffSAshish Mittal if compile_prog "" "$vxhs_libs" ; then 5081da92c3ffSAshish Mittal vxhs=yes 5082da92c3ffSAshish Mittal else 5083da92c3ffSAshish Mittal if test "$vxhs" = "yes" ; then 5084da92c3ffSAshish Mittal feature_not_found "vxhs block device" "Install libvxhs See github" 5085da92c3ffSAshish Mittal fi 5086da92c3ffSAshish Mittal vxhs=no 5087da92c3ffSAshish Mittal fi 5088da92c3ffSAshish Mittalfi 5089da92c3ffSAshish Mittal 5090da92c3ffSAshish Mittal########################################## 509149e00a18SAndreas Grapentin# check for _Static_assert() 509249e00a18SAndreas Grapentin 509349e00a18SAndreas Grapentinhave_static_assert=no 509449e00a18SAndreas Grapentincat > $TMPC << EOF 509549e00a18SAndreas Grapentin_Static_assert(1, "success"); 509649e00a18SAndreas Grapentinint main(void) { 509749e00a18SAndreas Grapentin return 0; 509849e00a18SAndreas Grapentin} 509949e00a18SAndreas GrapentinEOF 510049e00a18SAndreas Grapentinif compile_prog "" "" ; then 510149e00a18SAndreas Grapentin have_static_assert=yes 510249e00a18SAndreas Grapentinfi 510349e00a18SAndreas Grapentin 510449e00a18SAndreas Grapentin########################################## 5105e674605fSTomáš Golembiovský# check for utmpx.h, it is missing e.g. on OpenBSD 5106e674605fSTomáš Golembiovský 5107e674605fSTomáš Golembiovskýhave_utmpx=no 5108e674605fSTomáš Golembiovskýcat > $TMPC << EOF 5109e674605fSTomáš Golembiovský#include <utmpx.h> 5110e674605fSTomáš Golembiovskýstruct utmpx user_info; 5111e674605fSTomáš Golembiovskýint main(void) { 5112e674605fSTomáš Golembiovský return 0; 5113e674605fSTomáš Golembiovský} 5114e674605fSTomáš GolembiovskýEOF 5115e674605fSTomáš Golembiovskýif compile_prog "" "" ; then 5116e674605fSTomáš Golembiovský have_utmpx=yes 5117e674605fSTomáš Golembiovskýfi 5118e674605fSTomáš Golembiovský 5119e674605fSTomáš Golembiovský########################################## 5120e86ecd4bSJuan Quintela# End of CC checks 5121e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 5122e86ecd4bSJuan Quintela 51231d728c39SBlue Swirlif test "$gcov" = "yes" ; then 51241d728c39SBlue Swirl CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 51251d728c39SBlue Swirl LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 5126b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then 5127e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 5128ce278618SPeter Maydellelif test "$debug" = "no"; then 5129ce278618SPeter Maydell CFLAGS="-O2 $CFLAGS" 5130e86ecd4bSJuan Quintelafi 5131a316e378SJuan Quintela 51326542aa9cSPeter Lieven########################################## 51336542aa9cSPeter Lieven# Do we have libnfs 51346542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 5135b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 51366542aa9cSPeter Lieven libnfs="yes" 51376542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 51386542aa9cSPeter Lieven else 51396542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 51408efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 51416542aa9cSPeter Lieven fi 51426542aa9cSPeter Lieven libnfs="no" 51436542aa9cSPeter Lieven fi 51446542aa9cSPeter Lievenfi 51451d728c39SBlue Swirl 51466ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 51476ca026cbSPeter Maydellif test "$werror" = "yes"; then 51486ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 51496ca026cbSPeter Maydellfi 51506ca026cbSPeter Maydell 5151e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then 5152e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 51531156c669SJuan Quintela LDFLAGS="-Wl,--warn-common $LDFLAGS" 5154e86ecd4bSJuan Quintela fi 5155e86ecd4bSJuan Quintelafi 5156e86ecd4bSJuan Quintela 515794dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 515894dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 515994dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 516094dd53c5SGerd Hoffmannelse 516194dd53c5SGerd Hoffmann POD2MAN="pod2man" 516294dd53c5SGerd Hoffmannfi 516394dd53c5SGerd Hoffmann 5164952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 5165952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 5166952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 5167e9a3591fSChristian Borntraeger if ld_has $flag ; then 5168952afb71SBlue Swirl LDFLAGS="-Wl,$flag $LDFLAGS" 5169952afb71SBlue Swirl fi 5170952afb71SBlue Swirl done 5171952afb71SBlue Swirlfi 5172952afb71SBlue Swirl 517310ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 5174e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 5175528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 5176834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 51775a67135aSbellard 5178e0580342SKamil Rytarowski# We can only support ivshmem if we have eventfd 5179e0580342SKamil Rytarowskiif [ "$eventfd" = "yes" ]; then 5180e0580342SKamil Rytarowski ivshmem=yes 5181e0580342SKamil Rytarowskifi 5182e0580342SKamil Rytarowski 51834b1c11fdSDaniel P. Berrangetools="" 51844b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 5185ca35f780SPaolo Bonzini tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 51864b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 51874b1c11fdSDaniel P. Berrange tools="qemu-nbd\$(EXESUF) $tools" 5188b1449edbSKamil Rytarowski fi 5189b1449edbSKamil Rytarowski if [ "$ivshmem" = "yes" ]; then 5190a75eb03bSDavid Marchand tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" 51914b1c11fdSDaniel P. Berrange fi 51924b1c11fdSDaniel P. Berrangefi 51934b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 5194b855f8d1SPaolo Bonzini if test "$linux" = yes; then 5195b855f8d1SPaolo Bonzini if test "$virtfs" != no && test "$cap" = yes && test "$attr" = yes ; then 5196983eef5aSMeador Inge virtfs=yes 519717bff52bSM. Mohan Kumar tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 5198983eef5aSMeador Inge else 5199983eef5aSMeador Inge if test "$virtfs" = yes; then 5200b855f8d1SPaolo Bonzini error_exit "VirtFS requires libcap devel and libattr devel" 5201983eef5aSMeador Inge fi 520217500370SAndreas Färber virtfs=no 5203983eef5aSMeador Inge fi 5204fe8fc5aeSPaolo Bonzini if test "$mpath" != no && test "$mpathpersist" = yes ; then 5205fe8fc5aeSPaolo Bonzini mpath=yes 5206fe8fc5aeSPaolo Bonzini else 5207fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 5208fe8fc5aeSPaolo Bonzini error_exit "Multipath requires libmpathpersist devel" 5209fe8fc5aeSPaolo Bonzini fi 5210fe8fc5aeSPaolo Bonzini mpath=no 5211fe8fc5aeSPaolo Bonzini fi 5212b855f8d1SPaolo Bonzini tools="$tools scsi/qemu-pr-helper\$(EXESUF)" 5213b855f8d1SPaolo Bonzini else 5214b855f8d1SPaolo Bonzini if test "$virtfs" = yes; then 5215b855f8d1SPaolo Bonzini error_exit "VirtFS is supported only on Linux" 5216b855f8d1SPaolo Bonzini fi 5217b855f8d1SPaolo Bonzini virtfs=no 5218fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 5219fe8fc5aeSPaolo Bonzini error_exit "Multipath is supported only on Linux" 5220fe8fc5aeSPaolo Bonzini fi 5221fe8fc5aeSPaolo Bonzini mpath=no 522217bff52bSM. Mohan Kumar fi 52236a021536SGerd Hoffmann if test "$xkbcommon" = "yes"; then 52246a021536SGerd Hoffmann tools="qemu-keymap\$(EXESUF) $tools" 52256a021536SGerd Hoffmann fi 5226ff69fd8cSLaurent Vivierfi 52279d6bc27bSMichael Roth 52289d6bc27bSMichael Roth# Probe for guest agent support/options 52299d6bc27bSMichael Roth 5230e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 5231b39297aeSTomoki Sekiyama if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 5232fafcaf1dSMichael Roth tools="qemu-ga $tools" 5233e8ef31a3SMichael Tokarev guest_agent=yes 5234e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 5235e8ef31a3SMichael Tokarev guest_agent=no 5236e8ef31a3SMichael Tokarev else 5237e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 5238ca35f780SPaolo Bonzini fi 52394b1c11fdSDaniel P. Berrangefi 5240ca35f780SPaolo Bonzini 52419d6bc27bSMichael Roth# Guest agent Window MSI package 52429d6bc27bSMichael Roth 52439d6bc27bSMichael Rothif test "$guest_agent" != yes; then 52449d6bc27bSMichael Roth if test "$guest_agent_msi" = yes; then 52459d6bc27bSMichael Roth error_exit "MSI guest agent package requires guest agent enabled" 52469d6bc27bSMichael Roth fi 52479d6bc27bSMichael Roth guest_agent_msi=no 52489d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then 52499d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 52509d6bc27bSMichael Roth error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 52519d6bc27bSMichael Roth fi 52529d6bc27bSMichael Roth guest_agent_msi=no 52539d6bc27bSMichael Rothelif ! has wixl; then 52549d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 52559d6bc27bSMichael Roth error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 52569d6bc27bSMichael Roth fi 52579d6bc27bSMichael Roth guest_agent_msi=no 52581a34904eSMichael Rothelse 52591a34904eSMichael Roth # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 52601a34904eSMichael Roth # disabled explicitly 52611a34904eSMichael Roth if test "$guest_agent_msi" != "no"; then 52621a34904eSMichael Roth guest_agent_msi=yes 52631a34904eSMichael Roth fi 52649d6bc27bSMichael Rothfi 52659d6bc27bSMichael Roth 52661a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then 52679d6bc27bSMichael Roth if test "$guest_agent_with_vss" = "yes"; then 52689d6bc27bSMichael Roth QEMU_GA_MSI_WITH_VSS="-D InstallVss" 52699d6bc27bSMichael Roth fi 52709d6bc27bSMichael Roth 52719d6bc27bSMichael Roth if test "$QEMU_GA_MANUFACTURER" = ""; then 52729d6bc27bSMichael Roth QEMU_GA_MANUFACTURER=QEMU 52739d6bc27bSMichael Roth fi 52749d6bc27bSMichael Roth 52759d6bc27bSMichael Roth if test "$QEMU_GA_DISTRO" = ""; then 52769d6bc27bSMichael Roth QEMU_GA_DISTRO=Linux 52779d6bc27bSMichael Roth fi 52789d6bc27bSMichael Roth 52799d6bc27bSMichael Roth if test "$QEMU_GA_VERSION" = ""; then 528089138857SStefan Weil QEMU_GA_VERSION=$(cat $source_path/VERSION) 52819d6bc27bSMichael Roth fi 52829d6bc27bSMichael Roth 528389138857SStefan Weil QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin" 52849d6bc27bSMichael Roth 52859d6bc27bSMichael Roth case "$cpu" in 52869d6bc27bSMichael Roth x86_64) 52879d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 52889d6bc27bSMichael Roth ;; 52899d6bc27bSMichael Roth i386) 52909d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-D Arch=32" 52919d6bc27bSMichael Roth ;; 52929d6bc27bSMichael Roth *) 52939d6bc27bSMichael Roth error_exit "CPU $cpu not supported for building installation package" 52949d6bc27bSMichael Roth ;; 52959d6bc27bSMichael Roth esac 52969d6bc27bSMichael Rothfi 52979d6bc27bSMichael Roth 5298ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 5299ca35f780SPaolo Bonziniroms= 5300ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 5301ca35f780SPaolo Bonzini "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 5302ca35f780SPaolo Bonzini "$softmmu" = yes ; then 5303e57218b6SPeter Maydell # Different host OS linkers have different ideas about the name of the ELF 5304e57218b6SPeter Maydell # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd 5305e57218b6SPeter Maydell # variant; and Windows uses i386pe. 5306e57218b6SPeter Maydell for emu in elf_i386 elf_i386_fbsd i386pe; do 5307e57218b6SPeter Maydell if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then 5308e57218b6SPeter Maydell ld_i386_emulation="$emu" 5309ca35f780SPaolo Bonzini roms="optionrom" 5310e57218b6SPeter Maydell break 5311e57218b6SPeter Maydell fi 5312e57218b6SPeter Maydell done 5313ca35f780SPaolo Bonzinifi 5314d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 531539ac8455SDavid Gibson roms="$roms spapr-rtas" 531639ac8455SDavid Gibsonfi 5317ca35f780SPaolo Bonzini 53189933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 53199933c305SChristian Borntraeger roms="$roms s390-ccw" 53209933c305SChristian Borntraegerfi 53219933c305SChristian Borntraeger 5322964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary. 532392fe2ba8SPeter Maydellif ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then 5324964c6fa1SRichard Henderson textseg_addr= 5325964c6fa1SRichard Henderson case "$cpu" in 5326479eb121SRichard Henderson arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 5327479eb121SRichard Henderson # ??? Rationale for choosing this address 5328964c6fa1SRichard Henderson textseg_addr=0x60000000 5329964c6fa1SRichard Henderson ;; 5330964c6fa1SRichard Henderson mips) 5331479eb121SRichard Henderson # A 256M aligned address, high in the address space, with enough 5332479eb121SRichard Henderson # room for the code_gen_buffer above it before the stack. 5333479eb121SRichard Henderson textseg_addr=0x60000000 5334964c6fa1SRichard Henderson ;; 5335964c6fa1SRichard Henderson esac 5336964c6fa1SRichard Henderson if [ -n "$textseg_addr" ]; then 5337964c6fa1SRichard Henderson cat > $TMPC <<EOF 5338964c6fa1SRichard Henderson int main(void) { return 0; } 5339964c6fa1SRichard HendersonEOF 5340964c6fa1SRichard Henderson textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 5341964c6fa1SRichard Henderson if ! compile_prog "" "$textseg_ldflags"; then 5342964c6fa1SRichard Henderson # In case ld does not support -Ttext-segment, edit the default linker 5343964c6fa1SRichard Henderson # script via sed to set the .text start addr. This is needed on FreeBSD 5344964c6fa1SRichard Henderson # at least. 534592fe2ba8SPeter Maydell if ! $ld --verbose >/dev/null 2>&1; then 534692fe2ba8SPeter Maydell error_exit \ 534792fe2ba8SPeter Maydell "We need to link the QEMU user mode binaries at a" \ 534892fe2ba8SPeter Maydell "specific text address. Unfortunately your linker" \ 534992fe2ba8SPeter Maydell "doesn't support either the -Ttext-segment option or" \ 535092fe2ba8SPeter Maydell "printing the default linker script with --verbose." \ 535192fe2ba8SPeter Maydell "If you don't want the user mode binaries, pass the" \ 535292fe2ba8SPeter Maydell "--disable-user option to configure." 535392fe2ba8SPeter Maydell fi 535492fe2ba8SPeter Maydell 5355964c6fa1SRichard Henderson $ld --verbose | sed \ 5356964c6fa1SRichard Henderson -e '1,/==================================================/d' \ 5357964c6fa1SRichard Henderson -e '/==================================================/,$d' \ 5358964c6fa1SRichard Henderson -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 5359964c6fa1SRichard Henderson -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 5360964c6fa1SRichard Henderson textseg_ldflags="-Wl,-T../config-host.ld" 5361964c6fa1SRichard Henderson fi 5362964c6fa1SRichard Henderson fi 5363964c6fa1SRichard Hendersonfi 5364964c6fa1SRichard Henderson 536511cde1c8SBruno Dominguez# Check that the C++ compiler exists and works with the C compiler. 536611cde1c8SBruno 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. 536711cde1c8SBruno Dominguezif has $cxx; then 536811cde1c8SBruno Dominguez cat > $TMPC <<EOF 536911cde1c8SBruno Dominguezint c_function(void); 537011cde1c8SBruno Dominguezint main(void) { return c_function(); } 537111cde1c8SBruno DominguezEOF 537211cde1c8SBruno Dominguez 537311cde1c8SBruno Dominguez compile_object 537411cde1c8SBruno Dominguez 537511cde1c8SBruno Dominguez cat > $TMPCXX <<EOF 537611cde1c8SBruno Dominguezextern "C" { 537711cde1c8SBruno Dominguez int c_function(void); 537811cde1c8SBruno Dominguez} 537911cde1c8SBruno Dominguezint c_function(void) { return 42; } 538011cde1c8SBruno DominguezEOF 538111cde1c8SBruno Dominguez 538211cde1c8SBruno Dominguez update_cxxflags 538311cde1c8SBruno Dominguez 538411cde1c8SBruno Dominguez if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then 538511cde1c8SBruno Dominguez # C++ compiler $cxx works ok with C compiler $cc 538611cde1c8SBruno Dominguez : 538711cde1c8SBruno Dominguez else 538811cde1c8SBruno Dominguez echo "C++ compiler $cxx does not work with C compiler $cc" 538911cde1c8SBruno Dominguez echo "Disabling C++ specific optional code" 539011cde1c8SBruno Dominguez cxx= 539111cde1c8SBruno Dominguez fi 539211cde1c8SBruno Dominguezelse 539311cde1c8SBruno Dominguez echo "No C++ compiler available; disabling C++ specific optional code" 539411cde1c8SBruno Dominguez cxx= 539511cde1c8SBruno Dominguezfi 539611cde1c8SBruno Dominguez 539702d34f62SCole Robinsonecho_version() { 539802d34f62SCole Robinson if test "$1" = "yes" ; then 539902d34f62SCole Robinson echo "($2)" 540002d34f62SCole Robinson fi 540102d34f62SCole Robinson} 540202d34f62SCole Robinson 540350e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 540450e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 540550e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 54065ca9388aSGerd Hoffmann 54077d13299dSbellardecho "Install prefix $prefix" 540889138857SStefan Weilecho "BIOS directory $(eval echo $qemu_datadir)" 54093d5eecabSGerd Hoffmannecho "firmware path $(eval echo $firmwarepath)" 541089138857SStefan Weilecho "binary directory $(eval echo $bindir)" 541189138857SStefan Weilecho "library directory $(eval echo $libdir)" 541289138857SStefan Weilecho "module directory $(eval echo $qemu_moddir)" 541389138857SStefan Weilecho "libexec directory $(eval echo $libexecdir)" 541489138857SStefan Weilecho "include directory $(eval echo $includedir)" 541589138857SStefan Weilecho "config directory $(eval echo $sysconfdir)" 541611d9f695Sbellardif test "$mingw32" = "no" ; then 541789138857SStefan Weilecho "local state directory $(eval echo $local_statedir)" 541889138857SStefan Weilecho "Manual directory $(eval echo $mandir)" 541943ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 54205a699bbbSLaszlo Ersekelse 54215a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 5422d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 542311d9f695Sbellardfi 54245a67135aSbellardecho "Source path $source_path" 5425cc84d63aSDaniel P. Berrangeecho "GIT binary $git" 5426aef45d51SDaniel P. Berrangeecho "GIT submodules $git_submodules" 54277d13299dSbellardecho "C compiler $cc" 542883469015Sbellardecho "Host C compiler $host_cc" 542983f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 54303c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 543145d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 54320c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 5433a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 54340c439cbfSJuan Quintelaecho "LDFLAGS $LDFLAGS" 54357d13299dSbellardecho "make $make" 54366a882643Spbrookecho "install $install" 5437c886edfbSBlue Swirlecho "python $python" 5438e2d8830eSBradif test "$slirp" = "yes" ; then 5439e2d8830eSBrad echo "smbd $smbd" 5440e2d8830eSBradfi 544117969268SFam Zhengecho "module support $modules" 5442a98fd896Sbellardecho "host CPU $cpu" 5443de83cd02Sbellardecho "host big endian $bigendian" 544497a847bcSbellardecho "target list $target_list" 54457d13299dSbellardecho "gprof enabled $gprof" 544603b4fe7dSaliguoriecho "sparse enabled $sparse" 54471625af87Saliguoriecho "strip binaries $strip_opt" 544805c2a3e7Sbellardecho "profiler $profiler" 544943ce4dfeSbellardecho "static build $static" 54505b0753e0Sbellardif test "$darwin" = "yes" ; then 54515b0753e0Sbellard echo "Cocoa support $cocoa" 54525b0753e0Sbellardfi 545389138857SStefan Weilecho "SDL support $sdl $(echo_version $sdl $sdlversion)" 545489138857SStefan Weilecho "GTK support $gtk $(echo_version $gtk $gtk_version)" 5455925a0400SGerd Hoffmannecho "GTK GL support $gtk_gl" 545689138857SStefan Weilecho "VTE support $vte $(echo_version $vte $vteversion)" 5457a1c5e949SDaniel P. Berrangeecho "TLS priority $tls_priority" 5458ddbb0d09SDaniel P. Berrangeecho "GNUTLS support $gnutls" 5459b917da4cSDaniel P. Berrangeecho "GNUTLS rnd $gnutls_rnd" 546091bfcdb0SDaniel P. Berrangeecho "libgcrypt $gcrypt" 546137788f25SDaniel P. Berrangeecho "libgcrypt kdf $gcrypt_kdf" 546289138857SStefan Weilecho "nettle $nettle $(echo_version $nettle $nettle_version)" 5463fff2f982SDaniel P. Berrangeecho "nettle kdf $nettle_kdf" 54649a2fd434SDaniel P. Berrangeecho "libtasn1 $tasn1" 54654d3b6f6eSbalrogecho "curses support $curses" 54669d9e1521SGerd Hoffmannecho "virgl support $virglrenderer" 5467769ce76dSAlexander Grafecho "curl support $curl" 546867b915a5Sbellardecho "mingw32 support $mingw32" 54690c58ac1cSmalcecho "Audio drivers $audio_drv_list" 5470b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 5471b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 5472983eef5aSMeador Ingeecho "VirtFS support $virtfs" 5473fe8fc5aeSPaolo Bonziniecho "Multipath support $mpath" 5474821601eaSJes Sorensenecho "VNC support $vnc" 5475821601eaSJes Sorensenif test "$vnc" = "yes" ; then 54762f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 54772f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 5478efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 5479821601eaSJes Sorensenfi 54803142255cSblueswir1if test -n "$sparc_cpu"; then 54813142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 54823142255cSblueswir1fi 5483e37630caSaliguoriecho "xen support $xen" 54843996e85cSPaul Durrantif test "$xen" = "yes" ; then 54853996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 548664a7ad6fSIan Campbell echo "pv dom build $xen_pv_domain_build" 54873996e85cSPaul Durrantfi 54882e4d9fb1Saurel32echo "brlapi support $brlapi" 5489a20a6f46SJuan Quintelaecho "bluez support $bluez" 5490a25dba17SJuan Quintelaecho "Documentation $docs" 549140d6444eSAvi Kivityecho "PIE $pie" 54928a16d273Sthsecho "vde support $vde" 549358952137SVincenzo Maffioneecho "netmap support $netmap" 54945c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 5495758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 549677755340Sthsecho "Install blobs $blobs" 5497b31a0277SJuan Quintelaecho "KVM support $kvm" 5498b0cb0a66SVincent Palatinecho "HAX support $hax" 5499b3f6ea7eSPaolo Bonziniecho "TCG support $tcg" 5500b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes" ; then 5501b3f6ea7eSPaolo Bonzini echo "TCG debug enabled $debug_tcg" 55029195b2c2SStefan Weil echo "TCG interpreter $tcg_interpreter" 5503b3f6ea7eSPaolo Bonzinifi 5504b3f6ea7eSPaolo Bonziniecho "RDMA support $rdma" 5505f652e6afSaurel32echo "fdt support $fdt" 5506ceb42de8Saliguoriecho "preadv support $preadv" 55075f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 5508e78815a5SAndreas Färberecho "madvise $madvise" 5509e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 551047e98658SCorey Bryantecho "libcap-ng support $cap_ng" 5511d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 55125e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 5513fc0b9b0eSStefan Hajnocziecho "vhost-vsock support $vhost_vsock" 5514e6a74868SMarc-André Lureauecho "vhost-user support $vhost_user" 55155b808275SLluís Vilanovaecho "Trace backends $trace_backends" 5516713572a7SMarc-André Lureauif have_backend "simple"; then 55179410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 5518e00e36fbSStefan Weilfi 551989138857SStefan Weilecho "spice support $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)" 5520f27aaf4bSChristian Brunnerecho "rbd support $rbd" 5521dce512deSChristoph Hellwigecho "xfsctl support $xfs" 55227b02f544SMarc-André Lureauecho "smartcard support $smartcard" 55232b2325ffSGerd Hoffmannecho "libusb $libusb" 552469354a83SHans de Goedeecho "usb net redir $usb_redir" 5525da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 5526014cb152SGerd Hoffmannecho "OpenGL dmabufs $opengl_dmabuf" 5527c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 55286542aa9cSPeter Lievenecho "libnfs support $libnfs" 5529d138cee9SMichael Rothecho "build guest agent $guest_agent" 5530d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 553150cbebb9SMichael Rothecho "QGA w32 disk info $guest_agent_ntddscsi" 55324c875d89SMichael Rothecho "QGA MSI support $guest_agent_msi" 5533f794573eSEduardo Otuboecho "seccomp support $seccomp" 55347c2acc70SPeter Maydellecho "coroutine backend $coroutine" 553570c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 55367d992e4dSPeter Lievenecho "debug stack usage $debug_stack_usage" 5537f0d92b56SLongpeng(Mike)echo "crypto afalg $crypto_afalg" 5538eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 55391d728c39SBlue Swirlecho "gcov $gcov_tool" 55401d728c39SBlue Swirlecho "gcov enabled $gcov" 5541ab214c29SStefan Bergerecho "TPM support $tpm" 55420a12ec87SRichard W.M. Jonesecho "libssh2 support $libssh2" 55433b8acc11SPaolo Bonziniecho "TPM passthrough $tpm_passthrough" 5544f4ede81eSAmarnath Valluriecho "TPM emulator $tpm_emulator" 55453556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 5546ed1701c6SDr. David Alan Gilbertecho "Live block migration $live_block_migration" 5547607dacd0Sqiaonuohanecho "lzo support $lzo" 5548607dacd0Sqiaonuohanecho "snappy support $snappy" 55496b383c08SPeter Wuecho "bzip2 support $bzip2" 5550a99d57bbSWanlong Gaoecho "NUMA host support $numa" 55512847b469SFam Zhengecho "tcmalloc support $tcmalloc" 55527b01cb97SAlexandre Derumierecho "jemalloc support $jemalloc" 555399f2dbd3SLiang Liecho "avx2 optimization $avx2_opt" 5554a6b1d4c0SChanglong Xieecho "replication support $replication" 5555da92c3ffSAshish Mittalecho "VxHS block device $vxhs" 55568ca80760SRichard Hendersonecho "capstone $capstone" 555767b915a5Sbellard 55581ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then 555924b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 5560e8cd23deSbellardfi 556197a847bcSbellard 5562898be3e0SPeter Maydellif test "$supported_cpu" = "no"; then 5563898be3e0SPeter Maydell echo 5564898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!" 5565898be3e0SPeter Maydell echo 5566898be3e0SPeter Maydell echo "CPU host architecture $cpu support is not currently maintained." 5567898be3e0SPeter Maydell echo "The QEMU project intends to remove support for this host CPU in" 5568898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 5569898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 5570898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 5571898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 5572898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 5573898be3e0SPeter Maydellfi 5574898be3e0SPeter Maydell 5575898be3e0SPeter Maydellif test "$supported_os" = "no"; then 5576898be3e0SPeter Maydell echo 5577898be3e0SPeter Maydell echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!" 5578898be3e0SPeter Maydell echo 5579c50126aaSPeter Maydell echo "Host OS $targetos support is not currently maintained." 5580c50126aaSPeter Maydell echo "The QEMU project intends to remove support for this host OS in" 5581898be3e0SPeter Maydell echo "a future release if nobody volunteers to maintain it and to" 5582898be3e0SPeter Maydell echo "provide a build host for our continuous integration setup." 5583898be3e0SPeter Maydell echo "configure has succeeded and you can continue to build, but" 5584898be3e0SPeter Maydell echo "if you care about QEMU on this platform you should contact" 5585898be3e0SPeter Maydell echo "us upstream at qemu-devel@nongnu.org." 5586898be3e0SPeter Maydellfi 5587898be3e0SPeter Maydell 558898ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 558997a847bcSbellard 5590dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 5591dbd99ae3SStefan Weil 559298ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 559398ec69acSJuan Quintelaecho >> $config_host_mak 559498ec69acSJuan Quintela 5595e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 559699d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 559799d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 55983aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 55998bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 56000f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 560199d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 560299d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 560322d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 56049afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 56053d5eecabSGerd Hoffmannecho "qemu_firmwarepath=$firmwarepath" >> $config_host_mak 56069afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 5607e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 56085a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 5609785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 56105a699bbbSLaszlo Ersekfi 5611f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 5612f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 561311cde1c8SBruno Dominguezecho "extra_cxxflags=$EXTRA_CXXFLAGS" >> $config_host_mak 5614f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 5615834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 5616f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 5617cc84d63aSDaniel P. Berrangeecho "GIT=$git" >> $config_host_mak 5618aef45d51SDaniel P. Berrangeecho "GIT_SUBMODULES=$git_submodules" >> $config_host_mak 5619*f62bbee5SDaniel P. Berrangeecho "GIT_UPDATE=$git_update" >> $config_host_mak 5620804edf29SJuan Quintela 562198ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 5622727e5283SPaolo Bonzini 5623f8393946Saurel32if test "$debug_tcg" = "yes" ; then 56242358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 5625f8393946Saurel32fi 56261625af87Saliguoriif test "$strip_opt" = "yes" ; then 562752ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 56281625af87Saliguorifi 56297d13299dSbellardif test "$bigendian" = "yes" ; then 5630e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 563197a847bcSbellardfi 563267b915a5Sbellardif test "$mingw32" = "yes" ; then 563398ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 563489138857SStefan Weil rc_version=$(cat $source_path/VERSION) 56359fe6de94SBlue Swirl version_major=${rc_version%%.*} 56369fe6de94SBlue Swirl rc_version=${rc_version#*.} 56379fe6de94SBlue Swirl version_minor=${rc_version%%.*} 56389fe6de94SBlue Swirl rc_version=${rc_version#*.} 56399fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 56409fe6de94SBlue Swirl version_micro=0 56419fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 56429fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 5643d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 5644d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 5645f33ca81fSMichael Roth echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 5646d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 5647d9840e25STomoki Sekiyama fi 564850cbebb9SMichael Roth if test "$guest_agent_ntddscsi" = "yes" ; then 564950cbebb9SMichael Roth echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak 565050cbebb9SMichael Roth fi 56511a34904eSMichael Roth if test "$guest_agent_msi" = "yes"; then 56529dacf32dSYossi Hindin echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 56539dacf32dSYossi Hindin echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 56549dacf32dSYossi Hindin echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 56559dacf32dSYossi Hindin echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 56569dacf32dSYossi Hindin echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 56579dacf32dSYossi Hindin echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 56589dacf32dSYossi Hindin echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 56599dacf32dSYossi Hindin fi 5660210fa556Spbrookelse 566135f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 5662210fa556Spbrookfi 5663128ab2ffSblueswir1 5664dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 5665dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 5666dffcb71cSMark McLoughlinfi 5667dffcb71cSMark McLoughlin 566883fb7adfSbellardif test "$darwin" = "yes" ; then 566998ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 567083fb7adfSbellardfi 5671b29fe3edSmalc 5672ec530c81Sbellardif test "$solaris" = "yes" ; then 567398ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 5674ec530c81Sbellardfi 5675179cf400SAndreas Färberif test "$haiku" = "yes" ; then 5676179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 5677179cf400SAndreas Färberfi 567897a847bcSbellardif test "$static" = "yes" ; then 567998ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 568097a847bcSbellardfi 56811ba16968SStefan Weilif test "$profiler" = "yes" ; then 56822358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 568305c2a3e7Sbellardfi 5684c20709aaSbellardif test "$slirp" = "yes" ; then 568598ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 5686e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 5687c20709aaSbellardfi 56888a16d273Sthsif test "$vde" = "yes" ; then 568998ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 5690e2ad6f16SFam Zheng echo "VDE_LIBS=$vde_libs" >> $config_host_mak 56918a16d273Sthsfi 569258952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 569358952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 569458952137SVincenzo Maffionefi 5695015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 5696015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 5697015a33bdSGongleifi 569847e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 569947e98658SCorey Bryant echo "CONFIG_LIBCAP=y" >> $config_host_mak 570047e98658SCorey Bryantfi 57012358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 57020c58ac1cSmalcfor drv in $audio_drv_list; do 570389138857SStefan Weil def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]') 570498ec69acSJuan Quintela echo "$def=y" >> $config_host_mak 57050c58ac1cSmalcdone 5706b1149911SFam Zhengecho "ALSA_LIBS=$alsa_libs" >> $config_host_mak 5707b1149911SFam Zhengecho "PULSE_LIBS=$pulse_libs" >> $config_host_mak 5708b1149911SFam Zhengecho "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak 5709b1149911SFam Zhengecho "DSOUND_LIBS=$dsound_libs" >> $config_host_mak 5710b1149911SFam Zhengecho "OSS_LIBS=$oss_libs" >> $config_host_mak 571167f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then 571267f86e8eSJuan Quintela echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 571367f86e8eSJuan Quintelafi 5714d5631638Smalcif test "$audio_win_int" = "yes" ; then 5715d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 5716d5631638Smalcfi 5717b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 5718b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 5719821601eaSJes Sorensenif test "$vnc" = "yes" ; then 5720821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 5721821601eaSJes Sorensenfi 57222f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 572398ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 57242f9606b3Saliguorifi 5725821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 57262f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 57272f6f5c7aSCorentin Charyfi 5728821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 5729efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 5730efe556adSCorentin Charyfi 57316a021536SGerd Hoffmannif test "$xkbcommon" = "yes" ; then 57326a021536SGerd Hoffmann echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak 57336a021536SGerd Hoffmann echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak 57346a021536SGerd Hoffmannfi 573576655d6dSaliguoriif test "$fnmatch" = "yes" ; then 57362358a494SJuan Quintela echo "CONFIG_FNMATCH=y" >> $config_host_mak 573776655d6dSaliguorifi 5738dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 5739dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 5740dce512deSChristoph Hellwigfi 574189138857SStefan Weilqemu_version=$(head $source_path/VERSION) 574298ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 57432358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 574498ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 574598ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak 5746a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 574798ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 5748cc8ae6deSpbrookfi 574917969268SFam Zhengif test "$modules" = "yes"; then 5750e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 5751e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 575289138857SStefan Weil echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak 575317969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 575417969268SFam Zhengfi 57551ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 575698ec69acSJuan Quintela echo "CONFIG_SDL=y" >> $config_host_mak 5757a3f4d63dSCole Robinson echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 57588ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 57598ecc89f6SFam Zheng echo "SDL_LIBS=$sdl_libs" >> $config_host_mak 576049ecc3faSbellardfi 576149ecc3faSbellardif test "$cocoa" = "yes" ; then 576298ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 576349ecc3faSbellardfi 57644d3b6f6eSbalrogif test "$curses" = "yes" ; then 576598ec69acSJuan Quintela echo "CONFIG_CURSES=y" >> $config_host_mak 5766ab4e5602SJan Kiszkafi 5767099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 57682358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 5769099d6b0fSRiku Voipiofi 577040ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 577140ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 577240ff6d7eSKevin Wolffi 57733ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 57742358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 57753ce34dfbSvibisreenivasanfi 5776c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 5777c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 5778c2882b96SRiku Voipiofi 5779751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then 5780751bcc39SMarc-André Lureau echo "CONFIG_MEMFD=y" >> $config_host_mak 5781751bcc39SMarc-André Lureaufi 5782d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 5783d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 5784d0927938SUlrich Hechtfi 57853d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 57863d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 57873d4fa43eSKusanagi Kouichifi 5788b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 5789b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 5790b953f075SDenis V. Lunevfi 5791ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 5792ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 5793ed911435SKevin Wolffi 5794c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 5795c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 5796c727f47dSPeter Maydellfi 5797dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 5798dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 5799dace20dcSPeter Maydellfi 5800d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 5801d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 5802d0927938SUlrich Hechtfi 58034e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 58044e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 58054e0c6529SAlex Blighfi 5806cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 5807cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 5808cd758dd0SAlex Blighfi 58093b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 58103b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 58113b6edd16SPeter Maydellfi 58123b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 58133b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 58143b6edd16SPeter Maydellfi 5815a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 5816a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 5817a8fd1abaSPeter Maydellfi 581851834341SRiku Voipioif test "$timerfd" = "yes" ; then 581951834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 582051834341SRiku Voipiofi 58219af5c906SRiku Voipioif test "$setns" = "yes" ; then 58229af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 58239af5c906SRiku Voipiofi 582438860a03SAleksandar Markovicif test "$clock_adjtime" = "yes" ; then 582538860a03SAleksandar Markovic echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak 582638860a03SAleksandar Markovicfi 58275a03cd00SAleksandar Markovicif test "$syncfs" = "yes" ; then 58285a03cd00SAleksandar Markovic echo "CONFIG_SYNCFS=y" >> $config_host_mak 58295a03cd00SAleksandar Markovicfi 58303b3f24adSaurel32if test "$inotify" = "yes" ; then 58312358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 58323b3f24adSaurel32fi 5833c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 5834c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 5835c05c7a73SRiku Voipiofi 5836401bc051SPeter Maydellif test "$sem_timedwait" = "yes" ; then 5837401bc051SPeter Maydell echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak 5838401bc051SPeter Maydellfi 58396ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 58406ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 58416ae9a1f4SJuan Quintelafi 58426ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 58436ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 58446ae9a1f4SJuan Quintelafi 5845769ce76dSAlexander Grafif test "$curl" = "yes" ; then 5846d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 5847b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 58486ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 5849769ce76dSAlexander Graffi 58502e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 585198ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 58528eca2889SFam Zheng echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak 58532e4d9fb1Saurel32fi 5854fb599c9aSbalrogif test "$bluez" = "yes" ; then 585598ec69acSJuan Quintela echo "CONFIG_BLUEZ=y" >> $config_host_mak 5856ef7635ecSJuan Quintela echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 5857fb599c9aSbalrogfi 5858d46f7c9eSDr. David Alan Gilbertif test "$glib_subprocess" = "yes" ; then 58599d41401bSMichael S. Tsirkin echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 58609d41401bSMichael S. Tsirkinfi 5861a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 5862a4ccabcfSAnthony Liguori echo "CONFIG_GTK=y" >> $config_host_mak 5863a3f4d63dSCole Robinson echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 5864a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 5865014cb152SGerd Hoffmann echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 5866925a0400SGerd Hoffmann if test "$gtk_gl" = "yes" ; then 5867925a0400SGerd Hoffmann echo "CONFIG_GTK_GL=y" >> $config_host_mak 5868925a0400SGerd Hoffmann fi 5869bbbf9bfbSStefan Weilfi 5870a1c5e949SDaniel P. Berrangeecho "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak 5871ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then 5872ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS=y" >> $config_host_mak 5873ddbb0d09SDaniel P. Berrangefi 5874b917da4cSDaniel P. Berrangeif test "$gnutls_rnd" = "yes" ; then 5875b917da4cSDaniel P. Berrange echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak 5876b917da4cSDaniel P. Berrangefi 587791bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then 587891bfcdb0SDaniel P. Berrange echo "CONFIG_GCRYPT=y" >> $config_host_mak 58791f923c70SLongpeng(Mike) if test "$gcrypt_hmac" = "yes" ; then 58801f923c70SLongpeng(Mike) echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak 58811f923c70SLongpeng(Mike) fi 588237788f25SDaniel P. Berrange if test "$gcrypt_kdf" = "yes" ; then 588337788f25SDaniel P. Berrange echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak 588437788f25SDaniel P. Berrange fi 588562893b67SDaniel P. Berrangefi 588691bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then 588791bfcdb0SDaniel P. Berrange echo "CONFIG_NETTLE=y" >> $config_host_mak 5888becaeb72SRadim Krčmář echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 5889fff2f982SDaniel P. Berrange if test "$nettle_kdf" = "yes" ; then 5890fff2f982SDaniel P. Berrange echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak 5891fff2f982SDaniel P. Berrange fi 5892ed754746SDaniel P. Berrangefi 58939a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then 58949a2fd434SDaniel P. Berrange echo "CONFIG_TASN1=y" >> $config_host_mak 58959a2fd434SDaniel P. Berrangefi 5896559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then 5897559607eaSDaniel P. Berrange echo "HAVE_IFADDRS_H=y" >> $config_host_mak 5898559607eaSDaniel P. Berrangefi 58996b39b063SEric Blakeif test "$have_broken_size_max" = "yes" ; then 59006b39b063SEric Blake echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak 59016b39b063SEric Blakefi 5902277abf15SJan Vesely 5903277abf15SJan Vesely# Work around a system header bug with some kernel/XFS header 5904277abf15SJan Vesely# versions where they both try to define 'struct fsxattr': 5905277abf15SJan Vesely# xfs headers will not try to redefine structs from linux headers 5906277abf15SJan Vesely# if this macro is set. 5907277abf15SJan Veselyif test "$have_fsxattr" = "yes" ; then 5908277abf15SJan Vesely echo "HAVE_FSXATTR=y" >> $config_host_mak 5909277abf15SJan Veselyfi 5910bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 5911bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 5912a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 5913a4ccabcfSAnthony Liguorifi 59149d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then 59159d9e1521SGerd Hoffmann echo "CONFIG_VIRGL=y" >> $config_host_mak 59169d9e1521SGerd Hoffmann echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 59179d9e1521SGerd Hoffmann echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 59189d9e1521SGerd Hoffmannfi 5919e37630caSaliguoriif test "$xen" = "yes" ; then 59206dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 5921d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 592264a7ad6fSIan Campbell if test "$xen_pv_domain_build" = "yes" ; then 592364a7ad6fSIan Campbell echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak 592464a7ad6fSIan Campbell fi 5925e37630caSaliguorifi 59265c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 59275c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 59285c6c3a6cSChristoph Hellwigfi 5929758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 5930758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 5931758e8e38SVenkateswararao Jujjuri (JV)fi 59324f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 59334f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 59344f26f2b6SAvi Kivityfi 5935983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 5936758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 5937758e8e38SVenkateswararao Jujjuri (JV)fi 5938fe8fc5aeSPaolo Bonziniif test "$mpath" = "yes" ; then 5939fe8fc5aeSPaolo Bonzini echo "CONFIG_MPATH=y" >> $config_host_mak 5940fe8fc5aeSPaolo Bonzinifi 59415e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 59425e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 59435e9be92dSNicholas Bellingerfi 5944e6a74868SMarc-André Lureauif test "$vhost_net" = "yes" -a "$vhost_user" = "yes"; then 594503ce5744SNikolay Nikolaev echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 594603ce5744SNikolay Nikolaevfi 5947fc0b9b0eSStefan Hajnocziif test "$vhost_vsock" = "yes" ; then 5948fc0b9b0eSStefan Hajnoczi echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak 5949fc0b9b0eSStefan Hajnoczifi 5950e6a74868SMarc-André Lureauif test "$vhost_user" = "yes" ; then 5951e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER=y" >> $config_host_mak 5952e6a74868SMarc-André Lureaufi 595377755340Sthsif test "$blobs" = "yes" ; then 595498ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 595577755340Sthsfi 5956bf9298b9Saliguoriif test "$iovec" = "yes" ; then 59572358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 5958bf9298b9Saliguorifi 5959ceb42de8Saliguoriif test "$preadv" = "yes" ; then 59602358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 5961ceb42de8Saliguorifi 5962f652e6afSaurel32if test "$fdt" = "yes" ; then 59633f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 5964f652e6afSaurel32fi 5965dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 5966dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 5967dcc38d1cSMarcelo Tosattifi 5968b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes"; then 5969b3f6ea7eSPaolo Bonzini echo "CONFIG_TCG=y" >> $config_host_mak 59709195b2c2SStefan Weil if test "$tcg_interpreter" = "yes" ; then 59719195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 59729195b2c2SStefan Weil fi 5973b3f6ea7eSPaolo Bonzinifi 59745f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 59755f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 59765f6b9e8fSBlue Swirlfi 5977e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 5978e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 5979e78815a5SAndreas Färberfi 5980e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 5981e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 5982e78815a5SAndreas Färberfi 598397a847bcSbellard 5984cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 5985cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 5986cd4ec0b4SGerd Hoffmannfi 5987cd4ec0b4SGerd Hoffmann 59887b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then 59897b02f544SMarc-André Lureau echo "CONFIG_SMARTCARD=y" >> $config_host_mak 59907b62bf5aSFam Zheng echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak 59917b62bf5aSFam Zheng echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak 5992111a38b0SRobert Relyeafi 5993111a38b0SRobert Relyea 59942b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 59952b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 5996b878b652SFam Zheng echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak 5997b878b652SFam Zheng echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak 59982b2325ffSGerd Hoffmannfi 59992b2325ffSGerd Hoffmann 600069354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 600169354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 6002cc7923fcSFam Zheng echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak 6003cc7923fcSFam Zheng echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak 600469354a83SHans de Goedefi 600569354a83SHans de Goede 6006da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 6007da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 6008da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 6009014cb152SGerd Hoffmann if test "$opengl_dmabuf" = "yes" ; then 6010014cb152SGerd Hoffmann echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 6011014cb152SGerd Hoffmann fi 601220ff075bSMichael Wallefi 601320ff075bSMichael Walle 601499f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then 601599f2dbd3SLiang Li echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 601699f2dbd3SLiang Lifi 601799f2dbd3SLiang Li 6018607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 6019607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 6020607dacd0Sqiaonuohanfi 6021607dacd0Sqiaonuohan 6022607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 6023607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 6024607dacd0Sqiaonuohanfi 6025607dacd0Sqiaonuohan 60266b383c08SPeter Wuif test "$bzip2" = "yes" ; then 60276b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 60286b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 60296b383c08SPeter Wufi 60306b383c08SPeter Wu 6031c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 6032d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 60336ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 60346ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 6035c589b249SRonnie Sahlbergfi 6036c589b249SRonnie Sahlberg 60376542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 60384be4879fSColin Lord echo "CONFIG_LIBNFS=m" >> $config_host_mak 60394be4879fSColin Lord echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak 60406542aa9cSPeter Lievenfi 60416542aa9cSPeter Lieven 6042f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 6043f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 6044c3883e1fSFam Zheng echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak 6045c3883e1fSFam Zheng echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak 6046f794573eSEduardo Otubofi 6047f794573eSEduardo Otubo 604883fb7adfSbellard# XXX: suppress that 60497d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 60502358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 60517d3505c5Sbellardfi 60527d3505c5Sbellard 60534d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then 60544d9310f4SDaniel P. Berrange echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 60554d9310f4SDaniel P. Berrangefi 60563556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 60573556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 60583556c233SPaolo Bonzinifi 6059f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 6060d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 60616ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 60626ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 6063f27aaf4bSChristian Brunnerfi 606420ff6c80SAnthony Liguori 60657c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 606670c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 606770c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 606870c60c08SStefan Hajnoczielse 606970c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 607070c60c08SStefan Hajnoczifi 6071d0e2fce5SAneesh Kumar K.V 60727d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes" ; then 60737d992e4dSPeter Lieven echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak 60747d992e4dSPeter Lievenfi 60757d992e4dSPeter Lieven 6076f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" ; then 6077f0d92b56SLongpeng(Mike) echo "CONFIG_AF_ALG=y" >> $config_host_mak 6078f0d92b56SLongpeng(Mike)fi 6079f0d92b56SLongpeng(Mike) 6080d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 6081d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 6082d2042378SAneesh Kumar K.Vfi 6083d2042378SAneesh Kumar K.V 6084e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 6085e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 6086e06a765eSHarsh Prateek Borafi 6087e06a765eSHarsh Prateek Bora 6088cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 6089cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 609006d71fa1SPeter Maydellfi 609106d71fa1SPeter Maydell 60923f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 60933f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 60943f4349dcSKevin Wolffi 60953f4349dcSKevin Wolf 60968ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 60978ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 60988ab1bf12SLuiz Capitulinofi 60998ab1bf12SLuiz Capitulino 610076a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 610176a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 610276a347e1SRichard Hendersonfi 610376a347e1SRichard Henderson 6104f540166bSRichard Hendersonif test "$int128" = "yes" ; then 6105f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 6106f540166bSRichard Hendersonfi 6107f540166bSRichard Henderson 61087ebee43eSRichard Hendersonif test "$atomic128" = "yes" ; then 61097ebee43eSRichard Henderson echo "CONFIG_ATOMIC128=y" >> $config_host_mak 61107ebee43eSRichard Hendersonfi 61117ebee43eSRichard Henderson 6112df79b996SRichard Hendersonif test "$atomic64" = "yes" ; then 6113df79b996SRichard Henderson echo "CONFIG_ATOMIC64=y" >> $config_host_mak 6114df79b996SRichard Hendersonfi 6115df79b996SRichard Henderson 61161e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 61171e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 61181e6e9acaSRichard Hendersonfi 61191e6e9acaSRichard Henderson 6120eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 6121d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 61226ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 61236ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 6124eb100396SBharata B Raofi 6125eb100396SBharata B Rao 6126d85fa9ebSJeff Codyif test "$glusterfs_xlator_opt" = "yes" ; then 6127d85fa9ebSJeff Cody echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak 6128d85fa9ebSJeff Codyfi 6129d85fa9ebSJeff Cody 61300c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 61310c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 61320c14fb47SBharata B Raofi 61330c14fb47SBharata B Rao 6134df3a429aSNiels de Vosif test "$glusterfs_fallocate" = "yes" ; then 6135df3a429aSNiels de Vos echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak 6136df3a429aSNiels de Vosfi 6137df3a429aSNiels de Vos 61387c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 61397c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 61407c815372SBharata B Raofi 61417c815372SBharata B Rao 61420a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then 6143d3399d7cSFam Zheng echo "CONFIG_LIBSSH2=m" >> $config_host_mak 61446ebc91e5SFam Zheng echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 61456ebc91e5SFam Zheng echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 61460a12ec87SRichard W.M. Jonesfi 61470a12ec87SRichard W.M. Jones 6148ed1701c6SDr. David Alan Gilbertif test "$live_block_migration" = "yes" ; then 6149ed1701c6SDr. David Alan Gilbert echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak 6150ed1701c6SDr. David Alan Gilbertfi 6151ed1701c6SDr. David Alan Gilbert 61523b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 61533b8acc11SPaolo Bonzini echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 6154f4ede81eSAmarnath Valluri # TPM passthrough support? 61553b8acc11SPaolo Bonzini if test "$tpm_passthrough" = "yes"; then 61563b8acc11SPaolo Bonzini echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 61573b8acc11SPaolo Bonzini fi 6158f4ede81eSAmarnath Valluri # TPM emulator support? 6159f4ede81eSAmarnath Valluri if test "$tpm_emulator" = "yes"; then 6160f4ede81eSAmarnath Valluri echo "CONFIG_TPM_EMULATOR=y" >> $config_host_mak 6161f4ede81eSAmarnath Valluri fi 61623b8acc11SPaolo Bonzinifi 61633b8acc11SPaolo Bonzini 61645b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 61655b808275SLluís Vilanovaif have_backend "nop"; then 61666d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 616722890ab5SPrerna Saxenafi 61685b808275SLluís Vilanovaif have_backend "simple"; then 61696d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 61706d8a764eSLluís # Set the appropriate trace file. 6171953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 61729410b56cSPrerna Saxenafi 6173ed7f5f1dSPaolo Bonziniif have_backend "log"; then 6174ed7f5f1dSPaolo Bonzini echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 61756d8a764eSLluísfi 61765b808275SLluís Vilanovaif have_backend "ust"; then 61776d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 61786d8a764eSLluísfi 61795b808275SLluís Vilanovaif have_backend "dtrace"; then 61806d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 61816d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 61826d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 61836d8a764eSLluís fi 6184c276b17dSDaniel P. Berrangefi 61855b808275SLluís Vilanovaif have_backend "ftrace"; then 6186781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 6187781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 6188781e9545SEiichi Tsukata else 618921684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 6190781e9545SEiichi Tsukata fi 6191781e9545SEiichi Tsukatafi 61920a852417SPaul Durrantif have_backend "syslog"; then 61930a852417SPaul Durrant if test "$posix_syslog" = "yes" ; then 61940a852417SPaul Durrant echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak 61950a852417SPaul Durrant else 61960a852417SPaul Durrant feature_not_found "syslog(trace backend)" "syslog not available" 61970a852417SPaul Durrant fi 61980a852417SPaul Durrantfi 61999410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 62009410b56cSPrerna Saxena 62012da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 62022da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 6203392fb643SFam Zheng echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak 62042da776dbSMichael R. Hinesfi 62052da776dbSMichael R. Hines 6206575b22b1SLaurent Vivierif test "$have_rtnetlink" = "yes" ; then 6207575b22b1SLaurent Vivier echo "CONFIG_RTNETLINK=y" >> $config_host_mak 6208575b22b1SLaurent Vivierfi 6209575b22b1SLaurent Vivier 6210a6b1d4c0SChanglong Xieif test "$replication" = "yes" ; then 6211a6b1d4c0SChanglong Xie echo "CONFIG_REPLICATION=y" >> $config_host_mak 6212a6b1d4c0SChanglong Xiefi 6213a6b1d4c0SChanglong Xie 62146a02c806SStefan Hajnocziif test "$have_af_vsock" = "yes" ; then 62156a02c806SStefan Hajnoczi echo "CONFIG_AF_VSOCK=y" >> $config_host_mak 62166a02c806SStefan Hajnoczifi 62176a02c806SStefan Hajnoczi 62184d04351fSChristopher Covingtonif test "$have_sysmacros" = "yes" ; then 62194d04351fSChristopher Covington echo "CONFIG_SYSMACROS=y" >> $config_host_mak 62204d04351fSChristopher Covingtonfi 62214d04351fSChristopher Covington 622249e00a18SAndreas Grapentinif test "$have_static_assert" = "yes" ; then 622349e00a18SAndreas Grapentin echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak 622449e00a18SAndreas Grapentinfi 622549e00a18SAndreas Grapentin 6226e674605fSTomáš Golembiovskýif test "$have_utmpx" = "yes" ; then 6227e674605fSTomáš Golembiovský echo "HAVE_UTMPX=y" >> $config_host_mak 6228e674605fSTomáš Golembiovskýfi 6229e674605fSTomáš Golembiovský 6230e0580342SKamil Rytarowskiif test "$ivshmem" = "yes" ; then 6231e0580342SKamil Rytarowski echo "CONFIG_IVSHMEM=y" >> $config_host_mak 6232e0580342SKamil Rytarowskifi 6233e219c499SRichard Hendersonif test "$capstone" != "no" ; then 62348ca80760SRichard Henderson echo "CONFIG_CAPSTONE=y" >> $config_host_mak 62358ca80760SRichard Hendersonfi 6236e0580342SKamil Rytarowski 62375c312079SDr. David Alan Gilbert# Hold two types of flag: 62385c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 62395c312079SDr. David Alan Gilbert# a thread we have a handle to 62405c312079SDr. David Alan Gilbert# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 62415c312079SDr. David Alan Gilbert# platform 62425c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then 62435c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 62445c312079SDr. David Alan Gilbert echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 62455c312079SDr. David Alan Gilbertfi 62465c312079SDr. David Alan Gilbert 6247da92c3ffSAshish Mittalif test "$vxhs" = "yes" ; then 6248da92c3ffSAshish Mittal echo "CONFIG_VXHS=y" >> $config_host_mak 6249da92c3ffSAshish Mittal echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak 6250da92c3ffSAshish Mittalfi 6251da92c3ffSAshish Mittal 62525b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 62535b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 62545b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 62555b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 62565b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 62575b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 6258c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 62595b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 626040d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 626140d964b5SRichard Henderson QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 62625b5e3037SPaolo Bonzinielse 62635b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 62645b5e3037SPaolo Bonzinifi 62655b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 62665b5e3037SPaolo Bonzini 626798ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 626898ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 6269804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 6270804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 62711901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 62721901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 62731901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 627421655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 6275c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 6276804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 6277a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 6278a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 6279a31a8642SMichael S. Tsirkinfi 62802b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak 6281804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 628283f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 62833c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 6284804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 628545d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 6286cdbd727cSRichard Hendersonecho "AS=$as" >> $config_host_mak 62875f6f0e27SRichard Hendersonecho "CCAS=$ccas" >> $config_host_mak 62883dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 6289804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 6290804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 62914852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 62929fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 6293e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 629446eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 6295a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 629611cde1c8SBruno Dominguezecho "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak 6297f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 6298e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 6299e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 630080fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 63012944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 6302e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 6303e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 6304e39f0062SPaolo Bonzinifi 630542da6041SGerd Hoffmannif test "$cross_prefix" != ""; then 630642da6041SGerd Hoffmann echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 630742da6041SGerd Hoffmannelse 630842da6041SGerd Hoffmann echo "AUTOCONF_HOST := " >> $config_host_mak 630942da6041SGerd Hoffmannfi 6310e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak 631146eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 63126969ec6cSJames Clarkeecho "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak 6313e57218b6SPeter Maydellecho "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak 631473da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 63153e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 6316409437e1SDaniel P. Berrangeecho "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak 6317804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 631817969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 631917969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 6320957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 632190246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 632290246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 632394dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 6324cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 63251d728c39SBlue Swirlif test "$gcov" = "yes" ; then 63261d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 63271d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 63281d728c39SBlue Swirlfi 6329804edf29SJuan Quintela 63306efd7517SPeter Maydell# use included Linux headers 63316efd7517SPeter Maydellif test "$linux" = "yes" ; then 6332a307beb6SAndreas Färber mkdir -p linux-headers 63336efd7517SPeter Maydell case "$cpu" in 6334c72b26ecSRichard Henderson i386|x86_64|x32) 633508312a63SPeter Maydell linux_arch=x86 63366efd7517SPeter Maydell ;; 63376efd7517SPeter Maydell ppcemb|ppc|ppc64) 633808312a63SPeter Maydell linux_arch=powerpc 63396efd7517SPeter Maydell ;; 63406efd7517SPeter Maydell s390x) 634108312a63SPeter Maydell linux_arch=s390 634208312a63SPeter Maydell ;; 63431f080313SClaudio Fontana aarch64) 63441f080313SClaudio Fontana linux_arch=arm64 63451f080313SClaudio Fontana ;; 6346222e7d11SSanjay Lal mips64) 6347222e7d11SSanjay Lal linux_arch=mips 6348222e7d11SSanjay Lal ;; 634908312a63SPeter Maydell *) 635008312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 635108312a63SPeter Maydell linux_arch="$cpu" 63526efd7517SPeter Maydell ;; 63536efd7517SPeter Maydell esac 635408312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 635508312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 635608312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 635708312a63SPeter Maydell fi 63586efd7517SPeter Maydellfi 63596efd7517SPeter Maydell 636097a847bcSbellardfor target in $target_list; do 636197a847bcSbellardtarget_dir="$target" 636225be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 636389138857SStefan Weiltarget_name=$(echo $target | cut -d '-' -f 1) 636497a847bcSbellardtarget_bigendian="no" 63651f3d3c8fSJuan Quintela 6366c1799a84SPaolo Bonzinicase "$target_name" in 63674a09d0bbSRichard Henderson armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 6368ea2d6a39SJuan Quintela target_bigendian=yes 6369ea2d6a39SJuan Quintela ;; 6370ea2d6a39SJuan Quintelaesac 637197a847bcSbellardtarget_softmmu="no" 6372997344f3Sbellardtarget_user_only="no" 6373831b7825Sthstarget_linux_user="no" 637484778508Sblueswir1target_bsd_user="no" 63759e407a85Spbrookcase "$target" in 6376c1799a84SPaolo Bonzini ${target_name}-softmmu) 63779e407a85Spbrook target_softmmu="yes" 63789e407a85Spbrook ;; 6379c1799a84SPaolo Bonzini ${target_name}-linux-user) 63809e407a85Spbrook target_user_only="yes" 63819e407a85Spbrook target_linux_user="yes" 63829e407a85Spbrook ;; 6383c1799a84SPaolo Bonzini ${target_name}-bsd-user) 638484778508Sblueswir1 target_user_only="yes" 638584778508Sblueswir1 target_bsd_user="yes" 638684778508Sblueswir1 ;; 63879e407a85Spbrook *) 638876ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 63899e407a85Spbrook exit 1 63909e407a85Spbrook ;; 63919e407a85Spbrookesac 6392831b7825Sths 639397a847bcSbellardmkdir -p $target_dir 639425be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 639597a847bcSbellard 6396e5fe0c52Spbrookbflt="no" 6397ca759f9eSAlex Bennéemttcg="no" 639889138857SStefan Weilinterp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g") 639956aebc89Spbrookgdb_xml_files="" 64007ba1e619Saliguori 6401c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 64026acff7daSJuan QuintelaTARGET_BASE_ARCH="" 6403e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 6404e73aae67SJuan Quintela 6405c1799a84SPaolo Bonzinicase "$target_name" in 64062408a527Saurel32 i386) 6407b8158192SAbdallah Bouassida gdb_xml_files="i386-32bit.xml i386-32bit-core.xml i386-32bit-sse.xml" 64082408a527Saurel32 ;; 64092408a527Saurel32 x86_64) 64106acff7daSJuan Quintela TARGET_BASE_ARCH=i386 6411b8158192SAbdallah Bouassida gdb_xml_files="i386-64bit.xml i386-64bit-core.xml i386-64bit-sse.xml" 64122408a527Saurel32 ;; 64132408a527Saurel32 alpha) 64145ee4f3c2SRichard Henderson mttcg="yes" 64152408a527Saurel32 ;; 64162408a527Saurel32 arm|armeb) 6417b498c8a0SJuan Quintela TARGET_ARCH=arm 6418e5fe0c52Spbrook bflt="yes" 6419ca759f9eSAlex Bennée mttcg="yes" 642056aebc89Spbrook gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 64212408a527Saurel32 ;; 64226a49fa95SAlexander Graf aarch64) 64236a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 64246a49fa95SAlexander Graf bflt="yes" 6425ca759f9eSAlex Bennée mttcg="yes" 64268f95ce2eSPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 64276a49fa95SAlexander Graf ;; 64282408a527Saurel32 cris) 64292408a527Saurel32 ;; 643061766fe9SRichard Henderson hppa) 643161766fe9SRichard Henderson ;; 6432613a22c9SMichael Walle lm32) 6433613a22c9SMichael Walle ;; 64342408a527Saurel32 m68k) 64350938cda5Saurel32 bflt="yes" 64365a4526b2SLaurent Vivier gdb_xml_files="cf-core.xml cf-fp.xml m68k-fp.xml" 64372408a527Saurel32 ;; 6438877fdc12SEdgar E. Iglesias microblaze|microblazeel) 6439877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 644072b675caSEdgar E. Iglesias bflt="yes" 644172b675caSEdgar E. Iglesias ;; 64422408a527Saurel32 mips|mipsel) 6443b498c8a0SJuan Quintela TARGET_ARCH=mips 644425be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 64452408a527Saurel32 ;; 64462408a527Saurel32 mipsn32|mipsn32el) 6447597e2cecSRichard Henderson TARGET_ARCH=mips64 64486acff7daSJuan Quintela TARGET_BASE_ARCH=mips 644925be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 6450597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 64512408a527Saurel32 ;; 64522408a527Saurel32 mips64|mips64el) 6453b498c8a0SJuan Quintela TARGET_ARCH=mips64 64546acff7daSJuan Quintela TARGET_BASE_ARCH=mips 645525be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 64562408a527Saurel32 ;; 6457d15a9c23SAnthony Green moxie) 6458d15a9c23SAnthony Green ;; 6459e671711cSMarek Vasut nios2) 6460e671711cSMarek Vasut ;; 64614a09d0bbSRichard Henderson or1k) 6462e67db06eSJia Liu TARGET_ARCH=openrisc 6463e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 6464e67db06eSJia Liu ;; 64652408a527Saurel32 ppc) 6466c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 64672408a527Saurel32 ;; 64682408a527Saurel32 ppcemb) 64696acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6470e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 6471c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 64722408a527Saurel32 ;; 64732408a527Saurel32 ppc64) 64746acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6475e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 6476f0b0685dSNikunj A Dadhania mttcg=yes 64771438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 64782408a527Saurel32 ;; 64799c35126cSDoug Kwan ppc64le) 64809c35126cSDoug Kwan TARGET_ARCH=ppc64 64819c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 64829c35126cSDoug Kwan TARGET_ABI_DIR=ppc 6483f0b0685dSNikunj A Dadhania mttcg=yes 64841438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 64859c35126cSDoug Kwan ;; 64862408a527Saurel32 ppc64abi32) 6487b498c8a0SJuan Quintela TARGET_ARCH=ppc64 64886acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 6489e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 649025be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 64911438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 64922408a527Saurel32 ;; 64932408a527Saurel32 sh4|sh4eb) 6494b498c8a0SJuan Quintela TARGET_ARCH=sh4 64954dbed897Spbrook bflt="yes" 64962408a527Saurel32 ;; 64972408a527Saurel32 sparc) 64982408a527Saurel32 ;; 64992408a527Saurel32 sparc64) 65006acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 65012408a527Saurel32 ;; 65022408a527Saurel32 sparc32plus) 6503b498c8a0SJuan Quintela TARGET_ARCH=sparc64 65046acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 6505e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 650625be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 65072408a527Saurel32 ;; 650824e804ecSAlexander Graf s390x) 650986158a2aSChristian 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" 651024e804ecSAlexander Graf ;; 6511444e06b1SChen Gang tilegx) 6512444e06b1SChen Gang ;; 65135ecaa4edSPeter Crosthwaite tricore) 65145ecaa4edSPeter Crosthwaite ;; 6515d2fbca94SGuan Xuetao unicore32) 6516d2fbca94SGuan Xuetao ;; 6517cfa550c6SMax Filippov xtensa|xtensaeb) 6518cfa550c6SMax Filippov TARGET_ARCH=xtensa 6519cfa550c6SMax Filippov ;; 65202408a527Saurel32 *) 652176ad07a4SPeter Maydell error_exit "Unsupported target CPU" 65222408a527Saurel32 ;; 65232408a527Saurel32esac 65245e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 65255e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 65265e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 65275e8861a0SPaolo Bonzinifi 65285e8861a0SPaolo Bonzini 65295e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 65305e8861a0SPaolo Bonzini 653199afc91dSDaniel P. Berrangeupper() { 653299afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 653399afc91dSDaniel P. Berrange} 653499afc91dSDaniel P. Berrange 653589138857SStefan Weiltarget_arch_name="$(upper $TARGET_ARCH)" 653625be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 6537c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 653825be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 6539e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 6540e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 6541e6e91b9cSJuan Quintelafi 654225be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 6543adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 6544adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 6545adfc3e91SStacey Sonfi 65463b6b7550SPaolo Bonzini 65473b6b7550SPaolo Bonziniif supported_xen_target $target; then 654825be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 6549eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 6550eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 6551eb6fda0fSAnthony PERARD fi 6552432d268cSJun Nakajimafi 65533b6b7550SPaolo Bonziniif supported_kvm_target $target; then 655425be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 65551ba16968SStefan Weil if test "$vhost_net" = "yes" ; then 6556d5970055SMichael S. Tsirkin echo "CONFIG_VHOST_NET=y" >> $config_target_mak 6557e6a74868SMarc-André Lureau if test "$vhost_user" = "yes" ; then 6558e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER_NET_TEST_$target_name=y" >> $config_host_mak 6559e6a74868SMarc-André Lureau fi 6560d5970055SMichael S. Tsirkin fi 6561c59249f9SJuan Quintelafi 65623b6b7550SPaolo Bonziniif supported_hax_target $target; then 6563b0cb0a66SVincent Palatin echo "CONFIG_HAX=y" >> $config_target_mak 6564b0cb0a66SVincent Palatinfi 6565de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 656625be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 656797a847bcSbellardfi 656897a847bcSbellardif test "$target_softmmu" = "yes" ; then 656925be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 6570ca759f9eSAlex Bennée if test "$mttcg" = "yes" ; then 6571ca759f9eSAlex Bennée echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak 6572ca759f9eSAlex Bennée fi 6573de83cd02Sbellardfi 6574997344f3Sbellardif test "$target_user_only" = "yes" ; then 657525be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 6576a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 6577997344f3Sbellardfi 6578831b7825Sthsif test "$target_linux_user" = "yes" ; then 657925be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 6580831b7825Sthsfi 658156aebc89Spbrooklist="" 658256aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 658356aebc89Spbrook for x in $gdb_xml_files; do 658456aebc89Spbrook list="$list $source_path/gdb-xml/$x" 658556aebc89Spbrook done 658625be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 65873d0f1517SJuan Quintelafi 6588de83cd02Sbellard 6589e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 659025be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 6591e5fe0c52Spbrookfi 659284778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 659325be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 659484778508Sblueswir1fi 65955b0753e0Sbellard 65964afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets 6597fa282484SJuan Quintela 65984afddb55SJuan Quintelacflags="" 6599fa282484SJuan Quintelaldflags="" 66009b8e111fSJuan Quintela 6601c765fcacSPeter Crosthwaitedisas_config() { 6602c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> $config_target_mak 6603c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 6604c765fcacSPeter Crosthwaite} 6605c765fcacSPeter Crosthwaite 660664656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 660764656024SJuan Quintela case "$i" in 660864656024SJuan Quintela alpha) 6609c765fcacSPeter Crosthwaite disas_config "ALPHA" 661064656024SJuan Quintela ;; 661182295d8aSRichard Henderson aarch64) 661282295d8aSRichard Henderson if test -n "${cxx}"; then 6613c765fcacSPeter Crosthwaite disas_config "ARM_A64" 661482295d8aSRichard Henderson fi 661582295d8aSRichard Henderson ;; 661664656024SJuan Quintela arm) 6617c765fcacSPeter Crosthwaite disas_config "ARM" 6618999b53ecSClaudio Fontana if test -n "${cxx}"; then 6619c765fcacSPeter Crosthwaite disas_config "ARM_A64" 6620999b53ecSClaudio Fontana fi 662164656024SJuan Quintela ;; 662264656024SJuan Quintela cris) 6623c765fcacSPeter Crosthwaite disas_config "CRIS" 662464656024SJuan Quintela ;; 6625429b31a2SRichard Henderson hppa) 6626429b31a2SRichard Henderson disas_config "HPPA" 6627429b31a2SRichard Henderson ;; 6628c72b26ecSRichard Henderson i386|x86_64|x32) 6629c765fcacSPeter Crosthwaite disas_config "I386" 663064656024SJuan Quintela ;; 663179368f49SMichael Walle lm32) 6632c765fcacSPeter Crosthwaite disas_config "LM32" 663379368f49SMichael Walle ;; 663464656024SJuan Quintela m68k) 6635c765fcacSPeter Crosthwaite disas_config "M68K" 663664656024SJuan Quintela ;; 6637877fdc12SEdgar E. Iglesias microblaze*) 6638c765fcacSPeter Crosthwaite disas_config "MICROBLAZE" 663964656024SJuan Quintela ;; 664064656024SJuan Quintela mips*) 6641c765fcacSPeter Crosthwaite disas_config "MIPS" 664264656024SJuan Quintela ;; 6643d15a9c23SAnthony Green moxie*) 6644c765fcacSPeter Crosthwaite disas_config "MOXIE" 6645d15a9c23SAnthony Green ;; 6646e671711cSMarek Vasut nios2) 6647e671711cSMarek Vasut disas_config "NIOS2" 6648e671711cSMarek Vasut ;; 66494a09d0bbSRichard Henderson or1k) 6650c765fcacSPeter Crosthwaite disas_config "OPENRISC" 6651e67db06eSJia Liu ;; 665264656024SJuan Quintela ppc*) 6653c765fcacSPeter Crosthwaite disas_config "PPC" 665464656024SJuan Quintela ;; 665524e804ecSAlexander Graf s390*) 6656c765fcacSPeter Crosthwaite disas_config "S390" 665764656024SJuan Quintela ;; 665864656024SJuan Quintela sh4) 6659c765fcacSPeter Crosthwaite disas_config "SH4" 666064656024SJuan Quintela ;; 666164656024SJuan Quintela sparc*) 6662c765fcacSPeter Crosthwaite disas_config "SPARC" 666364656024SJuan Quintela ;; 6664cfa550c6SMax Filippov xtensa*) 6665c765fcacSPeter Crosthwaite disas_config "XTENSA" 6666cfa550c6SMax Filippov ;; 666764656024SJuan Quintela esac 666864656024SJuan Quinteladone 66699195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 6670c765fcacSPeter Crosthwaite disas_config "TCI" 66719195b2c2SStefan Weilfi 667264656024SJuan Quintela 66736ee7126fSJuan Quintelacase "$ARCH" in 66746ee7126fSJuan Quintelaalpha) 66756ee7126fSJuan Quintela # Ensure there's only a single GP 66766ee7126fSJuan Quintela cflags="-msmall-data $cflags" 66776ee7126fSJuan Quintela;; 66786ee7126fSJuan Quintelaesac 66796ee7126fSJuan Quintela 6680d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 668125be210fSJuan Quintela echo "TARGET_GPROF=yes" >> $config_target_mak 6682d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 6683d02c1db3SJuan Quintela cflags="-p $cflags" 6684d02c1db3SJuan Quintela ldflags="-p $ldflags" 6685d02c1db3SJuan Quintela fi 6686d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 6687d02c1db3SJuan Quintela ldflags="-p $ldflags" 668825be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 6689d02c1db3SJuan Quintela fi 6690d02c1db3SJuan Quintelafi 6691d02c1db3SJuan Quintela 66929b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 6693964c6fa1SRichard Henderson ldflags="$ldflags $textseg_ldflags" 6694fa282484SJuan Quintelafi 6695fa282484SJuan Quintela 6696e9a3591fSChristian Borntraeger# Newer kernels on s390 check for an S390_PGSTE program header and 6697e9a3591fSChristian Borntraeger# enable the pgste page table extensions in that case. This makes 6698e9a3591fSChristian Borntraeger# the vm.allocate_pgste sysctl unnecessary. We enable this program 6699e9a3591fSChristian Borntraeger# header if 6700e9a3591fSChristian Borntraeger# - we build on s390x 6701e9a3591fSChristian Borntraeger# - we build the system emulation for s390x (qemu-system-s390x) 6702e9a3591fSChristian Borntraeger# - KVM is enabled 6703e9a3591fSChristian Borntraeger# - the linker supports --s390-pgste 6704e9a3591fSChristian Borntraegerif test "$TARGET_ARCH" = "s390x" -a "$target_softmmu" = "yes" -a "$ARCH" = "s390x" -a "$kvm" = "yes"; then 6705e9a3591fSChristian Borntraeger if ld_has --s390-pgste ; then 6706e9a3591fSChristian Borntraeger ldflags="-Wl,--s390-pgste $ldflags" 6707e9a3591fSChristian Borntraeger fi 6708e9a3591fSChristian Borntraegerfi 6709e9a3591fSChristian Borntraeger 671025be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak 671125be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 6712fa282484SJuan Quintela 671397a847bcSbellarddone # for target in $targets 67147d13299dSbellard 6715a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then 6716a540f158SPeter Crosthwaite echo "config-host.h: subdir-dtc" >> $config_host_mak 6717a540f158SPeter Crosthwaitefi 6718e219c499SRichard Hendersonif [ "$capstone" = "git" -o "$capstone" = "internal" ]; then 6719e219c499SRichard Henderson echo "config-host.h: subdir-capstone" >> $config_host_mak 6720e219c499SRichard Hendersonfi 6721e219c499SRichard Hendersonif test -n "$LIBCAPSTONE"; then 6722e219c499SRichard Henderson echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak 6723e219c499SRichard Hendersonfi 6724a540f158SPeter Crosthwaite 6725a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 6726a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 6727a99d57bbSWanlong Gaofi 6728a99d57bbSWanlong Gao 6729fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then 6730fd0e6053SJohn Snow echo "export CCACHE_CPP2=y" >> $config_host_mak 6731fd0e6053SJohn Snowfi 6732fd0e6053SJohn Snow 6733d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory 6734b1fb9a63SFam ZhengDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests tests/vm" 6735b855f8d1SPaolo BonziniDIRS="$DIRS docs docs/interop fsdev scsi" 67369933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 67372d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 67382dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated" 6739c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 6740c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 6741aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 6742ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 6743446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile" 67449933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile" 67452d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 67464652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp" 67473a586d2fSStefan HajnocziFILES="$FILES .gdbinit scripts" # scripts needed by relative path in .gdbinit 6748753d11f2SRichard Hendersonfor bios_file in \ 6749753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 6750225a9ab8SAlexey Kardashevskiy $source_path/pc-bios/*.lid \ 67515acc2ec0SGerd Hoffmann $source_path/pc-bios/*.aml \ 6752753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 6753753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 6754e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 6755753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 67564e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 6757753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 6758753d11f2SRichard Hendersondo 675989138857SStefan Weil FILES="$FILES pc-bios/$(basename $bios_file)" 67607ea78b74SJan Kiszkadone 676189138857SStefan Weilfor test_file in $(find $source_path/tests/acpi-test-data -type f) 6762c2304b52SMarcel Apfelbaumdo 676389138857SStefan Weil FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')" 6764c2304b52SMarcel Apfelbaumdone 6765d1807a4fSPaolo Bonzinimkdir -p $DIRS 67667d13299dSbellardfor f in $FILES ; do 6767cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 6768f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 6769f9245e10SPeter Maydell fi 67707d13299dSbellarddone 67711ad2134fSPaul Brook 6772c34ebfdcSAnthony Liguori# temporary config to build submodules 67732d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 6774c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 677537116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 6776c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 6777cdbd727cSRichard Henderson echo "AS=$as" >> $config_mak 67785f6f0e27SRichard Henderson echo "CCAS=$ccas" >> $config_mak 6779c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 6780c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 67813dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 6782c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 6783a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 6784c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 6785c34ebfdcSAnthony Liguoridone 6786c34ebfdcSAnthony Liguori 6787fe31017fSMarc-André Lureau# set up tests data directory 6788fe31017fSMarc-André Lureauif [ ! -e tests/data ]; then 6789fe31017fSMarc-André Lureau symlink "$source_path/tests/data" tests/data 6790fe31017fSMarc-André Lureaufi 6791fe31017fSMarc-André Lureau 679276c7560aSMax Reitz# set up qemu-iotests in this build directory 679376c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 679476c7560aSMax Reitziotests_check="tests/qemu-iotests/check" 679576c7560aSMax Reitz 679676c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 679776c7560aSMax Reitzecho >> "$iotests_common_env" 679876c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 679976c7560aSMax Reitz 680076c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then 680176c7560aSMax Reitz symlink "$source_path/$iotests_check" "$iotests_check" 680276c7560aSMax Reitzfi 680376c7560aSMax Reitz 6804dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 6805dc655404SMichael S. Tsirkincat <<EOD >config.status 6806dc655404SMichael S. Tsirkin#!/bin/sh 6807dc655404SMichael S. Tsirkin# Generated by configure. 6808dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 6809dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 6810dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 6811dc655404SMichael S. TsirkinEOD 6812dc655404SMichael S. Tsirkinprintf "exec" >>config.status 6813dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status 6814cf7cc929SDr. David Alan Gilbertecho ' "$@"' >>config.status 6815dc655404SMichael S. Tsirkinchmod +x config.status 6816dc655404SMichael S. Tsirkin 68178cd05ab6SPeter Maydellrm -r "$TMPDIR1" 6818