17d13299dSbellard#!/bin/sh 27d13299dSbellard# 33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard 47d13299dSbellard# 58cd05ab6SPeter Maydell 699519e67SCornelia Huck# Unset some variables known to interfere with behavior of common tools, 799519e67SCornelia Huck# just as autoconf does. 899519e67SCornelia HuckCLICOLOR_FORCE= GREP_OPTIONS= 999519e67SCornelia Huckunset CLICOLOR_FORCE GREP_OPTIONS 1099519e67SCornelia Huck 115e4dfd3dSJohn Snow# Don't allow CCACHE, if present, to use cached results of compile tests! 125e4dfd3dSJohn Snowexport CCACHE_RECACHE=yes 135e4dfd3dSJohn Snow 148cd05ab6SPeter Maydell# Temporary directory used for files created while 158cd05ab6SPeter Maydell# configure runs. Since it is in the build directory 168cd05ab6SPeter Maydell# we can safely blow away any previous version of it 178cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete 188cd05ab6SPeter Maydell# it when configure exits.) 198cd05ab6SPeter MaydellTMPDIR1="config-temp" 208cd05ab6SPeter Maydellrm -rf "${TMPDIR1}" 218cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}" 228cd05ab6SPeter Maydellif [ $? -ne 0 ]; then 238cd05ab6SPeter Maydell echo "ERROR: failed to create temporary directory" 248cd05ab6SPeter Maydell exit 1 257d13299dSbellardfi 267d13299dSbellard 278cd05ab6SPeter MaydellTMPB="qemu-conf" 288cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c" 2966518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o" 309c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx" 3166518bf6SDon SlutzTMPL="${TMPDIR1}/${TMPB}.lo" 3266518bf6SDon SlutzTMPA="${TMPDIR1}/lib${TMPB}.la" 338cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe" 347d13299dSbellard 35da1d85e3SGerd Hoffmannrm -f config.log 369ac81bbbSmalc 37b48e3611SPeter Maydell# Print a helpful header at the top of config.log 38b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 39979ae168SPeter Maydellprintf "# Configured with:" >> config.log 40979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 41979ae168SPeter Maydellecho >> config.log 42b48e3611SPeter Maydellecho "#" >> config.log 43b48e3611SPeter Maydell 4476ad07a4SPeter Maydellerror_exit() { 4576ad07a4SPeter Maydell echo 4676ad07a4SPeter Maydell echo "ERROR: $1" 4776ad07a4SPeter Maydell while test -n "$2"; do 4876ad07a4SPeter Maydell echo " $2" 4976ad07a4SPeter Maydell shift 5076ad07a4SPeter Maydell done 5176ad07a4SPeter Maydell echo 5276ad07a4SPeter Maydell exit 1 5376ad07a4SPeter Maydell} 5476ad07a4SPeter Maydell 559c83ffd8SPeter Maydelldo_compiler() { 569c83ffd8SPeter Maydell # Run the compiler, capturing its output to the log. First argument 579c83ffd8SPeter Maydell # is compiler binary to execute. 589c83ffd8SPeter Maydell local compiler="$1" 599c83ffd8SPeter Maydell shift 609c83ffd8SPeter Maydell echo $compiler "$@" >> config.log 619c83ffd8SPeter Maydell $compiler "$@" >> config.log 2>&1 || return $? 628dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 638dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 648dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 658dc38a78SPeter Maydell # obvious to developers. 668dc38a78SPeter Maydell if test "$werror" != "yes"; then 678dc38a78SPeter Maydell return 0 688dc38a78SPeter Maydell fi 698dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 708dc38a78SPeter Maydell case "$*" in 718dc38a78SPeter Maydell *-Werror*) 728dc38a78SPeter Maydell return 0 738dc38a78SPeter Maydell ;; 748dc38a78SPeter Maydell esac 759c83ffd8SPeter Maydell echo $compiler -Werror "$@" >> config.log 769c83ffd8SPeter Maydell $compiler -Werror "$@" >> config.log 2>&1 && return $? 7776ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 7876ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 7976ad07a4SPeter Maydell "will be at the bottom of config.log." \ 8076ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 818dc38a78SPeter Maydell} 828dc38a78SPeter Maydell 839c83ffd8SPeter Maydelldo_cc() { 849c83ffd8SPeter Maydell do_compiler "$cc" "$@" 859c83ffd8SPeter Maydell} 869c83ffd8SPeter Maydell 879c83ffd8SPeter Maydelldo_cxx() { 889c83ffd8SPeter Maydell do_compiler "$cxx" "$@" 899c83ffd8SPeter Maydell} 909c83ffd8SPeter Maydell 919c83ffd8SPeter Maydellupdate_cxxflags() { 929c83ffd8SPeter Maydell # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 939c83ffd8SPeter Maydell # options which some versions of GCC's C++ compiler complain about 949c83ffd8SPeter Maydell # because they only make sense for C programs. 959c83ffd8SPeter Maydell QEMU_CXXFLAGS= 969c83ffd8SPeter Maydell for arg in $QEMU_CFLAGS; do 979c83ffd8SPeter Maydell case $arg in 989c83ffd8SPeter Maydell -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 999c83ffd8SPeter Maydell -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 1009c83ffd8SPeter Maydell ;; 1019c83ffd8SPeter Maydell *) 1029c83ffd8SPeter Maydell QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 1039c83ffd8SPeter Maydell ;; 1049c83ffd8SPeter Maydell esac 1059c83ffd8SPeter Maydell done 1069c83ffd8SPeter Maydell} 1079c83ffd8SPeter Maydell 10852166aa0SJuan Quintelacompile_object() { 109fd0e6053SJohn Snow local_cflags="$1" 110fd0e6053SJohn Snow do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC 11152166aa0SJuan Quintela} 11252166aa0SJuan Quintela 11352166aa0SJuan Quintelacompile_prog() { 11452166aa0SJuan Quintela local_cflags="$1" 11552166aa0SJuan Quintela local_ldflags="$2" 1168dc38a78SPeter Maydell do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags 11752166aa0SJuan Quintela} 11852166aa0SJuan Quintela 11911568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 12011568d6dSPaolo Bonzinisymlink() { 12172b8b5a1SStefan Weil rm -rf "$2" 122ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 12372b8b5a1SStefan Weil ln -s "$1" "$2" 12411568d6dSPaolo Bonzini} 12511568d6dSPaolo Bonzini 1260dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 1270dba6195SLoïc Minier# executable or a builtin) 1280dba6195SLoïc Minierhas() { 1290dba6195SLoïc Minier type "$1" >/dev/null 2>&1 1300dba6195SLoïc Minier} 1310dba6195SLoïc Minier 1320dba6195SLoïc Minier# search for an executable in PATH 1330dba6195SLoïc Minierpath_of() { 1340dba6195SLoïc Minier local_command="$1" 1350dba6195SLoïc Minier local_ifs="$IFS" 1360dba6195SLoïc Minier local_dir="" 1370dba6195SLoïc Minier 1380dba6195SLoïc Minier # pathname has a dir component? 1390dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 1400dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 1410dba6195SLoïc Minier echo "$local_command" 1420dba6195SLoïc Minier return 0 1430dba6195SLoïc Minier fi 1440dba6195SLoïc Minier fi 1450dba6195SLoïc Minier if [ -z "$local_command" ]; then 1460dba6195SLoïc Minier return 1 1470dba6195SLoïc Minier fi 1480dba6195SLoïc Minier 1490dba6195SLoïc Minier IFS=: 1500dba6195SLoïc Minier for local_dir in $PATH; do 1510dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 1520dba6195SLoïc Minier echo "$local_dir/$local_command" 1530dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1540dba6195SLoïc Minier return 0 1550dba6195SLoïc Minier fi 1560dba6195SLoïc Minier done 1570dba6195SLoïc Minier # not found 1580dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1590dba6195SLoïc Minier return 1 1600dba6195SLoïc Minier} 1610dba6195SLoïc Minier 1625b808275SLluís Vilanovahave_backend () { 1635b808275SLluís Vilanova echo "$trace_backends" | grep "$1" >/dev/null 1645b808275SLluís Vilanova} 1655b808275SLluís Vilanova 1667d13299dSbellard# default parameters 167ca4deeb1SPaolo Bonzinisource_path=`dirname "$0"` 1682ff6b91eSJuan Quintelacpu="" 169a31a8642SMichael S. Tsirkiniasl="iasl" 1701e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 17143ce4dfeSbellardstatic="no" 1727d13299dSbellardcross_prefix="" 1730c58ac1cSmalcaudio_drv_list="" 174b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 175b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 176e49d021eSPeter Maydellhost_cc="cc" 17773da375eSJuan Quintelalibs_softmmu="" 1783e2e0e6bSJuan Quintelalibs_tools="" 17967f86e8eSJuan Quintelaaudio_pt_int="" 180d5631638Smalcaudio_win_int="" 1812b2e59e6SPaolo Bonzinicc_i386=i386-pc-linux-gnu-gcc 182957f1f99SMichael Rothlibs_qga="" 1835bc62e01SGerd Hoffmanndebug_info="yes" 18463678e17SSteven Noonanstack_protector="" 185ac0df51dSaliguori 186afb63ebdSStefan Weil# Don't accept a target_list environment variable. 187afb63ebdSStefan Weilunset target_list 188377529c0SPaolo Bonzini 189377529c0SPaolo Bonzini# Default value for a variable defining feature "foo". 190377529c0SPaolo Bonzini# * foo="no" feature will only be used if --enable-foo arg is given 191377529c0SPaolo Bonzini# * foo="" feature will be searched for, and if found, will be used 192377529c0SPaolo Bonzini# unless --disable-foo is given 193377529c0SPaolo Bonzini# * foo="yes" this value will only be set by --enable-foo flag. 194377529c0SPaolo Bonzini# feature will searched for, 195377529c0SPaolo Bonzini# if not found, configure exits with error 196377529c0SPaolo Bonzini# 197377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args. 198377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it 199377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found. 200377529c0SPaolo Bonzini 201377529c0SPaolo Bonzinibluez="" 202377529c0SPaolo Bonzinibrlapi="" 203377529c0SPaolo Bonzinicurl="" 204377529c0SPaolo Bonzinicurses="" 205377529c0SPaolo Bonzinidocs="" 206377529c0SPaolo Bonzinifdt="" 20758952137SVincenzo Maffionenetmap="no" 208e2134eb9SGerd Hoffmannpixman="" 209377529c0SPaolo Bonzinisdl="" 21047c03744SDave Airliesdlabi="1.2" 211983eef5aSMeador Ingevirtfs="" 212821601eaSJes Sorensenvnc="yes" 213377529c0SPaolo Bonzinisparse="no" 214377529c0SPaolo Bonziniuuid="" 215377529c0SPaolo Bonzinivde="" 216377529c0SPaolo Bonzinivnc_sasl="" 217377529c0SPaolo Bonzinivnc_jpeg="" 218377529c0SPaolo Bonzinivnc_png="" 219377529c0SPaolo Bonzinixen="" 220d5b93ddfSAnthony PERARDxen_ctrl_version="" 22164a7ad6fSIan Campbellxen_pv_domain_build="no" 222eb6fda0fSAnthony PERARDxen_pci_passthrough="" 223377529c0SPaolo Bonzinilinux_aio="" 22447e98658SCorey Bryantcap_ng="" 225377529c0SPaolo Bonziniattr="" 2264f26f2b6SAvi Kivitylibattr="" 227377529c0SPaolo Bonzinixfs="" 228377529c0SPaolo Bonzini 229d41a75a2SBradvhost_net="no" 2305e9be92dSNicholas Bellingervhost_scsi="no" 231d41a75a2SBradkvm="no" 2322da776dbSMichael R. Hinesrdma="" 233377529c0SPaolo Bonzinigprof="no" 234377529c0SPaolo Bonzinidebug_tcg="no" 235377529c0SPaolo Bonzinidebug="no" 236b553a042SJohn Snowfortify_source="" 237377529c0SPaolo Bonzinistrip_opt="yes" 2389195b2c2SStefan Weiltcg_interpreter="no" 239377529c0SPaolo Bonzinibigendian="no" 240377529c0SPaolo Bonzinimingw32="no" 2411d728c39SBlue Swirlgcov="no" 2421d728c39SBlue Swirlgcov_tool="gcov" 243377529c0SPaolo BonziniEXESUF="" 24417969268SFam ZhengDSOSUF=".so" 24517969268SFam ZhengLDFLAGS_SHARED="-shared" 24617969268SFam Zhengmodules="no" 247377529c0SPaolo Bonziniprefix="/usr/local" 248377529c0SPaolo Bonzinimandir="\${prefix}/share/man" 249528ae5b8SEduardo Habkostdatadir="\${prefix}/share" 250850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu" 251377529c0SPaolo Bonzinibindir="\${prefix}/bin" 2523aa5d2beSAlon Levylibdir="\${prefix}/lib" 2538bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec" 2540f94d6daSAlon Levyincludedir="\${prefix}/include" 255377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc" 256785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var" 257377529c0SPaolo Bonziniconfsuffix="/qemu" 258377529c0SPaolo Bonzinislirp="yes" 259377529c0SPaolo Bonzinioss_lib="" 260377529c0SPaolo Bonzinibsd="no" 261377529c0SPaolo Bonzinilinux="no" 262377529c0SPaolo Bonzinisolaris="no" 263377529c0SPaolo Bonziniprofiler="no" 264377529c0SPaolo Bonzinicocoa="no" 265377529c0SPaolo Bonzinisoftmmu="yes" 266377529c0SPaolo Bonzinilinux_user="no" 267377529c0SPaolo Bonzinibsd_user="no" 268377529c0SPaolo Bonziniaix="no" 269377529c0SPaolo Bonziniblobs="yes" 270377529c0SPaolo Bonzinipkgversion="" 27140d6444eSAvi Kivitypie="" 272377529c0SPaolo Bonzinizero_malloc="" 2733556c233SPaolo Bonziniqom_cast_debug="yes" 274baf86d6bSPaolo Bonzinitrace_backends="log" 275377529c0SPaolo Bonzinitrace_file="trace" 276377529c0SPaolo Bonzinispice="" 277377529c0SPaolo Bonzinirbd="" 2787b02f544SMarc-André Lureausmartcard="" 2792b2325ffSGerd Hoffmannlibusb="" 28069354a83SHans de Goedeusb_redir="" 281da076ffeSGerd Hoffmannopengl="" 282014cb152SGerd Hoffmannopengl_dmabuf="no" 28399f2dbd3SLiang Liavx2_opt="no" 2841ece9905SAlon Levyzlib="yes" 285b25c9dffSStefan Weillzo="" 286b25c9dffSStefan Weilsnappy="" 2876b383c08SPeter Wubzip2="" 288e8ef31a3SMichael Tokarevguest_agent="" 289d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 29050cbebb9SMichael Rothguest_agent_ntddscsi="no" 2919dacf32dSYossi Hindinguest_agent_msi="" 292d9840e25STomoki Sekiyamavss_win32_sdk="" 293d9840e25STomoki Sekiyamawin_sdk="no" 2944b1c11fdSDaniel P. Berrangewant_tools="yes" 295c589b249SRonnie Sahlberglibiscsi="" 2966542aa9cSPeter Lievenlibnfs="" 297519175a2SAlex Barcelocoroutine="" 29870c60c08SStefan Hajnoczicoroutine_pool="" 299f794573eSEduardo Otuboseccomp="" 300eb100396SBharata B Raoglusterfs="" 3010c14fb47SBharata B Raoglusterfs_discard="no" 3027c815372SBharata B Raoglusterfs_zerofill="no" 3036a460ed1SStefan Hajnocziarchipelago="no" 304a4ccabcfSAnthony Liguorigtk="" 3059e04c683SStefan Weilgtkabi="" 306925a0400SGerd Hoffmanngtk_gl="no" 307ddbb0d09SDaniel P. Berrangegnutls="" 308ddbb0d09SDaniel P. Berrangegnutls_hash="" 309b917da4cSDaniel P. Berrangegnutls_rnd="" 31091bfcdb0SDaniel P. Berrangenettle="" 31191bfcdb0SDaniel P. Berrangegcrypt="" 31237788f25SDaniel P. Berrangegcrypt_kdf="no" 313bbbf9bfbSStefan Weilvte="" 3149d9e1521SGerd Hoffmannvirglrenderer="" 315e91c793cSCole Robinsontpm="yes" 3160a12ec87SRichard W.M. Joneslibssh2="" 3174f18b782SJeff Codyvhdx="" 318a99d57bbSWanlong Gaonuma="" 3192847b469SFam Zhengtcmalloc="no" 3207b01cb97SAlexandre Derumierjemalloc="no" 321377529c0SPaolo Bonzini 322ac0df51dSaliguori# parse CC options first 323ac0df51dSaliguorifor opt do 324ac0df51dSaliguori optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 325ac0df51dSaliguori case "$opt" in 326ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 327ac0df51dSaliguori ;; 3283d8df640SPaolo Bonzini --cc=*) CC="$optarg" 329ac0df51dSaliguori ;; 33083f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 33183f73fceSTomoki Sekiyama ;; 332ca4deeb1SPaolo Bonzini --source-path=*) source_path="$optarg" 333ca4deeb1SPaolo Bonzini ;; 3342ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 3352ff6b91eSJuan Quintela ;; 336de385287SAlex Bennée --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 337f9943cd5SGerd Hoffmann EXTRA_CFLAGS="$optarg" 338e2a2ed06SJuan Quintela ;; 339a4969e90SAlex Bennée --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg" 340f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 341e2a2ed06SJuan Quintela ;; 3425bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 3435bc62e01SGerd Hoffmann ;; 3445bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 3455bc62e01SGerd Hoffmann ;; 346ac0df51dSaliguori esac 347ac0df51dSaliguoridone 348ac0df51dSaliguori# OS specific 349ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 35093148aa5SStefan Weil# we can eliminate its usage altogether. 351ac0df51dSaliguori 352e49d021eSPeter Maydell# Preferred compiler: 353e49d021eSPeter Maydell# ${CC} (if set) 354e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 355e49d021eSPeter Maydell# system compiler 356e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 357e49d021eSPeter Maydell cc="$host_cc" 358e49d021eSPeter Maydellelse 359b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 360e49d021eSPeter Maydellfi 361e49d021eSPeter Maydell 36283f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 36383f73fceSTomoki Sekiyama cxx="c++" 36483f73fceSTomoki Sekiyamaelse 36583f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 36683f73fceSTomoki Sekiyamafi 36783f73fceSTomoki Sekiyama 368b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 3693dd46c78SBlue Swirlas="${AS-${cross_prefix}as}" 3703dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 371b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 372b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 3734852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 374b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 375b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 37617884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 37717884d7bSSergei Trofimovichquery_pkg_config() { 37817884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 37917884d7bSSergei Trofimovich} 38017884d7bSSergei Trofimovichpkg_config=query_pkg_config 381b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 38247c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 383ac0df51dSaliguori 38445d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 38545d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 38645d285abSPeter Maydell 387be17dc90SMichael S. Tsirkin# default flags for all hosts 3884c288acbSPeter MaydellQEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS" 389f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 390c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 391be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 3926b4c305cSPaolo BonziniQEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include" 3935bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then 3945bc62e01SGerd Hoffmann CFLAGS="-g $CFLAGS" 395be17dc90SMichael S. Tsirkin LDFLAGS="-g $LDFLAGS" 3965bc62e01SGerd Hoffmannfi 397be17dc90SMichael S. Tsirkin 398ca4deeb1SPaolo Bonzini# make source path absolute 399ca4deeb1SPaolo Bonzinisource_path=`cd "$source_path"; pwd` 400ca4deeb1SPaolo Bonzini 401cab00a5aSMichael S. Tsirkin# running configure in the source tree? 402cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 403cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 404cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 405cab00a5aSMichael S. Tsirkinelse 406cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 407cab00a5aSMichael S. Tsirkinfi 408cab00a5aSMichael S. Tsirkin 409ac0df51dSaliguoricheck_define() { 410ac0df51dSaliguoricat > $TMPC <<EOF 411ac0df51dSaliguori#if !defined($1) 412fd786e1aSPeter Maydell#error $1 not defined 413ac0df51dSaliguori#endif 414ac0df51dSaliguoriint main(void) { return 0; } 415ac0df51dSaliguoriEOF 41652166aa0SJuan Quintela compile_object 417ac0df51dSaliguori} 418ac0df51dSaliguori 419307119e7SGerd Hoffmanncheck_include() { 420307119e7SGerd Hoffmanncat > $TMPC <<EOF 421307119e7SGerd Hoffmann#include <$1> 422307119e7SGerd Hoffmannint main(void) { return 0; } 423307119e7SGerd HoffmannEOF 424307119e7SGerd Hoffmann compile_object 425307119e7SGerd Hoffmann} 426307119e7SGerd Hoffmann 42793b25869SJohn Snowwrite_c_skeleton() { 42893b25869SJohn Snow cat > $TMPC <<EOF 42993b25869SJohn Snowint main(void) { return 0; } 43093b25869SJohn SnowEOF 43193b25869SJohn Snow} 43293b25869SJohn Snow 433bbea4050SPeter Maydellif check_define __linux__ ; then 434bbea4050SPeter Maydell targetos="Linux" 435bbea4050SPeter Maydellelif check_define _WIN32 ; then 436bbea4050SPeter Maydell targetos='MINGW32' 437bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 438bbea4050SPeter Maydell targetos='OpenBSD' 439bbea4050SPeter Maydellelif check_define __sun__ ; then 440bbea4050SPeter Maydell targetos='SunOS' 441bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 442bbea4050SPeter Maydell targetos='Haiku' 443bbea4050SPeter Maydellelse 444bbea4050SPeter Maydell targetos=`uname -s` 445bbea4050SPeter Maydellfi 446bbea4050SPeter Maydell 447bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 448bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 449bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 450bbea4050SPeter Maydell# the correct CPU with the --cpu option. 451bbea4050SPeter Maydellcase $targetos in 452bbea4050SPeter MaydellDarwin) 453bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 454bbea4050SPeter Maydell # run 64-bit userspace code. 455bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 456bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 457bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 458bbea4050SPeter Maydell cpu="x86_64" 459bbea4050SPeter Maydell fi 460bbea4050SPeter Maydell ;; 461bbea4050SPeter MaydellSunOS) 462bbea4050SPeter Maydell # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo 463bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 464bbea4050SPeter Maydell cpu="x86_64" 465bbea4050SPeter Maydell fi 466bbea4050SPeter Maydellesac 467bbea4050SPeter Maydell 4682ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 4692ff6b91eSJuan Quintela # command line argument 4702ff6b91eSJuan Quintela : 4712ff6b91eSJuan Quintelaelif check_define __i386__ ; then 472ac0df51dSaliguori cpu="i386" 473ac0df51dSaliguorielif check_define __x86_64__ ; then 474c72b26ecSRichard Henderson if check_define __ILP32__ ; then 475c72b26ecSRichard Henderson cpu="x32" 476c72b26ecSRichard Henderson else 477ac0df51dSaliguori cpu="x86_64" 478c72b26ecSRichard Henderson fi 4793aa9bd6cSblueswir1elif check_define __sparc__ ; then 4803aa9bd6cSblueswir1 if check_define __arch64__ ; then 4813aa9bd6cSblueswir1 cpu="sparc64" 4823aa9bd6cSblueswir1 else 4833aa9bd6cSblueswir1 cpu="sparc" 4843aa9bd6cSblueswir1 fi 485fdf7ed96Smalcelif check_define _ARCH_PPC ; then 486fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 487fdf7ed96Smalc cpu="ppc64" 488ac0df51dSaliguori else 489fdf7ed96Smalc cpu="ppc" 490fdf7ed96Smalc fi 491afa05235SAurelien Jarnoelif check_define __mips__ ; then 492afa05235SAurelien Jarno cpu="mips" 493477ba620SAurelien Jarnoelif check_define __ia64__ ; then 494477ba620SAurelien Jarno cpu="ia64" 495d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 496d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 497d66ed0eaSAurelien Jarno cpu="s390x" 498d66ed0eaSAurelien Jarno else 499d66ed0eaSAurelien Jarno cpu="s390" 500d66ed0eaSAurelien Jarno fi 50121d89f84SPeter Maydellelif check_define __arm__ ; then 50221d89f84SPeter Maydell cpu="arm" 5031f080313SClaudio Fontanaelif check_define __aarch64__ ; then 5041f080313SClaudio Fontana cpu="aarch64" 505f28ffed5SBradelif check_define __hppa__ ; then 506f28ffed5SBrad cpu="hppa" 507fdf7ed96Smalcelse 508fdf7ed96Smalc cpu=`uname -m` 509ac0df51dSaliguorifi 510ac0df51dSaliguori 511359bc95dSPeter MaydellARCH= 512359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 513359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 5147d13299dSbellardcase "$cpu" in 515c72b26ecSRichard Henderson ia64|ppc|ppc64|s390|s390x|sparc64|x32) 516ea8f20f8SJuan Quintela cpu="$cpu" 517ea8f20f8SJuan Quintela ;; 5187d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 51997a847bcSbellard cpu="i386" 5207d13299dSbellard ;; 521aaa5fa14Saurel32 x86_64|amd64) 522aaa5fa14Saurel32 cpu="x86_64" 523aaa5fa14Saurel32 ;; 52421d89f84SPeter Maydell armv*b|armv*l|arm) 52521d89f84SPeter Maydell cpu="arm" 5267d13299dSbellard ;; 5271f080313SClaudio Fontana aarch64) 5281f080313SClaudio Fontana cpu="aarch64" 5291f080313SClaudio Fontana ;; 530afa05235SAurelien Jarno mips*) 531afa05235SAurelien Jarno cpu="mips" 532afa05235SAurelien Jarno ;; 5333142255cSblueswir1 sparc|sun4[cdmuv]) 534ae228531Sbellard cpu="sparc" 535ae228531Sbellard ;; 5367d13299dSbellard *) 537359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 538359bc95dSPeter Maydell ARCH=unknown 5397d13299dSbellard ;; 5407d13299dSbellardesac 541359bc95dSPeter Maydellif test -z "$ARCH"; then 542359bc95dSPeter Maydell ARCH="$cpu" 543359bc95dSPeter Maydellfi 544e2d52ad3SJuan Quintela 5457d13299dSbellard# OS specific 5460dbfc675SJuan Quintela 547adfc3e91SStacey Son# host *BSD for user mode 548adfc3e91SStacey SonHOST_VARIANT_DIR="" 549adfc3e91SStacey Son 5507d13299dSbellardcase $targetos in 551c326e0afSbellardCYGWIN*) 552c326e0afSbellard mingw32="yes" 553a558ee17SJuan Quintela QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS" 5543cec7cc2SKővágó, Zoltán audio_possible_drivers="sdl" 5553cec7cc2SKővágó, Zoltán audio_drv_list="sdl" 556c326e0afSbellard;; 55767b915a5SbellardMINGW32*) 55867b915a5Sbellard mingw32="yes" 5593cec7cc2SKővágó, Zoltán audio_possible_drivers="dsound sdl" 560307119e7SGerd Hoffmann if check_include dsound.h; then 5613cec7cc2SKővágó, Zoltán audio_drv_list="dsound" 562307119e7SGerd Hoffmann else 563307119e7SGerd Hoffmann audio_drv_list="" 564307119e7SGerd Hoffmann fi 56567b915a5Sbellard;; 5665c40d2bdSthsGNU/kFreeBSD) 567a167ba50SAurelien Jarno bsd="yes" 5680c58ac1cSmalc audio_drv_list="oss" 5690bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 5705c40d2bdSths;; 5717d3505c5SbellardFreeBSD) 5727d3505c5Sbellard bsd="yes" 5730db4a067SPaolo Bonzini make="${MAKE-gmake}" 5740c58ac1cSmalc audio_drv_list="oss" 5750bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 576f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 577f01576f1SJuergen Lock LIBS="-lutil $LIBS" 57858952137SVincenzo Maffione netmap="" # enable netmap autodetect 579adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 5807d3505c5Sbellard;; 581c5e97233Sblueswir1DragonFly) 582c5e97233Sblueswir1 bsd="yes" 5830db4a067SPaolo Bonzini make="${MAKE-gmake}" 584c5e97233Sblueswir1 audio_drv_list="oss" 5850bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 586adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 587c5e97233Sblueswir1;; 5887d3505c5SbellardNetBSD) 5897d3505c5Sbellard bsd="yes" 5900db4a067SPaolo Bonzini make="${MAKE-gmake}" 5910c58ac1cSmalc audio_drv_list="oss" 5920bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl" 5938ef92a88Sblueswir1 oss_lib="-lossaudio" 594adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 5957d3505c5Sbellard;; 5967d3505c5SbellardOpenBSD) 5977d3505c5Sbellard bsd="yes" 5980db4a067SPaolo Bonzini make="${MAKE-gmake}" 5994f6ab397SBrad Smith audio_drv_list="sdl" 6000bac1111SKővágó, Zoltán audio_possible_drivers="sdl" 601adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 6027d3505c5Sbellard;; 60383fb7adfSbellardDarwin) 60483fb7adfSbellard bsd="yes" 60583fb7adfSbellard darwin="yes" 60617969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 6071b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 608a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 6090c439cbfSJuan Quintela LDFLAGS="-arch x86_64 $LDFLAGS" 6101b0f9cc2Saliguori fi 611fd677642Sths cocoa="yes" 6120c58ac1cSmalc audio_drv_list="coreaudio" 61314382605SKővágó, Zoltán audio_possible_drivers="coreaudio sdl" 6140c439cbfSJuan Quintela LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 6157973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 616a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 617a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 618a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 619adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 62083fb7adfSbellard;; 621ec530c81SbellardSunOS) 622ec530c81Sbellard solaris="yes" 6230db4a067SPaolo Bonzini make="${MAKE-gmake}" 6240db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 625fa58948dSBlue Swirl ld="gld" 626e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 6270475a5caSths needs_libsunmath="no" 628c2b84fabSths solarisrev=`uname -r | cut -f2 -d.` 629c2b84fabSths if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 6300475a5caSths if test "$solarisrev" -le 9 ; then 6310475a5caSths if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then 6320475a5caSths needs_libsunmath="yes" 633f14bfdf9SJuan Quintela QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS" 634f14bfdf9SJuan Quintela LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS" 635f14bfdf9SJuan Quintela LIBS="-lsunmath $LIBS" 6360475a5caSths else 63776ad07a4SPeter Maydell error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \ 63876ad07a4SPeter Maydell "libsunmath from the Sun Studio compilers tools, due to a lack of" \ 63976ad07a4SPeter Maydell "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \ 64076ad07a4SPeter Maydell "Studio 11 can be downloaded from www.sun.com." 6410475a5caSths fi 6420475a5caSths fi 64386b2bd93Sths fi 6446b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 6450c58ac1cSmalc audio_drv_list="oss" 6466b4d2ba1Sths fi 647c2de5c91Smalc audio_possible_drivers="oss sdl" 648d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 649d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 650d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 651d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 652a558ee17SJuan Quintela QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 653560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 654560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 655560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 656ec530c81Sbellard;; 657b29fe3edSmalcAIX) 658b29fe3edSmalc aix="yes" 6590db4a067SPaolo Bonzini make="${MAKE-gmake}" 660b29fe3edSmalc;; 661179cf400SAndreas FärberHaiku) 662179cf400SAndreas Färber haiku="yes" 663179cf400SAndreas Färber QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 664179cf400SAndreas Färber LIBS="-lposix_error_mapper -lnetwork $LIBS" 665179cf400SAndreas Färber;; 666fb065187Sbellard*) 6670c58ac1cSmalc audio_drv_list="oss" 6680bac1111SKővágó, Zoltán audio_possible_drivers="oss alsa sdl pa" 6695327cf48Sbellard linux="yes" 670831b7825Sths linux_user="yes" 671af2be207SJan Kiszka kvm="yes" 672af2be207SJan Kiszka vhost_net="yes" 6735e9be92dSNicholas Bellinger vhost_scsi="yes" 674a585140dSAlexey Kardashevskiy QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES" 675fb065187Sbellard;; 6767d13299dSbellardesac 6777d13299dSbellard 6787d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 679b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 68084778508Sblueswir1 bsd_user="yes" 6817d3505c5Sbellard fi 68208de3949SAndreas Färberfi 6837d3505c5Sbellard 6840db4a067SPaolo Bonzini: ${make=${MAKE-make}} 6850db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 68652510f8bSStefan Weil: ${python=${PYTHON-python}} 687e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 6880db4a067SPaolo Bonzini 6893c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 6903c4a4d0dSPeter Maydellif has clang; then 6913c4a4d0dSPeter Maydell objcc=clang 6923c4a4d0dSPeter Maydellelse 6933c4a4d0dSPeter Maydell objcc="$cc" 6943c4a4d0dSPeter Maydellfi 6953c4a4d0dSPeter Maydell 6963457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 6973457a3f8SJuan Quintela EXESUF=".exe" 69817969268SFam Zheng DSOSUF=".dll" 699a558ee17SJuan Quintela QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 700e94a7936SStefan Weil # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 701e94a7936SStefan Weil QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 70278e9d4adSStefan Weil # MinGW needs -mthreads for TLS and macro _MT. 70378e9d4adSStefan Weil QEMU_CFLAGS="-mthreads $QEMU_CFLAGS" 704f7cf5d5bSStefan Weil LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 70593b25869SJohn Snow write_c_skeleton; 706f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 707f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 708f7cf5d5bSStefan Weil fi 709c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 710683035deSPaolo Bonzini mandir="\${prefix}" 711528ae5b8SEduardo Habkost datadir="\${prefix}" 712850da188SEduardo Habkost qemu_docdir="\${prefix}" 713683035deSPaolo Bonzini bindir="\${prefix}" 714683035deSPaolo Bonzini sysconfdir="\${prefix}" 7155a699bbbSLaszlo Ersek local_statedir= 716683035deSPaolo Bonzini confsuffix="" 717259434b8SMarc-André Lureau libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi -lnetapi32 $libs_qga" 7183457a3f8SJuan Quintelafi 7193457a3f8SJuan Quintela 720487fefdbSAnthony Liguoriwerror="" 72185aa5189Sbellard 7227d13299dSbellardfor opt do 723a46e4035Spbrook optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 7247d13299dSbellard case "$opt" in 7252efc3265Sbellard --help|-h) show_help=yes 7262efc3265Sbellard ;; 72799123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 72899123e13SMike Frysinger ;; 729b1a550a0Spbrook --prefix=*) prefix="$optarg" 7307d13299dSbellard ;; 731b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 73232ce6337Sbellard ;; 733ca4deeb1SPaolo Bonzini --source-path=*) 7347d13299dSbellard ;; 735ac0df51dSaliguori --cross-prefix=*) 7367d13299dSbellard ;; 737ac0df51dSaliguori --cc=*) 7387d13299dSbellard ;; 739b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 74083469015Sbellard ;; 74183f73fceSTomoki Sekiyama --cxx=*) 74283f73fceSTomoki Sekiyama ;; 743e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 744e007dbecSMichael S. Tsirkin ;; 7453c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 7463c4a4d0dSPeter Maydell ;; 747b1a550a0Spbrook --make=*) make="$optarg" 7487d13299dSbellard ;; 7496a882643Spbrook --install=*) install="$optarg" 7506a882643Spbrook ;; 751c886edfbSBlue Swirl --python=*) python="$optarg" 752c886edfbSBlue Swirl ;; 7531d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 7541d728c39SBlue Swirl ;; 755e2d8830eSBrad --smbd=*) smbd="$optarg" 756e2d8830eSBrad ;; 757e2a2ed06SJuan Quintela --extra-cflags=*) 7587d13299dSbellard ;; 759e2a2ed06SJuan Quintela --extra-ldflags=*) 7607d13299dSbellard ;; 7615bc62e01SGerd Hoffmann --enable-debug-info) 7625bc62e01SGerd Hoffmann ;; 7635bc62e01SGerd Hoffmann --disable-debug-info) 7645bc62e01SGerd Hoffmann ;; 76517969268SFam Zheng --enable-modules) 76617969268SFam Zheng modules="yes" 76717969268SFam Zheng ;; 7683aa88b31SStefan Hajnoczi --disable-modules) 7693aa88b31SStefan Hajnoczi modules="no" 7703aa88b31SStefan Hajnoczi ;; 7712ff6b91eSJuan Quintela --cpu=*) 7727d13299dSbellard ;; 773b1a550a0Spbrook --target-list=*) target_list="$optarg" 774de83cd02Sbellard ;; 7755b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 7765b808275SLluís Vilanova ;; 7775b808275SLluís Vilanova # XXX: backwards compatibility 7785b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 77994a420b1SStefan Hajnoczi ;; 78074242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 7819410b56cSPrerna Saxena ;; 7827d13299dSbellard --enable-gprof) gprof="yes" 7837d13299dSbellard ;; 7841d728c39SBlue Swirl --enable-gcov) gcov="yes" 7851d728c39SBlue Swirl ;; 78679427693SLoïc Minier --static) 78779427693SLoïc Minier static="yes" 78879427693SLoïc Minier LDFLAGS="-static $LDFLAGS" 78917884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 79043ce4dfeSbellard ;; 7910b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 7920b24e75fSPaolo Bonzini ;; 7930b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 7940b24e75fSPaolo Bonzini ;; 7953aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 7963aa5d2beSAlon Levy ;; 7978bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 7988bf188aaSMichael Tokarev ;; 7990f94d6daSAlon Levy --includedir=*) includedir="$optarg" 8000f94d6daSAlon Levy ;; 801528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 8020b24e75fSPaolo Bonzini ;; 803023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 804023d3d67SEduardo Habkost ;; 805850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 8060b24e75fSPaolo Bonzini ;; 807ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 80807381cc1SAnthony Liguori ;; 809785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 810785c23aeSLuiz Capitulino ;; 811785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 812023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 813023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 814023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 815023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 816023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 817023ddd74SMax Filippov # lots of directory switches by default. 818023ddd74SMax Filippov ;; 819e2134eb9SGerd Hoffmann --with-system-pixman) pixman="system" 820e2134eb9SGerd Hoffmann ;; 821e2134eb9SGerd Hoffmann --without-system-pixman) pixman="internal" 822e2134eb9SGerd Hoffmann ;; 82374880fe2SRobert Schiele --without-pixman) pixman="none" 82474880fe2SRobert Schiele ;; 82597a847bcSbellard --disable-sdl) sdl="no" 82697a847bcSbellard ;; 827c4198157SJuan Quintela --enable-sdl) sdl="yes" 828c4198157SJuan Quintela ;; 82947c03744SDave Airlie --with-sdlabi=*) sdlabi="$optarg" 83047c03744SDave Airlie ;; 8313556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 8323556c233SPaolo Bonzini ;; 8333556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 8343556c233SPaolo Bonzini ;; 835983eef5aSMeador Inge --disable-virtfs) virtfs="no" 836983eef5aSMeador Inge ;; 837983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 838983eef5aSMeador Inge ;; 839821601eaSJes Sorensen --disable-vnc) vnc="no" 840821601eaSJes Sorensen ;; 841821601eaSJes Sorensen --enable-vnc) vnc="yes" 842821601eaSJes Sorensen ;; 8432f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 8442f6a1ab0Sblueswir1 ;; 8450c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 8460c58ac1cSmalc ;; 847b64ec4e4SFam Zheng --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 848b64ec4e4SFam Zheng ;; 849b64ec4e4SFam Zheng --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 850eb852011SMarkus Armbruster ;; 851f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 852f8393946Saurel32 ;; 853f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 854f8393946Saurel32 ;; 855f3d08ee6SPaul Brook --enable-debug) 856f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 857f3d08ee6SPaul Brook debug_tcg="yes" 858f3d08ee6SPaul Brook debug="yes" 859f3d08ee6SPaul Brook strip_opt="no" 860b553a042SJohn Snow fortify_source="no" 861f3d08ee6SPaul Brook ;; 86203b4fe7dSaliguori --enable-sparse) sparse="yes" 86303b4fe7dSaliguori ;; 86403b4fe7dSaliguori --disable-sparse) sparse="no" 86503b4fe7dSaliguori ;; 8661625af87Saliguori --disable-strip) strip_opt="no" 8671625af87Saliguori ;; 8682f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 8692f9606b3Saliguori ;; 870ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 871ea784e3bSJuan Quintela ;; 8722f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 8732f6f5c7aSCorentin Chary ;; 8742f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 8752f6f5c7aSCorentin Chary ;; 876efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 877efe556adSCorentin Chary ;; 878efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 879efe556adSCorentin Chary ;; 880443f1376Sbellard --disable-slirp) slirp="no" 881c20709aaSbellard ;; 882ee682d27SStefan Weil --disable-uuid) uuid="no" 883ee682d27SStefan Weil ;; 884ee682d27SStefan Weil --enable-uuid) uuid="yes" 885ee682d27SStefan Weil ;; 886e0e6c8c0Saliguori --disable-vde) vde="no" 8878a16d273Sths ;; 888dfb278bdSJuan Quintela --enable-vde) vde="yes" 889dfb278bdSJuan Quintela ;; 89058952137SVincenzo Maffione --disable-netmap) netmap="no" 89158952137SVincenzo Maffione ;; 89258952137SVincenzo Maffione --enable-netmap) netmap="yes" 89358952137SVincenzo Maffione ;; 894e37630caSaliguori --disable-xen) xen="no" 895e37630caSaliguori ;; 896fc321b4bSJuan Quintela --enable-xen) xen="yes" 897fc321b4bSJuan Quintela ;; 898eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 899eb6fda0fSAnthony PERARD ;; 900eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 901eb6fda0fSAnthony PERARD ;; 90264a7ad6fSIan Campbell --disable-xen-pv-domain-build) xen_pv_domain_build="no" 90364a7ad6fSIan Campbell ;; 90464a7ad6fSIan Campbell --enable-xen-pv-domain-build) xen_pv_domain_build="yes" 90564a7ad6fSIan Campbell ;; 9062e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 9072e4d9fb1Saurel32 ;; 9084ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 9094ffcedb6SJuan Quintela ;; 910fb599c9aSbalrog --disable-bluez) bluez="no" 911fb599c9aSbalrog ;; 912a20a6f46SJuan Quintela --enable-bluez) bluez="yes" 913a20a6f46SJuan Quintela ;; 9147ba1e619Saliguori --disable-kvm) kvm="no" 9157ba1e619Saliguori ;; 916b31a0277SJuan Quintela --enable-kvm) kvm="yes" 917b31a0277SJuan Quintela ;; 9189195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 9199195b2c2SStefan Weil ;; 9209195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 9219195b2c2SStefan Weil ;; 92247e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 92347e98658SCorey Bryant ;; 92447e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 92547e98658SCorey Bryant ;; 926cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 927cd4ec0b4SGerd Hoffmann ;; 928cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 929cd4ec0b4SGerd Hoffmann ;; 930c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 931c589b249SRonnie Sahlberg ;; 932c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 933c589b249SRonnie Sahlberg ;; 9346542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 9356542aa9cSPeter Lieven ;; 9366542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 9376542aa9cSPeter Lieven ;; 93805c2a3e7Sbellard --enable-profiler) profiler="yes" 93905c2a3e7Sbellard ;; 94014821030SPavel Borzenkov --disable-cocoa) cocoa="no" 94114821030SPavel Borzenkov ;; 942c2de5c91Smalc --enable-cocoa) 943c2de5c91Smalc cocoa="yes" ; 944c2de5c91Smalc audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 9455b0753e0Sbellard ;; 946cad25d69Spbrook --disable-system) softmmu="no" 9470a8e90f4Spbrook ;; 948cad25d69Spbrook --enable-system) softmmu="yes" 9490a8e90f4Spbrook ;; 9500953a80fSZachary Amsden --disable-user) 9510953a80fSZachary Amsden linux_user="no" ; 9520953a80fSZachary Amsden bsd_user="no" ; 9530953a80fSZachary Amsden ;; 9540953a80fSZachary Amsden --enable-user) ;; 955831b7825Sths --disable-linux-user) linux_user="no" 9560a8e90f4Spbrook ;; 957831b7825Sths --enable-linux-user) linux_user="yes" 958831b7825Sths ;; 95984778508Sblueswir1 --disable-bsd-user) bsd_user="no" 96084778508Sblueswir1 ;; 96184778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 96284778508Sblueswir1 ;; 96340d6444eSAvi Kivity --enable-pie) pie="yes" 96434005a00SKirill A. Shutemov ;; 96540d6444eSAvi Kivity --disable-pie) pie="no" 96634005a00SKirill A. Shutemov ;; 96785aa5189Sbellard --enable-werror) werror="yes" 96885aa5189Sbellard ;; 96985aa5189Sbellard --disable-werror) werror="no" 97085aa5189Sbellard ;; 97163678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 97263678e17SSteven Noonan ;; 97363678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 97463678e17SSteven Noonan ;; 9754d3b6f6eSbalrog --disable-curses) curses="no" 9764d3b6f6eSbalrog ;; 977c584a6d0SJuan Quintela --enable-curses) curses="yes" 978c584a6d0SJuan Quintela ;; 979769ce76dSAlexander Graf --disable-curl) curl="no" 980769ce76dSAlexander Graf ;; 981788c8196SJuan Quintela --enable-curl) curl="yes" 982788c8196SJuan Quintela ;; 9832df87df7SJuan Quintela --disable-fdt) fdt="no" 9842df87df7SJuan Quintela ;; 9852df87df7SJuan Quintela --enable-fdt) fdt="yes" 9862df87df7SJuan Quintela ;; 9875c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 9885c6c3a6cSChristoph Hellwig ;; 9895c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 9905c6c3a6cSChristoph Hellwig ;; 991758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 992758e8e38SVenkateswararao Jujjuri (JV) ;; 993758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 994758e8e38SVenkateswararao Jujjuri (JV) ;; 99577755340Sths --disable-blobs) blobs="no" 99677755340Sths ;; 9974a19f1ecSpbrook --with-pkgversion=*) pkgversion=" ($optarg)" 9984a19f1ecSpbrook ;; 999519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1000519175a2SAlex Barcelo ;; 100170c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 100270c60c08SStefan Hajnoczi ;; 100370c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 100470c60c08SStefan Hajnoczi ;; 1005a25dba17SJuan Quintela --disable-docs) docs="no" 100670ec5dc0SAnthony Liguori ;; 1007a25dba17SJuan Quintela --enable-docs) docs="yes" 100883a3ab8bSJuan Quintela ;; 1009d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1010d5970055SMichael S. Tsirkin ;; 1011d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1012d5970055SMichael S. Tsirkin ;; 10135e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 10145e9be92dSNicholas Bellinger ;; 10155e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 10165e9be92dSNicholas Bellinger ;; 1017da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 101820ff075bSMichael Walle ;; 1019da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 102020ff075bSMichael Walle ;; 1021f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1022f27aaf4bSChristian Brunner ;; 1023f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1024f27aaf4bSChristian Brunner ;; 10258c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 10268c84cf11SSergei Trofimovich ;; 10278c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 10288c84cf11SSergei Trofimovich ;; 10297b02f544SMarc-André Lureau --disable-smartcard) smartcard="no" 1030111a38b0SRobert Relyea ;; 10317b02f544SMarc-André Lureau --enable-smartcard) smartcard="yes" 1032111a38b0SRobert Relyea ;; 10332b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 10342b2325ffSGerd Hoffmann ;; 10352b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 10362b2325ffSGerd Hoffmann ;; 103769354a83SHans de Goede --disable-usb-redir) usb_redir="no" 103869354a83SHans de Goede ;; 103969354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 104069354a83SHans de Goede ;; 10411ece9905SAlon Levy --disable-zlib-test) zlib="no" 10421ece9905SAlon Levy ;; 1043b25c9dffSStefan Weil --disable-lzo) lzo="no" 1044b25c9dffSStefan Weil ;; 1045607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1046607dacd0Sqiaonuohan ;; 1047b25c9dffSStefan Weil --disable-snappy) snappy="no" 1048b25c9dffSStefan Weil ;; 1049607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1050607dacd0Sqiaonuohan ;; 10516b383c08SPeter Wu --disable-bzip2) bzip2="no" 10526b383c08SPeter Wu ;; 10536b383c08SPeter Wu --enable-bzip2) bzip2="yes" 10546b383c08SPeter Wu ;; 1055d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1056d138cee9SMichael Roth ;; 1057d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1058d138cee9SMichael Roth ;; 10599dacf32dSYossi Hindin --enable-guest-agent-msi) guest_agent_msi="yes" 10609dacf32dSYossi Hindin ;; 10619dacf32dSYossi Hindin --disable-guest-agent-msi) guest_agent_msi="no" 10629dacf32dSYossi Hindin ;; 1063d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1064d9840e25STomoki Sekiyama ;; 1065d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1066d9840e25STomoki Sekiyama ;; 1067d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1068d9840e25STomoki Sekiyama ;; 1069d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1070d9840e25STomoki Sekiyama ;; 1071d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1072d9840e25STomoki Sekiyama ;; 1073d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1074d9840e25STomoki Sekiyama ;; 10754b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 10764b1c11fdSDaniel P. Berrange ;; 10774b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 10784b1c11fdSDaniel P. Berrange ;; 1079f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1080f794573eSEduardo Otubo ;; 1081f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1082f794573eSEduardo Otubo ;; 1083eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1084eb100396SBharata B Rao ;; 1085eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1086eb100396SBharata B Rao ;; 1087c9a12e75SChrysostomos Nanakos --disable-archipelago) archipelago="no" 1088c9a12e75SChrysostomos Nanakos ;; 1089c9a12e75SChrysostomos Nanakos --enable-archipelago) archipelago="yes" 1090c9a12e75SChrysostomos Nanakos ;; 109152b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 109252b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1093583f6e7bSStefan Hajnoczi ;; 1094a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1095a4ccabcfSAnthony Liguori ;; 1096a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1097a4ccabcfSAnthony Liguori ;; 1098ddbb0d09SDaniel P. Berrange --disable-gnutls) gnutls="no" 1099ddbb0d09SDaniel P. Berrange ;; 1100ddbb0d09SDaniel P. Berrange --enable-gnutls) gnutls="yes" 1101ddbb0d09SDaniel P. Berrange ;; 110291bfcdb0SDaniel P. Berrange --disable-nettle) nettle="no" 110391bfcdb0SDaniel P. Berrange ;; 110491bfcdb0SDaniel P. Berrange --enable-nettle) nettle="yes" 110591bfcdb0SDaniel P. Berrange ;; 110691bfcdb0SDaniel P. Berrange --disable-gcrypt) gcrypt="no" 110791bfcdb0SDaniel P. Berrange ;; 110891bfcdb0SDaniel P. Berrange --enable-gcrypt) gcrypt="yes" 110991bfcdb0SDaniel P. Berrange ;; 11102da776dbSMichael R. Hines --enable-rdma) rdma="yes" 11112da776dbSMichael R. Hines ;; 11122da776dbSMichael R. Hines --disable-rdma) rdma="no" 11132da776dbSMichael R. Hines ;; 1114528de90aSDaniel P. Berrange --with-gtkabi=*) gtkabi="$optarg" 1115528de90aSDaniel P. Berrange ;; 1116bbbf9bfbSStefan Weil --disable-vte) vte="no" 1117bbbf9bfbSStefan Weil ;; 1118bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1119bbbf9bfbSStefan Weil ;; 11209d9e1521SGerd Hoffmann --disable-virglrenderer) virglrenderer="no" 11219d9e1521SGerd Hoffmann ;; 11229d9e1521SGerd Hoffmann --enable-virglrenderer) virglrenderer="yes" 11239d9e1521SGerd Hoffmann ;; 1124e91c793cSCole Robinson --disable-tpm) tpm="no" 1125e91c793cSCole Robinson ;; 1126ab214c29SStefan Berger --enable-tpm) tpm="yes" 1127ab214c29SStefan Berger ;; 11280a12ec87SRichard W.M. Jones --disable-libssh2) libssh2="no" 11290a12ec87SRichard W.M. Jones ;; 11300a12ec87SRichard W.M. Jones --enable-libssh2) libssh2="yes" 11310a12ec87SRichard W.M. Jones ;; 11324f18b782SJeff Cody --enable-vhdx) vhdx="yes" 11334f18b782SJeff Cody ;; 11344f18b782SJeff Cody --disable-vhdx) vhdx="no" 11354f18b782SJeff Cody ;; 1136a99d57bbSWanlong Gao --disable-numa) numa="no" 1137a99d57bbSWanlong Gao ;; 1138a99d57bbSWanlong Gao --enable-numa) numa="yes" 1139a99d57bbSWanlong Gao ;; 11402847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 11412847b469SFam Zheng ;; 11422847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 11432847b469SFam Zheng ;; 11447b01cb97SAlexandre Derumier --disable-jemalloc) jemalloc="no" 11457b01cb97SAlexandre Derumier ;; 11467b01cb97SAlexandre Derumier --enable-jemalloc) jemalloc="yes" 11477b01cb97SAlexandre Derumier ;; 11482d2ad6d0SFam Zheng *) 11492d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 11502d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 11512d2ad6d0SFam Zheng exit 1 11527f1559c6Sbalrog ;; 11537d13299dSbellard esac 11547d13299dSbellarddone 11557d13299dSbellard 1156f6f0b7d9SStefan Weilif ! has $python; then 1157f6f0b7d9SStefan Weil error_exit "Python not found. Use --python=/path/to/python" 1158f6f0b7d9SStefan Weilfi 1159f6f0b7d9SStefan Weil 1160f6f0b7d9SStefan Weil# Note that if the Python conditional here evaluates True we will exit 1161f6f0b7d9SStefan Weil# with status 1 which is a shell 'false' value. 1162fec21036SMarkus Armbrusterif ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then 1163fec21036SMarkus Armbruster error_exit "Cannot use '$python', Python 2.6 or later is required." \ 1164f6f0b7d9SStefan Weil "Note that Python 3 or later is not yet supported." \ 1165f6f0b7d9SStefan Weil "Use --python=/path/to/python to specify a supported Python." 1166f6f0b7d9SStefan Weilfi 1167f6f0b7d9SStefan Weil 1168fec21036SMarkus Armbruster# Suppress writing compiled files 1169f6f0b7d9SStefan Weilpython="$python -B" 1170f6f0b7d9SStefan Weil 117140293e58Sbellardcase "$cpu" in 1172e3608d66SRichard Henderson ppc) 1173e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1174e3608d66SRichard Henderson LDFLAGS="-m32 $LDFLAGS" 1175e3608d66SRichard Henderson ;; 1176e3608d66SRichard Henderson ppc64) 1177e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1178e3608d66SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 1179e3608d66SRichard Henderson ;; 11809b9c37c3SRichard Henderson sparc) 11810c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 118279f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32 -mcpu=ultrasparc" 11833142255cSblueswir1 ;; 1184ed968ff1SJuan Quintela sparc64) 11850c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 118679f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 11873142255cSblueswir1 ;; 118876d83bdeSths s390) 1189061cdd81SRichard Henderson CPU_CFLAGS="-m31" 119028d7cc49SRichard Henderson LDFLAGS="-m31 $LDFLAGS" 119128d7cc49SRichard Henderson ;; 119228d7cc49SRichard Henderson s390x) 1193061cdd81SRichard Henderson CPU_CFLAGS="-m64" 119428d7cc49SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 119576d83bdeSths ;; 119640293e58Sbellard i386) 119779f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 11980c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 11992b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 120040293e58Sbellard ;; 120140293e58Sbellard x86_64) 120279f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64" 12030c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 12042b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 1205379f6698SPaul Brook ;; 1206c72b26ecSRichard Henderson x32) 1207c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1208c72b26ecSRichard Henderson LDFLAGS="-mx32 $LDFLAGS" 1209c72b26ecSRichard Henderson cc_i386='$(CC) -m32' 1210c72b26ecSRichard Henderson ;; 121130163d89SPeter Maydell # No special flags required for other host CPUs 12123142255cSblueswir1esac 12133142255cSblueswir1 121479f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 121579f3b12fSPeter CrosthwaiteEXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS" 121679f3b12fSPeter Crosthwaite 121760e0df25SPeter Maydelldefault_target_list="" 121860e0df25SPeter Maydell 12196e92f823SPeter Maydellmak_wilds="" 12206e92f823SPeter Maydell 122160e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 12226e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 122360e0df25SPeter Maydellfi 122460e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 12256e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 122660e0df25SPeter Maydellfi 122760e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 12286e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 122960e0df25SPeter Maydellfi 123060e0df25SPeter Maydell 12316e92f823SPeter Maydellfor config in $mak_wilds; do 12326e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 12336e92f823SPeter Maydelldone 12346e92f823SPeter Maydell 1235af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1236af5db58eSpbrookcat << EOF 1237af5db58eSpbrook 1238af5db58eSpbrookUsage: configure [options] 1239af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1240af5db58eSpbrook 124108fb77edSStefan WeilStandard options: 124208fb77edSStefan Weil --help print this message 124308fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 124408fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 124508fb77edSStefan Weil use %M for cpu name [$interp_prefix] 124608fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 124708fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 124808fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 124908fb77edSStefan Weil 125008fb77edSStefan WeilAdvanced options (experts only): 125108fb77edSStefan Weil --source-path=PATH path of source code [$source_path] 125208fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 125308fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 125408fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 125508fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 125608fb77edSStefan Weil build time 125708fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 125808fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 125908fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 126008fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 126108fb77edSStefan Weil --make=MAKE use specified make [$make] 126208fb77edSStefan Weil --install=INSTALL use specified install [$install] 126308fb77edSStefan Weil --python=PYTHON use specified python [$python] 126408fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 126508fb77edSStefan Weil --static enable static build [$static] 126608fb77edSStefan Weil --mandir=PATH install man pages in PATH 126708fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 126808fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 126908fb77edSStefan Weil --bindir=PATH install binaries in PATH 127008fb77edSStefan Weil --libdir=PATH install libraries in PATH 127108fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 127208fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 1273e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 127408fb77edSStefan Weil --enable-debug enable common debug build options 127508fb77edSStefan Weil --disable-strip disable stripping binaries 127608fb77edSStefan Weil --disable-werror disable compilation abort on warning 127763678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 127808fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 127908fb77edSStefan Weil Available drivers: $audio_possible_drivers 128008fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 128108fb77edSStefan Weil --block-drv-rw-whitelist=L 128208fb77edSStefan Weil set block driver read-write whitelist 128308fb77edSStefan Weil (affects only QEMU, not qemu-img) 128408fb77edSStefan Weil --block-drv-ro-whitelist=L 128508fb77edSStefan Weil set block driver read-only whitelist 128608fb77edSStefan Weil (affects only QEMU, not qemu-img) 12875b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 128808fb77edSStefan Weil Available backends: $($python $source_path/scripts/tracetool.py --list-backends) 128908fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 129008fb77edSStefan Weil Default:trace-<pid> 1291c23f23b9SMichael Tokarev --disable-slirp disable SLIRP userspace network connectivity 1292c23f23b9SMichael Tokarev --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 1293c23f23b9SMichael Tokarev --oss-lib path to OSS library 1294c23f23b9SMichael Tokarev --cpu=CPU Build for host CPU [$cpu] 129508fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 129608fb77edSStefan Weil gthread, ucontext, sigaltstack, windows 129708fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 129808fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 1299c23f23b9SMichael Tokarev --disable-blobs disable installing provided firmware blobs 1300c23f23b9SMichael Tokarev --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1301c23f23b9SMichael Tokarev --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1302c23f23b9SMichael Tokarev 1303c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and 1304c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available: 1305c23f23b9SMichael Tokarev 1306c23f23b9SMichael Tokarev system all system emulation targets 1307c23f23b9SMichael Tokarev user supported user emulation targets 1308c23f23b9SMichael Tokarev linux-user all linux usermode emulation targets 1309c23f23b9SMichael Tokarev bsd-user all BSD usermode emulation targets 1310c23f23b9SMichael Tokarev docs build documentation 1311c23f23b9SMichael Tokarev guest-agent build the QEMU Guest Agent 1312c23f23b9SMichael Tokarev guest-agent-msi build guest agent Windows MSI installation package 1313c23f23b9SMichael Tokarev pie Position Independent Executables 1314c23f23b9SMichael Tokarev modules modules support 1315c23f23b9SMichael Tokarev debug-tcg TCG debugging (default is disabled) 1316c23f23b9SMichael Tokarev debug-info debugging information 1317c23f23b9SMichael Tokarev sparse sparse checker 1318c23f23b9SMichael Tokarev 1319ddbb0d09SDaniel P. Berrange gnutls GNUTLS cryptography support 132091bfcdb0SDaniel P. Berrange nettle nettle cryptography support 132191bfcdb0SDaniel P. Berrange gcrypt libgcrypt cryptography support 1322c23f23b9SMichael Tokarev sdl SDL UI 1323c23f23b9SMichael Tokarev --with-sdlabi select preferred SDL ABI 1.2 or 2.0 1324c23f23b9SMichael Tokarev gtk gtk UI 1325c23f23b9SMichael Tokarev --with-gtkabi select preferred GTK ABI 2.0 or 3.0 1326c23f23b9SMichael Tokarev vte vte support for the gtk UI 1327c23f23b9SMichael Tokarev curses curses UI 1328c23f23b9SMichael Tokarev vnc VNC UI support 1329c23f23b9SMichael Tokarev vnc-sasl SASL encryption for VNC server 1330c23f23b9SMichael Tokarev vnc-jpeg JPEG lossy compression for VNC server 1331c23f23b9SMichael Tokarev vnc-png PNG compression for VNC server 1332c23f23b9SMichael Tokarev cocoa Cocoa UI (Mac OS X only) 1333c23f23b9SMichael Tokarev virtfs VirtFS 1334c23f23b9SMichael Tokarev xen xen backend driver support 1335c23f23b9SMichael Tokarev xen-pci-passthrough 1336c23f23b9SMichael Tokarev brlapi BrlAPI (Braile) 1337c23f23b9SMichael Tokarev curl curl connectivity 1338c23f23b9SMichael Tokarev fdt fdt device tree 1339c23f23b9SMichael Tokarev bluez bluez stack connectivity 1340c23f23b9SMichael Tokarev kvm KVM acceleration support 1341c23f23b9SMichael Tokarev rdma RDMA-based migration support 1342c23f23b9SMichael Tokarev uuid uuid support 1343c23f23b9SMichael Tokarev vde support for vde network 1344c23f23b9SMichael Tokarev netmap support for netmap network 1345c23f23b9SMichael Tokarev linux-aio Linux AIO support 1346c23f23b9SMichael Tokarev cap-ng libcap-ng support 1347c23f23b9SMichael Tokarev attr attr and xattr support 1348c23f23b9SMichael Tokarev vhost-net vhost-net acceleration support 1349c23f23b9SMichael Tokarev spice spice 1350c23f23b9SMichael Tokarev rbd rados block device (rbd) 1351c23f23b9SMichael Tokarev libiscsi iscsi support 1352c23f23b9SMichael Tokarev libnfs nfs support 13537b02f544SMarc-André Lureau smartcard smartcard support (libcacard) 1354c23f23b9SMichael Tokarev libusb libusb (for usb passthrough) 1355c23f23b9SMichael Tokarev usb-redir usb network redirection support 1356c23f23b9SMichael Tokarev lzo support of lzo compression library 1357c23f23b9SMichael Tokarev snappy support of snappy compression library 1358c23f23b9SMichael Tokarev bzip2 support of bzip2 compression library 1359c23f23b9SMichael Tokarev (for reading bzip2-compressed dmg images) 1360c23f23b9SMichael Tokarev seccomp seccomp support 1361c23f23b9SMichael Tokarev coroutine-pool coroutine freelist (better performance) 1362c23f23b9SMichael Tokarev glusterfs GlusterFS backend 1363c23f23b9SMichael Tokarev archipelago Archipelago backend 1364c23f23b9SMichael Tokarev tpm TPM support 1365c23f23b9SMichael Tokarev libssh2 ssh block device support 1366c23f23b9SMichael Tokarev vhdx support for the Microsoft VHDX image format 1367c23f23b9SMichael Tokarev numa libnuma support 1368c23f23b9SMichael Tokarev tcmalloc tcmalloc support 13697b01cb97SAlexandre Derumier jemalloc jemalloc support 137008fb77edSStefan Weil 137108fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1372af5db58eSpbrookEOF 13732d2ad6d0SFam Zhengexit 0 1374af5db58eSpbrookfi 1375af5db58eSpbrook 1376359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 1377359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 1378359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 1379359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 1380359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1381359bc95dSPeter Maydell ARCH=tci 1382359bc95dSPeter Maydell else 138376ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1384359bc95dSPeter Maydell fi 1385359bc95dSPeter Maydellfi 1386359bc95dSPeter Maydell 13879c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 13889c83ffd8SPeter Maydell# by default. Only enable by default for git builds 13899c83ffd8SPeter Maydellz_version=`cut -f3 -d. $source_path/VERSION` 13909c83ffd8SPeter Maydell 13919c83ffd8SPeter Maydellif test -z "$werror" ; then 13929c83ffd8SPeter Maydell if test -d "$source_path/.git" -a \ 13939c83ffd8SPeter Maydell "$linux" = "yes" ; then 13949c83ffd8SPeter Maydell werror="yes" 13959c83ffd8SPeter Maydell else 13969c83ffd8SPeter Maydell werror="no" 13979c83ffd8SPeter Maydell fi 13989c83ffd8SPeter Maydellfi 13999c83ffd8SPeter Maydell 14008d05095cSPaolo Bonzini# check that the C compiler works. 140193b25869SJohn Snowwrite_c_skeleton; 14028d05095cSPaolo Bonziniif compile_object ; then 14038d05095cSPaolo Bonzini : C compiler works ok 14048d05095cSPaolo Bonzinielse 140576ad07a4SPeter Maydell error_exit "\"$cc\" either does not exist or does not work" 14068d05095cSPaolo Bonzinifi 14070ef74c74SPeter Maydellif ! compile_prog ; then 14080ef74c74SPeter Maydell error_exit "\"$cc\" cannot build an executable (is your linker broken?)" 14090ef74c74SPeter Maydellfi 14108d05095cSPaolo Bonzini 141198b21dcdSPeter Maydell# Check that the C++ compiler exists and works with the C compiler 141298b21dcdSPeter Maydellif has $cxx; then 141398b21dcdSPeter Maydell cat > $TMPC <<EOF 141498b21dcdSPeter Maydellint c_function(void); 141598b21dcdSPeter Maydellint main(void) { return c_function(); } 141698b21dcdSPeter MaydellEOF 141798b21dcdSPeter Maydell 141898b21dcdSPeter Maydell compile_object 141998b21dcdSPeter Maydell 14209c83ffd8SPeter Maydell cat > $TMPCXX <<EOF 142198b21dcdSPeter Maydellextern "C" { 142298b21dcdSPeter Maydell int c_function(void); 142398b21dcdSPeter Maydell} 142498b21dcdSPeter Maydellint c_function(void) { return 42; } 142598b21dcdSPeter MaydellEOF 142698b21dcdSPeter Maydell 14279c83ffd8SPeter Maydell update_cxxflags 14289c83ffd8SPeter Maydell 14299c83ffd8SPeter Maydell if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then 143098b21dcdSPeter Maydell # C++ compiler $cxx works ok with C compiler $cc 143198b21dcdSPeter Maydell : 143298b21dcdSPeter Maydell else 143398b21dcdSPeter Maydell echo "C++ compiler $cxx does not work with C compiler $cc" 143498b21dcdSPeter Maydell echo "Disabling C++ specific optional code" 143598b21dcdSPeter Maydell cxx= 143698b21dcdSPeter Maydell fi 143798b21dcdSPeter Maydellelse 143898b21dcdSPeter Maydell echo "No C++ compiler available; disabling C++ specific optional code" 143998b21dcdSPeter Maydell cxx= 144098b21dcdSPeter Maydellfi 144198b21dcdSPeter Maydell 14428d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 14438d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 14448d05095cSPaolo Bonzinigcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 144537746c5eSMarc-André Lureaugcc_flags="-Wendif-labels $gcc_flags" 1446c1556a81SPeter Maydellgcc_flags="-Wno-initializer-overrides $gcc_flags" 144771429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags" 14486ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would 14496ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due 14506ca026cbSPeter Maydell# to -Werror this would just silently disable some features, 14516ca026cbSPeter Maydell# so it's too error prone. 145293b25869SJohn Snow 145393b25869SJohn Snowcc_has_warning_flag() { 145493b25869SJohn Snow write_c_skeleton; 145593b25869SJohn Snow 1456a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 1457a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 1458a1d29d6cSPeter Maydell # warning options). 145993b25869SJohn Snow optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 146093b25869SJohn Snow compile_prog "-Werror $optflag" "" 146193b25869SJohn Snow} 146293b25869SJohn Snow 146393b25869SJohn Snowfor flag in $gcc_flags; do 146493b25869SJohn Snow if cc_has_warning_flag $flag ; then 14658d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 14668d05095cSPaolo Bonzini fi 14678d05095cSPaolo Bonzinidone 14688d05095cSPaolo Bonzini 146963678e17SSteven Noonanif test "$stack_protector" != "no"; then 1470fccd35a0SRodrigo Rebello cat > $TMPC << EOF 1471fccd35a0SRodrigo Rebelloint main(int argc, char *argv[]) 1472fccd35a0SRodrigo Rebello{ 1473fccd35a0SRodrigo Rebello char arr[64], *p = arr, *c = argv[0]; 1474fccd35a0SRodrigo Rebello while (*c) { 1475fccd35a0SRodrigo Rebello *p++ = *c++; 1476fccd35a0SRodrigo Rebello } 1477fccd35a0SRodrigo Rebello return 0; 1478fccd35a0SRodrigo Rebello} 1479fccd35a0SRodrigo RebelloEOF 148063678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 14813b463a3fSMiroslav Rezanina sp_on=0 148263678e17SSteven Noonan for flag in $gcc_flags; do 1483590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 1484590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 1485590e5dd9SPeter Maydell if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC && 1486590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 148763678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 14883b463a3fSMiroslav Rezanina sp_on=1 148963678e17SSteven Noonan break 149063678e17SSteven Noonan fi 149163678e17SSteven Noonan done 14923b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 14933b463a3fSMiroslav Rezanina if test $sp_on = 0; then 14943b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 14953b463a3fSMiroslav Rezanina fi 14963b463a3fSMiroslav Rezanina fi 149737746c5eSMarc-André Lureaufi 149837746c5eSMarc-André Lureau 1499cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1500cbdd1999SPaolo Bonzini# large functions that use global variables. The bug is in all releases of 1501cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1502cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1503cbdd1999SPaolo Bonzinicat > $TMPC << EOF 1504cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1505cbdd1999SPaolo Bonziniint main(void) { return 0; } 1506cbdd1999SPaolo Bonzini#else 1507cbdd1999SPaolo Bonzini#error No bug in this compiler. 1508cbdd1999SPaolo Bonzini#endif 1509cbdd1999SPaolo BonziniEOF 1510cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then 1511cbdd1999SPaolo Bonzini TRANSLATE_OPT_CFLAGS=-fno-gcse 1512cbdd1999SPaolo Bonzinifi 1513cbdd1999SPaolo Bonzini 151440d6444eSAvi Kivityif test "$static" = "yes" ; then 1515aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 1516aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 1517aa0d1f44SPaolo Bonzini fi 151840d6444eSAvi Kivity if test "$pie" = "yes" ; then 151976ad07a4SPeter Maydell error_exit "static and pie are mutually incompatible" 152040d6444eSAvi Kivity else 152140d6444eSAvi Kivity pie="no" 152240d6444eSAvi Kivity fi 152340d6444eSAvi Kivityfi 152440d6444eSAvi Kivity 1525768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 1526768b7855SEmilio G. Cota cat > $TMPC << EOF 1527768b7855SEmilio G. Cotastatic __thread int tls_var; 1528768b7855SEmilio G. Cotaint main(void) { return tls_var; } 1529768b7855SEmilio G. CotaEOF 1530768b7855SEmilio G. Cota 1531768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 1532768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 1533768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 1534768b7855SEmilio G. Cotafi 1535768b7855SEmilio G. Cota 153640d6444eSAvi Kivityif test "$pie" = ""; then 153740d6444eSAvi Kivity case "$cpu-$targetos" in 1538c72b26ecSRichard Henderson i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 153940d6444eSAvi Kivity ;; 154040d6444eSAvi Kivity *) 154140d6444eSAvi Kivity pie="no" 154240d6444eSAvi Kivity ;; 154340d6444eSAvi Kivity esac 154440d6444eSAvi Kivityfi 154540d6444eSAvi Kivity 154640d6444eSAvi Kivityif test "$pie" != "no" ; then 154740d6444eSAvi Kivity cat > $TMPC << EOF 154821d4a791SAvi Kivity 154921d4a791SAvi Kivity#ifdef __linux__ 155021d4a791SAvi Kivity# define THREAD __thread 155121d4a791SAvi Kivity#else 155221d4a791SAvi Kivity# define THREAD 155321d4a791SAvi Kivity#endif 155421d4a791SAvi Kivity 155521d4a791SAvi Kivitystatic THREAD int tls_var; 155621d4a791SAvi Kivity 155721d4a791SAvi Kivityint main(void) { return tls_var; } 155821d4a791SAvi Kivity 155940d6444eSAvi KivityEOF 156040d6444eSAvi Kivity if compile_prog "-fPIE -DPIE" "-pie"; then 156140d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 156240d6444eSAvi Kivity LDFLAGS="-pie $LDFLAGS" 156340d6444eSAvi Kivity pie="yes" 156440d6444eSAvi Kivity if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 156540d6444eSAvi Kivity LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 156640d6444eSAvi Kivity fi 156740d6444eSAvi Kivity else 156840d6444eSAvi Kivity if test "$pie" = "yes"; then 156976ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 157040d6444eSAvi Kivity else 157140d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 157240d6444eSAvi Kivity pie="no" 157340d6444eSAvi Kivity fi 157440d6444eSAvi Kivity fi 157546eef33bSBrad 1576e4a7b344SStefan Hajnoczi if compile_prog "-Werror -fno-pie" "-nopie"; then 157746eef33bSBrad CFLAGS_NOPIE="-fno-pie" 157846eef33bSBrad LDFLAGS_NOPIE="-nopie" 157946eef33bSBrad fi 158040d6444eSAvi Kivityfi 158140d6444eSAvi Kivity 158209dada40SPaolo Bonzini########################################## 158309dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 158409dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 158509dada40SPaolo Bonzini# specification is necessary 158609dada40SPaolo Bonzini 158709dada40SPaolo Bonziniif test "$cpu" = "i386"; then 158809dada40SPaolo Bonzini cat > $TMPC << EOF 158909dada40SPaolo Bonzinistatic int sfaa(int *ptr) 159009dada40SPaolo Bonzini{ 159109dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 159209dada40SPaolo Bonzini} 159309dada40SPaolo Bonzini 159409dada40SPaolo Bonziniint main(void) 159509dada40SPaolo Bonzini{ 159609dada40SPaolo Bonzini int val = 42; 15971405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 159809dada40SPaolo Bonzini sfaa(&val); 159909dada40SPaolo Bonzini return val; 160009dada40SPaolo Bonzini} 160109dada40SPaolo BonziniEOF 160209dada40SPaolo Bonzini if ! compile_prog "" "" ; then 160309dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 160409dada40SPaolo Bonzini fi 160509dada40SPaolo Bonzinifi 160609dada40SPaolo Bonzini 160709dada40SPaolo Bonzini######################################### 1608ec530c81Sbellard# Solaris specific configure tool chain decisions 160909dada40SPaolo Bonzini 1610ec530c81Sbellardif test "$solaris" = "yes" ; then 16116792aa11SLoïc Minier if has $install; then 16126792aa11SLoïc Minier : 16136792aa11SLoïc Minier else 161476ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 161576ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 161676ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1617ec530c81Sbellard fi 16186792aa11SLoïc Minier if test "`path_of $install`" = "/usr/sbin/install" ; then 161976ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 162076ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 162176ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1622ec530c81Sbellard fi 16236792aa11SLoïc Minier if has ar; then 16246792aa11SLoïc Minier : 16256792aa11SLoïc Minier else 1626ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 162776ad07a4SPeter Maydell error_exit "No path includes ar" \ 162876ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 1629ec530c81Sbellard fi 163076ad07a4SPeter Maydell error_exit "No path includes ar" 1631ec530c81Sbellard fi 1632ec530c81Sbellardfi 1633ec530c81Sbellard 1634afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 1635121afa9eSAnthony Liguori target_list="$default_target_list" 1636121afa9eSAnthony Liguorielse 1637121afa9eSAnthony Liguori target_list=`echo "$target_list" | sed -e 's/,/ /g'` 16385327cf48Sbellardfi 163925b48338SPeter Maydell 164025b48338SPeter Maydell# Check that we recognised the target name; this allows a more 164125b48338SPeter Maydell# friendly error message than if we let it fall through. 164225b48338SPeter Maydellfor target in $target_list; do 164325b48338SPeter Maydell case " $default_target_list " in 164425b48338SPeter Maydell *" $target "*) 164525b48338SPeter Maydell ;; 164625b48338SPeter Maydell *) 164725b48338SPeter Maydell error_exit "Unknown target name '$target'" 164825b48338SPeter Maydell ;; 164925b48338SPeter Maydell esac 165025b48338SPeter Maydelldone 165125b48338SPeter Maydell 1652f55fe278SPaolo Bonzini# see if system emulation was really requested 1653f55fe278SPaolo Bonzinicase " $target_list " in 1654f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 1655f55fe278SPaolo Bonzini ;; 1656f55fe278SPaolo Bonzini *) softmmu=no 1657f55fe278SPaolo Bonzini ;; 1658f55fe278SPaolo Bonziniesac 16595327cf48Sbellard 1660249247c9SJuan Quintelafeature_not_found() { 1661249247c9SJuan Quintela feature=$1 166221684af0SStewart Smith remedy=$2 1663249247c9SJuan Quintela 166476ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 166521684af0SStewart Smith "configure was not able to find it." \ 166621684af0SStewart Smith "$remedy" 1667249247c9SJuan Quintela} 1668249247c9SJuan Quintela 16697d13299dSbellard# --- 16707d13299dSbellard# big/little endian test 16717d13299dSbellardcat > $TMPC << EOF 167261cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 167361cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 167461cc919fSMike Frysingerextern int foo(short *, short *); 167561cc919fSMike Frysingerint main(int argc, char *argv[]) { 167661cc919fSMike Frysinger return foo(big_endian, little_endian); 16777d13299dSbellard} 16787d13299dSbellardEOF 16797d13299dSbellard 168061cc919fSMike Frysingerif compile_object ; then 168161cc919fSMike Frysinger if grep -q BiGeNdIaN $TMPO ; then 168261cc919fSMike Frysinger bigendian="yes" 168361cc919fSMike Frysinger elif grep -q LiTtLeEnDiAn $TMPO ; then 168461cc919fSMike Frysinger bigendian="no" 16857d13299dSbellard else 16867d13299dSbellard echo big/little test failed 16877d13299dSbellard fi 16887d13299dSbellardelse 168961cc919fSMike Frysinger echo big/little test failed 16907d13299dSbellardfi 16917d13299dSbellard 1692b0a47e79SJuan Quintela########################################## 1693a30878e7SPeter Maydell# cocoa implies not SDL or GTK 1694a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI 1695a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code) 1696a30878e7SPeter Maydellif test "$cocoa" = "yes"; then 1697a30878e7SPeter Maydell if test "$sdl" = "yes"; then 1698a30878e7SPeter Maydell error_exit "Cocoa and SDL UIs cannot both be enabled at once" 1699a30878e7SPeter Maydell fi 1700a30878e7SPeter Maydell if test "$gtk" = "yes"; then 1701a30878e7SPeter Maydell error_exit "Cocoa and GTK UIs cannot both be enabled at once" 1702a30878e7SPeter Maydell fi 1703a30878e7SPeter Maydell gtk=no 1704a30878e7SPeter Maydell sdl=no 1705a30878e7SPeter Maydellfi 1706a30878e7SPeter Maydell 1707a30878e7SPeter Maydell########################################## 1708015a33bdSGonglei# L2TPV3 probe 1709015a33bdSGonglei 1710015a33bdSGongleicat > $TMPC <<EOF 1711015a33bdSGonglei#include <sys/socket.h> 1712bff6cb72SMichael Tokarev#include <linux/ip.h> 1713015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 1714015a33bdSGongleiEOF 1715015a33bdSGongleiif compile_prog "" "" ; then 1716015a33bdSGonglei l2tpv3=yes 1717015a33bdSGongleielse 1718015a33bdSGonglei l2tpv3=no 1719015a33bdSGongleifi 1720015a33bdSGonglei 1721015a33bdSGonglei########################################## 17224d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check 17234d9310f4SDaniel P. Berrange 17244d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then 17254d9310f4SDaniel P. Berrange # Some versions of MinGW / Mingw-w64 lack localtime_r 17264d9310f4SDaniel P. Berrange # and gmtime_r entirely. 17274d9310f4SDaniel P. Berrange # 17284d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 define a macro for 17294d9310f4SDaniel P. Berrange # localtime_r/gmtime_r. 17304d9310f4SDaniel P. Berrange # 17314d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 will define functions 17324d9310f4SDaniel P. Berrange # for localtime_r/gmtime_r, but only if you have 17334d9310f4SDaniel P. Berrange # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun 17344d9310f4SDaniel P. Berrange # though, unistd.h and pthread.h both define 17354d9310f4SDaniel P. Berrange # that for you. 17364d9310f4SDaniel P. Berrange # 17374d9310f4SDaniel P. Berrange # So this #undef localtime_r and #include <unistd.h> 17384d9310f4SDaniel P. Berrange # are not in fact redundant. 17394d9310f4SDaniel P. Berrangecat > $TMPC << EOF 17404d9310f4SDaniel P. Berrange#include <unistd.h> 17414d9310f4SDaniel P. Berrange#include <time.h> 17424d9310f4SDaniel P. Berrange#undef localtime_r 17434d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; } 17444d9310f4SDaniel P. BerrangeEOF 17454d9310f4SDaniel P. Berrange if compile_prog "" "" ; then 17464d9310f4SDaniel P. Berrange localtime_r="yes" 17474d9310f4SDaniel P. Berrange else 17484d9310f4SDaniel P. Berrange localtime_r="no" 17494d9310f4SDaniel P. Berrange fi 17504d9310f4SDaniel P. Berrangefi 17514d9310f4SDaniel P. Berrange 17524d9310f4SDaniel P. Berrange########################################## 1753779ab5e3SStefan Weil# pkg-config probe 1754779ab5e3SStefan Weil 1755779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 175676ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 1757779ab5e3SStefan Weilfi 1758779ab5e3SStefan Weil 1759779ab5e3SStefan Weil########################################## 1760b0a47e79SJuan Quintela# NPTL probe 1761b0a47e79SJuan Quintela 176224cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 1763bd0c5661Spbrook cat > $TMPC <<EOF 1764bd0c5661Spbrook#include <sched.h> 176530813ceaSpbrook#include <linux/futex.h> 1766182eacc0SStefan Weilint main(void) { 1767bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1768bd0c5661Spbrook#error bork 1769bd0c5661Spbrook#endif 1770182eacc0SStefan Weil return 0; 1771bd0c5661Spbrook} 1772bd0c5661SpbrookEOF 177324cb36a6SPeter Maydell if ! compile_object ; then 177421684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 1775b0a47e79SJuan Quintela fi 1776bd0c5661Spbrookfi 1777bd0c5661Spbrook 177811d9f695Sbellard########################################## 177999f2dbd3SLiang Li# avx2 optimization requirement check 178099f2dbd3SLiang Li 178199f2dbd3SLiang Licat > $TMPC << EOF 178299f2dbd3SLiang Listatic void bar(void) {} 178399f2dbd3SLiang Listatic void *bar_ifunc(void) {return (void*) bar;} 178499f2dbd3SLiang Listatic void foo(void) __attribute__((ifunc("bar_ifunc"))); 178599f2dbd3SLiang Liint main(void) { foo(); return 0; } 178699f2dbd3SLiang LiEOF 178799f2dbd3SLiang Liif compile_prog "-mavx2" "" ; then 178899f2dbd3SLiang Li if readelf --syms $TMPE |grep "IFUNC.*foo" >/dev/null 2>&1; then 178999f2dbd3SLiang Li avx2_opt="yes" 179099f2dbd3SLiang Li fi 179199f2dbd3SLiang Lifi 179299f2dbd3SLiang Li 179399f2dbd3SLiang Li######################################### 1794ac62922eSbalrog# zlib check 1795ac62922eSbalrog 17961ece9905SAlon Levyif test "$zlib" != "no" ; then 1797ac62922eSbalrog cat > $TMPC << EOF 1798ac62922eSbalrog#include <zlib.h> 1799ac62922eSbalrogint main(void) { zlibVersion(); return 0; } 1800ac62922eSbalrogEOF 180152166aa0SJuan Quintela if compile_prog "" "-lz" ; then 1802ac62922eSbalrog : 1803ac62922eSbalrog else 180476ad07a4SPeter Maydell error_exit "zlib check failed" \ 180576ad07a4SPeter Maydell "Make sure to have the zlib libs and headers installed." 1806ac62922eSbalrog fi 18071ece9905SAlon Levyfi 1808eb0ecd5aSWill NewtonLIBS="$LIBS -lz" 1809ac62922eSbalrog 1810ac62922eSbalrog########################################## 1811607dacd0Sqiaonuohan# lzo check 1812607dacd0Sqiaonuohan 1813607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 1814607dacd0Sqiaonuohan cat > $TMPC << EOF 1815607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 1816607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 1817607dacd0SqiaonuohanEOF 1818607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 1819607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 1820b25c9dffSStefan Weil lzo="yes" 1821b25c9dffSStefan Weil else 1822b25c9dffSStefan Weil if test "$lzo" = "yes"; then 1823b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 1824b25c9dffSStefan Weil fi 1825b25c9dffSStefan Weil lzo="no" 1826b25c9dffSStefan Weil fi 1827607dacd0Sqiaonuohanfi 1828607dacd0Sqiaonuohan 1829607dacd0Sqiaonuohan########################################## 1830607dacd0Sqiaonuohan# snappy check 1831607dacd0Sqiaonuohan 1832607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 1833607dacd0Sqiaonuohan cat > $TMPC << EOF 1834607dacd0Sqiaonuohan#include <snappy-c.h> 1835607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 1836607dacd0SqiaonuohanEOF 1837607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 1838607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 1839b25c9dffSStefan Weil snappy="yes" 1840b25c9dffSStefan Weil else 1841b25c9dffSStefan Weil if test "$snappy" = "yes"; then 1842b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 1843b25c9dffSStefan Weil fi 1844b25c9dffSStefan Weil snappy="no" 1845b25c9dffSStefan Weil fi 1846607dacd0Sqiaonuohanfi 1847607dacd0Sqiaonuohan 1848607dacd0Sqiaonuohan########################################## 18496b383c08SPeter Wu# bzip2 check 18506b383c08SPeter Wu 18516b383c08SPeter Wuif test "$bzip2" != "no" ; then 18526b383c08SPeter Wu cat > $TMPC << EOF 18536b383c08SPeter Wu#include <bzlib.h> 18546b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 18556b383c08SPeter WuEOF 18566b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 18576b383c08SPeter Wu bzip2="yes" 18586b383c08SPeter Wu else 18596b383c08SPeter Wu if test "$bzip2" = "yes"; then 18606b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 18616b383c08SPeter Wu fi 18626b383c08SPeter Wu bzip2="no" 18636b383c08SPeter Wu fi 18646b383c08SPeter Wufi 18656b383c08SPeter Wu 18666b383c08SPeter Wu########################################## 1867f794573eSEduardo Otubo# libseccomp check 1868f794573eSEduardo Otubo 1869f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 1870693e5910SAndrew Jones case "$cpu" in 1871693e5910SAndrew Jones i386|x86_64) 1872ba060c53Sdann frazier libseccomp_minver="2.1.0" 1873693e5910SAndrew Jones ;; 1874693e5910SAndrew Jones arm|aarch64) 1875693e5910SAndrew Jones libseccomp_minver="2.2.3" 1876693e5910SAndrew Jones ;; 1877693e5910SAndrew Jones *) 1878693e5910SAndrew Jones libseccomp_minver="" 1879693e5910SAndrew Jones ;; 1880693e5910SAndrew Jones esac 1881693e5910SAndrew Jones 1882693e5910SAndrew Jones if test "$libseccomp_minver" != "" && 1883693e5910SAndrew Jones $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then 1884b4451996SMichael Tokarev libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`" 1885372e47e9SAndreas Färber QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`" 1886f794573eSEduardo Otubo seccomp="yes" 1887f794573eSEduardo Otubo else 1888f794573eSEduardo Otubo if test "$seccomp" = "yes" ; then 1889693e5910SAndrew Jones if test "$libseccomp_minver" != "" ; then 1890693e5910SAndrew Jones feature_not_found "libseccomp" \ 1891693e5910SAndrew Jones "Install libseccomp devel >= $libseccomp_minver" 1892693e5910SAndrew Jones else 1893693e5910SAndrew Jones feature_not_found "libseccomp" \ 1894693e5910SAndrew Jones "libseccomp is not supported for host cpu $cpu" 1895693e5910SAndrew Jones fi 1896896848f0SEduardo Otubo fi 1897e84d5956SYann E. MORIN seccomp="no" 1898f794573eSEduardo Otubo fi 1899f794573eSEduardo Otubofi 1900f794573eSEduardo Otubo########################################## 1901e37630caSaliguori# xen probe 1902e37630caSaliguori 1903fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 1904b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 19055eeb39c2SIan Campbell xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn" 1906d5b93ddfSAnthony PERARD 190750ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 190850ced5b3SStefan Weil # If no, we are done and there is no Xen support. 190950ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 191050ced5b3SStefan Weil 191150ced5b3SStefan Weil # Xen (any) 191250ced5b3SStefan Weil cat > $TMPC <<EOF 191350ced5b3SStefan Weil#include <xenctrl.h> 191450ced5b3SStefan Weilint main(void) { 191550ced5b3SStefan Weil return 0; 191650ced5b3SStefan Weil} 191750ced5b3SStefan WeilEOF 191850ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 191950ced5b3SStefan Weil # Xen not found 192050ced5b3SStefan Weil if test "$xen" = "yes" ; then 192121684af0SStewart Smith feature_not_found "xen" "Install xen devel" 192250ced5b3SStefan Weil fi 192350ced5b3SStefan Weil xen=no 192450ced5b3SStefan Weil 1925d5b93ddfSAnthony PERARD # Xen unstable 192669deef08SPeter Maydell elif 192769deef08SPeter Maydell cat > $TMPC <<EOF && 19285eeb39c2SIan Campbell/* 19295eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat 19305eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given. 19315eeb39c2SIan Campbell */ 19325eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API 19335eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API 19345eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API 19355eeb39c2SIan Campbell#include <xenctrl.h> 19365eeb39c2SIan Campbell#include <xenstore.h> 19375eeb39c2SIan Campbell#include <xenevtchn.h> 19385eeb39c2SIan Campbell#include <xengnttab.h> 19395eeb39c2SIan Campbell#include <xenforeignmemory.h> 19405eeb39c2SIan Campbell#include <stdint.h> 19415eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h> 19425eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS) 19435eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined 19445eeb39c2SIan Campbell#endif 19455eeb39c2SIan Campbellint main(void) { 19465eeb39c2SIan Campbell xc_interface *xc = NULL; 19475eeb39c2SIan Campbell xenforeignmemory_handle *xfmem; 19485eeb39c2SIan Campbell xenevtchn_handle *xe; 19495eeb39c2SIan Campbell xengnttab_handle *xg; 19505eeb39c2SIan Campbell xen_domain_handle_t handle; 19515eeb39c2SIan Campbell 19525eeb39c2SIan Campbell xs_daemon_open(); 19535eeb39c2SIan Campbell 19545eeb39c2SIan Campbell xc = xc_interface_open(0, 0, 0); 19555eeb39c2SIan Campbell xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 19565eeb39c2SIan Campbell xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 19575eeb39c2SIan Campbell xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 19585eeb39c2SIan Campbell xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 19595eeb39c2SIan Campbell xc_domain_create(xc, 0, handle, 0, NULL, NULL); 19605eeb39c2SIan Campbell 19615eeb39c2SIan Campbell xfmem = xenforeignmemory_open(0, 0); 19625eeb39c2SIan Campbell xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 19635eeb39c2SIan Campbell 19645eeb39c2SIan Campbell xe = xenevtchn_open(0, 0); 19655eeb39c2SIan Campbell xenevtchn_fd(xe); 19665eeb39c2SIan Campbell 19675eeb39c2SIan Campbell xg = xengnttab_open(0, 0); 19685eeb39c2SIan Campbell xengnttab_map_grant_ref(xg, 0, 0, 0); 19695eeb39c2SIan Campbell 19705eeb39c2SIan Campbell return 0; 19715eeb39c2SIan Campbell} 19725eeb39c2SIan CampbellEOF 19735eeb39c2SIan Campbell compile_prog "" "$xen_libs $xen_stable_libs" 19745eeb39c2SIan Campbell then 19755eeb39c2SIan Campbell xen_ctrl_version=471 19765eeb39c2SIan Campbell xen=yes 19775eeb39c2SIan Campbell elif 19785eeb39c2SIan Campbell cat > $TMPC <<EOF && 1979e37630caSaliguori#include <xenctrl.h> 1980cdadde39SRoger Pau Monne#include <stdint.h> 1981cdadde39SRoger Pau Monneint main(void) { 1982cdadde39SRoger Pau Monne xc_interface *xc = NULL; 1983cdadde39SRoger Pau Monne xen_domain_handle_t handle; 1984cdadde39SRoger Pau Monne xc_domain_create(xc, 0, handle, 0, NULL, NULL); 1985cdadde39SRoger Pau Monne return 0; 1986cdadde39SRoger Pau Monne} 1987cdadde39SRoger Pau MonneEOF 1988cdadde39SRoger Pau Monne compile_prog "" "$xen_libs" 1989cdadde39SRoger Pau Monne then 1990cdadde39SRoger Pau Monne xen_ctrl_version=470 1991cdadde39SRoger Pau Monne xen=yes 1992cdadde39SRoger Pau Monne 1993cdadde39SRoger Pau Monne # Xen 4.6 1994cdadde39SRoger Pau Monne elif 1995cdadde39SRoger Pau Monne cat > $TMPC <<EOF && 1996cdadde39SRoger Pau Monne#include <xenctrl.h> 1997e108a3c1SAnthony PERARD#include <xenstore.h> 1998d5b93ddfSAnthony PERARD#include <stdint.h> 1999d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 2000d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 2001d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 2002d5b93ddfSAnthony PERARD#endif 2003d5b93ddfSAnthony PERARDint main(void) { 2004d5b93ddfSAnthony PERARD xc_interface *xc; 2005d5b93ddfSAnthony PERARD xs_daemon_open(); 2006d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 2007d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2008d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 2009b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 20108688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2011d8b441a3SJan Beulich xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 201220a544c7SKonrad Rzeszutek Wilk xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0); 2013d8b441a3SJan Beulich return 0; 2014d8b441a3SJan Beulich} 2015d8b441a3SJan BeulichEOF 2016d8b441a3SJan Beulich compile_prog "" "$xen_libs" 2017d8b441a3SJan Beulich then 2018d8b441a3SJan Beulich xen_ctrl_version=460 2019d8b441a3SJan Beulich xen=yes 2020d8b441a3SJan Beulich 2021d8b441a3SJan Beulich # Xen 4.5 2022d8b441a3SJan Beulich elif 2023d8b441a3SJan Beulich cat > $TMPC <<EOF && 2024d8b441a3SJan Beulich#include <xenctrl.h> 2025d8b441a3SJan Beulich#include <xenstore.h> 2026d8b441a3SJan Beulich#include <stdint.h> 2027d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h> 2028d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS) 2029d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined 2030d8b441a3SJan Beulich#endif 2031d8b441a3SJan Beulichint main(void) { 2032d8b441a3SJan Beulich xc_interface *xc; 2033d8b441a3SJan Beulich xs_daemon_open(); 2034d8b441a3SJan Beulich xc = xc_interface_open(0, 0, 0); 2035d8b441a3SJan Beulich xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2036d8b441a3SJan Beulich xc_gnttab_open(NULL, 0); 2037d8b441a3SJan Beulich xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2038d8b441a3SJan Beulich xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 20393996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 20403996e85cSPaul Durrant return 0; 20413996e85cSPaul Durrant} 20423996e85cSPaul DurrantEOF 20433996e85cSPaul Durrant compile_prog "" "$xen_libs" 20443996e85cSPaul Durrant then 20453996e85cSPaul Durrant xen_ctrl_version=450 20463996e85cSPaul Durrant xen=yes 20473996e85cSPaul Durrant 20483996e85cSPaul Durrant elif 20493996e85cSPaul Durrant cat > $TMPC <<EOF && 20503996e85cSPaul Durrant#include <xenctrl.h> 20513996e85cSPaul Durrant#include <xenstore.h> 20523996e85cSPaul Durrant#include <stdint.h> 20533996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 20543996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 20553996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 20563996e85cSPaul Durrant#endif 20573996e85cSPaul Durrantint main(void) { 20583996e85cSPaul Durrant xc_interface *xc; 20593996e85cSPaul Durrant xs_daemon_open(); 20603996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 20613996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 20623996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 20633996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 20643996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 20658688e065SStefano Stabellini return 0; 20668688e065SStefano Stabellini} 20678688e065SStefano StabelliniEOF 20688688e065SStefano Stabellini compile_prog "" "$xen_libs" 206969deef08SPeter Maydell then 20708688e065SStefano Stabellini xen_ctrl_version=420 20718688e065SStefano Stabellini xen=yes 20728688e065SStefano Stabellini 2073e37630caSaliguori else 2074fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 2075edfb07edSIan Campbell feature_not_found "xen (unsupported version)" \ 2076edfb07edSIan Campbell "Install a supported xen (xen 4.2 or newer)" 2077fc321b4bSJuan Quintela fi 2078fc321b4bSJuan Quintela xen=no 2079e37630caSaliguori fi 2080d5b93ddfSAnthony PERARD 2081d5b93ddfSAnthony PERARD if test "$xen" = yes; then 20825eeb39c2SIan Campbell if test $xen_ctrl_version -ge 471 ; then 20835eeb39c2SIan Campbell libs_softmmu="$xen_stable_libs $libs_softmmu" 20845eeb39c2SIan Campbell fi 2085d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 2086d5b93ddfSAnthony PERARD fi 2087e37630caSaliguorifi 2088e37630caSaliguori 2089eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 2090edfb07edSIan Campbell if test "$xen" = "yes" && test "$linux" = "yes"; then 2091eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 2092eb6fda0fSAnthony PERARD else 2093eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 209476ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 209576ad07a4SPeter Maydell " but this feature requires /sys from Linux" 2096eb6fda0fSAnthony PERARD fi 2097eb6fda0fSAnthony PERARD xen_pci_passthrough=no 2098eb6fda0fSAnthony PERARD fi 2099eb6fda0fSAnthony PERARDfi 2100eb6fda0fSAnthony PERARD 210164a7ad6fSIan Campbellif test "$xen_pv_domain_build" = "yes" && 210264a7ad6fSIan Campbell test "$xen" != "yes"; then 210364a7ad6fSIan Campbell error_exit "User requested Xen PV domain builder support" \ 210464a7ad6fSIan Campbell "which requires Xen support." 210564a7ad6fSIan Campbellfi 210664a7ad6fSIan Campbell 2107e37630caSaliguori########################################## 2108dfffc653SJuan Quintela# Sparse probe 2109dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 21100dba6195SLoïc Minier if has cgcc; then 2111dfffc653SJuan Quintela sparse=yes 2112dfffc653SJuan Quintela else 2113dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 211421684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 2115dfffc653SJuan Quintela fi 2116dfffc653SJuan Quintela sparse=no 2117dfffc653SJuan Quintela fi 2118dfffc653SJuan Quintelafi 2119dfffc653SJuan Quintela 2120dfffc653SJuan Quintela########################################## 2121f676c67eSJeremy White# X11 probe 2122f676c67eSJeremy Whitex11_cflags= 2123f676c67eSJeremy Whitex11_libs=-lX11 2124f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 2125f676c67eSJeremy White x11_cflags=`$pkg_config --cflags x11` 2126f676c67eSJeremy White x11_libs=`$pkg_config --libs x11` 2127f676c67eSJeremy Whitefi 2128f676c67eSJeremy White 2129f676c67eSJeremy White########################################## 2130a4ccabcfSAnthony Liguori# GTK probe 2131a4ccabcfSAnthony Liguori 21329e04c683SStefan Weilif test "$gtkabi" = ""; then 21339e04c683SStefan Weil # The GTK ABI was not specified explicitly, so try whether 2.0 is available. 21349e04c683SStefan Weil # Use 3.0 as a fallback if that is available. 21359e04c683SStefan Weil if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then 21369e04c683SStefan Weil gtkabi=2.0 21379e04c683SStefan Weil elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then 21389e04c683SStefan Weil gtkabi=3.0 21399e04c683SStefan Weil else 21409e04c683SStefan Weil gtkabi=2.0 21419e04c683SStefan Weil fi 21429e04c683SStefan Weilfi 21439e04c683SStefan Weil 2144a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then 2145528de90aSDaniel P. Berrange gtkpackage="gtk+-$gtkabi" 21460a337ed0SGerd Hoffmann gtkx11package="gtk+-x11-$gtkabi" 2147528de90aSDaniel P. Berrange if test "$gtkabi" = "3.0" ; then 2148528de90aSDaniel P. Berrange gtkversion="3.0.0" 2149bbbf9bfbSStefan Weil else 2150bbbf9bfbSStefan Weil gtkversion="2.18.0" 2151bbbf9bfbSStefan Weil fi 2152bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 2153bbbf9bfbSStefan Weil gtk_cflags=`$pkg_config --cflags $gtkpackage` 2154bbbf9bfbSStefan Weil gtk_libs=`$pkg_config --libs $gtkpackage` 21550a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 2156f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 2157f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 21580a337ed0SGerd Hoffmann fi 2159bbbf9bfbSStefan Weil libs_softmmu="$gtk_libs $libs_softmmu" 2160bbbf9bfbSStefan Weil gtk="yes" 2161bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 21629e04c683SStefan Weil feature_not_found "gtk" "Install gtk2 or gtk3 devel" 2163bbbf9bfbSStefan Weil else 2164bbbf9bfbSStefan Weil gtk="no" 2165bbbf9bfbSStefan Weil fi 2166bbbf9bfbSStefan Weilfi 2167bbbf9bfbSStefan Weil 2168ddbb0d09SDaniel P. Berrange 2169ddbb0d09SDaniel P. Berrange########################################## 2170ddbb0d09SDaniel P. Berrange# GNUTLS probe 2171ddbb0d09SDaniel P. Berrange 217237371299SPeter Maydellgnutls_works() { 217337371299SPeter Maydell # Unfortunately some distros have bad pkg-config information for gnutls 217437371299SPeter Maydell # such that it claims to exist but you get a compiler error if you try 217537371299SPeter Maydell # to use the options returned by --libs. Specifically, Ubuntu for --static 217637371299SPeter Maydell # builds doesn't work: 217737371299SPeter Maydell # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035 217837371299SPeter Maydell # 217937371299SPeter Maydell # So sanity check the cflags/libs before assuming gnutls can be used. 218037371299SPeter Maydell if ! $pkg_config --exists "gnutls"; then 218137371299SPeter Maydell return 1 218237371299SPeter Maydell fi 218337371299SPeter Maydell 218437371299SPeter Maydell write_c_skeleton 218537371299SPeter Maydell compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)" 218637371299SPeter Maydell} 218737371299SPeter Maydell 218862893b67SDaniel P. Berrangegnutls_gcrypt=no 2189ed754746SDaniel P. Berrangegnutls_nettle=no 2190ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then 219137371299SPeter Maydell if gnutls_works; then 2192ddbb0d09SDaniel P. Berrange gnutls_cflags=`$pkg_config --cflags gnutls` 2193ddbb0d09SDaniel P. Berrange gnutls_libs=`$pkg_config --libs gnutls` 2194ddbb0d09SDaniel P. Berrange libs_softmmu="$gnutls_libs $libs_softmmu" 2195ddbb0d09SDaniel P. Berrange libs_tools="$gnutls_libs $libs_tools" 2196ddbb0d09SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 2197ddbb0d09SDaniel P. Berrange gnutls="yes" 2198ddbb0d09SDaniel P. Berrange 2199ddbb0d09SDaniel P. Berrange # gnutls_hash_init requires >= 2.9.10 2200ddbb0d09SDaniel P. Berrange if $pkg_config --exists "gnutls >= 2.9.10"; then 2201ddbb0d09SDaniel P. Berrange gnutls_hash="yes" 2202ddbb0d09SDaniel P. Berrange else 2203ddbb0d09SDaniel P. Berrange gnutls_hash="no" 2204ddbb0d09SDaniel P. Berrange fi 220562893b67SDaniel P. Berrange 2206b917da4cSDaniel P. Berrange # gnutls_rnd requires >= 2.11.0 2207b917da4cSDaniel P. Berrange if $pkg_config --exists "gnutls >= 2.11.0"; then 2208b917da4cSDaniel P. Berrange gnutls_rnd="yes" 2209b917da4cSDaniel P. Berrange else 2210b917da4cSDaniel P. Berrange gnutls_rnd="no" 2211b917da4cSDaniel P. Berrange fi 2212b917da4cSDaniel P. Berrange 221362893b67SDaniel P. Berrange if $pkg_config --exists 'gnutls >= 3.0'; then 221462893b67SDaniel P. Berrange gnutls_gcrypt=no 2215ed754746SDaniel P. Berrange gnutls_nettle=yes 221662893b67SDaniel P. Berrange elif $pkg_config --exists 'gnutls >= 2.12'; then 221762893b67SDaniel P. Berrange case `$pkg_config --libs --static gnutls` in 2218ed754746SDaniel P. Berrange *gcrypt*) 2219ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2220ed754746SDaniel P. Berrange gnutls_nettle=no 2221ed754746SDaniel P. Berrange ;; 2222ed754746SDaniel P. Berrange *nettle*) 2223ed754746SDaniel P. Berrange gnutls_gcrypt=no 2224ed754746SDaniel P. Berrange gnutls_nettle=yes 2225ed754746SDaniel P. Berrange ;; 2226ed754746SDaniel P. Berrange *) 2227ed754746SDaniel P. Berrange gnutls_gcrypt=yes 2228ed754746SDaniel P. Berrange gnutls_nettle=no 2229ed754746SDaniel P. Berrange ;; 223062893b67SDaniel P. Berrange esac 223162893b67SDaniel P. Berrange else 223262893b67SDaniel P. Berrange gnutls_gcrypt=yes 2233ed754746SDaniel P. Berrange gnutls_nettle=no 223462893b67SDaniel P. Berrange fi 2235ddbb0d09SDaniel P. Berrange elif test "$gnutls" = "yes"; then 2236ddbb0d09SDaniel P. Berrange feature_not_found "gnutls" "Install gnutls devel" 2237ddbb0d09SDaniel P. Berrange else 2238ddbb0d09SDaniel P. Berrange gnutls="no" 2239ddbb0d09SDaniel P. Berrange gnutls_hash="no" 2240b917da4cSDaniel P. Berrange gnutls_rnd="no" 2241ddbb0d09SDaniel P. Berrange fi 2242ddbb0d09SDaniel P. Berrangeelse 2243ddbb0d09SDaniel P. Berrange gnutls_hash="no" 2244b917da4cSDaniel P. Berrange gnutls_rnd="no" 2245ddbb0d09SDaniel P. Berrangefi 2246ddbb0d09SDaniel P. Berrange 224791bfcdb0SDaniel P. Berrange 224891bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag, 224991bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle 225091bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to nettle 225191bfcdb0SDaniel P. Berrangeif test -z "$gcrypt" 225291bfcdb0SDaniel P. Berrangethen 225391bfcdb0SDaniel P. Berrange if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes" 225491bfcdb0SDaniel P. Berrange then 225591bfcdb0SDaniel P. Berrange gcrypt="no" 225691bfcdb0SDaniel P. Berrange fi 225791bfcdb0SDaniel P. Berrangefi 225891bfcdb0SDaniel P. Berrange 225991bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag, 226091bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt 226191bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to gcrypt 226291bfcdb0SDaniel P. Berrangeif test -z "$nettle" 226391bfcdb0SDaniel P. Berrangethen 226491bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes" 226591bfcdb0SDaniel P. Berrange then 226691bfcdb0SDaniel P. Berrange nettle="no" 226791bfcdb0SDaniel P. Berrange fi 226891bfcdb0SDaniel P. Berrangefi 226991bfcdb0SDaniel P. Berrange 227091bfcdb0SDaniel P. Berrangehas_libgcrypt_config() { 227191bfcdb0SDaniel P. Berrange if ! has "libgcrypt-config" 227291bfcdb0SDaniel P. Berrange then 227391bfcdb0SDaniel P. Berrange return 1 227491bfcdb0SDaniel P. Berrange fi 227591bfcdb0SDaniel P. Berrange 227691bfcdb0SDaniel P. Berrange if test -n "$cross_prefix" 227791bfcdb0SDaniel P. Berrange then 227891bfcdb0SDaniel P. Berrange host=`libgcrypt-config --host` 227991bfcdb0SDaniel P. Berrange if test "$host-" != $cross_prefix 228091bfcdb0SDaniel P. Berrange then 228191bfcdb0SDaniel P. Berrange return 1 228291bfcdb0SDaniel P. Berrange fi 228391bfcdb0SDaniel P. Berrange fi 228491bfcdb0SDaniel P. Berrange 228591bfcdb0SDaniel P. Berrange return 0 228691bfcdb0SDaniel P. Berrange} 228791bfcdb0SDaniel P. Berrange 228891bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then 228991bfcdb0SDaniel P. Berrange if has_libgcrypt_config; then 229062893b67SDaniel P. Berrange gcrypt_cflags=`libgcrypt-config --cflags` 229162893b67SDaniel P. Berrange gcrypt_libs=`libgcrypt-config --libs` 229291bfcdb0SDaniel P. Berrange # Debian has remove -lgpg-error from libgcrypt-config 229391bfcdb0SDaniel P. Berrange # as it "spreads unnecessary dependencies" which in 229491bfcdb0SDaniel P. Berrange # turn breaks static builds... 229591bfcdb0SDaniel P. Berrange if test "$static" = "yes" 229691bfcdb0SDaniel P. Berrange then 229791bfcdb0SDaniel P. Berrange gcrypt_libs="$gcrypt_libs -lgpg-error" 229891bfcdb0SDaniel P. Berrange fi 229962893b67SDaniel P. Berrange libs_softmmu="$gcrypt_libs $libs_softmmu" 230062893b67SDaniel P. Berrange libs_tools="$gcrypt_libs $libs_tools" 230162893b67SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" 230291bfcdb0SDaniel P. Berrange gcrypt="yes" 230391bfcdb0SDaniel P. Berrange if test -z "$nettle"; then 230491bfcdb0SDaniel P. Berrange nettle="no" 230591bfcdb0SDaniel P. Berrange fi 230637788f25SDaniel P. Berrange 230737788f25SDaniel P. Berrange cat > $TMPC << EOF 230837788f25SDaniel P. Berrange#include <gcrypt.h> 230937788f25SDaniel P. Berrangeint main(void) { 231037788f25SDaniel P. Berrange gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2, 231137788f25SDaniel P. Berrange GCRY_MD_SHA256, 231237788f25SDaniel P. Berrange NULL, 0, 0, 0, NULL); 231337788f25SDaniel P. Berrange return 0; 231437788f25SDaniel P. Berrange} 231537788f25SDaniel P. BerrangeEOF 231637788f25SDaniel P. Berrange if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 231737788f25SDaniel P. Berrange gcrypt_kdf=yes 231837788f25SDaniel P. Berrange fi 231962893b67SDaniel P. Berrange else 232091bfcdb0SDaniel P. Berrange if test "$gcrypt" = "yes"; then 232162893b67SDaniel P. Berrange feature_not_found "gcrypt" "Install gcrypt devel" 232291bfcdb0SDaniel P. Berrange else 232391bfcdb0SDaniel P. Berrange gcrypt="no" 232491bfcdb0SDaniel P. Berrange fi 232562893b67SDaniel P. Berrange fi 232662893b67SDaniel P. Berrangefi 232762893b67SDaniel P. Berrange 2328ddbb0d09SDaniel P. Berrange 232991bfcdb0SDaniel P. Berrangeif test "$nettle" != "no"; then 2330ed754746SDaniel P. Berrange if $pkg_config --exists "nettle"; then 2331ed754746SDaniel P. Berrange nettle_cflags=`$pkg_config --cflags nettle` 2332ed754746SDaniel P. Berrange nettle_libs=`$pkg_config --libs nettle` 2333becaeb72SRadim Krčmář nettle_version=`$pkg_config --modversion nettle` 2334ed754746SDaniel P. Berrange libs_softmmu="$nettle_libs $libs_softmmu" 2335ed754746SDaniel P. Berrange libs_tools="$nettle_libs $libs_tools" 2336ed754746SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" 233791bfcdb0SDaniel P. Berrange nettle="yes" 2338ed754746SDaniel P. Berrange else 233991bfcdb0SDaniel P. Berrange if test "$nettle" = "yes"; then 2340ed754746SDaniel P. Berrange feature_not_found "nettle" "Install nettle devel" 234191bfcdb0SDaniel P. Berrange else 234291bfcdb0SDaniel P. Berrange nettle="no" 2343ed754746SDaniel P. Berrange fi 2344ed754746SDaniel P. Berrange fi 234591bfcdb0SDaniel P. Berrangefi 234691bfcdb0SDaniel P. Berrange 234791bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes" 234891bfcdb0SDaniel P. Berrangethen 234991bfcdb0SDaniel P. Berrange error_exit "Only one of gcrypt & nettle can be enabled" 235091bfcdb0SDaniel P. Berrangefi 2351ed754746SDaniel P. Berrange 23529a2fd434SDaniel P. Berrange########################################## 23539a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite 23549a2fd434SDaniel P. Berrange 23559a2fd434SDaniel P. Berrangetasn1=yes 235690246037SDaniel P. Berrangetasn1_cflags="" 235790246037SDaniel P. Berrangetasn1_libs="" 23589a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then 23599a2fd434SDaniel P. Berrange tasn1_cflags=`$pkg_config --cflags libtasn1` 23609a2fd434SDaniel P. Berrange tasn1_libs=`$pkg_config --libs libtasn1` 23619a2fd434SDaniel P. Berrangeelse 23629a2fd434SDaniel P. Berrange tasn1=no 23639a2fd434SDaniel P. Berrangefi 23649a2fd434SDaniel P. Berrange 2365ed754746SDaniel P. Berrange 2366bbbf9bfbSStefan Weil########################################## 2367559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket ) 2368559607eaSDaniel P. Berrange 2369559607eaSDaniel P. Berrangehave_ifaddrs_h=yes 2370559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then 2371559607eaSDaniel P. Berrange have_ifaddrs_h=no 2372559607eaSDaniel P. Berrangefi 2373559607eaSDaniel P. Berrange 2374559607eaSDaniel P. Berrange########################################## 2375bbbf9bfbSStefan Weil# VTE probe 2376bbbf9bfbSStefan Weil 2377bbbf9bfbSStefan Weilif test "$vte" != "no"; then 2378bbbf9bfbSStefan Weil if test "$gtkabi" = "3.0"; then 2379528de90aSDaniel P. Berrange vtepackage="vte-2.90" 2380528de90aSDaniel P. Berrange vteversion="0.32.0" 2381528de90aSDaniel P. Berrange else 2382528de90aSDaniel P. Berrange vtepackage="vte" 2383528de90aSDaniel P. Berrange vteversion="0.24.0" 2384528de90aSDaniel P. Berrange fi 2385bbbf9bfbSStefan Weil if $pkg_config --exists "$vtepackage >= $vteversion"; then 2386ca871ec8SStefan Weil vte_cflags=`$pkg_config --cflags $vtepackage` 2387ca871ec8SStefan Weil vte_libs=`$pkg_config --libs $vtepackage` 2388bbbf9bfbSStefan Weil libs_softmmu="$vte_libs $libs_softmmu" 2389bbbf9bfbSStefan Weil vte="yes" 2390bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 23919e04c683SStefan Weil if test "$gtkabi" = "3.0"; then 23929e04c683SStefan Weil feature_not_found "vte" "Install libvte-2.90 devel" 23939e04c683SStefan Weil else 23949e04c683SStefan Weil feature_not_found "vte" "Install libvte devel" 23959e04c683SStefan Weil fi 2396bbbf9bfbSStefan Weil else 2397bbbf9bfbSStefan Weil vte="no" 2398a4ccabcfSAnthony Liguori fi 2399a4ccabcfSAnthony Liguorifi 2400a4ccabcfSAnthony Liguori 2401a4ccabcfSAnthony Liguori########################################## 240211d9f695Sbellard# SDL probe 240311d9f695Sbellard 24043ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config). Try 24053ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 240647c03744SDave Airlie 240747c03744SDave Airlieif test $sdlabi = "2.0"; then 240847c03744SDave Airlie sdl_config=$sdl2_config 240947c03744SDave Airlie sdlname=sdl2 241047c03744SDave Airlie sdlconfigname=sdl2_config 241147c03744SDave Airlieelse 241247c03744SDave Airlie sdlname=sdl 241347c03744SDave Airlie sdlconfigname=sdl_config 24143ec87ffeSPaolo Bonzinifi 24153ec87ffeSPaolo Bonzini 241647c03744SDave Airlieif test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then 241747c03744SDave Airlie sdl_config=$sdlconfigname 241847c03744SDave Airliefi 241947c03744SDave Airlie 242047c03744SDave Airlieif $pkg_config $sdlname --exists; then 242147c03744SDave Airlie sdlconfig="$pkg_config $sdlname" 2422fec0e3e8SStefan Weil _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 24233ec87ffeSPaolo Bonzinielif has ${sdl_config}; then 24243ec87ffeSPaolo Bonzini sdlconfig="$sdl_config" 24259316f803SPaolo Bonzini _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 2426a0dfd8a4SLoïc Minierelse 2427a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 242821684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2429a0dfd8a4SLoïc Minier fi 2430a0dfd8a4SLoïc Minier sdl=no 24319316f803SPaolo Bonzinifi 243229e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 24333ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 24343ec87ffeSPaolo Bonzinifi 243511d9f695Sbellard 24369316f803SPaolo Bonzinisdl_too_old=no 2437c4198157SJuan Quintelaif test "$sdl" != "no" ; then 243811d9f695Sbellard cat > $TMPC << EOF 243911d9f695Sbellard#include <SDL.h> 244011d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 244111d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 244211d9f695SbellardEOF 24439316f803SPaolo Bonzini sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 244474f42e18STeLeMan if test "$static" = "yes" ; then 244574f42e18STeLeMan sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 244674f42e18STeLeMan else 24479316f803SPaolo Bonzini sdl_libs=`$sdlconfig --libs 2> /dev/null` 244874f42e18STeLeMan fi 244952166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 245011d9f695Sbellard if test "$_sdlversion" -lt 121 ; then 245111d9f695Sbellard sdl_too_old=yes 245211d9f695Sbellard else 245311d9f695Sbellard sdl=yes 245411d9f695Sbellard fi 24557c1f25b4Sbellard 245667c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 24571ac88f28SJuan Quintela if test "$sdl" = "yes" -a "$static" = "yes" ; then 245867c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 2459f8aa6c7bSStefan Weil sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 2460f8aa6c7bSStefan Weil sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 246111d9f695Sbellard fi 246252166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 24631ac88f28SJuan Quintela : 24641ac88f28SJuan Quintela else 24651ac88f28SJuan Quintela sdl=no 24667c1f25b4Sbellard fi 24677c1f25b4Sbellard fi # static link 2468c4198157SJuan Quintela else # sdl not found 2469c4198157SJuan Quintela if test "$sdl" = "yes" ; then 247021684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 2471c4198157SJuan Quintela fi 2472c4198157SJuan Quintela sdl=no 24737c1f25b4Sbellard fi # sdl compile test 2474fd677642Sthsfi 247511d9f695Sbellard 24765368a422Saliguoriif test "$sdl" = "yes" ; then 24775368a422Saliguori cat > $TMPC <<EOF 24785368a422Saliguori#include <SDL.h> 24795368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 24805368a422Saliguori#include <X11/XKBlib.h> 24815368a422Saliguori#else 24825368a422Saliguori#error No x11 support 24835368a422Saliguori#endif 24845368a422Saliguoriint main(void) { return 0; } 24855368a422SaliguoriEOF 2486f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 2487f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 2488f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 24895368a422Saliguori fi 24900705667eSJuan Quintela libs_softmmu="$sdl_libs $libs_softmmu" 24915368a422Saliguorifi 24925368a422Saliguori 24938f28f3fbSths########################################## 24942da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 24952da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 24962da776dbSMichael R. Hines cat > $TMPC <<EOF 24972da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 24982da776dbSMichael R. Hinesint main(void) { return 0; } 24992da776dbSMichael R. HinesEOF 25002da776dbSMichael R. Hines rdma_libs="-lrdmacm -libverbs" 25012da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 25022da776dbSMichael R. Hines rdma="yes" 25032da776dbSMichael R. Hines libs_softmmu="$libs_softmmu $rdma_libs" 25042da776dbSMichael R. Hines else 25052da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 25062da776dbSMichael R. Hines error_exit \ 25072da776dbSMichael R. Hines " OpenFabrics librdmacm/libibverbs not present." \ 25082da776dbSMichael R. Hines " Your options:" \ 25092da776dbSMichael R. Hines " (1) Fast: Install infiniband packages from your distro." \ 25102da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 25112da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 25122da776dbSMichael R. Hines fi 25132da776dbSMichael R. Hines rdma="no" 25142da776dbSMichael R. Hines fi 25152da776dbSMichael R. Hinesfi 25162da776dbSMichael R. Hines 251795c6bff3SBenoît Canet 251895c6bff3SBenoît Canet########################################## 25192f9606b3Saliguori# VNC SASL detection 2520821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 25212f9606b3Saliguori cat > $TMPC <<EOF 25222f9606b3Saliguori#include <sasl/sasl.h> 25232f9606b3Saliguori#include <stdio.h> 25242f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 25252f9606b3SaliguoriEOF 25262f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 25272f9606b3Saliguori vnc_sasl_cflags="" 25282f9606b3Saliguori vnc_sasl_libs="-lsasl2" 252952166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2530ea784e3bSJuan Quintela vnc_sasl=yes 2531fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2532ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 25332f9606b3Saliguori else 2534ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 253521684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2536ea784e3bSJuan Quintela fi 2537ea784e3bSJuan Quintela vnc_sasl=no 25382f9606b3Saliguori fi 25392f9606b3Saliguorifi 25402f9606b3Saliguori 25412f9606b3Saliguori########################################## 25422f6f5c7aSCorentin Chary# VNC JPEG detection 2543821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 25442f6f5c7aSCorentin Charycat > $TMPC <<EOF 25452f6f5c7aSCorentin Chary#include <stdio.h> 25462f6f5c7aSCorentin Chary#include <jpeglib.h> 25472f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 25482f6f5c7aSCorentin CharyEOF 25492f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 25502f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 25512f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 25522f6f5c7aSCorentin Chary vnc_jpeg=yes 25532f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2554ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 25552f6f5c7aSCorentin Chary else 25562f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 255721684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 25582f6f5c7aSCorentin Chary fi 25592f6f5c7aSCorentin Chary vnc_jpeg=no 25602f6f5c7aSCorentin Chary fi 25612f6f5c7aSCorentin Charyfi 25622f6f5c7aSCorentin Chary 25632f6f5c7aSCorentin Chary########################################## 2564efe556adSCorentin Chary# VNC PNG detection 2565821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2566efe556adSCorentin Charycat > $TMPC <<EOF 2567efe556adSCorentin Chary//#include <stdio.h> 2568efe556adSCorentin Chary#include <png.h> 2569832ce9c2SScott Wood#include <stddef.h> 2570efe556adSCorentin Charyint main(void) { 2571efe556adSCorentin Chary png_structp png_ptr; 2572efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 25737edc3fedSPeter Maydell return png_ptr != 0; 2574efe556adSCorentin Chary} 2575efe556adSCorentin CharyEOF 257665d5d3f9SStefan Weil if $pkg_config libpng --exists; then 2577ca871ec8SStefan Weil vnc_png_cflags=`$pkg_config libpng --cflags` 2578ca871ec8SStefan Weil vnc_png_libs=`$pkg_config libpng --libs` 25799af8025eSBrad else 2580efe556adSCorentin Chary vnc_png_cflags="" 2581efe556adSCorentin Chary vnc_png_libs="-lpng" 25829af8025eSBrad fi 2583efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2584efe556adSCorentin Chary vnc_png=yes 2585efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 25869af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2587efe556adSCorentin Chary else 2588efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 258921684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 2590efe556adSCorentin Chary fi 2591efe556adSCorentin Chary vnc_png=no 2592efe556adSCorentin Chary fi 2593efe556adSCorentin Charyfi 2594efe556adSCorentin Chary 2595efe556adSCorentin Chary########################################## 259676655d6dSaliguori# fnmatch() probe, used for ACL routines 259776655d6dSaliguorifnmatch="no" 259876655d6dSaliguoricat > $TMPC << EOF 259976655d6dSaliguori#include <fnmatch.h> 260076655d6dSaliguoriint main(void) 260176655d6dSaliguori{ 260276655d6dSaliguori fnmatch("foo", "foo", 0); 260376655d6dSaliguori return 0; 260476655d6dSaliguori} 260576655d6dSaliguoriEOF 260652166aa0SJuan Quintelaif compile_prog "" "" ; then 260776655d6dSaliguori fnmatch="yes" 260876655d6dSaliguorifi 260976655d6dSaliguori 261076655d6dSaliguori########################################## 2611ee682d27SStefan Weil# uuid_generate() probe, used for vdi block driver 26122d16c8e9SPeter Maydell# Note that on some systems (notably MacOSX) no extra library 26132d16c8e9SPeter Maydell# need be linked to get the uuid functions. 2614ee682d27SStefan Weilif test "$uuid" != "no" ; then 2615ee682d27SStefan Weil uuid_libs="-luuid" 2616ee682d27SStefan Weil cat > $TMPC << EOF 2617ee682d27SStefan Weil#include <uuid/uuid.h> 2618ee682d27SStefan Weilint main(void) 2619ee682d27SStefan Weil{ 2620ee682d27SStefan Weil uuid_t my_uuid; 2621ee682d27SStefan Weil uuid_generate(my_uuid); 2622ee682d27SStefan Weil return 0; 2623ee682d27SStefan Weil} 2624ee682d27SStefan WeilEOF 26252d16c8e9SPeter Maydell if compile_prog "" "" ; then 26262d16c8e9SPeter Maydell uuid="yes" 26272d16c8e9SPeter Maydell elif compile_prog "" "$uuid_libs" ; then 2628ee682d27SStefan Weil uuid="yes" 2629ee682d27SStefan Weil libs_softmmu="$uuid_libs $libs_softmmu" 2630ee682d27SStefan Weil libs_tools="$uuid_libs $libs_tools" 2631ee682d27SStefan Weil else 2632ee682d27SStefan Weil if test "$uuid" = "yes" ; then 263321684af0SStewart Smith feature_not_found "uuid" "Install libuuid devel" 2634ee682d27SStefan Weil fi 2635ee682d27SStefan Weil uuid=no 2636ee682d27SStefan Weil fi 2637ee682d27SStefan Weilfi 2638ee682d27SStefan Weil 26394f18b782SJeff Codyif test "$vhdx" = "yes" ; then 26404f18b782SJeff Cody if test "$uuid" = "no" ; then 26414f18b782SJeff Cody error_exit "uuid required for VHDX support" 26424f18b782SJeff Cody fi 26434f18b782SJeff Codyelif test "$vhdx" != "no" ; then 26444f18b782SJeff Cody if test "$uuid" = "yes" ; then 26454f18b782SJeff Cody vhdx=yes 26464f18b782SJeff Cody else 26474f18b782SJeff Cody vhdx=no 26484f18b782SJeff Cody fi 26494f18b782SJeff Codyfi 26504f18b782SJeff Cody 2651ee682d27SStefan Weil########################################## 2652dce512deSChristoph Hellwig# xfsctl() probe, used for raw-posix 2653dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 2654dce512deSChristoph Hellwig cat > $TMPC << EOF 2655ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 2656dce512deSChristoph Hellwig#include <xfs/xfs.h> 2657dce512deSChristoph Hellwigint main(void) 2658dce512deSChristoph Hellwig{ 2659dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 2660dce512deSChristoph Hellwig return 0; 2661dce512deSChristoph Hellwig} 2662dce512deSChristoph HellwigEOF 2663dce512deSChristoph Hellwig if compile_prog "" "" ; then 2664dce512deSChristoph Hellwig xfs="yes" 2665dce512deSChristoph Hellwig else 2666dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 266721684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 2668dce512deSChristoph Hellwig fi 2669dce512deSChristoph Hellwig xfs=no 2670dce512deSChristoph Hellwig fi 2671dce512deSChristoph Hellwigfi 2672dce512deSChristoph Hellwig 2673dce512deSChristoph Hellwig########################################## 26748a16d273Sths# vde libraries probe 2675dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 26764baae0acSJuan Quintela vde_libs="-lvdeplug" 26778a16d273Sths cat > $TMPC << EOF 26788a16d273Sths#include <libvdeplug.h> 26794a7f0e06Spbrookint main(void) 26804a7f0e06Spbrook{ 26814a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 2682fea08e08SPeter Maydell char s[] = ""; 2683fea08e08SPeter Maydell vde_open(s, s, &a); 26844a7f0e06Spbrook return 0; 26854a7f0e06Spbrook} 26868a16d273SthsEOF 268752166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 26884baae0acSJuan Quintela vde=yes 26898e02e54cSJuan Quintela libs_softmmu="$vde_libs $libs_softmmu" 26908e02e54cSJuan Quintela libs_tools="$vde_libs $libs_tools" 2691dfb278bdSJuan Quintela else 2692dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 269321684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 2694dfb278bdSJuan Quintela fi 2695dfb278bdSJuan Quintela vde=no 26968a16d273Sths fi 26978a16d273Sthsfi 26988a16d273Sths 26998a16d273Sths########################################## 27000a985b37SVincenzo Maffione# netmap support probe 27010a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 27020a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 27030a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 27040a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 27050a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 270658952137SVincenzo Maffioneif test "$netmap" != "no" ; then 270758952137SVincenzo Maffione cat > $TMPC << EOF 270858952137SVincenzo Maffione#include <inttypes.h> 270958952137SVincenzo Maffione#include <net/if.h> 271058952137SVincenzo Maffione#include <net/netmap.h> 271158952137SVincenzo Maffione#include <net/netmap_user.h> 27120a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 27130a985b37SVincenzo Maffione#error 27140a985b37SVincenzo Maffione#endif 271558952137SVincenzo Maffioneint main(void) { return 0; } 271658952137SVincenzo MaffioneEOF 271758952137SVincenzo Maffione if compile_prog "" "" ; then 271858952137SVincenzo Maffione netmap=yes 271958952137SVincenzo Maffione else 272058952137SVincenzo Maffione if test "$netmap" = "yes" ; then 272158952137SVincenzo Maffione feature_not_found "netmap" 272258952137SVincenzo Maffione fi 272358952137SVincenzo Maffione netmap=no 272458952137SVincenzo Maffione fi 272558952137SVincenzo Maffionefi 272658952137SVincenzo Maffione 272758952137SVincenzo Maffione########################################## 272847e98658SCorey Bryant# libcap-ng library probe 272947e98658SCorey Bryantif test "$cap_ng" != "no" ; then 273047e98658SCorey Bryant cap_libs="-lcap-ng" 273147e98658SCorey Bryant cat > $TMPC << EOF 273247e98658SCorey Bryant#include <cap-ng.h> 273347e98658SCorey Bryantint main(void) 273447e98658SCorey Bryant{ 273547e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 273647e98658SCorey Bryant return 0; 273747e98658SCorey Bryant} 273847e98658SCorey BryantEOF 273947e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 274047e98658SCorey Bryant cap_ng=yes 274147e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 274247e98658SCorey Bryant else 274347e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 274421684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 274547e98658SCorey Bryant fi 274647e98658SCorey Bryant cap_ng=no 274747e98658SCorey Bryant fi 274847e98658SCorey Bryantfi 274947e98658SCorey Bryant 275047e98658SCorey Bryant########################################## 2751c2de5c91Smalc# Sound support libraries probe 27528f28f3fbSths 2753c2de5c91Smalcaudio_drv_probe() 2754c2de5c91Smalc{ 2755c2de5c91Smalc drv=$1 2756c2de5c91Smalc hdr=$2 2757c2de5c91Smalc lib=$3 2758c2de5c91Smalc exp=$4 2759c2de5c91Smalc cfl=$5 27608f28f3fbSths cat > $TMPC << EOF 2761c2de5c91Smalc#include <$hdr> 2762c2de5c91Smalcint main(void) { $exp } 27638f28f3fbSthsEOF 276452166aa0SJuan Quintela if compile_prog "$cfl" "$lib" ; then 27658f28f3fbSths : 27668f28f3fbSths else 276776ad07a4SPeter Maydell error_exit "$drv check failed" \ 276876ad07a4SPeter Maydell "Make sure to have the $drv libs and headers installed." 27698f28f3fbSths fi 2770c2de5c91Smalc} 2771c2de5c91Smalc 27722fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 2773c2de5c91Smalcfor drv in $audio_drv_list; do 2774c2de5c91Smalc case $drv in 2775c2de5c91Smalc alsa) 2776c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 2777e35bcb0cSStefan Weil "return snd_pcm_close((snd_pcm_t *)0);" 2778a4bf6780SJuan Quintela libs_softmmu="-lasound $libs_softmmu" 2779c2de5c91Smalc ;; 2780c2de5c91Smalc 2781b8e59f18Smalc pa) 2782a394aed2SMarc-André Lureau audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ 2783a394aed2SMarc-André Lureau "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" 2784a394aed2SMarc-André Lureau libs_softmmu="-lpulse $libs_softmmu" 278567f86e8eSJuan Quintela audio_pt_int="yes" 2786b8e59f18Smalc ;; 2787b8e59f18Smalc 2788997e690aSJuan Quintela coreaudio) 2789997e690aSJuan Quintela libs_softmmu="-framework CoreAudio $libs_softmmu" 2790997e690aSJuan Quintela ;; 2791997e690aSJuan Quintela 2792a4bf6780SJuan Quintela dsound) 2793a4bf6780SJuan Quintela libs_softmmu="-lole32 -ldxguid $libs_softmmu" 2794d5631638Smalc audio_win_int="yes" 2795a4bf6780SJuan Quintela ;; 2796a4bf6780SJuan Quintela 2797a4bf6780SJuan Quintela oss) 2798a4bf6780SJuan Quintela libs_softmmu="$oss_lib $libs_softmmu" 2799a4bf6780SJuan Quintela ;; 2800a4bf6780SJuan Quintela 2801a4bf6780SJuan Quintela sdl|wav) 28022f6a1ab0Sblueswir1 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 28032f6a1ab0Sblueswir1 ;; 28042f6a1ab0Sblueswir1 2805e4c63a6aSmalc *) 28061c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 280776ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 280876ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 2809e4c63a6aSmalc } 2810e4c63a6aSmalc ;; 2811c2de5c91Smalc esac 2812c2de5c91Smalcdone 28138f28f3fbSths 28144d3b6f6eSbalrog########################################## 28152e4d9fb1Saurel32# BrlAPI probe 28162e4d9fb1Saurel32 28174ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 2818eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 28192e4d9fb1Saurel32 cat > $TMPC << EOF 28202e4d9fb1Saurel32#include <brlapi.h> 2821832ce9c2SScott Wood#include <stddef.h> 28222e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 28232e4d9fb1Saurel32EOF 282452166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 28252e4d9fb1Saurel32 brlapi=yes 2826264606b3SJuan Quintela libs_softmmu="$brlapi_libs $libs_softmmu" 28274ffcedb6SJuan Quintela else 28284ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 282921684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 28304ffcedb6SJuan Quintela fi 28314ffcedb6SJuan Quintela brlapi=no 2832eb82284fSJuan Quintela fi 2833eb82284fSJuan Quintelafi 28342e4d9fb1Saurel32 28352e4d9fb1Saurel32########################################## 28364d3b6f6eSbalrog# curses probe 2837a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 2838e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 2839*ae629634SStefan Weil curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 2840e095e2f3SStefan Weil else 2841cfeda5f4SEd Maste curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses" 2842e095e2f3SStefan Weil fi 2843c584a6d0SJuan Quintela curses_found=no 28444d3b6f6eSbalrog cat > $TMPC << EOF 28454d3b6f6eSbalrog#include <curses.h> 2846ef9a2524SStefan Weilint main(void) { 2847ef9a2524SStefan Weil const char *s = curses_version(); 2848ef9a2524SStefan Weil resize_term(0, 0); 2849ef9a2524SStefan Weil return s != 0; 2850ef9a2524SStefan Weil} 28514d3b6f6eSbalrogEOF 2852ecbe251fSVadim Evard IFS=: 28534f78ef9aSJuan Quintela for curses_lib in $curses_list; do 2854ecbe251fSVadim Evard unset IFS 28554f78ef9aSJuan Quintela if compile_prog "" "$curses_lib" ; then 2856c584a6d0SJuan Quintela curses_found=yes 28574f78ef9aSJuan Quintela libs_softmmu="$curses_lib $libs_softmmu" 28584f78ef9aSJuan Quintela break 28594d3b6f6eSbalrog fi 28604f78ef9aSJuan Quintela done 2861ecbe251fSVadim Evard unset IFS 2862c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 2863c584a6d0SJuan Quintela curses=yes 2864c584a6d0SJuan Quintela else 2865c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 286621684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 2867c584a6d0SJuan Quintela fi 2868c584a6d0SJuan Quintela curses=no 2869c584a6d0SJuan Quintela fi 28704f78ef9aSJuan Quintelafi 28714d3b6f6eSbalrog 2872414f0dabSblueswir1########################################## 2873769ce76dSAlexander Graf# curl probe 2874a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 287565d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 2876a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 28774e2b0658SPaolo Bonzini else 28784e2b0658SPaolo Bonzini curlconfig=curl-config 28794e2b0658SPaolo Bonzini fi 2880769ce76dSAlexander Graf cat > $TMPC << EOF 2881769ce76dSAlexander Graf#include <curl/curl.h> 28820b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2883769ce76dSAlexander GrafEOF 28844e2b0658SPaolo Bonzini curl_cflags=`$curlconfig --cflags 2>/dev/null` 28854e2b0658SPaolo Bonzini curl_libs=`$curlconfig --libs 2>/dev/null` 2886b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 2887769ce76dSAlexander Graf curl=yes 2888788c8196SJuan Quintela else 2889788c8196SJuan Quintela if test "$curl" = "yes" ; then 289021684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 2891788c8196SJuan Quintela fi 2892788c8196SJuan Quintela curl=no 2893769ce76dSAlexander Graf fi 2894769ce76dSAlexander Graffi # test "$curl" 2895769ce76dSAlexander Graf 2896769ce76dSAlexander Graf########################################## 2897fb599c9aSbalrog# bluez support probe 2898a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then 2899e820e3f4Sbalrog cat > $TMPC << EOF 2900e820e3f4Sbalrog#include <bluetooth/bluetooth.h> 2901e820e3f4Sbalrogint main(void) { return bt_error(0); } 2902e820e3f4SbalrogEOF 2903a8bd70adSPaolo Bonzini bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 2904a8bd70adSPaolo Bonzini bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 290552166aa0SJuan Quintela if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2906a20a6f46SJuan Quintela bluez=yes 2907e482d56aSJuan Quintela libs_softmmu="$bluez_libs $libs_softmmu" 2908e820e3f4Sbalrog else 2909a20a6f46SJuan Quintela if test "$bluez" = "yes" ; then 291021684af0SStewart Smith feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 2911a20a6f46SJuan Quintela fi 2912e820e3f4Sbalrog bluez="no" 2913e820e3f4Sbalrog fi 2914fb599c9aSbalrogfi 2915fb599c9aSbalrog 2916fb599c9aSbalrog########################################## 2917e18df141SAnthony Liguori# glib support probe 2918a52d28afSPaolo Bonzini 2919f40685c6SJohn Snowglib_req_ver=2.22 2920aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 2921aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 2922aa0d1f44SPaolo Bonzini glib_modules="$glib_modules gmodule-2.0" 2923aa0d1f44SPaolo Bonzinifi 2924e26110cfSFam Zheng 2925aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 2926e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 2927e26110cfSFam Zheng glib_cflags=`$pkg_config --cflags $i` 2928e26110cfSFam Zheng glib_libs=`$pkg_config --libs $i` 2929ba1183daSFam Zheng CFLAGS="$glib_cflags $CFLAGS" 293014015304SAnthony Liguori LIBS="$glib_libs $LIBS" 2931957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 2932e18df141SAnthony Liguori else 2933e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 2934e26110cfSFam Zheng fi 2935e26110cfSFam Zhengdone 2936e26110cfSFam Zheng 2937977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the 2938977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches 2939977a82abSDaniel P. Berrange# problems on multi-arch where people try to build 2940977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers 2941977a82abSDaniel P. Berrangecat > $TMPC <<EOF 2942977a82abSDaniel P. Berrange#include <glib.h> 2943977a82abSDaniel P. Berrange#include <unistd.h> 2944977a82abSDaniel P. Berrange 2945977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \ 2946977a82abSDaniel P. Berrange typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 2947977a82abSDaniel P. Berrange 2948977a82abSDaniel P. Berrangeint main(void) { 2949977a82abSDaniel P. Berrange QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 2950977a82abSDaniel P. Berrange return 0; 2951977a82abSDaniel P. Berrange} 2952977a82abSDaniel P. BerrangeEOF 2953977a82abSDaniel P. Berrange 2954977a82abSDaniel P. Berrangeif ! compile_prog "-Werror $CFLAGS" "$LIBS" ; then 2955977a82abSDaniel P. Berrange error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 2956977a82abSDaniel P. Berrange "You probably need to set PKG_CONFIG_LIBDIR"\ 2957977a82abSDaniel P. Berrange "to point to the right pkg-config files for your"\ 2958977a82abSDaniel P. Berrange "build target" 2959977a82abSDaniel P. Berrangefi 2960977a82abSDaniel P. Berrange 29619d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests. 29629d41401bSMichael S. Tsirkinglib_subprocess=yes 29639d41401bSMichael S. Tsirkinif ! $pkg_config --atleast-version=2.38 glib-2.0; then 29649d41401bSMichael S. Tsirkin glib_subprocess=no 29659d41401bSMichael S. Tsirkinfi 29669d41401bSMichael S. Tsirkin 2967bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 2968bbbf2e04SJohn Snowcat > $TMPC << EOF 2969bbbf2e04SJohn Snow#include <glib.h> 2970bbbf2e04SJohn Snowint main(void) { return 0; } 2971bbbf2e04SJohn SnowEOF 2972bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 2973bbbf2e04SJohn Snow if cc_has_warning_flag "-Wno-unknown-attributes"; then 2974bbbf2e04SJohn Snow glib_cflags="-Wno-unknown-attributes $glib_cflags" 2975bbbf2e04SJohn Snow CFLAGS="-Wno-unknown-attributes $CFLAGS" 2976bbbf2e04SJohn Snow fi 2977bbbf2e04SJohn Snowfi 2978bbbf2e04SJohn Snow 2979e26110cfSFam Zheng########################################## 2980e26110cfSFam Zheng# SHA command probe for modules 2981e26110cfSFam Zhengif test "$modules" = yes; then 2982e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 2983e26110cfSFam Zheng for c in $shacmd_probe; do 29848ccefb91SFam Zheng if has $c; then 2985e26110cfSFam Zheng shacmd="$c" 2986e26110cfSFam Zheng break 2987e26110cfSFam Zheng fi 2988e26110cfSFam Zheng done 2989e26110cfSFam Zheng if test "$shacmd" = ""; then 2990e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 2991e26110cfSFam Zheng fi 2992e18df141SAnthony Liguorifi 2993e18df141SAnthony Liguori 2994e18df141SAnthony Liguori########################################## 2995e2134eb9SGerd Hoffmann# pixman support probe 2996e2134eb9SGerd Hoffmann 2997e2134eb9SGerd Hoffmannif test "$pixman" = ""; then 299874880fe2SRobert Schiele if test "$want_tools" = "no" -a "$softmmu" = "no"; then 299974880fe2SRobert Schiele pixman="none" 3000236f282cSHu Tao elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 3001e2134eb9SGerd Hoffmann pixman="system" 3002e2134eb9SGerd Hoffmann else 3003e2134eb9SGerd Hoffmann pixman="internal" 3004e2134eb9SGerd Hoffmann fi 3005e2134eb9SGerd Hoffmannfi 300674880fe2SRobert Schieleif test "$pixman" = "none"; then 300774880fe2SRobert Schiele if test "$want_tools" != "no" -o "$softmmu" != "no"; then 300876ad07a4SPeter Maydell error_exit "pixman disabled but system emulation or tools build" \ 300976ad07a4SPeter Maydell "enabled. You can turn off pixman only if you also" \ 301076ad07a4SPeter Maydell "disable all system emulation targets and the tools" \ 301176ad07a4SPeter Maydell "build with '--disable-tools --disable-system'." 301274880fe2SRobert Schiele fi 301374880fe2SRobert Schiele pixman_cflags= 301474880fe2SRobert Schiele pixman_libs= 301574880fe2SRobert Schieleelif test "$pixman" = "system"; then 3016236f282cSHu Tao # pixman version has been checked above 3017ca871ec8SStefan Weil pixman_cflags=`$pkg_config --cflags pixman-1` 3018ca871ec8SStefan Weil pixman_libs=`$pkg_config --libs pixman-1` 3019e2134eb9SGerd Hoffmannelse 3020e2134eb9SGerd Hoffmann if test ! -d ${source_path}/pixman/pixman; then 3021236f282cSHu Tao error_exit "pixman >= 0.21.8 not present. Your options:" \ 302276ad07a4SPeter Maydell " (1) Preferred: Install the pixman devel package (any recent" \ 302376ad07a4SPeter Maydell " distro should have packages as Xorg needs pixman too)." \ 302476ad07a4SPeter Maydell " (2) Fetch the pixman submodule, using:" \ 302576ad07a4SPeter Maydell " git submodule update --init pixman" 3026e2134eb9SGerd Hoffmann fi 30275ca9388aSGerd Hoffmann mkdir -p pixman/pixman 30285ca9388aSGerd Hoffmann pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" 30295ca9388aSGerd Hoffmann pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" 3030e2134eb9SGerd Hoffmannfi 3031e2134eb9SGerd Hoffmann 3032e2134eb9SGerd Hoffmann########################################## 303317bff52bSM. Mohan Kumar# libcap probe 303417bff52bSM. Mohan Kumar 303517bff52bSM. Mohan Kumarif test "$cap" != "no" ; then 303617bff52bSM. Mohan Kumar cat > $TMPC <<EOF 303717bff52bSM. Mohan Kumar#include <stdio.h> 303817bff52bSM. Mohan Kumar#include <sys/capability.h> 3039cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 304017bff52bSM. Mohan KumarEOF 304117bff52bSM. Mohan Kumar if compile_prog "" "-lcap" ; then 304217bff52bSM. Mohan Kumar cap=yes 304317bff52bSM. Mohan Kumar else 304417bff52bSM. Mohan Kumar cap=no 304517bff52bSM. Mohan Kumar fi 304617bff52bSM. Mohan Kumarfi 304717bff52bSM. Mohan Kumar 304817bff52bSM. Mohan Kumar########################################## 3049e5d355d1Saliguori# pthread probe 30504b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 30513c529d93Saliguori 3052e5d355d1Saliguoripthread=no 3053414f0dabSblueswir1cat > $TMPC << EOF 30543c529d93Saliguori#include <pthread.h> 30557a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 30567a42bbe4SStefan Weilint main(void) { 30577a42bbe4SStefan Weil pthread_t thread; 30587a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 30597a42bbe4SStefan Weil return 0; 30607a42bbe4SStefan Weil} 3061414f0dabSblueswir1EOF 3062bd00d539SAndreas Färberif compile_prog "" "" ; then 3063bd00d539SAndreas Färber pthread=yes 3064bd00d539SAndreas Färberelse 3065de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 306652166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 3067e5d355d1Saliguori pthread=yes 3068e3c56761SPeter Portante found=no 3069e3c56761SPeter Portante for lib_entry in $LIBS; do 3070e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 3071e3c56761SPeter Portante found=yes 3072e3c56761SPeter Portante break 3073e3c56761SPeter Portante fi 3074e3c56761SPeter Portante done 3075e3c56761SPeter Portante if test "$found" = "no"; then 30765572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 3077e3c56761SPeter Portante fi 3078de65fe0fSSebastian Herbszt break 3079414f0dabSblueswir1 fi 3080de65fe0fSSebastian Herbszt done 3081bd00d539SAndreas Färberfi 3082414f0dabSblueswir1 30834617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then 308476ad07a4SPeter Maydell error_exit "pthread check failed" \ 308576ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 3086e5d355d1Saliguorifi 3087e5d355d1Saliguori 30885c312079SDr. David Alan Gilbert# check for pthread_setname_np 30895c312079SDr. David Alan Gilbertpthread_setname_np=no 30905c312079SDr. David Alan Gilbertcat > $TMPC << EOF 30915c312079SDr. David Alan Gilbert#include <pthread.h> 30925c312079SDr. David Alan Gilbert 30935c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 30945c312079SDr. David Alan Gilbertint main(void) 30955c312079SDr. David Alan Gilbert{ 30965c312079SDr. David Alan Gilbert pthread_t thread; 30975c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 30985c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 30995c312079SDr. David Alan Gilbert return 0; 31005c312079SDr. David Alan Gilbert} 31015c312079SDr. David Alan GilbertEOF 31025c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 31035c312079SDr. David Alan Gilbert pthread_setname_np=yes 31045c312079SDr. David Alan Gilbertfi 31055c312079SDr. David Alan Gilbert 3106bf9298b9Saliguori########################################## 3107f27aaf4bSChristian Brunner# rbd probe 3108f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 3109f27aaf4bSChristian Brunner cat > $TMPC <<EOF 3110f27aaf4bSChristian Brunner#include <stdio.h> 3111ad32e9c0SJosh Durgin#include <rbd/librbd.h> 3112f27aaf4bSChristian Brunnerint main(void) { 3113ad32e9c0SJosh Durgin rados_t cluster; 3114ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 3115f27aaf4bSChristian Brunner return 0; 3116f27aaf4bSChristian Brunner} 3117f27aaf4bSChristian BrunnerEOF 3118ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 3119f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 3120f27aaf4bSChristian Brunner rbd=yes 3121f27aaf4bSChristian Brunner else 3122f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 312321684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 3124f27aaf4bSChristian Brunner fi 3125f27aaf4bSChristian Brunner rbd=no 3126f27aaf4bSChristian Brunner fi 3127f27aaf4bSChristian Brunnerfi 3128f27aaf4bSChristian Brunner 3129f27aaf4bSChristian Brunner########################################## 31300a12ec87SRichard W.M. Jones# libssh2 probe 31314fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8 31320a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then 313365d5d3f9SStefan Weil if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 31340a12ec87SRichard W.M. Jones libssh2_cflags=`$pkg_config libssh2 --cflags` 31350a12ec87SRichard W.M. Jones libssh2_libs=`$pkg_config libssh2 --libs` 31360a12ec87SRichard W.M. Jones libssh2=yes 31370a12ec87SRichard W.M. Jones else 31380a12ec87SRichard W.M. Jones if test "$libssh2" = "yes" ; then 31394fc16838SRichard W.M. Jones error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 31400a12ec87SRichard W.M. Jones fi 31410a12ec87SRichard W.M. Jones libssh2=no 31420a12ec87SRichard W.M. Jones fi 31430a12ec87SRichard W.M. Jonesfi 31440a12ec87SRichard W.M. Jones 31450a12ec87SRichard W.M. Jones########################################## 31469a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe 31479a2d462eSRichard W.M. Jones 31489a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then 31499a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 31509a2d462eSRichard W.M. Jones#include <stdio.h> 31519a2d462eSRichard W.M. Jones#include <libssh2.h> 31529a2d462eSRichard W.M. Jones#include <libssh2_sftp.h> 31539a2d462eSRichard W.M. Jonesint main(void) { 31549a2d462eSRichard W.M. Jones LIBSSH2_SESSION *session; 31559a2d462eSRichard W.M. Jones LIBSSH2_SFTP *sftp; 31569a2d462eSRichard W.M. Jones LIBSSH2_SFTP_HANDLE *sftp_handle; 31579a2d462eSRichard W.M. Jones session = libssh2_session_init (); 31589a2d462eSRichard W.M. Jones sftp = libssh2_sftp_init (session); 31599a2d462eSRichard W.M. Jones sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 31609a2d462eSRichard W.M. Jones libssh2_sftp_fsync (sftp_handle); 31619a2d462eSRichard W.M. Jones return 0; 31629a2d462eSRichard W.M. Jones} 31639a2d462eSRichard W.M. JonesEOF 31649a2d462eSRichard W.M. Jones # libssh2_cflags/libssh2_libs defined in previous test. 31659a2d462eSRichard W.M. Jones if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 31669a2d462eSRichard W.M. Jones QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 31679a2d462eSRichard W.M. Jones fi 31689a2d462eSRichard W.M. Jonesfi 31699a2d462eSRichard W.M. Jones 31709a2d462eSRichard W.M. Jones########################################## 31715c6c3a6cSChristoph Hellwig# linux-aio probe 31725c6c3a6cSChristoph Hellwig 31735c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 31745c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 31755c6c3a6cSChristoph Hellwig#include <libaio.h> 31765c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 3177832ce9c2SScott Wood#include <stddef.h> 31785c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 31795c6c3a6cSChristoph HellwigEOF 31805c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 31815c6c3a6cSChristoph Hellwig linux_aio=yes 31825c6c3a6cSChristoph Hellwig else 31835c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 318421684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 31855c6c3a6cSChristoph Hellwig fi 31863cfcae3cSLuiz Capitulino linux_aio=no 31875c6c3a6cSChristoph Hellwig fi 31885c6c3a6cSChristoph Hellwigfi 31895c6c3a6cSChristoph Hellwig 31905c6c3a6cSChristoph Hellwig########################################## 31913b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux 31923b8acc11SPaolo Bonzini 31933b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 31943b8acc11SPaolo Bonzini tpm_passthrough=$tpm 31953b8acc11SPaolo Bonzinielse 31963b8acc11SPaolo Bonzini tpm_passthrough=no 31973b8acc11SPaolo Bonzinifi 31983b8acc11SPaolo Bonzini 31993b8acc11SPaolo Bonzini########################################## 3200758e8e38SVenkateswararao Jujjuri (JV)# attr probe 3201758e8e38SVenkateswararao Jujjuri (JV) 3202758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 3203758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 3204758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 3205758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 3206f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 3207f2338fb4SPavel Borzenkov#include <attr/xattr.h> 3208f2338fb4SPavel Borzenkov#else 32094f26f2b6SAvi Kivity#include <sys/xattr.h> 3210f2338fb4SPavel Borzenkov#endif 3211758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 3212758e8e38SVenkateswararao Jujjuri (JV)EOF 32134f26f2b6SAvi Kivity if compile_prog "" "" ; then 32144f26f2b6SAvi Kivity attr=yes 32154f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 3216f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 3217758e8e38SVenkateswararao Jujjuri (JV) attr=yes 3218758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 32194f26f2b6SAvi Kivity libattr=yes 3220758e8e38SVenkateswararao Jujjuri (JV) else 3221758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 322221684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 3223758e8e38SVenkateswararao Jujjuri (JV) fi 3224758e8e38SVenkateswararao Jujjuri (JV) attr=no 3225758e8e38SVenkateswararao Jujjuri (JV) fi 3226758e8e38SVenkateswararao Jujjuri (JV)fi 3227758e8e38SVenkateswararao Jujjuri (JV) 3228758e8e38SVenkateswararao Jujjuri (JV)########################################## 3229bf9298b9Saliguori# iovec probe 3230bf9298b9Saliguoricat > $TMPC <<EOF 3231db34f0b3Sblueswir1#include <sys/types.h> 3232bf9298b9Saliguori#include <sys/uio.h> 3233db34f0b3Sblueswir1#include <unistd.h> 3234f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 3235bf9298b9SaliguoriEOF 3236bf9298b9Saliguoriiovec=no 323752166aa0SJuan Quintelaif compile_prog "" "" ; then 3238bf9298b9Saliguori iovec=yes 3239bf9298b9Saliguorifi 3240bf9298b9Saliguori 3241f652e6afSaurel32########################################## 3242ceb42de8Saliguori# preadv probe 3243ceb42de8Saliguoricat > $TMPC <<EOF 3244ceb42de8Saliguori#include <sys/types.h> 3245ceb42de8Saliguori#include <sys/uio.h> 3246ceb42de8Saliguori#include <unistd.h> 3247c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 3248ceb42de8SaliguoriEOF 3249ceb42de8Saliguoripreadv=no 325052166aa0SJuan Quintelaif compile_prog "" "" ; then 3251ceb42de8Saliguori preadv=yes 3252ceb42de8Saliguorifi 3253ceb42de8Saliguori 3254ceb42de8Saliguori########################################## 3255f652e6afSaurel32# fdt probe 3256e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 3257e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 3258e169e1e1SPeter Maydellfdt_required=no 3259e169e1e1SPeter Maydellfor target in $target_list; do 3260e169e1e1SPeter Maydell case $target in 32616a49fa95SAlexander Graf aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu) 3262e169e1e1SPeter Maydell fdt_required=yes 3263e169e1e1SPeter Maydell ;; 3264e169e1e1SPeter Maydell esac 3265e169e1e1SPeter Maydelldone 3266e169e1e1SPeter Maydell 3267e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 3268e169e1e1SPeter Maydell if test "$fdt" = "no"; then 3269e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 3270e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 3271e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 3272e169e1e1SPeter Maydell fi 3273e169e1e1SPeter Maydell fdt=yes 3274e169e1e1SPeter Maydellfi 3275e169e1e1SPeter Maydell 32762df87df7SJuan Quintelaif test "$fdt" != "no" ; then 3277b41af4baSJuan Quintela fdt_libs="-lfdt" 327896ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 327931ce0adbSThomas Huth # and test for required functions to make sure we are on a version >= 1.4.0 3280f652e6afSaurel32 cat > $TMPC << EOF 328131ce0adbSThomas Huth#include <libfdt.h> 328296ce6545SPeter Crosthwaite#include <libfdt_env.h> 328331ce0adbSThomas Huthint main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; } 3284f652e6afSaurel32EOF 328552166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 3286a540f158SPeter Crosthwaite # system DTC is good - use it 3287f652e6afSaurel32 fdt=yes 3288a540f158SPeter Crosthwaite elif test -d ${source_path}/dtc/libfdt ; then 3289a540f158SPeter Crosthwaite # have submodule DTC - use it 3290a540f158SPeter Crosthwaite fdt=yes 3291a540f158SPeter Crosthwaite dtc_internal="yes" 3292a540f158SPeter Crosthwaite mkdir -p dtc 3293cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 3294a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 3295a540f158SPeter Crosthwaite symlink "$source_path/dtc/scripts" "dtc/scripts" 32962df87df7SJuan Quintela fi 3297a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 3298a540f158SPeter Crosthwaite fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 3299a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 3300a540f158SPeter Crosthwaite # have neither and want - prompt for system/submodule install 330131ce0adbSThomas Huth error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \ 33023f281822SStewart Smith " (1) Preferred: Install the DTC (libfdt) devel package" \ 3303a540f158SPeter Crosthwaite " (2) Fetch the DTC submodule, using:" \ 3304a540f158SPeter Crosthwaite " git submodule update --init dtc" 3305a540f158SPeter Crosthwaite else 3306a540f158SPeter Crosthwaite # don't have and don't want 3307de3a354aSMichael Walle fdt_libs= 33082df87df7SJuan Quintela fdt=no 3309f652e6afSaurel32 fi 3310f652e6afSaurel32fi 3311f652e6afSaurel32 3312a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 3313a540f158SPeter Crosthwaite 331420ff075bSMichael Walle########################################## 3315fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2) 3316b1546f32SGerd Hoffmann 3317da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 3318014cb152SGerd Hoffmann opengl_pkgs="epoxy libdrm gbm" 3319fb719563SOGAWA Hirofumi if $pkg_config $opengl_pkgs x11; then 3320f676c67eSJeremy White opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags" 3321f676c67eSJeremy White opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs" 3322da076ffeSGerd Hoffmann opengl=yes 3323925a0400SGerd Hoffmann if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 3324925a0400SGerd Hoffmann gtk_gl="yes" 3325925a0400SGerd Hoffmann fi 332620ff075bSMichael Walle else 3327da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 3328dcf30025SGerd Hoffmann feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 332920ff075bSMichael Walle fi 3330f676c67eSJeremy White opengl_cflags="" 3331da076ffeSGerd Hoffmann opengl_libs="" 3332da076ffeSGerd Hoffmann opengl=no 333320ff075bSMichael Walle fi 333420ff075bSMichael Wallefi 333520ff075bSMichael Walle 3336014cb152SGerd Hoffmannif test "$opengl" = "yes"; then 3337014cb152SGerd Hoffmann cat > $TMPC << EOF 3338014cb152SGerd Hoffmann#include <epoxy/egl.h> 3339014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export 3340014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 3341014cb152SGerd Hoffmann#endif 3342014cb152SGerd Hoffmannint main(void) { return 0; } 3343014cb152SGerd HoffmannEOF 3344014cb152SGerd Hoffmann if compile_prog "" "" ; then 3345014cb152SGerd Hoffmann opengl_dmabuf=yes 3346014cb152SGerd Hoffmann fi 3347014cb152SGerd Hoffmannfi 3348c9a12e75SChrysostomos Nanakos 3349c9a12e75SChrysostomos Nanakos########################################## 3350c9a12e75SChrysostomos Nanakos# archipelago probe 3351c9a12e75SChrysostomos Nanakosif test "$archipelago" != "no" ; then 3352c9a12e75SChrysostomos Nanakos cat > $TMPC <<EOF 3353c9a12e75SChrysostomos Nanakos#include <stdio.h> 3354c9a12e75SChrysostomos Nanakos#include <xseg/xseg.h> 3355c9a12e75SChrysostomos Nanakos#include <xseg/protocol.h> 3356c9a12e75SChrysostomos Nanakosint main(void) { 3357c9a12e75SChrysostomos Nanakos xseg_initialize(); 3358c9a12e75SChrysostomos Nanakos return 0; 3359c9a12e75SChrysostomos Nanakos} 3360c9a12e75SChrysostomos NanakosEOF 3361c9a12e75SChrysostomos Nanakos archipelago_libs=-lxseg 3362c9a12e75SChrysostomos Nanakos if compile_prog "" "$archipelago_libs"; then 3363c9a12e75SChrysostomos Nanakos archipelago="yes" 3364c9a12e75SChrysostomos Nanakos libs_tools="$archipelago_libs $libs_tools" 3365c9a12e75SChrysostomos Nanakos libs_softmmu="$archipelago_libs $libs_softmmu" 33666a460ed1SStefan Hajnoczi 33676a460ed1SStefan Hajnoczi echo "WARNING: Please check the licenses of QEMU and libxseg carefully." 33686a460ed1SStefan Hajnoczi echo "GPLv3 versions of libxseg may not be compatible with QEMU's" 33696a460ed1SStefan Hajnoczi echo "license and therefore prevent redistribution." 33706a460ed1SStefan Hajnoczi echo 33716a460ed1SStefan Hajnoczi echo "To disable Archipelago, use --disable-archipelago" 3372c9a12e75SChrysostomos Nanakos else 3373c9a12e75SChrysostomos Nanakos if test "$archipelago" = "yes" ; then 3374c9a12e75SChrysostomos Nanakos feature_not_found "Archipelago backend support" "Install libxseg devel" 3375c9a12e75SChrysostomos Nanakos fi 3376c9a12e75SChrysostomos Nanakos archipelago="no" 3377c9a12e75SChrysostomos Nanakos fi 3378c9a12e75SChrysostomos Nanakosfi 3379c9a12e75SChrysostomos Nanakos 3380c9a12e75SChrysostomos Nanakos 3381eb100396SBharata B Rao########################################## 3382eb100396SBharata B Rao# glusterfs probe 3383eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 338465d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 3385e01bee08SBharata B Rao glusterfs="yes" 3386ca871ec8SStefan Weil glusterfs_cflags=`$pkg_config --cflags glusterfs-api` 3387ca871ec8SStefan Weil glusterfs_libs=`$pkg_config --libs glusterfs-api` 338865d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 33890c14fb47SBharata B Rao glusterfs_discard="yes" 33900c14fb47SBharata B Rao fi 33917c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 33927c815372SBharata B Rao glusterfs_zerofill="yes" 33937c815372SBharata B Rao fi 3394eb100396SBharata B Rao else 3395eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 33968efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 33978efc9363SHu Tao "Install glusterfs-api devel >= 3" 3398eb100396SBharata B Rao fi 3399e01bee08SBharata B Rao glusterfs="no" 3400eb100396SBharata B Rao fi 3401eb100396SBharata B Raofi 3402eb100396SBharata B Rao 340339386ac7Saurel32# Check for inotify functions when we are building linux-user 34043b3f24adSaurel32# emulator. This is done because older glibc versions don't 34053b3f24adSaurel32# have syscall stubs for these implemented. In that case we 34063b3f24adSaurel32# don't provide them even if kernel supports them. 34073b3f24adSaurel32# 34083b3f24adSaurel32inotify=no 34093b3f24adSaurel32cat > $TMPC << EOF 34103b3f24adSaurel32#include <sys/inotify.h> 34113b3f24adSaurel32 34123b3f24adSaurel32int 34133b3f24adSaurel32main(void) 34143b3f24adSaurel32{ 34153b3f24adSaurel32 /* try to start inotify */ 34168690e420Saurel32 return inotify_init(); 34173b3f24adSaurel32} 34183b3f24adSaurel32EOF 341952166aa0SJuan Quintelaif compile_prog "" "" ; then 34203b3f24adSaurel32 inotify=yes 34213b3f24adSaurel32fi 34223b3f24adSaurel32 3423c05c7a73SRiku Voipioinotify1=no 3424c05c7a73SRiku Voipiocat > $TMPC << EOF 3425c05c7a73SRiku Voipio#include <sys/inotify.h> 3426c05c7a73SRiku Voipio 3427c05c7a73SRiku Voipioint 3428c05c7a73SRiku Voipiomain(void) 3429c05c7a73SRiku Voipio{ 3430c05c7a73SRiku Voipio /* try to start inotify */ 3431c05c7a73SRiku Voipio return inotify_init1(0); 3432c05c7a73SRiku Voipio} 3433c05c7a73SRiku VoipioEOF 3434c05c7a73SRiku Voipioif compile_prog "" "" ; then 3435c05c7a73SRiku Voipio inotify1=yes 3436c05c7a73SRiku Voipiofi 3437c05c7a73SRiku Voipio 3438ebc996f3SRiku Voipio# check if utimensat and futimens are supported 3439ebc996f3SRiku Voipioutimens=no 3440ebc996f3SRiku Voipiocat > $TMPC << EOF 3441ebc996f3SRiku Voipio#define _ATFILE_SOURCE 3442ebc996f3SRiku Voipio#include <stddef.h> 3443ebc996f3SRiku Voipio#include <fcntl.h> 34443014ee00SPeter Maydell#include <sys/stat.h> 3445ebc996f3SRiku Voipio 3446ebc996f3SRiku Voipioint main(void) 3447ebc996f3SRiku Voipio{ 3448ebc996f3SRiku Voipio utimensat(AT_FDCWD, "foo", NULL, 0); 3449ebc996f3SRiku Voipio futimens(0, NULL); 3450ebc996f3SRiku Voipio return 0; 3451ebc996f3SRiku Voipio} 3452ebc996f3SRiku VoipioEOF 345352166aa0SJuan Quintelaif compile_prog "" "" ; then 3454ebc996f3SRiku Voipio utimens=yes 3455ebc996f3SRiku Voipiofi 3456ebc996f3SRiku Voipio 3457099d6b0fSRiku Voipio# check if pipe2 is there 3458099d6b0fSRiku Voipiopipe2=no 3459099d6b0fSRiku Voipiocat > $TMPC << EOF 3460099d6b0fSRiku Voipio#include <unistd.h> 3461099d6b0fSRiku Voipio#include <fcntl.h> 3462099d6b0fSRiku Voipio 3463099d6b0fSRiku Voipioint main(void) 3464099d6b0fSRiku Voipio{ 3465099d6b0fSRiku Voipio int pipefd[2]; 34669bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 3467099d6b0fSRiku Voipio} 3468099d6b0fSRiku VoipioEOF 346952166aa0SJuan Quintelaif compile_prog "" "" ; then 3470099d6b0fSRiku Voipio pipe2=yes 3471099d6b0fSRiku Voipiofi 3472099d6b0fSRiku Voipio 347340ff6d7eSKevin Wolf# check if accept4 is there 347440ff6d7eSKevin Wolfaccept4=no 347540ff6d7eSKevin Wolfcat > $TMPC << EOF 347640ff6d7eSKevin Wolf#include <sys/socket.h> 347740ff6d7eSKevin Wolf#include <stddef.h> 347840ff6d7eSKevin Wolf 347940ff6d7eSKevin Wolfint main(void) 348040ff6d7eSKevin Wolf{ 348140ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 348240ff6d7eSKevin Wolf return 0; 348340ff6d7eSKevin Wolf} 348440ff6d7eSKevin WolfEOF 348540ff6d7eSKevin Wolfif compile_prog "" "" ; then 348640ff6d7eSKevin Wolf accept4=yes 348740ff6d7eSKevin Wolffi 348840ff6d7eSKevin Wolf 34893ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 34903ce34dfbSvibisreenivasansplice=no 34913ce34dfbSvibisreenivasancat > $TMPC << EOF 34923ce34dfbSvibisreenivasan#include <unistd.h> 34933ce34dfbSvibisreenivasan#include <fcntl.h> 34943ce34dfbSvibisreenivasan#include <limits.h> 34953ce34dfbSvibisreenivasan 34963ce34dfbSvibisreenivasanint main(void) 34973ce34dfbSvibisreenivasan{ 349866ea0f22SStefan Weil int len, fd = 0; 34993ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 35003ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 35013ce34dfbSvibisreenivasan return 0; 35023ce34dfbSvibisreenivasan} 35033ce34dfbSvibisreenivasanEOF 350452166aa0SJuan Quintelaif compile_prog "" "" ; then 35053ce34dfbSvibisreenivasan splice=yes 35063ce34dfbSvibisreenivasanfi 35073ce34dfbSvibisreenivasan 3508dcc38d1cSMarcelo Tosatti########################################## 3509a99d57bbSWanlong Gao# libnuma probe 3510a99d57bbSWanlong Gao 3511a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 3512a99d57bbSWanlong Gao cat > $TMPC << EOF 3513a99d57bbSWanlong Gao#include <numa.h> 3514a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 3515a99d57bbSWanlong GaoEOF 3516a99d57bbSWanlong Gao 3517a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 3518a99d57bbSWanlong Gao numa=yes 3519a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 3520a99d57bbSWanlong Gao else 3521a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 3522a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 3523a99d57bbSWanlong Gao fi 3524a99d57bbSWanlong Gao numa=no 3525a99d57bbSWanlong Gao fi 3526a99d57bbSWanlong Gaofi 3527a99d57bbSWanlong Gao 35287b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 35297b01cb97SAlexandre Derumier echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 35307b01cb97SAlexandre Derumier exit 1 35317b01cb97SAlexandre Derumierfi 35327b01cb97SAlexandre Derumier 3533a99d57bbSWanlong Gao########################################## 35342847b469SFam Zheng# tcmalloc probe 35352847b469SFam Zheng 35362847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 35372847b469SFam Zheng cat > $TMPC << EOF 35382847b469SFam Zheng#include <stdlib.h> 35392847b469SFam Zhengint main(void) { malloc(1); return 0; } 35402847b469SFam ZhengEOF 35412847b469SFam Zheng 35422847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 35432847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 35442847b469SFam Zheng else 35452847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 35462847b469SFam Zheng fi 35472847b469SFam Zhengfi 35482847b469SFam Zheng 35492847b469SFam Zheng########################################## 35507b01cb97SAlexandre Derumier# jemalloc probe 35517b01cb97SAlexandre Derumier 35527b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then 35537b01cb97SAlexandre Derumier cat > $TMPC << EOF 35547b01cb97SAlexandre Derumier#include <stdlib.h> 35557b01cb97SAlexandre Derumierint main(void) { malloc(1); return 0; } 35567b01cb97SAlexandre DerumierEOF 35577b01cb97SAlexandre Derumier 35587b01cb97SAlexandre Derumier if compile_prog "" "-ljemalloc" ; then 35597b01cb97SAlexandre Derumier LIBS="-ljemalloc $LIBS" 35607b01cb97SAlexandre Derumier else 35617b01cb97SAlexandre Derumier feature_not_found "jemalloc" "install jemalloc devel" 35627b01cb97SAlexandre Derumier fi 35637b01cb97SAlexandre Derumierfi 35647b01cb97SAlexandre Derumier 35657b01cb97SAlexandre Derumier########################################## 3566dcc38d1cSMarcelo Tosatti# signalfd probe 3567dcc38d1cSMarcelo Tosattisignalfd="no" 3568dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 3569dcc38d1cSMarcelo Tosatti#include <unistd.h> 3570dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 3571dcc38d1cSMarcelo Tosatti#include <signal.h> 3572dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 3573dcc38d1cSMarcelo TosattiEOF 3574dcc38d1cSMarcelo Tosatti 3575dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 3576dcc38d1cSMarcelo Tosatti signalfd=yes 3577dcc38d1cSMarcelo Tosattifi 3578dcc38d1cSMarcelo Tosatti 3579c2882b96SRiku Voipio# check if eventfd is supported 3580c2882b96SRiku Voipioeventfd=no 3581c2882b96SRiku Voipiocat > $TMPC << EOF 3582c2882b96SRiku Voipio#include <sys/eventfd.h> 3583c2882b96SRiku Voipio 3584c2882b96SRiku Voipioint main(void) 3585c2882b96SRiku Voipio{ 358655cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 3587c2882b96SRiku Voipio} 3588c2882b96SRiku VoipioEOF 3589c2882b96SRiku Voipioif compile_prog "" "" ; then 3590c2882b96SRiku Voipio eventfd=yes 3591c2882b96SRiku Voipiofi 3592c2882b96SRiku Voipio 3593751bcc39SMarc-André Lureau# check if memfd is supported 3594751bcc39SMarc-André Lureaumemfd=no 3595751bcc39SMarc-André Lureaucat > $TMPC << EOF 3596751bcc39SMarc-André Lureau#include <sys/memfd.h> 3597751bcc39SMarc-André Lureau 3598751bcc39SMarc-André Lureauint main(void) 3599751bcc39SMarc-André Lureau{ 3600751bcc39SMarc-André Lureau return memfd_create("foo", MFD_ALLOW_SEALING); 3601751bcc39SMarc-André Lureau} 3602751bcc39SMarc-André LureauEOF 3603751bcc39SMarc-André Lureauif compile_prog "" "" ; then 3604751bcc39SMarc-André Lureau memfd=yes 3605751bcc39SMarc-André Lureaufi 3606751bcc39SMarc-André Lureau 3607751bcc39SMarc-André Lureau 3608751bcc39SMarc-André Lureau 3609d0927938SUlrich Hecht# check for fallocate 3610d0927938SUlrich Hechtfallocate=no 3611d0927938SUlrich Hechtcat > $TMPC << EOF 3612d0927938SUlrich Hecht#include <fcntl.h> 3613d0927938SUlrich Hecht 3614d0927938SUlrich Hechtint main(void) 3615d0927938SUlrich Hecht{ 3616d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 3617d0927938SUlrich Hecht return 0; 3618d0927938SUlrich Hecht} 3619d0927938SUlrich HechtEOF 36208fb03151SPeter Maydellif compile_prog "" "" ; then 3621d0927938SUlrich Hecht fallocate=yes 3622d0927938SUlrich Hechtfi 3623d0927938SUlrich Hecht 36243d4fa43eSKusanagi Kouichi# check for fallocate hole punching 36253d4fa43eSKusanagi Kouichifallocate_punch_hole=no 36263d4fa43eSKusanagi Kouichicat > $TMPC << EOF 36273d4fa43eSKusanagi Kouichi#include <fcntl.h> 36283d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 36293d4fa43eSKusanagi Kouichi 36303d4fa43eSKusanagi Kouichiint main(void) 36313d4fa43eSKusanagi Kouichi{ 36323d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 36333d4fa43eSKusanagi Kouichi return 0; 36343d4fa43eSKusanagi Kouichi} 36353d4fa43eSKusanagi KouichiEOF 36363d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 36373d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 36383d4fa43eSKusanagi Kouichifi 36393d4fa43eSKusanagi Kouichi 3640b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 3641b953f075SDenis V. Lunevfallocate_zero_range=no 3642b953f075SDenis V. Lunevcat > $TMPC << EOF 3643b953f075SDenis V. Lunev#include <fcntl.h> 3644b953f075SDenis V. Lunev#include <linux/falloc.h> 3645b953f075SDenis V. Lunev 3646b953f075SDenis V. Lunevint main(void) 3647b953f075SDenis V. Lunev{ 3648b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 3649b953f075SDenis V. Lunev return 0; 3650b953f075SDenis V. Lunev} 3651b953f075SDenis V. LunevEOF 3652b953f075SDenis V. Lunevif compile_prog "" "" ; then 3653b953f075SDenis V. Lunev fallocate_zero_range=yes 3654b953f075SDenis V. Lunevfi 3655b953f075SDenis V. Lunev 3656ed911435SKevin Wolf# check for posix_fallocate 3657ed911435SKevin Wolfposix_fallocate=no 3658ed911435SKevin Wolfcat > $TMPC << EOF 3659ed911435SKevin Wolf#include <fcntl.h> 3660ed911435SKevin Wolf 3661ed911435SKevin Wolfint main(void) 3662ed911435SKevin Wolf{ 3663ed911435SKevin Wolf posix_fallocate(0, 0, 0); 3664ed911435SKevin Wolf return 0; 3665ed911435SKevin Wolf} 3666ed911435SKevin WolfEOF 3667ed911435SKevin Wolfif compile_prog "" "" ; then 3668ed911435SKevin Wolf posix_fallocate=yes 3669ed911435SKevin Wolffi 3670ed911435SKevin Wolf 3671c727f47dSPeter Maydell# check for sync_file_range 3672c727f47dSPeter Maydellsync_file_range=no 3673c727f47dSPeter Maydellcat > $TMPC << EOF 3674c727f47dSPeter Maydell#include <fcntl.h> 3675c727f47dSPeter Maydell 3676c727f47dSPeter Maydellint main(void) 3677c727f47dSPeter Maydell{ 3678c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 3679c727f47dSPeter Maydell return 0; 3680c727f47dSPeter Maydell} 3681c727f47dSPeter MaydellEOF 36828fb03151SPeter Maydellif compile_prog "" "" ; then 3683c727f47dSPeter Maydell sync_file_range=yes 3684c727f47dSPeter Maydellfi 3685c727f47dSPeter Maydell 3686dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 3687dace20dcSPeter Maydellfiemap=no 3688dace20dcSPeter Maydellcat > $TMPC << EOF 3689dace20dcSPeter Maydell#include <sys/ioctl.h> 3690dace20dcSPeter Maydell#include <linux/fs.h> 3691dace20dcSPeter Maydell#include <linux/fiemap.h> 3692dace20dcSPeter Maydell 3693dace20dcSPeter Maydellint main(void) 3694dace20dcSPeter Maydell{ 3695dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 3696dace20dcSPeter Maydell return 0; 3697dace20dcSPeter Maydell} 3698dace20dcSPeter MaydellEOF 36998fb03151SPeter Maydellif compile_prog "" "" ; then 3700dace20dcSPeter Maydell fiemap=yes 3701dace20dcSPeter Maydellfi 3702dace20dcSPeter Maydell 3703d0927938SUlrich Hecht# check for dup3 3704d0927938SUlrich Hechtdup3=no 3705d0927938SUlrich Hechtcat > $TMPC << EOF 3706d0927938SUlrich Hecht#include <unistd.h> 3707d0927938SUlrich Hecht 3708d0927938SUlrich Hechtint main(void) 3709d0927938SUlrich Hecht{ 3710d0927938SUlrich Hecht dup3(0, 0, 0); 3711d0927938SUlrich Hecht return 0; 3712d0927938SUlrich Hecht} 3713d0927938SUlrich HechtEOF 371478f5d726SJan Kiszkaif compile_prog "" "" ; then 3715d0927938SUlrich Hecht dup3=yes 3716d0927938SUlrich Hechtfi 3717d0927938SUlrich Hecht 37184e0c6529SAlex Bligh# check for ppoll support 37194e0c6529SAlex Blighppoll=no 37204e0c6529SAlex Blighcat > $TMPC << EOF 37214e0c6529SAlex Bligh#include <poll.h> 37224e0c6529SAlex Bligh 37234e0c6529SAlex Blighint main(void) 37244e0c6529SAlex Bligh{ 37254e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 37264e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 37274e0c6529SAlex Bligh return 0; 37284e0c6529SAlex Bligh} 37294e0c6529SAlex BlighEOF 37304e0c6529SAlex Blighif compile_prog "" "" ; then 37314e0c6529SAlex Bligh ppoll=yes 37324e0c6529SAlex Blighfi 37334e0c6529SAlex Bligh 3734cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 3735cd758dd0SAlex Blighprctl_pr_set_timerslack=no 3736cd758dd0SAlex Blighcat > $TMPC << EOF 3737cd758dd0SAlex Bligh#include <sys/prctl.h> 3738cd758dd0SAlex Bligh 3739cd758dd0SAlex Blighint main(void) 3740cd758dd0SAlex Bligh{ 3741cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3742cd758dd0SAlex Bligh return 0; 3743cd758dd0SAlex Bligh} 3744cd758dd0SAlex BlighEOF 3745cd758dd0SAlex Blighif compile_prog "" "" ; then 3746cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 3747cd758dd0SAlex Blighfi 3748cd758dd0SAlex Bligh 37493b6edd16SPeter Maydell# check for epoll support 37503b6edd16SPeter Maydellepoll=no 37513b6edd16SPeter Maydellcat > $TMPC << EOF 37523b6edd16SPeter Maydell#include <sys/epoll.h> 37533b6edd16SPeter Maydell 37543b6edd16SPeter Maydellint main(void) 37553b6edd16SPeter Maydell{ 37563b6edd16SPeter Maydell epoll_create(0); 37573b6edd16SPeter Maydell return 0; 37583b6edd16SPeter Maydell} 37593b6edd16SPeter MaydellEOF 37608fb03151SPeter Maydellif compile_prog "" "" ; then 37613b6edd16SPeter Maydell epoll=yes 37623b6edd16SPeter Maydellfi 37633b6edd16SPeter Maydell 37643b6edd16SPeter Maydell# epoll_create1 and epoll_pwait are later additions 37653b6edd16SPeter Maydell# so we must check separately for their presence 37663b6edd16SPeter Maydellepoll_create1=no 37673b6edd16SPeter Maydellcat > $TMPC << EOF 37683b6edd16SPeter Maydell#include <sys/epoll.h> 37693b6edd16SPeter Maydell 37703b6edd16SPeter Maydellint main(void) 37713b6edd16SPeter Maydell{ 377219e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 377319e83f6bSPeter Maydell * a function being called. This is necessary so that on 377419e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 377519e83f6bSPeter Maydell * the library but not declared in the header file we will 377619e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 377719e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 377819e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 377919e83f6bSPeter Maydell */ 3780c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 37813b6edd16SPeter Maydell} 37823b6edd16SPeter MaydellEOF 37838fb03151SPeter Maydellif compile_prog "" "" ; then 37843b6edd16SPeter Maydell epoll_create1=yes 37853b6edd16SPeter Maydellfi 37863b6edd16SPeter Maydell 37873b6edd16SPeter Maydellepoll_pwait=no 37883b6edd16SPeter Maydellcat > $TMPC << EOF 37893b6edd16SPeter Maydell#include <sys/epoll.h> 37903b6edd16SPeter Maydell 37913b6edd16SPeter Maydellint main(void) 37923b6edd16SPeter Maydell{ 37933b6edd16SPeter Maydell epoll_pwait(0, 0, 0, 0, 0); 37943b6edd16SPeter Maydell return 0; 37953b6edd16SPeter Maydell} 37963b6edd16SPeter MaydellEOF 37978fb03151SPeter Maydellif compile_prog "" "" ; then 37983b6edd16SPeter Maydell epoll_pwait=yes 37993b6edd16SPeter Maydellfi 38003b6edd16SPeter Maydell 3801a8fd1abaSPeter Maydell# check for sendfile support 3802a8fd1abaSPeter Maydellsendfile=no 3803a8fd1abaSPeter Maydellcat > $TMPC << EOF 3804a8fd1abaSPeter Maydell#include <sys/sendfile.h> 3805a8fd1abaSPeter Maydell 3806a8fd1abaSPeter Maydellint main(void) 3807a8fd1abaSPeter Maydell{ 3808a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 3809a8fd1abaSPeter Maydell} 3810a8fd1abaSPeter MaydellEOF 3811a8fd1abaSPeter Maydellif compile_prog "" "" ; then 3812a8fd1abaSPeter Maydell sendfile=yes 3813a8fd1abaSPeter Maydellfi 3814a8fd1abaSPeter Maydell 381551834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 381651834341SRiku Voipiotimerfd=no 381751834341SRiku Voipiocat > $TMPC << EOF 381851834341SRiku Voipio#include <sys/timerfd.h> 381951834341SRiku Voipio 382051834341SRiku Voipioint main(void) 382151834341SRiku Voipio{ 382251834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 382351834341SRiku Voipio} 382451834341SRiku VoipioEOF 382551834341SRiku Voipioif compile_prog "" "" ; then 382651834341SRiku Voipio timerfd=yes 382751834341SRiku Voipiofi 382851834341SRiku Voipio 38299af5c906SRiku Voipio# check for setns and unshare support 38309af5c906SRiku Voipiosetns=no 38319af5c906SRiku Voipiocat > $TMPC << EOF 38329af5c906SRiku Voipio#include <sched.h> 38339af5c906SRiku Voipio 38349af5c906SRiku Voipioint main(void) 38359af5c906SRiku Voipio{ 38369af5c906SRiku Voipio int ret; 38379af5c906SRiku Voipio ret = setns(0, 0); 38389af5c906SRiku Voipio ret = unshare(0); 38399af5c906SRiku Voipio return ret; 38409af5c906SRiku Voipio} 38419af5c906SRiku VoipioEOF 38429af5c906SRiku Voipioif compile_prog "" "" ; then 38439af5c906SRiku Voipio setns=yes 38449af5c906SRiku Voipiofi 38459af5c906SRiku Voipio 3846cc8ae6deSpbrook# Check if tools are available to build documentation. 3847a25dba17SJuan Quintelaif test "$docs" != "no" ; then 384801668d98SStefan Weil if has makeinfo && has pod2man; then 3849a25dba17SJuan Quintela docs=yes 385083a3ab8bSJuan Quintela else 3851a25dba17SJuan Quintela if test "$docs" = "yes" ; then 385221684af0SStewart Smith feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 385383a3ab8bSJuan Quintela fi 3854a25dba17SJuan Quintela docs=no 385583a3ab8bSJuan Quintela fi 3856cc8ae6deSpbrookfi 3857cc8ae6deSpbrook 3858f514f41cSStefan Weil# Search for bswap_32 function 38596ae9a1f4SJuan Quintelabyteswap_h=no 38606ae9a1f4SJuan Quintelacat > $TMPC << EOF 38616ae9a1f4SJuan Quintela#include <byteswap.h> 38626ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 38636ae9a1f4SJuan QuintelaEOF 386452166aa0SJuan Quintelaif compile_prog "" "" ; then 38656ae9a1f4SJuan Quintela byteswap_h=yes 38666ae9a1f4SJuan Quintelafi 38676ae9a1f4SJuan Quintela 386875f13596SStefan Weil# Search for bswap32 function 38696ae9a1f4SJuan Quintelabswap_h=no 38706ae9a1f4SJuan Quintelacat > $TMPC << EOF 38716ae9a1f4SJuan Quintela#include <sys/endian.h> 38726ae9a1f4SJuan Quintela#include <sys/types.h> 38736ae9a1f4SJuan Quintela#include <machine/bswap.h> 38746ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 38756ae9a1f4SJuan QuintelaEOF 387652166aa0SJuan Quintelaif compile_prog "" "" ; then 38776ae9a1f4SJuan Quintela bswap_h=yes 38786ae9a1f4SJuan Quintelafi 38796ae9a1f4SJuan Quintela 3880da93a1fdSaliguori########################################## 3881e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 3882c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 3883e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 38843c33ea96SPaolo Bonzini libiscsi="yes" 3885ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 3886ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 3887c589b249SRonnie Sahlberg else 3888c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 3889e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 3890c589b249SRonnie Sahlberg fi 3891c589b249SRonnie Sahlberg libiscsi="no" 3892c589b249SRonnie Sahlberg fi 3893c589b249SRonnie Sahlbergfi 3894c589b249SRonnie Sahlberg 3895c589b249SRonnie Sahlberg########################################## 38968bacde8dSNatanael Copa# Do we need libm 38978bacde8dSNatanael Copacat > $TMPC << EOF 38988bacde8dSNatanael Copa#include <math.h> 3899f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 39008bacde8dSNatanael CopaEOF 39018bacde8dSNatanael Copaif compile_prog "" "" ; then 39028bacde8dSNatanael Copa : 39038bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 39048bacde8dSNatanael Copa LIBS="-lm $LIBS" 39058bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 39068bacde8dSNatanael Copaelse 390776ad07a4SPeter Maydell error_exit "libm check failed" 39088bacde8dSNatanael Copafi 39098bacde8dSNatanael Copa 39108bacde8dSNatanael Copa########################################## 3911da93a1fdSaliguori# Do we need librt 39128bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 39138bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 39148bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 39158bacde8dSNatanael Copa# function in addition. 3916da93a1fdSaliguoricat > $TMPC <<EOF 3917da93a1fdSaliguori#include <signal.h> 3918da93a1fdSaliguori#include <time.h> 39198bacde8dSNatanael Copaint main(void) { 39208bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 39218bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 39228bacde8dSNatanael Copa} 3923da93a1fdSaliguoriEOF 3924da93a1fdSaliguori 392552166aa0SJuan Quintelaif compile_prog "" "" ; then 392607ffa4bdSJuan Quintela : 39278bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 392818e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 392918e588b1SRick Liu LIBS="$LIBS -lrt" 393018e588b1SRick Liu libs_qga="$libs_qga -lrt" 3931da93a1fdSaliguorifi 3932da93a1fdSaliguori 393331ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 3934179cf400SAndreas Färber "$aix" != "yes" -a "$haiku" != "yes" ; then 39356362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 39366362a53fSJuan Quintelafi 39376362a53fSJuan Quintela 3938de5071c5SBlue Swirl########################################## 3939cd4ec0b4SGerd Hoffmann# spice probe 3940cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 3941cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 3942cd4ec0b4SGerd Hoffmann#include <spice.h> 3943cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 3944cd4ec0b4SGerd HoffmannEOF 3945710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 3946710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 394765d5d3f9SStefan Weil if $pkg_config --atleast-version=0.12.0 spice-server && \ 394865d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 3949cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 3950cd4ec0b4SGerd Hoffmann spice="yes" 3951cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 3952cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 39532e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 39542e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 3955cd4ec0b4SGerd Hoffmann else 3956cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 39578efc9363SHu Tao feature_not_found "spice" \ 39588efc9363SHu Tao "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel" 3959cd4ec0b4SGerd Hoffmann fi 3960cd4ec0b4SGerd Hoffmann spice="no" 3961cd4ec0b4SGerd Hoffmann fi 3962cd4ec0b4SGerd Hoffmannfi 3963cd4ec0b4SGerd Hoffmann 39647b02f544SMarc-André Lureau# check for smartcard support 3965111a38b0SRobert Relyeasmartcard_cflags="" 39667b02f544SMarc-André Lureauif test "$smartcard" != "no"; then 39677b02f544SMarc-André Lureau if $pkg_config libcacard; then 39687b02f544SMarc-André Lureau libcacard_cflags=$($pkg_config --cflags libcacard) 39697b02f544SMarc-André Lureau libcacard_libs=$($pkg_config --libs libcacard) 39707b02f544SMarc-André Lureau QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags" 39717b02f544SMarc-André Lureau libs_softmmu="$libs_softmmu $libcacard_libs" 39727b02f544SMarc-André Lureau smartcard="yes" 3973111a38b0SRobert Relyea else 39747b02f544SMarc-André Lureau if test "$smartcard" = "yes"; then 39757b02f544SMarc-André Lureau feature_not_found "smartcard" "Install libcacard devel" 3976111a38b0SRobert Relyea fi 39777b02f544SMarc-André Lureau smartcard="no" 3978111a38b0SRobert Relyea fi 3979111a38b0SRobert Relyeafi 3980111a38b0SRobert Relyea 39812b2325ffSGerd Hoffmann# check for libusb 39822b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 398365d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 39842b2325ffSGerd Hoffmann libusb="yes" 3985ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 3986ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 39872b2325ffSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 39882b2325ffSGerd Hoffmann libs_softmmu="$libs_softmmu $libusb_libs" 39892b2325ffSGerd Hoffmann else 39902b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 39918efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 39922b2325ffSGerd Hoffmann fi 39932b2325ffSGerd Hoffmann libusb="no" 39942b2325ffSGerd Hoffmann fi 39952b2325ffSGerd Hoffmannfi 39962b2325ffSGerd Hoffmann 399769354a83SHans de Goede# check for usbredirparser for usb network redirection support 399869354a83SHans de Goedeif test "$usb_redir" != "no" ; then 399965d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 400069354a83SHans de Goede usb_redir="yes" 4001ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 4002ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 400369354a83SHans de Goede QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 400456ab2ad1SAurelien Jarno libs_softmmu="$libs_softmmu $usb_redir_libs" 400569354a83SHans de Goede else 400669354a83SHans de Goede if test "$usb_redir" = "yes"; then 400721684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 400869354a83SHans de Goede fi 400969354a83SHans de Goede usb_redir="no" 401069354a83SHans de Goede fi 401169354a83SHans de Goedefi 401269354a83SHans de Goede 4013cd4ec0b4SGerd Hoffmann########################################## 4014d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 4015d9840e25STomoki Sekiyama 4016d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 4017d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 4018d9840e25STomoki Sekiyama "") vss_win32_include="-I$source_path" ;; 4019d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 4020d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 4021d9840e25STomoki Sekiyama vss_win32_include="-I$source_path/.sdk/vss" 4022d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 4023d9840e25STomoki Sekiyama ;; 4024d9840e25STomoki Sekiyama *) vss_win32_include="-I$vss_win32_sdk" 4025d9840e25STomoki Sekiyama esac 4026d9840e25STomoki Sekiyama cat > $TMPC << EOF 4027d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 4028d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 4029d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 4030d9840e25STomoki SekiyamaEOF 4031d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 4032d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 4033d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 4034d9840e25STomoki Sekiyama libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 4035f33ca81fSMichael Roth qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 4036d9840e25STomoki Sekiyama else 4037d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 4038d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 4039d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 4040d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 4041d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 4042d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 4043d9840e25STomoki Sekiyama feature_not_found "VSS support" 4044d9840e25STomoki Sekiyama fi 4045d9840e25STomoki Sekiyama guest_agent_with_vss="no" 4046d9840e25STomoki Sekiyama fi 4047d9840e25STomoki Sekiyamafi 4048d9840e25STomoki Sekiyama 4049d9840e25STomoki Sekiyama########################################## 4050d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 4051d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 4052d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 4053d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 4054d9840e25STomoki Sekiyama 4055d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 4056d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 4057d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 4058d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 4059d9840e25STomoki Sekiyama if test -n "$programfiles"; then 4060d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 4061d9840e25STomoki Sekiyama else 4062d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 4063d9840e25STomoki Sekiyama fi 4064d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 4065d9840e25STomoki Sekiyama win_sdk="" 4066d9840e25STomoki Sekiyama fi 4067d9840e25STomoki Sekiyamafi 4068d9840e25STomoki Sekiyama 4069d9840e25STomoki Sekiyama########################################## 407050cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h 407150cbebb9SMichael Rothif test "$mingw32" = "yes" -a "$guest_agent" != "no"; then 407250cbebb9SMichael Roth cat > $TMPC << EOF 407350cbebb9SMichael Roth#include <windows.h> 407450cbebb9SMichael Roth#include <ntddscsi.h> 407550cbebb9SMichael Rothint main(void) { 407650cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS) 407750cbebb9SMichael Roth#error Missing required ioctl definitions 407850cbebb9SMichael Roth#endif 407950cbebb9SMichael Roth SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 408050cbebb9SMichael Roth return addr.Lun; 408150cbebb9SMichael Roth} 408250cbebb9SMichael RothEOF 408350cbebb9SMichael Roth if compile_prog "" "" ; then 408450cbebb9SMichael Roth guest_agent_ntddscsi=yes 4085c54e1eb4SMichael Roth libs_qga="-lsetupapi $libs_qga" 408650cbebb9SMichael Roth fi 408750cbebb9SMichael Rothfi 408850cbebb9SMichael Roth 408950cbebb9SMichael Roth########################################## 40909d9e1521SGerd Hoffmann# virgl renderer probe 40919d9e1521SGerd Hoffmann 40929d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then 40939d9e1521SGerd Hoffmann cat > $TMPC << EOF 40949d9e1521SGerd Hoffmann#include <virglrenderer.h> 40959d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; } 40969d9e1521SGerd HoffmannEOF 40979d9e1521SGerd Hoffmann virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 40989d9e1521SGerd Hoffmann virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 40999d9e1521SGerd Hoffmann if $pkg_config virglrenderer >/dev/null 2>&1 && \ 41009d9e1521SGerd Hoffmann compile_prog "$virgl_cflags" "$virgl_libs" ; then 41019d9e1521SGerd Hoffmann virglrenderer="yes" 41029d9e1521SGerd Hoffmann else 41039d9e1521SGerd Hoffmann if test "$virglrenderer" = "yes" ; then 41049d9e1521SGerd Hoffmann feature_not_found "virglrenderer" 41059d9e1521SGerd Hoffmann fi 41069d9e1521SGerd Hoffmann virglrenderer="no" 41079d9e1521SGerd Hoffmann fi 41089d9e1521SGerd Hoffmannfi 41099d9e1521SGerd Hoffmann 41109d9e1521SGerd Hoffmann########################################## 41115f6b9e8fSBlue Swirl# check if we have fdatasync 41125f6b9e8fSBlue Swirl 41135f6b9e8fSBlue Swirlfdatasync=no 41145f6b9e8fSBlue Swirlcat > $TMPC << EOF 41155f6b9e8fSBlue Swirl#include <unistd.h> 4116d1722a27SAlexandre Raymondint main(void) { 4117d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 4118d1722a27SAlexandre Raymondreturn fdatasync(0); 4119d1722a27SAlexandre Raymond#else 4120e172fe11SStefan Weil#error Not supported 4121d1722a27SAlexandre Raymond#endif 4122d1722a27SAlexandre Raymond} 41235f6b9e8fSBlue SwirlEOF 41245f6b9e8fSBlue Swirlif compile_prog "" "" ; then 41255f6b9e8fSBlue Swirl fdatasync=yes 41265f6b9e8fSBlue Swirlfi 41275f6b9e8fSBlue Swirl 412894a420b1SStefan Hajnoczi########################################## 4129e78815a5SAndreas Färber# check if we have madvise 4130e78815a5SAndreas Färber 4131e78815a5SAndreas Färbermadvise=no 4132e78815a5SAndreas Färbercat > $TMPC << EOF 4133e78815a5SAndreas Färber#include <sys/types.h> 4134e78815a5SAndreas Färber#include <sys/mman.h> 4135832ce9c2SScott Wood#include <stddef.h> 4136e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 4137e78815a5SAndreas FärberEOF 4138e78815a5SAndreas Färberif compile_prog "" "" ; then 4139e78815a5SAndreas Färber madvise=yes 4140e78815a5SAndreas Färberfi 4141e78815a5SAndreas Färber 4142e78815a5SAndreas Färber########################################## 4143e78815a5SAndreas Färber# check if we have posix_madvise 4144e78815a5SAndreas Färber 4145e78815a5SAndreas Färberposix_madvise=no 4146e78815a5SAndreas Färbercat > $TMPC << EOF 4147e78815a5SAndreas Färber#include <sys/mman.h> 4148832ce9c2SScott Wood#include <stddef.h> 4149e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 4150e78815a5SAndreas FärberEOF 4151e78815a5SAndreas Färberif compile_prog "" "" ; then 4152e78815a5SAndreas Färber posix_madvise=yes 4153e78815a5SAndreas Färberfi 4154e78815a5SAndreas Färber 4155e78815a5SAndreas Färber########################################## 41561e9737daSRichard Henderson# check if we have usable SIGEV_THREAD_ID 41571e9737daSRichard Henderson 41581e9737daSRichard Hendersonsigev_thread_id=no 41591e9737daSRichard Hendersoncat > $TMPC << EOF 41601e9737daSRichard Henderson#include <signal.h> 41611e9737daSRichard Hendersonint main(void) { 41621e9737daSRichard Henderson struct sigevent ev; 41631e9737daSRichard Henderson ev.sigev_notify = SIGEV_THREAD_ID; 41641e9737daSRichard Henderson ev._sigev_un._tid = 0; 41651e9737daSRichard Henderson asm volatile("" : : "g"(&ev)); 41661e9737daSRichard Henderson return 0; 41671e9737daSRichard Henderson} 41681e9737daSRichard HendersonEOF 41691e9737daSRichard Hendersonif compile_prog "" "" ; then 41701e9737daSRichard Henderson sigev_thread_id=yes 41711e9737daSRichard Hendersonfi 41721e9737daSRichard Henderson 41731e9737daSRichard Henderson########################################## 417494a420b1SStefan Hajnoczi# check if trace backend exists 417594a420b1SStefan Hajnoczi 41765b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 417794a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 41785b808275SLluís Vilanova error_exit "invalid trace backends" \ 41795b808275SLluís Vilanova "Please choose supported trace backends." 418094a420b1SStefan Hajnoczifi 418194a420b1SStefan Hajnoczi 41827e24e92aSStefan Hajnoczi########################################## 41837e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 41845b808275SLluís Vilanovaif have_backend "ust"; then 41857e24e92aSStefan Hajnoczi cat > $TMPC << EOF 4186bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 41877e24e92aSStefan Hajnocziint main(void) { return 0; } 41887e24e92aSStefan HajnocziEOF 41897e24e92aSStefan Hajnoczi if compile_prog "" "" ; then 4190bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 4191bf15f63cSMohamad Gebai lttng_ust_libs=`$pkg_config --libs lttng-ust` 41927e24e92aSStefan Hajnoczi else 4193bf15f63cSMohamad Gebai lttng_ust_libs="-llttng-ust" 4194bf15f63cSMohamad Gebai fi 4195bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 4196bf15f63cSMohamad Gebai urcu_bp_libs=`$pkg_config --libs liburcu-bp` 4197bf15f63cSMohamad Gebai else 4198bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 4199bf15f63cSMohamad Gebai fi 4200bf15f63cSMohamad Gebai 4201bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 4202bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 4203bf15f63cSMohamad Gebai else 4204bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 42057e24e92aSStefan Hajnoczi fi 42067e24e92aSStefan Hajnoczifi 4207b3d08c02SDaniel P. Berrange 4208b3d08c02SDaniel P. Berrange########################################## 4209b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 42105b808275SLluís Vilanovaif have_backend "dtrace"; then 4211b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 421276ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 4213b3d08c02SDaniel P. Berrange fi 4214c276b17dSDaniel P. Berrange trace_backend_stap="no" 4215c276b17dSDaniel P. Berrange if has 'stap' ; then 4216c276b17dSDaniel P. Berrange trace_backend_stap="yes" 4217c276b17dSDaniel P. Berrange fi 4218b3d08c02SDaniel P. Berrangefi 4219b3d08c02SDaniel P. Berrange 42207e24e92aSStefan Hajnoczi########################################## 4221519175a2SAlex Barcelo# check and set a backend for coroutine 4222d0e2fce5SAneesh Kumar K.V 42237c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 42247c2acc70SPeter Maydell# is sigcontext. gthread is not selectable except explicitly, because 42257c2acc70SPeter Maydell# it is not functional enough to run QEMU proper. (It is occasionally 42267c2acc70SPeter Maydell# useful for debugging purposes.) On Windows the only valid backend 42277c2acc70SPeter Maydell# is the Windows-specific one. 42287c2acc70SPeter Maydell 42297c2acc70SPeter Maydellucontext_works=no 4230d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 4231d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 4232d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 4233cdf84806SPeter Maydell#ifdef __stub_makecontext 4234cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 4235cdf84806SPeter Maydell#endif 423675cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 4237d0e2fce5SAneesh Kumar K.VEOF 4238d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 42397c2acc70SPeter Maydell ucontext_works=yes 4240d0e2fce5SAneesh Kumar K.V fi 4241519175a2SAlex Barcelofi 42427c2acc70SPeter Maydell 42437c2acc70SPeter Maydellif test "$coroutine" = ""; then 42447c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 42457c2acc70SPeter Maydell coroutine=win32 42467c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 42477c2acc70SPeter Maydell coroutine=ucontext 4248519175a2SAlex Barcelo else 42497c2acc70SPeter Maydell coroutine=sigaltstack 42507c2acc70SPeter Maydell fi 42517c2acc70SPeter Maydellelse 42527c2acc70SPeter Maydell case $coroutine in 42537c2acc70SPeter Maydell windows) 42547c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 42557c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 42567c2acc70SPeter Maydell fi 42577c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 42587c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 42597c2acc70SPeter Maydell coroutine=win32 42607c2acc70SPeter Maydell ;; 42617c2acc70SPeter Maydell ucontext) 42627c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 42637c2acc70SPeter Maydell feature_not_found "ucontext" 42647c2acc70SPeter Maydell fi 42657c2acc70SPeter Maydell ;; 42667c2acc70SPeter Maydell gthread|sigaltstack) 42677c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 42687c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 42697c2acc70SPeter Maydell fi 42707c2acc70SPeter Maydell ;; 42717c2acc70SPeter Maydell *) 427276ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 42737c2acc70SPeter Maydell ;; 42747c2acc70SPeter Maydell esac 4275d0e2fce5SAneesh Kumar K.Vfi 4276d0e2fce5SAneesh Kumar K.V 427770c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 427870c60c08SStefan Hajnoczi if test "$coroutine" = "gthread"; then 427970c60c08SStefan Hajnoczi coroutine_pool=no 428070c60c08SStefan Hajnoczi else 428170c60c08SStefan Hajnoczi coroutine_pool=yes 428270c60c08SStefan Hajnoczi fi 428370c60c08SStefan Hajnoczifi 428470c60c08SStefan Hajnocziif test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 428570c60c08SStefan Hajnoczi error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 428670c60c08SStefan Hajnoczifi 428770c60c08SStefan Hajnoczi 4288d0e2fce5SAneesh Kumar K.V########################################## 4289d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 4290d2042378SAneesh Kumar K.V 42914e1797f9SStefan Weilopen_by_handle_at=no 4292d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 4293d2042378SAneesh Kumar K.V#include <fcntl.h> 4294acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 4295acc55ba8SStefan Weil# error missing definition 4296acc55ba8SStefan Weil#else 429775cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 4298acc55ba8SStefan Weil#endif 4299d2042378SAneesh Kumar K.VEOF 4300d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 4301d2042378SAneesh Kumar K.V open_by_handle_at=yes 4302d2042378SAneesh Kumar K.Vfi 4303d2042378SAneesh Kumar K.V 4304e06a765eSHarsh Prateek Bora######################################## 4305e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 4306e06a765eSHarsh Prateek Bora 4307e06a765eSHarsh Prateek Boralinux_magic_h=no 4308e06a765eSHarsh Prateek Boracat > $TMPC << EOF 4309e06a765eSHarsh Prateek Bora#include <linux/magic.h> 4310e06a765eSHarsh Prateek Boraint main(void) { 431175cafad7SStefan Weil return 0; 4312e06a765eSHarsh Prateek Bora} 4313e06a765eSHarsh Prateek BoraEOF 4314e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 4315e06a765eSHarsh Prateek Bora linux_magic_h=yes 4316e06a765eSHarsh Prateek Borafi 4317e06a765eSHarsh Prateek Bora 43188ab1bf12SLuiz Capitulino######################################## 4319c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 4320c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 4321c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 4322c95e3080SKevin Wolf# only a warning. 4323c95e3080SKevin Wolf# 4324c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 4325c95e3080SKevin Wolf# the build doesn't fail anyway. 4326c95e3080SKevin Wolf 432706d71fa1SPeter Maydellpragma_disable_unused_but_set=no 432806d71fa1SPeter Maydellcat > $TMPC << EOF 4329e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 433006d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 4331c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 4332e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 4333c95e3080SKevin Wolf 433406d71fa1SPeter Maydellint main(void) { 433506d71fa1SPeter Maydell return 0; 433606d71fa1SPeter Maydell} 433706d71fa1SPeter MaydellEOF 433806d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 4339cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 4340c95e3080SKevin Wolfelse 4341c95e3080SKevin Wolf werror=no 434206d71fa1SPeter Maydellfi 434306d71fa1SPeter Maydell 434406d71fa1SPeter Maydell######################################## 4345541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 43463f4349dcSKevin Wolf 43473f4349dcSKevin Wolfvalgrind_h=no 43483f4349dcSKevin Wolfcat > $TMPC << EOF 43493f4349dcSKevin Wolf#include <valgrind/valgrind.h> 43503f4349dcSKevin Wolfint main(void) { 43513f4349dcSKevin Wolf return 0; 43523f4349dcSKevin Wolf} 43533f4349dcSKevin WolfEOF 43543f4349dcSKevin Wolfif compile_prog "" "" ; then 43553f4349dcSKevin Wolf valgrind_h=yes 43563f4349dcSKevin Wolffi 43573f4349dcSKevin Wolf 43583f4349dcSKevin Wolf######################################## 43598ab1bf12SLuiz Capitulino# check if environ is declared 43608ab1bf12SLuiz Capitulino 43618ab1bf12SLuiz Capitulinohas_environ=no 43628ab1bf12SLuiz Capitulinocat > $TMPC << EOF 43638ab1bf12SLuiz Capitulino#include <unistd.h> 43648ab1bf12SLuiz Capitulinoint main(void) { 4365c075a723SBlue Swirl environ = 0; 43668ab1bf12SLuiz Capitulino return 0; 43678ab1bf12SLuiz Capitulino} 43688ab1bf12SLuiz CapitulinoEOF 43698ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 43708ab1bf12SLuiz Capitulino has_environ=yes 43718ab1bf12SLuiz Capitulinofi 43728ab1bf12SLuiz Capitulino 437376a347e1SRichard Henderson######################################## 437476a347e1SRichard Henderson# check if cpuid.h is usable. 437576a347e1SRichard Henderson 437676a347e1SRichard Hendersoncpuid_h=no 437776a347e1SRichard Hendersoncat > $TMPC << EOF 437876a347e1SRichard Henderson#include <cpuid.h> 437976a347e1SRichard Hendersonint main(void) { 4380774d566cSPeter Maydell unsigned a, b, c, d; 4381774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 4382774d566cSPeter Maydell 4383774d566cSPeter Maydell if (max >= 1) { 4384774d566cSPeter Maydell __cpuid(1, a, b, c, d); 4385774d566cSPeter Maydell } 4386774d566cSPeter Maydell 4387774d566cSPeter Maydell if (max >= 7) { 4388774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 4389774d566cSPeter Maydell } 4390774d566cSPeter Maydell 439176a347e1SRichard Henderson return 0; 439276a347e1SRichard Henderson} 439376a347e1SRichard HendersonEOF 439476a347e1SRichard Hendersonif compile_prog "" "" ; then 439576a347e1SRichard Henderson cpuid_h=yes 439676a347e1SRichard Hendersonfi 439776a347e1SRichard Henderson 4398f540166bSRichard Henderson######################################## 4399f540166bSRichard Henderson# check if __[u]int128_t is usable. 4400f540166bSRichard Henderson 4401f540166bSRichard Hendersonint128=no 4402f540166bSRichard Hendersoncat > $TMPC << EOF 4403a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__) 4404a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2)) 4405a00f66abSStefan Weil# error __int128_t does not work in CLANG before 3.2 4406a00f66abSStefan Weil# endif 4407a00f66abSStefan Weil#endif 4408f540166bSRichard Henderson__int128_t a; 4409f540166bSRichard Henderson__uint128_t b; 4410f540166bSRichard Hendersonint main (void) { 4411f540166bSRichard Henderson a = a + b; 4412f540166bSRichard Henderson b = a * b; 4413464e3671SPeter Maydell a = a * a; 4414f540166bSRichard Henderson return 0; 4415f540166bSRichard Henderson} 4416f540166bSRichard HendersonEOF 4417f540166bSRichard Hendersonif compile_prog "" "" ; then 4418f540166bSRichard Henderson int128=yes 4419f540166bSRichard Hendersonfi 442076a347e1SRichard Henderson 44211e6e9acaSRichard Henderson######################################## 44221e6e9acaSRichard Henderson# check if getauxval is available. 44231e6e9acaSRichard Henderson 44241e6e9acaSRichard Hendersongetauxval=no 44251e6e9acaSRichard Hendersoncat > $TMPC << EOF 44261e6e9acaSRichard Henderson#include <sys/auxv.h> 44271e6e9acaSRichard Hendersonint main(void) { 44281e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 44291e6e9acaSRichard Henderson} 44301e6e9acaSRichard HendersonEOF 44311e6e9acaSRichard Hendersonif compile_prog "" "" ; then 44321e6e9acaSRichard Henderson getauxval=yes 44331e6e9acaSRichard Hendersonfi 44341e6e9acaSRichard Henderson 4435fd0e6053SJohn Snow######################################## 4436fd0e6053SJohn Snow# check if ccache is interfering with 4437fd0e6053SJohn Snow# semantic analysis of macros 4438fd0e6053SJohn Snow 44395e4dfd3dSJohn Snowunset CCACHE_CPP2 4440fd0e6053SJohn Snowccache_cpp2=no 4441fd0e6053SJohn Snowcat > $TMPC << EOF 4442fd0e6053SJohn Snowstatic const int Z = 1; 4443fd0e6053SJohn Snow#define fn() ({ Z; }) 4444fd0e6053SJohn Snow#define TAUT(X) ((X) == Z) 4445fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y) 4446fd0e6053SJohn Snow#define ID(X) (X) 4447fd0e6053SJohn Snowint main(int argc, char *argv[]) 4448fd0e6053SJohn Snow{ 4449fd0e6053SJohn Snow int x = 0, y = 0; 4450fd0e6053SJohn Snow x = ID(x); 4451fd0e6053SJohn Snow x = fn(); 4452fd0e6053SJohn Snow fn(); 4453fd0e6053SJohn Snow if (PAREN(x, y)) return 0; 4454fd0e6053SJohn Snow if (TAUT(Z)) return 0; 4455fd0e6053SJohn Snow return 0; 4456fd0e6053SJohn Snow} 4457fd0e6053SJohn SnowEOF 4458fd0e6053SJohn Snow 4459fd0e6053SJohn Snowif ! compile_object "-Werror"; then 4460fd0e6053SJohn Snow ccache_cpp2=yes 4461fd0e6053SJohn Snowfi 4462fd0e6053SJohn Snow 4463b553a042SJohn Snow################################################# 4464b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE. 4465b553a042SJohn Snow 4466b553a042SJohn Snowif test "$fortify_source" != "no"; then 4467b553a042SJohn Snow if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 4468b553a042SJohn Snow fortify_source="no"; 4469cfcc7c14SJohn Snow elif test -n "$cxx" && 4470cfcc7c14SJohn Snow echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 4471b553a042SJohn Snow fortify_source="no"; 4472b553a042SJohn Snow else 4473b553a042SJohn Snow fortify_source="yes" 4474b553a042SJohn Snow fi 4475b553a042SJohn Snowfi 4476b553a042SJohn Snow 4477d2042378SAneesh Kumar K.V########################################## 4478e86ecd4bSJuan Quintela# End of CC checks 4479e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 4480e86ecd4bSJuan Quintela 44811d728c39SBlue Swirlif test "$gcov" = "yes" ; then 44821d728c39SBlue Swirl CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 44831d728c39SBlue Swirl LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 4484b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then 4485e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 4486ce278618SPeter Maydellelif test "$debug" = "no"; then 4487ce278618SPeter Maydell CFLAGS="-O2 $CFLAGS" 4488e86ecd4bSJuan Quintelafi 4489a316e378SJuan Quintela 44906542aa9cSPeter Lieven########################################## 44916542aa9cSPeter Lieven# Do we have libnfs 44926542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 4493b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 44946542aa9cSPeter Lieven libnfs="yes" 44956542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 44966542aa9cSPeter Lieven LIBS="$LIBS $libnfs_libs" 44976542aa9cSPeter Lieven else 44986542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 44998efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 45006542aa9cSPeter Lieven fi 45016542aa9cSPeter Lieven libnfs="no" 45026542aa9cSPeter Lieven fi 45036542aa9cSPeter Lievenfi 45041d728c39SBlue Swirl 450520ff6c80SAnthony Liguori# Disable zero malloc errors for official releases unless explicitly told to 450620ff6c80SAnthony Liguori# enable/disable 450720ff6c80SAnthony Liguoriif test -z "$zero_malloc" ; then 450820ff6c80SAnthony Liguori if test "$z_version" = "50" ; then 450920ff6c80SAnthony Liguori zero_malloc="no" 451020ff6c80SAnthony Liguori else 451120ff6c80SAnthony Liguori zero_malloc="yes" 451220ff6c80SAnthony Liguori fi 451320ff6c80SAnthony Liguorifi 451420ff6c80SAnthony Liguori 45156ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 45166ca026cbSPeter Maydellif test "$werror" = "yes"; then 45176ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 45186ca026cbSPeter Maydellfi 45196ca026cbSPeter Maydell 4520e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then 4521e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 45221156c669SJuan Quintela LDFLAGS="-Wl,--warn-common $LDFLAGS" 4523e86ecd4bSJuan Quintela fi 4524e86ecd4bSJuan Quintelafi 4525e86ecd4bSJuan Quintela 452694dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 452794dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 452894dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 452994dd53c5SGerd Hoffmannelse 453094dd53c5SGerd Hoffmann POD2MAN="pod2man" 453194dd53c5SGerd Hoffmannfi 453294dd53c5SGerd Hoffmann 4533952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 4534952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 4535952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 4536952afb71SBlue Swirl if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 4537952afb71SBlue Swirl LDFLAGS="-Wl,$flag $LDFLAGS" 4538952afb71SBlue Swirl fi 4539952afb71SBlue Swirl done 4540952afb71SBlue Swirlfi 4541952afb71SBlue Swirl 454210ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 4543e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 4544528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 4545834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 45465a67135aSbellard 45474b1c11fdSDaniel P. Berrangetools="" 45484b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 4549ca35f780SPaolo Bonzini tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 45504b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 45514b1c11fdSDaniel P. Berrange tools="qemu-nbd\$(EXESUF) $tools" 4552a75eb03bSDavid Marchand tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools" 45534b1c11fdSDaniel P. Berrange fi 45544b1c11fdSDaniel P. Berrangefi 45554b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 4556983eef5aSMeador Inge if test "$virtfs" != no ; then 4557be5ea8edSAnthony Liguori if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 4558983eef5aSMeador Inge virtfs=yes 455917bff52bSM. Mohan Kumar tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 4560983eef5aSMeador Inge else 4561983eef5aSMeador Inge if test "$virtfs" = yes; then 456276ad07a4SPeter Maydell error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 4563983eef5aSMeador Inge fi 456417500370SAndreas Färber virtfs=no 4565983eef5aSMeador Inge fi 456617bff52bSM. Mohan Kumar fi 4567d138cee9SMichael Rothfi 45689d6bc27bSMichael Roth 45699d6bc27bSMichael Roth# Probe for guest agent support/options 45709d6bc27bSMichael Roth 4571e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 4572b39297aeSTomoki Sekiyama if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 4573fafcaf1dSMichael Roth tools="qemu-ga $tools" 4574e8ef31a3SMichael Tokarev guest_agent=yes 4575e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 4576e8ef31a3SMichael Tokarev guest_agent=no 4577e8ef31a3SMichael Tokarev else 4578e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 4579ca35f780SPaolo Bonzini fi 45804b1c11fdSDaniel P. Berrangefi 4581ca35f780SPaolo Bonzini 45829d6bc27bSMichael Roth# Guest agent Window MSI package 45839d6bc27bSMichael Roth 45849d6bc27bSMichael Rothif test "$guest_agent" != yes; then 45859d6bc27bSMichael Roth if test "$guest_agent_msi" = yes; then 45869d6bc27bSMichael Roth error_exit "MSI guest agent package requires guest agent enabled" 45879d6bc27bSMichael Roth fi 45889d6bc27bSMichael Roth guest_agent_msi=no 45899d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then 45909d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 45919d6bc27bSMichael Roth error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 45929d6bc27bSMichael Roth fi 45939d6bc27bSMichael Roth guest_agent_msi=no 45949d6bc27bSMichael Rothelif ! has wixl; then 45959d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 45969d6bc27bSMichael Roth error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 45979d6bc27bSMichael Roth fi 45989d6bc27bSMichael Roth guest_agent_msi=no 45991a34904eSMichael Rothelse 46001a34904eSMichael Roth # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 46011a34904eSMichael Roth # disabled explicitly 46021a34904eSMichael Roth if test "$guest_agent_msi" != "no"; then 46031a34904eSMichael Roth guest_agent_msi=yes 46041a34904eSMichael Roth fi 46059d6bc27bSMichael Rothfi 46069d6bc27bSMichael Roth 46071a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then 46089d6bc27bSMichael Roth if test "$guest_agent_with_vss" = "yes"; then 46099d6bc27bSMichael Roth QEMU_GA_MSI_WITH_VSS="-D InstallVss" 46109d6bc27bSMichael Roth fi 46119d6bc27bSMichael Roth 46129d6bc27bSMichael Roth if test "$QEMU_GA_MANUFACTURER" = ""; then 46139d6bc27bSMichael Roth QEMU_GA_MANUFACTURER=QEMU 46149d6bc27bSMichael Roth fi 46159d6bc27bSMichael Roth 46169d6bc27bSMichael Roth if test "$QEMU_GA_DISTRO" = ""; then 46179d6bc27bSMichael Roth QEMU_GA_DISTRO=Linux 46189d6bc27bSMichael Roth fi 46199d6bc27bSMichael Roth 46209d6bc27bSMichael Roth if test "$QEMU_GA_VERSION" = ""; then 46219d6bc27bSMichael Roth QEMU_GA_VERSION=`cat $source_path/VERSION` 46229d6bc27bSMichael Roth fi 46239d6bc27bSMichael Roth 46249d6bc27bSMichael Roth QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin" 46259d6bc27bSMichael Roth 46269d6bc27bSMichael Roth case "$cpu" in 46279d6bc27bSMichael Roth x86_64) 46289d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 46299d6bc27bSMichael Roth ;; 46309d6bc27bSMichael Roth i386) 46319d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-D Arch=32" 46329d6bc27bSMichael Roth ;; 46339d6bc27bSMichael Roth *) 46349d6bc27bSMichael Roth error_exit "CPU $cpu not supported for building installation package" 46359d6bc27bSMichael Roth ;; 46369d6bc27bSMichael Roth esac 46379d6bc27bSMichael Rothfi 46389d6bc27bSMichael Roth 4639ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 4640ca35f780SPaolo Bonziniroms= 4641ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 4642ca35f780SPaolo Bonzini "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 4643ca35f780SPaolo Bonzini "$softmmu" = yes ; then 4644ca35f780SPaolo Bonzini roms="optionrom" 4645ca35f780SPaolo Bonzinifi 4646d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 464739ac8455SDavid Gibson roms="$roms spapr-rtas" 464839ac8455SDavid Gibsonfi 4649ca35f780SPaolo Bonzini 46509933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 46519933c305SChristian Borntraeger roms="$roms s390-ccw" 46529933c305SChristian Borntraegerfi 46539933c305SChristian Borntraeger 4654964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary. 4655964c6fa1SRichard Hendersonif test "$pie" = "no" ; then 4656964c6fa1SRichard Henderson textseg_addr= 4657964c6fa1SRichard Henderson case "$cpu" in 4658479eb121SRichard Henderson arm | i386 | ppc* | s390* | sparc* | x86_64 | x32) 4659479eb121SRichard Henderson # ??? Rationale for choosing this address 4660964c6fa1SRichard Henderson textseg_addr=0x60000000 4661964c6fa1SRichard Henderson ;; 4662964c6fa1SRichard Henderson mips) 4663479eb121SRichard Henderson # A 256M aligned address, high in the address space, with enough 4664479eb121SRichard Henderson # room for the code_gen_buffer above it before the stack. 4665479eb121SRichard Henderson textseg_addr=0x60000000 4666964c6fa1SRichard Henderson ;; 4667964c6fa1SRichard Henderson esac 4668964c6fa1SRichard Henderson if [ -n "$textseg_addr" ]; then 4669964c6fa1SRichard Henderson cat > $TMPC <<EOF 4670964c6fa1SRichard Henderson int main(void) { return 0; } 4671964c6fa1SRichard HendersonEOF 4672964c6fa1SRichard Henderson textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 4673964c6fa1SRichard Henderson if ! compile_prog "" "$textseg_ldflags"; then 4674964c6fa1SRichard Henderson # In case ld does not support -Ttext-segment, edit the default linker 4675964c6fa1SRichard Henderson # script via sed to set the .text start addr. This is needed on FreeBSD 4676964c6fa1SRichard Henderson # at least. 4677964c6fa1SRichard Henderson $ld --verbose | sed \ 4678964c6fa1SRichard Henderson -e '1,/==================================================/d' \ 4679964c6fa1SRichard Henderson -e '/==================================================/,$d' \ 4680964c6fa1SRichard Henderson -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 4681964c6fa1SRichard Henderson -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 4682964c6fa1SRichard Henderson textseg_ldflags="-Wl,-T../config-host.ld" 4683964c6fa1SRichard Henderson fi 4684964c6fa1SRichard Henderson fi 4685964c6fa1SRichard Hendersonfi 4686964c6fa1SRichard Henderson 468750e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 468850e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 468950e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 46905ca9388aSGerd Hoffmann 46917d13299dSbellardecho "Install prefix $prefix" 4692c00b2808SEduardo Habkostecho "BIOS directory `eval echo $qemu_datadir`" 4693f2b9e1e3SPaolo Bonziniecho "binary directory `eval echo $bindir`" 46943aa5d2beSAlon Levyecho "library directory `eval echo $libdir`" 4695e26110cfSFam Zhengecho "module directory `eval echo $qemu_moddir`" 46968bf188aaSMichael Tokarevecho "libexec directory `eval echo $libexecdir`" 46970f94d6daSAlon Levyecho "include directory `eval echo $includedir`" 46981c0fd160SAurelien Jarnoecho "config directory `eval echo $sysconfdir`" 469911d9f695Sbellardif test "$mingw32" = "no" ; then 47005a699bbbSLaszlo Ersekecho "local state directory `eval echo $local_statedir`" 4701f2b9e1e3SPaolo Bonziniecho "Manual directory `eval echo $mandir`" 470243ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 47035a699bbbSLaszlo Ersekelse 47045a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 4705d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 470611d9f695Sbellardfi 47075a67135aSbellardecho "Source path $source_path" 47087d13299dSbellardecho "C compiler $cc" 470983469015Sbellardecho "Host C compiler $host_cc" 471083f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 47113c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 471245d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 47130c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 4714a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 47150c439cbfSJuan Quintelaecho "LDFLAGS $LDFLAGS" 47167d13299dSbellardecho "make $make" 47176a882643Spbrookecho "install $install" 4718c886edfbSBlue Swirlecho "python $python" 4719e2d8830eSBradif test "$slirp" = "yes" ; then 4720e2d8830eSBrad echo "smbd $smbd" 4721e2d8830eSBradfi 472217969268SFam Zhengecho "module support $modules" 4723a98fd896Sbellardecho "host CPU $cpu" 4724de83cd02Sbellardecho "host big endian $bigendian" 472597a847bcSbellardecho "target list $target_list" 4726ade25b0dSaurel32echo "tcg debug enabled $debug_tcg" 47277d13299dSbellardecho "gprof enabled $gprof" 472803b4fe7dSaliguoriecho "sparse enabled $sparse" 47291625af87Saliguoriecho "strip binaries $strip_opt" 473005c2a3e7Sbellardecho "profiler $profiler" 473143ce4dfeSbellardecho "static build $static" 47325b0753e0Sbellardif test "$darwin" = "yes" ; then 47335b0753e0Sbellard echo "Cocoa support $cocoa" 47345b0753e0Sbellardfi 4735e2134eb9SGerd Hoffmannecho "pixman $pixman" 473697a847bcSbellardecho "SDL support $sdl" 4737a4ccabcfSAnthony Liguoriecho "GTK support $gtk" 4738925a0400SGerd Hoffmannecho "GTK GL support $gtk_gl" 4739ddbb0d09SDaniel P. Berrangeecho "GNUTLS support $gnutls" 4740ddbb0d09SDaniel P. Berrangeecho "GNUTLS hash $gnutls_hash" 4741b917da4cSDaniel P. Berrangeecho "GNUTLS rnd $gnutls_rnd" 474291bfcdb0SDaniel P. Berrangeecho "libgcrypt $gcrypt" 474337788f25SDaniel P. Berrangeecho "libgcrypt kdf $gcrypt_kdf" 474418f49881SPeter Maydellif test "$nettle" = "yes"; then 474518f49881SPeter Maydell echo "nettle $nettle ($nettle_version)" 474618f49881SPeter Maydellelse 474718f49881SPeter Maydell echo "nettle $nettle" 474818f49881SPeter Maydellfi 47499a2fd434SDaniel P. Berrangeecho "libtasn1 $tasn1" 4750bbbf9bfbSStefan Weilecho "VTE support $vte" 47514d3b6f6eSbalrogecho "curses support $curses" 47529d9e1521SGerd Hoffmannecho "virgl support $virglrenderer" 4753769ce76dSAlexander Grafecho "curl support $curl" 475467b915a5Sbellardecho "mingw32 support $mingw32" 47550c58ac1cSmalcecho "Audio drivers $audio_drv_list" 4756b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 4757b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 4758983eef5aSMeador Ingeecho "VirtFS support $virtfs" 4759821601eaSJes Sorensenecho "VNC support $vnc" 4760821601eaSJes Sorensenif test "$vnc" = "yes" ; then 47612f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 47622f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 4763efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 4764821601eaSJes Sorensenfi 47653142255cSblueswir1if test -n "$sparc_cpu"; then 47663142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 47673142255cSblueswir1fi 4768e37630caSaliguoriecho "xen support $xen" 47693996e85cSPaul Durrantif test "$xen" = "yes" ; then 47703996e85cSPaul Durrant echo "xen ctrl version $xen_ctrl_version" 477164a7ad6fSIan Campbell echo "pv dom build $xen_pv_domain_build" 47723996e85cSPaul Durrantfi 47732e4d9fb1Saurel32echo "brlapi support $brlapi" 4774a20a6f46SJuan Quintelaecho "bluez support $bluez" 4775a25dba17SJuan Quintelaecho "Documentation $docs" 477640d6444eSAvi Kivityecho "PIE $pie" 47778a16d273Sthsecho "vde support $vde" 477858952137SVincenzo Maffioneecho "netmap support $netmap" 47795c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 4780758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 478177755340Sthsecho "Install blobs $blobs" 4782b31a0277SJuan Quintelaecho "KVM support $kvm" 47832da776dbSMichael R. Hinesecho "RDMA support $rdma" 47849195b2c2SStefan Weilecho "TCG interpreter $tcg_interpreter" 4785f652e6afSaurel32echo "fdt support $fdt" 4786ceb42de8Saliguoriecho "preadv support $preadv" 47875f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 4788e78815a5SAndreas Färberecho "madvise $madvise" 4789e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 47901e9737daSRichard Hendersonecho "sigev_thread_id $sigev_thread_id" 4791ee682d27SStefan Weilecho "uuid support $uuid" 479247e98658SCorey Bryantecho "libcap-ng support $cap_ng" 4793d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 47945e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 47955b808275SLluís Vilanovaecho "Trace backends $trace_backends" 4796713572a7SMarc-André Lureauif have_backend "simple"; then 47979410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 4798e00e36fbSStefan Weilfi 4799c9dd4074SStefan Weilif test "$spice" = "yes"; then 48002e0e3c39SAlon Levyecho "spice support $spice ($spice_protocol_version/$spice_server_version)" 4801c9dd4074SStefan Weilelse 4802c9dd4074SStefan Weilecho "spice support $spice" 4803c9dd4074SStefan Weilfi 4804f27aaf4bSChristian Brunnerecho "rbd support $rbd" 4805dce512deSChristoph Hellwigecho "xfsctl support $xfs" 48067b02f544SMarc-André Lureauecho "smartcard support $smartcard" 48072b2325ffSGerd Hoffmannecho "libusb $libusb" 480869354a83SHans de Goedeecho "usb net redir $usb_redir" 4809da076ffeSGerd Hoffmannecho "OpenGL support $opengl" 4810014cb152SGerd Hoffmannecho "OpenGL dmabufs $opengl_dmabuf" 4811c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 48126542aa9cSPeter Lievenecho "libnfs support $libnfs" 4813d138cee9SMichael Rothecho "build guest agent $guest_agent" 4814d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 481550cbebb9SMichael Rothecho "QGA w32 disk info $guest_agent_ntddscsi" 48164c875d89SMichael Rothecho "QGA MSI support $guest_agent_msi" 4817f794573eSEduardo Otuboecho "seccomp support $seccomp" 48187c2acc70SPeter Maydellecho "coroutine backend $coroutine" 481970c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 4820eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 4821c9a12e75SChrysostomos Nanakosecho "Archipelago support $archipelago" 48221d728c39SBlue Swirlecho "gcov $gcov_tool" 48231d728c39SBlue Swirlecho "gcov enabled $gcov" 4824ab214c29SStefan Bergerecho "TPM support $tpm" 48250a12ec87SRichard W.M. Jonesecho "libssh2 support $libssh2" 48263b8acc11SPaolo Bonziniecho "TPM passthrough $tpm_passthrough" 48273556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 48284f18b782SJeff Codyecho "vhdx $vhdx" 4829607dacd0Sqiaonuohanecho "lzo support $lzo" 4830607dacd0Sqiaonuohanecho "snappy support $snappy" 48316b383c08SPeter Wuecho "bzip2 support $bzip2" 4832a99d57bbSWanlong Gaoecho "NUMA host support $numa" 48332847b469SFam Zhengecho "tcmalloc support $tcmalloc" 48347b01cb97SAlexandre Derumierecho "jemalloc support $jemalloc" 483599f2dbd3SLiang Liecho "avx2 optimization $avx2_opt" 483667b915a5Sbellard 48371ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then 483824b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 4839e8cd23deSbellardfi 484097a847bcSbellard 484198ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 484297a847bcSbellard 4843dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 4844dbd99ae3SStefan Weil 484598ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 484698ec69acSJuan Quintelaecho >> $config_host_mak 484798ec69acSJuan Quintela 4848e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 484999d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 485099d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 48513aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 48528bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 48530f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 485499d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 485599d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 485622d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 48579afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 48589afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 4859e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 48605a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 4861785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 48625a699bbbSLaszlo Ersekfi 4863f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 4864f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 4865f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 4866834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 4867f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 4868804edf29SJuan Quintela 486998ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 4870727e5283SPaolo Bonzini 4871f8393946Saurel32if test "$debug_tcg" = "yes" ; then 48722358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 4873f8393946Saurel32fi 48741625af87Saliguoriif test "$strip_opt" = "yes" ; then 487552ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 48761625af87Saliguorifi 48777d13299dSbellardif test "$bigendian" = "yes" ; then 4878e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 487997a847bcSbellardfi 488067b915a5Sbellardif test "$mingw32" = "yes" ; then 488198ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 48829fe6de94SBlue Swirl rc_version=`cat $source_path/VERSION` 48839fe6de94SBlue Swirl version_major=${rc_version%%.*} 48849fe6de94SBlue Swirl rc_version=${rc_version#*.} 48859fe6de94SBlue Swirl version_minor=${rc_version%%.*} 48869fe6de94SBlue Swirl rc_version=${rc_version#*.} 48879fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 48889fe6de94SBlue Swirl version_micro=0 48899fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 48909fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4891d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 4892d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 4893f33ca81fSMichael Roth echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 4894d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 4895d9840e25STomoki Sekiyama fi 489650cbebb9SMichael Roth if test "$guest_agent_ntddscsi" = "yes" ; then 489750cbebb9SMichael Roth echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak 489850cbebb9SMichael Roth fi 48991a34904eSMichael Roth if test "$guest_agent_msi" = "yes"; then 49009dacf32dSYossi Hindin echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 49019dacf32dSYossi Hindin echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 49029dacf32dSYossi Hindin echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 49039dacf32dSYossi Hindin echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 49049dacf32dSYossi Hindin echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 49059dacf32dSYossi Hindin echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 49069dacf32dSYossi Hindin echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 49079dacf32dSYossi Hindin fi 4908210fa556Spbrookelse 490935f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 4910210fa556Spbrookfi 4911128ab2ffSblueswir1 4912dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 4913dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 4914dffcb71cSMark McLoughlinfi 4915dffcb71cSMark McLoughlin 491683fb7adfSbellardif test "$darwin" = "yes" ; then 491798ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 491883fb7adfSbellardfi 4919b29fe3edSmalc 4920b29fe3edSmalcif test "$aix" = "yes" ; then 492198ec69acSJuan Quintela echo "CONFIG_AIX=y" >> $config_host_mak 4922b29fe3edSmalcfi 4923b29fe3edSmalc 4924ec530c81Sbellardif test "$solaris" = "yes" ; then 492598ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 49262358a494SJuan Quintela echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 49270475a5caSths if test "$needs_libsunmath" = "yes" ; then 492875b5a697SJuan Quintela echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 49290475a5caSths fi 4930ec530c81Sbellardfi 4931179cf400SAndreas Färberif test "$haiku" = "yes" ; then 4932179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 4933179cf400SAndreas Färberfi 493497a847bcSbellardif test "$static" = "yes" ; then 493598ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 493697a847bcSbellardfi 49371ba16968SStefan Weilif test "$profiler" = "yes" ; then 49382358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 493905c2a3e7Sbellardfi 4940c20709aaSbellardif test "$slirp" = "yes" ; then 494198ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 4942e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 4943c20709aaSbellardfi 49448a16d273Sthsif test "$vde" = "yes" ; then 494598ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 49468a16d273Sthsfi 494758952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 494858952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 494958952137SVincenzo Maffionefi 4950015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 4951015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 4952015a33bdSGongleifi 495347e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 495447e98658SCorey Bryant echo "CONFIG_LIBCAP=y" >> $config_host_mak 495547e98658SCorey Bryantfi 49562358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 49570c58ac1cSmalcfor drv in $audio_drv_list; do 4958bb55b712SStefan Weil def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 495998ec69acSJuan Quintela echo "$def=y" >> $config_host_mak 49600c58ac1cSmalcdone 496167f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then 496267f86e8eSJuan Quintela echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 496367f86e8eSJuan Quintelafi 4964d5631638Smalcif test "$audio_win_int" = "yes" ; then 4965d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 4966d5631638Smalcfi 4967b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 4968b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 4969821601eaSJes Sorensenif test "$vnc" = "yes" ; then 4970821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 4971821601eaSJes Sorensenfi 49722f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 497398ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 49742f9606b3Saliguorifi 4975821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 49762f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 49772f6f5c7aSCorentin Charyfi 4978821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 4979efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 4980efe556adSCorentin Charyfi 498176655d6dSaliguoriif test "$fnmatch" = "yes" ; then 49822358a494SJuan Quintela echo "CONFIG_FNMATCH=y" >> $config_host_mak 498376655d6dSaliguorifi 4984ee682d27SStefan Weilif test "$uuid" = "yes" ; then 4985ee682d27SStefan Weil echo "CONFIG_UUID=y" >> $config_host_mak 4986ee682d27SStefan Weilfi 4987dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 4988dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 4989dce512deSChristoph Hellwigfi 4990b1a550a0Spbrookqemu_version=`head $source_path/VERSION` 499198ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 49922358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 499398ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 499498ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak 4995a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 499698ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 4997cc8ae6deSpbrookfi 499817969268SFam Zhengif test "$modules" = "yes"; then 4999e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 5000e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 5001e26110cfSFam Zheng echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak 500217969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 500317969268SFam Zhengfi 50041ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 500598ec69acSJuan Quintela echo "CONFIG_SDL=y" >> $config_host_mak 5006a3f4d63dSCole Robinson echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak 50078ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 500849ecc3faSbellardfi 500949ecc3faSbellardif test "$cocoa" = "yes" ; then 501098ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 501149ecc3faSbellardfi 50124d3b6f6eSbalrogif test "$curses" = "yes" ; then 501398ec69acSJuan Quintela echo "CONFIG_CURSES=y" >> $config_host_mak 5014ab4e5602SJan Kiszkafi 5015ebc996f3SRiku Voipioif test "$utimens" = "yes" ; then 50162358a494SJuan Quintela echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 5017ebc996f3SRiku Voipiofi 5018099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 50192358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 5020099d6b0fSRiku Voipiofi 502140ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 502240ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 502340ff6d7eSKevin Wolffi 50243ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 50252358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 50263ce34dfbSvibisreenivasanfi 5027c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 5028c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 5029c2882b96SRiku Voipiofi 5030751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then 5031751bcc39SMarc-André Lureau echo "CONFIG_MEMFD=y" >> $config_host_mak 5032751bcc39SMarc-André Lureaufi 5033d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 5034d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 5035d0927938SUlrich Hechtfi 50363d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 50373d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 50383d4fa43eSKusanagi Kouichifi 5039b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 5040b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 5041b953f075SDenis V. Lunevfi 5042ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 5043ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 5044ed911435SKevin Wolffi 5045c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 5046c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 5047c727f47dSPeter Maydellfi 5048dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 5049dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 5050dace20dcSPeter Maydellfi 5051d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 5052d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 5053d0927938SUlrich Hechtfi 50544e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 50554e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 50564e0c6529SAlex Blighfi 5057cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 5058cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 5059cd758dd0SAlex Blighfi 50603b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 50613b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 50623b6edd16SPeter Maydellfi 50633b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 50643b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 50653b6edd16SPeter Maydellfi 50663b6edd16SPeter Maydellif test "$epoll_pwait" = "yes" ; then 50673b6edd16SPeter Maydell echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 50683b6edd16SPeter Maydellfi 5069a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 5070a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 5071a8fd1abaSPeter Maydellfi 507251834341SRiku Voipioif test "$timerfd" = "yes" ; then 507351834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 507451834341SRiku Voipiofi 50759af5c906SRiku Voipioif test "$setns" = "yes" ; then 50769af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 50779af5c906SRiku Voipiofi 50783b3f24adSaurel32if test "$inotify" = "yes" ; then 50792358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 50803b3f24adSaurel32fi 5081c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 5082c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 5083c05c7a73SRiku Voipiofi 50846ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 50856ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 50866ae9a1f4SJuan Quintelafi 50876ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 50886ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 50896ae9a1f4SJuan Quintelafi 5090769ce76dSAlexander Grafif test "$curl" = "yes" ; then 5091d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 5092b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 50936ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 5094769ce76dSAlexander Graffi 50952e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 509698ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 50972e4d9fb1Saurel32fi 5098fb599c9aSbalrogif test "$bluez" = "yes" ; then 509998ec69acSJuan Quintela echo "CONFIG_BLUEZ=y" >> $config_host_mak 5100ef7635ecSJuan Quintela echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 5101fb599c9aSbalrogfi 5102d46f7c9eSDr. David Alan Gilbertif test "$glib_subprocess" = "yes" ; then 51039d41401bSMichael S. Tsirkin echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak 51049d41401bSMichael S. Tsirkinfi 5105e18df141SAnthony Liguoriecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 5106a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 5107a4ccabcfSAnthony Liguori echo "CONFIG_GTK=y" >> $config_host_mak 5108a3f4d63dSCole Robinson echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak 5109a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 5110014cb152SGerd Hoffmann echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 5111925a0400SGerd Hoffmann if test "$gtk_gl" = "yes" ; then 5112925a0400SGerd Hoffmann echo "CONFIG_GTK_GL=y" >> $config_host_mak 5113925a0400SGerd Hoffmann fi 5114bbbf9bfbSStefan Weilfi 5115ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then 5116ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS=y" >> $config_host_mak 5117ddbb0d09SDaniel P. Berrangefi 5118ddbb0d09SDaniel P. Berrangeif test "$gnutls_hash" = "yes" ; then 5119ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak 5120ddbb0d09SDaniel P. Berrangefi 5121b917da4cSDaniel P. Berrangeif test "$gnutls_rnd" = "yes" ; then 5122b917da4cSDaniel P. Berrange echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak 5123b917da4cSDaniel P. Berrangefi 512491bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then 512591bfcdb0SDaniel P. Berrange echo "CONFIG_GCRYPT=y" >> $config_host_mak 512637788f25SDaniel P. Berrange if test "$gcrypt_kdf" = "yes" ; then 512737788f25SDaniel P. Berrange echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak 512837788f25SDaniel P. Berrange fi 512962893b67SDaniel P. Berrangefi 513091bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then 513191bfcdb0SDaniel P. Berrange echo "CONFIG_NETTLE=y" >> $config_host_mak 5132becaeb72SRadim Krčmář echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 5133ed754746SDaniel P. Berrangefi 51349a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then 51359a2fd434SDaniel P. Berrange echo "CONFIG_TASN1=y" >> $config_host_mak 51369a2fd434SDaniel P. Berrangefi 5137559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then 5138559607eaSDaniel P. Berrange echo "HAVE_IFADDRS_H=y" >> $config_host_mak 5139559607eaSDaniel P. Berrangefi 5140bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 5141bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 5142a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 5143a4ccabcfSAnthony Liguorifi 51449d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then 51459d9e1521SGerd Hoffmann echo "CONFIG_VIRGL=y" >> $config_host_mak 51469d9e1521SGerd Hoffmann echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 51479d9e1521SGerd Hoffmann echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 51489d9e1521SGerd Hoffmannfi 5149e37630caSaliguoriif test "$xen" = "yes" ; then 51506dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 5151d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 515264a7ad6fSIan Campbell if test "$xen_pv_domain_build" = "yes" ; then 515364a7ad6fSIan Campbell echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak 515464a7ad6fSIan Campbell fi 5155e37630caSaliguorifi 51565c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 51575c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 51585c6c3a6cSChristoph Hellwigfi 5159758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 5160758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 5161758e8e38SVenkateswararao Jujjuri (JV)fi 51624f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 51634f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 51644f26f2b6SAvi Kivityfi 5165983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 5166758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 5167758e8e38SVenkateswararao Jujjuri (JV)fi 51685e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 51695e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 51705e9be92dSNicholas Bellingerfi 517103ce5744SNikolay Nikolaevif test "$vhost_net" = "yes" ; then 517203ce5744SNikolay Nikolaev echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak 517303ce5744SNikolay Nikolaevfi 517477755340Sthsif test "$blobs" = "yes" ; then 517598ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 517677755340Sthsfi 5177bf9298b9Saliguoriif test "$iovec" = "yes" ; then 51782358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 5179bf9298b9Saliguorifi 5180ceb42de8Saliguoriif test "$preadv" = "yes" ; then 51812358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 5182ceb42de8Saliguorifi 5183f652e6afSaurel32if test "$fdt" = "yes" ; then 51843f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 5185f652e6afSaurel32fi 5186dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 5187dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 5188dcc38d1cSMarcelo Tosattifi 51899195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 51909195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 51919195b2c2SStefan Weilfi 51925f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 51935f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 51945f6b9e8fSBlue Swirlfi 5195e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 5196e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 5197e78815a5SAndreas Färberfi 5198e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 5199e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 5200e78815a5SAndreas Färberfi 52011e9737daSRichard Hendersonif test "$sigev_thread_id" = "yes" ; then 52021e9737daSRichard Henderson echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak 52031e9737daSRichard Hendersonfi 520497a847bcSbellard 5205cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 5206cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 5207cd4ec0b4SGerd Hoffmannfi 5208cd4ec0b4SGerd Hoffmann 52097b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then 52107b02f544SMarc-André Lureau echo "CONFIG_SMARTCARD=y" >> $config_host_mak 5211111a38b0SRobert Relyeafi 5212111a38b0SRobert Relyea 52132b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 52142b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 52152b2325ffSGerd Hoffmannfi 52162b2325ffSGerd Hoffmann 521769354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 521869354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 521969354a83SHans de Goedefi 522069354a83SHans de Goede 5221da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 5222da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 5223f676c67eSJeremy White echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak 5224da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 5225014cb152SGerd Hoffmann if test "$opengl_dmabuf" = "yes" ; then 5226014cb152SGerd Hoffmann echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 5227014cb152SGerd Hoffmann fi 522820ff075bSMichael Wallefi 522920ff075bSMichael Walle 523099f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then 523199f2dbd3SLiang Li echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 523299f2dbd3SLiang Lifi 523399f2dbd3SLiang Li 5234607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 5235607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 5236607dacd0Sqiaonuohanfi 5237607dacd0Sqiaonuohan 5238607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 5239607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 5240607dacd0Sqiaonuohanfi 5241607dacd0Sqiaonuohan 52426b383c08SPeter Wuif test "$bzip2" = "yes" ; then 52436b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 52446b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 52456b383c08SPeter Wufi 52466b383c08SPeter Wu 5247c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 5248d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 52496ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 52506ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 5251c589b249SRonnie Sahlbergfi 5252c589b249SRonnie Sahlberg 52536542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 52546542aa9cSPeter Lieven echo "CONFIG_LIBNFS=y" >> $config_host_mak 52556542aa9cSPeter Lievenfi 52566542aa9cSPeter Lieven 5257f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 5258f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 5259f794573eSEduardo Otubofi 5260f794573eSEduardo Otubo 526183fb7adfSbellard# XXX: suppress that 52627d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 52632358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 52647d3505c5Sbellardfi 52657d3505c5Sbellard 526620ff6c80SAnthony Liguoriif test "$zero_malloc" = "yes" ; then 526720ff6c80SAnthony Liguori echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 526820ff6c80SAnthony Liguorifi 52694d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then 52704d9310f4SDaniel P. Berrange echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 52714d9310f4SDaniel P. Berrangefi 52723556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 52733556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 52743556c233SPaolo Bonzinifi 5275f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 5276d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 52776ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 52786ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 5279f27aaf4bSChristian Brunnerfi 528020ff6c80SAnthony Liguori 52817c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 528270c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 528370c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 528470c60c08SStefan Hajnoczielse 528570c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 528670c60c08SStefan Hajnoczifi 5287d0e2fce5SAneesh Kumar K.V 5288d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 5289d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 5290d2042378SAneesh Kumar K.Vfi 5291d2042378SAneesh Kumar K.V 5292e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 5293e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 5294e06a765eSHarsh Prateek Borafi 5295e06a765eSHarsh Prateek Bora 5296cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 5297cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 529806d71fa1SPeter Maydellfi 529906d71fa1SPeter Maydell 53003f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 53013f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 53023f4349dcSKevin Wolffi 53033f4349dcSKevin Wolf 53048ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 53058ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 53068ab1bf12SLuiz Capitulinofi 53078ab1bf12SLuiz Capitulino 530876a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 530976a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 531076a347e1SRichard Hendersonfi 531176a347e1SRichard Henderson 5312f540166bSRichard Hendersonif test "$int128" = "yes" ; then 5313f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 5314f540166bSRichard Hendersonfi 5315f540166bSRichard Henderson 53161e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 53171e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 53181e6e9acaSRichard Hendersonfi 53191e6e9acaSRichard Henderson 5320eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 5321d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 53226ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 53236ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 5324eb100396SBharata B Raofi 5325eb100396SBharata B Rao 53260c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 53270c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 53280c14fb47SBharata B Raofi 53290c14fb47SBharata B Rao 53307c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 53317c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 53327c815372SBharata B Raofi 53337c815372SBharata B Rao 5334c9a12e75SChrysostomos Nanakosif test "$archipelago" = "yes" ; then 5335c9a12e75SChrysostomos Nanakos echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak 5336c9a12e75SChrysostomos Nanakos echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak 5337c9a12e75SChrysostomos Nanakosfi 5338c9a12e75SChrysostomos Nanakos 53390a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then 5340d3399d7cSFam Zheng echo "CONFIG_LIBSSH2=m" >> $config_host_mak 53416ebc91e5SFam Zheng echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 53426ebc91e5SFam Zheng echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 53430a12ec87SRichard W.M. Jonesfi 53440a12ec87SRichard W.M. Jones 53454f18b782SJeff Codyif test "$vhdx" = "yes" ; then 53464f18b782SJeff Cody echo "CONFIG_VHDX=y" >> $config_host_mak 53474f18b782SJeff Codyfi 53484f18b782SJeff Cody 534968063649Sblueswir1# USB host support 5350b5613fdcSGerd Hoffmannif test "$libusb" = "yes"; then 53512b2325ffSGerd Hoffmann echo "HOST_USB=libusb legacy" >> $config_host_mak 5352b5613fdcSGerd Hoffmannelse 535398ec69acSJuan Quintela echo "HOST_USB=stub" >> $config_host_mak 5354b5613fdcSGerd Hoffmannfi 535568063649Sblueswir1 53563b8acc11SPaolo Bonzini# TPM passthrough support? 53573b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 53583b8acc11SPaolo Bonzini echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 53593b8acc11SPaolo Bonzini if test "$tpm_passthrough" = "yes"; then 53603b8acc11SPaolo Bonzini echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 53613b8acc11SPaolo Bonzini fi 53623b8acc11SPaolo Bonzinifi 53633b8acc11SPaolo Bonzini 53645b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 53655b808275SLluís Vilanovaif have_backend "nop"; then 53666d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 536722890ab5SPrerna Saxenafi 53685b808275SLluís Vilanovaif have_backend "simple"; then 53696d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 53706d8a764eSLluís # Set the appropriate trace file. 5371953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 53729410b56cSPrerna Saxenafi 5373ed7f5f1dSPaolo Bonziniif have_backend "log"; then 5374ed7f5f1dSPaolo Bonzini echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 53756d8a764eSLluísfi 53765b808275SLluís Vilanovaif have_backend "ust"; then 53776d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 53786d8a764eSLluísfi 53795b808275SLluís Vilanovaif have_backend "dtrace"; then 53806d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 53816d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 53826d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 53836d8a764eSLluís fi 5384c276b17dSDaniel P. Berrangefi 53855b808275SLluís Vilanovaif have_backend "ftrace"; then 5386781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 5387781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 5388781e9545SEiichi Tsukata else 538921684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 5390781e9545SEiichi Tsukata fi 5391781e9545SEiichi Tsukatafi 53929410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 53939410b56cSPrerna Saxena 53942da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 53952da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 53962da776dbSMichael R. Hinesfi 53972da776dbSMichael R. Hines 53985c312079SDr. David Alan Gilbert# Hold two types of flag: 53995c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 54005c312079SDr. David Alan Gilbert# a thread we have a handle to 54015c312079SDr. David Alan Gilbert# CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular 54025c312079SDr. David Alan Gilbert# platform 54035c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then 54045c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 54055c312079SDr. David Alan Gilbert echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak 54065c312079SDr. David Alan Gilbertfi 54075c312079SDr. David Alan Gilbert 54085b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 54095b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 54105b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 54115b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 54125b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 54135b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 5414c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 54155b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 541640d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 541740d964b5SRichard Henderson QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES" 54185b5e3037SPaolo Bonzinielse 54195b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 54205b5e3037SPaolo Bonzinifi 54215b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 54225b5e3037SPaolo Bonzini 542398ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 542498ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 5425804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 5426804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 54271901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 54281901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 54291901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 543021655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 5431c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 5432804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 5433a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 5434a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 5435a31a8642SMichael S. Tsirkinfi 54362b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak 5437804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 543883f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 54393c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 5440804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 544145d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 54423dd46c78SBlue Swirlecho "AS=$as" >> $config_host_mak 54433dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 5444804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 5445804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 54464852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 54479fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 5448e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 544946eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 5450a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 5451f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 5452e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 5453e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 545480fd48dfSChristian Borntraeger echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak 54552944d742SGerd Hoffmann echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak 5456e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 5457e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 5458e39f0062SPaolo Bonzinifi 545942da6041SGerd Hoffmannif test "$cross_prefix" != ""; then 546042da6041SGerd Hoffmann echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 546142da6041SGerd Hoffmannelse 546242da6041SGerd Hoffmann echo "AUTOCONF_HOST := " >> $config_host_mak 546342da6041SGerd Hoffmannfi 5464e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak 546546eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 546673da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 54673e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 5468804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 546917969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 547017969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 5471957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 547290246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 547390246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 547494dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 5475cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 54761d728c39SBlue Swirlif test "$gcov" = "yes" ; then 54771d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 54781d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 54791d728c39SBlue Swirlfi 5480804edf29SJuan Quintela 54816efd7517SPeter Maydell# use included Linux headers 54826efd7517SPeter Maydellif test "$linux" = "yes" ; then 5483a307beb6SAndreas Färber mkdir -p linux-headers 54846efd7517SPeter Maydell case "$cpu" in 5485c72b26ecSRichard Henderson i386|x86_64|x32) 548608312a63SPeter Maydell linux_arch=x86 54876efd7517SPeter Maydell ;; 54886efd7517SPeter Maydell ppcemb|ppc|ppc64) 548908312a63SPeter Maydell linux_arch=powerpc 54906efd7517SPeter Maydell ;; 54916efd7517SPeter Maydell s390x) 549208312a63SPeter Maydell linux_arch=s390 549308312a63SPeter Maydell ;; 54941f080313SClaudio Fontana aarch64) 54951f080313SClaudio Fontana linux_arch=arm64 54961f080313SClaudio Fontana ;; 5497222e7d11SSanjay Lal mips64) 5498222e7d11SSanjay Lal linux_arch=mips 5499222e7d11SSanjay Lal ;; 550008312a63SPeter Maydell *) 550108312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 550208312a63SPeter Maydell linux_arch="$cpu" 55036efd7517SPeter Maydell ;; 55046efd7517SPeter Maydell esac 550508312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 550608312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 550708312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 550808312a63SPeter Maydell fi 55096efd7517SPeter Maydellfi 55106efd7517SPeter Maydell 551197a847bcSbellardfor target in $target_list; do 551297a847bcSbellardtarget_dir="$target" 551325be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 5514c1799a84SPaolo Bonzinitarget_name=`echo $target | cut -d '-' -f 1` 551597a847bcSbellardtarget_bigendian="no" 55161f3d3c8fSJuan Quintela 5517c1799a84SPaolo Bonzinicase "$target_name" in 5518d15a9c23SAnthony Green armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 5519ea2d6a39SJuan Quintela target_bigendian=yes 5520ea2d6a39SJuan Quintela ;; 5521ea2d6a39SJuan Quintelaesac 552297a847bcSbellardtarget_softmmu="no" 5523997344f3Sbellardtarget_user_only="no" 5524831b7825Sthstarget_linux_user="no" 552584778508Sblueswir1target_bsd_user="no" 55269e407a85Spbrookcase "$target" in 5527c1799a84SPaolo Bonzini ${target_name}-softmmu) 55289e407a85Spbrook target_softmmu="yes" 55299e407a85Spbrook ;; 5530c1799a84SPaolo Bonzini ${target_name}-linux-user) 55319c7a4202SBlue Swirl if test "$linux" != "yes" ; then 553276ad07a4SPeter Maydell error_exit "Target '$target' is only available on a Linux host" 55339c7a4202SBlue Swirl fi 55349e407a85Spbrook target_user_only="yes" 55359e407a85Spbrook target_linux_user="yes" 55369e407a85Spbrook ;; 5537c1799a84SPaolo Bonzini ${target_name}-bsd-user) 55389cf55765SBlue Swirl if test "$bsd" != "yes" ; then 553976ad07a4SPeter Maydell error_exit "Target '$target' is only available on a BSD host" 55409c7a4202SBlue Swirl fi 554184778508Sblueswir1 target_user_only="yes" 554284778508Sblueswir1 target_bsd_user="yes" 554384778508Sblueswir1 ;; 55449e407a85Spbrook *) 554576ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 55469e407a85Spbrook exit 1 55479e407a85Spbrook ;; 55489e407a85Spbrookesac 5549831b7825Sths 555097a847bcSbellardmkdir -p $target_dir 555125be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 555297a847bcSbellard 5553e5fe0c52Spbrookbflt="no" 5554c1799a84SPaolo Bonziniinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"` 555556aebc89Spbrookgdb_xml_files="" 55567ba1e619Saliguori 5557c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 55586acff7daSJuan QuintelaTARGET_BASE_ARCH="" 5559e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 5560e73aae67SJuan Quintela 5561c1799a84SPaolo Bonzinicase "$target_name" in 55622408a527Saurel32 i386) 55632408a527Saurel32 ;; 55642408a527Saurel32 x86_64) 55656acff7daSJuan Quintela TARGET_BASE_ARCH=i386 55662408a527Saurel32 ;; 55672408a527Saurel32 alpha) 55682408a527Saurel32 ;; 55692408a527Saurel32 arm|armeb) 5570b498c8a0SJuan Quintela TARGET_ARCH=arm 5571e5fe0c52Spbrook bflt="yes" 557256aebc89Spbrook gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 55732408a527Saurel32 ;; 55746a49fa95SAlexander Graf aarch64) 55756a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 55766a49fa95SAlexander Graf bflt="yes" 55778f95ce2eSPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 55786a49fa95SAlexander Graf ;; 55792408a527Saurel32 cris) 55802408a527Saurel32 ;; 5581613a22c9SMichael Walle lm32) 5582613a22c9SMichael Walle ;; 55832408a527Saurel32 m68k) 55840938cda5Saurel32 bflt="yes" 558556aebc89Spbrook gdb_xml_files="cf-core.xml cf-fp.xml" 55862408a527Saurel32 ;; 5587877fdc12SEdgar E. Iglesias microblaze|microblazeel) 5588877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 558972b675caSEdgar E. Iglesias bflt="yes" 559072b675caSEdgar E. Iglesias ;; 55912408a527Saurel32 mips|mipsel) 5592b498c8a0SJuan Quintela TARGET_ARCH=mips 559325be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 55942408a527Saurel32 ;; 55952408a527Saurel32 mipsn32|mipsn32el) 5596597e2cecSRichard Henderson TARGET_ARCH=mips64 55976acff7daSJuan Quintela TARGET_BASE_ARCH=mips 559825be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 5599597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 56002408a527Saurel32 ;; 56012408a527Saurel32 mips64|mips64el) 5602b498c8a0SJuan Quintela TARGET_ARCH=mips64 56036acff7daSJuan Quintela TARGET_BASE_ARCH=mips 560425be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 56052408a527Saurel32 ;; 5606d15a9c23SAnthony Green moxie) 5607d15a9c23SAnthony Green ;; 5608e67db06eSJia Liu or32) 5609e67db06eSJia Liu TARGET_ARCH=openrisc 5610e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 5611e67db06eSJia Liu ;; 56122408a527Saurel32 ppc) 5613c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 56142408a527Saurel32 ;; 56152408a527Saurel32 ppcemb) 56166acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5617e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 5618c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 56192408a527Saurel32 ;; 56202408a527Saurel32 ppc64) 56216acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5622e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 56231438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 56242408a527Saurel32 ;; 56259c35126cSDoug Kwan ppc64le) 56269c35126cSDoug Kwan TARGET_ARCH=ppc64 56279c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 56289c35126cSDoug Kwan TARGET_ABI_DIR=ppc 56291438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 56309c35126cSDoug Kwan ;; 56312408a527Saurel32 ppc64abi32) 5632b498c8a0SJuan Quintela TARGET_ARCH=ppc64 56336acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 5634e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 563525be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 56361438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 56372408a527Saurel32 ;; 56382408a527Saurel32 sh4|sh4eb) 5639b498c8a0SJuan Quintela TARGET_ARCH=sh4 56404dbed897Spbrook bflt="yes" 56412408a527Saurel32 ;; 56422408a527Saurel32 sparc) 56432408a527Saurel32 ;; 56442408a527Saurel32 sparc64) 56456acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 56462408a527Saurel32 ;; 56472408a527Saurel32 sparc32plus) 5648b498c8a0SJuan Quintela TARGET_ARCH=sparc64 56496acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 5650e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 565125be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 56522408a527Saurel32 ;; 565324e804ecSAlexander Graf s390x) 56548a641ff6SDavid Hildenbrand gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml" 565524e804ecSAlexander Graf ;; 5656444e06b1SChen Gang tilegx) 5657444e06b1SChen Gang ;; 56585ecaa4edSPeter Crosthwaite tricore) 56595ecaa4edSPeter Crosthwaite ;; 5660d2fbca94SGuan Xuetao unicore32) 5661d2fbca94SGuan Xuetao ;; 5662cfa550c6SMax Filippov xtensa|xtensaeb) 5663cfa550c6SMax Filippov TARGET_ARCH=xtensa 5664cfa550c6SMax Filippov ;; 56652408a527Saurel32 *) 566676ad07a4SPeter Maydell error_exit "Unsupported target CPU" 56672408a527Saurel32 ;; 56682408a527Saurel32esac 56695e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 56705e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 56715e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 56725e8861a0SPaolo Bonzinifi 56735e8861a0SPaolo Bonzini 56745e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 56755e8861a0SPaolo Bonzini 567699afc91dSDaniel P. Berrangeupper() { 567799afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 567899afc91dSDaniel P. Berrange} 567999afc91dSDaniel P. Berrange 568099afc91dSDaniel P. Berrangetarget_arch_name="`upper $TARGET_ARCH`" 568125be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 5682c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 568325be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 5684e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 5685e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 5686e6e91b9cSJuan Quintelafi 568725be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 5688adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 5689adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 5690adfc3e91SStacey Sonfi 5691c1799a84SPaolo Bonzinicase "$target_name" in 56921b0c87fcSJuan Quintela i386|x86_64) 56931b0c87fcSJuan Quintela if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 569425be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 5695eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 5696eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 5697eb6fda0fSAnthony PERARD fi 5698432d268cSJun Nakajima fi 569959d21e53SAlexander Graf ;; 570059d21e53SAlexander Graf *) 57011b0c87fcSJuan Quintelaesac 5702c1799a84SPaolo Bonzinicase "$target_name" in 5703222e7d11SSanjay Lal aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips) 5704c59249f9SJuan Quintela # Make sure the target and host cpus are compatible 5705c59249f9SJuan Quintela if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 5706c1799a84SPaolo Bonzini \( "$target_name" = "$cpu" -o \ 5707c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 5708c1799a84SPaolo Bonzini \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 5709c1799a84SPaolo Bonzini \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 5710c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 5711222e7d11SSanjay Lal \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \ 5712c1799a84SPaolo Bonzini \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 571318b8263eSMichael Tokarev \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \ 571418b8263eSMichael Tokarev \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \ 571518b8263eSMichael Tokarev \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then 571625be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 57171ba16968SStefan Weil if test "$vhost_net" = "yes" ; then 5718d5970055SMichael S. Tsirkin echo "CONFIG_VHOST_NET=y" >> $config_target_mak 5719421f4448SMarc-André Lureau echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak 5720d5970055SMichael S. Tsirkin fi 5721c59249f9SJuan Quintela fi 5722c59249f9SJuan Quintelaesac 5723de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 572425be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 572597a847bcSbellardfi 572697a847bcSbellardif test "$target_softmmu" = "yes" ; then 572725be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 5728de83cd02Sbellardfi 5729997344f3Sbellardif test "$target_user_only" = "yes" ; then 573025be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 5731a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 5732997344f3Sbellardfi 5733831b7825Sthsif test "$target_linux_user" = "yes" ; then 573425be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 5735831b7825Sthsfi 573656aebc89Spbrooklist="" 573756aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 573856aebc89Spbrook for x in $gdb_xml_files; do 573956aebc89Spbrook list="$list $source_path/gdb-xml/$x" 574056aebc89Spbrook done 574125be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 57423d0f1517SJuan Quintelafi 5743de83cd02Sbellard 5744e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 574525be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 5746e5fe0c52Spbrookfi 574784778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 574825be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 574984778508Sblueswir1fi 57505b0753e0Sbellard 57514afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets 5752fa282484SJuan Quintela 57534afddb55SJuan Quintelacflags="" 5754fa282484SJuan Quintelaldflags="" 57559b8e111fSJuan Quintela 5756c765fcacSPeter Crosthwaitedisas_config() { 5757c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> $config_target_mak 5758c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 5759c765fcacSPeter Crosthwaite} 5760c765fcacSPeter Crosthwaite 576164656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 576264656024SJuan Quintela case "$i" in 576364656024SJuan Quintela alpha) 5764c765fcacSPeter Crosthwaite disas_config "ALPHA" 576564656024SJuan Quintela ;; 576682295d8aSRichard Henderson aarch64) 576782295d8aSRichard Henderson if test -n "${cxx}"; then 5768c765fcacSPeter Crosthwaite disas_config "ARM_A64" 576982295d8aSRichard Henderson fi 577082295d8aSRichard Henderson ;; 577164656024SJuan Quintela arm) 5772c765fcacSPeter Crosthwaite disas_config "ARM" 5773999b53ecSClaudio Fontana if test -n "${cxx}"; then 5774c765fcacSPeter Crosthwaite disas_config "ARM_A64" 5775999b53ecSClaudio Fontana fi 577664656024SJuan Quintela ;; 577764656024SJuan Quintela cris) 5778c765fcacSPeter Crosthwaite disas_config "CRIS" 577964656024SJuan Quintela ;; 578064656024SJuan Quintela hppa) 5781c765fcacSPeter Crosthwaite disas_config "HPPA" 578264656024SJuan Quintela ;; 5783c72b26ecSRichard Henderson i386|x86_64|x32) 5784c765fcacSPeter Crosthwaite disas_config "I386" 578564656024SJuan Quintela ;; 5786903ec55cSAurelien Jarno ia64*) 5787c765fcacSPeter Crosthwaite disas_config "IA64" 5788903ec55cSAurelien Jarno ;; 578979368f49SMichael Walle lm32) 5790c765fcacSPeter Crosthwaite disas_config "LM32" 579179368f49SMichael Walle ;; 579264656024SJuan Quintela m68k) 5793c765fcacSPeter Crosthwaite disas_config "M68K" 579464656024SJuan Quintela ;; 5795877fdc12SEdgar E. Iglesias microblaze*) 5796c765fcacSPeter Crosthwaite disas_config "MICROBLAZE" 579764656024SJuan Quintela ;; 579864656024SJuan Quintela mips*) 5799c765fcacSPeter Crosthwaite disas_config "MIPS" 580064656024SJuan Quintela ;; 5801d15a9c23SAnthony Green moxie*) 5802c765fcacSPeter Crosthwaite disas_config "MOXIE" 5803d15a9c23SAnthony Green ;; 5804e67db06eSJia Liu or32) 5805c765fcacSPeter Crosthwaite disas_config "OPENRISC" 5806e67db06eSJia Liu ;; 580764656024SJuan Quintela ppc*) 5808c765fcacSPeter Crosthwaite disas_config "PPC" 580964656024SJuan Quintela ;; 581024e804ecSAlexander Graf s390*) 5811c765fcacSPeter Crosthwaite disas_config "S390" 581264656024SJuan Quintela ;; 581364656024SJuan Quintela sh4) 5814c765fcacSPeter Crosthwaite disas_config "SH4" 581564656024SJuan Quintela ;; 581664656024SJuan Quintela sparc*) 5817c765fcacSPeter Crosthwaite disas_config "SPARC" 581864656024SJuan Quintela ;; 5819cfa550c6SMax Filippov xtensa*) 5820c765fcacSPeter Crosthwaite disas_config "XTENSA" 5821cfa550c6SMax Filippov ;; 582264656024SJuan Quintela esac 582364656024SJuan Quinteladone 58249195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 5825c765fcacSPeter Crosthwaite disas_config "TCI" 58269195b2c2SStefan Weilfi 582764656024SJuan Quintela 58286ee7126fSJuan Quintelacase "$ARCH" in 58296ee7126fSJuan Quintelaalpha) 58306ee7126fSJuan Quintela # Ensure there's only a single GP 58316ee7126fSJuan Quintela cflags="-msmall-data $cflags" 58326ee7126fSJuan Quintela;; 58336ee7126fSJuan Quintelaesac 58346ee7126fSJuan Quintela 5835d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 583625be210fSJuan Quintela echo "TARGET_GPROF=yes" >> $config_target_mak 5837d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 5838d02c1db3SJuan Quintela cflags="-p $cflags" 5839d02c1db3SJuan Quintela ldflags="-p $ldflags" 5840d02c1db3SJuan Quintela fi 5841d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 5842d02c1db3SJuan Quintela ldflags="-p $ldflags" 584325be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 5844d02c1db3SJuan Quintela fi 5845d02c1db3SJuan Quintelafi 5846d02c1db3SJuan Quintela 58479b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 5848964c6fa1SRichard Henderson ldflags="$ldflags $textseg_ldflags" 5849fa282484SJuan Quintelafi 5850fa282484SJuan Quintela 585125be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak 585225be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 5853fa282484SJuan Quintela 585497a847bcSbellarddone # for target in $targets 58557d13299dSbellard 5856b776eca1SGerd Hoffmannif [ "$pixman" = "internal" ]; then 5857b776eca1SGerd Hoffmann echo "config-host.h: subdir-pixman" >> $config_host_mak 5858b776eca1SGerd Hoffmannfi 5859b776eca1SGerd Hoffmann 5860a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then 5861a540f158SPeter Crosthwaite echo "config-host.h: subdir-dtc" >> $config_host_mak 5862a540f158SPeter Crosthwaitefi 5863a540f158SPeter Crosthwaite 5864a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 5865a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 5866a99d57bbSWanlong Gaofi 5867a99d57bbSWanlong Gao 5868fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then 5869fd0e6053SJohn Snow echo "export CCACHE_CPP2=y" >> $config_host_mak 5870fd0e6053SJohn Snowfi 5871fd0e6053SJohn Snow 5872d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory 5873f93296eaSWenchao XiaDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 58742b170effSMichael TokarevDIRS="$DIRS fsdev" 58759933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 58762d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 58772dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated" 5878c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 5879c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 5880aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 5881ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 5882446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile" 58839933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile" 58842d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 58854652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp" 5886753d11f2SRichard Hendersonfor bios_file in \ 5887753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 58885acc2ec0SGerd Hoffmann $source_path/pc-bios/*.aml \ 5889753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 5890753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 5891e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 5892753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 58934e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 5894753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 5895753d11f2SRichard Hendersondo 58967ea78b74SJan Kiszka FILES="$FILES pc-bios/`basename $bios_file`" 58977ea78b74SJan Kiszkadone 5898c2304b52SMarcel Apfelbaumfor test_file in `find $source_path/tests/acpi-test-data -type f` 5899c2304b52SMarcel Apfelbaumdo 5900c2304b52SMarcel Apfelbaum FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`" 5901c2304b52SMarcel Apfelbaumdone 5902d1807a4fSPaolo Bonzinimkdir -p $DIRS 59037d13299dSbellardfor f in $FILES ; do 5904cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 5905f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 5906f9245e10SPeter Maydell fi 59077d13299dSbellarddone 59081ad2134fSPaul Brook 5909c34ebfdcSAnthony Liguori# temporary config to build submodules 59102d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 5911c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 591237116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 5913c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 59143dd46c78SBlue Swirl echo "AS=$as" >> $config_mak 5915c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 5916c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 59173dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 5918c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 5919a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 5920c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 5921c34ebfdcSAnthony Liguoridone 5922c34ebfdcSAnthony Liguori 592376c7560aSMax Reitz# set up qemu-iotests in this build directory 592476c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 592576c7560aSMax Reitziotests_check="tests/qemu-iotests/check" 592676c7560aSMax Reitz 592776c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 592876c7560aSMax Reitzecho >> "$iotests_common_env" 592976c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 593076c7560aSMax Reitz 593176c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then 593276c7560aSMax Reitz symlink "$source_path/$iotests_check" "$iotests_check" 593376c7560aSMax Reitzfi 593476c7560aSMax Reitz 5935dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 5936dc655404SMichael S. Tsirkincat <<EOD >config.status 5937dc655404SMichael S. Tsirkin#!/bin/sh 5938dc655404SMichael S. Tsirkin# Generated by configure. 5939dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 5940dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 5941dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 5942dc655404SMichael S. TsirkinEOD 5943dc655404SMichael S. Tsirkinprintf "exec" >>config.status 5944dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status 5945dc655404SMichael S. Tsirkinecho >>config.status 5946dc655404SMichael S. Tsirkinchmod +x config.status 5947dc655404SMichael S. Tsirkin 59488cd05ab6SPeter Maydellrm -r "$TMPDIR1" 5949