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 155940d6444eSAvi Kivityif test "$pie" = ""; then 156040d6444eSAvi Kivity case "$cpu-$targetos" in 1561c72b26ecSRichard Henderson i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 156240d6444eSAvi Kivity ;; 156340d6444eSAvi Kivity *) 156440d6444eSAvi Kivity pie="no" 156540d6444eSAvi Kivity ;; 156640d6444eSAvi Kivity esac 156740d6444eSAvi Kivityfi 156840d6444eSAvi Kivity 156940d6444eSAvi Kivityif test "$pie" != "no" ; then 157040d6444eSAvi Kivity cat > $TMPC << EOF 157121d4a791SAvi Kivity 157221d4a791SAvi Kivity#ifdef __linux__ 157321d4a791SAvi Kivity# define THREAD __thread 157421d4a791SAvi Kivity#else 157521d4a791SAvi Kivity# define THREAD 157621d4a791SAvi Kivity#endif 157721d4a791SAvi Kivity 157821d4a791SAvi Kivitystatic THREAD int tls_var; 157921d4a791SAvi Kivity 158021d4a791SAvi Kivityint main(void) { return tls_var; } 158121d4a791SAvi Kivity 158240d6444eSAvi KivityEOF 158340d6444eSAvi Kivity if compile_prog "-fPIE -DPIE" "-pie"; then 158440d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 158540d6444eSAvi Kivity LDFLAGS="-pie $LDFLAGS" 158640d6444eSAvi Kivity pie="yes" 158740d6444eSAvi Kivity if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 158840d6444eSAvi Kivity LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 158940d6444eSAvi Kivity fi 159040d6444eSAvi Kivity else 159140d6444eSAvi Kivity if test "$pie" = "yes"; then 159276ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 159340d6444eSAvi Kivity else 159440d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 159540d6444eSAvi Kivity pie="no" 159640d6444eSAvi Kivity fi 159740d6444eSAvi Kivity fi 159846eef33bSBrad 159946eef33bSBrad if compile_prog "-fno-pie" "-nopie"; then 160046eef33bSBrad CFLAGS_NOPIE="-fno-pie" 160146eef33bSBrad LDFLAGS_NOPIE="-nopie" 160246eef33bSBrad fi 160340d6444eSAvi Kivityfi 160440d6444eSAvi Kivity 160566518bf6SDon Slutz# check for broken gcc and libtool in RHEL5 160666518bf6SDon Slutzif test -n "$libtool" -a "$pie" != "no" ; then 160766518bf6SDon Slutz cat > $TMPC <<EOF 160866518bf6SDon Slutz 160966518bf6SDon Slutzvoid *f(unsigned char *buf, int len); 161066518bf6SDon Slutzvoid *g(unsigned char *buf, int len); 161166518bf6SDon Slutz 161266518bf6SDon Slutzvoid * 161366518bf6SDon Slutzf(unsigned char *buf, int len) 161466518bf6SDon Slutz{ 161566518bf6SDon Slutz return (void*)0L; 161666518bf6SDon Slutz} 161766518bf6SDon Slutz 161866518bf6SDon Slutzvoid * 161966518bf6SDon Slutzg(unsigned char *buf, int len) 162066518bf6SDon Slutz{ 162166518bf6SDon Slutz return f(buf, len); 162266518bf6SDon Slutz} 162366518bf6SDon Slutz 162466518bf6SDon SlutzEOF 162566518bf6SDon Slutz if ! libtool_prog; then 162666518bf6SDon Slutz echo "Disabling libtool due to broken toolchain support" 162766518bf6SDon Slutz libtool= 162866518bf6SDon Slutz fi 162966518bf6SDon Slutzfi 163066518bf6SDon Slutz 163109dada40SPaolo Bonzini########################################## 163209dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 163309dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 163409dada40SPaolo Bonzini# specification is necessary 163509dada40SPaolo Bonzini 163609dada40SPaolo Bonziniif test "$cpu" = "i386"; then 163709dada40SPaolo Bonzini cat > $TMPC << EOF 163809dada40SPaolo Bonzinistatic int sfaa(int *ptr) 163909dada40SPaolo Bonzini{ 164009dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 164109dada40SPaolo Bonzini} 164209dada40SPaolo Bonzini 164309dada40SPaolo Bonziniint main(void) 164409dada40SPaolo Bonzini{ 164509dada40SPaolo Bonzini int val = 42; 16461405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 164709dada40SPaolo Bonzini sfaa(&val); 164809dada40SPaolo Bonzini return val; 164909dada40SPaolo Bonzini} 165009dada40SPaolo BonziniEOF 165109dada40SPaolo Bonzini if ! compile_prog "" "" ; then 165209dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 165309dada40SPaolo Bonzini fi 165409dada40SPaolo Bonzinifi 165509dada40SPaolo Bonzini 165609dada40SPaolo Bonzini######################################### 1657ec530c81Sbellard# Solaris specific configure tool chain decisions 165809dada40SPaolo Bonzini 1659ec530c81Sbellardif test "$solaris" = "yes" ; then 16606792aa11SLoïc Minier if has $install; then 16616792aa11SLoïc Minier : 16626792aa11SLoïc Minier else 166376ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 166476ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 166576ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1666ec530c81Sbellard fi 16676792aa11SLoïc Minier if test "`path_of $install`" = "/usr/sbin/install" ; then 166876ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 166976ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 167076ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1671ec530c81Sbellard fi 16726792aa11SLoïc Minier if has ar; then 16736792aa11SLoïc Minier : 16746792aa11SLoïc Minier else 1675ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 167676ad07a4SPeter Maydell error_exit "No path includes ar" \ 167776ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 1678ec530c81Sbellard fi 167976ad07a4SPeter Maydell error_exit "No path includes ar" 1680ec530c81Sbellard fi 1681ec530c81Sbellardfi 1682ec530c81Sbellard 1683afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 1684121afa9eSAnthony Liguori target_list="$default_target_list" 1685121afa9eSAnthony Liguorielse 1686121afa9eSAnthony Liguori target_list=`echo "$target_list" | sed -e 's/,/ /g'` 16875327cf48Sbellardfi 168825b48338SPeter Maydell 168925b48338SPeter Maydell# Check that we recognised the target name; this allows a more 169025b48338SPeter Maydell# friendly error message than if we let it fall through. 169125b48338SPeter Maydellfor target in $target_list; do 169225b48338SPeter Maydell case " $default_target_list " in 169325b48338SPeter Maydell *" $target "*) 169425b48338SPeter Maydell ;; 169525b48338SPeter Maydell *) 169625b48338SPeter Maydell error_exit "Unknown target name '$target'" 169725b48338SPeter Maydell ;; 169825b48338SPeter Maydell esac 169925b48338SPeter Maydelldone 170025b48338SPeter Maydell 1701f55fe278SPaolo Bonzini# see if system emulation was really requested 1702f55fe278SPaolo Bonzinicase " $target_list " in 1703f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 1704f55fe278SPaolo Bonzini ;; 1705f55fe278SPaolo Bonzini *) softmmu=no 1706f55fe278SPaolo Bonzini ;; 1707f55fe278SPaolo Bonziniesac 17085327cf48Sbellard 1709249247c9SJuan Quintelafeature_not_found() { 1710249247c9SJuan Quintela feature=$1 171121684af0SStewart Smith remedy=$2 1712249247c9SJuan Quintela 171376ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 171421684af0SStewart Smith "configure was not able to find it." \ 171521684af0SStewart Smith "$remedy" 1716249247c9SJuan Quintela} 1717249247c9SJuan Quintela 17187d13299dSbellard# --- 17197d13299dSbellard# big/little endian test 17207d13299dSbellardcat > $TMPC << EOF 172161cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 172261cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 172361cc919fSMike Frysingerextern int foo(short *, short *); 172461cc919fSMike Frysingerint main(int argc, char *argv[]) { 172561cc919fSMike Frysinger return foo(big_endian, little_endian); 17267d13299dSbellard} 17277d13299dSbellardEOF 17287d13299dSbellard 172961cc919fSMike Frysingerif compile_object ; then 173061cc919fSMike Frysinger if grep -q BiGeNdIaN $TMPO ; then 173161cc919fSMike Frysinger bigendian="yes" 173261cc919fSMike Frysinger elif grep -q LiTtLeEnDiAn $TMPO ; then 173361cc919fSMike Frysinger bigendian="no" 17347d13299dSbellard else 17357d13299dSbellard echo big/little test failed 17367d13299dSbellard fi 17377d13299dSbellardelse 173861cc919fSMike Frysinger echo big/little test failed 17397d13299dSbellardfi 17407d13299dSbellard 1741b0a47e79SJuan Quintela########################################## 1742015a33bdSGonglei# L2TPV3 probe 1743015a33bdSGonglei 1744015a33bdSGongleicat > $TMPC <<EOF 1745015a33bdSGonglei#include <sys/socket.h> 1746bff6cb72SMichael Tokarev#include <linux/ip.h> 1747015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 1748015a33bdSGongleiEOF 1749015a33bdSGongleiif compile_prog "" "" ; then 1750015a33bdSGonglei l2tpv3=yes 1751015a33bdSGongleielse 1752015a33bdSGonglei l2tpv3=no 1753015a33bdSGongleifi 1754015a33bdSGonglei 1755015a33bdSGonglei########################################## 1756779ab5e3SStefan Weil# pkg-config probe 1757779ab5e3SStefan Weil 1758779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 175976ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 1760779ab5e3SStefan Weilfi 1761779ab5e3SStefan Weil 1762779ab5e3SStefan Weil########################################## 1763b0a47e79SJuan Quintela# NPTL probe 1764b0a47e79SJuan Quintela 176524cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 1766bd0c5661Spbrook cat > $TMPC <<EOF 1767bd0c5661Spbrook#include <sched.h> 176830813ceaSpbrook#include <linux/futex.h> 1769182eacc0SStefan Weilint main(void) { 1770bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1771bd0c5661Spbrook#error bork 1772bd0c5661Spbrook#endif 1773182eacc0SStefan Weil return 0; 1774bd0c5661Spbrook} 1775bd0c5661SpbrookEOF 177624cb36a6SPeter Maydell if ! compile_object ; then 177721684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 1778b0a47e79SJuan Quintela fi 1779bd0c5661Spbrookfi 1780bd0c5661Spbrook 178111d9f695Sbellard########################################## 1782ac62922eSbalrog# zlib check 1783ac62922eSbalrog 17841ece9905SAlon Levyif test "$zlib" != "no" ; then 1785ac62922eSbalrog cat > $TMPC << EOF 1786ac62922eSbalrog#include <zlib.h> 1787ac62922eSbalrogint main(void) { zlibVersion(); return 0; } 1788ac62922eSbalrogEOF 178952166aa0SJuan Quintela if compile_prog "" "-lz" ; then 1790ac62922eSbalrog : 1791ac62922eSbalrog else 179276ad07a4SPeter Maydell error_exit "zlib check failed" \ 179376ad07a4SPeter Maydell "Make sure to have the zlib libs and headers installed." 1794ac62922eSbalrog fi 17951ece9905SAlon Levyfi 1796eb0ecd5aSWill NewtonLIBS="$LIBS -lz" 1797ac62922eSbalrog 1798ac62922eSbalrog########################################## 1799607dacd0Sqiaonuohan# lzo check 1800607dacd0Sqiaonuohan 1801607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 1802607dacd0Sqiaonuohan cat > $TMPC << EOF 1803607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 1804607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 1805607dacd0SqiaonuohanEOF 1806607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 1807607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 1808b25c9dffSStefan Weil lzo="yes" 1809b25c9dffSStefan Weil else 1810b25c9dffSStefan Weil if test "$lzo" = "yes"; then 1811b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 1812b25c9dffSStefan Weil fi 1813b25c9dffSStefan Weil lzo="no" 1814b25c9dffSStefan Weil fi 1815607dacd0Sqiaonuohanfi 1816607dacd0Sqiaonuohan 1817607dacd0Sqiaonuohan########################################## 1818607dacd0Sqiaonuohan# snappy check 1819607dacd0Sqiaonuohan 1820607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 1821607dacd0Sqiaonuohan cat > $TMPC << EOF 1822607dacd0Sqiaonuohan#include <snappy-c.h> 1823607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 1824607dacd0SqiaonuohanEOF 1825607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 1826607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 1827b25c9dffSStefan Weil snappy="yes" 1828b25c9dffSStefan Weil else 1829b25c9dffSStefan Weil if test "$snappy" = "yes"; then 1830b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 1831b25c9dffSStefan Weil fi 1832b25c9dffSStefan Weil snappy="no" 1833b25c9dffSStefan Weil fi 1834607dacd0Sqiaonuohanfi 1835607dacd0Sqiaonuohan 1836607dacd0Sqiaonuohan########################################## 18376b383c08SPeter Wu# bzip2 check 18386b383c08SPeter Wu 18396b383c08SPeter Wuif test "$bzip2" != "no" ; then 18406b383c08SPeter Wu cat > $TMPC << EOF 18416b383c08SPeter Wu#include <bzlib.h> 18426b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 18436b383c08SPeter WuEOF 18446b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 18456b383c08SPeter Wu bzip2="yes" 18466b383c08SPeter Wu else 18476b383c08SPeter Wu if test "$bzip2" = "yes"; then 18486b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 18496b383c08SPeter Wu fi 18506b383c08SPeter Wu bzip2="no" 18516b383c08SPeter Wu fi 18526b383c08SPeter Wufi 18536b383c08SPeter Wu 18546b383c08SPeter Wu########################################## 1855f794573eSEduardo Otubo# libseccomp check 1856f794573eSEduardo Otubo 1857f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 1858ae6e8ef1SPeter Maydell if test "$cpu" = "i386" || test "$cpu" = "x86_64" && 1859ae6e8ef1SPeter Maydell $pkg_config --atleast-version=2.1.1 libseccomp; then 1860b4451996SMichael Tokarev libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`" 1861372e47e9SAndreas Färber QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`" 1862f794573eSEduardo Otubo seccomp="yes" 1863f794573eSEduardo Otubo else 1864f794573eSEduardo Otubo if test "$seccomp" = "yes"; then 1865896848f0SEduardo Otubo feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1" 1866896848f0SEduardo Otubo fi 1867e84d5956SYann E. MORIN seccomp="no" 1868f794573eSEduardo Otubo fi 1869f794573eSEduardo Otubofi 1870f794573eSEduardo Otubo########################################## 1871e37630caSaliguori# xen probe 1872e37630caSaliguori 1873fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 1874b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 1875d5b93ddfSAnthony PERARD 187650ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 187750ced5b3SStefan Weil # If no, we are done and there is no Xen support. 187850ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 187950ced5b3SStefan Weil 188050ced5b3SStefan Weil # Xen (any) 188150ced5b3SStefan Weil cat > $TMPC <<EOF 188250ced5b3SStefan Weil#include <xenctrl.h> 188350ced5b3SStefan Weilint main(void) { 188450ced5b3SStefan Weil return 0; 188550ced5b3SStefan Weil} 188650ced5b3SStefan WeilEOF 188750ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 188850ced5b3SStefan Weil # Xen not found 188950ced5b3SStefan Weil if test "$xen" = "yes" ; then 189021684af0SStewart Smith feature_not_found "xen" "Install xen devel" 189150ced5b3SStefan Weil fi 189250ced5b3SStefan Weil xen=no 189350ced5b3SStefan Weil 1894d5b93ddfSAnthony PERARD # Xen unstable 189569deef08SPeter Maydell elif 189669deef08SPeter Maydell cat > $TMPC <<EOF && 1897e37630caSaliguori#include <xenctrl.h> 1898e108a3c1SAnthony PERARD#include <xenstore.h> 1899d5b93ddfSAnthony PERARD#include <stdint.h> 1900d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 1901d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 1902d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 1903d5b93ddfSAnthony PERARD#endif 1904d5b93ddfSAnthony PERARDint main(void) { 1905d5b93ddfSAnthony PERARD xc_interface *xc; 1906d5b93ddfSAnthony PERARD xs_daemon_open(); 1907d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 1908d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1909d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 1910b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 19118688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 19123996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 19133996e85cSPaul Durrant return 0; 19143996e85cSPaul Durrant} 19153996e85cSPaul DurrantEOF 19163996e85cSPaul Durrant compile_prog "" "$xen_libs" 19173996e85cSPaul Durrant then 19183996e85cSPaul Durrant xen_ctrl_version=450 19193996e85cSPaul Durrant xen=yes 19203996e85cSPaul Durrant 19213996e85cSPaul Durrant elif 19223996e85cSPaul Durrant cat > $TMPC <<EOF && 19233996e85cSPaul Durrant#include <xenctrl.h> 19243996e85cSPaul Durrant#include <xenstore.h> 19253996e85cSPaul Durrant#include <stdint.h> 19263996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 19273996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 19283996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 19293996e85cSPaul Durrant#endif 19303996e85cSPaul Durrantint main(void) { 19313996e85cSPaul Durrant xc_interface *xc; 19323996e85cSPaul Durrant xs_daemon_open(); 19333996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 19343996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 19353996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 19363996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 19373996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 19388688e065SStefano Stabellini return 0; 19398688e065SStefano Stabellini} 19408688e065SStefano StabelliniEOF 19418688e065SStefano Stabellini compile_prog "" "$xen_libs" 194269deef08SPeter Maydell then 19438688e065SStefano Stabellini xen_ctrl_version=420 19448688e065SStefano Stabellini xen=yes 19458688e065SStefano Stabellini 194669deef08SPeter Maydell elif 194769deef08SPeter Maydell cat > $TMPC <<EOF && 19488688e065SStefano Stabellini#include <xenctrl.h> 19498688e065SStefano Stabellini#include <xs.h> 19508688e065SStefano Stabellini#include <stdint.h> 19518688e065SStefano Stabellini#include <xen/hvm/hvm_info_table.h> 19528688e065SStefano Stabellini#if !defined(HVM_MAX_VCPUS) 19538688e065SStefano Stabellini# error HVM_MAX_VCPUS not defined 19548688e065SStefano Stabellini#endif 19558688e065SStefano Stabelliniint main(void) { 19568688e065SStefano Stabellini xs_daemon_open(); 19579b4c0b56SPeter Maydell xc_interface_open(0, 0, 0); 19588688e065SStefano Stabellini xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 19598688e065SStefano Stabellini xc_gnttab_open(NULL, 0); 19608688e065SStefano Stabellini xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1961d5b93ddfSAnthony PERARD return 0; 1962d5b93ddfSAnthony PERARD} 1963e37630caSaliguoriEOF 196450ced5b3SStefan Weil compile_prog "" "$xen_libs" 196569deef08SPeter Maydell then 1966d5b93ddfSAnthony PERARD xen_ctrl_version=410 1967fc321b4bSJuan Quintela xen=yes 1968d5b93ddfSAnthony PERARD 1969d5b93ddfSAnthony PERARD # Xen 4.0.0 197069deef08SPeter Maydell elif 197169deef08SPeter Maydell cat > $TMPC <<EOF && 1972d5b93ddfSAnthony PERARD#include <xenctrl.h> 1973d5b93ddfSAnthony PERARD#include <xs.h> 1974d5b93ddfSAnthony PERARD#include <stdint.h> 1975d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 1976d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 1977d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 1978d5b93ddfSAnthony PERARD#endif 1979d5b93ddfSAnthony PERARDint main(void) { 1980b87de24eSAnthony PERARD struct xen_add_to_physmap xatp = { 1981b87de24eSAnthony PERARD .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1982b87de24eSAnthony PERARD }; 1983d5b93ddfSAnthony PERARD xs_daemon_open(); 1984d5b93ddfSAnthony PERARD xc_interface_open(); 1985d5b93ddfSAnthony PERARD xc_gnttab_open(); 1986d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1987b87de24eSAnthony PERARD xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1988d5b93ddfSAnthony PERARD return 0; 1989d5b93ddfSAnthony PERARD} 1990d5b93ddfSAnthony PERARDEOF 1991d5b93ddfSAnthony PERARD compile_prog "" "$xen_libs" 199269deef08SPeter Maydell then 1993d5b93ddfSAnthony PERARD xen_ctrl_version=400 1994d5b93ddfSAnthony PERARD xen=yes 1995d5b93ddfSAnthony PERARD 1996b87de24eSAnthony PERARD # Xen 3.4.0 199769deef08SPeter Maydell elif 199869deef08SPeter Maydell cat > $TMPC <<EOF && 1999b87de24eSAnthony PERARD#include <xenctrl.h> 2000b87de24eSAnthony PERARD#include <xs.h> 2001b87de24eSAnthony PERARDint main(void) { 2002b87de24eSAnthony PERARD struct xen_add_to_physmap xatp = { 2003b87de24eSAnthony PERARD .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 2004b87de24eSAnthony PERARD }; 2005b87de24eSAnthony PERARD xs_daemon_open(); 2006b87de24eSAnthony PERARD xc_interface_open(); 2007b87de24eSAnthony PERARD xc_gnttab_open(); 2008b87de24eSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2009b87de24eSAnthony PERARD xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 2010b87de24eSAnthony PERARD return 0; 2011b87de24eSAnthony PERARD} 2012b87de24eSAnthony PERARDEOF 2013b87de24eSAnthony PERARD compile_prog "" "$xen_libs" 201469deef08SPeter Maydell then 2015b87de24eSAnthony PERARD xen_ctrl_version=340 2016b87de24eSAnthony PERARD xen=yes 2017b87de24eSAnthony PERARD 2018b87de24eSAnthony PERARD # Xen 3.3.0 201969deef08SPeter Maydell elif 202069deef08SPeter Maydell cat > $TMPC <<EOF && 2021d5b93ddfSAnthony PERARD#include <xenctrl.h> 2022d5b93ddfSAnthony PERARD#include <xs.h> 2023d5b93ddfSAnthony PERARDint main(void) { 2024d5b93ddfSAnthony PERARD xs_daemon_open(); 2025d5b93ddfSAnthony PERARD xc_interface_open(); 2026d5b93ddfSAnthony PERARD xc_gnttab_open(); 2027d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2028d5b93ddfSAnthony PERARD return 0; 2029d5b93ddfSAnthony PERARD} 2030d5b93ddfSAnthony PERARDEOF 2031d5b93ddfSAnthony PERARD compile_prog "" "$xen_libs" 203269deef08SPeter Maydell then 2033d5b93ddfSAnthony PERARD xen_ctrl_version=330 2034d5b93ddfSAnthony PERARD xen=yes 2035d5b93ddfSAnthony PERARD 203650ced5b3SStefan Weil # Xen version unsupported 2037e37630caSaliguori else 2038fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 203921684af0SStewart Smith feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)" 2040fc321b4bSJuan Quintela fi 2041fc321b4bSJuan Quintela xen=no 2042e37630caSaliguori fi 2043d5b93ddfSAnthony PERARD 2044d5b93ddfSAnthony PERARD if test "$xen" = yes; then 2045d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 2046d5b93ddfSAnthony PERARD fi 2047e37630caSaliguorifi 2048e37630caSaliguori 2049eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 2050eb6fda0fSAnthony PERARD if test "$xen" = "yes" && test "$linux" = "yes" && 2051eb6fda0fSAnthony PERARD test "$xen_ctrl_version" -ge 340; then 2052eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 2053eb6fda0fSAnthony PERARD else 2054eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 2055eb6fda0fSAnthony PERARD if test "$xen_ctrl_version" -lt 340; then 205676ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 205776ad07a4SPeter Maydell "This feature does not work with Xen 3.3" 2058eb6fda0fSAnthony PERARD fi 205976ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 206076ad07a4SPeter Maydell " but this feature requires /sys from Linux" 2061eb6fda0fSAnthony PERARD fi 2062eb6fda0fSAnthony PERARD xen_pci_passthrough=no 2063eb6fda0fSAnthony PERARD fi 2064eb6fda0fSAnthony PERARDfi 2065eb6fda0fSAnthony PERARD 2066e37630caSaliguori########################################## 206744dc0ca3SAlon Levy# libtool probe 206844dc0ca3SAlon Levy 20693f534581SBradif ! has $libtool; then 207044dc0ca3SAlon Levy libtool= 207144dc0ca3SAlon Levyfi 207244dc0ca3SAlon Levy 20738e515b12SPeter Maydell# MacOSX ships with a libtool which isn't the GNU one; weed this 20748e515b12SPeter Maydell# out by checking whether libtool supports the --version switch 20758e515b12SPeter Maydellif test -n "$libtool"; then 20768e515b12SPeter Maydell if ! "$libtool" --version >/dev/null 2>&1; then 20778e515b12SPeter Maydell libtool= 20788e515b12SPeter Maydell fi 20798e515b12SPeter Maydellfi 20808e515b12SPeter Maydell 208144dc0ca3SAlon Levy########################################## 2082dfffc653SJuan Quintela# Sparse probe 2083dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 20840dba6195SLoïc Minier if has cgcc; then 2085dfffc653SJuan Quintela sparse=yes 2086dfffc653SJuan Quintela else 2087dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 208821684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 2089dfffc653SJuan Quintela fi 2090dfffc653SJuan Quintela sparse=no 2091dfffc653SJuan Quintela fi 2092dfffc653SJuan Quintelafi 2093dfffc653SJuan Quintela 2094dfffc653SJuan Quintela########################################## 2095f676c67eSJeremy White# X11 probe 2096f676c67eSJeremy Whitex11_cflags= 2097f676c67eSJeremy Whitex11_libs=-lX11 2098f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 2099f676c67eSJeremy White x11_cflags=`$pkg_config --cflags x11` 2100f676c67eSJeremy White x11_libs=`$pkg_config --libs x11` 2101f676c67eSJeremy Whitefi 2102f676c67eSJeremy White 2103f676c67eSJeremy White########################################## 2104a4ccabcfSAnthony Liguori# GTK probe 2105a4ccabcfSAnthony Liguori 21069e04c683SStefan Weilif test "$gtkabi" = ""; then 21079e04c683SStefan Weil # The GTK ABI was not specified explicitly, so try whether 2.0 is available. 21089e04c683SStefan Weil # Use 3.0 as a fallback if that is available. 21099e04c683SStefan Weil if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 21109e04c683SStefan Weil gtkabi=2.0 21119e04c683SStefan Weil elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 21129e04c683SStefan Weil gtkabi=3.0 21139e04c683SStefan Weil else 21149e04c683SStefan Weil gtkabi=2.0 21159e04c683SStefan Weil fi 21169e04c683SStefan Weilfi 21179e04c683SStefan Weil 2118a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then 2119528de90aSDaniel P. Berrange gtkpackage="gtk+-$gtkabi" 21200a337ed0SGerd Hoffmann gtkx11package="gtk+-x11-$gtkabi" 2121528de90aSDaniel P. Berrange if test "$gtkabi" = "3.0" ; then 2122528de90aSDaniel P. Berrange gtkversion="3.0.0" 2123bbbf9bfbSStefan Weil else 2124bbbf9bfbSStefan Weil gtkversion="2.18.0" 2125bbbf9bfbSStefan Weil fi 2126bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 2127bbbf9bfbSStefan Weil gtk_cflags=`$pkg_config --cflags $gtkpackage` 2128bbbf9bfbSStefan Weil gtk_libs=`$pkg_config --libs $gtkpackage` 21290a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 2130f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 2131f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 21320a337ed0SGerd Hoffmann fi 2133bbbf9bfbSStefan Weil libs_softmmu="$gtk_libs $libs_softmmu" 2134bbbf9bfbSStefan Weil gtk="yes" 2135bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 21369e04c683SStefan Weil feature_not_found "gtk" "Install gtk2 or gtk3 devel" 2137bbbf9bfbSStefan Weil else 2138bbbf9bfbSStefan Weil gtk="no" 2139bbbf9bfbSStefan Weil fi 2140bbbf9bfbSStefan Weilfi 2141bbbf9bfbSStefan Weil 2142bbbf9bfbSStefan Weil########################################## 2143bbbf9bfbSStefan Weil# VTE probe 2144bbbf9bfbSStefan Weil 2145bbbf9bfbSStefan Weilif test "$vte" != "no"; then 2146bbbf9bfbSStefan Weil if test "$gtkabi" = "3.0"; then 2147528de90aSDaniel P. Berrange vtepackage="vte-2.90" 2148528de90aSDaniel P. Berrange vteversion="0.32.0" 2149528de90aSDaniel P. Berrange else 2150528de90aSDaniel P. Berrange vtepackage="vte" 2151528de90aSDaniel P. Berrange vteversion="0.24.0" 2152528de90aSDaniel P. Berrange fi 2153bbbf9bfbSStefan Weil if $pkg_config --exists "$vtepackage >= $vteversion"; then 2154ca871ec8SStefan Weil vte_cflags=`$pkg_config --cflags $vtepackage` 2155ca871ec8SStefan Weil vte_libs=`$pkg_config --libs $vtepackage` 2156bbbf9bfbSStefan Weil libs_softmmu="$vte_libs $libs_softmmu" 2157bbbf9bfbSStefan Weil vte="yes" 2158bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 21599e04c683SStefan Weil if test "$gtkabi" = "3.0"; then 21609e04c683SStefan Weil feature_not_found "vte" "Install libvte-2.90 devel" 21619e04c683SStefan Weil else 21629e04c683SStefan Weil feature_not_found "vte" "Install libvte devel" 21639e04c683SStefan Weil fi 2164bbbf9bfbSStefan Weil else 2165bbbf9bfbSStefan Weil vte="no" 2166a4ccabcfSAnthony Liguori fi 2167a4ccabcfSAnthony Liguorifi 2168a4ccabcfSAnthony Liguori 2169a4ccabcfSAnthony Liguori########################################## 217011d9f695Sbellard# SDL probe 217111d9f695Sbellard 21723ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config). Try 21733ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 217447c03744SDave Airlie 217547c03744SDave Airlieif test $sdlabi = "2.0"; then 217647c03744SDave Airlie sdl_config=$sdl2_config 217747c03744SDave Airlie sdlname=sdl2 217847c03744SDave Airlie sdlconfigname=sdl2_config 217947c03744SDave Airlieelse 218047c03744SDave Airlie sdlname=sdl 218147c03744SDave Airlie sdlconfigname=sdl_config 21823ec87ffeSPaolo Bonzinifi 21833ec87ffeSPaolo Bonzini 218447c03744SDave Airlieif test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then 218547c03744SDave Airlie sdl_config=$sdlconfigname 218647c03744SDave Airliefi 218747c03744SDave Airlie 218847c03744SDave Airlieif $pkg_config $sdlname --exists; then 218947c03744SDave Airlie sdlconfig="$pkg_config $sdlname" 2190fec0e3e8SStefan Weil _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 21913ec87ffeSPaolo Bonzinielif has ${sdl_config}; then 21923ec87ffeSPaolo Bonzini sdlconfig="$sdl_config" 21939316f803SPaolo Bonzini _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 2194a0dfd8a4SLoïc Minierelse 2195a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 219621684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2197a0dfd8a4SLoïc Minier fi 2198a0dfd8a4SLoïc Minier sdl=no 21999316f803SPaolo Bonzinifi 220029e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 22013ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 22023ec87ffeSPaolo Bonzinifi 220311d9f695Sbellard 22049316f803SPaolo Bonzinisdl_too_old=no 2205c4198157SJuan Quintelaif test "$sdl" != "no" ; then 220611d9f695Sbellard cat > $TMPC << EOF 220711d9f695Sbellard#include <SDL.h> 220811d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 220911d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 221011d9f695SbellardEOF 22119316f803SPaolo Bonzini sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 221274f42e18STeLeMan if test "$static" = "yes" ; then 221374f42e18STeLeMan sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 221474f42e18STeLeMan else 22159316f803SPaolo Bonzini sdl_libs=`$sdlconfig --libs 2> /dev/null` 221674f42e18STeLeMan fi 221752166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 221811d9f695Sbellard if test "$_sdlversion" -lt 121 ; then 221911d9f695Sbellard sdl_too_old=yes 222011d9f695Sbellard else 2221fd677642Sths if test "$cocoa" = "no" ; then 222211d9f695Sbellard sdl=yes 222311d9f695Sbellard fi 2224fd677642Sths fi 22257c1f25b4Sbellard 222667c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 22271ac88f28SJuan Quintela if test "$sdl" = "yes" -a "$static" = "yes" ; then 222867c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 2229f8aa6c7bSStefan Weil sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 2230f8aa6c7bSStefan Weil sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 223111d9f695Sbellard fi 223252166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 22331ac88f28SJuan Quintela : 22341ac88f28SJuan Quintela else 22351ac88f28SJuan Quintela sdl=no 22367c1f25b4Sbellard fi 22377c1f25b4Sbellard fi # static link 2238c4198157SJuan Quintela else # sdl not found 2239c4198157SJuan Quintela if test "$sdl" = "yes" ; then 224021684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2241c4198157SJuan Quintela fi 2242c4198157SJuan Quintela sdl=no 22437c1f25b4Sbellard fi # sdl compile test 2244fd677642Sthsfi 224511d9f695Sbellard 22465368a422Saliguoriif test "$sdl" = "yes" ; then 22475368a422Saliguori cat > $TMPC <<EOF 22485368a422Saliguori#include <SDL.h> 22495368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 22505368a422Saliguori#include <X11/XKBlib.h> 22515368a422Saliguori#else 22525368a422Saliguori#error No x11 support 22535368a422Saliguori#endif 22545368a422Saliguoriint main(void) { return 0; } 22555368a422SaliguoriEOF 2256f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 2257f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 2258f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 22595368a422Saliguori fi 22600705667eSJuan Quintela libs_softmmu="$sdl_libs $libs_softmmu" 22615368a422Saliguorifi 22625368a422Saliguori 22638f28f3fbSths########################################## 22642da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 22652da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 22662da776dbSMichael R. Hines cat > $TMPC <<EOF 22672da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 22682da776dbSMichael R. Hinesint main(void) { return 0; } 22692da776dbSMichael R. HinesEOF 22702da776dbSMichael R. Hines rdma_libs="-lrdmacm -libverbs" 22712da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 22722da776dbSMichael R. Hines rdma="yes" 22732da776dbSMichael R. Hines libs_softmmu="$libs_softmmu $rdma_libs" 22742da776dbSMichael R. Hines else 22752da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 22762da776dbSMichael R. Hines error_exit \ 22772da776dbSMichael R. Hines " OpenFabrics librdmacm/libibverbs not present." \ 22782da776dbSMichael R. Hines " Your options:" \ 22792da776dbSMichael R. Hines " (1) Fast: Install infiniband packages from your distro." \ 22802da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 22812da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 22822da776dbSMichael R. Hines fi 22832da776dbSMichael R. Hines rdma="no" 22842da776dbSMichael R. Hines fi 22852da776dbSMichael R. Hinesfi 22862da776dbSMichael R. Hines 22872da776dbSMichael R. Hines########################################## 22887536ee4bSTim Hardeck# VNC TLS/WS detection 22897536ee4bSTim Hardeckif test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then 2290ae6b5e5aSaliguori cat > $TMPC <<EOF 2291ae6b5e5aSaliguori#include <gnutls/gnutls.h> 2292ae6b5e5aSaliguoriint main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 2293ae6b5e5aSaliguoriEOF 2294a8bd70adSPaolo Bonzini vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 2295a8bd70adSPaolo Bonzini vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 229652166aa0SJuan Quintela if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 22977536ee4bSTim Hardeck if test "$vnc_tls" != "no" ; then 22981be10ad2SJuan Quintela vnc_tls=yes 22997536ee4bSTim Hardeck fi 23007536ee4bSTim Hardeck if test "$vnc_ws" != "no" ; then 23017536ee4bSTim Hardeck vnc_ws=yes 23027536ee4bSTim Hardeck fi 2303a5e32cc9SJuan Quintela libs_softmmu="$vnc_tls_libs $libs_softmmu" 2304ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags" 2305ae6b5e5aSaliguori else 23061be10ad2SJuan Quintela if test "$vnc_tls" = "yes" ; then 230721684af0SStewart Smith feature_not_found "vnc-tls" "Install gnutls devel" 23081be10ad2SJuan Quintela fi 23097536ee4bSTim Hardeck if test "$vnc_ws" = "yes" ; then 231021684af0SStewart Smith feature_not_found "vnc-ws" "Install gnutls devel" 23117536ee4bSTim Hardeck fi 23121be10ad2SJuan Quintela vnc_tls=no 23137536ee4bSTim Hardeck vnc_ws=no 23148d5d2d4cSths fi 23158d5d2d4cSthsfi 23168d5d2d4cSths 23178d5d2d4cSths########################################## 231895c6bff3SBenoît Canet# Quorum probe (check for gnutls) 231995c6bff3SBenoît Canetif test "$quorum" != "no" ; then 232095c6bff3SBenoît Canetcat > $TMPC <<EOF 232195c6bff3SBenoît Canet#include <gnutls/gnutls.h> 232295c6bff3SBenoît Canet#include <gnutls/crypto.h> 232395c6bff3SBenoît Canetint main(void) {char data[4096], digest[32]; 232495c6bff3SBenoît Canetgnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest); 232595c6bff3SBenoît Canetreturn 0; 232695c6bff3SBenoît Canet} 232795c6bff3SBenoît CanetEOF 232895c6bff3SBenoît Canetquorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 232995c6bff3SBenoît Canetquorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 233095c6bff3SBenoît Canetif compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then 233195c6bff3SBenoît Canet qcow_tls=yes 233295c6bff3SBenoît Canet libs_softmmu="$quorum_tls_libs $libs_softmmu" 233395c6bff3SBenoît Canet libs_tools="$quorum_tls_libs $libs_softmmu" 233495c6bff3SBenoît Canet QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags" 2335b25c9dffSStefan Weil quorum="yes" 233695c6bff3SBenoît Canetelse 2337b25c9dffSStefan Weil if test "$quorum" = "yes"; then 2338b25c9dffSStefan Weil feature_not_found "gnutls" "gnutls > 2.10.0 required to compile Quorum" 2339b25c9dffSStefan Weil fi 2340b25c9dffSStefan Weil quorum="no" 234195c6bff3SBenoît Canetfi 234295c6bff3SBenoît Canetfi 234395c6bff3SBenoît Canet 234495c6bff3SBenoît Canet########################################## 23452f9606b3Saliguori# VNC SASL detection 2346821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 23472f9606b3Saliguori cat > $TMPC <<EOF 23482f9606b3Saliguori#include <sasl/sasl.h> 23492f9606b3Saliguori#include <stdio.h> 23502f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 23512f9606b3SaliguoriEOF 23522f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 23532f9606b3Saliguori vnc_sasl_cflags="" 23542f9606b3Saliguori vnc_sasl_libs="-lsasl2" 235552166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2356ea784e3bSJuan Quintela vnc_sasl=yes 2357fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2358ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 23592f9606b3Saliguori else 2360ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 236121684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2362ea784e3bSJuan Quintela fi 2363ea784e3bSJuan Quintela vnc_sasl=no 23642f9606b3Saliguori fi 23652f9606b3Saliguorifi 23662f9606b3Saliguori 23672f9606b3Saliguori########################################## 23682f6f5c7aSCorentin Chary# VNC JPEG detection 2369821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 23702f6f5c7aSCorentin Charycat > $TMPC <<EOF 23712f6f5c7aSCorentin Chary#include <stdio.h> 23722f6f5c7aSCorentin Chary#include <jpeglib.h> 23732f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 23742f6f5c7aSCorentin CharyEOF 23752f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 23762f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 23772f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 23782f6f5c7aSCorentin Chary vnc_jpeg=yes 23792f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2380ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 23812f6f5c7aSCorentin Chary else 23822f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 238321684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 23842f6f5c7aSCorentin Chary fi 23852f6f5c7aSCorentin Chary vnc_jpeg=no 23862f6f5c7aSCorentin Chary fi 23872f6f5c7aSCorentin Charyfi 23882f6f5c7aSCorentin Chary 23892f6f5c7aSCorentin Chary########################################## 2390efe556adSCorentin Chary# VNC PNG detection 2391821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2392efe556adSCorentin Charycat > $TMPC <<EOF 2393efe556adSCorentin Chary//#include <stdio.h> 2394efe556adSCorentin Chary#include <png.h> 2395832ce9c2SScott Wood#include <stddef.h> 2396efe556adSCorentin Charyint main(void) { 2397efe556adSCorentin Chary png_structp png_ptr; 2398efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 23997edc3fedSPeter Maydell return png_ptr != 0; 2400efe556adSCorentin Chary} 2401efe556adSCorentin CharyEOF 240265d5d3f9SStefan Weil if $pkg_config libpng --exists; then 2403ca871ec8SStefan Weil vnc_png_cflags=`$pkg_config libpng --cflags` 2404ca871ec8SStefan Weil vnc_png_libs=`$pkg_config libpng --libs` 24059af8025eSBrad else 2406efe556adSCorentin Chary vnc_png_cflags="" 2407efe556adSCorentin Chary vnc_png_libs="-lpng" 24089af8025eSBrad fi 2409efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2410efe556adSCorentin Chary vnc_png=yes 2411efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 24129af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2413efe556adSCorentin Chary else 2414efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 241521684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 2416efe556adSCorentin Chary fi 2417efe556adSCorentin Chary vnc_png=no 2418efe556adSCorentin Chary fi 2419efe556adSCorentin Charyfi 2420efe556adSCorentin Chary 2421efe556adSCorentin Chary########################################## 242276655d6dSaliguori# fnmatch() probe, used for ACL routines 242376655d6dSaliguorifnmatch="no" 242476655d6dSaliguoricat > $TMPC << EOF 242576655d6dSaliguori#include <fnmatch.h> 242676655d6dSaliguoriint main(void) 242776655d6dSaliguori{ 242876655d6dSaliguori fnmatch("foo", "foo", 0); 242976655d6dSaliguori return 0; 243076655d6dSaliguori} 243176655d6dSaliguoriEOF 243252166aa0SJuan Quintelaif compile_prog "" "" ; then 243376655d6dSaliguori fnmatch="yes" 243476655d6dSaliguorifi 243576655d6dSaliguori 243676655d6dSaliguori########################################## 2437ee682d27SStefan Weil# uuid_generate() probe, used for vdi block driver 24382d16c8e9SPeter Maydell# Note that on some systems (notably MacOSX) no extra library 24392d16c8e9SPeter Maydell# need be linked to get the uuid functions. 2440ee682d27SStefan Weilif test "$uuid" != "no" ; then 2441ee682d27SStefan Weil uuid_libs="-luuid" 2442ee682d27SStefan Weil cat > $TMPC << EOF 2443ee682d27SStefan Weil#include <uuid/uuid.h> 2444ee682d27SStefan Weilint main(void) 2445ee682d27SStefan Weil{ 2446ee682d27SStefan Weil uuid_t my_uuid; 2447ee682d27SStefan Weil uuid_generate(my_uuid); 2448ee682d27SStefan Weil return 0; 2449ee682d27SStefan Weil} 2450ee682d27SStefan WeilEOF 24512d16c8e9SPeter Maydell if compile_prog "" "" ; then 24522d16c8e9SPeter Maydell uuid="yes" 24532d16c8e9SPeter Maydell elif compile_prog "" "$uuid_libs" ; then 2454ee682d27SStefan Weil uuid="yes" 2455ee682d27SStefan Weil libs_softmmu="$uuid_libs $libs_softmmu" 2456ee682d27SStefan Weil libs_tools="$uuid_libs $libs_tools" 2457ee682d27SStefan Weil else 2458ee682d27SStefan Weil if test "$uuid" = "yes" ; then 245921684af0SStewart Smith feature_not_found "uuid" "Install libuuid devel" 2460ee682d27SStefan Weil fi 2461ee682d27SStefan Weil uuid=no 2462ee682d27SStefan Weil fi 2463ee682d27SStefan Weilfi 2464ee682d27SStefan Weil 24654f18b782SJeff Codyif test "$vhdx" = "yes" ; then 24664f18b782SJeff Cody if test "$uuid" = "no" ; then 24674f18b782SJeff Cody error_exit "uuid required for VHDX support" 24684f18b782SJeff Cody fi 24694f18b782SJeff Codyelif test "$vhdx" != "no" ; then 24704f18b782SJeff Cody if test "$uuid" = "yes" ; then 24714f18b782SJeff Cody vhdx=yes 24724f18b782SJeff Cody else 24734f18b782SJeff Cody vhdx=no 24744f18b782SJeff Cody fi 24754f18b782SJeff Codyfi 24764f18b782SJeff Cody 2477ee682d27SStefan Weil########################################## 2478dce512deSChristoph Hellwig# xfsctl() probe, used for raw-posix 2479dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 2480dce512deSChristoph Hellwig cat > $TMPC << EOF 2481ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 2482dce512deSChristoph Hellwig#include <xfs/xfs.h> 2483dce512deSChristoph Hellwigint main(void) 2484dce512deSChristoph Hellwig{ 2485dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 2486dce512deSChristoph Hellwig return 0; 2487dce512deSChristoph Hellwig} 2488dce512deSChristoph HellwigEOF 2489dce512deSChristoph Hellwig if compile_prog "" "" ; then 2490dce512deSChristoph Hellwig xfs="yes" 2491dce512deSChristoph Hellwig else 2492dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 249321684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 2494dce512deSChristoph Hellwig fi 2495dce512deSChristoph Hellwig xfs=no 2496dce512deSChristoph Hellwig fi 2497dce512deSChristoph Hellwigfi 2498dce512deSChristoph Hellwig 2499dce512deSChristoph Hellwig########################################## 25008a16d273Sths# vde libraries probe 2501dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 25024baae0acSJuan Quintela vde_libs="-lvdeplug" 25038a16d273Sths cat > $TMPC << EOF 25048a16d273Sths#include <libvdeplug.h> 25054a7f0e06Spbrookint main(void) 25064a7f0e06Spbrook{ 25074a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 2508fea08e08SPeter Maydell char s[] = ""; 2509fea08e08SPeter Maydell vde_open(s, s, &a); 25104a7f0e06Spbrook return 0; 25114a7f0e06Spbrook} 25128a16d273SthsEOF 251352166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 25144baae0acSJuan Quintela vde=yes 25158e02e54cSJuan Quintela libs_softmmu="$vde_libs $libs_softmmu" 25168e02e54cSJuan Quintela libs_tools="$vde_libs $libs_tools" 2517dfb278bdSJuan Quintela else 2518dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 251921684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 2520dfb278bdSJuan Quintela fi 2521dfb278bdSJuan Quintela vde=no 25228a16d273Sths fi 25238a16d273Sthsfi 25248a16d273Sths 25258a16d273Sths########################################## 25260a985b37SVincenzo Maffione# netmap support probe 25270a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 25280a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 25290a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 25300a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 25310a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 253258952137SVincenzo Maffioneif test "$netmap" != "no" ; then 253358952137SVincenzo Maffione cat > $TMPC << EOF 253458952137SVincenzo Maffione#include <inttypes.h> 253558952137SVincenzo Maffione#include <net/if.h> 253658952137SVincenzo Maffione#include <net/netmap.h> 253758952137SVincenzo Maffione#include <net/netmap_user.h> 25380a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 25390a985b37SVincenzo Maffione#error 25400a985b37SVincenzo Maffione#endif 254158952137SVincenzo Maffioneint main(void) { return 0; } 254258952137SVincenzo MaffioneEOF 254358952137SVincenzo Maffione if compile_prog "" "" ; then 254458952137SVincenzo Maffione netmap=yes 254558952137SVincenzo Maffione else 254658952137SVincenzo Maffione if test "$netmap" = "yes" ; then 254758952137SVincenzo Maffione feature_not_found "netmap" 254858952137SVincenzo Maffione fi 254958952137SVincenzo Maffione netmap=no 255058952137SVincenzo Maffione fi 255158952137SVincenzo Maffionefi 255258952137SVincenzo Maffione 255358952137SVincenzo Maffione########################################## 255447e98658SCorey Bryant# libcap-ng library probe 255547e98658SCorey Bryantif test "$cap_ng" != "no" ; then 255647e98658SCorey Bryant cap_libs="-lcap-ng" 255747e98658SCorey Bryant cat > $TMPC << EOF 255847e98658SCorey Bryant#include <cap-ng.h> 255947e98658SCorey Bryantint main(void) 256047e98658SCorey Bryant{ 256147e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 256247e98658SCorey Bryant return 0; 256347e98658SCorey Bryant} 256447e98658SCorey BryantEOF 256547e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 256647e98658SCorey Bryant cap_ng=yes 256747e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 256847e98658SCorey Bryant else 256947e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 257021684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 257147e98658SCorey Bryant fi 257247e98658SCorey Bryant cap_ng=no 257347e98658SCorey Bryant fi 257447e98658SCorey Bryantfi 257547e98658SCorey Bryant 257647e98658SCorey Bryant########################################## 2577c2de5c91Smalc# Sound support libraries probe 25788f28f3fbSths 2579c2de5c91Smalcaudio_drv_probe() 2580c2de5c91Smalc{ 2581c2de5c91Smalc drv=$1 2582c2de5c91Smalc hdr=$2 2583c2de5c91Smalc lib=$3 2584c2de5c91Smalc exp=$4 2585c2de5c91Smalc cfl=$5 25868f28f3fbSths cat > $TMPC << EOF 2587c2de5c91Smalc#include <$hdr> 2588c2de5c91Smalcint main(void) { $exp } 25898f28f3fbSthsEOF 259052166aa0SJuan Quintela if compile_prog "$cfl" "$lib" ; then 25918f28f3fbSths : 25928f28f3fbSths else 259376ad07a4SPeter Maydell error_exit "$drv check failed" \ 259476ad07a4SPeter Maydell "Make sure to have the $drv libs and headers installed." 25958f28f3fbSths fi 2596c2de5c91Smalc} 2597c2de5c91Smalc 25982fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 2599c2de5c91Smalcfor drv in $audio_drv_list; do 2600c2de5c91Smalc case $drv in 2601c2de5c91Smalc alsa) 2602c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 2603e35bcb0cSStefan Weil "return snd_pcm_close((snd_pcm_t *)0);" 2604a4bf6780SJuan Quintela libs_softmmu="-lasound $libs_softmmu" 2605c2de5c91Smalc ;; 2606c2de5c91Smalc 2607c2de5c91Smalc fmod) 2608c2de5c91Smalc if test -z $fmod_lib || test -z $fmod_inc; then 260976ad07a4SPeter Maydell error_exit "You must specify path to FMOD library and headers" \ 261076ad07a4SPeter Maydell "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" 26118f28f3fbSths fi 2612c2de5c91Smalc audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc" 2613a4bf6780SJuan Quintela libs_softmmu="$fmod_lib $libs_softmmu" 2614c2de5c91Smalc ;; 2615c2de5c91Smalc 2616c2de5c91Smalc esd) 2617c2de5c91Smalc audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' 2618a4bf6780SJuan Quintela libs_softmmu="-lesd $libs_softmmu" 261967f86e8eSJuan Quintela audio_pt_int="yes" 2620c2de5c91Smalc ;; 2621b8e59f18Smalc 2622b8e59f18Smalc pa) 2623a394aed2SMarc-André Lureau audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ 2624a394aed2SMarc-André Lureau "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" 2625a394aed2SMarc-André Lureau libs_softmmu="-lpulse $libs_softmmu" 262667f86e8eSJuan Quintela audio_pt_int="yes" 2627b8e59f18Smalc ;; 2628b8e59f18Smalc 2629997e690aSJuan Quintela coreaudio) 2630997e690aSJuan Quintela libs_softmmu="-framework CoreAudio $libs_softmmu" 2631997e690aSJuan Quintela ;; 2632997e690aSJuan Quintela 2633a4bf6780SJuan Quintela dsound) 2634a4bf6780SJuan Quintela libs_softmmu="-lole32 -ldxguid $libs_softmmu" 2635d5631638Smalc audio_win_int="yes" 2636a4bf6780SJuan Quintela ;; 2637a4bf6780SJuan Quintela 2638a4bf6780SJuan Quintela oss) 2639a4bf6780SJuan Quintela libs_softmmu="$oss_lib $libs_softmmu" 2640a4bf6780SJuan Quintela ;; 2641a4bf6780SJuan Quintela 2642a4bf6780SJuan Quintela sdl|wav) 26432f6a1ab0Sblueswir1 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 26442f6a1ab0Sblueswir1 ;; 26452f6a1ab0Sblueswir1 2646d5631638Smalc winwave) 2647d5631638Smalc libs_softmmu="-lwinmm $libs_softmmu" 2648d5631638Smalc audio_win_int="yes" 2649d5631638Smalc ;; 2650d5631638Smalc 2651e4c63a6aSmalc *) 26521c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 265376ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 265476ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 2655e4c63a6aSmalc } 2656e4c63a6aSmalc ;; 2657c2de5c91Smalc esac 2658c2de5c91Smalcdone 26598f28f3fbSths 26604d3b6f6eSbalrog########################################## 26612e4d9fb1Saurel32# BrlAPI probe 26622e4d9fb1Saurel32 26634ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 2664eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 26652e4d9fb1Saurel32 cat > $TMPC << EOF 26662e4d9fb1Saurel32#include <brlapi.h> 2667832ce9c2SScott Wood#include <stddef.h> 26682e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 26692e4d9fb1Saurel32EOF 267052166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 26712e4d9fb1Saurel32 brlapi=yes 2672264606b3SJuan Quintela libs_softmmu="$brlapi_libs $libs_softmmu" 26734ffcedb6SJuan Quintela else 26744ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 267521684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 26764ffcedb6SJuan Quintela fi 26774ffcedb6SJuan Quintela brlapi=no 2678eb82284fSJuan Quintela fi 2679eb82284fSJuan Quintelafi 26802e4d9fb1Saurel32 26812e4d9fb1Saurel32########################################## 26824d3b6f6eSbalrog# curses probe 2683a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 2684e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 2685e095e2f3SStefan Weil curses_list="-lpdcurses" 2686e095e2f3SStefan Weil else 2687cfeda5f4SEd Maste curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses" 2688e095e2f3SStefan Weil fi 2689c584a6d0SJuan Quintela curses_found=no 26904d3b6f6eSbalrog cat > $TMPC << EOF 26914d3b6f6eSbalrog#include <curses.h> 2692ef9a2524SStefan Weilint main(void) { 2693ef9a2524SStefan Weil const char *s = curses_version(); 2694ef9a2524SStefan Weil resize_term(0, 0); 2695ef9a2524SStefan Weil return s != 0; 2696ef9a2524SStefan Weil} 26974d3b6f6eSbalrogEOF 2698ecbe251fSVadim Evard IFS=: 26994f78ef9aSJuan Quintela for curses_lib in $curses_list; do 2700ecbe251fSVadim Evard unset IFS 27014f78ef9aSJuan Quintela if compile_prog "" "$curses_lib" ; then 2702c584a6d0SJuan Quintela curses_found=yes 27034f78ef9aSJuan Quintela libs_softmmu="$curses_lib $libs_softmmu" 27044f78ef9aSJuan Quintela break 27054d3b6f6eSbalrog fi 27064f78ef9aSJuan Quintela done 2707ecbe251fSVadim Evard unset IFS 2708c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 2709c584a6d0SJuan Quintela curses=yes 2710c584a6d0SJuan Quintela else 2711c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 271221684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 2713c584a6d0SJuan Quintela fi 2714c584a6d0SJuan Quintela curses=no 2715c584a6d0SJuan Quintela fi 27164f78ef9aSJuan Quintelafi 27174d3b6f6eSbalrog 2718414f0dabSblueswir1########################################## 2719769ce76dSAlexander Graf# curl probe 2720a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 272165d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 2722a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 27234e2b0658SPaolo Bonzini else 27244e2b0658SPaolo Bonzini curlconfig=curl-config 27254e2b0658SPaolo Bonzini fi 2726769ce76dSAlexander Graf cat > $TMPC << EOF 2727769ce76dSAlexander Graf#include <curl/curl.h> 27280b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2729769ce76dSAlexander GrafEOF 27304e2b0658SPaolo Bonzini curl_cflags=`$curlconfig --cflags 2>/dev/null` 27314e2b0658SPaolo Bonzini curl_libs=`$curlconfig --libs 2>/dev/null` 2732b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 2733769ce76dSAlexander Graf curl=yes 2734788c8196SJuan Quintela else 2735788c8196SJuan Quintela if test "$curl" = "yes" ; then 273621684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 2737788c8196SJuan Quintela fi 2738788c8196SJuan Quintela curl=no 2739769ce76dSAlexander Graf fi 2740769ce76dSAlexander Graffi # test "$curl" 2741769ce76dSAlexander Graf 2742769ce76dSAlexander Graf########################################## 2743fb599c9aSbalrog# bluez support probe 2744a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then 2745e820e3f4Sbalrog cat > $TMPC << EOF 2746e820e3f4Sbalrog#include <bluetooth/bluetooth.h> 2747e820e3f4Sbalrogint main(void) { return bt_error(0); } 2748e820e3f4SbalrogEOF 2749a8bd70adSPaolo Bonzini bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 2750a8bd70adSPaolo Bonzini bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 275152166aa0SJuan Quintela if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2752a20a6f46SJuan Quintela bluez=yes 2753e482d56aSJuan Quintela libs_softmmu="$bluez_libs $libs_softmmu" 2754e820e3f4Sbalrog else 2755a20a6f46SJuan Quintela if test "$bluez" = "yes" ; then 275621684af0SStewart Smith feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 2757a20a6f46SJuan Quintela fi 2758e820e3f4Sbalrog bluez="no" 2759e820e3f4Sbalrog fi 2760fb599c9aSbalrogfi 2761fb599c9aSbalrog 2762fb599c9aSbalrog########################################## 2763e18df141SAnthony Liguori# glib support probe 2764a52d28afSPaolo Bonzini 2765a52d28afSPaolo Bonziniif test "$mingw32" = yes; then 2766a52d28afSPaolo Bonzini # g_poll is required in order to integrate with the glib main loop. 2767a52d28afSPaolo Bonzini glib_req_ver=2.20 2768a52d28afSPaolo Bonzinielse 2769a52d28afSPaolo Bonzini glib_req_ver=2.12 2770a52d28afSPaolo Bonzinifi 2771aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 2772aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 2773aa0d1f44SPaolo Bonzini glib_modules="$glib_modules gmodule-2.0" 2774aa0d1f44SPaolo Bonzinifi 2775e26110cfSFam Zheng 2776aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 2777e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 2778e26110cfSFam Zheng glib_cflags=`$pkg_config --cflags $i` 2779e26110cfSFam Zheng glib_libs=`$pkg_config --libs $i` 2780ba1183daSFam Zheng CFLAGS="$glib_cflags $CFLAGS" 278114015304SAnthony Liguori LIBS="$glib_libs $LIBS" 2782957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 2783e18df141SAnthony Liguori else 2784e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 2785e26110cfSFam Zheng fi 2786e26110cfSFam Zhengdone 2787e26110cfSFam Zheng 27889d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests. 27899d41401bSMichael S. Tsirkinglib_subprocess=yes 27909d41401bSMichael S. Tsirkinif ! $pkg_config --atleast-version=2.38 glib-2.0; then 27919d41401bSMichael S. Tsirkin glib_subprocess=no 27929d41401bSMichael S. Tsirkinfi 27939d41401bSMichael S. Tsirkin 2794e26110cfSFam Zheng########################################## 2795e26110cfSFam Zheng# SHA command probe for modules 2796e26110cfSFam Zhengif test "$modules" = yes; then 2797e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 2798e26110cfSFam Zheng for c in $shacmd_probe; do 27998ccefb91SFam Zheng if has $c; then 2800e26110cfSFam Zheng shacmd="$c" 2801e26110cfSFam Zheng break 2802e26110cfSFam Zheng fi 2803e26110cfSFam Zheng done 2804e26110cfSFam Zheng if test "$shacmd" = ""; then 2805e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 2806e26110cfSFam Zheng fi 2807e18df141SAnthony Liguorifi 2808e18df141SAnthony Liguori 2809e18df141SAnthony Liguori########################################## 2810e2134eb9SGerd Hoffmann# pixman support probe 2811e2134eb9SGerd Hoffmann 2812e2134eb9SGerd Hoffmannif test "$pixman" = ""; then 281374880fe2SRobert Schiele if test "$want_tools" = "no" -a "$softmmu" = "no"; then 281474880fe2SRobert Schiele pixman="none" 2815236f282cSHu Tao elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 2816e2134eb9SGerd Hoffmann pixman="system" 2817e2134eb9SGerd Hoffmann else 2818e2134eb9SGerd Hoffmann pixman="internal" 2819e2134eb9SGerd Hoffmann fi 2820e2134eb9SGerd Hoffmannfi 282174880fe2SRobert Schieleif test "$pixman" = "none"; then 282274880fe2SRobert Schiele if test "$want_tools" != "no" -o "$softmmu" != "no"; then 282376ad07a4SPeter Maydell error_exit "pixman disabled but system emulation or tools build" \ 282476ad07a4SPeter Maydell "enabled. You can turn off pixman only if you also" \ 282576ad07a4SPeter Maydell "disable all system emulation targets and the tools" \ 282676ad07a4SPeter Maydell "build with '--disable-tools --disable-system'." 282774880fe2SRobert Schiele fi 282874880fe2SRobert Schiele pixman_cflags= 282974880fe2SRobert Schiele pixman_libs= 283074880fe2SRobert Schieleelif test "$pixman" = "system"; then 2831236f282cSHu Tao # pixman version has been checked above 2832ca871ec8SStefan Weil pixman_cflags=`$pkg_config --cflags pixman-1` 2833ca871ec8SStefan Weil pixman_libs=`$pkg_config --libs pixman-1` 2834e2134eb9SGerd Hoffmannelse 2835e2134eb9SGerd Hoffmann if test ! -d ${source_path}/pixman/pixman; then 2836236f282cSHu Tao error_exit "pixman >= 0.21.8 not present. Your options:" \ 283776ad07a4SPeter Maydell " (1) Preferred: Install the pixman devel package (any recent" \ 283876ad07a4SPeter Maydell " distro should have packages as Xorg needs pixman too)." \ 283976ad07a4SPeter Maydell " (2) Fetch the pixman submodule, using:" \ 284076ad07a4SPeter Maydell " git submodule update --init pixman" 2841e2134eb9SGerd Hoffmann fi 28425ca9388aSGerd Hoffmann mkdir -p pixman/pixman 28435ca9388aSGerd Hoffmann pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" 28445ca9388aSGerd Hoffmann pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" 2845e2134eb9SGerd Hoffmannfi 2846e2134eb9SGerd Hoffmann 2847e2134eb9SGerd Hoffmann########################################## 284817bff52bSM. Mohan Kumar# libcap probe 284917bff52bSM. Mohan Kumar 285017bff52bSM. Mohan Kumarif test "$cap" != "no" ; then 285117bff52bSM. Mohan Kumar cat > $TMPC <<EOF 285217bff52bSM. Mohan Kumar#include <stdio.h> 285317bff52bSM. Mohan Kumar#include <sys/capability.h> 2854cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 285517bff52bSM. Mohan KumarEOF 285617bff52bSM. Mohan Kumar if compile_prog "" "-lcap" ; then 285717bff52bSM. Mohan Kumar cap=yes 285817bff52bSM. Mohan Kumar else 285917bff52bSM. Mohan Kumar cap=no 286017bff52bSM. Mohan Kumar fi 286117bff52bSM. Mohan Kumarfi 286217bff52bSM. Mohan Kumar 286317bff52bSM. Mohan Kumar########################################## 2864e5d355d1Saliguori# pthread probe 28654b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 28663c529d93Saliguori 2867e5d355d1Saliguoripthread=no 2868414f0dabSblueswir1cat > $TMPC << EOF 28693c529d93Saliguori#include <pthread.h> 28707a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 28717a42bbe4SStefan Weilint main(void) { 28727a42bbe4SStefan Weil pthread_t thread; 28737a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 28747a42bbe4SStefan Weil return 0; 28757a42bbe4SStefan Weil} 2876414f0dabSblueswir1EOF 2877bd00d539SAndreas Färberif compile_prog "" "" ; then 2878bd00d539SAndreas Färber pthread=yes 2879bd00d539SAndreas Färberelse 2880de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 288152166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 2882e5d355d1Saliguori pthread=yes 2883e3c56761SPeter Portante found=no 2884e3c56761SPeter Portante for lib_entry in $LIBS; do 2885e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 2886e3c56761SPeter Portante found=yes 2887e3c56761SPeter Portante break 2888e3c56761SPeter Portante fi 2889e3c56761SPeter Portante done 2890e3c56761SPeter Portante if test "$found" = "no"; then 28915572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 2892e3c56761SPeter Portante fi 2893de65fe0fSSebastian Herbszt break 2894414f0dabSblueswir1 fi 2895de65fe0fSSebastian Herbszt done 2896bd00d539SAndreas Färberfi 2897414f0dabSblueswir1 28984617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then 289976ad07a4SPeter Maydell error_exit "pthread check failed" \ 290076ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 2901e5d355d1Saliguorifi 2902e5d355d1Saliguori 29035c312079SDr. David Alan Gilbert# check for pthread_setname_np 29045c312079SDr. David Alan Gilbertpthread_setname_np=no 29055c312079SDr. David Alan Gilbertcat > $TMPC << EOF 29065c312079SDr. David Alan Gilbert#include <pthread.h> 29075c312079SDr. David Alan Gilbert 29085c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 29095c312079SDr. David Alan Gilbertint main(void) 29105c312079SDr. David Alan Gilbert{ 29115c312079SDr. David Alan Gilbert pthread_t thread; 29125c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 29135c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 29145c312079SDr. David Alan Gilbert return 0; 29155c312079SDr. David Alan Gilbert} 29165c312079SDr. David Alan GilbertEOF 29175c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 29185c312079SDr. David Alan Gilbert pthread_setname_np=yes 29195c312079SDr. David Alan Gilbertfi 29205c312079SDr. David Alan Gilbert 2921bf9298b9Saliguori########################################## 2922f27aaf4bSChristian Brunner# rbd probe 2923f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 2924f27aaf4bSChristian Brunner cat > $TMPC <<EOF 2925f27aaf4bSChristian Brunner#include <stdio.h> 2926ad32e9c0SJosh Durgin#include <rbd/librbd.h> 2927f27aaf4bSChristian Brunnerint main(void) { 2928ad32e9c0SJosh Durgin rados_t cluster; 2929ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 2930f27aaf4bSChristian Brunner return 0; 2931f27aaf4bSChristian Brunner} 2932f27aaf4bSChristian BrunnerEOF 2933ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 2934f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 2935f27aaf4bSChristian Brunner rbd=yes 2936f27aaf4bSChristian Brunner else 2937f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 293821684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 2939f27aaf4bSChristian Brunner fi 2940f27aaf4bSChristian Brunner rbd=no 2941f27aaf4bSChristian Brunner fi 2942f27aaf4bSChristian Brunnerfi 2943f27aaf4bSChristian Brunner 2944f27aaf4bSChristian Brunner########################################## 29450a12ec87SRichard W.M. Jones# libssh2 probe 29464fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8 29470a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then 294865d5d3f9SStefan Weil if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 29490a12ec87SRichard W.M. Jones libssh2_cflags=`$pkg_config libssh2 --cflags` 29500a12ec87SRichard W.M. Jones libssh2_libs=`$pkg_config libssh2 --libs` 29510a12ec87SRichard W.M. Jones libssh2=yes 29520a12ec87SRichard W.M. Jones else 29530a12ec87SRichard W.M. Jones if test "$libssh2" = "yes" ; then 29544fc16838SRichard W.M. Jones error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 29550a12ec87SRichard W.M. Jones fi 29560a12ec87SRichard W.M. Jones libssh2=no 29570a12ec87SRichard W.M. Jones fi 29580a12ec87SRichard W.M. Jonesfi 29590a12ec87SRichard W.M. Jones 29600a12ec87SRichard W.M. Jones########################################## 29619a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe 29629a2d462eSRichard W.M. Jones 29639a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then 29649a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 29659a2d462eSRichard W.M. Jones#include <stdio.h> 29669a2d462eSRichard W.M. Jones#include <libssh2.h> 29679a2d462eSRichard W.M. Jones#include <libssh2_sftp.h> 29689a2d462eSRichard W.M. Jonesint main(void) { 29699a2d462eSRichard W.M. Jones LIBSSH2_SESSION *session; 29709a2d462eSRichard W.M. Jones LIBSSH2_SFTP *sftp; 29719a2d462eSRichard W.M. Jones LIBSSH2_SFTP_HANDLE *sftp_handle; 29729a2d462eSRichard W.M. Jones session = libssh2_session_init (); 29739a2d462eSRichard W.M. Jones sftp = libssh2_sftp_init (session); 29749a2d462eSRichard W.M. Jones sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 29759a2d462eSRichard W.M. Jones libssh2_sftp_fsync (sftp_handle); 29769a2d462eSRichard W.M. Jones return 0; 29779a2d462eSRichard W.M. Jones} 29789a2d462eSRichard W.M. JonesEOF 29799a2d462eSRichard W.M. Jones # libssh2_cflags/libssh2_libs defined in previous test. 29809a2d462eSRichard W.M. Jones if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 29819a2d462eSRichard W.M. Jones QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 29829a2d462eSRichard W.M. Jones fi 29839a2d462eSRichard W.M. Jonesfi 29849a2d462eSRichard W.M. Jones 29859a2d462eSRichard W.M. Jones########################################## 29865c6c3a6cSChristoph Hellwig# linux-aio probe 29875c6c3a6cSChristoph Hellwig 29885c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 29895c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 29905c6c3a6cSChristoph Hellwig#include <libaio.h> 29915c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 2992832ce9c2SScott Wood#include <stddef.h> 29935c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 29945c6c3a6cSChristoph HellwigEOF 29955c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 29965c6c3a6cSChristoph Hellwig linux_aio=yes 29975c6c3a6cSChristoph Hellwig else 29985c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 299921684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 30005c6c3a6cSChristoph Hellwig fi 30013cfcae3cSLuiz Capitulino linux_aio=no 30025c6c3a6cSChristoph Hellwig fi 30035c6c3a6cSChristoph Hellwigfi 30045c6c3a6cSChristoph Hellwig 30055c6c3a6cSChristoph Hellwig########################################## 30063b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux 30073b8acc11SPaolo Bonzini 30083b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 30093b8acc11SPaolo Bonzini tpm_passthrough=$tpm 30103b8acc11SPaolo Bonzinielse 30113b8acc11SPaolo Bonzini tpm_passthrough=no 30123b8acc11SPaolo Bonzinifi 30133b8acc11SPaolo Bonzini 30143b8acc11SPaolo Bonzini########################################## 3015758e8e38SVenkateswararao Jujjuri (JV)# attr probe 3016758e8e38SVenkateswararao Jujjuri (JV) 3017758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 3018758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 3019758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 3020758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 3021f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 3022f2338fb4SPavel Borzenkov#include <attr/xattr.h> 3023f2338fb4SPavel Borzenkov#else 30244f26f2b6SAvi Kivity#include <sys/xattr.h> 3025f2338fb4SPavel Borzenkov#endif 3026758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3027758e8e38SVenkateswararao Jujjuri (JV)EOF 30284f26f2b6SAvi Kivity if compile_prog "" "" ; then 30294f26f2b6SAvi Kivity attr=yes 30304f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 3031f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3032758e8e38SVenkateswararao Jujjuri (JV) attr=yes 3033758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 30344f26f2b6SAvi Kivity libattr=yes 3035758e8e38SVenkateswararao Jujjuri (JV) else 3036758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 303721684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 3038758e8e38SVenkateswararao Jujjuri (JV) fi 3039758e8e38SVenkateswararao Jujjuri (JV) attr=no 3040758e8e38SVenkateswararao Jujjuri (JV) fi 3041758e8e38SVenkateswararao Jujjuri (JV)fi 3042758e8e38SVenkateswararao Jujjuri (JV) 3043758e8e38SVenkateswararao Jujjuri (JV)########################################## 3044bf9298b9Saliguori# iovec probe 3045bf9298b9Saliguoricat > $TMPC <<EOF 3046db34f0b3Sblueswir1#include <sys/types.h> 3047bf9298b9Saliguori#include <sys/uio.h> 3048db34f0b3Sblueswir1#include <unistd.h> 3049f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 3050bf9298b9SaliguoriEOF 3051bf9298b9Saliguoriiovec=no 305252166aa0SJuan Quintelaif compile_prog "" "" ; then 3053bf9298b9Saliguori iovec=yes 3054bf9298b9Saliguorifi 3055bf9298b9Saliguori 3056f652e6afSaurel32########################################## 3057ceb42de8Saliguori# preadv probe 3058ceb42de8Saliguoricat > $TMPC <<EOF 3059ceb42de8Saliguori#include <sys/types.h> 3060ceb42de8Saliguori#include <sys/uio.h> 3061ceb42de8Saliguori#include <unistd.h> 3062c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 3063ceb42de8SaliguoriEOF 3064ceb42de8Saliguoripreadv=no 306552166aa0SJuan Quintelaif compile_prog "" "" ; then 3066ceb42de8Saliguori preadv=yes 3067ceb42de8Saliguorifi 3068ceb42de8Saliguori 3069ceb42de8Saliguori########################################## 3070f652e6afSaurel32# fdt probe 3071e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 3072e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 3073e169e1e1SPeter Maydellfdt_required=no 3074e169e1e1SPeter Maydellfor target in $target_list; do 3075e169e1e1SPeter Maydell case $target in 30766a49fa95SAlexander Graf aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu) 3077e169e1e1SPeter Maydell fdt_required=yes 3078e169e1e1SPeter Maydell ;; 3079e169e1e1SPeter Maydell esac 3080e169e1e1SPeter Maydelldone 3081e169e1e1SPeter Maydell 3082e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 3083e169e1e1SPeter Maydell if test "$fdt" = "no"; then 3084e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 3085e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 3086e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 3087e169e1e1SPeter Maydell fi 3088e169e1e1SPeter Maydell fdt=yes 3089e169e1e1SPeter Maydellfi 3090e169e1e1SPeter Maydell 30912df87df7SJuan Quintelaif test "$fdt" != "no" ; then 3092b41af4baSJuan Quintela fdt_libs="-lfdt" 309396ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 3094f652e6afSaurel32 cat > $TMPC << EOF 309596ce6545SPeter Crosthwaite#include <libfdt_env.h> 3096f652e6afSaurel32int main(void) { return 0; } 3097f652e6afSaurel32EOF 309852166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 3099a540f158SPeter Crosthwaite # system DTC is good - use it 3100f652e6afSaurel32 fdt=yes 3101a540f158SPeter Crosthwaite elif test -d ${source_path}/dtc/libfdt ; then 3102a540f158SPeter Crosthwaite # have submodule DTC - use it 3103a540f158SPeter Crosthwaite fdt=yes 3104a540f158SPeter Crosthwaite dtc_internal="yes" 3105a540f158SPeter Crosthwaite mkdir -p dtc 3106cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 3107a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3108a540f158SPeter Crosthwaite symlink "$source_path/dtc/scripts" "dtc/scripts" 31092df87df7SJuan Quintela fi 3110a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3111a540f158SPeter Crosthwaite fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3112a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 3113a540f158SPeter Crosthwaite # have neither and want - prompt for system/submodule install 31143f281822SStewart Smith error_exit "DTC (libfdt) not present. Your options:" \ 31153f281822SStewart Smith " (1) Preferred: Install the DTC (libfdt) devel package" \ 3116a540f158SPeter Crosthwaite " (2) Fetch the DTC submodule, using:" \ 3117a540f158SPeter Crosthwaite " git submodule update --init dtc" 3118a540f158SPeter Crosthwaite else 3119a540f158SPeter Crosthwaite # don't have and don't want 3120de3a354aSMichael Walle fdt_libs= 31212df87df7SJuan Quintela fdt=no 3122f652e6afSaurel32 fi 3123f652e6afSaurel32fi 3124f652e6afSaurel32 3125a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 3126a540f158SPeter Crosthwaite 312720ff075bSMichael Walle########################################## 3128da076ffeSGerd Hoffmann# opengl probe (for sdl2, milkymist-tmu2) 3129b1546f32SGerd Hoffmann 3130b1546f32SGerd Hoffmann# GLX probe, used by milkymist-tmu2 3131b1546f32SGerd Hoffmann# this is temporary, code will be switched to egl mid-term. 3132b1546f32SGerd Hoffmanncat > $TMPC << EOF 3133b1546f32SGerd Hoffmann#include <X11/Xlib.h> 3134b1546f32SGerd Hoffmann#include <GL/gl.h> 3135b1546f32SGerd Hoffmann#include <GL/glx.h> 3136b1546f32SGerd Hoffmannint main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; } 3137b1546f32SGerd HoffmannEOF 3138b1546f32SGerd Hoffmannif compile_prog "" "-lGL -lX11" ; then 3139b1546f32SGerd Hoffmann have_glx=yes 3140b1546f32SGerd Hoffmannelse 3141b1546f32SGerd Hoffmann have_glx=no 3142b1546f32SGerd Hoffmannfi 3143b1546f32SGerd Hoffmann 3144da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 3145*cd2bc889SGerd Hoffmann opengl_pkgs="gl glesv2" 3146b1546f32SGerd Hoffmann if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then 3147f676c67eSJeremy White opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3148f676c67eSJeremy White opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3149da076ffeSGerd Hoffmann opengl=yes 315020ff075bSMichael Walle else 3151da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 3152da076ffeSGerd Hoffmann feature_not_found "opengl" "Install GL devel (e.g. MESA)" 315320ff075bSMichael Walle fi 3154f676c67eSJeremy White opengl_cflags="" 3155da076ffeSGerd Hoffmann opengl_libs="" 3156da076ffeSGerd Hoffmann opengl=no 315720ff075bSMichael Walle fi 315820ff075bSMichael Wallefi 315920ff075bSMichael Walle 3160c9a12e75SChrysostomos Nanakos 3161c9a12e75SChrysostomos Nanakos########################################## 3162c9a12e75SChrysostomos Nanakos# archipelago probe 3163c9a12e75SChrysostomos Nanakosif test "$archipelago" != "no" ; then 3164c9a12e75SChrysostomos Nanakos cat > $TMPC <<EOF 3165c9a12e75SChrysostomos Nanakos#include <stdio.h> 3166c9a12e75SChrysostomos Nanakos#include <xseg/xseg.h> 3167c9a12e75SChrysostomos Nanakos#include <xseg/protocol.h> 3168c9a12e75SChrysostomos Nanakosint main(void) { 3169c9a12e75SChrysostomos Nanakos xseg_initialize(); 3170c9a12e75SChrysostomos Nanakos return 0; 3171c9a12e75SChrysostomos Nanakos} 3172c9a12e75SChrysostomos NanakosEOF 3173c9a12e75SChrysostomos Nanakos archipelago_libs=-lxseg 3174c9a12e75SChrysostomos Nanakos if compile_prog "" "$archipelago_libs"; then 3175c9a12e75SChrysostomos Nanakos archipelago="yes" 3176c9a12e75SChrysostomos Nanakos libs_tools="$archipelago_libs $libs_tools" 3177c9a12e75SChrysostomos Nanakos libs_softmmu="$archipelago_libs $libs_softmmu" 31786a460ed1SStefan Hajnoczi 31796a460ed1SStefan Hajnoczi echo "WARNING: Please check the licenses of QEMU and libxseg carefully." 31806a460ed1SStefan Hajnoczi echo "GPLv3 versions of libxseg may not be compatible with QEMU's" 31816a460ed1SStefan Hajnoczi echo "license and therefore prevent redistribution." 31826a460ed1SStefan Hajnoczi echo 31836a460ed1SStefan Hajnoczi echo "To disable Archipelago, use --disable-archipelago" 3184c9a12e75SChrysostomos Nanakos else 3185c9a12e75SChrysostomos Nanakos if test "$archipelago" = "yes" ; then 3186c9a12e75SChrysostomos Nanakos feature_not_found "Archipelago backend support" "Install libxseg devel" 3187c9a12e75SChrysostomos Nanakos fi 3188c9a12e75SChrysostomos Nanakos archipelago="no" 3189c9a12e75SChrysostomos Nanakos fi 3190c9a12e75SChrysostomos Nanakosfi 3191c9a12e75SChrysostomos Nanakos 3192c9a12e75SChrysostomos Nanakos 3193eb100396SBharata B Rao########################################## 3194eb100396SBharata B Rao# glusterfs probe 3195eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 319665d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 3197e01bee08SBharata B Rao glusterfs="yes" 3198ca871ec8SStefan Weil glusterfs_cflags=`$pkg_config --cflags glusterfs-api` 3199ca871ec8SStefan Weil glusterfs_libs=`$pkg_config --libs glusterfs-api` 320065d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 32010c14fb47SBharata B Rao glusterfs_discard="yes" 32020c14fb47SBharata B Rao fi 32037c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 32047c815372SBharata B Rao glusterfs_zerofill="yes" 32057c815372SBharata B Rao fi 3206eb100396SBharata B Rao else 3207eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 32088efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 32098efc9363SHu Tao "Install glusterfs-api devel >= 3" 3210eb100396SBharata B Rao fi 3211e01bee08SBharata B Rao glusterfs="no" 3212eb100396SBharata B Rao fi 3213eb100396SBharata B Raofi 3214eb100396SBharata B Rao 321539386ac7Saurel32# Check for inotify functions when we are building linux-user 32163b3f24adSaurel32# emulator. This is done because older glibc versions don't 32173b3f24adSaurel32# have syscall stubs for these implemented. In that case we 32183b3f24adSaurel32# don't provide them even if kernel supports them. 32193b3f24adSaurel32# 32203b3f24adSaurel32inotify=no 32213b3f24adSaurel32cat > $TMPC << EOF 32223b3f24adSaurel32#include <sys/inotify.h> 32233b3f24adSaurel32 32243b3f24adSaurel32int 32253b3f24adSaurel32main(void) 32263b3f24adSaurel32{ 32273b3f24adSaurel32 /* try to start inotify */ 32288690e420Saurel32 return inotify_init(); 32293b3f24adSaurel32} 32303b3f24adSaurel32EOF 323152166aa0SJuan Quintelaif compile_prog "" "" ; then 32323b3f24adSaurel32 inotify=yes 32333b3f24adSaurel32fi 32343b3f24adSaurel32 3235c05c7a73SRiku Voipioinotify1=no 3236c05c7a73SRiku Voipiocat > $TMPC << EOF 3237c05c7a73SRiku Voipio#include <sys/inotify.h> 3238c05c7a73SRiku Voipio 3239c05c7a73SRiku Voipioint 3240c05c7a73SRiku Voipiomain(void) 3241c05c7a73SRiku Voipio{ 3242c05c7a73SRiku Voipio /* try to start inotify */ 3243c05c7a73SRiku Voipio return inotify_init1(0); 3244c05c7a73SRiku Voipio} 3245c05c7a73SRiku VoipioEOF 3246c05c7a73SRiku Voipioif compile_prog "" "" ; then 3247c05c7a73SRiku Voipio inotify1=yes 3248c05c7a73SRiku Voipiofi 3249c05c7a73SRiku Voipio 3250ebc996f3SRiku Voipio# check if utimensat and futimens are supported 3251ebc996f3SRiku Voipioutimens=no 3252ebc996f3SRiku Voipiocat > $TMPC << EOF 3253ebc996f3SRiku Voipio#define _ATFILE_SOURCE 3254ebc996f3SRiku Voipio#include <stddef.h> 3255ebc996f3SRiku Voipio#include <fcntl.h> 32563014ee00SPeter Maydell#include <sys/stat.h> 3257ebc996f3SRiku Voipio 3258ebc996f3SRiku Voipioint main(void) 3259ebc996f3SRiku Voipio{ 3260ebc996f3SRiku Voipio utimensat(AT_FDCWD, "foo", NULL, 0); 3261ebc996f3SRiku Voipio futimens(0, NULL); 3262ebc996f3SRiku Voipio return 0; 3263ebc996f3SRiku Voipio} 3264ebc996f3SRiku VoipioEOF 326552166aa0SJuan Quintelaif compile_prog "" "" ; then 3266ebc996f3SRiku Voipio utimens=yes 3267ebc996f3SRiku Voipiofi 3268ebc996f3SRiku Voipio 3269099d6b0fSRiku Voipio# check if pipe2 is there 3270099d6b0fSRiku Voipiopipe2=no 3271099d6b0fSRiku Voipiocat > $TMPC << EOF 3272099d6b0fSRiku Voipio#include <unistd.h> 3273099d6b0fSRiku Voipio#include <fcntl.h> 3274099d6b0fSRiku Voipio 3275099d6b0fSRiku Voipioint main(void) 3276099d6b0fSRiku Voipio{ 3277099d6b0fSRiku Voipio int pipefd[2]; 32789bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 3279099d6b0fSRiku Voipio} 3280099d6b0fSRiku VoipioEOF 328152166aa0SJuan Quintelaif compile_prog "" "" ; then 3282099d6b0fSRiku Voipio pipe2=yes 3283099d6b0fSRiku Voipiofi 3284099d6b0fSRiku Voipio 328540ff6d7eSKevin Wolf# check if accept4 is there 328640ff6d7eSKevin Wolfaccept4=no 328740ff6d7eSKevin Wolfcat > $TMPC << EOF 328840ff6d7eSKevin Wolf#include <sys/socket.h> 328940ff6d7eSKevin Wolf#include <stddef.h> 329040ff6d7eSKevin Wolf 329140ff6d7eSKevin Wolfint main(void) 329240ff6d7eSKevin Wolf{ 329340ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 329440ff6d7eSKevin Wolf return 0; 329540ff6d7eSKevin Wolf} 329640ff6d7eSKevin WolfEOF 329740ff6d7eSKevin Wolfif compile_prog "" "" ; then 329840ff6d7eSKevin Wolf accept4=yes 329940ff6d7eSKevin Wolffi 330040ff6d7eSKevin Wolf 33013ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 33023ce34dfbSvibisreenivasansplice=no 33033ce34dfbSvibisreenivasancat > $TMPC << EOF 33043ce34dfbSvibisreenivasan#include <unistd.h> 33053ce34dfbSvibisreenivasan#include <fcntl.h> 33063ce34dfbSvibisreenivasan#include <limits.h> 33073ce34dfbSvibisreenivasan 33083ce34dfbSvibisreenivasanint main(void) 33093ce34dfbSvibisreenivasan{ 331066ea0f22SStefan Weil int len, fd = 0; 33113ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 33123ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 33133ce34dfbSvibisreenivasan return 0; 33143ce34dfbSvibisreenivasan} 33153ce34dfbSvibisreenivasanEOF 331652166aa0SJuan Quintelaif compile_prog "" "" ; then 33173ce34dfbSvibisreenivasan splice=yes 33183ce34dfbSvibisreenivasanfi 33193ce34dfbSvibisreenivasan 3320dcc38d1cSMarcelo Tosatti########################################## 3321a99d57bbSWanlong Gao# libnuma probe 3322a99d57bbSWanlong Gao 3323a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 3324a99d57bbSWanlong Gao cat > $TMPC << EOF 3325a99d57bbSWanlong Gao#include <numa.h> 3326a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 3327a99d57bbSWanlong GaoEOF 3328a99d57bbSWanlong Gao 3329a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 3330a99d57bbSWanlong Gao numa=yes 3331a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 3332a99d57bbSWanlong Gao else 3333a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 3334a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 3335a99d57bbSWanlong Gao fi 3336a99d57bbSWanlong Gao numa=no 3337a99d57bbSWanlong Gao fi 3338a99d57bbSWanlong Gaofi 3339a99d57bbSWanlong Gao 3340a99d57bbSWanlong Gao########################################## 33412847b469SFam Zheng# tcmalloc probe 33422847b469SFam Zheng 33432847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 33442847b469SFam Zheng cat > $TMPC << EOF 33452847b469SFam Zheng#include <stdlib.h> 33462847b469SFam Zhengint main(void) { malloc(1); return 0; } 33472847b469SFam ZhengEOF 33482847b469SFam Zheng 33492847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 33502847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 33512847b469SFam Zheng else 33522847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 33532847b469SFam Zheng fi 33542847b469SFam Zhengfi 33552847b469SFam Zheng 33562847b469SFam Zheng########################################## 3357dcc38d1cSMarcelo Tosatti# signalfd probe 3358dcc38d1cSMarcelo Tosattisignalfd="no" 3359dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 3360dcc38d1cSMarcelo Tosatti#include <unistd.h> 3361dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 3362dcc38d1cSMarcelo Tosatti#include <signal.h> 3363dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3364dcc38d1cSMarcelo TosattiEOF 3365dcc38d1cSMarcelo Tosatti 3366dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 3367dcc38d1cSMarcelo Tosatti signalfd=yes 3368dcc38d1cSMarcelo Tosattifi 3369dcc38d1cSMarcelo Tosatti 3370c2882b96SRiku Voipio# check if eventfd is supported 3371c2882b96SRiku Voipioeventfd=no 3372c2882b96SRiku Voipiocat > $TMPC << EOF 3373c2882b96SRiku Voipio#include <sys/eventfd.h> 3374c2882b96SRiku Voipio 3375c2882b96SRiku Voipioint main(void) 3376c2882b96SRiku Voipio{ 337755cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3378c2882b96SRiku Voipio} 3379c2882b96SRiku VoipioEOF 3380c2882b96SRiku Voipioif compile_prog "" "" ; then 3381c2882b96SRiku Voipio eventfd=yes 3382c2882b96SRiku Voipiofi 3383c2882b96SRiku Voipio 3384d0927938SUlrich Hecht# check for fallocate 3385d0927938SUlrich Hechtfallocate=no 3386d0927938SUlrich Hechtcat > $TMPC << EOF 3387d0927938SUlrich Hecht#include <fcntl.h> 3388d0927938SUlrich Hecht 3389d0927938SUlrich Hechtint main(void) 3390d0927938SUlrich Hecht{ 3391d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 3392d0927938SUlrich Hecht return 0; 3393d0927938SUlrich Hecht} 3394d0927938SUlrich HechtEOF 33958fb03151SPeter Maydellif compile_prog "" "" ; then 3396d0927938SUlrich Hecht fallocate=yes 3397d0927938SUlrich Hechtfi 3398d0927938SUlrich Hecht 33993d4fa43eSKusanagi Kouichi# check for fallocate hole punching 34003d4fa43eSKusanagi Kouichifallocate_punch_hole=no 34013d4fa43eSKusanagi Kouichicat > $TMPC << EOF 34023d4fa43eSKusanagi Kouichi#include <fcntl.h> 34033d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 34043d4fa43eSKusanagi Kouichi 34053d4fa43eSKusanagi Kouichiint main(void) 34063d4fa43eSKusanagi Kouichi{ 34073d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 34083d4fa43eSKusanagi Kouichi return 0; 34093d4fa43eSKusanagi Kouichi} 34103d4fa43eSKusanagi KouichiEOF 34113d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 34123d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 34133d4fa43eSKusanagi Kouichifi 34143d4fa43eSKusanagi Kouichi 3415b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 3416b953f075SDenis V. Lunevfallocate_zero_range=no 3417b953f075SDenis V. Lunevcat > $TMPC << EOF 3418b953f075SDenis V. Lunev#include <fcntl.h> 3419b953f075SDenis V. Lunev#include <linux/falloc.h> 3420b953f075SDenis V. Lunev 3421b953f075SDenis V. Lunevint main(void) 3422b953f075SDenis V. Lunev{ 3423b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3424b953f075SDenis V. Lunev return 0; 3425b953f075SDenis V. Lunev} 3426b953f075SDenis V. LunevEOF 3427b953f075SDenis V. Lunevif compile_prog "" "" ; then 3428b953f075SDenis V. Lunev fallocate_zero_range=yes 3429b953f075SDenis V. Lunevfi 3430b953f075SDenis V. Lunev 3431ed911435SKevin Wolf# check for posix_fallocate 3432ed911435SKevin Wolfposix_fallocate=no 3433ed911435SKevin Wolfcat > $TMPC << EOF 3434ed911435SKevin Wolf#include <fcntl.h> 3435ed911435SKevin Wolf 3436ed911435SKevin Wolfint main(void) 3437ed911435SKevin Wolf{ 3438ed911435SKevin Wolf posix_fallocate(0, 0, 0); 3439ed911435SKevin Wolf return 0; 3440ed911435SKevin Wolf} 3441ed911435SKevin WolfEOF 3442ed911435SKevin Wolfif compile_prog "" "" ; then 3443ed911435SKevin Wolf posix_fallocate=yes 3444ed911435SKevin Wolffi 3445ed911435SKevin Wolf 3446c727f47dSPeter Maydell# check for sync_file_range 3447c727f47dSPeter Maydellsync_file_range=no 3448c727f47dSPeter Maydellcat > $TMPC << EOF 3449c727f47dSPeter Maydell#include <fcntl.h> 3450c727f47dSPeter Maydell 3451c727f47dSPeter Maydellint main(void) 3452c727f47dSPeter Maydell{ 3453c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 3454c727f47dSPeter Maydell return 0; 3455c727f47dSPeter Maydell} 3456c727f47dSPeter MaydellEOF 34578fb03151SPeter Maydellif compile_prog "" "" ; then 3458c727f47dSPeter Maydell sync_file_range=yes 3459c727f47dSPeter Maydellfi 3460c727f47dSPeter Maydell 3461dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 3462dace20dcSPeter Maydellfiemap=no 3463dace20dcSPeter Maydellcat > $TMPC << EOF 3464dace20dcSPeter Maydell#include <sys/ioctl.h> 3465dace20dcSPeter Maydell#include <linux/fs.h> 3466dace20dcSPeter Maydell#include <linux/fiemap.h> 3467dace20dcSPeter Maydell 3468dace20dcSPeter Maydellint main(void) 3469dace20dcSPeter Maydell{ 3470dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 3471dace20dcSPeter Maydell return 0; 3472dace20dcSPeter Maydell} 3473dace20dcSPeter MaydellEOF 34748fb03151SPeter Maydellif compile_prog "" "" ; then 3475dace20dcSPeter Maydell fiemap=yes 3476dace20dcSPeter Maydellfi 3477dace20dcSPeter Maydell 3478d0927938SUlrich Hecht# check for dup3 3479d0927938SUlrich Hechtdup3=no 3480d0927938SUlrich Hechtcat > $TMPC << EOF 3481d0927938SUlrich Hecht#include <unistd.h> 3482d0927938SUlrich Hecht 3483d0927938SUlrich Hechtint main(void) 3484d0927938SUlrich Hecht{ 3485d0927938SUlrich Hecht dup3(0, 0, 0); 3486d0927938SUlrich Hecht return 0; 3487d0927938SUlrich Hecht} 3488d0927938SUlrich HechtEOF 348978f5d726SJan Kiszkaif compile_prog "" "" ; then 3490d0927938SUlrich Hecht dup3=yes 3491d0927938SUlrich Hechtfi 3492d0927938SUlrich Hecht 34934e0c6529SAlex Bligh# check for ppoll support 34944e0c6529SAlex Blighppoll=no 34954e0c6529SAlex Blighcat > $TMPC << EOF 34964e0c6529SAlex Bligh#include <poll.h> 34974e0c6529SAlex Bligh 34984e0c6529SAlex Blighint main(void) 34994e0c6529SAlex Bligh{ 35004e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 35014e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 35024e0c6529SAlex Bligh return 0; 35034e0c6529SAlex Bligh} 35044e0c6529SAlex BlighEOF 35054e0c6529SAlex Blighif compile_prog "" "" ; then 35064e0c6529SAlex Bligh ppoll=yes 35074e0c6529SAlex Blighfi 35084e0c6529SAlex Bligh 3509cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 3510cd758dd0SAlex Blighprctl_pr_set_timerslack=no 3511cd758dd0SAlex Blighcat > $TMPC << EOF 3512cd758dd0SAlex Bligh#include <sys/prctl.h> 3513cd758dd0SAlex Bligh 3514cd758dd0SAlex Blighint main(void) 3515cd758dd0SAlex Bligh{ 3516cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3517cd758dd0SAlex Bligh return 0; 3518cd758dd0SAlex Bligh} 3519cd758dd0SAlex BlighEOF 3520cd758dd0SAlex Blighif compile_prog "" "" ; then 3521cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 3522cd758dd0SAlex Blighfi 3523cd758dd0SAlex Bligh 35243b6edd16SPeter Maydell# check for epoll support 35253b6edd16SPeter Maydellepoll=no 35263b6edd16SPeter Maydellcat > $TMPC << EOF 35273b6edd16SPeter Maydell#include <sys/epoll.h> 35283b6edd16SPeter Maydell 35293b6edd16SPeter Maydellint main(void) 35303b6edd16SPeter Maydell{ 35313b6edd16SPeter Maydell epoll_create(0); 35323b6edd16SPeter Maydell return 0; 35333b6edd16SPeter Maydell} 35343b6edd16SPeter MaydellEOF 35358fb03151SPeter Maydellif compile_prog "" "" ; then 35363b6edd16SPeter Maydell epoll=yes 35373b6edd16SPeter Maydellfi 35383b6edd16SPeter Maydell 35393b6edd16SPeter Maydell# epoll_create1 and epoll_pwait are later additions 35403b6edd16SPeter Maydell# so we must check separately for their presence 35413b6edd16SPeter Maydellepoll_create1=no 35423b6edd16SPeter Maydellcat > $TMPC << EOF 35433b6edd16SPeter Maydell#include <sys/epoll.h> 35443b6edd16SPeter Maydell 35453b6edd16SPeter Maydellint main(void) 35463b6edd16SPeter Maydell{ 354719e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 354819e83f6bSPeter Maydell * a function being called. This is necessary so that on 354919e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 355019e83f6bSPeter Maydell * the library but not declared in the header file we will 355119e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 355219e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 355319e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 355419e83f6bSPeter Maydell */ 3555c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 35563b6edd16SPeter Maydell} 35573b6edd16SPeter MaydellEOF 35588fb03151SPeter Maydellif compile_prog "" "" ; then 35593b6edd16SPeter Maydell epoll_create1=yes 35603b6edd16SPeter Maydellfi 35613b6edd16SPeter Maydell 35623b6edd16SPeter Maydellepoll_pwait=no 35633b6edd16SPeter Maydellcat > $TMPC << EOF 35643b6edd16SPeter Maydell#include <sys/epoll.h> 35653b6edd16SPeter Maydell 35663b6edd16SPeter Maydellint main(void) 35673b6edd16SPeter Maydell{ 35683b6edd16SPeter Maydell epoll_pwait(0, 0, 0, 0, 0); 35693b6edd16SPeter Maydell return 0; 35703b6edd16SPeter Maydell} 35713b6edd16SPeter MaydellEOF 35728fb03151SPeter Maydellif compile_prog "" "" ; then 35733b6edd16SPeter Maydell epoll_pwait=yes 35743b6edd16SPeter Maydellfi 35753b6edd16SPeter Maydell 3576a8fd1abaSPeter Maydell# check for sendfile support 3577a8fd1abaSPeter Maydellsendfile=no 3578a8fd1abaSPeter Maydellcat > $TMPC << EOF 3579a8fd1abaSPeter Maydell#include <sys/sendfile.h> 3580a8fd1abaSPeter Maydell 3581a8fd1abaSPeter Maydellint main(void) 3582a8fd1abaSPeter Maydell{ 3583a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 3584a8fd1abaSPeter Maydell} 3585a8fd1abaSPeter MaydellEOF 3586a8fd1abaSPeter Maydellif compile_prog "" "" ; then 3587a8fd1abaSPeter Maydell sendfile=yes 3588a8fd1abaSPeter Maydellfi 3589a8fd1abaSPeter Maydell 359051834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 359151834341SRiku Voipiotimerfd=no 359251834341SRiku Voipiocat > $TMPC << EOF 359351834341SRiku Voipio#include <sys/timerfd.h> 359451834341SRiku Voipio 359551834341SRiku Voipioint main(void) 359651834341SRiku Voipio{ 359751834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 359851834341SRiku Voipio} 359951834341SRiku VoipioEOF 360051834341SRiku Voipioif compile_prog "" "" ; then 360151834341SRiku Voipio timerfd=yes 360251834341SRiku Voipiofi 360351834341SRiku Voipio 36049af5c906SRiku Voipio# check for setns and unshare support 36059af5c906SRiku Voipiosetns=no 36069af5c906SRiku Voipiocat > $TMPC << EOF 36079af5c906SRiku Voipio#include <sched.h> 36089af5c906SRiku Voipio 36099af5c906SRiku Voipioint main(void) 36109af5c906SRiku Voipio{ 36119af5c906SRiku Voipio int ret; 36129af5c906SRiku Voipio ret = setns(0, 0); 36139af5c906SRiku Voipio ret = unshare(0); 36149af5c906SRiku Voipio return ret; 36159af5c906SRiku Voipio} 36169af5c906SRiku VoipioEOF 36179af5c906SRiku Voipioif compile_prog "" "" ; then 36189af5c906SRiku Voipio setns=yes 36199af5c906SRiku Voipiofi 36209af5c906SRiku Voipio 3621cc8ae6deSpbrook# Check if tools are available to build documentation. 3622a25dba17SJuan Quintelaif test "$docs" != "no" ; then 362301668d98SStefan Weil if has makeinfo && has pod2man; then 3624a25dba17SJuan Quintela docs=yes 362583a3ab8bSJuan Quintela else 3626a25dba17SJuan Quintela if test "$docs" = "yes" ; then 362721684af0SStewart Smith feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 362883a3ab8bSJuan Quintela fi 3629a25dba17SJuan Quintela docs=no 363083a3ab8bSJuan Quintela fi 3631cc8ae6deSpbrookfi 3632cc8ae6deSpbrook 3633f514f41cSStefan Weil# Search for bswap_32 function 36346ae9a1f4SJuan Quintelabyteswap_h=no 36356ae9a1f4SJuan Quintelacat > $TMPC << EOF 36366ae9a1f4SJuan Quintela#include <byteswap.h> 36376ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 36386ae9a1f4SJuan QuintelaEOF 363952166aa0SJuan Quintelaif compile_prog "" "" ; then 36406ae9a1f4SJuan Quintela byteswap_h=yes 36416ae9a1f4SJuan Quintelafi 36426ae9a1f4SJuan Quintela 364375f13596SStefan Weil# Search for bswap32 function 36446ae9a1f4SJuan Quintelabswap_h=no 36456ae9a1f4SJuan Quintelacat > $TMPC << EOF 36466ae9a1f4SJuan Quintela#include <sys/endian.h> 36476ae9a1f4SJuan Quintela#include <sys/types.h> 36486ae9a1f4SJuan Quintela#include <machine/bswap.h> 36496ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 36506ae9a1f4SJuan QuintelaEOF 365152166aa0SJuan Quintelaif compile_prog "" "" ; then 36526ae9a1f4SJuan Quintela bswap_h=yes 36536ae9a1f4SJuan Quintelafi 36546ae9a1f4SJuan Quintela 3655da93a1fdSaliguori########################################## 3656e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 3657c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 3658e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 36593c33ea96SPaolo Bonzini libiscsi="yes" 3660ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 3661ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 3662c589b249SRonnie Sahlberg else 3663c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 3664e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 3665c589b249SRonnie Sahlberg fi 3666c589b249SRonnie Sahlberg libiscsi="no" 3667c589b249SRonnie Sahlberg fi 3668c589b249SRonnie Sahlbergfi 3669c589b249SRonnie Sahlberg 3670c589b249SRonnie Sahlberg########################################## 36718bacde8dSNatanael Copa# Do we need libm 36728bacde8dSNatanael Copacat > $TMPC << EOF 36738bacde8dSNatanael Copa#include <math.h> 3674f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 36758bacde8dSNatanael CopaEOF 36768bacde8dSNatanael Copaif compile_prog "" "" ; then 36778bacde8dSNatanael Copa : 36788bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 36798bacde8dSNatanael Copa LIBS="-lm $LIBS" 36808bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 36818bacde8dSNatanael Copaelse 368276ad07a4SPeter Maydell error_exit "libm check failed" 36838bacde8dSNatanael Copafi 36848bacde8dSNatanael Copa 36858bacde8dSNatanael Copa########################################## 3686da93a1fdSaliguori# Do we need librt 36878bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 36888bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 36898bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 36908bacde8dSNatanael Copa# function in addition. 3691da93a1fdSaliguoricat > $TMPC <<EOF 3692da93a1fdSaliguori#include <signal.h> 3693da93a1fdSaliguori#include <time.h> 36948bacde8dSNatanael Copaint main(void) { 36958bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 36968bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 36978bacde8dSNatanael Copa} 3698da93a1fdSaliguoriEOF 3699da93a1fdSaliguori 370052166aa0SJuan Quintelaif compile_prog "" "" ; then 370107ffa4bdSJuan Quintela : 37028bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 370318e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 370418e588b1SRick Liu LIBS="$LIBS -lrt" 370518e588b1SRick Liu libs_qga="$libs_qga -lrt" 3706da93a1fdSaliguorifi 3707da93a1fdSaliguori 370831ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 3709179cf400SAndreas Färber "$aix" != "yes" -a "$haiku" != "yes" ; then 37106362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 37116362a53fSJuan Quintelafi 37126362a53fSJuan Quintela 3713de5071c5SBlue Swirl########################################## 3714cd4ec0b4SGerd Hoffmann# spice probe 3715cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 3716cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 3717cd4ec0b4SGerd Hoffmann#include <spice.h> 3718cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 3719cd4ec0b4SGerd HoffmannEOF 3720710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 3721710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 372265d5d3f9SStefan Weil if $pkg_config --atleast-version=0.12.0 spice-server && \ 372365d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 3724cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 3725cd4ec0b4SGerd Hoffmann spice="yes" 3726cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 3727cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 37282e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 37292e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 3730cd4ec0b4SGerd Hoffmann else 3731cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 37328efc9363SHu Tao feature_not_found "spice" \ 37338efc9363SHu Tao "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 3734cd4ec0b4SGerd Hoffmann fi 3735cd4ec0b4SGerd Hoffmann spice="no" 3736cd4ec0b4SGerd Hoffmann fi 3737cd4ec0b4SGerd Hoffmannfi 3738cd4ec0b4SGerd Hoffmann 3739111a38b0SRobert Relyea# check for libcacard for smartcard support 3740111a38b0SRobert Relyeasmartcard_cflags="" 3741111a38b0SRobert Relyea# TODO - what's the minimal nss version we support? 3742111a38b0SRobert Relyeaif test "$smartcard_nss" != "no"; then 37435f01e06fSSergei Trofimovich cat > $TMPC << EOF 37445f01e06fSSergei Trofimovich#include <pk11pub.h> 37455f01e06fSSergei Trofimovichint main(void) { PK11_FreeSlot(0); return 0; } 37465f01e06fSSergei TrofimovichEOF 37479d171bd9SMichael Tokarev # FIXME: do not include $glib_* in here 37489d171bd9SMichael Tokarev nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" 37499d171bd9SMichael Tokarev nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" 37509d171bd9SMichael Tokarev test_cflags="$nss_cflags" 37516ca026cbSPeter Maydell # The header files in nss < 3.13.3 have a bug which causes them to 37526ca026cbSPeter Maydell # emit a warning. If we're going to compile QEMU with -Werror, then 37536ca026cbSPeter Maydell # test that the headers don't have this bug. Otherwise we would pass 37546ca026cbSPeter Maydell # the configure test but fail to compile QEMU later. 37556ca026cbSPeter Maydell if test "$werror" = "yes"; then 37566ca026cbSPeter Maydell test_cflags="-Werror $test_cflags" 37576ca026cbSPeter Maydell fi 3758b6fc675bSPaolo Bonzini if test -n "$libtool" && 375965d5d3f9SStefan Weil $pkg_config --atleast-version=3.12.8 nss && \ 37609d171bd9SMichael Tokarev compile_prog "$test_cflags" "$nss_libs"; then 37615f01e06fSSergei Trofimovich smartcard_nss="yes" 3762111a38b0SRobert Relyea else 3763111a38b0SRobert Relyea if test "$smartcard_nss" = "yes"; then 37648efc9363SHu Tao feature_not_found "nss" "Install nss devel >= 3.12.8" 3765111a38b0SRobert Relyea fi 3766111a38b0SRobert Relyea smartcard_nss="no" 3767111a38b0SRobert Relyea fi 3768111a38b0SRobert Relyeafi 3769111a38b0SRobert Relyea 37702b2325ffSGerd Hoffmann# check for libusb 37712b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 377265d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 37732b2325ffSGerd Hoffmann libusb="yes" 3774ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 3775ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 37762b2325ffSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 37772b2325ffSGerd Hoffmann libs_softmmu="$libs_softmmu $libusb_libs" 37782b2325ffSGerd Hoffmann else 37792b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 37808efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 37812b2325ffSGerd Hoffmann fi 37822b2325ffSGerd Hoffmann libusb="no" 37832b2325ffSGerd Hoffmann fi 37842b2325ffSGerd Hoffmannfi 37852b2325ffSGerd Hoffmann 378669354a83SHans de Goede# check for usbredirparser for usb network redirection support 378769354a83SHans de Goedeif test "$usb_redir" != "no" ; then 378865d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 378969354a83SHans de Goede usb_redir="yes" 3790ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 3791ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 379269354a83SHans de Goede QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 379356ab2ad1SAurelien Jarno libs_softmmu="$libs_softmmu $usb_redir_libs" 379469354a83SHans de Goede else 379569354a83SHans de Goede if test "$usb_redir" = "yes"; then 379621684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 379769354a83SHans de Goede fi 379869354a83SHans de Goede usb_redir="no" 379969354a83SHans de Goede fi 380069354a83SHans de Goedefi 380169354a83SHans de Goede 3802cd4ec0b4SGerd Hoffmann########################################## 3803d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 3804d9840e25STomoki Sekiyama 3805d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 3806d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 3807d9840e25STomoki Sekiyama "") vss_win32_include="-I$source_path" ;; 3808d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 3809d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 3810d9840e25STomoki Sekiyama vss_win32_include="-I$source_path/.sdk/vss" 3811d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 3812d9840e25STomoki Sekiyama ;; 3813d9840e25STomoki Sekiyama *) vss_win32_include="-I$vss_win32_sdk" 3814d9840e25STomoki Sekiyama esac 3815d9840e25STomoki Sekiyama cat > $TMPC << EOF 3816d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 3817d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 3818d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 3819d9840e25STomoki SekiyamaEOF 3820d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 3821d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 3822d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 3823d9840e25STomoki Sekiyama libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 3824d9840e25STomoki Sekiyama else 3825d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 3826d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 3827d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 3828d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 3829d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 3830d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 3831d9840e25STomoki Sekiyama feature_not_found "VSS support" 3832d9840e25STomoki Sekiyama fi 3833d9840e25STomoki Sekiyama guest_agent_with_vss="no" 3834d9840e25STomoki Sekiyama fi 3835d9840e25STomoki Sekiyamafi 3836d9840e25STomoki Sekiyama 3837d9840e25STomoki Sekiyama########################################## 3838d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 3839d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 3840d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 3841d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 3842d9840e25STomoki Sekiyama 3843d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 3844d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 3845d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 3846d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 3847d9840e25STomoki Sekiyama if test -n "$programfiles"; then 3848d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 3849d9840e25STomoki Sekiyama else 3850d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 3851d9840e25STomoki Sekiyama fi 3852d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 3853d9840e25STomoki Sekiyama win_sdk="" 3854d9840e25STomoki Sekiyama fi 3855d9840e25STomoki Sekiyamafi 3856d9840e25STomoki Sekiyama 3857d9840e25STomoki Sekiyama########################################## 3858cd4ec0b4SGerd Hoffmann 3859747bbdf7SBlue Swirl########################################## 38605f6b9e8fSBlue Swirl# check if we have fdatasync 38615f6b9e8fSBlue Swirl 38625f6b9e8fSBlue Swirlfdatasync=no 38635f6b9e8fSBlue Swirlcat > $TMPC << EOF 38645f6b9e8fSBlue Swirl#include <unistd.h> 3865d1722a27SAlexandre Raymondint main(void) { 3866d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 3867d1722a27SAlexandre Raymondreturn fdatasync(0); 3868d1722a27SAlexandre Raymond#else 3869e172fe11SStefan Weil#error Not supported 3870d1722a27SAlexandre Raymond#endif 3871d1722a27SAlexandre Raymond} 38725f6b9e8fSBlue SwirlEOF 38735f6b9e8fSBlue Swirlif compile_prog "" "" ; then 38745f6b9e8fSBlue Swirl fdatasync=yes 38755f6b9e8fSBlue Swirlfi 38765f6b9e8fSBlue Swirl 387794a420b1SStefan Hajnoczi########################################## 3878e78815a5SAndreas Färber# check if we have madvise 3879e78815a5SAndreas Färber 3880e78815a5SAndreas Färbermadvise=no 3881e78815a5SAndreas Färbercat > $TMPC << EOF 3882e78815a5SAndreas Färber#include <sys/types.h> 3883e78815a5SAndreas Färber#include <sys/mman.h> 3884832ce9c2SScott Wood#include <stddef.h> 3885e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 3886e78815a5SAndreas FärberEOF 3887e78815a5SAndreas Färberif compile_prog "" "" ; then 3888e78815a5SAndreas Färber madvise=yes 3889e78815a5SAndreas Färberfi 3890e78815a5SAndreas Färber 3891e78815a5SAndreas Färber########################################## 3892e78815a5SAndreas Färber# check if we have posix_madvise 3893e78815a5SAndreas Färber 3894e78815a5SAndreas Färberposix_madvise=no 3895e78815a5SAndreas Färbercat > $TMPC << EOF 3896e78815a5SAndreas Färber#include <sys/mman.h> 3897832ce9c2SScott Wood#include <stddef.h> 3898e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 3899e78815a5SAndreas FärberEOF 3900e78815a5SAndreas Färberif compile_prog "" "" ; then 3901e78815a5SAndreas Färber posix_madvise=yes 3902e78815a5SAndreas Färberfi 3903e78815a5SAndreas Färber 3904e78815a5SAndreas Färber########################################## 39051e9737daSRichard Henderson# check if we have usable SIGEV_THREAD_ID 39061e9737daSRichard Henderson 39071e9737daSRichard Hendersonsigev_thread_id=no 39081e9737daSRichard Hendersoncat > $TMPC << EOF 39091e9737daSRichard Henderson#include <signal.h> 39101e9737daSRichard Hendersonint main(void) { 39111e9737daSRichard Henderson struct sigevent ev; 39121e9737daSRichard Henderson ev.sigev_notify = SIGEV_THREAD_ID; 39131e9737daSRichard Henderson ev._sigev_un._tid = 0; 39141e9737daSRichard Henderson asm volatile("" : : "g"(&ev)); 39151e9737daSRichard Henderson return 0; 39161e9737daSRichard Henderson} 39171e9737daSRichard HendersonEOF 39181e9737daSRichard Hendersonif compile_prog "" "" ; then 39191e9737daSRichard Henderson sigev_thread_id=yes 39201e9737daSRichard Hendersonfi 39211e9737daSRichard Henderson 39221e9737daSRichard Henderson########################################## 392394a420b1SStefan Hajnoczi# check if trace backend exists 392494a420b1SStefan Hajnoczi 39255b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 392694a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 39275b808275SLluís Vilanova error_exit "invalid trace backends" \ 39285b808275SLluís Vilanova "Please choose supported trace backends." 392994a420b1SStefan Hajnoczifi 393094a420b1SStefan Hajnoczi 39317e24e92aSStefan Hajnoczi########################################## 39327e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 39335b808275SLluís Vilanovaif have_backend "ust"; then 39347e24e92aSStefan Hajnoczi cat > $TMPC << EOF 3935bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 39367e24e92aSStefan Hajnocziint main(void) { return 0; } 39377e24e92aSStefan HajnocziEOF 39387e24e92aSStefan Hajnoczi if compile_prog "" "" ; then 3939bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 3940bf15f63cSMohamad Gebai lttng_ust_libs=`$pkg_config --libs lttng-ust` 39417e24e92aSStefan Hajnoczi else 3942bf15f63cSMohamad Gebai lttng_ust_libs="-llttng-ust" 3943bf15f63cSMohamad Gebai fi 3944bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 3945bf15f63cSMohamad Gebai urcu_bp_libs=`$pkg_config --libs liburcu-bp` 3946bf15f63cSMohamad Gebai else 3947bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 3948bf15f63cSMohamad Gebai fi 3949bf15f63cSMohamad Gebai 3950bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 3951bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 3952bf15f63cSMohamad Gebai else 3953bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 39547e24e92aSStefan Hajnoczi fi 39557e24e92aSStefan Hajnoczifi 3956b3d08c02SDaniel P. Berrange 3957b3d08c02SDaniel P. Berrange########################################## 3958b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 39595b808275SLluís Vilanovaif have_backend "dtrace"; then 3960b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 396176ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 3962b3d08c02SDaniel P. Berrange fi 3963c276b17dSDaniel P. Berrange trace_backend_stap="no" 3964c276b17dSDaniel P. Berrange if has 'stap' ; then 3965c276b17dSDaniel P. Berrange trace_backend_stap="yes" 3966c276b17dSDaniel P. Berrange fi 3967b3d08c02SDaniel P. Berrangefi 3968b3d08c02SDaniel P. Berrange 39697e24e92aSStefan Hajnoczi########################################## 3970519175a2SAlex Barcelo# check and set a backend for coroutine 3971d0e2fce5SAneesh Kumar K.V 39727c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 39737c2acc70SPeter Maydell# is sigcontext. gthread is not selectable except explicitly, because 39747c2acc70SPeter Maydell# it is not functional enough to run QEMU proper. (It is occasionally 39757c2acc70SPeter Maydell# useful for debugging purposes.) On Windows the only valid backend 39767c2acc70SPeter Maydell# is the Windows-specific one. 39777c2acc70SPeter Maydell 39787c2acc70SPeter Maydellucontext_works=no 3979d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 3980d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 3981d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 3982cdf84806SPeter Maydell#ifdef __stub_makecontext 3983cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 3984cdf84806SPeter Maydell#endif 398575cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 3986d0e2fce5SAneesh Kumar K.VEOF 3987d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 39887c2acc70SPeter Maydell ucontext_works=yes 3989d0e2fce5SAneesh Kumar K.V fi 3990519175a2SAlex Barcelofi 39917c2acc70SPeter Maydell 39927c2acc70SPeter Maydellif test "$coroutine" = ""; then 39937c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 39947c2acc70SPeter Maydell coroutine=win32 39957c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 39967c2acc70SPeter Maydell coroutine=ucontext 3997519175a2SAlex Barcelo else 39987c2acc70SPeter Maydell coroutine=sigaltstack 39997c2acc70SPeter Maydell fi 40007c2acc70SPeter Maydellelse 40017c2acc70SPeter Maydell case $coroutine in 40027c2acc70SPeter Maydell windows) 40037c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 40047c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 40057c2acc70SPeter Maydell fi 40067c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 40077c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 40087c2acc70SPeter Maydell coroutine=win32 40097c2acc70SPeter Maydell ;; 40107c2acc70SPeter Maydell ucontext) 40117c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 40127c2acc70SPeter Maydell feature_not_found "ucontext" 40137c2acc70SPeter Maydell fi 40147c2acc70SPeter Maydell ;; 40157c2acc70SPeter Maydell gthread|sigaltstack) 40167c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 40177c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 40187c2acc70SPeter Maydell fi 40197c2acc70SPeter Maydell ;; 40207c2acc70SPeter Maydell *) 402176ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 40227c2acc70SPeter Maydell ;; 40237c2acc70SPeter Maydell esac 4024d0e2fce5SAneesh Kumar K.Vfi 4025d0e2fce5SAneesh Kumar K.V 402670c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 402770c60c08SStefan Hajnoczi if test "$coroutine" = "gthread"; then 402870c60c08SStefan Hajnoczi coroutine_pool=no 402970c60c08SStefan Hajnoczi else 403070c60c08SStefan Hajnoczi coroutine_pool=yes 403170c60c08SStefan Hajnoczi fi 403270c60c08SStefan Hajnoczifi 403370c60c08SStefan Hajnocziif test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 403470c60c08SStefan Hajnoczi error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 403570c60c08SStefan Hajnoczifi 403670c60c08SStefan Hajnoczi 4037d0e2fce5SAneesh Kumar K.V########################################## 4038d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 4039d2042378SAneesh Kumar K.V 40404e1797f9SStefan Weilopen_by_handle_at=no 4041d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 4042d2042378SAneesh Kumar K.V#include <fcntl.h> 4043acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 4044acc55ba8SStefan Weil# error missing definition 4045acc55ba8SStefan Weil#else 404675cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4047acc55ba8SStefan Weil#endif 4048d2042378SAneesh Kumar K.VEOF 4049d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 4050d2042378SAneesh Kumar K.V open_by_handle_at=yes 4051d2042378SAneesh Kumar K.Vfi 4052d2042378SAneesh Kumar K.V 4053e06a765eSHarsh Prateek Bora######################################## 4054e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 4055e06a765eSHarsh Prateek Bora 4056e06a765eSHarsh Prateek Boralinux_magic_h=no 4057e06a765eSHarsh Prateek Boracat > $TMPC << EOF 4058e06a765eSHarsh Prateek Bora#include <linux/magic.h> 4059e06a765eSHarsh Prateek Boraint main(void) { 406075cafad7SStefan Weil return 0; 4061e06a765eSHarsh Prateek Bora} 4062e06a765eSHarsh Prateek BoraEOF 4063e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 4064e06a765eSHarsh Prateek Bora linux_magic_h=yes 4065e06a765eSHarsh Prateek Borafi 4066e06a765eSHarsh Prateek Bora 40678ab1bf12SLuiz Capitulino######################################## 4068c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 4069c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 4070c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 4071c95e3080SKevin Wolf# only a warning. 4072c95e3080SKevin Wolf# 4073c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 4074c95e3080SKevin Wolf# the build doesn't fail anyway. 4075c95e3080SKevin Wolf 407606d71fa1SPeter Maydellpragma_disable_unused_but_set=no 407706d71fa1SPeter Maydellcat > $TMPC << EOF 4078e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 407906d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4080c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4081e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 4082c95e3080SKevin Wolf 408306d71fa1SPeter Maydellint main(void) { 408406d71fa1SPeter Maydell return 0; 408506d71fa1SPeter Maydell} 408606d71fa1SPeter MaydellEOF 408706d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 4088cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 4089c95e3080SKevin Wolfelse 4090c95e3080SKevin Wolf werror=no 409106d71fa1SPeter Maydellfi 409206d71fa1SPeter Maydell 409306d71fa1SPeter Maydell######################################## 4094541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 40953f4349dcSKevin Wolf 40963f4349dcSKevin Wolfvalgrind_h=no 40973f4349dcSKevin Wolfcat > $TMPC << EOF 40983f4349dcSKevin Wolf#include <valgrind/valgrind.h> 40993f4349dcSKevin Wolfint main(void) { 41003f4349dcSKevin Wolf return 0; 41013f4349dcSKevin Wolf} 41023f4349dcSKevin WolfEOF 41033f4349dcSKevin Wolfif compile_prog "" "" ; then 41043f4349dcSKevin Wolf valgrind_h=yes 41053f4349dcSKevin Wolffi 41063f4349dcSKevin Wolf 41073f4349dcSKevin Wolf######################################## 41088ab1bf12SLuiz Capitulino# check if environ is declared 41098ab1bf12SLuiz Capitulino 41108ab1bf12SLuiz Capitulinohas_environ=no 41118ab1bf12SLuiz Capitulinocat > $TMPC << EOF 41128ab1bf12SLuiz Capitulino#include <unistd.h> 41138ab1bf12SLuiz Capitulinoint main(void) { 4114c075a723SBlue Swirl environ = 0; 41158ab1bf12SLuiz Capitulino return 0; 41168ab1bf12SLuiz Capitulino} 41178ab1bf12SLuiz CapitulinoEOF 41188ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 41198ab1bf12SLuiz Capitulino has_environ=yes 41208ab1bf12SLuiz Capitulinofi 41218ab1bf12SLuiz Capitulino 412276a347e1SRichard Henderson######################################## 412376a347e1SRichard Henderson# check if cpuid.h is usable. 412476a347e1SRichard Henderson 412576a347e1SRichard Hendersoncpuid_h=no 412676a347e1SRichard Hendersoncat > $TMPC << EOF 412776a347e1SRichard Henderson#include <cpuid.h> 412876a347e1SRichard Hendersonint main(void) { 4129774d566cSPeter Maydell unsigned a, b, c, d; 4130774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 4131774d566cSPeter Maydell 4132774d566cSPeter Maydell if (max >= 1) { 4133774d566cSPeter Maydell __cpuid(1, a, b, c, d); 4134774d566cSPeter Maydell } 4135774d566cSPeter Maydell 4136774d566cSPeter Maydell if (max >= 7) { 4137774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 4138774d566cSPeter Maydell } 4139774d566cSPeter Maydell 414076a347e1SRichard Henderson return 0; 414176a347e1SRichard Henderson} 414276a347e1SRichard HendersonEOF 414376a347e1SRichard Hendersonif compile_prog "" "" ; then 414476a347e1SRichard Henderson cpuid_h=yes 414576a347e1SRichard Hendersonfi 414676a347e1SRichard Henderson 4147f540166bSRichard Henderson######################################## 4148f540166bSRichard Henderson# check if __[u]int128_t is usable. 4149f540166bSRichard Henderson 4150f540166bSRichard Hendersonint128=no 4151f540166bSRichard Hendersoncat > $TMPC << EOF 4152a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__) 4153a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4154a00f66abSStefan Weil# error __int128_t does not work in CLANG before 3.2 4155a00f66abSStefan Weil# endif 4156a00f66abSStefan Weil#endif 4157f540166bSRichard Henderson__int128_t a; 4158f540166bSRichard Henderson__uint128_t b; 4159f540166bSRichard Hendersonint main (void) { 4160f540166bSRichard Henderson a = a + b; 4161f540166bSRichard Henderson b = a * b; 4162464e3671SPeter Maydell a = a * a; 4163f540166bSRichard Henderson return 0; 4164f540166bSRichard Henderson} 4165f540166bSRichard HendersonEOF 4166f540166bSRichard Hendersonif compile_prog "" "" ; then 4167f540166bSRichard Henderson int128=yes 4168f540166bSRichard Hendersonfi 416976a347e1SRichard Henderson 41701e6e9acaSRichard Henderson######################################## 41711e6e9acaSRichard Henderson# check if getauxval is available. 41721e6e9acaSRichard Henderson 41731e6e9acaSRichard Hendersongetauxval=no 41741e6e9acaSRichard Hendersoncat > $TMPC << EOF 41751e6e9acaSRichard Henderson#include <sys/auxv.h> 41761e6e9acaSRichard Hendersonint main(void) { 41771e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 41781e6e9acaSRichard Henderson} 41791e6e9acaSRichard HendersonEOF 41801e6e9acaSRichard Hendersonif compile_prog "" "" ; then 41811e6e9acaSRichard Henderson getauxval=yes 41821e6e9acaSRichard Hendersonfi 41831e6e9acaSRichard Henderson 4184d2042378SAneesh Kumar K.V########################################## 4185e86ecd4bSJuan Quintela# End of CC checks 4186e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 4187e86ecd4bSJuan Quintela 41881d728c39SBlue Swirlif test "$gcov" = "yes" ; then 41891d728c39SBlue Swirl CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 41901d728c39SBlue Swirl LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 41911d728c39SBlue Swirlelif test "$debug" = "no" ; then 4192e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 4193e86ecd4bSJuan Quintelafi 4194a316e378SJuan Quintela 41956542aa9cSPeter Lieven########################################## 41966542aa9cSPeter Lieven# Do we have libnfs 41976542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 4198b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 41996542aa9cSPeter Lieven libnfs="yes" 42006542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 42016542aa9cSPeter Lieven LIBS="$LIBS $libnfs_libs" 42026542aa9cSPeter Lieven else 42036542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 42048efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 42056542aa9cSPeter Lieven fi 42066542aa9cSPeter Lieven libnfs="no" 42076542aa9cSPeter Lieven fi 42086542aa9cSPeter Lievenfi 42091d728c39SBlue Swirl 421020ff6c80SAnthony Liguori# Disable zero malloc errors for official releases unless explicitly told to 421120ff6c80SAnthony Liguori# enable/disable 421220ff6c80SAnthony Liguoriif test -z "$zero_malloc" ; then 421320ff6c80SAnthony Liguori if test "$z_version" = "50" ; then 421420ff6c80SAnthony Liguori zero_malloc="no" 421520ff6c80SAnthony Liguori else 421620ff6c80SAnthony Liguori zero_malloc="yes" 421720ff6c80SAnthony Liguori fi 421820ff6c80SAnthony Liguorifi 421920ff6c80SAnthony Liguori 42206ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 42216ca026cbSPeter Maydellif test "$werror" = "yes"; then 42226ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 42236ca026cbSPeter Maydellfi 42246ca026cbSPeter Maydell 4225e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then 4226e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 42271156c669SJuan Quintela LDFLAGS="-Wl,--warn-common $LDFLAGS" 4228e86ecd4bSJuan Quintela fi 4229e86ecd4bSJuan Quintelafi 4230e86ecd4bSJuan Quintela 423194dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 423294dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 423394dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 423494dd53c5SGerd Hoffmannelse 423594dd53c5SGerd Hoffmann POD2MAN="pod2man" 423694dd53c5SGerd Hoffmannfi 423794dd53c5SGerd Hoffmann 4238952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 4239952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 4240952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 4241952afb71SBlue Swirl if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 4242952afb71SBlue Swirl LDFLAGS="-Wl,$flag $LDFLAGS" 4243952afb71SBlue Swirl fi 4244952afb71SBlue Swirl done 4245952afb71SBlue Swirlfi 4246952afb71SBlue Swirl 424710ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 4248e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 4249528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 4250834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 42515a67135aSbellard 42524b1c11fdSDaniel P. Berrangetools="" 42534b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 4254ca35f780SPaolo Bonzini tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 42554b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 42564b1c11fdSDaniel P. Berrange tools="qemu-nbd\$(EXESUF) $tools" 42574b1c11fdSDaniel P. Berrange fi 42584b1c11fdSDaniel P. Berrangefi 42594b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 4260983eef5aSMeador Inge if test "$virtfs" != no ; then 4261be5ea8edSAnthony Liguori if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 4262983eef5aSMeador Inge virtfs=yes 426317bff52bSM. Mohan Kumar tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 4264983eef5aSMeador Inge else 4265983eef5aSMeador Inge if test "$virtfs" = yes; then 426676ad07a4SPeter Maydell error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 4267983eef5aSMeador Inge fi 426817500370SAndreas Färber virtfs=no 4269983eef5aSMeador Inge fi 427017bff52bSM. Mohan Kumar fi 4271d138cee9SMichael Rothfi 4272e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 4273b39297aeSTomoki Sekiyama if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 4274e8ef31a3SMichael Tokarev tools="qemu-ga\$(EXESUF) $tools" 4275b39297aeSTomoki Sekiyama if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then 4276b39297aeSTomoki Sekiyama tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools" 4277b39297aeSTomoki Sekiyama fi 4278e8ef31a3SMichael Tokarev guest_agent=yes 4279e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 4280e8ef31a3SMichael Tokarev guest_agent=no 4281e8ef31a3SMichael Tokarev else 4282e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 4283ca35f780SPaolo Bonzini fi 42844b1c11fdSDaniel P. Berrangefi 4285ca35f780SPaolo Bonzini 4286ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 4287ca35f780SPaolo Bonziniroms= 4288ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 4289ca35f780SPaolo Bonzini "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 4290ca35f780SPaolo Bonzini "$softmmu" = yes ; then 4291ca35f780SPaolo Bonzini roms="optionrom" 4292ca35f780SPaolo Bonzinifi 4293d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 429439ac8455SDavid Gibson roms="$roms spapr-rtas" 429539ac8455SDavid Gibsonfi 4296ca35f780SPaolo Bonzini 42979933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 42989933c305SChristian Borntraeger roms="$roms s390-ccw" 42999933c305SChristian Borntraegerfi 43009933c305SChristian Borntraeger 4301964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary. 4302964c6fa1SRichard Hendersonif test "$pie" = "no" ; then 4303964c6fa1SRichard Henderson textseg_addr= 4304964c6fa1SRichard Henderson case "$cpu" in 4305479eb121SRichard Henderson arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 4306479eb121SRichard Henderson # ??? Rationale for choosing this address 4307964c6fa1SRichard Henderson textseg_addr=0x60000000 4308964c6fa1SRichard Henderson ;; 4309964c6fa1SRichard Henderson mips) 4310479eb121SRichard Henderson # A 256M aligned address, high in the address space, with enough 4311479eb121SRichard Henderson # room for the code_gen_buffer above it before the stack. 4312479eb121SRichard Henderson textseg_addr=0x60000000 4313964c6fa1SRichard Henderson ;; 4314964c6fa1SRichard Henderson esac 4315964c6fa1SRichard Henderson if [ -n "$textseg_addr" ]; then 4316964c6fa1SRichard Henderson cat > $TMPC <<EOF 4317964c6fa1SRichard Henderson int main(void) { return 0; } 4318964c6fa1SRichard HendersonEOF 4319964c6fa1SRichard Henderson textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 4320964c6fa1SRichard Henderson if ! compile_prog "" "$textseg_ldflags"; then 4321964c6fa1SRichard Henderson # In case ld does not support -Ttext-segment, edit the default linker 4322964c6fa1SRichard Henderson # script via sed to set the .text start addr. This is needed on FreeBSD 4323964c6fa1SRichard Henderson # at least. 4324964c6fa1SRichard Henderson $ld --verbose | sed \ 4325964c6fa1SRichard Henderson -e '1,/==================================================/d' \ 4326964c6fa1SRichard Henderson -e '/==================================================/,$d' \ 4327964c6fa1SRichard Henderson -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 4328964c6fa1SRichard Henderson -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 4329964c6fa1SRichard Henderson textseg_ldflags="-Wl,-T../config-host.ld" 4330964c6fa1SRichard Henderson fi 4331964c6fa1SRichard Henderson fi 4332964c6fa1SRichard Hendersonfi 4333964c6fa1SRichard Henderson 433450e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 433550e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 433650e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 43375ca9388aSGerd Hoffmann 43387d13299dSbellardecho "Install prefix $prefix" 4339c00b2808SEduardo Habkostecho "BIOS directory `eval echo $qemu_datadir`" 4340f2b9e1e3SPaolo Bonziniecho "binary directory `eval echo $bindir`" 43413aa5d2beSAlon Levyecho "library directory `eval echo $libdir`" 4342e26110cfSFam Zhengecho "module directory `eval echo $qemu_moddir`" 43438bf188aaSMichael Tokarevecho "libexec directory `eval echo $libexecdir`" 43440f94d6daSAlon Levyecho "include directory `eval echo $includedir`" 43451c0fd160SAurelien Jarnoecho "config directory `eval echo $sysconfdir`" 434611d9f695Sbellardif test "$mingw32" = "no" ; then 43475a699bbbSLaszlo Ersekecho "local state directory `eval echo $local_statedir`" 4348f2b9e1e3SPaolo Bonziniecho "Manual directory `eval echo $mandir`" 434943ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 43505a699bbbSLaszlo Ersekelse 43515a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 4352d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 435311d9f695Sbellardfi 43545a67135aSbellardecho "Source path $source_path" 43557d13299dSbellardecho "C compiler $cc" 435683469015Sbellardecho "Host C compiler $host_cc" 435783f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 43583c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 435945d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 43600c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 4361a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 43620c439cbfSJuan Quintelaecho "LDFLAGS $LDFLAGS" 43637d13299dSbellardecho "make $make" 43646a882643Spbrookecho "install $install" 4365c886edfbSBlue Swirlecho "python $python" 4366e2d8830eSBradif test "$slirp" = "yes" ; then 4367e2d8830eSBrad echo "smbd $smbd" 4368e2d8830eSBradfi 436917969268SFam Zhengecho "module support $modules" 4370a98fd896Sbellardecho "host CPU $cpu" 4371de83cd02Sbellardecho "host big endian $bigendian" 437297a847bcSbellardecho "target list $target_list" 4373ade25b0dSaurel32echo "tcg debug enabled $debug_tcg" 43747d13299dSbellardecho "gprof enabled $gprof" 437503b4fe7dSaliguoriecho "sparse enabled $sparse" 43761625af87Saliguoriecho "strip binaries $strip_opt" 437705c2a3e7Sbellardecho "profiler $profiler" 437843ce4dfeSbellardecho "static build $static" 43795b0753e0Sbellardif test "$darwin" = "yes" ; then 43805b0753e0Sbellard echo "Cocoa support $cocoa" 43815b0753e0Sbellardfi 4382e2134eb9SGerd Hoffmannecho "pixman $pixman" 438397a847bcSbellardecho "SDL support $sdl" 4384a4ccabcfSAnthony Liguoriecho "GTK support $gtk" 4385bbbf9bfbSStefan Weilecho "VTE support $vte" 43864d3b6f6eSbalrogecho "curses support $curses" 4387769ce76dSAlexander Grafecho "curl support $curl" 438867b915a5Sbellardecho "mingw32 support $mingw32" 43890c58ac1cSmalcecho "Audio drivers $audio_drv_list" 4390b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 4391b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 4392983eef5aSMeador Ingeecho "VirtFS support $virtfs" 4393821601eaSJes Sorensenecho "VNC support $vnc" 4394821601eaSJes Sorensenif test "$vnc" = "yes" ; then 43958d5d2d4cSths echo "VNC TLS support $vnc_tls" 43962f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 43972f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 4398efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 43997536ee4bSTim Hardeck echo "VNC WS support $vnc_ws" 4400821601eaSJes Sorensenfi 44013142255cSblueswir1if test -n "$sparc_cpu"; then 44023142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 44033142255cSblueswir1fi 4404e37630caSaliguoriecho "xen support $xen" 44053996e85cSPaul Durrantif test "$xen" = "yes" ; then 44063996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 44073996e85cSPaul Durrantfi 44082e4d9fb1Saurel32echo "brlapi support $brlapi" 4409a20a6f46SJuan Quintelaecho "bluez support $bluez" 4410a25dba17SJuan Quintelaecho "Documentation $docs" 4411379f6698SPaul Brookecho "GUEST_BASE $guest_base" 441240d6444eSAvi Kivityecho "PIE $pie" 44138a16d273Sthsecho "vde support $vde" 441458952137SVincenzo Maffioneecho "netmap support $netmap" 44155c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 4416758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 441777755340Sthsecho "Install blobs $blobs" 4418b31a0277SJuan Quintelaecho "KVM support $kvm" 44192da776dbSMichael R. Hinesecho "RDMA support $rdma" 44209195b2c2SStefan Weilecho "TCG interpreter $tcg_interpreter" 4421f652e6afSaurel32echo "fdt support $fdt" 4422ceb42de8Saliguoriecho "preadv support $preadv" 44235f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 4424e78815a5SAndreas Färberecho "madvise $madvise" 4425e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 44261e9737daSRichard Hendersonecho "sigev_thread_id $sigev_thread_id" 4427ee682d27SStefan Weilecho "uuid support $uuid" 442847e98658SCorey Bryantecho "libcap-ng support $cap_ng" 4429d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 44305e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 44315b808275SLluís Vilanovaecho "Trace backends $trace_backends" 4432e00e36fbSStefan Weilif test "$trace_backend" = "simple"; then 44339410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 4434e00e36fbSStefan Weilfi 4435c9dd4074SStefan Weilif test "$spice" = "yes"; then 44362e0e3c39SAlon Levyecho "spice support $spice ($spice_protocol_version/$spice_server_version)" 4437c9dd4074SStefan Weilelse 4438c9dd4074SStefan Weilecho "spice support $spice" 4439c9dd4074SStefan Weilfi 4440f27aaf4bSChristian Brunnerecho "rbd support $rbd" 4441dce512deSChristoph Hellwigecho "xfsctl support $xfs" 4442111a38b0SRobert Relyeaecho "nss used $smartcard_nss" 44432b2325ffSGerd Hoffmannecho "libusb $libusb" 444469354a83SHans de Goedeecho "usb net redir $usb_redir" 4445da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 4446c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 44476542aa9cSPeter Lievenecho "libnfs support $libnfs" 4448d138cee9SMichael Rothecho "build guest agent $guest_agent" 4449d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 4450f794573eSEduardo Otuboecho "seccomp support $seccomp" 44517c2acc70SPeter Maydellecho "coroutine backend $coroutine" 445270c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 4453eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 4454c9a12e75SChrysostomos Nanakosecho "Archipelago support $archipelago" 44551d728c39SBlue Swirlecho "gcov $gcov_tool" 44561d728c39SBlue Swirlecho "gcov enabled $gcov" 4457ab214c29SStefan Bergerecho "TPM support $tpm" 44580a12ec87SRichard W.M. Jonesecho "libssh2 support $libssh2" 44593b8acc11SPaolo Bonziniecho "TPM passthrough $tpm_passthrough" 44603556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 44614f18b782SJeff Codyecho "vhdx $vhdx" 446295c6bff3SBenoît Canetecho "Quorum $quorum" 4463607dacd0Sqiaonuohanecho "lzo support $lzo" 4464607dacd0Sqiaonuohanecho "snappy support $snappy" 44656b383c08SPeter Wuecho "bzip2 support $bzip2" 4466a99d57bbSWanlong Gaoecho "NUMA host support $numa" 44672847b469SFam Zhengecho "tcmalloc support $tcmalloc" 446867b915a5Sbellard 44691ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then 447024b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 4471e8cd23deSbellardfi 447297a847bcSbellard 447398ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 447497a847bcSbellard 4475dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 4476dbd99ae3SStefan Weil 447798ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 447898ec69acSJuan Quintelaecho >> $config_host_mak 447998ec69acSJuan Quintela 4480e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 448199d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 448299d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 44833aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 44848bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 44850f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 448699d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 448799d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 448822d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 44899afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 44909afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 4491e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 44925a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 4493785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 44945a699bbbSLaszlo Ersekfi 4495f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 4496f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 4497f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 4498834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 4499f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 4500804edf29SJuan Quintela 450198ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 4502727e5283SPaolo Bonzini 4503f8393946Saurel32if test "$debug_tcg" = "yes" ; then 45042358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 4505f8393946Saurel32fi 45061625af87Saliguoriif test "$strip_opt" = "yes" ; then 450752ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 45081625af87Saliguorifi 45097d13299dSbellardif test "$bigendian" = "yes" ; then 4510e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 451197a847bcSbellardfi 451267b915a5Sbellardif test "$mingw32" = "yes" ; then 451398ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 45149fe6de94SBlue Swirl rc_version=`cat $source_path/VERSION` 45159fe6de94SBlue Swirl version_major=${rc_version%%.*} 45169fe6de94SBlue Swirl rc_version=${rc_version#*.} 45179fe6de94SBlue Swirl version_minor=${rc_version%%.*} 45189fe6de94SBlue Swirl rc_version=${rc_version#*.} 45199fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 45209fe6de94SBlue Swirl version_micro=0 45219fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 45229fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4523d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 4524d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 4525d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 4526d9840e25STomoki Sekiyama fi 4527210fa556Spbrookelse 452835f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 4529210fa556Spbrookfi 4530128ab2ffSblueswir1 4531dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 4532dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 4533dffcb71cSMark McLoughlinfi 4534dffcb71cSMark McLoughlin 453583fb7adfSbellardif test "$darwin" = "yes" ; then 453698ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 453783fb7adfSbellardfi 4538b29fe3edSmalc 4539b29fe3edSmalcif test "$aix" = "yes" ; then 454098ec69acSJuan Quintela echo "CONFIG_AIX=y" >> $config_host_mak 4541b29fe3edSmalcfi 4542b29fe3edSmalc 4543ec530c81Sbellardif test "$solaris" = "yes" ; then 454498ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 45452358a494SJuan Quintela echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 45460475a5caSths if test "$needs_libsunmath" = "yes" ; then 454775b5a697SJuan Quintela echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 45480475a5caSths fi 4549ec530c81Sbellardfi 4550179cf400SAndreas Färberif test "$haiku" = "yes" ; then 4551179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 4552179cf400SAndreas Färberfi 455397a847bcSbellardif test "$static" = "yes" ; then 455498ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 455597a847bcSbellardfi 45561ba16968SStefan Weilif test "$profiler" = "yes" ; then 45572358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 455805c2a3e7Sbellardfi 4559c20709aaSbellardif test "$slirp" = "yes" ; then 456098ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 4561e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 4562c20709aaSbellardfi 45638a16d273Sthsif test "$vde" = "yes" ; then 456498ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 45658a16d273Sthsfi 456658952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 456758952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 456858952137SVincenzo Maffionefi 4569015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 4570015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 4571015a33bdSGongleifi 457247e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 457347e98658SCorey Bryant echo "CONFIG_LIBCAP=y" >> $config_host_mak 457447e98658SCorey Bryantfi 45752358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 45760c58ac1cSmalcfor drv in $audio_drv_list; do 4577bb55b712SStefan Weil def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 457898ec69acSJuan Quintela echo "$def=y" >> $config_host_mak 4579923e4521Smalc if test "$drv" = "fmod"; then 45807aac6cb1SJuan Quintela echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 4581fb065187Sbellard fi 45820c58ac1cSmalcdone 458367f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then 458467f86e8eSJuan Quintela echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 458567f86e8eSJuan Quintelafi 4586d5631638Smalcif test "$audio_win_int" = "yes" ; then 4587d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 4588d5631638Smalcfi 4589b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 4590b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 4591821601eaSJes Sorensenif test "$vnc" = "yes" ; then 4592821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 4593821601eaSJes Sorensenfi 45948d5d2d4cSthsif test "$vnc_tls" = "yes" ; then 459598ec69acSJuan Quintela echo "CONFIG_VNC_TLS=y" >> $config_host_mak 45968d5d2d4cSthsfi 45972f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 459898ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 45992f9606b3Saliguorifi 4600821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 46012f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 46022f6f5c7aSCorentin Charyfi 4603821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 4604efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 4605efe556adSCorentin Charyfi 46067536ee4bSTim Hardeckif test "$vnc_ws" = "yes" ; then 46077536ee4bSTim Hardeck echo "CONFIG_VNC_WS=y" >> $config_host_mak 46087536ee4bSTim Hardeck echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak 46097536ee4bSTim Hardeckfi 461076655d6dSaliguoriif test "$fnmatch" = "yes" ; then 46112358a494SJuan Quintela echo "CONFIG_FNMATCH=y" >> $config_host_mak 461276655d6dSaliguorifi 4613ee682d27SStefan Weilif test "$uuid" = "yes" ; then 4614ee682d27SStefan Weil echo "CONFIG_UUID=y" >> $config_host_mak 4615ee682d27SStefan Weilfi 4616dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 4617dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 4618dce512deSChristoph Hellwigfi 4619b1a550a0Spbrookqemu_version=`head $source_path/VERSION` 462098ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 46212358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 462298ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 462398ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak 4624a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 462598ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 4626cc8ae6deSpbrookfi 462717969268SFam Zhengif test "$modules" = "yes"; then 4628e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 4629e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 4630e26110cfSFam Zheng echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak 463117969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 463217969268SFam Zhengfi 46331ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 463498ec69acSJuan Quintela echo "CONFIG_SDL=y" >> $config_host_mak 4635a3f4d63dSCole Robinson echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 46368ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 463749ecc3faSbellardfi 463849ecc3faSbellardif test "$cocoa" = "yes" ; then 463998ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 464049ecc3faSbellardfi 46414d3b6f6eSbalrogif test "$curses" = "yes" ; then 464298ec69acSJuan Quintela echo "CONFIG_CURSES=y" >> $config_host_mak 4643ab4e5602SJan Kiszkafi 4644ebc996f3SRiku Voipioif test "$utimens" = "yes" ; then 46452358a494SJuan Quintela echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 4646ebc996f3SRiku Voipiofi 4647099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 46482358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 4649099d6b0fSRiku Voipiofi 465040ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 465140ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 465240ff6d7eSKevin Wolffi 46533ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 46542358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 46553ce34dfbSvibisreenivasanfi 4656c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 4657c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 4658c2882b96SRiku Voipiofi 4659d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 4660d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 4661d0927938SUlrich Hechtfi 46623d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 46633d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 46643d4fa43eSKusanagi Kouichifi 4665b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 4666b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 4667b953f075SDenis V. Lunevfi 4668ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 4669ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 4670ed911435SKevin Wolffi 4671c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 4672c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 4673c727f47dSPeter Maydellfi 4674dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 4675dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 4676dace20dcSPeter Maydellfi 4677d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 4678d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 4679d0927938SUlrich Hechtfi 46804e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 46814e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 46824e0c6529SAlex Blighfi 4683cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 4684cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 4685cd758dd0SAlex Blighfi 46863b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 46873b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 46883b6edd16SPeter Maydellfi 46893b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 46903b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 46913b6edd16SPeter Maydellfi 46923b6edd16SPeter Maydellif test "$epoll_pwait" = "yes" ; then 46933b6edd16SPeter Maydell echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 46943b6edd16SPeter Maydellfi 4695a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 4696a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 4697a8fd1abaSPeter Maydellfi 469851834341SRiku Voipioif test "$timerfd" = "yes" ; then 469951834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 470051834341SRiku Voipiofi 47019af5c906SRiku Voipioif test "$setns" = "yes" ; then 47029af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 47039af5c906SRiku Voipiofi 47043b3f24adSaurel32if test "$inotify" = "yes" ; then 47052358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 47063b3f24adSaurel32fi 4707c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 4708c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 4709c05c7a73SRiku Voipiofi 47106ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 47116ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 47126ae9a1f4SJuan Quintelafi 47136ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 47146ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 47156ae9a1f4SJuan Quintelafi 4716769ce76dSAlexander Grafif test "$curl" = "yes" ; then 4717d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 4718b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 47196ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 4720769ce76dSAlexander Graffi 47212e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 472298ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 47232e4d9fb1Saurel32fi 4724fb599c9aSbalrogif test "$bluez" = "yes" ; then 472598ec69acSJuan Quintela echo "CONFIG_BLUEZ=y" >> $config_host_mak 4726ef7635ecSJuan Quintela echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 4727fb599c9aSbalrogfi 47289d41401bSMichael S. Tsirkinif test "glib_subprocess" = "yes" ; then 47299d41401bSMichael S. Tsirkin echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 47309d41401bSMichael S. Tsirkinfi 4731e18df141SAnthony Liguoriecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 4732a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 4733a4ccabcfSAnthony Liguori echo "CONFIG_GTK=y" >> $config_host_mak 4734a3f4d63dSCole Robinson echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 4735a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 4736bbbf9bfbSStefan Weilfi 4737bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 4738bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 4739a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 4740a4ccabcfSAnthony Liguorifi 4741e37630caSaliguoriif test "$xen" = "yes" ; then 47426dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 4743d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 4744e37630caSaliguorifi 47455c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 47465c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 47475c6c3a6cSChristoph Hellwigfi 4748758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 4749758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 4750758e8e38SVenkateswararao Jujjuri (JV)fi 47514f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 47524f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 47534f26f2b6SAvi Kivityfi 4754983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 4755758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 4756758e8e38SVenkateswararao Jujjuri (JV)fi 47575e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 47585e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 47595e9be92dSNicholas Bellingerfi 476003ce5744SNikolay Nikolaevif test "$vhost_net" = "yes" ; then 476103ce5744SNikolay Nikolaev echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 476203ce5744SNikolay Nikolaevfi 476377755340Sthsif test "$blobs" = "yes" ; then 476498ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 476577755340Sthsfi 4766bf9298b9Saliguoriif test "$iovec" = "yes" ; then 47672358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 4768bf9298b9Saliguorifi 4769ceb42de8Saliguoriif test "$preadv" = "yes" ; then 47702358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 4771ceb42de8Saliguorifi 4772f652e6afSaurel32if test "$fdt" = "yes" ; then 47733f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 4774f652e6afSaurel32fi 4775dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 4776dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 4777dcc38d1cSMarcelo Tosattifi 47789195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 47799195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 47809195b2c2SStefan Weilfi 47815f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 47825f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 47835f6b9e8fSBlue Swirlfi 4784e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 4785e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 4786e78815a5SAndreas Färberfi 4787e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 4788e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 4789e78815a5SAndreas Färberfi 47901e9737daSRichard Hendersonif test "$sigev_thread_id" = "yes" ; then 47911e9737daSRichard Henderson echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak 47921e9737daSRichard Hendersonfi 479397a847bcSbellard 4794cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 4795cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 4796cd4ec0b4SGerd Hoffmannfi 4797cd4ec0b4SGerd Hoffmann 4798111a38b0SRobert Relyeaif test "$smartcard_nss" = "yes" ; then 4799111a38b0SRobert Relyea echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 48009d171bd9SMichael Tokarev echo "NSS_LIBS=$nss_libs" >> $config_host_mak 48019d171bd9SMichael Tokarev echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak 4802111a38b0SRobert Relyeafi 4803111a38b0SRobert Relyea 48042b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 48052b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 48062b2325ffSGerd Hoffmannfi 48072b2325ffSGerd Hoffmann 480869354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 480969354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 481069354a83SHans de Goedefi 481169354a83SHans de Goede 4812da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 4813da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 4814f676c67eSJeremy White echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak 4815da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 481620ff075bSMichael Wallefi 481720ff075bSMichael Walle 4818607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 4819607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 4820607dacd0Sqiaonuohanfi 4821607dacd0Sqiaonuohan 4822607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 4823607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 4824607dacd0Sqiaonuohanfi 4825607dacd0Sqiaonuohan 48266b383c08SPeter Wuif test "$bzip2" = "yes" ; then 48276b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 48286b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 48296b383c08SPeter Wufi 48306b383c08SPeter Wu 4831c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 4832d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 48336ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 48346ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 4835c589b249SRonnie Sahlbergfi 4836c589b249SRonnie Sahlberg 48376542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 48386542aa9cSPeter Lieven echo "CONFIG_LIBNFS=y" >> $config_host_mak 48396542aa9cSPeter Lievenfi 48406542aa9cSPeter Lieven 4841f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 4842f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 4843f794573eSEduardo Otubofi 4844f794573eSEduardo Otubo 484583fb7adfSbellard# XXX: suppress that 48467d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 48472358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 48487d3505c5Sbellardfi 48497d3505c5Sbellard 485020ff6c80SAnthony Liguoriif test "$zero_malloc" = "yes" ; then 485120ff6c80SAnthony Liguori echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 485220ff6c80SAnthony Liguorifi 48533556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 48543556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 48553556c233SPaolo Bonzinifi 4856f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 4857d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 48586ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 48596ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 4860f27aaf4bSChristian Brunnerfi 486120ff6c80SAnthony Liguori 48627c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 486370c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 486470c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 486570c60c08SStefan Hajnoczielse 486670c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 486770c60c08SStefan Hajnoczifi 4868d0e2fce5SAneesh Kumar K.V 4869d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 4870d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 4871d2042378SAneesh Kumar K.Vfi 4872d2042378SAneesh Kumar K.V 4873e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 4874e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 4875e06a765eSHarsh Prateek Borafi 4876e06a765eSHarsh Prateek Bora 4877cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 4878cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 487906d71fa1SPeter Maydellfi 488006d71fa1SPeter Maydell 48813f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 48823f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 48833f4349dcSKevin Wolffi 48843f4349dcSKevin Wolf 48858ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 48868ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 48878ab1bf12SLuiz Capitulinofi 48888ab1bf12SLuiz Capitulino 488976a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 489076a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 489176a347e1SRichard Hendersonfi 489276a347e1SRichard Henderson 4893f540166bSRichard Hendersonif test "$int128" = "yes" ; then 4894f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 4895f540166bSRichard Hendersonfi 4896f540166bSRichard Henderson 48971e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 48981e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 48991e6e9acaSRichard Hendersonfi 49001e6e9acaSRichard Henderson 4901eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 4902d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 49036ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 49046ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 4905eb100396SBharata B Raofi 4906eb100396SBharata B Rao 49070c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 49080c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 49090c14fb47SBharata B Raofi 49100c14fb47SBharata B Rao 49117c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 49127c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 49137c815372SBharata B Raofi 49147c815372SBharata B Rao 4915c9a12e75SChrysostomos Nanakosif test "$archipelago" = "yes" ; then 4916c9a12e75SChrysostomos Nanakos echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak 4917c9a12e75SChrysostomos Nanakos echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak 4918c9a12e75SChrysostomos Nanakosfi 4919c9a12e75SChrysostomos Nanakos 49200a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then 4921d3399d7cSFam Zheng echo "CONFIG_LIBSSH2=m" >> $config_host_mak 49226ebc91e5SFam Zheng echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 49236ebc91e5SFam Zheng echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 49240a12ec87SRichard W.M. Jonesfi 49250a12ec87SRichard W.M. Jones 492695c6bff3SBenoît Canetif test "$quorum" = "yes" ; then 492795c6bff3SBenoît Canet echo "CONFIG_QUORUM=y" >> $config_host_mak 492895c6bff3SBenoît Canetfi 492995c6bff3SBenoît Canet 49304f18b782SJeff Codyif test "$vhdx" = "yes" ; then 49314f18b782SJeff Cody echo "CONFIG_VHDX=y" >> $config_host_mak 49324f18b782SJeff Codyfi 49334f18b782SJeff Cody 493468063649Sblueswir1# USB host support 4935b5613fdcSGerd Hoffmannif test "$libusb" = "yes"; then 49362b2325ffSGerd Hoffmann echo "HOST_USB=libusb legacy" >> $config_host_mak 4937b5613fdcSGerd Hoffmannelse 493898ec69acSJuan Quintela echo "HOST_USB=stub" >> $config_host_mak 4939b5613fdcSGerd Hoffmannfi 494068063649Sblueswir1 49413b8acc11SPaolo Bonzini# TPM passthrough support? 49423b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 49433b8acc11SPaolo Bonzini echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 49443b8acc11SPaolo Bonzini if test "$tpm_passthrough" = "yes"; then 49453b8acc11SPaolo Bonzini echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 49463b8acc11SPaolo Bonzini fi 49473b8acc11SPaolo Bonzinifi 49483b8acc11SPaolo Bonzini 49495b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 49505b808275SLluís Vilanovaif have_backend "nop"; then 49516d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 495222890ab5SPrerna Saxenafi 49535b808275SLluís Vilanovaif have_backend "simple"; then 49546d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 49556d8a764eSLluís # Set the appropriate trace file. 4956953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 49579410b56cSPrerna Saxenafi 49585b808275SLluís Vilanovaif have_backend "stderr"; then 49596d8a764eSLluís echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 49606d8a764eSLluísfi 49615b808275SLluís Vilanovaif have_backend "ust"; then 49626d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 49636d8a764eSLluísfi 49645b808275SLluís Vilanovaif have_backend "dtrace"; then 49656d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 49666d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 49676d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 49686d8a764eSLluís fi 4969c276b17dSDaniel P. Berrangefi 49705b808275SLluís Vilanovaif have_backend "ftrace"; then 4971781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 4972781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 4973781e9545SEiichi Tsukata else 497421684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 4975781e9545SEiichi Tsukata fi 4976781e9545SEiichi Tsukatafi 49779410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 49789410b56cSPrerna Saxena 49792da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 49802da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 49812da776dbSMichael R. Hinesfi 49822da776dbSMichael R. Hines 49835c312079SDr. David Alan Gilbert# Hold two types of flag: 49845c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 49855c312079SDr. David Alan Gilbert# a thread we have a handle to 49865c312079SDr. David Alan Gilbert# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 49875c312079SDr. David Alan Gilbert# platform 49885c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then 49895c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 49905c312079SDr. David Alan Gilbert echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 49915c312079SDr. David Alan Gilbertfi 49925c312079SDr. David Alan Gilbert 49935b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 49945b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 49955b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 49965b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 49975b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 49985b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 4999c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 50005b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 500140d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 500240d964b5SRichard Henderson QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 50035b5e3037SPaolo Bonzinielse 50045b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 50055b5e3037SPaolo Bonzinifi 50065b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 50075b5e3037SPaolo Bonzini 500898ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 500998ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 5010804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 5011804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 50121901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 50131901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 501421655882SPaolo Bonziniif test -n "$libtool"; then 501521655882SPaolo Bonzini echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak 501621655882SPaolo Bonzini echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak 501721655882SPaolo Bonzinielse 50181901cb14SBrad echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 501921655882SPaolo Bonzini echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 502021655882SPaolo Bonzinifi 5021c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 5022804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 5023a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 5024a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 5025a31a8642SMichael S. Tsirkinfi 50262b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak 5027804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 502883f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 50293c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 5030804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 503145d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 50323dd46c78SBlue Swirlecho "AS=$as" >> $config_host_mak 50333dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 5034804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 5035804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 50364852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 50379fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 503844dc0ca3SAlon Levyecho "LIBTOOL=$libtool" >> $config_host_mak 5039e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 504046eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 5041a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 5042f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 5043e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 5044e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 504580fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 50462944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 5047e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 5048e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 5049e39f0062SPaolo Bonzinifi 505042da6041SGerd Hoffmannif test "$cross_prefix" != ""; then 505142da6041SGerd Hoffmann echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 505242da6041SGerd Hoffmannelse 505342da6041SGerd Hoffmann echo "AUTOCONF_HOST := " >> $config_host_mak 505442da6041SGerd Hoffmannfi 5055e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak 505646eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 505737746c5eSMarc-André Lureauecho "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak 505873da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 50593e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 5060804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 506117969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 506217969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 5063957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 506494dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 5065cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 50661d728c39SBlue Swirlif test "$gcov" = "yes" ; then 50671d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 50681d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 50691d728c39SBlue Swirlfi 5070804edf29SJuan Quintela 50716efd7517SPeter Maydell# use included Linux headers 50726efd7517SPeter Maydellif test "$linux" = "yes" ; then 5073a307beb6SAndreas Färber mkdir -p linux-headers 50746efd7517SPeter Maydell case "$cpu" in 5075c72b26ecSRichard Henderson i386|x86_64|x32) 507608312a63SPeter Maydell linux_arch=x86 50776efd7517SPeter Maydell ;; 50786efd7517SPeter Maydell ppcemb|ppc|ppc64) 507908312a63SPeter Maydell linux_arch=powerpc 50806efd7517SPeter Maydell ;; 50816efd7517SPeter Maydell s390x) 508208312a63SPeter Maydell linux_arch=s390 508308312a63SPeter Maydell ;; 50841f080313SClaudio Fontana aarch64) 50851f080313SClaudio Fontana linux_arch=arm64 50861f080313SClaudio Fontana ;; 5087222e7d11SSanjay Lal mips64) 5088222e7d11SSanjay Lal linux_arch=mips 5089222e7d11SSanjay Lal ;; 509008312a63SPeter Maydell *) 509108312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 509208312a63SPeter Maydell linux_arch="$cpu" 50936efd7517SPeter Maydell ;; 50946efd7517SPeter Maydell esac 509508312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 509608312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 509708312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 509808312a63SPeter Maydell fi 50996efd7517SPeter Maydellfi 51006efd7517SPeter Maydell 510197a847bcSbellardfor target in $target_list; do 510297a847bcSbellardtarget_dir="$target" 510325be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 5104c1799a84SPaolo Bonzinitarget_name=`echo $target | cut -d '-' -f 1` 510597a847bcSbellardtarget_bigendian="no" 51061f3d3c8fSJuan Quintela 5107c1799a84SPaolo Bonzinicase "$target_name" in 5108d15a9c23SAnthony Green armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 5109ea2d6a39SJuan Quintela target_bigendian=yes 5110ea2d6a39SJuan Quintela ;; 5111ea2d6a39SJuan Quintelaesac 511297a847bcSbellardtarget_softmmu="no" 5113997344f3Sbellardtarget_user_only="no" 5114831b7825Sthstarget_linux_user="no" 511584778508Sblueswir1target_bsd_user="no" 51169e407a85Spbrookcase "$target" in 5117c1799a84SPaolo Bonzini ${target_name}-softmmu) 51189e407a85Spbrook target_softmmu="yes" 51199e407a85Spbrook ;; 5120c1799a84SPaolo Bonzini ${target_name}-linux-user) 51219c7a4202SBlue Swirl if test "$linux" != "yes" ; then 512276ad07a4SPeter Maydell error_exit "Target '$target' is only available on a Linux host" 51239c7a4202SBlue Swirl fi 51249e407a85Spbrook target_user_only="yes" 51259e407a85Spbrook target_linux_user="yes" 51269e407a85Spbrook ;; 5127c1799a84SPaolo Bonzini ${target_name}-bsd-user) 51289cf55765SBlue Swirl if test "$bsd" != "yes" ; then 512976ad07a4SPeter Maydell error_exit "Target '$target' is only available on a BSD host" 51309c7a4202SBlue Swirl fi 513184778508Sblueswir1 target_user_only="yes" 513284778508Sblueswir1 target_bsd_user="yes" 513384778508Sblueswir1 ;; 51349e407a85Spbrook *) 513576ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 51369e407a85Spbrook exit 1 51379e407a85Spbrook ;; 51389e407a85Spbrookesac 5139831b7825Sths 514097a847bcSbellardmkdir -p $target_dir 514125be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 514297a847bcSbellard 5143e5fe0c52Spbrookbflt="no" 5144c1799a84SPaolo Bonziniinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"` 514556aebc89Spbrookgdb_xml_files="" 51467ba1e619Saliguori 5147c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 51486acff7daSJuan QuintelaTARGET_BASE_ARCH="" 5149e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 5150e73aae67SJuan Quintela 5151c1799a84SPaolo Bonzinicase "$target_name" in 51522408a527Saurel32 i386) 51532408a527Saurel32 ;; 51542408a527Saurel32 x86_64) 51556acff7daSJuan Quintela TARGET_BASE_ARCH=i386 51562408a527Saurel32 ;; 51572408a527Saurel32 alpha) 51582408a527Saurel32 ;; 51592408a527Saurel32 arm|armeb) 5160b498c8a0SJuan Quintela TARGET_ARCH=arm 5161e5fe0c52Spbrook bflt="yes" 516256aebc89Spbrook gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 51632408a527Saurel32 ;; 51646a49fa95SAlexander Graf aarch64) 51656a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 51666a49fa95SAlexander Graf bflt="yes" 51678f95ce2eSPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 51686a49fa95SAlexander Graf ;; 51692408a527Saurel32 cris) 51702408a527Saurel32 ;; 5171613a22c9SMichael Walle lm32) 5172613a22c9SMichael Walle ;; 51732408a527Saurel32 m68k) 51740938cda5Saurel32 bflt="yes" 517556aebc89Spbrook gdb_xml_files="cf-core.xml cf-fp.xml" 51762408a527Saurel32 ;; 5177877fdc12SEdgar E. Iglesias microblaze|microblazeel) 5178877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 517972b675caSEdgar E. Iglesias bflt="yes" 518072b675caSEdgar E. Iglesias ;; 51812408a527Saurel32 mips|mipsel) 5182b498c8a0SJuan Quintela TARGET_ARCH=mips 518325be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 51842408a527Saurel32 ;; 51852408a527Saurel32 mipsn32|mipsn32el) 5186597e2cecSRichard Henderson TARGET_ARCH=mips64 51876acff7daSJuan Quintela TARGET_BASE_ARCH=mips 518825be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 5189597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 51902408a527Saurel32 ;; 51912408a527Saurel32 mips64|mips64el) 5192b498c8a0SJuan Quintela TARGET_ARCH=mips64 51936acff7daSJuan Quintela TARGET_BASE_ARCH=mips 519425be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 51952408a527Saurel32 ;; 5196d15a9c23SAnthony Green moxie) 5197d15a9c23SAnthony Green ;; 5198e67db06eSJia Liu or32) 5199e67db06eSJia Liu TARGET_ARCH=openrisc 5200e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 5201e67db06eSJia Liu ;; 52022408a527Saurel32 ppc) 5203c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52042408a527Saurel32 ;; 52052408a527Saurel32 ppcemb) 52066acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5207e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 5208c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52092408a527Saurel32 ;; 52102408a527Saurel32 ppc64) 52116acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5212e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 5213c8b3532dSaurel32 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52142408a527Saurel32 ;; 52159c35126cSDoug Kwan ppc64le) 52169c35126cSDoug Kwan TARGET_ARCH=ppc64 52179c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 52189c35126cSDoug Kwan TARGET_ABI_DIR=ppc 52199c35126cSDoug Kwan gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52209c35126cSDoug Kwan ;; 52212408a527Saurel32 ppc64abi32) 5222b498c8a0SJuan Quintela TARGET_ARCH=ppc64 52236acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5224e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 522525be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 5226c8b3532dSaurel32 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 52272408a527Saurel32 ;; 52282408a527Saurel32 sh4|sh4eb) 5229b498c8a0SJuan Quintela TARGET_ARCH=sh4 52304dbed897Spbrook bflt="yes" 52312408a527Saurel32 ;; 52322408a527Saurel32 sparc) 52332408a527Saurel32 ;; 52342408a527Saurel32 sparc64) 52356acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 52362408a527Saurel32 ;; 52372408a527Saurel32 sparc32plus) 5238b498c8a0SJuan Quintela TARGET_ARCH=sparc64 52396acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 5240e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 524125be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 52422408a527Saurel32 ;; 524324e804ecSAlexander Graf s390x) 52446117afacSDavid Hildenbrand gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml" 524524e804ecSAlexander Graf ;; 52465ecaa4edSPeter Crosthwaite tricore) 52475ecaa4edSPeter Crosthwaite ;; 5248d2fbca94SGuan Xuetao unicore32) 5249d2fbca94SGuan Xuetao ;; 5250cfa550c6SMax Filippov xtensa|xtensaeb) 5251cfa550c6SMax Filippov TARGET_ARCH=xtensa 5252cfa550c6SMax Filippov ;; 52532408a527Saurel32 *) 525476ad07a4SPeter Maydell error_exit "Unsupported target CPU" 52552408a527Saurel32 ;; 52562408a527Saurel32esac 52575e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 52585e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 52595e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 52605e8861a0SPaolo Bonzinifi 52615e8861a0SPaolo Bonzini 52625e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 52635e8861a0SPaolo Bonzini 526499afc91dSDaniel P. Berrangeupper() { 526599afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 526699afc91dSDaniel P. Berrange} 526799afc91dSDaniel P. Berrange 526899afc91dSDaniel P. Berrangetarget_arch_name="`upper $TARGET_ARCH`" 526925be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 5270c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 527125be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 5272e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 5273e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 5274e6e91b9cSJuan Quintelafi 527525be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 5276adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 5277adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 5278adfc3e91SStacey Sonfi 5279c1799a84SPaolo Bonzinicase "$target_name" in 52801b0c87fcSJuan Quintela i386|x86_64) 52811b0c87fcSJuan Quintela if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 528225be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 5283eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 5284eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 5285eb6fda0fSAnthony PERARD fi 5286432d268cSJun Nakajima fi 528759d21e53SAlexander Graf ;; 528859d21e53SAlexander Graf *) 52891b0c87fcSJuan Quintelaesac 5290c1799a84SPaolo Bonzinicase "$target_name" in 5291222e7d11SSanjay Lal aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips) 5292c59249f9SJuan Quintela # Make sure the target and host cpus are compatible 5293c59249f9SJuan Quintela if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 5294c1799a84SPaolo Bonzini \( "$target_name" = "$cpu" -o \ 5295c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 5296c1799a84SPaolo Bonzini \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 5297c1799a84SPaolo Bonzini \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 5298c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 5299222e7d11SSanjay Lal \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \ 5300c1799a84SPaolo Bonzini \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 530118b8263eSMichael Tokarev \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \ 530218b8263eSMichael Tokarev \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \ 530318b8263eSMichael Tokarev \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then 530425be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 53051ba16968SStefan Weil if test "$vhost_net" = "yes" ; then 5306d5970055SMichael S. Tsirkin echo "CONFIG_VHOST_NET=y" >> $config_target_mak 5307d5970055SMichael S. Tsirkin fi 5308c59249f9SJuan Quintela fi 5309c59249f9SJuan Quintelaesac 5310de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 531125be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 531297a847bcSbellardfi 531397a847bcSbellardif test "$target_softmmu" = "yes" ; then 531425be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 5315de83cd02Sbellardfi 5316997344f3Sbellardif test "$target_user_only" = "yes" ; then 531725be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 5318a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 5319997344f3Sbellardfi 5320831b7825Sthsif test "$target_linux_user" = "yes" ; then 532125be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 5322831b7825Sthsfi 532356aebc89Spbrooklist="" 532456aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 532556aebc89Spbrook for x in $gdb_xml_files; do 532656aebc89Spbrook list="$list $source_path/gdb-xml/$x" 532756aebc89Spbrook done 532825be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 53293d0f1517SJuan Quintelafi 5330de83cd02Sbellard 5331e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 533225be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 5333e5fe0c52Spbrookfi 5334379f6698SPaul Brookif test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 533525be210fSJuan Quintela echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 5336379f6698SPaul Brookfi 533784778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 533825be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 533984778508Sblueswir1fi 53405b0753e0Sbellard 53414afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets 5342fa282484SJuan Quintela 53434afddb55SJuan Quintelacflags="" 5344fa282484SJuan Quintelaldflags="" 53459b8e111fSJuan Quintela 534664656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 534764656024SJuan Quintela case "$i" in 534864656024SJuan Quintela alpha) 534925be210fSJuan Quintela echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 535076cad711SPaolo Bonzini echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak 535164656024SJuan Quintela ;; 535282295d8aSRichard Henderson aarch64) 535382295d8aSRichard Henderson if test -n "${cxx}"; then 535482295d8aSRichard Henderson echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 535582295d8aSRichard Henderson echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 535682295d8aSRichard Henderson fi 535782295d8aSRichard Henderson ;; 535864656024SJuan Quintela arm) 535925be210fSJuan Quintela echo "CONFIG_ARM_DIS=y" >> $config_target_mak 536076cad711SPaolo Bonzini echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak 5361999b53ecSClaudio Fontana if test -n "${cxx}"; then 5362999b53ecSClaudio Fontana echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 5363999b53ecSClaudio Fontana echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 5364999b53ecSClaudio Fontana fi 536564656024SJuan Quintela ;; 536664656024SJuan Quintela cris) 536725be210fSJuan Quintela echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 536876cad711SPaolo Bonzini echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak 536964656024SJuan Quintela ;; 537064656024SJuan Quintela hppa) 537125be210fSJuan Quintela echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 537276cad711SPaolo Bonzini echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak 537364656024SJuan Quintela ;; 5374c72b26ecSRichard Henderson i386|x86_64|x32) 537525be210fSJuan Quintela echo "CONFIG_I386_DIS=y" >> $config_target_mak 537676cad711SPaolo Bonzini echo "CONFIG_I386_DIS=y" >> config-all-disas.mak 537764656024SJuan Quintela ;; 5378903ec55cSAurelien Jarno ia64*) 5379903ec55cSAurelien Jarno echo "CONFIG_IA64_DIS=y" >> $config_target_mak 538076cad711SPaolo Bonzini echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak 5381903ec55cSAurelien Jarno ;; 538279368f49SMichael Walle lm32) 538379368f49SMichael Walle echo "CONFIG_LM32_DIS=y" >> $config_target_mak 538476cad711SPaolo Bonzini echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak 538579368f49SMichael Walle ;; 538664656024SJuan Quintela m68k) 538725be210fSJuan Quintela echo "CONFIG_M68K_DIS=y" >> $config_target_mak 538876cad711SPaolo Bonzini echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak 538964656024SJuan Quintela ;; 5390877fdc12SEdgar E. Iglesias microblaze*) 539125be210fSJuan Quintela echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 539276cad711SPaolo Bonzini echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak 539364656024SJuan Quintela ;; 539464656024SJuan Quintela mips*) 539525be210fSJuan Quintela echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 539676cad711SPaolo Bonzini echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak 539764656024SJuan Quintela ;; 5398d15a9c23SAnthony Green moxie*) 5399d15a9c23SAnthony Green echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak 5400d15a9c23SAnthony Green echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak 5401d15a9c23SAnthony Green ;; 5402e67db06eSJia Liu or32) 5403e67db06eSJia Liu echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak 540476cad711SPaolo Bonzini echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak 5405e67db06eSJia Liu ;; 540664656024SJuan Quintela ppc*) 540725be210fSJuan Quintela echo "CONFIG_PPC_DIS=y" >> $config_target_mak 540876cad711SPaolo Bonzini echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak 540964656024SJuan Quintela ;; 541024e804ecSAlexander Graf s390*) 541125be210fSJuan Quintela echo "CONFIG_S390_DIS=y" >> $config_target_mak 541276cad711SPaolo Bonzini echo "CONFIG_S390_DIS=y" >> config-all-disas.mak 541364656024SJuan Quintela ;; 541464656024SJuan Quintela sh4) 541525be210fSJuan Quintela echo "CONFIG_SH4_DIS=y" >> $config_target_mak 541676cad711SPaolo Bonzini echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak 541764656024SJuan Quintela ;; 541864656024SJuan Quintela sparc*) 541925be210fSJuan Quintela echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 542076cad711SPaolo Bonzini echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak 542164656024SJuan Quintela ;; 5422cfa550c6SMax Filippov xtensa*) 5423cfa550c6SMax Filippov echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 542476cad711SPaolo Bonzini echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak 5425cfa550c6SMax Filippov ;; 542664656024SJuan Quintela esac 542764656024SJuan Quinteladone 54289195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 54299195b2c2SStefan Weil echo "CONFIG_TCI_DIS=y" >> $config_target_mak 543076cad711SPaolo Bonzini echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak 54319195b2c2SStefan Weilfi 543264656024SJuan Quintela 54336ee7126fSJuan Quintelacase "$ARCH" in 54346ee7126fSJuan Quintelaalpha) 54356ee7126fSJuan Quintela # Ensure there's only a single GP 54366ee7126fSJuan Quintela cflags="-msmall-data $cflags" 54376ee7126fSJuan Quintela;; 54386ee7126fSJuan Quintelaesac 54396ee7126fSJuan Quintela 5440d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 544125be210fSJuan Quintela echo "TARGET_GPROF=yes" >> $config_target_mak 5442d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 5443d02c1db3SJuan Quintela cflags="-p $cflags" 5444d02c1db3SJuan Quintela ldflags="-p $ldflags" 5445d02c1db3SJuan Quintela fi 5446d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 5447d02c1db3SJuan Quintela ldflags="-p $ldflags" 544825be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 5449d02c1db3SJuan Quintela fi 5450d02c1db3SJuan Quintelafi 5451d02c1db3SJuan Quintela 54529b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 5453964c6fa1SRichard Henderson ldflags="$ldflags $textseg_ldflags" 5454fa282484SJuan Quintelafi 5455fa282484SJuan Quintela 545625be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak 545725be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 5458fa282484SJuan Quintela 545997a847bcSbellarddone # for target in $targets 54607d13299dSbellard 5461b776eca1SGerd Hoffmannif [ "$pixman" = "internal" ]; then 5462b776eca1SGerd Hoffmann echo "config-host.h: subdir-pixman" >> $config_host_mak 5463b776eca1SGerd Hoffmannfi 5464b776eca1SGerd Hoffmann 54652da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 54662da776dbSMichael R. Hinesecho "CONFIG_RDMA=y" >> $config_host_mak 54672da776dbSMichael R. Hinesfi 54682da776dbSMichael R. Hines 5469a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then 5470a540f158SPeter Crosthwaite echo "config-host.h: subdir-dtc" >> $config_host_mak 5471a540f158SPeter Crosthwaitefi 5472a540f158SPeter Crosthwaite 5473a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 5474a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 5475a99d57bbSWanlong Gaofi 5476a99d57bbSWanlong Gao 5477d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory 5478f93296eaSWenchao XiaDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 54792b170effSMichael TokarevDIRS="$DIRS fsdev" 54809933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 54812d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 54822dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated" 5483c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 5484c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 5485aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 5486ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 5487446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile" 54889933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile" 54892d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 54904652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp" 5491753d11f2SRichard Hendersonfor bios_file in \ 5492753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 54935acc2ec0SGerd Hoffmann $source_path/pc-bios/*.aml \ 5494753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 5495753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 5496e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 5497753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 54984e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 5499753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 5500753d11f2SRichard Hendersondo 55017ea78b74SJan Kiszka FILES="$FILES pc-bios/`basename $bios_file`" 55027ea78b74SJan Kiszkadone 5503c2304b52SMarcel Apfelbaumfor test_file in `find $source_path/tests/acpi-test-data -type f` 5504c2304b52SMarcel Apfelbaumdo 5505c2304b52SMarcel Apfelbaum FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`" 5506c2304b52SMarcel Apfelbaumdone 5507d1807a4fSPaolo Bonzinimkdir -p $DIRS 55087d13299dSbellardfor f in $FILES ; do 5509cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 5510f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 5511f9245e10SPeter Maydell fi 55127d13299dSbellarddone 55131ad2134fSPaul Brook 5514c34ebfdcSAnthony Liguori# temporary config to build submodules 55152d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 5516c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 551737116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 5518c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 55193dd46c78SBlue Swirl echo "AS=$as" >> $config_mak 5520c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 5521c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 55223dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 5523c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 5524a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 5525c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 5526c34ebfdcSAnthony Liguoridone 5527c34ebfdcSAnthony Liguori 552876c7560aSMax Reitz# set up qemu-iotests in this build directory 552976c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 553076c7560aSMax Reitziotests_check="tests/qemu-iotests/check" 553176c7560aSMax Reitz 553276c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 553376c7560aSMax Reitzecho >> "$iotests_common_env" 553476c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 553576c7560aSMax Reitz 553676c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then 553776c7560aSMax Reitz symlink "$source_path/$iotests_check" "$iotests_check" 553876c7560aSMax Reitzfi 553976c7560aSMax Reitz 5540dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 5541dc655404SMichael S. Tsirkincat <<EOD >config.status 5542dc655404SMichael S. Tsirkin#!/bin/sh 5543dc655404SMichael S. Tsirkin# Generated by configure. 5544dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 5545dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 5546dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 5547dc655404SMichael S. TsirkinEOD 5548dc655404SMichael S. Tsirkinprintf "exec" >>config.status 5549dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status 5550dc655404SMichael S. Tsirkinecho >>config.status 5551dc655404SMichael S. Tsirkinchmod +x config.status 5552dc655404SMichael S. Tsirkin 55538cd05ab6SPeter Maydellrm -r "$TMPDIR1" 5554