17d13299dSbellard#!/bin/sh 27d13299dSbellard# 33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard 47d13299dSbellard# 57d13299dSbellard# set temporary file name 67d13299dSbellardif test ! -z "$TMPDIR" ; then 77d13299dSbellard TMPDIR1="${TMPDIR}" 87d13299dSbellardelif test ! -z "$TEMPDIR" ; then 97d13299dSbellard TMPDIR1="${TEMPDIR}" 107d13299dSbellardelse 117d13299dSbellard TMPDIR1="/tmp" 127d13299dSbellardfi 137d13299dSbellard 143ef693a0SbellardTMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c" 1566518bf6SDon SlutzTMPB="qemu-conf-${RANDOM}-$$-${RANDOM}" 1666518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o" 1766518bf6SDon SlutzTMPL="${TMPDIR1}/${TMPB}.lo" 1866518bf6SDon SlutzTMPA="${TMPDIR1}/lib${TMPB}.la" 19a91b857cSmalcTMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe" 207d13299dSbellard 210ba8681eSLoïc Minier# NB: do not call "exit" in the trap handler; this is buggy with some shells; 220ba8681eSLoïc Minier# see <1285349658-3122-1-git-send-email-loic.minier@linaro.org> 230ba8681eSLoïc Miniertrap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM 24da1d85e3SGerd Hoffmannrm -f config.log 259ac81bbbSmalc 26b48e3611SPeter Maydell# Print a helpful header at the top of config.log 27b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 28979ae168SPeter Maydellprintf "# Configured with:" >> config.log 29979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 30979ae168SPeter Maydellecho >> config.log 31b48e3611SPeter Maydellecho "#" >> config.log 32b48e3611SPeter Maydell 33bdf523e6SStefan Weil# Save the configure command line for later reuse. 34bdf523e6SStefan Weilcat <<EOD >config.status 35bdf523e6SStefan Weil#!/bin/sh 36bdf523e6SStefan Weil# Generated by configure. 37bdf523e6SStefan Weil# Run this file to recreate the current configuration. 38bdf523e6SStefan Weil# Compiler output produced by configure, useful for debugging 39bdf523e6SStefan Weil# configure, is in config.log if it exists. 40bdf523e6SStefan WeilEOD 41bdf523e6SStefan Weilprintf "exec" >>config.status 42bdf523e6SStefan Weilprintf " '%s'" "$0" "$@" >>config.status 43bdf523e6SStefan Weilecho >>config.status 44bdf523e6SStefan Weilchmod +x config.status 45bdf523e6SStefan Weil 4676ad07a4SPeter Maydellerror_exit() { 4776ad07a4SPeter Maydell echo 4876ad07a4SPeter Maydell echo "ERROR: $1" 4976ad07a4SPeter Maydell while test -n "$2"; do 5076ad07a4SPeter Maydell echo " $2" 5176ad07a4SPeter Maydell shift 5276ad07a4SPeter Maydell done 5376ad07a4SPeter Maydell echo 5476ad07a4SPeter Maydell exit 1 5576ad07a4SPeter Maydell} 5676ad07a4SPeter Maydell 578dc38a78SPeter Maydelldo_cc() { 588dc38a78SPeter Maydell # Run the compiler, capturing its output to the log. 598dc38a78SPeter Maydell echo $cc "$@" >> config.log 608dc38a78SPeter Maydell $cc "$@" >> config.log 2>&1 || return $? 618dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 628dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 638dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 648dc38a78SPeter Maydell # obvious to developers. 658dc38a78SPeter Maydell if test "$werror" != "yes"; then 668dc38a78SPeter Maydell return 0 678dc38a78SPeter Maydell fi 688dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 698dc38a78SPeter Maydell case "$*" in 708dc38a78SPeter Maydell *-Werror*) 718dc38a78SPeter Maydell return 0 728dc38a78SPeter Maydell ;; 738dc38a78SPeter Maydell esac 748dc38a78SPeter Maydell echo $cc -Werror "$@" >> config.log 758dc38a78SPeter Maydell $cc -Werror "$@" >> config.log 2>&1 && return $? 7676ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 7776ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 7876ad07a4SPeter Maydell "will be at the bottom of config.log." \ 7976ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 808dc38a78SPeter Maydell} 818dc38a78SPeter Maydell 8252166aa0SJuan Quintelacompile_object() { 838dc38a78SPeter Maydell do_cc $QEMU_CFLAGS -c -o $TMPO $TMPC 8452166aa0SJuan Quintela} 8552166aa0SJuan Quintela 8652166aa0SJuan Quintelacompile_prog() { 8752166aa0SJuan Quintela local_cflags="$1" 8852166aa0SJuan Quintela local_ldflags="$2" 898dc38a78SPeter Maydell do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags 9052166aa0SJuan Quintela} 9152166aa0SJuan Quintela 9266518bf6SDon Slutzdo_libtool() { 9366518bf6SDon Slutz local mode=$1 9466518bf6SDon Slutz shift 9566518bf6SDon Slutz # Run the compiler, capturing its output to the log. 9666518bf6SDon Slutz echo $libtool $mode --tag=CC $cc "$@" >> config.log 9766518bf6SDon Slutz $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $? 9866518bf6SDon Slutz # Test passed. If this is an --enable-werror build, rerun 9966518bf6SDon Slutz # the test with -Werror and bail out if it fails. This 10066518bf6SDon Slutz # makes warning-generating-errors in configure test code 10166518bf6SDon Slutz # obvious to developers. 10266518bf6SDon Slutz if test "$werror" != "yes"; then 10366518bf6SDon Slutz return 0 10466518bf6SDon Slutz fi 10566518bf6SDon Slutz # Don't bother rerunning the compile if we were already using -Werror 10666518bf6SDon Slutz case "$*" in 10766518bf6SDon Slutz *-Werror*) 10866518bf6SDon Slutz return 0 10966518bf6SDon Slutz ;; 11066518bf6SDon Slutz esac 11166518bf6SDon Slutz echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 11266518bf6SDon Slutz $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $? 11366518bf6SDon Slutz error_exit "configure test passed without -Werror but failed with -Werror." \ 11466518bf6SDon Slutz "This is probably a bug in the configure script. The failing command" \ 11566518bf6SDon Slutz "will be at the bottom of config.log." \ 11666518bf6SDon Slutz "You can run configure with --disable-werror to bypass this check." 11766518bf6SDon Slutz} 11866518bf6SDon Slutz 11966518bf6SDon Slutzlibtool_prog() { 12066518bf6SDon Slutz do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $? 12166518bf6SDon Slutz do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib 12266518bf6SDon Slutz} 12366518bf6SDon Slutz 12411568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 12511568d6dSPaolo Bonzinisymlink() { 12672b8b5a1SStefan Weil rm -rf "$2" 127ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 12872b8b5a1SStefan Weil ln -s "$1" "$2" 12911568d6dSPaolo Bonzini} 13011568d6dSPaolo Bonzini 1310dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 1320dba6195SLoïc Minier# executable or a builtin) 1330dba6195SLoïc Minierhas() { 1340dba6195SLoïc Minier type "$1" >/dev/null 2>&1 1350dba6195SLoïc Minier} 1360dba6195SLoïc Minier 1370dba6195SLoïc Minier# search for an executable in PATH 1380dba6195SLoïc Minierpath_of() { 1390dba6195SLoïc Minier local_command="$1" 1400dba6195SLoïc Minier local_ifs="$IFS" 1410dba6195SLoïc Minier local_dir="" 1420dba6195SLoïc Minier 1430dba6195SLoïc Minier # pathname has a dir component? 1440dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 1450dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 1460dba6195SLoïc Minier echo "$local_command" 1470dba6195SLoïc Minier return 0 1480dba6195SLoïc Minier fi 1490dba6195SLoïc Minier fi 1500dba6195SLoïc Minier if [ -z "$local_command" ]; then 1510dba6195SLoïc Minier return 1 1520dba6195SLoïc Minier fi 1530dba6195SLoïc Minier 1540dba6195SLoïc Minier IFS=: 1550dba6195SLoïc Minier for local_dir in $PATH; do 1560dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 1570dba6195SLoïc Minier echo "$local_dir/$local_command" 1580dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1590dba6195SLoïc Minier return 0 1600dba6195SLoïc Minier fi 1610dba6195SLoïc Minier done 1620dba6195SLoïc Minier # not found 1630dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 1640dba6195SLoïc Minier return 1 1650dba6195SLoïc Minier} 1660dba6195SLoïc Minier 1677d13299dSbellard# default parameters 168ca4deeb1SPaolo Bonzinisource_path=`dirname "$0"` 1692ff6b91eSJuan Quintelacpu="" 170a31a8642SMichael S. Tsirkiniasl="iasl" 1711e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 17243ce4dfeSbellardstatic="no" 1737d13299dSbellardcross_prefix="" 1740c58ac1cSmalcaudio_drv_list="" 175b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 176b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 177e49d021eSPeter Maydellhost_cc="cc" 17873da375eSJuan Quintelalibs_softmmu="" 1793e2e0e6bSJuan Quintelalibs_tools="" 18067f86e8eSJuan Quintelaaudio_pt_int="" 181d5631638Smalcaudio_win_int="" 1822b2e59e6SPaolo Bonzinicc_i386=i386-pc-linux-gnu-gcc 183957f1f99SMichael Rothlibs_qga="" 1845bc62e01SGerd Hoffmanndebug_info="yes" 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="" 210983eef5aSMeador Ingevirtfs="" 211821601eaSJes Sorensenvnc="yes" 212377529c0SPaolo Bonzinisparse="no" 213377529c0SPaolo Bonziniuuid="" 214377529c0SPaolo Bonzinivde="" 215377529c0SPaolo Bonzinivnc_tls="" 216377529c0SPaolo Bonzinivnc_sasl="" 217377529c0SPaolo Bonzinivnc_jpeg="" 218377529c0SPaolo Bonzinivnc_png="" 2197536ee4bSTim Hardeckvnc_ws="" 220377529c0SPaolo Bonzinixen="" 221d5b93ddfSAnthony PERARDxen_ctrl_version="" 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" 236377529c0SPaolo Bonzinistrip_opt="yes" 2379195b2c2SStefan Weiltcg_interpreter="no" 238377529c0SPaolo Bonzinibigendian="no" 239377529c0SPaolo Bonzinimingw32="no" 2401d728c39SBlue Swirlgcov="no" 2411d728c39SBlue Swirlgcov_tool="gcov" 242377529c0SPaolo BonziniEXESUF="" 24317969268SFam ZhengDSOSUF=".so" 24417969268SFam ZhengLDFLAGS_SHARED="-shared" 24517969268SFam Zhengmodules="no" 246377529c0SPaolo Bonziniprefix="/usr/local" 247377529c0SPaolo Bonzinimandir="\${prefix}/share/man" 248528ae5b8SEduardo Habkostdatadir="\${prefix}/share" 249850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu" 250377529c0SPaolo Bonzinibindir="\${prefix}/bin" 2513aa5d2beSAlon Levylibdir="\${prefix}/lib" 2528bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec" 2530f94d6daSAlon Levyincludedir="\${prefix}/include" 254377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc" 255785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var" 256377529c0SPaolo Bonziniconfsuffix="/qemu" 257377529c0SPaolo Bonzinislirp="yes" 258377529c0SPaolo Bonzinifmod_lib="" 259377529c0SPaolo Bonzinifmod_inc="" 260377529c0SPaolo Bonzinioss_lib="" 261377529c0SPaolo Bonzinibsd="no" 262377529c0SPaolo Bonzinilinux="no" 263377529c0SPaolo Bonzinisolaris="no" 264377529c0SPaolo Bonziniprofiler="no" 265377529c0SPaolo Bonzinicocoa="no" 266377529c0SPaolo Bonzinisoftmmu="yes" 267377529c0SPaolo Bonzinilinux_user="no" 268377529c0SPaolo Bonzinibsd_user="no" 26930163d89SPeter Maydellguest_base="yes" 270377529c0SPaolo Bonziniuname_release="" 271377529c0SPaolo Bonziniaix="no" 272377529c0SPaolo Bonziniblobs="yes" 273377529c0SPaolo Bonzinipkgversion="" 27440d6444eSAvi Kivitypie="" 275377529c0SPaolo Bonzinizero_malloc="" 2763556c233SPaolo Bonziniqom_cast_debug="yes" 277377529c0SPaolo Bonzinitrace_backend="nop" 278377529c0SPaolo Bonzinitrace_file="trace" 279377529c0SPaolo Bonzinispice="" 280377529c0SPaolo Bonzinirbd="" 281111a38b0SRobert Relyeasmartcard_nss="" 2822b2325ffSGerd Hoffmannlibusb="" 28369354a83SHans de Goedeusb_redir="" 284b1e5fff4SMichael Walleglx="" 2851ece9905SAlon Levyzlib="yes" 286e8ef31a3SMichael Tokarevguest_agent="" 287d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 288d9840e25STomoki Sekiyamavss_win32_sdk="" 289d9840e25STomoki Sekiyamawin_sdk="no" 2904b1c11fdSDaniel P. Berrangewant_tools="yes" 291c589b249SRonnie Sahlberglibiscsi="" 2926542aa9cSPeter Lievenlibnfs="" 293519175a2SAlex Barcelocoroutine="" 29470c60c08SStefan Hajnoczicoroutine_pool="" 295f794573eSEduardo Otuboseccomp="" 296eb100396SBharata B Raoglusterfs="" 2970c14fb47SBharata B Raoglusterfs_discard="no" 2987c815372SBharata B Raoglusterfs_zerofill="no" 299583f6e7bSStefan Hajnoczivirtio_blk_data_plane="" 300a4ccabcfSAnthony Liguorigtk="" 301528de90aSDaniel P. Berrangegtkabi="2.0" 302ab214c29SStefan Bergertpm="no" 3030a12ec87SRichard W.M. Joneslibssh2="" 3044f18b782SJeff Codyvhdx="" 30595c6bff3SBenoît Canetquorum="no" 306377529c0SPaolo Bonzini 307ac0df51dSaliguori# parse CC options first 308ac0df51dSaliguorifor opt do 309ac0df51dSaliguori optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 310ac0df51dSaliguori case "$opt" in 311ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 312ac0df51dSaliguori ;; 3133d8df640SPaolo Bonzini --cc=*) CC="$optarg" 314ac0df51dSaliguori ;; 31583f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 31683f73fceSTomoki Sekiyama ;; 317ca4deeb1SPaolo Bonzini --source-path=*) source_path="$optarg" 318ca4deeb1SPaolo Bonzini ;; 3192ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 3202ff6b91eSJuan Quintela ;; 321a558ee17SJuan Quintela --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS" 322f9943cd5SGerd Hoffmann EXTRA_CFLAGS="$optarg" 323e2a2ed06SJuan Quintela ;; 324e2a2ed06SJuan Quintela --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS" 325f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 326e2a2ed06SJuan Quintela ;; 3275bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 3285bc62e01SGerd Hoffmann ;; 3295bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 3305bc62e01SGerd Hoffmann ;; 331ac0df51dSaliguori esac 332ac0df51dSaliguoridone 333ac0df51dSaliguori# OS specific 334ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 33593148aa5SStefan Weil# we can eliminate its usage altogether. 336ac0df51dSaliguori 337e49d021eSPeter Maydell# Preferred compiler: 338e49d021eSPeter Maydell# ${CC} (if set) 339e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 340e49d021eSPeter Maydell# system compiler 341e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 342e49d021eSPeter Maydell cc="$host_cc" 343e49d021eSPeter Maydellelse 344b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 345e49d021eSPeter Maydellfi 346e49d021eSPeter Maydell 34783f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 34883f73fceSTomoki Sekiyama cxx="c++" 34983f73fceSTomoki Sekiyamaelse 35083f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 35183f73fceSTomoki Sekiyamafi 35283f73fceSTomoki Sekiyama 353b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 3543dd46c78SBlue Swirlas="${AS-${cross_prefix}as}" 3553dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 356b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 357b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 3583f534581SBradlibtool="${LIBTOOL-${cross_prefix}libtool}" 359b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 360b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 36117884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 36217884d7bSSergei Trofimovichquery_pkg_config() { 36317884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 36417884d7bSSergei Trofimovich} 36517884d7bSSergei Trofimovichpkg_config=query_pkg_config 366b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}" 367ac0df51dSaliguori 36845d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 36945d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 37045d285abSPeter Maydell 371be17dc90SMichael S. Tsirkin# default flags for all hosts 372be17dc90SMichael S. TsirkinQEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS" 373f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 374c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 375be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 3766b4c305cSPaolo BonziniQEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include" 3775bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then 3785bc62e01SGerd Hoffmann CFLAGS="-g $CFLAGS" 379be17dc90SMichael S. Tsirkin LDFLAGS="-g $LDFLAGS" 3805bc62e01SGerd Hoffmannfi 381be17dc90SMichael S. Tsirkin 382ca4deeb1SPaolo Bonzini# make source path absolute 383ca4deeb1SPaolo Bonzinisource_path=`cd "$source_path"; pwd` 384ca4deeb1SPaolo Bonzini 385ac0df51dSaliguoricheck_define() { 386ac0df51dSaliguoricat > $TMPC <<EOF 387ac0df51dSaliguori#if !defined($1) 388fd786e1aSPeter Maydell#error $1 not defined 389ac0df51dSaliguori#endif 390ac0df51dSaliguoriint main(void) { return 0; } 391ac0df51dSaliguoriEOF 39252166aa0SJuan Quintela compile_object 393ac0df51dSaliguori} 394ac0df51dSaliguori 395bbea4050SPeter Maydellif check_define __linux__ ; then 396bbea4050SPeter Maydell targetos="Linux" 397bbea4050SPeter Maydellelif check_define _WIN32 ; then 398bbea4050SPeter Maydell targetos='MINGW32' 399bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 400bbea4050SPeter Maydell targetos='OpenBSD' 401bbea4050SPeter Maydellelif check_define __sun__ ; then 402bbea4050SPeter Maydell targetos='SunOS' 403bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 404bbea4050SPeter Maydell targetos='Haiku' 405bbea4050SPeter Maydellelse 406bbea4050SPeter Maydell targetos=`uname -s` 407bbea4050SPeter Maydellfi 408bbea4050SPeter Maydell 409bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 410bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 411bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 412bbea4050SPeter Maydell# the correct CPU with the --cpu option. 413bbea4050SPeter Maydellcase $targetos in 414bbea4050SPeter MaydellDarwin) 415bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 416bbea4050SPeter Maydell # run 64-bit userspace code. 417bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 418bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 419bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 420bbea4050SPeter Maydell cpu="x86_64" 421bbea4050SPeter Maydell fi 422bbea4050SPeter Maydell ;; 423bbea4050SPeter MaydellSunOS) 424bbea4050SPeter Maydell # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo 425bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 426bbea4050SPeter Maydell cpu="x86_64" 427bbea4050SPeter Maydell fi 428bbea4050SPeter Maydellesac 429bbea4050SPeter Maydell 4302ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 4312ff6b91eSJuan Quintela # command line argument 4322ff6b91eSJuan Quintela : 4332ff6b91eSJuan Quintelaelif check_define __i386__ ; then 434ac0df51dSaliguori cpu="i386" 435ac0df51dSaliguorielif check_define __x86_64__ ; then 436c72b26ecSRichard Henderson if check_define __ILP32__ ; then 437c72b26ecSRichard Henderson cpu="x32" 438c72b26ecSRichard Henderson else 439ac0df51dSaliguori cpu="x86_64" 440c72b26ecSRichard Henderson fi 4413aa9bd6cSblueswir1elif check_define __sparc__ ; then 4423aa9bd6cSblueswir1 if check_define __arch64__ ; then 4433aa9bd6cSblueswir1 cpu="sparc64" 4443aa9bd6cSblueswir1 else 4453aa9bd6cSblueswir1 cpu="sparc" 4463aa9bd6cSblueswir1 fi 447fdf7ed96Smalcelif check_define _ARCH_PPC ; then 448fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 449fdf7ed96Smalc cpu="ppc64" 450ac0df51dSaliguori else 451fdf7ed96Smalc cpu="ppc" 452fdf7ed96Smalc fi 453afa05235SAurelien Jarnoelif check_define __mips__ ; then 454afa05235SAurelien Jarno cpu="mips" 455477ba620SAurelien Jarnoelif check_define __ia64__ ; then 456477ba620SAurelien Jarno cpu="ia64" 457d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 458d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 459d66ed0eaSAurelien Jarno cpu="s390x" 460d66ed0eaSAurelien Jarno else 461d66ed0eaSAurelien Jarno cpu="s390" 462d66ed0eaSAurelien Jarno fi 46321d89f84SPeter Maydellelif check_define __arm__ ; then 46421d89f84SPeter Maydell cpu="arm" 4651f080313SClaudio Fontanaelif check_define __aarch64__ ; then 4661f080313SClaudio Fontana cpu="aarch64" 467f28ffed5SBradelif check_define __hppa__ ; then 468f28ffed5SBrad cpu="hppa" 469fdf7ed96Smalcelse 470fdf7ed96Smalc cpu=`uname -m` 471ac0df51dSaliguorifi 472ac0df51dSaliguori 473359bc95dSPeter MaydellARCH= 474359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 475359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 4767d13299dSbellardcase "$cpu" in 477c72b26ecSRichard Henderson ia64|ppc|ppc64|s390|s390x|sparc64|x32) 478ea8f20f8SJuan Quintela cpu="$cpu" 479ea8f20f8SJuan Quintela ;; 4807d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 48197a847bcSbellard cpu="i386" 4827d13299dSbellard ;; 483aaa5fa14Saurel32 x86_64|amd64) 484aaa5fa14Saurel32 cpu="x86_64" 485aaa5fa14Saurel32 ;; 48621d89f84SPeter Maydell armv*b|armv*l|arm) 48721d89f84SPeter Maydell cpu="arm" 4887d13299dSbellard ;; 4891f080313SClaudio Fontana aarch64) 4901f080313SClaudio Fontana cpu="aarch64" 4911f080313SClaudio Fontana ;; 492afa05235SAurelien Jarno mips*) 493afa05235SAurelien Jarno cpu="mips" 494afa05235SAurelien Jarno ;; 4953142255cSblueswir1 sparc|sun4[cdmuv]) 496ae228531Sbellard cpu="sparc" 497ae228531Sbellard ;; 4987d13299dSbellard *) 499359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 500359bc95dSPeter Maydell ARCH=unknown 5017d13299dSbellard ;; 5027d13299dSbellardesac 503359bc95dSPeter Maydellif test -z "$ARCH"; then 504359bc95dSPeter Maydell ARCH="$cpu" 505359bc95dSPeter Maydellfi 506e2d52ad3SJuan Quintela 5077d13299dSbellard# OS specific 5080dbfc675SJuan Quintela 5097d13299dSbellardcase $targetos in 510c326e0afSbellardCYGWIN*) 511c326e0afSbellard mingw32="yes" 512a558ee17SJuan Quintela QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS" 513d5631638Smalc audio_possible_drivers="winwave sdl" 514d5631638Smalc audio_drv_list="winwave" 515c326e0afSbellard;; 51667b915a5SbellardMINGW32*) 51767b915a5Sbellard mingw32="yes" 518d5631638Smalc audio_possible_drivers="winwave dsound sdl fmod" 519d5631638Smalc audio_drv_list="winwave" 52067b915a5Sbellard;; 5215c40d2bdSthsGNU/kFreeBSD) 522a167ba50SAurelien Jarno bsd="yes" 5230c58ac1cSmalc audio_drv_list="oss" 524f34af52cSaurel32 audio_possible_drivers="oss sdl esd pa" 5255c40d2bdSths;; 5267d3505c5SbellardFreeBSD) 5277d3505c5Sbellard bsd="yes" 5280db4a067SPaolo Bonzini make="${MAKE-gmake}" 5290c58ac1cSmalc audio_drv_list="oss" 530f34af52cSaurel32 audio_possible_drivers="oss sdl esd pa" 531f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 532f01576f1SJuergen Lock LIBS="-lutil $LIBS" 53358952137SVincenzo Maffione netmap="" # enable netmap autodetect 5347d3505c5Sbellard;; 535c5e97233Sblueswir1DragonFly) 536c5e97233Sblueswir1 bsd="yes" 5370db4a067SPaolo Bonzini make="${MAKE-gmake}" 538c5e97233Sblueswir1 audio_drv_list="oss" 539c5e97233Sblueswir1 audio_possible_drivers="oss sdl esd pa" 540c5e97233Sblueswir1;; 5417d3505c5SbellardNetBSD) 5427d3505c5Sbellard bsd="yes" 5430db4a067SPaolo Bonzini make="${MAKE-gmake}" 5440c58ac1cSmalc audio_drv_list="oss" 545c2de5c91Smalc audio_possible_drivers="oss sdl esd" 5468ef92a88Sblueswir1 oss_lib="-lossaudio" 5477d3505c5Sbellard;; 5487d3505c5SbellardOpenBSD) 5497d3505c5Sbellard bsd="yes" 5500db4a067SPaolo Bonzini make="${MAKE-gmake}" 5514f6ab397SBrad Smith audio_drv_list="sdl" 5524f6ab397SBrad Smith audio_possible_drivers="sdl esd" 5537d3505c5Sbellard;; 55483fb7adfSbellardDarwin) 55583fb7adfSbellard bsd="yes" 55683fb7adfSbellard darwin="yes" 55717969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 5581b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 559a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 5600c439cbfSJuan Quintela LDFLAGS="-arch x86_64 $LDFLAGS" 5611b0f9cc2Saliguori fi 562fd677642Sths cocoa="yes" 5630c58ac1cSmalc audio_drv_list="coreaudio" 564c2de5c91Smalc audio_possible_drivers="coreaudio sdl fmod" 5650c439cbfSJuan Quintela LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" 5667973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 567a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 568a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 569a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 57083fb7adfSbellard;; 571ec530c81SbellardSunOS) 572ec530c81Sbellard solaris="yes" 5730db4a067SPaolo Bonzini make="${MAKE-gmake}" 5740db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 575fa58948dSBlue Swirl ld="gld" 576e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 5770475a5caSths needs_libsunmath="no" 578c2b84fabSths solarisrev=`uname -r | cut -f2 -d.` 579c2b84fabSths if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then 5800475a5caSths if test "$solarisrev" -le 9 ; then 5810475a5caSths if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then 5820475a5caSths needs_libsunmath="yes" 583f14bfdf9SJuan Quintela QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS" 584f14bfdf9SJuan Quintela LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS" 585f14bfdf9SJuan Quintela LIBS="-lsunmath $LIBS" 5860475a5caSths else 58776ad07a4SPeter Maydell error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \ 58876ad07a4SPeter Maydell "libsunmath from the Sun Studio compilers tools, due to a lack of" \ 58976ad07a4SPeter Maydell "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \ 59076ad07a4SPeter Maydell "Studio 11 can be downloaded from www.sun.com." 5910475a5caSths fi 5920475a5caSths fi 59386b2bd93Sths fi 5946b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 5950c58ac1cSmalc audio_drv_list="oss" 5966b4d2ba1Sths fi 597c2de5c91Smalc audio_possible_drivers="oss sdl" 598d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 599d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 600d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 601d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 602a558ee17SJuan Quintela QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" 603560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 604560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 605560d375fSAndreas Färber libs_qga="$solarisnetlibs $libs_qga" 606ec530c81Sbellard;; 607b29fe3edSmalcAIX) 608b29fe3edSmalc aix="yes" 6090db4a067SPaolo Bonzini make="${MAKE-gmake}" 610b29fe3edSmalc;; 611179cf400SAndreas FärberHaiku) 612179cf400SAndreas Färber haiku="yes" 613179cf400SAndreas Färber QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS" 614179cf400SAndreas Färber LIBS="-lposix_error_mapper -lnetwork $LIBS" 615179cf400SAndreas Färber;; 616fb065187Sbellard*) 6170c58ac1cSmalc audio_drv_list="oss" 618b8e59f18Smalc audio_possible_drivers="oss alsa sdl esd pa" 6195327cf48Sbellard linux="yes" 620831b7825Sths linux_user="yes" 621af2be207SJan Kiszka kvm="yes" 622af2be207SJan Kiszka vhost_net="yes" 6235e9be92dSNicholas Bellinger vhost_scsi="yes" 624c72b26ecSRichard Henderson if [ "$cpu" = "i386" -o "$cpu" = "x86_64" -o "$cpu" = "x32" ] ; then 625c2de5c91Smalc audio_possible_drivers="$audio_possible_drivers fmod" 626c9ec1fe4Sbellard fi 627a585140dSAlexey Kardashevskiy QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES" 628fb065187Sbellard;; 6297d13299dSbellardesac 6307d13299dSbellard 6317d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 632b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 63384778508Sblueswir1 bsd_user="yes" 6347d3505c5Sbellard fi 63508de3949SAndreas Färberfi 6367d3505c5Sbellard 6370db4a067SPaolo Bonzini: ${make=${MAKE-make}} 6380db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 63952510f8bSStefan Weil: ${python=${PYTHON-python}} 640e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 6410db4a067SPaolo Bonzini 6423c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 6433c4a4d0dSPeter Maydellif has clang; then 6443c4a4d0dSPeter Maydell objcc=clang 6453c4a4d0dSPeter Maydellelse 6463c4a4d0dSPeter Maydell objcc="$cc" 6473c4a4d0dSPeter Maydellfi 6483c4a4d0dSPeter Maydell 6493457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 6503457a3f8SJuan Quintela EXESUF=".exe" 65117969268SFam Zheng DSOSUF=".dll" 652a558ee17SJuan Quintela QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" 653e94a7936SStefan Weil # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later) 654e94a7936SStefan Weil QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS" 655f7cf5d5bSStefan Weil LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" 656f7cf5d5bSStefan Weilcat > $TMPC << EOF 657f7cf5d5bSStefan Weilint main(void) { return 0; } 658f7cf5d5bSStefan WeilEOF 659f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 660f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 661f7cf5d5bSStefan Weil fi 662c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 663683035deSPaolo Bonzini mandir="\${prefix}" 664528ae5b8SEduardo Habkost datadir="\${prefix}" 665850da188SEduardo Habkost qemu_docdir="\${prefix}" 666683035deSPaolo Bonzini bindir="\${prefix}" 667683035deSPaolo Bonzini sysconfdir="\${prefix}" 6685a699bbbSLaszlo Ersek local_statedir= 669683035deSPaolo Bonzini confsuffix="" 670368542b8SStefan Hajnoczi libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga" 6713457a3f8SJuan Quintelafi 6723457a3f8SJuan Quintela 673487fefdbSAnthony Liguoriwerror="" 67485aa5189Sbellard 6757d13299dSbellardfor opt do 676a46e4035Spbrook optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'` 6777d13299dSbellard case "$opt" in 6782efc3265Sbellard --help|-h) show_help=yes 6792efc3265Sbellard ;; 68099123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 68199123e13SMike Frysinger ;; 682b1a550a0Spbrook --prefix=*) prefix="$optarg" 6837d13299dSbellard ;; 684b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 68532ce6337Sbellard ;; 686ca4deeb1SPaolo Bonzini --source-path=*) 6877d13299dSbellard ;; 688ac0df51dSaliguori --cross-prefix=*) 6897d13299dSbellard ;; 690ac0df51dSaliguori --cc=*) 6917d13299dSbellard ;; 692b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 69383469015Sbellard ;; 69483f73fceSTomoki Sekiyama --cxx=*) 69583f73fceSTomoki Sekiyama ;; 696e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 697e007dbecSMichael S. Tsirkin ;; 6983c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 6993c4a4d0dSPeter Maydell ;; 700b1a550a0Spbrook --make=*) make="$optarg" 7017d13299dSbellard ;; 7026a882643Spbrook --install=*) install="$optarg" 7036a882643Spbrook ;; 704c886edfbSBlue Swirl --python=*) python="$optarg" 705c886edfbSBlue Swirl ;; 7061d728c39SBlue Swirl --gcov=*) gcov_tool="$optarg" 7071d728c39SBlue Swirl ;; 708e2d8830eSBrad --smbd=*) smbd="$optarg" 709e2d8830eSBrad ;; 710e2a2ed06SJuan Quintela --extra-cflags=*) 7117d13299dSbellard ;; 712e2a2ed06SJuan Quintela --extra-ldflags=*) 7137d13299dSbellard ;; 7145bc62e01SGerd Hoffmann --enable-debug-info) 7155bc62e01SGerd Hoffmann ;; 7165bc62e01SGerd Hoffmann --disable-debug-info) 7175bc62e01SGerd Hoffmann ;; 71817969268SFam Zheng --enable-modules) 71917969268SFam Zheng modules="yes" 72017969268SFam Zheng ;; 7212ff6b91eSJuan Quintela --cpu=*) 7227d13299dSbellard ;; 723b1a550a0Spbrook --target-list=*) target_list="$optarg" 724de83cd02Sbellard ;; 72574242e0fSPaolo Bonzini --enable-trace-backend=*) trace_backend="$optarg" 72694a420b1SStefan Hajnoczi ;; 72774242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 7289410b56cSPrerna Saxena ;; 7297d13299dSbellard --enable-gprof) gprof="yes" 7307d13299dSbellard ;; 7311d728c39SBlue Swirl --enable-gcov) gcov="yes" 7321d728c39SBlue Swirl ;; 73379427693SLoïc Minier --static) 73479427693SLoïc Minier static="yes" 73579427693SLoïc Minier LDFLAGS="-static $LDFLAGS" 73617884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 73743ce4dfeSbellard ;; 7380b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 7390b24e75fSPaolo Bonzini ;; 7400b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 7410b24e75fSPaolo Bonzini ;; 7423aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 7433aa5d2beSAlon Levy ;; 7448bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 7458bf188aaSMichael Tokarev ;; 7460f94d6daSAlon Levy --includedir=*) includedir="$optarg" 7470f94d6daSAlon Levy ;; 748528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 7490b24e75fSPaolo Bonzini ;; 750023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 751023d3d67SEduardo Habkost ;; 752850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 7530b24e75fSPaolo Bonzini ;; 754ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 75507381cc1SAnthony Liguori ;; 756785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 757785c23aeSLuiz Capitulino ;; 758785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 759023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 760023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 761023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 762023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 763023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 764023ddd74SMax Filippov # lots of directory switches by default. 765023ddd74SMax Filippov ;; 766e2134eb9SGerd Hoffmann --with-system-pixman) pixman="system" 767e2134eb9SGerd Hoffmann ;; 768e2134eb9SGerd Hoffmann --without-system-pixman) pixman="internal" 769e2134eb9SGerd Hoffmann ;; 77074880fe2SRobert Schiele --without-pixman) pixman="none" 77174880fe2SRobert Schiele ;; 77297a847bcSbellard --disable-sdl) sdl="no" 77397a847bcSbellard ;; 774c4198157SJuan Quintela --enable-sdl) sdl="yes" 775c4198157SJuan Quintela ;; 7763556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 7773556c233SPaolo Bonzini ;; 7783556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 7793556c233SPaolo Bonzini ;; 780983eef5aSMeador Inge --disable-virtfs) virtfs="no" 781983eef5aSMeador Inge ;; 782983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 783983eef5aSMeador Inge ;; 784821601eaSJes Sorensen --disable-vnc) vnc="no" 785821601eaSJes Sorensen ;; 786821601eaSJes Sorensen --enable-vnc) vnc="yes" 787821601eaSJes Sorensen ;; 788b1a550a0Spbrook --fmod-lib=*) fmod_lib="$optarg" 789102a52e4Sbellard ;; 790c2de5c91Smalc --fmod-inc=*) fmod_inc="$optarg" 791c2de5c91Smalc ;; 7922f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 7932f6a1ab0Sblueswir1 ;; 7940c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 7950c58ac1cSmalc ;; 796b64ec4e4SFam Zheng --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 797b64ec4e4SFam Zheng ;; 798b64ec4e4SFam Zheng --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'` 799eb852011SMarkus Armbruster ;; 800f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 801f8393946Saurel32 ;; 802f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 803f8393946Saurel32 ;; 804f3d08ee6SPaul Brook --enable-debug) 805f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 806f3d08ee6SPaul Brook debug_tcg="yes" 807f3d08ee6SPaul Brook debug="yes" 808f3d08ee6SPaul Brook strip_opt="no" 809f3d08ee6SPaul Brook ;; 81003b4fe7dSaliguori --enable-sparse) sparse="yes" 81103b4fe7dSaliguori ;; 81203b4fe7dSaliguori --disable-sparse) sparse="no" 81303b4fe7dSaliguori ;; 8141625af87Saliguori --disable-strip) strip_opt="no" 8151625af87Saliguori ;; 8168d5d2d4cSths --disable-vnc-tls) vnc_tls="no" 8178d5d2d4cSths ;; 8181be10ad2SJuan Quintela --enable-vnc-tls) vnc_tls="yes" 8191be10ad2SJuan Quintela ;; 8202f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 8212f9606b3Saliguori ;; 822ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 823ea784e3bSJuan Quintela ;; 8242f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 8252f6f5c7aSCorentin Chary ;; 8262f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 8272f6f5c7aSCorentin Chary ;; 828efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 829efe556adSCorentin Chary ;; 830efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 831efe556adSCorentin Chary ;; 8327536ee4bSTim Hardeck --disable-vnc-ws) vnc_ws="no" 8337536ee4bSTim Hardeck ;; 8347536ee4bSTim Hardeck --enable-vnc-ws) vnc_ws="yes" 8357536ee4bSTim Hardeck ;; 836443f1376Sbellard --disable-slirp) slirp="no" 837c20709aaSbellard ;; 838ee682d27SStefan Weil --disable-uuid) uuid="no" 839ee682d27SStefan Weil ;; 840ee682d27SStefan Weil --enable-uuid) uuid="yes" 841ee682d27SStefan Weil ;; 842e0e6c8c0Saliguori --disable-vde) vde="no" 8438a16d273Sths ;; 844dfb278bdSJuan Quintela --enable-vde) vde="yes" 845dfb278bdSJuan Quintela ;; 84658952137SVincenzo Maffione --disable-netmap) netmap="no" 84758952137SVincenzo Maffione ;; 84858952137SVincenzo Maffione --enable-netmap) netmap="yes" 84958952137SVincenzo Maffione ;; 850e37630caSaliguori --disable-xen) xen="no" 851e37630caSaliguori ;; 852fc321b4bSJuan Quintela --enable-xen) xen="yes" 853fc321b4bSJuan Quintela ;; 854eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 855eb6fda0fSAnthony PERARD ;; 856eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 857eb6fda0fSAnthony PERARD ;; 8582e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 8592e4d9fb1Saurel32 ;; 8604ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 8614ffcedb6SJuan Quintela ;; 862fb599c9aSbalrog --disable-bluez) bluez="no" 863fb599c9aSbalrog ;; 864a20a6f46SJuan Quintela --enable-bluez) bluez="yes" 865a20a6f46SJuan Quintela ;; 8667ba1e619Saliguori --disable-kvm) kvm="no" 8677ba1e619Saliguori ;; 868b31a0277SJuan Quintela --enable-kvm) kvm="yes" 869b31a0277SJuan Quintela ;; 8709195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 8719195b2c2SStefan Weil ;; 8729195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 8739195b2c2SStefan Weil ;; 87447e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 87547e98658SCorey Bryant ;; 87647e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 87747e98658SCorey Bryant ;; 878cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 879cd4ec0b4SGerd Hoffmann ;; 880cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 881cd4ec0b4SGerd Hoffmann ;; 882c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 883c589b249SRonnie Sahlberg ;; 884c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 885c589b249SRonnie Sahlberg ;; 8866542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 8876542aa9cSPeter Lieven ;; 8886542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 8896542aa9cSPeter Lieven ;; 89005c2a3e7Sbellard --enable-profiler) profiler="yes" 89105c2a3e7Sbellard ;; 89214821030SPavel Borzenkov --disable-cocoa) cocoa="no" 89314821030SPavel Borzenkov ;; 894c2de5c91Smalc --enable-cocoa) 895c2de5c91Smalc cocoa="yes" ; 896c2de5c91Smalc sdl="no" ; 897c2de5c91Smalc audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`" 8985b0753e0Sbellard ;; 899cad25d69Spbrook --disable-system) softmmu="no" 9000a8e90f4Spbrook ;; 901cad25d69Spbrook --enable-system) softmmu="yes" 9020a8e90f4Spbrook ;; 9030953a80fSZachary Amsden --disable-user) 9040953a80fSZachary Amsden linux_user="no" ; 9050953a80fSZachary Amsden bsd_user="no" ; 9060953a80fSZachary Amsden ;; 9070953a80fSZachary Amsden --enable-user) ;; 908831b7825Sths --disable-linux-user) linux_user="no" 9090a8e90f4Spbrook ;; 910831b7825Sths --enable-linux-user) linux_user="yes" 911831b7825Sths ;; 91284778508Sblueswir1 --disable-bsd-user) bsd_user="no" 91384778508Sblueswir1 ;; 91484778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 91584778508Sblueswir1 ;; 916379f6698SPaul Brook --enable-guest-base) guest_base="yes" 917379f6698SPaul Brook ;; 918379f6698SPaul Brook --disable-guest-base) guest_base="no" 919379f6698SPaul Brook ;; 92040d6444eSAvi Kivity --enable-pie) pie="yes" 92134005a00SKirill A. Shutemov ;; 92240d6444eSAvi Kivity --disable-pie) pie="no" 92334005a00SKirill A. Shutemov ;; 924c5937220Spbrook --enable-uname-release=*) uname_release="$optarg" 925c5937220Spbrook ;; 92685aa5189Sbellard --enable-werror) werror="yes" 92785aa5189Sbellard ;; 92885aa5189Sbellard --disable-werror) werror="no" 92985aa5189Sbellard ;; 9304d3b6f6eSbalrog --disable-curses) curses="no" 9314d3b6f6eSbalrog ;; 932c584a6d0SJuan Quintela --enable-curses) curses="yes" 933c584a6d0SJuan Quintela ;; 934769ce76dSAlexander Graf --disable-curl) curl="no" 935769ce76dSAlexander Graf ;; 936788c8196SJuan Quintela --enable-curl) curl="yes" 937788c8196SJuan Quintela ;; 9382df87df7SJuan Quintela --disable-fdt) fdt="no" 9392df87df7SJuan Quintela ;; 9402df87df7SJuan Quintela --enable-fdt) fdt="yes" 9412df87df7SJuan Quintela ;; 9425c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 9435c6c3a6cSChristoph Hellwig ;; 9445c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 9455c6c3a6cSChristoph Hellwig ;; 946758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 947758e8e38SVenkateswararao Jujjuri (JV) ;; 948758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 949758e8e38SVenkateswararao Jujjuri (JV) ;; 95077755340Sths --disable-blobs) blobs="no" 95177755340Sths ;; 9524a19f1ecSpbrook --with-pkgversion=*) pkgversion=" ($optarg)" 9534a19f1ecSpbrook ;; 954519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 955519175a2SAlex Barcelo ;; 95670c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 95770c60c08SStefan Hajnoczi ;; 95870c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 95970c60c08SStefan Hajnoczi ;; 960a25dba17SJuan Quintela --disable-docs) docs="no" 96170ec5dc0SAnthony Liguori ;; 962a25dba17SJuan Quintela --enable-docs) docs="yes" 96383a3ab8bSJuan Quintela ;; 964d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 965d5970055SMichael S. Tsirkin ;; 966d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 967d5970055SMichael S. Tsirkin ;; 9685e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 9695e9be92dSNicholas Bellinger ;; 9705e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 9715e9be92dSNicholas Bellinger ;; 972b1e5fff4SMichael Walle --disable-glx) glx="no" 97320ff075bSMichael Walle ;; 974b1e5fff4SMichael Walle --enable-glx) glx="yes" 97520ff075bSMichael Walle ;; 976f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 977f27aaf4bSChristian Brunner ;; 978f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 979f27aaf4bSChristian Brunner ;; 9808c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 9818c84cf11SSergei Trofimovich ;; 9828c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 9838c84cf11SSergei Trofimovich ;; 984111a38b0SRobert Relyea --disable-smartcard-nss) smartcard_nss="no" 985111a38b0SRobert Relyea ;; 986111a38b0SRobert Relyea --enable-smartcard-nss) smartcard_nss="yes" 987111a38b0SRobert Relyea ;; 9882b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 9892b2325ffSGerd Hoffmann ;; 9902b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 9912b2325ffSGerd Hoffmann ;; 99269354a83SHans de Goede --disable-usb-redir) usb_redir="no" 99369354a83SHans de Goede ;; 99469354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 99569354a83SHans de Goede ;; 9961ece9905SAlon Levy --disable-zlib-test) zlib="no" 9971ece9905SAlon Levy ;; 998d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 999d138cee9SMichael Roth ;; 1000d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1001d138cee9SMichael Roth ;; 1002d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1003d9840e25STomoki Sekiyama ;; 1004d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1005d9840e25STomoki Sekiyama ;; 1006d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1007d9840e25STomoki Sekiyama ;; 1008d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1009d9840e25STomoki Sekiyama ;; 1010d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1011d9840e25STomoki Sekiyama ;; 1012d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1013d9840e25STomoki Sekiyama ;; 10144b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 10154b1c11fdSDaniel P. Berrange ;; 10164b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 10174b1c11fdSDaniel P. Berrange ;; 1018f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1019f794573eSEduardo Otubo ;; 1020f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1021f794573eSEduardo Otubo ;; 1022eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1023eb100396SBharata B Rao ;; 1024eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1025eb100396SBharata B Rao ;; 1026583f6e7bSStefan Hajnoczi --disable-virtio-blk-data-plane) virtio_blk_data_plane="no" 1027583f6e7bSStefan Hajnoczi ;; 1028583f6e7bSStefan Hajnoczi --enable-virtio-blk-data-plane) virtio_blk_data_plane="yes" 1029583f6e7bSStefan Hajnoczi ;; 1030a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1031a4ccabcfSAnthony Liguori ;; 1032a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1033a4ccabcfSAnthony Liguori ;; 10342da776dbSMichael R. Hines --enable-rdma) rdma="yes" 10352da776dbSMichael R. Hines ;; 10362da776dbSMichael R. Hines --disable-rdma) rdma="no" 10372da776dbSMichael R. Hines ;; 1038528de90aSDaniel P. Berrange --with-gtkabi=*) gtkabi="$optarg" 1039528de90aSDaniel P. Berrange ;; 1040ab214c29SStefan Berger --enable-tpm) tpm="yes" 1041ab214c29SStefan Berger ;; 10420a12ec87SRichard W.M. Jones --disable-libssh2) libssh2="no" 10430a12ec87SRichard W.M. Jones ;; 10440a12ec87SRichard W.M. Jones --enable-libssh2) libssh2="yes" 10450a12ec87SRichard W.M. Jones ;; 10464f18b782SJeff Cody --enable-vhdx) vhdx="yes" 10474f18b782SJeff Cody ;; 10484f18b782SJeff Cody --disable-vhdx) vhdx="no" 10494f18b782SJeff Cody ;; 105095c6bff3SBenoît Canet --disable-quorum) quorum="no" 105195c6bff3SBenoît Canet ;; 105295c6bff3SBenoît Canet --enable-quorum) quorum="yes" 105395c6bff3SBenoît Canet ;; 10547f1559c6Sbalrog *) echo "ERROR: unknown option $opt"; show_help="yes" 10557f1559c6Sbalrog ;; 10567d13299dSbellard esac 10577d13299dSbellarddone 10587d13299dSbellard 1059f6f0b7d9SStefan Weilif ! has $python; then 1060f6f0b7d9SStefan Weil error_exit "Python not found. Use --python=/path/to/python" 1061f6f0b7d9SStefan Weilfi 1062f6f0b7d9SStefan Weil 1063f6f0b7d9SStefan Weil# Note that if the Python conditional here evaluates True we will exit 1064f6f0b7d9SStefan Weil# with status 1 which is a shell 'false' value. 1065f6f0b7d9SStefan Weilif ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then 1066f6f0b7d9SStefan Weil error_exit "Cannot use '$python', Python 2.4 or later is required." \ 1067f6f0b7d9SStefan Weil "Note that Python 3 or later is not yet supported." \ 1068f6f0b7d9SStefan Weil "Use --python=/path/to/python to specify a supported Python." 1069f6f0b7d9SStefan Weilfi 1070f6f0b7d9SStefan Weil 1071f6f0b7d9SStefan Weil# The -B switch was added in Python 2.6. 1072f6f0b7d9SStefan Weil# If it is supplied, compiled files are not written. 1073f6f0b7d9SStefan Weil# Use it for Python versions which support it. 1074f6f0b7d9SStefan Weilif $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then 1075f6f0b7d9SStefan Weil python="$python -B" 1076f6f0b7d9SStefan Weilfi 1077f6f0b7d9SStefan Weil 107840293e58Sbellardcase "$cpu" in 1079e3608d66SRichard Henderson ppc) 1080e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1081e3608d66SRichard Henderson LDFLAGS="-m32 $LDFLAGS" 1082e3608d66SRichard Henderson ;; 1083e3608d66SRichard Henderson ppc64) 1084e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1085e3608d66SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 1086e3608d66SRichard Henderson ;; 10879b9c37c3SRichard Henderson sparc) 10880c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 108979f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32 -mcpu=ultrasparc" 10903142255cSblueswir1 ;; 1091ed968ff1SJuan Quintela sparc64) 10920c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 109379f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 10943142255cSblueswir1 ;; 109576d83bdeSths s390) 109679f3b12fSPeter Crosthwaite CPU_CFLAGS="-m31 -march=z990" 109728d7cc49SRichard Henderson LDFLAGS="-m31 $LDFLAGS" 109828d7cc49SRichard Henderson ;; 109928d7cc49SRichard Henderson s390x) 110079f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -march=z990" 110128d7cc49SRichard Henderson LDFLAGS="-m64 $LDFLAGS" 110276d83bdeSths ;; 110340293e58Sbellard i386) 110479f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 11050c439cbfSJuan Quintela LDFLAGS="-m32 $LDFLAGS" 11062b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 110740293e58Sbellard ;; 110840293e58Sbellard x86_64) 110979f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64" 11100c439cbfSJuan Quintela LDFLAGS="-m64 $LDFLAGS" 11112b2e59e6SPaolo Bonzini cc_i386='$(CC) -m32' 1112379f6698SPaul Brook ;; 1113c72b26ecSRichard Henderson x32) 1114c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1115c72b26ecSRichard Henderson LDFLAGS="-mx32 $LDFLAGS" 1116c72b26ecSRichard Henderson cc_i386='$(CC) -m32' 1117c72b26ecSRichard Henderson ;; 111830163d89SPeter Maydell # No special flags required for other host CPUs 11193142255cSblueswir1esac 11203142255cSblueswir1 112179f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 112279f3b12fSPeter CrosthwaiteEXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS" 112379f3b12fSPeter Crosthwaite 112460e0df25SPeter Maydelldefault_target_list="" 112560e0df25SPeter Maydell 11266e92f823SPeter Maydellmak_wilds="" 11276e92f823SPeter Maydell 112860e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 11296e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 113060e0df25SPeter Maydellfi 113160e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 11326e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 113360e0df25SPeter Maydellfi 113460e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 11356e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 113660e0df25SPeter Maydellfi 113760e0df25SPeter Maydell 11386e92f823SPeter Maydellfor config in $mak_wilds; do 11396e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 11406e92f823SPeter Maydelldone 11416e92f823SPeter Maydell 1142af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1143af5db58eSpbrookcat << EOF 1144af5db58eSpbrook 1145af5db58eSpbrookUsage: configure [options] 1146af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1147af5db58eSpbrook 114808fb77edSStefan WeilStandard options: 114908fb77edSStefan Weil --help print this message 115008fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 115108fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 115208fb77edSStefan Weil use %M for cpu name [$interp_prefix] 115308fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 115408fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 115508fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 115608fb77edSStefan Weil 115708fb77edSStefan WeilAdvanced options (experts only): 115808fb77edSStefan Weil --source-path=PATH path of source code [$source_path] 115908fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 116008fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 116108fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 116208fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 116308fb77edSStefan Weil build time 116408fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 116508fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 116608fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 116708fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 116808fb77edSStefan Weil --make=MAKE use specified make [$make] 116908fb77edSStefan Weil --install=INSTALL use specified install [$install] 117008fb77edSStefan Weil --python=PYTHON use specified python [$python] 117108fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 117208fb77edSStefan Weil --static enable static build [$static] 117308fb77edSStefan Weil --mandir=PATH install man pages in PATH 117408fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 117508fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 117608fb77edSStefan Weil --bindir=PATH install binaries in PATH 117708fb77edSStefan Weil --libdir=PATH install libraries in PATH 117808fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 117908fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 1180e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 118117969268SFam Zheng --enable-modules enable modules support 118208fb77edSStefan Weil --enable-debug-tcg enable TCG debugging 118308fb77edSStefan Weil --disable-debug-tcg disable TCG debugging (default) 118408fb77edSStefan Weil --enable-debug-info enable debugging information (default) 118508fb77edSStefan Weil --disable-debug-info disable debugging information 118608fb77edSStefan Weil --enable-debug enable common debug build options 118708fb77edSStefan Weil --enable-sparse enable sparse checker 118808fb77edSStefan Weil --disable-sparse disable sparse checker (default) 118908fb77edSStefan Weil --disable-strip disable stripping binaries 119008fb77edSStefan Weil --disable-werror disable compilation abort on warning 119108fb77edSStefan Weil --disable-sdl disable SDL 119208fb77edSStefan Weil --enable-sdl enable SDL 119308fb77edSStefan Weil --disable-gtk disable gtk UI 119408fb77edSStefan Weil --enable-gtk enable gtk UI 119508fb77edSStefan Weil --disable-virtfs disable VirtFS 119608fb77edSStefan Weil --enable-virtfs enable VirtFS 119708fb77edSStefan Weil --disable-vnc disable VNC 119808fb77edSStefan Weil --enable-vnc enable VNC 119908fb77edSStefan Weil --disable-cocoa disable Cocoa (Mac OS X only) 120008fb77edSStefan Weil --enable-cocoa enable Cocoa (default on Mac OS X) 120108fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 120208fb77edSStefan Weil Available drivers: $audio_possible_drivers 120308fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 120408fb77edSStefan Weil --block-drv-rw-whitelist=L 120508fb77edSStefan Weil set block driver read-write whitelist 120608fb77edSStefan Weil (affects only QEMU, not qemu-img) 120708fb77edSStefan Weil --block-drv-ro-whitelist=L 120808fb77edSStefan Weil set block driver read-only whitelist 120908fb77edSStefan Weil (affects only QEMU, not qemu-img) 121008fb77edSStefan Weil --disable-xen disable xen backend driver support 121108fb77edSStefan Weil --enable-xen enable xen backend driver support 121208fb77edSStefan Weil --disable-xen-pci-passthrough 121308fb77edSStefan Weil --enable-xen-pci-passthrough 121408fb77edSStefan Weil --disable-brlapi disable BrlAPI 121508fb77edSStefan Weil --enable-brlapi enable BrlAPI 121608fb77edSStefan Weil --disable-vnc-tls disable TLS encryption for VNC server 121708fb77edSStefan Weil --enable-vnc-tls enable TLS encryption for VNC server 121808fb77edSStefan Weil --disable-vnc-sasl disable SASL encryption for VNC server 121908fb77edSStefan Weil --enable-vnc-sasl enable SASL encryption for VNC server 122008fb77edSStefan Weil --disable-vnc-jpeg disable JPEG lossy compression for VNC server 122108fb77edSStefan Weil --enable-vnc-jpeg enable JPEG lossy compression for VNC server 122208fb77edSStefan Weil --disable-vnc-png disable PNG compression for VNC server (default) 122308fb77edSStefan Weil --enable-vnc-png enable PNG compression for VNC server 122408fb77edSStefan Weil --disable-vnc-ws disable Websockets support for VNC server 122508fb77edSStefan Weil --enable-vnc-ws enable Websockets support for VNC server 122608fb77edSStefan Weil --disable-curses disable curses output 122708fb77edSStefan Weil --enable-curses enable curses output 122808fb77edSStefan Weil --disable-curl disable curl connectivity 122908fb77edSStefan Weil --enable-curl enable curl connectivity 123008fb77edSStefan Weil --disable-fdt disable fdt device tree 123108fb77edSStefan Weil --enable-fdt enable fdt device tree 123208fb77edSStefan Weil --disable-bluez disable bluez stack connectivity 123308fb77edSStefan Weil --enable-bluez enable bluez stack connectivity 123408fb77edSStefan Weil --disable-slirp disable SLIRP userspace network connectivity 123508fb77edSStefan Weil --disable-kvm disable KVM acceleration support 123608fb77edSStefan Weil --enable-kvm enable KVM acceleration support 123708fb77edSStefan Weil --disable-rdma disable RDMA-based migration support 123808fb77edSStefan Weil --enable-rdma enable RDMA-based migration support 123908fb77edSStefan Weil --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 124008fb77edSStefan Weil --enable-system enable all system emulation targets 124108fb77edSStefan Weil --disable-system disable all system emulation targets 124208fb77edSStefan Weil --enable-user enable supported user emulation targets 124308fb77edSStefan Weil --disable-user disable all user emulation targets 124408fb77edSStefan Weil --enable-linux-user enable all linux usermode emulation targets 124508fb77edSStefan Weil --disable-linux-user disable all linux usermode emulation targets 124608fb77edSStefan Weil --enable-bsd-user enable all BSD usermode emulation targets 124708fb77edSStefan Weil --disable-bsd-user disable all BSD usermode emulation targets 124808fb77edSStefan Weil --enable-guest-base enable GUEST_BASE support for usermode 124908fb77edSStefan Weil emulation targets 125008fb77edSStefan Weil --disable-guest-base disable GUEST_BASE support 125108fb77edSStefan Weil --enable-pie build Position Independent Executables 125208fb77edSStefan Weil --disable-pie do not build Position Independent Executables 125308fb77edSStefan Weil --fmod-lib path to FMOD library 125408fb77edSStefan Weil --fmod-inc path to FMOD includes 125508fb77edSStefan Weil --oss-lib path to OSS library 125608fb77edSStefan Weil --enable-uname-release=R Return R for uname -r in usermode emulation 125708fb77edSStefan Weil --cpu=CPU Build for host CPU [$cpu] 125808fb77edSStefan Weil --disable-uuid disable uuid support 125908fb77edSStefan Weil --enable-uuid enable uuid support 126008fb77edSStefan Weil --disable-vde disable support for vde network 126108fb77edSStefan Weil --enable-vde enable support for vde network 126208fb77edSStefan Weil --disable-netmap disable support for netmap network 126308fb77edSStefan Weil --enable-netmap enable support for netmap network 126408fb77edSStefan Weil --disable-linux-aio disable Linux AIO support 126508fb77edSStefan Weil --enable-linux-aio enable Linux AIO support 126608fb77edSStefan Weil --disable-cap-ng disable libcap-ng support 126708fb77edSStefan Weil --enable-cap-ng enable libcap-ng support 126808fb77edSStefan Weil --disable-attr disables attr and xattr support 126908fb77edSStefan Weil --enable-attr enable attr and xattr support 127008fb77edSStefan Weil --disable-blobs disable installing provided firmware blobs 127108fb77edSStefan Weil --enable-docs enable documentation build 127208fb77edSStefan Weil --disable-docs disable documentation build 127308fb77edSStefan Weil --disable-vhost-net disable vhost-net acceleration support 127408fb77edSStefan Weil --enable-vhost-net enable vhost-net acceleration support 127508fb77edSStefan Weil --enable-trace-backend=B Set trace backend 127608fb77edSStefan Weil Available backends: $($python $source_path/scripts/tracetool.py --list-backends) 127708fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 127808fb77edSStefan Weil Default:trace-<pid> 127908fb77edSStefan Weil --disable-spice disable spice 128008fb77edSStefan Weil --enable-spice enable spice 128108fb77edSStefan Weil --enable-rbd enable building the rados block device (rbd) 128208fb77edSStefan Weil --disable-libiscsi disable iscsi support 128308fb77edSStefan Weil --enable-libiscsi enable iscsi support 12846542aa9cSPeter Lieven --disable-libnfs disable nfs support 12856542aa9cSPeter Lieven --enable-libnfs enable nfs support 128608fb77edSStefan Weil --disable-smartcard-nss disable smartcard nss support 128708fb77edSStefan Weil --enable-smartcard-nss enable smartcard nss support 128808fb77edSStefan Weil --disable-libusb disable libusb (for usb passthrough) 128908fb77edSStefan Weil --enable-libusb enable libusb (for usb passthrough) 129008fb77edSStefan Weil --disable-usb-redir disable usb network redirection support 129108fb77edSStefan Weil --enable-usb-redir enable usb network redirection support 129208fb77edSStefan Weil --disable-guest-agent disable building of the QEMU Guest Agent 129308fb77edSStefan Weil --enable-guest-agent enable building of the QEMU Guest Agent 129408fb77edSStefan Weil --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 129508fb77edSStefan Weil --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 129608fb77edSStefan Weil --disable-seccomp disable seccomp support 129708fb77edSStefan Weil --enable-seccomp enables seccomp support 129808fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 129908fb77edSStefan Weil gthread, ucontext, sigaltstack, windows 130008fb77edSStefan Weil --disable-coroutine-pool disable coroutine freelist (worse performance) 130108fb77edSStefan Weil --enable-coroutine-pool enable coroutine freelist (better performance) 130208fb77edSStefan Weil --enable-glusterfs enable GlusterFS backend 130308fb77edSStefan Weil --disable-glusterfs disable GlusterFS backend 130408fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 130508fb77edSStefan Weil --gcov=GCOV use specified gcov [$gcov_tool] 130608fb77edSStefan Weil --enable-tpm enable TPM support 130708fb77edSStefan Weil --disable-libssh2 disable ssh block device support 130808fb77edSStefan Weil --enable-libssh2 enable ssh block device support 130908fb77edSStefan Weil --disable-vhdx disables support for the Microsoft VHDX image format 131008fb77edSStefan Weil --enable-vhdx enable support for the Microsoft VHDX image format 131195c6bff3SBenoît Canet --disable-quorum disable quorum block filter support 131295c6bff3SBenoît Canet --enable-quorum enable quorum block filter support 131308fb77edSStefan Weil 131408fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1315af5db58eSpbrookEOF 1316af5db58eSpbrookexit 1 1317af5db58eSpbrookfi 1318af5db58eSpbrook 1319359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 1320359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 1321359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 1322359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 1323359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 1324359bc95dSPeter Maydell ARCH=tci 1325359bc95dSPeter Maydell else 132676ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 1327359bc95dSPeter Maydell fi 1328359bc95dSPeter Maydellfi 1329359bc95dSPeter Maydell 13308d05095cSPaolo Bonzini# check that the C compiler works. 13318d05095cSPaolo Bonzinicat > $TMPC <<EOF 133275cafad7SStefan Weilint main(void) { return 0; } 13338d05095cSPaolo BonziniEOF 13348d05095cSPaolo Bonzini 13358d05095cSPaolo Bonziniif compile_object ; then 13368d05095cSPaolo Bonzini : C compiler works ok 13378d05095cSPaolo Bonzinielse 133876ad07a4SPeter Maydell error_exit "\"$cc\" either does not exist or does not work" 13398d05095cSPaolo Bonzinifi 13408d05095cSPaolo Bonzini 134198b21dcdSPeter Maydell# Check that the C++ compiler exists and works with the C compiler 134298b21dcdSPeter Maydellif has $cxx; then 134398b21dcdSPeter Maydell cat > $TMPC <<EOF 134498b21dcdSPeter Maydellint c_function(void); 134598b21dcdSPeter Maydellint main(void) { return c_function(); } 134698b21dcdSPeter MaydellEOF 134798b21dcdSPeter Maydell 134898b21dcdSPeter Maydell compile_object 134998b21dcdSPeter Maydell 135098b21dcdSPeter Maydell cat > $TMPC <<EOF 135198b21dcdSPeter Maydellextern "C" { 135298b21dcdSPeter Maydell int c_function(void); 135398b21dcdSPeter Maydell} 135498b21dcdSPeter Maydellint c_function(void) { return 42; } 135598b21dcdSPeter MaydellEOF 135698b21dcdSPeter Maydell 135798b21dcdSPeter Maydell if (cc=$cxx do_cc $QEMU_CFLAGS -o $TMPE $TMPC $TMPO $LDFLAGS); then 135898b21dcdSPeter Maydell # C++ compiler $cxx works ok with C compiler $cc 135998b21dcdSPeter Maydell : 136098b21dcdSPeter Maydell else 136198b21dcdSPeter Maydell echo "C++ compiler $cxx does not work with C compiler $cc" 136298b21dcdSPeter Maydell echo "Disabling C++ specific optional code" 136398b21dcdSPeter Maydell cxx= 136498b21dcdSPeter Maydell fi 136598b21dcdSPeter Maydellelse 136698b21dcdSPeter Maydell echo "No C++ compiler available; disabling C++ specific optional code" 136798b21dcdSPeter Maydell cxx= 136898b21dcdSPeter Maydellfi 136998b21dcdSPeter Maydell 1370417c9d72SAlexander Graf# Consult white-list to determine whether to enable werror 1371417c9d72SAlexander Graf# by default. Only enable by default for git builds 1372417c9d72SAlexander Grafz_version=`cut -f3 -d. $source_path/VERSION` 1373417c9d72SAlexander Graf 1374417c9d72SAlexander Grafif test -z "$werror" ; then 13756c8fec83SAndreas Färber if test -d "$source_path/.git" -a \ 1376417c9d72SAlexander Graf "$linux" = "yes" ; then 1377417c9d72SAlexander Graf werror="yes" 1378417c9d72SAlexander Graf else 1379417c9d72SAlexander Graf werror="no" 1380417c9d72SAlexander Graf fi 1381417c9d72SAlexander Graffi 1382417c9d72SAlexander Graf 13838d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits" 13848d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags" 13858d05095cSPaolo Bonzinigcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags" 138637746c5eSMarc-André Lureaugcc_flags="-Wendif-labels $gcc_flags" 1387c1556a81SPeter Maydellgcc_flags="-Wno-initializer-overrides $gcc_flags" 138871429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags" 13896ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would 13906ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due 13916ca026cbSPeter Maydell# to -Werror this would just silently disable some features, 13926ca026cbSPeter Maydell# so it's too error prone. 13938d05095cSPaolo Bonzinicat > $TMPC << EOF 13948d05095cSPaolo Bonziniint main(void) { return 0; } 13958d05095cSPaolo BonziniEOF 13968d05095cSPaolo Bonzinifor flag in $gcc_flags; do 1397a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 1398a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 1399a1d29d6cSPeter Maydell # warning options). 1400a1d29d6cSPeter Maydell optflag="$(echo $flag | sed -e 's/^-Wno-/-W/')" 1401a1d29d6cSPeter Maydell if compile_prog "-Werror $optflag" "" ; then 14028d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 14038d05095cSPaolo Bonzini fi 14048d05095cSPaolo Bonzinidone 14058d05095cSPaolo Bonzini 140637746c5eSMarc-André Lureauif compile_prog "-Werror -fstack-protector-all" "" ; then 140737746c5eSMarc-André Lureau QEMU_CFLAGS="$QEMU_CFLAGS -fstack-protector-all" 140837746c5eSMarc-André Lureau LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,-fstack-protector-all" 140937746c5eSMarc-André Lureaufi 141037746c5eSMarc-André Lureau 1411cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and 1412cbdd1999SPaolo Bonzini# large functions that use global variables. The bug is in all releases of 1413cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in 1414cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013. 1415cbdd1999SPaolo Bonzinicat > $TMPC << EOF 1416cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2)) 1417cbdd1999SPaolo Bonziniint main(void) { return 0; } 1418cbdd1999SPaolo Bonzini#else 1419cbdd1999SPaolo Bonzini#error No bug in this compiler. 1420cbdd1999SPaolo Bonzini#endif 1421cbdd1999SPaolo BonziniEOF 1422cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then 1423cbdd1999SPaolo Bonzini TRANSLATE_OPT_CFLAGS=-fno-gcse 1424cbdd1999SPaolo Bonzinifi 1425cbdd1999SPaolo Bonzini 142640d6444eSAvi Kivityif test "$static" = "yes" ; then 1427aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 1428aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 1429aa0d1f44SPaolo Bonzini fi 143040d6444eSAvi Kivity if test "$pie" = "yes" ; then 143176ad07a4SPeter Maydell error_exit "static and pie are mutually incompatible" 143240d6444eSAvi Kivity else 143340d6444eSAvi Kivity pie="no" 143440d6444eSAvi Kivity fi 143540d6444eSAvi Kivityfi 143640d6444eSAvi Kivity 143740d6444eSAvi Kivityif test "$pie" = ""; then 143840d6444eSAvi Kivity case "$cpu-$targetos" in 1439c72b26ecSRichard Henderson i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD) 144040d6444eSAvi Kivity ;; 144140d6444eSAvi Kivity *) 144240d6444eSAvi Kivity pie="no" 144340d6444eSAvi Kivity ;; 144440d6444eSAvi Kivity esac 144540d6444eSAvi Kivityfi 144640d6444eSAvi Kivity 144740d6444eSAvi Kivityif test "$pie" != "no" ; then 144840d6444eSAvi Kivity cat > $TMPC << EOF 144921d4a791SAvi Kivity 145021d4a791SAvi Kivity#ifdef __linux__ 145121d4a791SAvi Kivity# define THREAD __thread 145221d4a791SAvi Kivity#else 145321d4a791SAvi Kivity# define THREAD 145421d4a791SAvi Kivity#endif 145521d4a791SAvi Kivity 145621d4a791SAvi Kivitystatic THREAD int tls_var; 145721d4a791SAvi Kivity 145821d4a791SAvi Kivityint main(void) { return tls_var; } 145921d4a791SAvi Kivity 146040d6444eSAvi KivityEOF 146140d6444eSAvi Kivity if compile_prog "-fPIE -DPIE" "-pie"; then 146240d6444eSAvi Kivity QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS" 146340d6444eSAvi Kivity LDFLAGS="-pie $LDFLAGS" 146440d6444eSAvi Kivity pie="yes" 146540d6444eSAvi Kivity if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 146640d6444eSAvi Kivity LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS" 146740d6444eSAvi Kivity fi 146840d6444eSAvi Kivity else 146940d6444eSAvi Kivity if test "$pie" = "yes"; then 147076ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 147140d6444eSAvi Kivity else 147240d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 147340d6444eSAvi Kivity pie="no" 147440d6444eSAvi Kivity fi 147540d6444eSAvi Kivity fi 147646eef33bSBrad 147746eef33bSBrad if compile_prog "-fno-pie" "-nopie"; then 147846eef33bSBrad CFLAGS_NOPIE="-fno-pie" 147946eef33bSBrad LDFLAGS_NOPIE="-nopie" 148046eef33bSBrad fi 148140d6444eSAvi Kivityfi 148240d6444eSAvi Kivity 148366518bf6SDon Slutz# check for broken gcc and libtool in RHEL5 148466518bf6SDon Slutzif test -n "$libtool" -a "$pie" != "no" ; then 148566518bf6SDon Slutz cat > $TMPC <<EOF 148666518bf6SDon Slutz 148766518bf6SDon Slutzvoid *f(unsigned char *buf, int len); 148866518bf6SDon Slutzvoid *g(unsigned char *buf, int len); 148966518bf6SDon Slutz 149066518bf6SDon Slutzvoid * 149166518bf6SDon Slutzf(unsigned char *buf, int len) 149266518bf6SDon Slutz{ 149366518bf6SDon Slutz return (void*)0L; 149466518bf6SDon Slutz} 149566518bf6SDon Slutz 149666518bf6SDon Slutzvoid * 149766518bf6SDon Slutzg(unsigned char *buf, int len) 149866518bf6SDon Slutz{ 149966518bf6SDon Slutz return f(buf, len); 150066518bf6SDon Slutz} 150166518bf6SDon Slutz 150266518bf6SDon SlutzEOF 150366518bf6SDon Slutz if ! libtool_prog; then 150466518bf6SDon Slutz echo "Disabling libtool due to broken toolchain support" 150566518bf6SDon Slutz libtool= 150666518bf6SDon Slutz fi 150766518bf6SDon Slutzfi 150866518bf6SDon Slutz 150909dada40SPaolo Bonzini########################################## 151009dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 151109dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 151209dada40SPaolo Bonzini# specification is necessary 151309dada40SPaolo Bonzini 151409dada40SPaolo Bonziniif test "$cpu" = "i386"; then 151509dada40SPaolo Bonzini cat > $TMPC << EOF 151609dada40SPaolo Bonzinistatic int sfaa(int *ptr) 151709dada40SPaolo Bonzini{ 151809dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 151909dada40SPaolo Bonzini} 152009dada40SPaolo Bonzini 152109dada40SPaolo Bonziniint main(void) 152209dada40SPaolo Bonzini{ 152309dada40SPaolo Bonzini int val = 42; 15241405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 152509dada40SPaolo Bonzini sfaa(&val); 152609dada40SPaolo Bonzini return val; 152709dada40SPaolo Bonzini} 152809dada40SPaolo BonziniEOF 152909dada40SPaolo Bonzini if ! compile_prog "" "" ; then 153009dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 153109dada40SPaolo Bonzini fi 153209dada40SPaolo Bonzinifi 153309dada40SPaolo Bonzini 153409dada40SPaolo Bonzini######################################### 1535ec530c81Sbellard# Solaris specific configure tool chain decisions 153609dada40SPaolo Bonzini 1537ec530c81Sbellardif test "$solaris" = "yes" ; then 15386792aa11SLoïc Minier if has $install; then 15396792aa11SLoïc Minier : 15406792aa11SLoïc Minier else 154176ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 154276ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 154376ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 1544ec530c81Sbellard fi 15456792aa11SLoïc Minier if test "`path_of $install`" = "/usr/sbin/install" ; then 154676ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 154776ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 154876ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 1549ec530c81Sbellard fi 15506792aa11SLoïc Minier if has ar; then 15516792aa11SLoïc Minier : 15526792aa11SLoïc Minier else 1553ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 155476ad07a4SPeter Maydell error_exit "No path includes ar" \ 155576ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 1556ec530c81Sbellard fi 155776ad07a4SPeter Maydell error_exit "No path includes ar" 1558ec530c81Sbellard fi 1559ec530c81Sbellardfi 1560ec530c81Sbellard 1561afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 1562121afa9eSAnthony Liguori target_list="$default_target_list" 1563121afa9eSAnthony Liguorielse 1564121afa9eSAnthony Liguori target_list=`echo "$target_list" | sed -e 's/,/ /g'` 15655327cf48Sbellardfi 156625b48338SPeter Maydell 156725b48338SPeter Maydell# Check that we recognised the target name; this allows a more 156825b48338SPeter Maydell# friendly error message than if we let it fall through. 156925b48338SPeter Maydellfor target in $target_list; do 157025b48338SPeter Maydell case " $default_target_list " in 157125b48338SPeter Maydell *" $target "*) 157225b48338SPeter Maydell ;; 157325b48338SPeter Maydell *) 157425b48338SPeter Maydell error_exit "Unknown target name '$target'" 157525b48338SPeter Maydell ;; 157625b48338SPeter Maydell esac 157725b48338SPeter Maydelldone 157825b48338SPeter Maydell 1579f55fe278SPaolo Bonzini# see if system emulation was really requested 1580f55fe278SPaolo Bonzinicase " $target_list " in 1581f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 1582f55fe278SPaolo Bonzini ;; 1583f55fe278SPaolo Bonzini *) softmmu=no 1584f55fe278SPaolo Bonzini ;; 1585f55fe278SPaolo Bonziniesac 15865327cf48Sbellard 1587249247c9SJuan Quintelafeature_not_found() { 1588249247c9SJuan Quintela feature=$1 158921684af0SStewart Smith remedy=$2 1590249247c9SJuan Quintela 159176ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 159221684af0SStewart Smith "configure was not able to find it." \ 159321684af0SStewart Smith "$remedy" 1594249247c9SJuan Quintela} 1595249247c9SJuan Quintela 15967d13299dSbellard# --- 15977d13299dSbellard# big/little endian test 15987d13299dSbellardcat > $TMPC << EOF 159961cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 160061cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 160161cc919fSMike Frysingerextern int foo(short *, short *); 160261cc919fSMike Frysingerint main(int argc, char *argv[]) { 160361cc919fSMike Frysinger return foo(big_endian, little_endian); 16047d13299dSbellard} 16057d13299dSbellardEOF 16067d13299dSbellard 160761cc919fSMike Frysingerif compile_object ; then 160861cc919fSMike Frysinger if grep -q BiGeNdIaN $TMPO ; then 160961cc919fSMike Frysinger bigendian="yes" 161061cc919fSMike Frysinger elif grep -q LiTtLeEnDiAn $TMPO ; then 161161cc919fSMike Frysinger bigendian="no" 16127d13299dSbellard else 16137d13299dSbellard echo big/little test failed 16147d13299dSbellard fi 16157d13299dSbellardelse 161661cc919fSMike Frysinger echo big/little test failed 16177d13299dSbellardfi 16187d13299dSbellard 1619b0a47e79SJuan Quintela########################################## 1620779ab5e3SStefan Weil# pkg-config probe 1621779ab5e3SStefan Weil 1622779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 162376ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 1624779ab5e3SStefan Weilfi 1625779ab5e3SStefan Weil 1626779ab5e3SStefan Weil########################################## 1627b0a47e79SJuan Quintela# NPTL probe 1628b0a47e79SJuan Quintela 162924cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 1630bd0c5661Spbrook cat > $TMPC <<EOF 1631bd0c5661Spbrook#include <sched.h> 163230813ceaSpbrook#include <linux/futex.h> 1633182eacc0SStefan Weilint main(void) { 1634bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 1635bd0c5661Spbrook#error bork 1636bd0c5661Spbrook#endif 1637182eacc0SStefan Weil return 0; 1638bd0c5661Spbrook} 1639bd0c5661SpbrookEOF 164024cb36a6SPeter Maydell if ! compile_object ; then 164121684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 1642b0a47e79SJuan Quintela fi 1643bd0c5661Spbrookfi 1644bd0c5661Spbrook 164511d9f695Sbellard########################################## 1646ac62922eSbalrog# zlib check 1647ac62922eSbalrog 16481ece9905SAlon Levyif test "$zlib" != "no" ; then 1649ac62922eSbalrog cat > $TMPC << EOF 1650ac62922eSbalrog#include <zlib.h> 1651ac62922eSbalrogint main(void) { zlibVersion(); return 0; } 1652ac62922eSbalrogEOF 165352166aa0SJuan Quintela if compile_prog "" "-lz" ; then 1654ac62922eSbalrog : 1655ac62922eSbalrog else 165676ad07a4SPeter Maydell error_exit "zlib check failed" \ 165776ad07a4SPeter Maydell "Make sure to have the zlib libs and headers installed." 1658ac62922eSbalrog fi 16591ece9905SAlon Levyfi 1660*eb0ecd5aSWill NewtonLIBS="$LIBS -lz" 1661ac62922eSbalrog 1662ac62922eSbalrog########################################## 1663f794573eSEduardo Otubo# libseccomp check 1664f794573eSEduardo Otubo 1665f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 166665d5d3f9SStefan Weil if $pkg_config --atleast-version=2.1.0 libseccomp; then 1667b4451996SMichael Tokarev libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`" 1668372e47e9SAndreas Färber QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`" 1669f794573eSEduardo Otubo seccomp="yes" 1670f794573eSEduardo Otubo else 1671f794573eSEduardo Otubo if test "$seccomp" = "yes"; then 167221684af0SStewart Smith feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.0" 1673f794573eSEduardo Otubo fi 1674e84d5956SYann E. MORIN seccomp="no" 1675f794573eSEduardo Otubo fi 1676f794573eSEduardo Otubofi 1677f794573eSEduardo Otubo########################################## 1678e37630caSaliguori# xen probe 1679e37630caSaliguori 1680fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 1681b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 1682d5b93ddfSAnthony PERARD 168350ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 168450ced5b3SStefan Weil # If no, we are done and there is no Xen support. 168550ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 168650ced5b3SStefan Weil 168750ced5b3SStefan Weil # Xen (any) 168850ced5b3SStefan Weil cat > $TMPC <<EOF 168950ced5b3SStefan Weil#include <xenctrl.h> 169050ced5b3SStefan Weilint main(void) { 169150ced5b3SStefan Weil return 0; 169250ced5b3SStefan Weil} 169350ced5b3SStefan WeilEOF 169450ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 169550ced5b3SStefan Weil # Xen not found 169650ced5b3SStefan Weil if test "$xen" = "yes" ; then 169721684af0SStewart Smith feature_not_found "xen" "Install xen devel" 169850ced5b3SStefan Weil fi 169950ced5b3SStefan Weil xen=no 170050ced5b3SStefan Weil 1701d5b93ddfSAnthony PERARD # Xen unstable 170269deef08SPeter Maydell elif 170369deef08SPeter Maydell cat > $TMPC <<EOF && 1704e37630caSaliguori#include <xenctrl.h> 1705e108a3c1SAnthony PERARD#include <xenstore.h> 1706d5b93ddfSAnthony PERARD#include <stdint.h> 1707d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 1708d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 1709d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 1710d5b93ddfSAnthony PERARD#endif 1711d5b93ddfSAnthony PERARDint main(void) { 1712d5b93ddfSAnthony PERARD xc_interface *xc; 1713d5b93ddfSAnthony PERARD xs_daemon_open(); 1714d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 1715d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1716d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 1717b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 17188688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 17198688e065SStefano Stabellini return 0; 17208688e065SStefano Stabellini} 17218688e065SStefano StabelliniEOF 17228688e065SStefano Stabellini compile_prog "" "$xen_libs" 172369deef08SPeter Maydell then 17248688e065SStefano Stabellini xen_ctrl_version=420 17258688e065SStefano Stabellini xen=yes 17268688e065SStefano Stabellini 172769deef08SPeter Maydell elif 172869deef08SPeter Maydell cat > $TMPC <<EOF && 17298688e065SStefano Stabellini#include <xenctrl.h> 17308688e065SStefano Stabellini#include <xs.h> 17318688e065SStefano Stabellini#include <stdint.h> 17328688e065SStefano Stabellini#include <xen/hvm/hvm_info_table.h> 17338688e065SStefano Stabellini#if !defined(HVM_MAX_VCPUS) 17348688e065SStefano Stabellini# error HVM_MAX_VCPUS not defined 17358688e065SStefano Stabellini#endif 17368688e065SStefano Stabelliniint main(void) { 17378688e065SStefano Stabellini xs_daemon_open(); 17389b4c0b56SPeter Maydell xc_interface_open(0, 0, 0); 17398688e065SStefano Stabellini xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 17408688e065SStefano Stabellini xc_gnttab_open(NULL, 0); 17418688e065SStefano Stabellini xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 1742d5b93ddfSAnthony PERARD return 0; 1743d5b93ddfSAnthony PERARD} 1744e37630caSaliguoriEOF 174550ced5b3SStefan Weil compile_prog "" "$xen_libs" 174669deef08SPeter Maydell then 1747d5b93ddfSAnthony PERARD xen_ctrl_version=410 1748fc321b4bSJuan Quintela xen=yes 1749d5b93ddfSAnthony PERARD 1750d5b93ddfSAnthony PERARD # Xen 4.0.0 175169deef08SPeter Maydell elif 175269deef08SPeter Maydell cat > $TMPC <<EOF && 1753d5b93ddfSAnthony PERARD#include <xenctrl.h> 1754d5b93ddfSAnthony PERARD#include <xs.h> 1755d5b93ddfSAnthony PERARD#include <stdint.h> 1756d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 1757d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 1758d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 1759d5b93ddfSAnthony PERARD#endif 1760d5b93ddfSAnthony PERARDint main(void) { 1761b87de24eSAnthony PERARD struct xen_add_to_physmap xatp = { 1762b87de24eSAnthony PERARD .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1763b87de24eSAnthony PERARD }; 1764d5b93ddfSAnthony PERARD xs_daemon_open(); 1765d5b93ddfSAnthony PERARD xc_interface_open(); 1766d5b93ddfSAnthony PERARD xc_gnttab_open(); 1767d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1768b87de24eSAnthony PERARD xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1769d5b93ddfSAnthony PERARD return 0; 1770d5b93ddfSAnthony PERARD} 1771d5b93ddfSAnthony PERARDEOF 1772d5b93ddfSAnthony PERARD compile_prog "" "$xen_libs" 177369deef08SPeter Maydell then 1774d5b93ddfSAnthony PERARD xen_ctrl_version=400 1775d5b93ddfSAnthony PERARD xen=yes 1776d5b93ddfSAnthony PERARD 1777b87de24eSAnthony PERARD # Xen 3.4.0 177869deef08SPeter Maydell elif 177969deef08SPeter Maydell cat > $TMPC <<EOF && 1780b87de24eSAnthony PERARD#include <xenctrl.h> 1781b87de24eSAnthony PERARD#include <xs.h> 1782b87de24eSAnthony PERARDint main(void) { 1783b87de24eSAnthony PERARD struct xen_add_to_physmap xatp = { 1784b87de24eSAnthony PERARD .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0, 1785b87de24eSAnthony PERARD }; 1786b87de24eSAnthony PERARD xs_daemon_open(); 1787b87de24eSAnthony PERARD xc_interface_open(); 1788b87de24eSAnthony PERARD xc_gnttab_open(); 1789b87de24eSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1790b87de24eSAnthony PERARD xc_memory_op(0, XENMEM_add_to_physmap, &xatp); 1791b87de24eSAnthony PERARD return 0; 1792b87de24eSAnthony PERARD} 1793b87de24eSAnthony PERARDEOF 1794b87de24eSAnthony PERARD compile_prog "" "$xen_libs" 179569deef08SPeter Maydell then 1796b87de24eSAnthony PERARD xen_ctrl_version=340 1797b87de24eSAnthony PERARD xen=yes 1798b87de24eSAnthony PERARD 1799b87de24eSAnthony PERARD # Xen 3.3.0 180069deef08SPeter Maydell elif 180169deef08SPeter Maydell cat > $TMPC <<EOF && 1802d5b93ddfSAnthony PERARD#include <xenctrl.h> 1803d5b93ddfSAnthony PERARD#include <xs.h> 1804d5b93ddfSAnthony PERARDint main(void) { 1805d5b93ddfSAnthony PERARD xs_daemon_open(); 1806d5b93ddfSAnthony PERARD xc_interface_open(); 1807d5b93ddfSAnthony PERARD xc_gnttab_open(); 1808d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 1809d5b93ddfSAnthony PERARD return 0; 1810d5b93ddfSAnthony PERARD} 1811d5b93ddfSAnthony PERARDEOF 1812d5b93ddfSAnthony PERARD compile_prog "" "$xen_libs" 181369deef08SPeter Maydell then 1814d5b93ddfSAnthony PERARD xen_ctrl_version=330 1815d5b93ddfSAnthony PERARD xen=yes 1816d5b93ddfSAnthony PERARD 181750ced5b3SStefan Weil # Xen version unsupported 1818e37630caSaliguori else 1819fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 182021684af0SStewart Smith feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)" 1821fc321b4bSJuan Quintela fi 1822fc321b4bSJuan Quintela xen=no 1823e37630caSaliguori fi 1824d5b93ddfSAnthony PERARD 1825d5b93ddfSAnthony PERARD if test "$xen" = yes; then 1826d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 1827d5b93ddfSAnthony PERARD fi 1828e37630caSaliguorifi 1829e37630caSaliguori 1830eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 1831eb6fda0fSAnthony PERARD if test "$xen" = "yes" && test "$linux" = "yes" && 1832eb6fda0fSAnthony PERARD test "$xen_ctrl_version" -ge 340; then 1833eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 1834eb6fda0fSAnthony PERARD else 1835eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 1836eb6fda0fSAnthony PERARD if test "$xen_ctrl_version" -lt 340; then 183776ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 183876ad07a4SPeter Maydell "This feature does not work with Xen 3.3" 1839eb6fda0fSAnthony PERARD fi 184076ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 184176ad07a4SPeter Maydell " but this feature requires /sys from Linux" 1842eb6fda0fSAnthony PERARD fi 1843eb6fda0fSAnthony PERARD xen_pci_passthrough=no 1844eb6fda0fSAnthony PERARD fi 1845eb6fda0fSAnthony PERARDfi 1846eb6fda0fSAnthony PERARD 1847e37630caSaliguori########################################## 184844dc0ca3SAlon Levy# libtool probe 184944dc0ca3SAlon Levy 18503f534581SBradif ! has $libtool; then 185144dc0ca3SAlon Levy libtool= 185244dc0ca3SAlon Levyfi 185344dc0ca3SAlon Levy 18548e515b12SPeter Maydell# MacOSX ships with a libtool which isn't the GNU one; weed this 18558e515b12SPeter Maydell# out by checking whether libtool supports the --version switch 18568e515b12SPeter Maydellif test -n "$libtool"; then 18578e515b12SPeter Maydell if ! "$libtool" --version >/dev/null 2>&1; then 18588e515b12SPeter Maydell libtool= 18598e515b12SPeter Maydell fi 18608e515b12SPeter Maydellfi 18618e515b12SPeter Maydell 186244dc0ca3SAlon Levy########################################## 1863dfffc653SJuan Quintela# Sparse probe 1864dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 18650dba6195SLoïc Minier if has cgcc; then 1866dfffc653SJuan Quintela sparse=yes 1867dfffc653SJuan Quintela else 1868dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 186921684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 1870dfffc653SJuan Quintela fi 1871dfffc653SJuan Quintela sparse=no 1872dfffc653SJuan Quintela fi 1873dfffc653SJuan Quintelafi 1874dfffc653SJuan Quintela 1875dfffc653SJuan Quintela########################################## 1876a4ccabcfSAnthony Liguori# GTK probe 1877a4ccabcfSAnthony Liguori 1878a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then 1879528de90aSDaniel P. Berrange gtkpackage="gtk+-$gtkabi" 1880528de90aSDaniel P. Berrange if test "$gtkabi" = "3.0" ; then 1881528de90aSDaniel P. Berrange gtkversion="3.0.0" 1882528de90aSDaniel P. Berrange vtepackage="vte-2.90" 1883528de90aSDaniel P. Berrange vteversion="0.32.0" 1884528de90aSDaniel P. Berrange else 1885528de90aSDaniel P. Berrange gtkversion="2.18.0" 1886528de90aSDaniel P. Berrange vtepackage="vte" 1887528de90aSDaniel P. Berrange vteversion="0.24.0" 1888528de90aSDaniel P. Berrange fi 18890d185e63SPeter Maydell if ! $pkg_config --exists "$gtkpackage >= $gtkversion"; then 18900d185e63SPeter Maydell if test "$gtk" = "yes" ; then 189121684af0SStewart Smith feature_not_found "gtk" "Install gtk2 or gtk3 (requires --with-gtkabi=3.0 option to configure) devel" 18920d185e63SPeter Maydell fi 18930d185e63SPeter Maydell gtk="no" 18940d185e63SPeter Maydell elif ! $pkg_config --exists "$vtepackage >= $vteversion"; then 18950d185e63SPeter Maydell if test "$gtk" = "yes" ; then 18960d185e63SPeter Maydell error_exit "libvte not found (required for gtk support)" 18970d185e63SPeter Maydell fi 18980d185e63SPeter Maydell gtk="no" 18990d185e63SPeter Maydell else 1900ca871ec8SStefan Weil gtk_cflags=`$pkg_config --cflags $gtkpackage` 1901ca871ec8SStefan Weil gtk_libs=`$pkg_config --libs $gtkpackage` 1902ca871ec8SStefan Weil vte_cflags=`$pkg_config --cflags $vtepackage` 1903ca871ec8SStefan Weil vte_libs=`$pkg_config --libs $vtepackage` 1904a4ccabcfSAnthony Liguori libs_softmmu="$gtk_libs $vte_libs $libs_softmmu" 1905a4ccabcfSAnthony Liguori gtk="yes" 1906a4ccabcfSAnthony Liguori fi 1907a4ccabcfSAnthony Liguorifi 1908a4ccabcfSAnthony Liguori 1909a4ccabcfSAnthony Liguori########################################## 191011d9f695Sbellard# SDL probe 191111d9f695Sbellard 19123ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config). Try 19133ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config. 19143ec87ffeSPaolo Bonziniif test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then 19153ec87ffeSPaolo Bonzini sdl_config=sdl-config 19163ec87ffeSPaolo Bonzinifi 19173ec87ffeSPaolo Bonzini 191865d5d3f9SStefan Weilif $pkg_config sdl --exists; then 1919a8bd70adSPaolo Bonzini sdlconfig="$pkg_config sdl" 1920fec0e3e8SStefan Weil _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'` 19213ec87ffeSPaolo Bonzinielif has ${sdl_config}; then 19223ec87ffeSPaolo Bonzini sdlconfig="$sdl_config" 19239316f803SPaolo Bonzini _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'` 1924a0dfd8a4SLoïc Minierelse 1925a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 192621684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 1927a0dfd8a4SLoïc Minier fi 1928a0dfd8a4SLoïc Minier sdl=no 19299316f803SPaolo Bonzinifi 193029e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then 19313ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 19323ec87ffeSPaolo Bonzinifi 193311d9f695Sbellard 19349316f803SPaolo Bonzinisdl_too_old=no 1935c4198157SJuan Quintelaif test "$sdl" != "no" ; then 193611d9f695Sbellard cat > $TMPC << EOF 193711d9f695Sbellard#include <SDL.h> 193811d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 193911d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 194011d9f695SbellardEOF 19419316f803SPaolo Bonzini sdl_cflags=`$sdlconfig --cflags 2> /dev/null` 194274f42e18STeLeMan if test "$static" = "yes" ; then 194374f42e18STeLeMan sdl_libs=`$sdlconfig --static-libs 2>/dev/null` 194474f42e18STeLeMan else 19459316f803SPaolo Bonzini sdl_libs=`$sdlconfig --libs 2> /dev/null` 194674f42e18STeLeMan fi 194752166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 194811d9f695Sbellard if test "$_sdlversion" -lt 121 ; then 194911d9f695Sbellard sdl_too_old=yes 195011d9f695Sbellard else 1951fd677642Sths if test "$cocoa" = "no" ; then 195211d9f695Sbellard sdl=yes 195311d9f695Sbellard fi 1954fd677642Sths fi 19557c1f25b4Sbellard 195667c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 19571ac88f28SJuan Quintela if test "$sdl" = "yes" -a "$static" = "yes" ; then 195867c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 1959f8aa6c7bSStefan Weil sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`" 1960f8aa6c7bSStefan Weil sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`" 196111d9f695Sbellard fi 196252166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 19631ac88f28SJuan Quintela : 19641ac88f28SJuan Quintela else 19651ac88f28SJuan Quintela sdl=no 19667c1f25b4Sbellard fi 19677c1f25b4Sbellard fi # static link 1968c4198157SJuan Quintela else # sdl not found 1969c4198157SJuan Quintela if test "$sdl" = "yes" ; then 197021684af0SStewart Smith feature_not_found "sdl" "Install SDL devel" 1971c4198157SJuan Quintela fi 1972c4198157SJuan Quintela sdl=no 19737c1f25b4Sbellard fi # sdl compile test 1974fd677642Sthsfi 197511d9f695Sbellard 19765368a422Saliguoriif test "$sdl" = "yes" ; then 19775368a422Saliguori cat > $TMPC <<EOF 19785368a422Saliguori#include <SDL.h> 19795368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 19805368a422Saliguori#include <X11/XKBlib.h> 19815368a422Saliguori#else 19825368a422Saliguori#error No x11 support 19835368a422Saliguori#endif 19845368a422Saliguoriint main(void) { return 0; } 19855368a422SaliguoriEOF 198652166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 1987681306dfSJuan Quintela sdl_libs="$sdl_libs -lX11" 19885368a422Saliguori fi 19890705667eSJuan Quintela libs_softmmu="$sdl_libs $libs_softmmu" 19905368a422Saliguorifi 19915368a422Saliguori 19928f28f3fbSths########################################## 19932da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 19942da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 19952da776dbSMichael R. Hines cat > $TMPC <<EOF 19962da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 19972da776dbSMichael R. Hinesint main(void) { return 0; } 19982da776dbSMichael R. HinesEOF 19992da776dbSMichael R. Hines rdma_libs="-lrdmacm -libverbs" 20002da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 20012da776dbSMichael R. Hines rdma="yes" 20022da776dbSMichael R. Hines libs_softmmu="$libs_softmmu $rdma_libs" 20032da776dbSMichael R. Hines else 20042da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 20052da776dbSMichael R. Hines error_exit \ 20062da776dbSMichael R. Hines " OpenFabrics librdmacm/libibverbs not present." \ 20072da776dbSMichael R. Hines " Your options:" \ 20082da776dbSMichael R. Hines " (1) Fast: Install infiniband packages from your distro." \ 20092da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 20102da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 20112da776dbSMichael R. Hines fi 20122da776dbSMichael R. Hines rdma="no" 20132da776dbSMichael R. Hines fi 20142da776dbSMichael R. Hinesfi 20152da776dbSMichael R. Hines 20162da776dbSMichael R. Hines########################################## 20177536ee4bSTim Hardeck# VNC TLS/WS detection 20187536ee4bSTim Hardeckif test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then 2019ae6b5e5aSaliguori cat > $TMPC <<EOF 2020ae6b5e5aSaliguori#include <gnutls/gnutls.h> 2021ae6b5e5aSaliguoriint main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } 2022ae6b5e5aSaliguoriEOF 2023a8bd70adSPaolo Bonzini vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 2024a8bd70adSPaolo Bonzini vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 202552166aa0SJuan Quintela if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then 20267536ee4bSTim Hardeck if test "$vnc_tls" != "no" ; then 20271be10ad2SJuan Quintela vnc_tls=yes 20287536ee4bSTim Hardeck fi 20297536ee4bSTim Hardeck if test "$vnc_ws" != "no" ; then 20307536ee4bSTim Hardeck vnc_ws=yes 20317536ee4bSTim Hardeck fi 2032a5e32cc9SJuan Quintela libs_softmmu="$vnc_tls_libs $libs_softmmu" 2033ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags" 2034ae6b5e5aSaliguori else 20351be10ad2SJuan Quintela if test "$vnc_tls" = "yes" ; then 203621684af0SStewart Smith feature_not_found "vnc-tls" "Install gnutls devel" 20371be10ad2SJuan Quintela fi 20387536ee4bSTim Hardeck if test "$vnc_ws" = "yes" ; then 203921684af0SStewart Smith feature_not_found "vnc-ws" "Install gnutls devel" 20407536ee4bSTim Hardeck fi 20411be10ad2SJuan Quintela vnc_tls=no 20427536ee4bSTim Hardeck vnc_ws=no 20438d5d2d4cSths fi 20448d5d2d4cSthsfi 20458d5d2d4cSths 20468d5d2d4cSths########################################## 204795c6bff3SBenoît Canet# Quorum probe (check for gnutls) 204895c6bff3SBenoît Canetif test "$quorum" != "no" ; then 204995c6bff3SBenoît Canetcat > $TMPC <<EOF 205095c6bff3SBenoît Canet#include <gnutls/gnutls.h> 205195c6bff3SBenoît Canet#include <gnutls/crypto.h> 205295c6bff3SBenoît Canetint main(void) {char data[4096], digest[32]; 205395c6bff3SBenoît Canetgnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest); 205495c6bff3SBenoît Canetreturn 0; 205595c6bff3SBenoît Canet} 205695c6bff3SBenoît CanetEOF 205795c6bff3SBenoît Canetquorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null` 205895c6bff3SBenoît Canetquorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null` 205995c6bff3SBenoît Canetif compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then 206095c6bff3SBenoît Canet qcow_tls=yes 206195c6bff3SBenoît Canet libs_softmmu="$quorum_tls_libs $libs_softmmu" 206295c6bff3SBenoît Canet libs_tools="$quorum_tls_libs $libs_softmmu" 206395c6bff3SBenoît Canet QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags" 206495c6bff3SBenoît Canetelse 206595c6bff3SBenoît Canet echo "gnutls > 2.10.0 required to compile Quorum" 206695c6bff3SBenoît Canet exit 1 206795c6bff3SBenoît Canetfi 206895c6bff3SBenoît Canetfi 206995c6bff3SBenoît Canet 207095c6bff3SBenoît Canet########################################## 20712f9606b3Saliguori# VNC SASL detection 2072821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then 20732f9606b3Saliguori cat > $TMPC <<EOF 20742f9606b3Saliguori#include <sasl/sasl.h> 20752f9606b3Saliguori#include <stdio.h> 20762f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 20772f9606b3SaliguoriEOF 20782f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 20792f9606b3Saliguori vnc_sasl_cflags="" 20802f9606b3Saliguori vnc_sasl_libs="-lsasl2" 208152166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 2082ea784e3bSJuan Quintela vnc_sasl=yes 2083fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 2084ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 20852f9606b3Saliguori else 2086ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 208721684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 2088ea784e3bSJuan Quintela fi 2089ea784e3bSJuan Quintela vnc_sasl=no 20902f9606b3Saliguori fi 20912f9606b3Saliguorifi 20922f9606b3Saliguori 20932f9606b3Saliguori########################################## 20942f6f5c7aSCorentin Chary# VNC JPEG detection 2095821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then 20962f6f5c7aSCorentin Charycat > $TMPC <<EOF 20972f6f5c7aSCorentin Chary#include <stdio.h> 20982f6f5c7aSCorentin Chary#include <jpeglib.h> 20992f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 21002f6f5c7aSCorentin CharyEOF 21012f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 21022f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 21032f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 21042f6f5c7aSCorentin Chary vnc_jpeg=yes 21052f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 2106ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 21072f6f5c7aSCorentin Chary else 21082f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 210921684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 21102f6f5c7aSCorentin Chary fi 21112f6f5c7aSCorentin Chary vnc_jpeg=no 21122f6f5c7aSCorentin Chary fi 21132f6f5c7aSCorentin Charyfi 21142f6f5c7aSCorentin Chary 21152f6f5c7aSCorentin Chary########################################## 2116efe556adSCorentin Chary# VNC PNG detection 2117821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then 2118efe556adSCorentin Charycat > $TMPC <<EOF 2119efe556adSCorentin Chary//#include <stdio.h> 2120efe556adSCorentin Chary#include <png.h> 2121832ce9c2SScott Wood#include <stddef.h> 2122efe556adSCorentin Charyint main(void) { 2123efe556adSCorentin Chary png_structp png_ptr; 2124efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 21257edc3fedSPeter Maydell return png_ptr != 0; 2126efe556adSCorentin Chary} 2127efe556adSCorentin CharyEOF 212865d5d3f9SStefan Weil if $pkg_config libpng --exists; then 2129ca871ec8SStefan Weil vnc_png_cflags=`$pkg_config libpng --cflags` 2130ca871ec8SStefan Weil vnc_png_libs=`$pkg_config libpng --libs` 21319af8025eSBrad else 2132efe556adSCorentin Chary vnc_png_cflags="" 2133efe556adSCorentin Chary vnc_png_libs="-lpng" 21349af8025eSBrad fi 2135efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 2136efe556adSCorentin Chary vnc_png=yes 2137efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 21389af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 2139efe556adSCorentin Chary else 2140efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 214121684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 2142efe556adSCorentin Chary fi 2143efe556adSCorentin Chary vnc_png=no 2144efe556adSCorentin Chary fi 2145efe556adSCorentin Charyfi 2146efe556adSCorentin Chary 2147efe556adSCorentin Chary########################################## 214876655d6dSaliguori# fnmatch() probe, used for ACL routines 214976655d6dSaliguorifnmatch="no" 215076655d6dSaliguoricat > $TMPC << EOF 215176655d6dSaliguori#include <fnmatch.h> 215276655d6dSaliguoriint main(void) 215376655d6dSaliguori{ 215476655d6dSaliguori fnmatch("foo", "foo", 0); 215576655d6dSaliguori return 0; 215676655d6dSaliguori} 215776655d6dSaliguoriEOF 215852166aa0SJuan Quintelaif compile_prog "" "" ; then 215976655d6dSaliguori fnmatch="yes" 216076655d6dSaliguorifi 216176655d6dSaliguori 216276655d6dSaliguori########################################## 2163ee682d27SStefan Weil# uuid_generate() probe, used for vdi block driver 21642d16c8e9SPeter Maydell# Note that on some systems (notably MacOSX) no extra library 21652d16c8e9SPeter Maydell# need be linked to get the uuid functions. 2166ee682d27SStefan Weilif test "$uuid" != "no" ; then 2167ee682d27SStefan Weil uuid_libs="-luuid" 2168ee682d27SStefan Weil cat > $TMPC << EOF 2169ee682d27SStefan Weil#include <uuid/uuid.h> 2170ee682d27SStefan Weilint main(void) 2171ee682d27SStefan Weil{ 2172ee682d27SStefan Weil uuid_t my_uuid; 2173ee682d27SStefan Weil uuid_generate(my_uuid); 2174ee682d27SStefan Weil return 0; 2175ee682d27SStefan Weil} 2176ee682d27SStefan WeilEOF 21772d16c8e9SPeter Maydell if compile_prog "" "" ; then 21782d16c8e9SPeter Maydell uuid="yes" 21792d16c8e9SPeter Maydell elif compile_prog "" "$uuid_libs" ; then 2180ee682d27SStefan Weil uuid="yes" 2181ee682d27SStefan Weil libs_softmmu="$uuid_libs $libs_softmmu" 2182ee682d27SStefan Weil libs_tools="$uuid_libs $libs_tools" 2183ee682d27SStefan Weil else 2184ee682d27SStefan Weil if test "$uuid" = "yes" ; then 218521684af0SStewart Smith feature_not_found "uuid" "Install libuuid devel" 2186ee682d27SStefan Weil fi 2187ee682d27SStefan Weil uuid=no 2188ee682d27SStefan Weil fi 2189ee682d27SStefan Weilfi 2190ee682d27SStefan Weil 21914f18b782SJeff Codyif test "$vhdx" = "yes" ; then 21924f18b782SJeff Cody if test "$uuid" = "no" ; then 21934f18b782SJeff Cody error_exit "uuid required for VHDX support" 21944f18b782SJeff Cody fi 21954f18b782SJeff Codyelif test "$vhdx" != "no" ; then 21964f18b782SJeff Cody if test "$uuid" = "yes" ; then 21974f18b782SJeff Cody vhdx=yes 21984f18b782SJeff Cody else 21994f18b782SJeff Cody vhdx=no 22004f18b782SJeff Cody fi 22014f18b782SJeff Codyfi 22024f18b782SJeff Cody 2203ee682d27SStefan Weil########################################## 2204dce512deSChristoph Hellwig# xfsctl() probe, used for raw-posix 2205dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 2206dce512deSChristoph Hellwig cat > $TMPC << EOF 2207ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 2208dce512deSChristoph Hellwig#include <xfs/xfs.h> 2209dce512deSChristoph Hellwigint main(void) 2210dce512deSChristoph Hellwig{ 2211dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 2212dce512deSChristoph Hellwig return 0; 2213dce512deSChristoph Hellwig} 2214dce512deSChristoph HellwigEOF 2215dce512deSChristoph Hellwig if compile_prog "" "" ; then 2216dce512deSChristoph Hellwig xfs="yes" 2217dce512deSChristoph Hellwig else 2218dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 221921684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 2220dce512deSChristoph Hellwig fi 2221dce512deSChristoph Hellwig xfs=no 2222dce512deSChristoph Hellwig fi 2223dce512deSChristoph Hellwigfi 2224dce512deSChristoph Hellwig 2225dce512deSChristoph Hellwig########################################## 22268a16d273Sths# vde libraries probe 2227dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 22284baae0acSJuan Quintela vde_libs="-lvdeplug" 22298a16d273Sths cat > $TMPC << EOF 22308a16d273Sths#include <libvdeplug.h> 22314a7f0e06Spbrookint main(void) 22324a7f0e06Spbrook{ 22334a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 2234fea08e08SPeter Maydell char s[] = ""; 2235fea08e08SPeter Maydell vde_open(s, s, &a); 22364a7f0e06Spbrook return 0; 22374a7f0e06Spbrook} 22388a16d273SthsEOF 223952166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 22404baae0acSJuan Quintela vde=yes 22418e02e54cSJuan Quintela libs_softmmu="$vde_libs $libs_softmmu" 22428e02e54cSJuan Quintela libs_tools="$vde_libs $libs_tools" 2243dfb278bdSJuan Quintela else 2244dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 224521684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 2246dfb278bdSJuan Quintela fi 2247dfb278bdSJuan Quintela vde=no 22488a16d273Sths fi 22498a16d273Sthsfi 22508a16d273Sths 22518a16d273Sths########################################## 225258952137SVincenzo Maffione# netmap headers probe 225358952137SVincenzo Maffioneif test "$netmap" != "no" ; then 225458952137SVincenzo Maffione cat > $TMPC << EOF 225558952137SVincenzo Maffione#include <inttypes.h> 225658952137SVincenzo Maffione#include <net/if.h> 225758952137SVincenzo Maffione#include <net/netmap.h> 225858952137SVincenzo Maffione#include <net/netmap_user.h> 225958952137SVincenzo Maffioneint main(void) { return 0; } 226058952137SVincenzo MaffioneEOF 226158952137SVincenzo Maffione if compile_prog "" "" ; then 226258952137SVincenzo Maffione netmap=yes 226358952137SVincenzo Maffione else 226458952137SVincenzo Maffione if test "$netmap" = "yes" ; then 226558952137SVincenzo Maffione feature_not_found "netmap" 226658952137SVincenzo Maffione fi 226758952137SVincenzo Maffione netmap=no 226858952137SVincenzo Maffione fi 226958952137SVincenzo Maffionefi 227058952137SVincenzo Maffione 227158952137SVincenzo Maffione########################################## 227247e98658SCorey Bryant# libcap-ng library probe 227347e98658SCorey Bryantif test "$cap_ng" != "no" ; then 227447e98658SCorey Bryant cap_libs="-lcap-ng" 227547e98658SCorey Bryant cat > $TMPC << EOF 227647e98658SCorey Bryant#include <cap-ng.h> 227747e98658SCorey Bryantint main(void) 227847e98658SCorey Bryant{ 227947e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 228047e98658SCorey Bryant return 0; 228147e98658SCorey Bryant} 228247e98658SCorey BryantEOF 228347e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 228447e98658SCorey Bryant cap_ng=yes 228547e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 228647e98658SCorey Bryant else 228747e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 228821684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 228947e98658SCorey Bryant fi 229047e98658SCorey Bryant cap_ng=no 229147e98658SCorey Bryant fi 229247e98658SCorey Bryantfi 229347e98658SCorey Bryant 229447e98658SCorey Bryant########################################## 2295c2de5c91Smalc# Sound support libraries probe 22968f28f3fbSths 2297c2de5c91Smalcaudio_drv_probe() 2298c2de5c91Smalc{ 2299c2de5c91Smalc drv=$1 2300c2de5c91Smalc hdr=$2 2301c2de5c91Smalc lib=$3 2302c2de5c91Smalc exp=$4 2303c2de5c91Smalc cfl=$5 23048f28f3fbSths cat > $TMPC << EOF 2305c2de5c91Smalc#include <$hdr> 2306c2de5c91Smalcint main(void) { $exp } 23078f28f3fbSthsEOF 230852166aa0SJuan Quintela if compile_prog "$cfl" "$lib" ; then 23098f28f3fbSths : 23108f28f3fbSths else 231176ad07a4SPeter Maydell error_exit "$drv check failed" \ 231276ad07a4SPeter Maydell "Make sure to have the $drv libs and headers installed." 23138f28f3fbSths fi 2314c2de5c91Smalc} 2315c2de5c91Smalc 23162fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'` 2317c2de5c91Smalcfor drv in $audio_drv_list; do 2318c2de5c91Smalc case $drv in 2319c2de5c91Smalc alsa) 2320c2de5c91Smalc audio_drv_probe $drv alsa/asoundlib.h -lasound \ 2321e35bcb0cSStefan Weil "return snd_pcm_close((snd_pcm_t *)0);" 2322a4bf6780SJuan Quintela libs_softmmu="-lasound $libs_softmmu" 2323c2de5c91Smalc ;; 2324c2de5c91Smalc 2325c2de5c91Smalc fmod) 2326c2de5c91Smalc if test -z $fmod_lib || test -z $fmod_inc; then 232776ad07a4SPeter Maydell error_exit "You must specify path to FMOD library and headers" \ 232876ad07a4SPeter Maydell "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so" 23298f28f3fbSths fi 2330c2de5c91Smalc audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc" 2331a4bf6780SJuan Quintela libs_softmmu="$fmod_lib $libs_softmmu" 2332c2de5c91Smalc ;; 2333c2de5c91Smalc 2334c2de5c91Smalc esd) 2335c2de5c91Smalc audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' 2336a4bf6780SJuan Quintela libs_softmmu="-lesd $libs_softmmu" 233767f86e8eSJuan Quintela audio_pt_int="yes" 2338c2de5c91Smalc ;; 2339b8e59f18Smalc 2340b8e59f18Smalc pa) 2341a394aed2SMarc-André Lureau audio_drv_probe $drv pulse/mainloop.h "-lpulse" \ 2342a394aed2SMarc-André Lureau "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;" 2343a394aed2SMarc-André Lureau libs_softmmu="-lpulse $libs_softmmu" 234467f86e8eSJuan Quintela audio_pt_int="yes" 2345b8e59f18Smalc ;; 2346b8e59f18Smalc 2347997e690aSJuan Quintela coreaudio) 2348997e690aSJuan Quintela libs_softmmu="-framework CoreAudio $libs_softmmu" 2349997e690aSJuan Quintela ;; 2350997e690aSJuan Quintela 2351a4bf6780SJuan Quintela dsound) 2352a4bf6780SJuan Quintela libs_softmmu="-lole32 -ldxguid $libs_softmmu" 2353d5631638Smalc audio_win_int="yes" 2354a4bf6780SJuan Quintela ;; 2355a4bf6780SJuan Quintela 2356a4bf6780SJuan Quintela oss) 2357a4bf6780SJuan Quintela libs_softmmu="$oss_lib $libs_softmmu" 2358a4bf6780SJuan Quintela ;; 2359a4bf6780SJuan Quintela 2360a4bf6780SJuan Quintela sdl|wav) 23612f6a1ab0Sblueswir1 # XXX: Probes for CoreAudio, DirectSound, SDL(?) 23622f6a1ab0Sblueswir1 ;; 23632f6a1ab0Sblueswir1 2364d5631638Smalc winwave) 2365d5631638Smalc libs_softmmu="-lwinmm $libs_softmmu" 2366d5631638Smalc audio_win_int="yes" 2367d5631638Smalc ;; 2368d5631638Smalc 2369e4c63a6aSmalc *) 23701c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 237176ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 237276ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 2373e4c63a6aSmalc } 2374e4c63a6aSmalc ;; 2375c2de5c91Smalc esac 2376c2de5c91Smalcdone 23778f28f3fbSths 23784d3b6f6eSbalrog########################################## 23792e4d9fb1Saurel32# BrlAPI probe 23802e4d9fb1Saurel32 23814ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 2382eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 23832e4d9fb1Saurel32 cat > $TMPC << EOF 23842e4d9fb1Saurel32#include <brlapi.h> 2385832ce9c2SScott Wood#include <stddef.h> 23862e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 23872e4d9fb1Saurel32EOF 238852166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 23892e4d9fb1Saurel32 brlapi=yes 2390264606b3SJuan Quintela libs_softmmu="$brlapi_libs $libs_softmmu" 23914ffcedb6SJuan Quintela else 23924ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 239321684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 23944ffcedb6SJuan Quintela fi 23954ffcedb6SJuan Quintela brlapi=no 2396eb82284fSJuan Quintela fi 2397eb82284fSJuan Quintelafi 23982e4d9fb1Saurel32 23992e4d9fb1Saurel32########################################## 24004d3b6f6eSbalrog# curses probe 2401a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 2402e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 2403e095e2f3SStefan Weil curses_list="-lpdcurses" 2404e095e2f3SStefan Weil else 2405cfeda5f4SEd Maste curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses" 2406e095e2f3SStefan Weil fi 2407c584a6d0SJuan Quintela curses_found=no 24084d3b6f6eSbalrog cat > $TMPC << EOF 24094d3b6f6eSbalrog#include <curses.h> 2410ef9a2524SStefan Weilint main(void) { 2411ef9a2524SStefan Weil const char *s = curses_version(); 2412ef9a2524SStefan Weil resize_term(0, 0); 2413ef9a2524SStefan Weil return s != 0; 2414ef9a2524SStefan Weil} 24154d3b6f6eSbalrogEOF 2416ecbe251fSVadim Evard IFS=: 24174f78ef9aSJuan Quintela for curses_lib in $curses_list; do 2418ecbe251fSVadim Evard unset IFS 24194f78ef9aSJuan Quintela if compile_prog "" "$curses_lib" ; then 2420c584a6d0SJuan Quintela curses_found=yes 24214f78ef9aSJuan Quintela libs_softmmu="$curses_lib $libs_softmmu" 24224f78ef9aSJuan Quintela break 24234d3b6f6eSbalrog fi 24244f78ef9aSJuan Quintela done 2425ecbe251fSVadim Evard unset IFS 2426c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 2427c584a6d0SJuan Quintela curses=yes 2428c584a6d0SJuan Quintela else 2429c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 243021684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 2431c584a6d0SJuan Quintela fi 2432c584a6d0SJuan Quintela curses=no 2433c584a6d0SJuan Quintela fi 24344f78ef9aSJuan Quintelafi 24354d3b6f6eSbalrog 2436414f0dabSblueswir1########################################## 2437769ce76dSAlexander Graf# curl probe 2438a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 243965d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 2440a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 24414e2b0658SPaolo Bonzini else 24424e2b0658SPaolo Bonzini curlconfig=curl-config 24434e2b0658SPaolo Bonzini fi 2444769ce76dSAlexander Graf cat > $TMPC << EOF 2445769ce76dSAlexander Graf#include <curl/curl.h> 24460b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 2447769ce76dSAlexander GrafEOF 24484e2b0658SPaolo Bonzini curl_cflags=`$curlconfig --cflags 2>/dev/null` 24494e2b0658SPaolo Bonzini curl_libs=`$curlconfig --libs 2>/dev/null` 2450b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 2451769ce76dSAlexander Graf curl=yes 2452788c8196SJuan Quintela else 2453788c8196SJuan Quintela if test "$curl" = "yes" ; then 245421684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 2455788c8196SJuan Quintela fi 2456788c8196SJuan Quintela curl=no 2457769ce76dSAlexander Graf fi 2458769ce76dSAlexander Graffi # test "$curl" 2459769ce76dSAlexander Graf 2460769ce76dSAlexander Graf########################################## 2461fb599c9aSbalrog# bluez support probe 2462a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then 2463e820e3f4Sbalrog cat > $TMPC << EOF 2464e820e3f4Sbalrog#include <bluetooth/bluetooth.h> 2465e820e3f4Sbalrogint main(void) { return bt_error(0); } 2466e820e3f4SbalrogEOF 2467a8bd70adSPaolo Bonzini bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null` 2468a8bd70adSPaolo Bonzini bluez_libs=`$pkg_config --libs bluez 2> /dev/null` 246952166aa0SJuan Quintela if compile_prog "$bluez_cflags" "$bluez_libs" ; then 2470a20a6f46SJuan Quintela bluez=yes 2471e482d56aSJuan Quintela libs_softmmu="$bluez_libs $libs_softmmu" 2472e820e3f4Sbalrog else 2473a20a6f46SJuan Quintela if test "$bluez" = "yes" ; then 247421684af0SStewart Smith feature_not_found "bluez" "Install bluez-libs/libbluetooth devel" 2475a20a6f46SJuan Quintela fi 2476e820e3f4Sbalrog bluez="no" 2477e820e3f4Sbalrog fi 2478fb599c9aSbalrogfi 2479fb599c9aSbalrog 2480fb599c9aSbalrog########################################## 2481e18df141SAnthony Liguori# glib support probe 2482a52d28afSPaolo Bonzini 2483a52d28afSPaolo Bonziniif test "$mingw32" = yes; then 2484a52d28afSPaolo Bonzini # g_poll is required in order to integrate with the glib main loop. 2485a52d28afSPaolo Bonzini glib_req_ver=2.20 2486a52d28afSPaolo Bonzinielse 2487a52d28afSPaolo Bonzini glib_req_ver=2.12 2488a52d28afSPaolo Bonzinifi 2489aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 2490aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 2491aa0d1f44SPaolo Bonzini glib_modules="$glib_modules gmodule-2.0" 2492aa0d1f44SPaolo Bonzinifi 2493e26110cfSFam Zheng 2494aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 2495e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 2496e26110cfSFam Zheng glib_cflags=`$pkg_config --cflags $i` 2497e26110cfSFam Zheng glib_libs=`$pkg_config --libs $i` 2498ba1183daSFam Zheng CFLAGS="$glib_cflags $CFLAGS" 249914015304SAnthony Liguori LIBS="$glib_libs $LIBS" 2500957f1f99SMichael Roth libs_qga="$glib_libs $libs_qga" 2501e18df141SAnthony Liguori else 2502e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 2503e26110cfSFam Zheng fi 2504e26110cfSFam Zhengdone 2505e26110cfSFam Zheng 2506e26110cfSFam Zheng########################################## 2507e26110cfSFam Zheng# SHA command probe for modules 2508e26110cfSFam Zhengif test "$modules" = yes; then 2509e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 2510e26110cfSFam Zheng for c in $shacmd_probe; do 2511e26110cfSFam Zheng if which $c &>/dev/null; then 2512e26110cfSFam Zheng shacmd="$c" 2513e26110cfSFam Zheng break 2514e26110cfSFam Zheng fi 2515e26110cfSFam Zheng done 2516e26110cfSFam Zheng if test "$shacmd" = ""; then 2517e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 2518e26110cfSFam Zheng fi 2519e18df141SAnthony Liguorifi 2520e18df141SAnthony Liguori 2521e18df141SAnthony Liguori########################################## 2522e2134eb9SGerd Hoffmann# pixman support probe 2523e2134eb9SGerd Hoffmann 2524e2134eb9SGerd Hoffmannif test "$pixman" = ""; then 252574880fe2SRobert Schiele if test "$want_tools" = "no" -a "$softmmu" = "no"; then 252674880fe2SRobert Schiele pixman="none" 252774880fe2SRobert Schiele elif $pkg_config pixman-1 > /dev/null 2>&1; then 2528e2134eb9SGerd Hoffmann pixman="system" 2529e2134eb9SGerd Hoffmann else 2530e2134eb9SGerd Hoffmann pixman="internal" 2531e2134eb9SGerd Hoffmann fi 2532e2134eb9SGerd Hoffmannfi 253374880fe2SRobert Schieleif test "$pixman" = "none"; then 253474880fe2SRobert Schiele if test "$want_tools" != "no" -o "$softmmu" != "no"; then 253576ad07a4SPeter Maydell error_exit "pixman disabled but system emulation or tools build" \ 253676ad07a4SPeter Maydell "enabled. You can turn off pixman only if you also" \ 253776ad07a4SPeter Maydell "disable all system emulation targets and the tools" \ 253876ad07a4SPeter Maydell "build with '--disable-tools --disable-system'." 253974880fe2SRobert Schiele fi 254074880fe2SRobert Schiele pixman_cflags= 254174880fe2SRobert Schiele pixman_libs= 254274880fe2SRobert Schieleelif test "$pixman" = "system"; then 2543ca871ec8SStefan Weil pixman_cflags=`$pkg_config --cflags pixman-1` 2544ca871ec8SStefan Weil pixman_libs=`$pkg_config --libs pixman-1` 2545e2134eb9SGerd Hoffmannelse 2546e2134eb9SGerd Hoffmann if test ! -d ${source_path}/pixman/pixman; then 254776ad07a4SPeter Maydell error_exit "pixman not present. Your options:" \ 254876ad07a4SPeter Maydell " (1) Preferred: Install the pixman devel package (any recent" \ 254976ad07a4SPeter Maydell " distro should have packages as Xorg needs pixman too)." \ 255076ad07a4SPeter Maydell " (2) Fetch the pixman submodule, using:" \ 255176ad07a4SPeter Maydell " git submodule update --init pixman" 2552e2134eb9SGerd Hoffmann fi 25535ca9388aSGerd Hoffmann mkdir -p pixman/pixman 25545ca9388aSGerd Hoffmann pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman" 25555ca9388aSGerd Hoffmann pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1" 2556e2134eb9SGerd Hoffmannfi 2557e2134eb9SGerd Hoffmann 2558e2134eb9SGerd Hoffmann########################################## 255917bff52bSM. Mohan Kumar# libcap probe 256017bff52bSM. Mohan Kumar 256117bff52bSM. Mohan Kumarif test "$cap" != "no" ; then 256217bff52bSM. Mohan Kumar cat > $TMPC <<EOF 256317bff52bSM. Mohan Kumar#include <stdio.h> 256417bff52bSM. Mohan Kumar#include <sys/capability.h> 2565cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; } 256617bff52bSM. Mohan KumarEOF 256717bff52bSM. Mohan Kumar if compile_prog "" "-lcap" ; then 256817bff52bSM. Mohan Kumar cap=yes 256917bff52bSM. Mohan Kumar else 257017bff52bSM. Mohan Kumar cap=no 257117bff52bSM. Mohan Kumar fi 257217bff52bSM. Mohan Kumarfi 257317bff52bSM. Mohan Kumar 257417bff52bSM. Mohan Kumar########################################## 2575e5d355d1Saliguori# pthread probe 25764b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 25773c529d93Saliguori 2578e5d355d1Saliguoripthread=no 2579414f0dabSblueswir1cat > $TMPC << EOF 25803c529d93Saliguori#include <pthread.h> 25817a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 25827a42bbe4SStefan Weilint main(void) { 25837a42bbe4SStefan Weil pthread_t thread; 25847a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 25857a42bbe4SStefan Weil return 0; 25867a42bbe4SStefan Weil} 2587414f0dabSblueswir1EOF 2588bd00d539SAndreas Färberif compile_prog "" "" ; then 2589bd00d539SAndreas Färber pthread=yes 2590bd00d539SAndreas Färberelse 2591de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 259252166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 2593e5d355d1Saliguori pthread=yes 2594e3c56761SPeter Portante found=no 2595e3c56761SPeter Portante for lib_entry in $LIBS; do 2596e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 2597e3c56761SPeter Portante found=yes 2598e3c56761SPeter Portante break 2599e3c56761SPeter Portante fi 2600e3c56761SPeter Portante done 2601e3c56761SPeter Portante if test "$found" = "no"; then 26025572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 2603e3c56761SPeter Portante fi 2604de65fe0fSSebastian Herbszt break 2605414f0dabSblueswir1 fi 2606de65fe0fSSebastian Herbszt done 2607bd00d539SAndreas Färberfi 2608414f0dabSblueswir1 26094617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then 261076ad07a4SPeter Maydell error_exit "pthread check failed" \ 261176ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 2612e5d355d1Saliguorifi 2613e5d355d1Saliguori 2614bf9298b9Saliguori########################################## 2615f27aaf4bSChristian Brunner# rbd probe 2616f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 2617f27aaf4bSChristian Brunner cat > $TMPC <<EOF 2618f27aaf4bSChristian Brunner#include <stdio.h> 2619ad32e9c0SJosh Durgin#include <rbd/librbd.h> 2620f27aaf4bSChristian Brunnerint main(void) { 2621ad32e9c0SJosh Durgin rados_t cluster; 2622ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 2623f27aaf4bSChristian Brunner return 0; 2624f27aaf4bSChristian Brunner} 2625f27aaf4bSChristian BrunnerEOF 2626ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 2627f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 2628f27aaf4bSChristian Brunner rbd=yes 2629f27aaf4bSChristian Brunner else 2630f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 263121684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 2632f27aaf4bSChristian Brunner fi 2633f27aaf4bSChristian Brunner rbd=no 2634f27aaf4bSChristian Brunner fi 2635f27aaf4bSChristian Brunnerfi 2636f27aaf4bSChristian Brunner 2637f27aaf4bSChristian Brunner########################################## 26380a12ec87SRichard W.M. Jones# libssh2 probe 26394fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8 26400a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then 264165d5d3f9SStefan Weil if $pkg_config --atleast-version=$min_libssh2_version libssh2; then 26420a12ec87SRichard W.M. Jones libssh2_cflags=`$pkg_config libssh2 --cflags` 26430a12ec87SRichard W.M. Jones libssh2_libs=`$pkg_config libssh2 --libs` 26440a12ec87SRichard W.M. Jones libssh2=yes 26450a12ec87SRichard W.M. Jones else 26460a12ec87SRichard W.M. Jones if test "$libssh2" = "yes" ; then 26474fc16838SRichard W.M. Jones error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2" 26480a12ec87SRichard W.M. Jones fi 26490a12ec87SRichard W.M. Jones libssh2=no 26500a12ec87SRichard W.M. Jones fi 26510a12ec87SRichard W.M. Jonesfi 26520a12ec87SRichard W.M. Jones 26530a12ec87SRichard W.M. Jones########################################## 26549a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe 26559a2d462eSRichard W.M. Jones 26569a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then 26579a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 26589a2d462eSRichard W.M. Jones#include <stdio.h> 26599a2d462eSRichard W.M. Jones#include <libssh2.h> 26609a2d462eSRichard W.M. Jones#include <libssh2_sftp.h> 26619a2d462eSRichard W.M. Jonesint main(void) { 26629a2d462eSRichard W.M. Jones LIBSSH2_SESSION *session; 26639a2d462eSRichard W.M. Jones LIBSSH2_SFTP *sftp; 26649a2d462eSRichard W.M. Jones LIBSSH2_SFTP_HANDLE *sftp_handle; 26659a2d462eSRichard W.M. Jones session = libssh2_session_init (); 26669a2d462eSRichard W.M. Jones sftp = libssh2_sftp_init (session); 26679a2d462eSRichard W.M. Jones sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0); 26689a2d462eSRichard W.M. Jones libssh2_sftp_fsync (sftp_handle); 26699a2d462eSRichard W.M. Jones return 0; 26709a2d462eSRichard W.M. Jones} 26719a2d462eSRichard W.M. JonesEOF 26729a2d462eSRichard W.M. Jones # libssh2_cflags/libssh2_libs defined in previous test. 26739a2d462eSRichard W.M. Jones if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then 26749a2d462eSRichard W.M. Jones QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS" 26759a2d462eSRichard W.M. Jones fi 26769a2d462eSRichard W.M. Jonesfi 26779a2d462eSRichard W.M. Jones 26789a2d462eSRichard W.M. Jones########################################## 26795c6c3a6cSChristoph Hellwig# linux-aio probe 26805c6c3a6cSChristoph Hellwig 26815c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 26825c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 26835c6c3a6cSChristoph Hellwig#include <libaio.h> 26845c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 2685832ce9c2SScott Wood#include <stddef.h> 26865c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 26875c6c3a6cSChristoph HellwigEOF 26885c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 26895c6c3a6cSChristoph Hellwig linux_aio=yes 26905c6c3a6cSChristoph Hellwig else 26915c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 269221684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 26935c6c3a6cSChristoph Hellwig fi 26943cfcae3cSLuiz Capitulino linux_aio=no 26955c6c3a6cSChristoph Hellwig fi 26965c6c3a6cSChristoph Hellwigfi 26975c6c3a6cSChristoph Hellwig 26985c6c3a6cSChristoph Hellwig########################################## 26993b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux 27003b8acc11SPaolo Bonzini 27013b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then 27023b8acc11SPaolo Bonzini tpm_passthrough=$tpm 27033b8acc11SPaolo Bonzinielse 27043b8acc11SPaolo Bonzini tpm_passthrough=no 27053b8acc11SPaolo Bonzinifi 27063b8acc11SPaolo Bonzini 27073b8acc11SPaolo Bonzini########################################## 2708583f6e7bSStefan Hajnoczi# adjust virtio-blk-data-plane based on linux-aio 2709583f6e7bSStefan Hajnoczi 2710583f6e7bSStefan Hajnocziif test "$virtio_blk_data_plane" = "yes" -a \ 2711583f6e7bSStefan Hajnoczi "$linux_aio" != "yes" ; then 271276ad07a4SPeter Maydell error_exit "virtio-blk-data-plane requires Linux AIO, please try --enable-linux-aio" 2713583f6e7bSStefan Hajnoczielif test -z "$virtio_blk_data_plane" ; then 2714583f6e7bSStefan Hajnoczi virtio_blk_data_plane=$linux_aio 2715583f6e7bSStefan Hajnoczifi 2716583f6e7bSStefan Hajnoczi 2717583f6e7bSStefan Hajnoczi########################################## 2718758e8e38SVenkateswararao Jujjuri (JV)# attr probe 2719758e8e38SVenkateswararao Jujjuri (JV) 2720758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 2721758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 2722758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 2723758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 2724f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 2725f2338fb4SPavel Borzenkov#include <attr/xattr.h> 2726f2338fb4SPavel Borzenkov#else 27274f26f2b6SAvi Kivity#include <sys/xattr.h> 2728f2338fb4SPavel Borzenkov#endif 2729758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 2730758e8e38SVenkateswararao Jujjuri (JV)EOF 27314f26f2b6SAvi Kivity if compile_prog "" "" ; then 27324f26f2b6SAvi Kivity attr=yes 27334f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 2734f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 2735758e8e38SVenkateswararao Jujjuri (JV) attr=yes 2736758e8e38SVenkateswararao Jujjuri (JV) LIBS="-lattr $LIBS" 27374f26f2b6SAvi Kivity libattr=yes 2738758e8e38SVenkateswararao Jujjuri (JV) else 2739758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 274021684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 2741758e8e38SVenkateswararao Jujjuri (JV) fi 2742758e8e38SVenkateswararao Jujjuri (JV) attr=no 2743758e8e38SVenkateswararao Jujjuri (JV) fi 2744758e8e38SVenkateswararao Jujjuri (JV)fi 2745758e8e38SVenkateswararao Jujjuri (JV) 2746758e8e38SVenkateswararao Jujjuri (JV)########################################## 2747bf9298b9Saliguori# iovec probe 2748bf9298b9Saliguoricat > $TMPC <<EOF 2749db34f0b3Sblueswir1#include <sys/types.h> 2750bf9298b9Saliguori#include <sys/uio.h> 2751db34f0b3Sblueswir1#include <unistd.h> 2752f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 2753bf9298b9SaliguoriEOF 2754bf9298b9Saliguoriiovec=no 275552166aa0SJuan Quintelaif compile_prog "" "" ; then 2756bf9298b9Saliguori iovec=yes 2757bf9298b9Saliguorifi 2758bf9298b9Saliguori 2759f652e6afSaurel32########################################## 2760ceb42de8Saliguori# preadv probe 2761ceb42de8Saliguoricat > $TMPC <<EOF 2762ceb42de8Saliguori#include <sys/types.h> 2763ceb42de8Saliguori#include <sys/uio.h> 2764ceb42de8Saliguori#include <unistd.h> 2765c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 2766ceb42de8SaliguoriEOF 2767ceb42de8Saliguoripreadv=no 276852166aa0SJuan Quintelaif compile_prog "" "" ; then 2769ceb42de8Saliguori preadv=yes 2770ceb42de8Saliguorifi 2771ceb42de8Saliguori 2772ceb42de8Saliguori########################################## 2773f652e6afSaurel32# fdt probe 2774e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 2775e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 2776e169e1e1SPeter Maydellfdt_required=no 2777e169e1e1SPeter Maydellfor target in $target_list; do 2778e169e1e1SPeter Maydell case $target in 27796a49fa95SAlexander Graf aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu) 2780e169e1e1SPeter Maydell fdt_required=yes 2781e169e1e1SPeter Maydell ;; 2782e169e1e1SPeter Maydell esac 2783e169e1e1SPeter Maydelldone 2784e169e1e1SPeter Maydell 2785e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 2786e169e1e1SPeter Maydell if test "$fdt" = "no"; then 2787e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 2788e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 2789e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 2790e169e1e1SPeter Maydell fi 2791e169e1e1SPeter Maydell fdt=yes 2792e169e1e1SPeter Maydellfi 2793e169e1e1SPeter Maydell 27942df87df7SJuan Quintelaif test "$fdt" != "no" ; then 2795b41af4baSJuan Quintela fdt_libs="-lfdt" 279696ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 2797f652e6afSaurel32 cat > $TMPC << EOF 279896ce6545SPeter Crosthwaite#include <libfdt_env.h> 2799f652e6afSaurel32int main(void) { return 0; } 2800f652e6afSaurel32EOF 280152166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 2802a540f158SPeter Crosthwaite # system DTC is good - use it 2803f652e6afSaurel32 fdt=yes 2804a540f158SPeter Crosthwaite elif test -d ${source_path}/dtc/libfdt ; then 2805a540f158SPeter Crosthwaite # have submodule DTC - use it 2806a540f158SPeter Crosthwaite fdt=yes 2807a540f158SPeter Crosthwaite dtc_internal="yes" 2808a540f158SPeter Crosthwaite mkdir -p dtc 2809a540f158SPeter Crosthwaite if [ "$source_path" != `pwd` ] ; then 2810a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 2811a540f158SPeter Crosthwaite symlink "$source_path/dtc/scripts" "dtc/scripts" 28122df87df7SJuan Quintela fi 2813a540f158SPeter Crosthwaite fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt" 2814a540f158SPeter Crosthwaite fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" 2815a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 2816a540f158SPeter Crosthwaite # have neither and want - prompt for system/submodule install 28173f281822SStewart Smith error_exit "DTC (libfdt) not present. Your options:" \ 28183f281822SStewart Smith " (1) Preferred: Install the DTC (libfdt) devel package" \ 2819a540f158SPeter Crosthwaite " (2) Fetch the DTC submodule, using:" \ 2820a540f158SPeter Crosthwaite " git submodule update --init dtc" 2821a540f158SPeter Crosthwaite else 2822a540f158SPeter Crosthwaite # don't have and don't want 2823de3a354aSMichael Walle fdt_libs= 28242df87df7SJuan Quintela fdt=no 2825f652e6afSaurel32 fi 2826f652e6afSaurel32fi 2827f652e6afSaurel32 2828a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 2829a540f158SPeter Crosthwaite 283020ff075bSMichael Walle########################################## 2831b1e5fff4SMichael Walle# GLX probe, used by milkymist-tmu2 2832b1e5fff4SMichael Walleif test "$glx" != "no" ; then 2833b1e5fff4SMichael Walle glx_libs="-lGL -lX11" 283420ff075bSMichael Walle cat > $TMPC << EOF 283520ff075bSMichael Walle#include <X11/Xlib.h> 283620ff075bSMichael Walle#include <GL/gl.h> 283720ff075bSMichael Walle#include <GL/glx.h> 2838d3fcbb16SMichael Walleint main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; } 283920ff075bSMichael WalleEOF 2840d3fcbb16SMichael Walle if compile_prog "" "-lGL -lX11" ; then 2841b1e5fff4SMichael Walle glx=yes 284220ff075bSMichael Walle else 2843b1e5fff4SMichael Walle if test "$glx" = "yes" ; then 284421684af0SStewart Smith feature_not_found "glx" "Install GL devel (e.g. MESA)" 284520ff075bSMichael Walle fi 2846b1e5fff4SMichael Walle glx_libs= 2847b1e5fff4SMichael Walle glx=no 284820ff075bSMichael Walle fi 284920ff075bSMichael Wallefi 285020ff075bSMichael Walle 2851eb100396SBharata B Rao########################################## 2852eb100396SBharata B Rao# glusterfs probe 2853eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 285465d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 2855e01bee08SBharata B Rao glusterfs="yes" 2856ca871ec8SStefan Weil glusterfs_cflags=`$pkg_config --cflags glusterfs-api` 2857ca871ec8SStefan Weil glusterfs_libs=`$pkg_config --libs glusterfs-api` 285865d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 28590c14fb47SBharata B Rao glusterfs_discard="yes" 28600c14fb47SBharata B Rao fi 28617c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 28627c815372SBharata B Rao glusterfs_zerofill="yes" 28637c815372SBharata B Rao fi 2864eb100396SBharata B Rao else 2865eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 286621684af0SStewart Smith feature_not_found "GlusterFS backend support" "Install glusterfs-api devel" 2867eb100396SBharata B Rao fi 2868e01bee08SBharata B Rao glusterfs="no" 2869eb100396SBharata B Rao fi 2870eb100396SBharata B Raofi 2871eb100396SBharata B Rao 287239386ac7Saurel32# Check for inotify functions when we are building linux-user 28733b3f24adSaurel32# emulator. This is done because older glibc versions don't 28743b3f24adSaurel32# have syscall stubs for these implemented. In that case we 28753b3f24adSaurel32# don't provide them even if kernel supports them. 28763b3f24adSaurel32# 28773b3f24adSaurel32inotify=no 28783b3f24adSaurel32cat > $TMPC << EOF 28793b3f24adSaurel32#include <sys/inotify.h> 28803b3f24adSaurel32 28813b3f24adSaurel32int 28823b3f24adSaurel32main(void) 28833b3f24adSaurel32{ 28843b3f24adSaurel32 /* try to start inotify */ 28858690e420Saurel32 return inotify_init(); 28863b3f24adSaurel32} 28873b3f24adSaurel32EOF 288852166aa0SJuan Quintelaif compile_prog "" "" ; then 28893b3f24adSaurel32 inotify=yes 28903b3f24adSaurel32fi 28913b3f24adSaurel32 2892c05c7a73SRiku Voipioinotify1=no 2893c05c7a73SRiku Voipiocat > $TMPC << EOF 2894c05c7a73SRiku Voipio#include <sys/inotify.h> 2895c05c7a73SRiku Voipio 2896c05c7a73SRiku Voipioint 2897c05c7a73SRiku Voipiomain(void) 2898c05c7a73SRiku Voipio{ 2899c05c7a73SRiku Voipio /* try to start inotify */ 2900c05c7a73SRiku Voipio return inotify_init1(0); 2901c05c7a73SRiku Voipio} 2902c05c7a73SRiku VoipioEOF 2903c05c7a73SRiku Voipioif compile_prog "" "" ; then 2904c05c7a73SRiku Voipio inotify1=yes 2905c05c7a73SRiku Voipiofi 2906c05c7a73SRiku Voipio 2907ebc996f3SRiku Voipio# check if utimensat and futimens are supported 2908ebc996f3SRiku Voipioutimens=no 2909ebc996f3SRiku Voipiocat > $TMPC << EOF 2910ebc996f3SRiku Voipio#define _ATFILE_SOURCE 2911ebc996f3SRiku Voipio#include <stddef.h> 2912ebc996f3SRiku Voipio#include <fcntl.h> 29133014ee00SPeter Maydell#include <sys/stat.h> 2914ebc996f3SRiku Voipio 2915ebc996f3SRiku Voipioint main(void) 2916ebc996f3SRiku Voipio{ 2917ebc996f3SRiku Voipio utimensat(AT_FDCWD, "foo", NULL, 0); 2918ebc996f3SRiku Voipio futimens(0, NULL); 2919ebc996f3SRiku Voipio return 0; 2920ebc996f3SRiku Voipio} 2921ebc996f3SRiku VoipioEOF 292252166aa0SJuan Quintelaif compile_prog "" "" ; then 2923ebc996f3SRiku Voipio utimens=yes 2924ebc996f3SRiku Voipiofi 2925ebc996f3SRiku Voipio 2926099d6b0fSRiku Voipio# check if pipe2 is there 2927099d6b0fSRiku Voipiopipe2=no 2928099d6b0fSRiku Voipiocat > $TMPC << EOF 2929099d6b0fSRiku Voipio#include <unistd.h> 2930099d6b0fSRiku Voipio#include <fcntl.h> 2931099d6b0fSRiku Voipio 2932099d6b0fSRiku Voipioint main(void) 2933099d6b0fSRiku Voipio{ 2934099d6b0fSRiku Voipio int pipefd[2]; 29359bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 2936099d6b0fSRiku Voipio} 2937099d6b0fSRiku VoipioEOF 293852166aa0SJuan Quintelaif compile_prog "" "" ; then 2939099d6b0fSRiku Voipio pipe2=yes 2940099d6b0fSRiku Voipiofi 2941099d6b0fSRiku Voipio 294240ff6d7eSKevin Wolf# check if accept4 is there 294340ff6d7eSKevin Wolfaccept4=no 294440ff6d7eSKevin Wolfcat > $TMPC << EOF 294540ff6d7eSKevin Wolf#include <sys/socket.h> 294640ff6d7eSKevin Wolf#include <stddef.h> 294740ff6d7eSKevin Wolf 294840ff6d7eSKevin Wolfint main(void) 294940ff6d7eSKevin Wolf{ 295040ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 295140ff6d7eSKevin Wolf return 0; 295240ff6d7eSKevin Wolf} 295340ff6d7eSKevin WolfEOF 295440ff6d7eSKevin Wolfif compile_prog "" "" ; then 295540ff6d7eSKevin Wolf accept4=yes 295640ff6d7eSKevin Wolffi 295740ff6d7eSKevin Wolf 29583ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 29593ce34dfbSvibisreenivasansplice=no 29603ce34dfbSvibisreenivasancat > $TMPC << EOF 29613ce34dfbSvibisreenivasan#include <unistd.h> 29623ce34dfbSvibisreenivasan#include <fcntl.h> 29633ce34dfbSvibisreenivasan#include <limits.h> 29643ce34dfbSvibisreenivasan 29653ce34dfbSvibisreenivasanint main(void) 29663ce34dfbSvibisreenivasan{ 296766ea0f22SStefan Weil int len, fd = 0; 29683ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 29693ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 29703ce34dfbSvibisreenivasan return 0; 29713ce34dfbSvibisreenivasan} 29723ce34dfbSvibisreenivasanEOF 297352166aa0SJuan Quintelaif compile_prog "" "" ; then 29743ce34dfbSvibisreenivasan splice=yes 29753ce34dfbSvibisreenivasanfi 29763ce34dfbSvibisreenivasan 2977dcc38d1cSMarcelo Tosatti########################################## 2978dcc38d1cSMarcelo Tosatti# signalfd probe 2979dcc38d1cSMarcelo Tosattisignalfd="no" 2980dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 2981dcc38d1cSMarcelo Tosatti#include <unistd.h> 2982dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 2983dcc38d1cSMarcelo Tosatti#include <signal.h> 2984dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 2985dcc38d1cSMarcelo TosattiEOF 2986dcc38d1cSMarcelo Tosatti 2987dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 2988dcc38d1cSMarcelo Tosatti signalfd=yes 2989dcc38d1cSMarcelo Tosattifi 2990dcc38d1cSMarcelo Tosatti 2991c2882b96SRiku Voipio# check if eventfd is supported 2992c2882b96SRiku Voipioeventfd=no 2993c2882b96SRiku Voipiocat > $TMPC << EOF 2994c2882b96SRiku Voipio#include <sys/eventfd.h> 2995c2882b96SRiku Voipio 2996c2882b96SRiku Voipioint main(void) 2997c2882b96SRiku Voipio{ 299855cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 2999c2882b96SRiku Voipio} 3000c2882b96SRiku VoipioEOF 3001c2882b96SRiku Voipioif compile_prog "" "" ; then 3002c2882b96SRiku Voipio eventfd=yes 3003c2882b96SRiku Voipiofi 3004c2882b96SRiku Voipio 3005d0927938SUlrich Hecht# check for fallocate 3006d0927938SUlrich Hechtfallocate=no 3007d0927938SUlrich Hechtcat > $TMPC << EOF 3008d0927938SUlrich Hecht#include <fcntl.h> 3009d0927938SUlrich Hecht 3010d0927938SUlrich Hechtint main(void) 3011d0927938SUlrich Hecht{ 3012d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 3013d0927938SUlrich Hecht return 0; 3014d0927938SUlrich Hecht} 3015d0927938SUlrich HechtEOF 30168fb03151SPeter Maydellif compile_prog "" "" ; then 3017d0927938SUlrich Hecht fallocate=yes 3018d0927938SUlrich Hechtfi 3019d0927938SUlrich Hecht 30203d4fa43eSKusanagi Kouichi# check for fallocate hole punching 30213d4fa43eSKusanagi Kouichifallocate_punch_hole=no 30223d4fa43eSKusanagi Kouichicat > $TMPC << EOF 30233d4fa43eSKusanagi Kouichi#include <fcntl.h> 30243d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 30253d4fa43eSKusanagi Kouichi 30263d4fa43eSKusanagi Kouichiint main(void) 30273d4fa43eSKusanagi Kouichi{ 30283d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 30293d4fa43eSKusanagi Kouichi return 0; 30303d4fa43eSKusanagi Kouichi} 30313d4fa43eSKusanagi KouichiEOF 30323d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 30333d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 30343d4fa43eSKusanagi Kouichifi 30353d4fa43eSKusanagi Kouichi 3036c727f47dSPeter Maydell# check for sync_file_range 3037c727f47dSPeter Maydellsync_file_range=no 3038c727f47dSPeter Maydellcat > $TMPC << EOF 3039c727f47dSPeter Maydell#include <fcntl.h> 3040c727f47dSPeter Maydell 3041c727f47dSPeter Maydellint main(void) 3042c727f47dSPeter Maydell{ 3043c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 3044c727f47dSPeter Maydell return 0; 3045c727f47dSPeter Maydell} 3046c727f47dSPeter MaydellEOF 30478fb03151SPeter Maydellif compile_prog "" "" ; then 3048c727f47dSPeter Maydell sync_file_range=yes 3049c727f47dSPeter Maydellfi 3050c727f47dSPeter Maydell 3051dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 3052dace20dcSPeter Maydellfiemap=no 3053dace20dcSPeter Maydellcat > $TMPC << EOF 3054dace20dcSPeter Maydell#include <sys/ioctl.h> 3055dace20dcSPeter Maydell#include <linux/fs.h> 3056dace20dcSPeter Maydell#include <linux/fiemap.h> 3057dace20dcSPeter Maydell 3058dace20dcSPeter Maydellint main(void) 3059dace20dcSPeter Maydell{ 3060dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 3061dace20dcSPeter Maydell return 0; 3062dace20dcSPeter Maydell} 3063dace20dcSPeter MaydellEOF 30648fb03151SPeter Maydellif compile_prog "" "" ; then 3065dace20dcSPeter Maydell fiemap=yes 3066dace20dcSPeter Maydellfi 3067dace20dcSPeter Maydell 3068d0927938SUlrich Hecht# check for dup3 3069d0927938SUlrich Hechtdup3=no 3070d0927938SUlrich Hechtcat > $TMPC << EOF 3071d0927938SUlrich Hecht#include <unistd.h> 3072d0927938SUlrich Hecht 3073d0927938SUlrich Hechtint main(void) 3074d0927938SUlrich Hecht{ 3075d0927938SUlrich Hecht dup3(0, 0, 0); 3076d0927938SUlrich Hecht return 0; 3077d0927938SUlrich Hecht} 3078d0927938SUlrich HechtEOF 307978f5d726SJan Kiszkaif compile_prog "" "" ; then 3080d0927938SUlrich Hecht dup3=yes 3081d0927938SUlrich Hechtfi 3082d0927938SUlrich Hecht 30834e0c6529SAlex Bligh# check for ppoll support 30844e0c6529SAlex Blighppoll=no 30854e0c6529SAlex Blighcat > $TMPC << EOF 30864e0c6529SAlex Bligh#include <poll.h> 30874e0c6529SAlex Bligh 30884e0c6529SAlex Blighint main(void) 30894e0c6529SAlex Bligh{ 30904e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 30914e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 30924e0c6529SAlex Bligh return 0; 30934e0c6529SAlex Bligh} 30944e0c6529SAlex BlighEOF 30954e0c6529SAlex Blighif compile_prog "" "" ; then 30964e0c6529SAlex Bligh ppoll=yes 30974e0c6529SAlex Blighfi 30984e0c6529SAlex Bligh 3099cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 3100cd758dd0SAlex Blighprctl_pr_set_timerslack=no 3101cd758dd0SAlex Blighcat > $TMPC << EOF 3102cd758dd0SAlex Bligh#include <sys/prctl.h> 3103cd758dd0SAlex Bligh 3104cd758dd0SAlex Blighint main(void) 3105cd758dd0SAlex Bligh{ 3106cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 3107cd758dd0SAlex Bligh return 0; 3108cd758dd0SAlex Bligh} 3109cd758dd0SAlex BlighEOF 3110cd758dd0SAlex Blighif compile_prog "" "" ; then 3111cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 3112cd758dd0SAlex Blighfi 3113cd758dd0SAlex Bligh 31143b6edd16SPeter Maydell# check for epoll support 31153b6edd16SPeter Maydellepoll=no 31163b6edd16SPeter Maydellcat > $TMPC << EOF 31173b6edd16SPeter Maydell#include <sys/epoll.h> 31183b6edd16SPeter Maydell 31193b6edd16SPeter Maydellint main(void) 31203b6edd16SPeter Maydell{ 31213b6edd16SPeter Maydell epoll_create(0); 31223b6edd16SPeter Maydell return 0; 31233b6edd16SPeter Maydell} 31243b6edd16SPeter MaydellEOF 31258fb03151SPeter Maydellif compile_prog "" "" ; then 31263b6edd16SPeter Maydell epoll=yes 31273b6edd16SPeter Maydellfi 31283b6edd16SPeter Maydell 31293b6edd16SPeter Maydell# epoll_create1 and epoll_pwait are later additions 31303b6edd16SPeter Maydell# so we must check separately for their presence 31313b6edd16SPeter Maydellepoll_create1=no 31323b6edd16SPeter Maydellcat > $TMPC << EOF 31333b6edd16SPeter Maydell#include <sys/epoll.h> 31343b6edd16SPeter Maydell 31353b6edd16SPeter Maydellint main(void) 31363b6edd16SPeter Maydell{ 313719e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 313819e83f6bSPeter Maydell * a function being called. This is necessary so that on 313919e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 314019e83f6bSPeter Maydell * the library but not declared in the header file we will 314119e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 314219e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 314319e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 314419e83f6bSPeter Maydell */ 3145c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 31463b6edd16SPeter Maydell} 31473b6edd16SPeter MaydellEOF 31488fb03151SPeter Maydellif compile_prog "" "" ; then 31493b6edd16SPeter Maydell epoll_create1=yes 31503b6edd16SPeter Maydellfi 31513b6edd16SPeter Maydell 31523b6edd16SPeter Maydellepoll_pwait=no 31533b6edd16SPeter Maydellcat > $TMPC << EOF 31543b6edd16SPeter Maydell#include <sys/epoll.h> 31553b6edd16SPeter Maydell 31563b6edd16SPeter Maydellint main(void) 31573b6edd16SPeter Maydell{ 31583b6edd16SPeter Maydell epoll_pwait(0, 0, 0, 0, 0); 31593b6edd16SPeter Maydell return 0; 31603b6edd16SPeter Maydell} 31613b6edd16SPeter MaydellEOF 31628fb03151SPeter Maydellif compile_prog "" "" ; then 31633b6edd16SPeter Maydell epoll_pwait=yes 31643b6edd16SPeter Maydellfi 31653b6edd16SPeter Maydell 3166a8fd1abaSPeter Maydell# check for sendfile support 3167a8fd1abaSPeter Maydellsendfile=no 3168a8fd1abaSPeter Maydellcat > $TMPC << EOF 3169a8fd1abaSPeter Maydell#include <sys/sendfile.h> 3170a8fd1abaSPeter Maydell 3171a8fd1abaSPeter Maydellint main(void) 3172a8fd1abaSPeter Maydell{ 3173a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 3174a8fd1abaSPeter Maydell} 3175a8fd1abaSPeter MaydellEOF 3176a8fd1abaSPeter Maydellif compile_prog "" "" ; then 3177a8fd1abaSPeter Maydell sendfile=yes 3178a8fd1abaSPeter Maydellfi 3179a8fd1abaSPeter Maydell 3180cc8ae6deSpbrook# Check if tools are available to build documentation. 3181a25dba17SJuan Quintelaif test "$docs" != "no" ; then 318201668d98SStefan Weil if has makeinfo && has pod2man; then 3183a25dba17SJuan Quintela docs=yes 318483a3ab8bSJuan Quintela else 3185a25dba17SJuan Quintela if test "$docs" = "yes" ; then 318621684af0SStewart Smith feature_not_found "docs" "Install texinfo and Perl/perl-podlators" 318783a3ab8bSJuan Quintela fi 3188a25dba17SJuan Quintela docs=no 318983a3ab8bSJuan Quintela fi 3190cc8ae6deSpbrookfi 3191cc8ae6deSpbrook 3192f514f41cSStefan Weil# Search for bswap_32 function 31936ae9a1f4SJuan Quintelabyteswap_h=no 31946ae9a1f4SJuan Quintelacat > $TMPC << EOF 31956ae9a1f4SJuan Quintela#include <byteswap.h> 31966ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 31976ae9a1f4SJuan QuintelaEOF 319852166aa0SJuan Quintelaif compile_prog "" "" ; then 31996ae9a1f4SJuan Quintela byteswap_h=yes 32006ae9a1f4SJuan Quintelafi 32016ae9a1f4SJuan Quintela 320275f13596SStefan Weil# Search for bswap32 function 32036ae9a1f4SJuan Quintelabswap_h=no 32046ae9a1f4SJuan Quintelacat > $TMPC << EOF 32056ae9a1f4SJuan Quintela#include <sys/endian.h> 32066ae9a1f4SJuan Quintela#include <sys/types.h> 32076ae9a1f4SJuan Quintela#include <machine/bswap.h> 32086ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 32096ae9a1f4SJuan QuintelaEOF 321052166aa0SJuan Quintelaif compile_prog "" "" ; then 32116ae9a1f4SJuan Quintela bswap_h=yes 32126ae9a1f4SJuan Quintelafi 32136ae9a1f4SJuan Quintela 3214da93a1fdSaliguori########################################## 3215c589b249SRonnie Sahlberg# Do we have libiscsi 3216063c3378SPeter Lieven# We check for iscsi_write16_sync() to make sure we have a 3217063c3378SPeter Lieven# at least version 1.4.0 of libiscsi. 3218c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 3219c589b249SRonnie Sahlberg cat > $TMPC << EOF 3220fa6acb0cSRonnie Sahlberg#include <stdio.h> 3221c589b249SRonnie Sahlberg#include <iscsi/iscsi.h> 3222063c3378SPeter Lievenint main(void) { iscsi_write16_sync(NULL,0,0,NULL,0,0,0,0,0,0,0); return 0; } 3223c589b249SRonnie SahlbergEOF 322465d5d3f9SStefan Weil if $pkg_config --atleast-version=1.7.0 libiscsi; then 32253c33ea96SPaolo Bonzini libiscsi="yes" 3226ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 3227ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 32283c33ea96SPaolo Bonzini elif compile_prog "" "-liscsi" ; then 3229c589b249SRonnie Sahlberg libiscsi="yes" 32306ebc91e5SFam Zheng libiscsi_libs="-liscsi" 3231c589b249SRonnie Sahlberg else 3232c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 323321684af0SStewart Smith feature_not_found "libiscsi" "Install libiscsi devel" 3234c589b249SRonnie Sahlberg fi 3235c589b249SRonnie Sahlberg libiscsi="no" 3236c589b249SRonnie Sahlberg fi 3237c589b249SRonnie Sahlbergfi 3238c589b249SRonnie Sahlberg 3239219c2521SStefan Weil# We also need to know the API version because there was an 3240219c2521SStefan Weil# API change from 1.4.0 to 1.5.0. 3241219c2521SStefan Weilif test "$libiscsi" = "yes"; then 3242219c2521SStefan Weil cat >$TMPC <<EOF 3243219c2521SStefan Weil#include <iscsi/iscsi.h> 3244219c2521SStefan Weilint main(void) 3245219c2521SStefan Weil{ 3246219c2521SStefan Weil iscsi_read10_task(0, 0, 0, 0, 0, 0, 0); 3247219c2521SStefan Weil return 0; 3248219c2521SStefan Weil} 3249219c2521SStefan WeilEOF 3250219c2521SStefan Weil if compile_prog "" "-liscsi"; then 3251219c2521SStefan Weil libiscsi_version="1.4.0" 3252219c2521SStefan Weil fi 3253219c2521SStefan Weilfi 3254c589b249SRonnie Sahlberg 3255c589b249SRonnie Sahlberg########################################## 32568bacde8dSNatanael Copa# Do we need libm 32578bacde8dSNatanael Copacat > $TMPC << EOF 32588bacde8dSNatanael Copa#include <math.h> 32598bacde8dSNatanael Copaint main(void) { return isnan(sin(0.0)); } 32608bacde8dSNatanael CopaEOF 32618bacde8dSNatanael Copaif compile_prog "" "" ; then 32628bacde8dSNatanael Copa : 32638bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 32648bacde8dSNatanael Copa LIBS="-lm $LIBS" 32658bacde8dSNatanael Copa libs_qga="-lm $libs_qga" 32668bacde8dSNatanael Copaelse 326776ad07a4SPeter Maydell error_exit "libm check failed" 32688bacde8dSNatanael Copafi 32698bacde8dSNatanael Copa 32708bacde8dSNatanael Copa########################################## 3271da93a1fdSaliguori# Do we need librt 32728bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 32738bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 32748bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 32758bacde8dSNatanael Copa# function in addition. 3276da93a1fdSaliguoricat > $TMPC <<EOF 3277da93a1fdSaliguori#include <signal.h> 3278da93a1fdSaliguori#include <time.h> 32798bacde8dSNatanael Copaint main(void) { 32808bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 32818bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 32828bacde8dSNatanael Copa} 3283da93a1fdSaliguoriEOF 3284da93a1fdSaliguori 328552166aa0SJuan Quintelaif compile_prog "" "" ; then 328607ffa4bdSJuan Quintela : 32878bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 32888bacde8dSNatanael Copaelif compile_prog "" "-lrt $pthread_lib" ; then 328907ffa4bdSJuan Quintela LIBS="-lrt $LIBS" 32908bacde8dSNatanael Copa libs_qga="-lrt $libs_qga" 3291da93a1fdSaliguorifi 3292da93a1fdSaliguori 329331ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ 3294179cf400SAndreas Färber "$aix" != "yes" -a "$haiku" != "yes" ; then 32956362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 32966362a53fSJuan Quintelafi 32976362a53fSJuan Quintela 3298de5071c5SBlue Swirl########################################## 3299cd4ec0b4SGerd Hoffmann# spice probe 3300cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 3301cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 3302cd4ec0b4SGerd Hoffmann#include <spice.h> 3303cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 3304cd4ec0b4SGerd HoffmannEOF 3305710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 3306710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 330765d5d3f9SStefan Weil if $pkg_config --atleast-version=0.12.0 spice-server && \ 330865d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 3309cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 3310cd4ec0b4SGerd Hoffmann spice="yes" 3311cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 3312cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 33132e0e3c39SAlon Levy spice_protocol_version=$($pkg_config --modversion spice-protocol) 33142e0e3c39SAlon Levy spice_server_version=$($pkg_config --modversion spice-server) 3315cd4ec0b4SGerd Hoffmann else 3316cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 331721684af0SStewart Smith feature_not_found "spice" "Install spice-server and spice-protocol devel" 3318cd4ec0b4SGerd Hoffmann fi 3319cd4ec0b4SGerd Hoffmann spice="no" 3320cd4ec0b4SGerd Hoffmann fi 3321cd4ec0b4SGerd Hoffmannfi 3322cd4ec0b4SGerd Hoffmann 3323111a38b0SRobert Relyea# check for libcacard for smartcard support 3324111a38b0SRobert Relyeasmartcard_cflags="" 3325111a38b0SRobert Relyea# TODO - what's the minimal nss version we support? 3326111a38b0SRobert Relyeaif test "$smartcard_nss" != "no"; then 33275f01e06fSSergei Trofimovich cat > $TMPC << EOF 33285f01e06fSSergei Trofimovich#include <pk11pub.h> 33295f01e06fSSergei Trofimovichint main(void) { PK11_FreeSlot(0); return 0; } 33305f01e06fSSergei TrofimovichEOF 33310b22ef0fSPeter Maydell smartcard_includes="-I\$(SRC_PATH)/libcacard" 33328c741c22SAlon Levy libcacard_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs" 33338c741c22SAlon Levy libcacard_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags" 33346ca026cbSPeter Maydell test_cflags="$libcacard_cflags" 33356ca026cbSPeter Maydell # The header files in nss < 3.13.3 have a bug which causes them to 33366ca026cbSPeter Maydell # emit a warning. If we're going to compile QEMU with -Werror, then 33376ca026cbSPeter Maydell # test that the headers don't have this bug. Otherwise we would pass 33386ca026cbSPeter Maydell # the configure test but fail to compile QEMU later. 33396ca026cbSPeter Maydell if test "$werror" = "yes"; then 33406ca026cbSPeter Maydell test_cflags="-Werror $test_cflags" 33416ca026cbSPeter Maydell fi 3342b6fc675bSPaolo Bonzini if test -n "$libtool" && 334365d5d3f9SStefan Weil $pkg_config --atleast-version=3.12.8 nss && \ 33446ca026cbSPeter Maydell compile_prog "$test_cflags" "$libcacard_libs"; then 33455f01e06fSSergei Trofimovich smartcard_nss="yes" 33460b22ef0fSPeter Maydell QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags" 33470b22ef0fSPeter Maydell QEMU_INCLUDES="$QEMU_INCLUDES $smartcard_includes" 3348ad4cf3f6SPaul Brook libs_softmmu="$libcacard_libs $libs_softmmu" 3349111a38b0SRobert Relyea else 3350111a38b0SRobert Relyea if test "$smartcard_nss" = "yes"; then 3351111a38b0SRobert Relyea feature_not_found "nss" 3352111a38b0SRobert Relyea fi 3353111a38b0SRobert Relyea smartcard_nss="no" 3354111a38b0SRobert Relyea fi 3355111a38b0SRobert Relyeafi 3356111a38b0SRobert Relyea 33572b2325ffSGerd Hoffmann# check for libusb 33582b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 335965d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 33602b2325ffSGerd Hoffmann libusb="yes" 3361ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 3362ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 33632b2325ffSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags" 33642b2325ffSGerd Hoffmann libs_softmmu="$libs_softmmu $libusb_libs" 33652b2325ffSGerd Hoffmann else 33662b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 336721684af0SStewart Smith feature_not_found "libusb" "Install libusb devel" 33682b2325ffSGerd Hoffmann fi 33692b2325ffSGerd Hoffmann libusb="no" 33702b2325ffSGerd Hoffmann fi 33712b2325ffSGerd Hoffmannfi 33722b2325ffSGerd Hoffmann 337369354a83SHans de Goede# check for usbredirparser for usb network redirection support 337469354a83SHans de Goedeif test "$usb_redir" != "no" ; then 337565d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 337669354a83SHans de Goede usb_redir="yes" 3377ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 3378ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 337969354a83SHans de Goede QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags" 338056ab2ad1SAurelien Jarno libs_softmmu="$libs_softmmu $usb_redir_libs" 338169354a83SHans de Goede else 338269354a83SHans de Goede if test "$usb_redir" = "yes"; then 338321684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 338469354a83SHans de Goede fi 338569354a83SHans de Goede usb_redir="no" 338669354a83SHans de Goede fi 338769354a83SHans de Goedefi 338869354a83SHans de Goede 3389cd4ec0b4SGerd Hoffmann########################################## 3390d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 3391d9840e25STomoki Sekiyama 3392d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then 3393d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 3394d9840e25STomoki Sekiyama "") vss_win32_include="-I$source_path" ;; 3395d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 3396d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 3397d9840e25STomoki Sekiyama vss_win32_include="-I$source_path/.sdk/vss" 3398d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 3399d9840e25STomoki Sekiyama ;; 3400d9840e25STomoki Sekiyama *) vss_win32_include="-I$vss_win32_sdk" 3401d9840e25STomoki Sekiyama esac 3402d9840e25STomoki Sekiyama cat > $TMPC << EOF 3403d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 3404d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 3405d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 3406d9840e25STomoki SekiyamaEOF 3407d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 3408d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 3409d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 3410d9840e25STomoki Sekiyama libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 3411d9840e25STomoki Sekiyama else 3412d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 3413d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 3414d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 3415d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 3416d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 3417d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 3418d9840e25STomoki Sekiyama feature_not_found "VSS support" 3419d9840e25STomoki Sekiyama fi 3420d9840e25STomoki Sekiyama guest_agent_with_vss="no" 3421d9840e25STomoki Sekiyama fi 3422d9840e25STomoki Sekiyamafi 3423d9840e25STomoki Sekiyama 3424d9840e25STomoki Sekiyama########################################## 3425d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 3426d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 3427d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 3428d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 3429d9840e25STomoki Sekiyama 3430d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then 3431d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 3432d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 3433d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 3434d9840e25STomoki Sekiyama if test -n "$programfiles"; then 3435d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 3436d9840e25STomoki Sekiyama else 3437d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 3438d9840e25STomoki Sekiyama fi 3439d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 3440d9840e25STomoki Sekiyama win_sdk="" 3441d9840e25STomoki Sekiyama fi 3442d9840e25STomoki Sekiyamafi 3443d9840e25STomoki Sekiyama 3444d9840e25STomoki Sekiyama########################################## 3445cd4ec0b4SGerd Hoffmann 3446747bbdf7SBlue Swirl########################################## 34475f6b9e8fSBlue Swirl# check if we have fdatasync 34485f6b9e8fSBlue Swirl 34495f6b9e8fSBlue Swirlfdatasync=no 34505f6b9e8fSBlue Swirlcat > $TMPC << EOF 34515f6b9e8fSBlue Swirl#include <unistd.h> 3452d1722a27SAlexandre Raymondint main(void) { 3453d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 3454d1722a27SAlexandre Raymondreturn fdatasync(0); 3455d1722a27SAlexandre Raymond#else 3456e172fe11SStefan Weil#error Not supported 3457d1722a27SAlexandre Raymond#endif 3458d1722a27SAlexandre Raymond} 34595f6b9e8fSBlue SwirlEOF 34605f6b9e8fSBlue Swirlif compile_prog "" "" ; then 34615f6b9e8fSBlue Swirl fdatasync=yes 34625f6b9e8fSBlue Swirlfi 34635f6b9e8fSBlue Swirl 346494a420b1SStefan Hajnoczi########################################## 3465e78815a5SAndreas Färber# check if we have madvise 3466e78815a5SAndreas Färber 3467e78815a5SAndreas Färbermadvise=no 3468e78815a5SAndreas Färbercat > $TMPC << EOF 3469e78815a5SAndreas Färber#include <sys/types.h> 3470e78815a5SAndreas Färber#include <sys/mman.h> 3471832ce9c2SScott Wood#include <stddef.h> 3472e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 3473e78815a5SAndreas FärberEOF 3474e78815a5SAndreas Färberif compile_prog "" "" ; then 3475e78815a5SAndreas Färber madvise=yes 3476e78815a5SAndreas Färberfi 3477e78815a5SAndreas Färber 3478e78815a5SAndreas Färber########################################## 3479e78815a5SAndreas Färber# check if we have posix_madvise 3480e78815a5SAndreas Färber 3481e78815a5SAndreas Färberposix_madvise=no 3482e78815a5SAndreas Färbercat > $TMPC << EOF 3483e78815a5SAndreas Färber#include <sys/mman.h> 3484832ce9c2SScott Wood#include <stddef.h> 3485e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 3486e78815a5SAndreas FärberEOF 3487e78815a5SAndreas Färberif compile_prog "" "" ; then 3488e78815a5SAndreas Färber posix_madvise=yes 3489e78815a5SAndreas Färberfi 3490e78815a5SAndreas Färber 3491e78815a5SAndreas Färber########################################## 34921e9737daSRichard Henderson# check if we have usable SIGEV_THREAD_ID 34931e9737daSRichard Henderson 34941e9737daSRichard Hendersonsigev_thread_id=no 34951e9737daSRichard Hendersoncat > $TMPC << EOF 34961e9737daSRichard Henderson#include <signal.h> 34971e9737daSRichard Hendersonint main(void) { 34981e9737daSRichard Henderson struct sigevent ev; 34991e9737daSRichard Henderson ev.sigev_notify = SIGEV_THREAD_ID; 35001e9737daSRichard Henderson ev._sigev_un._tid = 0; 35011e9737daSRichard Henderson asm volatile("" : : "g"(&ev)); 35021e9737daSRichard Henderson return 0; 35031e9737daSRichard Henderson} 35041e9737daSRichard HendersonEOF 35051e9737daSRichard Hendersonif compile_prog "" "" ; then 35061e9737daSRichard Henderson sigev_thread_id=yes 35071e9737daSRichard Hendersonfi 35081e9737daSRichard Henderson 35091e9737daSRichard Henderson########################################## 351094a420b1SStefan Hajnoczi# check if trace backend exists 351194a420b1SStefan Hajnoczi 3512650ab98dSLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend > /dev/null 2> /dev/null 351394a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 351476ad07a4SPeter Maydell error_exit "invalid trace backend" \ 351576ad07a4SPeter Maydell "Please choose a supported trace backend." 351694a420b1SStefan Hajnoczifi 351794a420b1SStefan Hajnoczi 35187e24e92aSStefan Hajnoczi########################################## 35197e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 35207e24e92aSStefan Hajnocziif test "$trace_backend" = "ust"; then 35217e24e92aSStefan Hajnoczi cat > $TMPC << EOF 3522bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 35237e24e92aSStefan Hajnocziint main(void) { return 0; } 35247e24e92aSStefan HajnocziEOF 35257e24e92aSStefan Hajnoczi if compile_prog "" "" ; then 3526bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 3527bf15f63cSMohamad Gebai lttng_ust_libs=`$pkg_config --libs lttng-ust` 35287e24e92aSStefan Hajnoczi else 3529bf15f63cSMohamad Gebai lttng_ust_libs="-llttng-ust" 3530bf15f63cSMohamad Gebai fi 3531bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 3532bf15f63cSMohamad Gebai urcu_bp_libs=`$pkg_config --libs liburcu-bp` 3533bf15f63cSMohamad Gebai else 3534bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 3535bf15f63cSMohamad Gebai fi 3536bf15f63cSMohamad Gebai 3537bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 3538bf15f63cSMohamad Gebai libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga" 3539bf15f63cSMohamad Gebai else 3540bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 35417e24e92aSStefan Hajnoczi fi 35427e24e92aSStefan Hajnoczifi 3543b3d08c02SDaniel P. Berrange 3544b3d08c02SDaniel P. Berrange########################################## 3545b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 3546b3d08c02SDaniel P. Berrangeif test "$trace_backend" = "dtrace"; then 3547b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 354876ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 3549b3d08c02SDaniel P. Berrange fi 3550c276b17dSDaniel P. Berrange trace_backend_stap="no" 3551c276b17dSDaniel P. Berrange if has 'stap' ; then 3552c276b17dSDaniel P. Berrange trace_backend_stap="yes" 3553c276b17dSDaniel P. Berrange fi 3554b3d08c02SDaniel P. Berrangefi 3555b3d08c02SDaniel P. Berrange 35567e24e92aSStefan Hajnoczi########################################## 3557519175a2SAlex Barcelo# check and set a backend for coroutine 3558d0e2fce5SAneesh Kumar K.V 35597c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 35607c2acc70SPeter Maydell# is sigcontext. gthread is not selectable except explicitly, because 35617c2acc70SPeter Maydell# it is not functional enough to run QEMU proper. (It is occasionally 35627c2acc70SPeter Maydell# useful for debugging purposes.) On Windows the only valid backend 35637c2acc70SPeter Maydell# is the Windows-specific one. 35647c2acc70SPeter Maydell 35657c2acc70SPeter Maydellucontext_works=no 3566d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 3567d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 3568d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 3569cdf84806SPeter Maydell#ifdef __stub_makecontext 3570cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 3571cdf84806SPeter Maydell#endif 357275cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 3573d0e2fce5SAneesh Kumar K.VEOF 3574d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 35757c2acc70SPeter Maydell ucontext_works=yes 3576d0e2fce5SAneesh Kumar K.V fi 3577519175a2SAlex Barcelofi 35787c2acc70SPeter Maydell 35797c2acc70SPeter Maydellif test "$coroutine" = ""; then 35807c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 35817c2acc70SPeter Maydell coroutine=win32 35827c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 35837c2acc70SPeter Maydell coroutine=ucontext 3584519175a2SAlex Barcelo else 35857c2acc70SPeter Maydell coroutine=sigaltstack 35867c2acc70SPeter Maydell fi 35877c2acc70SPeter Maydellelse 35887c2acc70SPeter Maydell case $coroutine in 35897c2acc70SPeter Maydell windows) 35907c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 35917c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 35927c2acc70SPeter Maydell fi 35937c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 35947c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 35957c2acc70SPeter Maydell coroutine=win32 35967c2acc70SPeter Maydell ;; 35977c2acc70SPeter Maydell ucontext) 35987c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 35997c2acc70SPeter Maydell feature_not_found "ucontext" 36007c2acc70SPeter Maydell fi 36017c2acc70SPeter Maydell ;; 36027c2acc70SPeter Maydell gthread|sigaltstack) 36037c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 36047c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 36057c2acc70SPeter Maydell fi 36067c2acc70SPeter Maydell ;; 36077c2acc70SPeter Maydell *) 360876ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 36097c2acc70SPeter Maydell ;; 36107c2acc70SPeter Maydell esac 3611d0e2fce5SAneesh Kumar K.Vfi 3612d0e2fce5SAneesh Kumar K.V 361370c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 361470c60c08SStefan Hajnoczi if test "$coroutine" = "gthread"; then 361570c60c08SStefan Hajnoczi coroutine_pool=no 361670c60c08SStefan Hajnoczi else 361770c60c08SStefan Hajnoczi coroutine_pool=yes 361870c60c08SStefan Hajnoczi fi 361970c60c08SStefan Hajnoczifi 362070c60c08SStefan Hajnocziif test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then 362170c60c08SStefan Hajnoczi error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)" 362270c60c08SStefan Hajnoczifi 362370c60c08SStefan Hajnoczi 3624d0e2fce5SAneesh Kumar K.V########################################## 3625d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 3626d2042378SAneesh Kumar K.V 36274e1797f9SStefan Weilopen_by_handle_at=no 3628d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 3629d2042378SAneesh Kumar K.V#include <fcntl.h> 3630acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 3631acc55ba8SStefan Weil# error missing definition 3632acc55ba8SStefan Weil#else 363375cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 3634acc55ba8SStefan Weil#endif 3635d2042378SAneesh Kumar K.VEOF 3636d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 3637d2042378SAneesh Kumar K.V open_by_handle_at=yes 3638d2042378SAneesh Kumar K.Vfi 3639d2042378SAneesh Kumar K.V 3640e06a765eSHarsh Prateek Bora######################################## 3641e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 3642e06a765eSHarsh Prateek Bora 3643e06a765eSHarsh Prateek Boralinux_magic_h=no 3644e06a765eSHarsh Prateek Boracat > $TMPC << EOF 3645e06a765eSHarsh Prateek Bora#include <linux/magic.h> 3646e06a765eSHarsh Prateek Boraint main(void) { 364775cafad7SStefan Weil return 0; 3648e06a765eSHarsh Prateek Bora} 3649e06a765eSHarsh Prateek BoraEOF 3650e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 3651e06a765eSHarsh Prateek Bora linux_magic_h=yes 3652e06a765eSHarsh Prateek Borafi 3653e06a765eSHarsh Prateek Bora 36548ab1bf12SLuiz Capitulino######################################## 3655c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed 3656c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries). 3657c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is 3658c95e3080SKevin Wolf# only a warning. 3659c95e3080SKevin Wolf# 3660c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that 3661c95e3080SKevin Wolf# the build doesn't fail anyway. 3662c95e3080SKevin Wolf 366306d71fa1SPeter Maydellpragma_disable_unused_but_set=no 366406d71fa1SPeter Maydellcat > $TMPC << EOF 3665e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push 366606d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable" 3667c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes" 3668e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop 3669c95e3080SKevin Wolf 367006d71fa1SPeter Maydellint main(void) { 367106d71fa1SPeter Maydell return 0; 367206d71fa1SPeter Maydell} 367306d71fa1SPeter MaydellEOF 367406d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then 3675cc6e3ca9SGerd Hoffmann pragma_diagnostic_available=yes 3676c95e3080SKevin Wolfelse 3677c95e3080SKevin Wolf werror=no 367806d71fa1SPeter Maydellfi 367906d71fa1SPeter Maydell 368006d71fa1SPeter Maydell######################################## 368162fe8331SChristian Borntraeger# check if we have valgrind/valgrind.h and valgrind/memcheck.h 36823f4349dcSKevin Wolf 36833f4349dcSKevin Wolfvalgrind_h=no 36843f4349dcSKevin Wolfcat > $TMPC << EOF 36853f4349dcSKevin Wolf#include <valgrind/valgrind.h> 368662fe8331SChristian Borntraeger#include <valgrind/memcheck.h> 36873f4349dcSKevin Wolfint main(void) { 36883f4349dcSKevin Wolf return 0; 36893f4349dcSKevin Wolf} 36903f4349dcSKevin WolfEOF 36913f4349dcSKevin Wolfif compile_prog "" "" ; then 36923f4349dcSKevin Wolf valgrind_h=yes 36933f4349dcSKevin Wolffi 36943f4349dcSKevin Wolf 36953f4349dcSKevin Wolf######################################## 36968ab1bf12SLuiz Capitulino# check if environ is declared 36978ab1bf12SLuiz Capitulino 36988ab1bf12SLuiz Capitulinohas_environ=no 36998ab1bf12SLuiz Capitulinocat > $TMPC << EOF 37008ab1bf12SLuiz Capitulino#include <unistd.h> 37018ab1bf12SLuiz Capitulinoint main(void) { 3702c075a723SBlue Swirl environ = 0; 37038ab1bf12SLuiz Capitulino return 0; 37048ab1bf12SLuiz Capitulino} 37058ab1bf12SLuiz CapitulinoEOF 37068ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 37078ab1bf12SLuiz Capitulino has_environ=yes 37088ab1bf12SLuiz Capitulinofi 37098ab1bf12SLuiz Capitulino 371076a347e1SRichard Henderson######################################## 371176a347e1SRichard Henderson# check if cpuid.h is usable. 371276a347e1SRichard Henderson 371376a347e1SRichard Hendersoncpuid_h=no 371476a347e1SRichard Hendersoncat > $TMPC << EOF 371576a347e1SRichard Henderson#include <cpuid.h> 371676a347e1SRichard Hendersonint main(void) { 3717774d566cSPeter Maydell unsigned a, b, c, d; 3718774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 3719774d566cSPeter Maydell 3720774d566cSPeter Maydell if (max >= 1) { 3721774d566cSPeter Maydell __cpuid(1, a, b, c, d); 3722774d566cSPeter Maydell } 3723774d566cSPeter Maydell 3724774d566cSPeter Maydell if (max >= 7) { 3725774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 3726774d566cSPeter Maydell } 3727774d566cSPeter Maydell 372876a347e1SRichard Henderson return 0; 372976a347e1SRichard Henderson} 373076a347e1SRichard HendersonEOF 373176a347e1SRichard Hendersonif compile_prog "" "" ; then 373276a347e1SRichard Henderson cpuid_h=yes 373376a347e1SRichard Hendersonfi 373476a347e1SRichard Henderson 3735f540166bSRichard Henderson######################################## 3736f540166bSRichard Henderson# check if __[u]int128_t is usable. 3737f540166bSRichard Henderson 3738f540166bSRichard Hendersonint128=no 3739f540166bSRichard Hendersoncat > $TMPC << EOF 3740f540166bSRichard Henderson__int128_t a; 3741f540166bSRichard Henderson__uint128_t b; 3742f540166bSRichard Hendersonint main (void) { 3743f540166bSRichard Henderson a = a + b; 3744f540166bSRichard Henderson b = a * b; 3745464e3671SPeter Maydell a = a * a; 3746f540166bSRichard Henderson return 0; 3747f540166bSRichard Henderson} 3748f540166bSRichard HendersonEOF 3749f540166bSRichard Hendersonif compile_prog "" "" ; then 3750f540166bSRichard Henderson int128=yes 3751f540166bSRichard Hendersonfi 375276a347e1SRichard Henderson 37531e6e9acaSRichard Henderson######################################## 37541e6e9acaSRichard Henderson# check if getauxval is available. 37551e6e9acaSRichard Henderson 37561e6e9acaSRichard Hendersongetauxval=no 37571e6e9acaSRichard Hendersoncat > $TMPC << EOF 37581e6e9acaSRichard Henderson#include <sys/auxv.h> 37591e6e9acaSRichard Hendersonint main(void) { 37601e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 37611e6e9acaSRichard Henderson} 37621e6e9acaSRichard HendersonEOF 37631e6e9acaSRichard Hendersonif compile_prog "" "" ; then 37641e6e9acaSRichard Henderson getauxval=yes 37651e6e9acaSRichard Hendersonfi 37661e6e9acaSRichard Henderson 3767d2042378SAneesh Kumar K.V########################################## 3768e86ecd4bSJuan Quintela# End of CC checks 3769e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 3770e86ecd4bSJuan Quintela 37711d728c39SBlue Swirlif test "$gcov" = "yes" ; then 37721d728c39SBlue Swirl CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS" 37731d728c39SBlue Swirl LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS" 37741d728c39SBlue Swirlelif test "$debug" = "no" ; then 3775e600cdf3SMichal Privoznik CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS" 3776e86ecd4bSJuan Quintelafi 3777a316e378SJuan Quintela 37786542aa9cSPeter Lieven########################################## 37796542aa9cSPeter Lieven# Do we have libnfs 37806542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 37816542aa9cSPeter Lieven if $pkg_config --atleast-version=1.9.2 libnfs; then 37826542aa9cSPeter Lieven libnfs="yes" 37836542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 37846542aa9cSPeter Lieven LIBS="$LIBS $libnfs_libs" 37856542aa9cSPeter Lieven else 37866542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 37876542aa9cSPeter Lieven feature_not_found "libnfs" 37886542aa9cSPeter Lieven fi 37896542aa9cSPeter Lieven libnfs="no" 37906542aa9cSPeter Lieven fi 37916542aa9cSPeter Lievenfi 37921d728c39SBlue Swirl 379320ff6c80SAnthony Liguori# Disable zero malloc errors for official releases unless explicitly told to 379420ff6c80SAnthony Liguori# enable/disable 379520ff6c80SAnthony Liguoriif test -z "$zero_malloc" ; then 379620ff6c80SAnthony Liguori if test "$z_version" = "50" ; then 379720ff6c80SAnthony Liguori zero_malloc="no" 379820ff6c80SAnthony Liguori else 379920ff6c80SAnthony Liguori zero_malloc="yes" 380020ff6c80SAnthony Liguori fi 380120ff6c80SAnthony Liguorifi 380220ff6c80SAnthony Liguori 38036ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 38046ca026cbSPeter Maydellif test "$werror" = "yes"; then 38056ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 38066ca026cbSPeter Maydellfi 38076ca026cbSPeter Maydell 3808e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then 3809e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 38101156c669SJuan Quintela LDFLAGS="-Wl,--warn-common $LDFLAGS" 3811e86ecd4bSJuan Quintela fi 3812e86ecd4bSJuan Quintelafi 3813e86ecd4bSJuan Quintela 381494dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 381594dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 381694dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 381794dd53c5SGerd Hoffmannelse 381894dd53c5SGerd Hoffmann POD2MAN="pod2man" 381994dd53c5SGerd Hoffmannfi 382094dd53c5SGerd Hoffmann 3821952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 3822952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 3823952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 3824952afb71SBlue Swirl if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then 3825952afb71SBlue Swirl LDFLAGS="-Wl,$flag $LDFLAGS" 3826952afb71SBlue Swirl fi 3827952afb71SBlue Swirl done 3828952afb71SBlue Swirlfi 3829952afb71SBlue Swirl 383010ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 3831e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 3832528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 3833834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 38345a67135aSbellard 38354b1c11fdSDaniel P. Berrangetools="" 38364b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then 3837ca35f780SPaolo Bonzini tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools" 38384b1c11fdSDaniel P. Berrange if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then 38394b1c11fdSDaniel P. Berrange tools="qemu-nbd\$(EXESUF) $tools" 38404b1c11fdSDaniel P. Berrange fi 38414b1c11fdSDaniel P. Berrangefi 38424b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 3843983eef5aSMeador Inge if test "$virtfs" != no ; then 3844be5ea8edSAnthony Liguori if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then 3845983eef5aSMeador Inge virtfs=yes 384617bff52bSM. Mohan Kumar tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)" 3847983eef5aSMeador Inge else 3848983eef5aSMeador Inge if test "$virtfs" = yes; then 384976ad07a4SPeter Maydell error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel" 3850983eef5aSMeador Inge fi 385117500370SAndreas Färber virtfs=no 3852983eef5aSMeador Inge fi 385317bff52bSM. Mohan Kumar fi 3854d138cee9SMichael Rothfi 3855e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 3856b39297aeSTomoki Sekiyama if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 3857e8ef31a3SMichael Tokarev tools="qemu-ga\$(EXESUF) $tools" 3858b39297aeSTomoki Sekiyama if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then 3859b39297aeSTomoki Sekiyama tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools" 3860b39297aeSTomoki Sekiyama fi 3861e8ef31a3SMichael Tokarev guest_agent=yes 3862e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 3863e8ef31a3SMichael Tokarev guest_agent=no 3864e8ef31a3SMichael Tokarev else 3865e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 3866ca35f780SPaolo Bonzini fi 38674b1c11fdSDaniel P. Berrangefi 3868ca35f780SPaolo Bonzini 3869ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 3870ca35f780SPaolo Bonziniroms= 3871ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \ 3872ca35f780SPaolo Bonzini "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \ 3873ca35f780SPaolo Bonzini "$softmmu" = yes ; then 3874ca35f780SPaolo Bonzini roms="optionrom" 3875ca35f780SPaolo Bonzinifi 3876d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then 387739ac8455SDavid Gibson roms="$roms spapr-rtas" 387839ac8455SDavid Gibsonfi 3879ca35f780SPaolo Bonzini 38809933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 38819933c305SChristian Borntraeger roms="$roms s390-ccw" 38829933c305SChristian Borntraegerfi 38839933c305SChristian Borntraeger 3884964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary. 3885964c6fa1SRichard Hendersonif test "$pie" = "no" ; then 3886964c6fa1SRichard Henderson textseg_addr= 3887964c6fa1SRichard Henderson case "$cpu" in 3888c72b26ecSRichard Henderson arm | hppa | i386 | m68k | ppc | ppc64 | s390* | sparc | sparc64 | x86_64 | x32) 3889964c6fa1SRichard Henderson textseg_addr=0x60000000 3890964c6fa1SRichard Henderson ;; 3891964c6fa1SRichard Henderson mips) 3892964c6fa1SRichard Henderson textseg_addr=0x400000 3893964c6fa1SRichard Henderson ;; 3894964c6fa1SRichard Henderson esac 3895964c6fa1SRichard Henderson if [ -n "$textseg_addr" ]; then 3896964c6fa1SRichard Henderson cat > $TMPC <<EOF 3897964c6fa1SRichard Henderson int main(void) { return 0; } 3898964c6fa1SRichard HendersonEOF 3899964c6fa1SRichard Henderson textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" 3900964c6fa1SRichard Henderson if ! compile_prog "" "$textseg_ldflags"; then 3901964c6fa1SRichard Henderson # In case ld does not support -Ttext-segment, edit the default linker 3902964c6fa1SRichard Henderson # script via sed to set the .text start addr. This is needed on FreeBSD 3903964c6fa1SRichard Henderson # at least. 3904964c6fa1SRichard Henderson $ld --verbose | sed \ 3905964c6fa1SRichard Henderson -e '1,/==================================================/d' \ 3906964c6fa1SRichard Henderson -e '/==================================================/,$d' \ 3907964c6fa1SRichard Henderson -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ 3908964c6fa1SRichard Henderson -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld 3909964c6fa1SRichard Henderson textseg_ldflags="-Wl,-T../config-host.ld" 3910964c6fa1SRichard Henderson fi 3911964c6fa1SRichard Henderson fi 3912964c6fa1SRichard Hendersonfi 3913964c6fa1SRichard Henderson 39145ca9388aSGerd Hoffmann# add pixman flags after all config tests are done 3915a540f158SPeter CrosthwaiteQEMU_CFLAGS="$QEMU_CFLAGS $pixman_cflags $fdt_cflags" 39165ca9388aSGerd Hoffmannlibs_softmmu="$libs_softmmu $pixman_libs" 39175ca9388aSGerd Hoffmann 39187d13299dSbellardecho "Install prefix $prefix" 3919c00b2808SEduardo Habkostecho "BIOS directory `eval echo $qemu_datadir`" 3920f2b9e1e3SPaolo Bonziniecho "binary directory `eval echo $bindir`" 39213aa5d2beSAlon Levyecho "library directory `eval echo $libdir`" 3922e26110cfSFam Zhengecho "module directory `eval echo $qemu_moddir`" 39238bf188aaSMichael Tokarevecho "libexec directory `eval echo $libexecdir`" 39240f94d6daSAlon Levyecho "include directory `eval echo $includedir`" 39251c0fd160SAurelien Jarnoecho "config directory `eval echo $sysconfdir`" 392611d9f695Sbellardif test "$mingw32" = "no" ; then 39275a699bbbSLaszlo Ersekecho "local state directory `eval echo $local_statedir`" 3928f2b9e1e3SPaolo Bonziniecho "Manual directory `eval echo $mandir`" 392943ce4dfeSbellardecho "ELF interp prefix $interp_prefix" 39305a699bbbSLaszlo Ersekelse 39315a699bbbSLaszlo Ersekecho "local state directory queried at runtime" 3932d9840e25STomoki Sekiyamaecho "Windows SDK $win_sdk" 393311d9f695Sbellardfi 39345a67135aSbellardecho "Source path $source_path" 39357d13299dSbellardecho "C compiler $cc" 393683469015Sbellardecho "Host C compiler $host_cc" 393783f73fceSTomoki Sekiyamaecho "C++ compiler $cxx" 39383c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc" 393945d285abSPeter Maydellecho "ARFLAGS $ARFLAGS" 39400c439cbfSJuan Quintelaecho "CFLAGS $CFLAGS" 3941a558ee17SJuan Quintelaecho "QEMU_CFLAGS $QEMU_CFLAGS" 39420c439cbfSJuan Quintelaecho "LDFLAGS $LDFLAGS" 39437d13299dSbellardecho "make $make" 39446a882643Spbrookecho "install $install" 3945c886edfbSBlue Swirlecho "python $python" 3946e2d8830eSBradif test "$slirp" = "yes" ; then 3947e2d8830eSBrad echo "smbd $smbd" 3948e2d8830eSBradfi 394917969268SFam Zhengecho "module support $modules" 3950a98fd896Sbellardecho "host CPU $cpu" 3951de83cd02Sbellardecho "host big endian $bigendian" 395297a847bcSbellardecho "target list $target_list" 3953ade25b0dSaurel32echo "tcg debug enabled $debug_tcg" 39547d13299dSbellardecho "gprof enabled $gprof" 395503b4fe7dSaliguoriecho "sparse enabled $sparse" 39561625af87Saliguoriecho "strip binaries $strip_opt" 395705c2a3e7Sbellardecho "profiler $profiler" 395843ce4dfeSbellardecho "static build $static" 395985aa5189Sbellardecho "-Werror enabled $werror" 39605b0753e0Sbellardif test "$darwin" = "yes" ; then 39615b0753e0Sbellard echo "Cocoa support $cocoa" 39625b0753e0Sbellardfi 3963e2134eb9SGerd Hoffmannecho "pixman $pixman" 396497a847bcSbellardecho "SDL support $sdl" 3965a4ccabcfSAnthony Liguoriecho "GTK support $gtk" 39664d3b6f6eSbalrogecho "curses support $curses" 3967769ce76dSAlexander Grafecho "curl support $curl" 396867b915a5Sbellardecho "mingw32 support $mingw32" 39690c58ac1cSmalcecho "Audio drivers $audio_drv_list" 3970b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist" 3971b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist" 3972983eef5aSMeador Ingeecho "VirtFS support $virtfs" 3973821601eaSJes Sorensenecho "VNC support $vnc" 3974821601eaSJes Sorensenif test "$vnc" = "yes" ; then 39758d5d2d4cSths echo "VNC TLS support $vnc_tls" 39762f9606b3Saliguori echo "VNC SASL support $vnc_sasl" 39772f6f5c7aSCorentin Chary echo "VNC JPEG support $vnc_jpeg" 3978efe556adSCorentin Chary echo "VNC PNG support $vnc_png" 39797536ee4bSTim Hardeck echo "VNC WS support $vnc_ws" 3980821601eaSJes Sorensenfi 39813142255cSblueswir1if test -n "$sparc_cpu"; then 39823142255cSblueswir1 echo "Target Sparc Arch $sparc_cpu" 39833142255cSblueswir1fi 3984e37630caSaliguoriecho "xen support $xen" 39852e4d9fb1Saurel32echo "brlapi support $brlapi" 3986a20a6f46SJuan Quintelaecho "bluez support $bluez" 3987a25dba17SJuan Quintelaecho "Documentation $docs" 3988c5937220Spbrook[ ! -z "$uname_release" ] && \ 3989c5937220Spbrookecho "uname -r $uname_release" 3990379f6698SPaul Brookecho "GUEST_BASE $guest_base" 399140d6444eSAvi Kivityecho "PIE $pie" 39928a16d273Sthsecho "vde support $vde" 399358952137SVincenzo Maffioneecho "netmap support $netmap" 39945c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio" 3995758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr" 399677755340Sthsecho "Install blobs $blobs" 3997b31a0277SJuan Quintelaecho "KVM support $kvm" 39982da776dbSMichael R. Hinesecho "RDMA support $rdma" 39999195b2c2SStefan Weilecho "TCG interpreter $tcg_interpreter" 4000f652e6afSaurel32echo "fdt support $fdt" 4001ceb42de8Saliguoriecho "preadv support $preadv" 40025f6b9e8fSBlue Swirlecho "fdatasync $fdatasync" 4003e78815a5SAndreas Färberecho "madvise $madvise" 4004e78815a5SAndreas Färberecho "posix_madvise $posix_madvise" 40051e9737daSRichard Hendersonecho "sigev_thread_id $sigev_thread_id" 4006ee682d27SStefan Weilecho "uuid support $uuid" 400747e98658SCorey Bryantecho "libcap-ng support $cap_ng" 4008d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net" 40095e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi" 401094a420b1SStefan Hajnocziecho "Trace backend $trace_backend" 40119410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>" 40122e0e3c39SAlon Levyecho "spice support $spice ($spice_protocol_version/$spice_server_version)" 4013f27aaf4bSChristian Brunnerecho "rbd support $rbd" 4014dce512deSChristoph Hellwigecho "xfsctl support $xfs" 4015111a38b0SRobert Relyeaecho "nss used $smartcard_nss" 40162b2325ffSGerd Hoffmannecho "libusb $libusb" 401769354a83SHans de Goedeecho "usb net redir $usb_redir" 4018b1e5fff4SMichael Walleecho "GLX support $glx" 4019219c2521SStefan Weilif test "$libiscsi_version" = "1.4.0"; then 4020219c2521SStefan Weilecho "libiscsi support $libiscsi (1.4.0)" 4021219c2521SStefan Weilelse 4022c589b249SRonnie Sahlbergecho "libiscsi support $libiscsi" 4023219c2521SStefan Weilfi 40246542aa9cSPeter Lievenecho "libnfs support $libnfs" 4025d138cee9SMichael Rothecho "build guest agent $guest_agent" 4026d9840e25STomoki Sekiyamaecho "QGA VSS support $guest_agent_with_vss" 4027f794573eSEduardo Otuboecho "seccomp support $seccomp" 40287c2acc70SPeter Maydellecho "coroutine backend $coroutine" 402970c60c08SStefan Hajnocziecho "coroutine pool $coroutine_pool" 4030eb100396SBharata B Raoecho "GlusterFS support $glusterfs" 4031583f6e7bSStefan Hajnocziecho "virtio-blk-data-plane $virtio_blk_data_plane" 40321d728c39SBlue Swirlecho "gcov $gcov_tool" 40331d728c39SBlue Swirlecho "gcov enabled $gcov" 4034ab214c29SStefan Bergerecho "TPM support $tpm" 40350a12ec87SRichard W.M. Jonesecho "libssh2 support $libssh2" 40363b8acc11SPaolo Bonziniecho "TPM passthrough $tpm_passthrough" 40373556c233SPaolo Bonziniecho "QOM debugging $qom_cast_debug" 40384f18b782SJeff Codyecho "vhdx $vhdx" 403995c6bff3SBenoît Canetecho "Quorum $quorum" 404067b915a5Sbellard 40411ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then 404224b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support" 4043e8cd23deSbellardfi 404497a847bcSbellard 404598ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 404697a847bcSbellard 4047dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 4048dbd99ae3SStefan Weil 404998ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 405098ec69acSJuan Quintelaecho >> $config_host_mak 405198ec69acSJuan Quintela 4052e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 405399d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 405499d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 40553aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 40568bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 40570f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 405899d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 405999d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 406022d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 40619afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 40629afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 4063e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 40645a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 4065785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 40665a699bbbSLaszlo Ersekfi 4067f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 4068f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak 4069f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak 4070834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 4071f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 4072804edf29SJuan Quintela 407398ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 4074727e5283SPaolo Bonzini 4075f8393946Saurel32if test "$debug_tcg" = "yes" ; then 40762358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 4077f8393946Saurel32fi 40781625af87Saliguoriif test "$strip_opt" = "yes" ; then 407952ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 40801625af87Saliguorifi 40817d13299dSbellardif test "$bigendian" = "yes" ; then 4082e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 408397a847bcSbellardfi 408467b915a5Sbellardif test "$mingw32" = "yes" ; then 408598ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 40869fe6de94SBlue Swirl rc_version=`cat $source_path/VERSION` 40879fe6de94SBlue Swirl version_major=${rc_version%%.*} 40889fe6de94SBlue Swirl rc_version=${rc_version#*.} 40899fe6de94SBlue Swirl version_minor=${rc_version%%.*} 40909fe6de94SBlue Swirl rc_version=${rc_version#*.} 40919fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 40929fe6de94SBlue Swirl version_micro=0 40939fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 40949fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 4095d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 4096d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 4097d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 4098d9840e25STomoki Sekiyama fi 4099210fa556Spbrookelse 410035f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 4101210fa556Spbrookfi 4102128ab2ffSblueswir1 4103dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 4104dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 4105dffcb71cSMark McLoughlinfi 4106dffcb71cSMark McLoughlin 410783fb7adfSbellardif test "$darwin" = "yes" ; then 410898ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 410983fb7adfSbellardfi 4110b29fe3edSmalc 4111b29fe3edSmalcif test "$aix" = "yes" ; then 411298ec69acSJuan Quintela echo "CONFIG_AIX=y" >> $config_host_mak 4113b29fe3edSmalcfi 4114b29fe3edSmalc 4115ec530c81Sbellardif test "$solaris" = "yes" ; then 411698ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 41172358a494SJuan Quintela echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak 41180475a5caSths if test "$needs_libsunmath" = "yes" ; then 411975b5a697SJuan Quintela echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak 41200475a5caSths fi 4121ec530c81Sbellardfi 4122179cf400SAndreas Färberif test "$haiku" = "yes" ; then 4123179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 4124179cf400SAndreas Färberfi 412597a847bcSbellardif test "$static" = "yes" ; then 412698ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 412797a847bcSbellardfi 41281ba16968SStefan Weilif test "$profiler" = "yes" ; then 41292358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 413005c2a3e7Sbellardfi 4131c20709aaSbellardif test "$slirp" = "yes" ; then 413298ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 4133e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 4134c20709aaSbellardfi 41358a16d273Sthsif test "$vde" = "yes" ; then 413698ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 41378a16d273Sthsfi 413858952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 413958952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 414058952137SVincenzo Maffionefi 414147e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 414247e98658SCorey Bryant echo "CONFIG_LIBCAP=y" >> $config_host_mak 414347e98658SCorey Bryantfi 41442358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 41450c58ac1cSmalcfor drv in $audio_drv_list; do 4146bb55b712SStefan Weil def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'` 414798ec69acSJuan Quintela echo "$def=y" >> $config_host_mak 4148923e4521Smalc if test "$drv" = "fmod"; then 41497aac6cb1SJuan Quintela echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak 4150fb065187Sbellard fi 41510c58ac1cSmalcdone 415267f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then 415367f86e8eSJuan Quintela echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak 415467f86e8eSJuan Quintelafi 4155d5631638Smalcif test "$audio_win_int" = "yes" ; then 4156d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 4157d5631638Smalcfi 4158b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 4159b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 4160821601eaSJes Sorensenif test "$vnc" = "yes" ; then 4161821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 4162821601eaSJes Sorensenfi 41638d5d2d4cSthsif test "$vnc_tls" = "yes" ; then 416498ec69acSJuan Quintela echo "CONFIG_VNC_TLS=y" >> $config_host_mak 41658d5d2d4cSthsfi 41662f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 416798ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 41682f9606b3Saliguorifi 4169821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 41702f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 41712f6f5c7aSCorentin Charyfi 4172821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 4173efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 4174efe556adSCorentin Charyfi 41757536ee4bSTim Hardeckif test "$vnc_ws" = "yes" ; then 41767536ee4bSTim Hardeck echo "CONFIG_VNC_WS=y" >> $config_host_mak 41777536ee4bSTim Hardeck echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak 41787536ee4bSTim Hardeckfi 417976655d6dSaliguoriif test "$fnmatch" = "yes" ; then 41802358a494SJuan Quintela echo "CONFIG_FNMATCH=y" >> $config_host_mak 418176655d6dSaliguorifi 4182ee682d27SStefan Weilif test "$uuid" = "yes" ; then 4183ee682d27SStefan Weil echo "CONFIG_UUID=y" >> $config_host_mak 4184ee682d27SStefan Weilfi 4185dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 4186dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 4187dce512deSChristoph Hellwigfi 4188b1a550a0Spbrookqemu_version=`head $source_path/VERSION` 418998ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 41902358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 419198ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 419298ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak 4193a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 419498ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 4195cc8ae6deSpbrookfi 419617969268SFam Zhengif test "$modules" = "yes"; then 4197e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 4198e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 4199e26110cfSFam Zheng echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak 420017969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 420117969268SFam Zhengfi 42021ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 420398ec69acSJuan Quintela echo "CONFIG_SDL=y" >> $config_host_mak 42048ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 420549ecc3faSbellardfi 420649ecc3faSbellardif test "$cocoa" = "yes" ; then 420798ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 420849ecc3faSbellardfi 42094d3b6f6eSbalrogif test "$curses" = "yes" ; then 421098ec69acSJuan Quintela echo "CONFIG_CURSES=y" >> $config_host_mak 4211ab4e5602SJan Kiszkafi 4212ebc996f3SRiku Voipioif test "$utimens" = "yes" ; then 42132358a494SJuan Quintela echo "CONFIG_UTIMENSAT=y" >> $config_host_mak 4214ebc996f3SRiku Voipiofi 4215099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 42162358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 4217099d6b0fSRiku Voipiofi 421840ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 421940ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 422040ff6d7eSKevin Wolffi 42213ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 42222358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 42233ce34dfbSvibisreenivasanfi 4224c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 4225c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 4226c2882b96SRiku Voipiofi 4227d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 4228d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 4229d0927938SUlrich Hechtfi 42303d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 42313d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 42323d4fa43eSKusanagi Kouichifi 4233c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 4234c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 4235c727f47dSPeter Maydellfi 4236dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 4237dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 4238dace20dcSPeter Maydellfi 4239d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 4240d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 4241d0927938SUlrich Hechtfi 42424e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 42434e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 42444e0c6529SAlex Blighfi 4245cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 4246cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 4247cd758dd0SAlex Blighfi 42483b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 42493b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 42503b6edd16SPeter Maydellfi 42513b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 42523b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 42533b6edd16SPeter Maydellfi 42543b6edd16SPeter Maydellif test "$epoll_pwait" = "yes" ; then 42553b6edd16SPeter Maydell echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak 42563b6edd16SPeter Maydellfi 4257a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 4258a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 4259a8fd1abaSPeter Maydellfi 42603b3f24adSaurel32if test "$inotify" = "yes" ; then 42612358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 42623b3f24adSaurel32fi 4263c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 4264c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 4265c05c7a73SRiku Voipiofi 42666ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 42676ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 42686ae9a1f4SJuan Quintelafi 42696ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 42706ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 42716ae9a1f4SJuan Quintelafi 4272769ce76dSAlexander Grafif test "$curl" = "yes" ; then 4273d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 4274b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 42756ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 4276769ce76dSAlexander Graffi 42772e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 427898ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 42792e4d9fb1Saurel32fi 4280fb599c9aSbalrogif test "$bluez" = "yes" ; then 428198ec69acSJuan Quintela echo "CONFIG_BLUEZ=y" >> $config_host_mak 4282ef7635ecSJuan Quintela echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak 4283fb599c9aSbalrogfi 4284e18df141SAnthony Liguoriecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 4285a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 4286a4ccabcfSAnthony Liguori echo "CONFIG_GTK=y" >> $config_host_mak 4287a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 4288a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 4289a4ccabcfSAnthony Liguorifi 4290e37630caSaliguoriif test "$xen" = "yes" ; then 42916dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 4292d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 4293e37630caSaliguorifi 42945c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 42955c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 42965c6c3a6cSChristoph Hellwigfi 4297758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 4298758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 4299758e8e38SVenkateswararao Jujjuri (JV)fi 43004f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 43014f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 43024f26f2b6SAvi Kivityfi 4303983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 4304758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 4305758e8e38SVenkateswararao Jujjuri (JV)fi 43065e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 43075e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 43085e9be92dSNicholas Bellingerfi 430977755340Sthsif test "$blobs" = "yes" ; then 431098ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 431177755340Sthsfi 4312bf9298b9Saliguoriif test "$iovec" = "yes" ; then 43132358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 4314bf9298b9Saliguorifi 4315ceb42de8Saliguoriif test "$preadv" = "yes" ; then 43162358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 4317ceb42de8Saliguorifi 4318f652e6afSaurel32if test "$fdt" = "yes" ; then 43193f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 4320f652e6afSaurel32fi 4321dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 4322dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 4323dcc38d1cSMarcelo Tosattifi 43249195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 43259195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 43269195b2c2SStefan Weilfi 43275f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 43285f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 43295f6b9e8fSBlue Swirlfi 4330e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 4331e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 4332e78815a5SAndreas Färberfi 4333e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 4334e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 4335e78815a5SAndreas Färberfi 43361e9737daSRichard Hendersonif test "$sigev_thread_id" = "yes" ; then 43371e9737daSRichard Henderson echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak 43381e9737daSRichard Hendersonfi 433997a847bcSbellard 4340cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 4341cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 4342cd4ec0b4SGerd Hoffmannfi 4343cd4ec0b4SGerd Hoffmann 4344111a38b0SRobert Relyeaif test "$smartcard_nss" = "yes" ; then 4345111a38b0SRobert Relyea echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak 4346ad4cf3f6SPaul Brook echo "libcacard_libs=$libcacard_libs" >> $config_host_mak 4347ad4cf3f6SPaul Brook echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak 4348111a38b0SRobert Relyeafi 4349111a38b0SRobert Relyea 43502b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 43512b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 43522b2325ffSGerd Hoffmannfi 43532b2325ffSGerd Hoffmann 435469354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 435569354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 435669354a83SHans de Goedefi 435769354a83SHans de Goede 4358b1e5fff4SMichael Walleif test "$glx" = "yes" ; then 4359b1e5fff4SMichael Walle echo "CONFIG_GLX=y" >> $config_host_mak 43602b6b7099SPaolo Bonzini echo "GLX_LIBS=$glx_libs" >> $config_host_mak 436120ff075bSMichael Wallefi 436220ff075bSMichael Walle 4363c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 4364d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 4365219c2521SStefan Weil if test "$libiscsi_version" = "1.4.0"; then 4366219c2521SStefan Weil echo "CONFIG_LIBISCSI_1_4=y" >> $config_host_mak 4367219c2521SStefan Weil fi 43686ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 43696ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 4370c589b249SRonnie Sahlbergfi 4371c589b249SRonnie Sahlberg 43726542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 43736542aa9cSPeter Lieven echo "CONFIG_LIBNFS=y" >> $config_host_mak 43746542aa9cSPeter Lievenfi 43756542aa9cSPeter Lieven 4376f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 4377f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 4378f794573eSEduardo Otubofi 4379f794573eSEduardo Otubo 438083fb7adfSbellard# XXX: suppress that 43817d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 43822358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 43837d3505c5Sbellardfi 43847d3505c5Sbellard 43852358a494SJuan Quintelaecho "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak 4386c5937220Spbrook 438720ff6c80SAnthony Liguoriif test "$zero_malloc" = "yes" ; then 438820ff6c80SAnthony Liguori echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak 438920ff6c80SAnthony Liguorifi 43903556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 43913556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 43923556c233SPaolo Bonzinifi 4393f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 4394d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 43956ebc91e5SFam Zheng echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak 43966ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 4397f27aaf4bSChristian Brunnerfi 439820ff6c80SAnthony Liguori 43997c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 440070c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 440170c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 440270c60c08SStefan Hajnoczielse 440370c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 440470c60c08SStefan Hajnoczifi 4405d0e2fce5SAneesh Kumar K.V 4406d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 4407d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 4408d2042378SAneesh Kumar K.Vfi 4409d2042378SAneesh Kumar K.V 4410e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 4411e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 4412e06a765eSHarsh Prateek Borafi 4413e06a765eSHarsh Prateek Bora 4414cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then 4415cc6e3ca9SGerd Hoffmann echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak 441606d71fa1SPeter Maydellfi 441706d71fa1SPeter Maydell 44183f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 44193f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 44203f4349dcSKevin Wolffi 44213f4349dcSKevin Wolf 44228ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 44238ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 44248ab1bf12SLuiz Capitulinofi 44258ab1bf12SLuiz Capitulino 442676a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 442776a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 442876a347e1SRichard Hendersonfi 442976a347e1SRichard Henderson 4430f540166bSRichard Hendersonif test "$int128" = "yes" ; then 4431f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 4432f540166bSRichard Hendersonfi 4433f540166bSRichard Henderson 44341e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 44351e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 44361e6e9acaSRichard Hendersonfi 44371e6e9acaSRichard Henderson 4438eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 4439d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 44406ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 44416ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 4442eb100396SBharata B Raofi 4443eb100396SBharata B Rao 44440c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 44450c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 44460c14fb47SBharata B Raofi 44470c14fb47SBharata B Rao 44487c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 44497c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 44507c815372SBharata B Raofi 44517c815372SBharata B Rao 44520a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then 4453d3399d7cSFam Zheng echo "CONFIG_LIBSSH2=m" >> $config_host_mak 44546ebc91e5SFam Zheng echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak 44556ebc91e5SFam Zheng echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak 44560a12ec87SRichard W.M. Jonesfi 44570a12ec87SRichard W.M. Jones 445895c6bff3SBenoît Canetif test "$quorum" = "yes" ; then 445995c6bff3SBenoît Canet echo "CONFIG_QUORUM=y" >> $config_host_mak 446095c6bff3SBenoît Canetfi 446195c6bff3SBenoît Canet 4462583f6e7bSStefan Hajnocziif test "$virtio_blk_data_plane" = "yes" ; then 44636e790746SPaolo Bonzini echo 'CONFIG_VIRTIO_BLK_DATA_PLANE=$(CONFIG_VIRTIO)' >> $config_host_mak 4464583f6e7bSStefan Hajnoczifi 4465583f6e7bSStefan Hajnoczi 44664f18b782SJeff Codyif test "$vhdx" = "yes" ; then 44674f18b782SJeff Cody echo "CONFIG_VHDX=y" >> $config_host_mak 44684f18b782SJeff Codyfi 44694f18b782SJeff Cody 447068063649Sblueswir1# USB host support 4471b5613fdcSGerd Hoffmannif test "$libusb" = "yes"; then 44722b2325ffSGerd Hoffmann echo "HOST_USB=libusb legacy" >> $config_host_mak 4473b5613fdcSGerd Hoffmannelse 447498ec69acSJuan Quintela echo "HOST_USB=stub" >> $config_host_mak 4475b5613fdcSGerd Hoffmannfi 447668063649Sblueswir1 44773b8acc11SPaolo Bonzini# TPM passthrough support? 44783b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 44793b8acc11SPaolo Bonzini echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak 44803b8acc11SPaolo Bonzini if test "$tpm_passthrough" = "yes"; then 44813b8acc11SPaolo Bonzini echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak 44823b8acc11SPaolo Bonzini fi 44833b8acc11SPaolo Bonzinifi 44843b8acc11SPaolo Bonzini 4485e4858974SLluís# use default implementation for tracing backend-specific routines 4486e4858974SLluístrace_default=yes 448794a420b1SStefan Hajnocziecho "TRACE_BACKEND=$trace_backend" >> $config_host_mak 44886d8a764eSLluísif test "$trace_backend" = "nop"; then 44896d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 449022890ab5SPrerna Saxenafi 44919410b56cSPrerna Saxenaif test "$trace_backend" = "simple"; then 44926d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 4493e4858974SLluís trace_default=no 44946d8a764eSLluís # Set the appropriate trace file. 4495953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 44969410b56cSPrerna Saxenafi 44976d8a764eSLluísif test "$trace_backend" = "stderr"; then 44986d8a764eSLluís echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak 44999a82b6a5SLluís trace_default=no 45006d8a764eSLluísfi 45016d8a764eSLluísif test "$trace_backend" = "ust"; then 45026d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 45036d8a764eSLluísfi 45046d8a764eSLluísif test "$trace_backend" = "dtrace"; then 45056d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 45066d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 45076d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 45086d8a764eSLluís fi 4509c276b17dSDaniel P. Berrangefi 4510781e9545SEiichi Tsukataif test "$trace_backend" = "ftrace"; then 4511781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 4512781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 4513781e9545SEiichi Tsukata trace_default=no 4514781e9545SEiichi Tsukata else 451521684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 4516781e9545SEiichi Tsukata fi 4517781e9545SEiichi Tsukatafi 45189410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 4519e4858974SLluísif test "$trace_default" = "yes"; then 4520e4858974SLluís echo "CONFIG_TRACE_DEFAULT=y" >> $config_host_mak 4521e4858974SLluísfi 45229410b56cSPrerna Saxena 45232da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 45242da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 45252da776dbSMichael R. Hinesfi 45262da776dbSMichael R. Hines 45275b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 45285b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES" 45295b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 45305b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES" 45315b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 45325b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES" 4533c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then 45345b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES" 45355b5e3037SPaolo Bonzinielse 45365b5e3037SPaolo Bonzini QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES" 45375b5e3037SPaolo Bonzinifi 45385b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES" 45395b5e3037SPaolo Bonzini 454098ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak 454198ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 4542804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 4543804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 45441901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 45451901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 454621655882SPaolo Bonziniif test -n "$libtool"; then 454721655882SPaolo Bonzini echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak 454821655882SPaolo Bonzini echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak 454921655882SPaolo Bonzinielse 45501901cb14SBrad echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 455121655882SPaolo Bonzini echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 455221655882SPaolo Bonzinifi 4553c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 4554804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 4555a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 4556a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 4557a31a8642SMichael S. Tsirkinfi 45582b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak 4559804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak 456083f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 45613c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 4562804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 456345d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 45643dd46c78SBlue Swirlecho "AS=$as" >> $config_host_mak 45653dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 4566804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 4567804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 45689fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 456944dc0ca3SAlon Levyecho "LIBTOOL=$libtool" >> $config_host_mak 4570e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 457146eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 4572a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 4573f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 4574e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 4575e39f0062SPaolo Bonzini echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak 4576e39f0062SPaolo Bonzini echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak 4577e39f0062SPaolo Bonzini echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 4578e39f0062SPaolo Bonzinifi 457942da6041SGerd Hoffmannif test "$cross_prefix" != ""; then 458042da6041SGerd Hoffmann echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak 458142da6041SGerd Hoffmannelse 458242da6041SGerd Hoffmann echo "AUTOCONF_HOST := " >> $config_host_mak 458342da6041SGerd Hoffmannfi 4584e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak 458546eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 458637746c5eSMarc-André Lureauecho "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak 458773da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 45883e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 4589804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 459017969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 459117969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 4592957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak 459394dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 4594cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak 45951d728c39SBlue Swirlif test "$gcov" = "yes" ; then 45961d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 45971d728c39SBlue Swirl echo "GCOV=$gcov_tool" >> $config_host_mak 45981d728c39SBlue Swirlfi 4599804edf29SJuan Quintela 46006efd7517SPeter Maydell# use included Linux headers 46016efd7517SPeter Maydellif test "$linux" = "yes" ; then 4602a307beb6SAndreas Färber mkdir -p linux-headers 46036efd7517SPeter Maydell case "$cpu" in 4604c72b26ecSRichard Henderson i386|x86_64|x32) 460508312a63SPeter Maydell linux_arch=x86 46066efd7517SPeter Maydell ;; 46076efd7517SPeter Maydell ppcemb|ppc|ppc64) 460808312a63SPeter Maydell linux_arch=powerpc 46096efd7517SPeter Maydell ;; 46106efd7517SPeter Maydell s390x) 461108312a63SPeter Maydell linux_arch=s390 461208312a63SPeter Maydell ;; 46131f080313SClaudio Fontana aarch64) 46141f080313SClaudio Fontana linux_arch=arm64 46151f080313SClaudio Fontana ;; 461608312a63SPeter Maydell *) 461708312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 461808312a63SPeter Maydell linux_arch="$cpu" 46196efd7517SPeter Maydell ;; 46206efd7517SPeter Maydell esac 462108312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 462208312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 462308312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 462408312a63SPeter Maydell fi 46256efd7517SPeter Maydellfi 46266efd7517SPeter Maydell 462797a847bcSbellardfor target in $target_list; do 462897a847bcSbellardtarget_dir="$target" 462925be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 4630c1799a84SPaolo Bonzinitarget_name=`echo $target | cut -d '-' -f 1` 463197a847bcSbellardtarget_bigendian="no" 46321f3d3c8fSJuan Quintela 4633c1799a84SPaolo Bonzinicase "$target_name" in 4634d15a9c23SAnthony Green armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 4635ea2d6a39SJuan Quintela target_bigendian=yes 4636ea2d6a39SJuan Quintela ;; 4637ea2d6a39SJuan Quintelaesac 463897a847bcSbellardtarget_softmmu="no" 4639997344f3Sbellardtarget_user_only="no" 4640831b7825Sthstarget_linux_user="no" 464184778508Sblueswir1target_bsd_user="no" 46429e407a85Spbrookcase "$target" in 4643c1799a84SPaolo Bonzini ${target_name}-softmmu) 46449e407a85Spbrook target_softmmu="yes" 46459e407a85Spbrook ;; 4646c1799a84SPaolo Bonzini ${target_name}-linux-user) 46479c7a4202SBlue Swirl if test "$linux" != "yes" ; then 464876ad07a4SPeter Maydell error_exit "Target '$target' is only available on a Linux host" 46499c7a4202SBlue Swirl fi 46509e407a85Spbrook target_user_only="yes" 46519e407a85Spbrook target_linux_user="yes" 46529e407a85Spbrook ;; 4653c1799a84SPaolo Bonzini ${target_name}-bsd-user) 46549cf55765SBlue Swirl if test "$bsd" != "yes" ; then 465576ad07a4SPeter Maydell error_exit "Target '$target' is only available on a BSD host" 46569c7a4202SBlue Swirl fi 465784778508Sblueswir1 target_user_only="yes" 465884778508Sblueswir1 target_bsd_user="yes" 465984778508Sblueswir1 ;; 46609e407a85Spbrook *) 466176ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 46629e407a85Spbrook exit 1 46639e407a85Spbrook ;; 46649e407a85Spbrookesac 4665831b7825Sths 466697a847bcSbellardmkdir -p $target_dir 466725be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 466897a847bcSbellard 4669e5fe0c52Spbrookbflt="no" 4670c1799a84SPaolo Bonziniinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"` 467156aebc89Spbrookgdb_xml_files="" 46727ba1e619Saliguori 4673c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 46746acff7daSJuan QuintelaTARGET_BASE_ARCH="" 4675e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 4676e73aae67SJuan Quintela 4677c1799a84SPaolo Bonzinicase "$target_name" in 46782408a527Saurel32 i386) 46792408a527Saurel32 ;; 46802408a527Saurel32 x86_64) 46816acff7daSJuan Quintela TARGET_BASE_ARCH=i386 46822408a527Saurel32 ;; 46832408a527Saurel32 alpha) 46842408a527Saurel32 ;; 46852408a527Saurel32 arm|armeb) 4686b498c8a0SJuan Quintela TARGET_ARCH=arm 4687e5fe0c52Spbrook bflt="yes" 468856aebc89Spbrook gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml" 46892408a527Saurel32 ;; 46906a49fa95SAlexander Graf aarch64) 46916a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 46926a49fa95SAlexander Graf bflt="yes" 46936a669427SPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml" 46946a49fa95SAlexander Graf ;; 46952408a527Saurel32 cris) 46962408a527Saurel32 ;; 4697613a22c9SMichael Walle lm32) 4698613a22c9SMichael Walle ;; 46992408a527Saurel32 m68k) 47000938cda5Saurel32 bflt="yes" 470156aebc89Spbrook gdb_xml_files="cf-core.xml cf-fp.xml" 47022408a527Saurel32 ;; 4703877fdc12SEdgar E. Iglesias microblaze|microblazeel) 4704877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 470572b675caSEdgar E. Iglesias bflt="yes" 470672b675caSEdgar E. Iglesias ;; 47072408a527Saurel32 mips|mipsel) 4708b498c8a0SJuan Quintela TARGET_ARCH=mips 470925be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 47102408a527Saurel32 ;; 47112408a527Saurel32 mipsn32|mipsn32el) 4712597e2cecSRichard Henderson TARGET_ARCH=mips64 47136acff7daSJuan Quintela TARGET_BASE_ARCH=mips 471425be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 4715597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 47162408a527Saurel32 ;; 47172408a527Saurel32 mips64|mips64el) 4718b498c8a0SJuan Quintela TARGET_ARCH=mips64 47196acff7daSJuan Quintela TARGET_BASE_ARCH=mips 472025be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 47212408a527Saurel32 ;; 4722d15a9c23SAnthony Green moxie) 4723d15a9c23SAnthony Green ;; 4724e67db06eSJia Liu or32) 4725e67db06eSJia Liu TARGET_ARCH=openrisc 4726e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 4727e67db06eSJia Liu ;; 47282408a527Saurel32 ppc) 4729c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 47302408a527Saurel32 ;; 47312408a527Saurel32 ppcemb) 47326acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 4733e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 4734c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 47352408a527Saurel32 ;; 47362408a527Saurel32 ppc64) 47376acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 4738e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 4739c8b3532dSaurel32 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 47402408a527Saurel32 ;; 47412408a527Saurel32 ppc64abi32) 4742b498c8a0SJuan Quintela TARGET_ARCH=ppc64 47436acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 4744e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 474525be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 4746c8b3532dSaurel32 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 47472408a527Saurel32 ;; 47482408a527Saurel32 sh4|sh4eb) 4749b498c8a0SJuan Quintela TARGET_ARCH=sh4 47504dbed897Spbrook bflt="yes" 47512408a527Saurel32 ;; 47522408a527Saurel32 sparc) 47532408a527Saurel32 ;; 47542408a527Saurel32 sparc64) 47556acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 47562408a527Saurel32 ;; 47572408a527Saurel32 sparc32plus) 4758b498c8a0SJuan Quintela TARGET_ARCH=sparc64 47596acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 4760e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 476125be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 47622408a527Saurel32 ;; 476324e804ecSAlexander Graf s390x) 476424e804ecSAlexander Graf ;; 4765d2fbca94SGuan Xuetao unicore32) 4766d2fbca94SGuan Xuetao ;; 4767cfa550c6SMax Filippov xtensa|xtensaeb) 4768cfa550c6SMax Filippov TARGET_ARCH=xtensa 4769cfa550c6SMax Filippov ;; 47702408a527Saurel32 *) 477176ad07a4SPeter Maydell error_exit "Unsupported target CPU" 47722408a527Saurel32 ;; 47732408a527Saurel32esac 47745e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 47755e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 47765e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 47775e8861a0SPaolo Bonzinifi 47785e8861a0SPaolo Bonzini 47795e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 47805e8861a0SPaolo Bonzini 478199afc91dSDaniel P. Berrangeupper() { 478299afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 478399afc91dSDaniel P. Berrange} 478499afc91dSDaniel P. Berrange 478599afc91dSDaniel P. Berrangetarget_arch_name="`upper $TARGET_ARCH`" 478625be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 4787c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 478825be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 4789e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 4790e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 4791e6e91b9cSJuan Quintelafi 479225be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 4793c1799a84SPaolo Bonzinicase "$target_name" in 47941b0c87fcSJuan Quintela i386|x86_64) 47951b0c87fcSJuan Quintela if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then 479625be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 4797eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 4798eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 4799eb6fda0fSAnthony PERARD fi 4800432d268cSJun Nakajima fi 480159d21e53SAlexander Graf ;; 480259d21e53SAlexander Graf *) 48031b0c87fcSJuan Quintelaesac 4804c1799a84SPaolo Bonzinicase "$target_name" in 480570a5f682SPeter Maydell aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x) 4806c59249f9SJuan Quintela # Make sure the target and host cpus are compatible 4807c59249f9SJuan Quintela if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \ 4808c1799a84SPaolo Bonzini \( "$target_name" = "$cpu" -o \ 4809c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \ 4810c1799a84SPaolo Bonzini \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \ 4811c1799a84SPaolo Bonzini \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \ 4812c1799a84SPaolo Bonzini \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \ 4813c1799a84SPaolo Bonzini \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \ 4814c1799a84SPaolo Bonzini \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) \) ; then 481525be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 48161ba16968SStefan Weil if test "$vhost_net" = "yes" ; then 4817d5970055SMichael S. Tsirkin echo "CONFIG_VHOST_NET=y" >> $config_target_mak 4818d5970055SMichael S. Tsirkin fi 4819c59249f9SJuan Quintela fi 4820c59249f9SJuan Quintelaesac 4821de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 482225be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 482397a847bcSbellardfi 482497a847bcSbellardif test "$target_softmmu" = "yes" ; then 482525be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 4826de83cd02Sbellardfi 4827997344f3Sbellardif test "$target_user_only" = "yes" ; then 482825be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 4829a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 4830997344f3Sbellardfi 4831831b7825Sthsif test "$target_linux_user" = "yes" ; then 483225be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 4833831b7825Sthsfi 483456aebc89Spbrooklist="" 483556aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 483656aebc89Spbrook for x in $gdb_xml_files; do 483756aebc89Spbrook list="$list $source_path/gdb-xml/$x" 483856aebc89Spbrook done 483925be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 48403d0f1517SJuan Quintelafi 4841de83cd02Sbellard 4842e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then 484325be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 4844e5fe0c52Spbrookfi 4845379f6698SPaul Brookif test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then 484625be210fSJuan Quintela echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak 4847379f6698SPaul Brookfi 484884778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 484925be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 485084778508Sblueswir1fi 48515b0753e0Sbellard 48524afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets 4853fa282484SJuan Quintela 48544afddb55SJuan Quintelacflags="" 4855fa282484SJuan Quintelaldflags="" 48569b8e111fSJuan Quintela 485764656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 485864656024SJuan Quintela case "$i" in 485964656024SJuan Quintela alpha) 486025be210fSJuan Quintela echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak 486176cad711SPaolo Bonzini echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak 486264656024SJuan Quintela ;; 486364656024SJuan Quintela arm) 486425be210fSJuan Quintela echo "CONFIG_ARM_DIS=y" >> $config_target_mak 486576cad711SPaolo Bonzini echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak 4866999b53ecSClaudio Fontana if test -n "${cxx}"; then 4867999b53ecSClaudio Fontana echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak 4868999b53ecSClaudio Fontana echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak 4869999b53ecSClaudio Fontana fi 487064656024SJuan Quintela ;; 487164656024SJuan Quintela cris) 487225be210fSJuan Quintela echo "CONFIG_CRIS_DIS=y" >> $config_target_mak 487376cad711SPaolo Bonzini echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak 487464656024SJuan Quintela ;; 487564656024SJuan Quintela hppa) 487625be210fSJuan Quintela echo "CONFIG_HPPA_DIS=y" >> $config_target_mak 487776cad711SPaolo Bonzini echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak 487864656024SJuan Quintela ;; 4879c72b26ecSRichard Henderson i386|x86_64|x32) 488025be210fSJuan Quintela echo "CONFIG_I386_DIS=y" >> $config_target_mak 488176cad711SPaolo Bonzini echo "CONFIG_I386_DIS=y" >> config-all-disas.mak 488264656024SJuan Quintela ;; 4883903ec55cSAurelien Jarno ia64*) 4884903ec55cSAurelien Jarno echo "CONFIG_IA64_DIS=y" >> $config_target_mak 488576cad711SPaolo Bonzini echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak 4886903ec55cSAurelien Jarno ;; 488779368f49SMichael Walle lm32) 488879368f49SMichael Walle echo "CONFIG_LM32_DIS=y" >> $config_target_mak 488976cad711SPaolo Bonzini echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak 489079368f49SMichael Walle ;; 489164656024SJuan Quintela m68k) 489225be210fSJuan Quintela echo "CONFIG_M68K_DIS=y" >> $config_target_mak 489376cad711SPaolo Bonzini echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak 489464656024SJuan Quintela ;; 4895877fdc12SEdgar E. Iglesias microblaze*) 489625be210fSJuan Quintela echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak 489776cad711SPaolo Bonzini echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak 489864656024SJuan Quintela ;; 489964656024SJuan Quintela mips*) 490025be210fSJuan Quintela echo "CONFIG_MIPS_DIS=y" >> $config_target_mak 490176cad711SPaolo Bonzini echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak 490264656024SJuan Quintela ;; 4903d15a9c23SAnthony Green moxie*) 4904d15a9c23SAnthony Green echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak 4905d15a9c23SAnthony Green echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak 4906d15a9c23SAnthony Green ;; 4907e67db06eSJia Liu or32) 4908e67db06eSJia Liu echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak 490976cad711SPaolo Bonzini echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak 4910e67db06eSJia Liu ;; 491164656024SJuan Quintela ppc*) 491225be210fSJuan Quintela echo "CONFIG_PPC_DIS=y" >> $config_target_mak 491376cad711SPaolo Bonzini echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak 491464656024SJuan Quintela ;; 491524e804ecSAlexander Graf s390*) 491625be210fSJuan Quintela echo "CONFIG_S390_DIS=y" >> $config_target_mak 491776cad711SPaolo Bonzini echo "CONFIG_S390_DIS=y" >> config-all-disas.mak 491864656024SJuan Quintela ;; 491964656024SJuan Quintela sh4) 492025be210fSJuan Quintela echo "CONFIG_SH4_DIS=y" >> $config_target_mak 492176cad711SPaolo Bonzini echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak 492264656024SJuan Quintela ;; 492364656024SJuan Quintela sparc*) 492425be210fSJuan Quintela echo "CONFIG_SPARC_DIS=y" >> $config_target_mak 492576cad711SPaolo Bonzini echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak 492664656024SJuan Quintela ;; 4927cfa550c6SMax Filippov xtensa*) 4928cfa550c6SMax Filippov echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak 492976cad711SPaolo Bonzini echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak 4930cfa550c6SMax Filippov ;; 493164656024SJuan Quintela esac 493264656024SJuan Quinteladone 49339195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 49349195b2c2SStefan Weil echo "CONFIG_TCI_DIS=y" >> $config_target_mak 493576cad711SPaolo Bonzini echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak 49369195b2c2SStefan Weilfi 493764656024SJuan Quintela 49386ee7126fSJuan Quintelacase "$ARCH" in 49396ee7126fSJuan Quintelaalpha) 49406ee7126fSJuan Quintela # Ensure there's only a single GP 49416ee7126fSJuan Quintela cflags="-msmall-data $cflags" 49426ee7126fSJuan Quintela;; 49436ee7126fSJuan Quintelaesac 49446ee7126fSJuan Quintela 4945d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then 494625be210fSJuan Quintela echo "TARGET_GPROF=yes" >> $config_target_mak 4947d02c1db3SJuan Quintela if test "$target_linux_user" = "yes" ; then 4948d02c1db3SJuan Quintela cflags="-p $cflags" 4949d02c1db3SJuan Quintela ldflags="-p $ldflags" 4950d02c1db3SJuan Quintela fi 4951d02c1db3SJuan Quintela if test "$target_softmmu" = "yes" ; then 4952d02c1db3SJuan Quintela ldflags="-p $ldflags" 495325be210fSJuan Quintela echo "GPROF_CFLAGS=-p" >> $config_target_mak 4954d02c1db3SJuan Quintela fi 4955d02c1db3SJuan Quintelafi 4956d02c1db3SJuan Quintela 49579b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then 4958964c6fa1SRichard Henderson ldflags="$ldflags $textseg_ldflags" 4959fa282484SJuan Quintelafi 4960fa282484SJuan Quintela 496125be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak 496225be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 4963fa282484SJuan Quintela 496497a847bcSbellarddone # for target in $targets 49657d13299dSbellard 4966b776eca1SGerd Hoffmannif [ "$pixman" = "internal" ]; then 4967b776eca1SGerd Hoffmann echo "config-host.h: subdir-pixman" >> $config_host_mak 4968b776eca1SGerd Hoffmannfi 4969b776eca1SGerd Hoffmann 49702da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 49712da776dbSMichael R. Hinesecho "CONFIG_RDMA=y" >> $config_host_mak 49722da776dbSMichael R. Hinesfi 49732da776dbSMichael R. Hines 4974a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then 4975a540f158SPeter Crosthwaite echo "config-host.h: subdir-dtc" >> $config_host_mak 4976a540f158SPeter Crosthwaitefi 4977a540f158SPeter Crosthwaite 4978d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory 4979f93296eaSWenchao XiaDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests" 49802b170effSMichael TokarevDIRS="$DIRS fsdev" 49819933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw" 49822d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios" 49832dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated" 4984c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt" 4985c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit" 4986aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile" 4987ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps" 4988446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile" 49899933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile" 49902d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile" 49914652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp" 4992753d11f2SRichard Hendersonfor bios_file in \ 4993753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 49945acc2ec0SGerd Hoffmann $source_path/pc-bios/*.aml \ 4995753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 4996753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 4997e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 4998753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 4999753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 5000753d11f2SRichard Hendersondo 50017ea78b74SJan Kiszka FILES="$FILES pc-bios/`basename $bios_file`" 50027ea78b74SJan Kiszkadone 5003c2304b52SMarcel Apfelbaumfor test_file in `find $source_path/tests/acpi-test-data -type f` 5004c2304b52SMarcel Apfelbaumdo 5005c2304b52SMarcel Apfelbaum FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`" 5006c2304b52SMarcel Apfelbaumdone 5007d1807a4fSPaolo Bonzinimkdir -p $DIRS 50087d13299dSbellardfor f in $FILES ; do 500972b8b5a1SStefan Weil if [ -e "$source_path/$f" ] && [ "$source_path" != `pwd` ]; then 5010f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 5011f9245e10SPeter Maydell fi 50127d13299dSbellarddone 50131ad2134fSPaul Brook 5014c34ebfdcSAnthony Liguori# temporary config to build submodules 50152d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do 5016c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 501737116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 5018c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 50193dd46c78SBlue Swirl echo "AS=$as" >> $config_mak 5020c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 5021c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 50223dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 5023c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 5024a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 5025c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 5026c34ebfdcSAnthony Liguoridone 5027c34ebfdcSAnthony Liguori 5028b40292e7SJan Kiszkaif test "$docs" = "yes" ; then 5029b40292e7SJan Kiszka mkdir -p QMP 5030b40292e7SJan Kiszkafi 5031