xref: /openbmc/qemu/configure (revision 62893b67)
17d13299dSbellard#!/bin/sh
27d13299dSbellard#
33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard
47d13299dSbellard#
58cd05ab6SPeter Maydell
699519e67SCornelia Huck# Unset some variables known to interfere with behavior of common tools,
799519e67SCornelia Huck# just as autoconf does.
899519e67SCornelia HuckCLICOLOR_FORCE= GREP_OPTIONS=
999519e67SCornelia Huckunset CLICOLOR_FORCE GREP_OPTIONS
1099519e67SCornelia Huck
118cd05ab6SPeter Maydell# Temporary directory used for files created while
128cd05ab6SPeter Maydell# configure runs. Since it is in the build directory
138cd05ab6SPeter Maydell# we can safely blow away any previous version of it
148cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete
158cd05ab6SPeter Maydell# it when configure exits.)
168cd05ab6SPeter MaydellTMPDIR1="config-temp"
178cd05ab6SPeter Maydellrm -rf "${TMPDIR1}"
188cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}"
198cd05ab6SPeter Maydellif [ $? -ne 0 ]; then
208cd05ab6SPeter Maydell    echo "ERROR: failed to create temporary directory"
218cd05ab6SPeter Maydell    exit 1
227d13299dSbellardfi
237d13299dSbellard
248cd05ab6SPeter MaydellTMPB="qemu-conf"
258cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c"
2666518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o"
279c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx"
2866518bf6SDon SlutzTMPL="${TMPDIR1}/${TMPB}.lo"
2966518bf6SDon SlutzTMPA="${TMPDIR1}/lib${TMPB}.la"
308cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe"
317d13299dSbellard
32da1d85e3SGerd Hoffmannrm -f config.log
339ac81bbbSmalc
34b48e3611SPeter Maydell# Print a helpful header at the top of config.log
35b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log
36979ae168SPeter Maydellprintf "# Configured with:" >> config.log
37979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log
38979ae168SPeter Maydellecho >> config.log
39b48e3611SPeter Maydellecho "#" >> config.log
40b48e3611SPeter Maydell
4176ad07a4SPeter Maydellerror_exit() {
4276ad07a4SPeter Maydell    echo
4376ad07a4SPeter Maydell    echo "ERROR: $1"
4476ad07a4SPeter Maydell    while test -n "$2"; do
4576ad07a4SPeter Maydell        echo "       $2"
4676ad07a4SPeter Maydell        shift
4776ad07a4SPeter Maydell    done
4876ad07a4SPeter Maydell    echo
4976ad07a4SPeter Maydell    exit 1
5076ad07a4SPeter Maydell}
5176ad07a4SPeter Maydell
529c83ffd8SPeter Maydelldo_compiler() {
539c83ffd8SPeter Maydell    # Run the compiler, capturing its output to the log. First argument
549c83ffd8SPeter Maydell    # is compiler binary to execute.
559c83ffd8SPeter Maydell    local compiler="$1"
569c83ffd8SPeter Maydell    shift
579c83ffd8SPeter Maydell    echo $compiler "$@" >> config.log
589c83ffd8SPeter Maydell    $compiler "$@" >> config.log 2>&1 || return $?
598dc38a78SPeter Maydell    # Test passed. If this is an --enable-werror build, rerun
608dc38a78SPeter Maydell    # the test with -Werror and bail out if it fails. This
618dc38a78SPeter Maydell    # makes warning-generating-errors in configure test code
628dc38a78SPeter Maydell    # obvious to developers.
638dc38a78SPeter Maydell    if test "$werror" != "yes"; then
648dc38a78SPeter Maydell        return 0
658dc38a78SPeter Maydell    fi
668dc38a78SPeter Maydell    # Don't bother rerunning the compile if we were already using -Werror
678dc38a78SPeter Maydell    case "$*" in
688dc38a78SPeter Maydell        *-Werror*)
698dc38a78SPeter Maydell           return 0
708dc38a78SPeter Maydell        ;;
718dc38a78SPeter Maydell    esac
729c83ffd8SPeter Maydell    echo $compiler -Werror "$@" >> config.log
739c83ffd8SPeter Maydell    $compiler -Werror "$@" >> config.log 2>&1 && return $?
7476ad07a4SPeter Maydell    error_exit "configure test passed without -Werror but failed with -Werror." \
7576ad07a4SPeter Maydell        "This is probably a bug in the configure script. The failing command" \
7676ad07a4SPeter Maydell        "will be at the bottom of config.log." \
7776ad07a4SPeter Maydell        "You can run configure with --disable-werror to bypass this check."
788dc38a78SPeter Maydell}
798dc38a78SPeter Maydell
809c83ffd8SPeter Maydelldo_cc() {
819c83ffd8SPeter Maydell    do_compiler "$cc" "$@"
829c83ffd8SPeter Maydell}
839c83ffd8SPeter Maydell
849c83ffd8SPeter Maydelldo_cxx() {
859c83ffd8SPeter Maydell    do_compiler "$cxx" "$@"
869c83ffd8SPeter Maydell}
879c83ffd8SPeter Maydell
889c83ffd8SPeter Maydellupdate_cxxflags() {
899c83ffd8SPeter Maydell    # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
909c83ffd8SPeter Maydell    # options which some versions of GCC's C++ compiler complain about
919c83ffd8SPeter Maydell    # because they only make sense for C programs.
929c83ffd8SPeter Maydell    QEMU_CXXFLAGS=
939c83ffd8SPeter Maydell    for arg in $QEMU_CFLAGS; do
949c83ffd8SPeter Maydell        case $arg in
959c83ffd8SPeter Maydell            -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
969c83ffd8SPeter Maydell            -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
979c83ffd8SPeter Maydell                ;;
989c83ffd8SPeter Maydell            *)
999c83ffd8SPeter Maydell                QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
1009c83ffd8SPeter Maydell                ;;
1019c83ffd8SPeter Maydell        esac
1029c83ffd8SPeter Maydell    done
1039c83ffd8SPeter Maydell}
1049c83ffd8SPeter Maydell
10552166aa0SJuan Quintelacompile_object() {
106fd0e6053SJohn Snow  local_cflags="$1"
107fd0e6053SJohn Snow  do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
10852166aa0SJuan Quintela}
10952166aa0SJuan Quintela
11052166aa0SJuan Quintelacompile_prog() {
11152166aa0SJuan Quintela  local_cflags="$1"
11252166aa0SJuan Quintela  local_ldflags="$2"
1138dc38a78SPeter Maydell  do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
11452166aa0SJuan Quintela}
11552166aa0SJuan Quintela
11666518bf6SDon Slutzdo_libtool() {
11766518bf6SDon Slutz    local mode=$1
11866518bf6SDon Slutz    shift
11966518bf6SDon Slutz    # Run the compiler, capturing its output to the log.
12066518bf6SDon Slutz    echo $libtool $mode --tag=CC $cc "$@" >> config.log
12166518bf6SDon Slutz    $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
12266518bf6SDon Slutz    # Test passed. If this is an --enable-werror build, rerun
12366518bf6SDon Slutz    # the test with -Werror and bail out if it fails. This
12466518bf6SDon Slutz    # makes warning-generating-errors in configure test code
12566518bf6SDon Slutz    # obvious to developers.
12666518bf6SDon Slutz    if test "$werror" != "yes"; then
12766518bf6SDon Slutz        return 0
12866518bf6SDon Slutz    fi
12966518bf6SDon Slutz    # Don't bother rerunning the compile if we were already using -Werror
13066518bf6SDon Slutz    case "$*" in
13166518bf6SDon Slutz        *-Werror*)
13266518bf6SDon Slutz           return 0
13366518bf6SDon Slutz        ;;
13466518bf6SDon Slutz    esac
13566518bf6SDon Slutz    echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
13666518bf6SDon Slutz    $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
13766518bf6SDon Slutz    error_exit "configure test passed without -Werror but failed with -Werror." \
13866518bf6SDon Slutz        "This is probably a bug in the configure script. The failing command" \
13966518bf6SDon Slutz        "will be at the bottom of config.log." \
14066518bf6SDon Slutz        "You can run configure with --disable-werror to bypass this check."
14166518bf6SDon Slutz}
14266518bf6SDon Slutz
14366518bf6SDon Slutzlibtool_prog() {
14466518bf6SDon Slutz    do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
14566518bf6SDon Slutz    do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
14666518bf6SDon Slutz}
14766518bf6SDon Slutz
14811568d6dSPaolo Bonzini# symbolically link $1 to $2.  Portable version of "ln -sf".
14911568d6dSPaolo Bonzinisymlink() {
15072b8b5a1SStefan Weil  rm -rf "$2"
151ec5b06d7SAnthony Liguori  mkdir -p "$(dirname "$2")"
15272b8b5a1SStefan Weil  ln -s "$1" "$2"
15311568d6dSPaolo Bonzini}
15411568d6dSPaolo Bonzini
1550dba6195SLoïc Minier# check whether a command is available to this shell (may be either an
1560dba6195SLoïc Minier# executable or a builtin)
1570dba6195SLoïc Minierhas() {
1580dba6195SLoïc Minier    type "$1" >/dev/null 2>&1
1590dba6195SLoïc Minier}
1600dba6195SLoïc Minier
1610dba6195SLoïc Minier# search for an executable in PATH
1620dba6195SLoïc Minierpath_of() {
1630dba6195SLoïc Minier    local_command="$1"
1640dba6195SLoïc Minier    local_ifs="$IFS"
1650dba6195SLoïc Minier    local_dir=""
1660dba6195SLoïc Minier
1670dba6195SLoïc Minier    # pathname has a dir component?
1680dba6195SLoïc Minier    if [ "${local_command#*/}" != "$local_command" ]; then
1690dba6195SLoïc Minier        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
1700dba6195SLoïc Minier            echo "$local_command"
1710dba6195SLoïc Minier            return 0
1720dba6195SLoïc Minier        fi
1730dba6195SLoïc Minier    fi
1740dba6195SLoïc Minier    if [ -z "$local_command" ]; then
1750dba6195SLoïc Minier        return 1
1760dba6195SLoïc Minier    fi
1770dba6195SLoïc Minier
1780dba6195SLoïc Minier    IFS=:
1790dba6195SLoïc Minier    for local_dir in $PATH; do
1800dba6195SLoïc Minier        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
1810dba6195SLoïc Minier            echo "$local_dir/$local_command"
1820dba6195SLoïc Minier            IFS="${local_ifs:-$(printf ' \t\n')}"
1830dba6195SLoïc Minier            return 0
1840dba6195SLoïc Minier        fi
1850dba6195SLoïc Minier    done
1860dba6195SLoïc Minier    # not found
1870dba6195SLoïc Minier    IFS="${local_ifs:-$(printf ' \t\n')}"
1880dba6195SLoïc Minier    return 1
1890dba6195SLoïc Minier}
1900dba6195SLoïc Minier
1915b808275SLluís Vilanovahave_backend () {
1925b808275SLluís Vilanova    echo "$trace_backends" | grep "$1" >/dev/null
1935b808275SLluís Vilanova}
1945b808275SLluís Vilanova
1957d13299dSbellard# default parameters
196ca4deeb1SPaolo Bonzinisource_path=`dirname "$0"`
1972ff6b91eSJuan Quintelacpu=""
198a31a8642SMichael S. Tsirkiniasl="iasl"
1991e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M"
20043ce4dfeSbellardstatic="no"
2017d13299dSbellardcross_prefix=""
2020c58ac1cSmalcaudio_drv_list=""
203b64ec4e4SFam Zhengblock_drv_rw_whitelist=""
204b64ec4e4SFam Zhengblock_drv_ro_whitelist=""
205e49d021eSPeter Maydellhost_cc="cc"
20673da375eSJuan Quintelalibs_softmmu=""
2073e2e0e6bSJuan Quintelalibs_tools=""
20867f86e8eSJuan Quintelaaudio_pt_int=""
209d5631638Smalcaudio_win_int=""
2102b2e59e6SPaolo Bonzinicc_i386=i386-pc-linux-gnu-gcc
211957f1f99SMichael Rothlibs_qga=""
2125bc62e01SGerd Hoffmanndebug_info="yes"
21363678e17SSteven Noonanstack_protector=""
214ac0df51dSaliguori
215afb63ebdSStefan Weil# Don't accept a target_list environment variable.
216afb63ebdSStefan Weilunset target_list
217377529c0SPaolo Bonzini
218377529c0SPaolo Bonzini# Default value for a variable defining feature "foo".
219377529c0SPaolo Bonzini#  * foo="no"  feature will only be used if --enable-foo arg is given
220377529c0SPaolo Bonzini#  * foo=""    feature will be searched for, and if found, will be used
221377529c0SPaolo Bonzini#              unless --disable-foo is given
222377529c0SPaolo Bonzini#  * foo="yes" this value will only be set by --enable-foo flag.
223377529c0SPaolo Bonzini#              feature will searched for,
224377529c0SPaolo Bonzini#              if not found, configure exits with error
225377529c0SPaolo Bonzini#
226377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args.
227377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it
228377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found.
229377529c0SPaolo Bonzini
230377529c0SPaolo Bonzinibluez=""
231377529c0SPaolo Bonzinibrlapi=""
232377529c0SPaolo Bonzinicurl=""
233377529c0SPaolo Bonzinicurses=""
234377529c0SPaolo Bonzinidocs=""
235377529c0SPaolo Bonzinifdt=""
23658952137SVincenzo Maffionenetmap="no"
237e2134eb9SGerd Hoffmannpixman=""
238377529c0SPaolo Bonzinisdl=""
23947c03744SDave Airliesdlabi="1.2"
240983eef5aSMeador Ingevirtfs=""
241821601eaSJes Sorensenvnc="yes"
242377529c0SPaolo Bonzinisparse="no"
243377529c0SPaolo Bonziniuuid=""
244377529c0SPaolo Bonzinivde=""
245377529c0SPaolo Bonzinivnc_tls=""
246377529c0SPaolo Bonzinivnc_sasl=""
247377529c0SPaolo Bonzinivnc_jpeg=""
248377529c0SPaolo Bonzinivnc_png=""
2497536ee4bSTim Hardeckvnc_ws=""
250377529c0SPaolo Bonzinixen=""
251d5b93ddfSAnthony PERARDxen_ctrl_version=""
252eb6fda0fSAnthony PERARDxen_pci_passthrough=""
253377529c0SPaolo Bonzinilinux_aio=""
25447e98658SCorey Bryantcap_ng=""
255377529c0SPaolo Bonziniattr=""
2564f26f2b6SAvi Kivitylibattr=""
257377529c0SPaolo Bonzinixfs=""
258377529c0SPaolo Bonzini
259d41a75a2SBradvhost_net="no"
2605e9be92dSNicholas Bellingervhost_scsi="no"
261d41a75a2SBradkvm="no"
2622da776dbSMichael R. Hinesrdma=""
263377529c0SPaolo Bonzinigprof="no"
264377529c0SPaolo Bonzinidebug_tcg="no"
265377529c0SPaolo Bonzinidebug="no"
266377529c0SPaolo Bonzinistrip_opt="yes"
2679195b2c2SStefan Weiltcg_interpreter="no"
268377529c0SPaolo Bonzinibigendian="no"
269377529c0SPaolo Bonzinimingw32="no"
2701d728c39SBlue Swirlgcov="no"
2711d728c39SBlue Swirlgcov_tool="gcov"
272377529c0SPaolo BonziniEXESUF=""
27317969268SFam ZhengDSOSUF=".so"
27417969268SFam ZhengLDFLAGS_SHARED="-shared"
27517969268SFam Zhengmodules="no"
276377529c0SPaolo Bonziniprefix="/usr/local"
277377529c0SPaolo Bonzinimandir="\${prefix}/share/man"
278528ae5b8SEduardo Habkostdatadir="\${prefix}/share"
279850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu"
280377529c0SPaolo Bonzinibindir="\${prefix}/bin"
2813aa5d2beSAlon Levylibdir="\${prefix}/lib"
2828bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec"
2830f94d6daSAlon Levyincludedir="\${prefix}/include"
284377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc"
285785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var"
286377529c0SPaolo Bonziniconfsuffix="/qemu"
287377529c0SPaolo Bonzinislirp="yes"
288377529c0SPaolo Bonzinioss_lib=""
289377529c0SPaolo Bonzinibsd="no"
290377529c0SPaolo Bonzinilinux="no"
291377529c0SPaolo Bonzinisolaris="no"
292377529c0SPaolo Bonziniprofiler="no"
293377529c0SPaolo Bonzinicocoa="no"
294377529c0SPaolo Bonzinisoftmmu="yes"
295377529c0SPaolo Bonzinilinux_user="no"
296377529c0SPaolo Bonzinibsd_user="no"
29730163d89SPeter Maydellguest_base="yes"
298377529c0SPaolo Bonziniaix="no"
299377529c0SPaolo Bonziniblobs="yes"
300377529c0SPaolo Bonzinipkgversion=""
30140d6444eSAvi Kivitypie=""
302377529c0SPaolo Bonzinizero_malloc=""
3033556c233SPaolo Bonziniqom_cast_debug="yes"
3045b808275SLluís Vilanovatrace_backends="nop"
305377529c0SPaolo Bonzinitrace_file="trace"
306377529c0SPaolo Bonzinispice=""
307377529c0SPaolo Bonzinirbd=""
308111a38b0SRobert Relyeasmartcard_nss=""
3092b2325ffSGerd Hoffmannlibusb=""
31069354a83SHans de Goedeusb_redir=""
311da076ffeSGerd Hoffmannopengl=""
3121ece9905SAlon Levyzlib="yes"
313b25c9dffSStefan Weillzo=""
314b25c9dffSStefan Weilsnappy=""
3156b383c08SPeter Wubzip2=""
316e8ef31a3SMichael Tokarevguest_agent=""
317d9840e25STomoki Sekiyamaguest_agent_with_vss="no"
3189dacf32dSYossi Hindinguest_agent_msi=""
319d9840e25STomoki Sekiyamavss_win32_sdk=""
320d9840e25STomoki Sekiyamawin_sdk="no"
3214b1c11fdSDaniel P. Berrangewant_tools="yes"
322c589b249SRonnie Sahlberglibiscsi=""
3236542aa9cSPeter Lievenlibnfs=""
324519175a2SAlex Barcelocoroutine=""
32570c60c08SStefan Hajnoczicoroutine_pool=""
326f794573eSEduardo Otuboseccomp=""
327eb100396SBharata B Raoglusterfs=""
3280c14fb47SBharata B Raoglusterfs_discard="no"
3297c815372SBharata B Raoglusterfs_zerofill="no"
3306a460ed1SStefan Hajnocziarchipelago="no"
331a4ccabcfSAnthony Liguorigtk=""
3329e04c683SStefan Weilgtkabi=""
333ddbb0d09SDaniel P. Berrangegnutls=""
334ddbb0d09SDaniel P. Berrangegnutls_hash=""
335bbbf9bfbSStefan Weilvte=""
336e91c793cSCole Robinsontpm="yes"
3370a12ec87SRichard W.M. Joneslibssh2=""
3384f18b782SJeff Codyvhdx=""
339b25c9dffSStefan Weilquorum=""
340a99d57bbSWanlong Gaonuma=""
3412847b469SFam Zhengtcmalloc="no"
342377529c0SPaolo Bonzini
343ac0df51dSaliguori# parse CC options first
344ac0df51dSaliguorifor opt do
345ac0df51dSaliguori  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
346ac0df51dSaliguori  case "$opt" in
347ac0df51dSaliguori  --cross-prefix=*) cross_prefix="$optarg"
348ac0df51dSaliguori  ;;
3493d8df640SPaolo Bonzini  --cc=*) CC="$optarg"
350ac0df51dSaliguori  ;;
35183f73fceSTomoki Sekiyama  --cxx=*) CXX="$optarg"
35283f73fceSTomoki Sekiyama  ;;
353ca4deeb1SPaolo Bonzini  --source-path=*) source_path="$optarg"
354ca4deeb1SPaolo Bonzini  ;;
3552ff6b91eSJuan Quintela  --cpu=*) cpu="$optarg"
3562ff6b91eSJuan Quintela  ;;
357de385287SAlex Bennée  --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
358f9943cd5SGerd Hoffmann                    EXTRA_CFLAGS="$optarg"
359e2a2ed06SJuan Quintela  ;;
360a4969e90SAlex Bennée  --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
361f9943cd5SGerd Hoffmann                     EXTRA_LDFLAGS="$optarg"
362e2a2ed06SJuan Quintela  ;;
3635bc62e01SGerd Hoffmann  --enable-debug-info) debug_info="yes"
3645bc62e01SGerd Hoffmann  ;;
3655bc62e01SGerd Hoffmann  --disable-debug-info) debug_info="no"
3665bc62e01SGerd Hoffmann  ;;
367ac0df51dSaliguori  esac
368ac0df51dSaliguoridone
369ac0df51dSaliguori# OS specific
370ac0df51dSaliguori# Using uname is really, really broken.  Once we have the right set of checks
37193148aa5SStefan Weil# we can eliminate its usage altogether.
372ac0df51dSaliguori
373e49d021eSPeter Maydell# Preferred compiler:
374e49d021eSPeter Maydell#  ${CC} (if set)
375e49d021eSPeter Maydell#  ${cross_prefix}gcc (if cross-prefix specified)
376e49d021eSPeter Maydell#  system compiler
377e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then
378e49d021eSPeter Maydell  cc="$host_cc"
379e49d021eSPeter Maydellelse
380b3198cc2SStuart Yoder  cc="${CC-${cross_prefix}gcc}"
381e49d021eSPeter Maydellfi
382e49d021eSPeter Maydell
38383f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then
38483f73fceSTomoki Sekiyama  cxx="c++"
38583f73fceSTomoki Sekiyamaelse
38683f73fceSTomoki Sekiyama  cxx="${CXX-${cross_prefix}g++}"
38783f73fceSTomoki Sekiyamafi
38883f73fceSTomoki Sekiyama
389b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}"
3903dd46c78SBlue Swirlas="${AS-${cross_prefix}as}"
3913dd46c78SBlue Swirlcpp="${CPP-$cc -E}"
392b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}"
393b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}"
3943f534581SBradlibtool="${LIBTOOL-${cross_prefix}libtool}"
3954852ee95SStefan Weilnm="${NM-${cross_prefix}nm}"
396b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}"
397b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}"
39817884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
39917884d7bSSergei Trofimovichquery_pkg_config() {
40017884d7bSSergei Trofimovich    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
40117884d7bSSergei Trofimovich}
40217884d7bSSergei Trofimovichpkg_config=query_pkg_config
403b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
40447c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
405ac0df51dSaliguori
40645d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
40745d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}"
40845d285abSPeter Maydell
409be17dc90SMichael S. Tsirkin# default flags for all hosts
4104c288acbSPeter MaydellQEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
411f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
412c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
413be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
4146b4c305cSPaolo BonziniQEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
4155bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then
4165bc62e01SGerd Hoffmann    CFLAGS="-g $CFLAGS"
417be17dc90SMichael S. Tsirkin    LDFLAGS="-g $LDFLAGS"
4185bc62e01SGerd Hoffmannfi
419be17dc90SMichael S. Tsirkin
420ca4deeb1SPaolo Bonzini# make source path absolute
421ca4deeb1SPaolo Bonzinisource_path=`cd "$source_path"; pwd`
422ca4deeb1SPaolo Bonzini
423cab00a5aSMichael S. Tsirkin# running configure in the source tree?
424cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there.
425cab00a5aSMichael S. Tsirkinif test -f "./configure"; then
426cab00a5aSMichael S. Tsirkin    pwd_is_source_path="y"
427cab00a5aSMichael S. Tsirkinelse
428cab00a5aSMichael S. Tsirkin    pwd_is_source_path="n"
429cab00a5aSMichael S. Tsirkinfi
430cab00a5aSMichael S. Tsirkin
431ac0df51dSaliguoricheck_define() {
432ac0df51dSaliguoricat > $TMPC <<EOF
433ac0df51dSaliguori#if !defined($1)
434fd786e1aSPeter Maydell#error $1 not defined
435ac0df51dSaliguori#endif
436ac0df51dSaliguoriint main(void) { return 0; }
437ac0df51dSaliguoriEOF
43852166aa0SJuan Quintela  compile_object
439ac0df51dSaliguori}
440ac0df51dSaliguori
441307119e7SGerd Hoffmanncheck_include() {
442307119e7SGerd Hoffmanncat > $TMPC <<EOF
443307119e7SGerd Hoffmann#include <$1>
444307119e7SGerd Hoffmannint main(void) { return 0; }
445307119e7SGerd HoffmannEOF
446307119e7SGerd Hoffmann  compile_object
447307119e7SGerd Hoffmann}
448307119e7SGerd Hoffmann
44993b25869SJohn Snowwrite_c_skeleton() {
45093b25869SJohn Snow    cat > $TMPC <<EOF
45193b25869SJohn Snowint main(void) { return 0; }
45293b25869SJohn SnowEOF
45393b25869SJohn Snow}
45493b25869SJohn Snow
455bbea4050SPeter Maydellif check_define __linux__ ; then
456bbea4050SPeter Maydell  targetos="Linux"
457bbea4050SPeter Maydellelif check_define _WIN32 ; then
458bbea4050SPeter Maydell  targetos='MINGW32'
459bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then
460bbea4050SPeter Maydell  targetos='OpenBSD'
461bbea4050SPeter Maydellelif check_define __sun__ ; then
462bbea4050SPeter Maydell  targetos='SunOS'
463bbea4050SPeter Maydellelif check_define __HAIKU__ ; then
464bbea4050SPeter Maydell  targetos='Haiku'
465bbea4050SPeter Maydellelse
466bbea4050SPeter Maydell  targetos=`uname -s`
467bbea4050SPeter Maydellfi
468bbea4050SPeter Maydell
469bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use.
470bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're
471bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify
472bbea4050SPeter Maydell# the correct CPU with the --cpu option.
473bbea4050SPeter Maydellcase $targetos in
474bbea4050SPeter MaydellDarwin)
475bbea4050SPeter Maydell  # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
476bbea4050SPeter Maydell  # run 64-bit userspace code.
477bbea4050SPeter Maydell  # If the user didn't specify a CPU explicitly and the kernel says this is
478bbea4050SPeter Maydell  # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
479bbea4050SPeter Maydell  if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
480bbea4050SPeter Maydell    cpu="x86_64"
481bbea4050SPeter Maydell  fi
482bbea4050SPeter Maydell  ;;
483bbea4050SPeter MaydellSunOS)
484bbea4050SPeter Maydell  # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
485bbea4050SPeter Maydell  if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
486bbea4050SPeter Maydell    cpu="x86_64"
487bbea4050SPeter Maydell  fi
488bbea4050SPeter Maydellesac
489bbea4050SPeter Maydell
4902ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then
4912ff6b91eSJuan Quintela  # command line argument
4922ff6b91eSJuan Quintela  :
4932ff6b91eSJuan Quintelaelif check_define __i386__ ; then
494ac0df51dSaliguori  cpu="i386"
495ac0df51dSaliguorielif check_define __x86_64__ ; then
496c72b26ecSRichard Henderson  if check_define __ILP32__ ; then
497c72b26ecSRichard Henderson    cpu="x32"
498c72b26ecSRichard Henderson  else
499ac0df51dSaliguori    cpu="x86_64"
500c72b26ecSRichard Henderson  fi
5013aa9bd6cSblueswir1elif check_define __sparc__ ; then
5023aa9bd6cSblueswir1  if check_define __arch64__ ; then
5033aa9bd6cSblueswir1    cpu="sparc64"
5043aa9bd6cSblueswir1  else
5053aa9bd6cSblueswir1    cpu="sparc"
5063aa9bd6cSblueswir1  fi
507fdf7ed96Smalcelif check_define _ARCH_PPC ; then
508fdf7ed96Smalc  if check_define _ARCH_PPC64 ; then
509fdf7ed96Smalc    cpu="ppc64"
510ac0df51dSaliguori  else
511fdf7ed96Smalc    cpu="ppc"
512fdf7ed96Smalc  fi
513afa05235SAurelien Jarnoelif check_define __mips__ ; then
514afa05235SAurelien Jarno  cpu="mips"
515477ba620SAurelien Jarnoelif check_define __ia64__ ; then
516477ba620SAurelien Jarno  cpu="ia64"
517d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then
518d66ed0eaSAurelien Jarno  if check_define __s390x__ ; then
519d66ed0eaSAurelien Jarno    cpu="s390x"
520d66ed0eaSAurelien Jarno  else
521d66ed0eaSAurelien Jarno    cpu="s390"
522d66ed0eaSAurelien Jarno  fi
52321d89f84SPeter Maydellelif check_define __arm__ ; then
52421d89f84SPeter Maydell  cpu="arm"
5251f080313SClaudio Fontanaelif check_define __aarch64__ ; then
5261f080313SClaudio Fontana  cpu="aarch64"
527f28ffed5SBradelif check_define __hppa__ ; then
528f28ffed5SBrad  cpu="hppa"
529fdf7ed96Smalcelse
530fdf7ed96Smalc  cpu=`uname -m`
531ac0df51dSaliguorifi
532ac0df51dSaliguori
533359bc95dSPeter MaydellARCH=
534359bc95dSPeter Maydell# Normalise host CPU name and set ARCH.
535359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests.
5367d13299dSbellardcase "$cpu" in
537c72b26ecSRichard Henderson  ia64|ppc|ppc64|s390|s390x|sparc64|x32)
538ea8f20f8SJuan Quintela    cpu="$cpu"
539ea8f20f8SJuan Quintela  ;;
5407d13299dSbellard  i386|i486|i586|i686|i86pc|BePC)
54197a847bcSbellard    cpu="i386"
5427d13299dSbellard  ;;
543aaa5fa14Saurel32  x86_64|amd64)
544aaa5fa14Saurel32    cpu="x86_64"
545aaa5fa14Saurel32  ;;
54621d89f84SPeter Maydell  armv*b|armv*l|arm)
54721d89f84SPeter Maydell    cpu="arm"
5487d13299dSbellard  ;;
5491f080313SClaudio Fontana  aarch64)
5501f080313SClaudio Fontana    cpu="aarch64"
5511f080313SClaudio Fontana  ;;
552afa05235SAurelien Jarno  mips*)
553afa05235SAurelien Jarno    cpu="mips"
554afa05235SAurelien Jarno  ;;
5553142255cSblueswir1  sparc|sun4[cdmuv])
556ae228531Sbellard    cpu="sparc"
557ae228531Sbellard  ;;
5587d13299dSbellard  *)
559359bc95dSPeter Maydell    # This will result in either an error or falling back to TCI later
560359bc95dSPeter Maydell    ARCH=unknown
5617d13299dSbellard  ;;
5627d13299dSbellardesac
563359bc95dSPeter Maydellif test -z "$ARCH"; then
564359bc95dSPeter Maydell  ARCH="$cpu"
565359bc95dSPeter Maydellfi
566e2d52ad3SJuan Quintela
5677d13299dSbellard# OS specific
5680dbfc675SJuan Quintela
569adfc3e91SStacey Son# host *BSD for user mode
570adfc3e91SStacey SonHOST_VARIANT_DIR=""
571adfc3e91SStacey Son
5727d13299dSbellardcase $targetos in
573c326e0afSbellardCYGWIN*)
574c326e0afSbellard  mingw32="yes"
575a558ee17SJuan Quintela  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
5763cec7cc2SKővágó, Zoltán  audio_possible_drivers="sdl"
5773cec7cc2SKővágó, Zoltán  audio_drv_list="sdl"
578c326e0afSbellard;;
57967b915a5SbellardMINGW32*)
58067b915a5Sbellard  mingw32="yes"
5813cec7cc2SKővágó, Zoltán  audio_possible_drivers="dsound sdl"
582307119e7SGerd Hoffmann  if check_include dsound.h; then
5833cec7cc2SKővágó, Zoltán    audio_drv_list="dsound"
584307119e7SGerd Hoffmann  else
585307119e7SGerd Hoffmann    audio_drv_list=""
586307119e7SGerd Hoffmann  fi
58767b915a5Sbellard;;
5885c40d2bdSthsGNU/kFreeBSD)
589a167ba50SAurelien Jarno  bsd="yes"
5900c58ac1cSmalc  audio_drv_list="oss"
5910bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl pa"
5925c40d2bdSths;;
5937d3505c5SbellardFreeBSD)
5947d3505c5Sbellard  bsd="yes"
5950db4a067SPaolo Bonzini  make="${MAKE-gmake}"
5960c58ac1cSmalc  audio_drv_list="oss"
5970bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl pa"
598f01576f1SJuergen Lock  # needed for kinfo_getvmmap(3) in libutil.h
599f01576f1SJuergen Lock  LIBS="-lutil $LIBS"
60058952137SVincenzo Maffione  netmap=""  # enable netmap autodetect
601adfc3e91SStacey Son  HOST_VARIANT_DIR="freebsd"
6027d3505c5Sbellard;;
603c5e97233Sblueswir1DragonFly)
604c5e97233Sblueswir1  bsd="yes"
6050db4a067SPaolo Bonzini  make="${MAKE-gmake}"
606c5e97233Sblueswir1  audio_drv_list="oss"
6070bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl pa"
608adfc3e91SStacey Son  HOST_VARIANT_DIR="dragonfly"
609c5e97233Sblueswir1;;
6107d3505c5SbellardNetBSD)
6117d3505c5Sbellard  bsd="yes"
6120db4a067SPaolo Bonzini  make="${MAKE-gmake}"
6130c58ac1cSmalc  audio_drv_list="oss"
6140bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl"
6158ef92a88Sblueswir1  oss_lib="-lossaudio"
616adfc3e91SStacey Son  HOST_VARIANT_DIR="netbsd"
6177d3505c5Sbellard;;
6187d3505c5SbellardOpenBSD)
6197d3505c5Sbellard  bsd="yes"
6200db4a067SPaolo Bonzini  make="${MAKE-gmake}"
6214f6ab397SBrad Smith  audio_drv_list="sdl"
6220bac1111SKővágó, Zoltán  audio_possible_drivers="sdl"
623adfc3e91SStacey Son  HOST_VARIANT_DIR="openbsd"
6247d3505c5Sbellard;;
62583fb7adfSbellardDarwin)
62683fb7adfSbellard  bsd="yes"
62783fb7adfSbellard  darwin="yes"
62817969268SFam Zheng  LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
6291b0f9cc2Saliguori  if [ "$cpu" = "x86_64" ] ; then
630a558ee17SJuan Quintela    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
6310c439cbfSJuan Quintela    LDFLAGS="-arch x86_64 $LDFLAGS"
6321b0f9cc2Saliguori  fi
633fd677642Sths  cocoa="yes"
6340c58ac1cSmalc  audio_drv_list="coreaudio"
63514382605SKővágó, Zoltán  audio_possible_drivers="coreaudio sdl"
6360c439cbfSJuan Quintela  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
6377973f21cSJuan Quintela  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
638a0b7cf6bSPeter Maydell  # Disable attempts to use ObjectiveC features in os/object.h since they
639a0b7cf6bSPeter Maydell  # won't work when we're compiling with gcc as a C compiler.
640a0b7cf6bSPeter Maydell  QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
641adfc3e91SStacey Son  HOST_VARIANT_DIR="darwin"
64283fb7adfSbellard;;
643ec530c81SbellardSunOS)
644ec530c81Sbellard  solaris="yes"
6450db4a067SPaolo Bonzini  make="${MAKE-gmake}"
6460db4a067SPaolo Bonzini  install="${INSTALL-ginstall}"
647fa58948dSBlue Swirl  ld="gld"
648e2d8830eSBrad  smbd="${SMBD-/usr/sfw/sbin/smbd}"
6490475a5caSths  needs_libsunmath="no"
650c2b84fabSths  solarisrev=`uname -r | cut -f2 -d.`
651c2b84fabSths  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
6520475a5caSths    if test "$solarisrev" -le 9 ; then
6530475a5caSths      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
6540475a5caSths        needs_libsunmath="yes"
655f14bfdf9SJuan Quintela        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
656f14bfdf9SJuan Quintela        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
657f14bfdf9SJuan Quintela        LIBS="-lsunmath $LIBS"
6580475a5caSths      else
65976ad07a4SPeter Maydell        error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
66076ad07a4SPeter Maydell            "libsunmath from the Sun Studio compilers tools, due to a lack of" \
66176ad07a4SPeter Maydell            "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
66276ad07a4SPeter Maydell            "Studio 11 can be downloaded from www.sun.com."
6630475a5caSths      fi
6640475a5caSths    fi
66586b2bd93Sths  fi
6666b4d2ba1Sths  if test -f /usr/include/sys/soundcard.h ; then
6670c58ac1cSmalc    audio_drv_list="oss"
6686b4d2ba1Sths  fi
669c2de5c91Smalc  audio_possible_drivers="oss sdl"
670d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h
671d741429aSBlue Swirl  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
672d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h
673d741429aSBlue Swirl  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
674a558ee17SJuan Quintela  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
675560d375fSAndreas Färber  solarisnetlibs="-lsocket -lnsl -lresolv"
676560d375fSAndreas Färber  LIBS="$solarisnetlibs $LIBS"
677560d375fSAndreas Färber  libs_qga="$solarisnetlibs $libs_qga"
678ec530c81Sbellard;;
679b29fe3edSmalcAIX)
680b29fe3edSmalc  aix="yes"
6810db4a067SPaolo Bonzini  make="${MAKE-gmake}"
682b29fe3edSmalc;;
683179cf400SAndreas FärberHaiku)
684179cf400SAndreas Färber  haiku="yes"
685179cf400SAndreas Färber  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
686179cf400SAndreas Färber  LIBS="-lposix_error_mapper -lnetwork $LIBS"
687179cf400SAndreas Färber;;
688fb065187Sbellard*)
6890c58ac1cSmalc  audio_drv_list="oss"
6900bac1111SKővágó, Zoltán  audio_possible_drivers="oss alsa sdl pa"
6915327cf48Sbellard  linux="yes"
692831b7825Sths  linux_user="yes"
693af2be207SJan Kiszka  kvm="yes"
694af2be207SJan Kiszka  vhost_net="yes"
6955e9be92dSNicholas Bellinger  vhost_scsi="yes"
696a585140dSAlexey Kardashevskiy  QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
697fb065187Sbellard;;
6987d13299dSbellardesac
6997d13299dSbellard
7007d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
701b1a550a0Spbrook  if [ "$darwin" != "yes" ] ; then
70284778508Sblueswir1    bsd_user="yes"
7037d3505c5Sbellard  fi
70408de3949SAndreas Färberfi
7057d3505c5Sbellard
7060db4a067SPaolo Bonzini: ${make=${MAKE-make}}
7070db4a067SPaolo Bonzini: ${install=${INSTALL-install}}
70852510f8bSStefan Weil: ${python=${PYTHON-python}}
709e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}}
7100db4a067SPaolo Bonzini
7113c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC
7123c4a4d0dSPeter Maydellif has clang; then
7133c4a4d0dSPeter Maydell  objcc=clang
7143c4a4d0dSPeter Maydellelse
7153c4a4d0dSPeter Maydell  objcc="$cc"
7163c4a4d0dSPeter Maydellfi
7173c4a4d0dSPeter Maydell
7183457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then
7193457a3f8SJuan Quintela  EXESUF=".exe"
72017969268SFam Zheng  DSOSUF=".dll"
721a558ee17SJuan Quintela  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
722e94a7936SStefan Weil  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
723e94a7936SStefan Weil  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
724f7cf5d5bSStefan Weil  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
72593b25869SJohn Snow  write_c_skeleton;
726f7cf5d5bSStefan Weil  if compile_prog "" "-liberty" ; then
727f7cf5d5bSStefan Weil    LIBS="-liberty $LIBS"
728f7cf5d5bSStefan Weil  fi
729c5ec15eaSStefan Weil  prefix="c:/Program Files/QEMU"
730683035deSPaolo Bonzini  mandir="\${prefix}"
731528ae5b8SEduardo Habkost  datadir="\${prefix}"
732850da188SEduardo Habkost  qemu_docdir="\${prefix}"
733683035deSPaolo Bonzini  bindir="\${prefix}"
734683035deSPaolo Bonzini  sysconfdir="\${prefix}"
7355a699bbbSLaszlo Ersek  local_statedir=
736683035deSPaolo Bonzini  confsuffix=""
737368542b8SStefan Hajnoczi  libs_qga="-lws2_32 -lwinmm -lpowrprof $libs_qga"
7383457a3f8SJuan Quintelafi
7393457a3f8SJuan Quintela
740487fefdbSAnthony Liguoriwerror=""
74185aa5189Sbellard
7427d13299dSbellardfor opt do
743a46e4035Spbrook  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
7447d13299dSbellard  case "$opt" in
7452efc3265Sbellard  --help|-h) show_help=yes
7462efc3265Sbellard  ;;
74799123e13SMike Frysinger  --version|-V) exec cat $source_path/VERSION
74899123e13SMike Frysinger  ;;
749b1a550a0Spbrook  --prefix=*) prefix="$optarg"
7507d13299dSbellard  ;;
751b1a550a0Spbrook  --interp-prefix=*) interp_prefix="$optarg"
75232ce6337Sbellard  ;;
753ca4deeb1SPaolo Bonzini  --source-path=*)
7547d13299dSbellard  ;;
755ac0df51dSaliguori  --cross-prefix=*)
7567d13299dSbellard  ;;
757ac0df51dSaliguori  --cc=*)
7587d13299dSbellard  ;;
759b1a550a0Spbrook  --host-cc=*) host_cc="$optarg"
76083469015Sbellard  ;;
76183f73fceSTomoki Sekiyama  --cxx=*)
76283f73fceSTomoki Sekiyama  ;;
763e007dbecSMichael S. Tsirkin  --iasl=*) iasl="$optarg"
764e007dbecSMichael S. Tsirkin  ;;
7653c4a4d0dSPeter Maydell  --objcc=*) objcc="$optarg"
7663c4a4d0dSPeter Maydell  ;;
767b1a550a0Spbrook  --make=*) make="$optarg"
7687d13299dSbellard  ;;
7696a882643Spbrook  --install=*) install="$optarg"
7706a882643Spbrook  ;;
771c886edfbSBlue Swirl  --python=*) python="$optarg"
772c886edfbSBlue Swirl  ;;
7731d728c39SBlue Swirl  --gcov=*) gcov_tool="$optarg"
7741d728c39SBlue Swirl  ;;
775e2d8830eSBrad  --smbd=*) smbd="$optarg"
776e2d8830eSBrad  ;;
777e2a2ed06SJuan Quintela  --extra-cflags=*)
7787d13299dSbellard  ;;
779e2a2ed06SJuan Quintela  --extra-ldflags=*)
7807d13299dSbellard  ;;
7815bc62e01SGerd Hoffmann  --enable-debug-info)
7825bc62e01SGerd Hoffmann  ;;
7835bc62e01SGerd Hoffmann  --disable-debug-info)
7845bc62e01SGerd Hoffmann  ;;
78517969268SFam Zheng  --enable-modules)
78617969268SFam Zheng      modules="yes"
78717969268SFam Zheng  ;;
7882ff6b91eSJuan Quintela  --cpu=*)
7897d13299dSbellard  ;;
790b1a550a0Spbrook  --target-list=*) target_list="$optarg"
791de83cd02Sbellard  ;;
7925b808275SLluís Vilanova  --enable-trace-backends=*) trace_backends="$optarg"
7935b808275SLluís Vilanova  ;;
7945b808275SLluís Vilanova  # XXX: backwards compatibility
7955b808275SLluís Vilanova  --enable-trace-backend=*) trace_backends="$optarg"
79694a420b1SStefan Hajnoczi  ;;
79774242e0fSPaolo Bonzini  --with-trace-file=*) trace_file="$optarg"
7989410b56cSPrerna Saxena  ;;
7997d13299dSbellard  --enable-gprof) gprof="yes"
8007d13299dSbellard  ;;
8011d728c39SBlue Swirl  --enable-gcov) gcov="yes"
8021d728c39SBlue Swirl  ;;
80379427693SLoïc Minier  --static)
80479427693SLoïc Minier    static="yes"
80579427693SLoïc Minier    LDFLAGS="-static $LDFLAGS"
80617884d7bSSergei Trofimovich    QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
80743ce4dfeSbellard  ;;
8080b24e75fSPaolo Bonzini  --mandir=*) mandir="$optarg"
8090b24e75fSPaolo Bonzini  ;;
8100b24e75fSPaolo Bonzini  --bindir=*) bindir="$optarg"
8110b24e75fSPaolo Bonzini  ;;
8123aa5d2beSAlon Levy  --libdir=*) libdir="$optarg"
8133aa5d2beSAlon Levy  ;;
8148bf188aaSMichael Tokarev  --libexecdir=*) libexecdir="$optarg"
8158bf188aaSMichael Tokarev  ;;
8160f94d6daSAlon Levy  --includedir=*) includedir="$optarg"
8170f94d6daSAlon Levy  ;;
818528ae5b8SEduardo Habkost  --datadir=*) datadir="$optarg"
8190b24e75fSPaolo Bonzini  ;;
820023d3d67SEduardo Habkost  --with-confsuffix=*) confsuffix="$optarg"
821023d3d67SEduardo Habkost  ;;
822850da188SEduardo Habkost  --docdir=*) qemu_docdir="$optarg"
8230b24e75fSPaolo Bonzini  ;;
824ca2fb938SAndre Przywara  --sysconfdir=*) sysconfdir="$optarg"
82507381cc1SAnthony Liguori  ;;
826785c23aeSLuiz Capitulino  --localstatedir=*) local_statedir="$optarg"
827785c23aeSLuiz Capitulino  ;;
828785c23aeSLuiz Capitulino  --sbindir=*|--sharedstatedir=*|\
829023ddd74SMax Filippov  --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
830023ddd74SMax Filippov  --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
831023ddd74SMax Filippov    # These switches are silently ignored, for compatibility with
832023ddd74SMax Filippov    # autoconf-generated configure scripts. This allows QEMU's
833023ddd74SMax Filippov    # configure to be used by RPM and similar macros that set
834023ddd74SMax Filippov    # lots of directory switches by default.
835023ddd74SMax Filippov  ;;
836e2134eb9SGerd Hoffmann  --with-system-pixman) pixman="system"
837e2134eb9SGerd Hoffmann  ;;
838e2134eb9SGerd Hoffmann  --without-system-pixman) pixman="internal"
839e2134eb9SGerd Hoffmann  ;;
84074880fe2SRobert Schiele  --without-pixman) pixman="none"
84174880fe2SRobert Schiele  ;;
84297a847bcSbellard  --disable-sdl) sdl="no"
84397a847bcSbellard  ;;
844c4198157SJuan Quintela  --enable-sdl) sdl="yes"
845c4198157SJuan Quintela  ;;
84647c03744SDave Airlie  --with-sdlabi=*) sdlabi="$optarg"
84747c03744SDave Airlie  ;;
8483556c233SPaolo Bonzini  --disable-qom-cast-debug) qom_cast_debug="no"
8493556c233SPaolo Bonzini  ;;
8503556c233SPaolo Bonzini  --enable-qom-cast-debug) qom_cast_debug="yes"
8513556c233SPaolo Bonzini  ;;
852983eef5aSMeador Inge  --disable-virtfs) virtfs="no"
853983eef5aSMeador Inge  ;;
854983eef5aSMeador Inge  --enable-virtfs) virtfs="yes"
855983eef5aSMeador Inge  ;;
856821601eaSJes Sorensen  --disable-vnc) vnc="no"
857821601eaSJes Sorensen  ;;
858821601eaSJes Sorensen  --enable-vnc) vnc="yes"
859821601eaSJes Sorensen  ;;
8602f6a1ab0Sblueswir1  --oss-lib=*) oss_lib="$optarg"
8612f6a1ab0Sblueswir1  ;;
8620c58ac1cSmalc  --audio-drv-list=*) audio_drv_list="$optarg"
8630c58ac1cSmalc  ;;
864b64ec4e4SFam Zheng  --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
865b64ec4e4SFam Zheng  ;;
866b64ec4e4SFam Zheng  --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
867eb852011SMarkus Armbruster  ;;
868f8393946Saurel32  --enable-debug-tcg) debug_tcg="yes"
869f8393946Saurel32  ;;
870f8393946Saurel32  --disable-debug-tcg) debug_tcg="no"
871f8393946Saurel32  ;;
872f3d08ee6SPaul Brook  --enable-debug)
873f3d08ee6SPaul Brook      # Enable debugging options that aren't excessively noisy
874f3d08ee6SPaul Brook      debug_tcg="yes"
875f3d08ee6SPaul Brook      debug="yes"
876f3d08ee6SPaul Brook      strip_opt="no"
877f3d08ee6SPaul Brook  ;;
87803b4fe7dSaliguori  --enable-sparse) sparse="yes"
87903b4fe7dSaliguori  ;;
88003b4fe7dSaliguori  --disable-sparse) sparse="no"
88103b4fe7dSaliguori  ;;
8821625af87Saliguori  --disable-strip) strip_opt="no"
8831625af87Saliguori  ;;
8848d5d2d4cSths  --disable-vnc-tls) vnc_tls="no"
8858d5d2d4cSths  ;;
8861be10ad2SJuan Quintela  --enable-vnc-tls) vnc_tls="yes"
8871be10ad2SJuan Quintela  ;;
8882f9606b3Saliguori  --disable-vnc-sasl) vnc_sasl="no"
8892f9606b3Saliguori  ;;
890ea784e3bSJuan Quintela  --enable-vnc-sasl) vnc_sasl="yes"
891ea784e3bSJuan Quintela  ;;
8922f6f5c7aSCorentin Chary  --disable-vnc-jpeg) vnc_jpeg="no"
8932f6f5c7aSCorentin Chary  ;;
8942f6f5c7aSCorentin Chary  --enable-vnc-jpeg) vnc_jpeg="yes"
8952f6f5c7aSCorentin Chary  ;;
896efe556adSCorentin Chary  --disable-vnc-png) vnc_png="no"
897efe556adSCorentin Chary  ;;
898efe556adSCorentin Chary  --enable-vnc-png) vnc_png="yes"
899efe556adSCorentin Chary  ;;
9007536ee4bSTim Hardeck  --disable-vnc-ws) vnc_ws="no"
9017536ee4bSTim Hardeck  ;;
9027536ee4bSTim Hardeck  --enable-vnc-ws) vnc_ws="yes"
9037536ee4bSTim Hardeck  ;;
904443f1376Sbellard  --disable-slirp) slirp="no"
905c20709aaSbellard  ;;
906ee682d27SStefan Weil  --disable-uuid) uuid="no"
907ee682d27SStefan Weil  ;;
908ee682d27SStefan Weil  --enable-uuid) uuid="yes"
909ee682d27SStefan Weil  ;;
910e0e6c8c0Saliguori  --disable-vde) vde="no"
9118a16d273Sths  ;;
912dfb278bdSJuan Quintela  --enable-vde) vde="yes"
913dfb278bdSJuan Quintela  ;;
91458952137SVincenzo Maffione  --disable-netmap) netmap="no"
91558952137SVincenzo Maffione  ;;
91658952137SVincenzo Maffione  --enable-netmap) netmap="yes"
91758952137SVincenzo Maffione  ;;
918e37630caSaliguori  --disable-xen) xen="no"
919e37630caSaliguori  ;;
920fc321b4bSJuan Quintela  --enable-xen) xen="yes"
921fc321b4bSJuan Quintela  ;;
922eb6fda0fSAnthony PERARD  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
923eb6fda0fSAnthony PERARD  ;;
924eb6fda0fSAnthony PERARD  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
925eb6fda0fSAnthony PERARD  ;;
9262e4d9fb1Saurel32  --disable-brlapi) brlapi="no"
9272e4d9fb1Saurel32  ;;
9284ffcedb6SJuan Quintela  --enable-brlapi) brlapi="yes"
9294ffcedb6SJuan Quintela  ;;
930fb599c9aSbalrog  --disable-bluez) bluez="no"
931fb599c9aSbalrog  ;;
932a20a6f46SJuan Quintela  --enable-bluez) bluez="yes"
933a20a6f46SJuan Quintela  ;;
9347ba1e619Saliguori  --disable-kvm) kvm="no"
9357ba1e619Saliguori  ;;
936b31a0277SJuan Quintela  --enable-kvm) kvm="yes"
937b31a0277SJuan Quintela  ;;
9389195b2c2SStefan Weil  --disable-tcg-interpreter) tcg_interpreter="no"
9399195b2c2SStefan Weil  ;;
9409195b2c2SStefan Weil  --enable-tcg-interpreter) tcg_interpreter="yes"
9419195b2c2SStefan Weil  ;;
94247e98658SCorey Bryant  --disable-cap-ng)  cap_ng="no"
94347e98658SCorey Bryant  ;;
94447e98658SCorey Bryant  --enable-cap-ng) cap_ng="yes"
94547e98658SCorey Bryant  ;;
946cd4ec0b4SGerd Hoffmann  --disable-spice) spice="no"
947cd4ec0b4SGerd Hoffmann  ;;
948cd4ec0b4SGerd Hoffmann  --enable-spice) spice="yes"
949cd4ec0b4SGerd Hoffmann  ;;
950c589b249SRonnie Sahlberg  --disable-libiscsi) libiscsi="no"
951c589b249SRonnie Sahlberg  ;;
952c589b249SRonnie Sahlberg  --enable-libiscsi) libiscsi="yes"
953c589b249SRonnie Sahlberg  ;;
9546542aa9cSPeter Lieven  --disable-libnfs) libnfs="no"
9556542aa9cSPeter Lieven  ;;
9566542aa9cSPeter Lieven  --enable-libnfs) libnfs="yes"
9576542aa9cSPeter Lieven  ;;
95805c2a3e7Sbellard  --enable-profiler) profiler="yes"
95905c2a3e7Sbellard  ;;
96014821030SPavel Borzenkov  --disable-cocoa) cocoa="no"
96114821030SPavel Borzenkov  ;;
962c2de5c91Smalc  --enable-cocoa)
963c2de5c91Smalc      cocoa="yes" ;
964c2de5c91Smalc      sdl="no" ;
965c2de5c91Smalc      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
9665b0753e0Sbellard  ;;
967cad25d69Spbrook  --disable-system) softmmu="no"
9680a8e90f4Spbrook  ;;
969cad25d69Spbrook  --enable-system) softmmu="yes"
9700a8e90f4Spbrook  ;;
9710953a80fSZachary Amsden  --disable-user)
9720953a80fSZachary Amsden      linux_user="no" ;
9730953a80fSZachary Amsden      bsd_user="no" ;
9740953a80fSZachary Amsden  ;;
9750953a80fSZachary Amsden  --enable-user) ;;
976831b7825Sths  --disable-linux-user) linux_user="no"
9770a8e90f4Spbrook  ;;
978831b7825Sths  --enable-linux-user) linux_user="yes"
979831b7825Sths  ;;
98084778508Sblueswir1  --disable-bsd-user) bsd_user="no"
98184778508Sblueswir1  ;;
98284778508Sblueswir1  --enable-bsd-user) bsd_user="yes"
98384778508Sblueswir1  ;;
984379f6698SPaul Brook  --enable-guest-base) guest_base="yes"
985379f6698SPaul Brook  ;;
986379f6698SPaul Brook  --disable-guest-base) guest_base="no"
987379f6698SPaul Brook  ;;
98840d6444eSAvi Kivity  --enable-pie) pie="yes"
98934005a00SKirill A. Shutemov  ;;
99040d6444eSAvi Kivity  --disable-pie) pie="no"
99134005a00SKirill A. Shutemov  ;;
99285aa5189Sbellard  --enable-werror) werror="yes"
99385aa5189Sbellard  ;;
99485aa5189Sbellard  --disable-werror) werror="no"
99585aa5189Sbellard  ;;
99663678e17SSteven Noonan  --enable-stack-protector) stack_protector="yes"
99763678e17SSteven Noonan  ;;
99863678e17SSteven Noonan  --disable-stack-protector) stack_protector="no"
99963678e17SSteven Noonan  ;;
10004d3b6f6eSbalrog  --disable-curses) curses="no"
10014d3b6f6eSbalrog  ;;
1002c584a6d0SJuan Quintela  --enable-curses) curses="yes"
1003c584a6d0SJuan Quintela  ;;
1004769ce76dSAlexander Graf  --disable-curl) curl="no"
1005769ce76dSAlexander Graf  ;;
1006788c8196SJuan Quintela  --enable-curl) curl="yes"
1007788c8196SJuan Quintela  ;;
10082df87df7SJuan Quintela  --disable-fdt) fdt="no"
10092df87df7SJuan Quintela  ;;
10102df87df7SJuan Quintela  --enable-fdt) fdt="yes"
10112df87df7SJuan Quintela  ;;
10125c6c3a6cSChristoph Hellwig  --disable-linux-aio) linux_aio="no"
10135c6c3a6cSChristoph Hellwig  ;;
10145c6c3a6cSChristoph Hellwig  --enable-linux-aio) linux_aio="yes"
10155c6c3a6cSChristoph Hellwig  ;;
1016758e8e38SVenkateswararao Jujjuri (JV)  --disable-attr) attr="no"
1017758e8e38SVenkateswararao Jujjuri (JV)  ;;
1018758e8e38SVenkateswararao Jujjuri (JV)  --enable-attr) attr="yes"
1019758e8e38SVenkateswararao Jujjuri (JV)  ;;
102077755340Sths  --disable-blobs) blobs="no"
102177755340Sths  ;;
10224a19f1ecSpbrook  --with-pkgversion=*) pkgversion=" ($optarg)"
10234a19f1ecSpbrook  ;;
1024519175a2SAlex Barcelo  --with-coroutine=*) coroutine="$optarg"
1025519175a2SAlex Barcelo  ;;
102670c60c08SStefan Hajnoczi  --disable-coroutine-pool) coroutine_pool="no"
102770c60c08SStefan Hajnoczi  ;;
102870c60c08SStefan Hajnoczi  --enable-coroutine-pool) coroutine_pool="yes"
102970c60c08SStefan Hajnoczi  ;;
1030a25dba17SJuan Quintela  --disable-docs) docs="no"
103170ec5dc0SAnthony Liguori  ;;
1032a25dba17SJuan Quintela  --enable-docs) docs="yes"
103383a3ab8bSJuan Quintela  ;;
1034d5970055SMichael S. Tsirkin  --disable-vhost-net) vhost_net="no"
1035d5970055SMichael S. Tsirkin  ;;
1036d5970055SMichael S. Tsirkin  --enable-vhost-net) vhost_net="yes"
1037d5970055SMichael S. Tsirkin  ;;
10385e9be92dSNicholas Bellinger  --disable-vhost-scsi) vhost_scsi="no"
10395e9be92dSNicholas Bellinger  ;;
10405e9be92dSNicholas Bellinger  --enable-vhost-scsi) vhost_scsi="yes"
10415e9be92dSNicholas Bellinger  ;;
1042da076ffeSGerd Hoffmann  --disable-opengl) opengl="no"
104320ff075bSMichael Walle  ;;
1044da076ffeSGerd Hoffmann  --enable-opengl) opengl="yes"
104520ff075bSMichael Walle  ;;
1046f27aaf4bSChristian Brunner  --disable-rbd) rbd="no"
1047f27aaf4bSChristian Brunner  ;;
1048f27aaf4bSChristian Brunner  --enable-rbd) rbd="yes"
1049f27aaf4bSChristian Brunner  ;;
10508c84cf11SSergei Trofimovich  --disable-xfsctl) xfs="no"
10518c84cf11SSergei Trofimovich  ;;
10528c84cf11SSergei Trofimovich  --enable-xfsctl) xfs="yes"
10538c84cf11SSergei Trofimovich  ;;
1054111a38b0SRobert Relyea  --disable-smartcard-nss) smartcard_nss="no"
1055111a38b0SRobert Relyea  ;;
1056111a38b0SRobert Relyea  --enable-smartcard-nss) smartcard_nss="yes"
1057111a38b0SRobert Relyea  ;;
10582b2325ffSGerd Hoffmann  --disable-libusb) libusb="no"
10592b2325ffSGerd Hoffmann  ;;
10602b2325ffSGerd Hoffmann  --enable-libusb) libusb="yes"
10612b2325ffSGerd Hoffmann  ;;
106269354a83SHans de Goede  --disable-usb-redir) usb_redir="no"
106369354a83SHans de Goede  ;;
106469354a83SHans de Goede  --enable-usb-redir) usb_redir="yes"
106569354a83SHans de Goede  ;;
10661ece9905SAlon Levy  --disable-zlib-test) zlib="no"
10671ece9905SAlon Levy  ;;
1068b25c9dffSStefan Weil  --disable-lzo) lzo="no"
1069b25c9dffSStefan Weil  ;;
1070607dacd0Sqiaonuohan  --enable-lzo) lzo="yes"
1071607dacd0Sqiaonuohan  ;;
1072b25c9dffSStefan Weil  --disable-snappy) snappy="no"
1073b25c9dffSStefan Weil  ;;
1074607dacd0Sqiaonuohan  --enable-snappy) snappy="yes"
1075607dacd0Sqiaonuohan  ;;
10766b383c08SPeter Wu  --disable-bzip2) bzip2="no"
10776b383c08SPeter Wu  ;;
10786b383c08SPeter Wu  --enable-bzip2) bzip2="yes"
10796b383c08SPeter Wu  ;;
1080d138cee9SMichael Roth  --enable-guest-agent) guest_agent="yes"
1081d138cee9SMichael Roth  ;;
1082d138cee9SMichael Roth  --disable-guest-agent) guest_agent="no"
1083d138cee9SMichael Roth  ;;
10849dacf32dSYossi Hindin  --enable-guest-agent-msi) guest_agent_msi="yes"
10859dacf32dSYossi Hindin  ;;
10869dacf32dSYossi Hindin  --disable-guest-agent-msi) guest_agent_msi="no"
10879dacf32dSYossi Hindin  ;;
1088d9840e25STomoki Sekiyama  --with-vss-sdk) vss_win32_sdk=""
1089d9840e25STomoki Sekiyama  ;;
1090d9840e25STomoki Sekiyama  --with-vss-sdk=*) vss_win32_sdk="$optarg"
1091d9840e25STomoki Sekiyama  ;;
1092d9840e25STomoki Sekiyama  --without-vss-sdk) vss_win32_sdk="no"
1093d9840e25STomoki Sekiyama  ;;
1094d9840e25STomoki Sekiyama  --with-win-sdk) win_sdk=""
1095d9840e25STomoki Sekiyama  ;;
1096d9840e25STomoki Sekiyama  --with-win-sdk=*) win_sdk="$optarg"
1097d9840e25STomoki Sekiyama  ;;
1098d9840e25STomoki Sekiyama  --without-win-sdk) win_sdk="no"
1099d9840e25STomoki Sekiyama  ;;
11004b1c11fdSDaniel P. Berrange  --enable-tools) want_tools="yes"
11014b1c11fdSDaniel P. Berrange  ;;
11024b1c11fdSDaniel P. Berrange  --disable-tools) want_tools="no"
11034b1c11fdSDaniel P. Berrange  ;;
1104f794573eSEduardo Otubo  --enable-seccomp) seccomp="yes"
1105f794573eSEduardo Otubo  ;;
1106f794573eSEduardo Otubo  --disable-seccomp) seccomp="no"
1107f794573eSEduardo Otubo  ;;
1108eb100396SBharata B Rao  --disable-glusterfs) glusterfs="no"
1109eb100396SBharata B Rao  ;;
1110eb100396SBharata B Rao  --enable-glusterfs) glusterfs="yes"
1111eb100396SBharata B Rao  ;;
1112c9a12e75SChrysostomos Nanakos  --disable-archipelago) archipelago="no"
1113c9a12e75SChrysostomos Nanakos  ;;
1114c9a12e75SChrysostomos Nanakos  --enable-archipelago) archipelago="yes"
1115c9a12e75SChrysostomos Nanakos  ;;
111652b53c04SFam Zheng  --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
111752b53c04SFam Zheng      echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1118583f6e7bSStefan Hajnoczi  ;;
1119a4ccabcfSAnthony Liguori  --disable-gtk) gtk="no"
1120a4ccabcfSAnthony Liguori  ;;
1121a4ccabcfSAnthony Liguori  --enable-gtk) gtk="yes"
1122a4ccabcfSAnthony Liguori  ;;
1123ddbb0d09SDaniel P. Berrange  --disable-gnutls) gnutls="no"
1124ddbb0d09SDaniel P. Berrange  ;;
1125ddbb0d09SDaniel P. Berrange  --enable-gnutls) gnutls="yes"
1126ddbb0d09SDaniel P. Berrange  ;;
11272da776dbSMichael R. Hines  --enable-rdma) rdma="yes"
11282da776dbSMichael R. Hines  ;;
11292da776dbSMichael R. Hines  --disable-rdma) rdma="no"
11302da776dbSMichael R. Hines  ;;
1131528de90aSDaniel P. Berrange  --with-gtkabi=*) gtkabi="$optarg"
1132528de90aSDaniel P. Berrange  ;;
1133bbbf9bfbSStefan Weil  --disable-vte) vte="no"
1134bbbf9bfbSStefan Weil  ;;
1135bbbf9bfbSStefan Weil  --enable-vte) vte="yes"
1136bbbf9bfbSStefan Weil  ;;
1137e91c793cSCole Robinson  --disable-tpm) tpm="no"
1138e91c793cSCole Robinson  ;;
1139ab214c29SStefan Berger  --enable-tpm) tpm="yes"
1140ab214c29SStefan Berger  ;;
11410a12ec87SRichard W.M. Jones  --disable-libssh2) libssh2="no"
11420a12ec87SRichard W.M. Jones  ;;
11430a12ec87SRichard W.M. Jones  --enable-libssh2) libssh2="yes"
11440a12ec87SRichard W.M. Jones  ;;
11454f18b782SJeff Cody  --enable-vhdx) vhdx="yes"
11464f18b782SJeff Cody  ;;
11474f18b782SJeff Cody  --disable-vhdx) vhdx="no"
11484f18b782SJeff Cody  ;;
114995c6bff3SBenoît Canet  --disable-quorum) quorum="no"
115095c6bff3SBenoît Canet  ;;
115195c6bff3SBenoît Canet  --enable-quorum) quorum="yes"
115295c6bff3SBenoît Canet  ;;
1153a99d57bbSWanlong Gao  --disable-numa) numa="no"
1154a99d57bbSWanlong Gao  ;;
1155a99d57bbSWanlong Gao  --enable-numa) numa="yes"
1156a99d57bbSWanlong Gao  ;;
11572847b469SFam Zheng  --disable-tcmalloc) tcmalloc="no"
11582847b469SFam Zheng  ;;
11592847b469SFam Zheng  --enable-tcmalloc) tcmalloc="yes"
11602847b469SFam Zheng  ;;
11612d2ad6d0SFam Zheng  *)
11622d2ad6d0SFam Zheng      echo "ERROR: unknown option $opt"
11632d2ad6d0SFam Zheng      echo "Try '$0 --help' for more information"
11642d2ad6d0SFam Zheng      exit 1
11657f1559c6Sbalrog  ;;
11667d13299dSbellard  esac
11677d13299dSbellarddone
11687d13299dSbellard
1169f6f0b7d9SStefan Weilif ! has $python; then
1170f6f0b7d9SStefan Weil  error_exit "Python not found. Use --python=/path/to/python"
1171f6f0b7d9SStefan Weilfi
1172f6f0b7d9SStefan Weil
1173f6f0b7d9SStefan Weil# Note that if the Python conditional here evaluates True we will exit
1174f6f0b7d9SStefan Weil# with status 1 which is a shell 'false' value.
1175f6f0b7d9SStefan Weilif ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1176f6f0b7d9SStefan Weil  error_exit "Cannot use '$python', Python 2.4 or later is required." \
1177f6f0b7d9SStefan Weil      "Note that Python 3 or later is not yet supported." \
1178f6f0b7d9SStefan Weil      "Use --python=/path/to/python to specify a supported Python."
1179f6f0b7d9SStefan Weilfi
1180f6f0b7d9SStefan Weil
1181f6f0b7d9SStefan Weil# The -B switch was added in Python 2.6.
1182f6f0b7d9SStefan Weil# If it is supplied, compiled files are not written.
1183f6f0b7d9SStefan Weil# Use it for Python versions which support it.
1184f6f0b7d9SStefan Weilif $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1185f6f0b7d9SStefan Weil  python="$python -B"
1186f6f0b7d9SStefan Weilfi
1187f6f0b7d9SStefan Weil
118840293e58Sbellardcase "$cpu" in
1189e3608d66SRichard Henderson    ppc)
1190e3608d66SRichard Henderson           CPU_CFLAGS="-m32"
1191e3608d66SRichard Henderson           LDFLAGS="-m32 $LDFLAGS"
1192e3608d66SRichard Henderson           ;;
1193e3608d66SRichard Henderson    ppc64)
1194e3608d66SRichard Henderson           CPU_CFLAGS="-m64"
1195e3608d66SRichard Henderson           LDFLAGS="-m64 $LDFLAGS"
1196e3608d66SRichard Henderson           ;;
11979b9c37c3SRichard Henderson    sparc)
11980c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
119979f3b12fSPeter Crosthwaite           CPU_CFLAGS="-m32 -mcpu=ultrasparc"
12003142255cSblueswir1           ;;
1201ed968ff1SJuan Quintela    sparc64)
12020c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
120379f3b12fSPeter Crosthwaite           CPU_CFLAGS="-m64 -mcpu=ultrasparc"
12043142255cSblueswir1           ;;
120576d83bdeSths    s390)
1206061cdd81SRichard Henderson           CPU_CFLAGS="-m31"
120728d7cc49SRichard Henderson           LDFLAGS="-m31 $LDFLAGS"
120828d7cc49SRichard Henderson           ;;
120928d7cc49SRichard Henderson    s390x)
1210061cdd81SRichard Henderson           CPU_CFLAGS="-m64"
121128d7cc49SRichard Henderson           LDFLAGS="-m64 $LDFLAGS"
121276d83bdeSths           ;;
121340293e58Sbellard    i386)
121479f3b12fSPeter Crosthwaite           CPU_CFLAGS="-m32"
12150c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
12162b2e59e6SPaolo Bonzini           cc_i386='$(CC) -m32'
121740293e58Sbellard           ;;
121840293e58Sbellard    x86_64)
121979f3b12fSPeter Crosthwaite           CPU_CFLAGS="-m64"
12200c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
12212b2e59e6SPaolo Bonzini           cc_i386='$(CC) -m32'
1222379f6698SPaul Brook           ;;
1223c72b26ecSRichard Henderson    x32)
1224c72b26ecSRichard Henderson           CPU_CFLAGS="-mx32"
1225c72b26ecSRichard Henderson           LDFLAGS="-mx32 $LDFLAGS"
1226c72b26ecSRichard Henderson           cc_i386='$(CC) -m32'
1227c72b26ecSRichard Henderson           ;;
122830163d89SPeter Maydell    # No special flags required for other host CPUs
12293142255cSblueswir1esac
12303142255cSblueswir1
123179f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
123279f3b12fSPeter CrosthwaiteEXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
123379f3b12fSPeter Crosthwaite
123460e0df25SPeter Maydelldefault_target_list=""
123560e0df25SPeter Maydell
12366e92f823SPeter Maydellmak_wilds=""
12376e92f823SPeter Maydell
123860e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then
12396e92f823SPeter Maydell    mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
124060e0df25SPeter Maydellfi
124160e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then
12426e92f823SPeter Maydell    mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
124360e0df25SPeter Maydellfi
124460e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then
12456e92f823SPeter Maydell    mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
124660e0df25SPeter Maydellfi
124760e0df25SPeter Maydell
12486e92f823SPeter Maydellfor config in $mak_wilds; do
12496e92f823SPeter Maydell    default_target_list="${default_target_list} $(basename "$config" .mak)"
12506e92f823SPeter Maydelldone
12516e92f823SPeter Maydell
1252af5db58eSpbrookif test x"$show_help" = x"yes" ; then
1253af5db58eSpbrookcat << EOF
1254af5db58eSpbrook
1255af5db58eSpbrookUsage: configure [options]
1256af5db58eSpbrookOptions: [defaults in brackets after descriptions]
1257af5db58eSpbrook
125808fb77edSStefan WeilStandard options:
125908fb77edSStefan Weil  --help                   print this message
126008fb77edSStefan Weil  --prefix=PREFIX          install in PREFIX [$prefix]
126108fb77edSStefan Weil  --interp-prefix=PREFIX   where to find shared libraries, etc.
126208fb77edSStefan Weil                           use %M for cpu name [$interp_prefix]
126308fb77edSStefan Weil  --target-list=LIST       set target list (default: build everything)
126408fb77edSStefan Weil$(echo Available targets: $default_target_list | \
126508fb77edSStefan Weil  fold -s -w 53 | sed -e 's/^/                           /')
126608fb77edSStefan Weil
126708fb77edSStefan WeilAdvanced options (experts only):
126808fb77edSStefan Weil  --source-path=PATH       path of source code [$source_path]
126908fb77edSStefan Weil  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]
127008fb77edSStefan Weil  --cc=CC                  use C compiler CC [$cc]
127108fb77edSStefan Weil  --iasl=IASL              use ACPI compiler IASL [$iasl]
127208fb77edSStefan Weil  --host-cc=CC             use C compiler CC [$host_cc] for code run at
127308fb77edSStefan Weil                           build time
127408fb77edSStefan Weil  --cxx=CXX                use C++ compiler CXX [$cxx]
127508fb77edSStefan Weil  --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]
127608fb77edSStefan Weil  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS
127708fb77edSStefan Weil  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS
127808fb77edSStefan Weil  --make=MAKE              use specified make [$make]
127908fb77edSStefan Weil  --install=INSTALL        use specified install [$install]
128008fb77edSStefan Weil  --python=PYTHON          use specified python [$python]
128108fb77edSStefan Weil  --smbd=SMBD              use specified smbd [$smbd]
128208fb77edSStefan Weil  --static                 enable static build [$static]
128308fb77edSStefan Weil  --mandir=PATH            install man pages in PATH
128408fb77edSStefan Weil  --datadir=PATH           install firmware in PATH$confsuffix
128508fb77edSStefan Weil  --docdir=PATH            install documentation in PATH$confsuffix
128608fb77edSStefan Weil  --bindir=PATH            install binaries in PATH
128708fb77edSStefan Weil  --libdir=PATH            install libraries in PATH
128808fb77edSStefan Weil  --sysconfdir=PATH        install config in PATH$confsuffix
128908fb77edSStefan Weil  --localstatedir=PATH     install local state in PATH (set at runtime on win32)
1290e26110cfSFam Zheng  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
129108fb77edSStefan Weil  --enable-debug           enable common debug build options
129208fb77edSStefan Weil  --disable-strip          disable stripping binaries
129308fb77edSStefan Weil  --disable-werror         disable compilation abort on warning
129463678e17SSteven Noonan  --disable-stack-protector disable compiler-provided stack protection
129508fb77edSStefan Weil  --audio-drv-list=LIST    set audio drivers list:
129608fb77edSStefan Weil                           Available drivers: $audio_possible_drivers
129708fb77edSStefan Weil  --block-drv-whitelist=L  Same as --block-drv-rw-whitelist=L
129808fb77edSStefan Weil  --block-drv-rw-whitelist=L
129908fb77edSStefan Weil                           set block driver read-write whitelist
130008fb77edSStefan Weil                           (affects only QEMU, not qemu-img)
130108fb77edSStefan Weil  --block-drv-ro-whitelist=L
130208fb77edSStefan Weil                           set block driver read-only whitelist
130308fb77edSStefan Weil                           (affects only QEMU, not qemu-img)
13045b808275SLluís Vilanova  --enable-trace-backends=B Set trace backend
130508fb77edSStefan Weil                           Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
130608fb77edSStefan Weil  --with-trace-file=NAME   Full PATH,NAME of file to store traces
130708fb77edSStefan Weil                           Default:trace-<pid>
1308c23f23b9SMichael Tokarev  --disable-slirp          disable SLIRP userspace network connectivity
1309c23f23b9SMichael Tokarev  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1310c23f23b9SMichael Tokarev  --oss-lib                path to OSS library
1311c23f23b9SMichael Tokarev  --cpu=CPU                Build for host CPU [$cpu]
131208fb77edSStefan Weil  --with-coroutine=BACKEND coroutine backend. Supported options:
131308fb77edSStefan Weil                           gthread, ucontext, sigaltstack, windows
131408fb77edSStefan Weil  --enable-gcov            enable test coverage analysis with gcov
131508fb77edSStefan Weil  --gcov=GCOV              use specified gcov [$gcov_tool]
1316c23f23b9SMichael Tokarev  --disable-blobs          disable installing provided firmware blobs
1317c23f23b9SMichael Tokarev  --with-vss-sdk=SDK-path  enable Windows VSS support in QEMU Guest Agent
1318c23f23b9SMichael Tokarev  --with-win-sdk=SDK-path  path to Windows Platform SDK (to build VSS .tlb)
1319c23f23b9SMichael Tokarev
1320c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and
1321c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available:
1322c23f23b9SMichael Tokarev
1323c23f23b9SMichael Tokarev  system          all system emulation targets
1324c23f23b9SMichael Tokarev  user            supported user emulation targets
1325c23f23b9SMichael Tokarev  linux-user      all linux usermode emulation targets
1326c23f23b9SMichael Tokarev  bsd-user        all BSD usermode emulation targets
1327c23f23b9SMichael Tokarev  guest-base      GUEST_BASE support for usermode emulation targets
1328c23f23b9SMichael Tokarev  docs            build documentation
1329c23f23b9SMichael Tokarev  guest-agent     build the QEMU Guest Agent
1330c23f23b9SMichael Tokarev  guest-agent-msi build guest agent Windows MSI installation package
1331c23f23b9SMichael Tokarev  pie             Position Independent Executables
1332c23f23b9SMichael Tokarev  modules         modules support
1333c23f23b9SMichael Tokarev  debug-tcg       TCG debugging (default is disabled)
1334c23f23b9SMichael Tokarev  debug-info      debugging information
1335c23f23b9SMichael Tokarev  sparse          sparse checker
1336c23f23b9SMichael Tokarev
1337ddbb0d09SDaniel P. Berrange  gnutls          GNUTLS cryptography support
1338c23f23b9SMichael Tokarev  sdl             SDL UI
1339c23f23b9SMichael Tokarev  --with-sdlabi     select preferred SDL ABI 1.2 or 2.0
1340c23f23b9SMichael Tokarev  gtk             gtk UI
1341c23f23b9SMichael Tokarev  --with-gtkabi     select preferred GTK ABI 2.0 or 3.0
1342c23f23b9SMichael Tokarev  vte             vte support for the gtk UI
1343c23f23b9SMichael Tokarev  curses          curses UI
1344c23f23b9SMichael Tokarev  vnc             VNC UI support
1345c23f23b9SMichael Tokarev  vnc-tls         TLS encryption for VNC server
1346c23f23b9SMichael Tokarev  vnc-sasl        SASL encryption for VNC server
1347c23f23b9SMichael Tokarev  vnc-jpeg        JPEG lossy compression for VNC server
1348c23f23b9SMichael Tokarev  vnc-png         PNG compression for VNC server
1349c23f23b9SMichael Tokarev  vnc-ws          Websockets support for VNC server
1350c23f23b9SMichael Tokarev  cocoa           Cocoa UI (Mac OS X only)
1351c23f23b9SMichael Tokarev  virtfs          VirtFS
1352c23f23b9SMichael Tokarev  xen             xen backend driver support
1353c23f23b9SMichael Tokarev  xen-pci-passthrough
1354c23f23b9SMichael Tokarev  brlapi          BrlAPI (Braile)
1355c23f23b9SMichael Tokarev  curl            curl connectivity
1356c23f23b9SMichael Tokarev  fdt             fdt device tree
1357c23f23b9SMichael Tokarev  bluez           bluez stack connectivity
1358c23f23b9SMichael Tokarev  kvm             KVM acceleration support
1359c23f23b9SMichael Tokarev  rdma            RDMA-based migration support
1360c23f23b9SMichael Tokarev  uuid            uuid support
1361c23f23b9SMichael Tokarev  vde             support for vde network
1362c23f23b9SMichael Tokarev  netmap          support for netmap network
1363c23f23b9SMichael Tokarev  linux-aio       Linux AIO support
1364c23f23b9SMichael Tokarev  cap-ng          libcap-ng support
1365c23f23b9SMichael Tokarev  attr            attr and xattr support
1366c23f23b9SMichael Tokarev  vhost-net       vhost-net acceleration support
1367c23f23b9SMichael Tokarev  spice           spice
1368c23f23b9SMichael Tokarev  rbd             rados block device (rbd)
1369c23f23b9SMichael Tokarev  libiscsi        iscsi support
1370c23f23b9SMichael Tokarev  libnfs          nfs support
1371c23f23b9SMichael Tokarev  smartcard-nss   smartcard nss support
1372c23f23b9SMichael Tokarev  libusb          libusb (for usb passthrough)
1373c23f23b9SMichael Tokarev  usb-redir       usb network redirection support
1374c23f23b9SMichael Tokarev  lzo             support of lzo compression library
1375c23f23b9SMichael Tokarev  snappy          support of snappy compression library
1376c23f23b9SMichael Tokarev  bzip2           support of bzip2 compression library
1377c23f23b9SMichael Tokarev                  (for reading bzip2-compressed dmg images)
1378c23f23b9SMichael Tokarev  seccomp         seccomp support
1379c23f23b9SMichael Tokarev  coroutine-pool  coroutine freelist (better performance)
1380c23f23b9SMichael Tokarev  glusterfs       GlusterFS backend
1381c23f23b9SMichael Tokarev  archipelago     Archipelago backend
1382c23f23b9SMichael Tokarev  tpm             TPM support
1383c23f23b9SMichael Tokarev  libssh2         ssh block device support
1384c23f23b9SMichael Tokarev  vhdx            support for the Microsoft VHDX image format
1385c23f23b9SMichael Tokarev  quorum          quorum block filter support
1386c23f23b9SMichael Tokarev  numa            libnuma support
1387c23f23b9SMichael Tokarev  tcmalloc        tcmalloc support
138808fb77edSStefan Weil
138908fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched
1390af5db58eSpbrookEOF
13912d2ad6d0SFam Zhengexit 0
1392af5db58eSpbrookfi
1393af5db58eSpbrook
1394359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just
1395359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported.
1396359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then
1397359bc95dSPeter Maydell    if test "$tcg_interpreter" = "yes" ; then
1398359bc95dSPeter Maydell        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1399359bc95dSPeter Maydell        ARCH=tci
1400359bc95dSPeter Maydell    else
140176ad07a4SPeter Maydell        error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1402359bc95dSPeter Maydell    fi
1403359bc95dSPeter Maydellfi
1404359bc95dSPeter Maydell
14059c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror
14069c83ffd8SPeter Maydell# by default.  Only enable by default for git builds
14079c83ffd8SPeter Maydellz_version=`cut -f3 -d. $source_path/VERSION`
14089c83ffd8SPeter Maydell
14099c83ffd8SPeter Maydellif test -z "$werror" ; then
14109c83ffd8SPeter Maydell    if test -d "$source_path/.git" -a \
14119c83ffd8SPeter Maydell        "$linux" = "yes" ; then
14129c83ffd8SPeter Maydell        werror="yes"
14139c83ffd8SPeter Maydell    else
14149c83ffd8SPeter Maydell        werror="no"
14159c83ffd8SPeter Maydell    fi
14169c83ffd8SPeter Maydellfi
14179c83ffd8SPeter Maydell
14188d05095cSPaolo Bonzini# check that the C compiler works.
141993b25869SJohn Snowwrite_c_skeleton;
14208d05095cSPaolo Bonziniif compile_object ; then
14218d05095cSPaolo Bonzini  : C compiler works ok
14228d05095cSPaolo Bonzinielse
142376ad07a4SPeter Maydell    error_exit "\"$cc\" either does not exist or does not work"
14248d05095cSPaolo Bonzinifi
14258d05095cSPaolo Bonzini
142698b21dcdSPeter Maydell# Check that the C++ compiler exists and works with the C compiler
142798b21dcdSPeter Maydellif has $cxx; then
142898b21dcdSPeter Maydell    cat > $TMPC <<EOF
142998b21dcdSPeter Maydellint c_function(void);
143098b21dcdSPeter Maydellint main(void) { return c_function(); }
143198b21dcdSPeter MaydellEOF
143298b21dcdSPeter Maydell
143398b21dcdSPeter Maydell    compile_object
143498b21dcdSPeter Maydell
14359c83ffd8SPeter Maydell    cat > $TMPCXX <<EOF
143698b21dcdSPeter Maydellextern "C" {
143798b21dcdSPeter Maydell   int c_function(void);
143898b21dcdSPeter Maydell}
143998b21dcdSPeter Maydellint c_function(void) { return 42; }
144098b21dcdSPeter MaydellEOF
144198b21dcdSPeter Maydell
14429c83ffd8SPeter Maydell    update_cxxflags
14439c83ffd8SPeter Maydell
14449c83ffd8SPeter Maydell    if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
144598b21dcdSPeter Maydell        # C++ compiler $cxx works ok with C compiler $cc
144698b21dcdSPeter Maydell        :
144798b21dcdSPeter Maydell    else
144898b21dcdSPeter Maydell        echo "C++ compiler $cxx does not work with C compiler $cc"
144998b21dcdSPeter Maydell        echo "Disabling C++ specific optional code"
145098b21dcdSPeter Maydell        cxx=
145198b21dcdSPeter Maydell    fi
145298b21dcdSPeter Maydellelse
145398b21dcdSPeter Maydell    echo "No C++ compiler available; disabling C++ specific optional code"
145498b21dcdSPeter Maydell    cxx=
145598b21dcdSPeter Maydellfi
145698b21dcdSPeter Maydell
14578d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
14588d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
14598d05095cSPaolo Bonzinigcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
146037746c5eSMarc-André Lureaugcc_flags="-Wendif-labels $gcc_flags"
1461c1556a81SPeter Maydellgcc_flags="-Wno-initializer-overrides $gcc_flags"
146271429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags"
14636ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would
14646ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due
14656ca026cbSPeter Maydell# to -Werror this would just silently disable some features,
14666ca026cbSPeter Maydell# so it's too error prone.
146793b25869SJohn Snow
146893b25869SJohn Snowcc_has_warning_flag() {
146993b25869SJohn Snow    write_c_skeleton;
147093b25869SJohn Snow
1471a1d29d6cSPeter Maydell    # Use the positive sense of the flag when testing for -Wno-wombat
1472a1d29d6cSPeter Maydell    # support (gcc will happily accept the -Wno- form of unknown
1473a1d29d6cSPeter Maydell    # warning options).
147493b25869SJohn Snow    optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
147593b25869SJohn Snow    compile_prog "-Werror $optflag" ""
147693b25869SJohn Snow}
147793b25869SJohn Snow
147893b25869SJohn Snowfor flag in $gcc_flags; do
147993b25869SJohn Snow    if cc_has_warning_flag $flag ; then
14808d05095cSPaolo Bonzini        QEMU_CFLAGS="$QEMU_CFLAGS $flag"
14818d05095cSPaolo Bonzini    fi
14828d05095cSPaolo Bonzinidone
14838d05095cSPaolo Bonzini
148463678e17SSteven Noonanif test "$stack_protector" != "no"; then
148563678e17SSteven Noonan  gcc_flags="-fstack-protector-strong -fstack-protector-all"
14863b463a3fSMiroslav Rezanina  sp_on=0
148763678e17SSteven Noonan  for flag in $gcc_flags; do
1488590e5dd9SPeter Maydell    # We need to check both a compile and a link, since some compiler
1489590e5dd9SPeter Maydell    # setups fail only on a .c->.o compile and some only at link time
1490590e5dd9SPeter Maydell    if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1491590e5dd9SPeter Maydell       compile_prog "-Werror $flag" ""; then
149263678e17SSteven Noonan      QEMU_CFLAGS="$QEMU_CFLAGS $flag"
149363678e17SSteven Noonan      LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
14943b463a3fSMiroslav Rezanina      sp_on=1
149563678e17SSteven Noonan      break
149663678e17SSteven Noonan    fi
149763678e17SSteven Noonan  done
14983b463a3fSMiroslav Rezanina  if test "$stack_protector" = yes; then
14993b463a3fSMiroslav Rezanina    if test $sp_on = 0; then
15003b463a3fSMiroslav Rezanina      error_exit "Stack protector not supported"
15013b463a3fSMiroslav Rezanina    fi
15023b463a3fSMiroslav Rezanina  fi
150337746c5eSMarc-André Lureaufi
150437746c5eSMarc-André Lureau
1505cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489.  Happens with -fPIE/-fPIC and
1506cbdd1999SPaolo Bonzini# large functions that use global variables.  The bug is in all releases of
1507cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x.  It is fixed in
1508cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0.  We should be able to delete this at the end of 2013.
1509cbdd1999SPaolo Bonzinicat > $TMPC << EOF
1510cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1511cbdd1999SPaolo Bonziniint main(void) { return 0; }
1512cbdd1999SPaolo Bonzini#else
1513cbdd1999SPaolo Bonzini#error No bug in this compiler.
1514cbdd1999SPaolo Bonzini#endif
1515cbdd1999SPaolo BonziniEOF
1516cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then
1517cbdd1999SPaolo Bonzini  TRANSLATE_OPT_CFLAGS=-fno-gcse
1518cbdd1999SPaolo Bonzinifi
1519cbdd1999SPaolo Bonzini
152040d6444eSAvi Kivityif test "$static" = "yes" ; then
1521aa0d1f44SPaolo Bonzini  if test "$modules" = "yes" ; then
1522aa0d1f44SPaolo Bonzini    error_exit "static and modules are mutually incompatible"
1523aa0d1f44SPaolo Bonzini  fi
152440d6444eSAvi Kivity  if test "$pie" = "yes" ; then
152576ad07a4SPeter Maydell    error_exit "static and pie are mutually incompatible"
152640d6444eSAvi Kivity  else
152740d6444eSAvi Kivity    pie="no"
152840d6444eSAvi Kivity  fi
152940d6444eSAvi Kivityfi
153040d6444eSAvi Kivity
1531768b7855SEmilio G. Cota# Unconditional check for compiler __thread support
1532768b7855SEmilio G. Cota  cat > $TMPC << EOF
1533768b7855SEmilio G. Cotastatic __thread int tls_var;
1534768b7855SEmilio G. Cotaint main(void) { return tls_var; }
1535768b7855SEmilio G. CotaEOF
1536768b7855SEmilio G. Cota
1537768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then
1538768b7855SEmilio G. Cota    error_exit "Your compiler does not support the __thread specifier for " \
1539768b7855SEmilio G. Cota	"Thread-Local Storage (TLS). Please upgrade to a version that does."
1540768b7855SEmilio G. Cotafi
1541768b7855SEmilio G. Cota
154240d6444eSAvi Kivityif test "$pie" = ""; then
154340d6444eSAvi Kivity  case "$cpu-$targetos" in
1544c72b26ecSRichard Henderson    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
154540d6444eSAvi Kivity      ;;
154640d6444eSAvi Kivity    *)
154740d6444eSAvi Kivity      pie="no"
154840d6444eSAvi Kivity      ;;
154940d6444eSAvi Kivity  esac
155040d6444eSAvi Kivityfi
155140d6444eSAvi Kivity
155240d6444eSAvi Kivityif test "$pie" != "no" ; then
155340d6444eSAvi Kivity  cat > $TMPC << EOF
155421d4a791SAvi Kivity
155521d4a791SAvi Kivity#ifdef __linux__
155621d4a791SAvi Kivity#  define THREAD __thread
155721d4a791SAvi Kivity#else
155821d4a791SAvi Kivity#  define THREAD
155921d4a791SAvi Kivity#endif
156021d4a791SAvi Kivity
156121d4a791SAvi Kivitystatic THREAD int tls_var;
156221d4a791SAvi Kivity
156321d4a791SAvi Kivityint main(void) { return tls_var; }
156421d4a791SAvi Kivity
156540d6444eSAvi KivityEOF
156640d6444eSAvi Kivity  if compile_prog "-fPIE -DPIE" "-pie"; then
156740d6444eSAvi Kivity    QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
156840d6444eSAvi Kivity    LDFLAGS="-pie $LDFLAGS"
156940d6444eSAvi Kivity    pie="yes"
157040d6444eSAvi Kivity    if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
157140d6444eSAvi Kivity      LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
157240d6444eSAvi Kivity    fi
157340d6444eSAvi Kivity  else
157440d6444eSAvi Kivity    if test "$pie" = "yes"; then
157576ad07a4SPeter Maydell      error_exit "PIE not available due to missing toolchain support"
157640d6444eSAvi Kivity    else
157740d6444eSAvi Kivity      echo "Disabling PIE due to missing toolchain support"
157840d6444eSAvi Kivity      pie="no"
157940d6444eSAvi Kivity    fi
158040d6444eSAvi Kivity  fi
158146eef33bSBrad
1582e4a7b344SStefan Hajnoczi  if compile_prog "-Werror -fno-pie" "-nopie"; then
158346eef33bSBrad    CFLAGS_NOPIE="-fno-pie"
158446eef33bSBrad    LDFLAGS_NOPIE="-nopie"
158546eef33bSBrad  fi
158640d6444eSAvi Kivityfi
158740d6444eSAvi Kivity
158866518bf6SDon Slutz# check for broken gcc and libtool in RHEL5
158966518bf6SDon Slutzif test -n "$libtool" -a "$pie" != "no" ; then
159066518bf6SDon Slutz  cat > $TMPC <<EOF
159166518bf6SDon Slutz
159266518bf6SDon Slutzvoid *f(unsigned char *buf, int len);
159366518bf6SDon Slutzvoid *g(unsigned char *buf, int len);
159466518bf6SDon Slutz
159566518bf6SDon Slutzvoid *
159666518bf6SDon Slutzf(unsigned char *buf, int len)
159766518bf6SDon Slutz{
159866518bf6SDon Slutz    return (void*)0L;
159966518bf6SDon Slutz}
160066518bf6SDon Slutz
160166518bf6SDon Slutzvoid *
160266518bf6SDon Slutzg(unsigned char *buf, int len)
160366518bf6SDon Slutz{
160466518bf6SDon Slutz    return f(buf, len);
160566518bf6SDon Slutz}
160666518bf6SDon Slutz
160766518bf6SDon SlutzEOF
160866518bf6SDon Slutz  if ! libtool_prog; then
160966518bf6SDon Slutz    echo "Disabling libtool due to broken toolchain support"
161066518bf6SDon Slutz    libtool=
161166518bf6SDon Slutz  fi
161266518bf6SDon Slutzfi
161366518bf6SDon Slutz
161409dada40SPaolo Bonzini##########################################
161509dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains
161609dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit
161709dada40SPaolo Bonzini# specification is necessary
161809dada40SPaolo Bonzini
161909dada40SPaolo Bonziniif test "$cpu" = "i386"; then
162009dada40SPaolo Bonzini  cat > $TMPC << EOF
162109dada40SPaolo Bonzinistatic int sfaa(int *ptr)
162209dada40SPaolo Bonzini{
162309dada40SPaolo Bonzini  return __sync_fetch_and_and(ptr, 0);
162409dada40SPaolo Bonzini}
162509dada40SPaolo Bonzini
162609dada40SPaolo Bonziniint main(void)
162709dada40SPaolo Bonzini{
162809dada40SPaolo Bonzini  int val = 42;
16291405b629SStefan Weil  val = __sync_val_compare_and_swap(&val, 0, 1);
163009dada40SPaolo Bonzini  sfaa(&val);
163109dada40SPaolo Bonzini  return val;
163209dada40SPaolo Bonzini}
163309dada40SPaolo BonziniEOF
163409dada40SPaolo Bonzini  if ! compile_prog "" "" ; then
163509dada40SPaolo Bonzini    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
163609dada40SPaolo Bonzini  fi
163709dada40SPaolo Bonzinifi
163809dada40SPaolo Bonzini
163909dada40SPaolo Bonzini#########################################
1640ec530c81Sbellard# Solaris specific configure tool chain decisions
164109dada40SPaolo Bonzini
1642ec530c81Sbellardif test "$solaris" = "yes" ; then
16436792aa11SLoïc Minier  if has $install; then
16446792aa11SLoïc Minier    :
16456792aa11SLoïc Minier  else
164676ad07a4SPeter Maydell    error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
164776ad07a4SPeter Maydell        "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
164876ad07a4SPeter Maydell        "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1649ec530c81Sbellard  fi
16506792aa11SLoïc Minier  if test "`path_of $install`" = "/usr/sbin/install" ; then
165176ad07a4SPeter Maydell    error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
165276ad07a4SPeter Maydell        "try ginstall from the GNU fileutils available from www.blastwave.org" \
165376ad07a4SPeter Maydell        "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1654ec530c81Sbellard  fi
16556792aa11SLoïc Minier  if has ar; then
16566792aa11SLoïc Minier    :
16576792aa11SLoïc Minier  else
1658ec530c81Sbellard    if test -f /usr/ccs/bin/ar ; then
165976ad07a4SPeter Maydell      error_exit "No path includes ar" \
166076ad07a4SPeter Maydell          "Add /usr/ccs/bin to your path and rerun configure"
1661ec530c81Sbellard    fi
166276ad07a4SPeter Maydell    error_exit "No path includes ar"
1663ec530c81Sbellard  fi
1664ec530c81Sbellardfi
1665ec530c81Sbellard
1666afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then
1667121afa9eSAnthony Liguori    target_list="$default_target_list"
1668121afa9eSAnthony Liguorielse
1669121afa9eSAnthony Liguori    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
16705327cf48Sbellardfi
167125b48338SPeter Maydell
167225b48338SPeter Maydell# Check that we recognised the target name; this allows a more
167325b48338SPeter Maydell# friendly error message than if we let it fall through.
167425b48338SPeter Maydellfor target in $target_list; do
167525b48338SPeter Maydell    case " $default_target_list " in
167625b48338SPeter Maydell        *" $target "*)
167725b48338SPeter Maydell            ;;
167825b48338SPeter Maydell        *)
167925b48338SPeter Maydell            error_exit "Unknown target name '$target'"
168025b48338SPeter Maydell            ;;
168125b48338SPeter Maydell    esac
168225b48338SPeter Maydelldone
168325b48338SPeter Maydell
1684f55fe278SPaolo Bonzini# see if system emulation was really requested
1685f55fe278SPaolo Bonzinicase " $target_list " in
1686f55fe278SPaolo Bonzini  *"-softmmu "*) softmmu=yes
1687f55fe278SPaolo Bonzini  ;;
1688f55fe278SPaolo Bonzini  *) softmmu=no
1689f55fe278SPaolo Bonzini  ;;
1690f55fe278SPaolo Bonziniesac
16915327cf48Sbellard
1692249247c9SJuan Quintelafeature_not_found() {
1693249247c9SJuan Quintela  feature=$1
169421684af0SStewart Smith  remedy=$2
1695249247c9SJuan Quintela
169676ad07a4SPeter Maydell  error_exit "User requested feature $feature" \
169721684af0SStewart Smith      "configure was not able to find it." \
169821684af0SStewart Smith      "$remedy"
1699249247c9SJuan Quintela}
1700249247c9SJuan Quintela
17017d13299dSbellard# ---
17027d13299dSbellard# big/little endian test
17037d13299dSbellardcat > $TMPC << EOF
170461cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
170561cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
170661cc919fSMike Frysingerextern int foo(short *, short *);
170761cc919fSMike Frysingerint main(int argc, char *argv[]) {
170861cc919fSMike Frysinger    return foo(big_endian, little_endian);
17097d13299dSbellard}
17107d13299dSbellardEOF
17117d13299dSbellard
171261cc919fSMike Frysingerif compile_object ; then
171361cc919fSMike Frysinger    if grep -q BiGeNdIaN $TMPO ; then
171461cc919fSMike Frysinger        bigendian="yes"
171561cc919fSMike Frysinger    elif grep -q LiTtLeEnDiAn $TMPO ; then
171661cc919fSMike Frysinger        bigendian="no"
17177d13299dSbellard    else
17187d13299dSbellard        echo big/little test failed
17197d13299dSbellard    fi
17207d13299dSbellardelse
172161cc919fSMike Frysinger    echo big/little test failed
17227d13299dSbellardfi
17237d13299dSbellard
1724b0a47e79SJuan Quintela##########################################
1725015a33bdSGonglei# L2TPV3 probe
1726015a33bdSGonglei
1727015a33bdSGongleicat > $TMPC <<EOF
1728015a33bdSGonglei#include <sys/socket.h>
1729bff6cb72SMichael Tokarev#include <linux/ip.h>
1730015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); }
1731015a33bdSGongleiEOF
1732015a33bdSGongleiif compile_prog "" "" ; then
1733015a33bdSGonglei  l2tpv3=yes
1734015a33bdSGongleielse
1735015a33bdSGonglei  l2tpv3=no
1736015a33bdSGongleifi
1737015a33bdSGonglei
1738015a33bdSGonglei##########################################
1739779ab5e3SStefan Weil# pkg-config probe
1740779ab5e3SStefan Weil
1741779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then
174276ad07a4SPeter Maydell  error_exit "pkg-config binary '$pkg_config_exe' not found"
1743779ab5e3SStefan Weilfi
1744779ab5e3SStefan Weil
1745779ab5e3SStefan Weil##########################################
1746b0a47e79SJuan Quintela# NPTL probe
1747b0a47e79SJuan Quintela
174824cb36a6SPeter Maydellif test "$linux_user" = "yes"; then
1749bd0c5661Spbrook  cat > $TMPC <<EOF
1750bd0c5661Spbrook#include <sched.h>
175130813ceaSpbrook#include <linux/futex.h>
1752182eacc0SStefan Weilint main(void) {
1753bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1754bd0c5661Spbrook#error bork
1755bd0c5661Spbrook#endif
1756182eacc0SStefan Weil  return 0;
1757bd0c5661Spbrook}
1758bd0c5661SpbrookEOF
175924cb36a6SPeter Maydell  if ! compile_object ; then
176021684af0SStewart Smith    feature_not_found "nptl" "Install glibc and linux kernel headers."
1761b0a47e79SJuan Quintela  fi
1762bd0c5661Spbrookfi
1763bd0c5661Spbrook
176411d9f695Sbellard##########################################
1765ac62922eSbalrog# zlib check
1766ac62922eSbalrog
17671ece9905SAlon Levyif test "$zlib" != "no" ; then
1768ac62922eSbalrog    cat > $TMPC << EOF
1769ac62922eSbalrog#include <zlib.h>
1770ac62922eSbalrogint main(void) { zlibVersion(); return 0; }
1771ac62922eSbalrogEOF
177252166aa0SJuan Quintela    if compile_prog "" "-lz" ; then
1773ac62922eSbalrog        :
1774ac62922eSbalrog    else
177576ad07a4SPeter Maydell        error_exit "zlib check failed" \
177676ad07a4SPeter Maydell            "Make sure to have the zlib libs and headers installed."
1777ac62922eSbalrog    fi
17781ece9905SAlon Levyfi
1779eb0ecd5aSWill NewtonLIBS="$LIBS -lz"
1780ac62922eSbalrog
1781ac62922eSbalrog##########################################
1782607dacd0Sqiaonuohan# lzo check
1783607dacd0Sqiaonuohan
1784607dacd0Sqiaonuohanif test "$lzo" != "no" ; then
1785607dacd0Sqiaonuohan    cat > $TMPC << EOF
1786607dacd0Sqiaonuohan#include <lzo/lzo1x.h>
1787607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; }
1788607dacd0SqiaonuohanEOF
1789607dacd0Sqiaonuohan    if compile_prog "" "-llzo2" ; then
1790607dacd0Sqiaonuohan        libs_softmmu="$libs_softmmu -llzo2"
1791b25c9dffSStefan Weil        lzo="yes"
1792b25c9dffSStefan Weil    else
1793b25c9dffSStefan Weil        if test "$lzo" = "yes"; then
1794b25c9dffSStefan Weil            feature_not_found "liblzo2" "Install liblzo2 devel"
1795b25c9dffSStefan Weil        fi
1796b25c9dffSStefan Weil        lzo="no"
1797b25c9dffSStefan Weil    fi
1798607dacd0Sqiaonuohanfi
1799607dacd0Sqiaonuohan
1800607dacd0Sqiaonuohan##########################################
1801607dacd0Sqiaonuohan# snappy check
1802607dacd0Sqiaonuohan
1803607dacd0Sqiaonuohanif test "$snappy" != "no" ; then
1804607dacd0Sqiaonuohan    cat > $TMPC << EOF
1805607dacd0Sqiaonuohan#include <snappy-c.h>
1806607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; }
1807607dacd0SqiaonuohanEOF
1808607dacd0Sqiaonuohan    if compile_prog "" "-lsnappy" ; then
1809607dacd0Sqiaonuohan        libs_softmmu="$libs_softmmu -lsnappy"
1810b25c9dffSStefan Weil        snappy="yes"
1811b25c9dffSStefan Weil    else
1812b25c9dffSStefan Weil        if test "$snappy" = "yes"; then
1813b25c9dffSStefan Weil            feature_not_found "libsnappy" "Install libsnappy devel"
1814b25c9dffSStefan Weil        fi
1815b25c9dffSStefan Weil        snappy="no"
1816b25c9dffSStefan Weil    fi
1817607dacd0Sqiaonuohanfi
1818607dacd0Sqiaonuohan
1819607dacd0Sqiaonuohan##########################################
18206b383c08SPeter Wu# bzip2 check
18216b383c08SPeter Wu
18226b383c08SPeter Wuif test "$bzip2" != "no" ; then
18236b383c08SPeter Wu    cat > $TMPC << EOF
18246b383c08SPeter Wu#include <bzlib.h>
18256b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; }
18266b383c08SPeter WuEOF
18276b383c08SPeter Wu    if compile_prog "" "-lbz2" ; then
18286b383c08SPeter Wu        bzip2="yes"
18296b383c08SPeter Wu    else
18306b383c08SPeter Wu        if test "$bzip2" = "yes"; then
18316b383c08SPeter Wu            feature_not_found "libbzip2" "Install libbzip2 devel"
18326b383c08SPeter Wu        fi
18336b383c08SPeter Wu        bzip2="no"
18346b383c08SPeter Wu    fi
18356b383c08SPeter Wufi
18366b383c08SPeter Wu
18376b383c08SPeter Wu##########################################
1838f794573eSEduardo Otubo# libseccomp check
1839f794573eSEduardo Otubo
1840f794573eSEduardo Otuboif test "$seccomp" != "no" ; then
1841ae6e8ef1SPeter Maydell    if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1842ae6e8ef1SPeter Maydell        $pkg_config --atleast-version=2.1.1 libseccomp; then
1843b4451996SMichael Tokarev        libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1844372e47e9SAndreas Färber        QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1845f794573eSEduardo Otubo	seccomp="yes"
1846f794573eSEduardo Otubo    else
1847f794573eSEduardo Otubo	if test "$seccomp" = "yes"; then
1848896848f0SEduardo Otubo            feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1849896848f0SEduardo Otubo	fi
1850e84d5956SYann E. MORIN	seccomp="no"
1851f794573eSEduardo Otubo    fi
1852f794573eSEduardo Otubofi
1853f794573eSEduardo Otubo##########################################
1854e37630caSaliguori# xen probe
1855e37630caSaliguori
1856fc321b4bSJuan Quintelaif test "$xen" != "no" ; then
1857b2266beeSJuan Quintela  xen_libs="-lxenstore -lxenctrl -lxenguest"
1858d5b93ddfSAnthony PERARD
185950ced5b3SStefan Weil  # First we test whether Xen headers and libraries are available.
186050ced5b3SStefan Weil  # If no, we are done and there is no Xen support.
186150ced5b3SStefan Weil  # If yes, more tests are run to detect the Xen version.
186250ced5b3SStefan Weil
186350ced5b3SStefan Weil  # Xen (any)
186450ced5b3SStefan Weil  cat > $TMPC <<EOF
186550ced5b3SStefan Weil#include <xenctrl.h>
186650ced5b3SStefan Weilint main(void) {
186750ced5b3SStefan Weil  return 0;
186850ced5b3SStefan Weil}
186950ced5b3SStefan WeilEOF
187050ced5b3SStefan Weil  if ! compile_prog "" "$xen_libs" ; then
187150ced5b3SStefan Weil    # Xen not found
187250ced5b3SStefan Weil    if test "$xen" = "yes" ; then
187321684af0SStewart Smith      feature_not_found "xen" "Install xen devel"
187450ced5b3SStefan Weil    fi
187550ced5b3SStefan Weil    xen=no
187650ced5b3SStefan Weil
1877d5b93ddfSAnthony PERARD  # Xen unstable
187869deef08SPeter Maydell  elif
187969deef08SPeter Maydell      cat > $TMPC <<EOF &&
1880e37630caSaliguori#include <xenctrl.h>
1881e108a3c1SAnthony PERARD#include <xenstore.h>
1882d5b93ddfSAnthony PERARD#include <stdint.h>
1883d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h>
1884d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS)
1885d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined
1886d5b93ddfSAnthony PERARD#endif
1887d5b93ddfSAnthony PERARDint main(void) {
1888d5b93ddfSAnthony PERARD  xc_interface *xc;
1889d5b93ddfSAnthony PERARD  xs_daemon_open();
1890d5b93ddfSAnthony PERARD  xc = xc_interface_open(0, 0, 0);
1891d5b93ddfSAnthony PERARD  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1892d5b93ddfSAnthony PERARD  xc_gnttab_open(NULL, 0);
1893b87de24eSAnthony PERARD  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
18948688e065SStefano Stabellini  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
18953996e85cSPaul Durrant  xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
18963996e85cSPaul Durrant  return 0;
18973996e85cSPaul Durrant}
18983996e85cSPaul DurrantEOF
18993996e85cSPaul Durrant      compile_prog "" "$xen_libs"
19003996e85cSPaul Durrant    then
19013996e85cSPaul Durrant    xen_ctrl_version=450
19023996e85cSPaul Durrant    xen=yes
19033996e85cSPaul Durrant
19043996e85cSPaul Durrant  elif
19053996e85cSPaul Durrant      cat > $TMPC <<EOF &&
19063996e85cSPaul Durrant#include <xenctrl.h>
19073996e85cSPaul Durrant#include <xenstore.h>
19083996e85cSPaul Durrant#include <stdint.h>
19093996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h>
19103996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS)
19113996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined
19123996e85cSPaul Durrant#endif
19133996e85cSPaul Durrantint main(void) {
19143996e85cSPaul Durrant  xc_interface *xc;
19153996e85cSPaul Durrant  xs_daemon_open();
19163996e85cSPaul Durrant  xc = xc_interface_open(0, 0, 0);
19173996e85cSPaul Durrant  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
19183996e85cSPaul Durrant  xc_gnttab_open(NULL, 0);
19193996e85cSPaul Durrant  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
19203996e85cSPaul Durrant  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
19218688e065SStefano Stabellini  return 0;
19228688e065SStefano Stabellini}
19238688e065SStefano StabelliniEOF
19248688e065SStefano Stabellini      compile_prog "" "$xen_libs"
192569deef08SPeter Maydell    then
19268688e065SStefano Stabellini    xen_ctrl_version=420
19278688e065SStefano Stabellini    xen=yes
19288688e065SStefano Stabellini
192969deef08SPeter Maydell  elif
193069deef08SPeter Maydell      cat > $TMPC <<EOF &&
19318688e065SStefano Stabellini#include <xenctrl.h>
19328688e065SStefano Stabellini#include <xs.h>
19338688e065SStefano Stabellini#include <stdint.h>
19348688e065SStefano Stabellini#include <xen/hvm/hvm_info_table.h>
19358688e065SStefano Stabellini#if !defined(HVM_MAX_VCPUS)
19368688e065SStefano Stabellini# error HVM_MAX_VCPUS not defined
19378688e065SStefano Stabellini#endif
19388688e065SStefano Stabelliniint main(void) {
19398688e065SStefano Stabellini  xs_daemon_open();
19409b4c0b56SPeter Maydell  xc_interface_open(0, 0, 0);
19418688e065SStefano Stabellini  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
19428688e065SStefano Stabellini  xc_gnttab_open(NULL, 0);
19438688e065SStefano Stabellini  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1944d5b93ddfSAnthony PERARD  return 0;
1945d5b93ddfSAnthony PERARD}
1946e37630caSaliguoriEOF
194750ced5b3SStefan Weil      compile_prog "" "$xen_libs"
194869deef08SPeter Maydell    then
1949d5b93ddfSAnthony PERARD    xen_ctrl_version=410
1950fc321b4bSJuan Quintela    xen=yes
1951d5b93ddfSAnthony PERARD
1952d5b93ddfSAnthony PERARD  # Xen 4.0.0
195369deef08SPeter Maydell  elif
195469deef08SPeter Maydell      cat > $TMPC <<EOF &&
1955d5b93ddfSAnthony PERARD#include <xenctrl.h>
1956d5b93ddfSAnthony PERARD#include <xs.h>
1957d5b93ddfSAnthony PERARD#include <stdint.h>
1958d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h>
1959d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS)
1960d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined
1961d5b93ddfSAnthony PERARD#endif
1962d5b93ddfSAnthony PERARDint main(void) {
1963b87de24eSAnthony PERARD  struct xen_add_to_physmap xatp = {
1964b87de24eSAnthony PERARD    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1965b87de24eSAnthony PERARD  };
1966d5b93ddfSAnthony PERARD  xs_daemon_open();
1967d5b93ddfSAnthony PERARD  xc_interface_open();
1968d5b93ddfSAnthony PERARD  xc_gnttab_open();
1969d5b93ddfSAnthony PERARD  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1970b87de24eSAnthony PERARD  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1971d5b93ddfSAnthony PERARD  return 0;
1972d5b93ddfSAnthony PERARD}
1973d5b93ddfSAnthony PERARDEOF
1974d5b93ddfSAnthony PERARD      compile_prog "" "$xen_libs"
197569deef08SPeter Maydell    then
1976d5b93ddfSAnthony PERARD    xen_ctrl_version=400
1977d5b93ddfSAnthony PERARD    xen=yes
1978d5b93ddfSAnthony PERARD
1979b87de24eSAnthony PERARD  # Xen 3.4.0
198069deef08SPeter Maydell  elif
198169deef08SPeter Maydell      cat > $TMPC <<EOF &&
1982b87de24eSAnthony PERARD#include <xenctrl.h>
1983b87de24eSAnthony PERARD#include <xs.h>
1984b87de24eSAnthony PERARDint main(void) {
1985b87de24eSAnthony PERARD  struct xen_add_to_physmap xatp = {
1986b87de24eSAnthony PERARD    .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1987b87de24eSAnthony PERARD  };
1988b87de24eSAnthony PERARD  xs_daemon_open();
1989b87de24eSAnthony PERARD  xc_interface_open();
1990b87de24eSAnthony PERARD  xc_gnttab_open();
1991b87de24eSAnthony PERARD  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1992b87de24eSAnthony PERARD  xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1993b87de24eSAnthony PERARD  return 0;
1994b87de24eSAnthony PERARD}
1995b87de24eSAnthony PERARDEOF
1996b87de24eSAnthony PERARD      compile_prog "" "$xen_libs"
199769deef08SPeter Maydell    then
1998b87de24eSAnthony PERARD    xen_ctrl_version=340
1999b87de24eSAnthony PERARD    xen=yes
2000b87de24eSAnthony PERARD
2001b87de24eSAnthony PERARD  # Xen 3.3.0
200269deef08SPeter Maydell  elif
200369deef08SPeter Maydell      cat > $TMPC <<EOF &&
2004d5b93ddfSAnthony PERARD#include <xenctrl.h>
2005d5b93ddfSAnthony PERARD#include <xs.h>
2006d5b93ddfSAnthony PERARDint main(void) {
2007d5b93ddfSAnthony PERARD  xs_daemon_open();
2008d5b93ddfSAnthony PERARD  xc_interface_open();
2009d5b93ddfSAnthony PERARD  xc_gnttab_open();
2010d5b93ddfSAnthony PERARD  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2011d5b93ddfSAnthony PERARD  return 0;
2012d5b93ddfSAnthony PERARD}
2013d5b93ddfSAnthony PERARDEOF
2014d5b93ddfSAnthony PERARD      compile_prog "" "$xen_libs"
201569deef08SPeter Maydell    then
2016d5b93ddfSAnthony PERARD    xen_ctrl_version=330
2017d5b93ddfSAnthony PERARD    xen=yes
2018d5b93ddfSAnthony PERARD
201950ced5b3SStefan Weil  # Xen version unsupported
2020e37630caSaliguori  else
2021fc321b4bSJuan Quintela    if test "$xen" = "yes" ; then
202221684af0SStewart Smith      feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2023fc321b4bSJuan Quintela    fi
2024fc321b4bSJuan Quintela    xen=no
2025e37630caSaliguori  fi
2026d5b93ddfSAnthony PERARD
2027d5b93ddfSAnthony PERARD  if test "$xen" = yes; then
2028d5b93ddfSAnthony PERARD    libs_softmmu="$xen_libs $libs_softmmu"
2029d5b93ddfSAnthony PERARD  fi
2030e37630caSaliguorifi
2031e37630caSaliguori
2032eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then
2033eb6fda0fSAnthony PERARD  if test "$xen" = "yes" && test "$linux" = "yes" &&
2034eb6fda0fSAnthony PERARD    test "$xen_ctrl_version" -ge 340; then
2035eb6fda0fSAnthony PERARD    xen_pci_passthrough=yes
2036eb6fda0fSAnthony PERARD  else
2037eb6fda0fSAnthony PERARD    if test "$xen_pci_passthrough" = "yes"; then
2038eb6fda0fSAnthony PERARD      if test "$xen_ctrl_version" -lt 340; then
203976ad07a4SPeter Maydell        error_exit "User requested feature Xen PCI Passthrough" \
204076ad07a4SPeter Maydell            "This feature does not work with Xen 3.3"
2041eb6fda0fSAnthony PERARD      fi
204276ad07a4SPeter Maydell      error_exit "User requested feature Xen PCI Passthrough" \
204376ad07a4SPeter Maydell          " but this feature requires /sys from Linux"
2044eb6fda0fSAnthony PERARD    fi
2045eb6fda0fSAnthony PERARD    xen_pci_passthrough=no
2046eb6fda0fSAnthony PERARD  fi
2047eb6fda0fSAnthony PERARDfi
2048eb6fda0fSAnthony PERARD
2049e37630caSaliguori##########################################
205044dc0ca3SAlon Levy# libtool probe
205144dc0ca3SAlon Levy
20523f534581SBradif ! has $libtool; then
205344dc0ca3SAlon Levy    libtool=
205444dc0ca3SAlon Levyfi
205544dc0ca3SAlon Levy
20568e515b12SPeter Maydell# MacOSX ships with a libtool which isn't the GNU one; weed this
20578e515b12SPeter Maydell# out by checking whether libtool supports the --version switch
20588e515b12SPeter Maydellif test -n "$libtool"; then
20598e515b12SPeter Maydell  if ! "$libtool" --version >/dev/null 2>&1; then
20608e515b12SPeter Maydell    libtool=
20618e515b12SPeter Maydell  fi
20628e515b12SPeter Maydellfi
20638e515b12SPeter Maydell
206444dc0ca3SAlon Levy##########################################
2065dfffc653SJuan Quintela# Sparse probe
2066dfffc653SJuan Quintelaif test "$sparse" != "no" ; then
20670dba6195SLoïc Minier  if has cgcc; then
2068dfffc653SJuan Quintela    sparse=yes
2069dfffc653SJuan Quintela  else
2070dfffc653SJuan Quintela    if test "$sparse" = "yes" ; then
207121684af0SStewart Smith      feature_not_found "sparse" "Install sparse binary"
2072dfffc653SJuan Quintela    fi
2073dfffc653SJuan Quintela    sparse=no
2074dfffc653SJuan Quintela  fi
2075dfffc653SJuan Quintelafi
2076dfffc653SJuan Quintela
2077dfffc653SJuan Quintela##########################################
2078f676c67eSJeremy White# X11 probe
2079f676c67eSJeremy Whitex11_cflags=
2080f676c67eSJeremy Whitex11_libs=-lX11
2081f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then
2082f676c67eSJeremy White    x11_cflags=`$pkg_config --cflags x11`
2083f676c67eSJeremy White    x11_libs=`$pkg_config --libs x11`
2084f676c67eSJeremy Whitefi
2085f676c67eSJeremy White
2086f676c67eSJeremy White##########################################
2087a4ccabcfSAnthony Liguori# GTK probe
2088a4ccabcfSAnthony Liguori
20899e04c683SStefan Weilif test "$gtkabi" = ""; then
20909e04c683SStefan Weil    # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
20919e04c683SStefan Weil    # Use 3.0 as a fallback if that is available.
20929e04c683SStefan Weil    if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
20939e04c683SStefan Weil        gtkabi=2.0
20949e04c683SStefan Weil    elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
20959e04c683SStefan Weil        gtkabi=3.0
20969e04c683SStefan Weil    else
20979e04c683SStefan Weil        gtkabi=2.0
20989e04c683SStefan Weil    fi
20999e04c683SStefan Weilfi
21009e04c683SStefan Weil
2101a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then
2102528de90aSDaniel P. Berrange    gtkpackage="gtk+-$gtkabi"
21030a337ed0SGerd Hoffmann    gtkx11package="gtk+-x11-$gtkabi"
2104528de90aSDaniel P. Berrange    if test "$gtkabi" = "3.0" ; then
2105528de90aSDaniel P. Berrange      gtkversion="3.0.0"
2106bbbf9bfbSStefan Weil    else
2107bbbf9bfbSStefan Weil      gtkversion="2.18.0"
2108bbbf9bfbSStefan Weil    fi
2109bbbf9bfbSStefan Weil    if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2110bbbf9bfbSStefan Weil        gtk_cflags=`$pkg_config --cflags $gtkpackage`
2111bbbf9bfbSStefan Weil        gtk_libs=`$pkg_config --libs $gtkpackage`
21120a337ed0SGerd Hoffmann        if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2113f676c67eSJeremy White            gtk_cflags="$gtk_cflags $x11_cflags"
2114f676c67eSJeremy White            gtk_libs="$gtk_libs $x11_libs"
21150a337ed0SGerd Hoffmann        fi
2116bbbf9bfbSStefan Weil        libs_softmmu="$gtk_libs $libs_softmmu"
2117bbbf9bfbSStefan Weil        gtk="yes"
2118bbbf9bfbSStefan Weil    elif test "$gtk" = "yes"; then
21199e04c683SStefan Weil        feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2120bbbf9bfbSStefan Weil    else
2121bbbf9bfbSStefan Weil        gtk="no"
2122bbbf9bfbSStefan Weil    fi
2123bbbf9bfbSStefan Weilfi
2124bbbf9bfbSStefan Weil
2125ddbb0d09SDaniel P. Berrange
2126ddbb0d09SDaniel P. Berrange##########################################
2127ddbb0d09SDaniel P. Berrange# GNUTLS probe
2128ddbb0d09SDaniel P. Berrange
2129*62893b67SDaniel P. Berrangegnutls_gcrypt=no
2130ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then
2131ddbb0d09SDaniel P. Berrange    if $pkg_config --exists "gnutls"; then
2132ddbb0d09SDaniel P. Berrange        gnutls_cflags=`$pkg_config --cflags gnutls`
2133ddbb0d09SDaniel P. Berrange        gnutls_libs=`$pkg_config --libs gnutls`
2134ddbb0d09SDaniel P. Berrange        libs_softmmu="$gnutls_libs $libs_softmmu"
2135ddbb0d09SDaniel P. Berrange        libs_tools="$gnutls_libs $libs_tools"
2136ddbb0d09SDaniel P. Berrange	QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2137ddbb0d09SDaniel P. Berrange        gnutls="yes"
2138ddbb0d09SDaniel P. Berrange
2139ddbb0d09SDaniel P. Berrange	# gnutls_hash_init requires >= 2.9.10
2140ddbb0d09SDaniel P. Berrange	if $pkg_config --exists "gnutls >= 2.9.10"; then
2141ddbb0d09SDaniel P. Berrange            gnutls_hash="yes"
2142ddbb0d09SDaniel P. Berrange	else
2143ddbb0d09SDaniel P. Berrange	    gnutls_hash="no"
2144ddbb0d09SDaniel P. Berrange	fi
2145*62893b67SDaniel P. Berrange
2146*62893b67SDaniel P. Berrange	if $pkg_config --exists 'gnutls >= 3.0'; then
2147*62893b67SDaniel P. Berrange	    gnutls_gcrypt=no
2148*62893b67SDaniel P. Berrange	elif $pkg_config --exists 'gnutls >= 2.12'; then
2149*62893b67SDaniel P. Berrange	    case `$pkg_config --libs --static gnutls` in
2150*62893b67SDaniel P. Berrange		*gcrypt*) gnutls_gcrypt=yes     ;;
2151*62893b67SDaniel P. Berrange		*nettle*) gnutls_gcrypt=no      ;;
2152*62893b67SDaniel P. Berrange		*)        gnutls_gcrypt=yes     ;;
2153*62893b67SDaniel P. Berrange	    esac
2154*62893b67SDaniel P. Berrange	else
2155*62893b67SDaniel P. Berrange	    gnutls_gcrypt=yes
2156*62893b67SDaniel P. Berrange	fi
2157ddbb0d09SDaniel P. Berrange    elif test "$gnutls" = "yes"; then
2158ddbb0d09SDaniel P. Berrange	feature_not_found "gnutls" "Install gnutls devel"
2159ddbb0d09SDaniel P. Berrange    else
2160ddbb0d09SDaniel P. Berrange        gnutls="no"
2161ddbb0d09SDaniel P. Berrange        gnutls_hash="no"
2162ddbb0d09SDaniel P. Berrange    fi
2163ddbb0d09SDaniel P. Berrangeelse
2164ddbb0d09SDaniel P. Berrange    gnutls_hash="no"
2165ddbb0d09SDaniel P. Berrangefi
2166ddbb0d09SDaniel P. Berrange
2167*62893b67SDaniel P. Berrangeif test "$gnutls_gcrypt" != "no"; then
2168*62893b67SDaniel P. Berrange    if has "libgcrypt-config"; then
2169*62893b67SDaniel P. Berrange        gcrypt_cflags=`libgcrypt-config --cflags`
2170*62893b67SDaniel P. Berrange        gcrypt_libs=`libgcrypt-config --libs`
2171*62893b67SDaniel P. Berrange        libs_softmmu="$gcrypt_libs $libs_softmmu"
2172*62893b67SDaniel P. Berrange        libs_tools="$gcrypt_libs $libs_tools"
2173*62893b67SDaniel P. Berrange        QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2174*62893b67SDaniel P. Berrange    else
2175*62893b67SDaniel P. Berrange        feature_not_found "gcrypt" "Install gcrypt devel"
2176*62893b67SDaniel P. Berrange    fi
2177*62893b67SDaniel P. Berrangefi
2178*62893b67SDaniel P. Berrange
2179ddbb0d09SDaniel P. Berrange
2180bbbf9bfbSStefan Weil##########################################
2181bbbf9bfbSStefan Weil# VTE probe
2182bbbf9bfbSStefan Weil
2183bbbf9bfbSStefan Weilif test "$vte" != "no"; then
2184bbbf9bfbSStefan Weil    if test "$gtkabi" = "3.0"; then
2185528de90aSDaniel P. Berrange      vtepackage="vte-2.90"
2186528de90aSDaniel P. Berrange      vteversion="0.32.0"
2187528de90aSDaniel P. Berrange    else
2188528de90aSDaniel P. Berrange      vtepackage="vte"
2189528de90aSDaniel P. Berrange      vteversion="0.24.0"
2190528de90aSDaniel P. Berrange    fi
2191bbbf9bfbSStefan Weil    if $pkg_config --exists "$vtepackage >= $vteversion"; then
2192ca871ec8SStefan Weil        vte_cflags=`$pkg_config --cflags $vtepackage`
2193ca871ec8SStefan Weil        vte_libs=`$pkg_config --libs $vtepackage`
2194bbbf9bfbSStefan Weil        libs_softmmu="$vte_libs $libs_softmmu"
2195bbbf9bfbSStefan Weil        vte="yes"
2196bbbf9bfbSStefan Weil    elif test "$vte" = "yes"; then
21979e04c683SStefan Weil        if test "$gtkabi" = "3.0"; then
21989e04c683SStefan Weil            feature_not_found "vte" "Install libvte-2.90 devel"
21999e04c683SStefan Weil        else
22009e04c683SStefan Weil            feature_not_found "vte" "Install libvte devel"
22019e04c683SStefan Weil        fi
2202bbbf9bfbSStefan Weil    else
2203bbbf9bfbSStefan Weil        vte="no"
2204a4ccabcfSAnthony Liguori    fi
2205a4ccabcfSAnthony Liguorifi
2206a4ccabcfSAnthony Liguori
2207a4ccabcfSAnthony Liguori##########################################
220811d9f695Sbellard# SDL probe
220911d9f695Sbellard
22103ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config).  Try
22113ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
221247c03744SDave Airlie
221347c03744SDave Airlieif test $sdlabi = "2.0"; then
221447c03744SDave Airlie    sdl_config=$sdl2_config
221547c03744SDave Airlie    sdlname=sdl2
221647c03744SDave Airlie    sdlconfigname=sdl2_config
221747c03744SDave Airlieelse
221847c03744SDave Airlie    sdlname=sdl
221947c03744SDave Airlie    sdlconfigname=sdl_config
22203ec87ffeSPaolo Bonzinifi
22213ec87ffeSPaolo Bonzini
222247c03744SDave Airlieif test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
222347c03744SDave Airlie  sdl_config=$sdlconfigname
222447c03744SDave Airliefi
222547c03744SDave Airlie
222647c03744SDave Airlieif $pkg_config $sdlname --exists; then
222747c03744SDave Airlie  sdlconfig="$pkg_config $sdlname"
2228fec0e3e8SStefan Weil  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
22293ec87ffeSPaolo Bonzinielif has ${sdl_config}; then
22303ec87ffeSPaolo Bonzini  sdlconfig="$sdl_config"
22319316f803SPaolo Bonzini  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2232a0dfd8a4SLoïc Minierelse
2233a0dfd8a4SLoïc Minier  if test "$sdl" = "yes" ; then
223421684af0SStewart Smith    feature_not_found "sdl" "Install SDL devel"
2235a0dfd8a4SLoïc Minier  fi
2236a0dfd8a4SLoïc Minier  sdl=no
22379316f803SPaolo Bonzinifi
223829e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
22393ec87ffeSPaolo Bonzini  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
22403ec87ffeSPaolo Bonzinifi
224111d9f695Sbellard
22429316f803SPaolo Bonzinisdl_too_old=no
2243c4198157SJuan Quintelaif test "$sdl" != "no" ; then
224411d9f695Sbellard  cat > $TMPC << EOF
224511d9f695Sbellard#include <SDL.h>
224611d9f695Sbellard#undef main /* We don't want SDL to override our main() */
224711d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
224811d9f695SbellardEOF
22499316f803SPaolo Bonzini  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
225074f42e18STeLeMan  if test "$static" = "yes" ; then
225174f42e18STeLeMan    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
225274f42e18STeLeMan  else
22539316f803SPaolo Bonzini    sdl_libs=`$sdlconfig --libs 2> /dev/null`
225474f42e18STeLeMan  fi
225552166aa0SJuan Quintela  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
225611d9f695Sbellard    if test "$_sdlversion" -lt 121 ; then
225711d9f695Sbellard      sdl_too_old=yes
225811d9f695Sbellard    else
2259fd677642Sths      if test "$cocoa" = "no" ; then
226011d9f695Sbellard        sdl=yes
226111d9f695Sbellard      fi
2262fd677642Sths    fi
22637c1f25b4Sbellard
226467c274d3SPaolo Bonzini    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
22651ac88f28SJuan Quintela    if test "$sdl" = "yes" -a "$static" = "yes" ; then
226667c274d3SPaolo Bonzini      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2267f8aa6c7bSStefan Weil         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2268f8aa6c7bSStefan Weil         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
226911d9f695Sbellard      fi
227052166aa0SJuan Quintela      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
22711ac88f28SJuan Quintela	:
22721ac88f28SJuan Quintela      else
22731ac88f28SJuan Quintela        sdl=no
22747c1f25b4Sbellard      fi
22757c1f25b4Sbellard    fi # static link
2276c4198157SJuan Quintela  else # sdl not found
2277c4198157SJuan Quintela    if test "$sdl" = "yes" ; then
227821684af0SStewart Smith      feature_not_found "sdl" "Install SDL devel"
2279c4198157SJuan Quintela    fi
2280c4198157SJuan Quintela    sdl=no
22817c1f25b4Sbellard  fi # sdl compile test
2282fd677642Sthsfi
228311d9f695Sbellard
22845368a422Saliguoriif test "$sdl" = "yes" ; then
22855368a422Saliguori  cat > $TMPC <<EOF
22865368a422Saliguori#include <SDL.h>
22875368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11)
22885368a422Saliguori#include <X11/XKBlib.h>
22895368a422Saliguori#else
22905368a422Saliguori#error No x11 support
22915368a422Saliguori#endif
22925368a422Saliguoriint main(void) { return 0; }
22935368a422SaliguoriEOF
2294f676c67eSJeremy White  if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2295f676c67eSJeremy White    sdl_cflags="$sdl_cflags $x11_cflags"
2296f676c67eSJeremy White    sdl_libs="$sdl_libs $x11_libs"
22975368a422Saliguori  fi
22980705667eSJuan Quintela  libs_softmmu="$sdl_libs $libs_softmmu"
22995368a422Saliguorifi
23005368a422Saliguori
23018f28f3fbSths##########################################
23022da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries
23032da776dbSMichael R. Hinesif test "$rdma" != "no" ; then
23042da776dbSMichael R. Hines  cat > $TMPC <<EOF
23052da776dbSMichael R. Hines#include <rdma/rdma_cma.h>
23062da776dbSMichael R. Hinesint main(void) { return 0; }
23072da776dbSMichael R. HinesEOF
23082da776dbSMichael R. Hines  rdma_libs="-lrdmacm -libverbs"
23092da776dbSMichael R. Hines  if compile_prog "" "$rdma_libs" ; then
23102da776dbSMichael R. Hines    rdma="yes"
23112da776dbSMichael R. Hines    libs_softmmu="$libs_softmmu $rdma_libs"
23122da776dbSMichael R. Hines  else
23132da776dbSMichael R. Hines    if test "$rdma" = "yes" ; then
23142da776dbSMichael R. Hines        error_exit \
23152da776dbSMichael R. Hines            " OpenFabrics librdmacm/libibverbs not present." \
23162da776dbSMichael R. Hines            " Your options:" \
23172da776dbSMichael R. Hines            "  (1) Fast: Install infiniband packages from your distro." \
23182da776dbSMichael R. Hines            "  (2) Cleanest: Install libraries from www.openfabrics.org" \
23192da776dbSMichael R. Hines            "  (3) Also: Install softiwarp if you don't have RDMA hardware"
23202da776dbSMichael R. Hines    fi
23212da776dbSMichael R. Hines    rdma="no"
23222da776dbSMichael R. Hines  fi
23232da776dbSMichael R. Hinesfi
23242da776dbSMichael R. Hines
23252da776dbSMichael R. Hines##########################################
23267536ee4bSTim Hardeck# VNC TLS/WS detection
23277536ee4bSTim Hardeckif test "$vnc" = "yes" -a \( "$vnc_tls" != "no" -o "$vnc_ws" != "no" \) ; then
2328ae6b5e5aSaliguori  cat > $TMPC <<EOF
2329ae6b5e5aSaliguori#include <gnutls/gnutls.h>
2330ae6b5e5aSaliguoriint main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2331ae6b5e5aSaliguoriEOF
2332a8bd70adSPaolo Bonzini  vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2333a8bd70adSPaolo Bonzini  vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
233452166aa0SJuan Quintela  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
23357536ee4bSTim Hardeck    if test "$vnc_tls" != "no" ; then
23361be10ad2SJuan Quintela      vnc_tls=yes
23377536ee4bSTim Hardeck    fi
23387536ee4bSTim Hardeck    if test "$vnc_ws" != "no" ; then
23397536ee4bSTim Hardeck      vnc_ws=yes
23407536ee4bSTim Hardeck    fi
2341a5e32cc9SJuan Quintela    libs_softmmu="$vnc_tls_libs $libs_softmmu"
2342ca273d58SPaolo Bonzini    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2343ae6b5e5aSaliguori  else
23441be10ad2SJuan Quintela    if test "$vnc_tls" = "yes" ; then
234521684af0SStewart Smith      feature_not_found "vnc-tls" "Install gnutls devel"
23461be10ad2SJuan Quintela    fi
23477536ee4bSTim Hardeck    if test "$vnc_ws" = "yes" ; then
234821684af0SStewart Smith      feature_not_found "vnc-ws" "Install gnutls devel"
23497536ee4bSTim Hardeck    fi
23501be10ad2SJuan Quintela    vnc_tls=no
23517536ee4bSTim Hardeck    vnc_ws=no
23528d5d2d4cSths  fi
23538d5d2d4cSthsfi
23548d5d2d4cSths
23558d5d2d4cSths##########################################
235695c6bff3SBenoît Canet# Quorum probe (check for gnutls)
235795c6bff3SBenoît Canetif test "$quorum" != "no" ; then
235895c6bff3SBenoît Canetcat > $TMPC <<EOF
235995c6bff3SBenoît Canet#include <gnutls/gnutls.h>
236095c6bff3SBenoît Canet#include <gnutls/crypto.h>
236195c6bff3SBenoît Canetint main(void) {char data[4096], digest[32];
236295c6bff3SBenoît Canetgnutls_hash_fast(GNUTLS_DIG_SHA256, data, 4096, digest);
236395c6bff3SBenoît Canetreturn 0;
236495c6bff3SBenoît Canet}
236595c6bff3SBenoît CanetEOF
236695c6bff3SBenoît Canetquorum_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
236795c6bff3SBenoît Canetquorum_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
236895c6bff3SBenoît Canetif compile_prog "$quorum_tls_cflags" "$quorum_tls_libs" ; then
236995c6bff3SBenoît Canet  qcow_tls=yes
237095c6bff3SBenoît Canet  libs_softmmu="$quorum_tls_libs $libs_softmmu"
237195c6bff3SBenoît Canet  libs_tools="$quorum_tls_libs $libs_softmmu"
237295c6bff3SBenoît Canet  QEMU_CFLAGS="$QEMU_CFLAGS $quorum_tls_cflags"
2373b25c9dffSStefan Weil  quorum="yes"
237495c6bff3SBenoît Canetelse
2375b25c9dffSStefan Weil  if test "$quorum" = "yes"; then
2376b25c9dffSStefan Weil    feature_not_found "gnutls" "gnutls > 2.10.0 required to compile Quorum"
2377b25c9dffSStefan Weil  fi
2378b25c9dffSStefan Weil  quorum="no"
237995c6bff3SBenoît Canetfi
238095c6bff3SBenoît Canetfi
238195c6bff3SBenoît Canet
238295c6bff3SBenoît Canet##########################################
23832f9606b3Saliguori# VNC SASL detection
2384821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
23852f9606b3Saliguori  cat > $TMPC <<EOF
23862f9606b3Saliguori#include <sasl/sasl.h>
23872f9606b3Saliguori#include <stdio.h>
23882f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; }
23892f9606b3SaliguoriEOF
23902f9606b3Saliguori  # Assuming Cyrus-SASL installed in /usr prefix
23912f9606b3Saliguori  vnc_sasl_cflags=""
23922f9606b3Saliguori  vnc_sasl_libs="-lsasl2"
239352166aa0SJuan Quintela  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2394ea784e3bSJuan Quintela    vnc_sasl=yes
2395fa838301SJuan Quintela    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2396ca273d58SPaolo Bonzini    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
23972f9606b3Saliguori  else
2398ea784e3bSJuan Quintela    if test "$vnc_sasl" = "yes" ; then
239921684af0SStewart Smith      feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2400ea784e3bSJuan Quintela    fi
2401ea784e3bSJuan Quintela    vnc_sasl=no
24022f9606b3Saliguori  fi
24032f9606b3Saliguorifi
24042f9606b3Saliguori
24052f9606b3Saliguori##########################################
24062f6f5c7aSCorentin Chary# VNC JPEG detection
2407821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
24082f6f5c7aSCorentin Charycat > $TMPC <<EOF
24092f6f5c7aSCorentin Chary#include <stdio.h>
24102f6f5c7aSCorentin Chary#include <jpeglib.h>
24112f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
24122f6f5c7aSCorentin CharyEOF
24132f6f5c7aSCorentin Chary    vnc_jpeg_cflags=""
24142f6f5c7aSCorentin Chary    vnc_jpeg_libs="-ljpeg"
24152f6f5c7aSCorentin Chary  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
24162f6f5c7aSCorentin Chary    vnc_jpeg=yes
24172f6f5c7aSCorentin Chary    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2418ca273d58SPaolo Bonzini    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
24192f6f5c7aSCorentin Chary  else
24202f6f5c7aSCorentin Chary    if test "$vnc_jpeg" = "yes" ; then
242121684af0SStewart Smith      feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
24222f6f5c7aSCorentin Chary    fi
24232f6f5c7aSCorentin Chary    vnc_jpeg=no
24242f6f5c7aSCorentin Chary  fi
24252f6f5c7aSCorentin Charyfi
24262f6f5c7aSCorentin Chary
24272f6f5c7aSCorentin Chary##########################################
2428efe556adSCorentin Chary# VNC PNG detection
2429821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2430efe556adSCorentin Charycat > $TMPC <<EOF
2431efe556adSCorentin Chary//#include <stdio.h>
2432efe556adSCorentin Chary#include <png.h>
2433832ce9c2SScott Wood#include <stddef.h>
2434efe556adSCorentin Charyint main(void) {
2435efe556adSCorentin Chary    png_structp png_ptr;
2436efe556adSCorentin Chary    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
24377edc3fedSPeter Maydell    return png_ptr != 0;
2438efe556adSCorentin Chary}
2439efe556adSCorentin CharyEOF
244065d5d3f9SStefan Weil  if $pkg_config libpng --exists; then
2441ca871ec8SStefan Weil    vnc_png_cflags=`$pkg_config libpng --cflags`
2442ca871ec8SStefan Weil    vnc_png_libs=`$pkg_config libpng --libs`
24439af8025eSBrad  else
2444efe556adSCorentin Chary    vnc_png_cflags=""
2445efe556adSCorentin Chary    vnc_png_libs="-lpng"
24469af8025eSBrad  fi
2447efe556adSCorentin Chary  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2448efe556adSCorentin Chary    vnc_png=yes
2449efe556adSCorentin Chary    libs_softmmu="$vnc_png_libs $libs_softmmu"
24509af8025eSBrad    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2451efe556adSCorentin Chary  else
2452efe556adSCorentin Chary    if test "$vnc_png" = "yes" ; then
245321684af0SStewart Smith      feature_not_found "vnc-png" "Install libpng devel"
2454efe556adSCorentin Chary    fi
2455efe556adSCorentin Chary    vnc_png=no
2456efe556adSCorentin Chary  fi
2457efe556adSCorentin Charyfi
2458efe556adSCorentin Chary
2459efe556adSCorentin Chary##########################################
246076655d6dSaliguori# fnmatch() probe, used for ACL routines
246176655d6dSaliguorifnmatch="no"
246276655d6dSaliguoricat > $TMPC << EOF
246376655d6dSaliguori#include <fnmatch.h>
246476655d6dSaliguoriint main(void)
246576655d6dSaliguori{
246676655d6dSaliguori    fnmatch("foo", "foo", 0);
246776655d6dSaliguori    return 0;
246876655d6dSaliguori}
246976655d6dSaliguoriEOF
247052166aa0SJuan Quintelaif compile_prog "" "" ; then
247176655d6dSaliguori   fnmatch="yes"
247276655d6dSaliguorifi
247376655d6dSaliguori
247476655d6dSaliguori##########################################
2475ee682d27SStefan Weil# uuid_generate() probe, used for vdi block driver
24762d16c8e9SPeter Maydell# Note that on some systems (notably MacOSX) no extra library
24772d16c8e9SPeter Maydell# need be linked to get the uuid functions.
2478ee682d27SStefan Weilif test "$uuid" != "no" ; then
2479ee682d27SStefan Weil  uuid_libs="-luuid"
2480ee682d27SStefan Weil  cat > $TMPC << EOF
2481ee682d27SStefan Weil#include <uuid/uuid.h>
2482ee682d27SStefan Weilint main(void)
2483ee682d27SStefan Weil{
2484ee682d27SStefan Weil    uuid_t my_uuid;
2485ee682d27SStefan Weil    uuid_generate(my_uuid);
2486ee682d27SStefan Weil    return 0;
2487ee682d27SStefan Weil}
2488ee682d27SStefan WeilEOF
24892d16c8e9SPeter Maydell  if compile_prog "" "" ; then
24902d16c8e9SPeter Maydell    uuid="yes"
24912d16c8e9SPeter Maydell  elif compile_prog "" "$uuid_libs" ; then
2492ee682d27SStefan Weil    uuid="yes"
2493ee682d27SStefan Weil    libs_softmmu="$uuid_libs $libs_softmmu"
2494ee682d27SStefan Weil    libs_tools="$uuid_libs $libs_tools"
2495ee682d27SStefan Weil  else
2496ee682d27SStefan Weil    if test "$uuid" = "yes" ; then
249721684af0SStewart Smith      feature_not_found "uuid" "Install libuuid devel"
2498ee682d27SStefan Weil    fi
2499ee682d27SStefan Weil    uuid=no
2500ee682d27SStefan Weil  fi
2501ee682d27SStefan Weilfi
2502ee682d27SStefan Weil
25034f18b782SJeff Codyif test "$vhdx" = "yes" ; then
25044f18b782SJeff Cody    if test "$uuid" = "no" ; then
25054f18b782SJeff Cody        error_exit "uuid required for VHDX support"
25064f18b782SJeff Cody    fi
25074f18b782SJeff Codyelif test "$vhdx" != "no" ; then
25084f18b782SJeff Cody    if test "$uuid" = "yes" ; then
25094f18b782SJeff Cody        vhdx=yes
25104f18b782SJeff Cody    else
25114f18b782SJeff Cody        vhdx=no
25124f18b782SJeff Cody    fi
25134f18b782SJeff Codyfi
25144f18b782SJeff Cody
2515ee682d27SStefan Weil##########################################
2516dce512deSChristoph Hellwig# xfsctl() probe, used for raw-posix
2517dce512deSChristoph Hellwigif test "$xfs" != "no" ; then
2518dce512deSChristoph Hellwig  cat > $TMPC << EOF
2519ffc41d10SStefan Weil#include <stddef.h>  /* NULL */
2520dce512deSChristoph Hellwig#include <xfs/xfs.h>
2521dce512deSChristoph Hellwigint main(void)
2522dce512deSChristoph Hellwig{
2523dce512deSChristoph Hellwig    xfsctl(NULL, 0, 0, NULL);
2524dce512deSChristoph Hellwig    return 0;
2525dce512deSChristoph Hellwig}
2526dce512deSChristoph HellwigEOF
2527dce512deSChristoph Hellwig  if compile_prog "" "" ; then
2528dce512deSChristoph Hellwig    xfs="yes"
2529dce512deSChristoph Hellwig  else
2530dce512deSChristoph Hellwig    if test "$xfs" = "yes" ; then
253121684af0SStewart Smith      feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2532dce512deSChristoph Hellwig    fi
2533dce512deSChristoph Hellwig    xfs=no
2534dce512deSChristoph Hellwig  fi
2535dce512deSChristoph Hellwigfi
2536dce512deSChristoph Hellwig
2537dce512deSChristoph Hellwig##########################################
25388a16d273Sths# vde libraries probe
2539dfb278bdSJuan Quintelaif test "$vde" != "no" ; then
25404baae0acSJuan Quintela  vde_libs="-lvdeplug"
25418a16d273Sths  cat > $TMPC << EOF
25428a16d273Sths#include <libvdeplug.h>
25434a7f0e06Spbrookint main(void)
25444a7f0e06Spbrook{
25454a7f0e06Spbrook    struct vde_open_args a = {0, 0, 0};
2546fea08e08SPeter Maydell    char s[] = "";
2547fea08e08SPeter Maydell    vde_open(s, s, &a);
25484a7f0e06Spbrook    return 0;
25494a7f0e06Spbrook}
25508a16d273SthsEOF
255152166aa0SJuan Quintela  if compile_prog "" "$vde_libs" ; then
25524baae0acSJuan Quintela    vde=yes
25538e02e54cSJuan Quintela    libs_softmmu="$vde_libs $libs_softmmu"
25548e02e54cSJuan Quintela    libs_tools="$vde_libs $libs_tools"
2555dfb278bdSJuan Quintela  else
2556dfb278bdSJuan Quintela    if test "$vde" = "yes" ; then
255721684af0SStewart Smith      feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2558dfb278bdSJuan Quintela    fi
2559dfb278bdSJuan Quintela    vde=no
25608a16d273Sths  fi
25618a16d273Sthsfi
25628a16d273Sths
25638a16d273Sths##########################################
25640a985b37SVincenzo Maffione# netmap support probe
25650a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version
25660a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
25670a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up
25680a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will
25690a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds.
257058952137SVincenzo Maffioneif test "$netmap" != "no" ; then
257158952137SVincenzo Maffione  cat > $TMPC << EOF
257258952137SVincenzo Maffione#include <inttypes.h>
257358952137SVincenzo Maffione#include <net/if.h>
257458952137SVincenzo Maffione#include <net/netmap.h>
257558952137SVincenzo Maffione#include <net/netmap_user.h>
25760a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15)
25770a985b37SVincenzo Maffione#error
25780a985b37SVincenzo Maffione#endif
257958952137SVincenzo Maffioneint main(void) { return 0; }
258058952137SVincenzo MaffioneEOF
258158952137SVincenzo Maffione  if compile_prog "" "" ; then
258258952137SVincenzo Maffione    netmap=yes
258358952137SVincenzo Maffione  else
258458952137SVincenzo Maffione    if test "$netmap" = "yes" ; then
258558952137SVincenzo Maffione      feature_not_found "netmap"
258658952137SVincenzo Maffione    fi
258758952137SVincenzo Maffione    netmap=no
258858952137SVincenzo Maffione  fi
258958952137SVincenzo Maffionefi
259058952137SVincenzo Maffione
259158952137SVincenzo Maffione##########################################
259247e98658SCorey Bryant# libcap-ng library probe
259347e98658SCorey Bryantif test "$cap_ng" != "no" ; then
259447e98658SCorey Bryant  cap_libs="-lcap-ng"
259547e98658SCorey Bryant  cat > $TMPC << EOF
259647e98658SCorey Bryant#include <cap-ng.h>
259747e98658SCorey Bryantint main(void)
259847e98658SCorey Bryant{
259947e98658SCorey Bryant    capng_capability_to_name(CAPNG_EFFECTIVE);
260047e98658SCorey Bryant    return 0;
260147e98658SCorey Bryant}
260247e98658SCorey BryantEOF
260347e98658SCorey Bryant  if compile_prog "" "$cap_libs" ; then
260447e98658SCorey Bryant    cap_ng=yes
260547e98658SCorey Bryant    libs_tools="$cap_libs $libs_tools"
260647e98658SCorey Bryant  else
260747e98658SCorey Bryant    if test "$cap_ng" = "yes" ; then
260821684af0SStewart Smith      feature_not_found "cap_ng" "Install libcap-ng devel"
260947e98658SCorey Bryant    fi
261047e98658SCorey Bryant    cap_ng=no
261147e98658SCorey Bryant  fi
261247e98658SCorey Bryantfi
261347e98658SCorey Bryant
261447e98658SCorey Bryant##########################################
2615c2de5c91Smalc# Sound support libraries probe
26168f28f3fbSths
2617c2de5c91Smalcaudio_drv_probe()
2618c2de5c91Smalc{
2619c2de5c91Smalc    drv=$1
2620c2de5c91Smalc    hdr=$2
2621c2de5c91Smalc    lib=$3
2622c2de5c91Smalc    exp=$4
2623c2de5c91Smalc    cfl=$5
26248f28f3fbSths        cat > $TMPC << EOF
2625c2de5c91Smalc#include <$hdr>
2626c2de5c91Smalcint main(void) { $exp }
26278f28f3fbSthsEOF
262852166aa0SJuan Quintela    if compile_prog "$cfl" "$lib" ; then
26298f28f3fbSths        :
26308f28f3fbSths    else
263176ad07a4SPeter Maydell        error_exit "$drv check failed" \
263276ad07a4SPeter Maydell            "Make sure to have the $drv libs and headers installed."
26338f28f3fbSths    fi
2634c2de5c91Smalc}
2635c2de5c91Smalc
26362fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2637c2de5c91Smalcfor drv in $audio_drv_list; do
2638c2de5c91Smalc    case $drv in
2639c2de5c91Smalc    alsa)
2640c2de5c91Smalc    audio_drv_probe $drv alsa/asoundlib.h -lasound \
2641e35bcb0cSStefan Weil        "return snd_pcm_close((snd_pcm_t *)0);"
2642a4bf6780SJuan Quintela    libs_softmmu="-lasound $libs_softmmu"
2643c2de5c91Smalc    ;;
2644c2de5c91Smalc
2645b8e59f18Smalc    pa)
2646a394aed2SMarc-André Lureau    audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2647a394aed2SMarc-André Lureau        "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2648a394aed2SMarc-André Lureau    libs_softmmu="-lpulse $libs_softmmu"
264967f86e8eSJuan Quintela    audio_pt_int="yes"
2650b8e59f18Smalc    ;;
2651b8e59f18Smalc
2652997e690aSJuan Quintela    coreaudio)
2653997e690aSJuan Quintela      libs_softmmu="-framework CoreAudio $libs_softmmu"
2654997e690aSJuan Quintela    ;;
2655997e690aSJuan Quintela
2656a4bf6780SJuan Quintela    dsound)
2657a4bf6780SJuan Quintela      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2658d5631638Smalc      audio_win_int="yes"
2659a4bf6780SJuan Quintela    ;;
2660a4bf6780SJuan Quintela
2661a4bf6780SJuan Quintela    oss)
2662a4bf6780SJuan Quintela      libs_softmmu="$oss_lib $libs_softmmu"
2663a4bf6780SJuan Quintela    ;;
2664a4bf6780SJuan Quintela
2665a4bf6780SJuan Quintela    sdl|wav)
26662f6a1ab0Sblueswir1    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
26672f6a1ab0Sblueswir1    ;;
26682f6a1ab0Sblueswir1
2669e4c63a6aSmalc    *)
26701c9b2a52Smalc    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
267176ad07a4SPeter Maydell        error_exit "Unknown driver '$drv' selected" \
267276ad07a4SPeter Maydell            "Possible drivers are: $audio_possible_drivers"
2673e4c63a6aSmalc    }
2674e4c63a6aSmalc    ;;
2675c2de5c91Smalc    esac
2676c2de5c91Smalcdone
26778f28f3fbSths
26784d3b6f6eSbalrog##########################################
26792e4d9fb1Saurel32# BrlAPI probe
26802e4d9fb1Saurel32
26814ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then
2682eb82284fSJuan Quintela  brlapi_libs="-lbrlapi"
26832e4d9fb1Saurel32  cat > $TMPC << EOF
26842e4d9fb1Saurel32#include <brlapi.h>
2685832ce9c2SScott Wood#include <stddef.h>
26862e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
26872e4d9fb1Saurel32EOF
268852166aa0SJuan Quintela  if compile_prog "" "$brlapi_libs" ; then
26892e4d9fb1Saurel32    brlapi=yes
2690264606b3SJuan Quintela    libs_softmmu="$brlapi_libs $libs_softmmu"
26914ffcedb6SJuan Quintela  else
26924ffcedb6SJuan Quintela    if test "$brlapi" = "yes" ; then
269321684af0SStewart Smith      feature_not_found "brlapi" "Install brlapi devel"
26944ffcedb6SJuan Quintela    fi
26954ffcedb6SJuan Quintela    brlapi=no
2696eb82284fSJuan Quintela  fi
2697eb82284fSJuan Quintelafi
26982e4d9fb1Saurel32
26992e4d9fb1Saurel32##########################################
27004d3b6f6eSbalrog# curses probe
2701a3605bf6SMichael Tokarevif test "$curses" != "no" ; then
2702e095e2f3SStefan Weil  if test "$mingw32" = "yes" ; then
2703e095e2f3SStefan Weil    curses_list="-lpdcurses"
2704e095e2f3SStefan Weil  else
2705cfeda5f4SEd Maste    curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2706e095e2f3SStefan Weil  fi
2707c584a6d0SJuan Quintela  curses_found=no
27084d3b6f6eSbalrog  cat > $TMPC << EOF
27094d3b6f6eSbalrog#include <curses.h>
2710ef9a2524SStefan Weilint main(void) {
2711ef9a2524SStefan Weil  const char *s = curses_version();
2712ef9a2524SStefan Weil  resize_term(0, 0);
2713ef9a2524SStefan Weil  return s != 0;
2714ef9a2524SStefan Weil}
27154d3b6f6eSbalrogEOF
2716ecbe251fSVadim Evard  IFS=:
27174f78ef9aSJuan Quintela  for curses_lib in $curses_list; do
2718ecbe251fSVadim Evard    unset IFS
27194f78ef9aSJuan Quintela    if compile_prog "" "$curses_lib" ; then
2720c584a6d0SJuan Quintela      curses_found=yes
27214f78ef9aSJuan Quintela      libs_softmmu="$curses_lib $libs_softmmu"
27224f78ef9aSJuan Quintela      break
27234d3b6f6eSbalrog    fi
27244f78ef9aSJuan Quintela  done
2725ecbe251fSVadim Evard  unset IFS
2726c584a6d0SJuan Quintela  if test "$curses_found" = "yes" ; then
2727c584a6d0SJuan Quintela    curses=yes
2728c584a6d0SJuan Quintela  else
2729c584a6d0SJuan Quintela    if test "$curses" = "yes" ; then
273021684af0SStewart Smith      feature_not_found "curses" "Install ncurses devel"
2731c584a6d0SJuan Quintela    fi
2732c584a6d0SJuan Quintela    curses=no
2733c584a6d0SJuan Quintela  fi
27344f78ef9aSJuan Quintelafi
27354d3b6f6eSbalrog
2736414f0dabSblueswir1##########################################
2737769ce76dSAlexander Graf# curl probe
2738a3605bf6SMichael Tokarevif test "$curl" != "no" ; then
273965d5d3f9SStefan Weil  if $pkg_config libcurl --exists; then
2740a8bd70adSPaolo Bonzini    curlconfig="$pkg_config libcurl"
27414e2b0658SPaolo Bonzini  else
27424e2b0658SPaolo Bonzini    curlconfig=curl-config
27434e2b0658SPaolo Bonzini  fi
2744769ce76dSAlexander Graf  cat > $TMPC << EOF
2745769ce76dSAlexander Graf#include <curl/curl.h>
27460b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2747769ce76dSAlexander GrafEOF
27484e2b0658SPaolo Bonzini  curl_cflags=`$curlconfig --cflags 2>/dev/null`
27494e2b0658SPaolo Bonzini  curl_libs=`$curlconfig --libs 2>/dev/null`
2750b1d5a277SJuan Quintela  if compile_prog "$curl_cflags" "$curl_libs" ; then
2751769ce76dSAlexander Graf    curl=yes
2752788c8196SJuan Quintela  else
2753788c8196SJuan Quintela    if test "$curl" = "yes" ; then
275421684af0SStewart Smith      feature_not_found "curl" "Install libcurl devel"
2755788c8196SJuan Quintela    fi
2756788c8196SJuan Quintela    curl=no
2757769ce76dSAlexander Graf  fi
2758769ce76dSAlexander Graffi # test "$curl"
2759769ce76dSAlexander Graf
2760769ce76dSAlexander Graf##########################################
2761fb599c9aSbalrog# bluez support probe
2762a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then
2763e820e3f4Sbalrog  cat > $TMPC << EOF
2764e820e3f4Sbalrog#include <bluetooth/bluetooth.h>
2765e820e3f4Sbalrogint main(void) { return bt_error(0); }
2766e820e3f4SbalrogEOF
2767a8bd70adSPaolo Bonzini  bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2768a8bd70adSPaolo Bonzini  bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
276952166aa0SJuan Quintela  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2770a20a6f46SJuan Quintela    bluez=yes
2771e482d56aSJuan Quintela    libs_softmmu="$bluez_libs $libs_softmmu"
2772e820e3f4Sbalrog  else
2773a20a6f46SJuan Quintela    if test "$bluez" = "yes" ; then
277421684af0SStewart Smith      feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2775a20a6f46SJuan Quintela    fi
2776e820e3f4Sbalrog    bluez="no"
2777e820e3f4Sbalrog  fi
2778fb599c9aSbalrogfi
2779fb599c9aSbalrog
2780fb599c9aSbalrog##########################################
2781e18df141SAnthony Liguori# glib support probe
2782a52d28afSPaolo Bonzini
2783f40685c6SJohn Snowglib_req_ver=2.22
2784aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0
2785aa0d1f44SPaolo Bonziniif test "$modules" = yes; then
2786aa0d1f44SPaolo Bonzini    glib_modules="$glib_modules gmodule-2.0"
2787aa0d1f44SPaolo Bonzinifi
2788e26110cfSFam Zheng
2789aa0d1f44SPaolo Bonzinifor i in $glib_modules; do
2790e26110cfSFam Zheng    if $pkg_config --atleast-version=$glib_req_ver $i; then
2791e26110cfSFam Zheng        glib_cflags=`$pkg_config --cflags $i`
2792e26110cfSFam Zheng        glib_libs=`$pkg_config --libs $i`
2793ba1183daSFam Zheng        CFLAGS="$glib_cflags $CFLAGS"
279414015304SAnthony Liguori        LIBS="$glib_libs $LIBS"
2795957f1f99SMichael Roth        libs_qga="$glib_libs $libs_qga"
2796e18df141SAnthony Liguori    else
2797e26110cfSFam Zheng        error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2798e26110cfSFam Zheng    fi
2799e26110cfSFam Zhengdone
2800e26110cfSFam Zheng
28019d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests.
28029d41401bSMichael S. Tsirkinglib_subprocess=yes
28039d41401bSMichael S. Tsirkinif ! $pkg_config --atleast-version=2.38 glib-2.0; then
28049d41401bSMichael S. Tsirkin    glib_subprocess=no
28059d41401bSMichael S. Tsirkinfi
28069d41401bSMichael S. Tsirkin
2807bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2808bbbf2e04SJohn Snowcat > $TMPC << EOF
2809bbbf2e04SJohn Snow#include <glib.h>
2810bbbf2e04SJohn Snowint main(void) { return 0; }
2811bbbf2e04SJohn SnowEOF
2812bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2813bbbf2e04SJohn Snow    if cc_has_warning_flag "-Wno-unknown-attributes"; then
2814bbbf2e04SJohn Snow        glib_cflags="-Wno-unknown-attributes $glib_cflags"
2815bbbf2e04SJohn Snow        CFLAGS="-Wno-unknown-attributes $CFLAGS"
2816bbbf2e04SJohn Snow    fi
2817bbbf2e04SJohn Snowfi
2818bbbf2e04SJohn Snow
2819e26110cfSFam Zheng##########################################
2820e26110cfSFam Zheng# SHA command probe for modules
2821e26110cfSFam Zhengif test "$modules" = yes; then
2822e26110cfSFam Zheng    shacmd_probe="sha1sum sha1 shasum"
2823e26110cfSFam Zheng    for c in $shacmd_probe; do
28248ccefb91SFam Zheng        if has $c; then
2825e26110cfSFam Zheng            shacmd="$c"
2826e26110cfSFam Zheng            break
2827e26110cfSFam Zheng        fi
2828e26110cfSFam Zheng    done
2829e26110cfSFam Zheng    if test "$shacmd" = ""; then
2830e26110cfSFam Zheng        error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2831e26110cfSFam Zheng    fi
2832e18df141SAnthony Liguorifi
2833e18df141SAnthony Liguori
2834e18df141SAnthony Liguori##########################################
2835e2134eb9SGerd Hoffmann# pixman support probe
2836e2134eb9SGerd Hoffmann
2837e2134eb9SGerd Hoffmannif test "$pixman" = ""; then
283874880fe2SRobert Schiele  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
283974880fe2SRobert Schiele    pixman="none"
2840236f282cSHu Tao  elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
2841e2134eb9SGerd Hoffmann    pixman="system"
2842e2134eb9SGerd Hoffmann  else
2843e2134eb9SGerd Hoffmann    pixman="internal"
2844e2134eb9SGerd Hoffmann  fi
2845e2134eb9SGerd Hoffmannfi
284674880fe2SRobert Schieleif test "$pixman" = "none"; then
284774880fe2SRobert Schiele  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
284876ad07a4SPeter Maydell    error_exit "pixman disabled but system emulation or tools build" \
284976ad07a4SPeter Maydell        "enabled.  You can turn off pixman only if you also" \
285076ad07a4SPeter Maydell        "disable all system emulation targets and the tools" \
285176ad07a4SPeter Maydell        "build with '--disable-tools --disable-system'."
285274880fe2SRobert Schiele  fi
285374880fe2SRobert Schiele  pixman_cflags=
285474880fe2SRobert Schiele  pixman_libs=
285574880fe2SRobert Schieleelif test "$pixman" = "system"; then
2856236f282cSHu Tao  # pixman version has been checked above
2857ca871ec8SStefan Weil  pixman_cflags=`$pkg_config --cflags pixman-1`
2858ca871ec8SStefan Weil  pixman_libs=`$pkg_config --libs pixman-1`
2859e2134eb9SGerd Hoffmannelse
2860e2134eb9SGerd Hoffmann  if test ! -d ${source_path}/pixman/pixman; then
2861236f282cSHu Tao    error_exit "pixman >= 0.21.8 not present. Your options:" \
286276ad07a4SPeter Maydell        "  (1) Preferred: Install the pixman devel package (any recent" \
286376ad07a4SPeter Maydell        "      distro should have packages as Xorg needs pixman too)." \
286476ad07a4SPeter Maydell        "  (2) Fetch the pixman submodule, using:" \
286576ad07a4SPeter Maydell        "      git submodule update --init pixman"
2866e2134eb9SGerd Hoffmann  fi
28675ca9388aSGerd Hoffmann  mkdir -p pixman/pixman
28685ca9388aSGerd Hoffmann  pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
28695ca9388aSGerd Hoffmann  pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2870e2134eb9SGerd Hoffmannfi
2871e2134eb9SGerd Hoffmann
2872e2134eb9SGerd Hoffmann##########################################
287317bff52bSM. Mohan Kumar# libcap probe
287417bff52bSM. Mohan Kumar
287517bff52bSM. Mohan Kumarif test "$cap" != "no" ; then
287617bff52bSM. Mohan Kumar  cat > $TMPC <<EOF
287717bff52bSM. Mohan Kumar#include <stdio.h>
287817bff52bSM. Mohan Kumar#include <sys/capability.h>
2879cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
288017bff52bSM. Mohan KumarEOF
288117bff52bSM. Mohan Kumar  if compile_prog "" "-lcap" ; then
288217bff52bSM. Mohan Kumar    cap=yes
288317bff52bSM. Mohan Kumar  else
288417bff52bSM. Mohan Kumar    cap=no
288517bff52bSM. Mohan Kumar  fi
288617bff52bSM. Mohan Kumarfi
288717bff52bSM. Mohan Kumar
288817bff52bSM. Mohan Kumar##########################################
2889e5d355d1Saliguori# pthread probe
28904b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
28913c529d93Saliguori
2892e5d355d1Saliguoripthread=no
2893414f0dabSblueswir1cat > $TMPC << EOF
28943c529d93Saliguori#include <pthread.h>
28957a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; }
28967a42bbe4SStefan Weilint main(void) {
28977a42bbe4SStefan Weil  pthread_t thread;
28987a42bbe4SStefan Weil  pthread_create(&thread, 0, f, 0);
28997a42bbe4SStefan Weil  return 0;
29007a42bbe4SStefan Weil}
2901414f0dabSblueswir1EOF
2902bd00d539SAndreas Färberif compile_prog "" "" ; then
2903bd00d539SAndreas Färber  pthread=yes
2904bd00d539SAndreas Färberelse
2905de65fe0fSSebastian Herbszt  for pthread_lib in $PTHREADLIBS_LIST; do
290652166aa0SJuan Quintela    if compile_prog "" "$pthread_lib" ; then
2907e5d355d1Saliguori      pthread=yes
2908e3c56761SPeter Portante      found=no
2909e3c56761SPeter Portante      for lib_entry in $LIBS; do
2910e3c56761SPeter Portante        if test "$lib_entry" = "$pthread_lib"; then
2911e3c56761SPeter Portante          found=yes
2912e3c56761SPeter Portante          break
2913e3c56761SPeter Portante        fi
2914e3c56761SPeter Portante      done
2915e3c56761SPeter Portante      if test "$found" = "no"; then
29165572b539SJuan Quintela        LIBS="$pthread_lib $LIBS"
2917e3c56761SPeter Portante      fi
2918de65fe0fSSebastian Herbszt      break
2919414f0dabSblueswir1    fi
2920de65fe0fSSebastian Herbszt  done
2921bd00d539SAndreas Färberfi
2922414f0dabSblueswir1
29234617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then
292476ad07a4SPeter Maydell  error_exit "pthread check failed" \
292576ad07a4SPeter Maydell      "Make sure to have the pthread libs and headers installed."
2926e5d355d1Saliguorifi
2927e5d355d1Saliguori
29285c312079SDr. David Alan Gilbert# check for pthread_setname_np
29295c312079SDr. David Alan Gilbertpthread_setname_np=no
29305c312079SDr. David Alan Gilbertcat > $TMPC << EOF
29315c312079SDr. David Alan Gilbert#include <pthread.h>
29325c312079SDr. David Alan Gilbert
29335c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; }
29345c312079SDr. David Alan Gilbertint main(void)
29355c312079SDr. David Alan Gilbert{
29365c312079SDr. David Alan Gilbert    pthread_t thread;
29375c312079SDr. David Alan Gilbert    pthread_create(&thread, 0, f, 0);
29385c312079SDr. David Alan Gilbert    pthread_setname_np(thread, "QEMU");
29395c312079SDr. David Alan Gilbert    return 0;
29405c312079SDr. David Alan Gilbert}
29415c312079SDr. David Alan GilbertEOF
29425c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then
29435c312079SDr. David Alan Gilbert  pthread_setname_np=yes
29445c312079SDr. David Alan Gilbertfi
29455c312079SDr. David Alan Gilbert
2946bf9298b9Saliguori##########################################
2947f27aaf4bSChristian Brunner# rbd probe
2948f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then
2949f27aaf4bSChristian Brunner  cat > $TMPC <<EOF
2950f27aaf4bSChristian Brunner#include <stdio.h>
2951ad32e9c0SJosh Durgin#include <rbd/librbd.h>
2952f27aaf4bSChristian Brunnerint main(void) {
2953ad32e9c0SJosh Durgin    rados_t cluster;
2954ad32e9c0SJosh Durgin    rados_create(&cluster, NULL);
2955f27aaf4bSChristian Brunner    return 0;
2956f27aaf4bSChristian Brunner}
2957f27aaf4bSChristian BrunnerEOF
2958ad32e9c0SJosh Durgin  rbd_libs="-lrbd -lrados"
2959f27aaf4bSChristian Brunner  if compile_prog "" "$rbd_libs" ; then
2960f27aaf4bSChristian Brunner    rbd=yes
2961f27aaf4bSChristian Brunner  else
2962f27aaf4bSChristian Brunner    if test "$rbd" = "yes" ; then
296321684af0SStewart Smith      feature_not_found "rados block device" "Install librbd/ceph devel"
2964f27aaf4bSChristian Brunner    fi
2965f27aaf4bSChristian Brunner    rbd=no
2966f27aaf4bSChristian Brunner  fi
2967f27aaf4bSChristian Brunnerfi
2968f27aaf4bSChristian Brunner
2969f27aaf4bSChristian Brunner##########################################
29700a12ec87SRichard W.M. Jones# libssh2 probe
29714fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8
29720a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then
297365d5d3f9SStefan Weil  if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
29740a12ec87SRichard W.M. Jones    libssh2_cflags=`$pkg_config libssh2 --cflags`
29750a12ec87SRichard W.M. Jones    libssh2_libs=`$pkg_config libssh2 --libs`
29760a12ec87SRichard W.M. Jones    libssh2=yes
29770a12ec87SRichard W.M. Jones  else
29780a12ec87SRichard W.M. Jones    if test "$libssh2" = "yes" ; then
29794fc16838SRichard W.M. Jones      error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
29800a12ec87SRichard W.M. Jones    fi
29810a12ec87SRichard W.M. Jones    libssh2=no
29820a12ec87SRichard W.M. Jones  fi
29830a12ec87SRichard W.M. Jonesfi
29840a12ec87SRichard W.M. Jones
29850a12ec87SRichard W.M. Jones##########################################
29869a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe
29879a2d462eSRichard W.M. Jones
29889a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then
29899a2d462eSRichard W.M. Jones  cat > $TMPC <<EOF
29909a2d462eSRichard W.M. Jones#include <stdio.h>
29919a2d462eSRichard W.M. Jones#include <libssh2.h>
29929a2d462eSRichard W.M. Jones#include <libssh2_sftp.h>
29939a2d462eSRichard W.M. Jonesint main(void) {
29949a2d462eSRichard W.M. Jones    LIBSSH2_SESSION *session;
29959a2d462eSRichard W.M. Jones    LIBSSH2_SFTP *sftp;
29969a2d462eSRichard W.M. Jones    LIBSSH2_SFTP_HANDLE *sftp_handle;
29979a2d462eSRichard W.M. Jones    session = libssh2_session_init ();
29989a2d462eSRichard W.M. Jones    sftp = libssh2_sftp_init (session);
29999a2d462eSRichard W.M. Jones    sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
30009a2d462eSRichard W.M. Jones    libssh2_sftp_fsync (sftp_handle);
30019a2d462eSRichard W.M. Jones    return 0;
30029a2d462eSRichard W.M. Jones}
30039a2d462eSRichard W.M. JonesEOF
30049a2d462eSRichard W.M. Jones  # libssh2_cflags/libssh2_libs defined in previous test.
30059a2d462eSRichard W.M. Jones  if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
30069a2d462eSRichard W.M. Jones    QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
30079a2d462eSRichard W.M. Jones  fi
30089a2d462eSRichard W.M. Jonesfi
30099a2d462eSRichard W.M. Jones
30109a2d462eSRichard W.M. Jones##########################################
30115c6c3a6cSChristoph Hellwig# linux-aio probe
30125c6c3a6cSChristoph Hellwig
30135c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then
30145c6c3a6cSChristoph Hellwig  cat > $TMPC <<EOF
30155c6c3a6cSChristoph Hellwig#include <libaio.h>
30165c6c3a6cSChristoph Hellwig#include <sys/eventfd.h>
3017832ce9c2SScott Wood#include <stddef.h>
30185c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
30195c6c3a6cSChristoph HellwigEOF
30205c6c3a6cSChristoph Hellwig  if compile_prog "" "-laio" ; then
30215c6c3a6cSChristoph Hellwig    linux_aio=yes
30225c6c3a6cSChristoph Hellwig  else
30235c6c3a6cSChristoph Hellwig    if test "$linux_aio" = "yes" ; then
302421684af0SStewart Smith      feature_not_found "linux AIO" "Install libaio devel"
30255c6c3a6cSChristoph Hellwig    fi
30263cfcae3cSLuiz Capitulino    linux_aio=no
30275c6c3a6cSChristoph Hellwig  fi
30285c6c3a6cSChristoph Hellwigfi
30295c6c3a6cSChristoph Hellwig
30305c6c3a6cSChristoph Hellwig##########################################
30313b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux
30323b8acc11SPaolo Bonzini
30333b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
30343b8acc11SPaolo Bonzini  tpm_passthrough=$tpm
30353b8acc11SPaolo Bonzinielse
30363b8acc11SPaolo Bonzini  tpm_passthrough=no
30373b8acc11SPaolo Bonzinifi
30383b8acc11SPaolo Bonzini
30393b8acc11SPaolo Bonzini##########################################
3040758e8e38SVenkateswararao Jujjuri (JV)# attr probe
3041758e8e38SVenkateswararao Jujjuri (JV)
3042758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then
3043758e8e38SVenkateswararao Jujjuri (JV)  cat > $TMPC <<EOF
3044758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h>
3045758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h>
3046f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR
3047f2338fb4SPavel Borzenkov#include <attr/xattr.h>
3048f2338fb4SPavel Borzenkov#else
30494f26f2b6SAvi Kivity#include <sys/xattr.h>
3050f2338fb4SPavel Borzenkov#endif
3051758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3052758e8e38SVenkateswararao Jujjuri (JV)EOF
30534f26f2b6SAvi Kivity  if compile_prog "" "" ; then
30544f26f2b6SAvi Kivity    attr=yes
30554f26f2b6SAvi Kivity  # Older distros have <attr/xattr.h>, and need -lattr:
3056f2338fb4SPavel Borzenkov  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3057758e8e38SVenkateswararao Jujjuri (JV)    attr=yes
3058758e8e38SVenkateswararao Jujjuri (JV)    LIBS="-lattr $LIBS"
30594f26f2b6SAvi Kivity    libattr=yes
3060758e8e38SVenkateswararao Jujjuri (JV)  else
3061758e8e38SVenkateswararao Jujjuri (JV)    if test "$attr" = "yes" ; then
306221684af0SStewart Smith      feature_not_found "ATTR" "Install libc6 or libattr devel"
3063758e8e38SVenkateswararao Jujjuri (JV)    fi
3064758e8e38SVenkateswararao Jujjuri (JV)    attr=no
3065758e8e38SVenkateswararao Jujjuri (JV)  fi
3066758e8e38SVenkateswararao Jujjuri (JV)fi
3067758e8e38SVenkateswararao Jujjuri (JV)
3068758e8e38SVenkateswararao Jujjuri (JV)##########################################
3069bf9298b9Saliguori# iovec probe
3070bf9298b9Saliguoricat > $TMPC <<EOF
3071db34f0b3Sblueswir1#include <sys/types.h>
3072bf9298b9Saliguori#include <sys/uio.h>
3073db34f0b3Sblueswir1#include <unistd.h>
3074f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); }
3075bf9298b9SaliguoriEOF
3076bf9298b9Saliguoriiovec=no
307752166aa0SJuan Quintelaif compile_prog "" "" ; then
3078bf9298b9Saliguori  iovec=yes
3079bf9298b9Saliguorifi
3080bf9298b9Saliguori
3081f652e6afSaurel32##########################################
3082ceb42de8Saliguori# preadv probe
3083ceb42de8Saliguoricat > $TMPC <<EOF
3084ceb42de8Saliguori#include <sys/types.h>
3085ceb42de8Saliguori#include <sys/uio.h>
3086ceb42de8Saliguori#include <unistd.h>
3087c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); }
3088ceb42de8SaliguoriEOF
3089ceb42de8Saliguoripreadv=no
309052166aa0SJuan Quintelaif compile_prog "" "" ; then
3091ceb42de8Saliguori  preadv=yes
3092ceb42de8Saliguorifi
3093ceb42de8Saliguori
3094ceb42de8Saliguori##########################################
3095f652e6afSaurel32# fdt probe
3096e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures,
3097e169e1e1SPeter Maydell# so insist on it if we're building those system emulators.
3098e169e1e1SPeter Maydellfdt_required=no
3099e169e1e1SPeter Maydellfor target in $target_list; do
3100e169e1e1SPeter Maydell  case $target in
31016a49fa95SAlexander Graf    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3102e169e1e1SPeter Maydell      fdt_required=yes
3103e169e1e1SPeter Maydell    ;;
3104e169e1e1SPeter Maydell  esac
3105e169e1e1SPeter Maydelldone
3106e169e1e1SPeter Maydell
3107e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then
3108e169e1e1SPeter Maydell  if test "$fdt" = "no"; then
3109e169e1e1SPeter Maydell    error_exit "fdt disabled but some requested targets require it." \
3110e169e1e1SPeter Maydell      "You can turn off fdt only if you also disable all the system emulation" \
3111e169e1e1SPeter Maydell      "targets which need it (by specifying a cut down --target-list)."
3112e169e1e1SPeter Maydell  fi
3113e169e1e1SPeter Maydell  fdt=yes
3114e169e1e1SPeter Maydellfi
3115e169e1e1SPeter Maydell
31162df87df7SJuan Quintelaif test "$fdt" != "no" ; then
3117b41af4baSJuan Quintela  fdt_libs="-lfdt"
311896ce6545SPeter Crosthwaite  # explicitly check for libfdt_env.h as it is missing in some stable installs
311931ce0adbSThomas Huth  # and test for required functions to make sure we are on a version >= 1.4.0
3120f652e6afSaurel32  cat > $TMPC << EOF
312131ce0adbSThomas Huth#include <libfdt.h>
312296ce6545SPeter Crosthwaite#include <libfdt_env.h>
312331ce0adbSThomas Huthint main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3124f652e6afSaurel32EOF
312552166aa0SJuan Quintela  if compile_prog "" "$fdt_libs" ; then
3126a540f158SPeter Crosthwaite    # system DTC is good - use it
3127f652e6afSaurel32    fdt=yes
3128a540f158SPeter Crosthwaite  elif test -d ${source_path}/dtc/libfdt ; then
3129a540f158SPeter Crosthwaite    # have submodule DTC - use it
3130a540f158SPeter Crosthwaite    fdt=yes
3131a540f158SPeter Crosthwaite    dtc_internal="yes"
3132a540f158SPeter Crosthwaite    mkdir -p dtc
3133cab00a5aSMichael S. Tsirkin    if [ "$pwd_is_source_path" != "y" ] ; then
3134a540f158SPeter Crosthwaite       symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3135a540f158SPeter Crosthwaite       symlink "$source_path/dtc/scripts" "dtc/scripts"
31362df87df7SJuan Quintela    fi
3137a540f158SPeter Crosthwaite    fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3138a540f158SPeter Crosthwaite    fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3139a540f158SPeter Crosthwaite  elif test "$fdt" = "yes" ; then
3140a540f158SPeter Crosthwaite    # have neither and want - prompt for system/submodule install
314131ce0adbSThomas Huth    error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
31423f281822SStewart Smith        "  (1) Preferred: Install the DTC (libfdt) devel package" \
3143a540f158SPeter Crosthwaite        "  (2) Fetch the DTC submodule, using:" \
3144a540f158SPeter Crosthwaite        "      git submodule update --init dtc"
3145a540f158SPeter Crosthwaite  else
3146a540f158SPeter Crosthwaite    # don't have and don't want
3147de3a354aSMichael Walle    fdt_libs=
31482df87df7SJuan Quintela    fdt=no
3149f652e6afSaurel32  fi
3150f652e6afSaurel32fi
3151f652e6afSaurel32
3152a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs"
3153a540f158SPeter Crosthwaite
315420ff075bSMichael Walle##########################################
3155da076ffeSGerd Hoffmann# opengl probe (for sdl2, milkymist-tmu2)
3156b1546f32SGerd Hoffmann
3157b1546f32SGerd Hoffmann# GLX probe, used by milkymist-tmu2
3158b1546f32SGerd Hoffmann# this is temporary, code will be switched to egl mid-term.
3159b1546f32SGerd Hoffmanncat > $TMPC << EOF
3160b1546f32SGerd Hoffmann#include <X11/Xlib.h>
3161b1546f32SGerd Hoffmann#include <GL/gl.h>
3162b1546f32SGerd Hoffmann#include <GL/glx.h>
3163b1546f32SGerd Hoffmannint main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3164b1546f32SGerd HoffmannEOF
3165b1546f32SGerd Hoffmannif compile_prog "" "-lGL -lX11" ; then
3166b1546f32SGerd Hoffmann  have_glx=yes
3167b1546f32SGerd Hoffmannelse
3168b1546f32SGerd Hoffmann  have_glx=no
3169b1546f32SGerd Hoffmannfi
3170b1546f32SGerd Hoffmann
3171da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then
31727ced9e9fSGerd Hoffmann  opengl_pkgs="gl glesv2 epoxy egl"
3173b1546f32SGerd Hoffmann  if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
3174f676c67eSJeremy White    opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3175f676c67eSJeremy White    opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3176da076ffeSGerd Hoffmann    opengl=yes
317720ff075bSMichael Walle  else
3178da076ffeSGerd Hoffmann    if test "$opengl" = "yes" ; then
3179dcf30025SGerd Hoffmann      feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
318020ff075bSMichael Walle    fi
3181f676c67eSJeremy White    opengl_cflags=""
3182da076ffeSGerd Hoffmann    opengl_libs=""
3183da076ffeSGerd Hoffmann    opengl=no
318420ff075bSMichael Walle  fi
318520ff075bSMichael Wallefi
318620ff075bSMichael Walle
3187c9a12e75SChrysostomos Nanakos
3188c9a12e75SChrysostomos Nanakos##########################################
3189c9a12e75SChrysostomos Nanakos# archipelago probe
3190c9a12e75SChrysostomos Nanakosif test "$archipelago" != "no" ; then
3191c9a12e75SChrysostomos Nanakos    cat > $TMPC <<EOF
3192c9a12e75SChrysostomos Nanakos#include <stdio.h>
3193c9a12e75SChrysostomos Nanakos#include <xseg/xseg.h>
3194c9a12e75SChrysostomos Nanakos#include <xseg/protocol.h>
3195c9a12e75SChrysostomos Nanakosint main(void) {
3196c9a12e75SChrysostomos Nanakos    xseg_initialize();
3197c9a12e75SChrysostomos Nanakos    return 0;
3198c9a12e75SChrysostomos Nanakos}
3199c9a12e75SChrysostomos NanakosEOF
3200c9a12e75SChrysostomos Nanakos    archipelago_libs=-lxseg
3201c9a12e75SChrysostomos Nanakos    if compile_prog "" "$archipelago_libs"; then
3202c9a12e75SChrysostomos Nanakos        archipelago="yes"
3203c9a12e75SChrysostomos Nanakos        libs_tools="$archipelago_libs $libs_tools"
3204c9a12e75SChrysostomos Nanakos        libs_softmmu="$archipelago_libs $libs_softmmu"
32056a460ed1SStefan Hajnoczi
32066a460ed1SStefan Hajnoczi	echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
32076a460ed1SStefan Hajnoczi	echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
32086a460ed1SStefan Hajnoczi	echo "license and therefore prevent redistribution."
32096a460ed1SStefan Hajnoczi	echo
32106a460ed1SStefan Hajnoczi	echo "To disable Archipelago, use --disable-archipelago"
3211c9a12e75SChrysostomos Nanakos    else
3212c9a12e75SChrysostomos Nanakos      if test "$archipelago" = "yes" ; then
3213c9a12e75SChrysostomos Nanakos        feature_not_found "Archipelago backend support" "Install libxseg devel"
3214c9a12e75SChrysostomos Nanakos      fi
3215c9a12e75SChrysostomos Nanakos      archipelago="no"
3216c9a12e75SChrysostomos Nanakos    fi
3217c9a12e75SChrysostomos Nanakosfi
3218c9a12e75SChrysostomos Nanakos
3219c9a12e75SChrysostomos Nanakos
3220eb100396SBharata B Rao##########################################
3221eb100396SBharata B Rao# glusterfs probe
3222eb100396SBharata B Raoif test "$glusterfs" != "no" ; then
322365d5d3f9SStefan Weil  if $pkg_config --atleast-version=3 glusterfs-api; then
3224e01bee08SBharata B Rao    glusterfs="yes"
3225ca871ec8SStefan Weil    glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3226ca871ec8SStefan Weil    glusterfs_libs=`$pkg_config --libs glusterfs-api`
322765d5d3f9SStefan Weil    if $pkg_config --atleast-version=5 glusterfs-api; then
32280c14fb47SBharata B Rao      glusterfs_discard="yes"
32290c14fb47SBharata B Rao    fi
32307c815372SBharata B Rao    if $pkg_config --atleast-version=6 glusterfs-api; then
32317c815372SBharata B Rao      glusterfs_zerofill="yes"
32327c815372SBharata B Rao    fi
3233eb100396SBharata B Rao  else
3234eb100396SBharata B Rao    if test "$glusterfs" = "yes" ; then
32358efc9363SHu Tao      feature_not_found "GlusterFS backend support" \
32368efc9363SHu Tao          "Install glusterfs-api devel >= 3"
3237eb100396SBharata B Rao    fi
3238e01bee08SBharata B Rao    glusterfs="no"
3239eb100396SBharata B Rao  fi
3240eb100396SBharata B Raofi
3241eb100396SBharata B Rao
324239386ac7Saurel32# Check for inotify functions when we are building linux-user
32433b3f24adSaurel32# emulator.  This is done because older glibc versions don't
32443b3f24adSaurel32# have syscall stubs for these implemented.  In that case we
32453b3f24adSaurel32# don't provide them even if kernel supports them.
32463b3f24adSaurel32#
32473b3f24adSaurel32inotify=no
32483b3f24adSaurel32cat > $TMPC << EOF
32493b3f24adSaurel32#include <sys/inotify.h>
32503b3f24adSaurel32
32513b3f24adSaurel32int
32523b3f24adSaurel32main(void)
32533b3f24adSaurel32{
32543b3f24adSaurel32	/* try to start inotify */
32558690e420Saurel32	return inotify_init();
32563b3f24adSaurel32}
32573b3f24adSaurel32EOF
325852166aa0SJuan Quintelaif compile_prog "" "" ; then
32593b3f24adSaurel32  inotify=yes
32603b3f24adSaurel32fi
32613b3f24adSaurel32
3262c05c7a73SRiku Voipioinotify1=no
3263c05c7a73SRiku Voipiocat > $TMPC << EOF
3264c05c7a73SRiku Voipio#include <sys/inotify.h>
3265c05c7a73SRiku Voipio
3266c05c7a73SRiku Voipioint
3267c05c7a73SRiku Voipiomain(void)
3268c05c7a73SRiku Voipio{
3269c05c7a73SRiku Voipio    /* try to start inotify */
3270c05c7a73SRiku Voipio    return inotify_init1(0);
3271c05c7a73SRiku Voipio}
3272c05c7a73SRiku VoipioEOF
3273c05c7a73SRiku Voipioif compile_prog "" "" ; then
3274c05c7a73SRiku Voipio  inotify1=yes
3275c05c7a73SRiku Voipiofi
3276c05c7a73SRiku Voipio
3277ebc996f3SRiku Voipio# check if utimensat and futimens are supported
3278ebc996f3SRiku Voipioutimens=no
3279ebc996f3SRiku Voipiocat > $TMPC << EOF
3280ebc996f3SRiku Voipio#define _ATFILE_SOURCE
3281ebc996f3SRiku Voipio#include <stddef.h>
3282ebc996f3SRiku Voipio#include <fcntl.h>
32833014ee00SPeter Maydell#include <sys/stat.h>
3284ebc996f3SRiku Voipio
3285ebc996f3SRiku Voipioint main(void)
3286ebc996f3SRiku Voipio{
3287ebc996f3SRiku Voipio    utimensat(AT_FDCWD, "foo", NULL, 0);
3288ebc996f3SRiku Voipio    futimens(0, NULL);
3289ebc996f3SRiku Voipio    return 0;
3290ebc996f3SRiku Voipio}
3291ebc996f3SRiku VoipioEOF
329252166aa0SJuan Quintelaif compile_prog "" "" ; then
3293ebc996f3SRiku Voipio  utimens=yes
3294ebc996f3SRiku Voipiofi
3295ebc996f3SRiku Voipio
3296099d6b0fSRiku Voipio# check if pipe2 is there
3297099d6b0fSRiku Voipiopipe2=no
3298099d6b0fSRiku Voipiocat > $TMPC << EOF
3299099d6b0fSRiku Voipio#include <unistd.h>
3300099d6b0fSRiku Voipio#include <fcntl.h>
3301099d6b0fSRiku Voipio
3302099d6b0fSRiku Voipioint main(void)
3303099d6b0fSRiku Voipio{
3304099d6b0fSRiku Voipio    int pipefd[2];
33059bca8162SBruce Rogers    return pipe2(pipefd, O_CLOEXEC);
3306099d6b0fSRiku Voipio}
3307099d6b0fSRiku VoipioEOF
330852166aa0SJuan Quintelaif compile_prog "" "" ; then
3309099d6b0fSRiku Voipio  pipe2=yes
3310099d6b0fSRiku Voipiofi
3311099d6b0fSRiku Voipio
331240ff6d7eSKevin Wolf# check if accept4 is there
331340ff6d7eSKevin Wolfaccept4=no
331440ff6d7eSKevin Wolfcat > $TMPC << EOF
331540ff6d7eSKevin Wolf#include <sys/socket.h>
331640ff6d7eSKevin Wolf#include <stddef.h>
331740ff6d7eSKevin Wolf
331840ff6d7eSKevin Wolfint main(void)
331940ff6d7eSKevin Wolf{
332040ff6d7eSKevin Wolf    accept4(0, NULL, NULL, SOCK_CLOEXEC);
332140ff6d7eSKevin Wolf    return 0;
332240ff6d7eSKevin Wolf}
332340ff6d7eSKevin WolfEOF
332440ff6d7eSKevin Wolfif compile_prog "" "" ; then
332540ff6d7eSKevin Wolf  accept4=yes
332640ff6d7eSKevin Wolffi
332740ff6d7eSKevin Wolf
33283ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time.
33293ce34dfbSvibisreenivasansplice=no
33303ce34dfbSvibisreenivasancat > $TMPC << EOF
33313ce34dfbSvibisreenivasan#include <unistd.h>
33323ce34dfbSvibisreenivasan#include <fcntl.h>
33333ce34dfbSvibisreenivasan#include <limits.h>
33343ce34dfbSvibisreenivasan
33353ce34dfbSvibisreenivasanint main(void)
33363ce34dfbSvibisreenivasan{
333766ea0f22SStefan Weil    int len, fd = 0;
33383ce34dfbSvibisreenivasan    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
33393ce34dfbSvibisreenivasan    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
33403ce34dfbSvibisreenivasan    return 0;
33413ce34dfbSvibisreenivasan}
33423ce34dfbSvibisreenivasanEOF
334352166aa0SJuan Quintelaif compile_prog "" "" ; then
33443ce34dfbSvibisreenivasan  splice=yes
33453ce34dfbSvibisreenivasanfi
33463ce34dfbSvibisreenivasan
3347dcc38d1cSMarcelo Tosatti##########################################
3348a99d57bbSWanlong Gao# libnuma probe
3349a99d57bbSWanlong Gao
3350a99d57bbSWanlong Gaoif test "$numa" != "no" ; then
3351a99d57bbSWanlong Gao  cat > $TMPC << EOF
3352a99d57bbSWanlong Gao#include <numa.h>
3353a99d57bbSWanlong Gaoint main(void) { return numa_available(); }
3354a99d57bbSWanlong GaoEOF
3355a99d57bbSWanlong Gao
3356a99d57bbSWanlong Gao  if compile_prog "" "-lnuma" ; then
3357a99d57bbSWanlong Gao    numa=yes
3358a99d57bbSWanlong Gao    libs_softmmu="-lnuma $libs_softmmu"
3359a99d57bbSWanlong Gao  else
3360a99d57bbSWanlong Gao    if test "$numa" = "yes" ; then
3361a99d57bbSWanlong Gao      feature_not_found "numa" "install numactl devel"
3362a99d57bbSWanlong Gao    fi
3363a99d57bbSWanlong Gao    numa=no
3364a99d57bbSWanlong Gao  fi
3365a99d57bbSWanlong Gaofi
3366a99d57bbSWanlong Gao
3367a99d57bbSWanlong Gao##########################################
33682847b469SFam Zheng# tcmalloc probe
33692847b469SFam Zheng
33702847b469SFam Zhengif test "$tcmalloc" = "yes" ; then
33712847b469SFam Zheng  cat > $TMPC << EOF
33722847b469SFam Zheng#include <stdlib.h>
33732847b469SFam Zhengint main(void) { malloc(1); return 0; }
33742847b469SFam ZhengEOF
33752847b469SFam Zheng
33762847b469SFam Zheng  if compile_prog "" "-ltcmalloc" ; then
33772847b469SFam Zheng    LIBS="-ltcmalloc $LIBS"
33782847b469SFam Zheng  else
33792847b469SFam Zheng    feature_not_found "tcmalloc" "install gperftools devel"
33802847b469SFam Zheng  fi
33812847b469SFam Zhengfi
33822847b469SFam Zheng
33832847b469SFam Zheng##########################################
3384dcc38d1cSMarcelo Tosatti# signalfd probe
3385dcc38d1cSMarcelo Tosattisignalfd="no"
3386dcc38d1cSMarcelo Tosatticat > $TMPC << EOF
3387dcc38d1cSMarcelo Tosatti#include <unistd.h>
3388dcc38d1cSMarcelo Tosatti#include <sys/syscall.h>
3389dcc38d1cSMarcelo Tosatti#include <signal.h>
3390dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3391dcc38d1cSMarcelo TosattiEOF
3392dcc38d1cSMarcelo Tosatti
3393dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then
3394dcc38d1cSMarcelo Tosatti  signalfd=yes
3395dcc38d1cSMarcelo Tosattifi
3396dcc38d1cSMarcelo Tosatti
3397c2882b96SRiku Voipio# check if eventfd is supported
3398c2882b96SRiku Voipioeventfd=no
3399c2882b96SRiku Voipiocat > $TMPC << EOF
3400c2882b96SRiku Voipio#include <sys/eventfd.h>
3401c2882b96SRiku Voipio
3402c2882b96SRiku Voipioint main(void)
3403c2882b96SRiku Voipio{
340455cc7f3eSStefan Weil    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3405c2882b96SRiku Voipio}
3406c2882b96SRiku VoipioEOF
3407c2882b96SRiku Voipioif compile_prog "" "" ; then
3408c2882b96SRiku Voipio  eventfd=yes
3409c2882b96SRiku Voipiofi
3410c2882b96SRiku Voipio
3411d0927938SUlrich Hecht# check for fallocate
3412d0927938SUlrich Hechtfallocate=no
3413d0927938SUlrich Hechtcat > $TMPC << EOF
3414d0927938SUlrich Hecht#include <fcntl.h>
3415d0927938SUlrich Hecht
3416d0927938SUlrich Hechtint main(void)
3417d0927938SUlrich Hecht{
3418d0927938SUlrich Hecht    fallocate(0, 0, 0, 0);
3419d0927938SUlrich Hecht    return 0;
3420d0927938SUlrich Hecht}
3421d0927938SUlrich HechtEOF
34228fb03151SPeter Maydellif compile_prog "" "" ; then
3423d0927938SUlrich Hecht  fallocate=yes
3424d0927938SUlrich Hechtfi
3425d0927938SUlrich Hecht
34263d4fa43eSKusanagi Kouichi# check for fallocate hole punching
34273d4fa43eSKusanagi Kouichifallocate_punch_hole=no
34283d4fa43eSKusanagi Kouichicat > $TMPC << EOF
34293d4fa43eSKusanagi Kouichi#include <fcntl.h>
34303d4fa43eSKusanagi Kouichi#include <linux/falloc.h>
34313d4fa43eSKusanagi Kouichi
34323d4fa43eSKusanagi Kouichiint main(void)
34333d4fa43eSKusanagi Kouichi{
34343d4fa43eSKusanagi Kouichi    fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
34353d4fa43eSKusanagi Kouichi    return 0;
34363d4fa43eSKusanagi Kouichi}
34373d4fa43eSKusanagi KouichiEOF
34383d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then
34393d4fa43eSKusanagi Kouichi  fallocate_punch_hole=yes
34403d4fa43eSKusanagi Kouichifi
34413d4fa43eSKusanagi Kouichi
3442b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file
3443b953f075SDenis V. Lunevfallocate_zero_range=no
3444b953f075SDenis V. Lunevcat > $TMPC << EOF
3445b953f075SDenis V. Lunev#include <fcntl.h>
3446b953f075SDenis V. Lunev#include <linux/falloc.h>
3447b953f075SDenis V. Lunev
3448b953f075SDenis V. Lunevint main(void)
3449b953f075SDenis V. Lunev{
3450b953f075SDenis V. Lunev    fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3451b953f075SDenis V. Lunev    return 0;
3452b953f075SDenis V. Lunev}
3453b953f075SDenis V. LunevEOF
3454b953f075SDenis V. Lunevif compile_prog "" "" ; then
3455b953f075SDenis V. Lunev  fallocate_zero_range=yes
3456b953f075SDenis V. Lunevfi
3457b953f075SDenis V. Lunev
3458ed911435SKevin Wolf# check for posix_fallocate
3459ed911435SKevin Wolfposix_fallocate=no
3460ed911435SKevin Wolfcat > $TMPC << EOF
3461ed911435SKevin Wolf#include <fcntl.h>
3462ed911435SKevin Wolf
3463ed911435SKevin Wolfint main(void)
3464ed911435SKevin Wolf{
3465ed911435SKevin Wolf    posix_fallocate(0, 0, 0);
3466ed911435SKevin Wolf    return 0;
3467ed911435SKevin Wolf}
3468ed911435SKevin WolfEOF
3469ed911435SKevin Wolfif compile_prog "" "" ; then
3470ed911435SKevin Wolf    posix_fallocate=yes
3471ed911435SKevin Wolffi
3472ed911435SKevin Wolf
3473c727f47dSPeter Maydell# check for sync_file_range
3474c727f47dSPeter Maydellsync_file_range=no
3475c727f47dSPeter Maydellcat > $TMPC << EOF
3476c727f47dSPeter Maydell#include <fcntl.h>
3477c727f47dSPeter Maydell
3478c727f47dSPeter Maydellint main(void)
3479c727f47dSPeter Maydell{
3480c727f47dSPeter Maydell    sync_file_range(0, 0, 0, 0);
3481c727f47dSPeter Maydell    return 0;
3482c727f47dSPeter Maydell}
3483c727f47dSPeter MaydellEOF
34848fb03151SPeter Maydellif compile_prog "" "" ; then
3485c727f47dSPeter Maydell  sync_file_range=yes
3486c727f47dSPeter Maydellfi
3487c727f47dSPeter Maydell
3488dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP
3489dace20dcSPeter Maydellfiemap=no
3490dace20dcSPeter Maydellcat > $TMPC << EOF
3491dace20dcSPeter Maydell#include <sys/ioctl.h>
3492dace20dcSPeter Maydell#include <linux/fs.h>
3493dace20dcSPeter Maydell#include <linux/fiemap.h>
3494dace20dcSPeter Maydell
3495dace20dcSPeter Maydellint main(void)
3496dace20dcSPeter Maydell{
3497dace20dcSPeter Maydell    ioctl(0, FS_IOC_FIEMAP, 0);
3498dace20dcSPeter Maydell    return 0;
3499dace20dcSPeter Maydell}
3500dace20dcSPeter MaydellEOF
35018fb03151SPeter Maydellif compile_prog "" "" ; then
3502dace20dcSPeter Maydell  fiemap=yes
3503dace20dcSPeter Maydellfi
3504dace20dcSPeter Maydell
3505d0927938SUlrich Hecht# check for dup3
3506d0927938SUlrich Hechtdup3=no
3507d0927938SUlrich Hechtcat > $TMPC << EOF
3508d0927938SUlrich Hecht#include <unistd.h>
3509d0927938SUlrich Hecht
3510d0927938SUlrich Hechtint main(void)
3511d0927938SUlrich Hecht{
3512d0927938SUlrich Hecht    dup3(0, 0, 0);
3513d0927938SUlrich Hecht    return 0;
3514d0927938SUlrich Hecht}
3515d0927938SUlrich HechtEOF
351678f5d726SJan Kiszkaif compile_prog "" "" ; then
3517d0927938SUlrich Hecht  dup3=yes
3518d0927938SUlrich Hechtfi
3519d0927938SUlrich Hecht
35204e0c6529SAlex Bligh# check for ppoll support
35214e0c6529SAlex Blighppoll=no
35224e0c6529SAlex Blighcat > $TMPC << EOF
35234e0c6529SAlex Bligh#include <poll.h>
35244e0c6529SAlex Bligh
35254e0c6529SAlex Blighint main(void)
35264e0c6529SAlex Bligh{
35274e0c6529SAlex Bligh    struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
35284e0c6529SAlex Bligh    ppoll(&pfd, 1, 0, 0);
35294e0c6529SAlex Bligh    return 0;
35304e0c6529SAlex Bligh}
35314e0c6529SAlex BlighEOF
35324e0c6529SAlex Blighif compile_prog "" "" ; then
35334e0c6529SAlex Bligh  ppoll=yes
35344e0c6529SAlex Blighfi
35354e0c6529SAlex Bligh
3536cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support
3537cd758dd0SAlex Blighprctl_pr_set_timerslack=no
3538cd758dd0SAlex Blighcat > $TMPC << EOF
3539cd758dd0SAlex Bligh#include <sys/prctl.h>
3540cd758dd0SAlex Bligh
3541cd758dd0SAlex Blighint main(void)
3542cd758dd0SAlex Bligh{
3543cd758dd0SAlex Bligh    prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3544cd758dd0SAlex Bligh    return 0;
3545cd758dd0SAlex Bligh}
3546cd758dd0SAlex BlighEOF
3547cd758dd0SAlex Blighif compile_prog "" "" ; then
3548cd758dd0SAlex Bligh  prctl_pr_set_timerslack=yes
3549cd758dd0SAlex Blighfi
3550cd758dd0SAlex Bligh
35513b6edd16SPeter Maydell# check for epoll support
35523b6edd16SPeter Maydellepoll=no
35533b6edd16SPeter Maydellcat > $TMPC << EOF
35543b6edd16SPeter Maydell#include <sys/epoll.h>
35553b6edd16SPeter Maydell
35563b6edd16SPeter Maydellint main(void)
35573b6edd16SPeter Maydell{
35583b6edd16SPeter Maydell    epoll_create(0);
35593b6edd16SPeter Maydell    return 0;
35603b6edd16SPeter Maydell}
35613b6edd16SPeter MaydellEOF
35628fb03151SPeter Maydellif compile_prog "" "" ; then
35633b6edd16SPeter Maydell  epoll=yes
35643b6edd16SPeter Maydellfi
35653b6edd16SPeter Maydell
35663b6edd16SPeter Maydell# epoll_create1 and epoll_pwait are later additions
35673b6edd16SPeter Maydell# so we must check separately for their presence
35683b6edd16SPeter Maydellepoll_create1=no
35693b6edd16SPeter Maydellcat > $TMPC << EOF
35703b6edd16SPeter Maydell#include <sys/epoll.h>
35713b6edd16SPeter Maydell
35723b6edd16SPeter Maydellint main(void)
35733b6edd16SPeter Maydell{
357419e83f6bSPeter Maydell    /* Note that we use epoll_create1 as a value, not as
357519e83f6bSPeter Maydell     * a function being called. This is necessary so that on
357619e83f6bSPeter Maydell     * old SPARC glibc versions where the function was present in
357719e83f6bSPeter Maydell     * the library but not declared in the header file we will
357819e83f6bSPeter Maydell     * fail the configure check. (Otherwise we will get a compiler
357919e83f6bSPeter Maydell     * warning but not an error, and will proceed to fail the
358019e83f6bSPeter Maydell     * qemu compile where we compile with -Werror.)
358119e83f6bSPeter Maydell     */
3582c075a723SBlue Swirl    return (int)(uintptr_t)&epoll_create1;
35833b6edd16SPeter Maydell}
35843b6edd16SPeter MaydellEOF
35858fb03151SPeter Maydellif compile_prog "" "" ; then
35863b6edd16SPeter Maydell  epoll_create1=yes
35873b6edd16SPeter Maydellfi
35883b6edd16SPeter Maydell
35893b6edd16SPeter Maydellepoll_pwait=no
35903b6edd16SPeter Maydellcat > $TMPC << EOF
35913b6edd16SPeter Maydell#include <sys/epoll.h>
35923b6edd16SPeter Maydell
35933b6edd16SPeter Maydellint main(void)
35943b6edd16SPeter Maydell{
35953b6edd16SPeter Maydell    epoll_pwait(0, 0, 0, 0, 0);
35963b6edd16SPeter Maydell    return 0;
35973b6edd16SPeter Maydell}
35983b6edd16SPeter MaydellEOF
35998fb03151SPeter Maydellif compile_prog "" "" ; then
36003b6edd16SPeter Maydell  epoll_pwait=yes
36013b6edd16SPeter Maydellfi
36023b6edd16SPeter Maydell
3603a8fd1abaSPeter Maydell# check for sendfile support
3604a8fd1abaSPeter Maydellsendfile=no
3605a8fd1abaSPeter Maydellcat > $TMPC << EOF
3606a8fd1abaSPeter Maydell#include <sys/sendfile.h>
3607a8fd1abaSPeter Maydell
3608a8fd1abaSPeter Maydellint main(void)
3609a8fd1abaSPeter Maydell{
3610a8fd1abaSPeter Maydell    return sendfile(0, 0, 0, 0);
3611a8fd1abaSPeter Maydell}
3612a8fd1abaSPeter MaydellEOF
3613a8fd1abaSPeter Maydellif compile_prog "" "" ; then
3614a8fd1abaSPeter Maydell  sendfile=yes
3615a8fd1abaSPeter Maydellfi
3616a8fd1abaSPeter Maydell
361751834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer)
361851834341SRiku Voipiotimerfd=no
361951834341SRiku Voipiocat > $TMPC << EOF
362051834341SRiku Voipio#include <sys/timerfd.h>
362151834341SRiku Voipio
362251834341SRiku Voipioint main(void)
362351834341SRiku Voipio{
362451834341SRiku Voipio    return(timerfd_create(CLOCK_REALTIME, 0));
362551834341SRiku Voipio}
362651834341SRiku VoipioEOF
362751834341SRiku Voipioif compile_prog "" "" ; then
362851834341SRiku Voipio  timerfd=yes
362951834341SRiku Voipiofi
363051834341SRiku Voipio
36319af5c906SRiku Voipio# check for setns and unshare support
36329af5c906SRiku Voipiosetns=no
36339af5c906SRiku Voipiocat > $TMPC << EOF
36349af5c906SRiku Voipio#include <sched.h>
36359af5c906SRiku Voipio
36369af5c906SRiku Voipioint main(void)
36379af5c906SRiku Voipio{
36389af5c906SRiku Voipio    int ret;
36399af5c906SRiku Voipio    ret = setns(0, 0);
36409af5c906SRiku Voipio    ret = unshare(0);
36419af5c906SRiku Voipio    return ret;
36429af5c906SRiku Voipio}
36439af5c906SRiku VoipioEOF
36449af5c906SRiku Voipioif compile_prog "" "" ; then
36459af5c906SRiku Voipio  setns=yes
36469af5c906SRiku Voipiofi
36479af5c906SRiku Voipio
3648cc8ae6deSpbrook# Check if tools are available to build documentation.
3649a25dba17SJuan Quintelaif test "$docs" != "no" ; then
365001668d98SStefan Weil  if has makeinfo && has pod2man; then
3651a25dba17SJuan Quintela    docs=yes
365283a3ab8bSJuan Quintela  else
3653a25dba17SJuan Quintela    if test "$docs" = "yes" ; then
365421684af0SStewart Smith      feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
365583a3ab8bSJuan Quintela    fi
3656a25dba17SJuan Quintela    docs=no
365783a3ab8bSJuan Quintela  fi
3658cc8ae6deSpbrookfi
3659cc8ae6deSpbrook
3660f514f41cSStefan Weil# Search for bswap_32 function
36616ae9a1f4SJuan Quintelabyteswap_h=no
36626ae9a1f4SJuan Quintelacat > $TMPC << EOF
36636ae9a1f4SJuan Quintela#include <byteswap.h>
36646ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); }
36656ae9a1f4SJuan QuintelaEOF
366652166aa0SJuan Quintelaif compile_prog "" "" ; then
36676ae9a1f4SJuan Quintela  byteswap_h=yes
36686ae9a1f4SJuan Quintelafi
36696ae9a1f4SJuan Quintela
367075f13596SStefan Weil# Search for bswap32 function
36716ae9a1f4SJuan Quintelabswap_h=no
36726ae9a1f4SJuan Quintelacat > $TMPC << EOF
36736ae9a1f4SJuan Quintela#include <sys/endian.h>
36746ae9a1f4SJuan Quintela#include <sys/types.h>
36756ae9a1f4SJuan Quintela#include <machine/bswap.h>
36766ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); }
36776ae9a1f4SJuan QuintelaEOF
367852166aa0SJuan Quintelaif compile_prog "" "" ; then
36796ae9a1f4SJuan Quintela  bswap_h=yes
36806ae9a1f4SJuan Quintelafi
36816ae9a1f4SJuan Quintela
3682da93a1fdSaliguori##########################################
3683e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0
3684c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then
3685e49ab19fSPeter Lieven  if $pkg_config --atleast-version=1.9.0 libiscsi; then
36863c33ea96SPaolo Bonzini    libiscsi="yes"
3687ca871ec8SStefan Weil    libiscsi_cflags=$($pkg_config --cflags libiscsi)
3688ca871ec8SStefan Weil    libiscsi_libs=$($pkg_config --libs libiscsi)
3689c589b249SRonnie Sahlberg  else
3690c589b249SRonnie Sahlberg    if test "$libiscsi" = "yes" ; then
3691e49ab19fSPeter Lieven      feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
3692c589b249SRonnie Sahlberg    fi
3693c589b249SRonnie Sahlberg    libiscsi="no"
3694c589b249SRonnie Sahlberg  fi
3695c589b249SRonnie Sahlbergfi
3696c589b249SRonnie Sahlberg
3697c589b249SRonnie Sahlberg##########################################
36988bacde8dSNatanael Copa# Do we need libm
36998bacde8dSNatanael Copacat > $TMPC << EOF
37008bacde8dSNatanael Copa#include <math.h>
3701f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); }
37028bacde8dSNatanael CopaEOF
37038bacde8dSNatanael Copaif compile_prog "" "" ; then
37048bacde8dSNatanael Copa  :
37058bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then
37068bacde8dSNatanael Copa  LIBS="-lm $LIBS"
37078bacde8dSNatanael Copa  libs_qga="-lm $libs_qga"
37088bacde8dSNatanael Copaelse
370976ad07a4SPeter Maydell  error_exit "libm check failed"
37108bacde8dSNatanael Copafi
37118bacde8dSNatanael Copa
37128bacde8dSNatanael Copa##########################################
3713da93a1fdSaliguori# Do we need librt
37148bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime
37158bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't
37168bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this
37178bacde8dSNatanael Copa# function in addition.
3718da93a1fdSaliguoricat > $TMPC <<EOF
3719da93a1fdSaliguori#include <signal.h>
3720da93a1fdSaliguori#include <time.h>
37218bacde8dSNatanael Copaint main(void) {
37228bacde8dSNatanael Copa  timer_create(CLOCK_REALTIME, NULL, NULL);
37238bacde8dSNatanael Copa  return clock_gettime(CLOCK_REALTIME, NULL);
37248bacde8dSNatanael Copa}
3725da93a1fdSaliguoriEOF
3726da93a1fdSaliguori
372752166aa0SJuan Quintelaif compile_prog "" "" ; then
372807ffa4bdSJuan Quintela  :
37298bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result
373018e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then
373118e588b1SRick Liu  LIBS="$LIBS -lrt"
373218e588b1SRick Liu  libs_qga="$libs_qga -lrt"
3733da93a1fdSaliguorifi
3734da93a1fdSaliguori
373531ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3736179cf400SAndreas Färber        "$aix" != "yes" -a "$haiku" != "yes" ; then
37376362a53fSJuan Quintela    libs_softmmu="-lutil $libs_softmmu"
37386362a53fSJuan Quintelafi
37396362a53fSJuan Quintela
3740de5071c5SBlue Swirl##########################################
3741cd4ec0b4SGerd Hoffmann# spice probe
3742cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then
3743cd4ec0b4SGerd Hoffmann  cat > $TMPC << EOF
3744cd4ec0b4SGerd Hoffmann#include <spice.h>
3745cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; }
3746cd4ec0b4SGerd HoffmannEOF
3747710fc4f5SJiri Denemark  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3748710fc4f5SJiri Denemark  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
374965d5d3f9SStefan Weil  if $pkg_config --atleast-version=0.12.0 spice-server && \
375065d5d3f9SStefan Weil     $pkg_config --atleast-version=0.12.3 spice-protocol && \
3751cd4ec0b4SGerd Hoffmann     compile_prog "$spice_cflags" "$spice_libs" ; then
3752cd4ec0b4SGerd Hoffmann    spice="yes"
3753cd4ec0b4SGerd Hoffmann    libs_softmmu="$libs_softmmu $spice_libs"
3754cd4ec0b4SGerd Hoffmann    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
37552e0e3c39SAlon Levy    spice_protocol_version=$($pkg_config --modversion spice-protocol)
37562e0e3c39SAlon Levy    spice_server_version=$($pkg_config --modversion spice-server)
3757cd4ec0b4SGerd Hoffmann  else
3758cd4ec0b4SGerd Hoffmann    if test "$spice" = "yes" ; then
37598efc9363SHu Tao      feature_not_found "spice" \
37608efc9363SHu Tao          "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3761cd4ec0b4SGerd Hoffmann    fi
3762cd4ec0b4SGerd Hoffmann    spice="no"
3763cd4ec0b4SGerd Hoffmann  fi
3764cd4ec0b4SGerd Hoffmannfi
3765cd4ec0b4SGerd Hoffmann
3766111a38b0SRobert Relyea# check for libcacard for smartcard support
3767111a38b0SRobert Relyeasmartcard_cflags=""
3768111a38b0SRobert Relyea# TODO - what's the minimal nss version we support?
3769111a38b0SRobert Relyeaif test "$smartcard_nss" != "no"; then
37705f01e06fSSergei Trofimovich  cat > $TMPC << EOF
37715f01e06fSSergei Trofimovich#include <pk11pub.h>
37725f01e06fSSergei Trofimovichint main(void) { PK11_FreeSlot(0); return 0; }
37735f01e06fSSergei TrofimovichEOF
37749d171bd9SMichael Tokarev    # FIXME: do not include $glib_* in here
37759d171bd9SMichael Tokarev    nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
37769d171bd9SMichael Tokarev    nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
37779d171bd9SMichael Tokarev    test_cflags="$nss_cflags"
37786ca026cbSPeter Maydell    # The header files in nss < 3.13.3 have a bug which causes them to
37796ca026cbSPeter Maydell    # emit a warning. If we're going to compile QEMU with -Werror, then
37806ca026cbSPeter Maydell    # test that the headers don't have this bug. Otherwise we would pass
37816ca026cbSPeter Maydell    # the configure test but fail to compile QEMU later.
37826ca026cbSPeter Maydell    if test "$werror" = "yes"; then
37836ca026cbSPeter Maydell        test_cflags="-Werror $test_cflags"
37846ca026cbSPeter Maydell    fi
3785b6fc675bSPaolo Bonzini    if test -n "$libtool" &&
378665d5d3f9SStefan Weil       $pkg_config --atleast-version=3.12.8 nss && \
37879d171bd9SMichael Tokarev      compile_prog "$test_cflags" "$nss_libs"; then
37885f01e06fSSergei Trofimovich        smartcard_nss="yes"
3789111a38b0SRobert Relyea    else
3790111a38b0SRobert Relyea        if test "$smartcard_nss" = "yes"; then
37918efc9363SHu Tao            feature_not_found "nss" "Install nss devel >= 3.12.8"
3792111a38b0SRobert Relyea        fi
3793111a38b0SRobert Relyea        smartcard_nss="no"
3794111a38b0SRobert Relyea    fi
3795111a38b0SRobert Relyeafi
3796111a38b0SRobert Relyea
37972b2325ffSGerd Hoffmann# check for libusb
37982b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then
379965d5d3f9SStefan Weil    if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
38002b2325ffSGerd Hoffmann        libusb="yes"
3801ca871ec8SStefan Weil        libusb_cflags=$($pkg_config --cflags libusb-1.0)
3802ca871ec8SStefan Weil        libusb_libs=$($pkg_config --libs libusb-1.0)
38032b2325ffSGerd Hoffmann        QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
38042b2325ffSGerd Hoffmann        libs_softmmu="$libs_softmmu $libusb_libs"
38052b2325ffSGerd Hoffmann    else
38062b2325ffSGerd Hoffmann        if test "$libusb" = "yes"; then
38078efc9363SHu Tao            feature_not_found "libusb" "Install libusb devel >= 1.0.13"
38082b2325ffSGerd Hoffmann        fi
38092b2325ffSGerd Hoffmann        libusb="no"
38102b2325ffSGerd Hoffmann    fi
38112b2325ffSGerd Hoffmannfi
38122b2325ffSGerd Hoffmann
381369354a83SHans de Goede# check for usbredirparser for usb network redirection support
381469354a83SHans de Goedeif test "$usb_redir" != "no" ; then
381565d5d3f9SStefan Weil    if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
381669354a83SHans de Goede        usb_redir="yes"
3817ca871ec8SStefan Weil        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3818ca871ec8SStefan Weil        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
381969354a83SHans de Goede        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
382056ab2ad1SAurelien Jarno        libs_softmmu="$libs_softmmu $usb_redir_libs"
382169354a83SHans de Goede    else
382269354a83SHans de Goede        if test "$usb_redir" = "yes"; then
382321684af0SStewart Smith            feature_not_found "usb-redir" "Install usbredir devel"
382469354a83SHans de Goede        fi
382569354a83SHans de Goede        usb_redir="no"
382669354a83SHans de Goede    fi
382769354a83SHans de Goedefi
382869354a83SHans de Goede
3829cd4ec0b4SGerd Hoffmann##########################################
3830d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win
3831d9840e25STomoki Sekiyama
3832d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3833d9840e25STomoki Sekiyama  case "$vss_win32_sdk" in
3834d9840e25STomoki Sekiyama    "")   vss_win32_include="-I$source_path" ;;
3835d9840e25STomoki Sekiyama    *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3836d9840e25STomoki Sekiyama          # handle path with spaces. So we symlink the headers into ".sdk/vss".
3837d9840e25STomoki Sekiyama          vss_win32_include="-I$source_path/.sdk/vss"
3838d9840e25STomoki Sekiyama	  symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3839d9840e25STomoki Sekiyama	  ;;
3840d9840e25STomoki Sekiyama    *)    vss_win32_include="-I$vss_win32_sdk"
3841d9840e25STomoki Sekiyama  esac
3842d9840e25STomoki Sekiyama  cat > $TMPC << EOF
3843d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__
3844d9840e25STomoki Sekiyama#include <inc/win2003/vss.h>
3845d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; }
3846d9840e25STomoki SekiyamaEOF
3847d9840e25STomoki Sekiyama  if compile_prog "$vss_win32_include" "" ; then
3848d9840e25STomoki Sekiyama    guest_agent_with_vss="yes"
3849d9840e25STomoki Sekiyama    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3850d9840e25STomoki Sekiyama    libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3851d9840e25STomoki Sekiyama  else
3852d9840e25STomoki Sekiyama    if test "$vss_win32_sdk" != "" ; then
3853d9840e25STomoki Sekiyama      echo "ERROR: Please download and install Microsoft VSS SDK:"
3854d9840e25STomoki Sekiyama      echo "ERROR:   http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3855d9840e25STomoki Sekiyama      echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3856d9840e25STomoki Sekiyama      echo "ERROR:   scripts/extract-vsssdk-headers setup.exe"
3857d9840e25STomoki Sekiyama      echo "ERROR: The headers are extracted in the directory \`inc'."
3858d9840e25STomoki Sekiyama      feature_not_found "VSS support"
3859d9840e25STomoki Sekiyama    fi
3860d9840e25STomoki Sekiyama    guest_agent_with_vss="no"
3861d9840e25STomoki Sekiyama  fi
3862d9840e25STomoki Sekiyamafi
3863d9840e25STomoki Sekiyama
3864d9840e25STomoki Sekiyama##########################################
3865d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified)
3866d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent
3867d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the
3868d9840e25STomoki Sekiyama# pre-compiled .tlb file is included.
3869d9840e25STomoki Sekiyama
3870d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3871d9840e25STomoki Sekiyama  if test -z "$win_sdk"; then
3872d9840e25STomoki Sekiyama    programfiles="$PROGRAMFILES"
3873d9840e25STomoki Sekiyama    test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3874d9840e25STomoki Sekiyama    if test -n "$programfiles"; then
3875d9840e25STomoki Sekiyama      win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3876d9840e25STomoki Sekiyama    else
3877d9840e25STomoki Sekiyama      feature_not_found "Windows SDK"
3878d9840e25STomoki Sekiyama    fi
3879d9840e25STomoki Sekiyama  elif test "$win_sdk" = "no"; then
3880d9840e25STomoki Sekiyama    win_sdk=""
3881d9840e25STomoki Sekiyama  fi
3882d9840e25STomoki Sekiyamafi
3883d9840e25STomoki Sekiyama
3884d9840e25STomoki Sekiyama##########################################
38859dacf32dSYossi Hindin# Guest agent Window MSI  package
38869dacf32dSYossi Hindin
38879dacf32dSYossi Hindinif test "$guest_agent" != yes; then
38889dacf32dSYossi Hindin  if test "$guest_agent_msi" = yes; then
38899dacf32dSYossi Hindin    error_exit "MSI guest agent package requires guest agent enabled"
38909dacf32dSYossi Hindin  fi
38919dacf32dSYossi Hindin  guest_agent_msi=no
38929dacf32dSYossi Hindinelif test "$mingw32" != "yes"; then
38939dacf32dSYossi Hindin  if test "$guest_agent_msi" = "yes"; then
38949dacf32dSYossi Hindin    error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
38959dacf32dSYossi Hindin  fi
38969dacf32dSYossi Hindin  guest_agent_msi=no
38979dacf32dSYossi Hindinelif ! has wixl; then
38989dacf32dSYossi Hindin  if test "$guest_agent_msi" = "yes"; then
38999dacf32dSYossi Hindin    error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
39009dacf32dSYossi Hindin  fi
39019dacf32dSYossi Hindin  guest_agent_msi=no
39029dacf32dSYossi Hindinfi
39039dacf32dSYossi Hindin
39049dacf32dSYossi Hindinif test "$guest_agent_msi" != "no"; then
39059dacf32dSYossi Hindin  if test "$guest_agent_with_vss" = "yes"; then
39069dacf32dSYossi Hindin    QEMU_GA_MSI_WITH_VSS="-D InstallVss"
39079dacf32dSYossi Hindin  fi
39089dacf32dSYossi Hindin
39099dacf32dSYossi Hindin  if test "$QEMU_GA_MANUFACTURER" = ""; then
39109dacf32dSYossi Hindin    QEMU_GA_MANUFACTURER=QEMU
39119dacf32dSYossi Hindin  fi
39129dacf32dSYossi Hindin
39139dacf32dSYossi Hindin  if test "$QEMU_GA_DISTRO" = ""; then
39149dacf32dSYossi Hindin    QEMU_GA_DISTRO=Linux
39159dacf32dSYossi Hindin  fi
39169dacf32dSYossi Hindin
39179dacf32dSYossi Hindin  if test "$QEMU_GA_VERSION" = ""; then
39189dacf32dSYossi Hindin      QEMU_GA_VERSION=`cat $source_path/VERSION`
39199dacf32dSYossi Hindin  fi
39209dacf32dSYossi Hindin
39219dacf32dSYossi Hindin  QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
39229dacf32dSYossi Hindin
39239dacf32dSYossi Hindin  case "$cpu" in
39249dacf32dSYossi Hindin  x86_64)
39259dacf32dSYossi Hindin    QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
39269dacf32dSYossi Hindin    ;;
39279dacf32dSYossi Hindin  i386)
39289dacf32dSYossi Hindin    QEMU_GA_MSI_ARCH="-D Arch=32"
39299dacf32dSYossi Hindin    ;;
39309dacf32dSYossi Hindin  *)
39319dacf32dSYossi Hindin    error_exit "CPU $cpu not supported for building installation package"
39329dacf32dSYossi Hindin    ;;
39339dacf32dSYossi Hindin  esac
39349dacf32dSYossi Hindinfi
3935cd4ec0b4SGerd Hoffmann
3936747bbdf7SBlue Swirl##########################################
39375f6b9e8fSBlue Swirl# check if we have fdatasync
39385f6b9e8fSBlue Swirl
39395f6b9e8fSBlue Swirlfdatasync=no
39405f6b9e8fSBlue Swirlcat > $TMPC << EOF
39415f6b9e8fSBlue Swirl#include <unistd.h>
3942d1722a27SAlexandre Raymondint main(void) {
3943d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3944d1722a27SAlexandre Raymondreturn fdatasync(0);
3945d1722a27SAlexandre Raymond#else
3946e172fe11SStefan Weil#error Not supported
3947d1722a27SAlexandre Raymond#endif
3948d1722a27SAlexandre Raymond}
39495f6b9e8fSBlue SwirlEOF
39505f6b9e8fSBlue Swirlif compile_prog "" "" ; then
39515f6b9e8fSBlue Swirl    fdatasync=yes
39525f6b9e8fSBlue Swirlfi
39535f6b9e8fSBlue Swirl
395494a420b1SStefan Hajnoczi##########################################
3955e78815a5SAndreas Färber# check if we have madvise
3956e78815a5SAndreas Färber
3957e78815a5SAndreas Färbermadvise=no
3958e78815a5SAndreas Färbercat > $TMPC << EOF
3959e78815a5SAndreas Färber#include <sys/types.h>
3960e78815a5SAndreas Färber#include <sys/mman.h>
3961832ce9c2SScott Wood#include <stddef.h>
3962e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3963e78815a5SAndreas FärberEOF
3964e78815a5SAndreas Färberif compile_prog "" "" ; then
3965e78815a5SAndreas Färber    madvise=yes
3966e78815a5SAndreas Färberfi
3967e78815a5SAndreas Färber
3968e78815a5SAndreas Färber##########################################
3969e78815a5SAndreas Färber# check if we have posix_madvise
3970e78815a5SAndreas Färber
3971e78815a5SAndreas Färberposix_madvise=no
3972e78815a5SAndreas Färbercat > $TMPC << EOF
3973e78815a5SAndreas Färber#include <sys/mman.h>
3974832ce9c2SScott Wood#include <stddef.h>
3975e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3976e78815a5SAndreas FärberEOF
3977e78815a5SAndreas Färberif compile_prog "" "" ; then
3978e78815a5SAndreas Färber    posix_madvise=yes
3979e78815a5SAndreas Färberfi
3980e78815a5SAndreas Färber
3981e78815a5SAndreas Färber##########################################
39821e9737daSRichard Henderson# check if we have usable SIGEV_THREAD_ID
39831e9737daSRichard Henderson
39841e9737daSRichard Hendersonsigev_thread_id=no
39851e9737daSRichard Hendersoncat > $TMPC << EOF
39861e9737daSRichard Henderson#include <signal.h>
39871e9737daSRichard Hendersonint main(void) {
39881e9737daSRichard Henderson  struct sigevent ev;
39891e9737daSRichard Henderson  ev.sigev_notify = SIGEV_THREAD_ID;
39901e9737daSRichard Henderson  ev._sigev_un._tid = 0;
39911e9737daSRichard Henderson  asm volatile("" : : "g"(&ev));
39921e9737daSRichard Henderson  return 0;
39931e9737daSRichard Henderson}
39941e9737daSRichard HendersonEOF
39951e9737daSRichard Hendersonif compile_prog "" "" ; then
39961e9737daSRichard Henderson    sigev_thread_id=yes
39971e9737daSRichard Hendersonfi
39981e9737daSRichard Henderson
39991e9737daSRichard Henderson##########################################
400094a420b1SStefan Hajnoczi# check if trace backend exists
400194a420b1SStefan Hajnoczi
40025b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends  > /dev/null 2> /dev/null
400394a420b1SStefan Hajnocziif test "$?" -ne 0 ; then
40045b808275SLluís Vilanova  error_exit "invalid trace backends" \
40055b808275SLluís Vilanova      "Please choose supported trace backends."
400694a420b1SStefan Hajnoczifi
400794a420b1SStefan Hajnoczi
40087e24e92aSStefan Hajnoczi##########################################
40097e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present
40105b808275SLluís Vilanovaif have_backend "ust"; then
40117e24e92aSStefan Hajnoczi  cat > $TMPC << EOF
4012bf15f63cSMohamad Gebai#include <lttng/tracepoint.h>
40137e24e92aSStefan Hajnocziint main(void) { return 0; }
40147e24e92aSStefan HajnocziEOF
40157e24e92aSStefan Hajnoczi  if compile_prog "" "" ; then
4016bf15f63cSMohamad Gebai    if $pkg_config lttng-ust --exists; then
4017bf15f63cSMohamad Gebai      lttng_ust_libs=`$pkg_config --libs lttng-ust`
40187e24e92aSStefan Hajnoczi    else
4019bf15f63cSMohamad Gebai      lttng_ust_libs="-llttng-ust"
4020bf15f63cSMohamad Gebai    fi
4021bf15f63cSMohamad Gebai    if $pkg_config liburcu-bp --exists; then
4022bf15f63cSMohamad Gebai      urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4023bf15f63cSMohamad Gebai    else
4024bf15f63cSMohamad Gebai      urcu_bp_libs="-lurcu-bp"
4025bf15f63cSMohamad Gebai    fi
4026bf15f63cSMohamad Gebai
4027bf15f63cSMohamad Gebai    LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4028bf15f63cSMohamad Gebai    libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4029bf15f63cSMohamad Gebai  else
4030bf15f63cSMohamad Gebai    error_exit "Trace backend 'ust' missing lttng-ust header files"
40317e24e92aSStefan Hajnoczi  fi
40327e24e92aSStefan Hajnoczifi
4033b3d08c02SDaniel P. Berrange
4034b3d08c02SDaniel P. Berrange##########################################
4035b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present
40365b808275SLluís Vilanovaif have_backend "dtrace"; then
4037b3d08c02SDaniel P. Berrange  if ! has 'dtrace' ; then
403876ad07a4SPeter Maydell    error_exit "dtrace command is not found in PATH $PATH"
4039b3d08c02SDaniel P. Berrange  fi
4040c276b17dSDaniel P. Berrange  trace_backend_stap="no"
4041c276b17dSDaniel P. Berrange  if has 'stap' ; then
4042c276b17dSDaniel P. Berrange    trace_backend_stap="yes"
4043c276b17dSDaniel P. Berrange  fi
4044b3d08c02SDaniel P. Berrangefi
4045b3d08c02SDaniel P. Berrange
40467e24e92aSStefan Hajnoczi##########################################
4047519175a2SAlex Barcelo# check and set a backend for coroutine
4048d0e2fce5SAneesh Kumar K.V
40497c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback
40507c2acc70SPeter Maydell# is sigcontext. gthread is not selectable except explicitly, because
40517c2acc70SPeter Maydell# it is not functional enough to run QEMU proper. (It is occasionally
40527c2acc70SPeter Maydell# useful for debugging purposes.)  On Windows the only valid backend
40537c2acc70SPeter Maydell# is the Windows-specific one.
40547c2acc70SPeter Maydell
40557c2acc70SPeter Maydellucontext_works=no
4056d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then
4057d0e2fce5SAneesh Kumar K.V  cat > $TMPC << EOF
4058d0e2fce5SAneesh Kumar K.V#include <ucontext.h>
4059cdf84806SPeter Maydell#ifdef __stub_makecontext
4060cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail
4061cdf84806SPeter Maydell#endif
406275cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; }
4063d0e2fce5SAneesh Kumar K.VEOF
4064d0e2fce5SAneesh Kumar K.V  if compile_prog "" "" ; then
40657c2acc70SPeter Maydell    ucontext_works=yes
4066d0e2fce5SAneesh Kumar K.V  fi
4067519175a2SAlex Barcelofi
40687c2acc70SPeter Maydell
40697c2acc70SPeter Maydellif test "$coroutine" = ""; then
40707c2acc70SPeter Maydell  if test "$mingw32" = "yes"; then
40717c2acc70SPeter Maydell    coroutine=win32
40727c2acc70SPeter Maydell  elif test "$ucontext_works" = "yes"; then
40737c2acc70SPeter Maydell    coroutine=ucontext
4074519175a2SAlex Barcelo  else
40757c2acc70SPeter Maydell    coroutine=sigaltstack
40767c2acc70SPeter Maydell  fi
40777c2acc70SPeter Maydellelse
40787c2acc70SPeter Maydell  case $coroutine in
40797c2acc70SPeter Maydell  windows)
40807c2acc70SPeter Maydell    if test "$mingw32" != "yes"; then
40817c2acc70SPeter Maydell      error_exit "'windows' coroutine backend only valid for Windows"
40827c2acc70SPeter Maydell    fi
40837c2acc70SPeter Maydell    # Unfortunately the user visible backend name doesn't match the
40847c2acc70SPeter Maydell    # coroutine-*.c filename for this case, so we have to adjust it here.
40857c2acc70SPeter Maydell    coroutine=win32
40867c2acc70SPeter Maydell    ;;
40877c2acc70SPeter Maydell  ucontext)
40887c2acc70SPeter Maydell    if test "$ucontext_works" != "yes"; then
40897c2acc70SPeter Maydell      feature_not_found "ucontext"
40907c2acc70SPeter Maydell    fi
40917c2acc70SPeter Maydell    ;;
40927c2acc70SPeter Maydell  gthread|sigaltstack)
40937c2acc70SPeter Maydell    if test "$mingw32" = "yes"; then
40947c2acc70SPeter Maydell      error_exit "only the 'windows' coroutine backend is valid for Windows"
40957c2acc70SPeter Maydell    fi
40967c2acc70SPeter Maydell    ;;
40977c2acc70SPeter Maydell  *)
409876ad07a4SPeter Maydell    error_exit "unknown coroutine backend $coroutine"
40997c2acc70SPeter Maydell    ;;
41007c2acc70SPeter Maydell  esac
4101d0e2fce5SAneesh Kumar K.Vfi
4102d0e2fce5SAneesh Kumar K.V
410370c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then
410470c60c08SStefan Hajnoczi  if test "$coroutine" = "gthread"; then
410570c60c08SStefan Hajnoczi    coroutine_pool=no
410670c60c08SStefan Hajnoczi  else
410770c60c08SStefan Hajnoczi    coroutine_pool=yes
410870c60c08SStefan Hajnoczi  fi
410970c60c08SStefan Hajnoczifi
411070c60c08SStefan Hajnocziif test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
411170c60c08SStefan Hajnoczi  error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
411270c60c08SStefan Hajnoczifi
411370c60c08SStefan Hajnoczi
4114d0e2fce5SAneesh Kumar K.V##########################################
4115d2042378SAneesh Kumar K.V# check if we have open_by_handle_at
4116d2042378SAneesh Kumar K.V
41174e1797f9SStefan Weilopen_by_handle_at=no
4118d2042378SAneesh Kumar K.Vcat > $TMPC << EOF
4119d2042378SAneesh Kumar K.V#include <fcntl.h>
4120acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH)
4121acc55ba8SStefan Weil# error missing definition
4122acc55ba8SStefan Weil#else
412375cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4124acc55ba8SStefan Weil#endif
4125d2042378SAneesh Kumar K.VEOF
4126d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then
4127d2042378SAneesh Kumar K.V    open_by_handle_at=yes
4128d2042378SAneesh Kumar K.Vfi
4129d2042378SAneesh Kumar K.V
4130e06a765eSHarsh Prateek Bora########################################
4131e06a765eSHarsh Prateek Bora# check if we have linux/magic.h
4132e06a765eSHarsh Prateek Bora
4133e06a765eSHarsh Prateek Boralinux_magic_h=no
4134e06a765eSHarsh Prateek Boracat > $TMPC << EOF
4135e06a765eSHarsh Prateek Bora#include <linux/magic.h>
4136e06a765eSHarsh Prateek Boraint main(void) {
413775cafad7SStefan Weil  return 0;
4138e06a765eSHarsh Prateek Bora}
4139e06a765eSHarsh Prateek BoraEOF
4140e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then
4141e06a765eSHarsh Prateek Bora    linux_magic_h=yes
4142e06a765eSHarsh Prateek Borafi
4143e06a765eSHarsh Prateek Bora
41448ab1bf12SLuiz Capitulino########################################
4145c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed
4146c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries).
4147c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is
4148c95e3080SKevin Wolf# only a warning.
4149c95e3080SKevin Wolf#
4150c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that
4151c95e3080SKevin Wolf# the build doesn't fail anyway.
4152c95e3080SKevin Wolf
415306d71fa1SPeter Maydellpragma_disable_unused_but_set=no
415406d71fa1SPeter Maydellcat > $TMPC << EOF
4155e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push
415606d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4157c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes"
4158e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop
4159c95e3080SKevin Wolf
416006d71fa1SPeter Maydellint main(void) {
416106d71fa1SPeter Maydell    return 0;
416206d71fa1SPeter Maydell}
416306d71fa1SPeter MaydellEOF
416406d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then
4165cc6e3ca9SGerd Hoffmann    pragma_diagnostic_available=yes
4166c95e3080SKevin Wolfelse
4167c95e3080SKevin Wolf    werror=no
416806d71fa1SPeter Maydellfi
416906d71fa1SPeter Maydell
417006d71fa1SPeter Maydell########################################
4171541be927SChristian Borntraeger# check if we have valgrind/valgrind.h
41723f4349dcSKevin Wolf
41733f4349dcSKevin Wolfvalgrind_h=no
41743f4349dcSKevin Wolfcat > $TMPC << EOF
41753f4349dcSKevin Wolf#include <valgrind/valgrind.h>
41763f4349dcSKevin Wolfint main(void) {
41773f4349dcSKevin Wolf  return 0;
41783f4349dcSKevin Wolf}
41793f4349dcSKevin WolfEOF
41803f4349dcSKevin Wolfif compile_prog "" "" ; then
41813f4349dcSKevin Wolf    valgrind_h=yes
41823f4349dcSKevin Wolffi
41833f4349dcSKevin Wolf
41843f4349dcSKevin Wolf########################################
41858ab1bf12SLuiz Capitulino# check if environ is declared
41868ab1bf12SLuiz Capitulino
41878ab1bf12SLuiz Capitulinohas_environ=no
41888ab1bf12SLuiz Capitulinocat > $TMPC << EOF
41898ab1bf12SLuiz Capitulino#include <unistd.h>
41908ab1bf12SLuiz Capitulinoint main(void) {
4191c075a723SBlue Swirl    environ = 0;
41928ab1bf12SLuiz Capitulino    return 0;
41938ab1bf12SLuiz Capitulino}
41948ab1bf12SLuiz CapitulinoEOF
41958ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then
41968ab1bf12SLuiz Capitulino    has_environ=yes
41978ab1bf12SLuiz Capitulinofi
41988ab1bf12SLuiz Capitulino
419976a347e1SRichard Henderson########################################
420076a347e1SRichard Henderson# check if cpuid.h is usable.
420176a347e1SRichard Henderson
420276a347e1SRichard Hendersoncpuid_h=no
420376a347e1SRichard Hendersoncat > $TMPC << EOF
420476a347e1SRichard Henderson#include <cpuid.h>
420576a347e1SRichard Hendersonint main(void) {
4206774d566cSPeter Maydell    unsigned a, b, c, d;
4207774d566cSPeter Maydell    int max = __get_cpuid_max(0, 0);
4208774d566cSPeter Maydell
4209774d566cSPeter Maydell    if (max >= 1) {
4210774d566cSPeter Maydell        __cpuid(1, a, b, c, d);
4211774d566cSPeter Maydell    }
4212774d566cSPeter Maydell
4213774d566cSPeter Maydell    if (max >= 7) {
4214774d566cSPeter Maydell        __cpuid_count(7, 0, a, b, c, d);
4215774d566cSPeter Maydell    }
4216774d566cSPeter Maydell
421776a347e1SRichard Henderson    return 0;
421876a347e1SRichard Henderson}
421976a347e1SRichard HendersonEOF
422076a347e1SRichard Hendersonif compile_prog "" "" ; then
422176a347e1SRichard Henderson    cpuid_h=yes
422276a347e1SRichard Hendersonfi
422376a347e1SRichard Henderson
4224f540166bSRichard Henderson########################################
4225f540166bSRichard Henderson# check if __[u]int128_t is usable.
4226f540166bSRichard Henderson
4227f540166bSRichard Hendersonint128=no
4228f540166bSRichard Hendersoncat > $TMPC << EOF
4229a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__)
4230a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4231a00f66abSStefan Weil#  error __int128_t does not work in CLANG before 3.2
4232a00f66abSStefan Weil# endif
4233a00f66abSStefan Weil#endif
4234f540166bSRichard Henderson__int128_t a;
4235f540166bSRichard Henderson__uint128_t b;
4236f540166bSRichard Hendersonint main (void) {
4237f540166bSRichard Henderson  a = a + b;
4238f540166bSRichard Henderson  b = a * b;
4239464e3671SPeter Maydell  a = a * a;
4240f540166bSRichard Henderson  return 0;
4241f540166bSRichard Henderson}
4242f540166bSRichard HendersonEOF
4243f540166bSRichard Hendersonif compile_prog "" "" ; then
4244f540166bSRichard Henderson    int128=yes
4245f540166bSRichard Hendersonfi
424676a347e1SRichard Henderson
42471e6e9acaSRichard Henderson########################################
42481e6e9acaSRichard Henderson# check if getauxval is available.
42491e6e9acaSRichard Henderson
42501e6e9acaSRichard Hendersongetauxval=no
42511e6e9acaSRichard Hendersoncat > $TMPC << EOF
42521e6e9acaSRichard Henderson#include <sys/auxv.h>
42531e6e9acaSRichard Hendersonint main(void) {
42541e6e9acaSRichard Henderson  return getauxval(AT_HWCAP) == 0;
42551e6e9acaSRichard Henderson}
42561e6e9acaSRichard HendersonEOF
42571e6e9acaSRichard Hendersonif compile_prog "" "" ; then
42581e6e9acaSRichard Henderson    getauxval=yes
42591e6e9acaSRichard Hendersonfi
42601e6e9acaSRichard Henderson
4261fd0e6053SJohn Snow########################################
4262fd0e6053SJohn Snow# check if ccache is interfering with
4263fd0e6053SJohn Snow# semantic analysis of macros
4264fd0e6053SJohn Snow
4265fd0e6053SJohn Snowccache_cpp2=no
4266fd0e6053SJohn Snowcat > $TMPC << EOF
4267fd0e6053SJohn Snowstatic const int Z = 1;
4268fd0e6053SJohn Snow#define fn() ({ Z; })
4269fd0e6053SJohn Snow#define TAUT(X) ((X) == Z)
4270fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y)
4271fd0e6053SJohn Snow#define ID(X) (X)
4272fd0e6053SJohn Snowint main(int argc, char *argv[])
4273fd0e6053SJohn Snow{
4274fd0e6053SJohn Snow    int x = 0, y = 0;
4275fd0e6053SJohn Snow    x = ID(x);
4276fd0e6053SJohn Snow    x = fn();
4277fd0e6053SJohn Snow    fn();
4278fd0e6053SJohn Snow    if (PAREN(x, y)) return 0;
4279fd0e6053SJohn Snow    if (TAUT(Z)) return 0;
4280fd0e6053SJohn Snow    return 0;
4281fd0e6053SJohn Snow}
4282fd0e6053SJohn SnowEOF
4283fd0e6053SJohn Snow
4284fd0e6053SJohn Snowif ! compile_object "-Werror"; then
4285fd0e6053SJohn Snow    ccache_cpp2=yes
4286fd0e6053SJohn Snowfi
4287fd0e6053SJohn Snow
4288d2042378SAneesh Kumar K.V##########################################
4289e86ecd4bSJuan Quintela# End of CC checks
4290e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs
4291e86ecd4bSJuan Quintela
42921d728c39SBlue Swirlif test "$gcov" = "yes" ; then
42931d728c39SBlue Swirl  CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
42941d728c39SBlue Swirl  LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
42951d728c39SBlue Swirlelif test "$debug" = "no" ; then
4296e600cdf3SMichal Privoznik  CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4297e86ecd4bSJuan Quintelafi
4298a316e378SJuan Quintela
42996542aa9cSPeter Lieven##########################################
43006542aa9cSPeter Lieven# Do we have libnfs
43016542aa9cSPeter Lievenif test "$libnfs" != "no" ; then
4302b7d769c9SPeter Lieven  if $pkg_config --atleast-version=1.9.3 libnfs; then
43036542aa9cSPeter Lieven    libnfs="yes"
43046542aa9cSPeter Lieven    libnfs_libs=$($pkg_config --libs libnfs)
43056542aa9cSPeter Lieven    LIBS="$LIBS $libnfs_libs"
43066542aa9cSPeter Lieven  else
43076542aa9cSPeter Lieven    if test "$libnfs" = "yes" ; then
43088efc9363SHu Tao      feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
43096542aa9cSPeter Lieven    fi
43106542aa9cSPeter Lieven    libnfs="no"
43116542aa9cSPeter Lieven  fi
43126542aa9cSPeter Lievenfi
43131d728c39SBlue Swirl
431420ff6c80SAnthony Liguori# Disable zero malloc errors for official releases unless explicitly told to
431520ff6c80SAnthony Liguori# enable/disable
431620ff6c80SAnthony Liguoriif test -z "$zero_malloc" ; then
431720ff6c80SAnthony Liguori    if test "$z_version" = "50" ; then
431820ff6c80SAnthony Liguori	zero_malloc="no"
431920ff6c80SAnthony Liguori    else
432020ff6c80SAnthony Liguori	zero_malloc="yes"
432120ff6c80SAnthony Liguori    fi
432220ff6c80SAnthony Liguorifi
432320ff6c80SAnthony Liguori
43246ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags
43256ca026cbSPeter Maydellif test "$werror" = "yes"; then
43266ca026cbSPeter Maydell    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
43276ca026cbSPeter Maydellfi
43286ca026cbSPeter Maydell
4329e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then
4330e86ecd4bSJuan Quintela    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
43311156c669SJuan Quintela        LDFLAGS="-Wl,--warn-common $LDFLAGS"
4332e86ecd4bSJuan Quintela    fi
4333e86ecd4bSJuan Quintelafi
4334e86ecd4bSJuan Quintela
433594dd53c5SGerd Hoffmann# test if pod2man has --utf8 option
433694dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then
433794dd53c5SGerd Hoffmann    POD2MAN="pod2man --utf8"
433894dd53c5SGerd Hoffmannelse
433994dd53c5SGerd Hoffmann    POD2MAN="pod2man"
434094dd53c5SGerd Hoffmannfi
434194dd53c5SGerd Hoffmann
4342952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available
4343952afb71SBlue Swirlif test "$mingw32" = "yes" ; then
4344952afb71SBlue Swirl    for flag in --dynamicbase --no-seh --nxcompat; do
4345952afb71SBlue Swirl        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4346952afb71SBlue Swirl            LDFLAGS="-Wl,$flag $LDFLAGS"
4347952afb71SBlue Swirl        fi
4348952afb71SBlue Swirl    done
4349952afb71SBlue Swirlfi
4350952afb71SBlue Swirl
435110ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix
4352e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix
4353528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix
4354834574eaSAnthony Liguoriqemu_localedir="$datadir/locale"
43555a67135aSbellard
43564b1c11fdSDaniel P. Berrangetools=""
43574b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then
4358ca35f780SPaolo Bonzini  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
43594b1c11fdSDaniel P. Berrange  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
43604b1c11fdSDaniel P. Berrange    tools="qemu-nbd\$(EXESUF) $tools"
43614b1c11fdSDaniel P. Berrange  fi
43624b1c11fdSDaniel P. Berrangefi
43634b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then
4364983eef5aSMeador Inge  if test "$virtfs" != no ; then
4365be5ea8edSAnthony Liguori    if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4366983eef5aSMeador Inge      virtfs=yes
436717bff52bSM. Mohan Kumar      tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4368983eef5aSMeador Inge    else
4369983eef5aSMeador Inge      if test "$virtfs" = yes; then
437076ad07a4SPeter Maydell        error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4371983eef5aSMeador Inge      fi
437217500370SAndreas Färber      virtfs=no
4373983eef5aSMeador Inge    fi
437417bff52bSM. Mohan Kumar  fi
4375d138cee9SMichael Rothfi
4376e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then
4377b39297aeSTomoki Sekiyama  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4378e8ef31a3SMichael Tokarev      tools="qemu-ga\$(EXESUF) $tools"
4379b39297aeSTomoki Sekiyama      if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4380b39297aeSTomoki Sekiyama        tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4381b39297aeSTomoki Sekiyama      fi
4382e8ef31a3SMichael Tokarev      guest_agent=yes
4383e8ef31a3SMichael Tokarev  elif [ "$guest_agent" != yes ]; then
4384e8ef31a3SMichael Tokarev      guest_agent=no
4385e8ef31a3SMichael Tokarev  else
4386e8ef31a3SMichael Tokarev      error_exit "Guest agent is not supported on this platform"
4387ca35f780SPaolo Bonzini  fi
43884b1c11fdSDaniel P. Berrangefi
4389ca35f780SPaolo Bonzini
4390ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler
4391ca35f780SPaolo Bonziniroms=
4392ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4393ca35f780SPaolo Bonzini        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4394ca35f780SPaolo Bonzini        "$softmmu" = yes ; then
4395ca35f780SPaolo Bonzini  roms="optionrom"
4396ca35f780SPaolo Bonzinifi
4397d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
439839ac8455SDavid Gibson  roms="$roms spapr-rtas"
439939ac8455SDavid Gibsonfi
4400ca35f780SPaolo Bonzini
44019933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then
44029933c305SChristian Borntraeger  roms="$roms s390-ccw"
44039933c305SChristian Borntraegerfi
44049933c305SChristian Borntraeger
4405964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary.
4406964c6fa1SRichard Hendersonif test "$pie" = "no" ; then
4407964c6fa1SRichard Henderson  textseg_addr=
4408964c6fa1SRichard Henderson  case "$cpu" in
4409479eb121SRichard Henderson    arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4410479eb121SRichard Henderson      # ??? Rationale for choosing this address
4411964c6fa1SRichard Henderson      textseg_addr=0x60000000
4412964c6fa1SRichard Henderson      ;;
4413964c6fa1SRichard Henderson    mips)
4414479eb121SRichard Henderson      # A 256M aligned address, high in the address space, with enough
4415479eb121SRichard Henderson      # room for the code_gen_buffer above it before the stack.
4416479eb121SRichard Henderson      textseg_addr=0x60000000
4417964c6fa1SRichard Henderson      ;;
4418964c6fa1SRichard Henderson  esac
4419964c6fa1SRichard Henderson  if [ -n "$textseg_addr" ]; then
4420964c6fa1SRichard Henderson    cat > $TMPC <<EOF
4421964c6fa1SRichard Henderson    int main(void) { return 0; }
4422964c6fa1SRichard HendersonEOF
4423964c6fa1SRichard Henderson    textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4424964c6fa1SRichard Henderson    if ! compile_prog "" "$textseg_ldflags"; then
4425964c6fa1SRichard Henderson      # In case ld does not support -Ttext-segment, edit the default linker
4426964c6fa1SRichard Henderson      # script via sed to set the .text start addr.  This is needed on FreeBSD
4427964c6fa1SRichard Henderson      # at least.
4428964c6fa1SRichard Henderson      $ld --verbose | sed \
4429964c6fa1SRichard Henderson        -e '1,/==================================================/d' \
4430964c6fa1SRichard Henderson        -e '/==================================================/,$d' \
4431964c6fa1SRichard Henderson        -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4432964c6fa1SRichard Henderson        -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4433964c6fa1SRichard Henderson      textseg_ldflags="-Wl,-T../config-host.ld"
4434964c6fa1SRichard Henderson    fi
4435964c6fa1SRichard Henderson  fi
4436964c6fa1SRichard Hendersonfi
4437964c6fa1SRichard Henderson
443850e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done
443950e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
444050e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu"
44415ca9388aSGerd Hoffmann
44427d13299dSbellardecho "Install prefix    $prefix"
4443c00b2808SEduardo Habkostecho "BIOS directory    `eval echo $qemu_datadir`"
4444f2b9e1e3SPaolo Bonziniecho "binary directory  `eval echo $bindir`"
44453aa5d2beSAlon Levyecho "library directory `eval echo $libdir`"
4446e26110cfSFam Zhengecho "module directory  `eval echo $qemu_moddir`"
44478bf188aaSMichael Tokarevecho "libexec directory `eval echo $libexecdir`"
44480f94d6daSAlon Levyecho "include directory `eval echo $includedir`"
44491c0fd160SAurelien Jarnoecho "config directory  `eval echo $sysconfdir`"
445011d9f695Sbellardif test "$mingw32" = "no" ; then
44515a699bbbSLaszlo Ersekecho "local state directory   `eval echo $local_statedir`"
4452f2b9e1e3SPaolo Bonziniecho "Manual directory  `eval echo $mandir`"
445343ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
44545a699bbbSLaszlo Ersekelse
44555a699bbbSLaszlo Ersekecho "local state directory   queried at runtime"
4456d9840e25STomoki Sekiyamaecho "Windows SDK       $win_sdk"
445711d9f695Sbellardfi
44585a67135aSbellardecho "Source path       $source_path"
44597d13299dSbellardecho "C compiler        $cc"
446083469015Sbellardecho "Host C compiler   $host_cc"
446183f73fceSTomoki Sekiyamaecho "C++ compiler      $cxx"
44623c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc"
446345d285abSPeter Maydellecho "ARFLAGS           $ARFLAGS"
44640c439cbfSJuan Quintelaecho "CFLAGS            $CFLAGS"
4465a558ee17SJuan Quintelaecho "QEMU_CFLAGS       $QEMU_CFLAGS"
44660c439cbfSJuan Quintelaecho "LDFLAGS           $LDFLAGS"
44677d13299dSbellardecho "make              $make"
44686a882643Spbrookecho "install           $install"
4469c886edfbSBlue Swirlecho "python            $python"
4470e2d8830eSBradif test "$slirp" = "yes" ; then
4471e2d8830eSBrad    echo "smbd              $smbd"
4472e2d8830eSBradfi
447317969268SFam Zhengecho "module support    $modules"
4474a98fd896Sbellardecho "host CPU          $cpu"
4475de83cd02Sbellardecho "host big endian   $bigendian"
447697a847bcSbellardecho "target list       $target_list"
4477ade25b0dSaurel32echo "tcg debug enabled $debug_tcg"
44787d13299dSbellardecho "gprof enabled     $gprof"
447903b4fe7dSaliguoriecho "sparse enabled    $sparse"
44801625af87Saliguoriecho "strip binaries    $strip_opt"
448105c2a3e7Sbellardecho "profiler          $profiler"
448243ce4dfeSbellardecho "static build      $static"
44835b0753e0Sbellardif test "$darwin" = "yes" ; then
44845b0753e0Sbellard    echo "Cocoa support     $cocoa"
44855b0753e0Sbellardfi
4486e2134eb9SGerd Hoffmannecho "pixman            $pixman"
448797a847bcSbellardecho "SDL support       $sdl"
4488a4ccabcfSAnthony Liguoriecho "GTK support       $gtk"
4489ddbb0d09SDaniel P. Berrangeecho "GNUTLS support    $gnutls"
4490ddbb0d09SDaniel P. Berrangeecho "GNUTLS hash       $gnutls_hash"
4491*62893b67SDaniel P. Berrangeecho "GNUTLS gcrypt     $gnutls_gcrypt"
4492bbbf9bfbSStefan Weilecho "VTE support       $vte"
44934d3b6f6eSbalrogecho "curses support    $curses"
4494769ce76dSAlexander Grafecho "curl support      $curl"
449567b915a5Sbellardecho "mingw32 support   $mingw32"
44960c58ac1cSmalcecho "Audio drivers     $audio_drv_list"
4497b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist"
4498b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist"
4499983eef5aSMeador Ingeecho "VirtFS support    $virtfs"
4500821601eaSJes Sorensenecho "VNC support       $vnc"
4501821601eaSJes Sorensenif test "$vnc" = "yes" ; then
45028d5d2d4cSths    echo "VNC TLS support   $vnc_tls"
45032f9606b3Saliguori    echo "VNC SASL support  $vnc_sasl"
45042f6f5c7aSCorentin Chary    echo "VNC JPEG support  $vnc_jpeg"
4505efe556adSCorentin Chary    echo "VNC PNG support   $vnc_png"
45067536ee4bSTim Hardeck    echo "VNC WS support    $vnc_ws"
4507821601eaSJes Sorensenfi
45083142255cSblueswir1if test -n "$sparc_cpu"; then
45093142255cSblueswir1    echo "Target Sparc Arch $sparc_cpu"
45103142255cSblueswir1fi
4511e37630caSaliguoriecho "xen support       $xen"
45123996e85cSPaul Durrantif test "$xen" = "yes" ; then
45133996e85cSPaul Durrant  echo "xen ctrl version  $xen_ctrl_version"
45143996e85cSPaul Durrantfi
45152e4d9fb1Saurel32echo "brlapi support    $brlapi"
4516a20a6f46SJuan Quintelaecho "bluez  support    $bluez"
4517a25dba17SJuan Quintelaecho "Documentation     $docs"
4518379f6698SPaul Brookecho "GUEST_BASE        $guest_base"
451940d6444eSAvi Kivityecho "PIE               $pie"
45208a16d273Sthsecho "vde support       $vde"
452158952137SVincenzo Maffioneecho "netmap support    $netmap"
45225c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio"
4523758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr"
452477755340Sthsecho "Install blobs     $blobs"
4525b31a0277SJuan Quintelaecho "KVM support       $kvm"
45262da776dbSMichael R. Hinesecho "RDMA support      $rdma"
45279195b2c2SStefan Weilecho "TCG interpreter   $tcg_interpreter"
4528f652e6afSaurel32echo "fdt support       $fdt"
4529ceb42de8Saliguoriecho "preadv support    $preadv"
45305f6b9e8fSBlue Swirlecho "fdatasync         $fdatasync"
4531e78815a5SAndreas Färberecho "madvise           $madvise"
4532e78815a5SAndreas Färberecho "posix_madvise     $posix_madvise"
45331e9737daSRichard Hendersonecho "sigev_thread_id   $sigev_thread_id"
4534ee682d27SStefan Weilecho "uuid support      $uuid"
453547e98658SCorey Bryantecho "libcap-ng support $cap_ng"
4536d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net"
45375e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi"
45385b808275SLluís Vilanovaecho "Trace backends    $trace_backends"
4539e00e36fbSStefan Weilif test "$trace_backend" = "simple"; then
45409410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>"
4541e00e36fbSStefan Weilfi
4542c9dd4074SStefan Weilif test "$spice" = "yes"; then
45432e0e3c39SAlon Levyecho "spice support     $spice ($spice_protocol_version/$spice_server_version)"
4544c9dd4074SStefan Weilelse
4545c9dd4074SStefan Weilecho "spice support     $spice"
4546c9dd4074SStefan Weilfi
4547f27aaf4bSChristian Brunnerecho "rbd support       $rbd"
4548dce512deSChristoph Hellwigecho "xfsctl support    $xfs"
4549111a38b0SRobert Relyeaecho "nss used          $smartcard_nss"
45502b2325ffSGerd Hoffmannecho "libusb            $libusb"
455169354a83SHans de Goedeecho "usb net redir     $usb_redir"
4552da076ffeSGerd Hoffmannecho "OpenGL support    $opengl"
4553c589b249SRonnie Sahlbergecho "libiscsi support  $libiscsi"
45546542aa9cSPeter Lievenecho "libnfs support    $libnfs"
4555d138cee9SMichael Rothecho "build guest agent $guest_agent"
4556d9840e25STomoki Sekiyamaecho "QGA VSS support   $guest_agent_with_vss"
4557f794573eSEduardo Otuboecho "seccomp support   $seccomp"
45587c2acc70SPeter Maydellecho "coroutine backend $coroutine"
455970c60c08SStefan Hajnocziecho "coroutine pool    $coroutine_pool"
4560eb100396SBharata B Raoecho "GlusterFS support $glusterfs"
4561c9a12e75SChrysostomos Nanakosecho "Archipelago support $archipelago"
45621d728c39SBlue Swirlecho "gcov              $gcov_tool"
45631d728c39SBlue Swirlecho "gcov enabled      $gcov"
4564ab214c29SStefan Bergerecho "TPM support       $tpm"
45650a12ec87SRichard W.M. Jonesecho "libssh2 support   $libssh2"
45663b8acc11SPaolo Bonziniecho "TPM passthrough   $tpm_passthrough"
45673556c233SPaolo Bonziniecho "QOM debugging     $qom_cast_debug"
45684f18b782SJeff Codyecho "vhdx              $vhdx"
456995c6bff3SBenoît Canetecho "Quorum            $quorum"
4570607dacd0Sqiaonuohanecho "lzo support       $lzo"
4571607dacd0Sqiaonuohanecho "snappy support    $snappy"
45726b383c08SPeter Wuecho "bzip2 support     $bzip2"
4573a99d57bbSWanlong Gaoecho "NUMA host support $numa"
45742847b469SFam Zhengecho "tcmalloc support  $tcmalloc"
457567b915a5Sbellard
45761ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then
457724b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
4578e8cd23deSbellardfi
457997a847bcSbellard
458098ec69acSJuan Quintelaconfig_host_mak="config-host.mak"
458197a847bcSbellard
4582dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak
4583dbd99ae3SStefan Weil
458498ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak
458598ec69acSJuan Quintelaecho >> $config_host_mak
458698ec69acSJuan Quintela
4587e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak
458899d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak
458999d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak
45903aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak
45918bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak
45920f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak
459399d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak
459499d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak
459522d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak
45969afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak
45979afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak
4598e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak
45995a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then
4600785c23aeSLuiz Capitulino  echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
46015a699bbbSLaszlo Ersekfi
4602f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak
4603f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4604f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4605834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak
4606f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak
4607804edf29SJuan Quintela
460898ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak
4609727e5283SPaolo Bonzini
4610f8393946Saurel32if test "$debug_tcg" = "yes" ; then
46112358a494SJuan Quintela  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4612f8393946Saurel32fi
46131625af87Saliguoriif test "$strip_opt" = "yes" ; then
461452ba784dSHollis Blanchard  echo "STRIP=${strip}" >> $config_host_mak
46151625af87Saliguorifi
46167d13299dSbellardif test "$bigendian" = "yes" ; then
4617e2542fe2SJuan Quintela  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
461897a847bcSbellardfi
461967b915a5Sbellardif test "$mingw32" = "yes" ; then
462098ec69acSJuan Quintela  echo "CONFIG_WIN32=y" >> $config_host_mak
46219fe6de94SBlue Swirl  rc_version=`cat $source_path/VERSION`
46229fe6de94SBlue Swirl  version_major=${rc_version%%.*}
46239fe6de94SBlue Swirl  rc_version=${rc_version#*.}
46249fe6de94SBlue Swirl  version_minor=${rc_version%%.*}
46259fe6de94SBlue Swirl  rc_version=${rc_version#*.}
46269fe6de94SBlue Swirl  version_subminor=${rc_version%%.*}
46279fe6de94SBlue Swirl  version_micro=0
46289fe6de94SBlue Swirl  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
46299fe6de94SBlue Swirl  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4630d9840e25STomoki Sekiyama  if test "$guest_agent_with_vss" = "yes" ; then
4631d9840e25STomoki Sekiyama    echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4632d9840e25STomoki Sekiyama    echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4633d9840e25STomoki Sekiyama  fi
46349dacf32dSYossi Hindin  if test "$guest_agent_msi" != "no"; then
46359dacf32dSYossi Hindin    echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
46369dacf32dSYossi Hindin    echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
46379dacf32dSYossi Hindin    echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
46389dacf32dSYossi Hindin    echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
46399dacf32dSYossi Hindin    echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
46409dacf32dSYossi Hindin    echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
46419dacf32dSYossi Hindin    echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
46429dacf32dSYossi Hindin  fi
4643210fa556Spbrookelse
464435f4df27SJuan Quintela  echo "CONFIG_POSIX=y" >> $config_host_mak
4645210fa556Spbrookfi
4646128ab2ffSblueswir1
4647dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then
4648dffcb71cSMark McLoughlin  echo "CONFIG_LINUX=y" >> $config_host_mak
4649dffcb71cSMark McLoughlinfi
4650dffcb71cSMark McLoughlin
465183fb7adfSbellardif test "$darwin" = "yes" ; then
465298ec69acSJuan Quintela  echo "CONFIG_DARWIN=y" >> $config_host_mak
465383fb7adfSbellardfi
4654b29fe3edSmalc
4655b29fe3edSmalcif test "$aix" = "yes" ; then
465698ec69acSJuan Quintela  echo "CONFIG_AIX=y" >> $config_host_mak
4657b29fe3edSmalcfi
4658b29fe3edSmalc
4659ec530c81Sbellardif test "$solaris" = "yes" ; then
466098ec69acSJuan Quintela  echo "CONFIG_SOLARIS=y" >> $config_host_mak
46612358a494SJuan Quintela  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
46620475a5caSths  if test "$needs_libsunmath" = "yes" ; then
466375b5a697SJuan Quintela    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
46640475a5caSths  fi
4665ec530c81Sbellardfi
4666179cf400SAndreas Färberif test "$haiku" = "yes" ; then
4667179cf400SAndreas Färber  echo "CONFIG_HAIKU=y" >> $config_host_mak
4668179cf400SAndreas Färberfi
466997a847bcSbellardif test "$static" = "yes" ; then
467098ec69acSJuan Quintela  echo "CONFIG_STATIC=y" >> $config_host_mak
467197a847bcSbellardfi
46721ba16968SStefan Weilif test "$profiler" = "yes" ; then
46732358a494SJuan Quintela  echo "CONFIG_PROFILER=y" >> $config_host_mak
467405c2a3e7Sbellardfi
4675c20709aaSbellardif test "$slirp" = "yes" ; then
467698ec69acSJuan Quintela  echo "CONFIG_SLIRP=y" >> $config_host_mak
4677e2d8830eSBrad  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4678c20709aaSbellardfi
46798a16d273Sthsif test "$vde" = "yes" ; then
468098ec69acSJuan Quintela  echo "CONFIG_VDE=y" >> $config_host_mak
46818a16d273Sthsfi
468258952137SVincenzo Maffioneif test "$netmap" = "yes" ; then
468358952137SVincenzo Maffione  echo "CONFIG_NETMAP=y" >> $config_host_mak
468458952137SVincenzo Maffionefi
4685015a33bdSGongleiif test "$l2tpv3" = "yes" ; then
4686015a33bdSGonglei  echo "CONFIG_L2TPV3=y" >> $config_host_mak
4687015a33bdSGongleifi
468847e98658SCorey Bryantif test "$cap_ng" = "yes" ; then
468947e98658SCorey Bryant  echo "CONFIG_LIBCAP=y" >> $config_host_mak
469047e98658SCorey Bryantfi
46912358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
46920c58ac1cSmalcfor drv in $audio_drv_list; do
4693bb55b712SStefan Weil    def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
469498ec69acSJuan Quintela    echo "$def=y" >> $config_host_mak
46950c58ac1cSmalcdone
469667f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then
469767f86e8eSJuan Quintela  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
469867f86e8eSJuan Quintelafi
4699d5631638Smalcif test "$audio_win_int" = "yes" ; then
4700d5631638Smalc  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4701d5631638Smalcfi
4702b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4703b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4704821601eaSJes Sorensenif test "$vnc" = "yes" ; then
4705821601eaSJes Sorensen  echo "CONFIG_VNC=y" >> $config_host_mak
4706821601eaSJes Sorensenfi
47078d5d2d4cSthsif test "$vnc_tls" = "yes" ; then
470898ec69acSJuan Quintela  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
47098d5d2d4cSthsfi
47102f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then
471198ec69acSJuan Quintela  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
47122f9606b3Saliguorifi
4713821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then
47142f6f5c7aSCorentin Chary  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
47152f6f5c7aSCorentin Charyfi
4716821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then
4717efe556adSCorentin Chary  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4718efe556adSCorentin Charyfi
47197536ee4bSTim Hardeckif test "$vnc_ws" = "yes" ; then
47207536ee4bSTim Hardeck  echo "CONFIG_VNC_WS=y" >> $config_host_mak
47217536ee4bSTim Hardeck  echo "VNC_WS_CFLAGS=$vnc_ws_cflags" >> $config_host_mak
47227536ee4bSTim Hardeckfi
472376655d6dSaliguoriif test "$fnmatch" = "yes" ; then
47242358a494SJuan Quintela  echo "CONFIG_FNMATCH=y" >> $config_host_mak
472576655d6dSaliguorifi
4726ee682d27SStefan Weilif test "$uuid" = "yes" ; then
4727ee682d27SStefan Weil  echo "CONFIG_UUID=y" >> $config_host_mak
4728ee682d27SStefan Weilfi
4729dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then
4730dce512deSChristoph Hellwig  echo "CONFIG_XFS=y" >> $config_host_mak
4731dce512deSChristoph Hellwigfi
4732b1a550a0Spbrookqemu_version=`head $source_path/VERSION`
473398ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak
47342358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak
473598ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak
473698ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak
4737a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then
473898ec69acSJuan Quintela  echo "BUILD_DOCS=yes" >> $config_host_mak
4739cc8ae6deSpbrookfi
474017969268SFam Zhengif test "$modules" = "yes"; then
4741e26110cfSFam Zheng  # $shacmd can generate a hash started with digit, which the compiler doesn't
4742e26110cfSFam Zheng  # like as an symbol. So prefix it with an underscore
4743e26110cfSFam Zheng  echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
474417969268SFam Zheng  echo "CONFIG_MODULES=y" >> $config_host_mak
474517969268SFam Zhengfi
47461ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then
474798ec69acSJuan Quintela  echo "CONFIG_SDL=y" >> $config_host_mak
4748a3f4d63dSCole Robinson  echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
47498ad3a7ddSJuan Quintela  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
475049ecc3faSbellardfi
475149ecc3faSbellardif test "$cocoa" = "yes" ; then
475298ec69acSJuan Quintela  echo "CONFIG_COCOA=y" >> $config_host_mak
475349ecc3faSbellardfi
47544d3b6f6eSbalrogif test "$curses" = "yes" ; then
475598ec69acSJuan Quintela  echo "CONFIG_CURSES=y" >> $config_host_mak
4756ab4e5602SJan Kiszkafi
4757ebc996f3SRiku Voipioif test "$utimens" = "yes" ; then
47582358a494SJuan Quintela  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4759ebc996f3SRiku Voipiofi
4760099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then
47612358a494SJuan Quintela  echo "CONFIG_PIPE2=y" >> $config_host_mak
4762099d6b0fSRiku Voipiofi
476340ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then
476440ff6d7eSKevin Wolf  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
476540ff6d7eSKevin Wolffi
47663ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then
47672358a494SJuan Quintela  echo "CONFIG_SPLICE=y" >> $config_host_mak
47683ce34dfbSvibisreenivasanfi
4769c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then
4770c2882b96SRiku Voipio  echo "CONFIG_EVENTFD=y" >> $config_host_mak
4771c2882b96SRiku Voipiofi
4772d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then
4773d0927938SUlrich Hecht  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4774d0927938SUlrich Hechtfi
47753d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then
47763d4fa43eSKusanagi Kouichi  echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
47773d4fa43eSKusanagi Kouichifi
4778b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then
4779b953f075SDenis V. Lunev  echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4780b953f075SDenis V. Lunevfi
4781ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then
4782ed911435SKevin Wolf  echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4783ed911435SKevin Wolffi
4784c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then
4785c727f47dSPeter Maydell  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4786c727f47dSPeter Maydellfi
4787dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then
4788dace20dcSPeter Maydell  echo "CONFIG_FIEMAP=y" >> $config_host_mak
4789dace20dcSPeter Maydellfi
4790d0927938SUlrich Hechtif test "$dup3" = "yes" ; then
4791d0927938SUlrich Hecht  echo "CONFIG_DUP3=y" >> $config_host_mak
4792d0927938SUlrich Hechtfi
47934e0c6529SAlex Blighif test "$ppoll" = "yes" ; then
47944e0c6529SAlex Bligh  echo "CONFIG_PPOLL=y" >> $config_host_mak
47954e0c6529SAlex Blighfi
4796cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then
4797cd758dd0SAlex Bligh  echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4798cd758dd0SAlex Blighfi
47993b6edd16SPeter Maydellif test "$epoll" = "yes" ; then
48003b6edd16SPeter Maydell  echo "CONFIG_EPOLL=y" >> $config_host_mak
48013b6edd16SPeter Maydellfi
48023b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then
48033b6edd16SPeter Maydell  echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
48043b6edd16SPeter Maydellfi
48053b6edd16SPeter Maydellif test "$epoll_pwait" = "yes" ; then
48063b6edd16SPeter Maydell  echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
48073b6edd16SPeter Maydellfi
4808a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then
4809a8fd1abaSPeter Maydell  echo "CONFIG_SENDFILE=y" >> $config_host_mak
4810a8fd1abaSPeter Maydellfi
481151834341SRiku Voipioif test "$timerfd" = "yes" ; then
481251834341SRiku Voipio  echo "CONFIG_TIMERFD=y" >> $config_host_mak
481351834341SRiku Voipiofi
48149af5c906SRiku Voipioif test "$setns" = "yes" ; then
48159af5c906SRiku Voipio  echo "CONFIG_SETNS=y" >> $config_host_mak
48169af5c906SRiku Voipiofi
48173b3f24adSaurel32if test "$inotify" = "yes" ; then
48182358a494SJuan Quintela  echo "CONFIG_INOTIFY=y" >> $config_host_mak
48193b3f24adSaurel32fi
4820c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then
4821c05c7a73SRiku Voipio  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4822c05c7a73SRiku Voipiofi
48236ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then
48246ae9a1f4SJuan Quintela  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
48256ae9a1f4SJuan Quintelafi
48266ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then
48276ae9a1f4SJuan Quintela  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
48286ae9a1f4SJuan Quintelafi
4829769ce76dSAlexander Grafif test "$curl" = "yes" ; then
4830d3399d7cSFam Zheng  echo "CONFIG_CURL=m" >> $config_host_mak
4831b1d5a277SJuan Quintela  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
48326ebc91e5SFam Zheng  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4833769ce76dSAlexander Graffi
48342e4d9fb1Saurel32if test "$brlapi" = "yes" ; then
483598ec69acSJuan Quintela  echo "CONFIG_BRLAPI=y" >> $config_host_mak
48362e4d9fb1Saurel32fi
4837fb599c9aSbalrogif test "$bluez" = "yes" ; then
483898ec69acSJuan Quintela  echo "CONFIG_BLUEZ=y" >> $config_host_mak
4839ef7635ecSJuan Quintela  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4840fb599c9aSbalrogfi
4841d46f7c9eSDr. David Alan Gilbertif test "$glib_subprocess" = "yes" ; then
48429d41401bSMichael S. Tsirkin  echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
48439d41401bSMichael S. Tsirkinfi
4844e18df141SAnthony Liguoriecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4845a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then
4846a4ccabcfSAnthony Liguori  echo "CONFIG_GTK=y" >> $config_host_mak
4847a3f4d63dSCole Robinson  echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4848a4ccabcfSAnthony Liguori  echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4849bbbf9bfbSStefan Weilfi
4850ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then
4851ddbb0d09SDaniel P. Berrange  echo "CONFIG_GNUTLS=y" >> $config_host_mak
4852ddbb0d09SDaniel P. Berrangefi
4853ddbb0d09SDaniel P. Berrangeif test "$gnutls_hash" = "yes" ; then
4854ddbb0d09SDaniel P. Berrange  echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4855ddbb0d09SDaniel P. Berrangefi
4856*62893b67SDaniel P. Berrangeif test "$gnutls_gcrypt" = "yes" ; then
4857*62893b67SDaniel P. Berrange  echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4858*62893b67SDaniel P. Berrangefi
4859bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then
4860bbbf9bfbSStefan Weil  echo "CONFIG_VTE=y" >> $config_host_mak
4861a4ccabcfSAnthony Liguori  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4862a4ccabcfSAnthony Liguorifi
4863e37630caSaliguoriif test "$xen" = "yes" ; then
48646dbd588aSJan Kiszka  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4865d5b93ddfSAnthony PERARD  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4866e37630caSaliguorifi
48675c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then
48685c6c3a6cSChristoph Hellwig  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
48695c6c3a6cSChristoph Hellwigfi
4870758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then
4871758e8e38SVenkateswararao Jujjuri (JV)  echo "CONFIG_ATTR=y" >> $config_host_mak
4872758e8e38SVenkateswararao Jujjuri (JV)fi
48734f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then
48744f26f2b6SAvi Kivity  echo "CONFIG_LIBATTR=y" >> $config_host_mak
48754f26f2b6SAvi Kivityfi
4876983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then
4877758e8e38SVenkateswararao Jujjuri (JV)  echo "CONFIG_VIRTFS=y" >> $config_host_mak
4878758e8e38SVenkateswararao Jujjuri (JV)fi
48795e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then
48805e9be92dSNicholas Bellinger  echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
48815e9be92dSNicholas Bellingerfi
488203ce5744SNikolay Nikolaevif test "$vhost_net" = "yes" ; then
488303ce5744SNikolay Nikolaev  echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
488403ce5744SNikolay Nikolaevfi
488577755340Sthsif test "$blobs" = "yes" ; then
488698ec69acSJuan Quintela  echo "INSTALL_BLOBS=yes" >> $config_host_mak
488777755340Sthsfi
4888bf9298b9Saliguoriif test "$iovec" = "yes" ; then
48892358a494SJuan Quintela  echo "CONFIG_IOVEC=y" >> $config_host_mak
4890bf9298b9Saliguorifi
4891ceb42de8Saliguoriif test "$preadv" = "yes" ; then
48922358a494SJuan Quintela  echo "CONFIG_PREADV=y" >> $config_host_mak
4893ceb42de8Saliguorifi
4894f652e6afSaurel32if test "$fdt" = "yes" ; then
48953f0855b1SJuan Quintela  echo "CONFIG_FDT=y" >> $config_host_mak
4896f652e6afSaurel32fi
4897dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then
4898dcc38d1cSMarcelo Tosatti  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4899dcc38d1cSMarcelo Tosattifi
49009195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then
49019195b2c2SStefan Weil  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
49029195b2c2SStefan Weilfi
49035f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then
49045f6b9e8fSBlue Swirl  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
49055f6b9e8fSBlue Swirlfi
4906e78815a5SAndreas Färberif test "$madvise" = "yes" ; then
4907e78815a5SAndreas Färber  echo "CONFIG_MADVISE=y" >> $config_host_mak
4908e78815a5SAndreas Färberfi
4909e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then
4910e78815a5SAndreas Färber  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4911e78815a5SAndreas Färberfi
49121e9737daSRichard Hendersonif test "$sigev_thread_id" = "yes" ; then
49131e9737daSRichard Henderson  echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
49141e9737daSRichard Hendersonfi
491597a847bcSbellard
4916cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then
4917cd4ec0b4SGerd Hoffmann  echo "CONFIG_SPICE=y" >> $config_host_mak
4918cd4ec0b4SGerd Hoffmannfi
4919cd4ec0b4SGerd Hoffmann
4920111a38b0SRobert Relyeaif test "$smartcard_nss" = "yes" ; then
4921111a38b0SRobert Relyea  echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
49229d171bd9SMichael Tokarev  echo "NSS_LIBS=$nss_libs" >> $config_host_mak
49239d171bd9SMichael Tokarev  echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4924111a38b0SRobert Relyeafi
4925111a38b0SRobert Relyea
49262b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then
49272b2325ffSGerd Hoffmann  echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
49282b2325ffSGerd Hoffmannfi
49292b2325ffSGerd Hoffmann
493069354a83SHans de Goedeif test "$usb_redir" = "yes" ; then
493169354a83SHans de Goede  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
493269354a83SHans de Goedefi
493369354a83SHans de Goede
4934da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then
4935da076ffeSGerd Hoffmann  echo "CONFIG_OPENGL=y" >> $config_host_mak
4936f676c67eSJeremy White  echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4937da076ffeSGerd Hoffmann  echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
493820ff075bSMichael Wallefi
493920ff075bSMichael Walle
4940607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then
4941607dacd0Sqiaonuohan  echo "CONFIG_LZO=y" >> $config_host_mak
4942607dacd0Sqiaonuohanfi
4943607dacd0Sqiaonuohan
4944607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then
4945607dacd0Sqiaonuohan  echo "CONFIG_SNAPPY=y" >> $config_host_mak
4946607dacd0Sqiaonuohanfi
4947607dacd0Sqiaonuohan
49486b383c08SPeter Wuif test "$bzip2" = "yes" ; then
49496b383c08SPeter Wu  echo "CONFIG_BZIP2=y" >> $config_host_mak
49506b383c08SPeter Wu  echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
49516b383c08SPeter Wufi
49526b383c08SPeter Wu
4953c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then
4954d3399d7cSFam Zheng  echo "CONFIG_LIBISCSI=m" >> $config_host_mak
49556ebc91e5SFam Zheng  echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
49566ebc91e5SFam Zheng  echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4957c589b249SRonnie Sahlbergfi
4958c589b249SRonnie Sahlberg
49596542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then
49606542aa9cSPeter Lieven  echo "CONFIG_LIBNFS=y" >> $config_host_mak
49616542aa9cSPeter Lievenfi
49626542aa9cSPeter Lieven
4963f794573eSEduardo Otuboif test "$seccomp" = "yes"; then
4964f794573eSEduardo Otubo  echo "CONFIG_SECCOMP=y" >> $config_host_mak
4965f794573eSEduardo Otubofi
4966f794573eSEduardo Otubo
496783fb7adfSbellard# XXX: suppress that
49687d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
49692358a494SJuan Quintela  echo "CONFIG_BSD=y" >> $config_host_mak
49707d3505c5Sbellardfi
49717d3505c5Sbellard
497220ff6c80SAnthony Liguoriif test "$zero_malloc" = "yes" ; then
497320ff6c80SAnthony Liguori  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
497420ff6c80SAnthony Liguorifi
49753556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then
49763556c233SPaolo Bonzini  echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
49773556c233SPaolo Bonzinifi
4978f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then
4979d3399d7cSFam Zheng  echo "CONFIG_RBD=m" >> $config_host_mak
49806ebc91e5SFam Zheng  echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
49816ebc91e5SFam Zheng  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4982f27aaf4bSChristian Brunnerfi
498320ff6c80SAnthony Liguori
49847c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
498570c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then
498670c60c08SStefan Hajnoczi  echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
498770c60c08SStefan Hajnoczielse
498870c60c08SStefan Hajnoczi  echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
498970c60c08SStefan Hajnoczifi
4990d0e2fce5SAneesh Kumar K.V
4991d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then
4992d2042378SAneesh Kumar K.V  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
4993d2042378SAneesh Kumar K.Vfi
4994d2042378SAneesh Kumar K.V
4995e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then
4996e06a765eSHarsh Prateek Bora  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
4997e06a765eSHarsh Prateek Borafi
4998e06a765eSHarsh Prateek Bora
4999cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then
5000cc6e3ca9SGerd Hoffmann  echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
500106d71fa1SPeter Maydellfi
500206d71fa1SPeter Maydell
50033f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then
50043f4349dcSKevin Wolf  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
50053f4349dcSKevin Wolffi
50063f4349dcSKevin Wolf
50078ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then
50088ab1bf12SLuiz Capitulino  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
50098ab1bf12SLuiz Capitulinofi
50108ab1bf12SLuiz Capitulino
501176a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then
501276a347e1SRichard Henderson  echo "CONFIG_CPUID_H=y" >> $config_host_mak
501376a347e1SRichard Hendersonfi
501476a347e1SRichard Henderson
5015f540166bSRichard Hendersonif test "$int128" = "yes" ; then
5016f540166bSRichard Henderson  echo "CONFIG_INT128=y" >> $config_host_mak
5017f540166bSRichard Hendersonfi
5018f540166bSRichard Henderson
50191e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then
50201e6e9acaSRichard Henderson  echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
50211e6e9acaSRichard Hendersonfi
50221e6e9acaSRichard Henderson
5023eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then
5024d3399d7cSFam Zheng  echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
50256ebc91e5SFam Zheng  echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
50266ebc91e5SFam Zheng  echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5027eb100396SBharata B Raofi
5028eb100396SBharata B Rao
50290c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then
50300c14fb47SBharata B Rao  echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
50310c14fb47SBharata B Raofi
50320c14fb47SBharata B Rao
50337c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then
50347c815372SBharata B Rao  echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
50357c815372SBharata B Raofi
50367c815372SBharata B Rao
5037c9a12e75SChrysostomos Nanakosif test "$archipelago" = "yes" ; then
5038c9a12e75SChrysostomos Nanakos  echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5039c9a12e75SChrysostomos Nanakos  echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5040c9a12e75SChrysostomos Nanakosfi
5041c9a12e75SChrysostomos Nanakos
50420a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then
5043d3399d7cSFam Zheng  echo "CONFIG_LIBSSH2=m" >> $config_host_mak
50446ebc91e5SFam Zheng  echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
50456ebc91e5SFam Zheng  echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
50460a12ec87SRichard W.M. Jonesfi
50470a12ec87SRichard W.M. Jones
504895c6bff3SBenoît Canetif test "$quorum" = "yes" ; then
504995c6bff3SBenoît Canet  echo "CONFIG_QUORUM=y" >> $config_host_mak
505095c6bff3SBenoît Canetfi
505195c6bff3SBenoît Canet
50524f18b782SJeff Codyif test "$vhdx" = "yes" ; then
50534f18b782SJeff Cody  echo "CONFIG_VHDX=y" >> $config_host_mak
50544f18b782SJeff Codyfi
50554f18b782SJeff Cody
505668063649Sblueswir1# USB host support
5057b5613fdcSGerd Hoffmannif test "$libusb" = "yes"; then
50582b2325ffSGerd Hoffmann  echo "HOST_USB=libusb legacy" >> $config_host_mak
5059b5613fdcSGerd Hoffmannelse
506098ec69acSJuan Quintela  echo "HOST_USB=stub" >> $config_host_mak
5061b5613fdcSGerd Hoffmannfi
506268063649Sblueswir1
50633b8acc11SPaolo Bonzini# TPM passthrough support?
50643b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then
50653b8acc11SPaolo Bonzini  echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
50663b8acc11SPaolo Bonzini  if test "$tpm_passthrough" = "yes"; then
50673b8acc11SPaolo Bonzini    echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
50683b8acc11SPaolo Bonzini  fi
50693b8acc11SPaolo Bonzinifi
50703b8acc11SPaolo Bonzini
50715b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
50725b808275SLluís Vilanovaif have_backend "nop"; then
50736d8a764eSLluís  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
507422890ab5SPrerna Saxenafi
50755b808275SLluís Vilanovaif have_backend "simple"; then
50766d8a764eSLluís  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
50776d8a764eSLluís  # Set the appropriate trace file.
5078953ffe0fSAndreas Färber  trace_file="\"$trace_file-\" FMT_pid"
50799410b56cSPrerna Saxenafi
50805b808275SLluís Vilanovaif have_backend "stderr"; then
50816d8a764eSLluís  echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
50826d8a764eSLluísfi
50835b808275SLluís Vilanovaif have_backend "ust"; then
50846d8a764eSLluís  echo "CONFIG_TRACE_UST=y" >> $config_host_mak
50856d8a764eSLluísfi
50865b808275SLluís Vilanovaif have_backend "dtrace"; then
50876d8a764eSLluís  echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
50886d8a764eSLluís  if test "$trace_backend_stap" = "yes" ; then
50896d8a764eSLluís    echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
50906d8a764eSLluís  fi
5091c276b17dSDaniel P. Berrangefi
50925b808275SLluís Vilanovaif have_backend "ftrace"; then
5093781e9545SEiichi Tsukata  if test "$linux" = "yes" ; then
5094781e9545SEiichi Tsukata    echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5095781e9545SEiichi Tsukata  else
509621684af0SStewart Smith    feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5097781e9545SEiichi Tsukata  fi
5098781e9545SEiichi Tsukatafi
50999410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
51009410b56cSPrerna Saxena
51012da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then
51022da776dbSMichael R. Hines  echo "CONFIG_RDMA=y" >> $config_host_mak
51032da776dbSMichael R. Hinesfi
51042da776dbSMichael R. Hines
51055c312079SDr. David Alan Gilbert# Hold two types of flag:
51065c312079SDr. David Alan Gilbert#   CONFIG_THREAD_SETNAME_BYTHREAD  - we've got a way of setting the name on
51075c312079SDr. David Alan Gilbert#                                     a thread we have a handle to
51085c312079SDr. David Alan Gilbert#   CONFIG_PTHREAD_SETNAME_NP       - A way of doing it on a particular
51095c312079SDr. David Alan Gilbert#                                     platform
51105c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then
51115c312079SDr. David Alan Gilbert  echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
51125c312079SDr. David Alan Gilbert  echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
51135c312079SDr. David Alan Gilbertfi
51145c312079SDr. David Alan Gilbert
51155b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then
51165b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
51175b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then
51185b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
51195b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then
51205b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5121c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
51225b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
512340d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then
512440d964b5SRichard Henderson  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
51255b5e3037SPaolo Bonzinielse
51265b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
51275b5e3037SPaolo Bonzinifi
51285b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
51295b5e3037SPaolo Bonzini
513098ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak
513198ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak
5132804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak
5133804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak
51341901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
51351901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
513621655882SPaolo Bonziniif test -n "$libtool"; then
513721655882SPaolo Bonzini  echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
513821655882SPaolo Bonzini  echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
513921655882SPaolo Bonzinielse
51401901cb14SBrad  echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
514121655882SPaolo Bonzini  echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
514221655882SPaolo Bonzinifi
5143c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak
5144804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak
5145a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then
5146a31a8642SMichael S. Tsirkin  echo "IASL=$iasl" >> $config_host_mak
5147a31a8642SMichael S. Tsirkinfi
51482b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak
5149804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak
515083f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak
51513c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak
5152804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak
515345d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak
51543dd46c78SBlue Swirlecho "AS=$as" >> $config_host_mak
51553dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak
5156804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak
5157804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak
51584852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak
51599fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak
516044dc0ca3SAlon Levyecho "LIBTOOL=$libtool" >> $config_host_mak
5161e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak
516246eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5163a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5164f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5165e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then
5166e39f0062SPaolo Bonzini  echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
516780fd48dfSChristian Borntraeger  echo "CPP          := REAL_CC=\"\$(CPP)\" cgcc"      >> $config_host_mak
51682944d742SGerd Hoffmann  echo "CXX          := REAL_CC=\"\$(CXX)\" cgcc"      >> $config_host_mak
5169e39f0062SPaolo Bonzini  echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
5170e39f0062SPaolo Bonzini  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5171e39f0062SPaolo Bonzinifi
517242da6041SGerd Hoffmannif test "$cross_prefix" != ""; then
517342da6041SGerd Hoffmann  echo "AUTOCONF_HOST := --host=${cross_prefix%-}"     >> $config_host_mak
517442da6041SGerd Hoffmannelse
517542da6041SGerd Hoffmann  echo "AUTOCONF_HOST := "                             >> $config_host_mak
517642da6041SGerd Hoffmannfi
5177e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak
517846eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
517937746c5eSMarc-André Lureauecho "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
518073da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak
51813e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5182804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak
518317969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak
518417969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5185957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak
518694dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak
5187cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
51881d728c39SBlue Swirlif test "$gcov" = "yes" ; then
51891d728c39SBlue Swirl  echo "CONFIG_GCOV=y" >> $config_host_mak
51901d728c39SBlue Swirl  echo "GCOV=$gcov_tool" >> $config_host_mak
51911d728c39SBlue Swirlfi
5192804edf29SJuan Quintela
51936efd7517SPeter Maydell# use included Linux headers
51946efd7517SPeter Maydellif test "$linux" = "yes" ; then
5195a307beb6SAndreas Färber  mkdir -p linux-headers
51966efd7517SPeter Maydell  case "$cpu" in
5197c72b26ecSRichard Henderson  i386|x86_64|x32)
519808312a63SPeter Maydell    linux_arch=x86
51996efd7517SPeter Maydell    ;;
52006efd7517SPeter Maydell  ppcemb|ppc|ppc64)
520108312a63SPeter Maydell    linux_arch=powerpc
52026efd7517SPeter Maydell    ;;
52036efd7517SPeter Maydell  s390x)
520408312a63SPeter Maydell    linux_arch=s390
520508312a63SPeter Maydell    ;;
52061f080313SClaudio Fontana  aarch64)
52071f080313SClaudio Fontana    linux_arch=arm64
52081f080313SClaudio Fontana    ;;
5209222e7d11SSanjay Lal  mips64)
5210222e7d11SSanjay Lal    linux_arch=mips
5211222e7d11SSanjay Lal    ;;
521208312a63SPeter Maydell  *)
521308312a63SPeter Maydell    # For most CPUs the kernel architecture name and QEMU CPU name match.
521408312a63SPeter Maydell    linux_arch="$cpu"
52156efd7517SPeter Maydell    ;;
52166efd7517SPeter Maydell  esac
521708312a63SPeter Maydell    # For non-KVM architectures we will not have asm headers
521808312a63SPeter Maydell    if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
521908312a63SPeter Maydell      symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
522008312a63SPeter Maydell    fi
52216efd7517SPeter Maydellfi
52226efd7517SPeter Maydell
522397a847bcSbellardfor target in $target_list; do
522497a847bcSbellardtarget_dir="$target"
522525be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak
5226c1799a84SPaolo Bonzinitarget_name=`echo $target | cut -d '-' -f 1`
522797a847bcSbellardtarget_bigendian="no"
52281f3d3c8fSJuan Quintela
5229c1799a84SPaolo Bonzinicase "$target_name" in
5230d15a9c23SAnthony Green  armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5231ea2d6a39SJuan Quintela  target_bigendian=yes
5232ea2d6a39SJuan Quintela  ;;
5233ea2d6a39SJuan Quintelaesac
523497a847bcSbellardtarget_softmmu="no"
5235997344f3Sbellardtarget_user_only="no"
5236831b7825Sthstarget_linux_user="no"
523784778508Sblueswir1target_bsd_user="no"
52389e407a85Spbrookcase "$target" in
5239c1799a84SPaolo Bonzini  ${target_name}-softmmu)
52409e407a85Spbrook    target_softmmu="yes"
52419e407a85Spbrook    ;;
5242c1799a84SPaolo Bonzini  ${target_name}-linux-user)
52439c7a4202SBlue Swirl    if test "$linux" != "yes" ; then
524476ad07a4SPeter Maydell      error_exit "Target '$target' is only available on a Linux host"
52459c7a4202SBlue Swirl    fi
52469e407a85Spbrook    target_user_only="yes"
52479e407a85Spbrook    target_linux_user="yes"
52489e407a85Spbrook    ;;
5249c1799a84SPaolo Bonzini  ${target_name}-bsd-user)
52509cf55765SBlue Swirl    if test "$bsd" != "yes" ; then
525176ad07a4SPeter Maydell      error_exit "Target '$target' is only available on a BSD host"
52529c7a4202SBlue Swirl    fi
525384778508Sblueswir1    target_user_only="yes"
525484778508Sblueswir1    target_bsd_user="yes"
525584778508Sblueswir1    ;;
52569e407a85Spbrook  *)
525776ad07a4SPeter Maydell    error_exit "Target '$target' not recognised"
52589e407a85Spbrook    exit 1
52599e407a85Spbrook    ;;
52609e407a85Spbrookesac
5261831b7825Sths
526297a847bcSbellardmkdir -p $target_dir
526325be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak
526497a847bcSbellard
5265e5fe0c52Spbrookbflt="no"
5266c1799a84SPaolo Bonziniinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
526756aebc89Spbrookgdb_xml_files=""
52687ba1e619Saliguori
5269c1799a84SPaolo BonziniTARGET_ARCH="$target_name"
52706acff7daSJuan QuintelaTARGET_BASE_ARCH=""
5271e6e91b9cSJuan QuintelaTARGET_ABI_DIR=""
5272e73aae67SJuan Quintela
5273c1799a84SPaolo Bonzinicase "$target_name" in
52742408a527Saurel32  i386)
52752408a527Saurel32  ;;
52762408a527Saurel32  x86_64)
52776acff7daSJuan Quintela    TARGET_BASE_ARCH=i386
52782408a527Saurel32  ;;
52792408a527Saurel32  alpha)
52802408a527Saurel32  ;;
52812408a527Saurel32  arm|armeb)
5282b498c8a0SJuan Quintela    TARGET_ARCH=arm
5283e5fe0c52Spbrook    bflt="yes"
528456aebc89Spbrook    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
52852408a527Saurel32  ;;
52866a49fa95SAlexander Graf  aarch64)
52876a49fa95SAlexander Graf    TARGET_BASE_ARCH=arm
52886a49fa95SAlexander Graf    bflt="yes"
52898f95ce2eSPeter Maydell    gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
52906a49fa95SAlexander Graf  ;;
52912408a527Saurel32  cris)
52922408a527Saurel32  ;;
5293613a22c9SMichael Walle  lm32)
5294613a22c9SMichael Walle  ;;
52952408a527Saurel32  m68k)
52960938cda5Saurel32    bflt="yes"
529756aebc89Spbrook    gdb_xml_files="cf-core.xml cf-fp.xml"
52982408a527Saurel32  ;;
5299877fdc12SEdgar E. Iglesias  microblaze|microblazeel)
5300877fdc12SEdgar E. Iglesias    TARGET_ARCH=microblaze
530172b675caSEdgar E. Iglesias    bflt="yes"
530272b675caSEdgar E. Iglesias  ;;
53032408a527Saurel32  mips|mipsel)
5304b498c8a0SJuan Quintela    TARGET_ARCH=mips
530525be210fSJuan Quintela    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
53062408a527Saurel32  ;;
53072408a527Saurel32  mipsn32|mipsn32el)
5308597e2cecSRichard Henderson    TARGET_ARCH=mips64
53096acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
531025be210fSJuan Quintela    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5311597e2cecSRichard Henderson    echo "TARGET_ABI32=y" >> $config_target_mak
53122408a527Saurel32  ;;
53132408a527Saurel32  mips64|mips64el)
5314b498c8a0SJuan Quintela    TARGET_ARCH=mips64
53156acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
531625be210fSJuan Quintela    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
53172408a527Saurel32  ;;
5318d15a9c23SAnthony Green  moxie)
5319d15a9c23SAnthony Green  ;;
5320e67db06eSJia Liu  or32)
5321e67db06eSJia Liu    TARGET_ARCH=openrisc
5322e67db06eSJia Liu    TARGET_BASE_ARCH=openrisc
5323e67db06eSJia Liu  ;;
53242408a527Saurel32  ppc)
5325c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
53262408a527Saurel32  ;;
53272408a527Saurel32  ppcemb)
53286acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
5329e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
5330c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
53312408a527Saurel32  ;;
53322408a527Saurel32  ppc64)
53336acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
5334e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
5335c8b3532dSaurel32    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
53362408a527Saurel32  ;;
53379c35126cSDoug Kwan  ppc64le)
53389c35126cSDoug Kwan    TARGET_ARCH=ppc64
53399c35126cSDoug Kwan    TARGET_BASE_ARCH=ppc
53409c35126cSDoug Kwan    TARGET_ABI_DIR=ppc
53419c35126cSDoug Kwan    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
53429c35126cSDoug Kwan  ;;
53432408a527Saurel32  ppc64abi32)
5344b498c8a0SJuan Quintela    TARGET_ARCH=ppc64
53456acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
5346e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
534725be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
5348c8b3532dSaurel32    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
53492408a527Saurel32  ;;
53502408a527Saurel32  sh4|sh4eb)
5351b498c8a0SJuan Quintela    TARGET_ARCH=sh4
53524dbed897Spbrook    bflt="yes"
53532408a527Saurel32  ;;
53542408a527Saurel32  sparc)
53552408a527Saurel32  ;;
53562408a527Saurel32  sparc64)
53576acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
53582408a527Saurel32  ;;
53592408a527Saurel32  sparc32plus)
5360b498c8a0SJuan Quintela    TARGET_ARCH=sparc64
53616acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
5362e6e91b9cSJuan Quintela    TARGET_ABI_DIR=sparc
536325be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
53642408a527Saurel32  ;;
536524e804ecSAlexander Graf  s390x)
5366ca343c7aSEric Farman    gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
536724e804ecSAlexander Graf  ;;
53685ecaa4edSPeter Crosthwaite  tricore)
53695ecaa4edSPeter Crosthwaite  ;;
5370d2fbca94SGuan Xuetao  unicore32)
5371d2fbca94SGuan Xuetao  ;;
5372cfa550c6SMax Filippov  xtensa|xtensaeb)
5373cfa550c6SMax Filippov    TARGET_ARCH=xtensa
5374cfa550c6SMax Filippov  ;;
53752408a527Saurel32  *)
537676ad07a4SPeter Maydell    error_exit "Unsupported target CPU"
53772408a527Saurel32  ;;
53782408a527Saurel32esac
53795e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
53805e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then
53815e8861a0SPaolo Bonzini  TARGET_BASE_ARCH=$TARGET_ARCH
53825e8861a0SPaolo Bonzinifi
53835e8861a0SPaolo Bonzini
53845e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile"
53855e8861a0SPaolo Bonzini
538699afc91dSDaniel P. Berrangeupper() {
538799afc91dSDaniel P. Berrange    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
538899afc91dSDaniel P. Berrange}
538999afc91dSDaniel P. Berrange
539099afc91dSDaniel P. Berrangetarget_arch_name="`upper $TARGET_ARCH`"
539125be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak
5392c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak
539325be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5394e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then
5395e6e91b9cSJuan Quintela  TARGET_ABI_DIR=$TARGET_ARCH
5396e6e91b9cSJuan Quintelafi
539725be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5398adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then
5399adfc3e91SStacey Son    echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5400adfc3e91SStacey Sonfi
5401c1799a84SPaolo Bonzinicase "$target_name" in
54021b0c87fcSJuan Quintela  i386|x86_64)
54031b0c87fcSJuan Quintela    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
540425be210fSJuan Quintela      echo "CONFIG_XEN=y" >> $config_target_mak
5405eb6fda0fSAnthony PERARD      if test "$xen_pci_passthrough" = yes; then
5406eb6fda0fSAnthony PERARD        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5407eb6fda0fSAnthony PERARD      fi
5408432d268cSJun Nakajima    fi
540959d21e53SAlexander Graf    ;;
541059d21e53SAlexander Graf  *)
54111b0c87fcSJuan Quintelaesac
5412c1799a84SPaolo Bonzinicase "$target_name" in
5413222e7d11SSanjay Lal  aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
5414c59249f9SJuan Quintela    # Make sure the target and host cpus are compatible
5415c59249f9SJuan Quintela    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5416c1799a84SPaolo Bonzini      \( "$target_name" = "$cpu" -o \
5417c1799a84SPaolo Bonzini      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5418c1799a84SPaolo Bonzini      \( "$target_name" = "ppc64"  -a "$cpu" = "ppc" \) -o \
5419c1799a84SPaolo Bonzini      \( "$target_name" = "ppc"    -a "$cpu" = "ppc64" \) -o \
5420c1799a84SPaolo Bonzini      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
5421222e7d11SSanjay Lal      \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
5422c1799a84SPaolo Bonzini      \( "$target_name" = "x86_64" -a "$cpu" = "i386"   \) -o \
542318b8263eSMichael Tokarev      \( "$target_name" = "i386"   -a "$cpu" = "x86_64" \) -o \
542418b8263eSMichael Tokarev      \( "$target_name" = "x86_64" -a "$cpu" = "x32"   \) -o \
542518b8263eSMichael Tokarev      \( "$target_name" = "i386"   -a "$cpu" = "x32" \) \) ; then
542625be210fSJuan Quintela      echo "CONFIG_KVM=y" >> $config_target_mak
54271ba16968SStefan Weil      if test "$vhost_net" = "yes" ; then
5428d5970055SMichael S. Tsirkin        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5429d5970055SMichael S. Tsirkin      fi
5430c59249f9SJuan Quintela    fi
5431c59249f9SJuan Quintelaesac
5432de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
543325be210fSJuan Quintela  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
543497a847bcSbellardfi
543597a847bcSbellardif test "$target_softmmu" = "yes" ; then
543625be210fSJuan Quintela  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5437de83cd02Sbellardfi
5438997344f3Sbellardif test "$target_user_only" = "yes" ; then
543925be210fSJuan Quintela  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5440a2c80be9SStefan Weil  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5441997344f3Sbellardfi
5442831b7825Sthsif test "$target_linux_user" = "yes" ; then
544325be210fSJuan Quintela  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5444831b7825Sthsfi
544556aebc89Spbrooklist=""
544656aebc89Spbrookif test ! -z "$gdb_xml_files" ; then
544756aebc89Spbrook  for x in $gdb_xml_files; do
544856aebc89Spbrook    list="$list $source_path/gdb-xml/$x"
544956aebc89Spbrook  done
545025be210fSJuan Quintela  echo "TARGET_XML_FILES=$list" >> $config_target_mak
54513d0f1517SJuan Quintelafi
5452de83cd02Sbellard
5453e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
545425be210fSJuan Quintela  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5455e5fe0c52Spbrookfi
5456379f6698SPaul Brookif test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
545725be210fSJuan Quintela  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5458379f6698SPaul Brookfi
545984778508Sblueswir1if test "$target_bsd_user" = "yes" ; then
546025be210fSJuan Quintela  echo "CONFIG_BSD_USER=y" >> $config_target_mak
546184778508Sblueswir1fi
54625b0753e0Sbellard
54634afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets
5464fa282484SJuan Quintela
54654afddb55SJuan Quintelacflags=""
5466fa282484SJuan Quintelaldflags=""
54679b8e111fSJuan Quintela
546864656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do
546964656024SJuan Quintela  case "$i" in
547064656024SJuan Quintela  alpha)
547125be210fSJuan Quintela    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
547276cad711SPaolo Bonzini    echo "CONFIG_ALPHA_DIS=y"  >> config-all-disas.mak
547364656024SJuan Quintela  ;;
547482295d8aSRichard Henderson  aarch64)
547582295d8aSRichard Henderson    if test -n "${cxx}"; then
547682295d8aSRichard Henderson      echo "CONFIG_ARM_A64_DIS=y"  >> $config_target_mak
547782295d8aSRichard Henderson      echo "CONFIG_ARM_A64_DIS=y"  >> config-all-disas.mak
547882295d8aSRichard Henderson    fi
547982295d8aSRichard Henderson  ;;
548064656024SJuan Quintela  arm)
548125be210fSJuan Quintela    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
548276cad711SPaolo Bonzini    echo "CONFIG_ARM_DIS=y"  >> config-all-disas.mak
5483999b53ecSClaudio Fontana    if test -n "${cxx}"; then
5484999b53ecSClaudio Fontana      echo "CONFIG_ARM_A64_DIS=y"  >> $config_target_mak
5485999b53ecSClaudio Fontana      echo "CONFIG_ARM_A64_DIS=y"  >> config-all-disas.mak
5486999b53ecSClaudio Fontana    fi
548764656024SJuan Quintela  ;;
548864656024SJuan Quintela  cris)
548925be210fSJuan Quintela    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
549076cad711SPaolo Bonzini    echo "CONFIG_CRIS_DIS=y"  >> config-all-disas.mak
549164656024SJuan Quintela  ;;
549264656024SJuan Quintela  hppa)
549325be210fSJuan Quintela    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
549476cad711SPaolo Bonzini    echo "CONFIG_HPPA_DIS=y"  >> config-all-disas.mak
549564656024SJuan Quintela  ;;
5496c72b26ecSRichard Henderson  i386|x86_64|x32)
549725be210fSJuan Quintela    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
549876cad711SPaolo Bonzini    echo "CONFIG_I386_DIS=y"  >> config-all-disas.mak
549964656024SJuan Quintela  ;;
5500903ec55cSAurelien Jarno  ia64*)
5501903ec55cSAurelien Jarno    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
550276cad711SPaolo Bonzini    echo "CONFIG_IA64_DIS=y"  >> config-all-disas.mak
5503903ec55cSAurelien Jarno  ;;
550479368f49SMichael Walle  lm32)
550579368f49SMichael Walle    echo "CONFIG_LM32_DIS=y"  >> $config_target_mak
550676cad711SPaolo Bonzini    echo "CONFIG_LM32_DIS=y"  >> config-all-disas.mak
550779368f49SMichael Walle  ;;
550864656024SJuan Quintela  m68k)
550925be210fSJuan Quintela    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
551076cad711SPaolo Bonzini    echo "CONFIG_M68K_DIS=y"  >> config-all-disas.mak
551164656024SJuan Quintela  ;;
5512877fdc12SEdgar E. Iglesias  microblaze*)
551325be210fSJuan Quintela    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
551476cad711SPaolo Bonzini    echo "CONFIG_MICROBLAZE_DIS=y"  >> config-all-disas.mak
551564656024SJuan Quintela  ;;
551664656024SJuan Quintela  mips*)
551725be210fSJuan Quintela    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
551876cad711SPaolo Bonzini    echo "CONFIG_MIPS_DIS=y"  >> config-all-disas.mak
551964656024SJuan Quintela  ;;
5520d15a9c23SAnthony Green  moxie*)
5521d15a9c23SAnthony Green    echo "CONFIG_MOXIE_DIS=y"  >> $config_target_mak
5522d15a9c23SAnthony Green    echo "CONFIG_MOXIE_DIS=y"  >> config-all-disas.mak
5523d15a9c23SAnthony Green  ;;
5524e67db06eSJia Liu  or32)
5525e67db06eSJia Liu    echo "CONFIG_OPENRISC_DIS=y"  >> $config_target_mak
552676cad711SPaolo Bonzini    echo "CONFIG_OPENRISC_DIS=y"  >> config-all-disas.mak
5527e67db06eSJia Liu  ;;
552864656024SJuan Quintela  ppc*)
552925be210fSJuan Quintela    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
553076cad711SPaolo Bonzini    echo "CONFIG_PPC_DIS=y"  >> config-all-disas.mak
553164656024SJuan Quintela  ;;
553224e804ecSAlexander Graf  s390*)
553325be210fSJuan Quintela    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
553476cad711SPaolo Bonzini    echo "CONFIG_S390_DIS=y"  >> config-all-disas.mak
553564656024SJuan Quintela  ;;
553664656024SJuan Quintela  sh4)
553725be210fSJuan Quintela    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
553876cad711SPaolo Bonzini    echo "CONFIG_SH4_DIS=y"  >> config-all-disas.mak
553964656024SJuan Quintela  ;;
554064656024SJuan Quintela  sparc*)
554125be210fSJuan Quintela    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
554276cad711SPaolo Bonzini    echo "CONFIG_SPARC_DIS=y"  >> config-all-disas.mak
554364656024SJuan Quintela  ;;
5544cfa550c6SMax Filippov  xtensa*)
5545cfa550c6SMax Filippov    echo "CONFIG_XTENSA_DIS=y"  >> $config_target_mak
554676cad711SPaolo Bonzini    echo "CONFIG_XTENSA_DIS=y"  >> config-all-disas.mak
5547cfa550c6SMax Filippov  ;;
554864656024SJuan Quintela  esac
554964656024SJuan Quinteladone
55509195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then
55519195b2c2SStefan Weil  echo "CONFIG_TCI_DIS=y"  >> $config_target_mak
555276cad711SPaolo Bonzini  echo "CONFIG_TCI_DIS=y"  >> config-all-disas.mak
55539195b2c2SStefan Weilfi
555464656024SJuan Quintela
55556ee7126fSJuan Quintelacase "$ARCH" in
55566ee7126fSJuan Quintelaalpha)
55576ee7126fSJuan Quintela  # Ensure there's only a single GP
55586ee7126fSJuan Quintela  cflags="-msmall-data $cflags"
55596ee7126fSJuan Quintela;;
55606ee7126fSJuan Quintelaesac
55616ee7126fSJuan Quintela
5562d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then
556325be210fSJuan Quintela  echo "TARGET_GPROF=yes" >> $config_target_mak
5564d02c1db3SJuan Quintela  if test "$target_linux_user" = "yes" ; then
5565d02c1db3SJuan Quintela    cflags="-p $cflags"
5566d02c1db3SJuan Quintela    ldflags="-p $ldflags"
5567d02c1db3SJuan Quintela  fi
5568d02c1db3SJuan Quintela  if test "$target_softmmu" = "yes" ; then
5569d02c1db3SJuan Quintela    ldflags="-p $ldflags"
557025be210fSJuan Quintela    echo "GPROF_CFLAGS=-p" >> $config_target_mak
5571d02c1db3SJuan Quintela  fi
5572d02c1db3SJuan Quintelafi
5573d02c1db3SJuan Quintela
55749b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5575964c6fa1SRichard Henderson  ldflags="$ldflags $textseg_ldflags"
5576fa282484SJuan Quintelafi
5577fa282484SJuan Quintela
557825be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak
557925be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5580fa282484SJuan Quintela
558197a847bcSbellarddone # for target in $targets
55827d13299dSbellard
5583b776eca1SGerd Hoffmannif [ "$pixman" = "internal" ]; then
5584b776eca1SGerd Hoffmann  echo "config-host.h: subdir-pixman" >> $config_host_mak
5585b776eca1SGerd Hoffmannfi
5586b776eca1SGerd Hoffmann
55872da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then
55882da776dbSMichael R. Hinesecho "CONFIG_RDMA=y" >> $config_host_mak
55892da776dbSMichael R. Hinesfi
55902da776dbSMichael R. Hines
5591a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then
5592a540f158SPeter Crosthwaite  echo "config-host.h: subdir-dtc" >> $config_host_mak
5593a540f158SPeter Crosthwaitefi
5594a540f158SPeter Crosthwaite
5595a99d57bbSWanlong Gaoif test "$numa" = "yes"; then
5596a99d57bbSWanlong Gao  echo "CONFIG_NUMA=y" >> $config_host_mak
5597a99d57bbSWanlong Gaofi
5598a99d57bbSWanlong Gao
5599fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then
5600fd0e6053SJohn Snow  echo "export CCACHE_CPP2=y" >> $config_host_mak
5601fd0e6053SJohn Snowfi
5602fd0e6053SJohn Snow
5603d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory
5604f93296eaSWenchao XiaDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
56052b170effSMichael TokarevDIRS="$DIRS fsdev"
56069933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
56072d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios"
56082dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated"
5609c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5610c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5611aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5612ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5613446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile"
56149933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile"
56152d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
56164652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp"
5617753d11f2SRichard Hendersonfor bios_file in \
5618753d11f2SRichard Henderson    $source_path/pc-bios/*.bin \
56195acc2ec0SGerd Hoffmann    $source_path/pc-bios/*.aml \
5620753d11f2SRichard Henderson    $source_path/pc-bios/*.rom \
5621753d11f2SRichard Henderson    $source_path/pc-bios/*.dtb \
5622e89e33e1SDominik Dingel    $source_path/pc-bios/*.img \
5623753d11f2SRichard Henderson    $source_path/pc-bios/openbios-* \
56244e73c781SAlexander Graf    $source_path/pc-bios/u-boot.* \
5625753d11f2SRichard Henderson    $source_path/pc-bios/palcode-*
5626753d11f2SRichard Hendersondo
56277ea78b74SJan Kiszka    FILES="$FILES pc-bios/`basename $bios_file`"
56287ea78b74SJan Kiszkadone
5629c2304b52SMarcel Apfelbaumfor test_file in `find $source_path/tests/acpi-test-data -type f`
5630c2304b52SMarcel Apfelbaumdo
5631c2304b52SMarcel Apfelbaum    FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5632c2304b52SMarcel Apfelbaumdone
5633d1807a4fSPaolo Bonzinimkdir -p $DIRS
56347d13299dSbellardfor f in $FILES ; do
5635cab00a5aSMichael S. Tsirkin    if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5636f9245e10SPeter Maydell        symlink "$source_path/$f" "$f"
5637f9245e10SPeter Maydell    fi
56387d13299dSbellarddone
56391ad2134fSPaul Brook
5640c34ebfdcSAnthony Liguori# temporary config to build submodules
56412d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do
5642c34ebfdcSAnthony Liguori    config_mak=roms/$rom/config.mak
564337116c89SStefan Weil    echo "# Automatically generated by configure - do not modify" > $config_mak
5644c34ebfdcSAnthony Liguori    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
56453dd46c78SBlue Swirl    echo "AS=$as" >> $config_mak
5646c34ebfdcSAnthony Liguori    echo "CC=$cc" >> $config_mak
5647c34ebfdcSAnthony Liguori    echo "BCC=bcc" >> $config_mak
56483dd46c78SBlue Swirl    echo "CPP=$cpp" >> $config_mak
5649c34ebfdcSAnthony Liguori    echo "OBJCOPY=objcopy" >> $config_mak
5650a31a8642SMichael S. Tsirkin    echo "IASL=$iasl" >> $config_mak
5651c34ebfdcSAnthony Liguori    echo "LD=$ld" >> $config_mak
5652c34ebfdcSAnthony Liguoridone
5653c34ebfdcSAnthony Liguori
565476c7560aSMax Reitz# set up qemu-iotests in this build directory
565576c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env"
565676c7560aSMax Reitziotests_check="tests/qemu-iotests/check"
565776c7560aSMax Reitz
565876c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env"
565976c7560aSMax Reitzecho >> "$iotests_common_env"
566076c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env"
566176c7560aSMax Reitz
566276c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then
566376c7560aSMax Reitz    symlink "$source_path/$iotests_check" "$iotests_check"
566476c7560aSMax Reitzfi
566576c7560aSMax Reitz
5666dc655404SMichael S. Tsirkin# Save the configure command line for later reuse.
5667dc655404SMichael S. Tsirkincat <<EOD >config.status
5668dc655404SMichael S. Tsirkin#!/bin/sh
5669dc655404SMichael S. Tsirkin# Generated by configure.
5670dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration.
5671dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging
5672dc655404SMichael S. Tsirkin# configure, is in config.log if it exists.
5673dc655404SMichael S. TsirkinEOD
5674dc655404SMichael S. Tsirkinprintf "exec" >>config.status
5675dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status
5676dc655404SMichael S. Tsirkinecho >>config.status
5677dc655404SMichael S. Tsirkinchmod +x config.status
5678dc655404SMichael S. Tsirkin
56798cd05ab6SPeter Maydellrm -r "$TMPDIR1"
5680