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 118cd05ab6SPeter Maydell# Temporary directory used for files created while 128cd05ab6SPeter Maydell# configure runs. Since it is in the build directory 138cd05ab6SPeter Maydell# we can safely blow away any previous version of it 148cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete 158cd05ab6SPeter Maydell# it when configure exits.) 168cd05ab6SPeter MaydellTMPDIR1="config-temp" 178cd05ab6SPeter Maydellrm -rf "${TMPDIR1}" 188cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}" 198cd05ab6SPeter Maydellif [ $? -ne 0 ]; then 208cd05ab6SPeter Maydell echo "ERROR: failed to create temporary directory" 218cd05ab6SPeter Maydell exit 1 227d13299dSbellardfi 237d13299dSbellard 248cd05ab6SPeter MaydellTMPB="qemu-conf" 258cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c" 2666518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o" 279c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx" 2866518bf6SDon SlutzTMPL="${TMPDIR1}/${TMPB}.lo" 2966518bf6SDon SlutzTMPA="${TMPDIR1}/lib${TMPB}.la" 308cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe" 317d13299dSbellard 32da1d85e3SGerd Hoffmannrm -f config.log 339ac81bbbSmalc 34b48e3611SPeter Maydell# Print a helpful header at the top of config.log 35b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 36979ae168SPeter Maydellprintf "# Configured with:" >> config.log 37979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 38979ae168SPeter Maydellecho >> config.log 39b48e3611SPeter Maydellecho "#" >> config.log 40b48e3611SPeter Maydell 4176ad07a4SPeter Maydellerror_exit() { 4276ad07a4SPeter Maydell echo 4376ad07a4SPeter Maydell echo "ERROR: $1" 4476ad07a4SPeter Maydell while test -n "$2"; do 4576ad07a4SPeter Maydell echo " $2" 4676ad07a4SPeter Maydell shift 4776ad07a4SPeter Maydell done 4876ad07a4SPeter Maydell echo 4976ad07a4SPeter Maydell exit 1 5076ad07a4SPeter Maydell} 5176ad07a4SPeter Maydell 529c83ffd8SPeter Maydelldo_compiler() { 539c83ffd8SPeter Maydell # Run the compiler, capturing its output to the log. First argument 549c83ffd8SPeter Maydell # is compiler binary to execute. 559c83ffd8SPeter Maydell local compiler="$1" 569c83ffd8SPeter Maydell shift 579c83ffd8SPeter Maydell echo $compiler "$@" >> config.log 589c83ffd8SPeter Maydell $compiler "$@" >> config.log 2>&1 || return $? 598dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 608dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 618dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 628dc38a78SPeter Maydell # obvious to developers. 638dc38a78SPeter Maydell if test "$werror" != "yes"; then 648dc38a78SPeter Maydell return 0 658dc38a78SPeter Maydell fi 668dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 678dc38a78SPeter Maydell case "$*" in 688dc38a78SPeter Maydell *-Werror*) 698dc38a78SPeter Maydell return 0 708dc38a78SPeter Maydell ;; 718dc38a78SPeter Maydell esac 729c83ffd8SPeter Maydell echo $compiler -Werror "$@" >> config.log 739c83ffd8SPeter Maydell $compiler -Werror "$@" >> config.log 2>&1 && return $? 7476ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 7576ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 7676ad07a4SPeter Maydell "will be at the bottom of config.log." \ 7776ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 788dc38a78SPeter Maydell} 798dc38a78SPeter Maydell 809c83ffd8SPeter Maydelldo_cc() { 819c83ffd8SPeter Maydell do_compiler "$cc" "$@" 829c83ffd8SPeter Maydell} 839c83ffd8SPeter Maydell 849c83ffd8SPeter Maydelldo_cxx() { 859c83ffd8SPeter Maydell do_compiler "$cxx" "$@" 869c83ffd8SPeter Maydell} 879c83ffd8SPeter Maydell 889c83ffd8SPeter Maydellupdate_cxxflags() { 899c83ffd8SPeter Maydell # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 909c83ffd8SPeter Maydell # options which some versions of GCC's C++ compiler complain about 919c83ffd8SPeter Maydell # because they only make sense for C programs. 929c83ffd8SPeter Maydell QEMU_CXXFLAGS= 939c83ffd8SPeter Maydell for arg in $QEMU_CFLAGS; do 949c83ffd8SPeter Maydell case $arg in 959c83ffd8SPeter Maydell -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 969c83ffd8SPeter Maydell -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 979c83ffd8SPeter Maydell ;; 989c83ffd8SPeter Maydell *) 999c83ffd8SPeter Maydell QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 1009c83ffd8SPeter Maydell ;; 1019c83ffd8SPeter Maydell esac 1029c83ffd8SPeter Maydell done 1039c83ffd8SPeter Maydell} 1049c83ffd8SPeter Maydell 10552166aa0SJuan Quintelacompile_object() { 1068dc38a78SPeter Maydell do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC 10752166aa0SJuan Quintela} 10852166aa0SJuan Quintela 10952166aa0SJuan Quintelacompile_prog() { 11052166aa0SJuan Quintela local_cflags="$1" 11152166aa0SJuan Quintela local_ldflags="$2" 1128dc38a78SPeter Maydell do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags 11352166aa0SJuan Quintela} 11452166aa0SJuan Quintela 11566518bf6SDon Slutzdo_libtool() { 11666518bf6SDon Slutz local mode=$1 11766518bf6SDon Slutz shift 11866518bf6SDon Slutz # Run the compiler, capturing its output to the log. 11966518bf6SDon Slutz echo $libtool $mode --tag=CC $cc "$@" >> config.log 12066518bf6SDon Slutz $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $? 12166518bf6SDon Slutz # Test passed. If this is an --enable-werror build, rerun 12266518bf6SDon Slutz # the test with -Werror and bail out if it fails. This 12366518bf6SDon Slutz # makes warning-generating-errors in configure test code 12466518bf6SDon Slutz # obvious to developers. 12566518bf6SDon Slutz if test "$werror" != "yes"; then 12666518bf6SDon Slutz return 0 12766518bf6SDon Slutz fi 12866518bf6SDon Slutz # Don't bother rerunning the compile if we were already using -Werror 12966518bf6SDon Slutz case "$*" in 13066518bf6SDon Slutz *-Werror*) 13166518bf6SDon Slutz return 0 13266518bf6SDon Slutz ;; 13366518bf6SDon Slutz esac 13466518bf6SDon Slutz echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 13566518bf6SDon Slutz $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $? 13666518bf6SDon Slutz error_exit "configure test passed without -Werror but failed with -Werror." \ 13766518bf6SDon Slutz "This is probably a bug in the configure script. The failing command" \ 13866518bf6SDon Slutz "will be at the bottom of config.log." \ 13966518bf6SDon Slutz "You can run configure with --disable-werror to bypass this check." 14066518bf6SDon Slutz} 14166518bf6SDon Slutz 14266518bf6SDon Slutzlibtool_prog() { 14366518bf6SDon Slutz do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $? 14466518bf6SDon Slutz do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib 14566518bf6SDon Slutz} 14666518bf6SDon Slutz 14711568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 14811568d6dSPaolo Bonzinisymlink() { 14972b8b5a1SStefan Weil rm -rf "$2" 150ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 15172b8b5a1SStefan Weil ln -s "$1" "$2" 15211568d6dSPaolo Bonzini} 15311568d6dSPaolo Bonzini 1540dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 1550dba6195SLoïc Minier# executable or a builtin) 1560dba6195SLoïc Minierhas() { 1570dba6195SLoïc Minier type "$1" >/dev/null 2>&1 1580dba6195SLoïc Minier} 1590dba6195SLoïc Minier 1600dba6195SLoïc Minier# search for an executable in PATH 1610dba6195SLoïc Minierpath_of() { 1620dba6195SLoïc Minier local_command="$1" 1630dba6195SLoïc Minier local_ifs="$IFS" 1640dba6195SLoïc Minier local_dir="" 1650dba6195SLoïc Minier 1660dba6195SLoïc Minier # pathname has a dir component? 1670dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 1680dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 1690dba6195SLoïc Minier echo "$local_command" 1700dba6195SLoïc Minier return 0 1710dba6195SLoïc Minier fi 1720dba6195SLoïc Minier fi 1730dba6195SLoïc Minier if [ -z "$local_command" ]; then 1740dba6195SLoïc Minier return 1 1750dba6195SLoïc Minier fi 1760dba6195SLoïc Minier 1770dba6195SLoïc Minier IFS=: 1780dba6195SLoïc Minier for local_dir in $PATH; do 1790dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 1800dba6195SLoïc Minier echo "$local_dir/$local_command" 1810dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1820dba6195SLoïc Minier return 0 1830dba6195SLoïc Minier fi 1840dba6195SLoïc Minier done 1850dba6195SLoïc Minier # not found 1860dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1870dba6195SLoïc Minier return 1 1880dba6195SLoïc Minier} 1890dba6195SLoïc Minier 1905b808275SLluís Vilanovahave_backend () { 1915b808275SLluís Vilanova echo "$trace_backends" | grep "$1" >/dev/null 1925b808275SLluís Vilanova} 1935b808275SLluís Vilanova 1947d13299dSbellard# default parameters 195ca4deeb1SPaolo Bonzinisource_path=`dirname "$0"` 1962ff6b91eSJuan Quintelacpu="" 197a31a8642SMichael S. Tsirkiniasl="iasl" 1981e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 19943ce4dfeSbellardstatic="no" 2007d13299dSbellardcross_prefix="" 2010c58ac1cSmalcaudio_drv_list="" 202b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 203b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 204e49d021eSPeter Maydellhost_cc="cc" 20573da375eSJuan Quintelalibs_softmmu="" 2063e2e0e6bSJuan Quintelalibs_tools="" 20767f86e8eSJuan Quintelaaudio_pt_int="" 208d5631638Smalcaudio_win_int="" 2092b2e59e6SPaolo Bonzinicc_i386=i386-pc-linux-gnu-gcc 210957f1f99SMichael Rothlibs_qga="" 2115bc62e01SGerd Hoffmanndebug_info="yes" 21263678e17SSteven Noonanstack_protector="" 213ac0df51dSaliguori 214afb63ebdSStefan Weil# Don't accept a target_list environment variable. 215afb63ebdSStefan Weilunset target_list 216377529c0SPaolo Bonzini 217377529c0SPaolo Bonzini# Default value for a variable defining feature "foo". 218377529c0SPaolo Bonzini# * foo="no" feature will only be used if --enable-foo arg is given 219377529c0SPaolo Bonzini# * foo="" feature will be searched for, and if found, will be used 220377529c0SPaolo Bonzini# unless --disable-foo is given 221377529c0SPaolo Bonzini# * foo="yes" this value will only be set by --enable-foo flag. 222377529c0SPaolo Bonzini# feature will searched for, 223377529c0SPaolo Bonzini# if not found, configure exits with error 224377529c0SPaolo Bonzini# 225377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args. 226377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it 227377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found. 228377529c0SPaolo Bonzini 229377529c0SPaolo Bonzinibluez="" 230377529c0SPaolo Bonzinibrlapi="" 231377529c0SPaolo Bonzinicurl="" 232377529c0SPaolo Bonzinicurses="" 233377529c0SPaolo Bonzinidocs="" 234377529c0SPaolo Bonzinifdt="" 23558952137SVincenzo Maffionenetmap="no" 236e2134eb9SGerd Hoffmannpixman="" 237377529c0SPaolo Bonzinisdl="" 23847c03744SDave Airliesdlabi="1.2" 239983eef5aSMeador Ingevirtfs="" 240821601eaSJes Sorensenvnc="yes" 241377529c0SPaolo Bonzinisparse="no" 242377529c0SPaolo Bonziniuuid="" 243377529c0SPaolo Bonzinivde="" 244377529c0SPaolo Bonzinivnc_tls="" 245377529c0SPaolo Bonzinivnc_sasl="" 246377529c0SPaolo Bonzinivnc_jpeg="" 247377529c0SPaolo Bonzinivnc_png="" 2487536ee4bSTim Hardeckvnc_ws="" 249377529c0SPaolo Bonzinixen="" 250d5b93ddfSAnthony PERARDxen_ctrl_version="" 251eb6fda0fSAnthony PERARDxen_pci_passthrough="" 252377529c0SPaolo Bonzinilinux_aio="" 25347e98658SCorey Bryantcap_ng="" 254377529c0SPaolo Bonziniattr="" 2554f26f2b6SAvi Kivitylibattr="" 256377529c0SPaolo Bonzinixfs="" 257377529c0SPaolo Bonzini 258d41a75a2SBradvhost_net="no" 2595e9be92dSNicholas Bellingervhost_scsi="no" 260d41a75a2SBradkvm="no" 2612da776dbSMichael R. Hinesrdma="" 262377529c0SPaolo Bonzinigprof="no" 263377529c0SPaolo Bonzinidebug_tcg="no" 264377529c0SPaolo Bonzinidebug="no" 265377529c0SPaolo Bonzinistrip_opt="yes" 2669195b2c2SStefan Weiltcg_interpreter="no" 267377529c0SPaolo Bonzinibigendian="no" 268377529c0SPaolo Bonzinimingw32="no" 2691d728c39SBlue Swirlgcov="no" 2701d728c39SBlue Swirlgcov_tool="gcov" 271377529c0SPaolo BonziniEXESUF="" 27217969268SFam ZhengDSOSUF=".so" 27317969268SFam ZhengLDFLAGS_SHARED="-shared" 27417969268SFam Zhengmodules="no" 275377529c0SPaolo Bonziniprefix="/usr/local" 276377529c0SPaolo Bonzinimandir="\${prefix}/share/man" 277528ae5b8SEduardo Habkostdatadir="\${prefix}/share" 278850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu" 279377529c0SPaolo Bonzinibindir="\${prefix}/bin" 2803aa5d2beSAlon Levylibdir="\${prefix}/lib" 2818bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec" 2820f94d6daSAlon Levyincludedir="\${prefix}/include" 283377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc" 284785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var" 285377529c0SPaolo Bonziniconfsuffix="/qemu" 286377529c0SPaolo Bonzinislirp="yes" 287377529c0SPaolo Bonzinifmod_lib="" 288377529c0SPaolo Bonzinifmod_inc="" 289377529c0SPaolo Bonzinioss_lib="" 290377529c0SPaolo Bonzinibsd="no" 291377529c0SPaolo Bonzinilinux="no" 292377529c0SPaolo Bonzinisolaris="no" 293377529c0SPaolo Bonziniprofiler="no" 294377529c0SPaolo Bonzinicocoa="no" 295377529c0SPaolo Bonzinisoftmmu="yes" 296377529c0SPaolo Bonzinilinux_user="no" 297377529c0SPaolo Bonzinibsd_user="no" 29830163d89SPeter Maydellguest_base="yes" 299377529c0SPaolo Bonziniaix="no" 300377529c0SPaolo Bonziniblobs="yes" 301377529c0SPaolo Bonzinipkgversion="" 30240d6444eSAvi Kivitypie="" 303377529c0SPaolo Bonzinizero_malloc="" 3043556c233SPaolo Bonziniqom_cast_debug="yes" 3055b808275SLluís Vilanovatrace_backends="nop" 306377529c0SPaolo Bonzinitrace_file="trace" 307377529c0SPaolo Bonzinispice="" 308377529c0SPaolo Bonzinirbd="" 309111a38b0SRobert Relyeasmartcard_nss="" 3102b2325ffSGerd Hoffmannlibusb="" 31169354a83SHans de Goedeusb_redir="" 312da076ffeSGerd Hoffmannopengl="" 3131ece9905SAlon Levyzlib="yes" 314b25c9dffSStefan Weillzo="" 315b25c9dffSStefan Weilsnappy="" 3166b383c08SPeter Wubzip2="" 317e8ef31a3SMichael Tokarevguest_agent="" 318d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 319d9840e25STomoki Sekiyamavss_win32_sdk="" 320d9840e25STomoki Sekiyamawin_sdk="no" 3214b1c11fdSDaniel P. Berrangewant_tools="yes" 322c589b249SRonnie Sahlberglibiscsi="" 3236542aa9cSPeter Lievenlibnfs="" 324519175a2SAlex Barcelocoroutine="" 32570c60c08SStefan Hajnoczicoroutine_pool="" 326f794573eSEduardo Otuboseccomp="" 327eb100396SBharata B Raoglusterfs="" 3280c14fb47SBharata B Raoglusterfs_discard="no" 3297c815372SBharata B Raoglusterfs_zerofill="no" 3306a460ed1SStefan Hajnocziarchipelago="no" 331a4ccabcfSAnthony Liguorigtk="" 3329e04c683SStefan Weilgtkabi="" 333bbbf9bfbSStefan Weilvte="" 334e91c793cSCole Robinsontpm="yes" 3350a12ec87SRichard W.M. Joneslibssh2="" 3364f18b782SJeff Codyvhdx="" 337b25c9dffSStefan Weilquorum="" 338a99d57bbSWanlong Gaonuma="" 3392847b469SFam Zhengtcmalloc="no" 340377529c0SPaolo Bonzini 341ac0df51dSaliguori# parse CC options first 342ac0df51dSaliguorifor opt do 343ac0df51dSaliguori optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 344ac0df51dSaliguori case "$opt" in 345ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 346ac0df51dSaliguori ;; 3473d8df640SPaolo Bonzini --cc=*) CC="$optarg" 348ac0df51dSaliguori ;; 34983f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 35083f73fceSTomoki Sekiyama ;; 351ca4deeb1SPaolo Bonzini --source-path=*) source_path="$optarg" 352ca4deeb1SPaolo Bonzini ;; 3532ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 3542ff6b91eSJuan Quintela ;; 355a558ee17SJuan Quintela --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS" 356f9943cd5SGerd Hoffmann EXTRA_CFLAGS="$optarg" 357e2a2ed06SJuan Quintela ;; 358e2a2ed06SJuan Quintela --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS" 359f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 360e2a2ed06SJuan Quintela ;; 3615bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 3625bc62e01SGerd Hoffmann ;; 3635bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 3645bc62e01SGerd Hoffmann ;; 365ac0df51dSaliguori esac 366ac0df51dSaliguoridone 367ac0df51dSaliguori# OS specific 368ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 36993148aa5SStefan Weil# we can eliminate its usage altogether. 370ac0df51dSaliguori 371e49d021eSPeter Maydell# Preferred compiler: 372e49d021eSPeter Maydell# ${CC} (if set) 373e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 374e49d021eSPeter Maydell# system compiler 375e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 376e49d021eSPeter Maydell cc="$host_cc" 377e49d021eSPeter Maydellelse 378b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 379e49d021eSPeter Maydellfi 380e49d021eSPeter Maydell 38183f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 38283f73fceSTomoki Sekiyama cxx="c++" 38383f73fceSTomoki Sekiyamaelse 38483f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 38583f73fceSTomoki Sekiyamafi 38683f73fceSTomoki Sekiyama 387b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 3883dd46c78SBlue Swirlas="${AS-${cross_prefix}as}" 3893dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 390b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 391b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 3923f534581SBradlibtool="${LIBTOOL-${cross_prefix}libtool}" 3934852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 394b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 395b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 39617884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 39717884d7bSSergei Trofimovichquery_pkg_config() { 39817884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 39917884d7bSSergei Trofimovich} 40017884d7bSSergei Trofimovichpkg_config=query_pkg_config 401b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 40247c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 403ac0df51dSaliguori 40445d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 40545d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 40645d285abSPeter Maydell 407be17dc90SMichael S. Tsirkin# default flags for all hosts 4084c288acbSPeter MaydellQEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS" 409f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 410c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 411be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 4126b4c305cSPaolo BonziniQEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include" 4135bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then 4145bc62e01SGerd Hoffmann CFLAGS="-g $CFLAGS" 415be17dc90SMichael S. Tsirkin LDFLAGS="-g $LDFLAGS" 4165bc62e01SGerd Hoffmannfi 417be17dc90SMichael S. Tsirkin 418ca4deeb1SPaolo Bonzini# make source path absolute 419ca4deeb1SPaolo Bonzinisource_path=`cd "$source_path"; pwd` 420ca4deeb1SPaolo Bonzini 421cab00a5aSMichael S. Tsirkin# running configure in the source tree? 422cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 423cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 424cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 425cab00a5aSMichael S. Tsirkinelse 426cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 427cab00a5aSMichael S. Tsirkinfi 428cab00a5aSMichael S. Tsirkin 429ac0df51dSaliguoricheck_define() { 430ac0df51dSaliguoricat > $TMPC <<EOF 431ac0df51dSaliguori#if !defined($1) 432fd786e1aSPeter Maydell#error $1 not defined 433ac0df51dSaliguori#endif 434ac0df51dSaliguoriint main(void) { return 0; } 435ac0df51dSaliguoriEOF 43652166aa0SJuan Quintela compile_object 437ac0df51dSaliguori} 438ac0df51dSaliguori 439bbea4050SPeter Maydellif check_define __linux__ ; then 440bbea4050SPeter Maydell targetos="Linux" 441bbea4050SPeter Maydellelif check_define _WIN32 ; then 442bbea4050SPeter Maydell targetos='MINGW32' 443bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 444bbea4050SPeter Maydell targetos='OpenBSD' 445bbea4050SPeter Maydellelif check_define __sun__ ; then 446bbea4050SPeter Maydell targetos='SunOS' 447bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 448bbea4050SPeter Maydell targetos='Haiku' 449bbea4050SPeter Maydellelse 450bbea4050SPeter Maydell targetos=`uname -s` 451bbea4050SPeter Maydellfi 452bbea4050SPeter Maydell 453bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 454bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 455bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 456bbea4050SPeter Maydell# the correct CPU with the --cpu option. 457bbea4050SPeter Maydellcase $targetos in 458bbea4050SPeter MaydellDarwin) 459bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 460bbea4050SPeter Maydell # run 64-bit userspace code. 461bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 462bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 463bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 464bbea4050SPeter Maydell cpu="x86_64" 465bbea4050SPeter Maydell fi 466bbea4050SPeter Maydell ;; 467bbea4050SPeter MaydellSunOS) 468bbea4050SPeter Maydell # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo 469bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 470bbea4050SPeter Maydell cpu="x86_64" 471bbea4050SPeter Maydell fi 472bbea4050SPeter Maydellesac 473bbea4050SPeter Maydell 4742ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 4752ff6b91eSJuan Quintela # command line argument 4762ff6b91eSJuan Quintela : 4772ff6b91eSJuan Quintelaelif check_define __i386__ ; then 478ac0df51dSaliguori cpu="i386" 479ac0df51dSaliguorielif check_define __x86_64__ ; then 480c72b26ecSRichard Henderson if check_define __ILP32__ ; then 481c72b26ecSRichard Henderson cpu="x32" 482c72b26ecSRichard Henderson else 483ac0df51dSaliguori cpu="x86_64" 484c72b26ecSRichard Henderson fi 4853aa9bd6cSblueswir1elif check_define __sparc__ ; then 4863aa9bd6cSblueswir1 if check_define __arch64__ ; then 4873aa9bd6cSblueswir1 cpu="sparc64" 4883aa9bd6cSblueswir1 else 4893aa9bd6cSblueswir1 cpu="sparc" 4903aa9bd6cSblueswir1 fi 491fdf7ed96Smalcelif check_define _ARCH_PPC ; then 492fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 493fdf7ed96Smalc cpu="ppc64" 494ac0df51dSaliguori else 495fdf7ed96Smalc cpu="ppc" 496fdf7ed96Smalc fi 497afa05235SAurelien Jarnoelif check_define __mips__ ; then 498afa05235SAurelien Jarno cpu="mips" 499477ba620SAurelien Jarnoelif check_define __ia64__ ; then 500477ba620SAurelien Jarno cpu="ia64" 501d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 502d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 503d66ed0eaSAurelien Jarno cpu="s390x" 504d66ed0eaSAurelien Jarno else 505d66ed0eaSAurelien Jarno cpu="s390" 506d66ed0eaSAurelien Jarno fi 50721d89f84SPeter Maydellelif check_define __arm__ ; then 50821d89f84SPeter Maydell cpu="arm" 5091f080313SClaudio Fontanaelif check_define __aarch64__ ; then 5101f080313SClaudio Fontana cpu="aarch64" 511f28ffed5SBradelif check_define __hppa__ ; then 512f28ffed5SBrad cpu="hppa" 513fdf7ed96Smalcelse 514fdf7ed96Smalc cpu=`uname -m` 515ac0df51dSaliguorifi 516ac0df51dSaliguori 517359bc95dSPeter MaydellARCH= 518359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 519359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 5207d13299dSbellardcase "$cpu" in 521c72b26ecSRichard Henderson ia64|ppc|ppc64|s390|s390x|sparc64|x32) 522ea8f20f8SJuan Quintela cpu="$cpu" 523ea8f20f8SJuan Quintela ;; 5247d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 52597a847bcSbellard cpu="i386" 5267d13299dSbellard ;; 527aaa5fa14Saurel32 x86_64|amd64) 528aaa5fa14Saurel32 cpu="x86_64" 529aaa5fa14Saurel32 ;; 53021d89f84SPeter Maydell armv*b|armv*l|arm) 53121d89f84SPeter Maydell cpu="arm" 5327d13299dSbellard ;; 5331f080313SClaudio Fontana aarch64) 5341f080313SClaudio Fontana cpu="aarch64" 5351f080313SClaudio Fontana ;; 536afa05235SAurelien Jarno mips*) 537afa05235SAurelien Jarno cpu="mips" 538afa05235SAurelien Jarno ;; 5393142255cSblueswir1 sparc|sun4[cdmuv]) 540ae228531Sbellard cpu="sparc" 541ae228531Sbellard ;; 5427d13299dSbellard *) 543359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 544359bc95dSPeter Maydell ARCH=unknown 5457d13299dSbellard ;; 5467d13299dSbellardesac 547359bc95dSPeter Maydellif test -z "$ARCH"; then 548359bc95dSPeter Maydell ARCH="$cpu" 549359bc95dSPeter Maydellfi 550e2d52ad3SJuan Quintela 5517d13299dSbellard# OS specific 5520dbfc675SJuan Quintela 553adfc3e91SStacey Son# host *BSD for user mode 554adfc3e91SStacey SonHOST_VARIANT_DIR="" 555adfc3e91SStacey Son 5567d13299dSbellardcase $targetos in 557c326e0afSbellardCYGWIN*) 558c326e0afSbellard mingw32="yes" 559a558ee17SJuan Quintela QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS" 560d5631638Smalc audio_possible_drivers="winwave sdl" 561d5631638Smalc audio_drv_list="winwave" 562c326e0afSbellard;; 56367b915a5SbellardMINGW32*) 56467b915a5Sbellard mingw32="yes" 565d5631638Smalc audio_possible_drivers="winwave dsound sdl fmod" 566d5631638Smalc audio_drv_list="winwave" 56767b915a5Sbellard;; 5685c40d2bdSthsGNU/kFreeBSD) 569a167ba50SAurelien Jarno bsd="yes" 5700c58ac1cSmalc audio_drv_list="oss" 571f34af52cSaurel32 audio_possible_drivers="oss sdl esd pa" 5725c40d2bdSths;; 5737d3505c5SbellardFreeBSD) 5747d3505c5Sbellard bsd="yes" 5750db4a067SPaolo Bonzini make="${MAKE-gmake}" 5760c58ac1cSmalc audio_drv_list="oss" 577f34af52cSaurel32 audio_possible_drivers="oss sdl esd pa" 578f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 579f01576f1SJuergen Lock LIBS="-lutil $LIBS" 58058952137SVincenzo Maffione netmap="" # enable netmap autodetect 581adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 5827d3505c5Sbellard;; 583c5e97233Sblueswir1DragonFly) 584c5e97233Sblueswir1 bsd="yes" 5850db4a067SPaolo Bonzini make="${MAKE-gmake}" 586c5e97233Sblueswir1 audio_drv_list="oss" 587c5e97233Sblueswir1 audio_possible_drivers="oss sdl esd pa" 588adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 589c5e97233Sblueswir1;; 5907d3505c5SbellardNetBSD) 5917d3505c5Sbellard bsd="yes" 5920db4a067SPaolo Bonzini make="${MAKE-gmake}" 5930c58ac1cSmalc audio_drv_list="oss" 594c2de5c91Smalc audio_possible_drivers="oss sdl esd" 5958ef92a88Sblueswir1 oss_lib="-lossaudio" 596adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 5977d3505c5Sbellard;; 5987d3505c5SbellardOpenBSD) 5997d3505c5Sbellard bsd="yes" 6000db4a067SPaolo Bonzini make="${MAKE-gmake}" 6014f6ab397SBrad Smith audio_drv_list="sdl" 6024f6ab397SBrad Smith audio_possible_drivers="sdl esd" 603adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 6047d3505c5Sbellard;; 60583fb7adfSbellardDarwin) 60683fb7adfSbellard bsd="yes" 60783fb7adfSbellard darwin="yes" 60817969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 6091b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 610a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 6110c439cbfSJuan Quintela LDFLAGS="-arch x86_64 $LDFLAGS" 6121b0f9cc2Saliguori fi 613fd677642Sths cocoa="yes" 6140c58ac1cSmalc audio_drv_list="coreaudio" 615c2de5c91Smalc audio_possible_drivers="coreaudio sdl fmod" 6160c439cbfSJuan Quintela LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 6177973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 618a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 619a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 620a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 621adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 62283fb7adfSbellard;; 623ec530c81SbellardSunOS) 624ec530c81Sbellard solaris="yes" 6250db4a067SPaolo Bonzini make="${MAKE-gmake}" 6260db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 627fa58948dSBlue Swirl ld="gld" 628e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 6290475a5caSths needs_libsunmath="no" 630c2b84fabSths solarisrev=`uname -r | cut -f2 -d.` 631c2b84fabSths if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 6320475a5caSths if test "$solarisrev" -le 9 ; then 6330475a5caSths if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then 6340475a5caSths needs_libsunmath="yes" 635f14bfdf9SJuan Quintela QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS" 636f14bfdf9SJuan Quintela LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS" 637f14bfdf9SJuan Quintela LIBS="-lsunmath $LIBS" 6380475a5caSths else 63976ad07a4SPeter Maydell error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \ 64076ad07a4SPeter Maydell "libsunmath from the Sun Studio compilers tools, due to a lack of" \ 64176ad07a4SPeter Maydell "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \ 64276ad07a4SPeter Maydell "Studio 11 can be downloaded from www.sun.com." 6430475a5caSths fi 6440475a5caSths fi 64586b2bd93Sths fi 6466b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 6470c58ac1cSmalc audio_drv_list="oss" 6486b4d2ba1Sths fi 649c2de5c91Smalc audio_possible_drivers="oss sdl" 650d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 651d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 652d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 653d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 654a558ee17SJuan Quintela QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 655560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 656560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 657560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 658ec530c81Sbellard;; 659b29fe3edSmalcAIX) 660b29fe3edSmalc aix="yes" 6610db4a067SPaolo Bonzini make="${MAKE-gmake}" 662b29fe3edSmalc;; 663179cf400SAndreas FärberHaiku) 664179cf400SAndreas Färber haiku="yes" 665179cf400SAndreas Färber QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 666179cf400SAndreas Färber LIBS="-lposix_error_mapper -lnetwork $LIBS" 667179cf400SAndreas Färber;; 668fb065187Sbellard*) 6690c58ac1cSmalc audio_drv_list="oss" 670b8e59f18Smalc audio_possible_drivers="oss alsa sdl esd pa" 6715327cf48Sbellard linux="yes" 672831b7825Sths linux_user="yes" 673af2be207SJan Kiszka kvm="yes" 674af2be207SJan Kiszka vhost_net="yes" 6755e9be92dSNicholas Bellinger vhost_scsi="yes" 676c72b26ecSRichard Henderson if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then 677c2de5c91Smalc audio_possible_drivers="$audio_possible_drivers fmod" 678c9ec1fe4Sbellard fi 679a585140dSAlexey Kardashevskiy QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES" 680fb065187Sbellard;; 6817d13299dSbellardesac 6827d13299dSbellard 6837d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 684b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 68584778508Sblueswir1 bsd_user="yes" 6867d3505c5Sbellard fi 68708de3949SAndreas Färberfi 6887d3505c5Sbellard 6890db4a067SPaolo Bonzini: ${make=${MAKE-make}} 6900db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 69152510f8bSStefan Weil: ${python=${PYTHON-python}} 692e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 6930db4a067SPaolo Bonzini 6943c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 6953c4a4d0dSPeter Maydellif has clang; then 6963c4a4d0dSPeter Maydell objcc=clang 6973c4a4d0dSPeter Maydellelse 6983c4a4d0dSPeter Maydell objcc="$cc" 6993c4a4d0dSPeter Maydellfi 7003c4a4d0dSPeter Maydell 7013457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 7023457a3f8SJuan Quintela EXESUF=".exe" 70317969268SFam Zheng DSOSUF=".dll" 704a558ee17SJuan Quintela QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 705e94a7936SStefan Weil # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 706e94a7936SStefan Weil QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 707f7cf5d5bSStefan Weil LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 708f7cf5d5bSStefan Weilcat > $TMPC << EOF 709f7cf5d5bSStefan Weilint main(void) { return 0; } 710f7cf5d5bSStefan WeilEOF 711f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 712f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 713f7cf5d5bSStefan Weil fi 714c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 715683035deSPaolo Bonzini mandir="\${prefix}" 716528ae5b8SEduardo Habkost datadir="\${prefix}" 717850da188SEduardo Habkost qemu_docdir="\${prefix}" 718683035deSPaolo Bonzini bindir="\${prefix}" 719683035deSPaolo Bonzini sysconfdir="\${prefix}" 7205a699bbbSLaszlo Ersek local_statedir= 721683035deSPaolo Bonzini confsuffix="" 722368542b8SStefan Hajnoczi libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga" 7233457a3f8SJuan Quintelafi 7243457a3f8SJuan Quintela 725487fefdbSAnthony Liguoriwerror="" 72685aa5189Sbellard 7277d13299dSbellardfor opt do 728a46e4035Spbrook optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 7297d13299dSbellard case "$opt" in 7302efc3265Sbellard --help|-h) show_help=yes 7312efc3265Sbellard ;; 73299123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 73399123e13SMike Frysinger ;; 734b1a550a0Spbrook --prefix=*) prefix="$optarg" 7357d13299dSbellard ;; 736b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 73732ce6337Sbellard ;; 738ca4deeb1SPaolo Bonzini --source-path=*) 7397d13299dSbellard ;; 740ac0df51dSaliguori --cross-prefix=*) 7417d13299dSbellard ;; 742ac0df51dSaliguori --cc=*) 7437d13299dSbellard ;; 744b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 74583469015Sbellard ;; 74683f73fceSTomoki Sekiyama --cxx=*) 74783f73fceSTomoki Sekiyama ;; 748e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 749e007dbecSMichael S. Tsirkin ;; 7503c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 7513c4a4d0dSPeter Maydell ;; 752b1a550a0Spbrook --make=*) make="$optarg" 7537d13299dSbellard ;; 7546a882643Spbrook --install=*) install="$optarg" 7556a882643Spbrook ;; 756c886edfbSBlue Swirl --python=*) python="$optarg" 757c886edfbSBlue Swirl ;; 7581d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 7591d728c39SBlue Swirl ;; 760e2d8830eSBrad --smbd=*) smbd="$optarg" 761e2d8830eSBrad ;; 762e2a2ed06SJuan Quintela --extra-cflags=*) 7637d13299dSbellard ;; 764e2a2ed06SJuan Quintela --extra-ldflags=*) 7657d13299dSbellard ;; 7665bc62e01SGerd Hoffmann --enable-debug-info) 7675bc62e01SGerd Hoffmann ;; 7685bc62e01SGerd Hoffmann --disable-debug-info) 7695bc62e01SGerd Hoffmann ;; 77017969268SFam Zheng --enable-modules) 77117969268SFam Zheng modules="yes" 77217969268SFam Zheng ;; 7732ff6b91eSJuan Quintela --cpu=*) 7747d13299dSbellard ;; 775b1a550a0Spbrook --target-list=*) target_list="$optarg" 776de83cd02Sbellard ;; 7775b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 7785b808275SLluís Vilanova ;; 7795b808275SLluís Vilanova # XXX: backwards compatibility 7805b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 78194a420b1SStefan Hajnoczi ;; 78274242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 7839410b56cSPrerna Saxena ;; 7847d13299dSbellard --enable-gprof) gprof="yes" 7857d13299dSbellard ;; 7861d728c39SBlue Swirl --enable-gcov) gcov="yes" 7871d728c39SBlue Swirl ;; 78879427693SLoïc Minier --static) 78979427693SLoïc Minier static="yes" 79079427693SLoïc Minier LDFLAGS="-static $LDFLAGS" 79117884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 79243ce4dfeSbellard ;; 7930b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 7940b24e75fSPaolo Bonzini ;; 7950b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 7960b24e75fSPaolo Bonzini ;; 7973aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 7983aa5d2beSAlon Levy ;; 7998bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 8008bf188aaSMichael Tokarev ;; 8010f94d6daSAlon Levy --includedir=*) includedir="$optarg" 8020f94d6daSAlon Levy ;; 803528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 8040b24e75fSPaolo Bonzini ;; 805023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 806023d3d67SEduardo Habkost ;; 807850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 8080b24e75fSPaolo Bonzini ;; 809ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 81007381cc1SAnthony Liguori ;; 811785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 812785c23aeSLuiz Capitulino ;; 813785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 814023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 815023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 816023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 817023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 818023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 819023ddd74SMax Filippov # lots of directory switches by default. 820023ddd74SMax Filippov ;; 821e2134eb9SGerd Hoffmann --with-system-pixman) pixman="system" 822e2134eb9SGerd Hoffmann ;; 823e2134eb9SGerd Hoffmann --without-system-pixman) pixman="internal" 824e2134eb9SGerd Hoffmann ;; 82574880fe2SRobert Schiele --without-pixman) pixman="none" 82674880fe2SRobert Schiele ;; 82797a847bcSbellard --disable-sdl) sdl="no" 82897a847bcSbellard ;; 829c4198157SJuan Quintela --enable-sdl) sdl="yes" 830c4198157SJuan Quintela ;; 83147c03744SDave Airlie --with-sdlabi=*) sdlabi="$optarg" 83247c03744SDave Airlie ;; 8333556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 8343556c233SPaolo Bonzini ;; 8353556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 8363556c233SPaolo Bonzini ;; 837983eef5aSMeador Inge --disable-virtfs) virtfs="no" 838983eef5aSMeador Inge ;; 839983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 840983eef5aSMeador Inge ;; 841821601eaSJes Sorensen --disable-vnc) vnc="no" 842821601eaSJes Sorensen ;; 843821601eaSJes Sorensen --enable-vnc) vnc="yes" 844821601eaSJes Sorensen ;; 845b1a550a0Spbrook --fmod-lib=*) fmod_lib="$optarg" 846102a52e4Sbellard ;; 847c2de5c91Smalc --fmod-inc=*) fmod_inc="$optarg" 848c2de5c91Smalc ;; 8492f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 8502f6a1ab0Sblueswir1 ;; 8510c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 8520c58ac1cSmalc ;; 853b64ec4e4SFam Zheng --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 854b64ec4e4SFam Zheng ;; 855b64ec4e4SFam Zheng --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 856eb852011SMarkus Armbruster ;; 857f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 858f8393946Saurel32 ;; 859f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 860f8393946Saurel32 ;; 861f3d08ee6SPaul Brook --enable-debug) 862f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 863f3d08ee6SPaul Brook debug_tcg="yes" 864f3d08ee6SPaul Brook debug="yes" 865f3d08ee6SPaul Brook strip_opt="no" 866f3d08ee6SPaul Brook ;; 86703b4fe7dSaliguori --enable-sparse) sparse="yes" 86803b4fe7dSaliguori ;; 86903b4fe7dSaliguori --disable-sparse) sparse="no" 87003b4fe7dSaliguori ;; 8711625af87Saliguori --disable-strip) strip_opt="no" 8721625af87Saliguori ;; 8738d5d2d4cSths --disable-vnc-tls) vnc_tls="no" 8748d5d2d4cSths ;; 8751be10ad2SJuan Quintela --enable-vnc-tls) vnc_tls="yes" 8761be10ad2SJuan Quintela ;; 8772f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 8782f9606b3Saliguori ;; 879ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 880ea784e3bSJuan Quintela ;; 8812f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 8822f6f5c7aSCorentin Chary ;; 8832f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 8842f6f5c7aSCorentin Chary ;; 885efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 886efe556adSCorentin Chary ;; 887efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 888efe556adSCorentin Chary ;; 8897536ee4bSTim Hardeck --disable-vnc-ws) vnc_ws="no" 8907536ee4bSTim Hardeck ;; 8917536ee4bSTim Hardeck --enable-vnc-ws) vnc_ws="yes" 8927536ee4bSTim Hardeck ;; 893443f1376Sbellard --disable-slirp) slirp="no" 894c20709aaSbellard ;; 895ee682d27SStefan Weil --disable-uuid) uuid="no" 896ee682d27SStefan Weil ;; 897ee682d27SStefan Weil --enable-uuid) uuid="yes" 898ee682d27SStefan Weil ;; 899e0e6c8c0Saliguori --disable-vde) vde="no" 9008a16d273Sths ;; 901dfb278bdSJuan Quintela --enable-vde) vde="yes" 902dfb278bdSJuan Quintela ;; 90358952137SVincenzo Maffione --disable-netmap) netmap="no" 90458952137SVincenzo Maffione ;; 90558952137SVincenzo Maffione --enable-netmap) netmap="yes" 90658952137SVincenzo Maffione ;; 907e37630caSaliguori --disable-xen) xen="no" 908e37630caSaliguori ;; 909fc321b4bSJuan Quintela --enable-xen) xen="yes" 910fc321b4bSJuan Quintela ;; 911eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 912eb6fda0fSAnthony PERARD ;; 913eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 914eb6fda0fSAnthony PERARD ;; 9152e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 9162e4d9fb1Saurel32 ;; 9174ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 9184ffcedb6SJuan Quintela ;; 919fb599c9aSbalrog --disable-bluez) bluez="no" 920fb599c9aSbalrog ;; 921a20a6f46SJuan Quintela --enable-bluez) bluez="yes" 922a20a6f46SJuan Quintela ;; 9237ba1e619Saliguori --disable-kvm) kvm="no" 9247ba1e619Saliguori ;; 925b31a0277SJuan Quintela --enable-kvm) kvm="yes" 926b31a0277SJuan Quintela ;; 9279195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 9289195b2c2SStefan Weil ;; 9299195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 9309195b2c2SStefan Weil ;; 93147e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 93247e98658SCorey Bryant ;; 93347e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 93447e98658SCorey Bryant ;; 935cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 936cd4ec0b4SGerd Hoffmann ;; 937cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 938cd4ec0b4SGerd Hoffmann ;; 939c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 940c589b249SRonnie Sahlberg ;; 941c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 942c589b249SRonnie Sahlberg ;; 9436542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 9446542aa9cSPeter Lieven ;; 9456542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 9466542aa9cSPeter Lieven ;; 94705c2a3e7Sbellard --enable-profiler) profiler="yes" 94805c2a3e7Sbellard ;; 94914821030SPavel Borzenkov --disable-cocoa) cocoa="no" 95014821030SPavel Borzenkov ;; 951c2de5c91Smalc --enable-cocoa) 952c2de5c91Smalc cocoa="yes" ; 953c2de5c91Smalc sdl="no" ; 954c2de5c91Smalc audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 9555b0753e0Sbellard ;; 956cad25d69Spbrook --disable-system) softmmu="no" 9570a8e90f4Spbrook ;; 958cad25d69Spbrook --enable-system) softmmu="yes" 9590a8e90f4Spbrook ;; 9600953a80fSZachary Amsden --disable-user) 9610953a80fSZachary Amsden linux_user="no" ; 9620953a80fSZachary Amsden bsd_user="no" ; 9630953a80fSZachary Amsden ;; 9640953a80fSZachary Amsden --enable-user) ;; 965831b7825Sths --disable-linux-user) linux_user="no" 9660a8e90f4Spbrook ;; 967831b7825Sths --enable-linux-user) linux_user="yes" 968831b7825Sths ;; 96984778508Sblueswir1 --disable-bsd-user) bsd_user="no" 97084778508Sblueswir1 ;; 97184778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 97284778508Sblueswir1 ;; 973379f6698SPaul Brook --enable-guest-base) guest_base="yes" 974379f6698SPaul Brook ;; 975379f6698SPaul Brook --disable-guest-base) guest_base="no" 976379f6698SPaul Brook ;; 97740d6444eSAvi Kivity --enable-pie) pie="yes" 97834005a00SKirill A. Shutemov ;; 97940d6444eSAvi Kivity --disable-pie) pie="no" 98034005a00SKirill A. Shutemov ;; 98185aa5189Sbellard --enable-werror) werror="yes" 98285aa5189Sbellard ;; 98385aa5189Sbellard --disable-werror) werror="no" 98485aa5189Sbellard ;; 98563678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 98663678e17SSteven Noonan ;; 98763678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 98863678e17SSteven Noonan ;; 9894d3b6f6eSbalrog --disable-curses) curses="no" 9904d3b6f6eSbalrog ;; 991c584a6d0SJuan Quintela --enable-curses) curses="yes" 992c584a6d0SJuan Quintela ;; 993769ce76dSAlexander Graf --disable-curl) curl="no" 994769ce76dSAlexander Graf ;; 995788c8196SJuan Quintela --enable-curl) curl="yes" 996788c8196SJuan Quintela ;; 9972df87df7SJuan Quintela --disable-fdt) fdt="no" 9982df87df7SJuan Quintela ;; 9992df87df7SJuan Quintela --enable-fdt) fdt="yes" 10002df87df7SJuan Quintela ;; 10015c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 10025c6c3a6cSChristoph Hellwig ;; 10035c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 10045c6c3a6cSChristoph Hellwig ;; 1005758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 1006758e8e38SVenkateswararao Jujjuri (JV) ;; 1007758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 1008758e8e38SVenkateswararao Jujjuri (JV) ;; 100977755340Sths --disable-blobs) blobs="no" 101077755340Sths ;; 10114a19f1ecSpbrook --with-pkgversion=*) pkgversion=" ($optarg)" 10124a19f1ecSpbrook ;; 1013519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1014519175a2SAlex Barcelo ;; 101570c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 101670c60c08SStefan Hajnoczi ;; 101770c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 101870c60c08SStefan Hajnoczi ;; 1019a25dba17SJuan Quintela --disable-docs) docs="no" 102070ec5dc0SAnthony Liguori ;; 1021a25dba17SJuan Quintela --enable-docs) docs="yes" 102283a3ab8bSJuan Quintela ;; 1023d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1024d5970055SMichael S. Tsirkin ;; 1025d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1026d5970055SMichael S. Tsirkin ;; 10275e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 10285e9be92dSNicholas Bellinger ;; 10295e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 10305e9be92dSNicholas Bellinger ;; 1031da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 103220ff075bSMichael Walle ;; 1033da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 103420ff075bSMichael Walle ;; 1035f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1036f27aaf4bSChristian Brunner ;; 1037f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1038f27aaf4bSChristian Brunner ;; 10398c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 10408c84cf11SSergei Trofimovich ;; 10418c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 10428c84cf11SSergei Trofimovich ;; 1043111a38b0SRobert Relyea --disable-smartcard-nss) smartcard_nss="no" 1044111a38b0SRobert Relyea ;; 1045111a38b0SRobert Relyea --enable-smartcard-nss) smartcard_nss="yes" 1046111a38b0SRobert Relyea ;; 10472b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 10482b2325ffSGerd Hoffmann ;; 10492b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 10502b2325ffSGerd Hoffmann ;; 105169354a83SHans de Goede --disable-usb-redir) usb_redir="no" 105269354a83SHans de Goede ;; 105369354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 105469354a83SHans de Goede ;; 10551ece9905SAlon Levy --disable-zlib-test) zlib="no" 10561ece9905SAlon Levy ;; 1057b25c9dffSStefan Weil --disable-lzo) lzo="no" 1058b25c9dffSStefan Weil ;; 1059607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1060607dacd0Sqiaonuohan ;; 1061b25c9dffSStefan Weil --disable-snappy) snappy="no" 1062b25c9dffSStefan Weil ;; 1063607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1064607dacd0Sqiaonuohan ;; 10656b383c08SPeter Wu --disable-bzip2) bzip2="no" 10666b383c08SPeter Wu ;; 10676b383c08SPeter Wu --enable-bzip2) bzip2="yes" 10686b383c08SPeter Wu ;; 1069d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1070d138cee9SMichael Roth ;; 1071d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1072d138cee9SMichael Roth ;; 1073d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1074d9840e25STomoki Sekiyama ;; 1075d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1076d9840e25STomoki Sekiyama ;; 1077d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1078d9840e25STomoki Sekiyama ;; 1079d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1080d9840e25STomoki Sekiyama ;; 1081d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1082d9840e25STomoki Sekiyama ;; 1083d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1084d9840e25STomoki Sekiyama ;; 10854b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 10864b1c11fdSDaniel P. Berrange ;; 10874b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 10884b1c11fdSDaniel P. Berrange ;; 1089f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1090f794573eSEduardo Otubo ;; 1091f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1092f794573eSEduardo Otubo ;; 1093eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1094eb100396SBharata B Rao ;; 1095eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1096eb100396SBharata B Rao ;; 1097c9a12e75SChrysostomos Nanakos --disable-archipelago) archipelago="no" 1098c9a12e75SChrysostomos Nanakos ;; 1099c9a12e75SChrysostomos Nanakos --enable-archipelago) archipelago="yes" 1100c9a12e75SChrysostomos Nanakos ;; 110152b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 110252b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1103583f6e7bSStefan Hajnoczi ;; 1104a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1105a4ccabcfSAnthony Liguori ;; 1106a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1107a4ccabcfSAnthony Liguori ;; 11082da776dbSMichael R. Hines --enable-rdma) rdma="yes" 11092da776dbSMichael R. Hines ;; 11102da776dbSMichael R. Hines --disable-rdma) rdma="no" 11112da776dbSMichael R. Hines ;; 1112528de90aSDaniel P. Berrange --with-gtkabi=*) gtkabi="$optarg" 1113528de90aSDaniel P. Berrange ;; 1114bbbf9bfbSStefan Weil --disable-vte) vte="no" 1115bbbf9bfbSStefan Weil ;; 1116bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1117bbbf9bfbSStefan Weil ;; 1118e91c793cSCole Robinson --disable-tpm) tpm="no" 1119e91c793cSCole Robinson ;; 1120ab214c29SStefan Berger --enable-tpm) tpm="yes" 1121ab214c29SStefan Berger ;; 11220a12ec87SRichard W.M. Jones --disable-libssh2) libssh2="no" 11230a12ec87SRichard W.M. Jones ;; 11240a12ec87SRichard W.M. Jones --enable-libssh2) libssh2="yes" 11250a12ec87SRichard W.M. Jones ;; 11264f18b782SJeff Cody --enable-vhdx) vhdx="yes" 11274f18b782SJeff Cody ;; 11284f18b782SJeff Cody --disable-vhdx) vhdx="no" 11294f18b782SJeff Cody ;; 113095c6bff3SBenoît Canet --disable-quorum) quorum="no" 113195c6bff3SBenoît Canet ;; 113295c6bff3SBenoît Canet --enable-quorum) quorum="yes" 113395c6bff3SBenoît Canet ;; 1134a99d57bbSWanlong Gao --disable-numa) numa="no" 1135a99d57bbSWanlong Gao ;; 1136a99d57bbSWanlong Gao --enable-numa) numa="yes" 1137a99d57bbSWanlong Gao ;; 11382847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 11392847b469SFam Zheng ;; 11402847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 11412847b469SFam Zheng ;; 11422d2ad6d0SFam Zheng *) 11432d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 11442d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 11452d2ad6d0SFam Zheng exit 1 11467f1559c6Sbalrog ;; 11477d13299dSbellard esac 11487d13299dSbellarddone 11497d13299dSbellard 1150f6f0b7d9SStefan Weilif ! has $python; then 1151f6f0b7d9SStefan Weil error_exit "Python not found. Use --python=/path/to/python" 1152f6f0b7d9SStefan Weilfi 1153f6f0b7d9SStefan Weil 1154f6f0b7d9SStefan Weil# Note that if the Python conditional here evaluates True we will exit 1155f6f0b7d9SStefan Weil# with status 1 which is a shell 'false' value. 1156f6f0b7d9SStefan Weilif ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then 1157f6f0b7d9SStefan Weil error_exit "Cannot use '$python', Python 2.4 or later is required." \ 1158f6f0b7d9SStefan Weil "Note that Python 3 or later is not yet supported." \ 1159f6f0b7d9SStefan Weil "Use --python=/path/to/python to specify a supported Python." 1160f6f0b7d9SStefan Weilfi 1161f6f0b7d9SStefan Weil 1162f6f0b7d9SStefan Weil# The -B switch was added in Python 2.6. 1163f6f0b7d9SStefan Weil# If it is supplied, compiled files are not written. 1164f6f0b7d9SStefan Weil# Use it for Python versions which support it. 1165f6f0b7d9SStefan Weilif $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then 1166f6f0b7d9SStefan Weil python="$python -B" 1167f6f0b7d9SStefan Weilfi 1168f6f0b7d9SStefan Weil 116940293e58Sbellardcase "$cpu" in 1170e3608d66SRichard Henderson ppc) 1171e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1172e3608d66SRichard Henderson LDFLAGS="-m32 $LDFLAGS" 1173e3608d66SRichard Henderson ;; 1174e3608d66SRichard Henderson ppc64) 1175e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1176e3608d66SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 1177e3608d66SRichard Henderson ;; 11789b9c37c3SRichard Henderson sparc) 11790c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 118079f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32 -mcpu=ultrasparc" 11813142255cSblueswir1 ;; 1182ed968ff1SJuan Quintela sparc64) 11830c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 118479f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 11853142255cSblueswir1 ;; 118676d83bdeSths s390) 1187061cdd81SRichard Henderson CPU_CFLAGS="-m31" 118828d7cc49SRichard Henderson LDFLAGS="-m31 $LDFLAGS" 118928d7cc49SRichard Henderson ;; 119028d7cc49SRichard Henderson s390x) 1191061cdd81SRichard Henderson CPU_CFLAGS="-m64" 119228d7cc49SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 119376d83bdeSths ;; 119440293e58Sbellard i386) 119579f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 11960c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 11972b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 119840293e58Sbellard ;; 119940293e58Sbellard x86_64) 120079f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64" 12010c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 12022b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 1203379f6698SPaul Brook ;; 1204c72b26ecSRichard Henderson x32) 1205c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1206c72b26ecSRichard Henderson LDFLAGS="-mx32 $LDFLAGS" 1207c72b26ecSRichard Henderson cc_i386='$(CC) -m32' 1208c72b26ecSRichard Henderson ;; 120930163d89SPeter Maydell # No special flags required for other host CPUs 12103142255cSblueswir1esac 12113142255cSblueswir1 121279f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 121379f3b12fSPeter CrosthwaiteEXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS" 121479f3b12fSPeter Crosthwaite 121560e0df25SPeter Maydelldefault_target_list="" 121660e0df25SPeter Maydell 12176e92f823SPeter Maydellmak_wilds="" 12186e92f823SPeter Maydell 121960e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 12206e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 122160e0df25SPeter Maydellfi 122260e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 12236e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 122460e0df25SPeter Maydellfi 122560e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 12266e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 122760e0df25SPeter Maydellfi 122860e0df25SPeter Maydell 12296e92f823SPeter Maydellfor config in $mak_wilds; do 12306e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 12316e92f823SPeter Maydelldone 12326e92f823SPeter Maydell 1233af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1234af5db58eSpbrookcat << EOF 1235af5db58eSpbrook 1236af5db58eSpbrookUsage: configure [options] 1237af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1238af5db58eSpbrook 123908fb77edSStefan WeilStandard options: 124008fb77edSStefan Weil --help print this message 124108fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 124208fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 124308fb77edSStefan Weil use %M for cpu name [$interp_prefix] 124408fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 124508fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 124608fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 124708fb77edSStefan Weil 124808fb77edSStefan WeilAdvanced options (experts only): 124908fb77edSStefan Weil --source-path=PATH path of source code [$source_path] 125008fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 125108fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 125208fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 125308fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 125408fb77edSStefan Weil build time 125508fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 125608fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 125708fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 125808fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 125908fb77edSStefan Weil --make=MAKE use specified make [$make] 126008fb77edSStefan Weil --install=INSTALL use specified install [$install] 126108fb77edSStefan Weil --python=PYTHON use specified python [$python] 126208fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 126308fb77edSStefan Weil --static enable static build [$static] 126408fb77edSStefan Weil --mandir=PATH install man pages in PATH 126508fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 126608fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 126708fb77edSStefan Weil --bindir=PATH install binaries in PATH 126808fb77edSStefan Weil --libdir=PATH install libraries in PATH 126908fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 127008fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 1271e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 127217969268SFam Zheng --enable-modules enable modules support 127308fb77edSStefan Weil --enable-debug-tcg enable TCG debugging 127408fb77edSStefan Weil --disable-debug-tcg disable TCG debugging (default) 127508fb77edSStefan Weil --enable-debug-info enable debugging information (default) 127608fb77edSStefan Weil --disable-debug-info disable debugging information 127708fb77edSStefan Weil --enable-debug enable common debug build options 127808fb77edSStefan Weil --enable-sparse enable sparse checker 127908fb77edSStefan Weil --disable-sparse disable sparse checker (default) 128008fb77edSStefan Weil --disable-strip disable stripping binaries 128108fb77edSStefan Weil --disable-werror disable compilation abort on warning 128263678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 128308fb77edSStefan Weil --disable-sdl disable SDL 128408fb77edSStefan Weil --enable-sdl enable SDL 128547c03744SDave Airlie --with-sdlabi select preferred SDL ABI 1.2 or 2.0 128608fb77edSStefan Weil --disable-gtk disable gtk UI 128708fb77edSStefan Weil --enable-gtk enable gtk UI 1288f92d61f3SCole Robinson --with-gtkabi select preferred GTK ABI 2.0 or 3.0 128908fb77edSStefan Weil --disable-virtfs disable VirtFS 129008fb77edSStefan Weil --enable-virtfs enable VirtFS 129108fb77edSStefan Weil --disable-vnc disable VNC 129208fb77edSStefan Weil --enable-vnc enable VNC 129308fb77edSStefan Weil --disable-cocoa disable Cocoa (Mac OS X only) 129408fb77edSStefan Weil --enable-cocoa enable Cocoa (default on Mac OS X) 129508fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 129608fb77edSStefan Weil Available drivers: $audio_possible_drivers 129708fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 129808fb77edSStefan Weil --block-drv-rw-whitelist=L 129908fb77edSStefan Weil set block driver read-write whitelist 130008fb77edSStefan Weil (affects only QEMU, not qemu-img) 130108fb77edSStefan Weil --block-drv-ro-whitelist=L 130208fb77edSStefan Weil set block driver read-only whitelist 130308fb77edSStefan Weil (affects only QEMU, not qemu-img) 130408fb77edSStefan Weil --disable-xen disable xen backend driver support 130508fb77edSStefan Weil --enable-xen enable xen backend driver support 130608fb77edSStefan Weil --disable-xen-pci-passthrough 130708fb77edSStefan Weil --enable-xen-pci-passthrough 130808fb77edSStefan Weil --disable-brlapi disable BrlAPI 130908fb77edSStefan Weil --enable-brlapi enable BrlAPI 131008fb77edSStefan Weil --disable-vnc-tls disable TLS encryption for VNC server 131108fb77edSStefan Weil --enable-vnc-tls enable TLS encryption for VNC server 131208fb77edSStefan Weil --disable-vnc-sasl disable SASL encryption for VNC server 131308fb77edSStefan Weil --enable-vnc-sasl enable SASL encryption for VNC server 131408fb77edSStefan Weil --disable-vnc-jpeg disable JPEG lossy compression for VNC server 131508fb77edSStefan Weil --enable-vnc-jpeg enable JPEG lossy compression for VNC server 131608fb77edSStefan Weil --disable-vnc-png disable PNG compression for VNC server (default) 131708fb77edSStefan Weil --enable-vnc-png enable PNG compression for VNC server 131808fb77edSStefan Weil --disable-vnc-ws disable Websockets support for VNC server 131908fb77edSStefan Weil --enable-vnc-ws enable Websockets support for VNC server 132008fb77edSStefan Weil --disable-curses disable curses output 132108fb77edSStefan Weil --enable-curses enable curses output 132208fb77edSStefan Weil --disable-curl disable curl connectivity 132308fb77edSStefan Weil --enable-curl enable curl connectivity 132408fb77edSStefan Weil --disable-fdt disable fdt device tree 132508fb77edSStefan Weil --enable-fdt enable fdt device tree 132608fb77edSStefan Weil --disable-bluez disable bluez stack connectivity 132708fb77edSStefan Weil --enable-bluez enable bluez stack connectivity 132808fb77edSStefan Weil --disable-slirp disable SLIRP userspace network connectivity 132908fb77edSStefan Weil --disable-kvm disable KVM acceleration support 133008fb77edSStefan Weil --enable-kvm enable KVM acceleration support 133108fb77edSStefan Weil --disable-rdma disable RDMA-based migration support 133208fb77edSStefan Weil --enable-rdma enable RDMA-based migration support 133308fb77edSStefan Weil --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 133408fb77edSStefan Weil --enable-system enable all system emulation targets 133508fb77edSStefan Weil --disable-system disable all system emulation targets 133608fb77edSStefan Weil --enable-user enable supported user emulation targets 133708fb77edSStefan Weil --disable-user disable all user emulation targets 133808fb77edSStefan Weil --enable-linux-user enable all linux usermode emulation targets 133908fb77edSStefan Weil --disable-linux-user disable all linux usermode emulation targets 134008fb77edSStefan Weil --enable-bsd-user enable all BSD usermode emulation targets 134108fb77edSStefan Weil --disable-bsd-user disable all BSD usermode emulation targets 134208fb77edSStefan Weil --enable-guest-base enable GUEST_BASE support for usermode 134308fb77edSStefan Weil emulation targets 134408fb77edSStefan Weil --disable-guest-base disable GUEST_BASE support 134508fb77edSStefan Weil --enable-pie build Position Independent Executables 134608fb77edSStefan Weil --disable-pie do not build Position Independent Executables 134708fb77edSStefan Weil --fmod-lib path to FMOD library 134808fb77edSStefan Weil --fmod-inc path to FMOD includes 134908fb77edSStefan Weil --oss-lib path to OSS library 135008fb77edSStefan Weil --cpu=CPU Build for host CPU [$cpu] 135108fb77edSStefan Weil --disable-uuid disable uuid support 135208fb77edSStefan Weil --enable-uuid enable uuid support 135308fb77edSStefan Weil --disable-vde disable support for vde network 135408fb77edSStefan Weil --enable-vde enable support for vde network 135508fb77edSStefan Weil --disable-netmap disable support for netmap network 135608fb77edSStefan Weil --enable-netmap enable support for netmap network 135708fb77edSStefan Weil --disable-linux-aio disable Linux AIO support 135808fb77edSStefan Weil --enable-linux-aio enable Linux AIO support 135908fb77edSStefan Weil --disable-cap-ng disable libcap-ng support 136008fb77edSStefan Weil --enable-cap-ng enable libcap-ng support 13612d5361f2SGonglei --disable-attr disable attr and xattr support 136208fb77edSStefan Weil --enable-attr enable attr and xattr support 136308fb77edSStefan Weil --disable-blobs disable installing provided firmware blobs 136408fb77edSStefan Weil --enable-docs enable documentation build 136508fb77edSStefan Weil --disable-docs disable documentation build 136608fb77edSStefan Weil --disable-vhost-net disable vhost-net acceleration support 136708fb77edSStefan Weil --enable-vhost-net enable vhost-net acceleration support 13685b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 136908fb77edSStefan Weil Available backends: $($python $source_path/scripts/tracetool.py --list-backends) 137008fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 137108fb77edSStefan Weil Default:trace-<pid> 137208fb77edSStefan Weil --disable-spice disable spice 137308fb77edSStefan Weil --enable-spice enable spice 137408fb77edSStefan Weil --enable-rbd enable building the rados block device (rbd) 137508fb77edSStefan Weil --disable-libiscsi disable iscsi support 137608fb77edSStefan Weil --enable-libiscsi enable iscsi support 13776542aa9cSPeter Lieven --disable-libnfs disable nfs support 13786542aa9cSPeter Lieven --enable-libnfs enable nfs support 137908fb77edSStefan Weil --disable-smartcard-nss disable smartcard nss support 138008fb77edSStefan Weil --enable-smartcard-nss enable smartcard nss support 138108fb77edSStefan Weil --disable-libusb disable libusb (for usb passthrough) 138208fb77edSStefan Weil --enable-libusb enable libusb (for usb passthrough) 138308fb77edSStefan Weil --disable-usb-redir disable usb network redirection support 138408fb77edSStefan Weil --enable-usb-redir enable usb network redirection support 1385607dacd0Sqiaonuohan --enable-lzo enable the support of lzo compression library 1386607dacd0Sqiaonuohan --enable-snappy enable the support of snappy compression library 13876b383c08SPeter Wu --enable-bzip2 enable the support of bzip2 compression library (for 13886b383c08SPeter Wu reading bzip2-compressed dmg images) 138908fb77edSStefan Weil --disable-guest-agent disable building of the QEMU Guest Agent 139008fb77edSStefan Weil --enable-guest-agent enable building of the QEMU Guest Agent 139108fb77edSStefan Weil --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 139208fb77edSStefan Weil --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 139308fb77edSStefan Weil --disable-seccomp disable seccomp support 13942d5361f2SGonglei --enable-seccomp enable seccomp support 139508fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 139608fb77edSStefan Weil gthread, ucontext, sigaltstack, windows 139708fb77edSStefan Weil --disable-coroutine-pool disable coroutine freelist (worse performance) 139808fb77edSStefan Weil --enable-coroutine-pool enable coroutine freelist (better performance) 139908fb77edSStefan Weil --enable-glusterfs enable GlusterFS backend 140008fb77edSStefan Weil --disable-glusterfs disable GlusterFS backend 1401c9a12e75SChrysostomos Nanakos --enable-archipelago enable Archipelago backend 1402c9a12e75SChrysostomos Nanakos --disable-archipelago disable Archipelago backend 140308fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 140408fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 1405e91c793cSCole Robinson --disable-tpm disable TPM support 140608fb77edSStefan Weil --enable-tpm enable TPM support 140708fb77edSStefan Weil --disable-libssh2 disable ssh block device support 140808fb77edSStefan Weil --enable-libssh2 enable ssh block device support 14092d5361f2SGonglei --disable-vhdx disable support for the Microsoft VHDX image format 141008fb77edSStefan Weil --enable-vhdx enable support for the Microsoft VHDX image format 141195c6bff3SBenoît Canet --disable-quorum disable quorum block filter support 141295c6bff3SBenoît Canet --enable-quorum enable quorum block filter support 1413a99d57bbSWanlong Gao --disable-numa disable libnuma support 1414a99d57bbSWanlong Gao --enable-numa enable libnuma support 14152847b469SFam Zheng --disable-tcmalloc disable tcmalloc support 14162847b469SFam Zheng --enable-tcmalloc enable tcmalloc support 141708fb77edSStefan Weil 141808fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1419af5db58eSpbrookEOF 14202d2ad6d0SFam Zhengexit 0 1421af5db58eSpbrookfi 1422af5db58eSpbrook 1423359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 1424359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 1425359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 1426359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 1427359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1428359bc95dSPeter Maydell ARCH=tci 1429359bc95dSPeter Maydell else 143076ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1431359bc95dSPeter Maydell fi 1432359bc95dSPeter Maydellfi 1433359bc95dSPeter Maydell 14349c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 14359c83ffd8SPeter Maydell# by default. Only enable by default for git builds 14369c83ffd8SPeter Maydellz_version=`cut -f3 -d. $source_path/VERSION` 14379c83ffd8SPeter Maydell 14389c83ffd8SPeter Maydellif test -z "$werror" ; then 14399c83ffd8SPeter Maydell if test -d "$source_path/.git" -a \ 14409c83ffd8SPeter Maydell "$linux" = "yes" ; then 14419c83ffd8SPeter Maydell werror="yes" 14429c83ffd8SPeter Maydell else 14439c83ffd8SPeter Maydell werror="no" 14449c83ffd8SPeter Maydell fi 14459c83ffd8SPeter Maydellfi 14469c83ffd8SPeter Maydell 14478d05095cSPaolo Bonzini# check that the C compiler works. 14488d05095cSPaolo Bonzinicat > $TMPC <<EOF 144975cafad7SStefan Weilint main(void) { return 0; } 14508d05095cSPaolo BonziniEOF 14518d05095cSPaolo Bonzini 14528d05095cSPaolo Bonziniif compile_object ; then 14538d05095cSPaolo Bonzini : C compiler works ok 14548d05095cSPaolo Bonzinielse 145576ad07a4SPeter Maydell error_exit "\"$cc\" either does not exist or does not work" 14568d05095cSPaolo Bonzinifi 14578d05095cSPaolo Bonzini 145898b21dcdSPeter Maydell# Check that the C++ compiler exists and works with the C compiler 145998b21dcdSPeter Maydellif has $cxx; then 146098b21dcdSPeter Maydell cat > $TMPC <<EOF 146198b21dcdSPeter Maydellint c_function(void); 146298b21dcdSPeter Maydellint main(void) { return c_function(); } 146398b21dcdSPeter MaydellEOF 146498b21dcdSPeter Maydell 146598b21dcdSPeter Maydell compile_object 146698b21dcdSPeter Maydell 14679c83ffd8SPeter Maydell cat > $TMPCXX <<EOF 146898b21dcdSPeter Maydellextern "C" { 146998b21dcdSPeter Maydell int c_function(void); 147098b21dcdSPeter Maydell} 147198b21dcdSPeter Maydellint c_function(void) { return 42; } 147298b21dcdSPeter MaydellEOF 147398b21dcdSPeter Maydell 14749c83ffd8SPeter Maydell update_cxxflags 14759c83ffd8SPeter Maydell 14769c83ffd8SPeter Maydell if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then 147798b21dcdSPeter Maydell # C++ compiler $cxx works ok with C compiler $cc 147898b21dcdSPeter Maydell : 147998b21dcdSPeter Maydell else 148098b21dcdSPeter Maydell echo "C++ compiler $cxx does not work with C compiler $cc" 148198b21dcdSPeter Maydell echo "Disabling C++ specific optional code" 148298b21dcdSPeter Maydell cxx= 148398b21dcdSPeter Maydell fi 148498b21dcdSPeter Maydellelse 148598b21dcdSPeter Maydell echo "No C++ compiler available; disabling C++ specific optional code" 148698b21dcdSPeter Maydell cxx= 148798b21dcdSPeter Maydellfi 148898b21dcdSPeter Maydell 14898d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 14908d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 14918d05095cSPaolo Bonzinigcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 149237746c5eSMarc-André Lureaugcc_flags="-Wendif-labels $gcc_flags" 1493c1556a81SPeter Maydellgcc_flags="-Wno-initializer-overrides $gcc_flags" 149471429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags" 14956ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would 14966ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due 14976ca026cbSPeter Maydell# to -Werror this would just silently disable some features, 14986ca026cbSPeter Maydell# so it's too error prone. 14998d05095cSPaolo Bonzinicat > $TMPC << EOF 15008d05095cSPaolo Bonziniint main(void) { return 0; } 15018d05095cSPaolo BonziniEOF 15028d05095cSPaolo Bonzinifor flag in $gcc_flags; do 1503a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 1504a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 1505a1d29d6cSPeter Maydell # warning options). 1506a1d29d6cSPeter Maydell optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')" 1507a1d29d6cSPeter Maydell if compile_prog "-Werror $optflag" "" ; then 15088d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 15098d05095cSPaolo Bonzini fi 15108d05095cSPaolo Bonzinidone 15118d05095cSPaolo Bonzini 151263678e17SSteven Noonanif test "$stack_protector" != "no"; then 151363678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 15143b463a3fSMiroslav Rezanina sp_on=0 151563678e17SSteven Noonan for flag in $gcc_flags; do 1516590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 1517590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 1518590e5dd9SPeter Maydell if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 1519590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 152063678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 152163678e17SSteven Noonan LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag" 15223b463a3fSMiroslav Rezanina sp_on=1 152363678e17SSteven Noonan break 152463678e17SSteven Noonan fi 152563678e17SSteven Noonan done 15263b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 15273b463a3fSMiroslav Rezanina if test $sp_on = 0; then 15283b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 15293b463a3fSMiroslav Rezanina fi 15303b463a3fSMiroslav Rezanina fi 153137746c5eSMarc-André Lureaufi 153237746c5eSMarc-André Lureau 1533cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1534cbdd1999SPaolo Bonzini# large functions that use global variables. The bug is in all releases of 1535cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1536cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1537cbdd1999SPaolo Bonzinicat > $TMPC << EOF 1538cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1539cbdd1999SPaolo Bonziniint main(void) { return 0; } 1540cbdd1999SPaolo Bonzini#else 1541cbdd1999SPaolo Bonzini#error No bug in this compiler. 1542cbdd1999SPaolo Bonzini#endif 1543cbdd1999SPaolo BonziniEOF 1544cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then 1545cbdd1999SPaolo Bonzini TRANSLATE_OPT_CFLAGS=-fno-gcse 1546cbdd1999SPaolo Bonzinifi 1547cbdd1999SPaolo Bonzini 154840d6444eSAvi Kivityif test "$static" = "yes" ; then 1549aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 1550aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 1551aa0d1f44SPaolo Bonzini fi 155240d6444eSAvi Kivity if test "$pie" = "yes" ; then 155376ad07a4SPeter Maydell error_exit "static and pie are mutually incompatible" 155440d6444eSAvi Kivity else 155540d6444eSAvi Kivity pie="no" 155640d6444eSAvi Kivity fi 155740d6444eSAvi Kivityfi 155840d6444eSAvi Kivity 1559*768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 1560*768b7855SEmilio G. Cota cat > $TMPC << EOF 1561*768b7855SEmilio G. Cotastatic __thread int tls_var; 1562*768b7855SEmilio G. Cotaint main(void) { return tls_var; } 1563*768b7855SEmilio G. CotaEOF 1564*768b7855SEmilio G. Cota 1565*768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 1566*768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 1567*768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 1568*768b7855SEmilio G. Cotafi 1569*768b7855SEmilio G. Cota 157040d6444eSAvi Kivityif test "$pie" = ""; then 157140d6444eSAvi Kivity case "$cpu-$targetos" in 1572c72b26ecSRichard Henderson i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 157340d6444eSAvi Kivity ;; 157440d6444eSAvi Kivity *) 157540d6444eSAvi Kivity pie="no" 157640d6444eSAvi Kivity ;; 157740d6444eSAvi Kivity esac 157840d6444eSAvi Kivityfi 157940d6444eSAvi Kivity 158040d6444eSAvi Kivityif test "$pie" != "no" ; then 158140d6444eSAvi Kivity cat > $TMPC << EOF 158221d4a791SAvi Kivity 158321d4a791SAvi Kivity#ifdef __linux__ 158421d4a791SAvi Kivity# define THREAD __thread 158521d4a791SAvi Kivity#else 158621d4a791SAvi Kivity# define THREAD 158721d4a791SAvi Kivity#endif 158821d4a791SAvi Kivity 158921d4a791SAvi Kivitystatic THREAD int tls_var; 159021d4a791SAvi Kivity 159121d4a791SAvi Kivityint main(void) { return tls_var; } 159221d4a791SAvi Kivity 159340d6444eSAvi KivityEOF 159440d6444eSAvi Kivity if compile_prog "-fPIE -DPIE" "-pie"; then 159540d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 159640d6444eSAvi Kivity LDFLAGS="-pie $LDFLAGS" 159740d6444eSAvi Kivity pie="yes" 159840d6444eSAvi Kivity if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 159940d6444eSAvi Kivity LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 160040d6444eSAvi Kivity fi 160140d6444eSAvi Kivity else 160240d6444eSAvi Kivity if test "$pie" = "yes"; then 160376ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 160440d6444eSAvi Kivity else 160540d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 160640d6444eSAvi Kivity pie="no" 160740d6444eSAvi Kivity fi 160840d6444eSAvi Kivity fi 160946eef33bSBrad 161046eef33bSBrad if compile_prog "-fno-pie" "-nopie"; then 161146eef33bSBrad CFLAGS_NOPIE="-fno-pie" 161246eef33bSBrad LDFLAGS_NOPIE="-nopie" 161346eef33bSBrad fi 161440d6444eSAvi Kivityfi 161540d6444eSAvi Kivity 161666518bf6SDon Slutz# check for broken gcc and libtool in RHEL5 161766518bf6SDon Slutzif test -n "$libtool" -a "$pie" != "no" ; then 161866518bf6SDon Slutz cat > $TMPC <<EOF 161966518bf6SDon Slutz 162066518bf6SDon Slutzvoid *f(unsigned char *buf, int len); 162166518bf6SDon Slutzvoid *g(unsigned char *buf, int len); 162266518bf6SDon Slutz 162366518bf6SDon Slutzvoid * 162466518bf6SDon Slutzf(unsigned char *buf, int len) 162566518bf6SDon Slutz{ 162666518bf6SDon Slutz return (void*)0L; 162766518bf6SDon Slutz} 162866518bf6SDon Slutz 162966518bf6SDon Slutzvoid * 163066518bf6SDon Slutzg(unsigned char *buf, int len) 163166518bf6SDon Slutz{ 163266518bf6SDon Slutz return f(buf, len); 163366518bf6SDon Slutz} 163466518bf6SDon Slutz 163566518bf6SDon SlutzEOF 163666518bf6SDon Slutz if ! libtool_prog; then 163766518bf6SDon Slutz echo "Disabling libtool due to broken toolchain support" 163866518bf6SDon Slutz libtool= 163966518bf6SDon Slutz fi 164066518bf6SDon Slutzfi 164166518bf6SDon Slutz 164209dada40SPaolo Bonzini########################################## 164309dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 164409dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 164509dada40SPaolo Bonzini# specification is necessary 164609dada40SPaolo Bonzini 164709dada40SPaolo Bonziniif test "$cpu" = "i386"; then 164809dada40SPaolo Bonzini cat > $TMPC << EOF 164909dada40SPaolo Bonzinistatic int sfaa(int *ptr) 165009dada40SPaolo Bonzini{ 165109dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 165209dada40SPaolo Bonzini} 165309dada40SPaolo Bonzini 165409dada40SPaolo Bonziniint main(void) 165509dada40SPaolo Bonzini{ 165609dada40SPaolo Bonzini int val = 42; 16571405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 165809dada40SPaolo Bonzini sfaa(&val); 165909dada40SPaolo Bonzini return val; 166009dada40SPaolo Bonzini} 166109dada40SPaolo BonziniEOF 166209dada40SPaolo Bonzini if ! compile_prog "" "" ; then 166309dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 166409dada40SPaolo Bonzini fi 166509dada40SPaolo Bonzinifi 166609dada40SPaolo Bonzini 166709dada40SPaolo Bonzini######################################### 1668ec530c81Sbellard# Solaris specific configure tool chain decisions 166909dada40SPaolo Bonzini 1670ec530c81Sbellardif test "$solaris" = "yes" ; then 16716792aa11SLoïc Minier if has $install; then 16726792aa11SLoïc Minier : 16736792aa11SLoïc Minier else 167476ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 167576ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 167676ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1677ec530c81Sbellard fi 16786792aa11SLoïc Minier if test "`path_of $install`" = "/usr/sbin/install" ; then 167976ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 168076ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 168176ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1682ec530c81Sbellard fi 16836792aa11SLoïc Minier if has ar; then 16846792aa11SLoïc Minier : 16856792aa11SLoïc Minier else 1686ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 168776ad07a4SPeter Maydell error_exit "No path includes ar" \ 168876ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 1689ec530c81Sbellard fi 169076ad07a4SPeter Maydell error_exit "No path includes ar" 1691ec530c81Sbellard fi 1692ec530c81Sbellardfi 1693ec530c81Sbellard 1694afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 1695121afa9eSAnthony Liguori target_list="$default_target_list" 1696121afa9eSAnthony Liguorielse 1697121afa9eSAnthony Liguori target_list=`echo "$target_list" | sed -e 's/,/ /g'` 16985327cf48Sbellardfi 169925b48338SPeter Maydell 170025b48338SPeter Maydell# Check that we recognised the target name; this allows a more 170125b48338SPeter Maydell# friendly error message than if we let it fall through. 170225b48338SPeter Maydellfor target in $target_list; do 170325b48338SPeter Maydell case " $default_target_list " in 170425b48338SPeter Maydell *" $target "*) 170525b48338SPeter Maydell ;; 170625b48338SPeter Maydell *) 170725b48338SPeter Maydell error_exit "Unknown target name '$target'" 170825b48338SPeter Maydell ;; 170925b48338SPeter Maydell esac 171025b48338SPeter Maydelldone 171125b48338SPeter Maydell 1712f55fe278SPaolo Bonzini# see if system emulation was really requested 1713f55fe278SPaolo Bonzinicase " $target_list " in 1714f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 1715f55fe278SPaolo Bonzini ;; 1716f55fe278SPaolo Bonzini *) softmmu=no 1717f55fe278SPaolo Bonzini ;; 1718f55fe278SPaolo Bonziniesac 17195327cf48Sbellard 1720249247c9SJuan Quintelafeature_not_found() { 1721249247c9SJuan Quintela feature=$1 172221684af0SStewart Smith remedy=$2 1723249247c9SJuan Quintela 172476ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 172521684af0SStewart Smith "configure was not able to find it." \ 172621684af0SStewart Smith "$remedy" 1727249247c9SJuan Quintela} 1728249247c9SJuan Quintela 17297d13299dSbellard# --- 17307d13299dSbellard# big/little endian test 17317d13299dSbellardcat > $TMPC << EOF 173261cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 173361cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 173461cc919fSMike Frysingerextern int foo(short *, short *); 173561cc919fSMike Frysingerint main(int argc, char *argv[]) { 173661cc919fSMike Frysinger return foo(big_endian, little_endian); 17377d13299dSbellard} 17387d13299dSbellardEOF 17397d13299dSbellard 174061cc919fSMike Frysingerif compile_object ; then 174161cc919fSMike Frysinger if grep -q BiGeNdIaN $TMPO ; then 174261cc919fSMike Frysinger bigendian="yes" 174361cc919fSMike Frysinger elif grep -q LiTtLeEnDiAn $TMPO ; then 174461cc919fSMike Frysinger bigendian="no" 17457d13299dSbellard else 17467d13299dSbellard echo big/little test failed 17477d13299dSbellard fi 17487d13299dSbellardelse 174961cc919fSMike Frysinger echo big/little test failed 17507d13299dSbellardfi 17517d13299dSbellard 1752b0a47e79SJuan Quintela########################################## 1753015a33bdSGonglei# L2TPV3 probe 1754015a33bdSGonglei 1755015a33bdSGongleicat > $TMPC <<EOF 1756015a33bdSGonglei#include <sys/socket.h> 1757bff6cb72SMichael Tokarev#include <linux/ip.h> 1758015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 1759015a33bdSGongleiEOF 1760015a33bdSGongleiif compile_prog "" "" ; then 1761015a33bdSGonglei l2tpv3=yes 1762015a33bdSGongleielse 1763015a33bdSGonglei l2tpv3=no 1764015a33bdSGongleifi 1765015a33bdSGonglei 1766015a33bdSGonglei########################################## 1767779ab5e3SStefan Weil# pkg-config probe 1768779ab5e3SStefan Weil 1769779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 177076ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 1771779ab5e3SStefan Weilfi 1772779ab5e3SStefan Weil 1773779ab5e3SStefan Weil########################################## 1774b0a47e79SJuan Quintela# NPTL probe 1775b0a47e79SJuan Quintela 177624cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 1777bd0c5661Spbrook cat > $TMPC <<EOF 1778bd0c5661Spbrook#include <sched.h> 177930813ceaSpbrook#include <linux/futex.h> 1780182eacc0SStefan Weilint main(void) { 1781bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1782bd0c5661Spbrook#error bork 1783bd0c5661Spbrook#endif 1784182eacc0SStefan Weil return 0; 1785bd0c5661Spbrook} 1786bd0c5661SpbrookEOF 178724cb36a6SPeter Maydell if ! compile_object ; then 178821684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 1789b0a47e79SJuan Quintela fi 1790bd0c5661Spbrookfi 1791bd0c5661Spbrook 179211d9f695Sbellard########################################## 1793ac62922eSbalrog# zlib check 1794ac62922eSbalrog 17951ece9905SAlon Levyif test "$zlib" != "no" ; then 1796ac62922eSbalrog cat > $TMPC << EOF 1797ac62922eSbalrog#include <zlib.h> 1798ac62922eSbalrogint main(void) { zlibVersion(); return 0; } 1799ac62922eSbalrogEOF 180052166aa0SJuan Quintela if compile_prog "" "-lz" ; then 1801ac62922eSbalrog : 1802ac62922eSbalrog else 180376ad07a4SPeter Maydell error_exit "zlib check failed" \ 180476ad07a4SPeter Maydell "Make sure to have the zlib libs and headers installed." 1805ac62922eSbalrog fi 18061ece9905SAlon Levyfi 1807eb0ecd5aSWill NewtonLIBS="$LIBS -lz" 1808ac62922eSbalrog 1809ac62922eSbalrog########################################## 1810607dacd0Sqiaonuohan# lzo check 1811607dacd0Sqiaonuohan 1812607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 1813607dacd0Sqiaonuohan cat > $TMPC << EOF 1814607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 1815607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 1816607dacd0SqiaonuohanEOF 1817607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 1818607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 1819b25c9dffSStefan Weil lzo="yes" 1820b25c9dffSStefan Weil else 1821b25c9dffSStefan Weil if test "$lzo" = "yes"; then 1822b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 1823b25c9dffSStefan Weil fi 1824b25c9dffSStefan Weil lzo="no" 1825b25c9dffSStefan Weil fi 1826607dacd0Sqiaonuohanfi 1827607dacd0Sqiaonuohan 1828607dacd0Sqiaonuohan########################################## 1829607dacd0Sqiaonuohan# snappy check 1830607dacd0Sqiaonuohan 1831607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 1832607dacd0Sqiaonuohan cat > $TMPC << EOF 1833607dacd0Sqiaonuohan#include <snappy-c.h> 1834607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 1835607dacd0SqiaonuohanEOF 1836607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 1837607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 1838b25c9dffSStefan Weil snappy="yes" 1839b25c9dffSStefan Weil else 1840b25c9dffSStefan Weil if test "$snappy" = "yes"; then 1841b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 1842b25c9dffSStefan Weil fi 1843b25c9dffSStefan Weil snappy="no" 1844b25c9dffSStefan Weil fi 1845607dacd0Sqiaonuohanfi 1846607dacd0Sqiaonuohan 1847607dacd0Sqiaonuohan########################################## 18486b383c08SPeter Wu# bzip2 check 18496b383c08SPeter Wu 18506b383c08SPeter Wuif test "$bzip2" != "no" ; then 18516b383c08SPeter Wu cat > $TMPC << EOF 18526b383c08SPeter Wu#include <bzlib.h> 18536b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 18546b383c08SPeter WuEOF 18556b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 18566b383c08SPeter Wu bzip2="yes" 18576b383c08SPeter Wu else 18586b383c08SPeter Wu if test "$bzip2" = "yes"; then 18596b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 18606b383c08SPeter Wu fi 18616b383c08SPeter Wu bzip2="no" 18626b383c08SPeter Wu fi 18636b383c08SPeter Wufi 18646b383c08SPeter Wu 18656b383c08SPeter Wu########################################## 1866f794573eSEduardo Otubo# libseccomp check 1867f794573eSEduardo Otubo 1868f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 1869ae6e8ef1SPeter Maydell if test "$cpu" = "i386" || test "$cpu" = "x86_64" && 1870ae6e8ef1SPeter Maydell $pkg_config --atleast-version=2.1.1 libseccomp; then 1871b4451996SMichael Tokarev libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`" 1872372e47e9SAndreas Färber QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`" 1873f794573eSEduardo Otubo seccomp="yes" 1874f794573eSEduardo Otubo else 1875f794573eSEduardo Otubo if test "$seccomp" = "yes"; then 1876896848f0SEduardo Otubo feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1" 1877896848f0SEduardo Otubo fi 1878e84d5956SYann E. MORIN seccomp="no" 1879f794573eSEduardo Otubo fi 1880f794573eSEduardo Otubofi 1881f794573eSEduardo Otubo########################################## 1882e37630caSaliguori# xen probe 1883e37630caSaliguori 1884fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 1885b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 1886d5b93ddfSAnthony PERARD 188750ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 188850ced5b3SStefan Weil # If no, we are done and there is no Xen support. 188950ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 189050ced5b3SStefan Weil 189150ced5b3SStefan Weil # Xen (any) 189250ced5b3SStefan Weil cat > $TMPC <<EOF 189350ced5b3SStefan Weil#include <xenctrl.h> 189450ced5b3SStefan Weilint main(void) { 189550ced5b3SStefan Weil return 0; 189650ced5b3SStefan Weil} 189750ced5b3SStefan WeilEOF 189850ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 189950ced5b3SStefan Weil # Xen not found 190050ced5b3SStefan Weil if test "$xen" = "yes" ; then 190121684af0SStewart Smith feature_not_found "xen" "Install xen devel" 190250ced5b3SStefan Weil fi 190350ced5b3SStefan Weil xen=no 190450ced5b3SStefan Weil 1905d5b93ddfSAnthony PERARD # Xen unstable 190669deef08SPeter Maydell elif 190769deef08SPeter Maydell cat > $TMPC <<EOF && 1908e37630caSaliguori#include <xenctrl.h> 1909e108a3c1SAnthony PERARD#include <xenstore.h> 1910d5b93ddfSAnthony PERARD#include <stdint.h> 1911d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 1912d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 1913d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 1914d5b93ddfSAnthony PERARD#endif 1915d5b93ddfSAnthony PERARDint main(void) { 1916d5b93ddfSAnthony PERARD xc_interface *xc; 1917d5b93ddfSAnthony PERARD xs_daemon_open(); 1918d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 1919d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1920d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 1921b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 19228688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 19233996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 19243996e85cSPaul Durrant return 0; 19253996e85cSPaul Durrant} 19263996e85cSPaul DurrantEOF 19273996e85cSPaul Durrant compile_prog "" "$xen_libs" 19283996e85cSPaul Durrant then 19293996e85cSPaul Durrant xen_ctrl_version=450 19303996e85cSPaul Durrant xen=yes 19313996e85cSPaul Durrant 19323996e85cSPaul Durrant elif 19333996e85cSPaul Durrant cat > $TMPC <<EOF && 19343996e85cSPaul Durrant#include <xenctrl.h> 19353996e85cSPaul Durrant#include <xenstore.h> 19363996e85cSPaul Durrant#include <stdint.h> 19373996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 19383996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 19393996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 19403996e85cSPaul Durrant#endif 19413996e85cSPaul Durrantint main(void) { 19423996e85cSPaul Durrant xc_interface *xc; 19433996e85cSPaul Durrant xs_daemon_open(); 19443996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 19453996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 19463996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 19473996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 19483996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 19498688e065SStefano Stabellini return 0; 19508688e065SStefano Stabellini} 19518688e065SStefano StabelliniEOF 19528688e065SStefano Stabellini compile_prog "" "$xen_libs" 195369deef08SPeter Maydell then 19548688e065SStefano Stabellini xen_ctrl_version=420 19558688e065SStefano Stabellini xen=yes 19568688e065SStefano Stabellini 195769deef08SPeter Maydell elif 195869deef08SPeter Maydell cat > $TMPC <<EOF && 19598688e065SStefano Stabellini#include <xenctrl.h> 19608688e065SStefano Stabellini#include <xs.h> 19618688e065SStefano Stabellini#include <stdint.h> 19628688e065SStefano Stabellini#include <xen/hvm/hvm_info_table.h> 19638688e065SStefano Stabellini#if !defined(HVM_MAX_VCPUS) 19648688e065SStefano Stabellini# error HVM_MAX_VCPUS not defined 19658688e065SStefano Stabellini#endif 19668688e065SStefano Stabelliniint main(void) { 19678688e065SStefano Stabellini xs_daemon_open(); 19689b4c0b56SPeter Maydell xc_interface_open(0, 0, 0); 19698688e065SStefano Stabellini xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 19708688e065SStefano Stabellini xc_gnttab_open(NULL, 0); 19718688e065SStefano Stabellini xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1972d5b93ddfSAnthony PERARD return 0; 1973d5b93ddfSAnthony PERARD} 1974e37630caSaliguoriEOF 197550ced5b3SStefan Weil compile_prog "" "$xen_libs" 197669deef08SPeter Maydell then 1977d5b93ddfSAnthony PERARD xen_ctrl_version=410 1978fc321b4bSJuan Quintela xen=yes 1979d5b93ddfSAnthony PERARD 1980d5b93ddfSAnthony PERARD # Xen 4.0.0 198169deef08SPeter Maydell elif 198269deef08SPeter Maydell cat > $TMPC <<EOF && 1983d5b93ddfSAnthony PERARD#include <xenctrl.h> 1984d5b93ddfSAnthony PERARD#include <xs.h> 1985d5b93ddfSAnthony PERARD#include <stdint.h> 1986d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 1987d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 1988d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 1989d5b93ddfSAnthony PERARD#endif 1990d5b93ddfSAnthony PERARDint main(void) { 1991b87de24eSAnthony PERARD struct xen_add_to_physmap xatp = { 1992b87de24eSAnthony PERARD .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1993b87de24eSAnthony PERARD }; 1994d5b93ddfSAnthony PERARD xs_daemon_open(); 1995d5b93ddfSAnthony PERARD xc_interface_open(); 1996d5b93ddfSAnthony PERARD xc_gnttab_open(); 1997d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1998b87de24eSAnthony PERARD xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1999d5b93ddfSAnthony PERARD return 0; 2000d5b93ddfSAnthony PERARD} 2001d5b93ddfSAnthony PERARDEOF 2002d5b93ddfSAnthony PERARD compile_prog "" "$xen_libs" 200369deef08SPeter Maydell then 2004d5b93ddfSAnthony PERARD xen_ctrl_version=400 2005d5b93ddfSAnthony PERARD xen=yes 2006d5b93ddfSAnthony PERARD 2007b87de24eSAnthony PERARD # Xen 3.4.0 200869deef08SPeter Maydell elif 200969deef08SPeter Maydell cat > $TMPC <<EOF && 2010b87de24eSAnthony PERARD#include <xenctrl.h> 2011b87de24eSAnthony PERARD#include <xs.h> 2012b87de24eSAnthony PERARDint main(void) { 2013b87de24eSAnthony PERARD struct xen_add_to_physmap xatp = { 2014b87de24eSAnthony PERARD .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 2015b87de24eSAnthony PERARD }; 2016b87de24eSAnthony PERARD xs_daemon_open(); 2017b87de24eSAnthony PERARD xc_interface_open(); 2018b87de24eSAnthony PERARD xc_gnttab_open(); 2019b87de24eSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2020b87de24eSAnthony PERARD xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 2021b87de24eSAnthony PERARD return 0; 2022b87de24eSAnthony PERARD} 2023b87de24eSAnthony PERARDEOF 2024b87de24eSAnthony PERARD compile_prog "" "$xen_libs" 202569deef08SPeter Maydell then 2026b87de24eSAnthony PERARD xen_ctrl_version=340 2027b87de24eSAnthony PERARD xen=yes 2028b87de24eSAnthony PERARD 2029b87de24eSAnthony PERARD # Xen 3.3.0 203069deef08SPeter Maydell elif 203169deef08SPeter Maydell cat > $TMPC <<EOF && 2032d5b93ddfSAnthony PERARD#include <xenctrl.h> 2033d5b93ddfSAnthony PERARD#include <xs.h> 2034d5b93ddfSAnthony PERARDint main(void) { 2035d5b93ddfSAnthony PERARD xs_daemon_open(); 2036d5b93ddfSAnthony PERARD xc_interface_open(); 2037d5b93ddfSAnthony PERARD xc_gnttab_open(); 2038d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2039d5b93ddfSAnthony PERARD return 0; 2040d5b93ddfSAnthony PERARD} 2041d5b93ddfSAnthony PERARDEOF 2042d5b93ddfSAnthony PERARD compile_prog "" "$xen_libs" 204369deef08SPeter Maydell then 2044d5b93ddfSAnthony PERARD xen_ctrl_version=330 2045d5b93ddfSAnthony PERARD xen=yes 2046d5b93ddfSAnthony PERARD 204750ced5b3SStefan Weil # Xen version unsupported 2048e37630caSaliguori else 2049fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 205021684af0SStewart Smith feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)" 2051fc321b4bSJuan Quintela fi 2052fc321b4bSJuan Quintela xen=no 2053e37630caSaliguori fi 2054d5b93ddfSAnthony PERARD 2055d5b93ddfSAnthony PERARD if test "$xen" = yes; then 2056d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 2057d5b93ddfSAnthony PERARD fi 2058e37630caSaliguorifi 2059e37630caSaliguori 2060eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 2061eb6fda0fSAnthony PERARD if test "$xen" = "yes" && test "$linux" = "yes" && 2062eb6fda0fSAnthony PERARD test "$xen_ctrl_version" -ge 340; then 2063eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 2064eb6fda0fSAnthony PERARD else 2065eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 2066eb6fda0fSAnthony PERARD if test "$xen_ctrl_version" -lt 340; then 206776ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 206876ad07a4SPeter Maydell "This feature does not work with Xen 3.3" 2069eb6fda0fSAnthony PERARD fi 207076ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 207176ad07a4SPeter Maydell " but this feature requires /sys from Linux" 2072eb6fda0fSAnthony PERARD fi 2073eb6fda0fSAnthony PERARD xen_pci_passthrough=no 2074eb6fda0fSAnthony PERARD fi 2075eb6fda0fSAnthony PERARDfi 2076eb6fda0fSAnthony PERARD 2077e37630caSaliguori########################################## 207844dc0ca3SAlon Levy# libtool probe 207944dc0ca3SAlon Levy 20803f534581SBradif ! has $libtool; then 208144dc0ca3SAlon Levy libtool= 208244dc0ca3SAlon Levyfi 208344dc0ca3SAlon Levy 20848e515b12SPeter Maydell# MacOSX ships with a libtool which isn't the GNU one; weed this 20858e515b12SPeter Maydell# out by checking whether libtool supports the --version switch 20868e515b12SPeter Maydellif test -n "$libtool"; then 20878e515b12SPeter Maydell if ! "$libtool" --version >/dev/null 2>&1; then 20888e515b12SPeter Maydell libtool= 20898e515b12SPeter Maydell fi 20908e515b12SPeter Maydellfi 20918e515b12SPeter Maydell 209244dc0ca3SAlon Levy########################################## 2093dfffc653SJuan Quintela# Sparse probe 2094dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 20950dba6195SLoïc Minier if has cgcc; then 2096dfffc653SJuan Quintela sparse=yes 2097dfffc653SJuan Quintela else 2098dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 209921684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 2100dfffc653SJuan Quintela fi 2101dfffc653SJuan Quintela sparse=no 2102dfffc653SJuan Quintela fi 2103dfffc653SJuan Quintelafi 2104dfffc653SJuan Quintela 2105dfffc653SJuan Quintela########################################## 2106f676c67eSJeremy White# X11 probe 2107f676c67eSJeremy Whitex11_cflags= 2108f676c67eSJeremy Whitex11_libs=-lX11 2109f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 2110f676c67eSJeremy White x11_cflags=`$pkg_config --cflags x11` 2111f676c67eSJeremy White x11_libs=`$pkg_config --libs x11` 2112f676c67eSJeremy Whitefi 2113f676c67eSJeremy White 2114f676c67eSJeremy White########################################## 2115a4ccabcfSAnthony Liguori# GTK probe 2116a4ccabcfSAnthony Liguori 21179e04c683SStefan Weilif test "$gtkabi" = ""; then 21189e04c683SStefan Weil # The GTK ABI was not specified explicitly, so try whether 2.0 is available. 21199e04c683SStefan Weil # Use 3.0 as a fallback if that is available. 21209e04c683SStefan Weil if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 21219e04c683SStefan Weil gtkabi=2.0 21229e04c683SStefan Weil elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 21239e04c683SStefan Weil gtkabi=3.0 21249e04c683SStefan Weil else 21259e04c683SStefan Weil gtkabi=2.0 21269e04c683SStefan Weil fi 21279e04c683SStefan Weilfi 21289e04c683SStefan Weil 2129a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then 2130528de90aSDaniel P. Berrange gtkpackage="gtk+-$gtkabi" 21310a337ed0SGerd Hoffmann gtkx11package="gtk+-x11-$gtkabi" 2132528de90aSDaniel P. Berrange if test "$gtkabi" = "3.0" ; then 2133528de90aSDaniel P. Berrange gtkversion="3.0.0" 2134bbbf9bfbSStefan Weil else 2135bbbf9bfbSStefan Weil gtkversion="2.18.0" 2136bbbf9bfbSStefan Weil fi 2137bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 2138bbbf9bfbSStefan Weil gtk_cflags=`$pkg_config --cflags $gtkpackage` 2139bbbf9bfbSStefan Weil gtk_libs=`$pkg_config --libs $gtkpackage` 21400a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 2141f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 2142f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 21430a337ed0SGerd Hoffmann fi 2144bbbf9bfbSStefan Weil libs_softmmu="$gtk_libs $libs_softmmu" 2145bbbf9bfbSStefan Weil gtk="yes" 2146bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 21479e04c683SStefan Weil feature_not_found "gtk" "Install gtk2 or gtk3 devel" 2148bbbf9bfbSStefan Weil else 2149bbbf9bfbSStefan Weil gtk="no" 2150bbbf9bfbSStefan Weil fi 2151bbbf9bfbSStefan Weilfi 2152bbbf9bfbSStefan Weil 2153bbbf9bfbSStefan Weil########################################## 2154bbbf9bfbSStefan Weil# VTE probe 2155bbbf9bfbSStefan Weil 2156bbbf9bfbSStefan Weilif test "$vte" != "no"; then 2157bbbf9bfbSStefan Weil if test "$gtkabi" = "3.0"; then 2158528de90aSDaniel P. Berrange vtepackage="vte-2.90" 2159528de90aSDaniel P. Berrange vteversion="0.32.0" 2160528de90aSDaniel P. Berrange else 2161528de90aSDaniel P. Berrange vtepackage="vte" 2162528de90aSDaniel P. Berrange vteversion="0.24.0" 2163528de90aSDaniel P. Berrange fi 2164bbbf9bfbSStefan Weil if $pkg_config --exists "$vtepackage >= $vteversion"; then 2165ca871ec8SStefan Weil vte_cflags=`$pkg_config --cflags $vtepackage` 2166ca871ec8SStefan Weil vte_libs=`$pkg_config --libs $vtepackage` 2167bbbf9bfbSStefan Weil libs_softmmu="$vte_libs $libs_softmmu" 2168bbbf9bfbSStefan Weil vte="yes" 2169bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 21709e04c683SStefan Weil if test "$gtkabi" = "3.0"; then 21719e04c683SStefan Weil feature_not_found "vte" "Install libvte-2.90 devel" 21729e04c683SStefan Weil else 21739e04c683SStefan Weil feature_not_found "vte" "Install libvte devel" 21749e04c683SStefan Weil fi 2175bbbf9bfbSStefan Weil else 2176bbbf9bfbSStefan Weil vte="no" 2177a4ccabcfSAnthony Liguori fi 2178a4ccabcfSAnthony Liguorifi 2179a4ccabcfSAnthony Liguori 2180a4ccabcfSAnthony Liguori########################################## 218111d9f695Sbellard# SDL probe 218211d9f695Sbellard 21833ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config). Try 21843ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 218547c03744SDave Airlie 218647c03744SDave Airlieif test $sdlabi = "2.0"; then 218747c03744SDave Airlie sdl_config=$sdl2_config 218847c03744SDave Airlie sdlname=sdl2 218947c03744SDave Airlie sdlconfigname=sdl2_config 219047c03744SDave Airlieelse 219147c03744SDave Airlie sdlname=sdl 219247c03744SDave Airlie sdlconfigname=sdl_config 21933ec87ffeSPaolo Bonzinifi 21943ec87ffeSPaolo Bonzini 219547c03744SDave Airlieif test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then 219647c03744SDave Airlie sdl_config=$sdlconfigname 219747c03744SDave Airliefi 219847c03744SDave Airlie 219947c03744SDave Airlieif $pkg_config $sdlname --exists; then 220047c03744SDave Airlie sdlconfig="$pkg_config $sdlname" 2201fec0e3e8SStefan Weil _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 22023ec87ffeSPaolo Bonzinielif has ${sdl_config}; then 22033ec87ffeSPaolo Bonzini sdlconfig="$sdl_config" 22049316f803SPaolo Bonzini _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 2205a0dfd8a4SLoïc Minierelse 2206a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 220721684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2208a0dfd8a4SLoïc Minier fi 2209a0dfd8a4SLoïc Minier sdl=no 22109316f803SPaolo Bonzinifi 221129e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 22123ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 22133ec87ffeSPaolo Bonzinifi 221411d9f695Sbellard 22159316f803SPaolo Bonzinisdl_too_old=no 2216c4198157SJuan Quintelaif test "$sdl" != "no" ; then 221711d9f695Sbellard cat > $TMPC << EOF 221811d9f695Sbellard#include <SDL.h> 221911d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 222011d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 222111d9f695SbellardEOF 22229316f803SPaolo Bonzini sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 222374f42e18STeLeMan if test "$static" = "yes" ; then 222474f42e18STeLeMan sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 222574f42e18STeLeMan else 22269316f803SPaolo Bonzini sdl_libs=`$sdlconfig --libs 2> /dev/null` 222774f42e18STeLeMan fi 222852166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 222911d9f695Sbellard if test "$_sdlversion" -lt 121 ; then 223011d9f695Sbellard sdl_too_old=yes 223111d9f695Sbellard else 2232fd677642Sths if test "$cocoa" = "no" ; then 223311d9f695Sbellard sdl=yes 223411d9f695Sbellard fi 2235fd677642Sths fi 22367c1f25b4Sbellard 223767c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 22381ac88f28SJuan Quintela if test "$sdl" = "yes" -a "$static" = "yes" ; then 223967c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 2240f8aa6c7bSStefan Weil sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 2241f8aa6c7bSStefan Weil sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 224211d9f695Sbellard fi 224352166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 22441ac88f28SJuan Quintela : 22451ac88f28SJuan Quintela else 22461ac88f28SJuan Quintela sdl=no 22477c1f25b4Sbellard fi 22487c1f25b4Sbellard fi # static link 2249c4198157SJuan Quintela else # sdl not found 2250c4198157SJuan Quintela if test "$sdl" = "yes" ; then 225121684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2252c4198157SJuan Quintela fi 2253c4198157SJuan Quintela sdl=no 22547c1f25b4Sbellard fi # sdl compile test 2255fd677642Sthsfi 225611d9f695Sbellard 22575368a422Saliguoriif test "$sdl" = "yes" ; then 22585368a422Saliguori cat > $TMPC <<EOF 22595368a422Saliguori#include <SDL.h> 22605368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 22615368a422Saliguori#include <X11/XKBlib.h> 22625368a422Saliguori#else 22635368a422Saliguori#error No x11 support 22645368a422Saliguori#endif 22655368a422Saliguoriint main(void) { return 0; } 22665368a422SaliguoriEOF 2267f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 2268f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 2269f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 22705368a422Saliguori fi 22710705667eSJuan Quintela libs_softmmu="$sdl_libs $libs_softmmu" 22725368a422Saliguorifi 22735368a422Saliguori 22748f28f3fbSths########################################## 22752da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 22762da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 22772da776dbSMichael R. Hines cat > $TMPC <<EOF 22782da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 22792da776dbSMichael R. Hinesint main(void) { return 0; } 22802da776dbSMichael R. HinesEOF 22812da776dbSMichael R. Hines rdma_libs="-lrdmacm -libverbs" 22822da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 22832da776dbSMichael R. Hines rdma="yes" 22842da776dbSMichael R. Hines libs_softmmu="$libs_softmmu $rdma_libs" 22852da776dbSMichael R. Hines else 22862da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 22872da776dbSMichael R. Hines error_exit \ 22882da776dbSMichael R. Hines " OpenFabrics librdmacm/libibverbs not present." \ 22892da776dbSMichael R. Hines " Your options:" \ 22902da776dbSMichael R. Hines " (1) Fast: Install infiniband packages from your distro." \ 22912da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 22922da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 22932da776dbSMichael R. Hines fi 22942da776dbSMichael R. Hines rdma="no" 22952da776dbSMichael R. Hines fi 22962da776dbSMichael R. Hinesfi 22972da776dbSMichael R. Hines 22982da776dbSMichael R. Hines########################################## 22997536ee4bSTim Hardeck# VNC TLS/WS detection 23007536ee4bSTim Hardeckif test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then 2301ae6b5e5aSaliguori cat > $TMPC <<EOF 2302ae6b5e5aSaliguori#include <gnutls/gnutls.h> 2303ae6b5e5aSaliguoriint main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 2304ae6b5e5aSaliguoriEOF 2305a8bd70adSPaolo Bonzini vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 2306a8bd70adSPaolo Bonzini vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 230752166aa0SJuan Quintela if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 23087536ee4bSTim Hardeck if test "$vnc_tls" != "no" ; then 23091be10ad2SJuan Quintela vnc_tls=yes 23107536ee4bSTim Hardeck fi 23117536ee4bSTim Hardeck if test "$vnc_ws" != "no" ; then 23127536ee4bSTim Hardeck vnc_ws=yes 23137536ee4bSTim Hardeck fi 2314a5e32cc9SJuan Quintela libs_softmmu="$vnc_tls_libs $libs_softmmu" 2315ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags" 2316ae6b5e5aSaliguori else 23171be10ad2SJuan Quintela if test "$vnc_tls" = "yes" ; then 231821684af0SStewart Smith feature_not_found "vnc-tls" "Install gnutls devel" 23191be10ad2SJuan Quintela fi 23207536ee4bSTim Hardeck if test "$vnc_ws" = "yes" ; then 232121684af0SStewart Smith feature_not_found "vnc-ws" "Install gnutls devel" 23227536ee4bSTim Hardeck fi 23231be10ad2SJuan Quintela vnc_tls=no 23247536ee4bSTim Hardeck vnc_ws=no 23258d5d2d4cSths fi 23268d5d2d4cSthsfi 23278d5d2d4cSths 23288d5d2d4cSths########################################## 232995c6bff3SBenoît Canet# Quorum probe (check for gnutls) 233095c6bff3SBenoît Canetif test "$quorum" != "no" ; then 233195c6bff3SBenoît Canetcat > $TMPC <<EOF 233295c6bff3SBenoît Canet#include <gnutls/gnutls.h> 233395c6bff3SBenoît Canet#include <gnutls/crypto.h> 233495c6bff3SBenoît Canetint main(void) {char data[4096], digest[32]; 233595c6bff3SBenoît Canetgnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest); 233695c6bff3SBenoît Canetreturn 0; 233795c6bff3SBenoît Canet} 233895c6bff3SBenoît CanetEOF 233995c6bff3SBenoît Canetquorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 234095c6bff3SBenoît Canetquorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 234195c6bff3SBenoît Canetif compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then 234295c6bff3SBenoît Canet qcow_tls=yes 234395c6bff3SBenoît Canet libs_softmmu="$quorum_tls_libs $libs_softmmu" 234495c6bff3SBenoît Canet libs_tools="$quorum_tls_libs $libs_softmmu" 234595c6bff3SBenoît Canet QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags" 2346b25c9dffSStefan Weil quorum="yes" 234795c6bff3SBenoît Canetelse 2348b25c9dffSStefan Weil if test "$quorum" = "yes"; then 2349b25c9dffSStefan Weil feature_not_found "gnutls" "gnutls > 2.10.0 required to compile Quorum" 2350b25c9dffSStefan Weil fi 2351b25c9dffSStefan Weil quorum="no" 235295c6bff3SBenoît Canetfi 235395c6bff3SBenoît Canetfi 235495c6bff3SBenoît Canet 235595c6bff3SBenoît Canet########################################## 23562f9606b3Saliguori# VNC SASL detection 2357821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 23582f9606b3Saliguori cat > $TMPC <<EOF 23592f9606b3Saliguori#include <sasl/sasl.h> 23602f9606b3Saliguori#include <stdio.h> 23612f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 23622f9606b3SaliguoriEOF 23632f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 23642f9606b3Saliguori vnc_sasl_cflags="" 23652f9606b3Saliguori vnc_sasl_libs="-lsasl2" 236652166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2367ea784e3bSJuan Quintela vnc_sasl=yes 2368fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2369ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 23702f9606b3Saliguori else 2371ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 237221684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2373ea784e3bSJuan Quintela fi 2374ea784e3bSJuan Quintela vnc_sasl=no 23752f9606b3Saliguori fi 23762f9606b3Saliguorifi 23772f9606b3Saliguori 23782f9606b3Saliguori########################################## 23792f6f5c7aSCorentin Chary# VNC JPEG detection 2380821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 23812f6f5c7aSCorentin Charycat > $TMPC <<EOF 23822f6f5c7aSCorentin Chary#include <stdio.h> 23832f6f5c7aSCorentin Chary#include <jpeglib.h> 23842f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 23852f6f5c7aSCorentin CharyEOF 23862f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 23872f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 23882f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 23892f6f5c7aSCorentin Chary vnc_jpeg=yes 23902f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2391ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 23922f6f5c7aSCorentin Chary else 23932f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 239421684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 23952f6f5c7aSCorentin Chary fi 23962f6f5c7aSCorentin Chary vnc_jpeg=no 23972f6f5c7aSCorentin Chary fi 23982f6f5c7aSCorentin Charyfi 23992f6f5c7aSCorentin Chary 24002f6f5c7aSCorentin Chary########################################## 2401efe556adSCorentin Chary# VNC PNG detection 2402821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2403efe556adSCorentin Charycat > $TMPC <<EOF 2404efe556adSCorentin Chary//#include <stdio.h> 2405efe556adSCorentin Chary#include <png.h> 2406832ce9c2SScott Wood#include <stddef.h> 2407efe556adSCorentin Charyint main(void) { 2408efe556adSCorentin Chary png_structp png_ptr; 2409efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 24107edc3fedSPeter Maydell return png_ptr != 0; 2411efe556adSCorentin Chary} 2412efe556adSCorentin CharyEOF 241365d5d3f9SStefan Weil if $pkg_config libpng --exists; then 2414ca871ec8SStefan Weil vnc_png_cflags=`$pkg_config libpng --cflags` 2415ca871ec8SStefan Weil vnc_png_libs=`$pkg_config libpng --libs` 24169af8025eSBrad else 2417efe556adSCorentin Chary vnc_png_cflags="" 2418efe556adSCorentin Chary vnc_png_libs="-lpng" 24199af8025eSBrad fi 2420efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2421efe556adSCorentin Chary vnc_png=yes 2422efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 24239af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2424efe556adSCorentin Chary else 2425efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 242621684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 2427efe556adSCorentin Chary fi 2428efe556adSCorentin Chary vnc_png=no 2429efe556adSCorentin Chary fi 2430efe556adSCorentin Charyfi 2431efe556adSCorentin Chary 2432efe556adSCorentin Chary########################################## 243376655d6dSaliguori# fnmatch() probe, used for ACL routines 243476655d6dSaliguorifnmatch="no" 243576655d6dSaliguoricat > $TMPC << EOF 243676655d6dSaliguori#include <fnmatch.h> 243776655d6dSaliguoriint main(void) 243876655d6dSaliguori{ 243976655d6dSaliguori fnmatch("foo", "foo", 0); 244076655d6dSaliguori return 0; 244176655d6dSaliguori} 244276655d6dSaliguoriEOF 244352166aa0SJuan Quintelaif compile_prog "" "" ; then 244476655d6dSaliguori fnmatch="yes" 244576655d6dSaliguorifi 244676655d6dSaliguori 244776655d6dSaliguori########################################## 2448ee682d27SStefan Weil# uuid_generate() probe, used for vdi block driver 24492d16c8e9SPeter Maydell# Note that on some systems (notably MacOSX) no extra library 24502d16c8e9SPeter Maydell# need be linked to get the uuid functions. 2451ee682d27SStefan Weilif test "$uuid" != "no" ; then 2452ee682d27SStefan Weil uuid_libs="-luuid" 2453ee682d27SStefan Weil cat > $TMPC << EOF 2454ee682d27SStefan Weil#include <uuid/uuid.h> 2455ee682d27SStefan Weilint main(void) 2456ee682d27SStefan Weil{ 2457ee682d27SStefan Weil uuid_t my_uuid; 2458ee682d27SStefan Weil uuid_generate(my_uuid); 2459ee682d27SStefan Weil return 0; 2460ee682d27SStefan Weil} 2461ee682d27SStefan WeilEOF 24622d16c8e9SPeter Maydell if compile_prog "" "" ; then 24632d16c8e9SPeter Maydell uuid="yes" 24642d16c8e9SPeter Maydell elif compile_prog "" "$uuid_libs" ; then 2465ee682d27SStefan Weil uuid="yes" 2466ee682d27SStefan Weil libs_softmmu="$uuid_libs $libs_softmmu" 2467ee682d27SStefan Weil libs_tools="$uuid_libs $libs_tools" 2468ee682d27SStefan Weil else 2469ee682d27SStefan Weil if test "$uuid" = "yes" ; then 247021684af0SStewart Smith feature_not_found "uuid" "Install libuuid devel" 2471ee682d27SStefan Weil fi 2472ee682d27SStefan Weil uuid=no 2473ee682d27SStefan Weil fi 2474ee682d27SStefan Weilfi 2475ee682d27SStefan Weil 24764f18b782SJeff Codyif test "$vhdx" = "yes" ; then 24774f18b782SJeff Cody if test "$uuid" = "no" ; then 24784f18b782SJeff Cody error_exit "uuid required for VHDX support" 24794f18b782SJeff Cody fi 24804f18b782SJeff Codyelif test "$vhdx" != "no" ; then 24814f18b782SJeff Cody if test "$uuid" = "yes" ; then 24824f18b782SJeff Cody vhdx=yes 24834f18b782SJeff Cody else 24844f18b782SJeff Cody vhdx=no 24854f18b782SJeff Cody fi 24864f18b782SJeff Codyfi 24874f18b782SJeff Cody 2488ee682d27SStefan Weil########################################## 2489dce512deSChristoph Hellwig# xfsctl() probe, used for raw-posix 2490dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 2491dce512deSChristoph Hellwig cat > $TMPC << EOF 2492ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 2493dce512deSChristoph Hellwig#include <xfs/xfs.h> 2494dce512deSChristoph Hellwigint main(void) 2495dce512deSChristoph Hellwig{ 2496dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 2497dce512deSChristoph Hellwig return 0; 2498dce512deSChristoph Hellwig} 2499dce512deSChristoph HellwigEOF 2500dce512deSChristoph Hellwig if compile_prog "" "" ; then 2501dce512deSChristoph Hellwig xfs="yes" 2502dce512deSChristoph Hellwig else 2503dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 250421684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 2505dce512deSChristoph Hellwig fi 2506dce512deSChristoph Hellwig xfs=no 2507dce512deSChristoph Hellwig fi 2508dce512deSChristoph Hellwigfi 2509dce512deSChristoph Hellwig 2510dce512deSChristoph Hellwig########################################## 25118a16d273Sths# vde libraries probe 2512dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 25134baae0acSJuan Quintela vde_libs="-lvdeplug" 25148a16d273Sths cat > $TMPC << EOF 25158a16d273Sths#include <libvdeplug.h> 25164a7f0e06Spbrookint main(void) 25174a7f0e06Spbrook{ 25184a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 2519fea08e08SPeter Maydell char s[] = ""; 2520fea08e08SPeter Maydell vde_open(s, s, &a); 25214a7f0e06Spbrook return 0; 25224a7f0e06Spbrook} 25238a16d273SthsEOF 252452166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 25254baae0acSJuan Quintela vde=yes 25268e02e54cSJuan Quintela libs_softmmu="$vde_libs $libs_softmmu" 25278e02e54cSJuan Quintela libs_tools="$vde_libs $libs_tools" 2528dfb278bdSJuan Quintela else 2529dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 253021684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 2531dfb278bdSJuan Quintela fi 2532dfb278bdSJuan Quintela vde=no 25338a16d273Sths fi 25348a16d273Sthsfi 25358a16d273Sths 25368a16d273Sths########################################## 25370a985b37SVincenzo Maffione# netmap support probe 25380a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 25390a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 25400a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 25410a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 25420a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 254358952137SVincenzo Maffioneif test "$netmap" != "no" ; then 254458952137SVincenzo Maffione cat > $TMPC << EOF 254558952137SVincenzo Maffione#include <inttypes.h> 254658952137SVincenzo Maffione#include <net/if.h> 254758952137SVincenzo Maffione#include <net/netmap.h> 254858952137SVincenzo Maffione#include <net/netmap_user.h> 25490a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 25500a985b37SVincenzo Maffione#error 25510a985b37SVincenzo Maffione#endif 255258952137SVincenzo Maffioneint main(void) { return 0; } 255358952137SVincenzo MaffioneEOF 255458952137SVincenzo Maffione if compile_prog "" "" ; then 255558952137SVincenzo Maffione netmap=yes 255658952137SVincenzo Maffione else 255758952137SVincenzo Maffione if test "$netmap" = "yes" ; then 255858952137SVincenzo Maffione feature_not_found "netmap" 255958952137SVincenzo Maffione fi 256058952137SVincenzo Maffione netmap=no 256158952137SVincenzo Maffione fi 256258952137SVincenzo Maffionefi 256358952137SVincenzo Maffione 256458952137SVincenzo Maffione########################################## 256547e98658SCorey Bryant# libcap-ng library probe 256647e98658SCorey Bryantif test "$cap_ng" != "no" ; then 256747e98658SCorey Bryant cap_libs="-lcap-ng" 256847e98658SCorey Bryant cat > $TMPC << EOF 256947e98658SCorey Bryant#include <cap-ng.h> 257047e98658SCorey Bryantint main(void) 257147e98658SCorey Bryant{ 257247e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 257347e98658SCorey Bryant return 0; 257447e98658SCorey Bryant} 257547e98658SCorey BryantEOF 257647e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 257747e98658SCorey Bryant cap_ng=yes 257847e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 257947e98658SCorey Bryant else 258047e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 258121684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 258247e98658SCorey Bryant fi 258347e98658SCorey Bryant cap_ng=no 258447e98658SCorey Bryant fi 258547e98658SCorey Bryantfi 258647e98658SCorey Bryant 258747e98658SCorey Bryant########################################## 2588c2de5c91Smalc# Sound support libraries probe 25898f28f3fbSths 2590c2de5c91Smalcaudio_drv_probe() 2591c2de5c91Smalc{ 2592c2de5c91Smalc drv=$1 2593c2de5c91Smalc hdr=$2 2594c2de5c91Smalc lib=$3 2595c2de5c91Smalc exp=$4 2596c2de5c91Smalc cfl=$5 25978f28f3fbSths cat > $TMPC << EOF 2598c2de5c91Smalc#include <$hdr> 2599c2de5c91Smalcint main(void) { $exp } 26008f28f3fbSthsEOF 260152166aa0SJuan Quintela if compile_prog "$cfl" "$lib" ; then 26028f28f3fbSths : 26038f28f3fbSths else 260476ad07a4SPeter Maydell error_exit "$drv check failed" \ 260576ad07a4SPeter Maydell "Make sure to have the $drv libs and headers installed." 26068f28f3fbSths fi 2607c2de5c91Smalc} 2608c2de5c91Smalc 26092fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 2610c2de5c91Smalcfor drv in $audio_drv_list; do 2611c2de5c91Smalc case $drv in 2612c2de5c91Smalc alsa) 2613c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 2614e35bcb0cSStefan Weil "return snd_pcm_close((snd_pcm_t *)0);" 2615a4bf6780SJuan Quintela libs_softmmu="-lasound $libs_softmmu" 2616c2de5c91Smalc ;; 2617c2de5c91Smalc 2618c2de5c91Smalc fmod) 2619c2de5c91Smalc if test -z $fmod_lib || test -z $fmod_inc; then 262076ad07a4SPeter Maydell error_exit "You must specify path to FMOD library and headers" \ 262176ad07a4SPeter Maydell "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" 26228f28f3fbSths fi 2623c2de5c91Smalc audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc" 2624a4bf6780SJuan Quintela libs_softmmu="$fmod_lib $libs_softmmu" 2625c2de5c91Smalc ;; 2626c2de5c91Smalc 2627c2de5c91Smalc esd) 2628c2de5c91Smalc audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' 2629a4bf6780SJuan Quintela libs_softmmu="-lesd $libs_softmmu" 263067f86e8eSJuan Quintela audio_pt_int="yes" 2631c2de5c91Smalc ;; 2632b8e59f18Smalc 2633b8e59f18Smalc pa) 2634a394aed2SMarc-André Lureau audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ 2635a394aed2SMarc-André Lureau "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" 2636a394aed2SMarc-André Lureau libs_softmmu="-lpulse $libs_softmmu" 263767f86e8eSJuan Quintela audio_pt_int="yes" 2638b8e59f18Smalc ;; 2639b8e59f18Smalc 2640997e690aSJuan Quintela coreaudio) 2641997e690aSJuan Quintela libs_softmmu="-framework CoreAudio $libs_softmmu" 2642997e690aSJuan Quintela ;; 2643997e690aSJuan Quintela 2644a4bf6780SJuan Quintela dsound) 2645a4bf6780SJuan Quintela libs_softmmu="-lole32 -ldxguid $libs_softmmu" 2646d5631638Smalc audio_win_int="yes" 2647a4bf6780SJuan Quintela ;; 2648a4bf6780SJuan Quintela 2649a4bf6780SJuan Quintela oss) 2650a4bf6780SJuan Quintela libs_softmmu="$oss_lib $libs_softmmu" 2651a4bf6780SJuan Quintela ;; 2652a4bf6780SJuan Quintela 2653a4bf6780SJuan Quintela sdl|wav) 26542f6a1ab0Sblueswir1 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 26552f6a1ab0Sblueswir1 ;; 26562f6a1ab0Sblueswir1 2657d5631638Smalc winwave) 2658d5631638Smalc libs_softmmu="-lwinmm $libs_softmmu" 2659d5631638Smalc audio_win_int="yes" 2660d5631638Smalc ;; 2661d5631638Smalc 2662e4c63a6aSmalc *) 26631c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 266476ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 266576ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 2666e4c63a6aSmalc } 2667e4c63a6aSmalc ;; 2668c2de5c91Smalc esac 2669c2de5c91Smalcdone 26708f28f3fbSths 26714d3b6f6eSbalrog########################################## 26722e4d9fb1Saurel32# BrlAPI probe 26732e4d9fb1Saurel32 26744ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 2675eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 26762e4d9fb1Saurel32 cat > $TMPC << EOF 26772e4d9fb1Saurel32#include <brlapi.h> 2678832ce9c2SScott Wood#include <stddef.h> 26792e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 26802e4d9fb1Saurel32EOF 268152166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 26822e4d9fb1Saurel32 brlapi=yes 2683264606b3SJuan Quintela libs_softmmu="$brlapi_libs $libs_softmmu" 26844ffcedb6SJuan Quintela else 26854ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 268621684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 26874ffcedb6SJuan Quintela fi 26884ffcedb6SJuan Quintela brlapi=no 2689eb82284fSJuan Quintela fi 2690eb82284fSJuan Quintelafi 26912e4d9fb1Saurel32 26922e4d9fb1Saurel32########################################## 26934d3b6f6eSbalrog# curses probe 2694a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 2695e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 2696e095e2f3SStefan Weil curses_list="-lpdcurses" 2697e095e2f3SStefan Weil else 2698cfeda5f4SEd Maste curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses" 2699e095e2f3SStefan Weil fi 2700c584a6d0SJuan Quintela curses_found=no 27014d3b6f6eSbalrog cat > $TMPC << EOF 27024d3b6f6eSbalrog#include <curses.h> 2703ef9a2524SStefan Weilint main(void) { 2704ef9a2524SStefan Weil const char *s = curses_version(); 2705ef9a2524SStefan Weil resize_term(0, 0); 2706ef9a2524SStefan Weil return s != 0; 2707ef9a2524SStefan Weil} 27084d3b6f6eSbalrogEOF 2709ecbe251fSVadim Evard IFS=: 27104f78ef9aSJuan Quintela for curses_lib in $curses_list; do 2711ecbe251fSVadim Evard unset IFS 27124f78ef9aSJuan Quintela if compile_prog "" "$curses_lib" ; then 2713c584a6d0SJuan Quintela curses_found=yes 27144f78ef9aSJuan Quintela libs_softmmu="$curses_lib $libs_softmmu" 27154f78ef9aSJuan Quintela break 27164d3b6f6eSbalrog fi 27174f78ef9aSJuan Quintela done 2718ecbe251fSVadim Evard unset IFS 2719c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 2720c584a6d0SJuan Quintela curses=yes 2721c584a6d0SJuan Quintela else 2722c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 272321684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 2724c584a6d0SJuan Quintela fi 2725c584a6d0SJuan Quintela curses=no 2726c584a6d0SJuan Quintela fi 27274f78ef9aSJuan Quintelafi 27284d3b6f6eSbalrog 2729414f0dabSblueswir1########################################## 2730769ce76dSAlexander Graf# curl probe 2731a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 273265d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 2733a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 27344e2b0658SPaolo Bonzini else 27354e2b0658SPaolo Bonzini curlconfig=curl-config 27364e2b0658SPaolo Bonzini fi 2737769ce76dSAlexander Graf cat > $TMPC << EOF 2738769ce76dSAlexander Graf#include <curl/curl.h> 27390b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2740769ce76dSAlexander GrafEOF 27414e2b0658SPaolo Bonzini curl_cflags=`$curlconfig --cflags 2>/dev/null` 27424e2b0658SPaolo Bonzini curl_libs=`$curlconfig --libs 2>/dev/null` 2743b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 2744769ce76dSAlexander Graf curl=yes 2745788c8196SJuan Quintela else 2746788c8196SJuan Quintela if test "$curl" = "yes" ; then 274721684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 2748788c8196SJuan Quintela fi 2749788c8196SJuan Quintela curl=no 2750769ce76dSAlexander Graf fi 2751769ce76dSAlexander Graffi # test "$curl" 2752769ce76dSAlexander Graf 2753769ce76dSAlexander Graf########################################## 2754fb599c9aSbalrog# bluez support probe 2755a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then 2756e820e3f4Sbalrog cat > $TMPC << EOF 2757e820e3f4Sbalrog#include <bluetooth/bluetooth.h> 2758e820e3f4Sbalrogint main(void) { return bt_error(0); } 2759e820e3f4SbalrogEOF 2760a8bd70adSPaolo Bonzini bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 2761a8bd70adSPaolo Bonzini bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 276252166aa0SJuan Quintela if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2763a20a6f46SJuan Quintela bluez=yes 2764e482d56aSJuan Quintela libs_softmmu="$bluez_libs $libs_softmmu" 2765e820e3f4Sbalrog else 2766a20a6f46SJuan Quintela if test "$bluez" = "yes" ; then 276721684af0SStewart Smith feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 2768a20a6f46SJuan Quintela fi 2769e820e3f4Sbalrog bluez="no" 2770e820e3f4Sbalrog fi 2771fb599c9aSbalrogfi 2772fb599c9aSbalrog 2773fb599c9aSbalrog########################################## 2774e18df141SAnthony Liguori# glib support probe 2775a52d28afSPaolo Bonzini 2776a52d28afSPaolo Bonziniif test "$mingw32" = yes; then 2777a52d28afSPaolo Bonzini # g_poll is required in order to integrate with the glib main loop. 2778a52d28afSPaolo Bonzini glib_req_ver=2.20 2779a52d28afSPaolo Bonzinielse 2780a52d28afSPaolo Bonzini glib_req_ver=2.12 2781a52d28afSPaolo Bonzinifi 2782aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 2783aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 2784aa0d1f44SPaolo Bonzini glib_modules="$glib_modules gmodule-2.0" 2785aa0d1f44SPaolo Bonzinifi 2786e26110cfSFam Zheng 2787aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 2788e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 2789e26110cfSFam Zheng glib_cflags=`$pkg_config --cflags $i` 2790e26110cfSFam Zheng glib_libs=`$pkg_config --libs $i` 2791ba1183daSFam Zheng CFLAGS="$glib_cflags $CFLAGS" 279214015304SAnthony Liguori LIBS="$glib_libs $LIBS" 2793957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 2794e18df141SAnthony Liguori else 2795e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 2796e26110cfSFam Zheng fi 2797e26110cfSFam Zhengdone 2798e26110cfSFam Zheng 27999d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests. 28009d41401bSMichael S. Tsirkinglib_subprocess=yes 28019d41401bSMichael S. Tsirkinif ! $pkg_config --atleast-version=2.38 glib-2.0; then 28029d41401bSMichael S. Tsirkin glib_subprocess=no 28039d41401bSMichael S. Tsirkinfi 28049d41401bSMichael S. Tsirkin 2805e26110cfSFam Zheng########################################## 2806e26110cfSFam Zheng# SHA command probe for modules 2807e26110cfSFam Zhengif test "$modules" = yes; then 2808e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 2809e26110cfSFam Zheng for c in $shacmd_probe; do 28108ccefb91SFam Zheng if has $c; then 2811e26110cfSFam Zheng shacmd="$c" 2812e26110cfSFam Zheng break 2813e26110cfSFam Zheng fi 2814e26110cfSFam Zheng done 2815e26110cfSFam Zheng if test "$shacmd" = ""; then 2816e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 2817e26110cfSFam Zheng fi 2818e18df141SAnthony Liguorifi 2819e18df141SAnthony Liguori 2820e18df141SAnthony Liguori########################################## 2821e2134eb9SGerd Hoffmann# pixman support probe 2822e2134eb9SGerd Hoffmann 2823e2134eb9SGerd Hoffmannif test "$pixman" = ""; then 282474880fe2SRobert Schiele if test "$want_tools" = "no" -a "$softmmu" = "no"; then 282574880fe2SRobert Schiele pixman="none" 2826236f282cSHu Tao elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 2827e2134eb9SGerd Hoffmann pixman="system" 2828e2134eb9SGerd Hoffmann else 2829e2134eb9SGerd Hoffmann pixman="internal" 2830e2134eb9SGerd Hoffmann fi 2831e2134eb9SGerd Hoffmannfi 283274880fe2SRobert Schieleif test "$pixman" = "none"; then 283374880fe2SRobert Schiele if test "$want_tools" != "no" -o "$softmmu" != "no"; then 283476ad07a4SPeter Maydell error_exit "pixman disabled but system emulation or tools build" \ 283576ad07a4SPeter Maydell "enabled. You can turn off pixman only if you also" \ 283676ad07a4SPeter Maydell "disable all system emulation targets and the tools" \ 283776ad07a4SPeter Maydell "build with '--disable-tools --disable-system'." 283874880fe2SRobert Schiele fi 283974880fe2SRobert Schiele pixman_cflags= 284074880fe2SRobert Schiele pixman_libs= 284174880fe2SRobert Schieleelif test "$pixman" = "system"; then 2842236f282cSHu Tao # pixman version has been checked above 2843ca871ec8SStefan Weil pixman_cflags=`$pkg_config --cflags pixman-1` 2844ca871ec8SStefan Weil pixman_libs=`$pkg_config --libs pixman-1` 2845e2134eb9SGerd Hoffmannelse 2846e2134eb9SGerd Hoffmann if test ! -d ${source_path}/pixman/pixman; then 2847236f282cSHu Tao error_exit "pixman >= 0.21.8 not present. Your options:" \ 284876ad07a4SPeter Maydell " (1) Preferred: Install the pixman devel package (any recent" \ 284976ad07a4SPeter Maydell " distro should have packages as Xorg needs pixman too)." \ 285076ad07a4SPeter Maydell " (2) Fetch the pixman submodule, using:" \ 285176ad07a4SPeter Maydell " git submodule update --init pixman" 2852e2134eb9SGerd Hoffmann fi 28535ca9388aSGerd Hoffmann mkdir -p pixman/pixman 28545ca9388aSGerd Hoffmann pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" 28555ca9388aSGerd Hoffmann pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" 2856e2134eb9SGerd Hoffmannfi 2857e2134eb9SGerd Hoffmann 2858e2134eb9SGerd Hoffmann########################################## 285917bff52bSM. Mohan Kumar# libcap probe 286017bff52bSM. Mohan Kumar 286117bff52bSM. Mohan Kumarif test "$cap" != "no" ; then 286217bff52bSM. Mohan Kumar cat > $TMPC <<EOF 286317bff52bSM. Mohan Kumar#include <stdio.h> 286417bff52bSM. Mohan Kumar#include <sys/capability.h> 2865cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 286617bff52bSM. Mohan KumarEOF 286717bff52bSM. Mohan Kumar if compile_prog "" "-lcap" ; then 286817bff52bSM. Mohan Kumar cap=yes 286917bff52bSM. Mohan Kumar else 287017bff52bSM. Mohan Kumar cap=no 287117bff52bSM. Mohan Kumar fi 287217bff52bSM. Mohan Kumarfi 287317bff52bSM. Mohan Kumar 287417bff52bSM. Mohan Kumar########################################## 2875e5d355d1Saliguori# pthread probe 28764b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 28773c529d93Saliguori 2878e5d355d1Saliguoripthread=no 2879414f0dabSblueswir1cat > $TMPC << EOF 28803c529d93Saliguori#include <pthread.h> 28817a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 28827a42bbe4SStefan Weilint main(void) { 28837a42bbe4SStefan Weil pthread_t thread; 28847a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 28857a42bbe4SStefan Weil return 0; 28867a42bbe4SStefan Weil} 2887414f0dabSblueswir1EOF 2888bd00d539SAndreas Färberif compile_prog "" "" ; then 2889bd00d539SAndreas Färber pthread=yes 2890bd00d539SAndreas Färberelse 2891de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 289252166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 2893e5d355d1Saliguori pthread=yes 2894e3c56761SPeter Portante found=no 2895e3c56761SPeter Portante for lib_entry in $LIBS; do 2896e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 2897e3c56761SPeter Portante found=yes 2898e3c56761SPeter Portante break 2899e3c56761SPeter Portante fi 2900e3c56761SPeter Portante done 2901e3c56761SPeter Portante if test "$found" = "no"; then 29025572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 2903e3c56761SPeter Portante fi 2904de65fe0fSSebastian Herbszt break 2905414f0dabSblueswir1 fi 2906de65fe0fSSebastian Herbszt done 2907bd00d539SAndreas Färberfi 2908414f0dabSblueswir1 29094617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then 291076ad07a4SPeter Maydell error_exit "pthread check failed" \ 291176ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 2912e5d355d1Saliguorifi 2913e5d355d1Saliguori 29145c312079SDr. David Alan Gilbert# check for pthread_setname_np 29155c312079SDr. David Alan Gilbertpthread_setname_np=no 29165c312079SDr. David Alan Gilbertcat > $TMPC << EOF 29175c312079SDr. David Alan Gilbert#include <pthread.h> 29185c312079SDr. David Alan Gilbert 29195c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 29205c312079SDr. David Alan Gilbertint main(void) 29215c312079SDr. David Alan Gilbert{ 29225c312079SDr. David Alan Gilbert pthread_t thread; 29235c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 29245c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 29255c312079SDr. David Alan Gilbert return 0; 29265c312079SDr. David Alan Gilbert} 29275c312079SDr. David Alan GilbertEOF 29285c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 29295c312079SDr. David Alan Gilbert pthread_setname_np=yes 29305c312079SDr. David Alan Gilbertfi 29315c312079SDr. David Alan Gilbert 2932bf9298b9Saliguori########################################## 2933f27aaf4bSChristian Brunner# rbd probe 2934f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 2935f27aaf4bSChristian Brunner cat > $TMPC <<EOF 2936f27aaf4bSChristian Brunner#include <stdio.h> 2937ad32e9c0SJosh Durgin#include <rbd/librbd.h> 2938f27aaf4bSChristian Brunnerint main(void) { 2939ad32e9c0SJosh Durgin rados_t cluster; 2940ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 2941f27aaf4bSChristian Brunner return 0; 2942f27aaf4bSChristian Brunner} 2943f27aaf4bSChristian BrunnerEOF 2944ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 2945f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 2946f27aaf4bSChristian Brunner rbd=yes 2947f27aaf4bSChristian Brunner else 2948f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 294921684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 2950f27aaf4bSChristian Brunner fi 2951f27aaf4bSChristian Brunner rbd=no 2952f27aaf4bSChristian Brunner fi 2953f27aaf4bSChristian Brunnerfi 2954f27aaf4bSChristian Brunner 2955f27aaf4bSChristian Brunner########################################## 29560a12ec87SRichard W.M. Jones# libssh2 probe 29574fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8 29580a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then 295965d5d3f9SStefan Weil if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 29600a12ec87SRichard W.M. Jones libssh2_cflags=`$pkg_config libssh2 --cflags` 29610a12ec87SRichard W.M. Jones libssh2_libs=`$pkg_config libssh2 --libs` 29620a12ec87SRichard W.M. Jones libssh2=yes 29630a12ec87SRichard W.M. Jones else 29640a12ec87SRichard W.M. Jones if test "$libssh2" = "yes" ; then 29654fc16838SRichard W.M. Jones error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 29660a12ec87SRichard W.M. Jones fi 29670a12ec87SRichard W.M. Jones libssh2=no 29680a12ec87SRichard W.M. Jones fi 29690a12ec87SRichard W.M. Jonesfi 29700a12ec87SRichard W.M. Jones 29710a12ec87SRichard W.M. Jones########################################## 29729a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe 29739a2d462eSRichard W.M. Jones 29749a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then 29759a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 29769a2d462eSRichard W.M. Jones#include <stdio.h> 29779a2d462eSRichard W.M. Jones#include <libssh2.h> 29789a2d462eSRichard W.M. Jones#include <libssh2_sftp.h> 29799a2d462eSRichard W.M. Jonesint main(void) { 29809a2d462eSRichard W.M. Jones LIBSSH2_SESSION *session; 29819a2d462eSRichard W.M. Jones LIBSSH2_SFTP *sftp; 29829a2d462eSRichard W.M. Jones LIBSSH2_SFTP_HANDLE *sftp_handle; 29839a2d462eSRichard W.M. Jones session = libssh2_session_init (); 29849a2d462eSRichard W.M. Jones sftp = libssh2_sftp_init (session); 29859a2d462eSRichard W.M. Jones sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 29869a2d462eSRichard W.M. Jones libssh2_sftp_fsync (sftp_handle); 29879a2d462eSRichard W.M. Jones return 0; 29889a2d462eSRichard W.M. Jones} 29899a2d462eSRichard W.M. JonesEOF 29909a2d462eSRichard W.M. Jones # libssh2_cflags/libssh2_libs defined in previous test. 29919a2d462eSRichard W.M. Jones if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 29929a2d462eSRichard W.M. Jones QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 29939a2d462eSRichard W.M. Jones fi 29949a2d462eSRichard W.M. Jonesfi 29959a2d462eSRichard W.M. Jones 29969a2d462eSRichard W.M. Jones########################################## 29975c6c3a6cSChristoph Hellwig# linux-aio probe 29985c6c3a6cSChristoph Hellwig 29995c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 30005c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 30015c6c3a6cSChristoph Hellwig#include <libaio.h> 30025c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 3003832ce9c2SScott Wood#include <stddef.h> 30045c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 30055c6c3a6cSChristoph HellwigEOF 30065c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 30075c6c3a6cSChristoph Hellwig linux_aio=yes 30085c6c3a6cSChristoph Hellwig else 30095c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 301021684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 30115c6c3a6cSChristoph Hellwig fi 30123cfcae3cSLuiz Capitulino linux_aio=no 30135c6c3a6cSChristoph Hellwig fi 30145c6c3a6cSChristoph Hellwigfi 30155c6c3a6cSChristoph Hellwig 30165c6c3a6cSChristoph Hellwig########################################## 30173b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux 30183b8acc11SPaolo Bonzini 30193b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 30203b8acc11SPaolo Bonzini tpm_passthrough=$tpm 30213b8acc11SPaolo Bonzinielse 30223b8acc11SPaolo Bonzini tpm_passthrough=no 30233b8acc11SPaolo Bonzinifi 30243b8acc11SPaolo Bonzini 30253b8acc11SPaolo Bonzini########################################## 3026758e8e38SVenkateswararao Jujjuri (JV)# attr probe 3027758e8e38SVenkateswararao Jujjuri (JV) 3028758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 3029758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 3030758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 3031758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 3032f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 3033f2338fb4SPavel Borzenkov#include <attr/xattr.h> 3034f2338fb4SPavel Borzenkov#else 30354f26f2b6SAvi Kivity#include <sys/xattr.h> 3036f2338fb4SPavel Borzenkov#endif 3037758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3038758e8e38SVenkateswararao Jujjuri (JV)EOF 30394f26f2b6SAvi Kivity if compile_prog "" "" ; then 30404f26f2b6SAvi Kivity attr=yes 30414f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 3042f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3043758e8e38SVenkateswararao Jujjuri (JV) attr=yes 3044758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 30454f26f2b6SAvi Kivity libattr=yes 3046758e8e38SVenkateswararao Jujjuri (JV) else 3047758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 304821684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 3049758e8e38SVenkateswararao Jujjuri (JV) fi 3050758e8e38SVenkateswararao Jujjuri (JV) attr=no 3051758e8e38SVenkateswararao Jujjuri (JV) fi 3052758e8e38SVenkateswararao Jujjuri (JV)fi 3053758e8e38SVenkateswararao Jujjuri (JV) 3054758e8e38SVenkateswararao Jujjuri (JV)########################################## 3055bf9298b9Saliguori# iovec probe 3056bf9298b9Saliguoricat > $TMPC <<EOF 3057db34f0b3Sblueswir1#include <sys/types.h> 3058bf9298b9Saliguori#include <sys/uio.h> 3059db34f0b3Sblueswir1#include <unistd.h> 3060f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 3061bf9298b9SaliguoriEOF 3062bf9298b9Saliguoriiovec=no 306352166aa0SJuan Quintelaif compile_prog "" "" ; then 3064bf9298b9Saliguori iovec=yes 3065bf9298b9Saliguorifi 3066bf9298b9Saliguori 3067f652e6afSaurel32########################################## 3068ceb42de8Saliguori# preadv probe 3069ceb42de8Saliguoricat > $TMPC <<EOF 3070ceb42de8Saliguori#include <sys/types.h> 3071ceb42de8Saliguori#include <sys/uio.h> 3072ceb42de8Saliguori#include <unistd.h> 3073c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 3074ceb42de8SaliguoriEOF 3075ceb42de8Saliguoripreadv=no 307652166aa0SJuan Quintelaif compile_prog "" "" ; then 3077ceb42de8Saliguori preadv=yes 3078ceb42de8Saliguorifi 3079ceb42de8Saliguori 3080ceb42de8Saliguori########################################## 3081f652e6afSaurel32# fdt probe 3082e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 3083e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 3084e169e1e1SPeter Maydellfdt_required=no 3085e169e1e1SPeter Maydellfor target in $target_list; do 3086e169e1e1SPeter Maydell case $target in 30876a49fa95SAlexander Graf aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu) 3088e169e1e1SPeter Maydell fdt_required=yes 3089e169e1e1SPeter Maydell ;; 3090e169e1e1SPeter Maydell esac 3091e169e1e1SPeter Maydelldone 3092e169e1e1SPeter Maydell 3093e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 3094e169e1e1SPeter Maydell if test "$fdt" = "no"; then 3095e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 3096e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 3097e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 3098e169e1e1SPeter Maydell fi 3099e169e1e1SPeter Maydell fdt=yes 3100e169e1e1SPeter Maydellfi 3101e169e1e1SPeter Maydell 31022df87df7SJuan Quintelaif test "$fdt" != "no" ; then 3103b41af4baSJuan Quintela fdt_libs="-lfdt" 310496ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 3105f652e6afSaurel32 cat > $TMPC << EOF 310696ce6545SPeter Crosthwaite#include <libfdt_env.h> 3107f652e6afSaurel32int main(void) { return 0; } 3108f652e6afSaurel32EOF 310952166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 3110a540f158SPeter Crosthwaite # system DTC is good - use it 3111f652e6afSaurel32 fdt=yes 3112a540f158SPeter Crosthwaite elif test -d ${source_path}/dtc/libfdt ; then 3113a540f158SPeter Crosthwaite # have submodule DTC - use it 3114a540f158SPeter Crosthwaite fdt=yes 3115a540f158SPeter Crosthwaite dtc_internal="yes" 3116a540f158SPeter Crosthwaite mkdir -p dtc 3117cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 3118a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3119a540f158SPeter Crosthwaite symlink "$source_path/dtc/scripts" "dtc/scripts" 31202df87df7SJuan Quintela fi 3121a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3122a540f158SPeter Crosthwaite fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3123a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 3124a540f158SPeter Crosthwaite # have neither and want - prompt for system/submodule install 31253f281822SStewart Smith error_exit "DTC (libfdt) not present. Your options:" \ 31263f281822SStewart Smith " (1) Preferred: Install the DTC (libfdt) devel package" \ 3127a540f158SPeter Crosthwaite " (2) Fetch the DTC submodule, using:" \ 3128a540f158SPeter Crosthwaite " git submodule update --init dtc" 3129a540f158SPeter Crosthwaite else 3130a540f158SPeter Crosthwaite # don't have and don't want 3131de3a354aSMichael Walle fdt_libs= 31322df87df7SJuan Quintela fdt=no 3133f652e6afSaurel32 fi 3134f652e6afSaurel32fi 3135f652e6afSaurel32 3136a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 3137a540f158SPeter Crosthwaite 313820ff075bSMichael Walle########################################## 3139da076ffeSGerd Hoffmann# opengl probe (for sdl2, milkymist-tmu2) 3140b1546f32SGerd Hoffmann 3141b1546f32SGerd Hoffmann# GLX probe, used by milkymist-tmu2 3142b1546f32SGerd Hoffmann# this is temporary, code will be switched to egl mid-term. 3143b1546f32SGerd Hoffmanncat > $TMPC << EOF 3144b1546f32SGerd Hoffmann#include <X11/Xlib.h> 3145b1546f32SGerd Hoffmann#include <GL/gl.h> 3146b1546f32SGerd Hoffmann#include <GL/glx.h> 3147b1546f32SGerd Hoffmannint main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; } 3148b1546f32SGerd HoffmannEOF 3149b1546f32SGerd Hoffmannif compile_prog "" "-lGL -lX11" ; then 3150b1546f32SGerd Hoffmann have_glx=yes 3151b1546f32SGerd Hoffmannelse 3152b1546f32SGerd Hoffmann have_glx=no 3153b1546f32SGerd Hoffmannfi 3154b1546f32SGerd Hoffmann 3155da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 3156b1546f32SGerd Hoffmann opengl_pkgs="gl" 3157b1546f32SGerd Hoffmann if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then 3158f676c67eSJeremy White opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3159f676c67eSJeremy White opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3160da076ffeSGerd Hoffmann opengl=yes 316120ff075bSMichael Walle else 3162da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 3163da076ffeSGerd Hoffmann feature_not_found "opengl" "Install GL devel (e.g. MESA)" 316420ff075bSMichael Walle fi 3165f676c67eSJeremy White opengl_cflags="" 3166da076ffeSGerd Hoffmann opengl_libs="" 3167da076ffeSGerd Hoffmann opengl=no 316820ff075bSMichael Walle fi 316920ff075bSMichael Wallefi 317020ff075bSMichael Walle 3171c9a12e75SChrysostomos Nanakos 3172c9a12e75SChrysostomos Nanakos########################################## 3173c9a12e75SChrysostomos Nanakos# archipelago probe 3174c9a12e75SChrysostomos Nanakosif test "$archipelago" != "no" ; then 3175c9a12e75SChrysostomos Nanakos cat > $TMPC <<EOF 3176c9a12e75SChrysostomos Nanakos#include <stdio.h> 3177c9a12e75SChrysostomos Nanakos#include <xseg/xseg.h> 3178c9a12e75SChrysostomos Nanakos#include <xseg/protocol.h> 3179c9a12e75SChrysostomos Nanakosint main(void) { 3180c9a12e75SChrysostomos Nanakos xseg_initialize(); 3181c9a12e75SChrysostomos Nanakos return 0; 3182c9a12e75SChrysostomos Nanakos} 3183c9a12e75SChrysostomos NanakosEOF 3184c9a12e75SChrysostomos Nanakos archipelago_libs=-lxseg 3185c9a12e75SChrysostomos Nanakos if compile_prog "" "$archipelago_libs"; then 3186c9a12e75SChrysostomos Nanakos archipelago="yes" 3187c9a12e75SChrysostomos Nanakos libs_tools="$archipelago_libs $libs_tools" 3188c9a12e75SChrysostomos Nanakos libs_softmmu="$archipelago_libs $libs_softmmu" 31896a460ed1SStefan Hajnoczi 31906a460ed1SStefan Hajnoczi echo "WARNING: Please check the licenses of QEMU and libxseg carefully." 31916a460ed1SStefan Hajnoczi echo "GPLv3 versions of libxseg may not be compatible with QEMU's" 31926a460ed1SStefan Hajnoczi echo "license and therefore prevent redistribution." 31936a460ed1SStefan Hajnoczi echo 31946a460ed1SStefan Hajnoczi echo "To disable Archipelago, use --disable-archipelago" 3195c9a12e75SChrysostomos Nanakos else 3196c9a12e75SChrysostomos Nanakos if test "$archipelago" = "yes" ; then 3197c9a12e75SChrysostomos Nanakos feature_not_found "Archipelago backend support" "Install libxseg devel" 3198c9a12e75SChrysostomos Nanakos fi 3199c9a12e75SChrysostomos Nanakos archipelago="no" 3200c9a12e75SChrysostomos Nanakos fi 3201c9a12e75SChrysostomos Nanakosfi 3202c9a12e75SChrysostomos Nanakos 3203c9a12e75SChrysostomos Nanakos 3204eb100396SBharata B Rao########################################## 3205eb100396SBharata B Rao# glusterfs probe 3206eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 320765d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 3208e01bee08SBharata B Rao glusterfs="yes" 3209ca871ec8SStefan Weil glusterfs_cflags=`$pkg_config --cflags glusterfs-api` 3210ca871ec8SStefan Weil glusterfs_libs=`$pkg_config --libs glusterfs-api` 321165d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 32120c14fb47SBharata B Rao glusterfs_discard="yes" 32130c14fb47SBharata B Rao fi 32147c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 32157c815372SBharata B Rao glusterfs_zerofill="yes" 32167c815372SBharata B Rao fi 3217eb100396SBharata B Rao else 3218eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 32198efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 32208efc9363SHu Tao "Install glusterfs-api devel >= 3" 3221eb100396SBharata B Rao fi 3222e01bee08SBharata B Rao glusterfs="no" 3223eb100396SBharata B Rao fi 3224eb100396SBharata B Raofi 3225eb100396SBharata B Rao 322639386ac7Saurel32# Check for inotify functions when we are building linux-user 32273b3f24adSaurel32# emulator. This is done because older glibc versions don't 32283b3f24adSaurel32# have syscall stubs for these implemented. In that case we 32293b3f24adSaurel32# don't provide them even if kernel supports them. 32303b3f24adSaurel32# 32313b3f24adSaurel32inotify=no 32323b3f24adSaurel32cat > $TMPC << EOF 32333b3f24adSaurel32#include <sys/inotify.h> 32343b3f24adSaurel32 32353b3f24adSaurel32int 32363b3f24adSaurel32main(void) 32373b3f24adSaurel32{ 32383b3f24adSaurel32 /* try to start inotify */ 32398690e420Saurel32 return inotify_init(); 32403b3f24adSaurel32} 32413b3f24adSaurel32EOF 324252166aa0SJuan Quintelaif compile_prog "" "" ; then 32433b3f24adSaurel32 inotify=yes 32443b3f24adSaurel32fi 32453b3f24adSaurel32 3246c05c7a73SRiku Voipioinotify1=no 3247c05c7a73SRiku Voipiocat > $TMPC << EOF 3248c05c7a73SRiku Voipio#include <sys/inotify.h> 3249c05c7a73SRiku Voipio 3250c05c7a73SRiku Voipioint 3251c05c7a73SRiku Voipiomain(void) 3252c05c7a73SRiku Voipio{ 3253c05c7a73SRiku Voipio /* try to start inotify */ 3254c05c7a73SRiku Voipio return inotify_init1(0); 3255c05c7a73SRiku Voipio} 3256c05c7a73SRiku VoipioEOF 3257c05c7a73SRiku Voipioif compile_prog "" "" ; then 3258c05c7a73SRiku Voipio inotify1=yes 3259c05c7a73SRiku Voipiofi 3260c05c7a73SRiku Voipio 3261ebc996f3SRiku Voipio# check if utimensat and futimens are supported 3262ebc996f3SRiku Voipioutimens=no 3263ebc996f3SRiku Voipiocat > $TMPC << EOF 3264ebc996f3SRiku Voipio#define _ATFILE_SOURCE 3265ebc996f3SRiku Voipio#include <stddef.h> 3266ebc996f3SRiku Voipio#include <fcntl.h> 32673014ee00SPeter Maydell#include <sys/stat.h> 3268ebc996f3SRiku Voipio 3269ebc996f3SRiku Voipioint main(void) 3270ebc996f3SRiku Voipio{ 3271ebc996f3SRiku Voipio utimensat(AT_FDCWD, "foo", NULL, 0); 3272ebc996f3SRiku Voipio futimens(0, NULL); 3273ebc996f3SRiku Voipio return 0; 3274ebc996f3SRiku Voipio} 3275ebc996f3SRiku VoipioEOF 327652166aa0SJuan Quintelaif compile_prog "" "" ; then 3277ebc996f3SRiku Voipio utimens=yes 3278ebc996f3SRiku Voipiofi 3279ebc996f3SRiku Voipio 3280099d6b0fSRiku Voipio# check if pipe2 is there 3281099d6b0fSRiku Voipiopipe2=no 3282099d6b0fSRiku Voipiocat > $TMPC << EOF 3283099d6b0fSRiku Voipio#include <unistd.h> 3284099d6b0fSRiku Voipio#include <fcntl.h> 3285099d6b0fSRiku Voipio 3286099d6b0fSRiku Voipioint main(void) 3287099d6b0fSRiku Voipio{ 3288099d6b0fSRiku Voipio int pipefd[2]; 32899bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 3290099d6b0fSRiku Voipio} 3291099d6b0fSRiku VoipioEOF 329252166aa0SJuan Quintelaif compile_prog "" "" ; then 3293099d6b0fSRiku Voipio pipe2=yes 3294099d6b0fSRiku Voipiofi 3295099d6b0fSRiku Voipio 329640ff6d7eSKevin Wolf# check if accept4 is there 329740ff6d7eSKevin Wolfaccept4=no 329840ff6d7eSKevin Wolfcat > $TMPC << EOF 329940ff6d7eSKevin Wolf#include <sys/socket.h> 330040ff6d7eSKevin Wolf#include <stddef.h> 330140ff6d7eSKevin Wolf 330240ff6d7eSKevin Wolfint main(void) 330340ff6d7eSKevin Wolf{ 330440ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 330540ff6d7eSKevin Wolf return 0; 330640ff6d7eSKevin Wolf} 330740ff6d7eSKevin WolfEOF 330840ff6d7eSKevin Wolfif compile_prog "" "" ; then 330940ff6d7eSKevin Wolf accept4=yes 331040ff6d7eSKevin Wolffi 331140ff6d7eSKevin Wolf 33123ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 33133ce34dfbSvibisreenivasansplice=no 33143ce34dfbSvibisreenivasancat > $TMPC << EOF 33153ce34dfbSvibisreenivasan#include <unistd.h> 33163ce34dfbSvibisreenivasan#include <fcntl.h> 33173ce34dfbSvibisreenivasan#include <limits.h> 33183ce34dfbSvibisreenivasan 33193ce34dfbSvibisreenivasanint main(void) 33203ce34dfbSvibisreenivasan{ 332166ea0f22SStefan Weil int len, fd = 0; 33223ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 33233ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 33243ce34dfbSvibisreenivasan return 0; 33253ce34dfbSvibisreenivasan} 33263ce34dfbSvibisreenivasanEOF 332752166aa0SJuan Quintelaif compile_prog "" "" ; then 33283ce34dfbSvibisreenivasan splice=yes 33293ce34dfbSvibisreenivasanfi 33303ce34dfbSvibisreenivasan 3331dcc38d1cSMarcelo Tosatti########################################## 3332a99d57bbSWanlong Gao# libnuma probe 3333a99d57bbSWanlong Gao 3334a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 3335a99d57bbSWanlong Gao cat > $TMPC << EOF 3336a99d57bbSWanlong Gao#include <numa.h> 3337a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 3338a99d57bbSWanlong GaoEOF 3339a99d57bbSWanlong Gao 3340a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 3341a99d57bbSWanlong Gao numa=yes 3342a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 3343a99d57bbSWanlong Gao else 3344a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 3345a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 3346a99d57bbSWanlong Gao fi 3347a99d57bbSWanlong Gao numa=no 3348a99d57bbSWanlong Gao fi 3349a99d57bbSWanlong Gaofi 3350a99d57bbSWanlong Gao 3351a99d57bbSWanlong Gao########################################## 33522847b469SFam Zheng# tcmalloc probe 33532847b469SFam Zheng 33542847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 33552847b469SFam Zheng cat > $TMPC << EOF 33562847b469SFam Zheng#include <stdlib.h> 33572847b469SFam Zhengint main(void) { malloc(1); return 0; } 33582847b469SFam ZhengEOF 33592847b469SFam Zheng 33602847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 33612847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 33622847b469SFam Zheng else 33632847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 33642847b469SFam Zheng fi 33652847b469SFam Zhengfi 33662847b469SFam Zheng 33672847b469SFam Zheng########################################## 3368dcc38d1cSMarcelo Tosatti# signalfd probe 3369dcc38d1cSMarcelo Tosattisignalfd="no" 3370dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 3371dcc38d1cSMarcelo Tosatti#include <unistd.h> 3372dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 3373dcc38d1cSMarcelo Tosatti#include <signal.h> 3374dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3375dcc38d1cSMarcelo TosattiEOF 3376dcc38d1cSMarcelo Tosatti 3377dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 3378dcc38d1cSMarcelo Tosatti signalfd=yes 3379dcc38d1cSMarcelo Tosattifi 3380dcc38d1cSMarcelo Tosatti 3381c2882b96SRiku Voipio# check if eventfd is supported 3382c2882b96SRiku Voipioeventfd=no 3383c2882b96SRiku Voipiocat > $TMPC << EOF 3384c2882b96SRiku Voipio#include <sys/eventfd.h> 3385c2882b96SRiku Voipio 3386c2882b96SRiku Voipioint main(void) 3387c2882b96SRiku Voipio{ 338855cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3389c2882b96SRiku Voipio} 3390c2882b96SRiku VoipioEOF 3391c2882b96SRiku Voipioif compile_prog "" "" ; then 3392c2882b96SRiku Voipio eventfd=yes 3393c2882b96SRiku Voipiofi 3394c2882b96SRiku Voipio 3395d0927938SUlrich Hecht# check for fallocate 3396d0927938SUlrich Hechtfallocate=no 3397d0927938SUlrich Hechtcat > $TMPC << EOF 3398d0927938SUlrich Hecht#include <fcntl.h> 3399d0927938SUlrich Hecht 3400d0927938SUlrich Hechtint main(void) 3401d0927938SUlrich Hecht{ 3402d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 3403d0927938SUlrich Hecht return 0; 3404d0927938SUlrich Hecht} 3405d0927938SUlrich HechtEOF 34068fb03151SPeter Maydellif compile_prog "" "" ; then 3407d0927938SUlrich Hecht fallocate=yes 3408d0927938SUlrich Hechtfi 3409d0927938SUlrich Hecht 34103d4fa43eSKusanagi Kouichi# check for fallocate hole punching 34113d4fa43eSKusanagi Kouichifallocate_punch_hole=no 34123d4fa43eSKusanagi Kouichicat > $TMPC << EOF 34133d4fa43eSKusanagi Kouichi#include <fcntl.h> 34143d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 34153d4fa43eSKusanagi Kouichi 34163d4fa43eSKusanagi Kouichiint main(void) 34173d4fa43eSKusanagi Kouichi{ 34183d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 34193d4fa43eSKusanagi Kouichi return 0; 34203d4fa43eSKusanagi Kouichi} 34213d4fa43eSKusanagi KouichiEOF 34223d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 34233d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 34243d4fa43eSKusanagi Kouichifi 34253d4fa43eSKusanagi Kouichi 3426b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 3427b953f075SDenis V. Lunevfallocate_zero_range=no 3428b953f075SDenis V. Lunevcat > $TMPC << EOF 3429b953f075SDenis V. Lunev#include <fcntl.h> 3430b953f075SDenis V. Lunev#include <linux/falloc.h> 3431b953f075SDenis V. Lunev 3432b953f075SDenis V. Lunevint main(void) 3433b953f075SDenis V. Lunev{ 3434b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3435b953f075SDenis V. Lunev return 0; 3436b953f075SDenis V. Lunev} 3437b953f075SDenis V. LunevEOF 3438b953f075SDenis V. Lunevif compile_prog "" "" ; then 3439b953f075SDenis V. Lunev fallocate_zero_range=yes 3440b953f075SDenis V. Lunevfi 3441b953f075SDenis V. Lunev 3442ed911435SKevin Wolf# check for posix_fallocate 3443ed911435SKevin Wolfposix_fallocate=no 3444ed911435SKevin Wolfcat > $TMPC << EOF 3445ed911435SKevin Wolf#include <fcntl.h> 3446ed911435SKevin Wolf 3447ed911435SKevin Wolfint main(void) 3448ed911435SKevin Wolf{ 3449ed911435SKevin Wolf posix_fallocate(0, 0, 0); 3450ed911435SKevin Wolf return 0; 3451ed911435SKevin Wolf} 3452ed911435SKevin WolfEOF 3453ed911435SKevin Wolfif compile_prog "" "" ; then 3454ed911435SKevin Wolf posix_fallocate=yes 3455ed911435SKevin Wolffi 3456ed911435SKevin Wolf 3457c727f47dSPeter Maydell# check for sync_file_range 3458c727f47dSPeter Maydellsync_file_range=no 3459c727f47dSPeter Maydellcat > $TMPC << EOF 3460c727f47dSPeter Maydell#include <fcntl.h> 3461c727f47dSPeter Maydell 3462c727f47dSPeter Maydellint main(void) 3463c727f47dSPeter Maydell{ 3464c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 3465c727f47dSPeter Maydell return 0; 3466c727f47dSPeter Maydell} 3467c727f47dSPeter MaydellEOF 34688fb03151SPeter Maydellif compile_prog "" "" ; then 3469c727f47dSPeter Maydell sync_file_range=yes 3470c727f47dSPeter Maydellfi 3471c727f47dSPeter Maydell 3472dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 3473dace20dcSPeter Maydellfiemap=no 3474dace20dcSPeter Maydellcat > $TMPC << EOF 3475dace20dcSPeter Maydell#include <sys/ioctl.h> 3476dace20dcSPeter Maydell#include <linux/fs.h> 3477dace20dcSPeter Maydell#include <linux/fiemap.h> 3478dace20dcSPeter Maydell 3479dace20dcSPeter Maydellint main(void) 3480dace20dcSPeter Maydell{ 3481dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 3482dace20dcSPeter Maydell return 0; 3483dace20dcSPeter Maydell} 3484dace20dcSPeter MaydellEOF 34858fb03151SPeter Maydellif compile_prog "" "" ; then 3486dace20dcSPeter Maydell fiemap=yes 3487dace20dcSPeter Maydellfi 3488dace20dcSPeter Maydell 3489d0927938SUlrich Hecht# check for dup3 3490d0927938SUlrich Hechtdup3=no 3491d0927938SUlrich Hechtcat > $TMPC << EOF 3492d0927938SUlrich Hecht#include <unistd.h> 3493d0927938SUlrich Hecht 3494d0927938SUlrich Hechtint main(void) 3495d0927938SUlrich Hecht{ 3496d0927938SUlrich Hecht dup3(0, 0, 0); 3497d0927938SUlrich Hecht return 0; 3498d0927938SUlrich Hecht} 3499d0927938SUlrich HechtEOF 350078f5d726SJan Kiszkaif compile_prog "" "" ; then 3501d0927938SUlrich Hecht dup3=yes 3502d0927938SUlrich Hechtfi 3503d0927938SUlrich Hecht 35044e0c6529SAlex Bligh# check for ppoll support 35054e0c6529SAlex Blighppoll=no 35064e0c6529SAlex Blighcat > $TMPC << EOF 35074e0c6529SAlex Bligh#include <poll.h> 35084e0c6529SAlex Bligh 35094e0c6529SAlex Blighint main(void) 35104e0c6529SAlex Bligh{ 35114e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 35124e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 35134e0c6529SAlex Bligh return 0; 35144e0c6529SAlex Bligh} 35154e0c6529SAlex BlighEOF 35164e0c6529SAlex Blighif compile_prog "" "" ; then 35174e0c6529SAlex Bligh ppoll=yes 35184e0c6529SAlex Blighfi 35194e0c6529SAlex Bligh 3520cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 3521cd758dd0SAlex Blighprctl_pr_set_timerslack=no 3522cd758dd0SAlex Blighcat > $TMPC << EOF 3523cd758dd0SAlex Bligh#include <sys/prctl.h> 3524cd758dd0SAlex Bligh 3525cd758dd0SAlex Blighint main(void) 3526cd758dd0SAlex Bligh{ 3527cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3528cd758dd0SAlex Bligh return 0; 3529cd758dd0SAlex Bligh} 3530cd758dd0SAlex BlighEOF 3531cd758dd0SAlex Blighif compile_prog "" "" ; then 3532cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 3533cd758dd0SAlex Blighfi 3534cd758dd0SAlex Bligh 35353b6edd16SPeter Maydell# check for epoll support 35363b6edd16SPeter Maydellepoll=no 35373b6edd16SPeter Maydellcat > $TMPC << EOF 35383b6edd16SPeter Maydell#include <sys/epoll.h> 35393b6edd16SPeter Maydell 35403b6edd16SPeter Maydellint main(void) 35413b6edd16SPeter Maydell{ 35423b6edd16SPeter Maydell epoll_create(0); 35433b6edd16SPeter Maydell return 0; 35443b6edd16SPeter Maydell} 35453b6edd16SPeter MaydellEOF 35468fb03151SPeter Maydellif compile_prog "" "" ; then 35473b6edd16SPeter Maydell epoll=yes 35483b6edd16SPeter Maydellfi 35493b6edd16SPeter Maydell 35503b6edd16SPeter Maydell# epoll_create1 and epoll_pwait are later additions 35513b6edd16SPeter Maydell# so we must check separately for their presence 35523b6edd16SPeter Maydellepoll_create1=no 35533b6edd16SPeter Maydellcat > $TMPC << EOF 35543b6edd16SPeter Maydell#include <sys/epoll.h> 35553b6edd16SPeter Maydell 35563b6edd16SPeter Maydellint main(void) 35573b6edd16SPeter Maydell{ 355819e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 355919e83f6bSPeter Maydell * a function being called. This is necessary so that on 356019e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 356119e83f6bSPeter Maydell * the library but not declared in the header file we will 356219e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 356319e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 356419e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 356519e83f6bSPeter Maydell */ 3566c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 35673b6edd16SPeter Maydell} 35683b6edd16SPeter MaydellEOF 35698fb03151SPeter Maydellif compile_prog "" "" ; then 35703b6edd16SPeter Maydell epoll_create1=yes 35713b6edd16SPeter Maydellfi 35723b6edd16SPeter Maydell 35733b6edd16SPeter Maydellepoll_pwait=no 35743b6edd16SPeter Maydellcat > $TMPC << EOF 35753b6edd16SPeter Maydell#include <sys/epoll.h> 35763b6edd16SPeter Maydell 35773b6edd16SPeter Maydellint main(void) 35783b6edd16SPeter Maydell{ 35793b6edd16SPeter Maydell epoll_pwait(0, 0, 0, 0, 0); 35803b6edd16SPeter Maydell return 0; 35813b6edd16SPeter Maydell} 35823b6edd16SPeter MaydellEOF 35838fb03151SPeter Maydellif compile_prog "" "" ; then 35843b6edd16SPeter Maydell epoll_pwait=yes 35853b6edd16SPeter Maydellfi 35863b6edd16SPeter Maydell 3587a8fd1abaSPeter Maydell# check for sendfile support 3588a8fd1abaSPeter Maydellsendfile=no 3589a8fd1abaSPeter Maydellcat > $TMPC << EOF 3590a8fd1abaSPeter Maydell#include <sys/sendfile.h> 3591a8fd1abaSPeter Maydell 3592a8fd1abaSPeter Maydellint main(void) 3593a8fd1abaSPeter Maydell{ 3594a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 3595a8fd1abaSPeter Maydell} 3596a8fd1abaSPeter MaydellEOF 3597a8fd1abaSPeter Maydellif compile_prog "" "" ; then 3598a8fd1abaSPeter Maydell sendfile=yes 3599a8fd1abaSPeter Maydellfi 3600a8fd1abaSPeter Maydell 360151834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 360251834341SRiku Voipiotimerfd=no 360351834341SRiku Voipiocat > $TMPC << EOF 360451834341SRiku Voipio#include <sys/timerfd.h> 360551834341SRiku Voipio 360651834341SRiku Voipioint main(void) 360751834341SRiku Voipio{ 360851834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 360951834341SRiku Voipio} 361051834341SRiku VoipioEOF 361151834341SRiku Voipioif compile_prog "" "" ; then 361251834341SRiku Voipio timerfd=yes 361351834341SRiku Voipiofi 361451834341SRiku Voipio 36159af5c906SRiku Voipio# check for setns and unshare support 36169af5c906SRiku Voipiosetns=no 36179af5c906SRiku Voipiocat > $TMPC << EOF 36189af5c906SRiku Voipio#include <sched.h> 36199af5c906SRiku Voipio 36209af5c906SRiku Voipioint main(void) 36219af5c906SRiku Voipio{ 36229af5c906SRiku Voipio int ret; 36239af5c906SRiku Voipio ret = setns(0, 0); 36249af5c906SRiku Voipio ret = unshare(0); 36259af5c906SRiku Voipio return ret; 36269af5c906SRiku Voipio} 36279af5c906SRiku VoipioEOF 36289af5c906SRiku Voipioif compile_prog "" "" ; then 36299af5c906SRiku Voipio setns=yes 36309af5c906SRiku Voipiofi 36319af5c906SRiku Voipio 3632cc8ae6deSpbrook# Check if tools are available to build documentation. 3633a25dba17SJuan Quintelaif test "$docs" != "no" ; then 363401668d98SStefan Weil if has makeinfo && has pod2man; then 3635a25dba17SJuan Quintela docs=yes 363683a3ab8bSJuan Quintela else 3637a25dba17SJuan Quintela if test "$docs" = "yes" ; then 363821684af0SStewart Smith feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 363983a3ab8bSJuan Quintela fi 3640a25dba17SJuan Quintela docs=no 364183a3ab8bSJuan Quintela fi 3642cc8ae6deSpbrookfi 3643cc8ae6deSpbrook 3644f514f41cSStefan Weil# Search for bswap_32 function 36456ae9a1f4SJuan Quintelabyteswap_h=no 36466ae9a1f4SJuan Quintelacat > $TMPC << EOF 36476ae9a1f4SJuan Quintela#include <byteswap.h> 36486ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 36496ae9a1f4SJuan QuintelaEOF 365052166aa0SJuan Quintelaif compile_prog "" "" ; then 36516ae9a1f4SJuan Quintela byteswap_h=yes 36526ae9a1f4SJuan Quintelafi 36536ae9a1f4SJuan Quintela 365475f13596SStefan Weil# Search for bswap32 function 36556ae9a1f4SJuan Quintelabswap_h=no 36566ae9a1f4SJuan Quintelacat > $TMPC << EOF 36576ae9a1f4SJuan Quintela#include <sys/endian.h> 36586ae9a1f4SJuan Quintela#include <sys/types.h> 36596ae9a1f4SJuan Quintela#include <machine/bswap.h> 36606ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 36616ae9a1f4SJuan QuintelaEOF 366252166aa0SJuan Quintelaif compile_prog "" "" ; then 36636ae9a1f4SJuan Quintela bswap_h=yes 36646ae9a1f4SJuan Quintelafi 36656ae9a1f4SJuan Quintela 3666da93a1fdSaliguori########################################## 3667e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 3668c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 3669e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 36703c33ea96SPaolo Bonzini libiscsi="yes" 3671ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 3672ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 3673c589b249SRonnie Sahlberg else 3674c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 3675e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 3676c589b249SRonnie Sahlberg fi 3677c589b249SRonnie Sahlberg libiscsi="no" 3678c589b249SRonnie Sahlberg fi 3679c589b249SRonnie Sahlbergfi 3680c589b249SRonnie Sahlberg 3681c589b249SRonnie Sahlberg########################################## 36828bacde8dSNatanael Copa# Do we need libm 36838bacde8dSNatanael Copacat > $TMPC << EOF 36848bacde8dSNatanael Copa#include <math.h> 3685f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 36868bacde8dSNatanael CopaEOF 36878bacde8dSNatanael Copaif compile_prog "" "" ; then 36888bacde8dSNatanael Copa : 36898bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 36908bacde8dSNatanael Copa LIBS="-lm $LIBS" 36918bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 36928bacde8dSNatanael Copaelse 369376ad07a4SPeter Maydell error_exit "libm check failed" 36948bacde8dSNatanael Copafi 36958bacde8dSNatanael Copa 36968bacde8dSNatanael Copa########################################## 3697da93a1fdSaliguori# Do we need librt 36988bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 36998bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 37008bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 37018bacde8dSNatanael Copa# function in addition. 3702da93a1fdSaliguoricat > $TMPC <<EOF 3703da93a1fdSaliguori#include <signal.h> 3704da93a1fdSaliguori#include <time.h> 37058bacde8dSNatanael Copaint main(void) { 37068bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 37078bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 37088bacde8dSNatanael Copa} 3709da93a1fdSaliguoriEOF 3710da93a1fdSaliguori 371152166aa0SJuan Quintelaif compile_prog "" "" ; then 371207ffa4bdSJuan Quintela : 37138bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 371418e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 371518e588b1SRick Liu LIBS="$LIBS -lrt" 371618e588b1SRick Liu libs_qga="$libs_qga -lrt" 3717da93a1fdSaliguorifi 3718da93a1fdSaliguori 371931ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 3720179cf400SAndreas Färber "$aix" != "yes" -a "$haiku" != "yes" ; then 37216362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 37226362a53fSJuan Quintelafi 37236362a53fSJuan Quintela 3724de5071c5SBlue Swirl########################################## 3725cd4ec0b4SGerd Hoffmann# spice probe 3726cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 3727cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 3728cd4ec0b4SGerd Hoffmann#include <spice.h> 3729cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 3730cd4ec0b4SGerd HoffmannEOF 3731710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 3732710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 373365d5d3f9SStefan Weil if $pkg_config --atleast-version=0.12.0 spice-server && \ 373465d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 3735cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 3736cd4ec0b4SGerd Hoffmann spice="yes" 3737cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 3738cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 37392e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 37402e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 3741cd4ec0b4SGerd Hoffmann else 3742cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 37438efc9363SHu Tao feature_not_found "spice" \ 37448efc9363SHu Tao "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 3745cd4ec0b4SGerd Hoffmann fi 3746cd4ec0b4SGerd Hoffmann spice="no" 3747cd4ec0b4SGerd Hoffmann fi 3748cd4ec0b4SGerd Hoffmannfi 3749cd4ec0b4SGerd Hoffmann 3750111a38b0SRobert Relyea# check for libcacard for smartcard support 3751111a38b0SRobert Relyeasmartcard_cflags="" 3752111a38b0SRobert Relyea# TODO - what's the minimal nss version we support? 3753111a38b0SRobert Relyeaif test "$smartcard_nss" != "no"; then 37545f01e06fSSergei Trofimovich cat > $TMPC << EOF 37555f01e06fSSergei Trofimovich#include <pk11pub.h> 37565f01e06fSSergei Trofimovichint main(void) { PK11_FreeSlot(0); return 0; } 37575f01e06fSSergei TrofimovichEOF 37589d171bd9SMichael Tokarev # FIXME: do not include $glib_* in here 37599d171bd9SMichael Tokarev nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" 37609d171bd9SMichael Tokarev nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" 37619d171bd9SMichael Tokarev test_cflags="$nss_cflags" 37626ca026cbSPeter Maydell # The header files in nss < 3.13.3 have a bug which causes them to 37636ca026cbSPeter Maydell # emit a warning. If we're going to compile QEMU with -Werror, then 37646ca026cbSPeter Maydell # test that the headers don't have this bug. Otherwise we would pass 37656ca026cbSPeter Maydell # the configure test but fail to compile QEMU later. 37666ca026cbSPeter Maydell if test "$werror" = "yes"; then 37676ca026cbSPeter Maydell test_cflags="-Werror $test_cflags" 37686ca026cbSPeter Maydell fi 3769b6fc675bSPaolo Bonzini if test -n "$libtool" && 377065d5d3f9SStefan Weil $pkg_config --atleast-version=3.12.8 nss && \ 37719d171bd9SMichael Tokarev compile_prog "$test_cflags" "$nss_libs"; then 37725f01e06fSSergei Trofimovich smartcard_nss="yes" 3773111a38b0SRobert Relyea else 3774111a38b0SRobert Relyea if test "$smartcard_nss" = "yes"; then 37758efc9363SHu Tao feature_not_found "nss" "Install nss devel >= 3.12.8" 3776111a38b0SRobert Relyea fi 3777111a38b0SRobert Relyea smartcard_nss="no" 3778111a38b0SRobert Relyea fi 3779111a38b0SRobert Relyeafi 3780111a38b0SRobert Relyea 37812b2325ffSGerd Hoffmann# check for libusb 37822b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 378365d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 37842b2325ffSGerd Hoffmann libusb="yes" 3785ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 3786ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 37872b2325ffSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 37882b2325ffSGerd Hoffmann libs_softmmu="$libs_softmmu $libusb_libs" 37892b2325ffSGerd Hoffmann else 37902b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 37918efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 37922b2325ffSGerd Hoffmann fi 37932b2325ffSGerd Hoffmann libusb="no" 37942b2325ffSGerd Hoffmann fi 37952b2325ffSGerd Hoffmannfi 37962b2325ffSGerd Hoffmann 379769354a83SHans de Goede# check for usbredirparser for usb network redirection support 379869354a83SHans de Goedeif test "$usb_redir" != "no" ; then 379965d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 380069354a83SHans de Goede usb_redir="yes" 3801ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 3802ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 380369354a83SHans de Goede QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 380456ab2ad1SAurelien Jarno libs_softmmu="$libs_softmmu $usb_redir_libs" 380569354a83SHans de Goede else 380669354a83SHans de Goede if test "$usb_redir" = "yes"; then 380721684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 380869354a83SHans de Goede fi 380969354a83SHans de Goede usb_redir="no" 381069354a83SHans de Goede fi 381169354a83SHans de Goedefi 381269354a83SHans de Goede 3813cd4ec0b4SGerd Hoffmann########################################## 3814d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 3815d9840e25STomoki Sekiyama 3816d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 3817d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 3818d9840e25STomoki Sekiyama "") vss_win32_include="-I$source_path" ;; 3819d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 3820d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 3821d9840e25STomoki Sekiyama vss_win32_include="-I$source_path/.sdk/vss" 3822d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 3823d9840e25STomoki Sekiyama ;; 3824d9840e25STomoki Sekiyama *) vss_win32_include="-I$vss_win32_sdk" 3825d9840e25STomoki Sekiyama esac 3826d9840e25STomoki Sekiyama cat > $TMPC << EOF 3827d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 3828d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 3829d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 3830d9840e25STomoki SekiyamaEOF 3831d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 3832d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 3833d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 3834d9840e25STomoki Sekiyama libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 3835d9840e25STomoki Sekiyama else 3836d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 3837d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 3838d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 3839d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 3840d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 3841d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 3842d9840e25STomoki Sekiyama feature_not_found "VSS support" 3843d9840e25STomoki Sekiyama fi 3844d9840e25STomoki Sekiyama guest_agent_with_vss="no" 3845d9840e25STomoki Sekiyama fi 3846d9840e25STomoki Sekiyamafi 3847d9840e25STomoki Sekiyama 3848d9840e25STomoki Sekiyama########################################## 3849d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 3850d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 3851d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 3852d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 3853d9840e25STomoki Sekiyama 3854d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 3855d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 3856d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 3857d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 3858d9840e25STomoki Sekiyama if test -n "$programfiles"; then 3859d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 3860d9840e25STomoki Sekiyama else 3861d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 3862d9840e25STomoki Sekiyama fi 3863d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 3864d9840e25STomoki Sekiyama win_sdk="" 3865d9840e25STomoki Sekiyama fi 3866d9840e25STomoki Sekiyamafi 3867d9840e25STomoki Sekiyama 3868d9840e25STomoki Sekiyama########################################## 3869cd4ec0b4SGerd Hoffmann 3870747bbdf7SBlue Swirl########################################## 38715f6b9e8fSBlue Swirl# check if we have fdatasync 38725f6b9e8fSBlue Swirl 38735f6b9e8fSBlue Swirlfdatasync=no 38745f6b9e8fSBlue Swirlcat > $TMPC << EOF 38755f6b9e8fSBlue Swirl#include <unistd.h> 3876d1722a27SAlexandre Raymondint main(void) { 3877d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 3878d1722a27SAlexandre Raymondreturn fdatasync(0); 3879d1722a27SAlexandre Raymond#else 3880e172fe11SStefan Weil#error Not supported 3881d1722a27SAlexandre Raymond#endif 3882d1722a27SAlexandre Raymond} 38835f6b9e8fSBlue SwirlEOF 38845f6b9e8fSBlue Swirlif compile_prog "" "" ; then 38855f6b9e8fSBlue Swirl fdatasync=yes 38865f6b9e8fSBlue Swirlfi 38875f6b9e8fSBlue Swirl 388894a420b1SStefan Hajnoczi########################################## 3889e78815a5SAndreas Färber# check if we have madvise 3890e78815a5SAndreas Färber 3891e78815a5SAndreas Färbermadvise=no 3892e78815a5SAndreas Färbercat > $TMPC << EOF 3893e78815a5SAndreas Färber#include <sys/types.h> 3894e78815a5SAndreas Färber#include <sys/mman.h> 3895832ce9c2SScott Wood#include <stddef.h> 3896e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 3897e78815a5SAndreas FärberEOF 3898e78815a5SAndreas Färberif compile_prog "" "" ; then 3899e78815a5SAndreas Färber madvise=yes 3900e78815a5SAndreas Färberfi 3901e78815a5SAndreas Färber 3902e78815a5SAndreas Färber########################################## 3903e78815a5SAndreas Färber# check if we have posix_madvise 3904e78815a5SAndreas Färber 3905e78815a5SAndreas Färberposix_madvise=no 3906e78815a5SAndreas Färbercat > $TMPC << EOF 3907e78815a5SAndreas Färber#include <sys/mman.h> 3908832ce9c2SScott Wood#include <stddef.h> 3909e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 3910e78815a5SAndreas FärberEOF 3911e78815a5SAndreas Färberif compile_prog "" "" ; then 3912e78815a5SAndreas Färber posix_madvise=yes 3913e78815a5SAndreas Färberfi 3914e78815a5SAndreas Färber 3915e78815a5SAndreas Färber########################################## 39161e9737daSRichard Henderson# check if we have usable SIGEV_THREAD_ID 39171e9737daSRichard Henderson 39181e9737daSRichard Hendersonsigev_thread_id=no 39191e9737daSRichard Hendersoncat > $TMPC << EOF 39201e9737daSRichard Henderson#include <signal.h> 39211e9737daSRichard Hendersonint main(void) { 39221e9737daSRichard Henderson struct sigevent ev; 39231e9737daSRichard Henderson ev.sigev_notify = SIGEV_THREAD_ID; 39241e9737daSRichard Henderson ev._sigev_un._tid = 0; 39251e9737daSRichard Henderson asm volatile("" : : "g"(&ev)); 39261e9737daSRichard Henderson return 0; 39271e9737daSRichard Henderson} 39281e9737daSRichard HendersonEOF 39291e9737daSRichard Hendersonif compile_prog "" "" ; then 39301e9737daSRichard Henderson sigev_thread_id=yes 39311e9737daSRichard Hendersonfi 39321e9737daSRichard Henderson 39331e9737daSRichard Henderson########################################## 393494a420b1SStefan Hajnoczi# check if trace backend exists 393594a420b1SStefan Hajnoczi 39365b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 393794a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 39385b808275SLluís Vilanova error_exit "invalid trace backends" \ 39395b808275SLluís Vilanova "Please choose supported trace backends." 394094a420b1SStefan Hajnoczifi 394194a420b1SStefan Hajnoczi 39427e24e92aSStefan Hajnoczi########################################## 39437e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 39445b808275SLluís Vilanovaif have_backend "ust"; then 39457e24e92aSStefan Hajnoczi cat > $TMPC << EOF 3946bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 39477e24e92aSStefan Hajnocziint main(void) { return 0; } 39487e24e92aSStefan HajnocziEOF 39497e24e92aSStefan Hajnoczi if compile_prog "" "" ; then 3950bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 3951bf15f63cSMohamad Gebai lttng_ust_libs=`$pkg_config --libs lttng-ust` 39527e24e92aSStefan Hajnoczi else 3953bf15f63cSMohamad Gebai lttng_ust_libs="-llttng-ust" 3954bf15f63cSMohamad Gebai fi 3955bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 3956bf15f63cSMohamad Gebai urcu_bp_libs=`$pkg_config --libs liburcu-bp` 3957bf15f63cSMohamad Gebai else 3958bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 3959bf15f63cSMohamad Gebai fi 3960bf15f63cSMohamad Gebai 3961bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 3962bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 3963bf15f63cSMohamad Gebai else 3964bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 39657e24e92aSStefan Hajnoczi fi 39667e24e92aSStefan Hajnoczifi 3967b3d08c02SDaniel P. Berrange 3968b3d08c02SDaniel P. Berrange########################################## 3969b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 39705b808275SLluís Vilanovaif have_backend "dtrace"; then 3971b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 397276ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 3973b3d08c02SDaniel P. Berrange fi 3974c276b17dSDaniel P. Berrange trace_backend_stap="no" 3975c276b17dSDaniel P. Berrange if has 'stap' ; then 3976c276b17dSDaniel P. Berrange trace_backend_stap="yes" 3977c276b17dSDaniel P. Berrange fi 3978b3d08c02SDaniel P. Berrangefi 3979b3d08c02SDaniel P. Berrange 39807e24e92aSStefan Hajnoczi########################################## 3981519175a2SAlex Barcelo# check and set a backend for coroutine 3982d0e2fce5SAneesh Kumar K.V 39837c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 39847c2acc70SPeter Maydell# is sigcontext. gthread is not selectable except explicitly, because 39857c2acc70SPeter Maydell# it is not functional enough to run QEMU proper. (It is occasionally 39867c2acc70SPeter Maydell# useful for debugging purposes.) On Windows the only valid backend 39877c2acc70SPeter Maydell# is the Windows-specific one. 39887c2acc70SPeter Maydell 39897c2acc70SPeter Maydellucontext_works=no 3990d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 3991d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 3992d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 3993cdf84806SPeter Maydell#ifdef __stub_makecontext 3994cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 3995cdf84806SPeter Maydell#endif 399675cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 3997d0e2fce5SAneesh Kumar K.VEOF 3998d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 39997c2acc70SPeter Maydell ucontext_works=yes 4000d0e2fce5SAneesh Kumar K.V fi 4001519175a2SAlex Barcelofi 40027c2acc70SPeter Maydell 40037c2acc70SPeter Maydellif test "$coroutine" = ""; then 40047c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 40057c2acc70SPeter Maydell coroutine=win32 40067c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 40077c2acc70SPeter Maydell coroutine=ucontext 4008519175a2SAlex Barcelo else 40097c2acc70SPeter Maydell coroutine=sigaltstack 40107c2acc70SPeter Maydell fi 40117c2acc70SPeter Maydellelse 40127c2acc70SPeter Maydell case $coroutine in 40137c2acc70SPeter Maydell windows) 40147c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 40157c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 40167c2acc70SPeter Maydell fi 40177c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 40187c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 40197c2acc70SPeter Maydell coroutine=win32 40207c2acc70SPeter Maydell ;; 40217c2acc70SPeter Maydell ucontext) 40227c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 40237c2acc70SPeter Maydell feature_not_found "ucontext" 40247c2acc70SPeter Maydell fi 40257c2acc70SPeter Maydell ;; 40267c2acc70SPeter Maydell gthread|sigaltstack) 40277c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 40287c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 40297c2acc70SPeter Maydell fi 40307c2acc70SPeter Maydell ;; 40317c2acc70SPeter Maydell *) 403276ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 40337c2acc70SPeter Maydell ;; 40347c2acc70SPeter Maydell esac 4035d0e2fce5SAneesh Kumar K.Vfi 4036d0e2fce5SAneesh Kumar K.V 403770c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 403870c60c08SStefan Hajnoczi if test "$coroutine" = "gthread"; then 403970c60c08SStefan Hajnoczi coroutine_pool=no 404070c60c08SStefan Hajnoczi else 404170c60c08SStefan Hajnoczi coroutine_pool=yes 404270c60c08SStefan Hajnoczi fi 404370c60c08SStefan Hajnoczifi 404470c60c08SStefan Hajnocziif test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 404570c60c08SStefan Hajnoczi error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 404670c60c08SStefan Hajnoczifi 404770c60c08SStefan Hajnoczi 4048d0e2fce5SAneesh Kumar K.V########################################## 4049d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 4050d2042378SAneesh Kumar K.V 40514e1797f9SStefan Weilopen_by_handle_at=no 4052d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 4053d2042378SAneesh Kumar K.V#include <fcntl.h> 4054acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 4055acc55ba8SStefan Weil# error missing definition 4056acc55ba8SStefan Weil#else 405775cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4058acc55ba8SStefan Weil#endif 4059d2042378SAneesh Kumar K.VEOF 4060d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 4061d2042378SAneesh Kumar K.V open_by_handle_at=yes 4062d2042378SAneesh Kumar K.Vfi 4063d2042378SAneesh Kumar K.V 4064e06a765eSHarsh Prateek Bora######################################## 4065e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 4066e06a765eSHarsh Prateek Bora 4067e06a765eSHarsh Prateek Boralinux_magic_h=no 4068e06a765eSHarsh Prateek Boracat > $TMPC << EOF 4069e06a765eSHarsh Prateek Bora#include <linux/magic.h> 4070e06a765eSHarsh Prateek Boraint main(void) { 407175cafad7SStefan Weil return 0; 4072e06a765eSHarsh Prateek Bora} 4073e06a765eSHarsh Prateek BoraEOF 4074e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 4075e06a765eSHarsh Prateek Bora linux_magic_h=yes 4076e06a765eSHarsh Prateek Borafi 4077e06a765eSHarsh Prateek Bora 40788ab1bf12SLuiz Capitulino######################################## 4079c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 4080c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 4081c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 4082c95e3080SKevin Wolf# only a warning. 4083c95e3080SKevin Wolf# 4084c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 4085c95e3080SKevin Wolf# the build doesn't fail anyway. 4086c95e3080SKevin Wolf 408706d71fa1SPeter Maydellpragma_disable_unused_but_set=no 408806d71fa1SPeter Maydellcat > $TMPC << EOF 4089e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 409006d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4091c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4092e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 4093c95e3080SKevin Wolf 409406d71fa1SPeter Maydellint main(void) { 409506d71fa1SPeter Maydell return 0; 409606d71fa1SPeter Maydell} 409706d71fa1SPeter MaydellEOF 409806d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 4099cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 4100c95e3080SKevin Wolfelse 4101c95e3080SKevin Wolf werror=no 410206d71fa1SPeter Maydellfi 410306d71fa1SPeter Maydell 410406d71fa1SPeter Maydell######################################## 4105541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 41063f4349dcSKevin Wolf 41073f4349dcSKevin Wolfvalgrind_h=no 41083f4349dcSKevin Wolfcat > $TMPC << EOF 41093f4349dcSKevin Wolf#include <valgrind/valgrind.h> 41103f4349dcSKevin Wolfint main(void) { 41113f4349dcSKevin Wolf return 0; 41123f4349dcSKevin Wolf} 41133f4349dcSKevin WolfEOF 41143f4349dcSKevin Wolfif compile_prog "" "" ; then 41153f4349dcSKevin Wolf valgrind_h=yes 41163f4349dcSKevin Wolffi 41173f4349dcSKevin Wolf 41183f4349dcSKevin Wolf######################################## 41198ab1bf12SLuiz Capitulino# check if environ is declared 41208ab1bf12SLuiz Capitulino 41218ab1bf12SLuiz Capitulinohas_environ=no 41228ab1bf12SLuiz Capitulinocat > $TMPC << EOF 41238ab1bf12SLuiz Capitulino#include <unistd.h> 41248ab1bf12SLuiz Capitulinoint main(void) { 4125c075a723SBlue Swirl environ = 0; 41268ab1bf12SLuiz Capitulino return 0; 41278ab1bf12SLuiz Capitulino} 41288ab1bf12SLuiz CapitulinoEOF 41298ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 41308ab1bf12SLuiz Capitulino has_environ=yes 41318ab1bf12SLuiz Capitulinofi 41328ab1bf12SLuiz Capitulino 413376a347e1SRichard Henderson######################################## 413476a347e1SRichard Henderson# check if cpuid.h is usable. 413576a347e1SRichard Henderson 413676a347e1SRichard Hendersoncpuid_h=no 413776a347e1SRichard Hendersoncat > $TMPC << EOF 413876a347e1SRichard Henderson#include <cpuid.h> 413976a347e1SRichard Hendersonint main(void) { 4140774d566cSPeter Maydell unsigned a, b, c, d; 4141774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 4142774d566cSPeter Maydell 4143774d566cSPeter Maydell if (max >= 1) { 4144774d566cSPeter Maydell __cpuid(1, a, b, c, d); 4145774d566cSPeter Maydell } 4146774d566cSPeter Maydell 4147774d566cSPeter Maydell if (max >= 7) { 4148774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 4149774d566cSPeter Maydell } 4150774d566cSPeter Maydell 415176a347e1SRichard Henderson return 0; 415276a347e1SRichard Henderson} 415376a347e1SRichard HendersonEOF 415476a347e1SRichard Hendersonif compile_prog "" "" ; then 415576a347e1SRichard Henderson cpuid_h=yes 415676a347e1SRichard Hendersonfi 415776a347e1SRichard Henderson 4158f540166bSRichard Henderson######################################## 4159f540166bSRichard Henderson# check if __[u]int128_t is usable. 4160f540166bSRichard Henderson 4161f540166bSRichard Hendersonint128=no 4162f540166bSRichard Hendersoncat > $TMPC << EOF 4163a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__) 4164a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4165a00f66abSStefan Weil# error __int128_t does not work in CLANG before 3.2 4166a00f66abSStefan Weil# endif 4167a00f66abSStefan Weil#endif 4168f540166bSRichard Henderson__int128_t a; 4169f540166bSRichard Henderson__uint128_t b; 4170f540166bSRichard Hendersonint main (void) { 4171f540166bSRichard Henderson a = a + b; 4172f540166bSRichard Henderson b = a * b; 4173464e3671SPeter Maydell a = a * a; 4174f540166bSRichard Henderson return 0; 4175f540166bSRichard Henderson} 4176f540166bSRichard HendersonEOF 4177f540166bSRichard Hendersonif compile_prog "" "" ; then 4178f540166bSRichard Henderson int128=yes 4179f540166bSRichard Hendersonfi 418076a347e1SRichard Henderson 41811e6e9acaSRichard Henderson######################################## 41821e6e9acaSRichard Henderson# check if getauxval is available. 41831e6e9acaSRichard Henderson 41841e6e9acaSRichard Hendersongetauxval=no 41851e6e9acaSRichard Hendersoncat > $TMPC << EOF 41861e6e9acaSRichard Henderson#include <sys/auxv.h> 41871e6e9acaSRichard Hendersonint main(void) { 41881e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 41891e6e9acaSRichard Henderson} 41901e6e9acaSRichard HendersonEOF 41911e6e9acaSRichard Hendersonif compile_prog "" "" ; then 41921e6e9acaSRichard Henderson getauxval=yes 41931e6e9acaSRichard Hendersonfi 41941e6e9acaSRichard Henderson 4195d2042378SAneesh Kumar K.V########################################## 4196e86ecd4bSJuan Quintela# End of CC checks 4197e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 4198e86ecd4bSJuan Quintela 41991d728c39SBlue Swirlif test "$gcov" = "yes" ; then 42001d728c39SBlue Swirl CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 42011d728c39SBlue Swirl LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 42021d728c39SBlue Swirlelif test "$debug" = "no" ; then 4203e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 4204e86ecd4bSJuan Quintelafi 4205a316e378SJuan Quintela 42066542aa9cSPeter Lieven########################################## 42076542aa9cSPeter Lieven# Do we have libnfs 42086542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 4209b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 42106542aa9cSPeter Lieven libnfs="yes" 42116542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 42126542aa9cSPeter Lieven LIBS="$LIBS $libnfs_libs" 42136542aa9cSPeter Lieven else 42146542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 42158efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 42166542aa9cSPeter Lieven fi 42176542aa9cSPeter Lieven libnfs="no" 42186542aa9cSPeter Lieven fi 42196542aa9cSPeter Lievenfi 42201d728c39SBlue Swirl 422120ff6c80SAnthony Liguori# Disable zero malloc errors for official releases unless explicitly told to 422220ff6c80SAnthony Liguori# enable/disable 422320ff6c80SAnthony Liguoriif test -z "$zero_malloc" ; then 422420ff6c80SAnthony Liguori if test "$z_version" = "50" ; then 422520ff6c80SAnthony Liguori zero_malloc="no" 422620ff6c80SAnthony Liguori else 422720ff6c80SAnthony Liguori zero_malloc="yes" 422820ff6c80SAnthony Liguori fi 422920ff6c80SAnthony Liguorifi 423020ff6c80SAnthony Liguori 42316ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 42326ca026cbSPeter Maydellif test "$werror" = "yes"; then 42336ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 42346ca026cbSPeter Maydellfi 42356ca026cbSPeter Maydell 4236e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then 4237e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 42381156c669SJuan Quintela LDFLAGS="-Wl,--warn-common $LDFLAGS" 4239e86ecd4bSJuan Quintela fi 4240e86ecd4bSJuan Quintelafi 4241e86ecd4bSJuan Quintela 424294dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 424394dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 424494dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 424594dd53c5SGerd Hoffmannelse 424694dd53c5SGerd Hoffmann POD2MAN="pod2man" 424794dd53c5SGerd Hoffmannfi 424894dd53c5SGerd Hoffmann 4249952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 4250952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 4251952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 4252952afb71SBlue Swirl if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 4253952afb71SBlue Swirl LDFLAGS="-Wl,$flag $LDFLAGS" 4254952afb71SBlue Swirl fi 4255952afb71SBlue Swirl done 4256952afb71SBlue Swirlfi 4257952afb71SBlue Swirl 425810ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 4259e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 4260528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 4261834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 42625a67135aSbellard 42634b1c11fdSDaniel P. Berrangetools="" 42644b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 4265ca35f780SPaolo Bonzini tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 42664b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 42674b1c11fdSDaniel P. Berrange tools="qemu-nbd\$(EXESUF) $tools" 42684b1c11fdSDaniel P. Berrange fi 42694b1c11fdSDaniel P. Berrangefi 42704b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 4271983eef5aSMeador Inge if test "$virtfs" != no ; then 4272be5ea8edSAnthony Liguori if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 4273983eef5aSMeador Inge virtfs=yes 427417bff52bSM. Mohan Kumar tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 4275983eef5aSMeador Inge else 4276983eef5aSMeador Inge if test "$virtfs" = yes; then 427776ad07a4SPeter Maydell error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 4278983eef5aSMeador Inge fi 427917500370SAndreas Färber virtfs=no 4280983eef5aSMeador Inge fi 428117bff52bSM. Mohan Kumar fi 4282d138cee9SMichael Rothfi 4283e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 4284b39297aeSTomoki Sekiyama if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 4285e8ef31a3SMichael Tokarev tools="qemu-ga\$(EXESUF) $tools" 4286b39297aeSTomoki Sekiyama if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then 4287b39297aeSTomoki Sekiyama tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools" 4288b39297aeSTomoki Sekiyama fi 4289e8ef31a3SMichael Tokarev guest_agent=yes 4290e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 4291e8ef31a3SMichael Tokarev guest_agent=no 4292e8ef31a3SMichael Tokarev else 4293e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 4294ca35f780SPaolo Bonzini fi 42954b1c11fdSDaniel P. Berrangefi 4296ca35f780SPaolo Bonzini 4297ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 4298ca35f780SPaolo Bonziniroms= 4299ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 4300ca35f780SPaolo Bonzini "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 4301ca35f780SPaolo Bonzini "$softmmu" = yes ; then 4302ca35f780SPaolo Bonzini roms="optionrom" 4303ca35f780SPaolo Bonzinifi 4304d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 430539ac8455SDavid Gibson roms="$roms spapr-rtas" 430639ac8455SDavid Gibsonfi 4307ca35f780SPaolo Bonzini 43089933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 43099933c305SChristian Borntraeger roms="$roms s390-ccw" 43109933c305SChristian Borntraegerfi 43119933c305SChristian Borntraeger 4312964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary. 4313964c6fa1SRichard Hendersonif test "$pie" = "no" ; then 4314964c6fa1SRichard Henderson textseg_addr= 4315964c6fa1SRichard Henderson case "$cpu" in 4316479eb121SRichard Henderson arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 4317479eb121SRichard Henderson # ??? Rationale for choosing this address 4318964c6fa1SRichard Henderson textseg_addr=0x60000000 4319964c6fa1SRichard Henderson ;; 4320964c6fa1SRichard Henderson mips) 4321479eb121SRichard Henderson # A 256M aligned address, high in the address space, with enough 4322479eb121SRichard Henderson # room for the code_gen_buffer above it before the stack. 4323479eb121SRichard Henderson textseg_addr=0x60000000 4324964c6fa1SRichard Henderson ;; 4325964c6fa1SRichard Henderson esac 4326964c6fa1SRichard Henderson if [ -n "$textseg_addr" ]; then 4327964c6fa1SRichard Henderson cat > $TMPC <<EOF 4328964c6fa1SRichard Henderson int main(void) { return 0; } 4329964c6fa1SRichard HendersonEOF 4330964c6fa1SRichard Henderson textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 4331964c6fa1SRichard Henderson if ! compile_prog "" "$textseg_ldflags"; then 4332964c6fa1SRichard Henderson # In case ld does not support -Ttext-segment, edit the default linker 4333964c6fa1SRichard Henderson # script via sed to set the .text start addr. This is needed on FreeBSD 4334964c6fa1SRichard Henderson # at least. 4335964c6fa1SRichard Henderson $ld --verbose | sed \ 4336964c6fa1SRichard Henderson -e '1,/==================================================/d' \ 4337964c6fa1SRichard Henderson -e '/==================================================/,$d' \ 4338964c6fa1SRichard Henderson -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 4339964c6fa1SRichard Henderson -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 4340964c6fa1SRichard Henderson textseg_ldflags="-Wl,-T../config-host.ld" 4341964c6fa1SRichard Henderson fi 4342964c6fa1SRichard Henderson fi 4343964c6fa1SRichard Hendersonfi 4344964c6fa1SRichard Henderson 434550e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 434650e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 434750e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 43485ca9388aSGerd Hoffmann 43497d13299dSbellardecho "Install prefix $prefix" 4350c00b2808SEduardo Habkostecho "BIOS directory `eval echo $qemu_datadir`" 4351f2b9e1e3SPaolo Bonziniecho "binary directory `eval echo $bindir`" 43523aa5d2beSAlon Levyecho "library directory `eval echo $libdir`" 4353e26110cfSFam Zhengecho "module directory `eval echo $qemu_moddir`" 43548bf188aaSMichael Tokarevecho "libexec directory `eval echo $libexecdir`" 43550f94d6daSAlon Levyecho "include directory `eval echo $includedir`" 43561c0fd160SAurelien Jarnoecho "config directory `eval echo $sysconfdir`" 435711d9f695Sbellardif test "$mingw32" = "no" ; then 43585a699bbbSLaszlo Ersekecho "local state directory `eval echo $local_statedir`" 4359f2b9e1e3SPaolo Bonziniecho "Manual directory `eval echo $mandir`" 436043ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 43615a699bbbSLaszlo Ersekelse 43625a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 4363d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 436411d9f695Sbellardfi 43655a67135aSbellardecho "Source path $source_path" 43667d13299dSbellardecho "C compiler $cc" 436783469015Sbellardecho "Host C compiler $host_cc" 436883f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 43693c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 437045d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 43710c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 4372a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 43730c439cbfSJuan Quintelaecho "LDFLAGS $LDFLAGS" 43747d13299dSbellardecho "make $make" 43756a882643Spbrookecho "install $install" 4376c886edfbSBlue Swirlecho "python $python" 4377e2d8830eSBradif test "$slirp" = "yes" ; then 4378e2d8830eSBrad echo "smbd $smbd" 4379e2d8830eSBradfi 438017969268SFam Zhengecho "module support $modules" 4381a98fd896Sbellardecho "host CPU $cpu" 4382de83cd02Sbellardecho "host big endian $bigendian" 438397a847bcSbellardecho "target list $target_list" 4384ade25b0dSaurel32echo "tcg debug enabled $debug_tcg" 43857d13299dSbellardecho "gprof enabled $gprof" 438603b4fe7dSaliguoriecho "sparse enabled $sparse" 43871625af87Saliguoriecho "strip binaries $strip_opt" 438805c2a3e7Sbellardecho "profiler $profiler" 438943ce4dfeSbellardecho "static build $static" 43905b0753e0Sbellardif test "$darwin" = "yes" ; then 43915b0753e0Sbellard echo "Cocoa support $cocoa" 43925b0753e0Sbellardfi 4393e2134eb9SGerd Hoffmannecho "pixman $pixman" 439497a847bcSbellardecho "SDL support $sdl" 4395a4ccabcfSAnthony Liguoriecho "GTK support $gtk" 4396bbbf9bfbSStefan Weilecho "VTE support $vte" 43974d3b6f6eSbalrogecho "curses support $curses" 4398769ce76dSAlexander Grafecho "curl support $curl" 439967b915a5Sbellardecho "mingw32 support $mingw32" 44000c58ac1cSmalcecho "Audio drivers $audio_drv_list" 4401b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 4402b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 4403983eef5aSMeador Ingeecho "VirtFS support $virtfs" 4404821601eaSJes Sorensenecho "VNC support $vnc" 4405821601eaSJes Sorensenif test "$vnc" = "yes" ; then 44068d5d2d4cSths echo "VNC TLS support $vnc_tls" 44072f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 44082f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 4409efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 44107536ee4bSTim Hardeck echo "VNC WS support $vnc_ws" 4411821601eaSJes Sorensenfi 44123142255cSblueswir1if test -n "$sparc_cpu"; then 44133142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 44143142255cSblueswir1fi 4415e37630caSaliguoriecho "xen support $xen" 44163996e85cSPaul Durrantif test "$xen" = "yes" ; then 44173996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 44183996e85cSPaul Durrantfi 44192e4d9fb1Saurel32echo "brlapi support $brlapi" 4420a20a6f46SJuan Quintelaecho "bluez support $bluez" 4421a25dba17SJuan Quintelaecho "Documentation $docs" 4422379f6698SPaul Brookecho "GUEST_BASE $guest_base" 442340d6444eSAvi Kivityecho "PIE $pie" 44248a16d273Sthsecho "vde support $vde" 442558952137SVincenzo Maffioneecho "netmap support $netmap" 44265c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 4427758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 442877755340Sthsecho "Install blobs $blobs" 4429b31a0277SJuan Quintelaecho "KVM support $kvm" 44302da776dbSMichael R. Hinesecho "RDMA support $rdma" 44319195b2c2SStefan Weilecho "TCG interpreter $tcg_interpreter" 4432f652e6afSaurel32echo "fdt support $fdt" 4433ceb42de8Saliguoriecho "preadv support $preadv" 44345f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 4435e78815a5SAndreas Färberecho "madvise $madvise" 4436e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 44371e9737daSRichard Hendersonecho "sigev_thread_id $sigev_thread_id" 4438ee682d27SStefan Weilecho "uuid support $uuid" 443947e98658SCorey Bryantecho "libcap-ng support $cap_ng" 4440d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 44415e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 44425b808275SLluís Vilanovaecho "Trace backends $trace_backends" 4443e00e36fbSStefan Weilif test "$trace_backend" = "simple"; then 44449410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 4445e00e36fbSStefan Weilfi 4446c9dd4074SStefan Weilif test "$spice" = "yes"; then 44472e0e3c39SAlon Levyecho "spice support $spice ($spice_protocol_version/$spice_server_version)" 4448c9dd4074SStefan Weilelse 4449c9dd4074SStefan Weilecho "spice support $spice" 4450c9dd4074SStefan Weilfi 4451f27aaf4bSChristian Brunnerecho "rbd support $rbd" 4452dce512deSChristoph Hellwigecho "xfsctl support $xfs" 4453111a38b0SRobert Relyeaecho "nss used $smartcard_nss" 44542b2325ffSGerd Hoffmannecho "libusb $libusb" 445569354a83SHans de Goedeecho "usb net redir $usb_redir" 4456da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 4457c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 44586542aa9cSPeter Lievenecho "libnfs support $libnfs" 4459d138cee9SMichael Rothecho "build guest agent $guest_agent" 4460d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 4461f794573eSEduardo Otuboecho "seccomp support $seccomp" 44627c2acc70SPeter Maydellecho "coroutine backend $coroutine" 446370c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 4464eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 4465c9a12e75SChrysostomos Nanakosecho "Archipelago support $archipelago" 44661d728c39SBlue Swirlecho "gcov $gcov_tool" 44671d728c39SBlue Swirlecho "gcov enabled $gcov" 4468ab214c29SStefan Bergerecho "TPM support $tpm" 44690a12ec87SRichard W.M. Jonesecho "libssh2 support $libssh2" 44703b8acc11SPaolo Bonziniecho "TPM passthrough $tpm_passthrough" 44713556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 44724f18b782SJeff Codyecho "vhdx $vhdx" 447395c6bff3SBenoît Canetecho "Quorum $quorum" 4474607dacd0Sqiaonuohanecho "lzo support $lzo" 4475607dacd0Sqiaonuohanecho "snappy support $snappy" 44766b383c08SPeter Wuecho "bzip2 support $bzip2" 4477a99d57bbSWanlong Gaoecho "NUMA host support $numa" 44782847b469SFam Zhengecho "tcmalloc support $tcmalloc" 447967b915a5Sbellard 44801ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then 448124b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 4482e8cd23deSbellardfi 448397a847bcSbellard 448498ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 448597a847bcSbellard 4486dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 4487dbd99ae3SStefan Weil 448898ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 448998ec69acSJuan Quintelaecho >> $config_host_mak 449098ec69acSJuan Quintela 4491e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 449299d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 449399d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 44943aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 44958bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 44960f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 449799d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 449899d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 449922d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 45009afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 45019afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 4502e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 45035a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 4504785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 45055a699bbbSLaszlo Ersekfi 4506f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 4507f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 4508f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 4509834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 4510f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 4511804edf29SJuan Quintela 451298ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 4513727e5283SPaolo Bonzini 4514f8393946Saurel32if test "$debug_tcg" = "yes" ; then 45152358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 4516f8393946Saurel32fi 45171625af87Saliguoriif test "$strip_opt" = "yes" ; then 451852ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 45191625af87Saliguorifi 45207d13299dSbellardif test "$bigendian" = "yes" ; then 4521e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 452297a847bcSbellardfi 452367b915a5Sbellardif test "$mingw32" = "yes" ; then 452498ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 45259fe6de94SBlue Swirl rc_version=`cat $source_path/VERSION` 45269fe6de94SBlue Swirl version_major=${rc_version%%.*} 45279fe6de94SBlue Swirl rc_version=${rc_version#*.} 45289fe6de94SBlue Swirl version_minor=${rc_version%%.*} 45299fe6de94SBlue Swirl rc_version=${rc_version#*.} 45309fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 45319fe6de94SBlue Swirl version_micro=0 45329fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 45339fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4534d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 4535d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 4536d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 4537d9840e25STomoki Sekiyama fi 4538210fa556Spbrookelse 453935f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 4540210fa556Spbrookfi 4541128ab2ffSblueswir1 4542dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 4543dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 4544dffcb71cSMark McLoughlinfi 4545dffcb71cSMark McLoughlin 454683fb7adfSbellardif test "$darwin" = "yes" ; then 454798ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 454883fb7adfSbellardfi 4549b29fe3edSmalc 4550b29fe3edSmalcif test "$aix" = "yes" ; then 455198ec69acSJuan Quintela echo "CONFIG_AIX=y" >> $config_host_mak 4552b29fe3edSmalcfi 4553b29fe3edSmalc 4554ec530c81Sbellardif test "$solaris" = "yes" ; then 455598ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 45562358a494SJuan Quintela echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 45570475a5caSths if test "$needs_libsunmath" = "yes" ; then 455875b5a697SJuan Quintela echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 45590475a5caSths fi 4560ec530c81Sbellardfi 4561179cf400SAndreas Färberif test "$haiku" = "yes" ; then 4562179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 4563179cf400SAndreas Färberfi 456497a847bcSbellardif test "$static" = "yes" ; then 456598ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 456697a847bcSbellardfi 45671ba16968SStefan Weilif test "$profiler" = "yes" ; then 45682358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 456905c2a3e7Sbellardfi 4570c20709aaSbellardif test "$slirp" = "yes" ; then 457198ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 4572e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 4573c20709aaSbellardfi 45748a16d273Sthsif test "$vde" = "yes" ; then 457598ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 45768a16d273Sthsfi 457758952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 457858952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 457958952137SVincenzo Maffionefi 4580015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 4581015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 4582015a33bdSGongleifi 458347e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 458447e98658SCorey Bryant echo "CONFIG_LIBCAP=y" >> $config_host_mak 458547e98658SCorey Bryantfi 45862358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 45870c58ac1cSmalcfor drv in $audio_drv_list; do 4588bb55b712SStefan Weil def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 458998ec69acSJuan Quintela echo "$def=y" >> $config_host_mak 4590923e4521Smalc if test "$drv" = "fmod"; then 45917aac6cb1SJuan Quintela echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 4592fb065187Sbellard fi 45930c58ac1cSmalcdone 459467f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then 459567f86e8eSJuan Quintela echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 459667f86e8eSJuan Quintelafi 4597d5631638Smalcif test "$audio_win_int" = "yes" ; then 4598d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 4599d5631638Smalcfi 4600b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 4601b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 4602821601eaSJes Sorensenif test "$vnc" = "yes" ; then 4603821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 4604821601eaSJes Sorensenfi 46058d5d2d4cSthsif test "$vnc_tls" = "yes" ; then 460698ec69acSJuan Quintela echo "CONFIG_VNC_TLS=y" >> $config_host_mak 46078d5d2d4cSthsfi 46082f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 460998ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 46102f9606b3Saliguorifi 4611821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 46122f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 46132f6f5c7aSCorentin Charyfi 4614821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 4615efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 4616efe556adSCorentin Charyfi 46177536ee4bSTim Hardeckif test "$vnc_ws" = "yes" ; then 46187536ee4bSTim Hardeck echo "CONFIG_VNC_WS=y" >> $config_host_mak 46197536ee4bSTim Hardeck echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak 46207536ee4bSTim Hardeckfi 462176655d6dSaliguoriif test "$fnmatch" = "yes" ; then 46222358a494SJuan Quintela echo "CONFIG_FNMATCH=y" >> $config_host_mak 462376655d6dSaliguorifi 4624ee682d27SStefan Weilif test "$uuid" = "yes" ; then 4625ee682d27SStefan Weil echo "CONFIG_UUID=y" >> $config_host_mak 4626ee682d27SStefan Weilfi 4627dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 4628dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 4629dce512deSChristoph Hellwigfi 4630b1a550a0Spbrookqemu_version=`head $source_path/VERSION` 463198ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 46322358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 463398ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 463498ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak 4635a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 463698ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 4637cc8ae6deSpbrookfi 463817969268SFam Zhengif test "$modules" = "yes"; then 4639e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 4640e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 4641e26110cfSFam Zheng echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak 464217969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 464317969268SFam Zhengfi 46441ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 464598ec69acSJuan Quintela echo "CONFIG_SDL=y" >> $config_host_mak 4646a3f4d63dSCole Robinson echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 46478ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 464849ecc3faSbellardfi 464949ecc3faSbellardif test "$cocoa" = "yes" ; then 465098ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 465149ecc3faSbellardfi 46524d3b6f6eSbalrogif test "$curses" = "yes" ; then 465398ec69acSJuan Quintela echo "CONFIG_CURSES=y" >> $config_host_mak 4654ab4e5602SJan Kiszkafi 4655ebc996f3SRiku Voipioif test "$utimens" = "yes" ; then 46562358a494SJuan Quintela echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 4657ebc996f3SRiku Voipiofi 4658099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 46592358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 4660099d6b0fSRiku Voipiofi 466140ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 466240ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 466340ff6d7eSKevin Wolffi 46643ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 46652358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 46663ce34dfbSvibisreenivasanfi 4667c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 4668c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 4669c2882b96SRiku Voipiofi 4670d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 4671d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 4672d0927938SUlrich Hechtfi 46733d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 46743d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 46753d4fa43eSKusanagi Kouichifi 4676b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 4677b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 4678b953f075SDenis V. Lunevfi 4679ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 4680ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 4681ed911435SKevin Wolffi 4682c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 4683c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 4684c727f47dSPeter Maydellfi 4685dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 4686dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 4687dace20dcSPeter Maydellfi 4688d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 4689d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 4690d0927938SUlrich Hechtfi 46914e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 46924e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 46934e0c6529SAlex Blighfi 4694cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 4695cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 4696cd758dd0SAlex Blighfi 46973b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 46983b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 46993b6edd16SPeter Maydellfi 47003b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 47013b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 47023b6edd16SPeter Maydellfi 47033b6edd16SPeter Maydellif test "$epoll_pwait" = "yes" ; then 47043b6edd16SPeter Maydell echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 47053b6edd16SPeter Maydellfi 4706a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 4707a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 4708a8fd1abaSPeter Maydellfi 470951834341SRiku Voipioif test "$timerfd" = "yes" ; then 471051834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 471151834341SRiku Voipiofi 47129af5c906SRiku Voipioif test "$setns" = "yes" ; then 47139af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 47149af5c906SRiku Voipiofi 47153b3f24adSaurel32if test "$inotify" = "yes" ; then 47162358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 47173b3f24adSaurel32fi 4718c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 4719c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 4720c05c7a73SRiku Voipiofi 47216ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 47226ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 47236ae9a1f4SJuan Quintelafi 47246ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 47256ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 47266ae9a1f4SJuan Quintelafi 4727769ce76dSAlexander Grafif test "$curl" = "yes" ; then 4728d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 4729b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 47306ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 4731769ce76dSAlexander Graffi 47322e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 473398ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 47342e4d9fb1Saurel32fi 4735fb599c9aSbalrogif test "$bluez" = "yes" ; then 473698ec69acSJuan Quintela echo "CONFIG_BLUEZ=y" >> $config_host_mak 4737ef7635ecSJuan Quintela echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 4738fb599c9aSbalrogfi 47399d41401bSMichael S. Tsirkinif test "glib_subprocess" = "yes" ; then 47409d41401bSMichael S. Tsirkin echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 47419d41401bSMichael S. Tsirkinfi 4742e18df141SAnthony Liguoriecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 4743a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 4744a4ccabcfSAnthony Liguori echo "CONFIG_GTK=y" >> $config_host_mak 4745a3f4d63dSCole Robinson echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 4746a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 4747bbbf9bfbSStefan Weilfi 4748bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 4749bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 4750a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 4751a4ccabcfSAnthony Liguorifi 4752e37630caSaliguoriif test "$xen" = "yes" ; then 47536dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 4754d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 4755e37630caSaliguorifi 47565c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 47575c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 47585c6c3a6cSChristoph Hellwigfi 4759758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 4760758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 4761758e8e38SVenkateswararao Jujjuri (JV)fi 47624f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 47634f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 47644f26f2b6SAvi Kivityfi 4765983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 4766758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 4767758e8e38SVenkateswararao Jujjuri (JV)fi 47685e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 47695e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 47705e9be92dSNicholas Bellingerfi 477103ce5744SNikolay Nikolaevif test "$vhost_net" = "yes" ; then 477203ce5744SNikolay Nikolaev echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 477303ce5744SNikolay Nikolaevfi 477477755340Sthsif test "$blobs" = "yes" ; then 477598ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 477677755340Sthsfi 4777bf9298b9Saliguoriif test "$iovec" = "yes" ; then 47782358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 4779bf9298b9Saliguorifi 4780ceb42de8Saliguoriif test "$preadv" = "yes" ; then 47812358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 4782ceb42de8Saliguorifi 4783f652e6afSaurel32if test "$fdt" = "yes" ; then 47843f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 4785f652e6afSaurel32fi 4786dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 4787dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 4788dcc38d1cSMarcelo Tosattifi 47899195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 47909195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 47919195b2c2SStefan Weilfi 47925f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 47935f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 47945f6b9e8fSBlue Swirlfi 4795e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 4796e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 4797e78815a5SAndreas Färberfi 4798e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 4799e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 4800e78815a5SAndreas Färberfi 48011e9737daSRichard Hendersonif test "$sigev_thread_id" = "yes" ; then 48021e9737daSRichard Henderson echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak 48031e9737daSRichard Hendersonfi 480497a847bcSbellard 4805cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 4806cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 4807cd4ec0b4SGerd Hoffmannfi 4808cd4ec0b4SGerd Hoffmann 4809111a38b0SRobert Relyeaif test "$smartcard_nss" = "yes" ; then 4810111a38b0SRobert Relyea echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 48119d171bd9SMichael Tokarev echo "NSS_LIBS=$nss_libs" >> $config_host_mak 48129d171bd9SMichael Tokarev echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak 4813111a38b0SRobert Relyeafi 4814111a38b0SRobert Relyea 48152b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 48162b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 48172b2325ffSGerd Hoffmannfi 48182b2325ffSGerd Hoffmann 481969354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 482069354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 482169354a83SHans de Goedefi 482269354a83SHans de Goede 4823da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 4824da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 4825f676c67eSJeremy White echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak 4826da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 482720ff075bSMichael Wallefi 482820ff075bSMichael Walle 4829607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 4830607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 4831607dacd0Sqiaonuohanfi 4832607dacd0Sqiaonuohan 4833607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 4834607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 4835607dacd0Sqiaonuohanfi 4836607dacd0Sqiaonuohan 48376b383c08SPeter Wuif test "$bzip2" = "yes" ; then 48386b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 48396b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 48406b383c08SPeter Wufi 48416b383c08SPeter Wu 4842c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 4843d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 48446ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 48456ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 4846c589b249SRonnie Sahlbergfi 4847c589b249SRonnie Sahlberg 48486542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 48496542aa9cSPeter Lieven echo "CONFIG_LIBNFS=y" >> $config_host_mak 48506542aa9cSPeter Lievenfi 48516542aa9cSPeter Lieven 4852f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 4853f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 4854f794573eSEduardo Otubofi 4855f794573eSEduardo Otubo 485683fb7adfSbellard# XXX: suppress that 48577d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 48582358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 48597d3505c5Sbellardfi 48607d3505c5Sbellard 486120ff6c80SAnthony Liguoriif test "$zero_malloc" = "yes" ; then 486220ff6c80SAnthony Liguori echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 486320ff6c80SAnthony Liguorifi 48643556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 48653556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 48663556c233SPaolo Bonzinifi 4867f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 4868d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 48696ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 48706ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 4871f27aaf4bSChristian Brunnerfi 487220ff6c80SAnthony Liguori 48737c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 487470c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 487570c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 487670c60c08SStefan Hajnoczielse 487770c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 487870c60c08SStefan Hajnoczifi 4879d0e2fce5SAneesh Kumar K.V 4880d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 4881d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 4882d2042378SAneesh Kumar K.Vfi 4883d2042378SAneesh Kumar K.V 4884e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 4885e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 4886e06a765eSHarsh Prateek Borafi 4887e06a765eSHarsh Prateek Bora 4888cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 4889cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 489006d71fa1SPeter Maydellfi 489106d71fa1SPeter Maydell 48923f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 48933f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 48943f4349dcSKevin Wolffi 48953f4349dcSKevin Wolf 48968ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 48978ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 48988ab1bf12SLuiz Capitulinofi 48998ab1bf12SLuiz Capitulino 490076a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 490176a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 490276a347e1SRichard Hendersonfi 490376a347e1SRichard Henderson 4904f540166bSRichard Hendersonif test "$int128" = "yes" ; then 4905f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 4906f540166bSRichard Hendersonfi 4907f540166bSRichard Henderson 49081e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 49091e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 49101e6e9acaSRichard Hendersonfi 49111e6e9acaSRichard Henderson 4912eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 4913d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 49146ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 49156ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 4916eb100396SBharata B Raofi 4917eb100396SBharata B Rao 49180c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 49190c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 49200c14fb47SBharata B Raofi 49210c14fb47SBharata B Rao 49227c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 49237c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 49247c815372SBharata B Raofi 49257c815372SBharata B Rao 4926c9a12e75SChrysostomos Nanakosif test "$archipelago" = "yes" ; then 4927c9a12e75SChrysostomos Nanakos echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak 4928c9a12e75SChrysostomos Nanakos echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak 4929c9a12e75SChrysostomos Nanakosfi 4930c9a12e75SChrysostomos Nanakos 49310a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then 4932d3399d7cSFam Zheng echo "CONFIG_LIBSSH2=m" >> $config_host_mak 49336ebc91e5SFam Zheng echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 49346ebc91e5SFam Zheng echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 49350a12ec87SRichard W.M. Jonesfi 49360a12ec87SRichard W.M. Jones 493795c6bff3SBenoît Canetif test "$quorum" = "yes" ; then 493895c6bff3SBenoît Canet echo "CONFIG_QUORUM=y" >> $config_host_mak 493995c6bff3SBenoît Canetfi 494095c6bff3SBenoît Canet 49414f18b782SJeff Codyif test "$vhdx" = "yes" ; then 49424f18b782SJeff Cody echo "CONFIG_VHDX=y" >> $config_host_mak 49434f18b782SJeff Codyfi 49444f18b782SJeff Cody 494568063649Sblueswir1# USB host support 4946b5613fdcSGerd Hoffmannif test "$libusb" = "yes"; then 49472b2325ffSGerd Hoffmann echo "HOST_USB=libusb legacy" >> $config_host_mak 4948b5613fdcSGerd Hoffmannelse 494998ec69acSJuan Quintela echo "HOST_USB=stub" >> $config_host_mak 4950b5613fdcSGerd Hoffmannfi 495168063649Sblueswir1 49523b8acc11SPaolo Bonzini# TPM passthrough support? 49533b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 49543b8acc11SPaolo Bonzini echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 49553b8acc11SPaolo Bonzini if test "$tpm_passthrough" = "yes"; then 49563b8acc11SPaolo Bonzini echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 49573b8acc11SPaolo Bonzini fi 49583b8acc11SPaolo Bonzinifi 49593b8acc11SPaolo Bonzini 49605b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 49615b808275SLluís Vilanovaif have_backend "nop"; then 49626d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 496322890ab5SPrerna Saxenafi 49645b808275SLluís Vilanovaif have_backend "simple"; then 49656d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 49666d8a764eSLluís # Set the appropriate trace file. 4967953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 49689410b56cSPrerna Saxenafi 49695b808275SLluís Vilanovaif have_backend "stderr"; then 49706d8a764eSLluís echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 49716d8a764eSLluísfi 49725b808275SLluís Vilanovaif have_backend "ust"; then 49736d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 49746d8a764eSLluísfi 49755b808275SLluís Vilanovaif have_backend "dtrace"; then 49766d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 49776d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 49786d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 49796d8a764eSLluís fi 4980c276b17dSDaniel P. Berrangefi 49815b808275SLluís Vilanovaif have_backend "ftrace"; then 4982781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 4983781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 4984781e9545SEiichi Tsukata else 498521684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 4986781e9545SEiichi Tsukata fi 4987781e9545SEiichi Tsukatafi 49889410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 49899410b56cSPrerna Saxena 49902da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 49912da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 49922da776dbSMichael R. Hinesfi 49932da776dbSMichael R. Hines 49945c312079SDr. David Alan Gilbert# Hold two types of flag: 49955c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 49965c312079SDr. David Alan Gilbert# a thread we have a handle to 49975c312079SDr. David Alan Gilbert# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 49985c312079SDr. David Alan Gilbert# platform 49995c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then 50005c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 50015c312079SDr. David Alan Gilbert echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 50025c312079SDr. David Alan Gilbertfi 50035c312079SDr. David Alan Gilbert 50045b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 50055b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 50065b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 50075b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 50085b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 50095b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 5010c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 50115b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 501240d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 501340d964b5SRichard Henderson QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 50145b5e3037SPaolo Bonzinielse 50155b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 50165b5e3037SPaolo Bonzinifi 50175b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 50185b5e3037SPaolo Bonzini 501998ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 502098ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 5021804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 5022804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 50231901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 50241901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 502521655882SPaolo Bonziniif test -n "$libtool"; then 502621655882SPaolo Bonzini echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak 502721655882SPaolo Bonzini echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak 502821655882SPaolo Bonzinielse 50291901cb14SBrad echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 503021655882SPaolo Bonzini echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 503121655882SPaolo Bonzinifi 5032c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 5033804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 5034a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 5035a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 5036a31a8642SMichael S. Tsirkinfi 50372b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak 5038804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 503983f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 50403c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 5041804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 504245d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 50433dd46c78SBlue Swirlecho "AS=$as" >> $config_host_mak 50443dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 5045804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 5046804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 50474852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 50489fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 504944dc0ca3SAlon Levyecho "LIBTOOL=$libtool" >> $config_host_mak 5050e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 505146eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 5052a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 5053f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 5054e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 5055e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 505680fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 50572944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 5058e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 5059e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 5060e39f0062SPaolo Bonzinifi 506142da6041SGerd Hoffmannif test "$cross_prefix" != ""; then 506242da6041SGerd Hoffmann echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 506342da6041SGerd Hoffmannelse 506442da6041SGerd Hoffmann echo "AUTOCONF_HOST := " >> $config_host_mak 506542da6041SGerd Hoffmannfi 5066e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak 506746eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 506837746c5eSMarc-André Lureauecho "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak 506973da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 50703e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 5071804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 507217969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 507317969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 5074957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 507594dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 5076cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 50771d728c39SBlue Swirlif test "$gcov" = "yes" ; then 50781d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 50791d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 50801d728c39SBlue Swirlfi 5081804edf29SJuan Quintela 50826efd7517SPeter Maydell# use included Linux headers 50836efd7517SPeter Maydellif test "$linux" = "yes" ; then 5084a307beb6SAndreas Färber mkdir -p linux-headers 50856efd7517SPeter Maydell case "$cpu" in 5086c72b26ecSRichard Henderson i386|x86_64|x32) 508708312a63SPeter Maydell linux_arch=x86 50886efd7517SPeter Maydell ;; 50896efd7517SPeter Maydell ppcemb|ppc|ppc64) 509008312a63SPeter Maydell linux_arch=powerpc 50916efd7517SPeter Maydell ;; 50926efd7517SPeter Maydell s390x) 509308312a63SPeter Maydell linux_arch=s390 509408312a63SPeter Maydell ;; 50951f080313SClaudio Fontana aarch64) 50961f080313SClaudio Fontana linux_arch=arm64 50971f080313SClaudio Fontana ;; 5098222e7d11SSanjay Lal mips64) 5099222e7d11SSanjay Lal linux_arch=mips 5100222e7d11SSanjay Lal ;; 510108312a63SPeter Maydell *) 510208312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 510308312a63SPeter Maydell linux_arch="$cpu" 51046efd7517SPeter Maydell ;; 51056efd7517SPeter Maydell esac 510608312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 510708312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 510808312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 510908312a63SPeter Maydell fi 51106efd7517SPeter Maydellfi 51116efd7517SPeter Maydell 511297a847bcSbellardfor target in $target_list; do 511397a847bcSbellardtarget_dir="$target" 511425be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 5115c1799a84SPaolo Bonzinitarget_name=`echo $target | cut -d '-' -f 1` 511697a847bcSbellardtarget_bigendian="no" 51171f3d3c8fSJuan Quintela 5118c1799a84SPaolo Bonzinicase "$target_name" in 5119d15a9c23SAnthony Green armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 5120ea2d6a39SJuan Quintela target_bigendian=yes 5121ea2d6a39SJuan Quintela ;; 5122ea2d6a39SJuan Quintelaesac 512397a847bcSbellardtarget_softmmu="no" 5124997344f3Sbellardtarget_user_only="no" 5125831b7825Sthstarget_linux_user="no" 512684778508Sblueswir1target_bsd_user="no" 51279e407a85Spbrookcase "$target" in 5128c1799a84SPaolo Bonzini ${target_name}-softmmu) 51299e407a85Spbrook target_softmmu="yes" 51309e407a85Spbrook ;; 5131c1799a84SPaolo Bonzini ${target_name}-linux-user) 51329c7a4202SBlue Swirl if test "$linux" != "yes" ; then 513376ad07a4SPeter Maydell error_exit "Target '$target' is only available on a Linux host" 51349c7a4202SBlue Swirl fi 51359e407a85Spbrook target_user_only="yes" 51369e407a85Spbrook target_linux_user="yes" 51379e407a85Spbrook ;; 5138c1799a84SPaolo Bonzini ${target_name}-bsd-user) 51399cf55765SBlue Swirl if test "$bsd" != "yes" ; then 514076ad07a4SPeter Maydell error_exit "Target '$target' is only available on a BSD host" 51419c7a4202SBlue Swirl fi 514284778508Sblueswir1 target_user_only="yes" 514384778508Sblueswir1 target_bsd_user="yes" 514484778508Sblueswir1 ;; 51459e407a85Spbrook *) 514676ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 51479e407a85Spbrook exit 1 51489e407a85Spbrook ;; 51499e407a85Spbrookesac 5150831b7825Sths 515197a847bcSbellardmkdir -p $target_dir 515225be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 515397a847bcSbellard 5154e5fe0c52Spbrookbflt="no" 5155c1799a84SPaolo Bonziniinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"` 515656aebc89Spbrookgdb_xml_files="" 51577ba1e619Saliguori 5158c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 51596acff7daSJuan QuintelaTARGET_BASE_ARCH="" 5160e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 5161e73aae67SJuan Quintela 5162c1799a84SPaolo Bonzinicase "$target_name" in 51632408a527Saurel32 i386) 51642408a527Saurel32 ;; 51652408a527Saurel32 x86_64) 51666acff7daSJuan Quintela TARGET_BASE_ARCH=i386 51672408a527Saurel32 ;; 51682408a527Saurel32 alpha) 51692408a527Saurel32 ;; 51702408a527Saurel32 arm|armeb) 5171b498c8a0SJuan Quintela TARGET_ARCH=arm 5172e5fe0c52Spbrook bflt="yes" 517356aebc89Spbrook gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 51742408a527Saurel32 ;; 51756a49fa95SAlexander Graf aarch64) 51766a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 51776a49fa95SAlexander Graf bflt="yes" 51788f95ce2eSPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 51796a49fa95SAlexander Graf ;; 51802408a527Saurel32 cris) 51812408a527Saurel32 ;; 5182613a22c9SMichael Walle lm32) 5183613a22c9SMichael Walle ;; 51842408a527Saurel32 m68k) 51850938cda5Saurel32 bflt="yes" 518656aebc89Spbrook gdb_xml_files="cf-core.xml cf-fp.xml" 51872408a527Saurel32 ;; 5188877fdc12SEdgar E. Iglesias microblaze|microblazeel) 5189877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 519072b675caSEdgar E. Iglesias bflt="yes" 519172b675caSEdgar E. Iglesias ;; 51922408a527Saurel32 mips|mipsel) 5193b498c8a0SJuan Quintela TARGET_ARCH=mips 519425be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 51952408a527Saurel32 ;; 51962408a527Saurel32 mipsn32|mipsn32el) 5197597e2cecSRichard Henderson TARGET_ARCH=mips64 51986acff7daSJuan Quintela TARGET_BASE_ARCH=mips 519925be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 5200597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 52012408a527Saurel32 ;; 52022408a527Saurel32 mips64|mips64el) 5203b498c8a0SJuan Quintela TARGET_ARCH=mips64 52046acff7daSJuan Quintela TARGET_BASE_ARCH=mips 520525be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 52062408a527Saurel32 ;; 52070aaeb118SBastian Koppelmann tricore) 52080aaeb118SBastian Koppelmann ;; 5209d15a9c23SAnthony Green moxie) 5210d15a9c23SAnthony Green ;; 5211e67db06eSJia Liu or32) 5212e67db06eSJia Liu TARGET_ARCH=openrisc 5213e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 5214e67db06eSJia Liu ;; 52152408a527Saurel32 ppc) 5216c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52172408a527Saurel32 ;; 52182408a527Saurel32 ppcemb) 52196acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5220e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 5221c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52222408a527Saurel32 ;; 52232408a527Saurel32 ppc64) 52246acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5225e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 5226c8b3532dSaurel32 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52272408a527Saurel32 ;; 52289c35126cSDoug Kwan ppc64le) 52299c35126cSDoug Kwan TARGET_ARCH=ppc64 52309c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 52319c35126cSDoug Kwan TARGET_ABI_DIR=ppc 52329c35126cSDoug Kwan gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52339c35126cSDoug Kwan ;; 52342408a527Saurel32 ppc64abi32) 5235b498c8a0SJuan Quintela TARGET_ARCH=ppc64 52366acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5237e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 523825be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 5239c8b3532dSaurel32 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52402408a527Saurel32 ;; 52412408a527Saurel32 sh4|sh4eb) 5242b498c8a0SJuan Quintela TARGET_ARCH=sh4 52434dbed897Spbrook bflt="yes" 52442408a527Saurel32 ;; 52452408a527Saurel32 sparc) 52462408a527Saurel32 ;; 52472408a527Saurel32 sparc64) 52486acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 52492408a527Saurel32 ;; 52502408a527Saurel32 sparc32plus) 5251b498c8a0SJuan Quintela TARGET_ARCH=sparc64 52526acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 5253e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 525425be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 52552408a527Saurel32 ;; 525624e804ecSAlexander Graf s390x) 52576117afacSDavid Hildenbrand gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml" 525824e804ecSAlexander Graf ;; 5259d2fbca94SGuan Xuetao unicore32) 5260d2fbca94SGuan Xuetao ;; 5261cfa550c6SMax Filippov xtensa|xtensaeb) 5262cfa550c6SMax Filippov TARGET_ARCH=xtensa 5263cfa550c6SMax Filippov ;; 52642408a527Saurel32 *) 526576ad07a4SPeter Maydell error_exit "Unsupported target CPU" 52662408a527Saurel32 ;; 52672408a527Saurel32esac 52685e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 52695e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 52705e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 52715e8861a0SPaolo Bonzinifi 52725e8861a0SPaolo Bonzini 52735e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 52745e8861a0SPaolo Bonzini 527599afc91dSDaniel P. Berrangeupper() { 527699afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 527799afc91dSDaniel P. Berrange} 527899afc91dSDaniel P. Berrange 527999afc91dSDaniel P. Berrangetarget_arch_name="`upper $TARGET_ARCH`" 528025be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 5281c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 528225be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 5283e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 5284e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 5285e6e91b9cSJuan Quintelafi 528625be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 5287adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 5288adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 5289adfc3e91SStacey Sonfi 5290c1799a84SPaolo Bonzinicase "$target_name" in 52911b0c87fcSJuan Quintela i386|x86_64) 52921b0c87fcSJuan Quintela if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 529325be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 5294eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 5295eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 5296eb6fda0fSAnthony PERARD fi 5297432d268cSJun Nakajima fi 529859d21e53SAlexander Graf ;; 529959d21e53SAlexander Graf *) 53001b0c87fcSJuan Quintelaesac 5301c1799a84SPaolo Bonzinicase "$target_name" in 5302222e7d11SSanjay Lal aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips) 5303c59249f9SJuan Quintela # Make sure the target and host cpus are compatible 5304c59249f9SJuan Quintela if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 5305c1799a84SPaolo Bonzini \( "$target_name" = "$cpu" -o \ 5306c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 5307c1799a84SPaolo Bonzini \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 5308c1799a84SPaolo Bonzini \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 5309c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 5310222e7d11SSanjay Lal \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \ 5311c1799a84SPaolo Bonzini \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 531218b8263eSMichael Tokarev \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \ 531318b8263eSMichael Tokarev \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \ 531418b8263eSMichael Tokarev \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then 531525be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 53161ba16968SStefan Weil if test "$vhost_net" = "yes" ; then 5317d5970055SMichael S. Tsirkin echo "CONFIG_VHOST_NET=y" >> $config_target_mak 5318d5970055SMichael S. Tsirkin fi 5319c59249f9SJuan Quintela fi 5320c59249f9SJuan Quintelaesac 5321de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 532225be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 532397a847bcSbellardfi 532497a847bcSbellardif test "$target_softmmu" = "yes" ; then 532525be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 5326de83cd02Sbellardfi 5327997344f3Sbellardif test "$target_user_only" = "yes" ; then 532825be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 5329a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 5330997344f3Sbellardfi 5331831b7825Sthsif test "$target_linux_user" = "yes" ; then 533225be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 5333831b7825Sthsfi 533456aebc89Spbrooklist="" 533556aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 533656aebc89Spbrook for x in $gdb_xml_files; do 533756aebc89Spbrook list="$list $source_path/gdb-xml/$x" 533856aebc89Spbrook done 533925be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 53403d0f1517SJuan Quintelafi 5341de83cd02Sbellard 5342e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 534325be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 5344e5fe0c52Spbrookfi 5345379f6698SPaul Brookif test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 534625be210fSJuan Quintela echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 5347379f6698SPaul Brookfi 534884778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 534925be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 535084778508Sblueswir1fi 53515b0753e0Sbellard 53524afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets 5353fa282484SJuan Quintela 53544afddb55SJuan Quintelacflags="" 5355fa282484SJuan Quintelaldflags="" 53569b8e111fSJuan Quintela 535764656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 535864656024SJuan Quintela case "$i" in 535964656024SJuan Quintela alpha) 536025be210fSJuan Quintela echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 536176cad711SPaolo Bonzini echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak 536264656024SJuan Quintela ;; 536382295d8aSRichard Henderson aarch64) 536482295d8aSRichard Henderson if test -n "${cxx}"; then 536582295d8aSRichard Henderson echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 536682295d8aSRichard Henderson echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 536782295d8aSRichard Henderson fi 536882295d8aSRichard Henderson ;; 536964656024SJuan Quintela arm) 537025be210fSJuan Quintela echo "CONFIG_ARM_DIS=y" >> $config_target_mak 537176cad711SPaolo Bonzini echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak 5372999b53ecSClaudio Fontana if test -n "${cxx}"; then 5373999b53ecSClaudio Fontana echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5374999b53ecSClaudio Fontana echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5375999b53ecSClaudio Fontana fi 537664656024SJuan Quintela ;; 537764656024SJuan Quintela cris) 537825be210fSJuan Quintela echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 537976cad711SPaolo Bonzini echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak 538064656024SJuan Quintela ;; 538164656024SJuan Quintela hppa) 538225be210fSJuan Quintela echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 538376cad711SPaolo Bonzini echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak 538464656024SJuan Quintela ;; 5385c72b26ecSRichard Henderson i386|x86_64|x32) 538625be210fSJuan Quintela echo "CONFIG_I386_DIS=y" >> $config_target_mak 538776cad711SPaolo Bonzini echo "CONFIG_I386_DIS=y" >> config-all-disas.mak 538864656024SJuan Quintela ;; 5389903ec55cSAurelien Jarno ia64*) 5390903ec55cSAurelien Jarno echo "CONFIG_IA64_DIS=y" >> $config_target_mak 539176cad711SPaolo Bonzini echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak 5392903ec55cSAurelien Jarno ;; 539379368f49SMichael Walle lm32) 539479368f49SMichael Walle echo "CONFIG_LM32_DIS=y" >> $config_target_mak 539576cad711SPaolo Bonzini echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak 539679368f49SMichael Walle ;; 539764656024SJuan Quintela m68k) 539825be210fSJuan Quintela echo "CONFIG_M68K_DIS=y" >> $config_target_mak 539976cad711SPaolo Bonzini echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak 540064656024SJuan Quintela ;; 5401877fdc12SEdgar E. Iglesias microblaze*) 540225be210fSJuan Quintela echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 540376cad711SPaolo Bonzini echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak 540464656024SJuan Quintela ;; 540564656024SJuan Quintela mips*) 540625be210fSJuan Quintela echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 540776cad711SPaolo Bonzini echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak 540864656024SJuan Quintela ;; 5409d15a9c23SAnthony Green moxie*) 5410d15a9c23SAnthony Green echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak 5411d15a9c23SAnthony Green echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak 5412d15a9c23SAnthony Green ;; 5413e67db06eSJia Liu or32) 5414e67db06eSJia Liu echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak 541576cad711SPaolo Bonzini echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak 5416e67db06eSJia Liu ;; 541764656024SJuan Quintela ppc*) 541825be210fSJuan Quintela echo "CONFIG_PPC_DIS=y" >> $config_target_mak 541976cad711SPaolo Bonzini echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak 542064656024SJuan Quintela ;; 542124e804ecSAlexander Graf s390*) 542225be210fSJuan Quintela echo "CONFIG_S390_DIS=y" >> $config_target_mak 542376cad711SPaolo Bonzini echo "CONFIG_S390_DIS=y" >> config-all-disas.mak 542464656024SJuan Quintela ;; 542564656024SJuan Quintela sh4) 542625be210fSJuan Quintela echo "CONFIG_SH4_DIS=y" >> $config_target_mak 542776cad711SPaolo Bonzini echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak 542864656024SJuan Quintela ;; 542964656024SJuan Quintela sparc*) 543025be210fSJuan Quintela echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 543176cad711SPaolo Bonzini echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak 543264656024SJuan Quintela ;; 5433cfa550c6SMax Filippov xtensa*) 5434cfa550c6SMax Filippov echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 543576cad711SPaolo Bonzini echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak 5436cfa550c6SMax Filippov ;; 543764656024SJuan Quintela esac 543864656024SJuan Quinteladone 54399195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 54409195b2c2SStefan Weil echo "CONFIG_TCI_DIS=y" >> $config_target_mak 544176cad711SPaolo Bonzini echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak 54429195b2c2SStefan Weilfi 544364656024SJuan Quintela 54446ee7126fSJuan Quintelacase "$ARCH" in 54456ee7126fSJuan Quintelaalpha) 54466ee7126fSJuan Quintela # Ensure there's only a single GP 54476ee7126fSJuan Quintela cflags="-msmall-data $cflags" 54486ee7126fSJuan Quintela;; 54496ee7126fSJuan Quintelaesac 54506ee7126fSJuan Quintela 5451d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 545225be210fSJuan Quintela echo "TARGET_GPROF=yes" >> $config_target_mak 5453d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 5454d02c1db3SJuan Quintela cflags="-p $cflags" 5455d02c1db3SJuan Quintela ldflags="-p $ldflags" 5456d02c1db3SJuan Quintela fi 5457d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 5458d02c1db3SJuan Quintela ldflags="-p $ldflags" 545925be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 5460d02c1db3SJuan Quintela fi 5461d02c1db3SJuan Quintelafi 5462d02c1db3SJuan Quintela 54639b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 5464964c6fa1SRichard Henderson ldflags="$ldflags $textseg_ldflags" 5465fa282484SJuan Quintelafi 5466fa282484SJuan Quintela 546725be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak 546825be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 5469fa282484SJuan Quintela 547097a847bcSbellarddone # for target in $targets 54717d13299dSbellard 5472b776eca1SGerd Hoffmannif [ "$pixman" = "internal" ]; then 5473b776eca1SGerd Hoffmann echo "config-host.h: subdir-pixman" >> $config_host_mak 5474b776eca1SGerd Hoffmannfi 5475b776eca1SGerd Hoffmann 54762da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 54772da776dbSMichael R. Hinesecho "CONFIG_RDMA=y" >> $config_host_mak 54782da776dbSMichael R. Hinesfi 54792da776dbSMichael R. Hines 5480a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then 5481a540f158SPeter Crosthwaite echo "config-host.h: subdir-dtc" >> $config_host_mak 5482a540f158SPeter Crosthwaitefi 5483a540f158SPeter Crosthwaite 5484a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 5485a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 5486a99d57bbSWanlong Gaofi 5487a99d57bbSWanlong Gao 5488d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory 5489f93296eaSWenchao XiaDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 54902b170effSMichael TokarevDIRS="$DIRS fsdev" 54919933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 54922d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 54932dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated" 5494c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 5495c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 5496aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 5497ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 5498446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile" 54999933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile" 55002d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 55014652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp" 5502753d11f2SRichard Hendersonfor bios_file in \ 5503753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 55045acc2ec0SGerd Hoffmann $source_path/pc-bios/*.aml \ 5505753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 5506753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 5507e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 5508753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 55094e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 5510753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 5511753d11f2SRichard Hendersondo 55127ea78b74SJan Kiszka FILES="$FILES pc-bios/`basename $bios_file`" 55137ea78b74SJan Kiszkadone 5514c2304b52SMarcel Apfelbaumfor test_file in `find $source_path/tests/acpi-test-data -type f` 5515c2304b52SMarcel Apfelbaumdo 5516c2304b52SMarcel Apfelbaum FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`" 5517c2304b52SMarcel Apfelbaumdone 5518d1807a4fSPaolo Bonzinimkdir -p $DIRS 55197d13299dSbellardfor f in $FILES ; do 5520cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 5521f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 5522f9245e10SPeter Maydell fi 55237d13299dSbellarddone 55241ad2134fSPaul Brook 5525c34ebfdcSAnthony Liguori# temporary config to build submodules 55262d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 5527c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 552837116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 5529c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 55303dd46c78SBlue Swirl echo "AS=$as" >> $config_mak 5531c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 5532c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 55333dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 5534c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 5535a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 5536c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 5537c34ebfdcSAnthony Liguoridone 5538c34ebfdcSAnthony Liguori 553976c7560aSMax Reitz# set up qemu-iotests in this build directory 554076c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 554176c7560aSMax Reitziotests_check="tests/qemu-iotests/check" 554276c7560aSMax Reitz 554376c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 554476c7560aSMax Reitzecho >> "$iotests_common_env" 554576c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 554676c7560aSMax Reitz 554776c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then 554876c7560aSMax Reitz symlink "$source_path/$iotests_check" "$iotests_check" 554976c7560aSMax Reitzfi 555076c7560aSMax Reitz 5551dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 5552dc655404SMichael S. Tsirkincat <<EOD >config.status 5553dc655404SMichael S. Tsirkin#!/bin/sh 5554dc655404SMichael S. Tsirkin# Generated by configure. 5555dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 5556dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 5557dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 5558dc655404SMichael S. TsirkinEOD 5559dc655404SMichael S. Tsirkinprintf "exec" >>config.status 5560dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status 5561dc655404SMichael S. Tsirkinecho >>config.status 5562dc655404SMichael S. Tsirkinchmod +x config.status 5563dc655404SMichael S. Tsirkin 55648cd05ab6SPeter Maydellrm -r "$TMPDIR1" 5565