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