xref: /openbmc/qemu/configure (revision 271f37abb510607ca7650e40951284692a67579a)
1 7d13299dSbellard#!/bin/sh
2 7d13299dSbellard#
3 3ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard
4 7d13299dSbellard#
5 8cd05ab6SPeter Maydell
6 99519e67SCornelia Huck# Unset some variables known to interfere with behavior of common tools,
7 99519e67SCornelia Huck# just as autoconf does.
8 99519e67SCornelia HuckCLICOLOR_FORCE= GREP_OPTIONS=
9 99519e67SCornelia Huckunset CLICOLOR_FORCE GREP_OPTIONS
10 99519e67SCornelia Huck
11 5e4dfd3dSJohn Snow# Don't allow CCACHE, if present, to use cached results of compile tests!
12 5e4dfd3dSJohn Snowexport CCACHE_RECACHE=yes
13 5e4dfd3dSJohn Snow
14 8cd05ab6SPeter Maydell# Temporary directory used for files created while
15 8cd05ab6SPeter Maydell# configure runs. Since it is in the build directory
16 8cd05ab6SPeter Maydell# we can safely blow away any previous version of it
17 8cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete
18 8cd05ab6SPeter Maydell# it when configure exits.)
19 8cd05ab6SPeter MaydellTMPDIR1="config-temp"
20 8cd05ab6SPeter Maydellrm -rf "${TMPDIR1}"
21 8cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}"
22 8cd05ab6SPeter Maydellif [ $? -ne 0 ]; then
23 8cd05ab6SPeter Maydell    echo "ERROR: failed to create temporary directory"
24 8cd05ab6SPeter Maydell    exit 1
25 7d13299dSbellardfi
26 7d13299dSbellard
27 8cd05ab6SPeter MaydellTMPB="qemu-conf"
28 8cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c"
29 66518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o"
30 9c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx"
31 8cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe"
32 6969ec6cSJames ClarkeTMPMO="${TMPDIR1}/${TMPB}.mo"
33 7d13299dSbellard
34 da1d85e3SGerd Hoffmannrm -f config.log
35 9ac81bbbSmalc
36 b48e3611SPeter Maydell# Print a helpful header at the top of config.log
37 b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log
38 979ae168SPeter Maydellprintf "# Configured with:" >> config.log
39 979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log
40 979ae168SPeter Maydellecho >> config.log
41 b48e3611SPeter Maydellecho "#" >> config.log
42 b48e3611SPeter Maydell
43 76ad07a4SPeter Maydellerror_exit() {
44 76ad07a4SPeter Maydell    echo
45 76ad07a4SPeter Maydell    echo "ERROR: $1"
46 76ad07a4SPeter Maydell    while test -n "$2"; do
47 76ad07a4SPeter Maydell        echo "       $2"
48 76ad07a4SPeter Maydell        shift
49 76ad07a4SPeter Maydell    done
50 76ad07a4SPeter Maydell    echo
51 76ad07a4SPeter Maydell    exit 1
52 76ad07a4SPeter Maydell}
53 76ad07a4SPeter Maydell
54 9c83ffd8SPeter Maydelldo_compiler() {
55 9c83ffd8SPeter Maydell    # Run the compiler, capturing its output to the log. First argument
56 9c83ffd8SPeter Maydell    # is compiler binary to execute.
57 9c83ffd8SPeter Maydell    local compiler="$1"
58 9c83ffd8SPeter Maydell    shift
59 9c83ffd8SPeter Maydell    echo $compiler "$@" >> config.log
60 9c83ffd8SPeter Maydell    $compiler "$@" >> config.log 2>&1 || return $?
61 8dc38a78SPeter Maydell    # Test passed. If this is an --enable-werror build, rerun
62 8dc38a78SPeter Maydell    # the test with -Werror and bail out if it fails. This
63 8dc38a78SPeter Maydell    # makes warning-generating-errors in configure test code
64 8dc38a78SPeter Maydell    # obvious to developers.
65 8dc38a78SPeter Maydell    if test "$werror" != "yes"; then
66 8dc38a78SPeter Maydell        return 0
67 8dc38a78SPeter Maydell    fi
68 8dc38a78SPeter Maydell    # Don't bother rerunning the compile if we were already using -Werror
69 8dc38a78SPeter Maydell    case "$*" in
70 8dc38a78SPeter Maydell        *-Werror*)
71 8dc38a78SPeter Maydell           return 0
72 8dc38a78SPeter Maydell        ;;
73 8dc38a78SPeter Maydell    esac
74 9c83ffd8SPeter Maydell    echo $compiler -Werror "$@" >> config.log
75 9c83ffd8SPeter Maydell    $compiler -Werror "$@" >> config.log 2>&1 && return $?
76 76ad07a4SPeter Maydell    error_exit "configure test passed without -Werror but failed with -Werror." \
77 76ad07a4SPeter Maydell        "This is probably a bug in the configure script. The failing command" \
78 76ad07a4SPeter Maydell        "will be at the bottom of config.log." \
79 76ad07a4SPeter Maydell        "You can run configure with --disable-werror to bypass this check."
80 8dc38a78SPeter Maydell}
81 8dc38a78SPeter Maydell
82 9c83ffd8SPeter Maydelldo_cc() {
83 9c83ffd8SPeter Maydell    do_compiler "$cc" "$@"
84 9c83ffd8SPeter Maydell}
85 9c83ffd8SPeter Maydell
86 9c83ffd8SPeter Maydelldo_cxx() {
87 9c83ffd8SPeter Maydell    do_compiler "$cxx" "$@"
88 9c83ffd8SPeter Maydell}
89 9c83ffd8SPeter Maydell
90 9c83ffd8SPeter Maydellupdate_cxxflags() {
91 9c83ffd8SPeter Maydell    # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
92 9c83ffd8SPeter Maydell    # options which some versions of GCC's C++ compiler complain about
93 9c83ffd8SPeter Maydell    # because they only make sense for C programs.
94 9c83ffd8SPeter Maydell    QEMU_CXXFLAGS=
95 9c83ffd8SPeter Maydell    for arg in $QEMU_CFLAGS; do
96 9c83ffd8SPeter Maydell        case $arg in
97 9c83ffd8SPeter Maydell            -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
98 9c83ffd8SPeter Maydell            -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
99 9c83ffd8SPeter Maydell                ;;
100 9c83ffd8SPeter Maydell            *)
101 9c83ffd8SPeter Maydell                QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
102 9c83ffd8SPeter Maydell                ;;
103 9c83ffd8SPeter Maydell        esac
104 9c83ffd8SPeter Maydell    done
105 9c83ffd8SPeter Maydell}
106 9c83ffd8SPeter Maydell
107 52166aa0SJuan Quintelacompile_object() {
108 fd0e6053SJohn Snow  local_cflags="$1"
109 fd0e6053SJohn Snow  do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
110 52166aa0SJuan Quintela}
111 52166aa0SJuan Quintela
112 52166aa0SJuan Quintelacompile_prog() {
113 52166aa0SJuan Quintela  local_cflags="$1"
114 52166aa0SJuan Quintela  local_ldflags="$2"
115 8dc38a78SPeter Maydell  do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
116 52166aa0SJuan Quintela}
117 52166aa0SJuan Quintela
118 11568d6dSPaolo Bonzini# symbolically link $1 to $2.  Portable version of "ln -sf".
119 11568d6dSPaolo Bonzinisymlink() {
120 72b8b5a1SStefan Weil  rm -rf "$2"
121 ec5b06d7SAnthony Liguori  mkdir -p "$(dirname "$2")"
122 72b8b5a1SStefan Weil  ln -s "$1" "$2"
123 11568d6dSPaolo Bonzini}
124 11568d6dSPaolo Bonzini
125 0dba6195SLoïc Minier# check whether a command is available to this shell (may be either an
126 0dba6195SLoïc Minier# executable or a builtin)
127 0dba6195SLoïc Minierhas() {
128 0dba6195SLoïc Minier    type "$1" >/dev/null 2>&1
129 0dba6195SLoïc Minier}
130 0dba6195SLoïc Minier
131 0dba6195SLoïc Minier# search for an executable in PATH
132 0dba6195SLoïc Minierpath_of() {
133 0dba6195SLoïc Minier    local_command="$1"
134 0dba6195SLoïc Minier    local_ifs="$IFS"
135 0dba6195SLoïc Minier    local_dir=""
136 0dba6195SLoïc Minier
137 0dba6195SLoïc Minier    # pathname has a dir component?
138 0dba6195SLoïc Minier    if [ "${local_command#*/}" != "$local_command" ]; then
139 0dba6195SLoïc Minier        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
140 0dba6195SLoïc Minier            echo "$local_command"
141 0dba6195SLoïc Minier            return 0
142 0dba6195SLoïc Minier        fi
143 0dba6195SLoïc Minier    fi
144 0dba6195SLoïc Minier    if [ -z "$local_command" ]; then
145 0dba6195SLoïc Minier        return 1
146 0dba6195SLoïc Minier    fi
147 0dba6195SLoïc Minier
148 0dba6195SLoïc Minier    IFS=:
149 0dba6195SLoïc Minier    for local_dir in $PATH; do
150 0dba6195SLoïc Minier        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
151 0dba6195SLoïc Minier            echo "$local_dir/$local_command"
152 0dba6195SLoïc Minier            IFS="${local_ifs:-$(printf ' \t\n')}"
153 0dba6195SLoïc Minier            return 0
154 0dba6195SLoïc Minier        fi
155 0dba6195SLoïc Minier    done
156 0dba6195SLoïc Minier    # not found
157 0dba6195SLoïc Minier    IFS="${local_ifs:-$(printf ' \t\n')}"
158 0dba6195SLoïc Minier    return 1
159 0dba6195SLoïc Minier}
160 0dba6195SLoïc Minier
161 5b808275SLluís Vilanovahave_backend () {
162 5b808275SLluís Vilanova    echo "$trace_backends" | grep "$1" >/dev/null
163 5b808275SLluís Vilanova}
164 5b808275SLluís Vilanova
165 7d13299dSbellard# default parameters
166 89138857SStefan Weilsource_path=$(dirname "$0")
167 2ff6b91eSJuan Quintelacpu=""
168 a31a8642SMichael S. Tsirkiniasl="iasl"
169 1e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M"
170 43ce4dfeSbellardstatic="no"
171 7d13299dSbellardcross_prefix=""
172 0c58ac1cSmalcaudio_drv_list=""
173 b64ec4e4SFam Zhengblock_drv_rw_whitelist=""
174 b64ec4e4SFam Zhengblock_drv_ro_whitelist=""
175 e49d021eSPeter Maydellhost_cc="cc"
176 73da375eSJuan Quintelalibs_softmmu=""
177 3e2e0e6bSJuan Quintelalibs_tools=""
178 67f86e8eSJuan Quintelaaudio_pt_int=""
179 d5631638Smalcaudio_win_int=""
180 2b2e59e6SPaolo Bonzinicc_i386=i386-pc-linux-gnu-gcc
181 957f1f99SMichael Rothlibs_qga=""
182 5bc62e01SGerd Hoffmanndebug_info="yes"
183 63678e17SSteven Noonanstack_protector=""
184 ac0df51dSaliguori
185 afb63ebdSStefan Weil# Don't accept a target_list environment variable.
186 afb63ebdSStefan Weilunset target_list
187 377529c0SPaolo Bonzini
188 377529c0SPaolo Bonzini# Default value for a variable defining feature "foo".
189 377529c0SPaolo Bonzini#  * foo="no"  feature will only be used if --enable-foo arg is given
190 377529c0SPaolo Bonzini#  * foo=""    feature will be searched for, and if found, will be used
191 377529c0SPaolo Bonzini#              unless --disable-foo is given
192 377529c0SPaolo Bonzini#  * foo="yes" this value will only be set by --enable-foo flag.
193 377529c0SPaolo Bonzini#              feature will searched for,
194 377529c0SPaolo Bonzini#              if not found, configure exits with error
195 377529c0SPaolo Bonzini#
196 377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args.
197 377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it
198 377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found.
199 377529c0SPaolo Bonzini
200 377529c0SPaolo Bonzinibluez=""
201 377529c0SPaolo Bonzinibrlapi=""
202 377529c0SPaolo Bonzinicurl=""
203 377529c0SPaolo Bonzinicurses=""
204 377529c0SPaolo Bonzinidocs=""
205 377529c0SPaolo Bonzinifdt=""
206 58952137SVincenzo Maffionenetmap="no"
207 e2134eb9SGerd Hoffmannpixman=""
208 377529c0SPaolo Bonzinisdl=""
209 ee8466d0SCole Robinsonsdlabi=""
210 983eef5aSMeador Ingevirtfs=""
211 821601eaSJes Sorensenvnc="yes"
212 377529c0SPaolo Bonzinisparse="no"
213 377529c0SPaolo Bonzinivde=""
214 377529c0SPaolo Bonzinivnc_sasl=""
215 377529c0SPaolo Bonzinivnc_jpeg=""
216 377529c0SPaolo Bonzinivnc_png=""
217 377529c0SPaolo Bonzinixen=""
218 d5b93ddfSAnthony PERARDxen_ctrl_version=""
219 64a7ad6fSIan Campbellxen_pv_domain_build="no"
220 eb6fda0fSAnthony PERARDxen_pci_passthrough=""
221 377529c0SPaolo Bonzinilinux_aio=""
222 47e98658SCorey Bryantcap_ng=""
223 377529c0SPaolo Bonziniattr=""
224 4f26f2b6SAvi Kivitylibattr=""
225 377529c0SPaolo Bonzinixfs=""
226 377529c0SPaolo Bonzini
227 d41a75a2SBradvhost_net="no"
228 5e9be92dSNicholas Bellingervhost_scsi="no"
229 fc0b9b0eSStefan Hajnoczivhost_vsock="no"
230 d41a75a2SBradkvm="no"
231 b0cb0a66SVincent Palatinhax="no"
232 2da776dbSMichael R. Hinesrdma=""
233 377529c0SPaolo Bonzinigprof="no"
234 377529c0SPaolo Bonzinidebug_tcg="no"
235 377529c0SPaolo Bonzinidebug="no"
236 b553a042SJohn Snowfortify_source=""
237 377529c0SPaolo Bonzinistrip_opt="yes"
238 9195b2c2SStefan Weiltcg_interpreter="no"
239 377529c0SPaolo Bonzinibigendian="no"
240 377529c0SPaolo Bonzinimingw32="no"
241 1d728c39SBlue Swirlgcov="no"
242 1d728c39SBlue Swirlgcov_tool="gcov"
243 377529c0SPaolo BonziniEXESUF=""
244 17969268SFam ZhengDSOSUF=".so"
245 17969268SFam ZhengLDFLAGS_SHARED="-shared"
246 17969268SFam Zhengmodules="no"
247 377529c0SPaolo Bonziniprefix="/usr/local"
248 377529c0SPaolo Bonzinimandir="\${prefix}/share/man"
249 528ae5b8SEduardo Habkostdatadir="\${prefix}/share"
250 850da188SEduardo Habkostqemu_docdir="\${prefix}/share/doc/qemu"
251 377529c0SPaolo Bonzinibindir="\${prefix}/bin"
252 3aa5d2beSAlon Levylibdir="\${prefix}/lib"
253 8bf188aaSMichael Tokarevlibexecdir="\${prefix}/libexec"
254 0f94d6daSAlon Levyincludedir="\${prefix}/include"
255 377529c0SPaolo Bonzinisysconfdir="\${prefix}/etc"
256 785c23aeSLuiz Capitulinolocal_statedir="\${prefix}/var"
257 377529c0SPaolo Bonziniconfsuffix="/qemu"
258 377529c0SPaolo Bonzinislirp="yes"
259 377529c0SPaolo Bonzinioss_lib=""
260 377529c0SPaolo Bonzinibsd="no"
261 377529c0SPaolo Bonzinilinux="no"
262 377529c0SPaolo Bonzinisolaris="no"
263 377529c0SPaolo Bonziniprofiler="no"
264 377529c0SPaolo Bonzinicocoa="no"
265 377529c0SPaolo Bonzinisoftmmu="yes"
266 377529c0SPaolo Bonzinilinux_user="no"
267 377529c0SPaolo Bonzinibsd_user="no"
268 377529c0SPaolo Bonziniaix="no"
269 377529c0SPaolo Bonziniblobs="yes"
270 377529c0SPaolo Bonzinipkgversion=""
271 40d6444eSAvi Kivitypie=""
272 3556c233SPaolo Bonziniqom_cast_debug="yes"
273 baf86d6bSPaolo Bonzinitrace_backends="log"
274 377529c0SPaolo Bonzinitrace_file="trace"
275 377529c0SPaolo Bonzinispice=""
276 377529c0SPaolo Bonzinirbd=""
277 7b02f544SMarc-André Lureausmartcard=""
278 2b2325ffSGerd Hoffmannlibusb=""
279 69354a83SHans de Goedeusb_redir=""
280 da076ffeSGerd Hoffmannopengl=""
281 014cb152SGerd Hoffmannopengl_dmabuf="no"
282 99f2dbd3SLiang Liavx2_opt="no"
283 1ece9905SAlon Levyzlib="yes"
284 b25c9dffSStefan Weillzo=""
285 b25c9dffSStefan Weilsnappy=""
286 6b383c08SPeter Wubzip2=""
287 e8ef31a3SMichael Tokarevguest_agent=""
288 d9840e25STomoki Sekiyamaguest_agent_with_vss="no"
289 50cbebb9SMichael Rothguest_agent_ntddscsi="no"
290 9dacf32dSYossi Hindinguest_agent_msi=""
291 d9840e25STomoki Sekiyamavss_win32_sdk=""
292 d9840e25STomoki Sekiyamawin_sdk="no"
293 4b1c11fdSDaniel P. Berrangewant_tools="yes"
294 c589b249SRonnie Sahlberglibiscsi=""
295 6542aa9cSPeter Lievenlibnfs=""
296 519175a2SAlex Barcelocoroutine=""
297 70c60c08SStefan Hajnoczicoroutine_pool=""
298 7d992e4dSPeter Lievendebug_stack_usage="no"
299 f794573eSEduardo Otuboseccomp=""
300 eb100396SBharata B Raoglusterfs=""
301 d85fa9ebSJeff Codyglusterfs_xlator_opt="no"
302 0c14fb47SBharata B Raoglusterfs_discard="no"
303 df3a429aSNiels de Vosglusterfs_fallocate="no"
304 7c815372SBharata B Raoglusterfs_zerofill="no"
305 a4ccabcfSAnthony Liguorigtk=""
306 9e04c683SStefan Weilgtkabi=""
307 925a0400SGerd Hoffmanngtk_gl="no"
308 a1c5e949SDaniel P. Berrangetls_priority="NORMAL"
309 ddbb0d09SDaniel P. Berrangegnutls=""
310 b917da4cSDaniel P. Berrangegnutls_rnd=""
311 91bfcdb0SDaniel P. Berrangenettle=""
312 fff2f982SDaniel P. Berrangenettle_kdf="no"
313 91bfcdb0SDaniel P. Berrangegcrypt=""
314 1f923c70SLongpeng(Mike)gcrypt_hmac="no"
315 37788f25SDaniel P. Berrangegcrypt_kdf="no"
316 bbbf9bfbSStefan Weilvte=""
317 9d9e1521SGerd Hoffmannvirglrenderer=""
318 e91c793cSCole Robinsontpm="yes"
319 0a12ec87SRichard W.M. Joneslibssh2=""
320 ed1701c6SDr. David Alan Gilbertlive_block_migration="yes"
321 a99d57bbSWanlong Gaonuma=""
322 2847b469SFam Zhengtcmalloc="no"
323 7b01cb97SAlexandre Derumierjemalloc="no"
324 a6b1d4c0SChanglong Xiereplication="yes"
325 da92c3ffSAshish Mittalvxhs=""
326 377529c0SPaolo Bonzini
327 898be3e0SPeter Maydellsupported_cpu="no"
328 898be3e0SPeter Maydellsupported_os="no"
329 fb59dabdSPeter Maydellbogus_os="no"
330 898be3e0SPeter Maydell
331 ac0df51dSaliguori# parse CC options first
332 ac0df51dSaliguorifor opt do
333 89138857SStefan Weil  optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
334 ac0df51dSaliguori  case "$opt" in
335 ac0df51dSaliguori  --cross-prefix=*) cross_prefix="$optarg"
336 ac0df51dSaliguori  ;;
337 3d8df640SPaolo Bonzini  --cc=*) CC="$optarg"
338 ac0df51dSaliguori  ;;
339 83f73fceSTomoki Sekiyama  --cxx=*) CXX="$optarg"
340 83f73fceSTomoki Sekiyama  ;;
341 ca4deeb1SPaolo Bonzini  --source-path=*) source_path="$optarg"
342 ca4deeb1SPaolo Bonzini  ;;
343 2ff6b91eSJuan Quintela  --cpu=*) cpu="$optarg"
344 2ff6b91eSJuan Quintela  ;;
345 de385287SAlex Bennée  --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
346 f9943cd5SGerd Hoffmann                    EXTRA_CFLAGS="$optarg"
347 e2a2ed06SJuan Quintela  ;;
348 a4969e90SAlex Bennée  --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
349 f9943cd5SGerd Hoffmann                     EXTRA_LDFLAGS="$optarg"
350 e2a2ed06SJuan Quintela  ;;
351 5bc62e01SGerd Hoffmann  --enable-debug-info) debug_info="yes"
352 5bc62e01SGerd Hoffmann  ;;
353 5bc62e01SGerd Hoffmann  --disable-debug-info) debug_info="no"
354 5bc62e01SGerd Hoffmann  ;;
355 ac0df51dSaliguori  esac
356 ac0df51dSaliguoridone
357 ac0df51dSaliguori# OS specific
358 ac0df51dSaliguori# Using uname is really, really broken.  Once we have the right set of checks
359 93148aa5SStefan Weil# we can eliminate its usage altogether.
360 ac0df51dSaliguori
361 e49d021eSPeter Maydell# Preferred compiler:
362 e49d021eSPeter Maydell#  ${CC} (if set)
363 e49d021eSPeter Maydell#  ${cross_prefix}gcc (if cross-prefix specified)
364 e49d021eSPeter Maydell#  system compiler
365 e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then
366 e49d021eSPeter Maydell  cc="$host_cc"
367 e49d021eSPeter Maydellelse
368 b3198cc2SStuart Yoder  cc="${CC-${cross_prefix}gcc}"
369 e49d021eSPeter Maydellfi
370 e49d021eSPeter Maydell
371 83f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then
372 83f73fceSTomoki Sekiyama  cxx="c++"
373 83f73fceSTomoki Sekiyamaelse
374 83f73fceSTomoki Sekiyama  cxx="${CXX-${cross_prefix}g++}"
375 83f73fceSTomoki Sekiyamafi
376 83f73fceSTomoki Sekiyama
377 b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}"
378 cdbd727cSRichard Hendersonas="${AS-${cross_prefix}as}"
379 5f6f0e27SRichard Hendersonccas="${CCAS-$cc}"
380 3dd46c78SBlue Swirlcpp="${CPP-$cc -E}"
381 b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}"
382 b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}"
383 4852ee95SStefan Weilnm="${NM-${cross_prefix}nm}"
384 b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}"
385 b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}"
386 17884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
387 17884d7bSSergei Trofimovichquery_pkg_config() {
388 17884d7bSSergei Trofimovich    "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
389 17884d7bSSergei Trofimovich}
390 17884d7bSSergei Trofimovichpkg_config=query_pkg_config
391 b3198cc2SStuart Yodersdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
392 47c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
393 ac0df51dSaliguori
394 45d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
395 45d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}"
396 45d285abSPeter Maydell
397 be17dc90SMichael S. Tsirkin# default flags for all hosts
398 2d31515bSPeter Maydell# We use -fwrapv to tell the compiler that we require a C dialect where
399 2d31515bSPeter Maydell# left shift of signed integers is well defined and has the expected
400 2d31515bSPeter Maydell# 2s-complement style results. (Both clang and gcc agree that it
401 2d31515bSPeter Maydell# provides these semantics.)
402 2d31515bSPeter MaydellQEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS"
403 f9188227SMike FrysingerQEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
404 c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
405 be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
406 6b4c305cSPaolo BonziniQEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
407 5bc62e01SGerd Hoffmannif test "$debug_info" = "yes"; then
408 5bc62e01SGerd Hoffmann    CFLAGS="-g $CFLAGS"
409 be17dc90SMichael S. Tsirkin    LDFLAGS="-g $LDFLAGS"
410 5bc62e01SGerd Hoffmannfi
411 be17dc90SMichael S. Tsirkin
412 ca4deeb1SPaolo Bonzini# make source path absolute
413 89138857SStefan Weilsource_path=$(cd "$source_path"; pwd)
414 ca4deeb1SPaolo Bonzini
415 cab00a5aSMichael S. Tsirkin# running configure in the source tree?
416 cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there.
417 cab00a5aSMichael S. Tsirkinif test -f "./configure"; then
418 cab00a5aSMichael S. Tsirkin    pwd_is_source_path="y"
419 cab00a5aSMichael S. Tsirkinelse
420 cab00a5aSMichael S. Tsirkin    pwd_is_source_path="n"
421 cab00a5aSMichael S. Tsirkinfi
422 cab00a5aSMichael S. Tsirkin
423 ac0df51dSaliguoricheck_define() {
424 ac0df51dSaliguoricat > $TMPC <<EOF
425 ac0df51dSaliguori#if !defined($1)
426 fd786e1aSPeter Maydell#error $1 not defined
427 ac0df51dSaliguori#endif
428 ac0df51dSaliguoriint main(void) { return 0; }
429 ac0df51dSaliguoriEOF
430 52166aa0SJuan Quintela  compile_object
431 ac0df51dSaliguori}
432 ac0df51dSaliguori
433 307119e7SGerd Hoffmanncheck_include() {
434 307119e7SGerd Hoffmanncat > $TMPC <<EOF
435 307119e7SGerd Hoffmann#include <$1>
436 307119e7SGerd Hoffmannint main(void) { return 0; }
437 307119e7SGerd HoffmannEOF
438 307119e7SGerd Hoffmann  compile_object
439 307119e7SGerd Hoffmann}
440 307119e7SGerd Hoffmann
441 93b25869SJohn Snowwrite_c_skeleton() {
442 93b25869SJohn Snow    cat > $TMPC <<EOF
443 93b25869SJohn Snowint main(void) { return 0; }
444 93b25869SJohn SnowEOF
445 93b25869SJohn Snow}
446 93b25869SJohn Snow
447 bbea4050SPeter Maydellif check_define __linux__ ; then
448 bbea4050SPeter Maydell  targetos="Linux"
449 bbea4050SPeter Maydellelif check_define _WIN32 ; then
450 bbea4050SPeter Maydell  targetos='MINGW32'
451 bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then
452 bbea4050SPeter Maydell  targetos='OpenBSD'
453 bbea4050SPeter Maydellelif check_define __sun__ ; then
454 bbea4050SPeter Maydell  targetos='SunOS'
455 bbea4050SPeter Maydellelif check_define __HAIKU__ ; then
456 bbea4050SPeter Maydell  targetos='Haiku'
457 bbea4050SPeter Maydellelse
458 89138857SStefan Weil  targetos=$(uname -s)
459 bbea4050SPeter Maydellfi
460 bbea4050SPeter Maydell
461 bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use.
462 bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're
463 bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify
464 bbea4050SPeter Maydell# the correct CPU with the --cpu option.
465 bbea4050SPeter Maydellcase $targetos in
466 bbea4050SPeter MaydellDarwin)
467 bbea4050SPeter Maydell  # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
468 bbea4050SPeter Maydell  # run 64-bit userspace code.
469 bbea4050SPeter Maydell  # If the user didn't specify a CPU explicitly and the kernel says this is
470 bbea4050SPeter Maydell  # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
471 bbea4050SPeter Maydell  if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
472 bbea4050SPeter Maydell    cpu="x86_64"
473 bbea4050SPeter Maydell  fi
474 bbea4050SPeter Maydell  ;;
475 bbea4050SPeter MaydellSunOS)
476 89138857SStefan Weil  # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo
477 bbea4050SPeter Maydell  if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
478 bbea4050SPeter Maydell    cpu="x86_64"
479 bbea4050SPeter Maydell  fi
480 bbea4050SPeter Maydellesac
481 bbea4050SPeter Maydell
482 2ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then
483 2ff6b91eSJuan Quintela  # command line argument
484 2ff6b91eSJuan Quintela  :
485 2ff6b91eSJuan Quintelaelif check_define __i386__ ; then
486 ac0df51dSaliguori  cpu="i386"
487 ac0df51dSaliguorielif check_define __x86_64__ ; then
488 c72b26ecSRichard Henderson  if check_define __ILP32__ ; then
489 c72b26ecSRichard Henderson    cpu="x32"
490 c72b26ecSRichard Henderson  else
491 ac0df51dSaliguori    cpu="x86_64"
492 c72b26ecSRichard Henderson  fi
493 3aa9bd6cSblueswir1elif check_define __sparc__ ; then
494 3aa9bd6cSblueswir1  if check_define __arch64__ ; then
495 3aa9bd6cSblueswir1    cpu="sparc64"
496 3aa9bd6cSblueswir1  else
497 3aa9bd6cSblueswir1    cpu="sparc"
498 3aa9bd6cSblueswir1  fi
499 fdf7ed96Smalcelif check_define _ARCH_PPC ; then
500 fdf7ed96Smalc  if check_define _ARCH_PPC64 ; then
501 fdf7ed96Smalc    cpu="ppc64"
502 ac0df51dSaliguori  else
503 fdf7ed96Smalc    cpu="ppc"
504 fdf7ed96Smalc  fi
505 afa05235SAurelien Jarnoelif check_define __mips__ ; then
506 afa05235SAurelien Jarno  cpu="mips"
507 477ba620SAurelien Jarnoelif check_define __ia64__ ; then
508 477ba620SAurelien Jarno  cpu="ia64"
509 d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then
510 d66ed0eaSAurelien Jarno  if check_define __s390x__ ; then
511 d66ed0eaSAurelien Jarno    cpu="s390x"
512 d66ed0eaSAurelien Jarno  else
513 d66ed0eaSAurelien Jarno    cpu="s390"
514 d66ed0eaSAurelien Jarno  fi
515 21d89f84SPeter Maydellelif check_define __arm__ ; then
516 21d89f84SPeter Maydell  cpu="arm"
517 1f080313SClaudio Fontanaelif check_define __aarch64__ ; then
518 1f080313SClaudio Fontana  cpu="aarch64"
519 fdf7ed96Smalcelse
520 89138857SStefan Weil  cpu=$(uname -m)
521 ac0df51dSaliguorifi
522 ac0df51dSaliguori
523 359bc95dSPeter MaydellARCH=
524 359bc95dSPeter Maydell# Normalise host CPU name and set ARCH.
525 359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests.
526 7d13299dSbellardcase "$cpu" in
527 6499fd15SPeter Maydell  ppc|ppc64|s390|s390x|sparc64|x32)
528 898be3e0SPeter Maydell    cpu="$cpu"
529 898be3e0SPeter Maydell    supported_cpu="yes"
530 898be3e0SPeter Maydell  ;;
531 6499fd15SPeter Maydell  ia64)
532 ea8f20f8SJuan Quintela    cpu="$cpu"
533 ea8f20f8SJuan Quintela  ;;
534 7d13299dSbellard  i386|i486|i586|i686|i86pc|BePC)
535 97a847bcSbellard    cpu="i386"
536 898be3e0SPeter Maydell    supported_cpu="yes"
537 7d13299dSbellard  ;;
538 aaa5fa14Saurel32  x86_64|amd64)
539 aaa5fa14Saurel32    cpu="x86_64"
540 898be3e0SPeter Maydell    supported_cpu="yes"
541 aaa5fa14Saurel32  ;;
542 21d89f84SPeter Maydell  armv*b|armv*l|arm)
543 21d89f84SPeter Maydell    cpu="arm"
544 898be3e0SPeter Maydell    supported_cpu="yes"
545 7d13299dSbellard  ;;
546 1f080313SClaudio Fontana  aarch64)
547 1f080313SClaudio Fontana    cpu="aarch64"
548 898be3e0SPeter Maydell    supported_cpu="yes"
549 1f080313SClaudio Fontana  ;;
550 afa05235SAurelien Jarno  mips*)
551 afa05235SAurelien Jarno    cpu="mips"
552 898be3e0SPeter Maydell    supported_cpu="yes"
553 afa05235SAurelien Jarno  ;;
554 3142255cSblueswir1  sparc|sun4[cdmuv])
555 ae228531Sbellard    cpu="sparc"
556 6499fd15SPeter Maydell    supported_cpu="yes"
557 ae228531Sbellard  ;;
558 7d13299dSbellard  *)
559 359bc95dSPeter Maydell    # This will result in either an error or falling back to TCI later
560 359bc95dSPeter Maydell    ARCH=unknown
561 7d13299dSbellard  ;;
562 7d13299dSbellardesac
563 359bc95dSPeter Maydellif test -z "$ARCH"; then
564 359bc95dSPeter Maydell  ARCH="$cpu"
565 359bc95dSPeter Maydellfi
566 e2d52ad3SJuan Quintela
567 7d13299dSbellard# OS specific
568 0dbfc675SJuan Quintela
569 adfc3e91SStacey Son# host *BSD for user mode
570 adfc3e91SStacey SonHOST_VARIANT_DIR=""
571 adfc3e91SStacey Son
572 7d13299dSbellardcase $targetos in
573 67b915a5SbellardMINGW32*)
574 67b915a5Sbellard  mingw32="yes"
575 b0cb0a66SVincent Palatin  hax="yes"
576 3cec7cc2SKővágó, Zoltán  audio_possible_drivers="dsound sdl"
577 307119e7SGerd Hoffmann  if check_include dsound.h; then
578 3cec7cc2SKővágó, Zoltán    audio_drv_list="dsound"
579 307119e7SGerd Hoffmann  else
580 307119e7SGerd Hoffmann    audio_drv_list=""
581 307119e7SGerd Hoffmann  fi
582 898be3e0SPeter Maydell  supported_os="yes"
583 67b915a5Sbellard;;
584 5c40d2bdSthsGNU/kFreeBSD)
585 a167ba50SAurelien Jarno  bsd="yes"
586 0c58ac1cSmalc  audio_drv_list="oss"
587 0bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl pa"
588 5c40d2bdSths;;
589 7d3505c5SbellardFreeBSD)
590 7d3505c5Sbellard  bsd="yes"
591 0db4a067SPaolo Bonzini  make="${MAKE-gmake}"
592 0c58ac1cSmalc  audio_drv_list="oss"
593 0bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl pa"
594 f01576f1SJuergen Lock  # needed for kinfo_getvmmap(3) in libutil.h
595 f01576f1SJuergen Lock  LIBS="-lutil $LIBS"
596 a7764f15SEd Maste  # needed for kinfo_getproc
597 a7764f15SEd Maste  libs_qga="-lutil $libs_qga"
598 58952137SVincenzo Maffione  netmap=""  # enable netmap autodetect
599 adfc3e91SStacey Son  HOST_VARIANT_DIR="freebsd"
600 898be3e0SPeter Maydell  supported_os="yes"
601 7d3505c5Sbellard;;
602 c5e97233Sblueswir1DragonFly)
603 c5e97233Sblueswir1  bsd="yes"
604 0db4a067SPaolo Bonzini  make="${MAKE-gmake}"
605 c5e97233Sblueswir1  audio_drv_list="oss"
606 0bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl pa"
607 adfc3e91SStacey Son  HOST_VARIANT_DIR="dragonfly"
608 c5e97233Sblueswir1;;
609 7d3505c5SbellardNetBSD)
610 7d3505c5Sbellard  bsd="yes"
611 0db4a067SPaolo Bonzini  make="${MAKE-gmake}"
612 0c58ac1cSmalc  audio_drv_list="oss"
613 0bac1111SKővágó, Zoltán  audio_possible_drivers="oss sdl"
614 8ef92a88Sblueswir1  oss_lib="-lossaudio"
615 adfc3e91SStacey Son  HOST_VARIANT_DIR="netbsd"
616 3c2bdbc1SKamil Rytarowski  supported_os="yes"
617 7d3505c5Sbellard;;
618 7d3505c5SbellardOpenBSD)
619 7d3505c5Sbellard  bsd="yes"
620 0db4a067SPaolo Bonzini  make="${MAKE-gmake}"
621 4f6ab397SBrad Smith  audio_drv_list="sdl"
622 0bac1111SKővágó, Zoltán  audio_possible_drivers="sdl"
623 adfc3e91SStacey Son  HOST_VARIANT_DIR="openbsd"
624 7d3505c5Sbellard;;
625 83fb7adfSbellardDarwin)
626 83fb7adfSbellard  bsd="yes"
627 83fb7adfSbellard  darwin="yes"
628 b0cb0a66SVincent Palatin  hax="yes"
629 17969268SFam Zheng  LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
630 1b0f9cc2Saliguori  if [ "$cpu" = "x86_64" ] ; then
631 a558ee17SJuan Quintela    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
632 0c439cbfSJuan Quintela    LDFLAGS="-arch x86_64 $LDFLAGS"
633 1b0f9cc2Saliguori  fi
634 fd677642Sths  cocoa="yes"
635 0c58ac1cSmalc  audio_drv_list="coreaudio"
636 14382605SKővágó, Zoltán  audio_possible_drivers="coreaudio sdl"
637 0c439cbfSJuan Quintela  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
638 7973f21cSJuan Quintela  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
639 a0b7cf6bSPeter Maydell  # Disable attempts to use ObjectiveC features in os/object.h since they
640 a0b7cf6bSPeter Maydell  # won't work when we're compiling with gcc as a C compiler.
641 a0b7cf6bSPeter Maydell  QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
642 adfc3e91SStacey Son  HOST_VARIANT_DIR="darwin"
643 898be3e0SPeter Maydell  supported_os="yes"
644 83fb7adfSbellard;;
645 ec530c81SbellardSunOS)
646 ec530c81Sbellard  solaris="yes"
647 0db4a067SPaolo Bonzini  make="${MAKE-gmake}"
648 0db4a067SPaolo Bonzini  install="${INSTALL-ginstall}"
649 fa58948dSBlue Swirl  ld="gld"
650 e2d8830eSBrad  smbd="${SMBD-/usr/sfw/sbin/smbd}"
651 0475a5caSths  needs_libsunmath="no"
652 89138857SStefan Weil  solarisrev=$(uname -r | cut -f2 -d.)
653 c2b84fabSths  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
654 0475a5caSths    if test "$solarisrev" -le 9 ; then
655 0475a5caSths      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
656 0475a5caSths        needs_libsunmath="yes"
657 f14bfdf9SJuan Quintela        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
658 f14bfdf9SJuan Quintela        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
659 f14bfdf9SJuan Quintela        LIBS="-lsunmath $LIBS"
660 0475a5caSths      else
661 76ad07a4SPeter Maydell        error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
662 76ad07a4SPeter Maydell            "libsunmath from the Sun Studio compilers tools, due to a lack of" \
663 76ad07a4SPeter Maydell            "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
664 76ad07a4SPeter Maydell            "Studio 11 can be downloaded from www.sun.com."
665 0475a5caSths      fi
666 0475a5caSths    fi
667 86b2bd93Sths  fi
668 6b4d2ba1Sths  if test -f /usr/include/sys/soundcard.h ; then
669 0c58ac1cSmalc    audio_drv_list="oss"
670 6b4d2ba1Sths  fi
671 c2de5c91Smalc  audio_possible_drivers="oss sdl"
672 d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h
673 d741429aSBlue Swirl  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
674 d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h
675 d741429aSBlue Swirl  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
676 a558ee17SJuan Quintela  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
677 560d375fSAndreas Färber  solarisnetlibs="-lsocket -lnsl -lresolv"
678 560d375fSAndreas Färber  LIBS="$solarisnetlibs $LIBS"
679 560d375fSAndreas Färber  libs_qga="$solarisnetlibs $libs_qga"
680 ec530c81Sbellard;;
681 b29fe3edSmalcAIX)
682 b29fe3edSmalc  aix="yes"
683 0db4a067SPaolo Bonzini  make="${MAKE-gmake}"
684 b29fe3edSmalc;;
685 179cf400SAndreas FärberHaiku)
686 179cf400SAndreas Färber  haiku="yes"
687 179cf400SAndreas Färber  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
688 179cf400SAndreas Färber  LIBS="-lposix_error_mapper -lnetwork $LIBS"
689 179cf400SAndreas Färber;;
690 898be3e0SPeter MaydellLinux)
691 0c58ac1cSmalc  audio_drv_list="oss"
692 0bac1111SKővágó, Zoltán  audio_possible_drivers="oss alsa sdl pa"
693 5327cf48Sbellard  linux="yes"
694 831b7825Sths  linux_user="yes"
695 af2be207SJan Kiszka  kvm="yes"
696 af2be207SJan Kiszka  vhost_net="yes"
697 5e9be92dSNicholas Bellinger  vhost_scsi="yes"
698 fc0b9b0eSStefan Hajnoczi  vhost_vsock="yes"
699 a585140dSAlexey Kardashevskiy  QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
700 898be3e0SPeter Maydell  supported_os="yes"
701 898be3e0SPeter Maydell;;
702 898be3e0SPeter Maydell*)
703 fb59dabdSPeter Maydell  # This is a fatal error, but don't report it yet, because we
704 fb59dabdSPeter Maydell  # might be going to just print the --help text, or it might
705 fb59dabdSPeter Maydell  # be the result of a missing compiler.
706 fb59dabdSPeter Maydell  bogus_os="yes"
707 fb065187Sbellard;;
708 7d13299dSbellardesac
709 7d13299dSbellard
710 7d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
711 b1a550a0Spbrook  if [ "$darwin" != "yes" ] ; then
712 84778508Sblueswir1    bsd_user="yes"
713 7d3505c5Sbellard  fi
714 08de3949SAndreas Färberfi
715 7d3505c5Sbellard
716 0db4a067SPaolo Bonzini: ${make=${MAKE-make}}
717 0db4a067SPaolo Bonzini: ${install=${INSTALL-install}}
718 52510f8bSStefan Weil: ${python=${PYTHON-python}}
719 e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}}
720 0db4a067SPaolo Bonzini
721 3c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC
722 3c4a4d0dSPeter Maydellif has clang; then
723 3c4a4d0dSPeter Maydell  objcc=clang
724 3c4a4d0dSPeter Maydellelse
725 3c4a4d0dSPeter Maydell  objcc="$cc"
726 3c4a4d0dSPeter Maydellfi
727 3c4a4d0dSPeter Maydell
728 3457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then
729 3457a3f8SJuan Quintela  EXESUF=".exe"
730 17969268SFam Zheng  DSOSUF=".dll"
731 a558ee17SJuan Quintela  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
732 e94a7936SStefan Weil  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
733 e94a7936SStefan Weil  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
734 78e9d4adSStefan Weil  # MinGW needs -mthreads for TLS and macro _MT.
735 78e9d4adSStefan Weil  QEMU_CFLAGS="-mthreads $QEMU_CFLAGS"
736 f7cf5d5bSStefan Weil  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
737 93b25869SJohn Snow  write_c_skeleton;
738 f7cf5d5bSStefan Weil  if compile_prog "" "-liberty" ; then
739 f7cf5d5bSStefan Weil    LIBS="-liberty $LIBS"
740 f7cf5d5bSStefan Weil  fi
741 c5ec15eaSStefan Weil  prefix="c:/Program Files/QEMU"
742 683035deSPaolo Bonzini  mandir="\${prefix}"
743 528ae5b8SEduardo Habkost  datadir="\${prefix}"
744 850da188SEduardo Habkost  qemu_docdir="\${prefix}"
745 683035deSPaolo Bonzini  bindir="\${prefix}"
746 683035deSPaolo Bonzini  sysconfdir="\${prefix}"
747 5a699bbbSLaszlo Ersek  local_statedir=
748 683035deSPaolo Bonzini  confsuffix=""
749 161a56a9SVinzenz Feenstra  libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -liphlpapi -lnetapi32 $libs_qga"
750 3457a3f8SJuan Quintelafi
751 3457a3f8SJuan Quintela
752 487fefdbSAnthony Liguoriwerror=""
753 85aa5189Sbellard
754 7d13299dSbellardfor opt do
755 89138857SStefan Weil  optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)')
756 7d13299dSbellard  case "$opt" in
757 2efc3265Sbellard  --help|-h) show_help=yes
758 2efc3265Sbellard  ;;
759 99123e13SMike Frysinger  --version|-V) exec cat $source_path/VERSION
760 99123e13SMike Frysinger  ;;
761 b1a550a0Spbrook  --prefix=*) prefix="$optarg"
762 7d13299dSbellard  ;;
763 b1a550a0Spbrook  --interp-prefix=*) interp_prefix="$optarg"
764 32ce6337Sbellard  ;;
765 ca4deeb1SPaolo Bonzini  --source-path=*)
766 7d13299dSbellard  ;;
767 ac0df51dSaliguori  --cross-prefix=*)
768 7d13299dSbellard  ;;
769 ac0df51dSaliguori  --cc=*)
770 7d13299dSbellard  ;;
771 b1a550a0Spbrook  --host-cc=*) host_cc="$optarg"
772 83469015Sbellard  ;;
773 83f73fceSTomoki Sekiyama  --cxx=*)
774 83f73fceSTomoki Sekiyama  ;;
775 e007dbecSMichael S. Tsirkin  --iasl=*) iasl="$optarg"
776 e007dbecSMichael S. Tsirkin  ;;
777 3c4a4d0dSPeter Maydell  --objcc=*) objcc="$optarg"
778 3c4a4d0dSPeter Maydell  ;;
779 b1a550a0Spbrook  --make=*) make="$optarg"
780 7d13299dSbellard  ;;
781 6a882643Spbrook  --install=*) install="$optarg"
782 6a882643Spbrook  ;;
783 c886edfbSBlue Swirl  --python=*) python="$optarg"
784 c886edfbSBlue Swirl  ;;
785 1d728c39SBlue Swirl  --gcov=*) gcov_tool="$optarg"
786 1d728c39SBlue Swirl  ;;
787 e2d8830eSBrad  --smbd=*) smbd="$optarg"
788 e2d8830eSBrad  ;;
789 e2a2ed06SJuan Quintela  --extra-cflags=*)
790 7d13299dSbellard  ;;
791 e2a2ed06SJuan Quintela  --extra-ldflags=*)
792 7d13299dSbellard  ;;
793 5bc62e01SGerd Hoffmann  --enable-debug-info)
794 5bc62e01SGerd Hoffmann  ;;
795 5bc62e01SGerd Hoffmann  --disable-debug-info)
796 5bc62e01SGerd Hoffmann  ;;
797 17969268SFam Zheng  --enable-modules)
798 17969268SFam Zheng      modules="yes"
799 17969268SFam Zheng  ;;
800 3aa88b31SStefan Hajnoczi  --disable-modules)
801 3aa88b31SStefan Hajnoczi      modules="no"
802 3aa88b31SStefan Hajnoczi  ;;
803 2ff6b91eSJuan Quintela  --cpu=*)
804 7d13299dSbellard  ;;
805 b1a550a0Spbrook  --target-list=*) target_list="$optarg"
806 de83cd02Sbellard  ;;
807 5b808275SLluís Vilanova  --enable-trace-backends=*) trace_backends="$optarg"
808 5b808275SLluís Vilanova  ;;
809 5b808275SLluís Vilanova  # XXX: backwards compatibility
810 5b808275SLluís Vilanova  --enable-trace-backend=*) trace_backends="$optarg"
811 94a420b1SStefan Hajnoczi  ;;
812 74242e0fSPaolo Bonzini  --with-trace-file=*) trace_file="$optarg"
813 9410b56cSPrerna Saxena  ;;
814 7d13299dSbellard  --enable-gprof) gprof="yes"
815 7d13299dSbellard  ;;
816 1d728c39SBlue Swirl  --enable-gcov) gcov="yes"
817 1d728c39SBlue Swirl  ;;
818 79427693SLoïc Minier  --static)
819 79427693SLoïc Minier    static="yes"
820 79427693SLoïc Minier    LDFLAGS="-static $LDFLAGS"
821 17884d7bSSergei Trofimovich    QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
822 43ce4dfeSbellard  ;;
823 0b24e75fSPaolo Bonzini  --mandir=*) mandir="$optarg"
824 0b24e75fSPaolo Bonzini  ;;
825 0b24e75fSPaolo Bonzini  --bindir=*) bindir="$optarg"
826 0b24e75fSPaolo Bonzini  ;;
827 3aa5d2beSAlon Levy  --libdir=*) libdir="$optarg"
828 3aa5d2beSAlon Levy  ;;
829 8bf188aaSMichael Tokarev  --libexecdir=*) libexecdir="$optarg"
830 8bf188aaSMichael Tokarev  ;;
831 0f94d6daSAlon Levy  --includedir=*) includedir="$optarg"
832 0f94d6daSAlon Levy  ;;
833 528ae5b8SEduardo Habkost  --datadir=*) datadir="$optarg"
834 0b24e75fSPaolo Bonzini  ;;
835 023d3d67SEduardo Habkost  --with-confsuffix=*) confsuffix="$optarg"
836 023d3d67SEduardo Habkost  ;;
837 850da188SEduardo Habkost  --docdir=*) qemu_docdir="$optarg"
838 0b24e75fSPaolo Bonzini  ;;
839 ca2fb938SAndre Przywara  --sysconfdir=*) sysconfdir="$optarg"
840 07381cc1SAnthony Liguori  ;;
841 785c23aeSLuiz Capitulino  --localstatedir=*) local_statedir="$optarg"
842 785c23aeSLuiz Capitulino  ;;
843 785c23aeSLuiz Capitulino  --sbindir=*|--sharedstatedir=*|\
844 023ddd74SMax Filippov  --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
845 023ddd74SMax Filippov  --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
846 023ddd74SMax Filippov    # These switches are silently ignored, for compatibility with
847 023ddd74SMax Filippov    # autoconf-generated configure scripts. This allows QEMU's
848 023ddd74SMax Filippov    # configure to be used by RPM and similar macros that set
849 023ddd74SMax Filippov    # lots of directory switches by default.
850 023ddd74SMax Filippov  ;;
851 e2134eb9SGerd Hoffmann  --with-system-pixman) pixman="system"
852 e2134eb9SGerd Hoffmann  ;;
853 e2134eb9SGerd Hoffmann  --without-system-pixman) pixman="internal"
854 e2134eb9SGerd Hoffmann  ;;
855 74880fe2SRobert Schiele  --without-pixman) pixman="none"
856 74880fe2SRobert Schiele  ;;
857 97a847bcSbellard  --disable-sdl) sdl="no"
858 97a847bcSbellard  ;;
859 c4198157SJuan Quintela  --enable-sdl) sdl="yes"
860 c4198157SJuan Quintela  ;;
861 47c03744SDave Airlie  --with-sdlabi=*) sdlabi="$optarg"
862 47c03744SDave Airlie  ;;
863 3556c233SPaolo Bonzini  --disable-qom-cast-debug) qom_cast_debug="no"
864 3556c233SPaolo Bonzini  ;;
865 3556c233SPaolo Bonzini  --enable-qom-cast-debug) qom_cast_debug="yes"
866 3556c233SPaolo Bonzini  ;;
867 983eef5aSMeador Inge  --disable-virtfs) virtfs="no"
868 983eef5aSMeador Inge  ;;
869 983eef5aSMeador Inge  --enable-virtfs) virtfs="yes"
870 983eef5aSMeador Inge  ;;
871 821601eaSJes Sorensen  --disable-vnc) vnc="no"
872 821601eaSJes Sorensen  ;;
873 821601eaSJes Sorensen  --enable-vnc) vnc="yes"
874 821601eaSJes Sorensen  ;;
875 2f6a1ab0Sblueswir1  --oss-lib=*) oss_lib="$optarg"
876 2f6a1ab0Sblueswir1  ;;
877 0c58ac1cSmalc  --audio-drv-list=*) audio_drv_list="$optarg"
878 0c58ac1cSmalc  ;;
879 89138857SStefan Weil  --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
880 b64ec4e4SFam Zheng  ;;
881 89138857SStefan Weil  --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g')
882 eb852011SMarkus Armbruster  ;;
883 f8393946Saurel32  --enable-debug-tcg) debug_tcg="yes"
884 f8393946Saurel32  ;;
885 f8393946Saurel32  --disable-debug-tcg) debug_tcg="no"
886 f8393946Saurel32  ;;
887 f3d08ee6SPaul Brook  --enable-debug)
888 f3d08ee6SPaul Brook      # Enable debugging options that aren't excessively noisy
889 f3d08ee6SPaul Brook      debug_tcg="yes"
890 f3d08ee6SPaul Brook      debug="yes"
891 f3d08ee6SPaul Brook      strip_opt="no"
892 b553a042SJohn Snow      fortify_source="no"
893 f3d08ee6SPaul Brook  ;;
894 03b4fe7dSaliguori  --enable-sparse) sparse="yes"
895 03b4fe7dSaliguori  ;;
896 03b4fe7dSaliguori  --disable-sparse) sparse="no"
897 03b4fe7dSaliguori  ;;
898 1625af87Saliguori  --disable-strip) strip_opt="no"
899 1625af87Saliguori  ;;
900 2f9606b3Saliguori  --disable-vnc-sasl) vnc_sasl="no"
901 2f9606b3Saliguori  ;;
902 ea784e3bSJuan Quintela  --enable-vnc-sasl) vnc_sasl="yes"
903 ea784e3bSJuan Quintela  ;;
904 2f6f5c7aSCorentin Chary  --disable-vnc-jpeg) vnc_jpeg="no"
905 2f6f5c7aSCorentin Chary  ;;
906 2f6f5c7aSCorentin Chary  --enable-vnc-jpeg) vnc_jpeg="yes"
907 2f6f5c7aSCorentin Chary  ;;
908 efe556adSCorentin Chary  --disable-vnc-png) vnc_png="no"
909 efe556adSCorentin Chary  ;;
910 efe556adSCorentin Chary  --enable-vnc-png) vnc_png="yes"
911 efe556adSCorentin Chary  ;;
912 443f1376Sbellard  --disable-slirp) slirp="no"
913 c20709aaSbellard  ;;
914 e0e6c8c0Saliguori  --disable-vde) vde="no"
915 8a16d273Sths  ;;
916 dfb278bdSJuan Quintela  --enable-vde) vde="yes"
917 dfb278bdSJuan Quintela  ;;
918 58952137SVincenzo Maffione  --disable-netmap) netmap="no"
919 58952137SVincenzo Maffione  ;;
920 58952137SVincenzo Maffione  --enable-netmap) netmap="yes"
921 58952137SVincenzo Maffione  ;;
922 e37630caSaliguori  --disable-xen) xen="no"
923 e37630caSaliguori  ;;
924 fc321b4bSJuan Quintela  --enable-xen) xen="yes"
925 fc321b4bSJuan Quintela  ;;
926 eb6fda0fSAnthony PERARD  --disable-xen-pci-passthrough) xen_pci_passthrough="no"
927 eb6fda0fSAnthony PERARD  ;;
928 eb6fda0fSAnthony PERARD  --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
929 eb6fda0fSAnthony PERARD  ;;
930 64a7ad6fSIan Campbell  --disable-xen-pv-domain-build) xen_pv_domain_build="no"
931 64a7ad6fSIan Campbell  ;;
932 64a7ad6fSIan Campbell  --enable-xen-pv-domain-build) xen_pv_domain_build="yes"
933 64a7ad6fSIan Campbell  ;;
934 2e4d9fb1Saurel32  --disable-brlapi) brlapi="no"
935 2e4d9fb1Saurel32  ;;
936 4ffcedb6SJuan Quintela  --enable-brlapi) brlapi="yes"
937 4ffcedb6SJuan Quintela  ;;
938 fb599c9aSbalrog  --disable-bluez) bluez="no"
939 fb599c9aSbalrog  ;;
940 a20a6f46SJuan Quintela  --enable-bluez) bluez="yes"
941 a20a6f46SJuan Quintela  ;;
942 7ba1e619Saliguori  --disable-kvm) kvm="no"
943 7ba1e619Saliguori  ;;
944 b31a0277SJuan Quintela  --enable-kvm) kvm="yes"
945 b31a0277SJuan Quintela  ;;
946 b0cb0a66SVincent Palatin  --disable-hax) hax="no"
947 180fb750Szhanghailiang  ;;
948 b0cb0a66SVincent Palatin  --enable-hax) hax="yes"
949 180fb750Szhanghailiang  ;;
950 9195b2c2SStefan Weil  --disable-tcg-interpreter) tcg_interpreter="no"
951 9195b2c2SStefan Weil  ;;
952 9195b2c2SStefan Weil  --enable-tcg-interpreter) tcg_interpreter="yes"
953 9195b2c2SStefan Weil  ;;
954 47e98658SCorey Bryant  --disable-cap-ng)  cap_ng="no"
955 47e98658SCorey Bryant  ;;
956 47e98658SCorey Bryant  --enable-cap-ng) cap_ng="yes"
957 47e98658SCorey Bryant  ;;
958 cd4ec0b4SGerd Hoffmann  --disable-spice) spice="no"
959 cd4ec0b4SGerd Hoffmann  ;;
960 cd4ec0b4SGerd Hoffmann  --enable-spice) spice="yes"
961 cd4ec0b4SGerd Hoffmann  ;;
962 c589b249SRonnie Sahlberg  --disable-libiscsi) libiscsi="no"
963 c589b249SRonnie Sahlberg  ;;
964 c589b249SRonnie Sahlberg  --enable-libiscsi) libiscsi="yes"
965 c589b249SRonnie Sahlberg  ;;
966 6542aa9cSPeter Lieven  --disable-libnfs) libnfs="no"
967 6542aa9cSPeter Lieven  ;;
968 6542aa9cSPeter Lieven  --enable-libnfs) libnfs="yes"
969 6542aa9cSPeter Lieven  ;;
970 05c2a3e7Sbellard  --enable-profiler) profiler="yes"
971 05c2a3e7Sbellard  ;;
972 14821030SPavel Borzenkov  --disable-cocoa) cocoa="no"
973 14821030SPavel Borzenkov  ;;
974 c2de5c91Smalc  --enable-cocoa)
975 c2de5c91Smalc      cocoa="yes" ;
976 89138857SStefan Weil      audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)"
977 5b0753e0Sbellard  ;;
978 cad25d69Spbrook  --disable-system) softmmu="no"
979 0a8e90f4Spbrook  ;;
980 cad25d69Spbrook  --enable-system) softmmu="yes"
981 0a8e90f4Spbrook  ;;
982 0953a80fSZachary Amsden  --disable-user)
983 0953a80fSZachary Amsden      linux_user="no" ;
984 0953a80fSZachary Amsden      bsd_user="no" ;
985 0953a80fSZachary Amsden  ;;
986 0953a80fSZachary Amsden  --enable-user) ;;
987 831b7825Sths  --disable-linux-user) linux_user="no"
988 0a8e90f4Spbrook  ;;
989 831b7825Sths  --enable-linux-user) linux_user="yes"
990 831b7825Sths  ;;
991 84778508Sblueswir1  --disable-bsd-user) bsd_user="no"
992 84778508Sblueswir1  ;;
993 84778508Sblueswir1  --enable-bsd-user) bsd_user="yes"
994 84778508Sblueswir1  ;;
995 40d6444eSAvi Kivity  --enable-pie) pie="yes"
996 34005a00SKirill A. Shutemov  ;;
997 40d6444eSAvi Kivity  --disable-pie) pie="no"
998 34005a00SKirill A. Shutemov  ;;
999 85aa5189Sbellard  --enable-werror) werror="yes"
1000 85aa5189Sbellard  ;;
1001 85aa5189Sbellard  --disable-werror) werror="no"
1002 85aa5189Sbellard  ;;
1003 63678e17SSteven Noonan  --enable-stack-protector) stack_protector="yes"
1004 63678e17SSteven Noonan  ;;
1005 63678e17SSteven Noonan  --disable-stack-protector) stack_protector="no"
1006 63678e17SSteven Noonan  ;;
1007 4d3b6f6eSbalrog  --disable-curses) curses="no"
1008 4d3b6f6eSbalrog  ;;
1009 c584a6d0SJuan Quintela  --enable-curses) curses="yes"
1010 c584a6d0SJuan Quintela  ;;
1011 769ce76dSAlexander Graf  --disable-curl) curl="no"
1012 769ce76dSAlexander Graf  ;;
1013 788c8196SJuan Quintela  --enable-curl) curl="yes"
1014 788c8196SJuan Quintela  ;;
1015 2df87df7SJuan Quintela  --disable-fdt) fdt="no"
1016 2df87df7SJuan Quintela  ;;
1017 2df87df7SJuan Quintela  --enable-fdt) fdt="yes"
1018 2df87df7SJuan Quintela  ;;
1019 5c6c3a6cSChristoph Hellwig  --disable-linux-aio) linux_aio="no"
1020 5c6c3a6cSChristoph Hellwig  ;;
1021 5c6c3a6cSChristoph Hellwig  --enable-linux-aio) linux_aio="yes"
1022 5c6c3a6cSChristoph Hellwig  ;;
1023 758e8e38SVenkateswararao Jujjuri (JV)  --disable-attr) attr="no"
1024 758e8e38SVenkateswararao Jujjuri (JV)  ;;
1025 758e8e38SVenkateswararao Jujjuri (JV)  --enable-attr) attr="yes"
1026 758e8e38SVenkateswararao Jujjuri (JV)  ;;
1027 77755340Sths  --disable-blobs) blobs="no"
1028 77755340Sths  ;;
1029 4a19f1ecSpbrook  --with-pkgversion=*) pkgversion=" ($optarg)"
1030 4a19f1ecSpbrook  ;;
1031 519175a2SAlex Barcelo  --with-coroutine=*) coroutine="$optarg"
1032 519175a2SAlex Barcelo  ;;
1033 70c60c08SStefan Hajnoczi  --disable-coroutine-pool) coroutine_pool="no"
1034 70c60c08SStefan Hajnoczi  ;;
1035 70c60c08SStefan Hajnoczi  --enable-coroutine-pool) coroutine_pool="yes"
1036 70c60c08SStefan Hajnoczi  ;;
1037 7d992e4dSPeter Lieven  --enable-debug-stack-usage) debug_stack_usage="yes"
1038 7d992e4dSPeter Lieven  ;;
1039 a25dba17SJuan Quintela  --disable-docs) docs="no"
1040 70ec5dc0SAnthony Liguori  ;;
1041 a25dba17SJuan Quintela  --enable-docs) docs="yes"
1042 83a3ab8bSJuan Quintela  ;;
1043 d5970055SMichael S. Tsirkin  --disable-vhost-net) vhost_net="no"
1044 d5970055SMichael S. Tsirkin  ;;
1045 d5970055SMichael S. Tsirkin  --enable-vhost-net) vhost_net="yes"
1046 d5970055SMichael S. Tsirkin  ;;
1047 5e9be92dSNicholas Bellinger  --disable-vhost-scsi) vhost_scsi="no"
1048 5e9be92dSNicholas Bellinger  ;;
1049 5e9be92dSNicholas Bellinger  --enable-vhost-scsi) vhost_scsi="yes"
1050 5e9be92dSNicholas Bellinger  ;;
1051 fc0b9b0eSStefan Hajnoczi  --disable-vhost-vsock) vhost_vsock="no"
1052 fc0b9b0eSStefan Hajnoczi  ;;
1053 fc0b9b0eSStefan Hajnoczi  --enable-vhost-vsock) vhost_vsock="yes"
1054 fc0b9b0eSStefan Hajnoczi  ;;
1055 da076ffeSGerd Hoffmann  --disable-opengl) opengl="no"
1056 20ff075bSMichael Walle  ;;
1057 da076ffeSGerd Hoffmann  --enable-opengl) opengl="yes"
1058 20ff075bSMichael Walle  ;;
1059 f27aaf4bSChristian Brunner  --disable-rbd) rbd="no"
1060 f27aaf4bSChristian Brunner  ;;
1061 f27aaf4bSChristian Brunner  --enable-rbd) rbd="yes"
1062 f27aaf4bSChristian Brunner  ;;
1063 8c84cf11SSergei Trofimovich  --disable-xfsctl) xfs="no"
1064 8c84cf11SSergei Trofimovich  ;;
1065 8c84cf11SSergei Trofimovich  --enable-xfsctl) xfs="yes"
1066 8c84cf11SSergei Trofimovich  ;;
1067 7b02f544SMarc-André Lureau  --disable-smartcard) smartcard="no"
1068 111a38b0SRobert Relyea  ;;
1069 7b02f544SMarc-André Lureau  --enable-smartcard) smartcard="yes"
1070 111a38b0SRobert Relyea  ;;
1071 2b2325ffSGerd Hoffmann  --disable-libusb) libusb="no"
1072 2b2325ffSGerd Hoffmann  ;;
1073 2b2325ffSGerd Hoffmann  --enable-libusb) libusb="yes"
1074 2b2325ffSGerd Hoffmann  ;;
1075 69354a83SHans de Goede  --disable-usb-redir) usb_redir="no"
1076 69354a83SHans de Goede  ;;
1077 69354a83SHans de Goede  --enable-usb-redir) usb_redir="yes"
1078 69354a83SHans de Goede  ;;
1079 1ece9905SAlon Levy  --disable-zlib-test) zlib="no"
1080 1ece9905SAlon Levy  ;;
1081 b25c9dffSStefan Weil  --disable-lzo) lzo="no"
1082 b25c9dffSStefan Weil  ;;
1083 607dacd0Sqiaonuohan  --enable-lzo) lzo="yes"
1084 607dacd0Sqiaonuohan  ;;
1085 b25c9dffSStefan Weil  --disable-snappy) snappy="no"
1086 b25c9dffSStefan Weil  ;;
1087 607dacd0Sqiaonuohan  --enable-snappy) snappy="yes"
1088 607dacd0Sqiaonuohan  ;;
1089 6b383c08SPeter Wu  --disable-bzip2) bzip2="no"
1090 6b383c08SPeter Wu  ;;
1091 6b383c08SPeter Wu  --enable-bzip2) bzip2="yes"
1092 6b383c08SPeter Wu  ;;
1093 d138cee9SMichael Roth  --enable-guest-agent) guest_agent="yes"
1094 d138cee9SMichael Roth  ;;
1095 d138cee9SMichael Roth  --disable-guest-agent) guest_agent="no"
1096 d138cee9SMichael Roth  ;;
1097 9dacf32dSYossi Hindin  --enable-guest-agent-msi) guest_agent_msi="yes"
1098 9dacf32dSYossi Hindin  ;;
1099 9dacf32dSYossi Hindin  --disable-guest-agent-msi) guest_agent_msi="no"
1100 9dacf32dSYossi Hindin  ;;
1101 d9840e25STomoki Sekiyama  --with-vss-sdk) vss_win32_sdk=""
1102 d9840e25STomoki Sekiyama  ;;
1103 d9840e25STomoki Sekiyama  --with-vss-sdk=*) vss_win32_sdk="$optarg"
1104 d9840e25STomoki Sekiyama  ;;
1105 d9840e25STomoki Sekiyama  --without-vss-sdk) vss_win32_sdk="no"
1106 d9840e25STomoki Sekiyama  ;;
1107 d9840e25STomoki Sekiyama  --with-win-sdk) win_sdk=""
1108 d9840e25STomoki Sekiyama  ;;
1109 d9840e25STomoki Sekiyama  --with-win-sdk=*) win_sdk="$optarg"
1110 d9840e25STomoki Sekiyama  ;;
1111 d9840e25STomoki Sekiyama  --without-win-sdk) win_sdk="no"
1112 d9840e25STomoki Sekiyama  ;;
1113 4b1c11fdSDaniel P. Berrange  --enable-tools) want_tools="yes"
1114 4b1c11fdSDaniel P. Berrange  ;;
1115 4b1c11fdSDaniel P. Berrange  --disable-tools) want_tools="no"
1116 4b1c11fdSDaniel P. Berrange  ;;
1117 f794573eSEduardo Otubo  --enable-seccomp) seccomp="yes"
1118 f794573eSEduardo Otubo  ;;
1119 f794573eSEduardo Otubo  --disable-seccomp) seccomp="no"
1120 f794573eSEduardo Otubo  ;;
1121 eb100396SBharata B Rao  --disable-glusterfs) glusterfs="no"
1122 eb100396SBharata B Rao  ;;
1123 eb100396SBharata B Rao  --enable-glusterfs) glusterfs="yes"
1124 eb100396SBharata B Rao  ;;
1125 52b53c04SFam Zheng  --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1126 52b53c04SFam Zheng      echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1127 583f6e7bSStefan Hajnoczi  ;;
1128 cb6414dfSFam Zheng  --enable-vhdx|--disable-vhdx)
1129 cb6414dfSFam Zheng      echo "$0: $opt is obsolete, VHDX driver is always built" >&2
1130 cb6414dfSFam Zheng  ;;
1131 315d3184SFam Zheng  --enable-uuid|--disable-uuid)
1132 315d3184SFam Zheng      echo "$0: $opt is obsolete, UUID support is always built" >&2
1133 315d3184SFam Zheng  ;;
1134 a4ccabcfSAnthony Liguori  --disable-gtk) gtk="no"
1135 a4ccabcfSAnthony Liguori  ;;
1136 a4ccabcfSAnthony Liguori  --enable-gtk) gtk="yes"
1137 a4ccabcfSAnthony Liguori  ;;
1138 a1c5e949SDaniel P. Berrange  --tls-priority=*) tls_priority="$optarg"
1139 a1c5e949SDaniel P. Berrange  ;;
1140 ddbb0d09SDaniel P. Berrange  --disable-gnutls) gnutls="no"
1141 ddbb0d09SDaniel P. Berrange  ;;
1142 ddbb0d09SDaniel P. Berrange  --enable-gnutls) gnutls="yes"
1143 ddbb0d09SDaniel P. Berrange  ;;
1144 91bfcdb0SDaniel P. Berrange  --disable-nettle) nettle="no"
1145 91bfcdb0SDaniel P. Berrange  ;;
1146 91bfcdb0SDaniel P. Berrange  --enable-nettle) nettle="yes"
1147 91bfcdb0SDaniel P. Berrange  ;;
1148 91bfcdb0SDaniel P. Berrange  --disable-gcrypt) gcrypt="no"
1149 91bfcdb0SDaniel P. Berrange  ;;
1150 91bfcdb0SDaniel P. Berrange  --enable-gcrypt) gcrypt="yes"
1151 91bfcdb0SDaniel P. Berrange  ;;
1152 2da776dbSMichael R. Hines  --enable-rdma) rdma="yes"
1153 2da776dbSMichael R. Hines  ;;
1154 2da776dbSMichael R. Hines  --disable-rdma) rdma="no"
1155 2da776dbSMichael R. Hines  ;;
1156 528de90aSDaniel P. Berrange  --with-gtkabi=*) gtkabi="$optarg"
1157 528de90aSDaniel P. Berrange  ;;
1158 bbbf9bfbSStefan Weil  --disable-vte) vte="no"
1159 bbbf9bfbSStefan Weil  ;;
1160 bbbf9bfbSStefan Weil  --enable-vte) vte="yes"
1161 bbbf9bfbSStefan Weil  ;;
1162 9d9e1521SGerd Hoffmann  --disable-virglrenderer) virglrenderer="no"
1163 9d9e1521SGerd Hoffmann  ;;
1164 9d9e1521SGerd Hoffmann  --enable-virglrenderer) virglrenderer="yes"
1165 9d9e1521SGerd Hoffmann  ;;
1166 e91c793cSCole Robinson  --disable-tpm) tpm="no"
1167 e91c793cSCole Robinson  ;;
1168 ab214c29SStefan Berger  --enable-tpm) tpm="yes"
1169 ab214c29SStefan Berger  ;;
1170 0a12ec87SRichard W.M. Jones  --disable-libssh2) libssh2="no"
1171 0a12ec87SRichard W.M. Jones  ;;
1172 0a12ec87SRichard W.M. Jones  --enable-libssh2) libssh2="yes"
1173 0a12ec87SRichard W.M. Jones  ;;
1174 ed1701c6SDr. David Alan Gilbert  --disable-live-block-migration) live_block_migration="no"
1175 ed1701c6SDr. David Alan Gilbert  ;;
1176 ed1701c6SDr. David Alan Gilbert  --enable-live-block-migration) live_block_migration="yes"
1177 ed1701c6SDr. David Alan Gilbert  ;;
1178 a99d57bbSWanlong Gao  --disable-numa) numa="no"
1179 a99d57bbSWanlong Gao  ;;
1180 a99d57bbSWanlong Gao  --enable-numa) numa="yes"
1181 a99d57bbSWanlong Gao  ;;
1182 2847b469SFam Zheng  --disable-tcmalloc) tcmalloc="no"
1183 2847b469SFam Zheng  ;;
1184 2847b469SFam Zheng  --enable-tcmalloc) tcmalloc="yes"
1185 2847b469SFam Zheng  ;;
1186 7b01cb97SAlexandre Derumier  --disable-jemalloc) jemalloc="no"
1187 7b01cb97SAlexandre Derumier  ;;
1188 7b01cb97SAlexandre Derumier  --enable-jemalloc) jemalloc="yes"
1189 7b01cb97SAlexandre Derumier  ;;
1190 a6b1d4c0SChanglong Xie  --disable-replication) replication="no"
1191 a6b1d4c0SChanglong Xie  ;;
1192 a6b1d4c0SChanglong Xie  --enable-replication) replication="yes"
1193 a6b1d4c0SChanglong Xie  ;;
1194 da92c3ffSAshish Mittal  --disable-vxhs) vxhs="no"
1195 da92c3ffSAshish Mittal  ;;
1196 da92c3ffSAshish Mittal  --enable-vxhs) vxhs="yes"
1197 da92c3ffSAshish Mittal  ;;
1198 2d2ad6d0SFam Zheng  *)
1199 2d2ad6d0SFam Zheng      echo "ERROR: unknown option $opt"
1200 2d2ad6d0SFam Zheng      echo "Try '$0 --help' for more information"
1201 2d2ad6d0SFam Zheng      exit 1
1202 7f1559c6Sbalrog  ;;
1203 7d13299dSbellard  esac
1204 7d13299dSbellarddone
1205 7d13299dSbellard
1206 40293e58Sbellardcase "$cpu" in
1207 e3608d66SRichard Henderson    ppc)
1208 e3608d66SRichard Henderson           CPU_CFLAGS="-m32"
1209 e3608d66SRichard Henderson           LDFLAGS="-m32 $LDFLAGS"
1210 e3608d66SRichard Henderson           ;;
1211 e3608d66SRichard Henderson    ppc64)
1212 e3608d66SRichard Henderson           CPU_CFLAGS="-m64"
1213 e3608d66SRichard Henderson           LDFLAGS="-m64 $LDFLAGS"
1214 e3608d66SRichard Henderson           ;;
1215 9b9c37c3SRichard Henderson    sparc)
1216 0c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
1217 79f3b12fSPeter Crosthwaite           CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1218 3142255cSblueswir1           ;;
1219 ed968ff1SJuan Quintela    sparc64)
1220 0c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
1221 79f3b12fSPeter Crosthwaite           CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1222 3142255cSblueswir1           ;;
1223 76d83bdeSths    s390)
1224 061cdd81SRichard Henderson           CPU_CFLAGS="-m31"
1225 28d7cc49SRichard Henderson           LDFLAGS="-m31 $LDFLAGS"
1226 28d7cc49SRichard Henderson           ;;
1227 28d7cc49SRichard Henderson    s390x)
1228 061cdd81SRichard Henderson           CPU_CFLAGS="-m64"
1229 28d7cc49SRichard Henderson           LDFLAGS="-m64 $LDFLAGS"
1230 76d83bdeSths           ;;
1231 40293e58Sbellard    i386)
1232 79f3b12fSPeter Crosthwaite           CPU_CFLAGS="-m32"
1233 0c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
1234 2b2e59e6SPaolo Bonzini           cc_i386='$(CC) -m32'
1235 40293e58Sbellard           ;;
1236 40293e58Sbellard    x86_64)
1237 7ebee43eSRichard Henderson           # ??? Only extremely old AMD cpus do not have cmpxchg16b.
1238 7ebee43eSRichard Henderson           # If we truly care, we should simply detect this case at
1239 7ebee43eSRichard Henderson           # runtime and generate the fallback to serial emulation.
1240 7ebee43eSRichard Henderson           CPU_CFLAGS="-m64 -mcx16"
1241 0c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
1242 2b2e59e6SPaolo Bonzini           cc_i386='$(CC) -m32'
1243 379f6698SPaul Brook           ;;
1244 c72b26ecSRichard Henderson    x32)
1245 c72b26ecSRichard Henderson           CPU_CFLAGS="-mx32"
1246 c72b26ecSRichard Henderson           LDFLAGS="-mx32 $LDFLAGS"
1247 c72b26ecSRichard Henderson           cc_i386='$(CC) -m32'
1248 c72b26ecSRichard Henderson           ;;
1249 30163d89SPeter Maydell    # No special flags required for other host CPUs
1250 3142255cSblueswir1esac
1251 3142255cSblueswir1
1252 79f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1253 79f3b12fSPeter CrosthwaiteEXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1254 79f3b12fSPeter Crosthwaite
1255 affc88ccSPeter Maydell# For user-mode emulation the host arch has to be one we explicitly
1256 affc88ccSPeter Maydell# support, even if we're using TCI.
1257 affc88ccSPeter Maydellif [ "$ARCH" = "unknown" ]; then
1258 affc88ccSPeter Maydell  bsd_user="no"
1259 affc88ccSPeter Maydell  linux_user="no"
1260 affc88ccSPeter Maydellfi
1261 affc88ccSPeter Maydell
1262 60e0df25SPeter Maydelldefault_target_list=""
1263 60e0df25SPeter Maydell
1264 6e92f823SPeter Maydellmak_wilds=""
1265 6e92f823SPeter Maydell
1266 60e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then
1267 6e92f823SPeter Maydell    mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1268 60e0df25SPeter Maydellfi
1269 60e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then
1270 6e92f823SPeter Maydell    mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1271 60e0df25SPeter Maydellfi
1272 60e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then
1273 6e92f823SPeter Maydell    mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1274 60e0df25SPeter Maydellfi
1275 60e0df25SPeter Maydell
1276 6e92f823SPeter Maydellfor config in $mak_wilds; do
1277 6e92f823SPeter Maydell    default_target_list="${default_target_list} $(basename "$config" .mak)"
1278 6e92f823SPeter Maydelldone
1279 6e92f823SPeter Maydell
1280 c53eeaf7SStefan Hajnoczi# Enumerate public trace backends for --help output
1281 64a6047dSGreg Kurztrace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/'))
1282 c53eeaf7SStefan Hajnoczi
1283 af5db58eSpbrookif test x"$show_help" = x"yes" ; then
1284 af5db58eSpbrookcat << EOF
1285 af5db58eSpbrook
1286 af5db58eSpbrookUsage: configure [options]
1287 af5db58eSpbrookOptions: [defaults in brackets after descriptions]
1288 af5db58eSpbrook
1289 08fb77edSStefan WeilStandard options:
1290 08fb77edSStefan Weil  --help                   print this message
1291 08fb77edSStefan Weil  --prefix=PREFIX          install in PREFIX [$prefix]
1292 08fb77edSStefan Weil  --interp-prefix=PREFIX   where to find shared libraries, etc.
1293 08fb77edSStefan Weil                           use %M for cpu name [$interp_prefix]
1294 08fb77edSStefan Weil  --target-list=LIST       set target list (default: build everything)
1295 08fb77edSStefan Weil$(echo Available targets: $default_target_list | \
1296 08fb77edSStefan Weil  fold -s -w 53 | sed -e 's/^/                           /')
1297 08fb77edSStefan Weil
1298 08fb77edSStefan WeilAdvanced options (experts only):
1299 08fb77edSStefan Weil  --source-path=PATH       path of source code [$source_path]
1300 08fb77edSStefan Weil  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]
1301 08fb77edSStefan Weil  --cc=CC                  use C compiler CC [$cc]
1302 08fb77edSStefan Weil  --iasl=IASL              use ACPI compiler IASL [$iasl]
1303 08fb77edSStefan Weil  --host-cc=CC             use C compiler CC [$host_cc] for code run at
1304 08fb77edSStefan Weil                           build time
1305 08fb77edSStefan Weil  --cxx=CXX                use C++ compiler CXX [$cxx]
1306 08fb77edSStefan Weil  --objcc=OBJCC            use Objective-C compiler OBJCC [$objcc]
1307 08fb77edSStefan Weil  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS
1308 08fb77edSStefan Weil  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS
1309 08fb77edSStefan Weil  --make=MAKE              use specified make [$make]
1310 08fb77edSStefan Weil  --install=INSTALL        use specified install [$install]
1311 08fb77edSStefan Weil  --python=PYTHON          use specified python [$python]
1312 08fb77edSStefan Weil  --smbd=SMBD              use specified smbd [$smbd]
1313 08fb77edSStefan Weil  --static                 enable static build [$static]
1314 08fb77edSStefan Weil  --mandir=PATH            install man pages in PATH
1315 08fb77edSStefan Weil  --datadir=PATH           install firmware in PATH$confsuffix
1316 08fb77edSStefan Weil  --docdir=PATH            install documentation in PATH$confsuffix
1317 08fb77edSStefan Weil  --bindir=PATH            install binaries in PATH
1318 08fb77edSStefan Weil  --libdir=PATH            install libraries in PATH
1319 08fb77edSStefan Weil  --sysconfdir=PATH        install config in PATH$confsuffix
1320 08fb77edSStefan Weil  --localstatedir=PATH     install local state in PATH (set at runtime on win32)
1321 e26110cfSFam Zheng  --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1322 08fb77edSStefan Weil  --enable-debug           enable common debug build options
1323 08fb77edSStefan Weil  --disable-strip          disable stripping binaries
1324 08fb77edSStefan Weil  --disable-werror         disable compilation abort on warning
1325 63678e17SSteven Noonan  --disable-stack-protector disable compiler-provided stack protection
1326 08fb77edSStefan Weil  --audio-drv-list=LIST    set audio drivers list:
1327 08fb77edSStefan Weil                           Available drivers: $audio_possible_drivers
1328 08fb77edSStefan Weil  --block-drv-whitelist=L  Same as --block-drv-rw-whitelist=L
1329 08fb77edSStefan Weil  --block-drv-rw-whitelist=L
1330 08fb77edSStefan Weil                           set block driver read-write whitelist
1331 08fb77edSStefan Weil                           (affects only QEMU, not qemu-img)
1332 08fb77edSStefan Weil  --block-drv-ro-whitelist=L
1333 08fb77edSStefan Weil                           set block driver read-only whitelist
1334 08fb77edSStefan Weil                           (affects only QEMU, not qemu-img)
1335 5b808275SLluís Vilanova  --enable-trace-backends=B Set trace backend
1336 c53eeaf7SStefan Hajnoczi                           Available backends: $trace_backend_list
1337 08fb77edSStefan Weil  --with-trace-file=NAME   Full PATH,NAME of file to store traces
1338 08fb77edSStefan Weil                           Default:trace-<pid>
1339 c23f23b9SMichael Tokarev  --disable-slirp          disable SLIRP userspace network connectivity
1340 c23f23b9SMichael Tokarev  --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1341 c23f23b9SMichael Tokarev  --oss-lib                path to OSS library
1342 c23f23b9SMichael Tokarev  --cpu=CPU                Build for host CPU [$cpu]
1343 08fb77edSStefan Weil  --with-coroutine=BACKEND coroutine backend. Supported options:
1344 33c53c54SDaniel P. Berrange                           ucontext, sigaltstack, windows
1345 08fb77edSStefan Weil  --enable-gcov            enable test coverage analysis with gcov
1346 08fb77edSStefan Weil  --gcov=GCOV              use specified gcov [$gcov_tool]
1347 c23f23b9SMichael Tokarev  --disable-blobs          disable installing provided firmware blobs
1348 c23f23b9SMichael Tokarev  --with-vss-sdk=SDK-path  enable Windows VSS support in QEMU Guest Agent
1349 c23f23b9SMichael Tokarev  --with-win-sdk=SDK-path  path to Windows Platform SDK (to build VSS .tlb)
1350 a1c5e949SDaniel P. Berrange  --tls-priority           default TLS protocol/cipher priority string
1351 c12d66aaSLin Ma  --enable-gprof           QEMU profiling with gprof
1352 c12d66aaSLin Ma  --enable-profiler        profiler support
1353 c12d66aaSLin Ma  --enable-xen-pv-domain-build
1354 c12d66aaSLin Ma                           xen pv domain builder
1355 c12d66aaSLin Ma  --enable-debug-stack-usage
1356 c12d66aaSLin Ma                           track the maximum stack usage of stacks created by qemu_alloc_stack
1357 c23f23b9SMichael Tokarev
1358 c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and
1359 c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available:
1360 c23f23b9SMichael Tokarev
1361 c23f23b9SMichael Tokarev  system          all system emulation targets
1362 c23f23b9SMichael Tokarev  user            supported user emulation targets
1363 c23f23b9SMichael Tokarev  linux-user      all linux usermode emulation targets
1364 c23f23b9SMichael Tokarev  bsd-user        all BSD usermode emulation targets
1365 c23f23b9SMichael Tokarev  docs            build documentation
1366 c23f23b9SMichael Tokarev  guest-agent     build the QEMU Guest Agent
1367 c23f23b9SMichael Tokarev  guest-agent-msi build guest agent Windows MSI installation package
1368 c23f23b9SMichael Tokarev  pie             Position Independent Executables
1369 c23f23b9SMichael Tokarev  modules         modules support
1370 c23f23b9SMichael Tokarev  debug-tcg       TCG debugging (default is disabled)
1371 c23f23b9SMichael Tokarev  debug-info      debugging information
1372 c23f23b9SMichael Tokarev  sparse          sparse checker
1373 c23f23b9SMichael Tokarev
1374 ddbb0d09SDaniel P. Berrange  gnutls          GNUTLS cryptography support
1375 91bfcdb0SDaniel P. Berrange  nettle          nettle cryptography support
1376 91bfcdb0SDaniel P. Berrange  gcrypt          libgcrypt cryptography support
1377 c23f23b9SMichael Tokarev  sdl             SDL UI
1378 c23f23b9SMichael Tokarev  --with-sdlabi     select preferred SDL ABI 1.2 or 2.0
1379 c23f23b9SMichael Tokarev  gtk             gtk UI
1380 c23f23b9SMichael Tokarev  --with-gtkabi     select preferred GTK ABI 2.0 or 3.0
1381 c23f23b9SMichael Tokarev  vte             vte support for the gtk UI
1382 c23f23b9SMichael Tokarev  curses          curses UI
1383 c23f23b9SMichael Tokarev  vnc             VNC UI support
1384 c23f23b9SMichael Tokarev  vnc-sasl        SASL encryption for VNC server
1385 c23f23b9SMichael Tokarev  vnc-jpeg        JPEG lossy compression for VNC server
1386 c23f23b9SMichael Tokarev  vnc-png         PNG compression for VNC server
1387 c23f23b9SMichael Tokarev  cocoa           Cocoa UI (Mac OS X only)
1388 c23f23b9SMichael Tokarev  virtfs          VirtFS
1389 c23f23b9SMichael Tokarev  xen             xen backend driver support
1390 c23f23b9SMichael Tokarev  xen-pci-passthrough
1391 c23f23b9SMichael Tokarev  brlapi          BrlAPI (Braile)
1392 c23f23b9SMichael Tokarev  curl            curl connectivity
1393 c23f23b9SMichael Tokarev  fdt             fdt device tree
1394 c23f23b9SMichael Tokarev  bluez           bluez stack connectivity
1395 c23f23b9SMichael Tokarev  kvm             KVM acceleration support
1396 b0cb0a66SVincent Palatin  hax             HAX acceleration support
1397 c23f23b9SMichael Tokarev  rdma            RDMA-based migration support
1398 c23f23b9SMichael Tokarev  vde             support for vde network
1399 c23f23b9SMichael Tokarev  netmap          support for netmap network
1400 c23f23b9SMichael Tokarev  linux-aio       Linux AIO support
1401 c23f23b9SMichael Tokarev  cap-ng          libcap-ng support
1402 c23f23b9SMichael Tokarev  attr            attr and xattr support
1403 c23f23b9SMichael Tokarev  vhost-net       vhost-net acceleration support
1404 c23f23b9SMichael Tokarev  spice           spice
1405 c23f23b9SMichael Tokarev  rbd             rados block device (rbd)
1406 c23f23b9SMichael Tokarev  libiscsi        iscsi support
1407 c23f23b9SMichael Tokarev  libnfs          nfs support
1408 7b02f544SMarc-André Lureau  smartcard       smartcard support (libcacard)
1409 c23f23b9SMichael Tokarev  libusb          libusb (for usb passthrough)
1410 ed1701c6SDr. David Alan Gilbert  live-block-migration   Block migration in the main migration stream
1411 c23f23b9SMichael Tokarev  usb-redir       usb network redirection support
1412 c23f23b9SMichael Tokarev  lzo             support of lzo compression library
1413 c23f23b9SMichael Tokarev  snappy          support of snappy compression library
1414 c23f23b9SMichael Tokarev  bzip2           support of bzip2 compression library
1415 c23f23b9SMichael Tokarev                  (for reading bzip2-compressed dmg images)
1416 c23f23b9SMichael Tokarev  seccomp         seccomp support
1417 c23f23b9SMichael Tokarev  coroutine-pool  coroutine freelist (better performance)
1418 c23f23b9SMichael Tokarev  glusterfs       GlusterFS backend
1419 c23f23b9SMichael Tokarev  tpm             TPM support
1420 c23f23b9SMichael Tokarev  libssh2         ssh block device support
1421 c23f23b9SMichael Tokarev  numa            libnuma support
1422 c23f23b9SMichael Tokarev  tcmalloc        tcmalloc support
1423 7b01cb97SAlexandre Derumier  jemalloc        jemalloc support
1424 a6b1d4c0SChanglong Xie  replication     replication support
1425 c12d66aaSLin Ma  vhost-vsock     virtio sockets device support
1426 c12d66aaSLin Ma  opengl          opengl support
1427 c12d66aaSLin Ma  virglrenderer   virgl rendering support
1428 c12d66aaSLin Ma  xfsctl          xfsctl support
1429 c12d66aaSLin Ma  qom-cast-debug  cast debugging support
1430 c12d66aaSLin Ma  tools           build qemu-io, qemu-nbd and qemu-image tools
1431 da92c3ffSAshish Mittal  vxhs            Veritas HyperScale vDisk backend support
1432 08fb77edSStefan Weil
1433 08fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched
1434 af5db58eSpbrookEOF
1435 2d2ad6d0SFam Zhengexit 0
1436 af5db58eSpbrookfi
1437 af5db58eSpbrook
1438 c53eeaf7SStefan Hajnocziif ! has $python; then
1439 c53eeaf7SStefan Hajnoczi  error_exit "Python not found. Use --python=/path/to/python"
1440 c53eeaf7SStefan Hajnoczifi
1441 c53eeaf7SStefan Hajnoczi
1442 c53eeaf7SStefan Hajnoczi# Note that if the Python conditional here evaluates True we will exit
1443 c53eeaf7SStefan Hajnoczi# with status 1 which is a shell 'false' value.
1444 c53eeaf7SStefan Hajnocziif ! $python -c 'import sys; sys.exit(sys.version_info < (2,6) or sys.version_info >= (3,))'; then
1445 c53eeaf7SStefan Hajnoczi  error_exit "Cannot use '$python', Python 2.6 or later is required." \
1446 c53eeaf7SStefan Hajnoczi      "Note that Python 3 or later is not yet supported." \
1447 c53eeaf7SStefan Hajnoczi      "Use --python=/path/to/python to specify a supported Python."
1448 c53eeaf7SStefan Hajnoczifi
1449 c53eeaf7SStefan Hajnoczi
1450 c53eeaf7SStefan Hajnoczi# Suppress writing compiled files
1451 c53eeaf7SStefan Hajnoczipython="$python -B"
1452 c53eeaf7SStefan Hajnoczi
1453 359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just
1454 359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported.
1455 359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then
1456 359bc95dSPeter Maydell    if test "$tcg_interpreter" = "yes" ; then
1457 359bc95dSPeter Maydell        echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1458 359bc95dSPeter Maydell    else
1459 76ad07a4SPeter Maydell        error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1460 359bc95dSPeter Maydell    fi
1461 359bc95dSPeter Maydellfi
1462 359bc95dSPeter Maydell
1463 9c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror
1464 9c83ffd8SPeter Maydell# by default.  Only enable by default for git builds
1465 9c83ffd8SPeter Maydellif test -z "$werror" ; then
1466 9c83ffd8SPeter Maydell    if test -d "$source_path/.git" -a \
1467 e4650c81SThomas Huth        \( "$linux" = "yes" -o "$mingw32" = "yes" \) ; then
1468 9c83ffd8SPeter Maydell        werror="yes"
1469 9c83ffd8SPeter Maydell    else
1470 9c83ffd8SPeter Maydell        werror="no"
1471 9c83ffd8SPeter Maydell    fi
1472 9c83ffd8SPeter Maydellfi
1473 9c83ffd8SPeter Maydell
1474 8d05095cSPaolo Bonzini# check that the C compiler works.
1475 93b25869SJohn Snowwrite_c_skeleton;
1476 8d05095cSPaolo Bonziniif compile_object ; then
1477 8d05095cSPaolo Bonzini  : C compiler works ok
1478 8d05095cSPaolo Bonzinielse
1479 76ad07a4SPeter Maydell    error_exit "\"$cc\" either does not exist or does not work"
1480 8d05095cSPaolo Bonzinifi
1481 0ef74c74SPeter Maydellif ! compile_prog ; then
1482 0ef74c74SPeter Maydell    error_exit "\"$cc\" cannot build an executable (is your linker broken?)"
1483 0ef74c74SPeter Maydellfi
1484 8d05095cSPaolo Bonzini
1485 fb59dabdSPeter Maydellif test "$bogus_os" = "yes"; then
1486 fb59dabdSPeter Maydell    # Now that we know that we're not printing the help and that
1487 fb59dabdSPeter Maydell    # the compiler works (so the results of the check_defines we used
1488 fb59dabdSPeter Maydell    # to identify the OS are reliable), if we didn't recognize the
1489 fb59dabdSPeter Maydell    # host OS we should stop now.
1490 fb59dabdSPeter Maydell    error_exit "Unrecognized host OS $targetos"
1491 fb59dabdSPeter Maydellfi
1492 fb59dabdSPeter Maydell
1493 98b21dcdSPeter Maydell# Check that the C++ compiler exists and works with the C compiler
1494 98b21dcdSPeter Maydellif has $cxx; then
1495 98b21dcdSPeter Maydell    cat > $TMPC <<EOF
1496 98b21dcdSPeter Maydellint c_function(void);
1497 98b21dcdSPeter Maydellint main(void) { return c_function(); }
1498 98b21dcdSPeter MaydellEOF
1499 98b21dcdSPeter Maydell
1500 98b21dcdSPeter Maydell    compile_object
1501 98b21dcdSPeter Maydell
1502 9c83ffd8SPeter Maydell    cat > $TMPCXX <<EOF
1503 98b21dcdSPeter Maydellextern "C" {
1504 98b21dcdSPeter Maydell   int c_function(void);
1505 98b21dcdSPeter Maydell}
1506 98b21dcdSPeter Maydellint c_function(void) { return 42; }
1507 98b21dcdSPeter MaydellEOF
1508 98b21dcdSPeter Maydell
1509 9c83ffd8SPeter Maydell    update_cxxflags
1510 9c83ffd8SPeter Maydell
1511 9c83ffd8SPeter Maydell    if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1512 98b21dcdSPeter Maydell        # C++ compiler $cxx works ok with C compiler $cc
1513 98b21dcdSPeter Maydell        :
1514 98b21dcdSPeter Maydell    else
1515 98b21dcdSPeter Maydell        echo "C++ compiler $cxx does not work with C compiler $cc"
1516 98b21dcdSPeter Maydell        echo "Disabling C++ specific optional code"
1517 98b21dcdSPeter Maydell        cxx=
1518 98b21dcdSPeter Maydell    fi
1519 98b21dcdSPeter Maydellelse
1520 98b21dcdSPeter Maydell    echo "No C++ compiler available; disabling C++ specific optional code"
1521 98b21dcdSPeter Maydell    cxx=
1522 98b21dcdSPeter Maydellfi
1523 98b21dcdSPeter Maydell
1524 8d05095cSPaolo Bonzinigcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1525 8d05095cSPaolo Bonzinigcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1526 ac7568bdSDaniel P. Berrangegcc_flags="-Wno-missing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1527 435405acSPranith Kumargcc_flags="-Wendif-labels -Wno-shift-negative-value $gcc_flags"
1528 c1556a81SPeter Maydellgcc_flags="-Wno-initializer-overrides $gcc_flags"
1529 71429097SPeter Maydellgcc_flags="-Wno-string-plus-int $gcc_flags"
1530 6ca026cbSPeter Maydell# Note that we do not add -Werror to gcc_flags here, because that would
1531 6ca026cbSPeter Maydell# enable it for all configure tests. If a configure test failed due
1532 6ca026cbSPeter Maydell# to -Werror this would just silently disable some features,
1533 6ca026cbSPeter Maydell# so it's too error prone.
1534 93b25869SJohn Snow
1535 93b25869SJohn Snowcc_has_warning_flag() {
1536 93b25869SJohn Snow    write_c_skeleton;
1537 93b25869SJohn Snow
1538 a1d29d6cSPeter Maydell    # Use the positive sense of the flag when testing for -Wno-wombat
1539 a1d29d6cSPeter Maydell    # support (gcc will happily accept the -Wno- form of unknown
1540 a1d29d6cSPeter Maydell    # warning options).
1541 93b25869SJohn Snow    optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1542 93b25869SJohn Snow    compile_prog "-Werror $optflag" ""
1543 93b25869SJohn Snow}
1544 93b25869SJohn Snow
1545 93b25869SJohn Snowfor flag in $gcc_flags; do
1546 93b25869SJohn Snow    if cc_has_warning_flag $flag ; then
1547 8d05095cSPaolo Bonzini        QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1548 8d05095cSPaolo Bonzini    fi
1549 8d05095cSPaolo Bonzinidone
1550 8d05095cSPaolo Bonzini
1551 63678e17SSteven Noonanif test "$stack_protector" != "no"; then
1552 fccd35a0SRodrigo Rebello  cat > $TMPC << EOF
1553 fccd35a0SRodrigo Rebelloint main(int argc, char *argv[])
1554 fccd35a0SRodrigo Rebello{
1555 fccd35a0SRodrigo Rebello    char arr[64], *p = arr, *c = argv[0];
1556 fccd35a0SRodrigo Rebello    while (*c) {
1557 fccd35a0SRodrigo Rebello        *p++ = *c++;
1558 fccd35a0SRodrigo Rebello    }
1559 fccd35a0SRodrigo Rebello    return 0;
1560 fccd35a0SRodrigo Rebello}
1561 fccd35a0SRodrigo RebelloEOF
1562 63678e17SSteven Noonan  gcc_flags="-fstack-protector-strong -fstack-protector-all"
1563 3b463a3fSMiroslav Rezanina  sp_on=0
1564 63678e17SSteven Noonan  for flag in $gcc_flags; do
1565 590e5dd9SPeter Maydell    # We need to check both a compile and a link, since some compiler
1566 590e5dd9SPeter Maydell    # setups fail only on a .c->.o compile and some only at link time
1567 590e5dd9SPeter Maydell    if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1568 590e5dd9SPeter Maydell       compile_prog "-Werror $flag" ""; then
1569 63678e17SSteven Noonan      QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1570 3b463a3fSMiroslav Rezanina      sp_on=1
1571 63678e17SSteven Noonan      break
1572 63678e17SSteven Noonan    fi
1573 63678e17SSteven Noonan  done
1574 3b463a3fSMiroslav Rezanina  if test "$stack_protector" = yes; then
1575 3b463a3fSMiroslav Rezanina    if test $sp_on = 0; then
1576 3b463a3fSMiroslav Rezanina      error_exit "Stack protector not supported"
1577 3b463a3fSMiroslav Rezanina    fi
1578 3b463a3fSMiroslav Rezanina  fi
1579 37746c5eSMarc-André Lureaufi
1580 37746c5eSMarc-André Lureau
1581 cbdd1999SPaolo Bonzini# Workaround for http://gcc.gnu.org/PR55489.  Happens with -fPIE/-fPIC and
1582 cbdd1999SPaolo Bonzini# large functions that use global variables.  The bug is in all releases of
1583 cbdd1999SPaolo Bonzini# GCC, but it became particularly acute in 4.6.x and 4.7.x.  It is fixed in
1584 cbdd1999SPaolo Bonzini# 4.7.3 and 4.8.0.  We should be able to delete this at the end of 2013.
1585 cbdd1999SPaolo Bonzinicat > $TMPC << EOF
1586 cbdd1999SPaolo Bonzini#if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1587 cbdd1999SPaolo Bonziniint main(void) { return 0; }
1588 cbdd1999SPaolo Bonzini#else
1589 cbdd1999SPaolo Bonzini#error No bug in this compiler.
1590 cbdd1999SPaolo Bonzini#endif
1591 cbdd1999SPaolo BonziniEOF
1592 cbdd1999SPaolo Bonziniif compile_prog "-Werror -fno-gcse" "" ; then
1593 cbdd1999SPaolo Bonzini  TRANSLATE_OPT_CFLAGS=-fno-gcse
1594 cbdd1999SPaolo Bonzinifi
1595 cbdd1999SPaolo Bonzini
1596 40d6444eSAvi Kivityif test "$static" = "yes" ; then
1597 aa0d1f44SPaolo Bonzini  if test "$modules" = "yes" ; then
1598 aa0d1f44SPaolo Bonzini    error_exit "static and modules are mutually incompatible"
1599 aa0d1f44SPaolo Bonzini  fi
1600 40d6444eSAvi Kivity  if test "$pie" = "yes" ; then
1601 76ad07a4SPeter Maydell    error_exit "static and pie are mutually incompatible"
1602 40d6444eSAvi Kivity  else
1603 40d6444eSAvi Kivity    pie="no"
1604 40d6444eSAvi Kivity  fi
1605 40d6444eSAvi Kivityfi
1606 40d6444eSAvi Kivity
1607 768b7855SEmilio G. Cota# Unconditional check for compiler __thread support
1608 768b7855SEmilio G. Cota  cat > $TMPC << EOF
1609 768b7855SEmilio G. Cotastatic __thread int tls_var;
1610 768b7855SEmilio G. Cotaint main(void) { return tls_var; }
1611 768b7855SEmilio G. CotaEOF
1612 768b7855SEmilio G. Cota
1613 768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then
1614 768b7855SEmilio G. Cota    error_exit "Your compiler does not support the __thread specifier for " \
1615 768b7855SEmilio G. Cota	"Thread-Local Storage (TLS). Please upgrade to a version that does."
1616 768b7855SEmilio G. Cotafi
1617 768b7855SEmilio G. Cota
1618 40d6444eSAvi Kivityif test "$pie" = ""; then
1619 40d6444eSAvi Kivity  case "$cpu-$targetos" in
1620 c72b26ecSRichard Henderson    i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1621 40d6444eSAvi Kivity      ;;
1622 40d6444eSAvi Kivity    *)
1623 40d6444eSAvi Kivity      pie="no"
1624 40d6444eSAvi Kivity      ;;
1625 40d6444eSAvi Kivity  esac
1626 40d6444eSAvi Kivityfi
1627 40d6444eSAvi Kivity
1628 40d6444eSAvi Kivityif test "$pie" != "no" ; then
1629 40d6444eSAvi Kivity  cat > $TMPC << EOF
1630 21d4a791SAvi Kivity
1631 21d4a791SAvi Kivity#ifdef __linux__
1632 21d4a791SAvi Kivity#  define THREAD __thread
1633 21d4a791SAvi Kivity#else
1634 21d4a791SAvi Kivity#  define THREAD
1635 21d4a791SAvi Kivity#endif
1636 21d4a791SAvi Kivity
1637 21d4a791SAvi Kivitystatic THREAD int tls_var;
1638 21d4a791SAvi Kivity
1639 21d4a791SAvi Kivityint main(void) { return tls_var; }
1640 21d4a791SAvi Kivity
1641 40d6444eSAvi KivityEOF
1642 40d6444eSAvi Kivity  if compile_prog "-fPIE -DPIE" "-pie"; then
1643 40d6444eSAvi Kivity    QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1644 40d6444eSAvi Kivity    LDFLAGS="-pie $LDFLAGS"
1645 40d6444eSAvi Kivity    pie="yes"
1646 40d6444eSAvi Kivity    if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1647 40d6444eSAvi Kivity      LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1648 40d6444eSAvi Kivity    fi
1649 40d6444eSAvi Kivity  else
1650 40d6444eSAvi Kivity    if test "$pie" = "yes"; then
1651 76ad07a4SPeter Maydell      error_exit "PIE not available due to missing toolchain support"
1652 40d6444eSAvi Kivity    else
1653 40d6444eSAvi Kivity      echo "Disabling PIE due to missing toolchain support"
1654 40d6444eSAvi Kivity      pie="no"
1655 40d6444eSAvi Kivity    fi
1656 40d6444eSAvi Kivity  fi
1657 46eef33bSBrad
1658 e4a7b344SStefan Hajnoczi  if compile_prog "-Werror -fno-pie" "-nopie"; then
1659 46eef33bSBrad    CFLAGS_NOPIE="-fno-pie"
1660 46eef33bSBrad    LDFLAGS_NOPIE="-nopie"
1661 46eef33bSBrad  fi
1662 40d6444eSAvi Kivityfi
1663 40d6444eSAvi Kivity
1664 09dada40SPaolo Bonzini##########################################
1665 09dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains
1666 09dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit
1667 09dada40SPaolo Bonzini# specification is necessary
1668 09dada40SPaolo Bonzini
1669 09dada40SPaolo Bonziniif test "$cpu" = "i386"; then
1670 09dada40SPaolo Bonzini  cat > $TMPC << EOF
1671 09dada40SPaolo Bonzinistatic int sfaa(int *ptr)
1672 09dada40SPaolo Bonzini{
1673 09dada40SPaolo Bonzini  return __sync_fetch_and_and(ptr, 0);
1674 09dada40SPaolo Bonzini}
1675 09dada40SPaolo Bonzini
1676 09dada40SPaolo Bonziniint main(void)
1677 09dada40SPaolo Bonzini{
1678 09dada40SPaolo Bonzini  int val = 42;
1679 1405b629SStefan Weil  val = __sync_val_compare_and_swap(&val, 0, 1);
1680 09dada40SPaolo Bonzini  sfaa(&val);
1681 09dada40SPaolo Bonzini  return val;
1682 09dada40SPaolo Bonzini}
1683 09dada40SPaolo BonziniEOF
1684 09dada40SPaolo Bonzini  if ! compile_prog "" "" ; then
1685 09dada40SPaolo Bonzini    QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1686 09dada40SPaolo Bonzini  fi
1687 09dada40SPaolo Bonzinifi
1688 09dada40SPaolo Bonzini
1689 09dada40SPaolo Bonzini#########################################
1690 ec530c81Sbellard# Solaris specific configure tool chain decisions
1691 09dada40SPaolo Bonzini
1692 ec530c81Sbellardif test "$solaris" = "yes" ; then
1693 6792aa11SLoïc Minier  if has $install; then
1694 6792aa11SLoïc Minier    :
1695 6792aa11SLoïc Minier  else
1696 76ad07a4SPeter Maydell    error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1697 76ad07a4SPeter Maydell        "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1698 76ad07a4SPeter Maydell        "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1699 ec530c81Sbellard  fi
1700 89138857SStefan Weil  if test "$(path_of $install)" = "/usr/sbin/install" ; then
1701 76ad07a4SPeter Maydell    error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1702 76ad07a4SPeter Maydell        "try ginstall from the GNU fileutils available from www.blastwave.org" \
1703 76ad07a4SPeter Maydell        "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1704 ec530c81Sbellard  fi
1705 6792aa11SLoïc Minier  if has ar; then
1706 6792aa11SLoïc Minier    :
1707 6792aa11SLoïc Minier  else
1708 ec530c81Sbellard    if test -f /usr/ccs/bin/ar ; then
1709 76ad07a4SPeter Maydell      error_exit "No path includes ar" \
1710 76ad07a4SPeter Maydell          "Add /usr/ccs/bin to your path and rerun configure"
1711 ec530c81Sbellard    fi
1712 76ad07a4SPeter Maydell    error_exit "No path includes ar"
1713 ec530c81Sbellard  fi
1714 ec530c81Sbellardfi
1715 ec530c81Sbellard
1716 afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then
1717 121afa9eSAnthony Liguori    target_list="$default_target_list"
1718 121afa9eSAnthony Liguorielse
1719 89138857SStefan Weil    target_list=$(echo "$target_list" | sed -e 's/,/ /g')
1720 5327cf48Sbellardfi
1721 25b48338SPeter Maydell
1722 25b48338SPeter Maydell# Check that we recognised the target name; this allows a more
1723 25b48338SPeter Maydell# friendly error message than if we let it fall through.
1724 25b48338SPeter Maydellfor target in $target_list; do
1725 25b48338SPeter Maydell    case " $default_target_list " in
1726 25b48338SPeter Maydell        *" $target "*)
1727 25b48338SPeter Maydell            ;;
1728 25b48338SPeter Maydell        *)
1729 25b48338SPeter Maydell            error_exit "Unknown target name '$target'"
1730 25b48338SPeter Maydell            ;;
1731 25b48338SPeter Maydell    esac
1732 25b48338SPeter Maydelldone
1733 25b48338SPeter Maydell
1734 f55fe278SPaolo Bonzini# see if system emulation was really requested
1735 f55fe278SPaolo Bonzinicase " $target_list " in
1736 f55fe278SPaolo Bonzini  *"-softmmu "*) softmmu=yes
1737 f55fe278SPaolo Bonzini  ;;
1738 f55fe278SPaolo Bonzini  *) softmmu=no
1739 f55fe278SPaolo Bonzini  ;;
1740 f55fe278SPaolo Bonziniesac
1741 5327cf48Sbellard
1742 249247c9SJuan Quintelafeature_not_found() {
1743 249247c9SJuan Quintela  feature=$1
1744 21684af0SStewart Smith  remedy=$2
1745 249247c9SJuan Quintela
1746 76ad07a4SPeter Maydell  error_exit "User requested feature $feature" \
1747 21684af0SStewart Smith      "configure was not able to find it." \
1748 21684af0SStewart Smith      "$remedy"
1749 249247c9SJuan Quintela}
1750 249247c9SJuan Quintela
1751 7d13299dSbellard# ---
1752 7d13299dSbellard# big/little endian test
1753 7d13299dSbellardcat > $TMPC << EOF
1754 61cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1755 61cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1756 61cc919fSMike Frysingerextern int foo(short *, short *);
1757 61cc919fSMike Frysingerint main(int argc, char *argv[]) {
1758 61cc919fSMike Frysinger    return foo(big_endian, little_endian);
1759 7d13299dSbellard}
1760 7d13299dSbellardEOF
1761 7d13299dSbellard
1762 61cc919fSMike Frysingerif compile_object ; then
1763 61cc919fSMike Frysinger    if grep -q BiGeNdIaN $TMPO ; then
1764 61cc919fSMike Frysinger        bigendian="yes"
1765 61cc919fSMike Frysinger    elif grep -q LiTtLeEnDiAn $TMPO ; then
1766 61cc919fSMike Frysinger        bigendian="no"
1767 7d13299dSbellard    else
1768 7d13299dSbellard        echo big/little test failed
1769 7d13299dSbellard    fi
1770 7d13299dSbellardelse
1771 61cc919fSMike Frysinger    echo big/little test failed
1772 7d13299dSbellardfi
1773 7d13299dSbellard
1774 b0a47e79SJuan Quintela##########################################
1775 a30878e7SPeter Maydell# cocoa implies not SDL or GTK
1776 a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI
1777 a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code)
1778 a30878e7SPeter Maydellif test "$cocoa" = "yes"; then
1779 a30878e7SPeter Maydell    if test "$sdl" = "yes"; then
1780 a30878e7SPeter Maydell        error_exit "Cocoa and SDL UIs cannot both be enabled at once"
1781 a30878e7SPeter Maydell    fi
1782 a30878e7SPeter Maydell    if test "$gtk" = "yes"; then
1783 a30878e7SPeter Maydell        error_exit "Cocoa and GTK UIs cannot both be enabled at once"
1784 a30878e7SPeter Maydell    fi
1785 a30878e7SPeter Maydell    gtk=no
1786 a30878e7SPeter Maydell    sdl=no
1787 a30878e7SPeter Maydellfi
1788 a30878e7SPeter Maydell
1789 6b39b063SEric Blake# Some versions of Mac OS X incorrectly define SIZE_MAX
1790 6b39b063SEric Blakecat > $TMPC << EOF
1791 6b39b063SEric Blake#include <stdint.h>
1792 6b39b063SEric Blake#include <stdio.h>
1793 6b39b063SEric Blakeint main(int argc, char *argv[]) {
1794 6b39b063SEric Blake    return printf("%zu", SIZE_MAX);
1795 6b39b063SEric Blake}
1796 6b39b063SEric BlakeEOF
1797 6b39b063SEric Blakehave_broken_size_max=no
1798 6b39b063SEric Blakeif ! compile_object -Werror ; then
1799 6b39b063SEric Blake    have_broken_size_max=yes
1800 6b39b063SEric Blakefi
1801 6b39b063SEric Blake
1802 a30878e7SPeter Maydell##########################################
1803 015a33bdSGonglei# L2TPV3 probe
1804 015a33bdSGonglei
1805 015a33bdSGongleicat > $TMPC <<EOF
1806 015a33bdSGonglei#include <sys/socket.h>
1807 bff6cb72SMichael Tokarev#include <linux/ip.h>
1808 015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); }
1809 015a33bdSGongleiEOF
1810 015a33bdSGongleiif compile_prog "" "" ; then
1811 015a33bdSGonglei  l2tpv3=yes
1812 015a33bdSGongleielse
1813 015a33bdSGonglei  l2tpv3=no
1814 015a33bdSGongleifi
1815 015a33bdSGonglei
1816 015a33bdSGonglei##########################################
1817 4d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check
1818 4d9310f4SDaniel P. Berrange
1819 4d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then
1820 4d9310f4SDaniel P. Berrange    # Some versions of MinGW / Mingw-w64 lack localtime_r
1821 4d9310f4SDaniel P. Berrange    # and gmtime_r entirely.
1822 4d9310f4SDaniel P. Berrange    #
1823 4d9310f4SDaniel P. Berrange    # Some versions of Mingw-w64 define a macro for
1824 4d9310f4SDaniel P. Berrange    # localtime_r/gmtime_r.
1825 4d9310f4SDaniel P. Berrange    #
1826 4d9310f4SDaniel P. Berrange    # Some versions of Mingw-w64 will define functions
1827 4d9310f4SDaniel P. Berrange    # for localtime_r/gmtime_r, but only if you have
1828 4d9310f4SDaniel P. Berrange    # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun
1829 4d9310f4SDaniel P. Berrange    # though, unistd.h and pthread.h both define
1830 4d9310f4SDaniel P. Berrange    # that for you.
1831 4d9310f4SDaniel P. Berrange    #
1832 4d9310f4SDaniel P. Berrange    # So this #undef localtime_r and #include <unistd.h>
1833 4d9310f4SDaniel P. Berrange    # are not in fact redundant.
1834 4d9310f4SDaniel P. Berrangecat > $TMPC << EOF
1835 4d9310f4SDaniel P. Berrange#include <unistd.h>
1836 4d9310f4SDaniel P. Berrange#include <time.h>
1837 4d9310f4SDaniel P. Berrange#undef localtime_r
1838 4d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; }
1839 4d9310f4SDaniel P. BerrangeEOF
1840 4d9310f4SDaniel P. Berrange    if compile_prog "" "" ; then
1841 4d9310f4SDaniel P. Berrange        localtime_r="yes"
1842 4d9310f4SDaniel P. Berrange    else
1843 4d9310f4SDaniel P. Berrange        localtime_r="no"
1844 4d9310f4SDaniel P. Berrange    fi
1845 4d9310f4SDaniel P. Berrangefi
1846 4d9310f4SDaniel P. Berrange
1847 4d9310f4SDaniel P. Berrange##########################################
1848 779ab5e3SStefan Weil# pkg-config probe
1849 779ab5e3SStefan Weil
1850 779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then
1851 76ad07a4SPeter Maydell  error_exit "pkg-config binary '$pkg_config_exe' not found"
1852 779ab5e3SStefan Weilfi
1853 779ab5e3SStefan Weil
1854 779ab5e3SStefan Weil##########################################
1855 b0a47e79SJuan Quintela# NPTL probe
1856 b0a47e79SJuan Quintela
1857 24cb36a6SPeter Maydellif test "$linux_user" = "yes"; then
1858 bd0c5661Spbrook  cat > $TMPC <<EOF
1859 bd0c5661Spbrook#include <sched.h>
1860 30813ceaSpbrook#include <linux/futex.h>
1861 182eacc0SStefan Weilint main(void) {
1862 bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1863 bd0c5661Spbrook#error bork
1864 bd0c5661Spbrook#endif
1865 182eacc0SStefan Weil  return 0;
1866 bd0c5661Spbrook}
1867 bd0c5661SpbrookEOF
1868 24cb36a6SPeter Maydell  if ! compile_object ; then
1869 21684af0SStewart Smith    feature_not_found "nptl" "Install glibc and linux kernel headers."
1870 b0a47e79SJuan Quintela  fi
1871 bd0c5661Spbrookfi
1872 bd0c5661Spbrook
1873 11d9f695Sbellard##########################################
1874 99f2dbd3SLiang Li# avx2 optimization requirement check
1875 99f2dbd3SLiang Li
1876 99f2dbd3SLiang Licat > $TMPC << EOF
1877 4fb8320aSDr. David Alan Gilbert#pragma GCC push_options
1878 4fb8320aSDr. David Alan Gilbert#pragma GCC target("avx2")
1879 4fb8320aSDr. David Alan Gilbert#include <cpuid.h>
1880 4fb8320aSDr. David Alan Gilbert#include <immintrin.h>
1881 4fb8320aSDr. David Alan Gilbertstatic int bar(void *a) {
1882 5e33a872SRichard Henderson    __m256i x = *(__m256i *)a;
1883 5e33a872SRichard Henderson    return _mm256_testz_si256(x, x);
1884 4fb8320aSDr. David Alan Gilbert}
1885 5e33a872SRichard Hendersonint main(int argc, char *argv[]) { return bar(argv[0]); }
1886 99f2dbd3SLiang LiEOF
1887 4fb8320aSDr. David Alan Gilbertif compile_object "" ; then
1888 99f2dbd3SLiang Li  avx2_opt="yes"
1889 99f2dbd3SLiang Lifi
1890 99f2dbd3SLiang Li
1891 99f2dbd3SLiang Li#########################################
1892 ac62922eSbalrog# zlib check
1893 ac62922eSbalrog
1894 1ece9905SAlon Levyif test "$zlib" != "no" ; then
1895 ac62922eSbalrog    cat > $TMPC << EOF
1896 ac62922eSbalrog#include <zlib.h>
1897 ac62922eSbalrogint main(void) { zlibVersion(); return 0; }
1898 ac62922eSbalrogEOF
1899 52166aa0SJuan Quintela    if compile_prog "" "-lz" ; then
1900 ac62922eSbalrog        :
1901 ac62922eSbalrog    else
1902 76ad07a4SPeter Maydell        error_exit "zlib check failed" \
1903 76ad07a4SPeter Maydell            "Make sure to have the zlib libs and headers installed."
1904 ac62922eSbalrog    fi
1905 1ece9905SAlon Levyfi
1906 eb0ecd5aSWill NewtonLIBS="$LIBS -lz"
1907 ac62922eSbalrog
1908 ac62922eSbalrog##########################################
1909 607dacd0Sqiaonuohan# lzo check
1910 607dacd0Sqiaonuohan
1911 607dacd0Sqiaonuohanif test "$lzo" != "no" ; then
1912 607dacd0Sqiaonuohan    cat > $TMPC << EOF
1913 607dacd0Sqiaonuohan#include <lzo/lzo1x.h>
1914 607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; }
1915 607dacd0SqiaonuohanEOF
1916 607dacd0Sqiaonuohan    if compile_prog "" "-llzo2" ; then
1917 607dacd0Sqiaonuohan        libs_softmmu="$libs_softmmu -llzo2"
1918 b25c9dffSStefan Weil        lzo="yes"
1919 b25c9dffSStefan Weil    else
1920 b25c9dffSStefan Weil        if test "$lzo" = "yes"; then
1921 b25c9dffSStefan Weil            feature_not_found "liblzo2" "Install liblzo2 devel"
1922 b25c9dffSStefan Weil        fi
1923 b25c9dffSStefan Weil        lzo="no"
1924 b25c9dffSStefan Weil    fi
1925 607dacd0Sqiaonuohanfi
1926 607dacd0Sqiaonuohan
1927 607dacd0Sqiaonuohan##########################################
1928 607dacd0Sqiaonuohan# snappy check
1929 607dacd0Sqiaonuohan
1930 607dacd0Sqiaonuohanif test "$snappy" != "no" ; then
1931 607dacd0Sqiaonuohan    cat > $TMPC << EOF
1932 607dacd0Sqiaonuohan#include <snappy-c.h>
1933 607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; }
1934 607dacd0SqiaonuohanEOF
1935 607dacd0Sqiaonuohan    if compile_prog "" "-lsnappy" ; then
1936 607dacd0Sqiaonuohan        libs_softmmu="$libs_softmmu -lsnappy"
1937 b25c9dffSStefan Weil        snappy="yes"
1938 b25c9dffSStefan Weil    else
1939 b25c9dffSStefan Weil        if test "$snappy" = "yes"; then
1940 b25c9dffSStefan Weil            feature_not_found "libsnappy" "Install libsnappy devel"
1941 b25c9dffSStefan Weil        fi
1942 b25c9dffSStefan Weil        snappy="no"
1943 b25c9dffSStefan Weil    fi
1944 607dacd0Sqiaonuohanfi
1945 607dacd0Sqiaonuohan
1946 607dacd0Sqiaonuohan##########################################
1947 6b383c08SPeter Wu# bzip2 check
1948 6b383c08SPeter Wu
1949 6b383c08SPeter Wuif test "$bzip2" != "no" ; then
1950 6b383c08SPeter Wu    cat > $TMPC << EOF
1951 6b383c08SPeter Wu#include <bzlib.h>
1952 6b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; }
1953 6b383c08SPeter WuEOF
1954 6b383c08SPeter Wu    if compile_prog "" "-lbz2" ; then
1955 6b383c08SPeter Wu        bzip2="yes"
1956 6b383c08SPeter Wu    else
1957 6b383c08SPeter Wu        if test "$bzip2" = "yes"; then
1958 6b383c08SPeter Wu            feature_not_found "libbzip2" "Install libbzip2 devel"
1959 6b383c08SPeter Wu        fi
1960 6b383c08SPeter Wu        bzip2="no"
1961 6b383c08SPeter Wu    fi
1962 6b383c08SPeter Wufi
1963 6b383c08SPeter Wu
1964 6b383c08SPeter Wu##########################################
1965 f794573eSEduardo Otubo# libseccomp check
1966 f794573eSEduardo Otubo
1967 f794573eSEduardo Otuboif test "$seccomp" != "no" ; then
1968 693e5910SAndrew Jones    case "$cpu" in
1969 693e5910SAndrew Jones    i386|x86_64)
1970 ba060c53Sdann frazier        libseccomp_minver="2.1.0"
1971 693e5910SAndrew Jones        ;;
1972 5ce43972SJames Hogan    mips)
1973 5ce43972SJames Hogan        libseccomp_minver="2.2.0"
1974 5ce43972SJames Hogan        ;;
1975 693e5910SAndrew Jones    arm|aarch64)
1976 693e5910SAndrew Jones        libseccomp_minver="2.2.3"
1977 693e5910SAndrew Jones        ;;
1978 3e684455SMichael Strosaker    ppc|ppc64)
1979 3e684455SMichael Strosaker        libseccomp_minver="2.3.0"
1980 3e684455SMichael Strosaker        ;;
1981 693e5910SAndrew Jones    *)
1982 693e5910SAndrew Jones        libseccomp_minver=""
1983 693e5910SAndrew Jones        ;;
1984 693e5910SAndrew Jones    esac
1985 693e5910SAndrew Jones
1986 693e5910SAndrew Jones    if test "$libseccomp_minver" != "" &&
1987 693e5910SAndrew Jones       $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then
1988 89138857SStefan Weil        libs_softmmu="$libs_softmmu $($pkg_config --libs libseccomp)"
1989 89138857SStefan Weil        QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags libseccomp)"
1990 f794573eSEduardo Otubo        seccomp="yes"
1991 f794573eSEduardo Otubo    else
1992 f794573eSEduardo Otubo        if test "$seccomp" = "yes" ; then
1993 693e5910SAndrew Jones            if test "$libseccomp_minver" != "" ; then
1994 693e5910SAndrew Jones                feature_not_found "libseccomp" \
1995 693e5910SAndrew Jones                    "Install libseccomp devel >= $libseccomp_minver"
1996 693e5910SAndrew Jones            else
1997 693e5910SAndrew Jones                feature_not_found "libseccomp" \
1998 693e5910SAndrew Jones                    "libseccomp is not supported for host cpu $cpu"
1999 693e5910SAndrew Jones            fi
2000 896848f0SEduardo Otubo        fi
2001 e84d5956SYann E. MORIN        seccomp="no"
2002 f794573eSEduardo Otubo    fi
2003 f794573eSEduardo Otubofi
2004 f794573eSEduardo Otubo##########################################
2005 e37630caSaliguori# xen probe
2006 e37630caSaliguori
2007 fc321b4bSJuan Quintelaif test "$xen" != "no" ; then
2008 c1cdd9d5SJuergen Gross  # Check whether Xen library path is specified via --extra-ldflags to avoid
2009 c1cdd9d5SJuergen Gross  # overriding this setting with pkg-config output. If not, try pkg-config
2010 c1cdd9d5SJuergen Gross  # to obtain all needed flags.
2011 c1cdd9d5SJuergen Gross
2012 c1cdd9d5SJuergen Gross  if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \
2013 c1cdd9d5SJuergen Gross     $pkg_config --exists xencontrol ; then
2014 c1cdd9d5SJuergen Gross    xen_ctrl_version="$(printf '%d%02d%02d' \
2015 c1cdd9d5SJuergen Gross      $($pkg_config --modversion xencontrol | sed 's/\./ /g') )"
2016 c1cdd9d5SJuergen Gross    xen=yes
2017 c1cdd9d5SJuergen Gross    xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab"
2018 c1cdd9d5SJuergen Gross    xen_pc="$xen_pc xenevtchn xendevicemodel"
2019 c1cdd9d5SJuergen Gross    QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)"
2020 c1cdd9d5SJuergen Gross    libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu"
2021 c1cdd9d5SJuergen Gross    LDFLAGS="$($pkg_config --libs $xen_pc) $LDFLAGS"
2022 c1cdd9d5SJuergen Gross  else
2023 c1cdd9d5SJuergen Gross
2024 b2266beeSJuan Quintela    xen_libs="-lxenstore -lxenctrl -lxenguest"
2025 d9506cabSAnthony PERARD    xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn"
2026 d5b93ddfSAnthony PERARD
2027 50ced5b3SStefan Weil    # First we test whether Xen headers and libraries are available.
2028 50ced5b3SStefan Weil    # If no, we are done and there is no Xen support.
2029 50ced5b3SStefan Weil    # If yes, more tests are run to detect the Xen version.
2030 50ced5b3SStefan Weil
2031 50ced5b3SStefan Weil    # Xen (any)
2032 50ced5b3SStefan Weil    cat > $TMPC <<EOF
2033 50ced5b3SStefan Weil#include <xenctrl.h>
2034 50ced5b3SStefan Weilint main(void) {
2035 50ced5b3SStefan Weil  return 0;
2036 50ced5b3SStefan Weil}
2037 50ced5b3SStefan WeilEOF
2038 50ced5b3SStefan Weil    if ! compile_prog "" "$xen_libs" ; then
2039 50ced5b3SStefan Weil      # Xen not found
2040 50ced5b3SStefan Weil      if test "$xen" = "yes" ; then
2041 21684af0SStewart Smith        feature_not_found "xen" "Install xen devel"
2042 50ced5b3SStefan Weil      fi
2043 50ced5b3SStefan Weil      xen=no
2044 50ced5b3SStefan Weil
2045 d5b93ddfSAnthony PERARD    # Xen unstable
2046 69deef08SPeter Maydell    elif
2047 69deef08SPeter Maydell        cat > $TMPC <<EOF &&
2048 da8090ccSPaul Durrant#undef XC_WANT_COMPAT_DEVICEMODEL_API
2049 da8090ccSPaul Durrant#define __XEN_TOOLS__
2050 da8090ccSPaul Durrant#include <xendevicemodel.h>
2051 da8090ccSPaul Durrantint main(void) {
2052 da8090ccSPaul Durrant  xendevicemodel_handle *xd;
2053 da8090ccSPaul Durrant
2054 da8090ccSPaul Durrant  xd = xendevicemodel_open(0, 0);
2055 da8090ccSPaul Durrant  xendevicemodel_close(xd);
2056 da8090ccSPaul Durrant
2057 da8090ccSPaul Durrant  return 0;
2058 da8090ccSPaul Durrant}
2059 da8090ccSPaul DurrantEOF
2060 da8090ccSPaul Durrant        compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs"
2061 da8090ccSPaul Durrant      then
2062 da8090ccSPaul Durrant      xen_stable_libs="-lxendevicemodel $xen_stable_libs"
2063 f1167ee6SJuergen Gross      xen_ctrl_version=40900
2064 da8090ccSPaul Durrant      xen=yes
2065 da8090ccSPaul Durrant    elif
2066 da8090ccSPaul Durrant        cat > $TMPC <<EOF &&
2067 5eeb39c2SIan Campbell/*
2068 5eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat
2069 5eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given.
2070 b6eb9b45SPaulina Szubarczyk *
2071 b6eb9b45SPaulina Szubarczyk * Also, check if xengnttab_grant_copy_segment_t is defined and
2072 b6eb9b45SPaulina Szubarczyk * grant copy operation is implemented.
2073 b6eb9b45SPaulina Szubarczyk */
2074 b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_EVTCHN_API
2075 b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_GNTTAB_API
2076 b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2077 b6eb9b45SPaulina Szubarczyk#include <xenctrl.h>
2078 b6eb9b45SPaulina Szubarczyk#include <xenstore.h>
2079 b6eb9b45SPaulina Szubarczyk#include <xenevtchn.h>
2080 b6eb9b45SPaulina Szubarczyk#include <xengnttab.h>
2081 b6eb9b45SPaulina Szubarczyk#include <xenforeignmemory.h>
2082 b6eb9b45SPaulina Szubarczyk#include <stdint.h>
2083 b6eb9b45SPaulina Szubarczyk#include <xen/hvm/hvm_info_table.h>
2084 b6eb9b45SPaulina Szubarczyk#if !defined(HVM_MAX_VCPUS)
2085 b6eb9b45SPaulina Szubarczyk# error HVM_MAX_VCPUS not defined
2086 b6eb9b45SPaulina Szubarczyk#endif
2087 b6eb9b45SPaulina Szubarczykint main(void) {
2088 b6eb9b45SPaulina Szubarczyk  xc_interface *xc = NULL;
2089 b6eb9b45SPaulina Szubarczyk  xenforeignmemory_handle *xfmem;
2090 b6eb9b45SPaulina Szubarczyk  xenevtchn_handle *xe;
2091 b6eb9b45SPaulina Szubarczyk  xengnttab_handle *xg;
2092 b6eb9b45SPaulina Szubarczyk  xen_domain_handle_t handle;
2093 b6eb9b45SPaulina Szubarczyk  xengnttab_grant_copy_segment_t* seg = NULL;
2094 b6eb9b45SPaulina Szubarczyk
2095 b6eb9b45SPaulina Szubarczyk  xs_daemon_open();
2096 b6eb9b45SPaulina Szubarczyk
2097 b6eb9b45SPaulina Szubarczyk  xc = xc_interface_open(0, 0, 0);
2098 b6eb9b45SPaulina Szubarczyk  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2099 b6eb9b45SPaulina Szubarczyk  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2100 b6eb9b45SPaulina Szubarczyk  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2101 b6eb9b45SPaulina Szubarczyk  xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2102 b6eb9b45SPaulina Szubarczyk  xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2103 b6eb9b45SPaulina Szubarczyk
2104 b6eb9b45SPaulina Szubarczyk  xfmem = xenforeignmemory_open(0, 0);
2105 b6eb9b45SPaulina Szubarczyk  xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2106 b6eb9b45SPaulina Szubarczyk
2107 b6eb9b45SPaulina Szubarczyk  xe = xenevtchn_open(0, 0);
2108 b6eb9b45SPaulina Szubarczyk  xenevtchn_fd(xe);
2109 b6eb9b45SPaulina Szubarczyk
2110 b6eb9b45SPaulina Szubarczyk  xg = xengnttab_open(0, 0);
2111 b6eb9b45SPaulina Szubarczyk  xengnttab_grant_copy(xg, 0, seg);
2112 b6eb9b45SPaulina Szubarczyk
2113 b6eb9b45SPaulina Szubarczyk  return 0;
2114 b6eb9b45SPaulina Szubarczyk}
2115 b6eb9b45SPaulina SzubarczykEOF
2116 b6eb9b45SPaulina Szubarczyk        compile_prog "" "$xen_libs $xen_stable_libs"
2117 b6eb9b45SPaulina Szubarczyk      then
2118 f1167ee6SJuergen Gross      xen_ctrl_version=40800
2119 b6eb9b45SPaulina Szubarczyk      xen=yes
2120 b6eb9b45SPaulina Szubarczyk    elif
2121 b6eb9b45SPaulina Szubarczyk        cat > $TMPC <<EOF &&
2122 b6eb9b45SPaulina Szubarczyk/*
2123 b6eb9b45SPaulina Szubarczyk * If we have stable libs the we don't want the libxc compat
2124 b6eb9b45SPaulina Szubarczyk * layers, regardless of what CFLAGS we may have been given.
2125 5eeb39c2SIan Campbell */
2126 5eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API
2127 5eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API
2128 5eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API
2129 5eeb39c2SIan Campbell#include <xenctrl.h>
2130 5eeb39c2SIan Campbell#include <xenstore.h>
2131 5eeb39c2SIan Campbell#include <xenevtchn.h>
2132 5eeb39c2SIan Campbell#include <xengnttab.h>
2133 5eeb39c2SIan Campbell#include <xenforeignmemory.h>
2134 5eeb39c2SIan Campbell#include <stdint.h>
2135 5eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h>
2136 5eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS)
2137 5eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined
2138 5eeb39c2SIan Campbell#endif
2139 5eeb39c2SIan Campbellint main(void) {
2140 5eeb39c2SIan Campbell  xc_interface *xc = NULL;
2141 5eeb39c2SIan Campbell  xenforeignmemory_handle *xfmem;
2142 5eeb39c2SIan Campbell  xenevtchn_handle *xe;
2143 5eeb39c2SIan Campbell  xengnttab_handle *xg;
2144 5eeb39c2SIan Campbell  xen_domain_handle_t handle;
2145 5eeb39c2SIan Campbell
2146 5eeb39c2SIan Campbell  xs_daemon_open();
2147 5eeb39c2SIan Campbell
2148 5eeb39c2SIan Campbell  xc = xc_interface_open(0, 0, 0);
2149 5eeb39c2SIan Campbell  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2150 5eeb39c2SIan Campbell  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2151 5eeb39c2SIan Campbell  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2152 5eeb39c2SIan Campbell  xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2153 5eeb39c2SIan Campbell  xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2154 5eeb39c2SIan Campbell
2155 5eeb39c2SIan Campbell  xfmem = xenforeignmemory_open(0, 0);
2156 5eeb39c2SIan Campbell  xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0);
2157 5eeb39c2SIan Campbell
2158 5eeb39c2SIan Campbell  xe = xenevtchn_open(0, 0);
2159 5eeb39c2SIan Campbell  xenevtchn_fd(xe);
2160 5eeb39c2SIan Campbell
2161 5eeb39c2SIan Campbell  xg = xengnttab_open(0, 0);
2162 5eeb39c2SIan Campbell  xengnttab_map_grant_ref(xg, 0, 0, 0);
2163 5eeb39c2SIan Campbell
2164 5eeb39c2SIan Campbell  return 0;
2165 5eeb39c2SIan Campbell}
2166 5eeb39c2SIan CampbellEOF
2167 5eeb39c2SIan Campbell        compile_prog "" "$xen_libs $xen_stable_libs"
2168 5eeb39c2SIan Campbell      then
2169 f1167ee6SJuergen Gross      xen_ctrl_version=40701
2170 5eeb39c2SIan Campbell      xen=yes
2171 5eeb39c2SIan Campbell    elif
2172 5eeb39c2SIan Campbell        cat > $TMPC <<EOF &&
2173 e37630caSaliguori#include <xenctrl.h>
2174 cdadde39SRoger Pau Monne#include <stdint.h>
2175 cdadde39SRoger Pau Monneint main(void) {
2176 cdadde39SRoger Pau Monne  xc_interface *xc = NULL;
2177 cdadde39SRoger Pau Monne  xen_domain_handle_t handle;
2178 cdadde39SRoger Pau Monne  xc_domain_create(xc, 0, handle, 0, NULL, NULL);
2179 cdadde39SRoger Pau Monne  return 0;
2180 cdadde39SRoger Pau Monne}
2181 cdadde39SRoger Pau MonneEOF
2182 cdadde39SRoger Pau Monne        compile_prog "" "$xen_libs"
2183 cdadde39SRoger Pau Monne      then
2184 f1167ee6SJuergen Gross      xen_ctrl_version=40700
2185 cdadde39SRoger Pau Monne      xen=yes
2186 cdadde39SRoger Pau Monne
2187 cdadde39SRoger Pau Monne    # Xen 4.6
2188 cdadde39SRoger Pau Monne    elif
2189 cdadde39SRoger Pau Monne        cat > $TMPC <<EOF &&
2190 cdadde39SRoger Pau Monne#include <xenctrl.h>
2191 e108a3c1SAnthony PERARD#include <xenstore.h>
2192 d5b93ddfSAnthony PERARD#include <stdint.h>
2193 d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h>
2194 d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS)
2195 d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined
2196 d5b93ddfSAnthony PERARD#endif
2197 d5b93ddfSAnthony PERARDint main(void) {
2198 d5b93ddfSAnthony PERARD  xc_interface *xc;
2199 d5b93ddfSAnthony PERARD  xs_daemon_open();
2200 d5b93ddfSAnthony PERARD  xc = xc_interface_open(0, 0, 0);
2201 d5b93ddfSAnthony PERARD  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2202 d5b93ddfSAnthony PERARD  xc_gnttab_open(NULL, 0);
2203 b87de24eSAnthony PERARD  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2204 8688e065SStefano Stabellini  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2205 d8b441a3SJan Beulich  xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL);
2206 20a544c7SKonrad Rzeszutek Wilk  xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0);
2207 d8b441a3SJan Beulich  return 0;
2208 d8b441a3SJan Beulich}
2209 d8b441a3SJan BeulichEOF
2210 d8b441a3SJan Beulich        compile_prog "" "$xen_libs"
2211 d8b441a3SJan Beulich      then
2212 f1167ee6SJuergen Gross      xen_ctrl_version=40600
2213 d8b441a3SJan Beulich      xen=yes
2214 d8b441a3SJan Beulich
2215 d8b441a3SJan Beulich    # Xen 4.5
2216 d8b441a3SJan Beulich    elif
2217 d8b441a3SJan Beulich        cat > $TMPC <<EOF &&
2218 d8b441a3SJan Beulich#include <xenctrl.h>
2219 d8b441a3SJan Beulich#include <xenstore.h>
2220 d8b441a3SJan Beulich#include <stdint.h>
2221 d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h>
2222 d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS)
2223 d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined
2224 d8b441a3SJan Beulich#endif
2225 d8b441a3SJan Beulichint main(void) {
2226 d8b441a3SJan Beulich  xc_interface *xc;
2227 d8b441a3SJan Beulich  xs_daemon_open();
2228 d8b441a3SJan Beulich  xc = xc_interface_open(0, 0, 0);
2229 d8b441a3SJan Beulich  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2230 d8b441a3SJan Beulich  xc_gnttab_open(NULL, 0);
2231 d8b441a3SJan Beulich  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2232 d8b441a3SJan Beulich  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2233 3996e85cSPaul Durrant  xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
2234 3996e85cSPaul Durrant  return 0;
2235 3996e85cSPaul Durrant}
2236 3996e85cSPaul DurrantEOF
2237 3996e85cSPaul Durrant        compile_prog "" "$xen_libs"
2238 3996e85cSPaul Durrant      then
2239 f1167ee6SJuergen Gross      xen_ctrl_version=40500
2240 3996e85cSPaul Durrant      xen=yes
2241 3996e85cSPaul Durrant
2242 3996e85cSPaul Durrant    elif
2243 3996e85cSPaul Durrant        cat > $TMPC <<EOF &&
2244 3996e85cSPaul Durrant#include <xenctrl.h>
2245 3996e85cSPaul Durrant#include <xenstore.h>
2246 3996e85cSPaul Durrant#include <stdint.h>
2247 3996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h>
2248 3996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS)
2249 3996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined
2250 3996e85cSPaul Durrant#endif
2251 3996e85cSPaul Durrantint main(void) {
2252 3996e85cSPaul Durrant  xc_interface *xc;
2253 3996e85cSPaul Durrant  xs_daemon_open();
2254 3996e85cSPaul Durrant  xc = xc_interface_open(0, 0, 0);
2255 3996e85cSPaul Durrant  xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2256 3996e85cSPaul Durrant  xc_gnttab_open(NULL, 0);
2257 3996e85cSPaul Durrant  xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
2258 3996e85cSPaul Durrant  xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
2259 8688e065SStefano Stabellini  return 0;
2260 8688e065SStefano Stabellini}
2261 8688e065SStefano StabelliniEOF
2262 8688e065SStefano Stabellini        compile_prog "" "$xen_libs"
2263 69deef08SPeter Maydell      then
2264 f1167ee6SJuergen Gross      xen_ctrl_version=40200
2265 8688e065SStefano Stabellini      xen=yes
2266 8688e065SStefano Stabellini
2267 e37630caSaliguori    else
2268 fc321b4bSJuan Quintela      if test "$xen" = "yes" ; then
2269 edfb07edSIan Campbell        feature_not_found "xen (unsupported version)" \
2270 edfb07edSIan Campbell                          "Install a supported xen (xen 4.2 or newer)"
2271 fc321b4bSJuan Quintela      fi
2272 fc321b4bSJuan Quintela      xen=no
2273 e37630caSaliguori    fi
2274 d5b93ddfSAnthony PERARD
2275 d5b93ddfSAnthony PERARD    if test "$xen" = yes; then
2276 f1167ee6SJuergen Gross      if test $xen_ctrl_version -ge 40701  ; then
2277 5eeb39c2SIan Campbell        libs_softmmu="$xen_stable_libs $libs_softmmu"
2278 5eeb39c2SIan Campbell      fi
2279 d5b93ddfSAnthony PERARD      libs_softmmu="$xen_libs $libs_softmmu"
2280 d5b93ddfSAnthony PERARD    fi
2281 e37630caSaliguori  fi
2282 c1cdd9d5SJuergen Grossfi
2283 e37630caSaliguori
2284 eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then
2285 edfb07edSIan Campbell  if test "$xen" = "yes" && test "$linux" = "yes"; then
2286 eb6fda0fSAnthony PERARD    xen_pci_passthrough=yes
2287 eb6fda0fSAnthony PERARD  else
2288 eb6fda0fSAnthony PERARD    if test "$xen_pci_passthrough" = "yes"; then
2289 76ad07a4SPeter Maydell      error_exit "User requested feature Xen PCI Passthrough" \
2290 76ad07a4SPeter Maydell          " but this feature requires /sys from Linux"
2291 eb6fda0fSAnthony PERARD    fi
2292 eb6fda0fSAnthony PERARD    xen_pci_passthrough=no
2293 eb6fda0fSAnthony PERARD  fi
2294 eb6fda0fSAnthony PERARDfi
2295 eb6fda0fSAnthony PERARD
2296 64a7ad6fSIan Campbellif test "$xen_pv_domain_build" = "yes" &&
2297 64a7ad6fSIan Campbell   test "$xen" != "yes"; then
2298 64a7ad6fSIan Campbell    error_exit "User requested Xen PV domain builder support" \
2299 64a7ad6fSIan Campbell	       "which requires Xen support."
2300 64a7ad6fSIan Campbellfi
2301 64a7ad6fSIan Campbell
2302 e37630caSaliguori##########################################
2303 dfffc653SJuan Quintela# Sparse probe
2304 dfffc653SJuan Quintelaif test "$sparse" != "no" ; then
2305 0dba6195SLoïc Minier  if has cgcc; then
2306 dfffc653SJuan Quintela    sparse=yes
2307 dfffc653SJuan Quintela  else
2308 dfffc653SJuan Quintela    if test "$sparse" = "yes" ; then
2309 21684af0SStewart Smith      feature_not_found "sparse" "Install sparse binary"
2310 dfffc653SJuan Quintela    fi
2311 dfffc653SJuan Quintela    sparse=no
2312 dfffc653SJuan Quintela  fi
2313 dfffc653SJuan Quintelafi
2314 dfffc653SJuan Quintela
2315 dfffc653SJuan Quintela##########################################
2316 f676c67eSJeremy White# X11 probe
2317 f676c67eSJeremy Whitex11_cflags=
2318 f676c67eSJeremy Whitex11_libs=-lX11
2319 f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then
2320 89138857SStefan Weil    x11_cflags=$($pkg_config --cflags x11)
2321 89138857SStefan Weil    x11_libs=$($pkg_config --libs x11)
2322 f676c67eSJeremy Whitefi
2323 f676c67eSJeremy White
2324 f676c67eSJeremy White##########################################
2325 a4ccabcfSAnthony Liguori# GTK probe
2326 a4ccabcfSAnthony Liguori
2327 9e04c683SStefan Weilif test "$gtkabi" = ""; then
2328 9e04c683SStefan Weil    # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2329 9e04c683SStefan Weil    # Use 3.0 as a fallback if that is available.
2330 9e04c683SStefan Weil    if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2331 9e04c683SStefan Weil        gtkabi=2.0
2332 9e04c683SStefan Weil    elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2333 9e04c683SStefan Weil        gtkabi=3.0
2334 9e04c683SStefan Weil    else
2335 9e04c683SStefan Weil        gtkabi=2.0
2336 9e04c683SStefan Weil    fi
2337 9e04c683SStefan Weilfi
2338 9e04c683SStefan Weil
2339 a4ccabcfSAnthony Liguoriif test "$gtk" != "no"; then
2340 528de90aSDaniel P. Berrange    gtkpackage="gtk+-$gtkabi"
2341 0a337ed0SGerd Hoffmann    gtkx11package="gtk+-x11-$gtkabi"
2342 528de90aSDaniel P. Berrange    if test "$gtkabi" = "3.0" ; then
2343 528de90aSDaniel P. Berrange      gtkversion="3.0.0"
2344 bbbf9bfbSStefan Weil    else
2345 bbbf9bfbSStefan Weil      gtkversion="2.18.0"
2346 bbbf9bfbSStefan Weil    fi
2347 bbbf9bfbSStefan Weil    if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2348 89138857SStefan Weil        gtk_cflags=$($pkg_config --cflags $gtkpackage)
2349 89138857SStefan Weil        gtk_libs=$($pkg_config --libs $gtkpackage)
2350 89138857SStefan Weil        gtk_version=$($pkg_config --modversion $gtkpackage)
2351 0a337ed0SGerd Hoffmann        if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2352 f676c67eSJeremy White            gtk_cflags="$gtk_cflags $x11_cflags"
2353 f676c67eSJeremy White            gtk_libs="$gtk_libs $x11_libs"
2354 0a337ed0SGerd Hoffmann        fi
2355 bbbf9bfbSStefan Weil        libs_softmmu="$gtk_libs $libs_softmmu"
2356 bbbf9bfbSStefan Weil        gtk="yes"
2357 bbbf9bfbSStefan Weil    elif test "$gtk" = "yes"; then
2358 9e04c683SStefan Weil        feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2359 bbbf9bfbSStefan Weil    else
2360 bbbf9bfbSStefan Weil        gtk="no"
2361 bbbf9bfbSStefan Weil    fi
2362 bbbf9bfbSStefan Weilfi
2363 bbbf9bfbSStefan Weil
2364 ddbb0d09SDaniel P. Berrange
2365 ddbb0d09SDaniel P. Berrange##########################################
2366 ddbb0d09SDaniel P. Berrange# GNUTLS probe
2367 ddbb0d09SDaniel P. Berrange
2368 37371299SPeter Maydellgnutls_works() {
2369 37371299SPeter Maydell    # Unfortunately some distros have bad pkg-config information for gnutls
2370 37371299SPeter Maydell    # such that it claims to exist but you get a compiler error if you try
2371 37371299SPeter Maydell    # to use the options returned by --libs. Specifically, Ubuntu for --static
2372 37371299SPeter Maydell    # builds doesn't work:
2373 37371299SPeter Maydell    # https://bugs.launchpad.net/ubuntu/+source/gnutls26/+bug/1478035
2374 37371299SPeter Maydell    #
2375 37371299SPeter Maydell    # So sanity check the cflags/libs before assuming gnutls can be used.
2376 37371299SPeter Maydell    if ! $pkg_config --exists "gnutls"; then
2377 37371299SPeter Maydell        return 1
2378 37371299SPeter Maydell    fi
2379 37371299SPeter Maydell
2380 37371299SPeter Maydell    write_c_skeleton
2381 37371299SPeter Maydell    compile_prog "$($pkg_config --cflags gnutls)" "$($pkg_config --libs gnutls)"
2382 37371299SPeter Maydell}
2383 37371299SPeter Maydell
2384 62893b67SDaniel P. Berrangegnutls_gcrypt=no
2385 ed754746SDaniel P. Berrangegnutls_nettle=no
2386 ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then
2387 37371299SPeter Maydell    if gnutls_works; then
2388 89138857SStefan Weil        gnutls_cflags=$($pkg_config --cflags gnutls)
2389 89138857SStefan Weil        gnutls_libs=$($pkg_config --libs gnutls)
2390 ddbb0d09SDaniel P. Berrange        libs_softmmu="$gnutls_libs $libs_softmmu"
2391 ddbb0d09SDaniel P. Berrange        libs_tools="$gnutls_libs $libs_tools"
2392 ddbb0d09SDaniel P. Berrange	QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2393 ddbb0d09SDaniel P. Berrange        gnutls="yes"
2394 ddbb0d09SDaniel P. Berrange
2395 b917da4cSDaniel P. Berrange	# gnutls_rnd requires >= 2.11.0
2396 b917da4cSDaniel P. Berrange	if $pkg_config --exists "gnutls >= 2.11.0"; then
2397 b917da4cSDaniel P. Berrange	    gnutls_rnd="yes"
2398 b917da4cSDaniel P. Berrange	else
2399 b917da4cSDaniel P. Berrange	    gnutls_rnd="no"
2400 b917da4cSDaniel P. Berrange	fi
2401 b917da4cSDaniel P. Berrange
2402 62893b67SDaniel P. Berrange	if $pkg_config --exists 'gnutls >= 3.0'; then
2403 62893b67SDaniel P. Berrange	    gnutls_gcrypt=no
2404 ed754746SDaniel P. Berrange	    gnutls_nettle=yes
2405 62893b67SDaniel P. Berrange	elif $pkg_config --exists 'gnutls >= 2.12'; then
2406 89138857SStefan Weil	    case $($pkg_config --libs --static gnutls) in
2407 ed754746SDaniel P. Berrange		*gcrypt*)
2408 ed754746SDaniel P. Berrange		    gnutls_gcrypt=yes
2409 ed754746SDaniel P. Berrange		    gnutls_nettle=no
2410 ed754746SDaniel P. Berrange		    ;;
2411 ed754746SDaniel P. Berrange		*nettle*)
2412 ed754746SDaniel P. Berrange		    gnutls_gcrypt=no
2413 ed754746SDaniel P. Berrange		    gnutls_nettle=yes
2414 ed754746SDaniel P. Berrange		    ;;
2415 ed754746SDaniel P. Berrange		*)
2416 ed754746SDaniel P. Berrange		    gnutls_gcrypt=yes
2417 ed754746SDaniel P. Berrange		    gnutls_nettle=no
2418 ed754746SDaniel P. Berrange		    ;;
2419 62893b67SDaniel P. Berrange	    esac
2420 62893b67SDaniel P. Berrange	else
2421 62893b67SDaniel P. Berrange	    gnutls_gcrypt=yes
2422 ed754746SDaniel P. Berrange	    gnutls_nettle=no
2423 62893b67SDaniel P. Berrange	fi
2424 ddbb0d09SDaniel P. Berrange    elif test "$gnutls" = "yes"; then
2425 ddbb0d09SDaniel P. Berrange	feature_not_found "gnutls" "Install gnutls devel"
2426 ddbb0d09SDaniel P. Berrange    else
2427 ddbb0d09SDaniel P. Berrange        gnutls="no"
2428 b917da4cSDaniel P. Berrange        gnutls_rnd="no"
2429 ddbb0d09SDaniel P. Berrange    fi
2430 ddbb0d09SDaniel P. Berrangeelse
2431 b917da4cSDaniel P. Berrange    gnutls_rnd="no"
2432 ddbb0d09SDaniel P. Berrangefi
2433 ddbb0d09SDaniel P. Berrange
2434 91bfcdb0SDaniel P. Berrange
2435 91bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag,
2436 91bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle
2437 91bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to nettle
2438 91bfcdb0SDaniel P. Berrangeif test -z "$gcrypt"
2439 91bfcdb0SDaniel P. Berrangethen
2440 91bfcdb0SDaniel P. Berrange    if test "$nettle" = "yes" || test "$gnutls_nettle" = "yes"
2441 91bfcdb0SDaniel P. Berrange    then
2442 91bfcdb0SDaniel P. Berrange        gcrypt="no"
2443 91bfcdb0SDaniel P. Berrange    fi
2444 91bfcdb0SDaniel P. Berrangefi
2445 91bfcdb0SDaniel P. Berrange
2446 91bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag,
2447 91bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt
2448 91bfcdb0SDaniel P. Berrange# explicitly, or if gnutls links to gcrypt
2449 91bfcdb0SDaniel P. Berrangeif test -z "$nettle"
2450 91bfcdb0SDaniel P. Berrangethen
2451 91bfcdb0SDaniel P. Berrange    if test "$gcrypt" = "yes" || test "$gnutls_gcrypt" = "yes"
2452 91bfcdb0SDaniel P. Berrange    then
2453 91bfcdb0SDaniel P. Berrange        nettle="no"
2454 91bfcdb0SDaniel P. Berrange    fi
2455 91bfcdb0SDaniel P. Berrangefi
2456 91bfcdb0SDaniel P. Berrange
2457 91bfcdb0SDaniel P. Berrangehas_libgcrypt_config() {
2458 91bfcdb0SDaniel P. Berrange    if ! has "libgcrypt-config"
2459 91bfcdb0SDaniel P. Berrange    then
2460 91bfcdb0SDaniel P. Berrange	return 1
2461 91bfcdb0SDaniel P. Berrange    fi
2462 91bfcdb0SDaniel P. Berrange
2463 91bfcdb0SDaniel P. Berrange    if test -n "$cross_prefix"
2464 91bfcdb0SDaniel P. Berrange    then
2465 89138857SStefan Weil	host=$(libgcrypt-config --host)
2466 91bfcdb0SDaniel P. Berrange	if test "$host-" != $cross_prefix
2467 91bfcdb0SDaniel P. Berrange	then
2468 91bfcdb0SDaniel P. Berrange	    return 1
2469 91bfcdb0SDaniel P. Berrange	fi
2470 91bfcdb0SDaniel P. Berrange    fi
2471 91bfcdb0SDaniel P. Berrange
2472 91bfcdb0SDaniel P. Berrange    return 0
2473 91bfcdb0SDaniel P. Berrange}
2474 91bfcdb0SDaniel P. Berrange
2475 91bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then
2476 91bfcdb0SDaniel P. Berrange    if has_libgcrypt_config; then
2477 89138857SStefan Weil        gcrypt_cflags=$(libgcrypt-config --cflags)
2478 89138857SStefan Weil        gcrypt_libs=$(libgcrypt-config --libs)
2479 91bfcdb0SDaniel P. Berrange        # Debian has remove -lgpg-error from libgcrypt-config
2480 91bfcdb0SDaniel P. Berrange        # as it "spreads unnecessary dependencies" which in
2481 91bfcdb0SDaniel P. Berrange        # turn breaks static builds...
2482 91bfcdb0SDaniel P. Berrange        if test "$static" = "yes"
2483 91bfcdb0SDaniel P. Berrange        then
2484 91bfcdb0SDaniel P. Berrange            gcrypt_libs="$gcrypt_libs -lgpg-error"
2485 91bfcdb0SDaniel P. Berrange        fi
2486 62893b67SDaniel P. Berrange        libs_softmmu="$gcrypt_libs $libs_softmmu"
2487 62893b67SDaniel P. Berrange        libs_tools="$gcrypt_libs $libs_tools"
2488 62893b67SDaniel P. Berrange        QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2489 91bfcdb0SDaniel P. Berrange        gcrypt="yes"
2490 91bfcdb0SDaniel P. Berrange        if test -z "$nettle"; then
2491 91bfcdb0SDaniel P. Berrange           nettle="no"
2492 91bfcdb0SDaniel P. Berrange        fi
2493 37788f25SDaniel P. Berrange
2494 37788f25SDaniel P. Berrange        cat > $TMPC << EOF
2495 37788f25SDaniel P. Berrange#include <gcrypt.h>
2496 37788f25SDaniel P. Berrangeint main(void) {
2497 37788f25SDaniel P. Berrange  gcry_kdf_derive(NULL, 0, GCRY_KDF_PBKDF2,
2498 37788f25SDaniel P. Berrange                  GCRY_MD_SHA256,
2499 37788f25SDaniel P. Berrange                  NULL, 0, 0, 0, NULL);
2500 37788f25SDaniel P. Berrange return 0;
2501 37788f25SDaniel P. Berrange}
2502 37788f25SDaniel P. BerrangeEOF
2503 37788f25SDaniel P. Berrange        if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2504 37788f25SDaniel P. Berrange            gcrypt_kdf=yes
2505 37788f25SDaniel P. Berrange        fi
2506 1f923c70SLongpeng(Mike)
2507 1f923c70SLongpeng(Mike)        cat > $TMPC << EOF
2508 1f923c70SLongpeng(Mike)#include <gcrypt.h>
2509 1f923c70SLongpeng(Mike)int main(void) {
2510 1f923c70SLongpeng(Mike)  gcry_mac_hd_t handle;
2511 1f923c70SLongpeng(Mike)  gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5,
2512 1f923c70SLongpeng(Mike)                GCRY_MAC_FLAG_SECURE, NULL);
2513 1f923c70SLongpeng(Mike)  return 0;
2514 1f923c70SLongpeng(Mike)}
2515 1f923c70SLongpeng(Mike)EOF
2516 1f923c70SLongpeng(Mike)        if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then
2517 1f923c70SLongpeng(Mike)            gcrypt_hmac=yes
2518 1f923c70SLongpeng(Mike)        fi
2519 62893b67SDaniel P. Berrange    else
2520 91bfcdb0SDaniel P. Berrange        if test "$gcrypt" = "yes"; then
2521 62893b67SDaniel P. Berrange            feature_not_found "gcrypt" "Install gcrypt devel"
2522 91bfcdb0SDaniel P. Berrange        else
2523 91bfcdb0SDaniel P. Berrange            gcrypt="no"
2524 91bfcdb0SDaniel P. Berrange        fi
2525 62893b67SDaniel P. Berrange    fi
2526 62893b67SDaniel P. Berrangefi
2527 62893b67SDaniel P. Berrange
2528 ddbb0d09SDaniel P. Berrange
2529 91bfcdb0SDaniel P. Berrangeif test "$nettle" != "no"; then
2530 ed754746SDaniel P. Berrange    if $pkg_config --exists "nettle"; then
2531 89138857SStefan Weil        nettle_cflags=$($pkg_config --cflags nettle)
2532 89138857SStefan Weil        nettle_libs=$($pkg_config --libs nettle)
2533 89138857SStefan Weil        nettle_version=$($pkg_config --modversion nettle)
2534 ed754746SDaniel P. Berrange        libs_softmmu="$nettle_libs $libs_softmmu"
2535 ed754746SDaniel P. Berrange        libs_tools="$nettle_libs $libs_tools"
2536 ed754746SDaniel P. Berrange        QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2537 91bfcdb0SDaniel P. Berrange        nettle="yes"
2538 fff2f982SDaniel P. Berrange
2539 fff2f982SDaniel P. Berrange        cat > $TMPC << EOF
2540 9e87a691SSteven Luo#include <stddef.h>
2541 fff2f982SDaniel P. Berrange#include <nettle/pbkdf2.h>
2542 fff2f982SDaniel P. Berrangeint main(void) {
2543 fff2f982SDaniel P. Berrange     pbkdf2_hmac_sha256(8, NULL, 1000, 8, NULL, 8, NULL);
2544 fff2f982SDaniel P. Berrange     return 0;
2545 fff2f982SDaniel P. Berrange}
2546 fff2f982SDaniel P. BerrangeEOF
2547 fff2f982SDaniel P. Berrange        if compile_prog "$nettle_cflags" "$nettle_libs" ; then
2548 fff2f982SDaniel P. Berrange            nettle_kdf=yes
2549 fff2f982SDaniel P. Berrange        fi
2550 ed754746SDaniel P. Berrange    else
2551 91bfcdb0SDaniel P. Berrange        if test "$nettle" = "yes"; then
2552 ed754746SDaniel P. Berrange            feature_not_found "nettle" "Install nettle devel"
2553 91bfcdb0SDaniel P. Berrange        else
2554 91bfcdb0SDaniel P. Berrange            nettle="no"
2555 ed754746SDaniel P. Berrange        fi
2556 ed754746SDaniel P. Berrange    fi
2557 91bfcdb0SDaniel P. Berrangefi
2558 91bfcdb0SDaniel P. Berrange
2559 91bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes"
2560 91bfcdb0SDaniel P. Berrangethen
2561 91bfcdb0SDaniel P. Berrange    error_exit "Only one of gcrypt & nettle can be enabled"
2562 91bfcdb0SDaniel P. Berrangefi
2563 ed754746SDaniel P. Berrange
2564 9a2fd434SDaniel P. Berrange##########################################
2565 9a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite
2566 9a2fd434SDaniel P. Berrange
2567 9a2fd434SDaniel P. Berrangetasn1=yes
2568 90246037SDaniel P. Berrangetasn1_cflags=""
2569 90246037SDaniel P. Berrangetasn1_libs=""
2570 9a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then
2571 89138857SStefan Weil    tasn1_cflags=$($pkg_config --cflags libtasn1)
2572 89138857SStefan Weil    tasn1_libs=$($pkg_config --libs libtasn1)
2573 9a2fd434SDaniel P. Berrangeelse
2574 9a2fd434SDaniel P. Berrange    tasn1=no
2575 9a2fd434SDaniel P. Berrangefi
2576 9a2fd434SDaniel P. Berrange
2577 ed754746SDaniel P. Berrange
2578 bbbf9bfbSStefan Weil##########################################
2579 559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket )
2580 559607eaSDaniel P. Berrange
2581 559607eaSDaniel P. Berrangehave_ifaddrs_h=yes
2582 559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then
2583 559607eaSDaniel P. Berrange  have_ifaddrs_h=no
2584 559607eaSDaniel P. Berrangefi
2585 559607eaSDaniel P. Berrange
2586 559607eaSDaniel P. Berrange##########################################
2587 bbbf9bfbSStefan Weil# VTE probe
2588 bbbf9bfbSStefan Weil
2589 bbbf9bfbSStefan Weilif test "$vte" != "no"; then
2590 bbbf9bfbSStefan Weil    if test "$gtkabi" = "3.0"; then
2591 c6feff9eSCole Robinson      vteminversion="0.32.0"
2592 c6feff9eSCole Robinson      if $pkg_config --exists "vte-2.91"; then
2593 c6feff9eSCole Robinson        vtepackage="vte-2.91"
2594 c6feff9eSCole Robinson      else
2595 528de90aSDaniel P. Berrange        vtepackage="vte-2.90"
2596 c6feff9eSCole Robinson      fi
2597 528de90aSDaniel P. Berrange    else
2598 528de90aSDaniel P. Berrange      vtepackage="vte"
2599 c6feff9eSCole Robinson      vteminversion="0.24.0"
2600 528de90aSDaniel P. Berrange    fi
2601 c6feff9eSCole Robinson    if $pkg_config --exists "$vtepackage >= $vteminversion"; then
2602 89138857SStefan Weil        vte_cflags=$($pkg_config --cflags $vtepackage)
2603 89138857SStefan Weil        vte_libs=$($pkg_config --libs $vtepackage)
2604 89138857SStefan Weil        vteversion=$($pkg_config --modversion $vtepackage)
2605 bbbf9bfbSStefan Weil        libs_softmmu="$vte_libs $libs_softmmu"
2606 bbbf9bfbSStefan Weil        vte="yes"
2607 bbbf9bfbSStefan Weil    elif test "$vte" = "yes"; then
2608 9e04c683SStefan Weil        if test "$gtkabi" = "3.0"; then
2609 c6feff9eSCole Robinson            feature_not_found "vte" "Install libvte-2.90/2.91 devel"
2610 9e04c683SStefan Weil        else
2611 9e04c683SStefan Weil            feature_not_found "vte" "Install libvte devel"
2612 9e04c683SStefan Weil        fi
2613 bbbf9bfbSStefan Weil    else
2614 bbbf9bfbSStefan Weil        vte="no"
2615 a4ccabcfSAnthony Liguori    fi
2616 a4ccabcfSAnthony Liguorifi
2617 a4ccabcfSAnthony Liguori
2618 a4ccabcfSAnthony Liguori##########################################
2619 11d9f695Sbellard# SDL probe
2620 11d9f695Sbellard
2621 3ec87ffeSPaolo Bonzini# Look for sdl configuration program (pkg-config or sdl-config).  Try
2622 3ec87ffeSPaolo Bonzini# sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2623 47c03744SDave Airlie
2624 ee8466d0SCole Robinsonif test "$sdlabi" = ""; then
2625 ee8466d0SCole Robinson    if $pkg_config --exists "sdl"; then
2626 ee8466d0SCole Robinson        sdlabi=1.2
2627 ee8466d0SCole Robinson    elif $pkg_config --exists "sdl2"; then
2628 ee8466d0SCole Robinson        sdlabi=2.0
2629 ee8466d0SCole Robinson    else
2630 ee8466d0SCole Robinson        sdlabi=1.2
2631 ee8466d0SCole Robinson    fi
2632 ee8466d0SCole Robinsonfi
2633 ee8466d0SCole Robinson
2634 47c03744SDave Airlieif test $sdlabi = "2.0"; then
2635 47c03744SDave Airlie    sdl_config=$sdl2_config
2636 47c03744SDave Airlie    sdlname=sdl2
2637 47c03744SDave Airlie    sdlconfigname=sdl2_config
2638 e07047cfSCole Robinsonelif test $sdlabi = "1.2"; then
2639 47c03744SDave Airlie    sdlname=sdl
2640 47c03744SDave Airlie    sdlconfigname=sdl_config
2641 e07047cfSCole Robinsonelse
2642 e07047cfSCole Robinson    error_exit "Unknown sdlabi $sdlabi, must be 1.2 or 2.0"
2643 3ec87ffeSPaolo Bonzinifi
2644 3ec87ffeSPaolo Bonzini
2645 89138857SStefan Weilif test "$(basename $sdl_config)" != $sdlconfigname && ! has ${sdl_config}; then
2646 47c03744SDave Airlie  sdl_config=$sdlconfigname
2647 47c03744SDave Airliefi
2648 47c03744SDave Airlie
2649 47c03744SDave Airlieif $pkg_config $sdlname --exists; then
2650 47c03744SDave Airlie  sdlconfig="$pkg_config $sdlname"
2651 89138857SStefan Weil  sdlversion=$($sdlconfig --modversion 2>/dev/null)
2652 3ec87ffeSPaolo Bonzinielif has ${sdl_config}; then
2653 3ec87ffeSPaolo Bonzini  sdlconfig="$sdl_config"
2654 89138857SStefan Weil  sdlversion=$($sdlconfig --version)
2655 a0dfd8a4SLoïc Minierelse
2656 a0dfd8a4SLoïc Minier  if test "$sdl" = "yes" ; then
2657 21684af0SStewart Smith    feature_not_found "sdl" "Install SDL devel"
2658 a0dfd8a4SLoïc Minier  fi
2659 a0dfd8a4SLoïc Minier  sdl=no
2660 9316f803SPaolo Bonzinifi
2661 29e5badaSScott Woodif test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2662 3ec87ffeSPaolo Bonzini  echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2663 3ec87ffeSPaolo Bonzinifi
2664 11d9f695Sbellard
2665 9316f803SPaolo Bonzinisdl_too_old=no
2666 c4198157SJuan Quintelaif test "$sdl" != "no" ; then
2667 11d9f695Sbellard  cat > $TMPC << EOF
2668 11d9f695Sbellard#include <SDL.h>
2669 11d9f695Sbellard#undef main /* We don't want SDL to override our main() */
2670 11d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2671 11d9f695SbellardEOF
2672 89138857SStefan Weil  sdl_cflags=$($sdlconfig --cflags 2>/dev/null)
2673 74f42e18STeLeMan  if test "$static" = "yes" ; then
2674 89138857SStefan Weil    sdl_libs=$($sdlconfig --static-libs 2>/dev/null)
2675 74f42e18STeLeMan  else
2676 89138857SStefan Weil    sdl_libs=$($sdlconfig --libs 2>/dev/null)
2677 74f42e18STeLeMan  fi
2678 52166aa0SJuan Quintela  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2679 89138857SStefan Weil    if test $(echo $sdlversion | sed 's/[^0-9]//g') -lt 121 ; then
2680 11d9f695Sbellard      sdl_too_old=yes
2681 11d9f695Sbellard    else
2682 11d9f695Sbellard      sdl=yes
2683 11d9f695Sbellard    fi
2684 7c1f25b4Sbellard
2685 67c274d3SPaolo Bonzini    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2686 1ac88f28SJuan Quintela    if test "$sdl" = "yes" -a "$static" = "yes" ; then
2687 67c274d3SPaolo Bonzini      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2688 89138857SStefan Weil         sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)"
2689 89138857SStefan Weil         sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)"
2690 11d9f695Sbellard      fi
2691 52166aa0SJuan Quintela      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2692 1ac88f28SJuan Quintela	:
2693 1ac88f28SJuan Quintela      else
2694 1ac88f28SJuan Quintela        sdl=no
2695 7c1f25b4Sbellard      fi
2696 7c1f25b4Sbellard    fi # static link
2697 c4198157SJuan Quintela  else # sdl not found
2698 c4198157SJuan Quintela    if test "$sdl" = "yes" ; then
2699 21684af0SStewart Smith      feature_not_found "sdl" "Install SDL devel"
2700 c4198157SJuan Quintela    fi
2701 c4198157SJuan Quintela    sdl=no
2702 7c1f25b4Sbellard  fi # sdl compile test
2703 fd677642Sthsfi
2704 11d9f695Sbellard
2705 5368a422Saliguoriif test "$sdl" = "yes" ; then
2706 5368a422Saliguori  cat > $TMPC <<EOF
2707 5368a422Saliguori#include <SDL.h>
2708 5368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11)
2709 5368a422Saliguori#include <X11/XKBlib.h>
2710 5368a422Saliguori#else
2711 5368a422Saliguori#error No x11 support
2712 5368a422Saliguori#endif
2713 5368a422Saliguoriint main(void) { return 0; }
2714 5368a422SaliguoriEOF
2715 f676c67eSJeremy White  if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2716 f676c67eSJeremy White    sdl_cflags="$sdl_cflags $x11_cflags"
2717 f676c67eSJeremy White    sdl_libs="$sdl_libs $x11_libs"
2718 5368a422Saliguori  fi
2719 0705667eSJuan Quintela  libs_softmmu="$sdl_libs $libs_softmmu"
2720 5368a422Saliguorifi
2721 5368a422Saliguori
2722 8f28f3fbSths##########################################
2723 2da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries
2724 2da776dbSMichael R. Hinesif test "$rdma" != "no" ; then
2725 2da776dbSMichael R. Hines  cat > $TMPC <<EOF
2726 2da776dbSMichael R. Hines#include <rdma/rdma_cma.h>
2727 2da776dbSMichael R. Hinesint main(void) { return 0; }
2728 2da776dbSMichael R. HinesEOF
2729 2da776dbSMichael R. Hines  rdma_libs="-lrdmacm -libverbs"
2730 2da776dbSMichael R. Hines  if compile_prog "" "$rdma_libs" ; then
2731 2da776dbSMichael R. Hines    rdma="yes"
2732 2da776dbSMichael R. Hines    libs_softmmu="$libs_softmmu $rdma_libs"
2733 2da776dbSMichael R. Hines  else
2734 2da776dbSMichael R. Hines    if test "$rdma" = "yes" ; then
2735 2da776dbSMichael R. Hines        error_exit \
2736 2da776dbSMichael R. Hines            " OpenFabrics librdmacm/libibverbs not present." \
2737 2da776dbSMichael R. Hines            " Your options:" \
2738 2da776dbSMichael R. Hines            "  (1) Fast: Install infiniband packages from your distro." \
2739 2da776dbSMichael R. Hines            "  (2) Cleanest: Install libraries from www.openfabrics.org" \
2740 2da776dbSMichael R. Hines            "  (3) Also: Install softiwarp if you don't have RDMA hardware"
2741 2da776dbSMichael R. Hines    fi
2742 2da776dbSMichael R. Hines    rdma="no"
2743 2da776dbSMichael R. Hines  fi
2744 2da776dbSMichael R. Hinesfi
2745 2da776dbSMichael R. Hines
2746 95c6bff3SBenoît Canet
2747 95c6bff3SBenoît Canet##########################################
2748 2f9606b3Saliguori# VNC SASL detection
2749 821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2750 2f9606b3Saliguori  cat > $TMPC <<EOF
2751 2f9606b3Saliguori#include <sasl/sasl.h>
2752 2f9606b3Saliguori#include <stdio.h>
2753 2f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2754 2f9606b3SaliguoriEOF
2755 2f9606b3Saliguori  # Assuming Cyrus-SASL installed in /usr prefix
2756 2f9606b3Saliguori  vnc_sasl_cflags=""
2757 2f9606b3Saliguori  vnc_sasl_libs="-lsasl2"
2758 52166aa0SJuan Quintela  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2759 ea784e3bSJuan Quintela    vnc_sasl=yes
2760 fa838301SJuan Quintela    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2761 ca273d58SPaolo Bonzini    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2762 2f9606b3Saliguori  else
2763 ea784e3bSJuan Quintela    if test "$vnc_sasl" = "yes" ; then
2764 21684af0SStewart Smith      feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2765 ea784e3bSJuan Quintela    fi
2766 ea784e3bSJuan Quintela    vnc_sasl=no
2767 2f9606b3Saliguori  fi
2768 2f9606b3Saliguorifi
2769 2f9606b3Saliguori
2770 2f9606b3Saliguori##########################################
2771 2f6f5c7aSCorentin Chary# VNC JPEG detection
2772 821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2773 2f6f5c7aSCorentin Charycat > $TMPC <<EOF
2774 2f6f5c7aSCorentin Chary#include <stdio.h>
2775 2f6f5c7aSCorentin Chary#include <jpeglib.h>
2776 2f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2777 2f6f5c7aSCorentin CharyEOF
2778 2f6f5c7aSCorentin Chary    vnc_jpeg_cflags=""
2779 2f6f5c7aSCorentin Chary    vnc_jpeg_libs="-ljpeg"
2780 2f6f5c7aSCorentin Chary  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2781 2f6f5c7aSCorentin Chary    vnc_jpeg=yes
2782 2f6f5c7aSCorentin Chary    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2783 ca273d58SPaolo Bonzini    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2784 2f6f5c7aSCorentin Chary  else
2785 2f6f5c7aSCorentin Chary    if test "$vnc_jpeg" = "yes" ; then
2786 21684af0SStewart Smith      feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2787 2f6f5c7aSCorentin Chary    fi
2788 2f6f5c7aSCorentin Chary    vnc_jpeg=no
2789 2f6f5c7aSCorentin Chary  fi
2790 2f6f5c7aSCorentin Charyfi
2791 2f6f5c7aSCorentin Chary
2792 2f6f5c7aSCorentin Chary##########################################
2793 efe556adSCorentin Chary# VNC PNG detection
2794 821601eaSJes Sorensenif test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2795 efe556adSCorentin Charycat > $TMPC <<EOF
2796 efe556adSCorentin Chary//#include <stdio.h>
2797 efe556adSCorentin Chary#include <png.h>
2798 832ce9c2SScott Wood#include <stddef.h>
2799 efe556adSCorentin Charyint main(void) {
2800 efe556adSCorentin Chary    png_structp png_ptr;
2801 efe556adSCorentin Chary    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2802 7edc3fedSPeter Maydell    return png_ptr != 0;
2803 efe556adSCorentin Chary}
2804 efe556adSCorentin CharyEOF
2805 65d5d3f9SStefan Weil  if $pkg_config libpng --exists; then
2806 89138857SStefan Weil    vnc_png_cflags=$($pkg_config libpng --cflags)
2807 89138857SStefan Weil    vnc_png_libs=$($pkg_config libpng --libs)
2808 9af8025eSBrad  else
2809 efe556adSCorentin Chary    vnc_png_cflags=""
2810 efe556adSCorentin Chary    vnc_png_libs="-lpng"
2811 9af8025eSBrad  fi
2812 efe556adSCorentin Chary  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2813 efe556adSCorentin Chary    vnc_png=yes
2814 efe556adSCorentin Chary    libs_softmmu="$vnc_png_libs $libs_softmmu"
2815 9af8025eSBrad    QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2816 efe556adSCorentin Chary  else
2817 efe556adSCorentin Chary    if test "$vnc_png" = "yes" ; then
2818 21684af0SStewart Smith      feature_not_found "vnc-png" "Install libpng devel"
2819 efe556adSCorentin Chary    fi
2820 efe556adSCorentin Chary    vnc_png=no
2821 efe556adSCorentin Chary  fi
2822 efe556adSCorentin Charyfi
2823 efe556adSCorentin Chary
2824 efe556adSCorentin Chary##########################################
2825 76655d6dSaliguori# fnmatch() probe, used for ACL routines
2826 76655d6dSaliguorifnmatch="no"
2827 76655d6dSaliguoricat > $TMPC << EOF
2828 76655d6dSaliguori#include <fnmatch.h>
2829 76655d6dSaliguoriint main(void)
2830 76655d6dSaliguori{
2831 76655d6dSaliguori    fnmatch("foo", "foo", 0);
2832 76655d6dSaliguori    return 0;
2833 76655d6dSaliguori}
2834 76655d6dSaliguoriEOF
2835 52166aa0SJuan Quintelaif compile_prog "" "" ; then
2836 76655d6dSaliguori   fnmatch="yes"
2837 76655d6dSaliguorifi
2838 76655d6dSaliguori
2839 76655d6dSaliguori##########################################
2840 c1bb86cdSEric Blake# xfsctl() probe, used for file-posix.c
2841 dce512deSChristoph Hellwigif test "$xfs" != "no" ; then
2842 dce512deSChristoph Hellwig  cat > $TMPC << EOF
2843 ffc41d10SStefan Weil#include <stddef.h>  /* NULL */
2844 dce512deSChristoph Hellwig#include <xfs/xfs.h>
2845 dce512deSChristoph Hellwigint main(void)
2846 dce512deSChristoph Hellwig{
2847 dce512deSChristoph Hellwig    xfsctl(NULL, 0, 0, NULL);
2848 dce512deSChristoph Hellwig    return 0;
2849 dce512deSChristoph Hellwig}
2850 dce512deSChristoph HellwigEOF
2851 dce512deSChristoph Hellwig  if compile_prog "" "" ; then
2852 dce512deSChristoph Hellwig    xfs="yes"
2853 dce512deSChristoph Hellwig  else
2854 dce512deSChristoph Hellwig    if test "$xfs" = "yes" ; then
2855 21684af0SStewart Smith      feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2856 dce512deSChristoph Hellwig    fi
2857 dce512deSChristoph Hellwig    xfs=no
2858 dce512deSChristoph Hellwig  fi
2859 dce512deSChristoph Hellwigfi
2860 dce512deSChristoph Hellwig
2861 dce512deSChristoph Hellwig##########################################
2862 8a16d273Sths# vde libraries probe
2863 dfb278bdSJuan Quintelaif test "$vde" != "no" ; then
2864 4baae0acSJuan Quintela  vde_libs="-lvdeplug"
2865 8a16d273Sths  cat > $TMPC << EOF
2866 8a16d273Sths#include <libvdeplug.h>
2867 4a7f0e06Spbrookint main(void)
2868 4a7f0e06Spbrook{
2869 4a7f0e06Spbrook    struct vde_open_args a = {0, 0, 0};
2870 fea08e08SPeter Maydell    char s[] = "";
2871 fea08e08SPeter Maydell    vde_open(s, s, &a);
2872 4a7f0e06Spbrook    return 0;
2873 4a7f0e06Spbrook}
2874 8a16d273SthsEOF
2875 52166aa0SJuan Quintela  if compile_prog "" "$vde_libs" ; then
2876 4baae0acSJuan Quintela    vde=yes
2877 8e02e54cSJuan Quintela    libs_softmmu="$vde_libs $libs_softmmu"
2878 8e02e54cSJuan Quintela    libs_tools="$vde_libs $libs_tools"
2879 dfb278bdSJuan Quintela  else
2880 dfb278bdSJuan Quintela    if test "$vde" = "yes" ; then
2881 21684af0SStewart Smith      feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2882 dfb278bdSJuan Quintela    fi
2883 dfb278bdSJuan Quintela    vde=no
2884 8a16d273Sths  fi
2885 8a16d273Sthsfi
2886 8a16d273Sths
2887 8a16d273Sths##########################################
2888 0a985b37SVincenzo Maffione# netmap support probe
2889 0a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version
2890 0a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2891 0a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up
2892 0a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will
2893 0a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds.
2894 58952137SVincenzo Maffioneif test "$netmap" != "no" ; then
2895 58952137SVincenzo Maffione  cat > $TMPC << EOF
2896 58952137SVincenzo Maffione#include <inttypes.h>
2897 58952137SVincenzo Maffione#include <net/if.h>
2898 58952137SVincenzo Maffione#include <net/netmap.h>
2899 58952137SVincenzo Maffione#include <net/netmap_user.h>
2900 0a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15)
2901 0a985b37SVincenzo Maffione#error
2902 0a985b37SVincenzo Maffione#endif
2903 58952137SVincenzo Maffioneint main(void) { return 0; }
2904 58952137SVincenzo MaffioneEOF
2905 58952137SVincenzo Maffione  if compile_prog "" "" ; then
2906 58952137SVincenzo Maffione    netmap=yes
2907 58952137SVincenzo Maffione  else
2908 58952137SVincenzo Maffione    if test "$netmap" = "yes" ; then
2909 58952137SVincenzo Maffione      feature_not_found "netmap"
2910 58952137SVincenzo Maffione    fi
2911 58952137SVincenzo Maffione    netmap=no
2912 58952137SVincenzo Maffione  fi
2913 58952137SVincenzo Maffionefi
2914 58952137SVincenzo Maffione
2915 58952137SVincenzo Maffione##########################################
2916 47e98658SCorey Bryant# libcap-ng library probe
2917 47e98658SCorey Bryantif test "$cap_ng" != "no" ; then
2918 47e98658SCorey Bryant  cap_libs="-lcap-ng"
2919 47e98658SCorey Bryant  cat > $TMPC << EOF
2920 47e98658SCorey Bryant#include <cap-ng.h>
2921 47e98658SCorey Bryantint main(void)
2922 47e98658SCorey Bryant{
2923 47e98658SCorey Bryant    capng_capability_to_name(CAPNG_EFFECTIVE);
2924 47e98658SCorey Bryant    return 0;
2925 47e98658SCorey Bryant}
2926 47e98658SCorey BryantEOF
2927 47e98658SCorey Bryant  if compile_prog "" "$cap_libs" ; then
2928 47e98658SCorey Bryant    cap_ng=yes
2929 47e98658SCorey Bryant    libs_tools="$cap_libs $libs_tools"
2930 47e98658SCorey Bryant  else
2931 47e98658SCorey Bryant    if test "$cap_ng" = "yes" ; then
2932 21684af0SStewart Smith      feature_not_found "cap_ng" "Install libcap-ng devel"
2933 47e98658SCorey Bryant    fi
2934 47e98658SCorey Bryant    cap_ng=no
2935 47e98658SCorey Bryant  fi
2936 47e98658SCorey Bryantfi
2937 47e98658SCorey Bryant
2938 47e98658SCorey Bryant##########################################
2939 c2de5c91Smalc# Sound support libraries probe
2940 8f28f3fbSths
2941 c2de5c91Smalcaudio_drv_probe()
2942 c2de5c91Smalc{
2943 c2de5c91Smalc    drv=$1
2944 c2de5c91Smalc    hdr=$2
2945 c2de5c91Smalc    lib=$3
2946 c2de5c91Smalc    exp=$4
2947 c2de5c91Smalc    cfl=$5
2948 8f28f3fbSths        cat > $TMPC << EOF
2949 c2de5c91Smalc#include <$hdr>
2950 c2de5c91Smalcint main(void) { $exp }
2951 8f28f3fbSthsEOF
2952 52166aa0SJuan Quintela    if compile_prog "$cfl" "$lib" ; then
2953 8f28f3fbSths        :
2954 8f28f3fbSths    else
2955 76ad07a4SPeter Maydell        error_exit "$drv check failed" \
2956 76ad07a4SPeter Maydell            "Make sure to have the $drv libs and headers installed."
2957 8f28f3fbSths    fi
2958 c2de5c91Smalc}
2959 c2de5c91Smalc
2960 89138857SStefan Weilaudio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g')
2961 c2de5c91Smalcfor drv in $audio_drv_list; do
2962 c2de5c91Smalc    case $drv in
2963 c2de5c91Smalc    alsa)
2964 c2de5c91Smalc    audio_drv_probe $drv alsa/asoundlib.h -lasound \
2965 e35bcb0cSStefan Weil        "return snd_pcm_close((snd_pcm_t *)0);"
2966 a4bf6780SJuan Quintela    libs_softmmu="-lasound $libs_softmmu"
2967 c2de5c91Smalc    ;;
2968 c2de5c91Smalc
2969 b8e59f18Smalc    pa)
2970 e58ff62dSPeter Krempa    audio_drv_probe $drv pulse/pulseaudio.h "-lpulse" \
2971 e58ff62dSPeter Krempa        "pa_context_set_source_output_volume(NULL, 0, NULL, NULL, NULL); return 0;"
2972 a394aed2SMarc-André Lureau    libs_softmmu="-lpulse $libs_softmmu"
2973 67f86e8eSJuan Quintela    audio_pt_int="yes"
2974 b8e59f18Smalc    ;;
2975 b8e59f18Smalc
2976 373967b2SGerd Hoffmann    sdl)
2977 373967b2SGerd Hoffmann    if test "$sdl" = "no"; then
2978 373967b2SGerd Hoffmann        error_exit "sdl not found or disabled, can not use sdl audio driver"
2979 373967b2SGerd Hoffmann    fi
2980 373967b2SGerd Hoffmann    ;;
2981 373967b2SGerd Hoffmann
2982 997e690aSJuan Quintela    coreaudio)
2983 997e690aSJuan Quintela      libs_softmmu="-framework CoreAudio $libs_softmmu"
2984 997e690aSJuan Quintela    ;;
2985 997e690aSJuan Quintela
2986 a4bf6780SJuan Quintela    dsound)
2987 a4bf6780SJuan Quintela      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2988 d5631638Smalc      audio_win_int="yes"
2989 a4bf6780SJuan Quintela    ;;
2990 a4bf6780SJuan Quintela
2991 a4bf6780SJuan Quintela    oss)
2992 a4bf6780SJuan Quintela      libs_softmmu="$oss_lib $libs_softmmu"
2993 a4bf6780SJuan Quintela    ;;
2994 a4bf6780SJuan Quintela
2995 373967b2SGerd Hoffmann    wav)
2996 373967b2SGerd Hoffmann    # XXX: Probes for CoreAudio, DirectSound
2997 2f6a1ab0Sblueswir1    ;;
2998 2f6a1ab0Sblueswir1
2999 e4c63a6aSmalc    *)
3000 1c9b2a52Smalc    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
3001 76ad07a4SPeter Maydell        error_exit "Unknown driver '$drv' selected" \
3002 76ad07a4SPeter Maydell            "Possible drivers are: $audio_possible_drivers"
3003 e4c63a6aSmalc    }
3004 e4c63a6aSmalc    ;;
3005 c2de5c91Smalc    esac
3006 c2de5c91Smalcdone
3007 8f28f3fbSths
3008 4d3b6f6eSbalrog##########################################
3009 2e4d9fb1Saurel32# BrlAPI probe
3010 2e4d9fb1Saurel32
3011 4ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then
3012 eb82284fSJuan Quintela  brlapi_libs="-lbrlapi"
3013 2e4d9fb1Saurel32  cat > $TMPC << EOF
3014 2e4d9fb1Saurel32#include <brlapi.h>
3015 832ce9c2SScott Wood#include <stddef.h>
3016 2e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
3017 2e4d9fb1Saurel32EOF
3018 52166aa0SJuan Quintela  if compile_prog "" "$brlapi_libs" ; then
3019 2e4d9fb1Saurel32    brlapi=yes
3020 264606b3SJuan Quintela    libs_softmmu="$brlapi_libs $libs_softmmu"
3021 4ffcedb6SJuan Quintela  else
3022 4ffcedb6SJuan Quintela    if test "$brlapi" = "yes" ; then
3023 21684af0SStewart Smith      feature_not_found "brlapi" "Install brlapi devel"
3024 4ffcedb6SJuan Quintela    fi
3025 4ffcedb6SJuan Quintela    brlapi=no
3026 eb82284fSJuan Quintela  fi
3027 eb82284fSJuan Quintelafi
3028 2e4d9fb1Saurel32
3029 2e4d9fb1Saurel32##########################################
3030 4d3b6f6eSbalrog# curses probe
3031 a3605bf6SMichael Tokarevif test "$curses" != "no" ; then
3032 e095e2f3SStefan Weil  if test "$mingw32" = "yes" ; then
3033 8ddc5bf9SSamuel Thibault    curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):"
3034 8ddc5bf9SSamuel Thibault    curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses"
3035 e095e2f3SStefan Weil  else
3036 7c703002SSamuel Thibault    curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:"
3037 8ddc5bf9SSamuel Thibault    curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw"
3038 e095e2f3SStefan Weil  fi
3039 c584a6d0SJuan Quintela  curses_found=no
3040 4d3b6f6eSbalrog  cat > $TMPC << EOF
3041 8ddc5bf9SSamuel Thibault#include <locale.h>
3042 4d3b6f6eSbalrog#include <curses.h>
3043 8ddc5bf9SSamuel Thibault#include <wchar.h>
3044 ef9a2524SStefan Weilint main(void) {
3045 8ddc5bf9SSamuel Thibault  wchar_t wch = L'w';
3046 8ddc5bf9SSamuel Thibault  setlocale(LC_ALL, "");
3047 ef9a2524SStefan Weil  resize_term(0, 0);
3048 8ddc5bf9SSamuel Thibault  addwstr(L"wide chars\n");
3049 8ddc5bf9SSamuel Thibault  addnwstr(&wch, 1);
3050 7c703002SSamuel Thibault  add_wch(WACS_DEGREE);
3051 *271f37abSKamil Rytarowski  return 0;
3052 ef9a2524SStefan Weil}
3053 4d3b6f6eSbalrogEOF
3054 ecbe251fSVadim Evard  IFS=:
3055 8ddc5bf9SSamuel Thibault  for curses_inc in $curses_inc_list; do
3056 7c703002SSamuel Thibault    IFS=:
3057 8ddc5bf9SSamuel Thibault    for curses_lib in $curses_lib_list; do
3058 ecbe251fSVadim Evard      unset IFS
3059 8ddc5bf9SSamuel Thibault      if compile_prog "$curses_inc" "$curses_lib" ; then
3060 c584a6d0SJuan Quintela        curses_found=yes
3061 8ddc5bf9SSamuel Thibault        QEMU_CFLAGS="$curses_inc $QEMU_CFLAGS"
3062 4f78ef9aSJuan Quintela        libs_softmmu="$curses_lib $libs_softmmu"
3063 4f78ef9aSJuan Quintela        break
3064 4d3b6f6eSbalrog      fi
3065 4f78ef9aSJuan Quintela    done
3066 7c703002SSamuel Thibault    if test "$curses_found" = yes ; then
3067 7c703002SSamuel Thibault      break
3068 7c703002SSamuel Thibault    fi
3069 8ddc5bf9SSamuel Thibault  done
3070 ecbe251fSVadim Evard  unset IFS
3071 c584a6d0SJuan Quintela  if test "$curses_found" = "yes" ; then
3072 c584a6d0SJuan Quintela    curses=yes
3073 c584a6d0SJuan Quintela  else
3074 c584a6d0SJuan Quintela    if test "$curses" = "yes" ; then
3075 21684af0SStewart Smith      feature_not_found "curses" "Install ncurses devel"
3076 c584a6d0SJuan Quintela    fi
3077 c584a6d0SJuan Quintela    curses=no
3078 c584a6d0SJuan Quintela  fi
3079 4f78ef9aSJuan Quintelafi
3080 4d3b6f6eSbalrog
3081 414f0dabSblueswir1##########################################
3082 769ce76dSAlexander Graf# curl probe
3083 a3605bf6SMichael Tokarevif test "$curl" != "no" ; then
3084 65d5d3f9SStefan Weil  if $pkg_config libcurl --exists; then
3085 a8bd70adSPaolo Bonzini    curlconfig="$pkg_config libcurl"
3086 4e2b0658SPaolo Bonzini  else
3087 4e2b0658SPaolo Bonzini    curlconfig=curl-config
3088 4e2b0658SPaolo Bonzini  fi
3089 769ce76dSAlexander Graf  cat > $TMPC << EOF
3090 769ce76dSAlexander Graf#include <curl/curl.h>
3091 0b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
3092 769ce76dSAlexander GrafEOF
3093 89138857SStefan Weil  curl_cflags=$($curlconfig --cflags 2>/dev/null)
3094 89138857SStefan Weil  curl_libs=$($curlconfig --libs 2>/dev/null)
3095 b1d5a277SJuan Quintela  if compile_prog "$curl_cflags" "$curl_libs" ; then
3096 769ce76dSAlexander Graf    curl=yes
3097 788c8196SJuan Quintela  else
3098 788c8196SJuan Quintela    if test "$curl" = "yes" ; then
3099 21684af0SStewart Smith      feature_not_found "curl" "Install libcurl devel"
3100 788c8196SJuan Quintela    fi
3101 788c8196SJuan Quintela    curl=no
3102 769ce76dSAlexander Graf  fi
3103 769ce76dSAlexander Graffi # test "$curl"
3104 769ce76dSAlexander Graf
3105 769ce76dSAlexander Graf##########################################
3106 fb599c9aSbalrog# bluez support probe
3107 a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then
3108 e820e3f4Sbalrog  cat > $TMPC << EOF
3109 e820e3f4Sbalrog#include <bluetooth/bluetooth.h>
3110 e820e3f4Sbalrogint main(void) { return bt_error(0); }
3111 e820e3f4SbalrogEOF
3112 89138857SStefan Weil  bluez_cflags=$($pkg_config --cflags bluez 2>/dev/null)
3113 89138857SStefan Weil  bluez_libs=$($pkg_config --libs bluez 2>/dev/null)
3114 52166aa0SJuan Quintela  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
3115 a20a6f46SJuan Quintela    bluez=yes
3116 e482d56aSJuan Quintela    libs_softmmu="$bluez_libs $libs_softmmu"
3117 e820e3f4Sbalrog  else
3118 a20a6f46SJuan Quintela    if test "$bluez" = "yes" ; then
3119 21684af0SStewart Smith      feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
3120 a20a6f46SJuan Quintela    fi
3121 e820e3f4Sbalrog    bluez="no"
3122 e820e3f4Sbalrog  fi
3123 fb599c9aSbalrogfi
3124 fb599c9aSbalrog
3125 fb599c9aSbalrog##########################################
3126 e18df141SAnthony Liguori# glib support probe
3127 a52d28afSPaolo Bonzini
3128 ad04d8cbSPeter Maydellif test "$mingw32" = yes; then
3129 ad04d8cbSPeter Maydell    glib_req_ver=2.30
3130 ad04d8cbSPeter Maydellelse
3131 f40685c6SJohn Snow    glib_req_ver=2.22
3132 ad04d8cbSPeter Maydellfi
3133 aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0
3134 aa0d1f44SPaolo Bonziniif test "$modules" = yes; then
3135 aa0d1f44SPaolo Bonzini    glib_modules="$glib_modules gmodule-2.0"
3136 aa0d1f44SPaolo Bonzinifi
3137 e26110cfSFam Zheng
3138 4eaf7202SSameeh Jubran# This workaround is required due to a bug in pkg-config file for glib as it
3139 4eaf7202SSameeh Jubran# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static
3140 4eaf7202SSameeh Jubran
3141 4eaf7202SSameeh Jubranif test "$static" = yes -a "$mingw32" = yes; then
3142 4eaf7202SSameeh Jubran    QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS"
3143 4eaf7202SSameeh Jubranfi
3144 4eaf7202SSameeh Jubran
3145 aa0d1f44SPaolo Bonzinifor i in $glib_modules; do
3146 e26110cfSFam Zheng    if $pkg_config --atleast-version=$glib_req_ver $i; then
3147 89138857SStefan Weil        glib_cflags=$($pkg_config --cflags $i)
3148 89138857SStefan Weil        glib_libs=$($pkg_config --libs $i)
3149 4a058899SMarc-André Lureau        QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS"
3150 14015304SAnthony Liguori        LIBS="$glib_libs $LIBS"
3151 957f1f99SMichael Roth        libs_qga="$glib_libs $libs_qga"
3152 e18df141SAnthony Liguori    else
3153 e26110cfSFam Zheng        error_exit "glib-$glib_req_ver $i is required to compile QEMU"
3154 e26110cfSFam Zheng    fi
3155 e26110cfSFam Zhengdone
3156 e26110cfSFam Zheng
3157 977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the
3158 977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches
3159 977a82abSDaniel P. Berrange# problems on multi-arch where people try to build
3160 977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers
3161 977a82abSDaniel P. Berrangecat > $TMPC <<EOF
3162 977a82abSDaniel P. Berrange#include <glib.h>
3163 977a82abSDaniel P. Berrange#include <unistd.h>
3164 977a82abSDaniel P. Berrange
3165 977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \
3166 977a82abSDaniel P. Berrange  typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused));
3167 977a82abSDaniel P. Berrange
3168 977a82abSDaniel P. Berrangeint main(void) {
3169 977a82abSDaniel P. Berrange   QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T);
3170 977a82abSDaniel P. Berrange   return 0;
3171 977a82abSDaniel P. Berrange}
3172 977a82abSDaniel P. BerrangeEOF
3173 977a82abSDaniel P. Berrange
3174 5919e032SStefan Weilif ! compile_prog "$CFLAGS" "$LIBS" ; then
3175 977a82abSDaniel P. Berrange    error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
3176 977a82abSDaniel P. Berrange               "You probably need to set PKG_CONFIG_LIBDIR"\
3177 977a82abSDaniel P. Berrange	       "to point to the right pkg-config files for your"\
3178 977a82abSDaniel P. Berrange	       "build target"
3179 977a82abSDaniel P. Berrangefi
3180 977a82abSDaniel P. Berrange
3181 9d41401bSMichael S. Tsirkin# g_test_trap_subprocess added in 2.38. Used by some tests.
3182 9d41401bSMichael S. Tsirkinglib_subprocess=yes
3183 a049223aSMarc-André Lureauif ! $pkg_config --atleast-version=2.38 glib-2.0; then
3184 9d41401bSMichael S. Tsirkin    glib_subprocess=no
3185 9d41401bSMichael S. Tsirkinfi
3186 9d41401bSMichael S. Tsirkin
3187 bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
3188 bbbf2e04SJohn Snowcat > $TMPC << EOF
3189 bbbf2e04SJohn Snow#include <glib.h>
3190 bbbf2e04SJohn Snowint main(void) { return 0; }
3191 bbbf2e04SJohn SnowEOF
3192 bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
3193 bbbf2e04SJohn Snow    if cc_has_warning_flag "-Wno-unknown-attributes"; then
3194 bbbf2e04SJohn Snow        glib_cflags="-Wno-unknown-attributes $glib_cflags"
3195 bbbf2e04SJohn Snow        CFLAGS="-Wno-unknown-attributes $CFLAGS"
3196 bbbf2e04SJohn Snow    fi
3197 bbbf2e04SJohn Snowfi
3198 bbbf2e04SJohn Snow
3199 e26110cfSFam Zheng##########################################
3200 e26110cfSFam Zheng# SHA command probe for modules
3201 e26110cfSFam Zhengif test "$modules" = yes; then
3202 e26110cfSFam Zheng    shacmd_probe="sha1sum sha1 shasum"
3203 e26110cfSFam Zheng    for c in $shacmd_probe; do
3204 8ccefb91SFam Zheng        if has $c; then
3205 e26110cfSFam Zheng            shacmd="$c"
3206 e26110cfSFam Zheng            break
3207 e26110cfSFam Zheng        fi
3208 e26110cfSFam Zheng    done
3209 e26110cfSFam Zheng    if test "$shacmd" = ""; then
3210 e26110cfSFam Zheng        error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
3211 e26110cfSFam Zheng    fi
3212 e18df141SAnthony Liguorifi
3213 e18df141SAnthony Liguori
3214 e18df141SAnthony Liguori##########################################
3215 e2134eb9SGerd Hoffmann# pixman support probe
3216 e2134eb9SGerd Hoffmann
3217 e2134eb9SGerd Hoffmannif test "$pixman" = ""; then
3218 74880fe2SRobert Schiele  if test "$want_tools" = "no" -a "$softmmu" = "no"; then
3219 74880fe2SRobert Schiele    pixman="none"
3220 236f282cSHu Tao  elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
3221 e2134eb9SGerd Hoffmann    pixman="system"
3222 e2134eb9SGerd Hoffmann  else
3223 e2134eb9SGerd Hoffmann    pixman="internal"
3224 e2134eb9SGerd Hoffmann  fi
3225 e2134eb9SGerd Hoffmannfi
3226 74880fe2SRobert Schieleif test "$pixman" = "none"; then
3227 74880fe2SRobert Schiele  if test "$want_tools" != "no" -o "$softmmu" != "no"; then
3228 76ad07a4SPeter Maydell    error_exit "pixman disabled but system emulation or tools build" \
3229 76ad07a4SPeter Maydell        "enabled.  You can turn off pixman only if you also" \
3230 76ad07a4SPeter Maydell        "disable all system emulation targets and the tools" \
3231 76ad07a4SPeter Maydell        "build with '--disable-tools --disable-system'."
3232 74880fe2SRobert Schiele  fi
3233 74880fe2SRobert Schiele  pixman_cflags=
3234 74880fe2SRobert Schiele  pixman_libs=
3235 74880fe2SRobert Schieleelif test "$pixman" = "system"; then
3236 236f282cSHu Tao  # pixman version has been checked above
3237 89138857SStefan Weil  pixman_cflags=$($pkg_config --cflags pixman-1)
3238 89138857SStefan Weil  pixman_libs=$($pkg_config --libs pixman-1)
3239 e2134eb9SGerd Hoffmannelse
3240 e2134eb9SGerd Hoffmann  if test ! -d ${source_path}/pixman/pixman; then
3241 236f282cSHu Tao    error_exit "pixman >= 0.21.8 not present. Your options:" \
3242 76ad07a4SPeter Maydell        "  (1) Preferred: Install the pixman devel package (any recent" \
3243 76ad07a4SPeter Maydell        "      distro should have packages as Xorg needs pixman too)." \
3244 76ad07a4SPeter Maydell        "  (2) Fetch the pixman submodule, using:" \
3245 76ad07a4SPeter Maydell        "      git submodule update --init pixman"
3246 e2134eb9SGerd Hoffmann  fi
3247 5ca9388aSGerd Hoffmann  mkdir -p pixman/pixman
3248 5ca9388aSGerd Hoffmann  pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
3249 5ca9388aSGerd Hoffmann  pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
3250 e2134eb9SGerd Hoffmannfi
3251 e2134eb9SGerd Hoffmann
3252 e2134eb9SGerd Hoffmann##########################################
3253 17bff52bSM. Mohan Kumar# libcap probe
3254 17bff52bSM. Mohan Kumar
3255 17bff52bSM. Mohan Kumarif test "$cap" != "no" ; then
3256 17bff52bSM. Mohan Kumar  cat > $TMPC <<EOF
3257 17bff52bSM. Mohan Kumar#include <stdio.h>
3258 17bff52bSM. Mohan Kumar#include <sys/capability.h>
3259 cc939743SStefan Weilint main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
3260 17bff52bSM. Mohan KumarEOF
3261 17bff52bSM. Mohan Kumar  if compile_prog "" "-lcap" ; then
3262 17bff52bSM. Mohan Kumar    cap=yes
3263 17bff52bSM. Mohan Kumar  else
3264 17bff52bSM. Mohan Kumar    cap=no
3265 17bff52bSM. Mohan Kumar  fi
3266 17bff52bSM. Mohan Kumarfi
3267 17bff52bSM. Mohan Kumar
3268 17bff52bSM. Mohan Kumar##########################################
3269 e5d355d1Saliguori# pthread probe
3270 4b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
3271 3c529d93Saliguori
3272 e5d355d1Saliguoripthread=no
3273 414f0dabSblueswir1cat > $TMPC << EOF
3274 3c529d93Saliguori#include <pthread.h>
3275 7a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; }
3276 7a42bbe4SStefan Weilint main(void) {
3277 7a42bbe4SStefan Weil  pthread_t thread;
3278 7a42bbe4SStefan Weil  pthread_create(&thread, 0, f, 0);
3279 7a42bbe4SStefan Weil  return 0;
3280 7a42bbe4SStefan Weil}
3281 414f0dabSblueswir1EOF
3282 bd00d539SAndreas Färberif compile_prog "" "" ; then
3283 bd00d539SAndreas Färber  pthread=yes
3284 bd00d539SAndreas Färberelse
3285 de65fe0fSSebastian Herbszt  for pthread_lib in $PTHREADLIBS_LIST; do
3286 52166aa0SJuan Quintela    if compile_prog "" "$pthread_lib" ; then
3287 e5d355d1Saliguori      pthread=yes
3288 e3c56761SPeter Portante      found=no
3289 e3c56761SPeter Portante      for lib_entry in $LIBS; do
3290 e3c56761SPeter Portante        if test "$lib_entry" = "$pthread_lib"; then
3291 e3c56761SPeter Portante          found=yes
3292 e3c56761SPeter Portante          break
3293 e3c56761SPeter Portante        fi
3294 e3c56761SPeter Portante      done
3295 e3c56761SPeter Portante      if test "$found" = "no"; then
3296 5572b539SJuan Quintela        LIBS="$pthread_lib $LIBS"
3297 e3c56761SPeter Portante      fi
3298 409437e1SDaniel P. Berrange      PTHREAD_LIB="$pthread_lib"
3299 de65fe0fSSebastian Herbszt      break
3300 414f0dabSblueswir1    fi
3301 de65fe0fSSebastian Herbszt  done
3302 bd00d539SAndreas Färberfi
3303 414f0dabSblueswir1
3304 4617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then
3305 76ad07a4SPeter Maydell  error_exit "pthread check failed" \
3306 76ad07a4SPeter Maydell      "Make sure to have the pthread libs and headers installed."
3307 e5d355d1Saliguorifi
3308 e5d355d1Saliguori
3309 5c312079SDr. David Alan Gilbert# check for pthread_setname_np
3310 5c312079SDr. David Alan Gilbertpthread_setname_np=no
3311 5c312079SDr. David Alan Gilbertcat > $TMPC << EOF
3312 5c312079SDr. David Alan Gilbert#include <pthread.h>
3313 5c312079SDr. David Alan Gilbert
3314 5c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; }
3315 5c312079SDr. David Alan Gilbertint main(void)
3316 5c312079SDr. David Alan Gilbert{
3317 5c312079SDr. David Alan Gilbert    pthread_t thread;
3318 5c312079SDr. David Alan Gilbert    pthread_create(&thread, 0, f, 0);
3319 5c312079SDr. David Alan Gilbert    pthread_setname_np(thread, "QEMU");
3320 5c312079SDr. David Alan Gilbert    return 0;
3321 5c312079SDr. David Alan Gilbert}
3322 5c312079SDr. David Alan GilbertEOF
3323 5c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then
3324 5c312079SDr. David Alan Gilbert  pthread_setname_np=yes
3325 5c312079SDr. David Alan Gilbertfi
3326 5c312079SDr. David Alan Gilbert
3327 bf9298b9Saliguori##########################################
3328 f27aaf4bSChristian Brunner# rbd probe
3329 f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then
3330 f27aaf4bSChristian Brunner  cat > $TMPC <<EOF
3331 f27aaf4bSChristian Brunner#include <stdio.h>
3332 ad32e9c0SJosh Durgin#include <rbd/librbd.h>
3333 f27aaf4bSChristian Brunnerint main(void) {
3334 ad32e9c0SJosh Durgin    rados_t cluster;
3335 ad32e9c0SJosh Durgin    rados_create(&cluster, NULL);
3336 f27aaf4bSChristian Brunner    return 0;
3337 f27aaf4bSChristian Brunner}
3338 f27aaf4bSChristian BrunnerEOF
3339 ad32e9c0SJosh Durgin  rbd_libs="-lrbd -lrados"
3340 f27aaf4bSChristian Brunner  if compile_prog "" "$rbd_libs" ; then
3341 f27aaf4bSChristian Brunner    rbd=yes
3342 f27aaf4bSChristian Brunner  else
3343 f27aaf4bSChristian Brunner    if test "$rbd" = "yes" ; then
3344 21684af0SStewart Smith      feature_not_found "rados block device" "Install librbd/ceph devel"
3345 f27aaf4bSChristian Brunner    fi
3346 f27aaf4bSChristian Brunner    rbd=no
3347 f27aaf4bSChristian Brunner  fi
3348 f27aaf4bSChristian Brunnerfi
3349 f27aaf4bSChristian Brunner
3350 f27aaf4bSChristian Brunner##########################################
3351 0a12ec87SRichard W.M. Jones# libssh2 probe
3352 4fc16838SRichard W.M. Jonesmin_libssh2_version=1.2.8
3353 0a12ec87SRichard W.M. Jonesif test "$libssh2" != "no" ; then
3354 65d5d3f9SStefan Weil  if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
3355 89138857SStefan Weil    libssh2_cflags=$($pkg_config libssh2 --cflags)
3356 89138857SStefan Weil    libssh2_libs=$($pkg_config libssh2 --libs)
3357 0a12ec87SRichard W.M. Jones    libssh2=yes
3358 0a12ec87SRichard W.M. Jones  else
3359 0a12ec87SRichard W.M. Jones    if test "$libssh2" = "yes" ; then
3360 4fc16838SRichard W.M. Jones      error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
3361 0a12ec87SRichard W.M. Jones    fi
3362 0a12ec87SRichard W.M. Jones    libssh2=no
3363 0a12ec87SRichard W.M. Jones  fi
3364 0a12ec87SRichard W.M. Jonesfi
3365 0a12ec87SRichard W.M. Jones
3366 0a12ec87SRichard W.M. Jones##########################################
3367 9a2d462eSRichard W.M. Jones# libssh2_sftp_fsync probe
3368 9a2d462eSRichard W.M. Jones
3369 9a2d462eSRichard W.M. Jonesif test "$libssh2" = "yes"; then
3370 9a2d462eSRichard W.M. Jones  cat > $TMPC <<EOF
3371 9a2d462eSRichard W.M. Jones#include <stdio.h>
3372 9a2d462eSRichard W.M. Jones#include <libssh2.h>
3373 9a2d462eSRichard W.M. Jones#include <libssh2_sftp.h>
3374 9a2d462eSRichard W.M. Jonesint main(void) {
3375 9a2d462eSRichard W.M. Jones    LIBSSH2_SESSION *session;
3376 9a2d462eSRichard W.M. Jones    LIBSSH2_SFTP *sftp;
3377 9a2d462eSRichard W.M. Jones    LIBSSH2_SFTP_HANDLE *sftp_handle;
3378 9a2d462eSRichard W.M. Jones    session = libssh2_session_init ();
3379 9a2d462eSRichard W.M. Jones    sftp = libssh2_sftp_init (session);
3380 9a2d462eSRichard W.M. Jones    sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
3381 9a2d462eSRichard W.M. Jones    libssh2_sftp_fsync (sftp_handle);
3382 9a2d462eSRichard W.M. Jones    return 0;
3383 9a2d462eSRichard W.M. Jones}
3384 9a2d462eSRichard W.M. JonesEOF
3385 9a2d462eSRichard W.M. Jones  # libssh2_cflags/libssh2_libs defined in previous test.
3386 9a2d462eSRichard W.M. Jones  if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
3387 9a2d462eSRichard W.M. Jones    QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
3388 9a2d462eSRichard W.M. Jones  fi
3389 9a2d462eSRichard W.M. Jonesfi
3390 9a2d462eSRichard W.M. Jones
3391 9a2d462eSRichard W.M. Jones##########################################
3392 5c6c3a6cSChristoph Hellwig# linux-aio probe
3393 5c6c3a6cSChristoph Hellwig
3394 5c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then
3395 5c6c3a6cSChristoph Hellwig  cat > $TMPC <<EOF
3396 5c6c3a6cSChristoph Hellwig#include <libaio.h>
3397 5c6c3a6cSChristoph Hellwig#include <sys/eventfd.h>
3398 832ce9c2SScott Wood#include <stddef.h>
3399 5c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3400 5c6c3a6cSChristoph HellwigEOF
3401 5c6c3a6cSChristoph Hellwig  if compile_prog "" "-laio" ; then
3402 5c6c3a6cSChristoph Hellwig    linux_aio=yes
3403 5c6c3a6cSChristoph Hellwig  else
3404 5c6c3a6cSChristoph Hellwig    if test "$linux_aio" = "yes" ; then
3405 21684af0SStewart Smith      feature_not_found "linux AIO" "Install libaio devel"
3406 5c6c3a6cSChristoph Hellwig    fi
3407 3cfcae3cSLuiz Capitulino    linux_aio=no
3408 5c6c3a6cSChristoph Hellwig  fi
3409 5c6c3a6cSChristoph Hellwigfi
3410 5c6c3a6cSChristoph Hellwig
3411 5c6c3a6cSChristoph Hellwig##########################################
3412 3b8acc11SPaolo Bonzini# TPM passthrough is only on x86 Linux
3413 3b8acc11SPaolo Bonzini
3414 3b8acc11SPaolo Bonziniif test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3415 3b8acc11SPaolo Bonzini  tpm_passthrough=$tpm
3416 3b8acc11SPaolo Bonzinielse
3417 3b8acc11SPaolo Bonzini  tpm_passthrough=no
3418 3b8acc11SPaolo Bonzinifi
3419 3b8acc11SPaolo Bonzini
3420 3b8acc11SPaolo Bonzini##########################################
3421 758e8e38SVenkateswararao Jujjuri (JV)# attr probe
3422 758e8e38SVenkateswararao Jujjuri (JV)
3423 758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then
3424 758e8e38SVenkateswararao Jujjuri (JV)  cat > $TMPC <<EOF
3425 758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h>
3426 758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h>
3427 f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR
3428 f2338fb4SPavel Borzenkov#include <attr/xattr.h>
3429 f2338fb4SPavel Borzenkov#else
3430 4f26f2b6SAvi Kivity#include <sys/xattr.h>
3431 f2338fb4SPavel Borzenkov#endif
3432 758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3433 758e8e38SVenkateswararao Jujjuri (JV)EOF
3434 4f26f2b6SAvi Kivity  if compile_prog "" "" ; then
3435 4f26f2b6SAvi Kivity    attr=yes
3436 4f26f2b6SAvi Kivity  # Older distros have <attr/xattr.h>, and need -lattr:
3437 f2338fb4SPavel Borzenkov  elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3438 758e8e38SVenkateswararao Jujjuri (JV)    attr=yes
3439 758e8e38SVenkateswararao Jujjuri (JV)    LIBS="-lattr $LIBS"
3440 4f26f2b6SAvi Kivity    libattr=yes
3441 758e8e38SVenkateswararao Jujjuri (JV)  else
3442 758e8e38SVenkateswararao Jujjuri (JV)    if test "$attr" = "yes" ; then
3443 21684af0SStewart Smith      feature_not_found "ATTR" "Install libc6 or libattr devel"
3444 758e8e38SVenkateswararao Jujjuri (JV)    fi
3445 758e8e38SVenkateswararao Jujjuri (JV)    attr=no
3446 758e8e38SVenkateswararao Jujjuri (JV)  fi
3447 758e8e38SVenkateswararao Jujjuri (JV)fi
3448 758e8e38SVenkateswararao Jujjuri (JV)
3449 758e8e38SVenkateswararao Jujjuri (JV)##########################################
3450 bf9298b9Saliguori# iovec probe
3451 bf9298b9Saliguoricat > $TMPC <<EOF
3452 db34f0b3Sblueswir1#include <sys/types.h>
3453 bf9298b9Saliguori#include <sys/uio.h>
3454 db34f0b3Sblueswir1#include <unistd.h>
3455 f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); }
3456 bf9298b9SaliguoriEOF
3457 bf9298b9Saliguoriiovec=no
3458 52166aa0SJuan Quintelaif compile_prog "" "" ; then
3459 bf9298b9Saliguori  iovec=yes
3460 bf9298b9Saliguorifi
3461 bf9298b9Saliguori
3462 f652e6afSaurel32##########################################
3463 ceb42de8Saliguori# preadv probe
3464 ceb42de8Saliguoricat > $TMPC <<EOF
3465 ceb42de8Saliguori#include <sys/types.h>
3466 ceb42de8Saliguori#include <sys/uio.h>
3467 ceb42de8Saliguori#include <unistd.h>
3468 c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); }
3469 ceb42de8SaliguoriEOF
3470 ceb42de8Saliguoripreadv=no
3471 52166aa0SJuan Quintelaif compile_prog "" "" ; then
3472 ceb42de8Saliguori  preadv=yes
3473 ceb42de8Saliguorifi
3474 ceb42de8Saliguori
3475 ceb42de8Saliguori##########################################
3476 f652e6afSaurel32# fdt probe
3477 e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures,
3478 e169e1e1SPeter Maydell# so insist on it if we're building those system emulators.
3479 e169e1e1SPeter Maydellfdt_required=no
3480 e169e1e1SPeter Maydellfor target in $target_list; do
3481 e169e1e1SPeter Maydell  case $target in
3482 df1d8a1fSPaul Burton    aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu)
3483 e169e1e1SPeter Maydell      fdt_required=yes
3484 e169e1e1SPeter Maydell    ;;
3485 e169e1e1SPeter Maydell  esac
3486 e169e1e1SPeter Maydelldone
3487 e169e1e1SPeter Maydell
3488 e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then
3489 e169e1e1SPeter Maydell  if test "$fdt" = "no"; then
3490 e169e1e1SPeter Maydell    error_exit "fdt disabled but some requested targets require it." \
3491 e169e1e1SPeter Maydell      "You can turn off fdt only if you also disable all the system emulation" \
3492 e169e1e1SPeter Maydell      "targets which need it (by specifying a cut down --target-list)."
3493 e169e1e1SPeter Maydell  fi
3494 e169e1e1SPeter Maydell  fdt=yes
3495 e169e1e1SPeter Maydellfi
3496 e169e1e1SPeter Maydell
3497 2df87df7SJuan Quintelaif test "$fdt" != "no" ; then
3498 b41af4baSJuan Quintela  fdt_libs="-lfdt"
3499 96ce6545SPeter Crosthwaite  # explicitly check for libfdt_env.h as it is missing in some stable installs
3500 6e85fce0SPaul Burton  # and test for required functions to make sure we are on a version >= 1.4.2
3501 f652e6afSaurel32  cat > $TMPC << EOF
3502 31ce0adbSThomas Huth#include <libfdt.h>
3503 96ce6545SPeter Crosthwaite#include <libfdt_env.h>
3504 6e85fce0SPaul Burtonint main(void) { fdt_first_subnode(0, 0); return 0; }
3505 f652e6afSaurel32EOF
3506 52166aa0SJuan Quintela  if compile_prog "" "$fdt_libs" ; then
3507 a540f158SPeter Crosthwaite    # system DTC is good - use it
3508 f652e6afSaurel32    fdt=yes
3509 a540f158SPeter Crosthwaite  elif test -d ${source_path}/dtc/libfdt ; then
3510 a540f158SPeter Crosthwaite    # have submodule DTC - use it
3511 a540f158SPeter Crosthwaite    fdt=yes
3512 a540f158SPeter Crosthwaite    dtc_internal="yes"
3513 a540f158SPeter Crosthwaite    mkdir -p dtc
3514 cab00a5aSMichael S. Tsirkin    if [ "$pwd_is_source_path" != "y" ] ; then
3515 a540f158SPeter Crosthwaite       symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3516 a540f158SPeter Crosthwaite       symlink "$source_path/dtc/scripts" "dtc/scripts"
3517 2df87df7SJuan Quintela    fi
3518 a540f158SPeter Crosthwaite    fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3519 a540f158SPeter Crosthwaite    fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3520 a540f158SPeter Crosthwaite  elif test "$fdt" = "yes" ; then
3521 a540f158SPeter Crosthwaite    # have neither and want - prompt for system/submodule install
3522 6e85fce0SPaul Burton    error_exit "DTC (libfdt) version >= 1.4.2 not present. Your options:" \
3523 3f281822SStewart Smith        "  (1) Preferred: Install the DTC (libfdt) devel package" \
3524 a540f158SPeter Crosthwaite        "  (2) Fetch the DTC submodule, using:" \
3525 a540f158SPeter Crosthwaite        "      git submodule update --init dtc"
3526 a540f158SPeter Crosthwaite  else
3527 a540f158SPeter Crosthwaite    # don't have and don't want
3528 de3a354aSMichael Walle    fdt_libs=
3529 2df87df7SJuan Quintela    fdt=no
3530 f652e6afSaurel32  fi
3531 f652e6afSaurel32fi
3532 f652e6afSaurel32
3533 a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs"
3534 a540f158SPeter Crosthwaite
3535 20ff075bSMichael Walle##########################################
3536 fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2)
3537 b1546f32SGerd Hoffmann
3538 da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then
3539 014cb152SGerd Hoffmann  opengl_pkgs="epoxy libdrm gbm"
3540 fb719563SOGAWA Hirofumi  if $pkg_config $opengl_pkgs x11; then
3541 f676c67eSJeremy White    opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3542 f676c67eSJeremy White    opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3543 da076ffeSGerd Hoffmann    opengl=yes
3544 925a0400SGerd Hoffmann    if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then
3545 925a0400SGerd Hoffmann        gtk_gl="yes"
3546 925a0400SGerd Hoffmann    fi
3547 cc720a5dSGerd Hoffmann    QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags"
3548 20ff075bSMichael Walle  else
3549 da076ffeSGerd Hoffmann    if test "$opengl" = "yes" ; then
3550 dcf30025SGerd Hoffmann      feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3551 20ff075bSMichael Walle    fi
3552 f676c67eSJeremy White    opengl_cflags=""
3553 da076ffeSGerd Hoffmann    opengl_libs=""
3554 da076ffeSGerd Hoffmann    opengl=no
3555 20ff075bSMichael Walle  fi
3556 20ff075bSMichael Wallefi
3557 20ff075bSMichael Walle
3558 014cb152SGerd Hoffmannif test "$opengl" = "yes"; then
3559 014cb152SGerd Hoffmann  cat > $TMPC << EOF
3560 014cb152SGerd Hoffmann#include <epoxy/egl.h>
3561 014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export
3562 014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+)
3563 014cb152SGerd Hoffmann#endif
3564 014cb152SGerd Hoffmannint main(void) { return 0; }
3565 014cb152SGerd HoffmannEOF
3566 014cb152SGerd Hoffmann  if compile_prog "" "" ; then
3567 014cb152SGerd Hoffmann    opengl_dmabuf=yes
3568 014cb152SGerd Hoffmann  fi
3569 014cb152SGerd Hoffmannfi
3570 c9a12e75SChrysostomos Nanakos
3571 c9a12e75SChrysostomos Nanakos
3572 eb100396SBharata B Rao##########################################
3573 eb100396SBharata B Rao# glusterfs probe
3574 eb100396SBharata B Raoif test "$glusterfs" != "no" ; then
3575 65d5d3f9SStefan Weil  if $pkg_config --atleast-version=3 glusterfs-api; then
3576 e01bee08SBharata B Rao    glusterfs="yes"
3577 89138857SStefan Weil    glusterfs_cflags=$($pkg_config --cflags glusterfs-api)
3578 89138857SStefan Weil    glusterfs_libs=$($pkg_config --libs glusterfs-api)
3579 d85fa9ebSJeff Cody    if $pkg_config --atleast-version=4 glusterfs-api; then
3580 d85fa9ebSJeff Cody      glusterfs_xlator_opt="yes"
3581 d85fa9ebSJeff Cody    fi
3582 65d5d3f9SStefan Weil    if $pkg_config --atleast-version=5 glusterfs-api; then
3583 0c14fb47SBharata B Rao      glusterfs_discard="yes"
3584 0c14fb47SBharata B Rao    fi
3585 7c815372SBharata B Rao    if $pkg_config --atleast-version=6 glusterfs-api; then
3586 df3a429aSNiels de Vos      glusterfs_fallocate="yes"
3587 7c815372SBharata B Rao      glusterfs_zerofill="yes"
3588 7c815372SBharata B Rao    fi
3589 eb100396SBharata B Rao  else
3590 eb100396SBharata B Rao    if test "$glusterfs" = "yes" ; then
3591 8efc9363SHu Tao      feature_not_found "GlusterFS backend support" \
3592 8efc9363SHu Tao          "Install glusterfs-api devel >= 3"
3593 eb100396SBharata B Rao    fi
3594 e01bee08SBharata B Rao    glusterfs="no"
3595 eb100396SBharata B Rao  fi
3596 eb100396SBharata B Raofi
3597 eb100396SBharata B Rao
3598 39386ac7Saurel32# Check for inotify functions when we are building linux-user
3599 3b3f24adSaurel32# emulator.  This is done because older glibc versions don't
3600 3b3f24adSaurel32# have syscall stubs for these implemented.  In that case we
3601 3b3f24adSaurel32# don't provide them even if kernel supports them.
3602 3b3f24adSaurel32#
3603 3b3f24adSaurel32inotify=no
3604 3b3f24adSaurel32cat > $TMPC << EOF
3605 3b3f24adSaurel32#include <sys/inotify.h>
3606 3b3f24adSaurel32
3607 3b3f24adSaurel32int
3608 3b3f24adSaurel32main(void)
3609 3b3f24adSaurel32{
3610 3b3f24adSaurel32	/* try to start inotify */
3611 8690e420Saurel32	return inotify_init();
3612 3b3f24adSaurel32}
3613 3b3f24adSaurel32EOF
3614 52166aa0SJuan Quintelaif compile_prog "" "" ; then
3615 3b3f24adSaurel32  inotify=yes
3616 3b3f24adSaurel32fi
3617 3b3f24adSaurel32
3618 c05c7a73SRiku Voipioinotify1=no
3619 c05c7a73SRiku Voipiocat > $TMPC << EOF
3620 c05c7a73SRiku Voipio#include <sys/inotify.h>
3621 c05c7a73SRiku Voipio
3622 c05c7a73SRiku Voipioint
3623 c05c7a73SRiku Voipiomain(void)
3624 c05c7a73SRiku Voipio{
3625 c05c7a73SRiku Voipio    /* try to start inotify */
3626 c05c7a73SRiku Voipio    return inotify_init1(0);
3627 c05c7a73SRiku Voipio}
3628 c05c7a73SRiku VoipioEOF
3629 c05c7a73SRiku Voipioif compile_prog "" "" ; then
3630 c05c7a73SRiku Voipio  inotify1=yes
3631 c05c7a73SRiku Voipiofi
3632 c05c7a73SRiku Voipio
3633 099d6b0fSRiku Voipio# check if pipe2 is there
3634 099d6b0fSRiku Voipiopipe2=no
3635 099d6b0fSRiku Voipiocat > $TMPC << EOF
3636 099d6b0fSRiku Voipio#include <unistd.h>
3637 099d6b0fSRiku Voipio#include <fcntl.h>
3638 099d6b0fSRiku Voipio
3639 099d6b0fSRiku Voipioint main(void)
3640 099d6b0fSRiku Voipio{
3641 099d6b0fSRiku Voipio    int pipefd[2];
3642 9bca8162SBruce Rogers    return pipe2(pipefd, O_CLOEXEC);
3643 099d6b0fSRiku Voipio}
3644 099d6b0fSRiku VoipioEOF
3645 52166aa0SJuan Quintelaif compile_prog "" "" ; then
3646 099d6b0fSRiku Voipio  pipe2=yes
3647 099d6b0fSRiku Voipiofi
3648 099d6b0fSRiku Voipio
3649 40ff6d7eSKevin Wolf# check if accept4 is there
3650 40ff6d7eSKevin Wolfaccept4=no
3651 40ff6d7eSKevin Wolfcat > $TMPC << EOF
3652 40ff6d7eSKevin Wolf#include <sys/socket.h>
3653 40ff6d7eSKevin Wolf#include <stddef.h>
3654 40ff6d7eSKevin Wolf
3655 40ff6d7eSKevin Wolfint main(void)
3656 40ff6d7eSKevin Wolf{
3657 40ff6d7eSKevin Wolf    accept4(0, NULL, NULL, SOCK_CLOEXEC);
3658 40ff6d7eSKevin Wolf    return 0;
3659 40ff6d7eSKevin Wolf}
3660 40ff6d7eSKevin WolfEOF
3661 40ff6d7eSKevin Wolfif compile_prog "" "" ; then
3662 40ff6d7eSKevin Wolf  accept4=yes
3663 40ff6d7eSKevin Wolffi
3664 40ff6d7eSKevin Wolf
3665 3ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time.
3666 3ce34dfbSvibisreenivasansplice=no
3667 3ce34dfbSvibisreenivasancat > $TMPC << EOF
3668 3ce34dfbSvibisreenivasan#include <unistd.h>
3669 3ce34dfbSvibisreenivasan#include <fcntl.h>
3670 3ce34dfbSvibisreenivasan#include <limits.h>
3671 3ce34dfbSvibisreenivasan
3672 3ce34dfbSvibisreenivasanint main(void)
3673 3ce34dfbSvibisreenivasan{
3674 66ea0f22SStefan Weil    int len, fd = 0;
3675 3ce34dfbSvibisreenivasan    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3676 3ce34dfbSvibisreenivasan    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3677 3ce34dfbSvibisreenivasan    return 0;
3678 3ce34dfbSvibisreenivasan}
3679 3ce34dfbSvibisreenivasanEOF
3680 52166aa0SJuan Quintelaif compile_prog "" "" ; then
3681 3ce34dfbSvibisreenivasan  splice=yes
3682 3ce34dfbSvibisreenivasanfi
3683 3ce34dfbSvibisreenivasan
3684 dcc38d1cSMarcelo Tosatti##########################################
3685 a99d57bbSWanlong Gao# libnuma probe
3686 a99d57bbSWanlong Gao
3687 a99d57bbSWanlong Gaoif test "$numa" != "no" ; then
3688 a99d57bbSWanlong Gao  cat > $TMPC << EOF
3689 a99d57bbSWanlong Gao#include <numa.h>
3690 a99d57bbSWanlong Gaoint main(void) { return numa_available(); }
3691 a99d57bbSWanlong GaoEOF
3692 a99d57bbSWanlong Gao
3693 a99d57bbSWanlong Gao  if compile_prog "" "-lnuma" ; then
3694 a99d57bbSWanlong Gao    numa=yes
3695 a99d57bbSWanlong Gao    libs_softmmu="-lnuma $libs_softmmu"
3696 a99d57bbSWanlong Gao  else
3697 a99d57bbSWanlong Gao    if test "$numa" = "yes" ; then
3698 a99d57bbSWanlong Gao      feature_not_found "numa" "install numactl devel"
3699 a99d57bbSWanlong Gao    fi
3700 a99d57bbSWanlong Gao    numa=no
3701 a99d57bbSWanlong Gao  fi
3702 a99d57bbSWanlong Gaofi
3703 a99d57bbSWanlong Gao
3704 7b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then
3705 7b01cb97SAlexandre Derumier    echo "ERROR: tcmalloc && jemalloc can't be used at the same time"
3706 7b01cb97SAlexandre Derumier    exit 1
3707 7b01cb97SAlexandre Derumierfi
3708 7b01cb97SAlexandre Derumier
3709 a99d57bbSWanlong Gao##########################################
3710 2847b469SFam Zheng# tcmalloc probe
3711 2847b469SFam Zheng
3712 2847b469SFam Zhengif test "$tcmalloc" = "yes" ; then
3713 2847b469SFam Zheng  cat > $TMPC << EOF
3714 2847b469SFam Zheng#include <stdlib.h>
3715 2847b469SFam Zhengint main(void) { malloc(1); return 0; }
3716 2847b469SFam ZhengEOF
3717 2847b469SFam Zheng
3718 2847b469SFam Zheng  if compile_prog "" "-ltcmalloc" ; then
3719 2847b469SFam Zheng    LIBS="-ltcmalloc $LIBS"
3720 2847b469SFam Zheng  else
3721 2847b469SFam Zheng    feature_not_found "tcmalloc" "install gperftools devel"
3722 2847b469SFam Zheng  fi
3723 2847b469SFam Zhengfi
3724 2847b469SFam Zheng
3725 2847b469SFam Zheng##########################################
3726 7b01cb97SAlexandre Derumier# jemalloc probe
3727 7b01cb97SAlexandre Derumier
3728 7b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then
3729 7b01cb97SAlexandre Derumier  cat > $TMPC << EOF
3730 7b01cb97SAlexandre Derumier#include <stdlib.h>
3731 7b01cb97SAlexandre Derumierint main(void) { malloc(1); return 0; }
3732 7b01cb97SAlexandre DerumierEOF
3733 7b01cb97SAlexandre Derumier
3734 7b01cb97SAlexandre Derumier  if compile_prog "" "-ljemalloc" ; then
3735 7b01cb97SAlexandre Derumier    LIBS="-ljemalloc $LIBS"
3736 7b01cb97SAlexandre Derumier  else
3737 7b01cb97SAlexandre Derumier    feature_not_found "jemalloc" "install jemalloc devel"
3738 7b01cb97SAlexandre Derumier  fi
3739 7b01cb97SAlexandre Derumierfi
3740 7b01cb97SAlexandre Derumier
3741 7b01cb97SAlexandre Derumier##########################################
3742 dcc38d1cSMarcelo Tosatti# signalfd probe
3743 dcc38d1cSMarcelo Tosattisignalfd="no"
3744 dcc38d1cSMarcelo Tosatticat > $TMPC << EOF
3745 dcc38d1cSMarcelo Tosatti#include <unistd.h>
3746 dcc38d1cSMarcelo Tosatti#include <sys/syscall.h>
3747 dcc38d1cSMarcelo Tosatti#include <signal.h>
3748 dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3749 dcc38d1cSMarcelo TosattiEOF
3750 dcc38d1cSMarcelo Tosatti
3751 dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then
3752 dcc38d1cSMarcelo Tosatti  signalfd=yes
3753 dcc38d1cSMarcelo Tosattifi
3754 dcc38d1cSMarcelo Tosatti
3755 c2882b96SRiku Voipio# check if eventfd is supported
3756 c2882b96SRiku Voipioeventfd=no
3757 c2882b96SRiku Voipiocat > $TMPC << EOF
3758 c2882b96SRiku Voipio#include <sys/eventfd.h>
3759 c2882b96SRiku Voipio
3760 c2882b96SRiku Voipioint main(void)
3761 c2882b96SRiku Voipio{
3762 55cc7f3eSStefan Weil    return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3763 c2882b96SRiku Voipio}
3764 c2882b96SRiku VoipioEOF
3765 c2882b96SRiku Voipioif compile_prog "" "" ; then
3766 c2882b96SRiku Voipio  eventfd=yes
3767 c2882b96SRiku Voipiofi
3768 c2882b96SRiku Voipio
3769 751bcc39SMarc-André Lureau# check if memfd is supported
3770 751bcc39SMarc-André Lureaumemfd=no
3771 751bcc39SMarc-André Lureaucat > $TMPC << EOF
3772 751bcc39SMarc-André Lureau#include <sys/memfd.h>
3773 751bcc39SMarc-André Lureau
3774 751bcc39SMarc-André Lureauint main(void)
3775 751bcc39SMarc-André Lureau{
3776 751bcc39SMarc-André Lureau    return memfd_create("foo", MFD_ALLOW_SEALING);
3777 751bcc39SMarc-André Lureau}
3778 751bcc39SMarc-André LureauEOF
3779 751bcc39SMarc-André Lureauif compile_prog "" "" ; then
3780 751bcc39SMarc-André Lureau  memfd=yes
3781 751bcc39SMarc-André Lureaufi
3782 751bcc39SMarc-André Lureau
3783 751bcc39SMarc-André Lureau
3784 751bcc39SMarc-André Lureau
3785 d0927938SUlrich Hecht# check for fallocate
3786 d0927938SUlrich Hechtfallocate=no
3787 d0927938SUlrich Hechtcat > $TMPC << EOF
3788 d0927938SUlrich Hecht#include <fcntl.h>
3789 d0927938SUlrich Hecht
3790 d0927938SUlrich Hechtint main(void)
3791 d0927938SUlrich Hecht{
3792 d0927938SUlrich Hecht    fallocate(0, 0, 0, 0);
3793 d0927938SUlrich Hecht    return 0;
3794 d0927938SUlrich Hecht}
3795 d0927938SUlrich HechtEOF
3796 8fb03151SPeter Maydellif compile_prog "" "" ; then
3797 d0927938SUlrich Hecht  fallocate=yes
3798 d0927938SUlrich Hechtfi
3799 d0927938SUlrich Hecht
3800 3d4fa43eSKusanagi Kouichi# check for fallocate hole punching
3801 3d4fa43eSKusanagi Kouichifallocate_punch_hole=no
3802 3d4fa43eSKusanagi Kouichicat > $TMPC << EOF
3803 3d4fa43eSKusanagi Kouichi#include <fcntl.h>
3804 3d4fa43eSKusanagi Kouichi#include <linux/falloc.h>
3805 3d4fa43eSKusanagi Kouichi
3806 3d4fa43eSKusanagi Kouichiint main(void)
3807 3d4fa43eSKusanagi Kouichi{
3808 3d4fa43eSKusanagi Kouichi    fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3809 3d4fa43eSKusanagi Kouichi    return 0;
3810 3d4fa43eSKusanagi Kouichi}
3811 3d4fa43eSKusanagi KouichiEOF
3812 3d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then
3813 3d4fa43eSKusanagi Kouichi  fallocate_punch_hole=yes
3814 3d4fa43eSKusanagi Kouichifi
3815 3d4fa43eSKusanagi Kouichi
3816 b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file
3817 b953f075SDenis V. Lunevfallocate_zero_range=no
3818 b953f075SDenis V. Lunevcat > $TMPC << EOF
3819 b953f075SDenis V. Lunev#include <fcntl.h>
3820 b953f075SDenis V. Lunev#include <linux/falloc.h>
3821 b953f075SDenis V. Lunev
3822 b953f075SDenis V. Lunevint main(void)
3823 b953f075SDenis V. Lunev{
3824 b953f075SDenis V. Lunev    fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3825 b953f075SDenis V. Lunev    return 0;
3826 b953f075SDenis V. Lunev}
3827 b953f075SDenis V. LunevEOF
3828 b953f075SDenis V. Lunevif compile_prog "" "" ; then
3829 b953f075SDenis V. Lunev  fallocate_zero_range=yes
3830 b953f075SDenis V. Lunevfi
3831 b953f075SDenis V. Lunev
3832 ed911435SKevin Wolf# check for posix_fallocate
3833 ed911435SKevin Wolfposix_fallocate=no
3834 ed911435SKevin Wolfcat > $TMPC << EOF
3835 ed911435SKevin Wolf#include <fcntl.h>
3836 ed911435SKevin Wolf
3837 ed911435SKevin Wolfint main(void)
3838 ed911435SKevin Wolf{
3839 ed911435SKevin Wolf    posix_fallocate(0, 0, 0);
3840 ed911435SKevin Wolf    return 0;
3841 ed911435SKevin Wolf}
3842 ed911435SKevin WolfEOF
3843 ed911435SKevin Wolfif compile_prog "" "" ; then
3844 ed911435SKevin Wolf    posix_fallocate=yes
3845 ed911435SKevin Wolffi
3846 ed911435SKevin Wolf
3847 c727f47dSPeter Maydell# check for sync_file_range
3848 c727f47dSPeter Maydellsync_file_range=no
3849 c727f47dSPeter Maydellcat > $TMPC << EOF
3850 c727f47dSPeter Maydell#include <fcntl.h>
3851 c727f47dSPeter Maydell
3852 c727f47dSPeter Maydellint main(void)
3853 c727f47dSPeter Maydell{
3854 c727f47dSPeter Maydell    sync_file_range(0, 0, 0, 0);
3855 c727f47dSPeter Maydell    return 0;
3856 c727f47dSPeter Maydell}
3857 c727f47dSPeter MaydellEOF
3858 8fb03151SPeter Maydellif compile_prog "" "" ; then
3859 c727f47dSPeter Maydell  sync_file_range=yes
3860 c727f47dSPeter Maydellfi
3861 c727f47dSPeter Maydell
3862 dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP
3863 dace20dcSPeter Maydellfiemap=no
3864 dace20dcSPeter Maydellcat > $TMPC << EOF
3865 dace20dcSPeter Maydell#include <sys/ioctl.h>
3866 dace20dcSPeter Maydell#include <linux/fs.h>
3867 dace20dcSPeter Maydell#include <linux/fiemap.h>
3868 dace20dcSPeter Maydell
3869 dace20dcSPeter Maydellint main(void)
3870 dace20dcSPeter Maydell{
3871 dace20dcSPeter Maydell    ioctl(0, FS_IOC_FIEMAP, 0);
3872 dace20dcSPeter Maydell    return 0;
3873 dace20dcSPeter Maydell}
3874 dace20dcSPeter MaydellEOF
3875 8fb03151SPeter Maydellif compile_prog "" "" ; then
3876 dace20dcSPeter Maydell  fiemap=yes
3877 dace20dcSPeter Maydellfi
3878 dace20dcSPeter Maydell
3879 d0927938SUlrich Hecht# check for dup3
3880 d0927938SUlrich Hechtdup3=no
3881 d0927938SUlrich Hechtcat > $TMPC << EOF
3882 d0927938SUlrich Hecht#include <unistd.h>
3883 d0927938SUlrich Hecht
3884 d0927938SUlrich Hechtint main(void)
3885 d0927938SUlrich Hecht{
3886 d0927938SUlrich Hecht    dup3(0, 0, 0);
3887 d0927938SUlrich Hecht    return 0;
3888 d0927938SUlrich Hecht}
3889 d0927938SUlrich HechtEOF
3890 78f5d726SJan Kiszkaif compile_prog "" "" ; then
3891 d0927938SUlrich Hecht  dup3=yes
3892 d0927938SUlrich Hechtfi
3893 d0927938SUlrich Hecht
3894 4e0c6529SAlex Bligh# check for ppoll support
3895 4e0c6529SAlex Blighppoll=no
3896 4e0c6529SAlex Blighcat > $TMPC << EOF
3897 4e0c6529SAlex Bligh#include <poll.h>
3898 4e0c6529SAlex Bligh
3899 4e0c6529SAlex Blighint main(void)
3900 4e0c6529SAlex Bligh{
3901 4e0c6529SAlex Bligh    struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3902 4e0c6529SAlex Bligh    ppoll(&pfd, 1, 0, 0);
3903 4e0c6529SAlex Bligh    return 0;
3904 4e0c6529SAlex Bligh}
3905 4e0c6529SAlex BlighEOF
3906 4e0c6529SAlex Blighif compile_prog "" "" ; then
3907 4e0c6529SAlex Bligh  ppoll=yes
3908 4e0c6529SAlex Blighfi
3909 4e0c6529SAlex Bligh
3910 cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support
3911 cd758dd0SAlex Blighprctl_pr_set_timerslack=no
3912 cd758dd0SAlex Blighcat > $TMPC << EOF
3913 cd758dd0SAlex Bligh#include <sys/prctl.h>
3914 cd758dd0SAlex Bligh
3915 cd758dd0SAlex Blighint main(void)
3916 cd758dd0SAlex Bligh{
3917 cd758dd0SAlex Bligh    prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3918 cd758dd0SAlex Bligh    return 0;
3919 cd758dd0SAlex Bligh}
3920 cd758dd0SAlex BlighEOF
3921 cd758dd0SAlex Blighif compile_prog "" "" ; then
3922 cd758dd0SAlex Bligh  prctl_pr_set_timerslack=yes
3923 cd758dd0SAlex Blighfi
3924 cd758dd0SAlex Bligh
3925 3b6edd16SPeter Maydell# check for epoll support
3926 3b6edd16SPeter Maydellepoll=no
3927 3b6edd16SPeter Maydellcat > $TMPC << EOF
3928 3b6edd16SPeter Maydell#include <sys/epoll.h>
3929 3b6edd16SPeter Maydell
3930 3b6edd16SPeter Maydellint main(void)
3931 3b6edd16SPeter Maydell{
3932 3b6edd16SPeter Maydell    epoll_create(0);
3933 3b6edd16SPeter Maydell    return 0;
3934 3b6edd16SPeter Maydell}
3935 3b6edd16SPeter MaydellEOF
3936 8fb03151SPeter Maydellif compile_prog "" "" ; then
3937 3b6edd16SPeter Maydell  epoll=yes
3938 3b6edd16SPeter Maydellfi
3939 3b6edd16SPeter Maydell
3940 227f0214SPeter Maydell# epoll_create1 is a later addition
3941 227f0214SPeter Maydell# so we must check separately for its presence
3942 3b6edd16SPeter Maydellepoll_create1=no
3943 3b6edd16SPeter Maydellcat > $TMPC << EOF
3944 3b6edd16SPeter Maydell#include <sys/epoll.h>
3945 3b6edd16SPeter Maydell
3946 3b6edd16SPeter Maydellint main(void)
3947 3b6edd16SPeter Maydell{
3948 19e83f6bSPeter Maydell    /* Note that we use epoll_create1 as a value, not as
3949 19e83f6bSPeter Maydell     * a function being called. This is necessary so that on
3950 19e83f6bSPeter Maydell     * old SPARC glibc versions where the function was present in
3951 19e83f6bSPeter Maydell     * the library but not declared in the header file we will
3952 19e83f6bSPeter Maydell     * fail the configure check. (Otherwise we will get a compiler
3953 19e83f6bSPeter Maydell     * warning but not an error, and will proceed to fail the
3954 19e83f6bSPeter Maydell     * qemu compile where we compile with -Werror.)
3955 19e83f6bSPeter Maydell     */
3956 c075a723SBlue Swirl    return (int)(uintptr_t)&epoll_create1;
3957 3b6edd16SPeter Maydell}
3958 3b6edd16SPeter MaydellEOF
3959 8fb03151SPeter Maydellif compile_prog "" "" ; then
3960 3b6edd16SPeter Maydell  epoll_create1=yes
3961 3b6edd16SPeter Maydellfi
3962 3b6edd16SPeter Maydell
3963 a8fd1abaSPeter Maydell# check for sendfile support
3964 a8fd1abaSPeter Maydellsendfile=no
3965 a8fd1abaSPeter Maydellcat > $TMPC << EOF
3966 a8fd1abaSPeter Maydell#include <sys/sendfile.h>
3967 a8fd1abaSPeter Maydell
3968 a8fd1abaSPeter Maydellint main(void)
3969 a8fd1abaSPeter Maydell{
3970 a8fd1abaSPeter Maydell    return sendfile(0, 0, 0, 0);
3971 a8fd1abaSPeter Maydell}
3972 a8fd1abaSPeter MaydellEOF
3973 a8fd1abaSPeter Maydellif compile_prog "" "" ; then
3974 a8fd1abaSPeter Maydell  sendfile=yes
3975 a8fd1abaSPeter Maydellfi
3976 a8fd1abaSPeter Maydell
3977 51834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer)
3978 51834341SRiku Voipiotimerfd=no
3979 51834341SRiku Voipiocat > $TMPC << EOF
3980 51834341SRiku Voipio#include <sys/timerfd.h>
3981 51834341SRiku Voipio
3982 51834341SRiku Voipioint main(void)
3983 51834341SRiku Voipio{
3984 51834341SRiku Voipio    return(timerfd_create(CLOCK_REALTIME, 0));
3985 51834341SRiku Voipio}
3986 51834341SRiku VoipioEOF
3987 51834341SRiku Voipioif compile_prog "" "" ; then
3988 51834341SRiku Voipio  timerfd=yes
3989 51834341SRiku Voipiofi
3990 51834341SRiku Voipio
3991 9af5c906SRiku Voipio# check for setns and unshare support
3992 9af5c906SRiku Voipiosetns=no
3993 9af5c906SRiku Voipiocat > $TMPC << EOF
3994 9af5c906SRiku Voipio#include <sched.h>
3995 9af5c906SRiku Voipio
3996 9af5c906SRiku Voipioint main(void)
3997 9af5c906SRiku Voipio{
3998 9af5c906SRiku Voipio    int ret;
3999 9af5c906SRiku Voipio    ret = setns(0, 0);
4000 9af5c906SRiku Voipio    ret = unshare(0);
4001 9af5c906SRiku Voipio    return ret;
4002 9af5c906SRiku Voipio}
4003 9af5c906SRiku VoipioEOF
4004 9af5c906SRiku Voipioif compile_prog "" "" ; then
4005 9af5c906SRiku Voipio  setns=yes
4006 9af5c906SRiku Voipiofi
4007 9af5c906SRiku Voipio
4008 38860a03SAleksandar Markovic# clock_adjtime probe
4009 38860a03SAleksandar Markovicclock_adjtime=no
4010 38860a03SAleksandar Markoviccat > $TMPC <<EOF
4011 38860a03SAleksandar Markovic#include <time.h>
4012 38860a03SAleksandar Markovic
4013 38860a03SAleksandar Markovicint main(void)
4014 38860a03SAleksandar Markovic{
4015 38860a03SAleksandar Markovic    return clock_adjtime(0, 0);
4016 38860a03SAleksandar Markovic}
4017 38860a03SAleksandar MarkovicEOF
4018 38860a03SAleksandar Markovicclock_adjtime=no
4019 38860a03SAleksandar Markovicif compile_prog "" "" ; then
4020 38860a03SAleksandar Markovic  clock_adjtime=yes
4021 38860a03SAleksandar Markovicfi
4022 38860a03SAleksandar Markovic
4023 5a03cd00SAleksandar Markovic# syncfs probe
4024 5a03cd00SAleksandar Markovicsyncfs=no
4025 5a03cd00SAleksandar Markoviccat > $TMPC <<EOF
4026 5a03cd00SAleksandar Markovic#include <unistd.h>
4027 5a03cd00SAleksandar Markovic
4028 5a03cd00SAleksandar Markovicint main(void)
4029 5a03cd00SAleksandar Markovic{
4030 5a03cd00SAleksandar Markovic    return syncfs(0);
4031 5a03cd00SAleksandar Markovic}
4032 5a03cd00SAleksandar MarkovicEOF
4033 5a03cd00SAleksandar Markovicsyncfs=no
4034 5a03cd00SAleksandar Markovicif compile_prog "" "" ; then
4035 5a03cd00SAleksandar Markovic  syncfs=yes
4036 5a03cd00SAleksandar Markovicfi
4037 5a03cd00SAleksandar Markovic
4038 cc8ae6deSpbrook# Check if tools are available to build documentation.
4039 a25dba17SJuan Quintelaif test "$docs" != "no" ; then
4040 01668d98SStefan Weil  if has makeinfo && has pod2man; then
4041 a25dba17SJuan Quintela    docs=yes
4042 83a3ab8bSJuan Quintela  else
4043 a25dba17SJuan Quintela    if test "$docs" = "yes" ; then
4044 21684af0SStewart Smith      feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
4045 83a3ab8bSJuan Quintela    fi
4046 a25dba17SJuan Quintela    docs=no
4047 83a3ab8bSJuan Quintela  fi
4048 cc8ae6deSpbrookfi
4049 cc8ae6deSpbrook
4050 f514f41cSStefan Weil# Search for bswap_32 function
4051 6ae9a1f4SJuan Quintelabyteswap_h=no
4052 6ae9a1f4SJuan Quintelacat > $TMPC << EOF
4053 6ae9a1f4SJuan Quintela#include <byteswap.h>
4054 6ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); }
4055 6ae9a1f4SJuan QuintelaEOF
4056 52166aa0SJuan Quintelaif compile_prog "" "" ; then
4057 6ae9a1f4SJuan Quintela  byteswap_h=yes
4058 6ae9a1f4SJuan Quintelafi
4059 6ae9a1f4SJuan Quintela
4060 75f13596SStefan Weil# Search for bswap32 function
4061 6ae9a1f4SJuan Quintelabswap_h=no
4062 6ae9a1f4SJuan Quintelacat > $TMPC << EOF
4063 6ae9a1f4SJuan Quintela#include <sys/endian.h>
4064 6ae9a1f4SJuan Quintela#include <sys/types.h>
4065 6ae9a1f4SJuan Quintela#include <machine/bswap.h>
4066 6ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); }
4067 6ae9a1f4SJuan QuintelaEOF
4068 52166aa0SJuan Quintelaif compile_prog "" "" ; then
4069 6ae9a1f4SJuan Quintela  bswap_h=yes
4070 6ae9a1f4SJuan Quintelafi
4071 6ae9a1f4SJuan Quintela
4072 da93a1fdSaliguori##########################################
4073 e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0
4074 c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then
4075 e49ab19fSPeter Lieven  if $pkg_config --atleast-version=1.9.0 libiscsi; then
4076 3c33ea96SPaolo Bonzini    libiscsi="yes"
4077 ca871ec8SStefan Weil    libiscsi_cflags=$($pkg_config --cflags libiscsi)
4078 ca871ec8SStefan Weil    libiscsi_libs=$($pkg_config --libs libiscsi)
4079 c589b249SRonnie Sahlberg  else
4080 c589b249SRonnie Sahlberg    if test "$libiscsi" = "yes" ; then
4081 e49ab19fSPeter Lieven      feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
4082 c589b249SRonnie Sahlberg    fi
4083 c589b249SRonnie Sahlberg    libiscsi="no"
4084 c589b249SRonnie Sahlberg  fi
4085 c589b249SRonnie Sahlbergfi
4086 c589b249SRonnie Sahlberg
4087 c589b249SRonnie Sahlberg##########################################
4088 8bacde8dSNatanael Copa# Do we need libm
4089 8bacde8dSNatanael Copacat > $TMPC << EOF
4090 8bacde8dSNatanael Copa#include <math.h>
4091 f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); }
4092 8bacde8dSNatanael CopaEOF
4093 8bacde8dSNatanael Copaif compile_prog "" "" ; then
4094 8bacde8dSNatanael Copa  :
4095 8bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then
4096 8bacde8dSNatanael Copa  LIBS="-lm $LIBS"
4097 8bacde8dSNatanael Copa  libs_qga="-lm $libs_qga"
4098 8bacde8dSNatanael Copaelse
4099 76ad07a4SPeter Maydell  error_exit "libm check failed"
4100 8bacde8dSNatanael Copafi
4101 8bacde8dSNatanael Copa
4102 8bacde8dSNatanael Copa##########################################
4103 da93a1fdSaliguori# Do we need librt
4104 8bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime
4105 8bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't
4106 8bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this
4107 8bacde8dSNatanael Copa# function in addition.
4108 da93a1fdSaliguoricat > $TMPC <<EOF
4109 da93a1fdSaliguori#include <signal.h>
4110 da93a1fdSaliguori#include <time.h>
4111 8bacde8dSNatanael Copaint main(void) {
4112 8bacde8dSNatanael Copa  timer_create(CLOCK_REALTIME, NULL, NULL);
4113 8bacde8dSNatanael Copa  return clock_gettime(CLOCK_REALTIME, NULL);
4114 8bacde8dSNatanael Copa}
4115 da93a1fdSaliguoriEOF
4116 da93a1fdSaliguori
4117 52166aa0SJuan Quintelaif compile_prog "" "" ; then
4118 07ffa4bdSJuan Quintela  :
4119 8bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result
4120 18e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then
4121 18e588b1SRick Liu  LIBS="$LIBS -lrt"
4122 18e588b1SRick Liu  libs_qga="$libs_qga -lrt"
4123 da93a1fdSaliguorifi
4124 da93a1fdSaliguori
4125 31ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
4126 179cf400SAndreas Färber        "$aix" != "yes" -a "$haiku" != "yes" ; then
4127 6362a53fSJuan Quintela    libs_softmmu="-lutil $libs_softmmu"
4128 6362a53fSJuan Quintelafi
4129 6362a53fSJuan Quintela
4130 de5071c5SBlue Swirl##########################################
4131 cd4ec0b4SGerd Hoffmann# spice probe
4132 cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then
4133 cd4ec0b4SGerd Hoffmann  cat > $TMPC << EOF
4134 cd4ec0b4SGerd Hoffmann#include <spice.h>
4135 cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; }
4136 cd4ec0b4SGerd HoffmannEOF
4137 710fc4f5SJiri Denemark  spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
4138 710fc4f5SJiri Denemark  spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
4139 65d5d3f9SStefan Weil  if $pkg_config --atleast-version=0.12.0 spice-server && \
4140 65d5d3f9SStefan Weil     $pkg_config --atleast-version=0.12.3 spice-protocol && \
4141 cd4ec0b4SGerd Hoffmann     compile_prog "$spice_cflags" "$spice_libs" ; then
4142 cd4ec0b4SGerd Hoffmann    spice="yes"
4143 cd4ec0b4SGerd Hoffmann    libs_softmmu="$libs_softmmu $spice_libs"
4144 cd4ec0b4SGerd Hoffmann    QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
4145 2e0e3c39SAlon Levy    spice_protocol_version=$($pkg_config --modversion spice-protocol)
4146 2e0e3c39SAlon Levy    spice_server_version=$($pkg_config --modversion spice-server)
4147 cd4ec0b4SGerd Hoffmann  else
4148 cd4ec0b4SGerd Hoffmann    if test "$spice" = "yes" ; then
4149 8efc9363SHu Tao      feature_not_found "spice" \
4150 8efc9363SHu Tao          "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
4151 cd4ec0b4SGerd Hoffmann    fi
4152 cd4ec0b4SGerd Hoffmann    spice="no"
4153 cd4ec0b4SGerd Hoffmann  fi
4154 cd4ec0b4SGerd Hoffmannfi
4155 cd4ec0b4SGerd Hoffmann
4156 7b02f544SMarc-André Lureau# check for smartcard support
4157 111a38b0SRobert Relyeasmartcard_cflags=""
4158 7b02f544SMarc-André Lureauif test "$smartcard" != "no"; then
4159 7b02f544SMarc-André Lureau    if $pkg_config libcacard; then
4160 7b02f544SMarc-André Lureau        libcacard_cflags=$($pkg_config --cflags libcacard)
4161 7b02f544SMarc-André Lureau        libcacard_libs=$($pkg_config --libs libcacard)
4162 7b02f544SMarc-André Lureau        QEMU_CFLAGS="$QEMU_CFLAGS $libcacard_cflags"
4163 7b02f544SMarc-André Lureau        libs_softmmu="$libs_softmmu $libcacard_libs"
4164 7b02f544SMarc-André Lureau        smartcard="yes"
4165 111a38b0SRobert Relyea    else
4166 7b02f544SMarc-André Lureau        if test "$smartcard" = "yes"; then
4167 7b02f544SMarc-André Lureau            feature_not_found "smartcard" "Install libcacard devel"
4168 111a38b0SRobert Relyea        fi
4169 7b02f544SMarc-André Lureau        smartcard="no"
4170 111a38b0SRobert Relyea    fi
4171 111a38b0SRobert Relyeafi
4172 111a38b0SRobert Relyea
4173 2b2325ffSGerd Hoffmann# check for libusb
4174 2b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then
4175 65d5d3f9SStefan Weil    if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
4176 2b2325ffSGerd Hoffmann        libusb="yes"
4177 ca871ec8SStefan Weil        libusb_cflags=$($pkg_config --cflags libusb-1.0)
4178 ca871ec8SStefan Weil        libusb_libs=$($pkg_config --libs libusb-1.0)
4179 2b2325ffSGerd Hoffmann        QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
4180 2b2325ffSGerd Hoffmann        libs_softmmu="$libs_softmmu $libusb_libs"
4181 2b2325ffSGerd Hoffmann    else
4182 2b2325ffSGerd Hoffmann        if test "$libusb" = "yes"; then
4183 8efc9363SHu Tao            feature_not_found "libusb" "Install libusb devel >= 1.0.13"
4184 2b2325ffSGerd Hoffmann        fi
4185 2b2325ffSGerd Hoffmann        libusb="no"
4186 2b2325ffSGerd Hoffmann    fi
4187 2b2325ffSGerd Hoffmannfi
4188 2b2325ffSGerd Hoffmann
4189 69354a83SHans de Goede# check for usbredirparser for usb network redirection support
4190 69354a83SHans de Goedeif test "$usb_redir" != "no" ; then
4191 65d5d3f9SStefan Weil    if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
4192 69354a83SHans de Goede        usb_redir="yes"
4193 ca871ec8SStefan Weil        usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
4194 ca871ec8SStefan Weil        usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
4195 69354a83SHans de Goede        QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
4196 56ab2ad1SAurelien Jarno        libs_softmmu="$libs_softmmu $usb_redir_libs"
4197 69354a83SHans de Goede    else
4198 69354a83SHans de Goede        if test "$usb_redir" = "yes"; then
4199 21684af0SStewart Smith            feature_not_found "usb-redir" "Install usbredir devel"
4200 69354a83SHans de Goede        fi
4201 69354a83SHans de Goede        usb_redir="no"
4202 69354a83SHans de Goede    fi
4203 69354a83SHans de Goedefi
4204 69354a83SHans de Goede
4205 cd4ec0b4SGerd Hoffmann##########################################
4206 d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win
4207 d9840e25STomoki Sekiyama
4208 d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
4209 d9840e25STomoki Sekiyama  case "$vss_win32_sdk" in
4210 690604f6SMichael Roth    "")   vss_win32_include="-isystem $source_path" ;;
4211 d9840e25STomoki Sekiyama    *\ *) # The SDK is installed in "Program Files" by default, but we cannot
4212 d9840e25STomoki Sekiyama          # handle path with spaces. So we symlink the headers into ".sdk/vss".
4213 690604f6SMichael Roth          vss_win32_include="-isystem $source_path/.sdk/vss"
4214 d9840e25STomoki Sekiyama	  symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
4215 d9840e25STomoki Sekiyama	  ;;
4216 690604f6SMichael Roth    *)    vss_win32_include="-isystem $vss_win32_sdk"
4217 d9840e25STomoki Sekiyama  esac
4218 d9840e25STomoki Sekiyama  cat > $TMPC << EOF
4219 d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__
4220 d9840e25STomoki Sekiyama#include <inc/win2003/vss.h>
4221 d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; }
4222 d9840e25STomoki SekiyamaEOF
4223 d9840e25STomoki Sekiyama  if compile_prog "$vss_win32_include" "" ; then
4224 d9840e25STomoki Sekiyama    guest_agent_with_vss="yes"
4225 d9840e25STomoki Sekiyama    QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
4226 315d3184SFam Zheng    libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
4227 f33ca81fSMichael Roth    qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb"
4228 d9840e25STomoki Sekiyama  else
4229 d9840e25STomoki Sekiyama    if test "$vss_win32_sdk" != "" ; then
4230 d9840e25STomoki Sekiyama      echo "ERROR: Please download and install Microsoft VSS SDK:"
4231 d9840e25STomoki Sekiyama      echo "ERROR:   http://www.microsoft.com/en-us/download/details.aspx?id=23490"
4232 d9840e25STomoki Sekiyama      echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
4233 d9840e25STomoki Sekiyama      echo "ERROR:   scripts/extract-vsssdk-headers setup.exe"
4234 d9840e25STomoki Sekiyama      echo "ERROR: The headers are extracted in the directory \`inc'."
4235 d9840e25STomoki Sekiyama      feature_not_found "VSS support"
4236 d9840e25STomoki Sekiyama    fi
4237 d9840e25STomoki Sekiyama    guest_agent_with_vss="no"
4238 d9840e25STomoki Sekiyama  fi
4239 d9840e25STomoki Sekiyamafi
4240 d9840e25STomoki Sekiyama
4241 d9840e25STomoki Sekiyama##########################################
4242 d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified)
4243 d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent
4244 d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the
4245 d9840e25STomoki Sekiyama# pre-compiled .tlb file is included.
4246 d9840e25STomoki Sekiyama
4247 d9840e25STomoki Sekiyamaif test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
4248 d9840e25STomoki Sekiyama  if test -z "$win_sdk"; then
4249 d9840e25STomoki Sekiyama    programfiles="$PROGRAMFILES"
4250 d9840e25STomoki Sekiyama    test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
4251 d9840e25STomoki Sekiyama    if test -n "$programfiles"; then
4252 d9840e25STomoki Sekiyama      win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
4253 d9840e25STomoki Sekiyama    else
4254 d9840e25STomoki Sekiyama      feature_not_found "Windows SDK"
4255 d9840e25STomoki Sekiyama    fi
4256 d9840e25STomoki Sekiyama  elif test "$win_sdk" = "no"; then
4257 d9840e25STomoki Sekiyama    win_sdk=""
4258 d9840e25STomoki Sekiyama  fi
4259 d9840e25STomoki Sekiyamafi
4260 d9840e25STomoki Sekiyama
4261 d9840e25STomoki Sekiyama##########################################
4262 50cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h
4263 50cbebb9SMichael Rothif test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
4264 50cbebb9SMichael Roth  cat > $TMPC << EOF
4265 50cbebb9SMichael Roth#include <windows.h>
4266 50cbebb9SMichael Roth#include <ntddscsi.h>
4267 50cbebb9SMichael Rothint main(void) {
4268 50cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS)
4269 50cbebb9SMichael Roth#error Missing required ioctl definitions
4270 50cbebb9SMichael Roth#endif
4271 50cbebb9SMichael Roth  SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
4272 50cbebb9SMichael Roth  return addr.Lun;
4273 50cbebb9SMichael Roth}
4274 50cbebb9SMichael RothEOF
4275 50cbebb9SMichael Roth  if compile_prog "" "" ; then
4276 50cbebb9SMichael Roth    guest_agent_ntddscsi=yes
4277 c54e1eb4SMichael Roth    libs_qga="-lsetupapi $libs_qga"
4278 50cbebb9SMichael Roth  fi
4279 50cbebb9SMichael Rothfi
4280 50cbebb9SMichael Roth
4281 50cbebb9SMichael Roth##########################################
4282 9d9e1521SGerd Hoffmann# virgl renderer probe
4283 9d9e1521SGerd Hoffmann
4284 9d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then
4285 9d9e1521SGerd Hoffmann  cat > $TMPC << EOF
4286 9d9e1521SGerd Hoffmann#include <virglrenderer.h>
4287 9d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; }
4288 9d9e1521SGerd HoffmannEOF
4289 9d9e1521SGerd Hoffmann  virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null)
4290 9d9e1521SGerd Hoffmann  virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null)
4291 9d9e1521SGerd Hoffmann  if $pkg_config virglrenderer >/dev/null 2>&1 && \
4292 9d9e1521SGerd Hoffmann     compile_prog "$virgl_cflags" "$virgl_libs" ; then
4293 9d9e1521SGerd Hoffmann    virglrenderer="yes"
4294 9d9e1521SGerd Hoffmann  else
4295 9d9e1521SGerd Hoffmann    if test "$virglrenderer" = "yes" ; then
4296 9d9e1521SGerd Hoffmann      feature_not_found "virglrenderer"
4297 9d9e1521SGerd Hoffmann    fi
4298 9d9e1521SGerd Hoffmann    virglrenderer="no"
4299 9d9e1521SGerd Hoffmann  fi
4300 9d9e1521SGerd Hoffmannfi
4301 9d9e1521SGerd Hoffmann
4302 9d9e1521SGerd Hoffmann##########################################
4303 5f6b9e8fSBlue Swirl# check if we have fdatasync
4304 5f6b9e8fSBlue Swirl
4305 5f6b9e8fSBlue Swirlfdatasync=no
4306 5f6b9e8fSBlue Swirlcat > $TMPC << EOF
4307 5f6b9e8fSBlue Swirl#include <unistd.h>
4308 d1722a27SAlexandre Raymondint main(void) {
4309 d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
4310 d1722a27SAlexandre Raymondreturn fdatasync(0);
4311 d1722a27SAlexandre Raymond#else
4312 e172fe11SStefan Weil#error Not supported
4313 d1722a27SAlexandre Raymond#endif
4314 d1722a27SAlexandre Raymond}
4315 5f6b9e8fSBlue SwirlEOF
4316 5f6b9e8fSBlue Swirlif compile_prog "" "" ; then
4317 5f6b9e8fSBlue Swirl    fdatasync=yes
4318 5f6b9e8fSBlue Swirlfi
4319 5f6b9e8fSBlue Swirl
4320 94a420b1SStefan Hajnoczi##########################################
4321 e78815a5SAndreas Färber# check if we have madvise
4322 e78815a5SAndreas Färber
4323 e78815a5SAndreas Färbermadvise=no
4324 e78815a5SAndreas Färbercat > $TMPC << EOF
4325 e78815a5SAndreas Färber#include <sys/types.h>
4326 e78815a5SAndreas Färber#include <sys/mman.h>
4327 832ce9c2SScott Wood#include <stddef.h>
4328 e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
4329 e78815a5SAndreas FärberEOF
4330 e78815a5SAndreas Färberif compile_prog "" "" ; then
4331 e78815a5SAndreas Färber    madvise=yes
4332 e78815a5SAndreas Färberfi
4333 e78815a5SAndreas Färber
4334 e78815a5SAndreas Färber##########################################
4335 e78815a5SAndreas Färber# check if we have posix_madvise
4336 e78815a5SAndreas Färber
4337 e78815a5SAndreas Färberposix_madvise=no
4338 e78815a5SAndreas Färbercat > $TMPC << EOF
4339 e78815a5SAndreas Färber#include <sys/mman.h>
4340 832ce9c2SScott Wood#include <stddef.h>
4341 e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
4342 e78815a5SAndreas FärberEOF
4343 e78815a5SAndreas Färberif compile_prog "" "" ; then
4344 e78815a5SAndreas Färber    posix_madvise=yes
4345 e78815a5SAndreas Färberfi
4346 e78815a5SAndreas Färber
4347 e78815a5SAndreas Färber##########################################
4348 0a852417SPaul Durrant# check if we have posix_syslog
4349 0a852417SPaul Durrant
4350 0a852417SPaul Durrantposix_syslog=no
4351 0a852417SPaul Durrantcat > $TMPC << EOF
4352 0a852417SPaul Durrant#include <syslog.h>
4353 0a852417SPaul Durrantint main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; }
4354 0a852417SPaul DurrantEOF
4355 0a852417SPaul Durrantif compile_prog "" "" ; then
4356 0a852417SPaul Durrant    posix_syslog=yes
4357 0a852417SPaul Durrantfi
4358 0a852417SPaul Durrant
4359 0a852417SPaul Durrant##########################################
4360 94a420b1SStefan Hajnoczi# check if trace backend exists
4361 94a420b1SStefan Hajnoczi
4362 5b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends  > /dev/null 2> /dev/null
4363 94a420b1SStefan Hajnocziif test "$?" -ne 0 ; then
4364 5b808275SLluís Vilanova  error_exit "invalid trace backends" \
4365 5b808275SLluís Vilanova      "Please choose supported trace backends."
4366 94a420b1SStefan Hajnoczifi
4367 94a420b1SStefan Hajnoczi
4368 7e24e92aSStefan Hajnoczi##########################################
4369 7e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present
4370 5b808275SLluís Vilanovaif have_backend "ust"; then
4371 7e24e92aSStefan Hajnoczi  cat > $TMPC << EOF
4372 bf15f63cSMohamad Gebai#include <lttng/tracepoint.h>
4373 7e24e92aSStefan Hajnocziint main(void) { return 0; }
4374 7e24e92aSStefan HajnocziEOF
4375 c79ed23dSFrancis Deslauriers  if compile_prog "" "-Wl,--no-as-needed -ldl" ; then
4376 bf15f63cSMohamad Gebai    if $pkg_config lttng-ust --exists; then
4377 89138857SStefan Weil      lttng_ust_libs=$($pkg_config --libs lttng-ust)
4378 7e24e92aSStefan Hajnoczi    else
4379 c79ed23dSFrancis Deslauriers      lttng_ust_libs="-llttng-ust -ldl"
4380 bf15f63cSMohamad Gebai    fi
4381 bf15f63cSMohamad Gebai    if $pkg_config liburcu-bp --exists; then
4382 89138857SStefan Weil      urcu_bp_libs=$($pkg_config --libs liburcu-bp)
4383 bf15f63cSMohamad Gebai    else
4384 bf15f63cSMohamad Gebai      urcu_bp_libs="-lurcu-bp"
4385 bf15f63cSMohamad Gebai    fi
4386 bf15f63cSMohamad Gebai
4387 bf15f63cSMohamad Gebai    LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4388 bf15f63cSMohamad Gebai    libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4389 bf15f63cSMohamad Gebai  else
4390 bf15f63cSMohamad Gebai    error_exit "Trace backend 'ust' missing lttng-ust header files"
4391 7e24e92aSStefan Hajnoczi  fi
4392 7e24e92aSStefan Hajnoczifi
4393 b3d08c02SDaniel P. Berrange
4394 b3d08c02SDaniel P. Berrange##########################################
4395 b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present
4396 5b808275SLluís Vilanovaif have_backend "dtrace"; then
4397 b3d08c02SDaniel P. Berrange  if ! has 'dtrace' ; then
4398 76ad07a4SPeter Maydell    error_exit "dtrace command is not found in PATH $PATH"
4399 b3d08c02SDaniel P. Berrange  fi
4400 c276b17dSDaniel P. Berrange  trace_backend_stap="no"
4401 c276b17dSDaniel P. Berrange  if has 'stap' ; then
4402 c276b17dSDaniel P. Berrange    trace_backend_stap="yes"
4403 c276b17dSDaniel P. Berrange  fi
4404 b3d08c02SDaniel P. Berrangefi
4405 b3d08c02SDaniel P. Berrange
4406 7e24e92aSStefan Hajnoczi##########################################
4407 519175a2SAlex Barcelo# check and set a backend for coroutine
4408 d0e2fce5SAneesh Kumar K.V
4409 7c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback
4410 33c53c54SDaniel P. Berrange# is sigcontext. On Windows the only valid backend is the Windows
4411 33c53c54SDaniel P. Berrange# specific one.
4412 7c2acc70SPeter Maydell
4413 7c2acc70SPeter Maydellucontext_works=no
4414 d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then
4415 d0e2fce5SAneesh Kumar K.V  cat > $TMPC << EOF
4416 d0e2fce5SAneesh Kumar K.V#include <ucontext.h>
4417 cdf84806SPeter Maydell#ifdef __stub_makecontext
4418 cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail
4419 cdf84806SPeter Maydell#endif
4420 75cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; }
4421 d0e2fce5SAneesh Kumar K.VEOF
4422 d0e2fce5SAneesh Kumar K.V  if compile_prog "" "" ; then
4423 7c2acc70SPeter Maydell    ucontext_works=yes
4424 d0e2fce5SAneesh Kumar K.V  fi
4425 519175a2SAlex Barcelofi
4426 7c2acc70SPeter Maydell
4427 7c2acc70SPeter Maydellif test "$coroutine" = ""; then
4428 7c2acc70SPeter Maydell  if test "$mingw32" = "yes"; then
4429 7c2acc70SPeter Maydell    coroutine=win32
4430 7c2acc70SPeter Maydell  elif test "$ucontext_works" = "yes"; then
4431 7c2acc70SPeter Maydell    coroutine=ucontext
4432 519175a2SAlex Barcelo  else
4433 7c2acc70SPeter Maydell    coroutine=sigaltstack
4434 7c2acc70SPeter Maydell  fi
4435 7c2acc70SPeter Maydellelse
4436 7c2acc70SPeter Maydell  case $coroutine in
4437 7c2acc70SPeter Maydell  windows)
4438 7c2acc70SPeter Maydell    if test "$mingw32" != "yes"; then
4439 7c2acc70SPeter Maydell      error_exit "'windows' coroutine backend only valid for Windows"
4440 7c2acc70SPeter Maydell    fi
4441 7c2acc70SPeter Maydell    # Unfortunately the user visible backend name doesn't match the
4442 7c2acc70SPeter Maydell    # coroutine-*.c filename for this case, so we have to adjust it here.
4443 7c2acc70SPeter Maydell    coroutine=win32
4444 7c2acc70SPeter Maydell    ;;
4445 7c2acc70SPeter Maydell  ucontext)
4446 7c2acc70SPeter Maydell    if test "$ucontext_works" != "yes"; then
4447 7c2acc70SPeter Maydell      feature_not_found "ucontext"
4448 7c2acc70SPeter Maydell    fi
4449 7c2acc70SPeter Maydell    ;;
4450 33c53c54SDaniel P. Berrange  sigaltstack)
4451 7c2acc70SPeter Maydell    if test "$mingw32" = "yes"; then
4452 7c2acc70SPeter Maydell      error_exit "only the 'windows' coroutine backend is valid for Windows"
4453 7c2acc70SPeter Maydell    fi
4454 7c2acc70SPeter Maydell    ;;
4455 7c2acc70SPeter Maydell  *)
4456 76ad07a4SPeter Maydell    error_exit "unknown coroutine backend $coroutine"
4457 7c2acc70SPeter Maydell    ;;
4458 7c2acc70SPeter Maydell  esac
4459 d0e2fce5SAneesh Kumar K.Vfi
4460 d0e2fce5SAneesh Kumar K.V
4461 70c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then
4462 70c60c08SStefan Hajnoczi  coroutine_pool=yes
4463 70c60c08SStefan Hajnoczifi
4464 70c60c08SStefan Hajnoczi
4465 7d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes"; then
4466 7d992e4dSPeter Lieven  if test "$cpu" = "ia64" -o "$cpu" = "hppa"; then
4467 7d992e4dSPeter Lieven    error_exit "stack usage debugging is not supported for $cpu"
4468 7d992e4dSPeter Lieven  fi
4469 7d992e4dSPeter Lieven  if test "$coroutine_pool" = "yes"; then
4470 7d992e4dSPeter Lieven    echo "WARN: disabling coroutine pool for stack usage debugging"
4471 7d992e4dSPeter Lieven    coroutine_pool=no
4472 7d992e4dSPeter Lieven  fi
4473 7d992e4dSPeter Lievenfi
4474 7d992e4dSPeter Lieven
4475 7d992e4dSPeter Lieven
4476 d0e2fce5SAneesh Kumar K.V##########################################
4477 d2042378SAneesh Kumar K.V# check if we have open_by_handle_at
4478 d2042378SAneesh Kumar K.V
4479 4e1797f9SStefan Weilopen_by_handle_at=no
4480 d2042378SAneesh Kumar K.Vcat > $TMPC << EOF
4481 d2042378SAneesh Kumar K.V#include <fcntl.h>
4482 acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH)
4483 acc55ba8SStefan Weil# error missing definition
4484 acc55ba8SStefan Weil#else
4485 75cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4486 acc55ba8SStefan Weil#endif
4487 d2042378SAneesh Kumar K.VEOF
4488 d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then
4489 d2042378SAneesh Kumar K.V    open_by_handle_at=yes
4490 d2042378SAneesh Kumar K.Vfi
4491 d2042378SAneesh Kumar K.V
4492 e06a765eSHarsh Prateek Bora########################################
4493 e06a765eSHarsh Prateek Bora# check if we have linux/magic.h
4494 e06a765eSHarsh Prateek Bora
4495 e06a765eSHarsh Prateek Boralinux_magic_h=no
4496 e06a765eSHarsh Prateek Boracat > $TMPC << EOF
4497 e06a765eSHarsh Prateek Bora#include <linux/magic.h>
4498 e06a765eSHarsh Prateek Boraint main(void) {
4499 75cafad7SStefan Weil  return 0;
4500 e06a765eSHarsh Prateek Bora}
4501 e06a765eSHarsh Prateek BoraEOF
4502 e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then
4503 e06a765eSHarsh Prateek Bora    linux_magic_h=yes
4504 e06a765eSHarsh Prateek Borafi
4505 e06a765eSHarsh Prateek Bora
4506 8ab1bf12SLuiz Capitulino########################################
4507 c95e3080SKevin Wolf# check whether we can disable warning option with a pragma (this is needed
4508 c95e3080SKevin Wolf# to silence warnings in the headers of some versions of external libraries).
4509 c95e3080SKevin Wolf# This test has to be compiled with -Werror as otherwise an unknown pragma is
4510 c95e3080SKevin Wolf# only a warning.
4511 c95e3080SKevin Wolf#
4512 c95e3080SKevin Wolf# If we can't selectively disable warning in the code, disable -Werror so that
4513 c95e3080SKevin Wolf# the build doesn't fail anyway.
4514 c95e3080SKevin Wolf
4515 06d71fa1SPeter Maydellpragma_disable_unused_but_set=no
4516 06d71fa1SPeter Maydellcat > $TMPC << EOF
4517 e6f53fd5SMarkus Armbruster#pragma GCC diagnostic push
4518 06d71fa1SPeter Maydell#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4519 c95e3080SKevin Wolf#pragma GCC diagnostic ignored "-Wstrict-prototypes"
4520 e6f53fd5SMarkus Armbruster#pragma GCC diagnostic pop
4521 c95e3080SKevin Wolf
4522 06d71fa1SPeter Maydellint main(void) {
4523 06d71fa1SPeter Maydell    return 0;
4524 06d71fa1SPeter Maydell}
4525 06d71fa1SPeter MaydellEOF
4526 06d71fa1SPeter Maydellif compile_prog "-Werror" "" ; then
4527 cc6e3ca9SGerd Hoffmann    pragma_diagnostic_available=yes
4528 c95e3080SKevin Wolfelse
4529 c95e3080SKevin Wolf    werror=no
4530 06d71fa1SPeter Maydellfi
4531 06d71fa1SPeter Maydell
4532 06d71fa1SPeter Maydell########################################
4533 541be927SChristian Borntraeger# check if we have valgrind/valgrind.h
4534 3f4349dcSKevin Wolf
4535 3f4349dcSKevin Wolfvalgrind_h=no
4536 3f4349dcSKevin Wolfcat > $TMPC << EOF
4537 3f4349dcSKevin Wolf#include <valgrind/valgrind.h>
4538 3f4349dcSKevin Wolfint main(void) {
4539 3f4349dcSKevin Wolf  return 0;
4540 3f4349dcSKevin Wolf}
4541 3f4349dcSKevin WolfEOF
4542 3f4349dcSKevin Wolfif compile_prog "" "" ; then
4543 3f4349dcSKevin Wolf    valgrind_h=yes
4544 3f4349dcSKevin Wolffi
4545 3f4349dcSKevin Wolf
4546 3f4349dcSKevin Wolf########################################
4547 8ab1bf12SLuiz Capitulino# check if environ is declared
4548 8ab1bf12SLuiz Capitulino
4549 8ab1bf12SLuiz Capitulinohas_environ=no
4550 8ab1bf12SLuiz Capitulinocat > $TMPC << EOF
4551 8ab1bf12SLuiz Capitulino#include <unistd.h>
4552 8ab1bf12SLuiz Capitulinoint main(void) {
4553 c075a723SBlue Swirl    environ = 0;
4554 8ab1bf12SLuiz Capitulino    return 0;
4555 8ab1bf12SLuiz Capitulino}
4556 8ab1bf12SLuiz CapitulinoEOF
4557 8ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then
4558 8ab1bf12SLuiz Capitulino    has_environ=yes
4559 8ab1bf12SLuiz Capitulinofi
4560 8ab1bf12SLuiz Capitulino
4561 76a347e1SRichard Henderson########################################
4562 76a347e1SRichard Henderson# check if cpuid.h is usable.
4563 76a347e1SRichard Henderson
4564 76a347e1SRichard Hendersoncpuid_h=no
4565 76a347e1SRichard Hendersoncat > $TMPC << EOF
4566 76a347e1SRichard Henderson#include <cpuid.h>
4567 76a347e1SRichard Hendersonint main(void) {
4568 774d566cSPeter Maydell    unsigned a, b, c, d;
4569 774d566cSPeter Maydell    int max = __get_cpuid_max(0, 0);
4570 774d566cSPeter Maydell
4571 774d566cSPeter Maydell    if (max >= 1) {
4572 774d566cSPeter Maydell        __cpuid(1, a, b, c, d);
4573 774d566cSPeter Maydell    }
4574 774d566cSPeter Maydell
4575 774d566cSPeter Maydell    if (max >= 7) {
4576 774d566cSPeter Maydell        __cpuid_count(7, 0, a, b, c, d);
4577 774d566cSPeter Maydell    }
4578 774d566cSPeter Maydell
4579 76a347e1SRichard Henderson    return 0;
4580 76a347e1SRichard Henderson}
4581 76a347e1SRichard HendersonEOF
4582 76a347e1SRichard Hendersonif compile_prog "" "" ; then
4583 76a347e1SRichard Henderson    cpuid_h=yes
4584 76a347e1SRichard Hendersonfi
4585 76a347e1SRichard Henderson
4586 f540166bSRichard Henderson########################################
4587 f540166bSRichard Henderson# check if __[u]int128_t is usable.
4588 f540166bSRichard Henderson
4589 f540166bSRichard Hendersonint128=no
4590 f540166bSRichard Hendersoncat > $TMPC << EOF
4591 a00f66abSStefan Weil#if defined(__clang_major__) && defined(__clang_minor__)
4592 a00f66abSStefan Weil# if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4593 a00f66abSStefan Weil#  error __int128_t does not work in CLANG before 3.2
4594 a00f66abSStefan Weil# endif
4595 a00f66abSStefan Weil#endif
4596 f540166bSRichard Henderson__int128_t a;
4597 f540166bSRichard Henderson__uint128_t b;
4598 f540166bSRichard Hendersonint main (void) {
4599 f540166bSRichard Henderson  a = a + b;
4600 f540166bSRichard Henderson  b = a * b;
4601 464e3671SPeter Maydell  a = a * a;
4602 f540166bSRichard Henderson  return 0;
4603 f540166bSRichard Henderson}
4604 f540166bSRichard HendersonEOF
4605 f540166bSRichard Hendersonif compile_prog "" "" ; then
4606 f540166bSRichard Henderson    int128=yes
4607 f540166bSRichard Hendersonfi
4608 76a347e1SRichard Henderson
4609 7ebee43eSRichard Henderson#########################################
4610 7ebee43eSRichard Henderson# See if 128-bit atomic operations are supported.
4611 7ebee43eSRichard Henderson
4612 7ebee43eSRichard Hendersonatomic128=no
4613 7ebee43eSRichard Hendersonif test "$int128" = "yes"; then
4614 7ebee43eSRichard Henderson  cat > $TMPC << EOF
4615 7ebee43eSRichard Hendersonint main(void)
4616 7ebee43eSRichard Henderson{
4617 7ebee43eSRichard Henderson  unsigned __int128 x = 0, y = 0;
4618 7ebee43eSRichard Henderson  y = __atomic_load_16(&x, 0);
4619 7ebee43eSRichard Henderson  __atomic_store_16(&x, y, 0);
4620 7ebee43eSRichard Henderson  __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0);
4621 7ebee43eSRichard Henderson  return 0;
4622 7ebee43eSRichard Henderson}
4623 7ebee43eSRichard HendersonEOF
4624 7ebee43eSRichard Henderson  if compile_prog "" "" ; then
4625 7ebee43eSRichard Henderson    atomic128=yes
4626 7ebee43eSRichard Henderson  fi
4627 7ebee43eSRichard Hendersonfi
4628 7ebee43eSRichard Henderson
4629 df79b996SRichard Henderson#########################################
4630 df79b996SRichard Henderson# See if 64-bit atomic operations are supported.
4631 df79b996SRichard Henderson# Note that without __atomic builtins, we can only
4632 df79b996SRichard Henderson# assume atomic loads/stores max at pointer size.
4633 df79b996SRichard Henderson
4634 df79b996SRichard Hendersoncat > $TMPC << EOF
4635 df79b996SRichard Henderson#include <stdint.h>
4636 df79b996SRichard Hendersonint main(void)
4637 df79b996SRichard Henderson{
4638 df79b996SRichard Henderson  uint64_t x = 0, y = 0;
4639 df79b996SRichard Henderson#ifdef __ATOMIC_RELAXED
4640 df79b996SRichard Henderson  y = __atomic_load_8(&x, 0);
4641 df79b996SRichard Henderson  __atomic_store_8(&x, y, 0);
4642 df79b996SRichard Henderson  __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0);
4643 df79b996SRichard Henderson  __atomic_exchange_8(&x, y, 0);
4644 df79b996SRichard Henderson  __atomic_fetch_add_8(&x, y, 0);
4645 df79b996SRichard Henderson#else
4646 df79b996SRichard Henderson  typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1];
4647 df79b996SRichard Henderson  __sync_lock_test_and_set(&x, y);
4648 df79b996SRichard Henderson  __sync_val_compare_and_swap(&x, y, 0);
4649 df79b996SRichard Henderson  __sync_fetch_and_add(&x, y);
4650 df79b996SRichard Henderson#endif
4651 df79b996SRichard Henderson  return 0;
4652 df79b996SRichard Henderson}
4653 df79b996SRichard HendersonEOF
4654 df79b996SRichard Hendersonif compile_prog "" "" ; then
4655 df79b996SRichard Henderson  atomic64=yes
4656 df79b996SRichard Hendersonfi
4657 df79b996SRichard Henderson
4658 1e6e9acaSRichard Henderson########################################
4659 1e6e9acaSRichard Henderson# check if getauxval is available.
4660 1e6e9acaSRichard Henderson
4661 1e6e9acaSRichard Hendersongetauxval=no
4662 1e6e9acaSRichard Hendersoncat > $TMPC << EOF
4663 1e6e9acaSRichard Henderson#include <sys/auxv.h>
4664 1e6e9acaSRichard Hendersonint main(void) {
4665 1e6e9acaSRichard Henderson  return getauxval(AT_HWCAP) == 0;
4666 1e6e9acaSRichard Henderson}
4667 1e6e9acaSRichard HendersonEOF
4668 1e6e9acaSRichard Hendersonif compile_prog "" "" ; then
4669 1e6e9acaSRichard Henderson    getauxval=yes
4670 1e6e9acaSRichard Hendersonfi
4671 1e6e9acaSRichard Henderson
4672 fd0e6053SJohn Snow########################################
4673 fd0e6053SJohn Snow# check if ccache is interfering with
4674 fd0e6053SJohn Snow# semantic analysis of macros
4675 fd0e6053SJohn Snow
4676 5e4dfd3dSJohn Snowunset CCACHE_CPP2
4677 fd0e6053SJohn Snowccache_cpp2=no
4678 fd0e6053SJohn Snowcat > $TMPC << EOF
4679 fd0e6053SJohn Snowstatic const int Z = 1;
4680 fd0e6053SJohn Snow#define fn() ({ Z; })
4681 fd0e6053SJohn Snow#define TAUT(X) ((X) == Z)
4682 fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y)
4683 fd0e6053SJohn Snow#define ID(X) (X)
4684 fd0e6053SJohn Snowint main(int argc, char *argv[])
4685 fd0e6053SJohn Snow{
4686 fd0e6053SJohn Snow    int x = 0, y = 0;
4687 fd0e6053SJohn Snow    x = ID(x);
4688 fd0e6053SJohn Snow    x = fn();
4689 fd0e6053SJohn Snow    fn();
4690 fd0e6053SJohn Snow    if (PAREN(x, y)) return 0;
4691 fd0e6053SJohn Snow    if (TAUT(Z)) return 0;
4692 fd0e6053SJohn Snow    return 0;
4693 fd0e6053SJohn Snow}
4694 fd0e6053SJohn SnowEOF
4695 fd0e6053SJohn Snow
4696 fd0e6053SJohn Snowif ! compile_object "-Werror"; then
4697 fd0e6053SJohn Snow    ccache_cpp2=yes
4698 fd0e6053SJohn Snowfi
4699 fd0e6053SJohn Snow
4700 b553a042SJohn Snow#################################################
4701 b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE.
4702 b553a042SJohn Snow
4703 b553a042SJohn Snowif test "$fortify_source" != "no"; then
4704 b553a042SJohn Snow  if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then
4705 b553a042SJohn Snow    fortify_source="no";
4706 cfcc7c14SJohn Snow  elif test -n "$cxx" &&
4707 cfcc7c14SJohn Snow       echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then
4708 b553a042SJohn Snow    fortify_source="no";
4709 b553a042SJohn Snow  else
4710 b553a042SJohn Snow    fortify_source="yes"
4711 b553a042SJohn Snow  fi
4712 b553a042SJohn Snowfi
4713 b553a042SJohn Snow
4714 d2042378SAneesh Kumar K.V##########################################
4715 277abf15SJan Vesely# check if struct fsxattr is available via linux/fs.h
4716 277abf15SJan Vesely
4717 277abf15SJan Veselyhave_fsxattr=no
4718 277abf15SJan Veselycat > $TMPC << EOF
4719 277abf15SJan Vesely#include <linux/fs.h>
4720 277abf15SJan Veselystruct fsxattr foo;
4721 277abf15SJan Veselyint main(void) {
4722 277abf15SJan Vesely  return 0;
4723 277abf15SJan Vesely}
4724 277abf15SJan VeselyEOF
4725 277abf15SJan Veselyif compile_prog "" "" ; then
4726 277abf15SJan Vesely    have_fsxattr=yes
4727 277abf15SJan Veselyfi
4728 277abf15SJan Vesely
4729 b66e10e4SPeter Maydell##########################################
4730 b66e10e4SPeter Maydell# check if rtnetlink.h exists and is useful
4731 575b22b1SLaurent Vivierhave_rtnetlink=no
4732 575b22b1SLaurent Viviercat > $TMPC << EOF
4733 575b22b1SLaurent Vivier#include <linux/rtnetlink.h>
4734 575b22b1SLaurent Vivierint main(void) {
4735 575b22b1SLaurent Vivier  return IFLA_PROTO_DOWN;
4736 575b22b1SLaurent Vivier}
4737 575b22b1SLaurent VivierEOF
4738 575b22b1SLaurent Vivierif compile_prog "" "" ; then
4739 575b22b1SLaurent Vivier    have_rtnetlink=yes
4740 575b22b1SLaurent Vivierfi
4741 575b22b1SLaurent Vivier
4742 6a02c806SStefan Hajnoczi##########################################
4743 6a02c806SStefan Hajnoczi# check for usable AF_VSOCK environment
4744 6a02c806SStefan Hajnoczihave_af_vsock=no
4745 6a02c806SStefan Hajnoczicat > $TMPC << EOF
4746 6a02c806SStefan Hajnoczi#include <errno.h>
4747 6a02c806SStefan Hajnoczi#include <sys/types.h>
4748 6a02c806SStefan Hajnoczi#include <sys/socket.h>
4749 6a02c806SStefan Hajnoczi#if !defined(AF_VSOCK)
4750 6a02c806SStefan Hajnoczi# error missing AF_VSOCK flag
4751 6a02c806SStefan Hajnoczi#endif
4752 6a02c806SStefan Hajnoczi#include <linux/vm_sockets.h>
4753 6a02c806SStefan Hajnocziint main(void) {
4754 6a02c806SStefan Hajnoczi    int sock, ret;
4755 6a02c806SStefan Hajnoczi    struct sockaddr_vm svm;
4756 6a02c806SStefan Hajnoczi    socklen_t len = sizeof(svm);
4757 6a02c806SStefan Hajnoczi    sock = socket(AF_VSOCK, SOCK_STREAM, 0);
4758 6a02c806SStefan Hajnoczi    ret = getpeername(sock, (struct sockaddr *)&svm, &len);
4759 6a02c806SStefan Hajnoczi    if ((ret == -1) && (errno == ENOTCONN)) {
4760 6a02c806SStefan Hajnoczi        return 0;
4761 6a02c806SStefan Hajnoczi    }
4762 6a02c806SStefan Hajnoczi    return -1;
4763 6a02c806SStefan Hajnoczi}
4764 6a02c806SStefan HajnocziEOF
4765 6a02c806SStefan Hajnocziif compile_prog "" "" ; then
4766 6a02c806SStefan Hajnoczi    have_af_vsock=yes
4767 6a02c806SStefan Hajnoczifi
4768 6a02c806SStefan Hajnoczi
4769 6969ec6cSJames Clarke#################################################
4770 6969ec6cSJames Clarke# Sparc implicitly links with --relax, which is
4771 6969ec6cSJames Clarke# incompatible with -r, so --no-relax should be
4772 6969ec6cSJames Clarke# given. It does no harm to give it on other
4773 6969ec6cSJames Clarke# platforms too.
4774 6969ec6cSJames Clarke
4775 6969ec6cSJames Clarke# Note: the prototype is needed since QEMU_CFLAGS
4776 6969ec6cSJames Clarke#       contains -Wmissing-prototypes
4777 6969ec6cSJames Clarkecat > $TMPC << EOF
4778 6969ec6cSJames Clarkeextern int foo(void);
4779 6969ec6cSJames Clarkeint foo(void) { return 0; }
4780 6969ec6cSJames ClarkeEOF
4781 6969ec6cSJames Clarkeif ! compile_object ""; then
4782 6969ec6cSJames Clarke  error_exit "Failed to compile object file for LD_REL_FLAGS test"
4783 6969ec6cSJames Clarkefi
4784 7ecf44a5SPaolo Bonzinifor i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do
4785 7ecf44a5SPaolo Bonzini  if do_cc -nostdlib $i -o $TMPMO $TMPO; then
4786 7ecf44a5SPaolo Bonzini    LD_REL_FLAGS=$i
4787 7ecf44a5SPaolo Bonzini    break
4788 7ecf44a5SPaolo Bonzini  fi
4789 7ecf44a5SPaolo Bonzinidone
4790 7ecf44a5SPaolo Bonziniif test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then
4791 7ecf44a5SPaolo Bonzini  feature_not_found "modules" "Cannot find how to build relocatable objects"
4792 6969ec6cSJames Clarkefi
4793 6969ec6cSJames Clarke
4794 277abf15SJan Vesely##########################################
4795 4d04351fSChristopher Covington# check for sysmacros.h
4796 4d04351fSChristopher Covington
4797 4d04351fSChristopher Covingtonhave_sysmacros=no
4798 4d04351fSChristopher Covingtoncat > $TMPC << EOF
4799 4d04351fSChristopher Covington#include <sys/sysmacros.h>
4800 4d04351fSChristopher Covingtonint main(void) {
4801 4d04351fSChristopher Covington    return makedev(0, 0);
4802 4d04351fSChristopher Covington}
4803 4d04351fSChristopher CovingtonEOF
4804 4d04351fSChristopher Covingtonif compile_prog "" "" ; then
4805 4d04351fSChristopher Covington    have_sysmacros=yes
4806 4d04351fSChristopher Covingtonfi
4807 4d04351fSChristopher Covington
4808 4d04351fSChristopher Covington##########################################
4809 da92c3ffSAshish Mittal# Veritas HyperScale block driver VxHS
4810 da92c3ffSAshish Mittal# Check if libvxhs is installed
4811 da92c3ffSAshish Mittal
4812 da92c3ffSAshish Mittalif test "$vxhs" != "no" ; then
4813 da92c3ffSAshish Mittal  cat > $TMPC <<EOF
4814 da92c3ffSAshish Mittal#include <stdint.h>
4815 da92c3ffSAshish Mittal#include <qnio/qnio_api.h>
4816 da92c3ffSAshish Mittal
4817 da92c3ffSAshish Mittalvoid *vxhs_callback;
4818 da92c3ffSAshish Mittal
4819 da92c3ffSAshish Mittalint main(void) {
4820 da92c3ffSAshish Mittal    iio_init(QNIO_VERSION, vxhs_callback);
4821 da92c3ffSAshish Mittal    return 0;
4822 da92c3ffSAshish Mittal}
4823 da92c3ffSAshish MittalEOF
4824 da92c3ffSAshish Mittal  vxhs_libs="-lvxhs -lssl"
4825 da92c3ffSAshish Mittal  if compile_prog "" "$vxhs_libs" ; then
4826 da92c3ffSAshish Mittal    vxhs=yes
4827 da92c3ffSAshish Mittal  else
4828 da92c3ffSAshish Mittal    if test "$vxhs" = "yes" ; then
4829 da92c3ffSAshish Mittal      feature_not_found "vxhs block device" "Install libvxhs See github"
4830 da92c3ffSAshish Mittal    fi
4831 da92c3ffSAshish Mittal    vxhs=no
4832 da92c3ffSAshish Mittal  fi
4833 da92c3ffSAshish Mittalfi
4834 da92c3ffSAshish Mittal
4835 da92c3ffSAshish Mittal##########################################
4836 49e00a18SAndreas Grapentin# check for _Static_assert()
4837 49e00a18SAndreas Grapentin
4838 49e00a18SAndreas Grapentinhave_static_assert=no
4839 49e00a18SAndreas Grapentincat > $TMPC << EOF
4840 49e00a18SAndreas Grapentin_Static_assert(1, "success");
4841 49e00a18SAndreas Grapentinint main(void) {
4842 49e00a18SAndreas Grapentin    return 0;
4843 49e00a18SAndreas Grapentin}
4844 49e00a18SAndreas GrapentinEOF
4845 49e00a18SAndreas Grapentinif compile_prog "" "" ; then
4846 49e00a18SAndreas Grapentin    have_static_assert=yes
4847 49e00a18SAndreas Grapentinfi
4848 49e00a18SAndreas Grapentin
4849 49e00a18SAndreas Grapentin##########################################
4850 e86ecd4bSJuan Quintela# End of CC checks
4851 e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs
4852 e86ecd4bSJuan Quintela
4853 1d728c39SBlue Swirlif test "$gcov" = "yes" ; then
4854 1d728c39SBlue Swirl  CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4855 1d728c39SBlue Swirl  LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4856 b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then
4857 e600cdf3SMichal Privoznik  CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4858 ce278618SPeter Maydellelif test "$debug" = "no"; then
4859 ce278618SPeter Maydell  CFLAGS="-O2 $CFLAGS"
4860 e86ecd4bSJuan Quintelafi
4861 a316e378SJuan Quintela
4862 6542aa9cSPeter Lieven##########################################
4863 6542aa9cSPeter Lieven# Do we have libnfs
4864 6542aa9cSPeter Lievenif test "$libnfs" != "no" ; then
4865 b7d769c9SPeter Lieven  if $pkg_config --atleast-version=1.9.3 libnfs; then
4866 6542aa9cSPeter Lieven    libnfs="yes"
4867 6542aa9cSPeter Lieven    libnfs_libs=$($pkg_config --libs libnfs)
4868 6542aa9cSPeter Lieven  else
4869 6542aa9cSPeter Lieven    if test "$libnfs" = "yes" ; then
4870 8efc9363SHu Tao      feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4871 6542aa9cSPeter Lieven    fi
4872 6542aa9cSPeter Lieven    libnfs="no"
4873 6542aa9cSPeter Lieven  fi
4874 6542aa9cSPeter Lievenfi
4875 1d728c39SBlue Swirl
4876 6ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags
4877 6ca026cbSPeter Maydellif test "$werror" = "yes"; then
4878 6ca026cbSPeter Maydell    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4879 6ca026cbSPeter Maydellfi
4880 6ca026cbSPeter Maydell
4881 e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then
4882 e86ecd4bSJuan Quintela    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4883 1156c669SJuan Quintela        LDFLAGS="-Wl,--warn-common $LDFLAGS"
4884 e86ecd4bSJuan Quintela    fi
4885 e86ecd4bSJuan Quintelafi
4886 e86ecd4bSJuan Quintela
4887 94dd53c5SGerd Hoffmann# test if pod2man has --utf8 option
4888 94dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then
4889 94dd53c5SGerd Hoffmann    POD2MAN="pod2man --utf8"
4890 94dd53c5SGerd Hoffmannelse
4891 94dd53c5SGerd Hoffmann    POD2MAN="pod2man"
4892 94dd53c5SGerd Hoffmannfi
4893 94dd53c5SGerd Hoffmann
4894 952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available
4895 952afb71SBlue Swirlif test "$mingw32" = "yes" ; then
4896 952afb71SBlue Swirl    for flag in --dynamicbase --no-seh --nxcompat; do
4897 952afb71SBlue Swirl        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4898 952afb71SBlue Swirl            LDFLAGS="-Wl,$flag $LDFLAGS"
4899 952afb71SBlue Swirl        fi
4900 952afb71SBlue Swirl    done
4901 952afb71SBlue Swirlfi
4902 952afb71SBlue Swirl
4903 10ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix
4904 e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix
4905 528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix
4906 834574eaSAnthony Liguoriqemu_localedir="$datadir/locale"
4907 5a67135aSbellard
4908 4b1c11fdSDaniel P. Berrangetools=""
4909 4b1c11fdSDaniel P. Berrangeif test "$want_tools" = "yes" ; then
4910 ca35f780SPaolo Bonzini  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4911 4b1c11fdSDaniel P. Berrange  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4912 4b1c11fdSDaniel P. Berrange    tools="qemu-nbd\$(EXESUF) $tools"
4913 a75eb03bSDavid Marchand    tools="ivshmem-client\$(EXESUF) ivshmem-server\$(EXESUF) $tools"
4914 4b1c11fdSDaniel P. Berrange  fi
4915 4b1c11fdSDaniel P. Berrangefi
4916 4b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then
4917 983eef5aSMeador Inge  if test "$virtfs" != no ; then
4918 be5ea8edSAnthony Liguori    if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4919 983eef5aSMeador Inge      virtfs=yes
4920 17bff52bSM. Mohan Kumar      tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4921 983eef5aSMeador Inge    else
4922 983eef5aSMeador Inge      if test "$virtfs" = yes; then
4923 3f3b5388SStefan Weil        error_exit "VirtFS is supported only on Linux and requires libcap devel and libattr devel"
4924 983eef5aSMeador Inge      fi
4925 17500370SAndreas Färber      virtfs=no
4926 983eef5aSMeador Inge    fi
4927 17bff52bSM. Mohan Kumar  fi
4928 d138cee9SMichael Rothfi
4929 9d6bc27bSMichael Roth
4930 9d6bc27bSMichael Roth# Probe for guest agent support/options
4931 9d6bc27bSMichael Roth
4932 e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then
4933 b39297aeSTomoki Sekiyama  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4934 fafcaf1dSMichael Roth      tools="qemu-ga $tools"
4935 e8ef31a3SMichael Tokarev      guest_agent=yes
4936 e8ef31a3SMichael Tokarev  elif [ "$guest_agent" != yes ]; then
4937 e8ef31a3SMichael Tokarev      guest_agent=no
4938 e8ef31a3SMichael Tokarev  else
4939 e8ef31a3SMichael Tokarev      error_exit "Guest agent is not supported on this platform"
4940 ca35f780SPaolo Bonzini  fi
4941 4b1c11fdSDaniel P. Berrangefi
4942 ca35f780SPaolo Bonzini
4943 9d6bc27bSMichael Roth# Guest agent Window MSI  package
4944 9d6bc27bSMichael Roth
4945 9d6bc27bSMichael Rothif test "$guest_agent" != yes; then
4946 9d6bc27bSMichael Roth  if test "$guest_agent_msi" = yes; then
4947 9d6bc27bSMichael Roth    error_exit "MSI guest agent package requires guest agent enabled"
4948 9d6bc27bSMichael Roth  fi
4949 9d6bc27bSMichael Roth  guest_agent_msi=no
4950 9d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then
4951 9d6bc27bSMichael Roth  if test "$guest_agent_msi" = "yes"; then
4952 9d6bc27bSMichael Roth    error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
4953 9d6bc27bSMichael Roth  fi
4954 9d6bc27bSMichael Roth  guest_agent_msi=no
4955 9d6bc27bSMichael Rothelif ! has wixl; then
4956 9d6bc27bSMichael Roth  if test "$guest_agent_msi" = "yes"; then
4957 9d6bc27bSMichael Roth    error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
4958 9d6bc27bSMichael Roth  fi
4959 9d6bc27bSMichael Roth  guest_agent_msi=no
4960 1a34904eSMichael Rothelse
4961 1a34904eSMichael Roth  # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't
4962 1a34904eSMichael Roth  # disabled explicitly
4963 1a34904eSMichael Roth  if test "$guest_agent_msi" != "no"; then
4964 1a34904eSMichael Roth    guest_agent_msi=yes
4965 1a34904eSMichael Roth  fi
4966 9d6bc27bSMichael Rothfi
4967 9d6bc27bSMichael Roth
4968 1a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then
4969 9d6bc27bSMichael Roth  if test "$guest_agent_with_vss" = "yes"; then
4970 9d6bc27bSMichael Roth    QEMU_GA_MSI_WITH_VSS="-D InstallVss"
4971 9d6bc27bSMichael Roth  fi
4972 9d6bc27bSMichael Roth
4973 9d6bc27bSMichael Roth  if test "$QEMU_GA_MANUFACTURER" = ""; then
4974 9d6bc27bSMichael Roth    QEMU_GA_MANUFACTURER=QEMU
4975 9d6bc27bSMichael Roth  fi
4976 9d6bc27bSMichael Roth
4977 9d6bc27bSMichael Roth  if test "$QEMU_GA_DISTRO" = ""; then
4978 9d6bc27bSMichael Roth    QEMU_GA_DISTRO=Linux
4979 9d6bc27bSMichael Roth  fi
4980 9d6bc27bSMichael Roth
4981 9d6bc27bSMichael Roth  if test "$QEMU_GA_VERSION" = ""; then
4982 89138857SStefan Weil      QEMU_GA_VERSION=$(cat $source_path/VERSION)
4983 9d6bc27bSMichael Roth  fi
4984 9d6bc27bSMichael Roth
4985 89138857SStefan Weil  QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin"
4986 9d6bc27bSMichael Roth
4987 9d6bc27bSMichael Roth  case "$cpu" in
4988 9d6bc27bSMichael Roth  x86_64)
4989 9d6bc27bSMichael Roth    QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
4990 9d6bc27bSMichael Roth    ;;
4991 9d6bc27bSMichael Roth  i386)
4992 9d6bc27bSMichael Roth    QEMU_GA_MSI_ARCH="-D Arch=32"
4993 9d6bc27bSMichael Roth    ;;
4994 9d6bc27bSMichael Roth  *)
4995 9d6bc27bSMichael Roth    error_exit "CPU $cpu not supported for building installation package"
4996 9d6bc27bSMichael Roth    ;;
4997 9d6bc27bSMichael Roth  esac
4998 9d6bc27bSMichael Rothfi
4999 9d6bc27bSMichael Roth
5000 ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler
5001 ca35f780SPaolo Bonziniroms=
5002 ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
5003 ca35f780SPaolo Bonzini        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
5004 ca35f780SPaolo Bonzini        "$softmmu" = yes ; then
5005 e57218b6SPeter Maydell    # Different host OS linkers have different ideas about the name of the ELF
5006 e57218b6SPeter Maydell    # emulation. Linux and OpenBSD use 'elf_i386'; FreeBSD uses the _fbsd
5007 e57218b6SPeter Maydell    # variant; and Windows uses i386pe.
5008 e57218b6SPeter Maydell    for emu in elf_i386 elf_i386_fbsd i386pe; do
5009 e57218b6SPeter Maydell        if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then
5010 e57218b6SPeter Maydell            ld_i386_emulation="$emu"
5011 ca35f780SPaolo Bonzini            roms="optionrom"
5012 e57218b6SPeter Maydell            break
5013 e57218b6SPeter Maydell        fi
5014 e57218b6SPeter Maydell    done
5015 ca35f780SPaolo Bonzinifi
5016 d0384d1dSAndreas Färberif test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
5017 39ac8455SDavid Gibson  roms="$roms spapr-rtas"
5018 39ac8455SDavid Gibsonfi
5019 ca35f780SPaolo Bonzini
5020 9933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then
5021 9933c305SChristian Borntraeger  roms="$roms s390-ccw"
5022 9933c305SChristian Borntraegerfi
5023 9933c305SChristian Borntraeger
5024 964c6fa1SRichard Henderson# Probe for the need for relocating the user-only binary.
5025 92fe2ba8SPeter Maydellif ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
5026 964c6fa1SRichard Henderson  textseg_addr=
5027 964c6fa1SRichard Henderson  case "$cpu" in
5028 479eb121SRichard Henderson    arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
5029 479eb121SRichard Henderson      # ??? Rationale for choosing this address
5030 964c6fa1SRichard Henderson      textseg_addr=0x60000000
5031 964c6fa1SRichard Henderson      ;;
5032 964c6fa1SRichard Henderson    mips)
5033 479eb121SRichard Henderson      # A 256M aligned address, high in the address space, with enough
5034 479eb121SRichard Henderson      # room for the code_gen_buffer above it before the stack.
5035 479eb121SRichard Henderson      textseg_addr=0x60000000
5036 964c6fa1SRichard Henderson      ;;
5037 964c6fa1SRichard Henderson  esac
5038 964c6fa1SRichard Henderson  if [ -n "$textseg_addr" ]; then
5039 964c6fa1SRichard Henderson    cat > $TMPC <<EOF
5040 964c6fa1SRichard Henderson    int main(void) { return 0; }
5041 964c6fa1SRichard HendersonEOF
5042 964c6fa1SRichard Henderson    textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5043 964c6fa1SRichard Henderson    if ! compile_prog "" "$textseg_ldflags"; then
5044 964c6fa1SRichard Henderson      # In case ld does not support -Ttext-segment, edit the default linker
5045 964c6fa1SRichard Henderson      # script via sed to set the .text start addr.  This is needed on FreeBSD
5046 964c6fa1SRichard Henderson      # at least.
5047 92fe2ba8SPeter Maydell      if ! $ld --verbose >/dev/null 2>&1; then
5048 92fe2ba8SPeter Maydell        error_exit \
5049 92fe2ba8SPeter Maydell            "We need to link the QEMU user mode binaries at a" \
5050 92fe2ba8SPeter Maydell            "specific text address. Unfortunately your linker" \
5051 92fe2ba8SPeter Maydell            "doesn't support either the -Ttext-segment option or" \
5052 92fe2ba8SPeter Maydell            "printing the default linker script with --verbose." \
5053 92fe2ba8SPeter Maydell            "If you don't want the user mode binaries, pass the" \
5054 92fe2ba8SPeter Maydell            "--disable-user option to configure."
5055 92fe2ba8SPeter Maydell      fi
5056 92fe2ba8SPeter Maydell
5057 964c6fa1SRichard Henderson      $ld --verbose | sed \
5058 964c6fa1SRichard Henderson        -e '1,/==================================================/d' \
5059 964c6fa1SRichard Henderson        -e '/==================================================/,$d' \
5060 964c6fa1SRichard Henderson        -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
5061 964c6fa1SRichard Henderson        -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
5062 964c6fa1SRichard Henderson      textseg_ldflags="-Wl,-T../config-host.ld"
5063 964c6fa1SRichard Henderson    fi
5064 964c6fa1SRichard Henderson  fi
5065 964c6fa1SRichard Hendersonfi
5066 964c6fa1SRichard Henderson
5067 02d34f62SCole Robinsonecho_version() {
5068 02d34f62SCole Robinson    if test "$1" = "yes" ; then
5069 02d34f62SCole Robinson        echo "($2)"
5070 02d34f62SCole Robinson    fi
5071 02d34f62SCole Robinson}
5072 02d34f62SCole Robinson
5073 50e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done
5074 50e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
5075 50e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu"
5076 5ca9388aSGerd Hoffmann
5077 7d13299dSbellardecho "Install prefix    $prefix"
5078 89138857SStefan Weilecho "BIOS directory    $(eval echo $qemu_datadir)"
5079 89138857SStefan Weilecho "binary directory  $(eval echo $bindir)"
5080 89138857SStefan Weilecho "library directory $(eval echo $libdir)"
5081 89138857SStefan Weilecho "module directory  $(eval echo $qemu_moddir)"
5082 89138857SStefan Weilecho "libexec directory $(eval echo $libexecdir)"
5083 89138857SStefan Weilecho "include directory $(eval echo $includedir)"
5084 89138857SStefan Weilecho "config directory  $(eval echo $sysconfdir)"
5085 11d9f695Sbellardif test "$mingw32" = "no" ; then
5086 89138857SStefan Weilecho "local state directory   $(eval echo $local_statedir)"
5087 89138857SStefan Weilecho "Manual directory  $(eval echo $mandir)"
5088 43ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
5089 5a699bbbSLaszlo Ersekelse
5090 5a699bbbSLaszlo Ersekecho "local state directory   queried at runtime"
5091 d9840e25STomoki Sekiyamaecho "Windows SDK       $win_sdk"
5092 11d9f695Sbellardfi
5093 5a67135aSbellardecho "Source path       $source_path"
5094 7d13299dSbellardecho "C compiler        $cc"
5095 83469015Sbellardecho "Host C compiler   $host_cc"
5096 83f73fceSTomoki Sekiyamaecho "C++ compiler      $cxx"
5097 3c4a4d0dSPeter Maydellecho "Objective-C compiler $objcc"
5098 45d285abSPeter Maydellecho "ARFLAGS           $ARFLAGS"
5099 0c439cbfSJuan Quintelaecho "CFLAGS            $CFLAGS"
5100 a558ee17SJuan Quintelaecho "QEMU_CFLAGS       $QEMU_CFLAGS"
5101 0c439cbfSJuan Quintelaecho "LDFLAGS           $LDFLAGS"
5102 7d13299dSbellardecho "make              $make"
5103 6a882643Spbrookecho "install           $install"
5104 c886edfbSBlue Swirlecho "python            $python"
5105 e2d8830eSBradif test "$slirp" = "yes" ; then
5106 e2d8830eSBrad    echo "smbd              $smbd"
5107 e2d8830eSBradfi
5108 17969268SFam Zhengecho "module support    $modules"
5109 a98fd896Sbellardecho "host CPU          $cpu"
5110 de83cd02Sbellardecho "host big endian   $bigendian"
5111 97a847bcSbellardecho "target list       $target_list"
5112 ade25b0dSaurel32echo "tcg debug enabled $debug_tcg"
5113 7d13299dSbellardecho "gprof enabled     $gprof"
5114 03b4fe7dSaliguoriecho "sparse enabled    $sparse"
5115 1625af87Saliguoriecho "strip binaries    $strip_opt"
5116 05c2a3e7Sbellardecho "profiler          $profiler"
5117 43ce4dfeSbellardecho "static build      $static"
5118 5b0753e0Sbellardif test "$darwin" = "yes" ; then
5119 5b0753e0Sbellard    echo "Cocoa support     $cocoa"
5120 5b0753e0Sbellardfi
5121 e2134eb9SGerd Hoffmannecho "pixman            $pixman"
5122 89138857SStefan Weilecho "SDL support       $sdl $(echo_version $sdl $sdlversion)"
5123 89138857SStefan Weilecho "GTK support       $gtk $(echo_version $gtk $gtk_version)"
5124 925a0400SGerd Hoffmannecho "GTK GL support    $gtk_gl"
5125 89138857SStefan Weilecho "VTE support       $vte $(echo_version $vte $vteversion)"
5126 a1c5e949SDaniel P. Berrangeecho "TLS priority      $tls_priority"
5127 ddbb0d09SDaniel P. Berrangeecho "GNUTLS support    $gnutls"
5128 b917da4cSDaniel P. Berrangeecho "GNUTLS rnd        $gnutls_rnd"
5129 91bfcdb0SDaniel P. Berrangeecho "libgcrypt         $gcrypt"
5130 37788f25SDaniel P. Berrangeecho "libgcrypt kdf     $gcrypt_kdf"
5131 89138857SStefan Weilecho "nettle            $nettle $(echo_version $nettle $nettle_version)"
5132 fff2f982SDaniel P. Berrangeecho "nettle kdf        $nettle_kdf"
5133 9a2fd434SDaniel P. Berrangeecho "libtasn1          $tasn1"
5134 4d3b6f6eSbalrogecho "curses support    $curses"
5135 9d9e1521SGerd Hoffmannecho "virgl support     $virglrenderer"
5136 769ce76dSAlexander Grafecho "curl support      $curl"
5137 67b915a5Sbellardecho "mingw32 support   $mingw32"
5138 0c58ac1cSmalcecho "Audio drivers     $audio_drv_list"
5139 b64ec4e4SFam Zhengecho "Block whitelist (rw) $block_drv_rw_whitelist"
5140 b64ec4e4SFam Zhengecho "Block whitelist (ro) $block_drv_ro_whitelist"
5141 983eef5aSMeador Ingeecho "VirtFS support    $virtfs"
5142 821601eaSJes Sorensenecho "VNC support       $vnc"
5143 821601eaSJes Sorensenif test "$vnc" = "yes" ; then
5144 2f9606b3Saliguori    echo "VNC SASL support  $vnc_sasl"
5145 2f6f5c7aSCorentin Chary    echo "VNC JPEG support  $vnc_jpeg"
5146 efe556adSCorentin Chary    echo "VNC PNG support   $vnc_png"
5147 821601eaSJes Sorensenfi
5148 3142255cSblueswir1if test -n "$sparc_cpu"; then
5149 3142255cSblueswir1    echo "Target Sparc Arch $sparc_cpu"
5150 3142255cSblueswir1fi
5151 e37630caSaliguoriecho "xen support       $xen"
5152 3996e85cSPaul Durrantif test "$xen" = "yes" ; then
5153 3996e85cSPaul Durrant  echo "xen ctrl version  $xen_ctrl_version"
5154 64a7ad6fSIan Campbell  echo "pv dom build      $xen_pv_domain_build"
5155 3996e85cSPaul Durrantfi
5156 2e4d9fb1Saurel32echo "brlapi support    $brlapi"
5157 a20a6f46SJuan Quintelaecho "bluez  support    $bluez"
5158 a25dba17SJuan Quintelaecho "Documentation     $docs"
5159 40d6444eSAvi Kivityecho "PIE               $pie"
5160 8a16d273Sthsecho "vde support       $vde"
5161 58952137SVincenzo Maffioneecho "netmap support    $netmap"
5162 5c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio"
5163 758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr"
5164 77755340Sthsecho "Install blobs     $blobs"
5165 b31a0277SJuan Quintelaecho "KVM support       $kvm"
5166 b0cb0a66SVincent Palatinecho "HAX support       $hax"
5167 2da776dbSMichael R. Hinesecho "RDMA support      $rdma"
5168 9195b2c2SStefan Weilecho "TCG interpreter   $tcg_interpreter"
5169 f652e6afSaurel32echo "fdt support       $fdt"
5170 ceb42de8Saliguoriecho "preadv support    $preadv"
5171 5f6b9e8fSBlue Swirlecho "fdatasync         $fdatasync"
5172 e78815a5SAndreas Färberecho "madvise           $madvise"
5173 e78815a5SAndreas Färberecho "posix_madvise     $posix_madvise"
5174 47e98658SCorey Bryantecho "libcap-ng support $cap_ng"
5175 d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net"
5176 5e9be92dSNicholas Bellingerecho "vhost-scsi support $vhost_scsi"
5177 fc0b9b0eSStefan Hajnocziecho "vhost-vsock support $vhost_vsock"
5178 5b808275SLluís Vilanovaecho "Trace backends    $trace_backends"
5179 713572a7SMarc-André Lureauif have_backend "simple"; then
5180 9410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>"
5181 e00e36fbSStefan Weilfi
5182 89138857SStefan Weilecho "spice support     $spice $(echo_version $spice $spice_protocol_version/$spice_server_version)"
5183 f27aaf4bSChristian Brunnerecho "rbd support       $rbd"
5184 dce512deSChristoph Hellwigecho "xfsctl support    $xfs"
5185 7b02f544SMarc-André Lureauecho "smartcard support $smartcard"
5186 2b2325ffSGerd Hoffmannecho "libusb            $libusb"
5187 69354a83SHans de Goedeecho "usb net redir     $usb_redir"
5188 da076ffeSGerd Hoffmannecho "OpenGL support    $opengl"
5189 014cb152SGerd Hoffmannecho "OpenGL dmabufs    $opengl_dmabuf"
5190 c589b249SRonnie Sahlbergecho "libiscsi support  $libiscsi"
5191 6542aa9cSPeter Lievenecho "libnfs support    $libnfs"
5192 d138cee9SMichael Rothecho "build guest agent $guest_agent"
5193 d9840e25STomoki Sekiyamaecho "QGA VSS support   $guest_agent_with_vss"
5194 50cbebb9SMichael Rothecho "QGA w32 disk info $guest_agent_ntddscsi"
5195 4c875d89SMichael Rothecho "QGA MSI support   $guest_agent_msi"
5196 f794573eSEduardo Otuboecho "seccomp support   $seccomp"
5197 7c2acc70SPeter Maydellecho "coroutine backend $coroutine"
5198 70c60c08SStefan Hajnocziecho "coroutine pool    $coroutine_pool"
5199 7d992e4dSPeter Lievenecho "debug stack usage $debug_stack_usage"
5200 eb100396SBharata B Raoecho "GlusterFS support $glusterfs"
5201 1d728c39SBlue Swirlecho "gcov              $gcov_tool"
5202 1d728c39SBlue Swirlecho "gcov enabled      $gcov"
5203 ab214c29SStefan Bergerecho "TPM support       $tpm"
5204 0a12ec87SRichard W.M. Jonesecho "libssh2 support   $libssh2"
5205 3b8acc11SPaolo Bonziniecho "TPM passthrough   $tpm_passthrough"
5206 3556c233SPaolo Bonziniecho "QOM debugging     $qom_cast_debug"
5207 ed1701c6SDr. David Alan Gilbertecho "Live block migration $live_block_migration"
5208 607dacd0Sqiaonuohanecho "lzo support       $lzo"
5209 607dacd0Sqiaonuohanecho "snappy support    $snappy"
5210 6b383c08SPeter Wuecho "bzip2 support     $bzip2"
5211 a99d57bbSWanlong Gaoecho "NUMA host support $numa"
5212 2847b469SFam Zhengecho "tcmalloc support  $tcmalloc"
5213 7b01cb97SAlexandre Derumierecho "jemalloc support  $jemalloc"
5214 99f2dbd3SLiang Liecho "avx2 optimization $avx2_opt"
5215 a6b1d4c0SChanglong Xieecho "replication support $replication"
5216 da92c3ffSAshish Mittalecho "VxHS block device $vxhs"
5217 67b915a5Sbellard
5218 1ba16968SStefan Weilif test "$sdl_too_old" = "yes"; then
5219 24b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
5220 e8cd23deSbellardfi
5221 97a847bcSbellard
5222 898be3e0SPeter Maydellif test "$supported_cpu" = "no"; then
5223 898be3e0SPeter Maydell    echo
5224 898be3e0SPeter Maydell    echo "WARNING: SUPPORT FOR THIS HOST CPU WILL GO AWAY IN FUTURE RELEASES!"
5225 898be3e0SPeter Maydell    echo
5226 898be3e0SPeter Maydell    echo "CPU host architecture $cpu support is not currently maintained."
5227 898be3e0SPeter Maydell    echo "The QEMU project intends to remove support for this host CPU in"
5228 898be3e0SPeter Maydell    echo "a future release if nobody volunteers to maintain it and to"
5229 898be3e0SPeter Maydell    echo "provide a build host for our continuous integration setup."
5230 898be3e0SPeter Maydell    echo "configure has succeeded and you can continue to build, but"
5231 898be3e0SPeter Maydell    echo "if you care about QEMU on this platform you should contact"
5232 898be3e0SPeter Maydell    echo "us upstream at qemu-devel@nongnu.org."
5233 898be3e0SPeter Maydellfi
5234 898be3e0SPeter Maydell
5235 898be3e0SPeter Maydellif test "$supported_os" = "no"; then
5236 898be3e0SPeter Maydell    echo
5237 898be3e0SPeter Maydell    echo "WARNING: SUPPORT FOR THIS HOST OS WILL GO AWAY IN FUTURE RELEASES!"
5238 898be3e0SPeter Maydell    echo
5239 c50126aaSPeter Maydell    echo "Host OS $targetos support is not currently maintained."
5240 c50126aaSPeter Maydell    echo "The QEMU project intends to remove support for this host OS in"
5241 898be3e0SPeter Maydell    echo "a future release if nobody volunteers to maintain it and to"
5242 898be3e0SPeter Maydell    echo "provide a build host for our continuous integration setup."
5243 898be3e0SPeter Maydell    echo "configure has succeeded and you can continue to build, but"
5244 898be3e0SPeter Maydell    echo "if you care about QEMU on this platform you should contact"
5245 898be3e0SPeter Maydell    echo "us upstream at qemu-devel@nongnu.org."
5246 898be3e0SPeter Maydellfi
5247 898be3e0SPeter Maydell
5248 98ec69acSJuan Quintelaconfig_host_mak="config-host.mak"
5249 97a847bcSbellard
5250 dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak
5251 dbd99ae3SStefan Weil
5252 98ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak
5253 98ec69acSJuan Quintelaecho >> $config_host_mak
5254 98ec69acSJuan Quintela
5255 e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak
5256 99d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak
5257 99d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak
5258 3aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak
5259 8bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak
5260 0f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak
5261 99d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak
5262 99d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak
5263 22d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak
5264 9afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak
5265 9afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak
5266 e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak
5267 5a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then
5268 785c23aeSLuiz Capitulino  echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
5269 5a699bbbSLaszlo Ersekfi
5270 f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak
5271 f9943cd5SGerd Hoffmannecho "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
5272 f9943cd5SGerd Hoffmannecho "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
5273 834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak
5274 f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak
5275 804edf29SJuan Quintela
5276 98ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak
5277 727e5283SPaolo Bonzini
5278 f8393946Saurel32if test "$debug_tcg" = "yes" ; then
5279 2358a494SJuan Quintela  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
5280 f8393946Saurel32fi
5281 1625af87Saliguoriif test "$strip_opt" = "yes" ; then
5282 52ba784dSHollis Blanchard  echo "STRIP=${strip}" >> $config_host_mak
5283 1625af87Saliguorifi
5284 7d13299dSbellardif test "$bigendian" = "yes" ; then
5285 e2542fe2SJuan Quintela  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
5286 97a847bcSbellardfi
5287 67b915a5Sbellardif test "$mingw32" = "yes" ; then
5288 98ec69acSJuan Quintela  echo "CONFIG_WIN32=y" >> $config_host_mak
5289 89138857SStefan Weil  rc_version=$(cat $source_path/VERSION)
5290 9fe6de94SBlue Swirl  version_major=${rc_version%%.*}
5291 9fe6de94SBlue Swirl  rc_version=${rc_version#*.}
5292 9fe6de94SBlue Swirl  version_minor=${rc_version%%.*}
5293 9fe6de94SBlue Swirl  rc_version=${rc_version#*.}
5294 9fe6de94SBlue Swirl  version_subminor=${rc_version%%.*}
5295 9fe6de94SBlue Swirl  version_micro=0
5296 9fe6de94SBlue Swirl  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5297 9fe6de94SBlue Swirl  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
5298 d9840e25STomoki Sekiyama  if test "$guest_agent_with_vss" = "yes" ; then
5299 d9840e25STomoki Sekiyama    echo "CONFIG_QGA_VSS=y" >> $config_host_mak
5300 f33ca81fSMichael Roth    echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak
5301 d9840e25STomoki Sekiyama    echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
5302 d9840e25STomoki Sekiyama  fi
5303 50cbebb9SMichael Roth  if test "$guest_agent_ntddscsi" = "yes" ; then
5304 50cbebb9SMichael Roth    echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
5305 50cbebb9SMichael Roth  fi
5306 1a34904eSMichael Roth  if test "$guest_agent_msi" = "yes"; then
5307 9dacf32dSYossi Hindin    echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
5308 9dacf32dSYossi Hindin    echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
5309 9dacf32dSYossi Hindin    echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
5310 9dacf32dSYossi Hindin    echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
5311 9dacf32dSYossi Hindin    echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
5312 9dacf32dSYossi Hindin    echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
5313 9dacf32dSYossi Hindin    echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
5314 9dacf32dSYossi Hindin  fi
5315 210fa556Spbrookelse
5316 35f4df27SJuan Quintela  echo "CONFIG_POSIX=y" >> $config_host_mak
5317 210fa556Spbrookfi
5318 128ab2ffSblueswir1
5319 dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then
5320 dffcb71cSMark McLoughlin  echo "CONFIG_LINUX=y" >> $config_host_mak
5321 dffcb71cSMark McLoughlinfi
5322 dffcb71cSMark McLoughlin
5323 83fb7adfSbellardif test "$darwin" = "yes" ; then
5324 98ec69acSJuan Quintela  echo "CONFIG_DARWIN=y" >> $config_host_mak
5325 83fb7adfSbellardfi
5326 b29fe3edSmalc
5327 b29fe3edSmalcif test "$aix" = "yes" ; then
5328 98ec69acSJuan Quintela  echo "CONFIG_AIX=y" >> $config_host_mak
5329 b29fe3edSmalcfi
5330 b29fe3edSmalc
5331 ec530c81Sbellardif test "$solaris" = "yes" ; then
5332 98ec69acSJuan Quintela  echo "CONFIG_SOLARIS=y" >> $config_host_mak
5333 2358a494SJuan Quintela  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
5334 0475a5caSths  if test "$needs_libsunmath" = "yes" ; then
5335 75b5a697SJuan Quintela    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
5336 0475a5caSths  fi
5337 ec530c81Sbellardfi
5338 179cf400SAndreas Färberif test "$haiku" = "yes" ; then
5339 179cf400SAndreas Färber  echo "CONFIG_HAIKU=y" >> $config_host_mak
5340 179cf400SAndreas Färberfi
5341 97a847bcSbellardif test "$static" = "yes" ; then
5342 98ec69acSJuan Quintela  echo "CONFIG_STATIC=y" >> $config_host_mak
5343 97a847bcSbellardfi
5344 1ba16968SStefan Weilif test "$profiler" = "yes" ; then
5345 2358a494SJuan Quintela  echo "CONFIG_PROFILER=y" >> $config_host_mak
5346 05c2a3e7Sbellardfi
5347 c20709aaSbellardif test "$slirp" = "yes" ; then
5348 98ec69acSJuan Quintela  echo "CONFIG_SLIRP=y" >> $config_host_mak
5349 e2d8830eSBrad  echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
5350 c20709aaSbellardfi
5351 8a16d273Sthsif test "$vde" = "yes" ; then
5352 98ec69acSJuan Quintela  echo "CONFIG_VDE=y" >> $config_host_mak
5353 8a16d273Sthsfi
5354 58952137SVincenzo Maffioneif test "$netmap" = "yes" ; then
5355 58952137SVincenzo Maffione  echo "CONFIG_NETMAP=y" >> $config_host_mak
5356 58952137SVincenzo Maffionefi
5357 015a33bdSGongleiif test "$l2tpv3" = "yes" ; then
5358 015a33bdSGonglei  echo "CONFIG_L2TPV3=y" >> $config_host_mak
5359 015a33bdSGongleifi
5360 47e98658SCorey Bryantif test "$cap_ng" = "yes" ; then
5361 47e98658SCorey Bryant  echo "CONFIG_LIBCAP=y" >> $config_host_mak
5362 47e98658SCorey Bryantfi
5363 2358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
5364 0c58ac1cSmalcfor drv in $audio_drv_list; do
5365 89138857SStefan Weil    def=CONFIG_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]')
5366 98ec69acSJuan Quintela    echo "$def=y" >> $config_host_mak
5367 0c58ac1cSmalcdone
5368 67f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then
5369 67f86e8eSJuan Quintela  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
5370 67f86e8eSJuan Quintelafi
5371 d5631638Smalcif test "$audio_win_int" = "yes" ; then
5372 d5631638Smalc  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
5373 d5631638Smalcfi
5374 b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
5375 b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
5376 821601eaSJes Sorensenif test "$vnc" = "yes" ; then
5377 821601eaSJes Sorensen  echo "CONFIG_VNC=y" >> $config_host_mak
5378 821601eaSJes Sorensenfi
5379 2f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then
5380 98ec69acSJuan Quintela  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
5381 2f9606b3Saliguorifi
5382 821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then
5383 2f6f5c7aSCorentin Chary  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
5384 2f6f5c7aSCorentin Charyfi
5385 821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then
5386 efe556adSCorentin Chary  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
5387 efe556adSCorentin Charyfi
5388 76655d6dSaliguoriif test "$fnmatch" = "yes" ; then
5389 2358a494SJuan Quintela  echo "CONFIG_FNMATCH=y" >> $config_host_mak
5390 76655d6dSaliguorifi
5391 dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then
5392 dce512deSChristoph Hellwig  echo "CONFIG_XFS=y" >> $config_host_mak
5393 dce512deSChristoph Hellwigfi
5394 89138857SStefan Weilqemu_version=$(head $source_path/VERSION)
5395 98ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak
5396 2358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak
5397 98ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak
5398 98ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak
5399 a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then
5400 98ec69acSJuan Quintela  echo "BUILD_DOCS=yes" >> $config_host_mak
5401 cc8ae6deSpbrookfi
5402 17969268SFam Zhengif test "$modules" = "yes"; then
5403 e26110cfSFam Zheng  # $shacmd can generate a hash started with digit, which the compiler doesn't
5404 e26110cfSFam Zheng  # like as an symbol. So prefix it with an underscore
5405 89138857SStefan Weil  echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak
5406 17969268SFam Zheng  echo "CONFIG_MODULES=y" >> $config_host_mak
5407 17969268SFam Zhengfi
5408 1ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then
5409 98ec69acSJuan Quintela  echo "CONFIG_SDL=y" >> $config_host_mak
5410 a3f4d63dSCole Robinson  echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
5411 8ad3a7ddSJuan Quintela  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
5412 49ecc3faSbellardfi
5413 49ecc3faSbellardif test "$cocoa" = "yes" ; then
5414 98ec69acSJuan Quintela  echo "CONFIG_COCOA=y" >> $config_host_mak
5415 49ecc3faSbellardfi
5416 4d3b6f6eSbalrogif test "$curses" = "yes" ; then
5417 98ec69acSJuan Quintela  echo "CONFIG_CURSES=y" >> $config_host_mak
5418 ab4e5602SJan Kiszkafi
5419 099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then
5420 2358a494SJuan Quintela  echo "CONFIG_PIPE2=y" >> $config_host_mak
5421 099d6b0fSRiku Voipiofi
5422 40ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then
5423 40ff6d7eSKevin Wolf  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
5424 40ff6d7eSKevin Wolffi
5425 3ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then
5426 2358a494SJuan Quintela  echo "CONFIG_SPLICE=y" >> $config_host_mak
5427 3ce34dfbSvibisreenivasanfi
5428 c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then
5429 c2882b96SRiku Voipio  echo "CONFIG_EVENTFD=y" >> $config_host_mak
5430 c2882b96SRiku Voipiofi
5431 751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then
5432 751bcc39SMarc-André Lureau  echo "CONFIG_MEMFD=y" >> $config_host_mak
5433 751bcc39SMarc-André Lureaufi
5434 d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then
5435 d0927938SUlrich Hecht  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
5436 d0927938SUlrich Hechtfi
5437 3d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then
5438 3d4fa43eSKusanagi Kouichi  echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
5439 3d4fa43eSKusanagi Kouichifi
5440 b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then
5441 b953f075SDenis V. Lunev  echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
5442 b953f075SDenis V. Lunevfi
5443 ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then
5444 ed911435SKevin Wolf  echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
5445 ed911435SKevin Wolffi
5446 c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then
5447 c727f47dSPeter Maydell  echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
5448 c727f47dSPeter Maydellfi
5449 dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then
5450 dace20dcSPeter Maydell  echo "CONFIG_FIEMAP=y" >> $config_host_mak
5451 dace20dcSPeter Maydellfi
5452 d0927938SUlrich Hechtif test "$dup3" = "yes" ; then
5453 d0927938SUlrich Hecht  echo "CONFIG_DUP3=y" >> $config_host_mak
5454 d0927938SUlrich Hechtfi
5455 4e0c6529SAlex Blighif test "$ppoll" = "yes" ; then
5456 4e0c6529SAlex Bligh  echo "CONFIG_PPOLL=y" >> $config_host_mak
5457 4e0c6529SAlex Blighfi
5458 cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then
5459 cd758dd0SAlex Bligh  echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
5460 cd758dd0SAlex Blighfi
5461 3b6edd16SPeter Maydellif test "$epoll" = "yes" ; then
5462 3b6edd16SPeter Maydell  echo "CONFIG_EPOLL=y" >> $config_host_mak
5463 3b6edd16SPeter Maydellfi
5464 3b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then
5465 3b6edd16SPeter Maydell  echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
5466 3b6edd16SPeter Maydellfi
5467 a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then
5468 a8fd1abaSPeter Maydell  echo "CONFIG_SENDFILE=y" >> $config_host_mak
5469 a8fd1abaSPeter Maydellfi
5470 51834341SRiku Voipioif test "$timerfd" = "yes" ; then
5471 51834341SRiku Voipio  echo "CONFIG_TIMERFD=y" >> $config_host_mak
5472 51834341SRiku Voipiofi
5473 9af5c906SRiku Voipioif test "$setns" = "yes" ; then
5474 9af5c906SRiku Voipio  echo "CONFIG_SETNS=y" >> $config_host_mak
5475 9af5c906SRiku Voipiofi
5476 38860a03SAleksandar Markovicif test "$clock_adjtime" = "yes" ; then
5477 38860a03SAleksandar Markovic  echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak
5478 38860a03SAleksandar Markovicfi
5479 5a03cd00SAleksandar Markovicif test "$syncfs" = "yes" ; then
5480 5a03cd00SAleksandar Markovic  echo "CONFIG_SYNCFS=y" >> $config_host_mak
5481 5a03cd00SAleksandar Markovicfi
5482 3b3f24adSaurel32if test "$inotify" = "yes" ; then
5483 2358a494SJuan Quintela  echo "CONFIG_INOTIFY=y" >> $config_host_mak
5484 3b3f24adSaurel32fi
5485 c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then
5486 c05c7a73SRiku Voipio  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
5487 c05c7a73SRiku Voipiofi
5488 6ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then
5489 6ae9a1f4SJuan Quintela  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
5490 6ae9a1f4SJuan Quintelafi
5491 6ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then
5492 6ae9a1f4SJuan Quintela  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
5493 6ae9a1f4SJuan Quintelafi
5494 769ce76dSAlexander Grafif test "$curl" = "yes" ; then
5495 d3399d7cSFam Zheng  echo "CONFIG_CURL=m" >> $config_host_mak
5496 b1d5a277SJuan Quintela  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
5497 6ebc91e5SFam Zheng  echo "CURL_LIBS=$curl_libs" >> $config_host_mak
5498 769ce76dSAlexander Graffi
5499 2e4d9fb1Saurel32if test "$brlapi" = "yes" ; then
5500 98ec69acSJuan Quintela  echo "CONFIG_BRLAPI=y" >> $config_host_mak
5501 2e4d9fb1Saurel32fi
5502 fb599c9aSbalrogif test "$bluez" = "yes" ; then
5503 98ec69acSJuan Quintela  echo "CONFIG_BLUEZ=y" >> $config_host_mak
5504 ef7635ecSJuan Quintela  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
5505 fb599c9aSbalrogfi
5506 d46f7c9eSDr. David Alan Gilbertif test "$glib_subprocess" = "yes" ; then
5507 9d41401bSMichael S. Tsirkin  echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
5508 9d41401bSMichael S. Tsirkinfi
5509 a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then
5510 a4ccabcfSAnthony Liguori  echo "CONFIG_GTK=y" >> $config_host_mak
5511 a3f4d63dSCole Robinson  echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
5512 a4ccabcfSAnthony Liguori  echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
5513 014cb152SGerd Hoffmann  echo "GTK_LIBS=$gtk_libs" >> $config_host_mak
5514 925a0400SGerd Hoffmann  if test "$gtk_gl" = "yes" ; then
5515 925a0400SGerd Hoffmann    echo "CONFIG_GTK_GL=y" >> $config_host_mak
5516 925a0400SGerd Hoffmann  fi
5517 bbbf9bfbSStefan Weilfi
5518 a1c5e949SDaniel P. Berrangeecho "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak
5519 ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then
5520 ddbb0d09SDaniel P. Berrange  echo "CONFIG_GNUTLS=y" >> $config_host_mak
5521 ddbb0d09SDaniel P. Berrangefi
5522 b917da4cSDaniel P. Berrangeif test "$gnutls_rnd" = "yes" ; then
5523 b917da4cSDaniel P. Berrange  echo "CONFIG_GNUTLS_RND=y" >> $config_host_mak
5524 b917da4cSDaniel P. Berrangefi
5525 91bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then
5526 91bfcdb0SDaniel P. Berrange  echo "CONFIG_GCRYPT=y" >> $config_host_mak
5527 1f923c70SLongpeng(Mike)  if test "$gcrypt_hmac" = "yes" ; then
5528 1f923c70SLongpeng(Mike)    echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak
5529 1f923c70SLongpeng(Mike)  fi
5530 37788f25SDaniel P. Berrange  if test "$gcrypt_kdf" = "yes" ; then
5531 37788f25SDaniel P. Berrange    echo "CONFIG_GCRYPT_KDF=y" >> $config_host_mak
5532 37788f25SDaniel P. Berrange  fi
5533 62893b67SDaniel P. Berrangefi
5534 91bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then
5535 91bfcdb0SDaniel P. Berrange  echo "CONFIG_NETTLE=y" >> $config_host_mak
5536 becaeb72SRadim Krčmář  echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
5537 fff2f982SDaniel P. Berrange  if test "$nettle_kdf" = "yes" ; then
5538 fff2f982SDaniel P. Berrange    echo "CONFIG_NETTLE_KDF=y" >> $config_host_mak
5539 fff2f982SDaniel P. Berrange  fi
5540 ed754746SDaniel P. Berrangefi
5541 9a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then
5542 9a2fd434SDaniel P. Berrange  echo "CONFIG_TASN1=y" >> $config_host_mak
5543 9a2fd434SDaniel P. Berrangefi
5544 559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then
5545 559607eaSDaniel P. Berrange    echo "HAVE_IFADDRS_H=y" >> $config_host_mak
5546 559607eaSDaniel P. Berrangefi
5547 6b39b063SEric Blakeif test "$have_broken_size_max" = "yes" ; then
5548 6b39b063SEric Blake    echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak
5549 6b39b063SEric Blakefi
5550 277abf15SJan Vesely
5551 277abf15SJan Vesely# Work around a system header bug with some kernel/XFS header
5552 277abf15SJan Vesely# versions where they both try to define 'struct fsxattr':
5553 277abf15SJan Vesely# xfs headers will not try to redefine structs from linux headers
5554 277abf15SJan Vesely# if this macro is set.
5555 277abf15SJan Veselyif test "$have_fsxattr" = "yes" ; then
5556 277abf15SJan Vesely    echo "HAVE_FSXATTR=y" >> $config_host_mak
5557 277abf15SJan Veselyfi
5558 bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then
5559 bbbf9bfbSStefan Weil  echo "CONFIG_VTE=y" >> $config_host_mak
5560 a4ccabcfSAnthony Liguori  echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
5561 a4ccabcfSAnthony Liguorifi
5562 9d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then
5563 9d9e1521SGerd Hoffmann  echo "CONFIG_VIRGL=y" >> $config_host_mak
5564 9d9e1521SGerd Hoffmann  echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak
5565 9d9e1521SGerd Hoffmann  echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak
5566 9d9e1521SGerd Hoffmannfi
5567 e37630caSaliguoriif test "$xen" = "yes" ; then
5568 6dbd588aSJan Kiszka  echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
5569 d5b93ddfSAnthony PERARD  echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
5570 64a7ad6fSIan Campbell  if test "$xen_pv_domain_build" = "yes" ; then
5571 64a7ad6fSIan Campbell    echo "CONFIG_XEN_PV_DOMAIN_BUILD=y" >> $config_host_mak
5572 64a7ad6fSIan Campbell  fi
5573 e37630caSaliguorifi
5574 5c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then
5575 5c6c3a6cSChristoph Hellwig  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
5576 5c6c3a6cSChristoph Hellwigfi
5577 758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then
5578 758e8e38SVenkateswararao Jujjuri (JV)  echo "CONFIG_ATTR=y" >> $config_host_mak
5579 758e8e38SVenkateswararao Jujjuri (JV)fi
5580 4f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then
5581 4f26f2b6SAvi Kivity  echo "CONFIG_LIBATTR=y" >> $config_host_mak
5582 4f26f2b6SAvi Kivityfi
5583 983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then
5584 758e8e38SVenkateswararao Jujjuri (JV)  echo "CONFIG_VIRTFS=y" >> $config_host_mak
5585 758e8e38SVenkateswararao Jujjuri (JV)fi
5586 5e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then
5587 5e9be92dSNicholas Bellinger  echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
5588 5e9be92dSNicholas Bellingerfi
5589 03ce5744SNikolay Nikolaevif test "$vhost_net" = "yes" ; then
5590 03ce5744SNikolay Nikolaev  echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
5591 03ce5744SNikolay Nikolaevfi
5592 fc0b9b0eSStefan Hajnocziif test "$vhost_vsock" = "yes" ; then
5593 fc0b9b0eSStefan Hajnoczi  echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak
5594 fc0b9b0eSStefan Hajnoczifi
5595 77755340Sthsif test "$blobs" = "yes" ; then
5596 98ec69acSJuan Quintela  echo "INSTALL_BLOBS=yes" >> $config_host_mak
5597 77755340Sthsfi
5598 bf9298b9Saliguoriif test "$iovec" = "yes" ; then
5599 2358a494SJuan Quintela  echo "CONFIG_IOVEC=y" >> $config_host_mak
5600 bf9298b9Saliguorifi
5601 ceb42de8Saliguoriif test "$preadv" = "yes" ; then
5602 2358a494SJuan Quintela  echo "CONFIG_PREADV=y" >> $config_host_mak
5603 ceb42de8Saliguorifi
5604 f652e6afSaurel32if test "$fdt" = "yes" ; then
5605 3f0855b1SJuan Quintela  echo "CONFIG_FDT=y" >> $config_host_mak
5606 f652e6afSaurel32fi
5607 dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then
5608 dcc38d1cSMarcelo Tosatti  echo "CONFIG_SIGNALFD=y" >> $config_host_mak
5609 dcc38d1cSMarcelo Tosattifi
5610 9195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then
5611 9195b2c2SStefan Weil  echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
5612 9195b2c2SStefan Weilfi
5613 5f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then
5614 5f6b9e8fSBlue Swirl  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
5615 5f6b9e8fSBlue Swirlfi
5616 e78815a5SAndreas Färberif test "$madvise" = "yes" ; then
5617 e78815a5SAndreas Färber  echo "CONFIG_MADVISE=y" >> $config_host_mak
5618 e78815a5SAndreas Färberfi
5619 e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then
5620 e78815a5SAndreas Färber  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
5621 e78815a5SAndreas Färberfi
5622 97a847bcSbellard
5623 cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then
5624 cd4ec0b4SGerd Hoffmann  echo "CONFIG_SPICE=y" >> $config_host_mak
5625 cd4ec0b4SGerd Hoffmannfi
5626 cd4ec0b4SGerd Hoffmann
5627 7b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then
5628 7b02f544SMarc-André Lureau  echo "CONFIG_SMARTCARD=y" >> $config_host_mak
5629 111a38b0SRobert Relyeafi
5630 111a38b0SRobert Relyea
5631 2b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then
5632 2b2325ffSGerd Hoffmann  echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
5633 2b2325ffSGerd Hoffmannfi
5634 2b2325ffSGerd Hoffmann
5635 69354a83SHans de Goedeif test "$usb_redir" = "yes" ; then
5636 69354a83SHans de Goede  echo "CONFIG_USB_REDIR=y" >> $config_host_mak
5637 69354a83SHans de Goedefi
5638 69354a83SHans de Goede
5639 da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then
5640 da076ffeSGerd Hoffmann  echo "CONFIG_OPENGL=y" >> $config_host_mak
5641 da076ffeSGerd Hoffmann  echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
5642 014cb152SGerd Hoffmann  if test "$opengl_dmabuf" = "yes" ; then
5643 014cb152SGerd Hoffmann    echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak
5644 014cb152SGerd Hoffmann  fi
5645 20ff075bSMichael Wallefi
5646 20ff075bSMichael Walle
5647 99f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then
5648 99f2dbd3SLiang Li  echo "CONFIG_AVX2_OPT=y" >> $config_host_mak
5649 99f2dbd3SLiang Lifi
5650 99f2dbd3SLiang Li
5651 607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then
5652 607dacd0Sqiaonuohan  echo "CONFIG_LZO=y" >> $config_host_mak
5653 607dacd0Sqiaonuohanfi
5654 607dacd0Sqiaonuohan
5655 607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then
5656 607dacd0Sqiaonuohan  echo "CONFIG_SNAPPY=y" >> $config_host_mak
5657 607dacd0Sqiaonuohanfi
5658 607dacd0Sqiaonuohan
5659 6b383c08SPeter Wuif test "$bzip2" = "yes" ; then
5660 6b383c08SPeter Wu  echo "CONFIG_BZIP2=y" >> $config_host_mak
5661 6b383c08SPeter Wu  echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
5662 6b383c08SPeter Wufi
5663 6b383c08SPeter Wu
5664 c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then
5665 d3399d7cSFam Zheng  echo "CONFIG_LIBISCSI=m" >> $config_host_mak
5666 6ebc91e5SFam Zheng  echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
5667 6ebc91e5SFam Zheng  echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
5668 c589b249SRonnie Sahlbergfi
5669 c589b249SRonnie Sahlberg
5670 6542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then
5671 4be4879fSColin Lord  echo "CONFIG_LIBNFS=m" >> $config_host_mak
5672 4be4879fSColin Lord  echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak
5673 6542aa9cSPeter Lievenfi
5674 6542aa9cSPeter Lieven
5675 f794573eSEduardo Otuboif test "$seccomp" = "yes"; then
5676 f794573eSEduardo Otubo  echo "CONFIG_SECCOMP=y" >> $config_host_mak
5677 f794573eSEduardo Otubofi
5678 f794573eSEduardo Otubo
5679 83fb7adfSbellard# XXX: suppress that
5680 7d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
5681 2358a494SJuan Quintela  echo "CONFIG_BSD=y" >> $config_host_mak
5682 7d3505c5Sbellardfi
5683 7d3505c5Sbellard
5684 4d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then
5685 4d9310f4SDaniel P. Berrange  echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak
5686 4d9310f4SDaniel P. Berrangefi
5687 3556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then
5688 3556c233SPaolo Bonzini  echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
5689 3556c233SPaolo Bonzinifi
5690 f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then
5691 d3399d7cSFam Zheng  echo "CONFIG_RBD=m" >> $config_host_mak
5692 6ebc91e5SFam Zheng  echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
5693 6ebc91e5SFam Zheng  echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
5694 f27aaf4bSChristian Brunnerfi
5695 20ff6c80SAnthony Liguori
5696 7c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
5697 70c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then
5698 70c60c08SStefan Hajnoczi  echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
5699 70c60c08SStefan Hajnoczielse
5700 70c60c08SStefan Hajnoczi  echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
5701 70c60c08SStefan Hajnoczifi
5702 d0e2fce5SAneesh Kumar K.V
5703 7d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes" ; then
5704 7d992e4dSPeter Lieven  echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak
5705 7d992e4dSPeter Lievenfi
5706 7d992e4dSPeter Lieven
5707 d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then
5708 d2042378SAneesh Kumar K.V  echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5709 d2042378SAneesh Kumar K.Vfi
5710 d2042378SAneesh Kumar K.V
5711 e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then
5712 e06a765eSHarsh Prateek Bora  echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5713 e06a765eSHarsh Prateek Borafi
5714 e06a765eSHarsh Prateek Bora
5715 cc6e3ca9SGerd Hoffmannif test "$pragma_diagnostic_available" = "yes" ; then
5716 cc6e3ca9SGerd Hoffmann  echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5717 06d71fa1SPeter Maydellfi
5718 06d71fa1SPeter Maydell
5719 3f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then
5720 3f4349dcSKevin Wolf  echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5721 3f4349dcSKevin Wolffi
5722 3f4349dcSKevin Wolf
5723 8ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then
5724 8ab1bf12SLuiz Capitulino  echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5725 8ab1bf12SLuiz Capitulinofi
5726 8ab1bf12SLuiz Capitulino
5727 76a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then
5728 76a347e1SRichard Henderson  echo "CONFIG_CPUID_H=y" >> $config_host_mak
5729 76a347e1SRichard Hendersonfi
5730 76a347e1SRichard Henderson
5731 f540166bSRichard Hendersonif test "$int128" = "yes" ; then
5732 f540166bSRichard Henderson  echo "CONFIG_INT128=y" >> $config_host_mak
5733 f540166bSRichard Hendersonfi
5734 f540166bSRichard Henderson
5735 7ebee43eSRichard Hendersonif test "$atomic128" = "yes" ; then
5736 7ebee43eSRichard Henderson  echo "CONFIG_ATOMIC128=y" >> $config_host_mak
5737 7ebee43eSRichard Hendersonfi
5738 7ebee43eSRichard Henderson
5739 df79b996SRichard Hendersonif test "$atomic64" = "yes" ; then
5740 df79b996SRichard Henderson  echo "CONFIG_ATOMIC64=y" >> $config_host_mak
5741 df79b996SRichard Hendersonfi
5742 df79b996SRichard Henderson
5743 1e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then
5744 1e6e9acaSRichard Henderson  echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5745 1e6e9acaSRichard Hendersonfi
5746 1e6e9acaSRichard Henderson
5747 eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then
5748 d3399d7cSFam Zheng  echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5749 6ebc91e5SFam Zheng  echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5750 6ebc91e5SFam Zheng  echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5751 eb100396SBharata B Raofi
5752 eb100396SBharata B Rao
5753 d85fa9ebSJeff Codyif test "$glusterfs_xlator_opt" = "yes" ; then
5754 d85fa9ebSJeff Cody  echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak
5755 d85fa9ebSJeff Codyfi
5756 d85fa9ebSJeff Cody
5757 0c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then
5758 0c14fb47SBharata B Rao  echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5759 0c14fb47SBharata B Raofi
5760 0c14fb47SBharata B Rao
5761 df3a429aSNiels de Vosif test "$glusterfs_fallocate" = "yes" ; then
5762 df3a429aSNiels de Vos  echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak
5763 df3a429aSNiels de Vosfi
5764 df3a429aSNiels de Vos
5765 7c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then
5766 7c815372SBharata B Rao  echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5767 7c815372SBharata B Raofi
5768 7c815372SBharata B Rao
5769 0a12ec87SRichard W.M. Jonesif test "$libssh2" = "yes" ; then
5770 d3399d7cSFam Zheng  echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5771 6ebc91e5SFam Zheng  echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5772 6ebc91e5SFam Zheng  echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5773 0a12ec87SRichard W.M. Jonesfi
5774 0a12ec87SRichard W.M. Jones
5775 ed1701c6SDr. David Alan Gilbertif test "$live_block_migration" = "yes" ; then
5776 ed1701c6SDr. David Alan Gilbert  echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak
5777 ed1701c6SDr. David Alan Gilbertfi
5778 ed1701c6SDr. David Alan Gilbert
5779 68063649Sblueswir1# USB host support
5780 b5613fdcSGerd Hoffmannif test "$libusb" = "yes"; then
5781 2b2325ffSGerd Hoffmann  echo "HOST_USB=libusb legacy" >> $config_host_mak
5782 b5613fdcSGerd Hoffmannelse
5783 98ec69acSJuan Quintela  echo "HOST_USB=stub" >> $config_host_mak
5784 b5613fdcSGerd Hoffmannfi
5785 68063649Sblueswir1
5786 3b8acc11SPaolo Bonzini# TPM passthrough support?
5787 3b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then
5788 3b8acc11SPaolo Bonzini  echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5789 3b8acc11SPaolo Bonzini  if test "$tpm_passthrough" = "yes"; then
5790 3b8acc11SPaolo Bonzini    echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5791 3b8acc11SPaolo Bonzini  fi
5792 3b8acc11SPaolo Bonzinifi
5793 3b8acc11SPaolo Bonzini
5794 5b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5795 5b808275SLluís Vilanovaif have_backend "nop"; then
5796 6d8a764eSLluís  echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5797 22890ab5SPrerna Saxenafi
5798 5b808275SLluís Vilanovaif have_backend "simple"; then
5799 6d8a764eSLluís  echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5800 6d8a764eSLluís  # Set the appropriate trace file.
5801 953ffe0fSAndreas Färber  trace_file="\"$trace_file-\" FMT_pid"
5802 9410b56cSPrerna Saxenafi
5803 ed7f5f1dSPaolo Bonziniif have_backend "log"; then
5804 ed7f5f1dSPaolo Bonzini  echo "CONFIG_TRACE_LOG=y" >> $config_host_mak
5805 6d8a764eSLluísfi
5806 5b808275SLluís Vilanovaif have_backend "ust"; then
5807 6d8a764eSLluís  echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5808 6d8a764eSLluísfi
5809 5b808275SLluís Vilanovaif have_backend "dtrace"; then
5810 6d8a764eSLluís  echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5811 6d8a764eSLluís  if test "$trace_backend_stap" = "yes" ; then
5812 6d8a764eSLluís    echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5813 6d8a764eSLluís  fi
5814 c276b17dSDaniel P. Berrangefi
5815 5b808275SLluís Vilanovaif have_backend "ftrace"; then
5816 781e9545SEiichi Tsukata  if test "$linux" = "yes" ; then
5817 781e9545SEiichi Tsukata    echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5818 781e9545SEiichi Tsukata  else
5819 21684af0SStewart Smith    feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5820 781e9545SEiichi Tsukata  fi
5821 781e9545SEiichi Tsukatafi
5822 0a852417SPaul Durrantif have_backend "syslog"; then
5823 0a852417SPaul Durrant  if test "$posix_syslog" = "yes" ; then
5824 0a852417SPaul Durrant    echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak
5825 0a852417SPaul Durrant  else
5826 0a852417SPaul Durrant    feature_not_found "syslog(trace backend)" "syslog not available"
5827 0a852417SPaul Durrant  fi
5828 0a852417SPaul Durrantfi
5829 9410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5830 9410b56cSPrerna Saxena
5831 2da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then
5832 2da776dbSMichael R. Hines  echo "CONFIG_RDMA=y" >> $config_host_mak
5833 2da776dbSMichael R. Hinesfi
5834 2da776dbSMichael R. Hines
5835 575b22b1SLaurent Vivierif test "$have_rtnetlink" = "yes" ; then
5836 575b22b1SLaurent Vivier  echo "CONFIG_RTNETLINK=y" >> $config_host_mak
5837 575b22b1SLaurent Vivierfi
5838 575b22b1SLaurent Vivier
5839 a6b1d4c0SChanglong Xieif test "$replication" = "yes" ; then
5840 a6b1d4c0SChanglong Xie  echo "CONFIG_REPLICATION=y" >> $config_host_mak
5841 a6b1d4c0SChanglong Xiefi
5842 a6b1d4c0SChanglong Xie
5843 6a02c806SStefan Hajnocziif test "$have_af_vsock" = "yes" ; then
5844 6a02c806SStefan Hajnoczi  echo "CONFIG_AF_VSOCK=y" >> $config_host_mak
5845 6a02c806SStefan Hajnoczifi
5846 6a02c806SStefan Hajnoczi
5847 4d04351fSChristopher Covingtonif test "$have_sysmacros" = "yes" ; then
5848 4d04351fSChristopher Covington  echo "CONFIG_SYSMACROS=y" >> $config_host_mak
5849 4d04351fSChristopher Covingtonfi
5850 4d04351fSChristopher Covington
5851 49e00a18SAndreas Grapentinif test "$have_static_assert" = "yes" ; then
5852 49e00a18SAndreas Grapentin  echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak
5853 49e00a18SAndreas Grapentinfi
5854 49e00a18SAndreas Grapentin
5855 5c312079SDr. David Alan Gilbert# Hold two types of flag:
5856 5c312079SDr. David Alan Gilbert#   CONFIG_THREAD_SETNAME_BYTHREAD  - we've got a way of setting the name on
5857 5c312079SDr. David Alan Gilbert#                                     a thread we have a handle to
5858 5c312079SDr. David Alan Gilbert#   CONFIG_PTHREAD_SETNAME_NP       - A way of doing it on a particular
5859 5c312079SDr. David Alan Gilbert#                                     platform
5860 5c312079SDr. David Alan Gilbertif test "$pthread_setname_np" = "yes" ; then
5861 5c312079SDr. David Alan Gilbert  echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5862 5c312079SDr. David Alan Gilbert  echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5863 5c312079SDr. David Alan Gilbertfi
5864 5c312079SDr. David Alan Gilbert
5865 da92c3ffSAshish Mittalif test "$vxhs" = "yes" ; then
5866 da92c3ffSAshish Mittal  echo "CONFIG_VXHS=y" >> $config_host_mak
5867 da92c3ffSAshish Mittal  echo "VXHS_LIBS=$vxhs_libs" >> $config_host_mak
5868 da92c3ffSAshish Mittalfi
5869 da92c3ffSAshish Mittal
5870 5b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then
5871 5b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5872 5b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then
5873 5b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5874 5b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then
5875 5b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5876 c72b26ecSRichard Hendersonelif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5877 5b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5878 40d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then
5879 40d964b5SRichard Henderson  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5880 5b5e3037SPaolo Bonzinielse
5881 5b5e3037SPaolo Bonzini  QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5882 5b5e3037SPaolo Bonzinifi
5883 5b5e3037SPaolo BonziniQEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5884 5b5e3037SPaolo Bonzini
5885 98ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak
5886 98ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak
5887 804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak
5888 804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak
5889 1901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5890 1901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5891 1901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5892 21655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5893 c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak
5894 804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak
5895 a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then
5896 a31a8642SMichael S. Tsirkin  echo "IASL=$iasl" >> $config_host_mak
5897 a31a8642SMichael S. Tsirkinfi
5898 2b2e59e6SPaolo Bonziniecho "CC_I386=$cc_i386" >> $config_host_mak
5899 804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak
5900 83f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak
5901 3c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak
5902 804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak
5903 45d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak
5904 cdbd727cSRichard Hendersonecho "AS=$as" >> $config_host_mak
5905 5f6f0e27SRichard Hendersonecho "CCAS=$ccas" >> $config_host_mak
5906 3dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak
5907 804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak
5908 804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak
5909 4852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak
5910 9fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak
5911 e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak
5912 46eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5913 a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5914 f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5915 e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then
5916 e39f0062SPaolo Bonzini  echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
5917 80fd48dfSChristian Borntraeger  echo "CPP          := REAL_CC=\"\$(CPP)\" cgcc"      >> $config_host_mak
5918 2944d742SGerd Hoffmann  echo "CXX          := REAL_CC=\"\$(CXX)\" cgcc"      >> $config_host_mak
5919 e39f0062SPaolo Bonzini  echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
5920 e39f0062SPaolo Bonzini  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5921 e39f0062SPaolo Bonzinifi
5922 42da6041SGerd Hoffmannif test "$cross_prefix" != ""; then
5923 42da6041SGerd Hoffmann  echo "AUTOCONF_HOST := --host=${cross_prefix%-}"     >> $config_host_mak
5924 42da6041SGerd Hoffmannelse
5925 42da6041SGerd Hoffmann  echo "AUTOCONF_HOST := "                             >> $config_host_mak
5926 42da6041SGerd Hoffmannfi
5927 e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak
5928 46eef33bSBradecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5929 6969ec6cSJames Clarkeecho "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
5930 e57218b6SPeter Maydellecho "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
5931 73da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak
5932 3e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5933 409437e1SDaniel P. Berrangeecho "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak
5934 804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak
5935 17969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak
5936 17969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5937 957f1f99SMichael Rothecho "LIBS_QGA+=$libs_qga" >> $config_host_mak
5938 90246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak
5939 90246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak
5940 94dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak
5941 cbdd1999SPaolo Bonziniecho "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5942 1d728c39SBlue Swirlif test "$gcov" = "yes" ; then
5943 1d728c39SBlue Swirl  echo "CONFIG_GCOV=y" >> $config_host_mak
5944 1d728c39SBlue Swirl  echo "GCOV=$gcov_tool" >> $config_host_mak
5945 1d728c39SBlue Swirlfi
5946 804edf29SJuan Quintela
5947 6efd7517SPeter Maydell# use included Linux headers
5948 6efd7517SPeter Maydellif test "$linux" = "yes" ; then
5949 a307beb6SAndreas Färber  mkdir -p linux-headers
5950 6efd7517SPeter Maydell  case "$cpu" in
5951 c72b26ecSRichard Henderson  i386|x86_64|x32)
5952 08312a63SPeter Maydell    linux_arch=x86
5953 6efd7517SPeter Maydell    ;;
5954 6efd7517SPeter Maydell  ppcemb|ppc|ppc64)
5955 08312a63SPeter Maydell    linux_arch=powerpc
5956 6efd7517SPeter Maydell    ;;
5957 6efd7517SPeter Maydell  s390x)
5958 08312a63SPeter Maydell    linux_arch=s390
5959 08312a63SPeter Maydell    ;;
5960 1f080313SClaudio Fontana  aarch64)
5961 1f080313SClaudio Fontana    linux_arch=arm64
5962 1f080313SClaudio Fontana    ;;
5963 222e7d11SSanjay Lal  mips64)
5964 222e7d11SSanjay Lal    linux_arch=mips
5965 222e7d11SSanjay Lal    ;;
5966 08312a63SPeter Maydell  *)
5967 08312a63SPeter Maydell    # For most CPUs the kernel architecture name and QEMU CPU name match.
5968 08312a63SPeter Maydell    linux_arch="$cpu"
5969 6efd7517SPeter Maydell    ;;
5970 6efd7517SPeter Maydell  esac
5971 08312a63SPeter Maydell    # For non-KVM architectures we will not have asm headers
5972 08312a63SPeter Maydell    if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5973 08312a63SPeter Maydell      symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5974 08312a63SPeter Maydell    fi
5975 6efd7517SPeter Maydellfi
5976 6efd7517SPeter Maydell
5977 97a847bcSbellardfor target in $target_list; do
5978 97a847bcSbellardtarget_dir="$target"
5979 25be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak
5980 89138857SStefan Weiltarget_name=$(echo $target | cut -d '-' -f 1)
5981 97a847bcSbellardtarget_bigendian="no"
5982 1f3d3c8fSJuan Quintela
5983 c1799a84SPaolo Bonzinicase "$target_name" in
5984 4a09d0bbSRichard Henderson  armeb|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5985 ea2d6a39SJuan Quintela  target_bigendian=yes
5986 ea2d6a39SJuan Quintela  ;;
5987 ea2d6a39SJuan Quintelaesac
5988 97a847bcSbellardtarget_softmmu="no"
5989 997344f3Sbellardtarget_user_only="no"
5990 831b7825Sthstarget_linux_user="no"
5991 84778508Sblueswir1target_bsd_user="no"
5992 9e407a85Spbrookcase "$target" in
5993 c1799a84SPaolo Bonzini  ${target_name}-softmmu)
5994 9e407a85Spbrook    target_softmmu="yes"
5995 9e407a85Spbrook    ;;
5996 c1799a84SPaolo Bonzini  ${target_name}-linux-user)
5997 9c7a4202SBlue Swirl    if test "$linux" != "yes" ; then
5998 76ad07a4SPeter Maydell      error_exit "Target '$target' is only available on a Linux host"
5999 9c7a4202SBlue Swirl    fi
6000 9e407a85Spbrook    target_user_only="yes"
6001 9e407a85Spbrook    target_linux_user="yes"
6002 9e407a85Spbrook    ;;
6003 c1799a84SPaolo Bonzini  ${target_name}-bsd-user)
6004 9cf55765SBlue Swirl    if test "$bsd" != "yes" ; then
6005 76ad07a4SPeter Maydell      error_exit "Target '$target' is only available on a BSD host"
6006 9c7a4202SBlue Swirl    fi
6007 84778508Sblueswir1    target_user_only="yes"
6008 84778508Sblueswir1    target_bsd_user="yes"
6009 84778508Sblueswir1    ;;
6010 9e407a85Spbrook  *)
6011 76ad07a4SPeter Maydell    error_exit "Target '$target' not recognised"
6012 9e407a85Spbrook    exit 1
6013 9e407a85Spbrook    ;;
6014 9e407a85Spbrookesac
6015 831b7825Sths
6016 97a847bcSbellardmkdir -p $target_dir
6017 25be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak
6018 97a847bcSbellard
6019 e5fe0c52Spbrookbflt="no"
6020 ca759f9eSAlex Bennéemttcg="no"
6021 89138857SStefan Weilinterp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
6022 56aebc89Spbrookgdb_xml_files=""
6023 7ba1e619Saliguori
6024 c1799a84SPaolo BonziniTARGET_ARCH="$target_name"
6025 6acff7daSJuan QuintelaTARGET_BASE_ARCH=""
6026 e6e91b9cSJuan QuintelaTARGET_ABI_DIR=""
6027 e73aae67SJuan Quintela
6028 c1799a84SPaolo Bonzinicase "$target_name" in
6029 2408a527Saurel32  i386)
6030 00fcd100SAbdallah Bouassida    gdb_xml_files="i386-32bit-core.xml"
6031 2408a527Saurel32  ;;
6032 2408a527Saurel32  x86_64)
6033 6acff7daSJuan Quintela    TARGET_BASE_ARCH=i386
6034 00fcd100SAbdallah Bouassida    gdb_xml_files="i386-64bit-core.xml"
6035 2408a527Saurel32  ;;
6036 2408a527Saurel32  alpha)
6037 5ee4f3c2SRichard Henderson    mttcg="yes"
6038 2408a527Saurel32  ;;
6039 2408a527Saurel32  arm|armeb)
6040 b498c8a0SJuan Quintela    TARGET_ARCH=arm
6041 e5fe0c52Spbrook    bflt="yes"
6042 ca759f9eSAlex Bennée    mttcg="yes"
6043 56aebc89Spbrook    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6044 2408a527Saurel32  ;;
6045 6a49fa95SAlexander Graf  aarch64)
6046 6a49fa95SAlexander Graf    TARGET_BASE_ARCH=arm
6047 6a49fa95SAlexander Graf    bflt="yes"
6048 ca759f9eSAlex Bennée    mttcg="yes"
6049 8f95ce2eSPeter Maydell    gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
6050 6a49fa95SAlexander Graf  ;;
6051 2408a527Saurel32  cris)
6052 2408a527Saurel32  ;;
6053 61766fe9SRichard Henderson  hppa)
6054 61766fe9SRichard Henderson  ;;
6055 613a22c9SMichael Walle  lm32)
6056 613a22c9SMichael Walle  ;;
6057 2408a527Saurel32  m68k)
6058 0938cda5Saurel32    bflt="yes"
6059 56aebc89Spbrook    gdb_xml_files="cf-core.xml cf-fp.xml"
6060 2408a527Saurel32  ;;
6061 877fdc12SEdgar E. Iglesias  microblaze|microblazeel)
6062 877fdc12SEdgar E. Iglesias    TARGET_ARCH=microblaze
6063 72b675caSEdgar E. Iglesias    bflt="yes"
6064 72b675caSEdgar E. Iglesias  ;;
6065 2408a527Saurel32  mips|mipsel)
6066 b498c8a0SJuan Quintela    TARGET_ARCH=mips
6067 25be210fSJuan Quintela    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
6068 2408a527Saurel32  ;;
6069 2408a527Saurel32  mipsn32|mipsn32el)
6070 597e2cecSRichard Henderson    TARGET_ARCH=mips64
6071 6acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
6072 25be210fSJuan Quintela    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
6073 597e2cecSRichard Henderson    echo "TARGET_ABI32=y" >> $config_target_mak
6074 2408a527Saurel32  ;;
6075 2408a527Saurel32  mips64|mips64el)
6076 b498c8a0SJuan Quintela    TARGET_ARCH=mips64
6077 6acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
6078 25be210fSJuan Quintela    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
6079 2408a527Saurel32  ;;
6080 d15a9c23SAnthony Green  moxie)
6081 d15a9c23SAnthony Green  ;;
6082 e671711cSMarek Vasut  nios2)
6083 e671711cSMarek Vasut  ;;
6084 4a09d0bbSRichard Henderson  or1k)
6085 e67db06eSJia Liu    TARGET_ARCH=openrisc
6086 e67db06eSJia Liu    TARGET_BASE_ARCH=openrisc
6087 e67db06eSJia Liu  ;;
6088 2408a527Saurel32  ppc)
6089 c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6090 2408a527Saurel32  ;;
6091 2408a527Saurel32  ppcemb)
6092 6acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
6093 e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
6094 c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
6095 2408a527Saurel32  ;;
6096 2408a527Saurel32  ppc64)
6097 6acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
6098 e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
6099 f0b0685dSNikunj A Dadhania    mttcg=yes
6100 1438eff3SAnton Blanchard    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6101 2408a527Saurel32  ;;
6102 9c35126cSDoug Kwan  ppc64le)
6103 9c35126cSDoug Kwan    TARGET_ARCH=ppc64
6104 9c35126cSDoug Kwan    TARGET_BASE_ARCH=ppc
6105 9c35126cSDoug Kwan    TARGET_ABI_DIR=ppc
6106 f0b0685dSNikunj A Dadhania    mttcg=yes
6107 1438eff3SAnton Blanchard    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6108 9c35126cSDoug Kwan  ;;
6109 2408a527Saurel32  ppc64abi32)
6110 b498c8a0SJuan Quintela    TARGET_ARCH=ppc64
6111 6acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
6112 e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
6113 25be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
6114 1438eff3SAnton Blanchard    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml"
6115 2408a527Saurel32  ;;
6116 2408a527Saurel32  sh4|sh4eb)
6117 b498c8a0SJuan Quintela    TARGET_ARCH=sh4
6118 4dbed897Spbrook    bflt="yes"
6119 2408a527Saurel32  ;;
6120 2408a527Saurel32  sparc)
6121 2408a527Saurel32  ;;
6122 2408a527Saurel32  sparc64)
6123 6acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
6124 2408a527Saurel32  ;;
6125 2408a527Saurel32  sparc32plus)
6126 b498c8a0SJuan Quintela    TARGET_ARCH=sparc64
6127 6acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
6128 e6e91b9cSJuan Quintela    TARGET_ABI_DIR=sparc
6129 25be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
6130 2408a527Saurel32  ;;
6131 24e804ecSAlexander Graf  s390x)
6132 8a641ff6SDavid Hildenbrand    gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml"
6133 24e804ecSAlexander Graf  ;;
6134 444e06b1SChen Gang  tilegx)
6135 444e06b1SChen Gang  ;;
6136 5ecaa4edSPeter Crosthwaite  tricore)
6137 5ecaa4edSPeter Crosthwaite  ;;
6138 d2fbca94SGuan Xuetao  unicore32)
6139 d2fbca94SGuan Xuetao  ;;
6140 cfa550c6SMax Filippov  xtensa|xtensaeb)
6141 cfa550c6SMax Filippov    TARGET_ARCH=xtensa
6142 cfa550c6SMax Filippov  ;;
6143 2408a527Saurel32  *)
6144 76ad07a4SPeter Maydell    error_exit "Unsupported target CPU"
6145 2408a527Saurel32  ;;
6146 2408a527Saurel32esac
6147 5e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
6148 5e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then
6149 5e8861a0SPaolo Bonzini  TARGET_BASE_ARCH=$TARGET_ARCH
6150 5e8861a0SPaolo Bonzinifi
6151 5e8861a0SPaolo Bonzini
6152 5e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile"
6153 5e8861a0SPaolo Bonzini
6154 99afc91dSDaniel P. Berrangeupper() {
6155 99afc91dSDaniel P. Berrange    echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
6156 99afc91dSDaniel P. Berrange}
6157 99afc91dSDaniel P. Berrange
6158 89138857SStefan Weiltarget_arch_name="$(upper $TARGET_ARCH)"
6159 25be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak
6160 c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak
6161 25be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
6162 e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then
6163 e6e91b9cSJuan Quintela  TARGET_ABI_DIR=$TARGET_ARCH
6164 e6e91b9cSJuan Quintelafi
6165 25be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
6166 adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then
6167 adfc3e91SStacey Son    echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
6168 adfc3e91SStacey Sonfi
6169 c1799a84SPaolo Bonzinicase "$target_name" in
6170 1b0c87fcSJuan Quintela  i386|x86_64)
6171 1b0c87fcSJuan Quintela    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
6172 25be210fSJuan Quintela      echo "CONFIG_XEN=y" >> $config_target_mak
6173 eb6fda0fSAnthony PERARD      if test "$xen_pci_passthrough" = yes; then
6174 eb6fda0fSAnthony PERARD        echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
6175 eb6fda0fSAnthony PERARD      fi
6176 432d268cSJun Nakajima    fi
6177 59d21e53SAlexander Graf    ;;
6178 59d21e53SAlexander Graf  *)
6179 1b0c87fcSJuan Quintelaesac
6180 c1799a84SPaolo Bonzinicase "$target_name" in
6181 222e7d11SSanjay Lal  aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
6182 c59249f9SJuan Quintela    # Make sure the target and host cpus are compatible
6183 c59249f9SJuan Quintela    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
6184 c1799a84SPaolo Bonzini      \( "$target_name" = "$cpu" -o \
6185 c1799a84SPaolo Bonzini      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
6186 c1799a84SPaolo Bonzini      \( "$target_name" = "ppc64"  -a "$cpu" = "ppc" \) -o \
6187 c1799a84SPaolo Bonzini      \( "$target_name" = "ppc"    -a "$cpu" = "ppc64" \) -o \
6188 c1799a84SPaolo Bonzini      \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
6189 222e7d11SSanjay Lal      \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
6190 c1799a84SPaolo Bonzini      \( "$target_name" = "x86_64" -a "$cpu" = "i386"   \) -o \
6191 18b8263eSMichael Tokarev      \( "$target_name" = "i386"   -a "$cpu" = "x86_64" \) -o \
6192 18b8263eSMichael Tokarev      \( "$target_name" = "x86_64" -a "$cpu" = "x32"   \) -o \
6193 18b8263eSMichael Tokarev      \( "$target_name" = "i386"   -a "$cpu" = "x32" \) \) ; then
6194 25be210fSJuan Quintela      echo "CONFIG_KVM=y" >> $config_target_mak
6195 1ba16968SStefan Weil      if test "$vhost_net" = "yes" ; then
6196 d5970055SMichael S. Tsirkin        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
6197 421f4448SMarc-André Lureau        echo "CONFIG_VHOST_NET_TEST_$target_name=y" >> $config_host_mak
6198 d5970055SMichael S. Tsirkin      fi
6199 c59249f9SJuan Quintela    fi
6200 c59249f9SJuan Quintelaesac
6201 b0cb0a66SVincent Palatinif test "$hax" = "yes" ; then
6202 b0cb0a66SVincent Palatin  if test "$target_softmmu" = "yes" ; then
6203 b0cb0a66SVincent Palatin    case "$target_name" in
6204 b0cb0a66SVincent Palatin    i386|x86_64)
6205 b0cb0a66SVincent Palatin      echo "CONFIG_HAX=y" >> $config_target_mak
6206 b0cb0a66SVincent Palatin    ;;
6207 b0cb0a66SVincent Palatin    esac
6208 b0cb0a66SVincent Palatin  fi
6209 b0cb0a66SVincent Palatinfi
6210 de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
6211 25be210fSJuan Quintela  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
6212 97a847bcSbellardfi
6213 97a847bcSbellardif test "$target_softmmu" = "yes" ; then
6214 25be210fSJuan Quintela  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
6215 ca759f9eSAlex Bennée  if test "$mttcg" = "yes" ; then
6216 ca759f9eSAlex Bennée    echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak
6217 ca759f9eSAlex Bennée  fi
6218 de83cd02Sbellardfi
6219 997344f3Sbellardif test "$target_user_only" = "yes" ; then
6220 25be210fSJuan Quintela  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
6221 a2c80be9SStefan Weil  echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
6222 997344f3Sbellardfi
6223 831b7825Sthsif test "$target_linux_user" = "yes" ; then
6224 25be210fSJuan Quintela  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
6225 831b7825Sthsfi
6226 56aebc89Spbrooklist=""
6227 56aebc89Spbrookif test ! -z "$gdb_xml_files" ; then
6228 56aebc89Spbrook  for x in $gdb_xml_files; do
6229 56aebc89Spbrook    list="$list $source_path/gdb-xml/$x"
6230 56aebc89Spbrook  done
6231 25be210fSJuan Quintela  echo "TARGET_XML_FILES=$list" >> $config_target_mak
6232 3d0f1517SJuan Quintelafi
6233 de83cd02Sbellard
6234 e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
6235 25be210fSJuan Quintela  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
6236 e5fe0c52Spbrookfi
6237 84778508Sblueswir1if test "$target_bsd_user" = "yes" ; then
6238 25be210fSJuan Quintela  echo "CONFIG_BSD_USER=y" >> $config_target_mak
6239 84778508Sblueswir1fi
6240 5b0753e0Sbellard
6241 4afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets
6242 fa282484SJuan Quintela
6243 4afddb55SJuan Quintelacflags=""
6244 fa282484SJuan Quintelaldflags=""
6245 9b8e111fSJuan Quintela
6246 c765fcacSPeter Crosthwaitedisas_config() {
6247 c765fcacSPeter Crosthwaite  echo "CONFIG_${1}_DIS=y" >> $config_target_mak
6248 c765fcacSPeter Crosthwaite  echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak
6249 c765fcacSPeter Crosthwaite}
6250 c765fcacSPeter Crosthwaite
6251 64656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do
6252 64656024SJuan Quintela  case "$i" in
6253 64656024SJuan Quintela  alpha)
6254 c765fcacSPeter Crosthwaite    disas_config "ALPHA"
6255 64656024SJuan Quintela  ;;
6256 82295d8aSRichard Henderson  aarch64)
6257 82295d8aSRichard Henderson    if test -n "${cxx}"; then
6258 c765fcacSPeter Crosthwaite      disas_config "ARM_A64"
6259 82295d8aSRichard Henderson    fi
6260 82295d8aSRichard Henderson  ;;
6261 64656024SJuan Quintela  arm)
6262 c765fcacSPeter Crosthwaite    disas_config "ARM"
6263 999b53ecSClaudio Fontana    if test -n "${cxx}"; then
6264 c765fcacSPeter Crosthwaite      disas_config "ARM_A64"
6265 999b53ecSClaudio Fontana    fi
6266 64656024SJuan Quintela  ;;
6267 64656024SJuan Quintela  cris)
6268 c765fcacSPeter Crosthwaite    disas_config "CRIS"
6269 64656024SJuan Quintela  ;;
6270 429b31a2SRichard Henderson  hppa)
6271 429b31a2SRichard Henderson    disas_config "HPPA"
6272 429b31a2SRichard Henderson  ;;
6273 c72b26ecSRichard Henderson  i386|x86_64|x32)
6274 c765fcacSPeter Crosthwaite    disas_config "I386"
6275 64656024SJuan Quintela  ;;
6276 903ec55cSAurelien Jarno  ia64*)
6277 c765fcacSPeter Crosthwaite    disas_config "IA64"
6278 903ec55cSAurelien Jarno  ;;
6279 79368f49SMichael Walle  lm32)
6280 c765fcacSPeter Crosthwaite    disas_config "LM32"
6281 79368f49SMichael Walle  ;;
6282 64656024SJuan Quintela  m68k)
6283 c765fcacSPeter Crosthwaite    disas_config "M68K"
6284 64656024SJuan Quintela  ;;
6285 877fdc12SEdgar E. Iglesias  microblaze*)
6286 c765fcacSPeter Crosthwaite    disas_config "MICROBLAZE"
6287 64656024SJuan Quintela  ;;
6288 64656024SJuan Quintela  mips*)
6289 c765fcacSPeter Crosthwaite    disas_config "MIPS"
6290 64656024SJuan Quintela  ;;
6291 d15a9c23SAnthony Green  moxie*)
6292 c765fcacSPeter Crosthwaite    disas_config "MOXIE"
6293 d15a9c23SAnthony Green  ;;
6294 e671711cSMarek Vasut  nios2)
6295 e671711cSMarek Vasut    disas_config "NIOS2"
6296 e671711cSMarek Vasut  ;;
6297 4a09d0bbSRichard Henderson  or1k)
6298 c765fcacSPeter Crosthwaite    disas_config "OPENRISC"
6299 e67db06eSJia Liu  ;;
6300 64656024SJuan Quintela  ppc*)
6301 c765fcacSPeter Crosthwaite    disas_config "PPC"
6302 64656024SJuan Quintela  ;;
6303 24e804ecSAlexander Graf  s390*)
6304 c765fcacSPeter Crosthwaite    disas_config "S390"
6305 64656024SJuan Quintela  ;;
6306 64656024SJuan Quintela  sh4)
6307 c765fcacSPeter Crosthwaite    disas_config "SH4"
6308 64656024SJuan Quintela  ;;
6309 64656024SJuan Quintela  sparc*)
6310 c765fcacSPeter Crosthwaite    disas_config "SPARC"
6311 64656024SJuan Quintela  ;;
6312 cfa550c6SMax Filippov  xtensa*)
6313 c765fcacSPeter Crosthwaite    disas_config "XTENSA"
6314 cfa550c6SMax Filippov  ;;
6315 64656024SJuan Quintela  esac
6316 64656024SJuan Quinteladone
6317 9195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then
6318 c765fcacSPeter Crosthwaite  disas_config "TCI"
6319 9195b2c2SStefan Weilfi
6320 64656024SJuan Quintela
6321 6ee7126fSJuan Quintelacase "$ARCH" in
6322 6ee7126fSJuan Quintelaalpha)
6323 6ee7126fSJuan Quintela  # Ensure there's only a single GP
6324 6ee7126fSJuan Quintela  cflags="-msmall-data $cflags"
6325 6ee7126fSJuan Quintela;;
6326 6ee7126fSJuan Quintelaesac
6327 6ee7126fSJuan Quintela
6328 d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then
6329 25be210fSJuan Quintela  echo "TARGET_GPROF=yes" >> $config_target_mak
6330 d02c1db3SJuan Quintela  if test "$target_linux_user" = "yes" ; then
6331 d02c1db3SJuan Quintela    cflags="-p $cflags"
6332 d02c1db3SJuan Quintela    ldflags="-p $ldflags"
6333 d02c1db3SJuan Quintela  fi
6334 d02c1db3SJuan Quintela  if test "$target_softmmu" = "yes" ; then
6335 d02c1db3SJuan Quintela    ldflags="-p $ldflags"
6336 25be210fSJuan Quintela    echo "GPROF_CFLAGS=-p" >> $config_target_mak
6337 d02c1db3SJuan Quintela  fi
6338 d02c1db3SJuan Quintelafi
6339 d02c1db3SJuan Quintela
6340 9b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
6341 964c6fa1SRichard Henderson  ldflags="$ldflags $textseg_ldflags"
6342 fa282484SJuan Quintelafi
6343 fa282484SJuan Quintela
6344 25be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak
6345 25be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak
6346 fa282484SJuan Quintela
6347 97a847bcSbellarddone # for target in $targets
6348 7d13299dSbellard
6349 b776eca1SGerd Hoffmannif [ "$pixman" = "internal" ]; then
6350 b776eca1SGerd Hoffmann  echo "config-host.h: subdir-pixman" >> $config_host_mak
6351 b776eca1SGerd Hoffmannfi
6352 b776eca1SGerd Hoffmann
6353 a540f158SPeter Crosthwaiteif [ "$dtc_internal" = "yes" ]; then
6354 a540f158SPeter Crosthwaite  echo "config-host.h: subdir-dtc" >> $config_host_mak
6355 a540f158SPeter Crosthwaitefi
6356 a540f158SPeter Crosthwaite
6357 a99d57bbSWanlong Gaoif test "$numa" = "yes"; then
6358 a99d57bbSWanlong Gao  echo "CONFIG_NUMA=y" >> $config_host_mak
6359 a99d57bbSWanlong Gaofi
6360 a99d57bbSWanlong Gao
6361 fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then
6362 fd0e6053SJohn Snow  echo "export CCACHE_CPP2=y" >> $config_host_mak
6363 fd0e6053SJohn Snowfi
6364 fd0e6053SJohn Snow
6365 d1807a4fSPaolo Bonzini# build tree in object directory in case the source is not in the current directory
6366 f93296eaSWenchao XiaDIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
6367 56e8bdd4SMarc-André LureauDIRS="$DIRS docs fsdev"
6368 9933c305SChristian BorntraegerDIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
6369 2d9f27d2SAnthony LiguoriDIRS="$DIRS roms/seabios roms/vgabios"
6370 2dee8d54SPaolo BonziniDIRS="$DIRS qapi-generated"
6371 c09015ddSAnthony LiguoriFILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
6372 c09015ddSAnthony LiguoriFILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
6373 aaa2ebc5SAndreas FärberFILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
6374 ae0bfb79SBlue SwirlFILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
6375 446b9165SAndreas FärberFILES="$FILES pc-bios/spapr-rtas/Makefile"
6376 9933c305SChristian BorntraegerFILES="$FILES pc-bios/s390-ccw/Makefile"
6377 2d9f27d2SAnthony LiguoriFILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
6378 4652b792SJan KiszkaFILES="$FILES pc-bios/qemu-icon.bmp"
6379 753d11f2SRichard Hendersonfor bios_file in \
6380 753d11f2SRichard Henderson    $source_path/pc-bios/*.bin \
6381 225a9ab8SAlexey Kardashevskiy    $source_path/pc-bios/*.lid \
6382 5acc2ec0SGerd Hoffmann    $source_path/pc-bios/*.aml \
6383 753d11f2SRichard Henderson    $source_path/pc-bios/*.rom \
6384 753d11f2SRichard Henderson    $source_path/pc-bios/*.dtb \
6385 e89e33e1SDominik Dingel    $source_path/pc-bios/*.img \
6386 753d11f2SRichard Henderson    $source_path/pc-bios/openbios-* \
6387 4e73c781SAlexander Graf    $source_path/pc-bios/u-boot.* \
6388 753d11f2SRichard Henderson    $source_path/pc-bios/palcode-*
6389 753d11f2SRichard Hendersondo
6390 89138857SStefan Weil    FILES="$FILES pc-bios/$(basename $bios_file)"
6391 7ea78b74SJan Kiszkadone
6392 89138857SStefan Weilfor test_file in $(find $source_path/tests/acpi-test-data -type f)
6393 c2304b52SMarcel Apfelbaumdo
6394 89138857SStefan Weil    FILES="$FILES tests/acpi-test-data$(echo $test_file | sed -e 's/.*acpi-test-data//')"
6395 c2304b52SMarcel Apfelbaumdone
6396 d1807a4fSPaolo Bonzinimkdir -p $DIRS
6397 7d13299dSbellardfor f in $FILES ; do
6398 cab00a5aSMichael S. Tsirkin    if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
6399 f9245e10SPeter Maydell        symlink "$source_path/$f" "$f"
6400 f9245e10SPeter Maydell    fi
6401 7d13299dSbellarddone
6402 1ad2134fSPaul Brook
6403 c34ebfdcSAnthony Liguori# temporary config to build submodules
6404 2d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do
6405 c34ebfdcSAnthony Liguori    config_mak=roms/$rom/config.mak
6406 37116c89SStefan Weil    echo "# Automatically generated by configure - do not modify" > $config_mak
6407 c34ebfdcSAnthony Liguori    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
6408 cdbd727cSRichard Henderson    echo "AS=$as" >> $config_mak
6409 5f6f0e27SRichard Henderson    echo "CCAS=$ccas" >> $config_mak
6410 c34ebfdcSAnthony Liguori    echo "CC=$cc" >> $config_mak
6411 c34ebfdcSAnthony Liguori    echo "BCC=bcc" >> $config_mak
6412 3dd46c78SBlue Swirl    echo "CPP=$cpp" >> $config_mak
6413 c34ebfdcSAnthony Liguori    echo "OBJCOPY=objcopy" >> $config_mak
6414 a31a8642SMichael S. Tsirkin    echo "IASL=$iasl" >> $config_mak
6415 c34ebfdcSAnthony Liguori    echo "LD=$ld" >> $config_mak
6416 c34ebfdcSAnthony Liguoridone
6417 c34ebfdcSAnthony Liguori
6418 fe31017fSMarc-André Lureau# set up tests data directory
6419 fe31017fSMarc-André Lureauif [ ! -e tests/data ]; then
6420 fe31017fSMarc-André Lureau    symlink "$source_path/tests/data" tests/data
6421 fe31017fSMarc-André Lureaufi
6422 fe31017fSMarc-André Lureau
6423 76c7560aSMax Reitz# set up qemu-iotests in this build directory
6424 76c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env"
6425 76c7560aSMax Reitziotests_check="tests/qemu-iotests/check"
6426 76c7560aSMax Reitz
6427 76c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env"
6428 76c7560aSMax Reitzecho >> "$iotests_common_env"
6429 76c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env"
6430 76c7560aSMax Reitz
6431 76c7560aSMax Reitzif [ ! -e "$iotests_check" ]; then
6432 76c7560aSMax Reitz    symlink "$source_path/$iotests_check" "$iotests_check"
6433 76c7560aSMax Reitzfi
6434 76c7560aSMax Reitz
6435 dc655404SMichael S. Tsirkin# Save the configure command line for later reuse.
6436 dc655404SMichael S. Tsirkincat <<EOD >config.status
6437 dc655404SMichael S. Tsirkin#!/bin/sh
6438 dc655404SMichael S. Tsirkin# Generated by configure.
6439 dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration.
6440 dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging
6441 dc655404SMichael S. Tsirkin# configure, is in config.log if it exists.
6442 dc655404SMichael S. TsirkinEOD
6443 dc655404SMichael S. Tsirkinprintf "exec" >>config.status
6444 dc655404SMichael S. Tsirkinprintf " '%s'" "$0" "$@" >>config.status
6445 cf7cc929SDr. David Alan Gilbertecho ' "$@"' >>config.status
6446 dc655404SMichael S. Tsirkinchmod +x config.status
6447 dc655404SMichael S. Tsirkin
6448 8cd05ab6SPeter Maydellrm -r "$TMPDIR1"
6449