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 dedad027SDaniel P. Berrangé# make source path absolute 15 dedad027SDaniel P. Berrangésource_path=$(cd "$(dirname -- "$0")"; pwd) 16 dedad027SDaniel P. Berrangé 17 dedad027SDaniel P. Berrangéif test "$PWD" = "$source_path" 18 dedad027SDaniel P. Berrangéthen 19 dedad027SDaniel P. Berrangé echo "Using './build' as the directory for build output" 20 dedad027SDaniel P. Berrangé 21 dedad027SDaniel P. Berrangé MARKER=build/auto-created-by-configure 22 dedad027SDaniel P. Berrangé 23 dedad027SDaniel P. Berrangé if test -e build 24 dedad027SDaniel P. Berrangé then 25 dedad027SDaniel P. Berrangé if test -f $MARKER 26 dedad027SDaniel P. Berrangé then 27 dedad027SDaniel P. Berrangé rm -rf build 28 dedad027SDaniel P. Berrangé else 29 dedad027SDaniel P. Berrangé echo "ERROR: ./build dir already exists and was not previously created by configure" 30 dedad027SDaniel P. Berrangé exit 1 31 dedad027SDaniel P. Berrangé fi 32 dedad027SDaniel P. Berrangé fi 33 dedad027SDaniel P. Berrangé 34 dedad027SDaniel P. Berrangé mkdir build 35 dedad027SDaniel P. Berrangé touch $MARKER 36 dedad027SDaniel P. Berrangé 37 dedad027SDaniel P. Berrangé cat > GNUmakefile <<'EOF' 38 dedad027SDaniel P. Berrangé# This file is auto-generated by configure to support in-source tree 39 dedad027SDaniel P. Berrangé# 'make' command invocation 40 dedad027SDaniel P. Berrangé 41 dedad027SDaniel P. Berrangéifeq ($(MAKECMDGOALS),) 42 dedad027SDaniel P. Berrangérecurse: all 43 dedad027SDaniel P. Berrangéendif 44 dedad027SDaniel P. Berrangé 45 dedad027SDaniel P. Berrangé.NOTPARALLEL: % 46 dedad027SDaniel P. Berrangé%: force 47 dedad027SDaniel P. Berrangé @echo 'changing dir to build for $(MAKE) "$(MAKECMDGOALS)"...' 48 dedad027SDaniel P. Berrangé @$(MAKE) -C build -f Makefile $(MAKECMDGOALS) 49 dedad027SDaniel P. Berrangé @if test "$(MAKECMDGOALS)" = "distclean" && \ 50 dedad027SDaniel P. Berrangé test -e build/auto-created-by-configure ; \ 51 dedad027SDaniel P. Berrangé then \ 52 dedad027SDaniel P. Berrangé rm -rf build GNUmakefile ; \ 53 dedad027SDaniel P. Berrangé fi 54 dedad027SDaniel P. Berrangéforce: ; 55 dedad027SDaniel P. Berrangé.PHONY: force 56 dedad027SDaniel P. BerrangéGNUmakefile: ; 57 dedad027SDaniel P. Berrangé 58 dedad027SDaniel P. BerrangéEOF 59 dedad027SDaniel P. Berrangé cd build 60 dedad027SDaniel P. Berrangé exec $source_path/configure "$@" 61 dedad027SDaniel P. Berrangéfi 62 dedad027SDaniel P. Berrangé 63 8cd05ab6SPeter Maydell# Temporary directory used for files created while 64 8cd05ab6SPeter Maydell# configure runs. Since it is in the build directory 65 8cd05ab6SPeter Maydell# we can safely blow away any previous version of it 66 8cd05ab6SPeter Maydell# (and we need not jump through hoops to try to delete 67 8cd05ab6SPeter Maydell# it when configure exits.) 68 8cd05ab6SPeter MaydellTMPDIR1="config-temp" 69 8cd05ab6SPeter Maydellrm -rf "${TMPDIR1}" 70 8cd05ab6SPeter Maydellmkdir -p "${TMPDIR1}" 71 8cd05ab6SPeter Maydellif [ $? -ne 0 ]; then 72 8cd05ab6SPeter Maydell echo "ERROR: failed to create temporary directory" 73 8cd05ab6SPeter Maydell exit 1 74 7d13299dSbellardfi 75 7d13299dSbellard 76 8cd05ab6SPeter MaydellTMPB="qemu-conf" 77 8cd05ab6SPeter MaydellTMPC="${TMPDIR1}/${TMPB}.c" 78 66518bf6SDon SlutzTMPO="${TMPDIR1}/${TMPB}.o" 79 9c83ffd8SPeter MaydellTMPCXX="${TMPDIR1}/${TMPB}.cxx" 80 8cd05ab6SPeter MaydellTMPE="${TMPDIR1}/${TMPB}.exe" 81 6969ec6cSJames ClarkeTMPMO="${TMPDIR1}/${TMPB}.mo" 82 26fffe29SEmilio G. CotaTMPTXT="${TMPDIR1}/${TMPB}.txt" 83 7d13299dSbellard 84 da1d85e3SGerd Hoffmannrm -f config.log 85 9ac81bbbSmalc 86 b48e3611SPeter Maydell# Print a helpful header at the top of config.log 87 b48e3611SPeter Maydellecho "# QEMU configure log $(date)" >> config.log 88 979ae168SPeter Maydellprintf "# Configured with:" >> config.log 89 979ae168SPeter Maydellprintf " '%s'" "$0" "$@" >> config.log 90 979ae168SPeter Maydellecho >> config.log 91 b48e3611SPeter Maydellecho "#" >> config.log 92 b48e3611SPeter Maydell 93 d880a3baSPaolo Bonziniprint_error() { 94 d880a3baSPaolo Bonzini (echo 95 76ad07a4SPeter Maydell echo "ERROR: $1" 96 76ad07a4SPeter Maydell while test -n "$2"; do 97 76ad07a4SPeter Maydell echo " $2" 98 76ad07a4SPeter Maydell shift 99 76ad07a4SPeter Maydell done 100 d880a3baSPaolo Bonzini echo) >&2 101 d880a3baSPaolo Bonzini} 102 d880a3baSPaolo Bonzini 103 d880a3baSPaolo Bonzinierror_exit() { 104 d880a3baSPaolo Bonzini print_error "$@" 105 76ad07a4SPeter Maydell exit 1 106 76ad07a4SPeter Maydell} 107 76ad07a4SPeter Maydell 108 9c83ffd8SPeter Maydelldo_compiler() { 109 9c83ffd8SPeter Maydell # Run the compiler, capturing its output to the log. First argument 110 9c83ffd8SPeter Maydell # is compiler binary to execute. 111 9c83ffd8SPeter Maydell local compiler="$1" 112 9c83ffd8SPeter Maydell shift 113 8bbe05d7SIan Jackson if test -n "$BASH_VERSION"; then eval ' 114 8bbe05d7SIan Jackson echo >>config.log " 115 8bbe05d7SIan Jacksonfuncs: ${FUNCNAME[*]} 116 8bbe05d7SIan Jacksonlines: ${BASH_LINENO[*]}" 117 8bbe05d7SIan Jackson '; fi 118 9c83ffd8SPeter Maydell echo $compiler "$@" >> config.log 119 9c83ffd8SPeter Maydell $compiler "$@" >> config.log 2>&1 || return $? 120 8dc38a78SPeter Maydell # Test passed. If this is an --enable-werror build, rerun 121 8dc38a78SPeter Maydell # the test with -Werror and bail out if it fails. This 122 8dc38a78SPeter Maydell # makes warning-generating-errors in configure test code 123 8dc38a78SPeter Maydell # obvious to developers. 124 8dc38a78SPeter Maydell if test "$werror" != "yes"; then 125 8dc38a78SPeter Maydell return 0 126 8dc38a78SPeter Maydell fi 127 8dc38a78SPeter Maydell # Don't bother rerunning the compile if we were already using -Werror 128 8dc38a78SPeter Maydell case "$*" in 129 8dc38a78SPeter Maydell *-Werror*) 130 8dc38a78SPeter Maydell return 0 131 8dc38a78SPeter Maydell ;; 132 8dc38a78SPeter Maydell esac 133 9c83ffd8SPeter Maydell echo $compiler -Werror "$@" >> config.log 134 9c83ffd8SPeter Maydell $compiler -Werror "$@" >> config.log 2>&1 && return $? 135 76ad07a4SPeter Maydell error_exit "configure test passed without -Werror but failed with -Werror." \ 136 76ad07a4SPeter Maydell "This is probably a bug in the configure script. The failing command" \ 137 76ad07a4SPeter Maydell "will be at the bottom of config.log." \ 138 76ad07a4SPeter Maydell "You can run configure with --disable-werror to bypass this check." 139 8dc38a78SPeter Maydell} 140 8dc38a78SPeter Maydell 141 9c83ffd8SPeter Maydelldo_cc() { 142 9c83ffd8SPeter Maydell do_compiler "$cc" "$@" 143 9c83ffd8SPeter Maydell} 144 9c83ffd8SPeter Maydell 145 9c83ffd8SPeter Maydelldo_cxx() { 146 9c83ffd8SPeter Maydell do_compiler "$cxx" "$@" 147 9c83ffd8SPeter Maydell} 148 9c83ffd8SPeter Maydell 149 00849b92SRichard Henderson# Append $2 to the variable named $1, with space separation 150 00849b92SRichard Hendersonadd_to() { 151 00849b92SRichard Henderson eval $1=\${$1:+\"\$$1 \"}\$2 152 00849b92SRichard Henderson} 153 00849b92SRichard Henderson 154 9c83ffd8SPeter Maydellupdate_cxxflags() { 155 9c83ffd8SPeter Maydell # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those 156 9c83ffd8SPeter Maydell # options which some versions of GCC's C++ compiler complain about 157 9c83ffd8SPeter Maydell # because they only make sense for C programs. 158 53422040SPaolo Bonzini QEMU_CXXFLAGS="$QEMU_CXXFLAGS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS" 159 086d5f75SPaolo Bonzini CXXFLAGS=$(echo "$CFLAGS" | sed s/-std=gnu99/-std=gnu++11/) 160 9c83ffd8SPeter Maydell for arg in $QEMU_CFLAGS; do 161 9c83ffd8SPeter Maydell case $arg in 162 9c83ffd8SPeter Maydell -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\ 163 9c83ffd8SPeter Maydell -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls) 164 9c83ffd8SPeter Maydell ;; 165 9c83ffd8SPeter Maydell *) 166 9c83ffd8SPeter Maydell QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg 167 9c83ffd8SPeter Maydell ;; 168 9c83ffd8SPeter Maydell esac 169 9c83ffd8SPeter Maydell done 170 9c83ffd8SPeter Maydell} 171 9c83ffd8SPeter Maydell 172 52166aa0SJuan Quintelacompile_object() { 173 fd0e6053SJohn Snow local_cflags="$1" 174 086d5f75SPaolo Bonzini do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC 175 52166aa0SJuan Quintela} 176 52166aa0SJuan Quintela 177 52166aa0SJuan Quintelacompile_prog() { 178 52166aa0SJuan Quintela local_cflags="$1" 179 52166aa0SJuan Quintela local_ldflags="$2" 180 086d5f75SPaolo Bonzini do_cc $CFLAGS $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $QEMU_LDFLAGS $local_ldflags 181 52166aa0SJuan Quintela} 182 52166aa0SJuan Quintela 183 11568d6dSPaolo Bonzini# symbolically link $1 to $2. Portable version of "ln -sf". 184 11568d6dSPaolo Bonzinisymlink() { 185 72b8b5a1SStefan Weil rm -rf "$2" 186 ec5b06d7SAnthony Liguori mkdir -p "$(dirname "$2")" 187 72b8b5a1SStefan Weil ln -s "$1" "$2" 188 11568d6dSPaolo Bonzini} 189 11568d6dSPaolo Bonzini 190 0dba6195SLoïc Minier# check whether a command is available to this shell (may be either an 191 0dba6195SLoïc Minier# executable or a builtin) 192 0dba6195SLoïc Minierhas() { 193 0dba6195SLoïc Minier type "$1" >/dev/null 2>&1 194 0dba6195SLoïc Minier} 195 0dba6195SLoïc Minier 196 0dba6195SLoïc Minier# search for an executable in PATH 197 0dba6195SLoïc Minierpath_of() { 198 0dba6195SLoïc Minier local_command="$1" 199 0dba6195SLoïc Minier local_ifs="$IFS" 200 0dba6195SLoïc Minier local_dir="" 201 0dba6195SLoïc Minier 202 0dba6195SLoïc Minier # pathname has a dir component? 203 0dba6195SLoïc Minier if [ "${local_command#*/}" != "$local_command" ]; then 204 0dba6195SLoïc Minier if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then 205 0dba6195SLoïc Minier echo "$local_command" 206 0dba6195SLoïc Minier return 0 207 0dba6195SLoïc Minier fi 208 0dba6195SLoïc Minier fi 209 0dba6195SLoïc Minier if [ -z "$local_command" ]; then 210 0dba6195SLoïc Minier return 1 211 0dba6195SLoïc Minier fi 212 0dba6195SLoïc Minier 213 0dba6195SLoïc Minier IFS=: 214 0dba6195SLoïc Minier for local_dir in $PATH; do 215 0dba6195SLoïc Minier if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then 216 0dba6195SLoïc Minier echo "$local_dir/$local_command" 217 0dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 218 0dba6195SLoïc Minier return 0 219 0dba6195SLoïc Minier fi 220 0dba6195SLoïc Minier done 221 0dba6195SLoïc Minier # not found 222 0dba6195SLoïc Minier IFS="${local_ifs:-$(printf ' \t\n')}" 223 0dba6195SLoïc Minier return 1 224 0dba6195SLoïc Minier} 225 0dba6195SLoïc Minier 226 0a01d76fSMarc-André Lureauversion_ge () { 227 0a01d76fSMarc-André Lureau local_ver1=`echo $1 | tr . ' '` 228 0a01d76fSMarc-André Lureau local_ver2=`echo $2 | tr . ' '` 229 0a01d76fSMarc-André Lureau while true; do 230 0a01d76fSMarc-André Lureau set x $local_ver1 231 0a01d76fSMarc-André Lureau local_first=${2-0} 232 0a01d76fSMarc-André Lureau # shift 2 does nothing if there are less than 2 arguments 233 0a01d76fSMarc-André Lureau shift; shift 234 0a01d76fSMarc-André Lureau local_ver1=$* 235 0a01d76fSMarc-André Lureau set x $local_ver2 236 0a01d76fSMarc-André Lureau # the second argument finished, the first must be greater or equal 237 0a01d76fSMarc-André Lureau test $# = 1 && return 0 238 0a01d76fSMarc-André Lureau test $local_first -lt $2 && return 1 239 0a01d76fSMarc-André Lureau test $local_first -gt $2 && return 0 240 0a01d76fSMarc-André Lureau shift; shift 241 0a01d76fSMarc-André Lureau local_ver2=$* 242 0a01d76fSMarc-André Lureau done 243 0a01d76fSMarc-André Lureau} 244 0a01d76fSMarc-André Lureau 245 5b808275SLluís Vilanovahave_backend () { 246 5b808275SLluís Vilanova echo "$trace_backends" | grep "$1" >/dev/null 247 5b808275SLluís Vilanova} 248 5b808275SLluís Vilanova 249 3b6b7550SPaolo Bonziniglob() { 250 3b6b7550SPaolo Bonzini eval test -z '"${1#'"$2"'}"' 251 3b6b7550SPaolo Bonzini} 252 3b6b7550SPaolo Bonzini 253 3b6b7550SPaolo Bonzinisupported_hax_target() { 254 3b6b7550SPaolo Bonzini test "$hax" = "yes" || return 1 255 3b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 256 3b6b7550SPaolo Bonzini case "${1%-softmmu}" in 257 3b6b7550SPaolo Bonzini i386|x86_64) 258 3b6b7550SPaolo Bonzini return 0 259 3b6b7550SPaolo Bonzini ;; 260 3b6b7550SPaolo Bonzini esac 261 3b6b7550SPaolo Bonzini return 1 262 3b6b7550SPaolo Bonzini} 263 3b6b7550SPaolo Bonzini 264 3b6b7550SPaolo Bonzinisupported_kvm_target() { 265 3b6b7550SPaolo Bonzini test "$kvm" = "yes" || return 1 266 3b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 267 3b6b7550SPaolo Bonzini case "${1%-softmmu}:$cpu" in 268 3b6b7550SPaolo Bonzini arm:arm | aarch64:aarch64 | \ 269 3b6b7550SPaolo Bonzini i386:i386 | i386:x86_64 | i386:x32 | \ 270 3b6b7550SPaolo Bonzini x86_64:i386 | x86_64:x86_64 | x86_64:x32 | \ 271 aa2953fdSHuacai Chen mips:mips | mipsel:mips | mips64:mips | mips64el:mips | \ 272 f8378accSRichard Henderson ppc:ppc | ppc64:ppc | ppc:ppc64 | ppc64:ppc64 | ppc64:ppc64le | \ 273 3b6b7550SPaolo Bonzini s390x:s390x) 274 3b6b7550SPaolo Bonzini return 0 275 3b6b7550SPaolo Bonzini ;; 276 3b6b7550SPaolo Bonzini esac 277 3b6b7550SPaolo Bonzini return 1 278 3b6b7550SPaolo Bonzini} 279 3b6b7550SPaolo Bonzini 280 3b6b7550SPaolo Bonzinisupported_xen_target() { 281 3b6b7550SPaolo Bonzini test "$xen" = "yes" || return 1 282 3b6b7550SPaolo Bonzini glob "$1" "*-softmmu" || return 1 283 b5ed2e11SPaolo Bonzini # Only i386 and x86_64 provide the xenpv machine. 284 b5ed2e11SPaolo Bonzini case "${1%-softmmu}" in 285 b5ed2e11SPaolo Bonzini i386|x86_64) 286 3b6b7550SPaolo Bonzini return 0 287 3b6b7550SPaolo Bonzini ;; 288 3b6b7550SPaolo Bonzini esac 289 3b6b7550SPaolo Bonzini return 1 290 3b6b7550SPaolo Bonzini} 291 3b6b7550SPaolo Bonzini 292 c97d6d2cSSergio Andres Gomez Del Realsupported_hvf_target() { 293 c97d6d2cSSergio Andres Gomez Del Real test "$hvf" = "yes" || return 1 294 c97d6d2cSSergio Andres Gomez Del Real glob "$1" "*-softmmu" || return 1 295 c97d6d2cSSergio Andres Gomez Del Real case "${1%-softmmu}" in 296 c97d6d2cSSergio Andres Gomez Del Real x86_64) 297 c97d6d2cSSergio Andres Gomez Del Real return 0 298 c97d6d2cSSergio Andres Gomez Del Real ;; 299 c97d6d2cSSergio Andres Gomez Del Real esac 300 c97d6d2cSSergio Andres Gomez Del Real return 1 301 c97d6d2cSSergio Andres Gomez Del Real} 302 c97d6d2cSSergio Andres Gomez Del Real 303 d661d9a4SJustin Terry (VM)supported_whpx_target() { 304 d661d9a4SJustin Terry (VM) test "$whpx" = "yes" || return 1 305 d661d9a4SJustin Terry (VM) glob "$1" "*-softmmu" || return 1 306 d661d9a4SJustin Terry (VM) case "${1%-softmmu}" in 307 d661d9a4SJustin Terry (VM) i386|x86_64) 308 d661d9a4SJustin Terry (VM) return 0 309 d661d9a4SJustin Terry (VM) ;; 310 d661d9a4SJustin Terry (VM) esac 311 d661d9a4SJustin Terry (VM) return 1 312 d661d9a4SJustin Terry (VM)} 313 d661d9a4SJustin Terry (VM) 314 d880a3baSPaolo Bonzinisupported_target() { 315 d880a3baSPaolo Bonzini case "$1" in 316 d880a3baSPaolo Bonzini *-softmmu) 317 d880a3baSPaolo Bonzini ;; 318 d880a3baSPaolo Bonzini *-linux-user) 319 d880a3baSPaolo Bonzini if test "$linux" != "yes"; then 320 d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a Linux host" 321 d880a3baSPaolo Bonzini return 1 322 d880a3baSPaolo Bonzini fi 323 d880a3baSPaolo Bonzini ;; 324 d880a3baSPaolo Bonzini *-bsd-user) 325 d880a3baSPaolo Bonzini if test "$bsd" != "yes"; then 326 d880a3baSPaolo Bonzini print_error "Target '$target' is only available on a BSD host" 327 d880a3baSPaolo Bonzini return 1 328 d880a3baSPaolo Bonzini fi 329 d880a3baSPaolo Bonzini ;; 330 d880a3baSPaolo Bonzini *) 331 d880a3baSPaolo Bonzini print_error "Invalid target name '$target'" 332 d880a3baSPaolo Bonzini return 1 333 d880a3baSPaolo Bonzini ;; 334 d880a3baSPaolo Bonzini esac 335 b3f6ea7eSPaolo Bonzini test "$tcg" = "yes" && return 0 336 b3f6ea7eSPaolo Bonzini supported_kvm_target "$1" && return 0 337 b3f6ea7eSPaolo Bonzini supported_xen_target "$1" && return 0 338 b3f6ea7eSPaolo Bonzini supported_hax_target "$1" && return 0 339 c97d6d2cSSergio Andres Gomez Del Real supported_hvf_target "$1" && return 0 340 d661d9a4SJustin Terry (VM) supported_whpx_target "$1" && return 0 341 b3f6ea7eSPaolo Bonzini print_error "TCG disabled, but hardware accelerator not available for '$target'" 342 b3f6ea7eSPaolo Bonzini return 1 343 d880a3baSPaolo Bonzini} 344 d880a3baSPaolo Bonzini 345 e9a3591fSChristian Borntraeger 346 e9a3591fSChristian Borntraegerld_has() { 347 e9a3591fSChristian Borntraeger $ld --help 2>/dev/null | grep ".$1" >/dev/null 2>&1 348 e9a3591fSChristian Borntraeger} 349 e9a3591fSChristian Borntraeger 350 4ace32e2SAntonio Ospiteif printf %s\\n "$source_path" "$PWD" | grep -q "[[:space:]:]"; 351 4ace32e2SAntonio Ospitethen 352 4ace32e2SAntonio Ospite error_exit "main directory cannot contain spaces nor colons" 353 4ace32e2SAntonio Ospitefi 354 4ace32e2SAntonio Ospite 355 14211825SAntonio Ospite# default parameters 356 2ff6b91eSJuan Quintelacpu="" 357 a31a8642SMichael S. Tsirkiniasl="iasl" 358 1e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M" 359 43ce4dfeSbellardstatic="no" 360 7d13299dSbellardcross_prefix="" 361 0c58ac1cSmalcaudio_drv_list="" 362 b64ec4e4SFam Zhengblock_drv_rw_whitelist="" 363 b64ec4e4SFam Zhengblock_drv_ro_whitelist="" 364 e49d021eSPeter Maydellhost_cc="cc" 365 02f9135bSDaniel P. Berrangélibs_cpu="" 366 73da375eSJuan Quintelalibs_softmmu="" 367 3e2e0e6bSJuan Quintelalibs_tools="" 368 d5631638Smalcaudio_win_int="" 369 957f1f99SMichael Rothlibs_qga="" 370 5bc62e01SGerd Hoffmanndebug_info="yes" 371 63678e17SSteven Noonanstack_protector="" 372 1e4f6065SDaniele Buonosafe_stack="" 373 afc3a8f9SAlex Bennéeuse_containers="yes" 374 f2385398SAlex Bennéegdb_bin=$(command -v "gdb-multiarch" || command -v "gdb") 375 ac0df51dSaliguori 376 92712822SDaniel P. Berrangeif test -e "$source_path/.git" 377 92712822SDaniel P. Berrangethen 378 f62bbee5SDaniel P. Berrange git_update=yes 379 92712822SDaniel P. Berrange git_submodules="ui/keycodemapdb" 380 3ac1f813SEmilio G. Cota git_submodules="$git_submodules tests/fp/berkeley-testfloat-3" 381 3ac1f813SEmilio G. Cota git_submodules="$git_submodules tests/fp/berkeley-softfloat-3" 382 92712822SDaniel P. Berrangeelse 383 f62bbee5SDaniel P. Berrange git_update=no 384 aef45d51SDaniel P. Berrange git_submodules="" 385 5c0ef67aSDaniel P. Berrangé 386 5c0ef67aSDaniel P. Berrangé if ! test -f "$source_path/ui/keycodemapdb/README" 387 5c0ef67aSDaniel P. Berrangé then 388 5c0ef67aSDaniel P. Berrangé echo 389 5c0ef67aSDaniel P. Berrangé echo "ERROR: missing file $source_path/ui/keycodemapdb/README" 390 5c0ef67aSDaniel P. Berrangé echo 391 5c0ef67aSDaniel P. Berrangé echo "This is not a GIT checkout but module content appears to" 392 5c0ef67aSDaniel P. Berrangé echo "be missing. Do not use 'git archive' or GitHub download links" 393 5c0ef67aSDaniel P. Berrangé echo "to acquire QEMU source archives. Non-GIT builds are only" 394 5c0ef67aSDaniel P. Berrangé echo "supported with source archives linked from:" 395 5c0ef67aSDaniel P. Berrangé echo 396 a3e3b521SPeter Maydell echo " https://www.qemu.org/download/#source" 397 5c0ef67aSDaniel P. Berrangé echo 398 5c0ef67aSDaniel P. Berrangé echo "Developers working with GIT can use scripts/archive-source.sh" 399 5c0ef67aSDaniel P. Berrangé echo "if they need to create valid source archives." 400 5c0ef67aSDaniel P. Berrangé echo 401 5c0ef67aSDaniel P. Berrangé exit 1 402 5c0ef67aSDaniel P. Berrangé fi 403 92712822SDaniel P. Berrangefi 404 cc84d63aSDaniel P. Berrangegit="git" 405 ac0df51dSaliguori 406 afb63ebdSStefan Weil# Don't accept a target_list environment variable. 407 afb63ebdSStefan Weilunset target_list 408 447e133fSAlex Bennéeunset target_list_exclude 409 377529c0SPaolo Bonzini 410 377529c0SPaolo Bonzini# Default value for a variable defining feature "foo". 411 377529c0SPaolo Bonzini# * foo="no" feature will only be used if --enable-foo arg is given 412 377529c0SPaolo Bonzini# * foo="" feature will be searched for, and if found, will be used 413 377529c0SPaolo Bonzini# unless --disable-foo is given 414 377529c0SPaolo Bonzini# * foo="yes" this value will only be set by --enable-foo flag. 415 377529c0SPaolo Bonzini# feature will searched for, 416 377529c0SPaolo Bonzini# if not found, configure exits with error 417 377529c0SPaolo Bonzini# 418 377529c0SPaolo Bonzini# Always add --enable-foo and --disable-foo command line args. 419 377529c0SPaolo Bonzini# Distributions want to ensure that several features are compiled in, and it 420 377529c0SPaolo Bonzini# is impossible without a --enable-foo that exits if a feature is not found. 421 377529c0SPaolo Bonzini 422 377529c0SPaolo Bonzinibrlapi="" 423 377529c0SPaolo Bonzinicurl="" 424 377529c0SPaolo Bonzinicurses="" 425 377529c0SPaolo Bonzinidocs="" 426 377529c0SPaolo Bonzinifdt="" 427 58952137SVincenzo Maffionenetmap="no" 428 377529c0SPaolo Bonzinisdl="" 429 a442fe2fSDaniel P. Berrangésdl_image="" 430 983eef5aSMeador Ingevirtfs="" 431 fe8fc5aeSPaolo Bonzinimpath="" 432 821601eaSJes Sorensenvnc="yes" 433 377529c0SPaolo Bonzinisparse="no" 434 377529c0SPaolo Bonzinivde="" 435 377529c0SPaolo Bonzinivnc_sasl="" 436 377529c0SPaolo Bonzinivnc_jpeg="" 437 377529c0SPaolo Bonzinivnc_png="" 438 6a021536SGerd Hoffmannxkbcommon="" 439 377529c0SPaolo Bonzinixen="" 440 d5b93ddfSAnthony PERARDxen_ctrl_version="" 441 eb6fda0fSAnthony PERARDxen_pci_passthrough="" 442 377529c0SPaolo Bonzinilinux_aio="" 443 c10dd856SAarushi Mehtalinux_io_uring="" 444 47e98658SCorey Bryantcap_ng="" 445 377529c0SPaolo Bonziniattr="" 446 4f26f2b6SAvi Kivitylibattr="" 447 377529c0SPaolo Bonzinixfs="" 448 b3f6ea7eSPaolo Bonzinitcg="yes" 449 a40161cbSPaolo Bonzinimembarrier="" 450 299e6f19SPaolo Bonzinivhost_net="" 451 299e6f19SPaolo Bonzinivhost_crypto="" 452 299e6f19SPaolo Bonzinivhost_scsi="" 453 299e6f19SPaolo Bonzinivhost_vsock="" 454 e6a74868SMarc-André Lureauvhost_user="" 455 98fc1adaSDr. David Alan Gilbertvhost_user_fs="" 456 d41a75a2SBradkvm="no" 457 b0cb0a66SVincent Palatinhax="no" 458 c97d6d2cSSergio Andres Gomez Del Realhvf="no" 459 d661d9a4SJustin Terry (VM)whpx="no" 460 2da776dbSMichael R. Hinesrdma="" 461 21ab34c9SMarcel Apfelbaumpvrdma="" 462 377529c0SPaolo Bonzinigprof="no" 463 377529c0SPaolo Bonzinidebug_tcg="no" 464 377529c0SPaolo Bonzinidebug="no" 465 247724cbSMarc-André Lureausanitizers="no" 466 0aebab04SLingfeng Yangtsan="no" 467 b553a042SJohn Snowfortify_source="" 468 377529c0SPaolo Bonzinistrip_opt="yes" 469 9195b2c2SStefan Weiltcg_interpreter="no" 470 377529c0SPaolo Bonzinibigendian="no" 471 377529c0SPaolo Bonzinimingw32="no" 472 1d728c39SBlue Swirlgcov="no" 473 377529c0SPaolo BonziniEXESUF="" 474 17969268SFam ZhengDSOSUF=".so" 475 17969268SFam ZhengLDFLAGS_SHARED="-shared" 476 17969268SFam Zhengmodules="no" 477 bd83c861SChristian Ehrhardtmodule_upgrades="no" 478 377529c0SPaolo Bonziniprefix="/usr/local" 479 3d5eecabSGerd Hoffmannfirmwarepath="\${prefix}/share/qemu-firmware" 480 377529c0SPaolo Bonziniconfsuffix="/qemu" 481 675b9b53SMarc-André Lureauslirp="" 482 377529c0SPaolo Bonzinioss_lib="" 483 377529c0SPaolo Bonzinibsd="no" 484 377529c0SPaolo Bonzinilinux="no" 485 377529c0SPaolo Bonzinisolaris="no" 486 377529c0SPaolo Bonziniprofiler="no" 487 377529c0SPaolo Bonzinicocoa="no" 488 377529c0SPaolo Bonzinisoftmmu="yes" 489 377529c0SPaolo Bonzinilinux_user="no" 490 377529c0SPaolo Bonzinibsd_user="no" 491 377529c0SPaolo Bonziniblobs="yes" 492 05dfa22bSPhilippe Mathieu-Daudéedk2_blobs="no" 493 377529c0SPaolo Bonzinipkgversion="" 494 40d6444eSAvi Kivitypie="" 495 3556c233SPaolo Bonziniqom_cast_debug="yes" 496 baf86d6bSPaolo Bonzinitrace_backends="log" 497 377529c0SPaolo Bonzinitrace_file="trace" 498 377529c0SPaolo Bonzinispice="" 499 377529c0SPaolo Bonzinirbd="" 500 7b02f544SMarc-André Lureausmartcard="" 501 2b2325ffSGerd Hoffmannlibusb="" 502 69354a83SHans de Goedeusb_redir="" 503 da076ffeSGerd Hoffmannopengl="" 504 014cb152SGerd Hoffmannopengl_dmabuf="no" 505 5dd89908SRichard Hendersoncpuid_h="no" 506 86583a07SLiam Merwickavx2_opt="" 507 1ece9905SAlon Levyzlib="yes" 508 8ca80760SRichard Hendersoncapstone="" 509 b25c9dffSStefan Weillzo="" 510 b25c9dffSStefan Weilsnappy="" 511 6b383c08SPeter Wubzip2="" 512 83bc1f97SJulio Faraccolzfse="" 513 3a678481SJuan Quintelazstd="" 514 e8ef31a3SMichael Tokarevguest_agent="" 515 d9840e25STomoki Sekiyamaguest_agent_with_vss="no" 516 50cbebb9SMichael Rothguest_agent_ntddscsi="no" 517 9dacf32dSYossi Hindinguest_agent_msi="" 518 d9840e25STomoki Sekiyamavss_win32_sdk="" 519 d9840e25STomoki Sekiyamawin_sdk="no" 520 e10ee3f5SPhilippe Mathieu-Daudéwant_tools="" 521 c589b249SRonnie Sahlberglibiscsi="" 522 6542aa9cSPeter Lievenlibnfs="" 523 519175a2SAlex Barcelocoroutine="" 524 70c60c08SStefan Hajnoczicoroutine_pool="" 525 7d992e4dSPeter Lievendebug_stack_usage="no" 526 f0d92b56SLongpeng(Mike)crypto_afalg="no" 527 f794573eSEduardo Otuboseccomp="" 528 eb100396SBharata B Raoglusterfs="" 529 d85fa9ebSJeff Codyglusterfs_xlator_opt="no" 530 0c14fb47SBharata B Raoglusterfs_discard="no" 531 df3a429aSNiels de Vosglusterfs_fallocate="no" 532 7c815372SBharata B Raoglusterfs_zerofill="no" 533 e014dbe7SPrasanna Kumar Kaleverglusterfs_ftruncate_has_stat="no" 534 0e3b891fSNiels de Vosglusterfs_iocb_has_stat="no" 535 a4ccabcfSAnthony Liguorigtk="" 536 925a0400SGerd Hoffmanngtk_gl="no" 537 a1c5e949SDaniel P. Berrangetls_priority="NORMAL" 538 ddbb0d09SDaniel P. Berrangegnutls="" 539 91bfcdb0SDaniel P. Berrangenettle="" 540 dc2207afSDaniel P. Berrangénettle_xts="no" 541 91bfcdb0SDaniel P. Berrangegcrypt="" 542 1f923c70SLongpeng(Mike)gcrypt_hmac="no" 543 e0576942SDaniel P. Berrangégcrypt_xts="no" 544 e0576942SDaniel P. Berrangéqemu_private_xts="yes" 545 8953caf3SDaniel P. Berrangeauth_pam="" 546 bbbf9bfbSStefan Weilvte="" 547 9d9e1521SGerd Hoffmannvirglrenderer="" 548 7aaa6a16SPaolo Bonzinitpm="" 549 b10d49d7SPino Toscanolibssh="" 550 ed1701c6SDr. David Alan Gilbertlive_block_migration="yes" 551 a99d57bbSWanlong Gaonuma="" 552 2847b469SFam Zhengtcmalloc="no" 553 7b01cb97SAlexandre Derumierjemalloc="no" 554 a6b1d4c0SChanglong Xiereplication="yes" 555 2f740136SJeff Codybochs="yes" 556 2f740136SJeff Codycloop="yes" 557 2f740136SJeff Codydmg="yes" 558 2f740136SJeff Codyqcow1="yes" 559 2f740136SJeff Codyvdi="yes" 560 2f740136SJeff Codyvvfat="yes" 561 2f740136SJeff Codyqed="yes" 562 2f740136SJeff Codyparallels="yes" 563 2f740136SJeff Codysheepdog="yes" 564 ed279a06SKlim Kireevlibxml2="" 565 ba59fb77SPaolo Bonzinidebug_mutex="no" 566 17824406SJunyan Helibpmem="" 567 f3494749SPaolo Bonzinidefault_devices="yes" 568 40e8c6f4SAlex Bennéeplugins="no" 569 adc28027SAlexander Bulekovfuzzing="no" 570 b767d257SMarek Marczykowski-Góreckirng_none="no" 571 54e7aac0SAlexey Krasikovsecret_keyring="" 572 21b2eca6SJingqi Liulibdaxctl="" 573 a5665051SPaolo Bonzinimeson="" 574 a5665051SPaolo Bonziniskip_meson=no 575 377529c0SPaolo Bonzini 576 fb59dabdSPeter Maydellbogus_os="no" 577 5a22ab71SYang Zhongmalloc_trim="" 578 898be3e0SPeter Maydell 579 ac0df51dSaliguori# parse CC options first 580 ac0df51dSaliguorifor opt do 581 89138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 582 ac0df51dSaliguori case "$opt" in 583 ac0df51dSaliguori --cross-prefix=*) cross_prefix="$optarg" 584 ac0df51dSaliguori ;; 585 3d8df640SPaolo Bonzini --cc=*) CC="$optarg" 586 ac0df51dSaliguori ;; 587 83f73fceSTomoki Sekiyama --cxx=*) CXX="$optarg" 588 83f73fceSTomoki Sekiyama ;; 589 2ff6b91eSJuan Quintela --cpu=*) cpu="$optarg" 590 2ff6b91eSJuan Quintela ;; 591 de385287SAlex Bennée --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg" 592 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg" 593 e2a2ed06SJuan Quintela ;; 594 11cde1c8SBruno Dominguez --extra-cxxflags=*) QEMU_CXXFLAGS="$QEMU_CXXFLAGS $optarg" 595 11cde1c8SBruno Dominguez ;; 596 db5adeaaSPaolo Bonzini --extra-ldflags=*) QEMU_LDFLAGS="$QEMU_LDFLAGS $optarg" 597 f9943cd5SGerd Hoffmann EXTRA_LDFLAGS="$optarg" 598 e2a2ed06SJuan Quintela ;; 599 5bc62e01SGerd Hoffmann --enable-debug-info) debug_info="yes" 600 5bc62e01SGerd Hoffmann ;; 601 5bc62e01SGerd Hoffmann --disable-debug-info) debug_info="no" 602 5bc62e01SGerd Hoffmann ;; 603 d75402b5SAlex Bennée --cross-cc-*[!a-zA-Z0-9_-]*=*) error_exit "Passed bad --cross-cc-FOO option" 604 d75402b5SAlex Bennée ;; 605 d422b2bcSAlex Bennée --cross-cc-cflags-*) cc_arch=${opt#--cross-cc-flags-}; cc_arch=${cc_arch%%=*} 606 d422b2bcSAlex Bennée eval "cross_cc_cflags_${cc_arch}=\$optarg" 607 2038f8c8SPaolo Bonzini cross_cc_vars="$cross_cc_vars cross_cc_cflags_${cc_arch}" 608 d422b2bcSAlex Bennée ;; 609 d75402b5SAlex Bennée --cross-cc-*) cc_arch=${opt#--cross-cc-}; cc_arch=${cc_arch%%=*} 610 2038f8c8SPaolo Bonzini cc_archs="$cc_archs $cc_arch" 611 d75402b5SAlex Bennée eval "cross_cc_${cc_arch}=\$optarg" 612 2038f8c8SPaolo Bonzini cross_cc_vars="$cross_cc_vars cross_cc_${cc_arch}" 613 d75402b5SAlex Bennée ;; 614 ac0df51dSaliguori esac 615 ac0df51dSaliguoridone 616 ac0df51dSaliguori# OS specific 617 ac0df51dSaliguori# Using uname is really, really broken. Once we have the right set of checks 618 93148aa5SStefan Weil# we can eliminate its usage altogether. 619 ac0df51dSaliguori 620 e49d021eSPeter Maydell# Preferred compiler: 621 e49d021eSPeter Maydell# ${CC} (if set) 622 e49d021eSPeter Maydell# ${cross_prefix}gcc (if cross-prefix specified) 623 e49d021eSPeter Maydell# system compiler 624 e49d021eSPeter Maydellif test -z "${CC}${cross_prefix}"; then 625 e49d021eSPeter Maydell cc="$host_cc" 626 e49d021eSPeter Maydellelse 627 b3198cc2SStuart Yoder cc="${CC-${cross_prefix}gcc}" 628 e49d021eSPeter Maydellfi 629 e49d021eSPeter Maydell 630 83f73fceSTomoki Sekiyamaif test -z "${CXX}${cross_prefix}"; then 631 83f73fceSTomoki Sekiyama cxx="c++" 632 83f73fceSTomoki Sekiyamaelse 633 83f73fceSTomoki Sekiyama cxx="${CXX-${cross_prefix}g++}" 634 83f73fceSTomoki Sekiyamafi 635 83f73fceSTomoki Sekiyama 636 b3198cc2SStuart Yoderar="${AR-${cross_prefix}ar}" 637 cdbd727cSRichard Hendersonas="${AS-${cross_prefix}as}" 638 5f6f0e27SRichard Hendersonccas="${CCAS-$cc}" 639 3dd46c78SBlue Swirlcpp="${CPP-$cc -E}" 640 b3198cc2SStuart Yoderobjcopy="${OBJCOPY-${cross_prefix}objcopy}" 641 b3198cc2SStuart Yoderld="${LD-${cross_prefix}ld}" 642 9f81aeb5SAlistair Francisranlib="${RANLIB-${cross_prefix}ranlib}" 643 4852ee95SStefan Weilnm="${NM-${cross_prefix}nm}" 644 b3198cc2SStuart Yoderstrip="${STRIP-${cross_prefix}strip}" 645 b3198cc2SStuart Yoderwindres="${WINDRES-${cross_prefix}windres}" 646 17884d7bSSergei Trofimovichpkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}" 647 17884d7bSSergei Trofimovichquery_pkg_config() { 648 17884d7bSSergei Trofimovich "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@" 649 17884d7bSSergei Trofimovich} 650 17884d7bSSergei Trofimovichpkg_config=query_pkg_config 651 47c03744SDave Airliesdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}" 652 ac0df51dSaliguori 653 45d285abSPeter Maydell# If the user hasn't specified ARFLAGS, default to 'rv', just as make does. 654 45d285abSPeter MaydellARFLAGS="${ARFLAGS-rv}" 655 45d285abSPeter Maydell 656 be17dc90SMichael S. Tsirkin# default flags for all hosts 657 2d31515bSPeter Maydell# We use -fwrapv to tell the compiler that we require a C dialect where 658 2d31515bSPeter Maydell# left shift of signed integers is well defined and has the expected 659 2d31515bSPeter Maydell# 2s-complement style results. (Both clang and gcc agree that it 660 2d31515bSPeter Maydell# provides these semantics.) 661 086d5f75SPaolo BonziniQEMU_CFLAGS="-fno-strict-aliasing -fno-common -fwrapv $QEMU_CFLAGS" 662 086d5f75SPaolo BonziniQEMU_CFLAGS="-Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS" 663 c95e3080SKevin WolfQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS" 664 be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS" 665 25211446SPaolo BonziniQEMU_INCLUDES="-iquote . -iquote ${source_path} -iquote ${source_path}/accel/tcg -iquote ${source_path}/include" 666 25211446SPaolo BonziniQEMU_INCLUDES="$QEMU_INCLUDES -iquote ${source_path}/disas/libvixl" 667 086d5f75SPaolo BonziniCFLAGS="-std=gnu99 -Wall" 668 086d5f75SPaolo Bonzini 669 be17dc90SMichael S. Tsirkin 670 cab00a5aSMichael S. Tsirkin# running configure in the source tree? 671 cab00a5aSMichael S. Tsirkin# we know that's the case if configure is there. 672 cab00a5aSMichael S. Tsirkinif test -f "./configure"; then 673 cab00a5aSMichael S. Tsirkin pwd_is_source_path="y" 674 cab00a5aSMichael S. Tsirkinelse 675 cab00a5aSMichael S. Tsirkin pwd_is_source_path="n" 676 cab00a5aSMichael S. Tsirkinfi 677 cab00a5aSMichael S. Tsirkin 678 ac0df51dSaliguoricheck_define() { 679 ac0df51dSaliguoricat > $TMPC <<EOF 680 ac0df51dSaliguori#if !defined($1) 681 fd786e1aSPeter Maydell#error $1 not defined 682 ac0df51dSaliguori#endif 683 ac0df51dSaliguoriint main(void) { return 0; } 684 ac0df51dSaliguoriEOF 685 52166aa0SJuan Quintela compile_object 686 ac0df51dSaliguori} 687 ac0df51dSaliguori 688 307119e7SGerd Hoffmanncheck_include() { 689 307119e7SGerd Hoffmanncat > $TMPC <<EOF 690 307119e7SGerd Hoffmann#include <$1> 691 307119e7SGerd Hoffmannint main(void) { return 0; } 692 307119e7SGerd HoffmannEOF 693 307119e7SGerd Hoffmann compile_object 694 307119e7SGerd Hoffmann} 695 307119e7SGerd Hoffmann 696 93b25869SJohn Snowwrite_c_skeleton() { 697 93b25869SJohn Snow cat > $TMPC <<EOF 698 93b25869SJohn Snowint main(void) { return 0; } 699 93b25869SJohn SnowEOF 700 93b25869SJohn Snow} 701 93b25869SJohn Snow 702 adc28027SAlexander Bulekovwrite_c_fuzzer_skeleton() { 703 adc28027SAlexander Bulekov cat > $TMPC <<EOF 704 adc28027SAlexander Bulekov#include <stdint.h> 705 adc28027SAlexander Bulekov#include <sys/types.h> 706 adc28027SAlexander Bulekovint LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size); 707 adc28027SAlexander Bulekovint LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size) { return 0; } 708 adc28027SAlexander BulekovEOF 709 adc28027SAlexander Bulekov} 710 adc28027SAlexander Bulekov 711 bbea4050SPeter Maydellif check_define __linux__ ; then 712 bbea4050SPeter Maydell targetos="Linux" 713 bbea4050SPeter Maydellelif check_define _WIN32 ; then 714 bbea4050SPeter Maydell targetos='MINGW32' 715 bbea4050SPeter Maydellelif check_define __OpenBSD__ ; then 716 bbea4050SPeter Maydell targetos='OpenBSD' 717 bbea4050SPeter Maydellelif check_define __sun__ ; then 718 bbea4050SPeter Maydell targetos='SunOS' 719 bbea4050SPeter Maydellelif check_define __HAIKU__ ; then 720 bbea4050SPeter Maydell targetos='Haiku' 721 951fedfcSPeter Maydellelif check_define __FreeBSD__ ; then 722 951fedfcSPeter Maydell targetos='FreeBSD' 723 951fedfcSPeter Maydellelif check_define __FreeBSD_kernel__ && check_define __GLIBC__; then 724 951fedfcSPeter Maydell targetos='GNU/kFreeBSD' 725 951fedfcSPeter Maydellelif check_define __DragonFly__ ; then 726 951fedfcSPeter Maydell targetos='DragonFly' 727 951fedfcSPeter Maydellelif check_define __NetBSD__; then 728 951fedfcSPeter Maydell targetos='NetBSD' 729 951fedfcSPeter Maydellelif check_define __APPLE__; then 730 951fedfcSPeter Maydell targetos='Darwin' 731 bbea4050SPeter Maydellelse 732 951fedfcSPeter Maydell # This is a fatal error, but don't report it yet, because we 733 951fedfcSPeter Maydell # might be going to just print the --help text, or it might 734 951fedfcSPeter Maydell # be the result of a missing compiler. 735 951fedfcSPeter Maydell targetos='bogus' 736 951fedfcSPeter Maydell bogus_os='yes' 737 bbea4050SPeter Maydellfi 738 bbea4050SPeter Maydell 739 bbea4050SPeter Maydell# Some host OSes need non-standard checks for which CPU to use. 740 bbea4050SPeter Maydell# Note that these checks are broken for cross-compilation: if you're 741 bbea4050SPeter Maydell# cross-compiling to one of these OSes then you'll need to specify 742 bbea4050SPeter Maydell# the correct CPU with the --cpu option. 743 bbea4050SPeter Maydellcase $targetos in 744 bbea4050SPeter MaydellDarwin) 745 bbea4050SPeter Maydell # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can 746 bbea4050SPeter Maydell # run 64-bit userspace code. 747 bbea4050SPeter Maydell # If the user didn't specify a CPU explicitly and the kernel says this is 748 bbea4050SPeter Maydell # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code. 749 bbea4050SPeter Maydell if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then 750 bbea4050SPeter Maydell cpu="x86_64" 751 bbea4050SPeter Maydell fi 752 bbea4050SPeter Maydell ;; 753 bbea4050SPeter MaydellSunOS) 754 89138857SStefan Weil # $(uname -m) returns i86pc even on an x86_64 box, so default based on isainfo 755 bbea4050SPeter Maydell if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then 756 bbea4050SPeter Maydell cpu="x86_64" 757 bbea4050SPeter Maydell fi 758 bbea4050SPeter Maydellesac 759 bbea4050SPeter Maydell 760 2ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then 761 2ff6b91eSJuan Quintela # command line argument 762 2ff6b91eSJuan Quintela : 763 2ff6b91eSJuan Quintelaelif check_define __i386__ ; then 764 ac0df51dSaliguori cpu="i386" 765 ac0df51dSaliguorielif check_define __x86_64__ ; then 766 c72b26ecSRichard Henderson if check_define __ILP32__ ; then 767 c72b26ecSRichard Henderson cpu="x32" 768 c72b26ecSRichard Henderson else 769 ac0df51dSaliguori cpu="x86_64" 770 c72b26ecSRichard Henderson fi 771 3aa9bd6cSblueswir1elif check_define __sparc__ ; then 772 3aa9bd6cSblueswir1 if check_define __arch64__ ; then 773 3aa9bd6cSblueswir1 cpu="sparc64" 774 3aa9bd6cSblueswir1 else 775 3aa9bd6cSblueswir1 cpu="sparc" 776 3aa9bd6cSblueswir1 fi 777 fdf7ed96Smalcelif check_define _ARCH_PPC ; then 778 fdf7ed96Smalc if check_define _ARCH_PPC64 ; then 779 f8378accSRichard Henderson if check_define _LITTLE_ENDIAN ; then 780 f8378accSRichard Henderson cpu="ppc64le" 781 f8378accSRichard Henderson else 782 fdf7ed96Smalc cpu="ppc64" 783 f8378accSRichard Henderson fi 784 ac0df51dSaliguori else 785 fdf7ed96Smalc cpu="ppc" 786 fdf7ed96Smalc fi 787 afa05235SAurelien Jarnoelif check_define __mips__ ; then 788 afa05235SAurelien Jarno cpu="mips" 789 d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then 790 d66ed0eaSAurelien Jarno if check_define __s390x__ ; then 791 d66ed0eaSAurelien Jarno cpu="s390x" 792 d66ed0eaSAurelien Jarno else 793 d66ed0eaSAurelien Jarno cpu="s390" 794 d66ed0eaSAurelien Jarno fi 795 c4f80543SAlistair Franciselif check_define __riscv ; then 796 c4f80543SAlistair Francis if check_define _LP64 ; then 797 c4f80543SAlistair Francis cpu="riscv64" 798 c4f80543SAlistair Francis else 799 c4f80543SAlistair Francis cpu="riscv32" 800 c4f80543SAlistair Francis fi 801 21d89f84SPeter Maydellelif check_define __arm__ ; then 802 21d89f84SPeter Maydell cpu="arm" 803 1f080313SClaudio Fontanaelif check_define __aarch64__ ; then 804 1f080313SClaudio Fontana cpu="aarch64" 805 fdf7ed96Smalcelse 806 89138857SStefan Weil cpu=$(uname -m) 807 ac0df51dSaliguorifi 808 ac0df51dSaliguori 809 359bc95dSPeter MaydellARCH= 810 359bc95dSPeter Maydell# Normalise host CPU name and set ARCH. 811 359bc95dSPeter Maydell# Note that this case should only have supported host CPUs, not guests. 812 7d13299dSbellardcase "$cpu" in 813 ee35e968SThomas Huth ppc|ppc64|s390x|sparc64|x32|riscv32|riscv64) 814 898be3e0SPeter Maydell ;; 815 f8378accSRichard Henderson ppc64le) 816 f8378accSRichard Henderson ARCH="ppc64" 817 f8378accSRichard Henderson ;; 818 7d13299dSbellard i386|i486|i586|i686|i86pc|BePC) 819 97a847bcSbellard cpu="i386" 820 7d13299dSbellard ;; 821 aaa5fa14Saurel32 x86_64|amd64) 822 aaa5fa14Saurel32 cpu="x86_64" 823 aaa5fa14Saurel32 ;; 824 21d89f84SPeter Maydell armv*b|armv*l|arm) 825 21d89f84SPeter Maydell cpu="arm" 826 7d13299dSbellard ;; 827 1f080313SClaudio Fontana aarch64) 828 1f080313SClaudio Fontana cpu="aarch64" 829 1f080313SClaudio Fontana ;; 830 afa05235SAurelien Jarno mips*) 831 afa05235SAurelien Jarno cpu="mips" 832 afa05235SAurelien Jarno ;; 833 3142255cSblueswir1 sparc|sun4[cdmuv]) 834 ae228531Sbellard cpu="sparc" 835 ae228531Sbellard ;; 836 7d13299dSbellard *) 837 359bc95dSPeter Maydell # This will result in either an error or falling back to TCI later 838 359bc95dSPeter Maydell ARCH=unknown 839 7d13299dSbellard ;; 840 7d13299dSbellardesac 841 359bc95dSPeter Maydellif test -z "$ARCH"; then 842 359bc95dSPeter Maydell ARCH="$cpu" 843 359bc95dSPeter Maydellfi 844 e2d52ad3SJuan Quintela 845 7d13299dSbellard# OS specific 846 0dbfc675SJuan Quintela 847 adfc3e91SStacey Son# host *BSD for user mode 848 adfc3e91SStacey SonHOST_VARIANT_DIR="" 849 adfc3e91SStacey Son 850 7d13299dSbellardcase $targetos in 851 67b915a5SbellardMINGW32*) 852 67b915a5Sbellard mingw32="yes" 853 b0cb0a66SVincent Palatin hax="yes" 854 299e6f19SPaolo Bonzini vhost_user="no" 855 3cec7cc2SKővágó, Zoltán audio_possible_drivers="dsound sdl" 856 307119e7SGerd Hoffmann if check_include dsound.h; then 857 3cec7cc2SKővágó, Zoltán audio_drv_list="dsound" 858 307119e7SGerd Hoffmann else 859 307119e7SGerd Hoffmann audio_drv_list="" 860 307119e7SGerd Hoffmann fi 861 898be3e0SPeter Maydell supported_os="yes" 862 67b915a5Sbellard;; 863 5c40d2bdSthsGNU/kFreeBSD) 864 a167ba50SAurelien Jarno bsd="yes" 865 6a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 866 0bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 867 5c40d2bdSths;; 868 7d3505c5SbellardFreeBSD) 869 7d3505c5Sbellard bsd="yes" 870 0db4a067SPaolo Bonzini make="${MAKE-gmake}" 871 6a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 872 0bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 873 f01576f1SJuergen Lock # needed for kinfo_getvmmap(3) in libutil.h 874 f01576f1SJuergen Lock LIBS="-lutil $LIBS" 875 58952137SVincenzo Maffione netmap="" # enable netmap autodetect 876 adfc3e91SStacey Son HOST_VARIANT_DIR="freebsd" 877 7d3505c5Sbellard;; 878 c5e97233Sblueswir1DragonFly) 879 c5e97233Sblueswir1 bsd="yes" 880 0db4a067SPaolo Bonzini make="${MAKE-gmake}" 881 6a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 882 0bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl pa" 883 adfc3e91SStacey Son HOST_VARIANT_DIR="dragonfly" 884 c5e97233Sblueswir1;; 885 7d3505c5SbellardNetBSD) 886 7d3505c5Sbellard bsd="yes" 887 604a5b99SKamil Rytarowski hax="yes" 888 0db4a067SPaolo Bonzini make="${MAKE-gmake}" 889 6a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 890 0bac1111SKővágó, Zoltán audio_possible_drivers="oss sdl" 891 8ef92a88Sblueswir1 oss_lib="-lossaudio" 892 adfc3e91SStacey Son HOST_VARIANT_DIR="netbsd" 893 7d3505c5Sbellard;; 894 7d3505c5SbellardOpenBSD) 895 7d3505c5Sbellard bsd="yes" 896 0db4a067SPaolo Bonzini make="${MAKE-gmake}" 897 f92c7168SGerd Hoffmann audio_drv_list="try-sdl" 898 0bac1111SKővágó, Zoltán audio_possible_drivers="sdl" 899 adfc3e91SStacey Son HOST_VARIANT_DIR="openbsd" 900 7d3505c5Sbellard;; 901 83fb7adfSbellardDarwin) 902 83fb7adfSbellard bsd="yes" 903 83fb7adfSbellard darwin="yes" 904 b0cb0a66SVincent Palatin hax="yes" 905 c97d6d2cSSergio Andres Gomez Del Real hvf="yes" 906 17969268SFam Zheng LDFLAGS_SHARED="-bundle -undefined dynamic_lookup" 907 1b0f9cc2Saliguori if [ "$cpu" = "x86_64" ] ; then 908 a558ee17SJuan Quintela QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS" 909 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-arch x86_64 $QEMU_LDFLAGS" 910 1b0f9cc2Saliguori fi 911 fd677642Sths cocoa="yes" 912 6a485418SGerd Hoffmann audio_drv_list="coreaudio try-sdl" 913 14382605SKővágó, Zoltán audio_possible_drivers="coreaudio sdl" 914 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-framework CoreFoundation -framework IOKit $QEMU_LDFLAGS" 915 7973f21cSJuan Quintela libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" 916 a0b7cf6bSPeter Maydell # Disable attempts to use ObjectiveC features in os/object.h since they 917 a0b7cf6bSPeter Maydell # won't work when we're compiling with gcc as a C compiler. 918 a0b7cf6bSPeter Maydell QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS" 919 adfc3e91SStacey Son HOST_VARIANT_DIR="darwin" 920 83fb7adfSbellard;; 921 ec530c81SbellardSunOS) 922 ec530c81Sbellard solaris="yes" 923 0db4a067SPaolo Bonzini make="${MAKE-gmake}" 924 0db4a067SPaolo Bonzini install="${INSTALL-ginstall}" 925 e2d8830eSBrad smbd="${SMBD-/usr/sfw/sbin/smbd}" 926 6b4d2ba1Sths if test -f /usr/include/sys/soundcard.h ; then 927 6a485418SGerd Hoffmann audio_drv_list="oss try-sdl" 928 6b4d2ba1Sths fi 929 c2de5c91Smalc audio_possible_drivers="oss sdl" 930 d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h 931 d741429aSBlue Swirl QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" 932 d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h 933 d741429aSBlue Swirl QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" 934 560d375fSAndreas Färber solarisnetlibs="-lsocket -lnsl -lresolv" 935 560d375fSAndreas Färber LIBS="$solarisnetlibs $LIBS" 936 ec530c81Sbellard;; 937 179cf400SAndreas FärberHaiku) 938 179cf400SAndreas Färber haiku="yes" 939 fc433430SDavid CARLIER QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS -DBSD_SOURCE $QEMU_CFLAGS" 940 fc433430SDavid CARLIER LIBS="-lposix_error_mapper -lnetwork -lbsd $LIBS" 941 179cf400SAndreas Färber;; 942 898be3e0SPeter MaydellLinux) 943 7183834aSGerd Hoffmann audio_drv_list="try-pa oss" 944 0bac1111SKővágó, Zoltán audio_possible_drivers="oss alsa sdl pa" 945 5327cf48Sbellard linux="yes" 946 831b7825Sths linux_user="yes" 947 af2be207SJan Kiszka kvm="yes" 948 25211446SPaolo Bonzini QEMU_INCLUDES="-isystem ${source_path}/linux-headers -I$PWD/linux-headers $QEMU_INCLUDES" 949 3efac6ebSTomáš Golembiovský libudev="yes" 950 898be3e0SPeter Maydell;; 951 7d13299dSbellardesac 952 7d13299dSbellard 953 7d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 954 b1a550a0Spbrook if [ "$darwin" != "yes" ] ; then 955 84778508Sblueswir1 bsd_user="yes" 956 7d3505c5Sbellard fi 957 08de3949SAndreas Färberfi 958 7d3505c5Sbellard 959 0db4a067SPaolo Bonzini: ${make=${MAKE-make}} 960 0db4a067SPaolo Bonzini: ${install=${INSTALL-install}} 961 faf44142SDaniel P. Berrangé# We prefer python 3.x. A bare 'python' is traditionally 962 faf44142SDaniel P. Berrangé# python 2.x, but some distros have it as python 3.x, so 963 ddf90699SEduardo Habkost# we check that too 964 faf44142SDaniel P. Berrangépython= 965 0a01d76fSMarc-André Lureauexplicit_python=no 966 ddf90699SEduardo Habkostfor binary in "${PYTHON-python3}" python 967 faf44142SDaniel P. Berrangédo 968 faf44142SDaniel P. Berrangé if has "$binary" 969 faf44142SDaniel P. Berrangé then 970 95c5f2deSPaolo Bonzini python=$(command -v "$binary") 971 faf44142SDaniel P. Berrangé break 972 faf44142SDaniel P. Berrangé fi 973 faf44142SDaniel P. Berrangédone 974 903458c8SMarkus Armbruster 975 903458c8SMarkus Armbrustersphinx_build= 976 903458c8SMarkus Armbrusterfor binary in sphinx-build-3 sphinx-build 977 903458c8SMarkus Armbrusterdo 978 903458c8SMarkus Armbruster if has "$binary" 979 903458c8SMarkus Armbruster then 980 903458c8SMarkus Armbruster sphinx_build=$(command -v "$binary") 981 903458c8SMarkus Armbruster break 982 903458c8SMarkus Armbruster fi 983 903458c8SMarkus Armbrusterdone 984 903458c8SMarkus Armbruster 985 39d87c8cSAlex Bennée# Check for ancillary tools used in testing 986 39d87c8cSAlex Bennéegenisoimage= 987 3df437c7SAlex Bennéefor binary in genisoimage mkisofs 988 39d87c8cSAlex Bennéedo 989 39d87c8cSAlex Bennée if has $binary 990 39d87c8cSAlex Bennée then 991 39d87c8cSAlex Bennée genisoimage=$(command -v "$binary") 992 39d87c8cSAlex Bennée break 993 39d87c8cSAlex Bennée fi 994 39d87c8cSAlex Bennéedone 995 39d87c8cSAlex Bennée 996 e2d8830eSBrad: ${smbd=${SMBD-/usr/sbin/smbd}} 997 0db4a067SPaolo Bonzini 998 3c4a4d0dSPeter Maydell# Default objcc to clang if available, otherwise use CC 999 3c4a4d0dSPeter Maydellif has clang; then 1000 3c4a4d0dSPeter Maydell objcc=clang 1001 3c4a4d0dSPeter Maydellelse 1002 3c4a4d0dSPeter Maydell objcc="$cc" 1003 3c4a4d0dSPeter Maydellfi 1004 3c4a4d0dSPeter Maydell 1005 3457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then 1006 3457a3f8SJuan Quintela EXESUF=".exe" 1007 17969268SFam Zheng DSOSUF=".dll" 1008 78e9d4adSStefan Weil # MinGW needs -mthreads for TLS and macro _MT. 1009 086d5f75SPaolo Bonzini CFLAGS="-mthreads $CFLAGS" 1010 b965e8c5SPaolo Bonzini LIBS="-lwinmm -lws2_32 $LIBS" 1011 93b25869SJohn Snow write_c_skeleton; 1012 f7cf5d5bSStefan Weil if compile_prog "" "-liberty" ; then 1013 f7cf5d5bSStefan Weil LIBS="-liberty $LIBS" 1014 f7cf5d5bSStefan Weil fi 1015 c5ec15eaSStefan Weil prefix="c:/Program Files/QEMU" 1016 683035deSPaolo Bonzini confsuffix="" 1017 105fad6bSBishara AbuHattoum libs_qga="-lws2_32 -lwinmm -lpowrprof -lwtsapi32 -lwininet -liphlpapi -lnetapi32 $libs_qga" 1018 3457a3f8SJuan Quintelafi 1019 3457a3f8SJuan Quintela 1020 487fefdbSAnthony Liguoriwerror="" 1021 85aa5189Sbellard 1022 7d13299dSbellardfor opt do 1023 89138857SStefan Weil optarg=$(expr "x$opt" : 'x[^=]*=\(.*\)') 1024 7d13299dSbellard case "$opt" in 1025 2efc3265Sbellard --help|-h) show_help=yes 1026 2efc3265Sbellard ;; 1027 99123e13SMike Frysinger --version|-V) exec cat $source_path/VERSION 1028 99123e13SMike Frysinger ;; 1029 b1a550a0Spbrook --prefix=*) prefix="$optarg" 1030 7d13299dSbellard ;; 1031 b1a550a0Spbrook --interp-prefix=*) interp_prefix="$optarg" 1032 32ce6337Sbellard ;; 1033 ac0df51dSaliguori --cross-prefix=*) 1034 7d13299dSbellard ;; 1035 ac0df51dSaliguori --cc=*) 1036 7d13299dSbellard ;; 1037 b1a550a0Spbrook --host-cc=*) host_cc="$optarg" 1038 83469015Sbellard ;; 1039 83f73fceSTomoki Sekiyama --cxx=*) 1040 83f73fceSTomoki Sekiyama ;; 1041 e007dbecSMichael S. Tsirkin --iasl=*) iasl="$optarg" 1042 e007dbecSMichael S. Tsirkin ;; 1043 3c4a4d0dSPeter Maydell --objcc=*) objcc="$optarg" 1044 3c4a4d0dSPeter Maydell ;; 1045 b1a550a0Spbrook --make=*) make="$optarg" 1046 7d13299dSbellard ;; 1047 6a882643Spbrook --install=*) install="$optarg" 1048 6a882643Spbrook ;; 1049 0a01d76fSMarc-André Lureau --python=*) python="$optarg" ; explicit_python=yes 1050 c886edfbSBlue Swirl ;; 1051 2eb054c2SPeter Maydell --sphinx-build=*) sphinx_build="$optarg" 1052 2eb054c2SPeter Maydell ;; 1053 a5665051SPaolo Bonzini --skip-meson) skip_meson=yes 1054 a5665051SPaolo Bonzini ;; 1055 a5665051SPaolo Bonzini --meson=*) meson="$optarg" 1056 a5665051SPaolo Bonzini ;; 1057 e2d8830eSBrad --smbd=*) smbd="$optarg" 1058 e2d8830eSBrad ;; 1059 e2a2ed06SJuan Quintela --extra-cflags=*) 1060 7d13299dSbellard ;; 1061 11cde1c8SBruno Dominguez --extra-cxxflags=*) 1062 11cde1c8SBruno Dominguez ;; 1063 e2a2ed06SJuan Quintela --extra-ldflags=*) 1064 7d13299dSbellard ;; 1065 5bc62e01SGerd Hoffmann --enable-debug-info) 1066 5bc62e01SGerd Hoffmann ;; 1067 5bc62e01SGerd Hoffmann --disable-debug-info) 1068 5bc62e01SGerd Hoffmann ;; 1069 d75402b5SAlex Bennée --cross-cc-*) 1070 d75402b5SAlex Bennée ;; 1071 17969268SFam Zheng --enable-modules) 1072 17969268SFam Zheng modules="yes" 1073 17969268SFam Zheng ;; 1074 3aa88b31SStefan Hajnoczi --disable-modules) 1075 3aa88b31SStefan Hajnoczi modules="no" 1076 3aa88b31SStefan Hajnoczi ;; 1077 bd83c861SChristian Ehrhardt --disable-module-upgrades) module_upgrades="no" 1078 bd83c861SChristian Ehrhardt ;; 1079 bd83c861SChristian Ehrhardt --enable-module-upgrades) module_upgrades="yes" 1080 bd83c861SChristian Ehrhardt ;; 1081 2ff6b91eSJuan Quintela --cpu=*) 1082 7d13299dSbellard ;; 1083 b1a550a0Spbrook --target-list=*) target_list="$optarg" 1084 447e133fSAlex Bennée if test "$target_list_exclude"; then 1085 447e133fSAlex Bennée error_exit "Can't mix --target-list with --target-list-exclude" 1086 447e133fSAlex Bennée fi 1087 447e133fSAlex Bennée ;; 1088 447e133fSAlex Bennée --target-list-exclude=*) target_list_exclude="$optarg" 1089 447e133fSAlex Bennée if test "$target_list"; then 1090 447e133fSAlex Bennée error_exit "Can't mix --target-list-exclude with --target-list" 1091 447e133fSAlex Bennée fi 1092 de83cd02Sbellard ;; 1093 5b808275SLluís Vilanova --enable-trace-backends=*) trace_backends="$optarg" 1094 5b808275SLluís Vilanova ;; 1095 5b808275SLluís Vilanova # XXX: backwards compatibility 1096 5b808275SLluís Vilanova --enable-trace-backend=*) trace_backends="$optarg" 1097 94a420b1SStefan Hajnoczi ;; 1098 74242e0fSPaolo Bonzini --with-trace-file=*) trace_file="$optarg" 1099 9410b56cSPrerna Saxena ;; 1100 f3494749SPaolo Bonzini --with-default-devices) default_devices="yes" 1101 f3494749SPaolo Bonzini ;; 1102 f3494749SPaolo Bonzini --without-default-devices) default_devices="no" 1103 f3494749SPaolo Bonzini ;; 1104 7d13299dSbellard --enable-gprof) gprof="yes" 1105 7d13299dSbellard ;; 1106 1d728c39SBlue Swirl --enable-gcov) gcov="yes" 1107 1d728c39SBlue Swirl ;; 1108 79427693SLoïc Minier --static) 1109 79427693SLoïc Minier static="yes" 1110 17884d7bSSergei Trofimovich QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS" 1111 43ce4dfeSbellard ;; 1112 0b24e75fSPaolo Bonzini --mandir=*) mandir="$optarg" 1113 0b24e75fSPaolo Bonzini ;; 1114 0b24e75fSPaolo Bonzini --bindir=*) bindir="$optarg" 1115 0b24e75fSPaolo Bonzini ;; 1116 3aa5d2beSAlon Levy --libdir=*) libdir="$optarg" 1117 3aa5d2beSAlon Levy ;; 1118 8bf188aaSMichael Tokarev --libexecdir=*) libexecdir="$optarg" 1119 8bf188aaSMichael Tokarev ;; 1120 0f94d6daSAlon Levy --includedir=*) includedir="$optarg" 1121 0f94d6daSAlon Levy ;; 1122 528ae5b8SEduardo Habkost --datadir=*) datadir="$optarg" 1123 0b24e75fSPaolo Bonzini ;; 1124 023d3d67SEduardo Habkost --with-confsuffix=*) confsuffix="$optarg" 1125 023d3d67SEduardo Habkost ;; 1126 850da188SEduardo Habkost --docdir=*) qemu_docdir="$optarg" 1127 0b24e75fSPaolo Bonzini ;; 1128 ca2fb938SAndre Przywara --sysconfdir=*) sysconfdir="$optarg" 1129 07381cc1SAnthony Liguori ;; 1130 785c23aeSLuiz Capitulino --localstatedir=*) local_statedir="$optarg" 1131 785c23aeSLuiz Capitulino ;; 1132 3d5eecabSGerd Hoffmann --firmwarepath=*) firmwarepath="$optarg" 1133 3d5eecabSGerd Hoffmann ;; 1134 181ce1d0SOlaf Hering --host=*|--build=*|\ 1135 181ce1d0SOlaf Hering --disable-dependency-tracking|\ 1136 785c23aeSLuiz Capitulino --sbindir=*|--sharedstatedir=*|\ 1137 023ddd74SMax Filippov --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\ 1138 023ddd74SMax Filippov --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*) 1139 023ddd74SMax Filippov # These switches are silently ignored, for compatibility with 1140 023ddd74SMax Filippov # autoconf-generated configure scripts. This allows QEMU's 1141 023ddd74SMax Filippov # configure to be used by RPM and similar macros that set 1142 023ddd74SMax Filippov # lots of directory switches by default. 1143 023ddd74SMax Filippov ;; 1144 97a847bcSbellard --disable-sdl) sdl="no" 1145 97a847bcSbellard ;; 1146 c4198157SJuan Quintela --enable-sdl) sdl="yes" 1147 c4198157SJuan Quintela ;; 1148 a442fe2fSDaniel P. Berrangé --disable-sdl-image) sdl_image="no" 1149 a442fe2fSDaniel P. Berrangé ;; 1150 a442fe2fSDaniel P. Berrangé --enable-sdl-image) sdl_image="yes" 1151 a442fe2fSDaniel P. Berrangé ;; 1152 3556c233SPaolo Bonzini --disable-qom-cast-debug) qom_cast_debug="no" 1153 3556c233SPaolo Bonzini ;; 1154 3556c233SPaolo Bonzini --enable-qom-cast-debug) qom_cast_debug="yes" 1155 3556c233SPaolo Bonzini ;; 1156 983eef5aSMeador Inge --disable-virtfs) virtfs="no" 1157 983eef5aSMeador Inge ;; 1158 983eef5aSMeador Inge --enable-virtfs) virtfs="yes" 1159 983eef5aSMeador Inge ;; 1160 fe8fc5aeSPaolo Bonzini --disable-mpath) mpath="no" 1161 fe8fc5aeSPaolo Bonzini ;; 1162 fe8fc5aeSPaolo Bonzini --enable-mpath) mpath="yes" 1163 fe8fc5aeSPaolo Bonzini ;; 1164 821601eaSJes Sorensen --disable-vnc) vnc="no" 1165 821601eaSJes Sorensen ;; 1166 821601eaSJes Sorensen --enable-vnc) vnc="yes" 1167 821601eaSJes Sorensen ;; 1168 2f6a1ab0Sblueswir1 --oss-lib=*) oss_lib="$optarg" 1169 2f6a1ab0Sblueswir1 ;; 1170 0c58ac1cSmalc --audio-drv-list=*) audio_drv_list="$optarg" 1171 0c58ac1cSmalc ;; 1172 89138857SStefan Weil --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1173 b64ec4e4SFam Zheng ;; 1174 89138857SStefan Weil --block-drv-ro-whitelist=*) block_drv_ro_whitelist=$(echo "$optarg" | sed -e 's/,/ /g') 1175 eb852011SMarkus Armbruster ;; 1176 f8393946Saurel32 --enable-debug-tcg) debug_tcg="yes" 1177 f8393946Saurel32 ;; 1178 f8393946Saurel32 --disable-debug-tcg) debug_tcg="no" 1179 f8393946Saurel32 ;; 1180 f3d08ee6SPaul Brook --enable-debug) 1181 f3d08ee6SPaul Brook # Enable debugging options that aren't excessively noisy 1182 f3d08ee6SPaul Brook debug_tcg="yes" 1183 1fcc6d42SPeter Xu debug_mutex="yes" 1184 f3d08ee6SPaul Brook debug="yes" 1185 f3d08ee6SPaul Brook strip_opt="no" 1186 b553a042SJohn Snow fortify_source="no" 1187 f3d08ee6SPaul Brook ;; 1188 247724cbSMarc-André Lureau --enable-sanitizers) sanitizers="yes" 1189 247724cbSMarc-André Lureau ;; 1190 247724cbSMarc-André Lureau --disable-sanitizers) sanitizers="no" 1191 247724cbSMarc-André Lureau ;; 1192 0aebab04SLingfeng Yang --enable-tsan) tsan="yes" 1193 0aebab04SLingfeng Yang ;; 1194 0aebab04SLingfeng Yang --disable-tsan) tsan="no" 1195 0aebab04SLingfeng Yang ;; 1196 03b4fe7dSaliguori --enable-sparse) sparse="yes" 1197 03b4fe7dSaliguori ;; 1198 03b4fe7dSaliguori --disable-sparse) sparse="no" 1199 03b4fe7dSaliguori ;; 1200 1625af87Saliguori --disable-strip) strip_opt="no" 1201 1625af87Saliguori ;; 1202 2f9606b3Saliguori --disable-vnc-sasl) vnc_sasl="no" 1203 2f9606b3Saliguori ;; 1204 ea784e3bSJuan Quintela --enable-vnc-sasl) vnc_sasl="yes" 1205 ea784e3bSJuan Quintela ;; 1206 2f6f5c7aSCorentin Chary --disable-vnc-jpeg) vnc_jpeg="no" 1207 2f6f5c7aSCorentin Chary ;; 1208 2f6f5c7aSCorentin Chary --enable-vnc-jpeg) vnc_jpeg="yes" 1209 2f6f5c7aSCorentin Chary ;; 1210 efe556adSCorentin Chary --disable-vnc-png) vnc_png="no" 1211 efe556adSCorentin Chary ;; 1212 efe556adSCorentin Chary --enable-vnc-png) vnc_png="yes" 1213 efe556adSCorentin Chary ;; 1214 443f1376Sbellard --disable-slirp) slirp="no" 1215 c20709aaSbellard ;; 1216 7c57bdd8SMarc-André Lureau --enable-slirp=git) slirp="git" 1217 7c57bdd8SMarc-André Lureau ;; 1218 675b9b53SMarc-André Lureau --enable-slirp=system) slirp="system" 1219 675b9b53SMarc-André Lureau ;; 1220 e0e6c8c0Saliguori --disable-vde) vde="no" 1221 8a16d273Sths ;; 1222 dfb278bdSJuan Quintela --enable-vde) vde="yes" 1223 dfb278bdSJuan Quintela ;; 1224 58952137SVincenzo Maffione --disable-netmap) netmap="no" 1225 58952137SVincenzo Maffione ;; 1226 58952137SVincenzo Maffione --enable-netmap) netmap="yes" 1227 58952137SVincenzo Maffione ;; 1228 e37630caSaliguori --disable-xen) xen="no" 1229 e37630caSaliguori ;; 1230 fc321b4bSJuan Quintela --enable-xen) xen="yes" 1231 fc321b4bSJuan Quintela ;; 1232 eb6fda0fSAnthony PERARD --disable-xen-pci-passthrough) xen_pci_passthrough="no" 1233 eb6fda0fSAnthony PERARD ;; 1234 eb6fda0fSAnthony PERARD --enable-xen-pci-passthrough) xen_pci_passthrough="yes" 1235 eb6fda0fSAnthony PERARD ;; 1236 2e4d9fb1Saurel32 --disable-brlapi) brlapi="no" 1237 2e4d9fb1Saurel32 ;; 1238 4ffcedb6SJuan Quintela --enable-brlapi) brlapi="yes" 1239 4ffcedb6SJuan Quintela ;; 1240 7ba1e619Saliguori --disable-kvm) kvm="no" 1241 7ba1e619Saliguori ;; 1242 b31a0277SJuan Quintela --enable-kvm) kvm="yes" 1243 b31a0277SJuan Quintela ;; 1244 b0cb0a66SVincent Palatin --disable-hax) hax="no" 1245 180fb750Szhanghailiang ;; 1246 b0cb0a66SVincent Palatin --enable-hax) hax="yes" 1247 180fb750Szhanghailiang ;; 1248 c97d6d2cSSergio Andres Gomez Del Real --disable-hvf) hvf="no" 1249 c97d6d2cSSergio Andres Gomez Del Real ;; 1250 c97d6d2cSSergio Andres Gomez Del Real --enable-hvf) hvf="yes" 1251 c97d6d2cSSergio Andres Gomez Del Real ;; 1252 d661d9a4SJustin Terry (VM) --disable-whpx) whpx="no" 1253 d661d9a4SJustin Terry (VM) ;; 1254 d661d9a4SJustin Terry (VM) --enable-whpx) whpx="yes" 1255 d661d9a4SJustin Terry (VM) ;; 1256 9195b2c2SStefan Weil --disable-tcg-interpreter) tcg_interpreter="no" 1257 9195b2c2SStefan Weil ;; 1258 9195b2c2SStefan Weil --enable-tcg-interpreter) tcg_interpreter="yes" 1259 9195b2c2SStefan Weil ;; 1260 47e98658SCorey Bryant --disable-cap-ng) cap_ng="no" 1261 47e98658SCorey Bryant ;; 1262 47e98658SCorey Bryant --enable-cap-ng) cap_ng="yes" 1263 47e98658SCorey Bryant ;; 1264 b3f6ea7eSPaolo Bonzini --disable-tcg) tcg="no" 1265 b3f6ea7eSPaolo Bonzini ;; 1266 b3f6ea7eSPaolo Bonzini --enable-tcg) tcg="yes" 1267 b3f6ea7eSPaolo Bonzini ;; 1268 5a22ab71SYang Zhong --disable-malloc-trim) malloc_trim="no" 1269 5a22ab71SYang Zhong ;; 1270 5a22ab71SYang Zhong --enable-malloc-trim) malloc_trim="yes" 1271 5a22ab71SYang Zhong ;; 1272 cd4ec0b4SGerd Hoffmann --disable-spice) spice="no" 1273 cd4ec0b4SGerd Hoffmann ;; 1274 cd4ec0b4SGerd Hoffmann --enable-spice) spice="yes" 1275 cd4ec0b4SGerd Hoffmann ;; 1276 c589b249SRonnie Sahlberg --disable-libiscsi) libiscsi="no" 1277 c589b249SRonnie Sahlberg ;; 1278 c589b249SRonnie Sahlberg --enable-libiscsi) libiscsi="yes" 1279 c589b249SRonnie Sahlberg ;; 1280 6542aa9cSPeter Lieven --disable-libnfs) libnfs="no" 1281 6542aa9cSPeter Lieven ;; 1282 6542aa9cSPeter Lieven --enable-libnfs) libnfs="yes" 1283 6542aa9cSPeter Lieven ;; 1284 05c2a3e7Sbellard --enable-profiler) profiler="yes" 1285 05c2a3e7Sbellard ;; 1286 14821030SPavel Borzenkov --disable-cocoa) cocoa="no" 1287 14821030SPavel Borzenkov ;; 1288 c2de5c91Smalc --enable-cocoa) 1289 c2de5c91Smalc cocoa="yes" ; 1290 89138857SStefan Weil audio_drv_list="coreaudio $(echo $audio_drv_list | sed s,coreaudio,,g)" 1291 5b0753e0Sbellard ;; 1292 cad25d69Spbrook --disable-system) softmmu="no" 1293 0a8e90f4Spbrook ;; 1294 cad25d69Spbrook --enable-system) softmmu="yes" 1295 0a8e90f4Spbrook ;; 1296 0953a80fSZachary Amsden --disable-user) 1297 0953a80fSZachary Amsden linux_user="no" ; 1298 0953a80fSZachary Amsden bsd_user="no" ; 1299 0953a80fSZachary Amsden ;; 1300 0953a80fSZachary Amsden --enable-user) ;; 1301 831b7825Sths --disable-linux-user) linux_user="no" 1302 0a8e90f4Spbrook ;; 1303 831b7825Sths --enable-linux-user) linux_user="yes" 1304 831b7825Sths ;; 1305 84778508Sblueswir1 --disable-bsd-user) bsd_user="no" 1306 84778508Sblueswir1 ;; 1307 84778508Sblueswir1 --enable-bsd-user) bsd_user="yes" 1308 84778508Sblueswir1 ;; 1309 40d6444eSAvi Kivity --enable-pie) pie="yes" 1310 34005a00SKirill A. Shutemov ;; 1311 40d6444eSAvi Kivity --disable-pie) pie="no" 1312 34005a00SKirill A. Shutemov ;; 1313 85aa5189Sbellard --enable-werror) werror="yes" 1314 85aa5189Sbellard ;; 1315 85aa5189Sbellard --disable-werror) werror="no" 1316 85aa5189Sbellard ;; 1317 63678e17SSteven Noonan --enable-stack-protector) stack_protector="yes" 1318 63678e17SSteven Noonan ;; 1319 63678e17SSteven Noonan --disable-stack-protector) stack_protector="no" 1320 63678e17SSteven Noonan ;; 1321 1e4f6065SDaniele Buono --enable-safe-stack) safe_stack="yes" 1322 1e4f6065SDaniele Buono ;; 1323 1e4f6065SDaniele Buono --disable-safe-stack) safe_stack="no" 1324 1e4f6065SDaniele Buono ;; 1325 4d3b6f6eSbalrog --disable-curses) curses="no" 1326 4d3b6f6eSbalrog ;; 1327 c584a6d0SJuan Quintela --enable-curses) curses="yes" 1328 c584a6d0SJuan Quintela ;; 1329 e08bb301SSamuel Thibault --disable-iconv) iconv="no" 1330 e08bb301SSamuel Thibault ;; 1331 e08bb301SSamuel Thibault --enable-iconv) iconv="yes" 1332 e08bb301SSamuel Thibault ;; 1333 769ce76dSAlexander Graf --disable-curl) curl="no" 1334 769ce76dSAlexander Graf ;; 1335 788c8196SJuan Quintela --enable-curl) curl="yes" 1336 788c8196SJuan Quintela ;; 1337 2df87df7SJuan Quintela --disable-fdt) fdt="no" 1338 2df87df7SJuan Quintela ;; 1339 2df87df7SJuan Quintela --enable-fdt) fdt="yes" 1340 2df87df7SJuan Quintela ;; 1341 5c6c3a6cSChristoph Hellwig --disable-linux-aio) linux_aio="no" 1342 5c6c3a6cSChristoph Hellwig ;; 1343 5c6c3a6cSChristoph Hellwig --enable-linux-aio) linux_aio="yes" 1344 5c6c3a6cSChristoph Hellwig ;; 1345 c10dd856SAarushi Mehta --disable-linux-io-uring) linux_io_uring="no" 1346 c10dd856SAarushi Mehta ;; 1347 c10dd856SAarushi Mehta --enable-linux-io-uring) linux_io_uring="yes" 1348 c10dd856SAarushi Mehta ;; 1349 758e8e38SVenkateswararao Jujjuri (JV) --disable-attr) attr="no" 1350 758e8e38SVenkateswararao Jujjuri (JV) ;; 1351 758e8e38SVenkateswararao Jujjuri (JV) --enable-attr) attr="yes" 1352 758e8e38SVenkateswararao Jujjuri (JV) ;; 1353 a40161cbSPaolo Bonzini --disable-membarrier) membarrier="no" 1354 a40161cbSPaolo Bonzini ;; 1355 a40161cbSPaolo Bonzini --enable-membarrier) membarrier="yes" 1356 a40161cbSPaolo Bonzini ;; 1357 77755340Sths --disable-blobs) blobs="no" 1358 77755340Sths ;; 1359 7e563bfbSThomas Huth --with-pkgversion=*) pkgversion="$optarg" 1360 4a19f1ecSpbrook ;; 1361 519175a2SAlex Barcelo --with-coroutine=*) coroutine="$optarg" 1362 519175a2SAlex Barcelo ;; 1363 70c60c08SStefan Hajnoczi --disable-coroutine-pool) coroutine_pool="no" 1364 70c60c08SStefan Hajnoczi ;; 1365 70c60c08SStefan Hajnoczi --enable-coroutine-pool) coroutine_pool="yes" 1366 70c60c08SStefan Hajnoczi ;; 1367 7d992e4dSPeter Lieven --enable-debug-stack-usage) debug_stack_usage="yes" 1368 7d992e4dSPeter Lieven ;; 1369 f0d92b56SLongpeng(Mike) --enable-crypto-afalg) crypto_afalg="yes" 1370 f0d92b56SLongpeng(Mike) ;; 1371 f0d92b56SLongpeng(Mike) --disable-crypto-afalg) crypto_afalg="no" 1372 f0d92b56SLongpeng(Mike) ;; 1373 a25dba17SJuan Quintela --disable-docs) docs="no" 1374 70ec5dc0SAnthony Liguori ;; 1375 a25dba17SJuan Quintela --enable-docs) docs="yes" 1376 83a3ab8bSJuan Quintela ;; 1377 d5970055SMichael S. Tsirkin --disable-vhost-net) vhost_net="no" 1378 d5970055SMichael S. Tsirkin ;; 1379 d5970055SMichael S. Tsirkin --enable-vhost-net) vhost_net="yes" 1380 d5970055SMichael S. Tsirkin ;; 1381 042cea27SGonglei --disable-vhost-crypto) vhost_crypto="no" 1382 042cea27SGonglei ;; 1383 299e6f19SPaolo Bonzini --enable-vhost-crypto) vhost_crypto="yes" 1384 042cea27SGonglei ;; 1385 5e9be92dSNicholas Bellinger --disable-vhost-scsi) vhost_scsi="no" 1386 5e9be92dSNicholas Bellinger ;; 1387 5e9be92dSNicholas Bellinger --enable-vhost-scsi) vhost_scsi="yes" 1388 5e9be92dSNicholas Bellinger ;; 1389 fc0b9b0eSStefan Hajnoczi --disable-vhost-vsock) vhost_vsock="no" 1390 fc0b9b0eSStefan Hajnoczi ;; 1391 fc0b9b0eSStefan Hajnoczi --enable-vhost-vsock) vhost_vsock="yes" 1392 fc0b9b0eSStefan Hajnoczi ;; 1393 98fc1adaSDr. David Alan Gilbert --disable-vhost-user-fs) vhost_user_fs="no" 1394 98fc1adaSDr. David Alan Gilbert ;; 1395 98fc1adaSDr. David Alan Gilbert --enable-vhost-user-fs) vhost_user_fs="yes" 1396 98fc1adaSDr. David Alan Gilbert ;; 1397 da076ffeSGerd Hoffmann --disable-opengl) opengl="no" 1398 20ff075bSMichael Walle ;; 1399 da076ffeSGerd Hoffmann --enable-opengl) opengl="yes" 1400 20ff075bSMichael Walle ;; 1401 f27aaf4bSChristian Brunner --disable-rbd) rbd="no" 1402 f27aaf4bSChristian Brunner ;; 1403 f27aaf4bSChristian Brunner --enable-rbd) rbd="yes" 1404 f27aaf4bSChristian Brunner ;; 1405 8c84cf11SSergei Trofimovich --disable-xfsctl) xfs="no" 1406 8c84cf11SSergei Trofimovich ;; 1407 8c84cf11SSergei Trofimovich --enable-xfsctl) xfs="yes" 1408 8c84cf11SSergei Trofimovich ;; 1409 7b02f544SMarc-André Lureau --disable-smartcard) smartcard="no" 1410 111a38b0SRobert Relyea ;; 1411 7b02f544SMarc-André Lureau --enable-smartcard) smartcard="yes" 1412 111a38b0SRobert Relyea ;; 1413 2b2325ffSGerd Hoffmann --disable-libusb) libusb="no" 1414 2b2325ffSGerd Hoffmann ;; 1415 2b2325ffSGerd Hoffmann --enable-libusb) libusb="yes" 1416 2b2325ffSGerd Hoffmann ;; 1417 69354a83SHans de Goede --disable-usb-redir) usb_redir="no" 1418 69354a83SHans de Goede ;; 1419 69354a83SHans de Goede --enable-usb-redir) usb_redir="yes" 1420 69354a83SHans de Goede ;; 1421 1ece9905SAlon Levy --disable-zlib-test) zlib="no" 1422 1ece9905SAlon Levy ;; 1423 b25c9dffSStefan Weil --disable-lzo) lzo="no" 1424 b25c9dffSStefan Weil ;; 1425 607dacd0Sqiaonuohan --enable-lzo) lzo="yes" 1426 607dacd0Sqiaonuohan ;; 1427 b25c9dffSStefan Weil --disable-snappy) snappy="no" 1428 b25c9dffSStefan Weil ;; 1429 607dacd0Sqiaonuohan --enable-snappy) snappy="yes" 1430 607dacd0Sqiaonuohan ;; 1431 6b383c08SPeter Wu --disable-bzip2) bzip2="no" 1432 6b383c08SPeter Wu ;; 1433 6b383c08SPeter Wu --enable-bzip2) bzip2="yes" 1434 6b383c08SPeter Wu ;; 1435 83bc1f97SJulio Faracco --enable-lzfse) lzfse="yes" 1436 83bc1f97SJulio Faracco ;; 1437 83bc1f97SJulio Faracco --disable-lzfse) lzfse="no" 1438 83bc1f97SJulio Faracco ;; 1439 3a678481SJuan Quintela --disable-zstd) zstd="no" 1440 3a678481SJuan Quintela ;; 1441 3a678481SJuan Quintela --enable-zstd) zstd="yes" 1442 3a678481SJuan Quintela ;; 1443 d138cee9SMichael Roth --enable-guest-agent) guest_agent="yes" 1444 d138cee9SMichael Roth ;; 1445 d138cee9SMichael Roth --disable-guest-agent) guest_agent="no" 1446 d138cee9SMichael Roth ;; 1447 9dacf32dSYossi Hindin --enable-guest-agent-msi) guest_agent_msi="yes" 1448 9dacf32dSYossi Hindin ;; 1449 9dacf32dSYossi Hindin --disable-guest-agent-msi) guest_agent_msi="no" 1450 9dacf32dSYossi Hindin ;; 1451 d9840e25STomoki Sekiyama --with-vss-sdk) vss_win32_sdk="" 1452 d9840e25STomoki Sekiyama ;; 1453 d9840e25STomoki Sekiyama --with-vss-sdk=*) vss_win32_sdk="$optarg" 1454 d9840e25STomoki Sekiyama ;; 1455 d9840e25STomoki Sekiyama --without-vss-sdk) vss_win32_sdk="no" 1456 d9840e25STomoki Sekiyama ;; 1457 d9840e25STomoki Sekiyama --with-win-sdk) win_sdk="" 1458 d9840e25STomoki Sekiyama ;; 1459 d9840e25STomoki Sekiyama --with-win-sdk=*) win_sdk="$optarg" 1460 d9840e25STomoki Sekiyama ;; 1461 d9840e25STomoki Sekiyama --without-win-sdk) win_sdk="no" 1462 d9840e25STomoki Sekiyama ;; 1463 4b1c11fdSDaniel P. Berrange --enable-tools) want_tools="yes" 1464 4b1c11fdSDaniel P. Berrange ;; 1465 4b1c11fdSDaniel P. Berrange --disable-tools) want_tools="no" 1466 4b1c11fdSDaniel P. Berrange ;; 1467 f794573eSEduardo Otubo --enable-seccomp) seccomp="yes" 1468 f794573eSEduardo Otubo ;; 1469 f794573eSEduardo Otubo --disable-seccomp) seccomp="no" 1470 f794573eSEduardo Otubo ;; 1471 eb100396SBharata B Rao --disable-glusterfs) glusterfs="no" 1472 eb100396SBharata B Rao ;; 1473 86583a07SLiam Merwick --disable-avx2) avx2_opt="no" 1474 86583a07SLiam Merwick ;; 1475 86583a07SLiam Merwick --enable-avx2) avx2_opt="yes" 1476 86583a07SLiam Merwick ;; 1477 6b8cd447SRobert Hoo --disable-avx512f) avx512f_opt="no" 1478 6b8cd447SRobert Hoo ;; 1479 6b8cd447SRobert Hoo --enable-avx512f) avx512f_opt="yes" 1480 6b8cd447SRobert Hoo ;; 1481 6b8cd447SRobert Hoo 1482 eb100396SBharata B Rao --enable-glusterfs) glusterfs="yes" 1483 eb100396SBharata B Rao ;; 1484 52b53c04SFam Zheng --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane) 1485 52b53c04SFam Zheng echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2 1486 583f6e7bSStefan Hajnoczi ;; 1487 cb6414dfSFam Zheng --enable-vhdx|--disable-vhdx) 1488 cb6414dfSFam Zheng echo "$0: $opt is obsolete, VHDX driver is always built" >&2 1489 cb6414dfSFam Zheng ;; 1490 315d3184SFam Zheng --enable-uuid|--disable-uuid) 1491 315d3184SFam Zheng echo "$0: $opt is obsolete, UUID support is always built" >&2 1492 315d3184SFam Zheng ;; 1493 a4ccabcfSAnthony Liguori --disable-gtk) gtk="no" 1494 a4ccabcfSAnthony Liguori ;; 1495 a4ccabcfSAnthony Liguori --enable-gtk) gtk="yes" 1496 a4ccabcfSAnthony Liguori ;; 1497 a1c5e949SDaniel P. Berrange --tls-priority=*) tls_priority="$optarg" 1498 a1c5e949SDaniel P. Berrange ;; 1499 ddbb0d09SDaniel P. Berrange --disable-gnutls) gnutls="no" 1500 ddbb0d09SDaniel P. Berrange ;; 1501 ddbb0d09SDaniel P. Berrange --enable-gnutls) gnutls="yes" 1502 ddbb0d09SDaniel P. Berrange ;; 1503 91bfcdb0SDaniel P. Berrange --disable-nettle) nettle="no" 1504 91bfcdb0SDaniel P. Berrange ;; 1505 91bfcdb0SDaniel P. Berrange --enable-nettle) nettle="yes" 1506 91bfcdb0SDaniel P. Berrange ;; 1507 91bfcdb0SDaniel P. Berrange --disable-gcrypt) gcrypt="no" 1508 91bfcdb0SDaniel P. Berrange ;; 1509 91bfcdb0SDaniel P. Berrange --enable-gcrypt) gcrypt="yes" 1510 91bfcdb0SDaniel P. Berrange ;; 1511 8953caf3SDaniel P. Berrange --disable-auth-pam) auth_pam="no" 1512 8953caf3SDaniel P. Berrange ;; 1513 8953caf3SDaniel P. Berrange --enable-auth-pam) auth_pam="yes" 1514 8953caf3SDaniel P. Berrange ;; 1515 2da776dbSMichael R. Hines --enable-rdma) rdma="yes" 1516 2da776dbSMichael R. Hines ;; 1517 2da776dbSMichael R. Hines --disable-rdma) rdma="no" 1518 2da776dbSMichael R. Hines ;; 1519 21ab34c9SMarcel Apfelbaum --enable-pvrdma) pvrdma="yes" 1520 21ab34c9SMarcel Apfelbaum ;; 1521 21ab34c9SMarcel Apfelbaum --disable-pvrdma) pvrdma="no" 1522 21ab34c9SMarcel Apfelbaum ;; 1523 bbbf9bfbSStefan Weil --disable-vte) vte="no" 1524 bbbf9bfbSStefan Weil ;; 1525 bbbf9bfbSStefan Weil --enable-vte) vte="yes" 1526 bbbf9bfbSStefan Weil ;; 1527 9d9e1521SGerd Hoffmann --disable-virglrenderer) virglrenderer="no" 1528 9d9e1521SGerd Hoffmann ;; 1529 9d9e1521SGerd Hoffmann --enable-virglrenderer) virglrenderer="yes" 1530 9d9e1521SGerd Hoffmann ;; 1531 e91c793cSCole Robinson --disable-tpm) tpm="no" 1532 e91c793cSCole Robinson ;; 1533 ab214c29SStefan Berger --enable-tpm) tpm="yes" 1534 ab214c29SStefan Berger ;; 1535 b10d49d7SPino Toscano --disable-libssh) libssh="no" 1536 0a12ec87SRichard W.M. Jones ;; 1537 b10d49d7SPino Toscano --enable-libssh) libssh="yes" 1538 0a12ec87SRichard W.M. Jones ;; 1539 ed1701c6SDr. David Alan Gilbert --disable-live-block-migration) live_block_migration="no" 1540 ed1701c6SDr. David Alan Gilbert ;; 1541 ed1701c6SDr. David Alan Gilbert --enable-live-block-migration) live_block_migration="yes" 1542 ed1701c6SDr. David Alan Gilbert ;; 1543 a99d57bbSWanlong Gao --disable-numa) numa="no" 1544 a99d57bbSWanlong Gao ;; 1545 a99d57bbSWanlong Gao --enable-numa) numa="yes" 1546 a99d57bbSWanlong Gao ;; 1547 ed279a06SKlim Kireev --disable-libxml2) libxml2="no" 1548 ed279a06SKlim Kireev ;; 1549 ed279a06SKlim Kireev --enable-libxml2) libxml2="yes" 1550 ed279a06SKlim Kireev ;; 1551 2847b469SFam Zheng --disable-tcmalloc) tcmalloc="no" 1552 2847b469SFam Zheng ;; 1553 2847b469SFam Zheng --enable-tcmalloc) tcmalloc="yes" 1554 2847b469SFam Zheng ;; 1555 7b01cb97SAlexandre Derumier --disable-jemalloc) jemalloc="no" 1556 7b01cb97SAlexandre Derumier ;; 1557 7b01cb97SAlexandre Derumier --enable-jemalloc) jemalloc="yes" 1558 7b01cb97SAlexandre Derumier ;; 1559 a6b1d4c0SChanglong Xie --disable-replication) replication="no" 1560 a6b1d4c0SChanglong Xie ;; 1561 a6b1d4c0SChanglong Xie --enable-replication) replication="yes" 1562 a6b1d4c0SChanglong Xie ;; 1563 2f740136SJeff Cody --disable-bochs) bochs="no" 1564 2f740136SJeff Cody ;; 1565 2f740136SJeff Cody --enable-bochs) bochs="yes" 1566 2f740136SJeff Cody ;; 1567 2f740136SJeff Cody --disable-cloop) cloop="no" 1568 2f740136SJeff Cody ;; 1569 2f740136SJeff Cody --enable-cloop) cloop="yes" 1570 2f740136SJeff Cody ;; 1571 2f740136SJeff Cody --disable-dmg) dmg="no" 1572 2f740136SJeff Cody ;; 1573 2f740136SJeff Cody --enable-dmg) dmg="yes" 1574 2f740136SJeff Cody ;; 1575 2f740136SJeff Cody --disable-qcow1) qcow1="no" 1576 2f740136SJeff Cody ;; 1577 2f740136SJeff Cody --enable-qcow1) qcow1="yes" 1578 2f740136SJeff Cody ;; 1579 2f740136SJeff Cody --disable-vdi) vdi="no" 1580 2f740136SJeff Cody ;; 1581 2f740136SJeff Cody --enable-vdi) vdi="yes" 1582 2f740136SJeff Cody ;; 1583 2f740136SJeff Cody --disable-vvfat) vvfat="no" 1584 2f740136SJeff Cody ;; 1585 2f740136SJeff Cody --enable-vvfat) vvfat="yes" 1586 2f740136SJeff Cody ;; 1587 2f740136SJeff Cody --disable-qed) qed="no" 1588 2f740136SJeff Cody ;; 1589 2f740136SJeff Cody --enable-qed) qed="yes" 1590 2f740136SJeff Cody ;; 1591 2f740136SJeff Cody --disable-parallels) parallels="no" 1592 2f740136SJeff Cody ;; 1593 2f740136SJeff Cody --enable-parallels) parallels="yes" 1594 2f740136SJeff Cody ;; 1595 2f740136SJeff Cody --disable-sheepdog) sheepdog="no" 1596 2f740136SJeff Cody ;; 1597 2f740136SJeff Cody --enable-sheepdog) sheepdog="yes" 1598 2f740136SJeff Cody ;; 1599 e6a74868SMarc-André Lureau --disable-vhost-user) vhost_user="no" 1600 e6a74868SMarc-André Lureau ;; 1601 299e6f19SPaolo Bonzini --enable-vhost-user) vhost_user="yes" 1602 299e6f19SPaolo Bonzini ;; 1603 108a6481SCindy Lu --disable-vhost-vdpa) vhost_vdpa="no" 1604 108a6481SCindy Lu ;; 1605 108a6481SCindy Lu --enable-vhost-vdpa) vhost_vdpa="yes" 1606 108a6481SCindy Lu ;; 1607 299e6f19SPaolo Bonzini --disable-vhost-kernel) vhost_kernel="no" 1608 299e6f19SPaolo Bonzini ;; 1609 299e6f19SPaolo Bonzini --enable-vhost-kernel) vhost_kernel="yes" 1610 e6a74868SMarc-André Lureau ;; 1611 8ca80760SRichard Henderson --disable-capstone) capstone="no" 1612 8ca80760SRichard Henderson ;; 1613 8ca80760SRichard Henderson --enable-capstone) capstone="yes" 1614 8ca80760SRichard Henderson ;; 1615 e219c499SRichard Henderson --enable-capstone=git) capstone="git" 1616 e219c499SRichard Henderson ;; 1617 e219c499SRichard Henderson --enable-capstone=system) capstone="system" 1618 e219c499SRichard Henderson ;; 1619 cc84d63aSDaniel P. Berrange --with-git=*) git="$optarg" 1620 cc84d63aSDaniel P. Berrange ;; 1621 f62bbee5SDaniel P. Berrange --enable-git-update) git_update=yes 1622 f62bbee5SDaniel P. Berrange ;; 1623 f62bbee5SDaniel P. Berrange --disable-git-update) git_update=no 1624 f62bbee5SDaniel P. Berrange ;; 1625 ba59fb77SPaolo Bonzini --enable-debug-mutex) debug_mutex=yes 1626 ba59fb77SPaolo Bonzini ;; 1627 ba59fb77SPaolo Bonzini --disable-debug-mutex) debug_mutex=no 1628 ba59fb77SPaolo Bonzini ;; 1629 17824406SJunyan He --enable-libpmem) libpmem=yes 1630 17824406SJunyan He ;; 1631 17824406SJunyan He --disable-libpmem) libpmem=no 1632 17824406SJunyan He ;; 1633 75411919SJames Le Cuirot --enable-xkbcommon) xkbcommon=yes 1634 75411919SJames Le Cuirot ;; 1635 75411919SJames Le Cuirot --disable-xkbcommon) xkbcommon=no 1636 75411919SJames Le Cuirot ;; 1637 40e8c6f4SAlex Bennée --enable-plugins) plugins="yes" 1638 40e8c6f4SAlex Bennée ;; 1639 40e8c6f4SAlex Bennée --disable-plugins) plugins="no" 1640 40e8c6f4SAlex Bennée ;; 1641 afc3a8f9SAlex Bennée --enable-containers) use_containers="yes" 1642 afc3a8f9SAlex Bennée ;; 1643 afc3a8f9SAlex Bennée --disable-containers) use_containers="no" 1644 afc3a8f9SAlex Bennée ;; 1645 adc28027SAlexander Bulekov --enable-fuzzing) fuzzing=yes 1646 adc28027SAlexander Bulekov ;; 1647 adc28027SAlexander Bulekov --disable-fuzzing) fuzzing=no 1648 adc28027SAlexander Bulekov ;; 1649 f48e590aSAlex Bennée --gdb=*) gdb_bin="$optarg" 1650 f48e590aSAlex Bennée ;; 1651 b767d257SMarek Marczykowski-Górecki --enable-rng-none) rng_none=yes 1652 b767d257SMarek Marczykowski-Górecki ;; 1653 b767d257SMarek Marczykowski-Górecki --disable-rng-none) rng_none=no 1654 b767d257SMarek Marczykowski-Górecki ;; 1655 54e7aac0SAlexey Krasikov --enable-keyring) secret_keyring="yes" 1656 54e7aac0SAlexey Krasikov ;; 1657 54e7aac0SAlexey Krasikov --disable-keyring) secret_keyring="no" 1658 54e7aac0SAlexey Krasikov ;; 1659 21b2eca6SJingqi Liu --enable-libdaxctl) libdaxctl=yes 1660 21b2eca6SJingqi Liu ;; 1661 21b2eca6SJingqi Liu --disable-libdaxctl) libdaxctl=no 1662 21b2eca6SJingqi Liu ;; 1663 2d2ad6d0SFam Zheng *) 1664 2d2ad6d0SFam Zheng echo "ERROR: unknown option $opt" 1665 2d2ad6d0SFam Zheng echo "Try '$0 --help' for more information" 1666 2d2ad6d0SFam Zheng exit 1 1667 7f1559c6Sbalrog ;; 1668 7d13299dSbellard esac 1669 7d13299dSbellarddone 1670 7d13299dSbellard 1671 22a87800SMarc-André Lureaulibdir="${libdir:-$prefix/lib}" 1672 22a87800SMarc-André Lureaulibexecdir="${libexecdir:-$prefix/libexec}" 1673 22a87800SMarc-André Lureauincludedir="${includedir:-$prefix/include}" 1674 22a87800SMarc-André Lureau 1675 22a87800SMarc-André Lureauif test "$mingw32" = "yes" ; then 1676 22a87800SMarc-André Lureau mandir="$prefix" 1677 22a87800SMarc-André Lureau datadir="$prefix" 1678 22a87800SMarc-André Lureau qemu_docdir="$prefix" 1679 22a87800SMarc-André Lureau bindir="$prefix" 1680 22a87800SMarc-André Lureau sysconfdir="$prefix" 1681 22a87800SMarc-André Lureau local_statedir= 1682 22a87800SMarc-André Lureauelse 1683 22a87800SMarc-André Lureau mandir="${mandir:-$prefix/share/man}" 1684 22a87800SMarc-André Lureau datadir="${datadir:-$prefix/share}" 1685 22a87800SMarc-André Lureau qemu_docdir="${qemu_docdir:-$prefix/share/doc/qemu}" 1686 22a87800SMarc-André Lureau bindir="${bindir:-$prefix/bin}" 1687 22a87800SMarc-André Lureau sysconfdir="${sysconfdir:-$prefix/etc}" 1688 22a87800SMarc-André Lureau local_statedir="${local_statedir:-$prefix/var}" 1689 22a87800SMarc-André Lureaufi 1690 22a87800SMarc-André Lureau 1691 40293e58Sbellardcase "$cpu" in 1692 e3608d66SRichard Henderson ppc) 1693 e3608d66SRichard Henderson CPU_CFLAGS="-m32" 1694 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 $QEMU_LDFLAGS" 1695 e3608d66SRichard Henderson ;; 1696 e3608d66SRichard Henderson ppc64) 1697 e3608d66SRichard Henderson CPU_CFLAGS="-m64" 1698 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1699 e3608d66SRichard Henderson ;; 1700 9b9c37c3SRichard Henderson sparc) 1701 f1079bb8SRichard Henderson CPU_CFLAGS="-m32 -mv8plus -mcpu=ultrasparc" 1702 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 -mv8plus $QEMU_LDFLAGS" 1703 3142255cSblueswir1 ;; 1704 ed968ff1SJuan Quintela sparc64) 1705 79f3b12fSPeter Crosthwaite CPU_CFLAGS="-m64 -mcpu=ultrasparc" 1706 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1707 3142255cSblueswir1 ;; 1708 76d83bdeSths s390) 1709 061cdd81SRichard Henderson CPU_CFLAGS="-m31" 1710 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m31 $QEMU_LDFLAGS" 1711 28d7cc49SRichard Henderson ;; 1712 28d7cc49SRichard Henderson s390x) 1713 061cdd81SRichard Henderson CPU_CFLAGS="-m64" 1714 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1715 76d83bdeSths ;; 1716 40293e58Sbellard i386) 1717 79f3b12fSPeter Crosthwaite CPU_CFLAGS="-m32" 1718 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m32 $QEMU_LDFLAGS" 1719 40293e58Sbellard ;; 1720 40293e58Sbellard x86_64) 1721 7ebee43eSRichard Henderson # ??? Only extremely old AMD cpus do not have cmpxchg16b. 1722 7ebee43eSRichard Henderson # If we truly care, we should simply detect this case at 1723 7ebee43eSRichard Henderson # runtime and generate the fallback to serial emulation. 1724 7ebee43eSRichard Henderson CPU_CFLAGS="-m64 -mcx16" 1725 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-m64 $QEMU_LDFLAGS" 1726 379f6698SPaul Brook ;; 1727 c72b26ecSRichard Henderson x32) 1728 c72b26ecSRichard Henderson CPU_CFLAGS="-mx32" 1729 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-mx32 $QEMU_LDFLAGS" 1730 c72b26ecSRichard Henderson ;; 1731 30163d89SPeter Maydell # No special flags required for other host CPUs 1732 3142255cSblueswir1esac 1733 3142255cSblueswir1 1734 2038f8c8SPaolo Bonzinieval "cross_cc_${cpu}=\$host_cc" 1735 2038f8c8SPaolo Bonzinicross_cc_vars="$cross_cc_vars cross_cc_${cpu}" 1736 79f3b12fSPeter CrosthwaiteQEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS" 1737 79f3b12fSPeter Crosthwaite 1738 affc88ccSPeter Maydell# For user-mode emulation the host arch has to be one we explicitly 1739 affc88ccSPeter Maydell# support, even if we're using TCI. 1740 affc88ccSPeter Maydellif [ "$ARCH" = "unknown" ]; then 1741 affc88ccSPeter Maydell bsd_user="no" 1742 affc88ccSPeter Maydell linux_user="no" 1743 affc88ccSPeter Maydellfi 1744 affc88ccSPeter Maydell 1745 1cf295beSPhilippe Mathieu-Daudéif [ "$bsd_user" = "no" -a "$linux_user" = "no" -a "$softmmu" = "no" ] ; then 1746 1cf295beSPhilippe Mathieu-Daudé tcg="no" 1747 1cf295beSPhilippe Mathieu-Daudéfi 1748 1cf295beSPhilippe Mathieu-Daudé 1749 60e0df25SPeter Maydelldefault_target_list="" 1750 60e0df25SPeter Maydell 1751 6e92f823SPeter Maydellmak_wilds="" 1752 6e92f823SPeter Maydell 1753 60e0df25SPeter Maydellif [ "$softmmu" = "yes" ]; then 1754 6e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak" 1755 60e0df25SPeter Maydellfi 1756 60e0df25SPeter Maydellif [ "$linux_user" = "yes" ]; then 1757 6e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak" 1758 60e0df25SPeter Maydellfi 1759 60e0df25SPeter Maydellif [ "$bsd_user" = "yes" ]; then 1760 6e92f823SPeter Maydell mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak" 1761 60e0df25SPeter Maydellfi 1762 60e0df25SPeter Maydell 1763 447e133fSAlex Bennéeif test -z "$target_list_exclude"; then 1764 6e92f823SPeter Maydell for config in $mak_wilds; do 1765 6e92f823SPeter Maydell default_target_list="${default_target_list} $(basename "$config" .mak)" 1766 6e92f823SPeter Maydell done 1767 447e133fSAlex Bennéeelse 1768 447e133fSAlex Bennée exclude_list=$(echo "$target_list_exclude" | sed -e 's/,/ /g') 1769 447e133fSAlex Bennée for config in $mak_wilds; do 1770 447e133fSAlex Bennée target="$(basename "$config" .mak)" 1771 447e133fSAlex Bennée exclude="no" 1772 447e133fSAlex Bennée for excl in $exclude_list; do 1773 447e133fSAlex Bennée if test "$excl" = "$target"; then 1774 447e133fSAlex Bennée exclude="yes" 1775 447e133fSAlex Bennée break; 1776 447e133fSAlex Bennée fi 1777 447e133fSAlex Bennée done 1778 447e133fSAlex Bennée if test "$exclude" = "no"; then 1779 447e133fSAlex Bennée default_target_list="${default_target_list} $target" 1780 447e133fSAlex Bennée fi 1781 447e133fSAlex Bennée done 1782 447e133fSAlex Bennéefi 1783 6e92f823SPeter Maydell 1784 c53eeaf7SStefan Hajnoczi# Enumerate public trace backends for --help output 1785 64a6047dSGreg Kurztrace_backend_list=$(echo $(grep -le '^PUBLIC = True$' "$source_path"/scripts/tracetool/backend/*.py | sed -e 's/^.*\/\(.*\)\.py$/\1/')) 1786 c53eeaf7SStefan Hajnoczi 1787 af5db58eSpbrookif test x"$show_help" = x"yes" ; then 1788 af5db58eSpbrookcat << EOF 1789 af5db58eSpbrook 1790 af5db58eSpbrookUsage: configure [options] 1791 af5db58eSpbrookOptions: [defaults in brackets after descriptions] 1792 af5db58eSpbrook 1793 08fb77edSStefan WeilStandard options: 1794 08fb77edSStefan Weil --help print this message 1795 08fb77edSStefan Weil --prefix=PREFIX install in PREFIX [$prefix] 1796 08fb77edSStefan Weil --interp-prefix=PREFIX where to find shared libraries, etc. 1797 08fb77edSStefan Weil use %M for cpu name [$interp_prefix] 1798 08fb77edSStefan Weil --target-list=LIST set target list (default: build everything) 1799 08fb77edSStefan Weil$(echo Available targets: $default_target_list | \ 1800 08fb77edSStefan Weil fold -s -w 53 | sed -e 's/^/ /') 1801 447e133fSAlex Bennée --target-list-exclude=LIST exclude a set of targets from the default target-list 1802 08fb77edSStefan Weil 1803 08fb77edSStefan WeilAdvanced options (experts only): 1804 08fb77edSStefan Weil --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix] 1805 08fb77edSStefan Weil --cc=CC use C compiler CC [$cc] 1806 08fb77edSStefan Weil --iasl=IASL use ACPI compiler IASL [$iasl] 1807 08fb77edSStefan Weil --host-cc=CC use C compiler CC [$host_cc] for code run at 1808 08fb77edSStefan Weil build time 1809 08fb77edSStefan Weil --cxx=CXX use C++ compiler CXX [$cxx] 1810 08fb77edSStefan Weil --objcc=OBJCC use Objective-C compiler OBJCC [$objcc] 1811 08fb77edSStefan Weil --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS 1812 11cde1c8SBruno Dominguez --extra-cxxflags=CXXFLAGS append extra C++ compiler flags QEMU_CXXFLAGS 1813 08fb77edSStefan Weil --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS 1814 d75402b5SAlex Bennée --cross-cc-ARCH=CC use compiler when building ARCH guest test cases 1815 d422b2bcSAlex Bennée --cross-cc-flags-ARCH= use compiler flags when building ARCH guest tests 1816 08fb77edSStefan Weil --make=MAKE use specified make [$make] 1817 08fb77edSStefan Weil --install=INSTALL use specified install [$install] 1818 08fb77edSStefan Weil --python=PYTHON use specified python [$python] 1819 2eb054c2SPeter Maydell --sphinx-build=SPHINX use specified sphinx-build [$sphinx_build] 1820 a5665051SPaolo Bonzini --meson=MESON use specified meson [$meson] 1821 08fb77edSStefan Weil --smbd=SMBD use specified smbd [$smbd] 1822 db1b5f13SThomas Huth --with-git=GIT use specified git [$git] 1823 08fb77edSStefan Weil --static enable static build [$static] 1824 08fb77edSStefan Weil --mandir=PATH install man pages in PATH 1825 08fb77edSStefan Weil --datadir=PATH install firmware in PATH$confsuffix 1826 08fb77edSStefan Weil --docdir=PATH install documentation in PATH$confsuffix 1827 08fb77edSStefan Weil --bindir=PATH install binaries in PATH 1828 08fb77edSStefan Weil --libdir=PATH install libraries in PATH 1829 db1b5f13SThomas Huth --libexecdir=PATH install helper binaries in PATH 1830 08fb77edSStefan Weil --sysconfdir=PATH install config in PATH$confsuffix 1831 08fb77edSStefan Weil --localstatedir=PATH install local state in PATH (set at runtime on win32) 1832 3d5eecabSGerd Hoffmann --firmwarepath=PATH search PATH for firmware files 1833 13336606SRobert Foley --efi-aarch64=PATH PATH of efi file to use for aarch64 VMs. 1834 e26110cfSFam Zheng --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix] 1835 db1b5f13SThomas Huth --with-pkgversion=VERS use specified string as sub-version of the package 1836 08fb77edSStefan Weil --enable-debug enable common debug build options 1837 247724cbSMarc-André Lureau --enable-sanitizers enable default sanitizers 1838 0aebab04SLingfeng Yang --enable-tsan enable thread sanitizer 1839 08fb77edSStefan Weil --disable-strip disable stripping binaries 1840 08fb77edSStefan Weil --disable-werror disable compilation abort on warning 1841 63678e17SSteven Noonan --disable-stack-protector disable compiler-provided stack protection 1842 08fb77edSStefan Weil --audio-drv-list=LIST set audio drivers list: 1843 08fb77edSStefan Weil Available drivers: $audio_possible_drivers 1844 08fb77edSStefan Weil --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L 1845 08fb77edSStefan Weil --block-drv-rw-whitelist=L 1846 08fb77edSStefan Weil set block driver read-write whitelist 1847 08fb77edSStefan Weil (affects only QEMU, not qemu-img) 1848 08fb77edSStefan Weil --block-drv-ro-whitelist=L 1849 08fb77edSStefan Weil set block driver read-only whitelist 1850 08fb77edSStefan Weil (affects only QEMU, not qemu-img) 1851 5b808275SLluís Vilanova --enable-trace-backends=B Set trace backend 1852 c53eeaf7SStefan Hajnoczi Available backends: $trace_backend_list 1853 08fb77edSStefan Weil --with-trace-file=NAME Full PATH,NAME of file to store traces 1854 08fb77edSStefan Weil Default:trace-<pid> 1855 c23f23b9SMichael Tokarev --disable-slirp disable SLIRP userspace network connectivity 1856 c23f23b9SMichael Tokarev --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI) 1857 5a22ab71SYang Zhong --enable-malloc-trim enable libc malloc_trim() for memory optimization 1858 c23f23b9SMichael Tokarev --oss-lib path to OSS library 1859 c23f23b9SMichael Tokarev --cpu=CPU Build for host CPU [$cpu] 1860 08fb77edSStefan Weil --with-coroutine=BACKEND coroutine backend. Supported options: 1861 33c53c54SDaniel P. Berrange ucontext, sigaltstack, windows 1862 08fb77edSStefan Weil --enable-gcov enable test coverage analysis with gcov 1863 c23f23b9SMichael Tokarev --disable-blobs disable installing provided firmware blobs 1864 c23f23b9SMichael Tokarev --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent 1865 c23f23b9SMichael Tokarev --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb) 1866 a1c5e949SDaniel P. Berrange --tls-priority default TLS protocol/cipher priority string 1867 c12d66aaSLin Ma --enable-gprof QEMU profiling with gprof 1868 c12d66aaSLin Ma --enable-profiler profiler support 1869 c12d66aaSLin Ma --enable-debug-stack-usage 1870 c12d66aaSLin Ma track the maximum stack usage of stacks created by qemu_alloc_stack 1871 40e8c6f4SAlex Bennée --enable-plugins 1872 40e8c6f4SAlex Bennée enable plugins via shared library loading 1873 afc3a8f9SAlex Bennée --disable-containers don't use containers for cross-building 1874 f48e590aSAlex Bennée --gdb=GDB-path gdb to use for gdbstub tests [$gdb_bin] 1875 c23f23b9SMichael Tokarev 1876 c23f23b9SMichael TokarevOptional features, enabled with --enable-FEATURE and 1877 c23f23b9SMichael Tokarevdisabled with --disable-FEATURE, default is enabled if available: 1878 c23f23b9SMichael Tokarev 1879 c23f23b9SMichael Tokarev system all system emulation targets 1880 c23f23b9SMichael Tokarev user supported user emulation targets 1881 c23f23b9SMichael Tokarev linux-user all linux usermode emulation targets 1882 c23f23b9SMichael Tokarev bsd-user all BSD usermode emulation targets 1883 c23f23b9SMichael Tokarev docs build documentation 1884 c23f23b9SMichael Tokarev guest-agent build the QEMU Guest Agent 1885 c23f23b9SMichael Tokarev guest-agent-msi build guest agent Windows MSI installation package 1886 c23f23b9SMichael Tokarev pie Position Independent Executables 1887 21e709aaSMarc-André Lureau modules modules support (non-Windows) 1888 bd83c861SChristian Ehrhardt module-upgrades try to load modules from alternate paths for upgrades 1889 c23f23b9SMichael Tokarev debug-tcg TCG debugging (default is disabled) 1890 c23f23b9SMichael Tokarev debug-info debugging information 1891 c23f23b9SMichael Tokarev sparse sparse checker 1892 1e4f6065SDaniele Buono safe-stack SafeStack Stack Smash Protection. Depends on 1893 1e4f6065SDaniele Buono clang/llvm >= 3.7 and requires coroutine backend ucontext. 1894 c23f23b9SMichael Tokarev 1895 ddbb0d09SDaniel P. Berrange gnutls GNUTLS cryptography support 1896 91bfcdb0SDaniel P. Berrange nettle nettle cryptography support 1897 91bfcdb0SDaniel P. Berrange gcrypt libgcrypt cryptography support 1898 8953caf3SDaniel P. Berrange auth-pam PAM access control 1899 c23f23b9SMichael Tokarev sdl SDL UI 1900 04c6e16fSMarkus Armbruster sdl-image SDL Image support for icons 1901 c23f23b9SMichael Tokarev gtk gtk UI 1902 c23f23b9SMichael Tokarev vte vte support for the gtk UI 1903 c23f23b9SMichael Tokarev curses curses UI 1904 e08bb301SSamuel Thibault iconv font glyph conversion support 1905 c23f23b9SMichael Tokarev vnc VNC UI support 1906 c23f23b9SMichael Tokarev vnc-sasl SASL encryption for VNC server 1907 c23f23b9SMichael Tokarev vnc-jpeg JPEG lossy compression for VNC server 1908 c23f23b9SMichael Tokarev vnc-png PNG compression for VNC server 1909 c23f23b9SMichael Tokarev cocoa Cocoa UI (Mac OS X only) 1910 c23f23b9SMichael Tokarev virtfs VirtFS 1911 fe8fc5aeSPaolo Bonzini mpath Multipath persistent reservation passthrough 1912 c23f23b9SMichael Tokarev xen xen backend driver support 1913 70c292afSAnthony PERARD xen-pci-passthrough PCI passthrough support for Xen 1914 c23f23b9SMichael Tokarev brlapi BrlAPI (Braile) 1915 c23f23b9SMichael Tokarev curl curl connectivity 1916 a40161cbSPaolo Bonzini membarrier membarrier system call (for Linux 4.14+ or Windows) 1917 c23f23b9SMichael Tokarev fdt fdt device tree 1918 c23f23b9SMichael Tokarev kvm KVM acceleration support 1919 b0cb0a66SVincent Palatin hax HAX acceleration support 1920 c97d6d2cSSergio Andres Gomez Del Real hvf Hypervisor.framework acceleration support 1921 d661d9a4SJustin Terry (VM) whpx Windows Hypervisor Platform acceleration support 1922 21ab34c9SMarcel Apfelbaum rdma Enable RDMA-based migration 1923 21ab34c9SMarcel Apfelbaum pvrdma Enable PVRDMA support 1924 c23f23b9SMichael Tokarev vde support for vde network 1925 c23f23b9SMichael Tokarev netmap support for netmap network 1926 c23f23b9SMichael Tokarev linux-aio Linux AIO support 1927 c10dd856SAarushi Mehta linux-io-uring Linux io_uring support 1928 c23f23b9SMichael Tokarev cap-ng libcap-ng support 1929 c23f23b9SMichael Tokarev attr attr and xattr support 1930 299e6f19SPaolo Bonzini vhost-net vhost-net kernel acceleration support 1931 299e6f19SPaolo Bonzini vhost-vsock virtio sockets device support 1932 299e6f19SPaolo Bonzini vhost-scsi vhost-scsi kernel target support 1933 299e6f19SPaolo Bonzini vhost-crypto vhost-user-crypto backend support 1934 299e6f19SPaolo Bonzini vhost-kernel vhost kernel backend support 1935 299e6f19SPaolo Bonzini vhost-user vhost-user backend support 1936 108a6481SCindy Lu vhost-vdpa vhost-vdpa kernel backend support 1937 c23f23b9SMichael Tokarev spice spice 1938 c23f23b9SMichael Tokarev rbd rados block device (rbd) 1939 c23f23b9SMichael Tokarev libiscsi iscsi support 1940 c23f23b9SMichael Tokarev libnfs nfs support 1941 7b02f544SMarc-André Lureau smartcard smartcard support (libcacard) 1942 c23f23b9SMichael Tokarev libusb libusb (for usb passthrough) 1943 ed1701c6SDr. David Alan Gilbert live-block-migration Block migration in the main migration stream 1944 c23f23b9SMichael Tokarev usb-redir usb network redirection support 1945 c23f23b9SMichael Tokarev lzo support of lzo compression library 1946 c23f23b9SMichael Tokarev snappy support of snappy compression library 1947 c23f23b9SMichael Tokarev bzip2 support of bzip2 compression library 1948 c23f23b9SMichael Tokarev (for reading bzip2-compressed dmg images) 1949 83bc1f97SJulio Faracco lzfse support of lzfse compression library 1950 83bc1f97SJulio Faracco (for reading lzfse-compressed dmg images) 1951 3a678481SJuan Quintela zstd support for zstd compression library 1952 d298ac10SDenis Plotnikov (for migration compression and qcow2 cluster compression) 1953 c23f23b9SMichael Tokarev seccomp seccomp support 1954 c23f23b9SMichael Tokarev coroutine-pool coroutine freelist (better performance) 1955 c23f23b9SMichael Tokarev glusterfs GlusterFS backend 1956 c23f23b9SMichael Tokarev tpm TPM support 1957 b10d49d7SPino Toscano libssh ssh block device support 1958 c23f23b9SMichael Tokarev numa libnuma support 1959 ed279a06SKlim Kireev libxml2 for Parallels image format 1960 c23f23b9SMichael Tokarev tcmalloc tcmalloc support 1961 7b01cb97SAlexandre Derumier jemalloc jemalloc support 1962 86583a07SLiam Merwick avx2 AVX2 optimization support 1963 6b8cd447SRobert Hoo avx512f AVX512F optimization support 1964 a6b1d4c0SChanglong Xie replication replication support 1965 c12d66aaSLin Ma opengl opengl support 1966 c12d66aaSLin Ma virglrenderer virgl rendering support 1967 c12d66aaSLin Ma xfsctl xfsctl support 1968 c12d66aaSLin Ma qom-cast-debug cast debugging support 1969 8de73fa8SCleber Rosa tools build qemu-io, qemu-nbd and qemu-img tools 1970 2f740136SJeff Cody bochs bochs image format support 1971 2f740136SJeff Cody cloop cloop image format support 1972 2f740136SJeff Cody dmg dmg image format support 1973 2f740136SJeff Cody qcow1 qcow v1 image format support 1974 2f740136SJeff Cody vdi vdi image format support 1975 2f740136SJeff Cody vvfat vvfat image format support 1976 2f740136SJeff Cody qed qed image format support 1977 2f740136SJeff Cody parallels parallels image format support 1978 2f740136SJeff Cody sheepdog sheepdog block driver support 1979 f0d92b56SLongpeng(Mike) crypto-afalg Linux AF_ALG crypto backend driver 1980 8ca80760SRichard Henderson capstone capstone disassembler support 1981 ba59fb77SPaolo Bonzini debug-mutex mutex debugging support 1982 17824406SJunyan He libpmem libpmem support 1983 75411919SJames Le Cuirot xkbcommon xkbcommon support 1984 b767d257SMarek Marczykowski-Górecki rng-none dummy RNG, avoid using /dev/(u)random and getrandom() 1985 21b2eca6SJingqi Liu libdaxctl libdaxctl support 1986 08fb77edSStefan Weil 1987 08fb77edSStefan WeilNOTE: The object files are built at the place where configure is launched 1988 af5db58eSpbrookEOF 1989 2d2ad6d0SFam Zhengexit 0 1990 af5db58eSpbrookfi 1991 af5db58eSpbrook 1992 9c790242SThomas Huth# Remove old dependency files to make sure that they get properly regenerated 1993 bb768f71SThomas Huthrm -f */config-devices.mak.d 1994 9c790242SThomas Huth 1995 4d6a835dSLaurent Vivier# Remove syscall_nr.h to be sure they will be regenerated in the build 1996 4d6a835dSLaurent Vivier# directory, not in the source directory 1997 bb0cdc03SLaurent Vivierfor arch in alpha hppa m68k xtensa sh4 microblaze arm ppc s390x sparc sparc64 \ 1998 686a0fe4SLaurent Vivier i386 x86_64 mips mips64 ; do 1999 4d6a835dSLaurent Vivier # remove the file if it has been generated in the source directory 2000 4d6a835dSLaurent Vivier rm -f "${source_path}/linux-user/${arch}/syscall_nr.h" 2001 4d6a835dSLaurent Vivier # remove the dependency files 2002 91e5998fSLaurent Vivier for target in ${arch}*-linux-user ; do 2003 91e5998fSLaurent Vivier test -d "${target}" && find "${target}" -type f -name "*.d" \ 2004 4d6a835dSLaurent Vivier -exec grep -q "${source_path}/linux-user/${arch}/syscall_nr.h" {} \; \ 2005 91e5998fSLaurent Vivier -print | while read file ; do rm "${file}" "${file%.d}.o" ; done 2006 91e5998fSLaurent Vivier done 2007 4d6a835dSLaurent Vivierdone 2008 4d6a835dSLaurent Vivier 2009 faf44142SDaniel P. Berrangéif test -z "$python" 2010 faf44142SDaniel P. Berrangéthen 2011 c53eeaf7SStefan Hajnoczi error_exit "Python not found. Use --python=/path/to/python" 2012 c53eeaf7SStefan Hajnoczifi 2013 c53eeaf7SStefan Hajnoczi 2014 c53eeaf7SStefan Hajnoczi# Note that if the Python conditional here evaluates True we will exit 2015 c53eeaf7SStefan Hajnoczi# with status 1 which is a shell 'false' value. 2016 ddf90699SEduardo Habkostif ! $python -c 'import sys; sys.exit(sys.version_info < (3,5))'; then 2017 ddf90699SEduardo Habkost error_exit "Cannot use '$python', Python >= 3.5 is required." \ 2018 c53eeaf7SStefan Hajnoczi "Use --python=/path/to/python to specify a supported Python." 2019 c53eeaf7SStefan Hajnoczifi 2020 c53eeaf7SStefan Hajnoczi 2021 755ee70fSCleber Rosa# Preserve python version since some functionality is dependent on it 2022 406ab2f3SCleber Rosapython_version=$($python -c 'import sys; print("%d.%d.%d" % (sys.version_info[0], sys.version_info[1], sys.version_info[2]))' 2>/dev/null) 2023 755ee70fSCleber Rosa 2024 c53eeaf7SStefan Hajnoczi# Suppress writing compiled files 2025 c53eeaf7SStefan Hajnoczipython="$python -B" 2026 c53eeaf7SStefan Hajnoczi 2027 0a01d76fSMarc-André Lureauif test -z "$meson"; then 2028 0a01d76fSMarc-André Lureau if test "$explicit_python" = no && has meson && version_ge "$(meson --version)" 0.55.0; then 2029 0a01d76fSMarc-André Lureau meson=meson 2030 0a01d76fSMarc-André Lureau elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 2031 0a01d76fSMarc-André Lureau meson=git 2032 0a01d76fSMarc-André Lureau elif test -e "${source_path}/meson/meson.py" ; then 2033 0a01d76fSMarc-André Lureau meson=internal 2034 0a01d76fSMarc-André Lureau else 2035 0a01d76fSMarc-André Lureau if test "$explicit_python" = yes; then 2036 0a01d76fSMarc-André Lureau error_exit "--python requires using QEMU's embedded Meson distribution, but it was not found." 2037 0a01d76fSMarc-André Lureau else 2038 a5665051SPaolo Bonzini error_exit "Meson not found. Use --meson=/path/to/meson" 2039 a5665051SPaolo Bonzini fi 2040 0a01d76fSMarc-André Lureau fi 2041 0a01d76fSMarc-André Lureauelse 2042 0a01d76fSMarc-André Lureau # Meson uses its own Python interpreter to invoke other Python scripts, 2043 0a01d76fSMarc-André Lureau # but the user wants to use the one they specified with --python. 2044 0a01d76fSMarc-André Lureau # 2045 0a01d76fSMarc-André Lureau # We do not want to override the distro Python interpreter (and sometimes 2046 0a01d76fSMarc-André Lureau # cannot: for example in Homebrew /usr/bin/meson is a bash script), so 2047 0a01d76fSMarc-André Lureau # just require --meson=git|internal together with --python. 2048 0a01d76fSMarc-André Lureau if test "$explicit_python" = yes; then 2049 0a01d76fSMarc-André Lureau case "$meson" in 2050 0a01d76fSMarc-André Lureau git | internal) ;; 2051 0a01d76fSMarc-André Lureau *) error_exit "--python requires using QEMU's embedded Meson distribution." ;; 2052 0a01d76fSMarc-André Lureau esac 2053 0a01d76fSMarc-André Lureau fi 2054 0a01d76fSMarc-André Lureaufi 2055 a5665051SPaolo Bonzini 2056 0a01d76fSMarc-André Lureauif test "$meson" = git; then 2057 0a01d76fSMarc-André Lureau git_submodules="${git_submodules} meson" 2058 0a01d76fSMarc-André Lureaufi 2059 0a01d76fSMarc-André Lureauif test "$git_update" = yes; then 2060 0a01d76fSMarc-André Lureau (cd "${source_path}" && GIT="$git" "./scripts/git-submodule.sh" update "$git_submodules") 2061 0a01d76fSMarc-André Lureaufi 2062 0a01d76fSMarc-André Lureau 2063 0a01d76fSMarc-André Lureaucase "$meson" in 2064 0a01d76fSMarc-André Lureau git | internal) 2065 a5665051SPaolo Bonzini if ! $python -c 'import pkg_resources' > /dev/null 2>&1; then 2066 a5665051SPaolo Bonzini error_exit "Python setuptools not found" 2067 a5665051SPaolo Bonzini fi 2068 0a01d76fSMarc-André Lureau meson="$python ${source_path}/meson/meson.py" 2069 0a01d76fSMarc-André Lureau ;; 2070 0a01d76fSMarc-André Lureau *) meson=$(command -v meson) ;; 2071 0a01d76fSMarc-André Lureauesac 2072 0a01d76fSMarc-André Lureau 2073 a5665051SPaolo Bonzini 2074 9aae6e54SDaniel Henrique Barboza# Check that the C compiler works. Doing this here before testing 2075 9aae6e54SDaniel Henrique Barboza# the host CPU ensures that we had a valid CC to autodetect the 2076 9aae6e54SDaniel Henrique Barboza# $cpu var (and we should bail right here if that's not the case). 2077 9aae6e54SDaniel Henrique Barboza# It also allows the help message to be printed without a CC. 2078 9aae6e54SDaniel Henrique Barbozawrite_c_skeleton; 2079 9aae6e54SDaniel Henrique Barbozaif compile_object ; then 2080 9aae6e54SDaniel Henrique Barboza : C compiler works ok 2081 9aae6e54SDaniel Henrique Barbozaelse 2082 9aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" either does not exist or does not work" 2083 9aae6e54SDaniel Henrique Barbozafi 2084 9aae6e54SDaniel Henrique Barbozaif ! compile_prog ; then 2085 9aae6e54SDaniel Henrique Barboza error_exit "\"$cc\" cannot build an executable (is your linker broken?)" 2086 9aae6e54SDaniel Henrique Barbozafi 2087 9aae6e54SDaniel Henrique Barboza 2088 359bc95dSPeter Maydell# Now we have handled --enable-tcg-interpreter and know we're not just 2089 359bc95dSPeter Maydell# printing the help message, bail out if the host CPU isn't supported. 2090 359bc95dSPeter Maydellif test "$ARCH" = "unknown"; then 2091 359bc95dSPeter Maydell if test "$tcg_interpreter" = "yes" ; then 2092 359bc95dSPeter Maydell echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)" 2093 359bc95dSPeter Maydell else 2094 76ad07a4SPeter Maydell error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter" 2095 359bc95dSPeter Maydell fi 2096 359bc95dSPeter Maydellfi 2097 359bc95dSPeter Maydell 2098 9c83ffd8SPeter Maydell# Consult white-list to determine whether to enable werror 2099 9c83ffd8SPeter Maydell# by default. Only enable by default for git builds 2100 9c83ffd8SPeter Maydellif test -z "$werror" ; then 2101 fd73745dSAlexey Kardashevskiy if test -e "$source_path/.git" && \ 2102 e633a5c6SEric Blake { test "$linux" = "yes" || test "$mingw32" = "yes"; }; then 2103 9c83ffd8SPeter Maydell werror="yes" 2104 9c83ffd8SPeter Maydell else 2105 9c83ffd8SPeter Maydell werror="no" 2106 9c83ffd8SPeter Maydell fi 2107 9c83ffd8SPeter Maydellfi 2108 9c83ffd8SPeter Maydell 2109 fb59dabdSPeter Maydellif test "$bogus_os" = "yes"; then 2110 fb59dabdSPeter Maydell # Now that we know that we're not printing the help and that 2111 fb59dabdSPeter Maydell # the compiler works (so the results of the check_defines we used 2112 fb59dabdSPeter Maydell # to identify the OS are reliable), if we didn't recognize the 2113 fb59dabdSPeter Maydell # host OS we should stop now. 2114 951fedfcSPeter Maydell error_exit "Unrecognized host OS (uname -s reports '$(uname -s)')" 2115 fb59dabdSPeter Maydellfi 2116 fb59dabdSPeter Maydell 2117 efc6c070SThomas Huth# Check whether the compiler matches our minimum requirements: 2118 efc6c070SThomas Huthcat > $TMPC << EOF 2119 efc6c070SThomas Huth#if defined(__clang_major__) && defined(__clang_minor__) 2120 efc6c070SThomas Huth# ifdef __apple_build_version__ 2121 efc6c070SThomas Huth# if __clang_major__ < 5 || (__clang_major__ == 5 && __clang_minor__ < 1) 2122 efc6c070SThomas Huth# error You need at least XCode Clang v5.1 to compile QEMU 2123 efc6c070SThomas Huth# endif 2124 efc6c070SThomas Huth# else 2125 efc6c070SThomas Huth# if __clang_major__ < 3 || (__clang_major__ == 3 && __clang_minor__ < 4) 2126 efc6c070SThomas Huth# error You need at least Clang v3.4 to compile QEMU 2127 efc6c070SThomas Huth# endif 2128 efc6c070SThomas Huth# endif 2129 efc6c070SThomas Huth#elif defined(__GNUC__) && defined(__GNUC_MINOR__) 2130 efc6c070SThomas Huth# if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) 2131 efc6c070SThomas Huth# error You need at least GCC v4.8 to compile QEMU 2132 efc6c070SThomas Huth# endif 2133 efc6c070SThomas Huth#else 2134 efc6c070SThomas Huth# error You either need GCC or Clang to compiler QEMU 2135 efc6c070SThomas Huth#endif 2136 efc6c070SThomas Huthint main (void) { return 0; } 2137 efc6c070SThomas HuthEOF 2138 efc6c070SThomas Huthif ! compile_prog "" "" ; then 2139 efc6c070SThomas Huth error_exit "You need at least GCC v4.8 or Clang v3.4 (or XCode Clang v5.1)" 2140 efc6c070SThomas Huthfi 2141 efc6c070SThomas Huth 2142 00849b92SRichard Henderson# Accumulate -Wfoo and -Wno-bar separately. 2143 00849b92SRichard Henderson# We will list all of the enable flags first, and the disable flags second. 2144 00849b92SRichard Henderson# Note that we do not add -Werror, because that would enable it for all 2145 00849b92SRichard Henderson# configure tests. If a configure test failed due to -Werror this would 2146 00849b92SRichard Henderson# just silently disable some features, so it's too error prone. 2147 00849b92SRichard Henderson 2148 00849b92SRichard Hendersonwarn_flags= 2149 00849b92SRichard Hendersonadd_to warn_flags -Wold-style-declaration 2150 00849b92SRichard Hendersonadd_to warn_flags -Wold-style-definition 2151 00849b92SRichard Hendersonadd_to warn_flags -Wtype-limits 2152 00849b92SRichard Hendersonadd_to warn_flags -Wformat-security 2153 00849b92SRichard Hendersonadd_to warn_flags -Wformat-y2k 2154 00849b92SRichard Hendersonadd_to warn_flags -Winit-self 2155 00849b92SRichard Hendersonadd_to warn_flags -Wignored-qualifiers 2156 00849b92SRichard Hendersonadd_to warn_flags -Wempty-body 2157 00849b92SRichard Hendersonadd_to warn_flags -Wnested-externs 2158 00849b92SRichard Hendersonadd_to warn_flags -Wendif-labels 2159 00849b92SRichard Hendersonadd_to warn_flags -Wexpansion-to-defined 2160 00849b92SRichard Henderson 2161 00849b92SRichard Hendersonnowarn_flags= 2162 00849b92SRichard Hendersonadd_to nowarn_flags -Wno-initializer-overrides 2163 00849b92SRichard Hendersonadd_to nowarn_flags -Wno-missing-include-dirs 2164 00849b92SRichard Hendersonadd_to nowarn_flags -Wno-shift-negative-value 2165 00849b92SRichard Hendersonadd_to nowarn_flags -Wno-string-plus-int 2166 00849b92SRichard Hendersonadd_to nowarn_flags -Wno-typedef-redefinition 2167 aabab967SRichard Hendersonadd_to nowarn_flags -Wno-tautological-type-limit-compare 2168 bac8d222SRichard Hendersonadd_to nowarn_flags -Wno-psabi 2169 00849b92SRichard Henderson 2170 00849b92SRichard Hendersongcc_flags="$warn_flags $nowarn_flags" 2171 93b25869SJohn Snow 2172 93b25869SJohn Snowcc_has_warning_flag() { 2173 93b25869SJohn Snow write_c_skeleton; 2174 93b25869SJohn Snow 2175 a1d29d6cSPeter Maydell # Use the positive sense of the flag when testing for -Wno-wombat 2176 a1d29d6cSPeter Maydell # support (gcc will happily accept the -Wno- form of unknown 2177 a1d29d6cSPeter Maydell # warning options). 2178 93b25869SJohn Snow optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')" 2179 93b25869SJohn Snow compile_prog "-Werror $optflag" "" 2180 93b25869SJohn Snow} 2181 93b25869SJohn Snow 2182 93b25869SJohn Snowfor flag in $gcc_flags; do 2183 93b25869SJohn Snow if cc_has_warning_flag $flag ; then 2184 8d05095cSPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $flag" 2185 8d05095cSPaolo Bonzini fi 2186 8d05095cSPaolo Bonzinidone 2187 8d05095cSPaolo Bonzini 2188 63678e17SSteven Noonanif test "$stack_protector" != "no"; then 2189 fccd35a0SRodrigo Rebello cat > $TMPC << EOF 2190 fccd35a0SRodrigo Rebelloint main(int argc, char *argv[]) 2191 fccd35a0SRodrigo Rebello{ 2192 fccd35a0SRodrigo Rebello char arr[64], *p = arr, *c = argv[0]; 2193 fccd35a0SRodrigo Rebello while (*c) { 2194 fccd35a0SRodrigo Rebello *p++ = *c++; 2195 fccd35a0SRodrigo Rebello } 2196 fccd35a0SRodrigo Rebello return 0; 2197 fccd35a0SRodrigo Rebello} 2198 fccd35a0SRodrigo RebelloEOF 2199 63678e17SSteven Noonan gcc_flags="-fstack-protector-strong -fstack-protector-all" 2200 3b463a3fSMiroslav Rezanina sp_on=0 2201 63678e17SSteven Noonan for flag in $gcc_flags; do 2202 590e5dd9SPeter Maydell # We need to check both a compile and a link, since some compiler 2203 590e5dd9SPeter Maydell # setups fail only on a .c->.o compile and some only at link time 2204 086d5f75SPaolo Bonzini if compile_object "-Werror $flag" && 2205 590e5dd9SPeter Maydell compile_prog "-Werror $flag" ""; then 2206 63678e17SSteven Noonan QEMU_CFLAGS="$QEMU_CFLAGS $flag" 2207 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 2208 3b463a3fSMiroslav Rezanina sp_on=1 2209 63678e17SSteven Noonan break 2210 63678e17SSteven Noonan fi 2211 63678e17SSteven Noonan done 2212 3b463a3fSMiroslav Rezanina if test "$stack_protector" = yes; then 2213 3b463a3fSMiroslav Rezanina if test $sp_on = 0; then 2214 3b463a3fSMiroslav Rezanina error_exit "Stack protector not supported" 2215 3b463a3fSMiroslav Rezanina fi 2216 3b463a3fSMiroslav Rezanina fi 2217 37746c5eSMarc-André Lureaufi 2218 37746c5eSMarc-André Lureau 2219 20bc94a2SPaolo Bonzini# Disable -Wmissing-braces on older compilers that warn even for 2220 20bc94a2SPaolo Bonzini# the "universal" C zero initializer {0}. 2221 20bc94a2SPaolo Bonzinicat > $TMPC << EOF 2222 20bc94a2SPaolo Bonzinistruct { 2223 20bc94a2SPaolo Bonzini int a[2]; 2224 20bc94a2SPaolo Bonzini} x = {0}; 2225 20bc94a2SPaolo BonziniEOF 2226 20bc94a2SPaolo Bonziniif compile_object "-Werror" "" ; then 2227 20bc94a2SPaolo Bonzini : 2228 20bc94a2SPaolo Bonzinielse 2229 20bc94a2SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -Wno-missing-braces" 2230 20bc94a2SPaolo Bonzinifi 2231 20bc94a2SPaolo Bonzini 2232 21e709aaSMarc-André Lureau# Our module code doesn't support Windows 2233 21e709aaSMarc-André Lureauif test "$modules" = "yes" && test "$mingw32" = "yes" ; then 2234 21e709aaSMarc-André Lureau error_exit "Modules are not available for Windows" 2235 21e709aaSMarc-André Lureaufi 2236 21e709aaSMarc-André Lureau 2237 bd83c861SChristian Ehrhardt# module_upgrades is only reasonable if modules are enabled 2238 bd83c861SChristian Ehrhardtif test "$modules" = "no" && test "$module_upgrades" = "yes" ; then 2239 bd83c861SChristian Ehrhardt error_exit "Can't enable module-upgrades as Modules are not enabled" 2240 bd83c861SChristian Ehrhardtfi 2241 bd83c861SChristian Ehrhardt 2242 d376e9deSThomas Huth# Static linking is not possible with modules or PIE 2243 40d6444eSAvi Kivityif test "$static" = "yes" ; then 2244 aa0d1f44SPaolo Bonzini if test "$modules" = "yes" ; then 2245 aa0d1f44SPaolo Bonzini error_exit "static and modules are mutually incompatible" 2246 aa0d1f44SPaolo Bonzini fi 2247 40d6444eSAvi Kivityfi 2248 40d6444eSAvi Kivity 2249 768b7855SEmilio G. Cota# Unconditional check for compiler __thread support 2250 768b7855SEmilio G. Cota cat > $TMPC << EOF 2251 768b7855SEmilio G. Cotastatic __thread int tls_var; 2252 768b7855SEmilio G. Cotaint main(void) { return tls_var; } 2253 768b7855SEmilio G. CotaEOF 2254 768b7855SEmilio G. Cota 2255 768b7855SEmilio G. Cotaif ! compile_prog "-Werror" "" ; then 2256 768b7855SEmilio G. Cota error_exit "Your compiler does not support the __thread specifier for " \ 2257 768b7855SEmilio G. Cota "Thread-Local Storage (TLS). Please upgrade to a version that does." 2258 768b7855SEmilio G. Cotafi 2259 768b7855SEmilio G. Cota 2260 40d6444eSAvi Kivitycat > $TMPC << EOF 2261 21d4a791SAvi Kivity 2262 21d4a791SAvi Kivity#ifdef __linux__ 2263 21d4a791SAvi Kivity# define THREAD __thread 2264 21d4a791SAvi Kivity#else 2265 21d4a791SAvi Kivity# define THREAD 2266 21d4a791SAvi Kivity#endif 2267 21d4a791SAvi Kivitystatic THREAD int tls_var; 2268 21d4a791SAvi Kivityint main(void) { return tls_var; } 2269 40d6444eSAvi KivityEOF 2270 b2634124SRichard Henderson 2271 b2634124SRichard Henderson# Check we support --no-pie first; we will need this for building ROMs. 2272 412aeacdSAlex Bennéeif compile_prog "-Werror -fno-pie" "-no-pie"; then 2273 412aeacdSAlex Bennée CFLAGS_NOPIE="-fno-pie" 2274 b2634124SRichard Henderson LDFLAGS_NOPIE="-no-pie" 2275 412aeacdSAlex Bennéefi 2276 412aeacdSAlex Bennée 2277 12781462SRichard Hendersonif test "$static" = "yes"; then 2278 eca7a8e6SRichard Henderson if test "$pie" != "no" && compile_prog "-Werror -fPIE -DPIE" "-static-pie"; then 2279 086d5f75SPaolo Bonzini CFLAGS="-fPIE -DPIE $CFLAGS" 2280 12781462SRichard Henderson QEMU_LDFLAGS="-static-pie $QEMU_LDFLAGS" 2281 12781462SRichard Henderson pie="yes" 2282 12781462SRichard Henderson elif test "$pie" = "yes"; then 2283 12781462SRichard Henderson error_exit "-static-pie not available due to missing toolchain support" 2284 12781462SRichard Henderson else 2285 12781462SRichard Henderson QEMU_LDFLAGS="-static $QEMU_LDFLAGS" 2286 12781462SRichard Henderson pie="no" 2287 12781462SRichard Henderson fi 2288 12781462SRichard Hendersonelif test "$pie" = "no"; then 2289 086d5f75SPaolo Bonzini CFLAGS="$CFLAGS_NOPIE $CFLAGS" 2290 086d5f75SPaolo Bonzini LDFLAGS="$LDFLAGS_NOPIE $LDFLAGS" 2291 eca7a8e6SRichard Hendersonelif compile_prog "-Werror -fPIE -DPIE" "-pie"; then 2292 086d5f75SPaolo Bonzini CFLAGS="-fPIE -DPIE $CFLAGS" 2293 086d5f75SPaolo Bonzini LDFLAGS="-pie $LDFLAGS" 2294 40d6444eSAvi Kivity pie="yes" 2295 2c674109SRichard Hendersonelif test "$pie" = "yes"; then 2296 76ad07a4SPeter Maydell error_exit "PIE not available due to missing toolchain support" 2297 40d6444eSAvi Kivityelse 2298 40d6444eSAvi Kivity echo "Disabling PIE due to missing toolchain support" 2299 40d6444eSAvi Kivity pie="no" 2300 40d6444eSAvi Kivityfi 2301 40d6444eSAvi Kivity 2302 e6cbd751SRichard Henderson# Detect support for PT_GNU_RELRO + DT_BIND_NOW. 2303 e6cbd751SRichard Henderson# The combination is known as "full relro", because .got.plt is read-only too. 2304 e6cbd751SRichard Hendersonif compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then 2305 e6cbd751SRichard Henderson QEMU_LDFLAGS="-Wl,-z,relro -Wl,-z,now $QEMU_LDFLAGS" 2306 e6cbd751SRichard Hendersonfi 2307 e6cbd751SRichard Henderson 2308 09dada40SPaolo Bonzini########################################## 2309 09dada40SPaolo Bonzini# __sync_fetch_and_and requires at least -march=i486. Many toolchains 2310 09dada40SPaolo Bonzini# use i686 as default anyway, but for those that don't, an explicit 2311 09dada40SPaolo Bonzini# specification is necessary 2312 09dada40SPaolo Bonzini 2313 09dada40SPaolo Bonziniif test "$cpu" = "i386"; then 2314 09dada40SPaolo Bonzini cat > $TMPC << EOF 2315 09dada40SPaolo Bonzinistatic int sfaa(int *ptr) 2316 09dada40SPaolo Bonzini{ 2317 09dada40SPaolo Bonzini return __sync_fetch_and_and(ptr, 0); 2318 09dada40SPaolo Bonzini} 2319 09dada40SPaolo Bonzini 2320 09dada40SPaolo Bonziniint main(void) 2321 09dada40SPaolo Bonzini{ 2322 09dada40SPaolo Bonzini int val = 42; 2323 1405b629SStefan Weil val = __sync_val_compare_and_swap(&val, 0, 1); 2324 09dada40SPaolo Bonzini sfaa(&val); 2325 09dada40SPaolo Bonzini return val; 2326 09dada40SPaolo Bonzini} 2327 09dada40SPaolo BonziniEOF 2328 09dada40SPaolo Bonzini if ! compile_prog "" "" ; then 2329 09dada40SPaolo Bonzini QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS" 2330 09dada40SPaolo Bonzini fi 2331 09dada40SPaolo Bonzinifi 2332 09dada40SPaolo Bonzini 2333 09dada40SPaolo Bonzini######################################### 2334 ec530c81Sbellard# Solaris specific configure tool chain decisions 2335 09dada40SPaolo Bonzini 2336 ec530c81Sbellardif test "$solaris" = "yes" ; then 2337 6792aa11SLoïc Minier if has $install; then 2338 6792aa11SLoïc Minier : 2339 6792aa11SLoïc Minier else 2340 76ad07a4SPeter Maydell error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \ 2341 76ad07a4SPeter Maydell "install fileutils from www.blastwave.org using pkg-get -i fileutils" \ 2342 76ad07a4SPeter Maydell "to get ginstall which is used by default (which lives in /opt/csw/bin)" 2343 ec530c81Sbellard fi 2344 89138857SStefan Weil if test "$(path_of $install)" = "/usr/sbin/install" ; then 2345 76ad07a4SPeter Maydell error_exit "Solaris /usr/sbin/install is not an appropriate install program." \ 2346 76ad07a4SPeter Maydell "try ginstall from the GNU fileutils available from www.blastwave.org" \ 2347 76ad07a4SPeter Maydell "using pkg-get -i fileutils, or use --install=/usr/ucb/install" 2348 ec530c81Sbellard fi 2349 6792aa11SLoïc Minier if has ar; then 2350 6792aa11SLoïc Minier : 2351 6792aa11SLoïc Minier else 2352 ec530c81Sbellard if test -f /usr/ccs/bin/ar ; then 2353 76ad07a4SPeter Maydell error_exit "No path includes ar" \ 2354 76ad07a4SPeter Maydell "Add /usr/ccs/bin to your path and rerun configure" 2355 ec530c81Sbellard fi 2356 76ad07a4SPeter Maydell error_exit "No path includes ar" 2357 ec530c81Sbellard fi 2358 ec530c81Sbellardfi 2359 ec530c81Sbellard 2360 afb63ebdSStefan Weilif test -z "${target_list+xxx}" ; then 2361 d880a3baSPaolo Bonzini for target in $default_target_list; do 2362 d880a3baSPaolo Bonzini supported_target $target 2>/dev/null && \ 2363 d880a3baSPaolo Bonzini target_list="$target_list $target" 2364 d880a3baSPaolo Bonzini done 2365 d880a3baSPaolo Bonzini target_list="${target_list# }" 2366 121afa9eSAnthony Liguorielse 2367 89138857SStefan Weil target_list=$(echo "$target_list" | sed -e 's/,/ /g') 2368 d880a3baSPaolo Bonzini for target in $target_list; do 2369 25b48338SPeter Maydell # Check that we recognised the target name; this allows a more 2370 25b48338SPeter Maydell # friendly error message than if we let it fall through. 2371 25b48338SPeter Maydell case " $default_target_list " in 2372 25b48338SPeter Maydell *" $target "*) 2373 25b48338SPeter Maydell ;; 2374 25b48338SPeter Maydell *) 2375 25b48338SPeter Maydell error_exit "Unknown target name '$target'" 2376 25b48338SPeter Maydell ;; 2377 25b48338SPeter Maydell esac 2378 d880a3baSPaolo Bonzini supported_target $target || exit 1 2379 25b48338SPeter Maydell done 2380 d880a3baSPaolo Bonzinifi 2381 25b48338SPeter Maydell 2382 f55fe278SPaolo Bonzini# see if system emulation was really requested 2383 f55fe278SPaolo Bonzinicase " $target_list " in 2384 f55fe278SPaolo Bonzini *"-softmmu "*) softmmu=yes 2385 f55fe278SPaolo Bonzini ;; 2386 f55fe278SPaolo Bonzini *) softmmu=no 2387 f55fe278SPaolo Bonzini ;; 2388 f55fe278SPaolo Bonziniesac 2389 5327cf48Sbellard 2390 05dfa22bSPhilippe Mathieu-Daudéfor target in $target_list; do 2391 05dfa22bSPhilippe Mathieu-Daudé case "$target" in 2392 05dfa22bSPhilippe Mathieu-Daudé arm-softmmu | aarch64-softmmu | i386-softmmu | x86_64-softmmu) 2393 05dfa22bSPhilippe Mathieu-Daudé edk2_blobs="yes" 2394 05dfa22bSPhilippe Mathieu-Daudé ;; 2395 05dfa22bSPhilippe Mathieu-Daudé esac 2396 05dfa22bSPhilippe Mathieu-Daudédone 2397 623ef637SPhilippe Mathieu-Daudé# The EDK2 binaries are compressed with bzip2 2398 623ef637SPhilippe Mathieu-Daudéif test "$edk2_blobs" = "yes" && ! has bzip2; then 2399 623ef637SPhilippe Mathieu-Daudé error_exit "The bzip2 program is required for building QEMU" 2400 623ef637SPhilippe Mathieu-Daudéfi 2401 05dfa22bSPhilippe Mathieu-Daudé 2402 249247c9SJuan Quintelafeature_not_found() { 2403 249247c9SJuan Quintela feature=$1 2404 21684af0SStewart Smith remedy=$2 2405 249247c9SJuan Quintela 2406 76ad07a4SPeter Maydell error_exit "User requested feature $feature" \ 2407 21684af0SStewart Smith "configure was not able to find it." \ 2408 21684af0SStewart Smith "$remedy" 2409 249247c9SJuan Quintela} 2410 249247c9SJuan Quintela 2411 7d13299dSbellard# --- 2412 7d13299dSbellard# big/little endian test 2413 7d13299dSbellardcat > $TMPC << EOF 2414 61cc919fSMike Frysingershort big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, }; 2415 61cc919fSMike Frysingershort little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, }; 2416 61cc919fSMike Frysingerextern int foo(short *, short *); 2417 61cc919fSMike Frysingerint main(int argc, char *argv[]) { 2418 61cc919fSMike Frysinger return foo(big_endian, little_endian); 2419 7d13299dSbellard} 2420 7d13299dSbellardEOF 2421 7d13299dSbellard 2422 61cc919fSMike Frysingerif compile_object ; then 2423 12f15c91SAlice Frosi if strings -a $TMPO | grep -q BiGeNdIaN ; then 2424 61cc919fSMike Frysinger bigendian="yes" 2425 12f15c91SAlice Frosi elif strings -a $TMPO | grep -q LiTtLeEnDiAn ; then 2426 61cc919fSMike Frysinger bigendian="no" 2427 7d13299dSbellard else 2428 7d13299dSbellard echo big/little test failed 2429 7d13299dSbellard fi 2430 7d13299dSbellardelse 2431 61cc919fSMike Frysinger echo big/little test failed 2432 7d13299dSbellardfi 2433 7d13299dSbellard 2434 b0a47e79SJuan Quintela########################################## 2435 e10ee3f5SPhilippe Mathieu-Daudé# system tools 2436 e10ee3f5SPhilippe Mathieu-Daudéif test -z "$want_tools"; then 2437 e10ee3f5SPhilippe Mathieu-Daudé if test "$softmmu" = "no"; then 2438 e10ee3f5SPhilippe Mathieu-Daudé want_tools=no 2439 e10ee3f5SPhilippe Mathieu-Daudé else 2440 e10ee3f5SPhilippe Mathieu-Daudé want_tools=yes 2441 e10ee3f5SPhilippe Mathieu-Daudé fi 2442 e10ee3f5SPhilippe Mathieu-Daudéfi 2443 e10ee3f5SPhilippe Mathieu-Daudé 2444 e10ee3f5SPhilippe Mathieu-Daudé########################################## 2445 a30878e7SPeter Maydell# cocoa implies not SDL or GTK 2446 a30878e7SPeter Maydell# (the cocoa UI code currently assumes it is always the active UI 2447 a30878e7SPeter Maydell# and doesn't interact well with other UI frontend code) 2448 a30878e7SPeter Maydellif test "$cocoa" = "yes"; then 2449 a30878e7SPeter Maydell if test "$sdl" = "yes"; then 2450 a30878e7SPeter Maydell error_exit "Cocoa and SDL UIs cannot both be enabled at once" 2451 a30878e7SPeter Maydell fi 2452 a30878e7SPeter Maydell if test "$gtk" = "yes"; then 2453 a30878e7SPeter Maydell error_exit "Cocoa and GTK UIs cannot both be enabled at once" 2454 a30878e7SPeter Maydell fi 2455 a30878e7SPeter Maydell gtk=no 2456 a30878e7SPeter Maydell sdl=no 2457 a30878e7SPeter Maydellfi 2458 a30878e7SPeter Maydell 2459 6b39b063SEric Blake# Some versions of Mac OS X incorrectly define SIZE_MAX 2460 6b39b063SEric Blakecat > $TMPC << EOF 2461 6b39b063SEric Blake#include <stdint.h> 2462 6b39b063SEric Blake#include <stdio.h> 2463 6b39b063SEric Blakeint main(int argc, char *argv[]) { 2464 6b39b063SEric Blake return printf("%zu", SIZE_MAX); 2465 6b39b063SEric Blake} 2466 6b39b063SEric BlakeEOF 2467 6b39b063SEric Blakehave_broken_size_max=no 2468 6b39b063SEric Blakeif ! compile_object -Werror ; then 2469 6b39b063SEric Blake have_broken_size_max=yes 2470 6b39b063SEric Blakefi 2471 6b39b063SEric Blake 2472 a30878e7SPeter Maydell########################################## 2473 015a33bdSGonglei# L2TPV3 probe 2474 015a33bdSGonglei 2475 015a33bdSGongleicat > $TMPC <<EOF 2476 015a33bdSGonglei#include <sys/socket.h> 2477 bff6cb72SMichael Tokarev#include <linux/ip.h> 2478 015a33bdSGongleiint main(void) { return sizeof(struct mmsghdr); } 2479 015a33bdSGongleiEOF 2480 015a33bdSGongleiif compile_prog "" "" ; then 2481 015a33bdSGonglei l2tpv3=yes 2482 015a33bdSGongleielse 2483 015a33bdSGonglei l2tpv3=no 2484 015a33bdSGongleifi 2485 015a33bdSGonglei 2486 c9c8b88fSDavid CARLIERif check_include "pty.h" ; then 2487 c9c8b88fSDavid CARLIER pty_h=yes 2488 c9c8b88fSDavid CARLIERelse 2489 c9c8b88fSDavid CARLIER pty_h=no 2490 c9c8b88fSDavid CARLIERfi 2491 c9c8b88fSDavid CARLIER 2492 195588ccSDavid CARLIERcat > $TMPC <<EOF 2493 195588ccSDavid CARLIER#include <sys/mman.h> 2494 195588ccSDavid CARLIERint main(int argc, char *argv[]) { 2495 195588ccSDavid CARLIER return mlockall(MCL_FUTURE); 2496 195588ccSDavid CARLIER} 2497 195588ccSDavid CARLIEREOF 2498 195588ccSDavid CARLIERif compile_prog "" "" ; then 2499 195588ccSDavid CARLIER have_mlockall=yes 2500 195588ccSDavid CARLIERelse 2501 195588ccSDavid CARLIER have_mlockall=no 2502 195588ccSDavid CARLIERfi 2503 195588ccSDavid CARLIER 2504 299e6f19SPaolo Bonzini######################################### 2505 299e6f19SPaolo Bonzini# vhost interdependencies and host support 2506 299e6f19SPaolo Bonzini 2507 299e6f19SPaolo Bonzini# vhost backends 2508 299e6f19SPaolo Bonzinitest "$vhost_user" = "" && vhost_user=yes 2509 299e6f19SPaolo Bonziniif test "$vhost_user" = "yes" && test "$mingw32" = "yes"; then 2510 299e6f19SPaolo Bonzini error_exit "vhost-user isn't available on win32" 2511 299e6f19SPaolo Bonzinifi 2512 108a6481SCindy Lutest "$vhost_vdpa" = "" && vhost_vdpa=$linux 2513 108a6481SCindy Luif test "$vhost_vdpa" = "yes" && test "$linux" != "yes"; then 2514 108a6481SCindy Lu error_exit "vhost-vdpa is only available on Linux" 2515 108a6481SCindy Lufi 2516 299e6f19SPaolo Bonzinitest "$vhost_kernel" = "" && vhost_kernel=$linux 2517 299e6f19SPaolo Bonziniif test "$vhost_kernel" = "yes" && test "$linux" != "yes"; then 2518 299e6f19SPaolo Bonzini error_exit "vhost-kernel is only available on Linux" 2519 299e6f19SPaolo Bonzinifi 2520 299e6f19SPaolo Bonzini 2521 299e6f19SPaolo Bonzini# vhost-kernel devices 2522 299e6f19SPaolo Bonzinitest "$vhost_scsi" = "" && vhost_scsi=$vhost_kernel 2523 299e6f19SPaolo Bonziniif test "$vhost_scsi" = "yes" && test "$vhost_kernel" != "yes"; then 2524 299e6f19SPaolo Bonzini error_exit "--enable-vhost-scsi requires --enable-vhost-kernel" 2525 299e6f19SPaolo Bonzinifi 2526 299e6f19SPaolo Bonzinitest "$vhost_vsock" = "" && vhost_vsock=$vhost_kernel 2527 299e6f19SPaolo Bonziniif test "$vhost_vsock" = "yes" && test "$vhost_kernel" != "yes"; then 2528 299e6f19SPaolo Bonzini error_exit "--enable-vhost-vsock requires --enable-vhost-kernel" 2529 299e6f19SPaolo Bonzinifi 2530 299e6f19SPaolo Bonzini 2531 299e6f19SPaolo Bonzini# vhost-user backends 2532 299e6f19SPaolo Bonzinitest "$vhost_net_user" = "" && vhost_net_user=$vhost_user 2533 299e6f19SPaolo Bonziniif test "$vhost_net_user" = "yes" && test "$vhost_user" = "no"; then 2534 299e6f19SPaolo Bonzini error_exit "--enable-vhost-net-user requires --enable-vhost-user" 2535 299e6f19SPaolo Bonzinifi 2536 299e6f19SPaolo Bonzinitest "$vhost_crypto" = "" && vhost_crypto=$vhost_user 2537 299e6f19SPaolo Bonziniif test "$vhost_crypto" = "yes" && test "$vhost_user" = "no"; then 2538 299e6f19SPaolo Bonzini error_exit "--enable-vhost-crypto requires --enable-vhost-user" 2539 299e6f19SPaolo Bonzinifi 2540 98fc1adaSDr. David Alan Gilberttest "$vhost_user_fs" = "" && vhost_user_fs=$vhost_user 2541 98fc1adaSDr. David Alan Gilbertif test "$vhost_user_fs" = "yes" && test "$vhost_user" = "no"; then 2542 98fc1adaSDr. David Alan Gilbert error_exit "--enable-vhost-user-fs requires --enable-vhost-user" 2543 98fc1adaSDr. David Alan Gilbertfi 2544 108a6481SCindy Lu#vhost-vdpa backends 2545 108a6481SCindy Lutest "$vhost_net_vdpa" = "" && vhost_net_vdpa=$vhost_vdpa 2546 108a6481SCindy Luif test "$vhost_net_vdpa" = "yes" && test "$vhost_vdpa" = "no"; then 2547 108a6481SCindy Lu error_exit "--enable-vhost-net-vdpa requires --enable-vhost-vdpa" 2548 108a6481SCindy Lufi 2549 299e6f19SPaolo Bonzini 2550 299e6f19SPaolo Bonzini# OR the vhost-kernel and vhost-user values for simplicity 2551 299e6f19SPaolo Bonziniif test "$vhost_net" = ""; then 2552 299e6f19SPaolo Bonzini test "$vhost_net_user" = "yes" && vhost_net=yes 2553 299e6f19SPaolo Bonzini test "$vhost_kernel" = "yes" && vhost_net=yes 2554 299e6f19SPaolo Bonzinifi 2555 299e6f19SPaolo Bonzini 2556 015a33bdSGonglei########################################## 2557 4d9310f4SDaniel P. Berrange# MinGW / Mingw-w64 localtime_r/gmtime_r check 2558 4d9310f4SDaniel P. Berrange 2559 4d9310f4SDaniel P. Berrangeif test "$mingw32" = "yes"; then 2560 4d9310f4SDaniel P. Berrange # Some versions of MinGW / Mingw-w64 lack localtime_r 2561 4d9310f4SDaniel P. Berrange # and gmtime_r entirely. 2562 4d9310f4SDaniel P. Berrange # 2563 4d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 define a macro for 2564 4d9310f4SDaniel P. Berrange # localtime_r/gmtime_r. 2565 4d9310f4SDaniel P. Berrange # 2566 4d9310f4SDaniel P. Berrange # Some versions of Mingw-w64 will define functions 2567 4d9310f4SDaniel P. Berrange # for localtime_r/gmtime_r, but only if you have 2568 4d9310f4SDaniel P. Berrange # _POSIX_THREAD_SAFE_FUNCTIONS defined. For fun 2569 4d9310f4SDaniel P. Berrange # though, unistd.h and pthread.h both define 2570 4d9310f4SDaniel P. Berrange # that for you. 2571 4d9310f4SDaniel P. Berrange # 2572 4d9310f4SDaniel P. Berrange # So this #undef localtime_r and #include <unistd.h> 2573 4d9310f4SDaniel P. Berrange # are not in fact redundant. 2574 4d9310f4SDaniel P. Berrangecat > $TMPC << EOF 2575 4d9310f4SDaniel P. Berrange#include <unistd.h> 2576 4d9310f4SDaniel P. Berrange#include <time.h> 2577 4d9310f4SDaniel P. Berrange#undef localtime_r 2578 4d9310f4SDaniel P. Berrangeint main(void) { localtime_r(NULL, NULL); return 0; } 2579 4d9310f4SDaniel P. BerrangeEOF 2580 4d9310f4SDaniel P. Berrange if compile_prog "" "" ; then 2581 4d9310f4SDaniel P. Berrange localtime_r="yes" 2582 4d9310f4SDaniel P. Berrange else 2583 4d9310f4SDaniel P. Berrange localtime_r="no" 2584 4d9310f4SDaniel P. Berrange fi 2585 4d9310f4SDaniel P. Berrangefi 2586 4d9310f4SDaniel P. Berrange 2587 4d9310f4SDaniel P. Berrange########################################## 2588 779ab5e3SStefan Weil# pkg-config probe 2589 779ab5e3SStefan Weil 2590 779ab5e3SStefan Weilif ! has "$pkg_config_exe"; then 2591 76ad07a4SPeter Maydell error_exit "pkg-config binary '$pkg_config_exe' not found" 2592 779ab5e3SStefan Weilfi 2593 779ab5e3SStefan Weil 2594 779ab5e3SStefan Weil########################################## 2595 b0a47e79SJuan Quintela# NPTL probe 2596 b0a47e79SJuan Quintela 2597 24cb36a6SPeter Maydellif test "$linux_user" = "yes"; then 2598 bd0c5661Spbrook cat > $TMPC <<EOF 2599 bd0c5661Spbrook#include <sched.h> 2600 30813ceaSpbrook#include <linux/futex.h> 2601 182eacc0SStefan Weilint main(void) { 2602 bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT) 2603 bd0c5661Spbrook#error bork 2604 bd0c5661Spbrook#endif 2605 182eacc0SStefan Weil return 0; 2606 bd0c5661Spbrook} 2607 bd0c5661SpbrookEOF 2608 24cb36a6SPeter Maydell if ! compile_object ; then 2609 21684af0SStewart Smith feature_not_found "nptl" "Install glibc and linux kernel headers." 2610 b0a47e79SJuan Quintela fi 2611 bd0c5661Spbrookfi 2612 bd0c5661Spbrook 2613 ac62922eSbalrog########################################## 2614 607dacd0Sqiaonuohan# lzo check 2615 607dacd0Sqiaonuohan 2616 607dacd0Sqiaonuohanif test "$lzo" != "no" ; then 2617 607dacd0Sqiaonuohan cat > $TMPC << EOF 2618 607dacd0Sqiaonuohan#include <lzo/lzo1x.h> 2619 607dacd0Sqiaonuohanint main(void) { lzo_version(); return 0; } 2620 607dacd0SqiaonuohanEOF 2621 607dacd0Sqiaonuohan if compile_prog "" "-llzo2" ; then 2622 607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -llzo2" 2623 *708eab42SMarc-André Lureau lzo_libs="-llzo2" 2624 b25c9dffSStefan Weil lzo="yes" 2625 b25c9dffSStefan Weil else 2626 b25c9dffSStefan Weil if test "$lzo" = "yes"; then 2627 b25c9dffSStefan Weil feature_not_found "liblzo2" "Install liblzo2 devel" 2628 b25c9dffSStefan Weil fi 2629 b25c9dffSStefan Weil lzo="no" 2630 b25c9dffSStefan Weil fi 2631 607dacd0Sqiaonuohanfi 2632 607dacd0Sqiaonuohan 2633 607dacd0Sqiaonuohan########################################## 2634 607dacd0Sqiaonuohan# snappy check 2635 607dacd0Sqiaonuohan 2636 607dacd0Sqiaonuohanif test "$snappy" != "no" ; then 2637 607dacd0Sqiaonuohan cat > $TMPC << EOF 2638 607dacd0Sqiaonuohan#include <snappy-c.h> 2639 607dacd0Sqiaonuohanint main(void) { snappy_max_compressed_length(4096); return 0; } 2640 607dacd0SqiaonuohanEOF 2641 607dacd0Sqiaonuohan if compile_prog "" "-lsnappy" ; then 2642 607dacd0Sqiaonuohan libs_softmmu="$libs_softmmu -lsnappy" 2643 *708eab42SMarc-André Lureau snappy_libs='-lsnappy' 2644 b25c9dffSStefan Weil snappy="yes" 2645 b25c9dffSStefan Weil else 2646 b25c9dffSStefan Weil if test "$snappy" = "yes"; then 2647 b25c9dffSStefan Weil feature_not_found "libsnappy" "Install libsnappy devel" 2648 b25c9dffSStefan Weil fi 2649 b25c9dffSStefan Weil snappy="no" 2650 b25c9dffSStefan Weil fi 2651 607dacd0Sqiaonuohanfi 2652 607dacd0Sqiaonuohan 2653 607dacd0Sqiaonuohan########################################## 2654 6b383c08SPeter Wu# bzip2 check 2655 6b383c08SPeter Wu 2656 6b383c08SPeter Wuif test "$bzip2" != "no" ; then 2657 6b383c08SPeter Wu cat > $TMPC << EOF 2658 6b383c08SPeter Wu#include <bzlib.h> 2659 6b383c08SPeter Wuint main(void) { BZ2_bzlibVersion(); return 0; } 2660 6b383c08SPeter WuEOF 2661 6b383c08SPeter Wu if compile_prog "" "-lbz2" ; then 2662 6b383c08SPeter Wu bzip2="yes" 2663 6b383c08SPeter Wu else 2664 6b383c08SPeter Wu if test "$bzip2" = "yes"; then 2665 6b383c08SPeter Wu feature_not_found "libbzip2" "Install libbzip2 devel" 2666 6b383c08SPeter Wu fi 2667 6b383c08SPeter Wu bzip2="no" 2668 6b383c08SPeter Wu fi 2669 6b383c08SPeter Wufi 2670 6b383c08SPeter Wu 2671 6b383c08SPeter Wu########################################## 2672 83bc1f97SJulio Faracco# lzfse check 2673 83bc1f97SJulio Faracco 2674 83bc1f97SJulio Faraccoif test "$lzfse" != "no" ; then 2675 83bc1f97SJulio Faracco cat > $TMPC << EOF 2676 83bc1f97SJulio Faracco#include <lzfse.h> 2677 83bc1f97SJulio Faraccoint main(void) { lzfse_decode_scratch_size(); return 0; } 2678 83bc1f97SJulio FaraccoEOF 2679 83bc1f97SJulio Faracco if compile_prog "" "-llzfse" ; then 2680 83bc1f97SJulio Faracco lzfse="yes" 2681 83bc1f97SJulio Faracco else 2682 83bc1f97SJulio Faracco if test "$lzfse" = "yes"; then 2683 83bc1f97SJulio Faracco feature_not_found "lzfse" "Install lzfse devel" 2684 83bc1f97SJulio Faracco fi 2685 83bc1f97SJulio Faracco lzfse="no" 2686 83bc1f97SJulio Faracco fi 2687 83bc1f97SJulio Faraccofi 2688 83bc1f97SJulio Faracco 2689 83bc1f97SJulio Faracco########################################## 2690 3a678481SJuan Quintela# zstd check 2691 3a678481SJuan Quintela 2692 3a678481SJuan Quintelaif test "$zstd" != "no" ; then 2693 297254c7SJuan Quintela libzstd_minver="1.4.0" 2694 297254c7SJuan Quintela if $pkg_config --atleast-version=$libzstd_minver libzstd ; then 2695 3a678481SJuan Quintela zstd_cflags="$($pkg_config --cflags libzstd)" 2696 3a678481SJuan Quintela zstd_libs="$($pkg_config --libs libzstd)" 2697 3a678481SJuan Quintela zstd="yes" 2698 3a678481SJuan Quintela else 2699 3a678481SJuan Quintela if test "$zstd" = "yes" ; then 2700 3a678481SJuan Quintela feature_not_found "libzstd" "Install libzstd devel" 2701 3a678481SJuan Quintela fi 2702 3a678481SJuan Quintela zstd="no" 2703 3a678481SJuan Quintela fi 2704 3a678481SJuan Quintelafi 2705 3a678481SJuan Quintela 2706 3a678481SJuan Quintela########################################## 2707 f794573eSEduardo Otubo# libseccomp check 2708 f794573eSEduardo Otubo 2709 f794573eSEduardo Otuboif test "$seccomp" != "no" ; then 2710 3e684455SMichael Strosaker libseccomp_minver="2.3.0" 2711 25ed0eccSHelge Deller if $pkg_config --atleast-version=$libseccomp_minver libseccomp ; then 2712 c3883e1fSFam Zheng seccomp_cflags="$($pkg_config --cflags libseccomp)" 2713 c3883e1fSFam Zheng seccomp_libs="$($pkg_config --libs libseccomp)" 2714 f794573eSEduardo Otubo seccomp="yes" 2715 f794573eSEduardo Otubo else 2716 f794573eSEduardo Otubo if test "$seccomp" = "yes" ; then 2717 693e5910SAndrew Jones feature_not_found "libseccomp" \ 2718 693e5910SAndrew Jones "Install libseccomp devel >= $libseccomp_minver" 2719 896848f0SEduardo Otubo fi 2720 e84d5956SYann E. MORIN seccomp="no" 2721 f794573eSEduardo Otubo fi 2722 f794573eSEduardo Otubofi 2723 f794573eSEduardo Otubo########################################## 2724 e37630caSaliguori# xen probe 2725 e37630caSaliguori 2726 fc321b4bSJuan Quintelaif test "$xen" != "no" ; then 2727 c1cdd9d5SJuergen Gross # Check whether Xen library path is specified via --extra-ldflags to avoid 2728 c1cdd9d5SJuergen Gross # overriding this setting with pkg-config output. If not, try pkg-config 2729 c1cdd9d5SJuergen Gross # to obtain all needed flags. 2730 c1cdd9d5SJuergen Gross 2731 c1cdd9d5SJuergen Gross if ! echo $EXTRA_LDFLAGS | grep tools/libxc > /dev/null && \ 2732 c1cdd9d5SJuergen Gross $pkg_config --exists xencontrol ; then 2733 c1cdd9d5SJuergen Gross xen_ctrl_version="$(printf '%d%02d%02d' \ 2734 c1cdd9d5SJuergen Gross $($pkg_config --modversion xencontrol | sed 's/\./ /g') )" 2735 c1cdd9d5SJuergen Gross xen=yes 2736 c1cdd9d5SJuergen Gross xen_pc="xencontrol xenstore xenguest xenforeignmemory xengnttab" 2737 c1cdd9d5SJuergen Gross xen_pc="$xen_pc xenevtchn xendevicemodel" 2738 58ea9a7aSAnthony PERARD if $pkg_config --exists xentoolcore; then 2739 58ea9a7aSAnthony PERARD xen_pc="$xen_pc xentoolcore" 2740 58ea9a7aSAnthony PERARD fi 2741 c1cdd9d5SJuergen Gross QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags $xen_pc)" 2742 c1cdd9d5SJuergen Gross libs_softmmu="$($pkg_config --libs $xen_pc) $libs_softmmu" 2743 c1cdd9d5SJuergen Gross else 2744 c1cdd9d5SJuergen Gross 2745 b2266beeSJuan Quintela xen_libs="-lxenstore -lxenctrl -lxenguest" 2746 d9506cabSAnthony PERARD xen_stable_libs="-lxenforeignmemory -lxengnttab -lxenevtchn" 2747 d5b93ddfSAnthony PERARD 2748 50ced5b3SStefan Weil # First we test whether Xen headers and libraries are available. 2749 50ced5b3SStefan Weil # If no, we are done and there is no Xen support. 2750 50ced5b3SStefan Weil # If yes, more tests are run to detect the Xen version. 2751 50ced5b3SStefan Weil 2752 50ced5b3SStefan Weil # Xen (any) 2753 50ced5b3SStefan Weil cat > $TMPC <<EOF 2754 50ced5b3SStefan Weil#include <xenctrl.h> 2755 50ced5b3SStefan Weilint main(void) { 2756 50ced5b3SStefan Weil return 0; 2757 50ced5b3SStefan Weil} 2758 50ced5b3SStefan WeilEOF 2759 50ced5b3SStefan Weil if ! compile_prog "" "$xen_libs" ; then 2760 50ced5b3SStefan Weil # Xen not found 2761 50ced5b3SStefan Weil if test "$xen" = "yes" ; then 2762 21684af0SStewart Smith feature_not_found "xen" "Install xen devel" 2763 50ced5b3SStefan Weil fi 2764 50ced5b3SStefan Weil xen=no 2765 50ced5b3SStefan Weil 2766 d5b93ddfSAnthony PERARD # Xen unstable 2767 69deef08SPeter Maydell elif 2768 69deef08SPeter Maydell cat > $TMPC <<EOF && 2769 2cbf8903SRoss Lagerwall#undef XC_WANT_COMPAT_DEVICEMODEL_API 2770 2cbf8903SRoss Lagerwall#define __XEN_TOOLS__ 2771 2cbf8903SRoss Lagerwall#include <xendevicemodel.h> 2772 d3c49ebbSPaul Durrant#include <xenforeignmemory.h> 2773 2cbf8903SRoss Lagerwallint main(void) { 2774 2cbf8903SRoss Lagerwall xendevicemodel_handle *xd; 2775 d3c49ebbSPaul Durrant xenforeignmemory_handle *xfmem; 2776 2cbf8903SRoss Lagerwall 2777 2cbf8903SRoss Lagerwall xd = xendevicemodel_open(0, 0); 2778 2cbf8903SRoss Lagerwall xendevicemodel_pin_memory_cacheattr(xd, 0, 0, 0, 0); 2779 2cbf8903SRoss Lagerwall 2780 d3c49ebbSPaul Durrant xfmem = xenforeignmemory_open(0, 0); 2781 d3c49ebbSPaul Durrant xenforeignmemory_map_resource(xfmem, 0, 0, 0, 0, 0, NULL, 0, 0); 2782 d3c49ebbSPaul Durrant 2783 2cbf8903SRoss Lagerwall return 0; 2784 2cbf8903SRoss Lagerwall} 2785 2cbf8903SRoss LagerwallEOF 2786 2cbf8903SRoss Lagerwall compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 2787 2cbf8903SRoss Lagerwall then 2788 2cbf8903SRoss Lagerwall xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 2789 2cbf8903SRoss Lagerwall xen_ctrl_version=41100 2790 2cbf8903SRoss Lagerwall xen=yes 2791 2cbf8903SRoss Lagerwall elif 2792 2cbf8903SRoss Lagerwall cat > $TMPC <<EOF && 2793 5ba3d756SIgor Druzhinin#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2794 5ba3d756SIgor Druzhinin#include <xenforeignmemory.h> 2795 58ea9a7aSAnthony PERARD#include <xentoolcore.h> 2796 5ba3d756SIgor Druzhininint main(void) { 2797 5ba3d756SIgor Druzhinin xenforeignmemory_handle *xfmem; 2798 5ba3d756SIgor Druzhinin 2799 5ba3d756SIgor Druzhinin xfmem = xenforeignmemory_open(0, 0); 2800 5ba3d756SIgor Druzhinin xenforeignmemory_map2(xfmem, 0, 0, 0, 0, 0, 0, 0); 2801 58ea9a7aSAnthony PERARD xentoolcore_restrict_all(0); 2802 5ba3d756SIgor Druzhinin 2803 5ba3d756SIgor Druzhinin return 0; 2804 5ba3d756SIgor Druzhinin} 2805 5ba3d756SIgor DruzhininEOF 2806 58ea9a7aSAnthony PERARD compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs -lxentoolcore" 2807 5ba3d756SIgor Druzhinin then 2808 58ea9a7aSAnthony PERARD xen_stable_libs="-lxendevicemodel $xen_stable_libs -lxentoolcore" 2809 5ba3d756SIgor Druzhinin xen_ctrl_version=41000 2810 5ba3d756SIgor Druzhinin xen=yes 2811 5ba3d756SIgor Druzhinin elif 2812 5ba3d756SIgor Druzhinin cat > $TMPC <<EOF && 2813 da8090ccSPaul Durrant#undef XC_WANT_COMPAT_DEVICEMODEL_API 2814 da8090ccSPaul Durrant#define __XEN_TOOLS__ 2815 da8090ccSPaul Durrant#include <xendevicemodel.h> 2816 da8090ccSPaul Durrantint main(void) { 2817 da8090ccSPaul Durrant xendevicemodel_handle *xd; 2818 da8090ccSPaul Durrant 2819 da8090ccSPaul Durrant xd = xendevicemodel_open(0, 0); 2820 da8090ccSPaul Durrant xendevicemodel_close(xd); 2821 da8090ccSPaul Durrant 2822 da8090ccSPaul Durrant return 0; 2823 da8090ccSPaul Durrant} 2824 da8090ccSPaul DurrantEOF 2825 da8090ccSPaul Durrant compile_prog "" "$xen_libs -lxendevicemodel $xen_stable_libs" 2826 da8090ccSPaul Durrant then 2827 da8090ccSPaul Durrant xen_stable_libs="-lxendevicemodel $xen_stable_libs" 2828 f1167ee6SJuergen Gross xen_ctrl_version=40900 2829 da8090ccSPaul Durrant xen=yes 2830 da8090ccSPaul Durrant elif 2831 da8090ccSPaul Durrant cat > $TMPC <<EOF && 2832 5eeb39c2SIan Campbell/* 2833 5eeb39c2SIan Campbell * If we have stable libs the we don't want the libxc compat 2834 5eeb39c2SIan Campbell * layers, regardless of what CFLAGS we may have been given. 2835 b6eb9b45SPaulina Szubarczyk * 2836 b6eb9b45SPaulina Szubarczyk * Also, check if xengnttab_grant_copy_segment_t is defined and 2837 b6eb9b45SPaulina Szubarczyk * grant copy operation is implemented. 2838 b6eb9b45SPaulina Szubarczyk */ 2839 b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_EVTCHN_API 2840 b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_GNTTAB_API 2841 b6eb9b45SPaulina Szubarczyk#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2842 b6eb9b45SPaulina Szubarczyk#include <xenctrl.h> 2843 b6eb9b45SPaulina Szubarczyk#include <xenstore.h> 2844 b6eb9b45SPaulina Szubarczyk#include <xenevtchn.h> 2845 b6eb9b45SPaulina Szubarczyk#include <xengnttab.h> 2846 b6eb9b45SPaulina Szubarczyk#include <xenforeignmemory.h> 2847 b6eb9b45SPaulina Szubarczyk#include <stdint.h> 2848 b6eb9b45SPaulina Szubarczyk#include <xen/hvm/hvm_info_table.h> 2849 b6eb9b45SPaulina Szubarczyk#if !defined(HVM_MAX_VCPUS) 2850 b6eb9b45SPaulina Szubarczyk# error HVM_MAX_VCPUS not defined 2851 b6eb9b45SPaulina Szubarczyk#endif 2852 b6eb9b45SPaulina Szubarczykint main(void) { 2853 b6eb9b45SPaulina Szubarczyk xc_interface *xc = NULL; 2854 b6eb9b45SPaulina Szubarczyk xenforeignmemory_handle *xfmem; 2855 b6eb9b45SPaulina Szubarczyk xenevtchn_handle *xe; 2856 b6eb9b45SPaulina Szubarczyk xengnttab_handle *xg; 2857 b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy_segment_t* seg = NULL; 2858 b6eb9b45SPaulina Szubarczyk 2859 b6eb9b45SPaulina Szubarczyk xs_daemon_open(); 2860 b6eb9b45SPaulina Szubarczyk 2861 b6eb9b45SPaulina Szubarczyk xc = xc_interface_open(0, 0, 0); 2862 b6eb9b45SPaulina Szubarczyk xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2863 b6eb9b45SPaulina Szubarczyk xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2864 b6eb9b45SPaulina Szubarczyk xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2865 b6eb9b45SPaulina Szubarczyk xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2866 b6eb9b45SPaulina Szubarczyk 2867 b6eb9b45SPaulina Szubarczyk xfmem = xenforeignmemory_open(0, 0); 2868 b6eb9b45SPaulina Szubarczyk xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 2869 b6eb9b45SPaulina Szubarczyk 2870 b6eb9b45SPaulina Szubarczyk xe = xenevtchn_open(0, 0); 2871 b6eb9b45SPaulina Szubarczyk xenevtchn_fd(xe); 2872 b6eb9b45SPaulina Szubarczyk 2873 b6eb9b45SPaulina Szubarczyk xg = xengnttab_open(0, 0); 2874 b6eb9b45SPaulina Szubarczyk xengnttab_grant_copy(xg, 0, seg); 2875 b6eb9b45SPaulina Szubarczyk 2876 b6eb9b45SPaulina Szubarczyk return 0; 2877 b6eb9b45SPaulina Szubarczyk} 2878 b6eb9b45SPaulina SzubarczykEOF 2879 b6eb9b45SPaulina Szubarczyk compile_prog "" "$xen_libs $xen_stable_libs" 2880 b6eb9b45SPaulina Szubarczyk then 2881 f1167ee6SJuergen Gross xen_ctrl_version=40800 2882 b6eb9b45SPaulina Szubarczyk xen=yes 2883 b6eb9b45SPaulina Szubarczyk elif 2884 b6eb9b45SPaulina Szubarczyk cat > $TMPC <<EOF && 2885 b6eb9b45SPaulina Szubarczyk/* 2886 b6eb9b45SPaulina Szubarczyk * If we have stable libs the we don't want the libxc compat 2887 b6eb9b45SPaulina Szubarczyk * layers, regardless of what CFLAGS we may have been given. 2888 5eeb39c2SIan Campbell */ 2889 5eeb39c2SIan Campbell#undef XC_WANT_COMPAT_EVTCHN_API 2890 5eeb39c2SIan Campbell#undef XC_WANT_COMPAT_GNTTAB_API 2891 5eeb39c2SIan Campbell#undef XC_WANT_COMPAT_MAP_FOREIGN_API 2892 5eeb39c2SIan Campbell#include <xenctrl.h> 2893 5eeb39c2SIan Campbell#include <xenstore.h> 2894 5eeb39c2SIan Campbell#include <xenevtchn.h> 2895 5eeb39c2SIan Campbell#include <xengnttab.h> 2896 5eeb39c2SIan Campbell#include <xenforeignmemory.h> 2897 5eeb39c2SIan Campbell#include <stdint.h> 2898 5eeb39c2SIan Campbell#include <xen/hvm/hvm_info_table.h> 2899 5eeb39c2SIan Campbell#if !defined(HVM_MAX_VCPUS) 2900 5eeb39c2SIan Campbell# error HVM_MAX_VCPUS not defined 2901 5eeb39c2SIan Campbell#endif 2902 5eeb39c2SIan Campbellint main(void) { 2903 5eeb39c2SIan Campbell xc_interface *xc = NULL; 2904 5eeb39c2SIan Campbell xenforeignmemory_handle *xfmem; 2905 5eeb39c2SIan Campbell xenevtchn_handle *xe; 2906 5eeb39c2SIan Campbell xengnttab_handle *xg; 2907 5eeb39c2SIan Campbell 2908 5eeb39c2SIan Campbell xs_daemon_open(); 2909 5eeb39c2SIan Campbell 2910 5eeb39c2SIan Campbell xc = xc_interface_open(0, 0, 0); 2911 5eeb39c2SIan Campbell xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2912 5eeb39c2SIan Campbell xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2913 5eeb39c2SIan Campbell xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2914 5eeb39c2SIan Campbell xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2915 5eeb39c2SIan Campbell 2916 5eeb39c2SIan Campbell xfmem = xenforeignmemory_open(0, 0); 2917 5eeb39c2SIan Campbell xenforeignmemory_map(xfmem, 0, 0, 0, 0, 0); 2918 5eeb39c2SIan Campbell 2919 5eeb39c2SIan Campbell xe = xenevtchn_open(0, 0); 2920 5eeb39c2SIan Campbell xenevtchn_fd(xe); 2921 5eeb39c2SIan Campbell 2922 5eeb39c2SIan Campbell xg = xengnttab_open(0, 0); 2923 5eeb39c2SIan Campbell xengnttab_map_grant_ref(xg, 0, 0, 0); 2924 5eeb39c2SIan Campbell 2925 5eeb39c2SIan Campbell return 0; 2926 5eeb39c2SIan Campbell} 2927 5eeb39c2SIan CampbellEOF 2928 5eeb39c2SIan Campbell compile_prog "" "$xen_libs $xen_stable_libs" 2929 5eeb39c2SIan Campbell then 2930 f1167ee6SJuergen Gross xen_ctrl_version=40701 2931 5eeb39c2SIan Campbell xen=yes 2932 cdadde39SRoger Pau Monne 2933 cdadde39SRoger Pau Monne # Xen 4.6 2934 cdadde39SRoger Pau Monne elif 2935 cdadde39SRoger Pau Monne cat > $TMPC <<EOF && 2936 cdadde39SRoger Pau Monne#include <xenctrl.h> 2937 e108a3c1SAnthony PERARD#include <xenstore.h> 2938 d5b93ddfSAnthony PERARD#include <stdint.h> 2939 d5b93ddfSAnthony PERARD#include <xen/hvm/hvm_info_table.h> 2940 d5b93ddfSAnthony PERARD#if !defined(HVM_MAX_VCPUS) 2941 d5b93ddfSAnthony PERARD# error HVM_MAX_VCPUS not defined 2942 d5b93ddfSAnthony PERARD#endif 2943 d5b93ddfSAnthony PERARDint main(void) { 2944 d5b93ddfSAnthony PERARD xc_interface *xc; 2945 d5b93ddfSAnthony PERARD xs_daemon_open(); 2946 d5b93ddfSAnthony PERARD xc = xc_interface_open(0, 0, 0); 2947 d5b93ddfSAnthony PERARD xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2948 d5b93ddfSAnthony PERARD xc_gnttab_open(NULL, 0); 2949 b87de24eSAnthony PERARD xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2950 8688e065SStefano Stabellini xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2951 d8b441a3SJan Beulich xc_hvm_create_ioreq_server(xc, 0, HVM_IOREQSRV_BUFIOREQ_ATOMIC, NULL); 2952 20a544c7SKonrad Rzeszutek Wilk xc_reserved_device_memory_map(xc, 0, 0, 0, 0, NULL, 0); 2953 d8b441a3SJan Beulich return 0; 2954 d8b441a3SJan Beulich} 2955 d8b441a3SJan BeulichEOF 2956 d8b441a3SJan Beulich compile_prog "" "$xen_libs" 2957 d8b441a3SJan Beulich then 2958 f1167ee6SJuergen Gross xen_ctrl_version=40600 2959 d8b441a3SJan Beulich xen=yes 2960 d8b441a3SJan Beulich 2961 d8b441a3SJan Beulich # Xen 4.5 2962 d8b441a3SJan Beulich elif 2963 d8b441a3SJan Beulich cat > $TMPC <<EOF && 2964 d8b441a3SJan Beulich#include <xenctrl.h> 2965 d8b441a3SJan Beulich#include <xenstore.h> 2966 d8b441a3SJan Beulich#include <stdint.h> 2967 d8b441a3SJan Beulich#include <xen/hvm/hvm_info_table.h> 2968 d8b441a3SJan Beulich#if !defined(HVM_MAX_VCPUS) 2969 d8b441a3SJan Beulich# error HVM_MAX_VCPUS not defined 2970 d8b441a3SJan Beulich#endif 2971 d8b441a3SJan Beulichint main(void) { 2972 d8b441a3SJan Beulich xc_interface *xc; 2973 d8b441a3SJan Beulich xs_daemon_open(); 2974 d8b441a3SJan Beulich xc = xc_interface_open(0, 0, 0); 2975 d8b441a3SJan Beulich xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 2976 d8b441a3SJan Beulich xc_gnttab_open(NULL, 0); 2977 d8b441a3SJan Beulich xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 2978 d8b441a3SJan Beulich xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 2979 3996e85cSPaul Durrant xc_hvm_create_ioreq_server(xc, 0, 0, NULL); 2980 3996e85cSPaul Durrant return 0; 2981 3996e85cSPaul Durrant} 2982 3996e85cSPaul DurrantEOF 2983 3996e85cSPaul Durrant compile_prog "" "$xen_libs" 2984 3996e85cSPaul Durrant then 2985 f1167ee6SJuergen Gross xen_ctrl_version=40500 2986 3996e85cSPaul Durrant xen=yes 2987 3996e85cSPaul Durrant 2988 3996e85cSPaul Durrant elif 2989 3996e85cSPaul Durrant cat > $TMPC <<EOF && 2990 3996e85cSPaul Durrant#include <xenctrl.h> 2991 3996e85cSPaul Durrant#include <xenstore.h> 2992 3996e85cSPaul Durrant#include <stdint.h> 2993 3996e85cSPaul Durrant#include <xen/hvm/hvm_info_table.h> 2994 3996e85cSPaul Durrant#if !defined(HVM_MAX_VCPUS) 2995 3996e85cSPaul Durrant# error HVM_MAX_VCPUS not defined 2996 3996e85cSPaul Durrant#endif 2997 3996e85cSPaul Durrantint main(void) { 2998 3996e85cSPaul Durrant xc_interface *xc; 2999 3996e85cSPaul Durrant xs_daemon_open(); 3000 3996e85cSPaul Durrant xc = xc_interface_open(0, 0, 0); 3001 3996e85cSPaul Durrant xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0); 3002 3996e85cSPaul Durrant xc_gnttab_open(NULL, 0); 3003 3996e85cSPaul Durrant xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0); 3004 3996e85cSPaul Durrant xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000); 3005 8688e065SStefano Stabellini return 0; 3006 8688e065SStefano Stabellini} 3007 8688e065SStefano StabelliniEOF 3008 8688e065SStefano Stabellini compile_prog "" "$xen_libs" 3009 69deef08SPeter Maydell then 3010 f1167ee6SJuergen Gross xen_ctrl_version=40200 3011 8688e065SStefano Stabellini xen=yes 3012 8688e065SStefano Stabellini 3013 e37630caSaliguori else 3014 fc321b4bSJuan Quintela if test "$xen" = "yes" ; then 3015 edfb07edSIan Campbell feature_not_found "xen (unsupported version)" \ 3016 edfb07edSIan Campbell "Install a supported xen (xen 4.2 or newer)" 3017 fc321b4bSJuan Quintela fi 3018 fc321b4bSJuan Quintela xen=no 3019 e37630caSaliguori fi 3020 d5b93ddfSAnthony PERARD 3021 d5b93ddfSAnthony PERARD if test "$xen" = yes; then 3022 f1167ee6SJuergen Gross if test $xen_ctrl_version -ge 40701 ; then 3023 5eeb39c2SIan Campbell libs_softmmu="$xen_stable_libs $libs_softmmu" 3024 5eeb39c2SIan Campbell fi 3025 d5b93ddfSAnthony PERARD libs_softmmu="$xen_libs $libs_softmmu" 3026 d5b93ddfSAnthony PERARD fi 3027 e37630caSaliguori fi 3028 c1cdd9d5SJuergen Grossfi 3029 e37630caSaliguori 3030 eb6fda0fSAnthony PERARDif test "$xen_pci_passthrough" != "no"; then 3031 edfb07edSIan Campbell if test "$xen" = "yes" && test "$linux" = "yes"; then 3032 eb6fda0fSAnthony PERARD xen_pci_passthrough=yes 3033 eb6fda0fSAnthony PERARD else 3034 eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = "yes"; then 3035 76ad07a4SPeter Maydell error_exit "User requested feature Xen PCI Passthrough" \ 3036 76ad07a4SPeter Maydell " but this feature requires /sys from Linux" 3037 eb6fda0fSAnthony PERARD fi 3038 eb6fda0fSAnthony PERARD xen_pci_passthrough=no 3039 eb6fda0fSAnthony PERARD fi 3040 eb6fda0fSAnthony PERARDfi 3041 eb6fda0fSAnthony PERARD 3042 e37630caSaliguori########################################## 3043 d661d9a4SJustin Terry (VM)# Windows Hypervisor Platform accelerator (WHPX) check 3044 d661d9a4SJustin Terry (VM)if test "$whpx" != "no" ; then 3045 327fccb2SLucian Petrut if check_include "WinHvPlatform.h" && check_include "WinHvEmulation.h"; then 3046 d661d9a4SJustin Terry (VM) whpx="yes" 3047 d661d9a4SJustin Terry (VM) else 3048 d661d9a4SJustin Terry (VM) if test "$whpx" = "yes"; then 3049 53537bb1SJustin Terry (VM) via Qemu-devel feature_not_found "WinHvPlatform" "WinHvEmulation is not installed" 3050 d661d9a4SJustin Terry (VM) fi 3051 d661d9a4SJustin Terry (VM) whpx="no" 3052 d661d9a4SJustin Terry (VM) fi 3053 d661d9a4SJustin Terry (VM)fi 3054 d661d9a4SJustin Terry (VM) 3055 d661d9a4SJustin Terry (VM)########################################## 3056 dfffc653SJuan Quintela# Sparse probe 3057 dfffc653SJuan Quintelaif test "$sparse" != "no" ; then 3058 968b4db3SPaolo Bonzini if has sparse; then 3059 dfffc653SJuan Quintela sparse=yes 3060 dfffc653SJuan Quintela else 3061 dfffc653SJuan Quintela if test "$sparse" = "yes" ; then 3062 21684af0SStewart Smith feature_not_found "sparse" "Install sparse binary" 3063 dfffc653SJuan Quintela fi 3064 dfffc653SJuan Quintela sparse=no 3065 dfffc653SJuan Quintela fi 3066 dfffc653SJuan Quintelafi 3067 dfffc653SJuan Quintela 3068 dfffc653SJuan Quintela########################################## 3069 f676c67eSJeremy White# X11 probe 3070 f676c67eSJeremy Whiteif $pkg_config --exists "x11"; then 3071 8781595bSGerd Hoffmann have_x11=yes 3072 89138857SStefan Weil x11_cflags=$($pkg_config --cflags x11) 3073 89138857SStefan Weil x11_libs=$($pkg_config --libs x11) 3074 f676c67eSJeremy Whitefi 3075 f676c67eSJeremy White 3076 f676c67eSJeremy White########################################## 3077 a4ccabcfSAnthony Liguori# GTK probe 3078 a4ccabcfSAnthony Liguori 3079 5a464e6cSPeter Xuif test "$gtk" != "no"; then 3080 89d85cdeSDaniel P. Berrangé gtkpackage="gtk+-3.0" 3081 89d85cdeSDaniel P. Berrangé gtkx11package="gtk+-x11-3.0" 3082 7b23d121SVolker Rümelin gtkversion="3.22.0" 3083 bbbf9bfbSStefan Weil if $pkg_config --exists "$gtkpackage >= $gtkversion"; then 3084 89138857SStefan Weil gtk_cflags=$($pkg_config --cflags $gtkpackage) 3085 89138857SStefan Weil gtk_libs=$($pkg_config --libs $gtkpackage) 3086 89138857SStefan Weil gtk_version=$($pkg_config --modversion $gtkpackage) 3087 0a337ed0SGerd Hoffmann if $pkg_config --exists "$gtkx11package >= $gtkversion"; then 3088 8781595bSGerd Hoffmann need_x11=yes 3089 f676c67eSJeremy White gtk_cflags="$gtk_cflags $x11_cflags" 3090 f676c67eSJeremy White gtk_libs="$gtk_libs $x11_libs" 3091 0a337ed0SGerd Hoffmann fi 3092 bbbf9bfbSStefan Weil gtk="yes" 3093 bbbf9bfbSStefan Weil elif test "$gtk" = "yes"; then 3094 5fe309ffSGerd Hoffmann feature_not_found "gtk" "Install gtk3-devel" 3095 bbbf9bfbSStefan Weil else 3096 bbbf9bfbSStefan Weil gtk="no" 3097 bbbf9bfbSStefan Weil fi 3098 bbbf9bfbSStefan Weilfi 3099 bbbf9bfbSStefan Weil 3100 ddbb0d09SDaniel P. Berrange 3101 ddbb0d09SDaniel P. Berrange########################################## 3102 ddbb0d09SDaniel P. Berrange# GNUTLS probe 3103 ddbb0d09SDaniel P. Berrange 3104 ddbb0d09SDaniel P. Berrangeif test "$gnutls" != "no"; then 3105 a73e82efSRichard Henderson pass="no" 3106 a0722409SDaniel P. Berrangé if $pkg_config --exists "gnutls >= 3.1.18"; then 3107 89138857SStefan Weil gnutls_cflags=$($pkg_config --cflags gnutls) 3108 89138857SStefan Weil gnutls_libs=$($pkg_config --libs gnutls) 3109 a73e82efSRichard Henderson # Packaging for the static libraries is not always correct. 3110 a73e82efSRichard Henderson # At least ubuntu 18.04 ships only shared libraries. 3111 a73e82efSRichard Henderson write_c_skeleton 3112 a73e82efSRichard Henderson if compile_prog "" "$gnutls_libs" ; then 3113 243dc2cfSRichard Henderson LIBS="$gnutls_libs $LIBS" 3114 ddbb0d09SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags" 3115 a73e82efSRichard Henderson pass="yes" 3116 a73e82efSRichard Henderson fi 3117 a73e82efSRichard Henderson fi 3118 a73e82efSRichard Henderson if test "$pass" = "no" && test "$gnutls" = "yes"; then 3119 a0722409SDaniel P. Berrangé feature_not_found "gnutls" "Install gnutls devel >= 3.1.18" 3120 ddbb0d09SDaniel P. Berrange else 3121 a73e82efSRichard Henderson gnutls="$pass" 3122 ddbb0d09SDaniel P. Berrange fi 3123 ddbb0d09SDaniel P. Berrangefi 3124 ddbb0d09SDaniel P. Berrange 3125 91bfcdb0SDaniel P. Berrange 3126 91bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-gcrypt flag, 3127 91bfcdb0SDaniel P. Berrange# then mark as disabled if user requested nettle 3128 a0722409SDaniel P. Berrangé# explicitly 3129 91bfcdb0SDaniel P. Berrangeif test -z "$gcrypt" 3130 91bfcdb0SDaniel P. Berrangethen 3131 a0722409SDaniel P. Berrangé if test "$nettle" = "yes" 3132 91bfcdb0SDaniel P. Berrange then 3133 91bfcdb0SDaniel P. Berrange gcrypt="no" 3134 91bfcdb0SDaniel P. Berrange fi 3135 91bfcdb0SDaniel P. Berrangefi 3136 91bfcdb0SDaniel P. Berrange 3137 91bfcdb0SDaniel P. Berrange# If user didn't give a --disable/enable-nettle flag, 3138 91bfcdb0SDaniel P. Berrange# then mark as disabled if user requested gcrypt 3139 a0722409SDaniel P. Berrangé# explicitly 3140 91bfcdb0SDaniel P. Berrangeif test -z "$nettle" 3141 91bfcdb0SDaniel P. Berrangethen 3142 a0722409SDaniel P. Berrangé if test "$gcrypt" = "yes" 3143 91bfcdb0SDaniel P. Berrange then 3144 91bfcdb0SDaniel P. Berrange nettle="no" 3145 91bfcdb0SDaniel P. Berrange fi 3146 91bfcdb0SDaniel P. Berrangefi 3147 91bfcdb0SDaniel P. Berrange 3148 dea7a64eSDaniel P. Berrangéhas_libgcrypt() { 3149 91bfcdb0SDaniel P. Berrange if ! has "libgcrypt-config" 3150 91bfcdb0SDaniel P. Berrange then 3151 91bfcdb0SDaniel P. Berrange return 1 3152 91bfcdb0SDaniel P. Berrange fi 3153 91bfcdb0SDaniel P. Berrange 3154 91bfcdb0SDaniel P. Berrange if test -n "$cross_prefix" 3155 91bfcdb0SDaniel P. Berrange then 3156 89138857SStefan Weil host=$(libgcrypt-config --host) 3157 91bfcdb0SDaniel P. Berrange if test "$host-" != $cross_prefix 3158 91bfcdb0SDaniel P. Berrange then 3159 91bfcdb0SDaniel P. Berrange return 1 3160 91bfcdb0SDaniel P. Berrange fi 3161 91bfcdb0SDaniel P. Berrange fi 3162 91bfcdb0SDaniel P. Berrange 3163 dea7a64eSDaniel P. Berrangé maj=`libgcrypt-config --version | awk -F . '{print $1}'` 3164 dea7a64eSDaniel P. Berrangé min=`libgcrypt-config --version | awk -F . '{print $2}'` 3165 dea7a64eSDaniel P. Berrangé 3166 dea7a64eSDaniel P. Berrangé if test $maj != 1 || test $min -lt 5 3167 dea7a64eSDaniel P. Berrangé then 3168 dea7a64eSDaniel P. Berrangé return 1 3169 dea7a64eSDaniel P. Berrangé fi 3170 dea7a64eSDaniel P. Berrangé 3171 91bfcdb0SDaniel P. Berrange return 0 3172 91bfcdb0SDaniel P. Berrange} 3173 91bfcdb0SDaniel P. Berrange 3174 a0722409SDaniel P. Berrangé 3175 a0722409SDaniel P. Berrangéif test "$nettle" != "no"; then 3176 a73e82efSRichard Henderson pass="no" 3177 64dd2f3bSDaniel P. Berrangé if $pkg_config --exists "nettle >= 2.7.1"; then 3178 a0722409SDaniel P. Berrangé nettle_cflags=$($pkg_config --cflags nettle) 3179 a0722409SDaniel P. Berrangé nettle_libs=$($pkg_config --libs nettle) 3180 a0722409SDaniel P. Berrangé nettle_version=$($pkg_config --modversion nettle) 3181 a73e82efSRichard Henderson # Link test to make sure the given libraries work (e.g for static). 3182 a73e82efSRichard Henderson write_c_skeleton 3183 a73e82efSRichard Henderson if compile_prog "" "$nettle_libs" ; then 3184 243dc2cfSRichard Henderson LIBS="$nettle_libs $LIBS" 3185 a0722409SDaniel P. Berrangé QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags" 3186 a0722409SDaniel P. Berrangé if test -z "$gcrypt"; then 3187 a0722409SDaniel P. Berrangé gcrypt="no" 3188 a0722409SDaniel P. Berrangé fi 3189 a73e82efSRichard Henderson pass="yes" 3190 a73e82efSRichard Henderson fi 3191 a73e82efSRichard Henderson fi 3192 dc2207afSDaniel P. Berrangé if test "$pass" = "yes" 3193 dc2207afSDaniel P. Berrangé then 3194 dc2207afSDaniel P. Berrangé cat > $TMPC << EOF 3195 dc2207afSDaniel P. Berrangé#include <nettle/xts.h> 3196 dc2207afSDaniel P. Berrangéint main(void) { 3197 dc2207afSDaniel P. Berrangé return 0; 3198 dc2207afSDaniel P. Berrangé} 3199 dc2207afSDaniel P. BerrangéEOF 3200 dc2207afSDaniel P. Berrangé if compile_prog "$nettle_cflags" "$nettle_libs" ; then 3201 dc2207afSDaniel P. Berrangé nettle_xts=yes 3202 dc2207afSDaniel P. Berrangé qemu_private_xts=no 3203 dc2207afSDaniel P. Berrangé fi 3204 dc2207afSDaniel P. Berrangé fi 3205 a73e82efSRichard Henderson if test "$pass" = "no" && test "$nettle" = "yes"; then 3206 64dd2f3bSDaniel P. Berrangé feature_not_found "nettle" "Install nettle devel >= 2.7.1" 3207 a0722409SDaniel P. Berrangé else 3208 a73e82efSRichard Henderson nettle="$pass" 3209 a0722409SDaniel P. Berrangé fi 3210 a0722409SDaniel P. Berrangéfi 3211 a0722409SDaniel P. Berrangé 3212 91bfcdb0SDaniel P. Berrangeif test "$gcrypt" != "no"; then 3213 a73e82efSRichard Henderson pass="no" 3214 dea7a64eSDaniel P. Berrangé if has_libgcrypt; then 3215 89138857SStefan Weil gcrypt_cflags=$(libgcrypt-config --cflags) 3216 89138857SStefan Weil gcrypt_libs=$(libgcrypt-config --libs) 3217 a73e82efSRichard Henderson # Debian has removed -lgpg-error from libgcrypt-config 3218 91bfcdb0SDaniel P. Berrange # as it "spreads unnecessary dependencies" which in 3219 91bfcdb0SDaniel P. Berrange # turn breaks static builds... 3220 91bfcdb0SDaniel P. Berrange if test "$static" = "yes" 3221 91bfcdb0SDaniel P. Berrange then 3222 91bfcdb0SDaniel P. Berrange gcrypt_libs="$gcrypt_libs -lgpg-error" 3223 91bfcdb0SDaniel P. Berrange fi 3224 1f923c70SLongpeng(Mike) 3225 a73e82efSRichard Henderson # Link test to make sure the given libraries work (e.g for static). 3226 a73e82efSRichard Henderson write_c_skeleton 3227 a73e82efSRichard Henderson if compile_prog "" "$gcrypt_libs" ; then 3228 243dc2cfSRichard Henderson LIBS="$gcrypt_libs $LIBS" 3229 37788f25SDaniel P. Berrange QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags" 3230 a73e82efSRichard Henderson pass="yes" 3231 a73e82efSRichard Henderson fi 3232 a73e82efSRichard Henderson fi 3233 a73e82efSRichard Henderson if test "$pass" = "yes"; then 3234 37788f25SDaniel P. Berrange gcrypt="yes" 3235 1f923c70SLongpeng(Mike) cat > $TMPC << EOF 3236 1f923c70SLongpeng(Mike)#include <gcrypt.h> 3237 1f923c70SLongpeng(Mike)int main(void) { 3238 1f923c70SLongpeng(Mike) gcry_mac_hd_t handle; 3239 1f923c70SLongpeng(Mike) gcry_mac_open(&handle, GCRY_MAC_HMAC_MD5, 3240 1f923c70SLongpeng(Mike) GCRY_MAC_FLAG_SECURE, NULL); 3241 1f923c70SLongpeng(Mike) return 0; 3242 1f923c70SLongpeng(Mike)} 3243 1f923c70SLongpeng(Mike)EOF 3244 1f923c70SLongpeng(Mike) if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 3245 1f923c70SLongpeng(Mike) gcrypt_hmac=yes 3246 1f923c70SLongpeng(Mike) fi 3247 e0576942SDaniel P. Berrangé cat > $TMPC << EOF 3248 e0576942SDaniel P. Berrangé#include <gcrypt.h> 3249 e0576942SDaniel P. Berrangéint main(void) { 3250 e0576942SDaniel P. Berrangé gcry_cipher_hd_t handle; 3251 e0576942SDaniel P. Berrangé gcry_cipher_open(&handle, GCRY_CIPHER_AES, GCRY_CIPHER_MODE_XTS, 0); 3252 e0576942SDaniel P. Berrangé return 0; 3253 e0576942SDaniel P. Berrangé} 3254 e0576942SDaniel P. BerrangéEOF 3255 e0576942SDaniel P. Berrangé if compile_prog "$gcrypt_cflags" "$gcrypt_libs" ; then 3256 e0576942SDaniel P. Berrangé gcrypt_xts=yes 3257 e0576942SDaniel P. Berrangé qemu_private_xts=no 3258 e0576942SDaniel P. Berrangé fi 3259 a73e82efSRichard Henderson elif test "$gcrypt" = "yes"; then 3260 dea7a64eSDaniel P. Berrangé feature_not_found "gcrypt" "Install gcrypt devel >= 1.5.0" 3261 91bfcdb0SDaniel P. Berrange else 3262 91bfcdb0SDaniel P. Berrange gcrypt="no" 3263 91bfcdb0SDaniel P. Berrange fi 3264 62893b67SDaniel P. Berrangefi 3265 62893b67SDaniel P. Berrange 3266 ddbb0d09SDaniel P. Berrange 3267 91bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" && test "$nettle" = "yes" 3268 91bfcdb0SDaniel P. Berrangethen 3269 91bfcdb0SDaniel P. Berrange error_exit "Only one of gcrypt & nettle can be enabled" 3270 91bfcdb0SDaniel P. Berrangefi 3271 ed754746SDaniel P. Berrange 3272 9a2fd434SDaniel P. Berrange########################################## 3273 9a2fd434SDaniel P. Berrange# libtasn1 - only for the TLS creds/session test suite 3274 9a2fd434SDaniel P. Berrange 3275 9a2fd434SDaniel P. Berrangetasn1=yes 3276 90246037SDaniel P. Berrangetasn1_cflags="" 3277 90246037SDaniel P. Berrangetasn1_libs="" 3278 9a2fd434SDaniel P. Berrangeif $pkg_config --exists "libtasn1"; then 3279 89138857SStefan Weil tasn1_cflags=$($pkg_config --cflags libtasn1) 3280 89138857SStefan Weil tasn1_libs=$($pkg_config --libs libtasn1) 3281 9a2fd434SDaniel P. Berrangeelse 3282 9a2fd434SDaniel P. Berrange tasn1=no 3283 9a2fd434SDaniel P. Berrangefi 3284 9a2fd434SDaniel P. Berrange 3285 ed754746SDaniel P. Berrange 3286 bbbf9bfbSStefan Weil########################################## 3287 8953caf3SDaniel P. Berrange# PAM probe 3288 8953caf3SDaniel P. Berrange 3289 8953caf3SDaniel P. Berrangeif test "$auth_pam" != "no"; then 3290 8953caf3SDaniel P. Berrange cat > $TMPC <<EOF 3291 8953caf3SDaniel P. Berrange#include <security/pam_appl.h> 3292 8953caf3SDaniel P. Berrange#include <stdio.h> 3293 8953caf3SDaniel P. Berrangeint main(void) { 3294 8953caf3SDaniel P. Berrange const char *service_name = "qemu"; 3295 8953caf3SDaniel P. Berrange const char *user = "frank"; 3296 9c9642d0SDr. David Alan Gilbert const struct pam_conv pam_conv = { 0 }; 3297 8953caf3SDaniel P. Berrange pam_handle_t *pamh = NULL; 3298 9c9642d0SDr. David Alan Gilbert pam_start(service_name, user, &pam_conv, &pamh); 3299 8953caf3SDaniel P. Berrange return 0; 3300 8953caf3SDaniel P. Berrange} 3301 8953caf3SDaniel P. BerrangeEOF 3302 8953caf3SDaniel P. Berrange if compile_prog "" "-lpam" ; then 3303 8953caf3SDaniel P. Berrange auth_pam=yes 3304 8953caf3SDaniel P. Berrange else 3305 8953caf3SDaniel P. Berrange if test "$auth_pam" = "yes"; then 3306 8953caf3SDaniel P. Berrange feature_not_found "PAM" "Install PAM development package" 3307 8953caf3SDaniel P. Berrange else 3308 8953caf3SDaniel P. Berrange auth_pam=no 3309 8953caf3SDaniel P. Berrange fi 3310 8953caf3SDaniel P. Berrange fi 3311 8953caf3SDaniel P. Berrangefi 3312 8953caf3SDaniel P. Berrange 3313 8953caf3SDaniel P. Berrange########################################## 3314 559607eaSDaniel P. Berrange# getifaddrs (for tests/test-io-channel-socket ) 3315 559607eaSDaniel P. Berrange 3316 559607eaSDaniel P. Berrangehave_ifaddrs_h=yes 3317 559607eaSDaniel P. Berrangeif ! check_include "ifaddrs.h" ; then 3318 559607eaSDaniel P. Berrange have_ifaddrs_h=no 3319 559607eaSDaniel P. Berrangefi 3320 559607eaSDaniel P. Berrange 3321 e865b97fSChen Gang######################################### 3322 e865b97fSChen Gang# libdrm check 3323 e865b97fSChen Ganghave_drm_h=no 3324 e865b97fSChen Gangif check_include "libdrm/drm.h" ; then 3325 e865b97fSChen Gang have_drm_h=yes 3326 e865b97fSChen Gangfi 3327 e865b97fSChen Gang 3328 2a4b472cSDavid CARLIER######################################### 3329 2a4b472cSDavid CARLIER# sys/signal.h check 3330 2a4b472cSDavid CARLIERhave_sys_signal_h=no 3331 2a4b472cSDavid CARLIERif check_include "sys/signal.h" ; then 3332 2a4b472cSDavid CARLIER have_sys_signal_h=yes 3333 2a4b472cSDavid CARLIERfi 3334 2a4b472cSDavid CARLIER 3335 559607eaSDaniel P. Berrange########################################## 3336 bbbf9bfbSStefan Weil# VTE probe 3337 bbbf9bfbSStefan Weil 3338 bbbf9bfbSStefan Weilif test "$vte" != "no"; then 3339 c6feff9eSCole Robinson vteminversion="0.32.0" 3340 c6feff9eSCole Robinson if $pkg_config --exists "vte-2.91"; then 3341 c6feff9eSCole Robinson vtepackage="vte-2.91" 3342 c6feff9eSCole Robinson else 3343 528de90aSDaniel P. Berrange vtepackage="vte-2.90" 3344 c6feff9eSCole Robinson fi 3345 c6feff9eSCole Robinson if $pkg_config --exists "$vtepackage >= $vteminversion"; then 3346 89138857SStefan Weil vte_cflags=$($pkg_config --cflags $vtepackage) 3347 89138857SStefan Weil vte_libs=$($pkg_config --libs $vtepackage) 3348 89138857SStefan Weil vteversion=$($pkg_config --modversion $vtepackage) 3349 bbbf9bfbSStefan Weil vte="yes" 3350 bbbf9bfbSStefan Weil elif test "$vte" = "yes"; then 3351 c6feff9eSCole Robinson feature_not_found "vte" "Install libvte-2.90/2.91 devel" 3352 9e04c683SStefan Weil else 3353 bbbf9bfbSStefan Weil vte="no" 3354 a4ccabcfSAnthony Liguori fi 3355 a4ccabcfSAnthony Liguorifi 3356 a4ccabcfSAnthony Liguori 3357 a4ccabcfSAnthony Liguori########################################## 3358 11d9f695Sbellard# SDL probe 3359 11d9f695Sbellard 3360 aee8a619SCarlo Marcelo Arenas Belón# Look for sdl configuration program (pkg-config or sdl2-config). Try 3361 aee8a619SCarlo Marcelo Arenas Belón# sdl2-config even without cross prefix, and favour pkg-config over sdl2-config. 3362 47c03744SDave Airlie 3363 c6093a05SPeter Xusdl_probe () 3364 c6093a05SPeter Xu{ 3365 0015ca5cSDaniel P. Berrangé if $pkg_config sdl2 --exists; then 3366 0015ca5cSDaniel P. Berrangé sdlconfig="$pkg_config sdl2" 3367 89138857SStefan Weil sdlversion=$($sdlconfig --modversion 2>/dev/null) 3368 aee8a619SCarlo Marcelo Arenas Belón elif has "$sdl2_config"; then 3369 0015ca5cSDaniel P. Berrangé sdlconfig="$sdl2_config" 3370 89138857SStefan Weil sdlversion=$($sdlconfig --version) 3371 a0dfd8a4SLoïc Minier else 3372 a0dfd8a4SLoïc Minier if test "$sdl" = "yes" ; then 3373 8f4ea9cdSGerd Hoffmann feature_not_found "sdl" "Install SDL2-devel" 3374 a0dfd8a4SLoïc Minier fi 3375 a0dfd8a4SLoïc Minier sdl=no 3376 c6093a05SPeter Xu # no need to do the rest 3377 c6093a05SPeter Xu return 3378 9316f803SPaolo Bonzini fi 3379 aee8a619SCarlo Marcelo Arenas Belón if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl2-config; then 3380 3ec87ffeSPaolo Bonzini echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2 3381 3ec87ffeSPaolo Bonzini fi 3382 11d9f695Sbellard 3383 11d9f695Sbellard cat > $TMPC << EOF 3384 11d9f695Sbellard#include <SDL.h> 3385 11d9f695Sbellard#undef main /* We don't want SDL to override our main() */ 3386 11d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); } 3387 11d9f695SbellardEOF 3388 89138857SStefan Weil sdl_cflags=$($sdlconfig --cflags 2>/dev/null) 3389 2ca5c430SGerd Hoffmann sdl_cflags="$sdl_cflags -Wno-undef" # workaround 2.0.8 bug 3390 74f42e18STeLeMan if test "$static" = "yes" ; then 3391 0015ca5cSDaniel P. Berrangé if $pkg_config sdl2 --exists; then 3392 0015ca5cSDaniel P. Berrangé sdl_libs=$($pkg_config sdl2 --static --libs 2>/dev/null) 3393 5f37e6d4SThomas Huth else 3394 89138857SStefan Weil sdl_libs=$($sdlconfig --static-libs 2>/dev/null) 3395 5f37e6d4SThomas Huth fi 3396 74f42e18STeLeMan else 3397 89138857SStefan Weil sdl_libs=$($sdlconfig --libs 2>/dev/null) 3398 74f42e18STeLeMan fi 3399 52166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 3400 11d9f695Sbellard sdl=yes 3401 7c1f25b4Sbellard 3402 67c274d3SPaolo Bonzini # static link with sdl ? (note: sdl.pc's --static --libs is broken) 3403 e633a5c6SEric Blake if test "$sdl" = "yes" && test "$static" = "yes" ; then 3404 67c274d3SPaolo Bonzini if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then 3405 89138857SStefan Weil sdl_libs="$sdl_libs $(aalib-config --static-libs 2>/dev/null)" 3406 89138857SStefan Weil sdl_cflags="$sdl_cflags $(aalib-config --cflags 2>/dev/null)" 3407 11d9f695Sbellard fi 3408 52166aa0SJuan Quintela if compile_prog "$sdl_cflags" "$sdl_libs" ; then 3409 1ac88f28SJuan Quintela : 3410 1ac88f28SJuan Quintela else 3411 1ac88f28SJuan Quintela sdl=no 3412 7c1f25b4Sbellard fi 3413 7c1f25b4Sbellard fi # static link 3414 c4198157SJuan Quintela else # sdl not found 3415 c4198157SJuan Quintela if test "$sdl" = "yes" ; then 3416 0015ca5cSDaniel P. Berrangé feature_not_found "sdl" "Install SDL2 devel" 3417 c4198157SJuan Quintela fi 3418 c4198157SJuan Quintela sdl=no 3419 7c1f25b4Sbellard fi # sdl compile test 3420 c6093a05SPeter Xu} 3421 c6093a05SPeter Xu 3422 a442fe2fSDaniel P. Berrangésdl_image_probe () 3423 a442fe2fSDaniel P. Berrangé{ 3424 a442fe2fSDaniel P. Berrangé if test "$sdl_image" != "no" ; then 3425 a442fe2fSDaniel P. Berrangé if $pkg_config SDL2_image --exists; then 3426 a442fe2fSDaniel P. Berrangé if test "$static" = "yes"; then 3427 a442fe2fSDaniel P. Berrangé sdl_image_libs=$($pkg_config SDL2_image --libs --static 2>/dev/null) 3428 a442fe2fSDaniel P. Berrangé else 3429 a442fe2fSDaniel P. Berrangé sdl_image_libs=$($pkg_config SDL2_image --libs 2>/dev/null) 3430 a442fe2fSDaniel P. Berrangé fi 3431 a442fe2fSDaniel P. Berrangé sdl_image_cflags=$($pkg_config SDL2_image --cflags 2>/dev/null) 3432 a442fe2fSDaniel P. Berrangé sdl_image=yes 3433 a442fe2fSDaniel P. Berrangé 3434 a442fe2fSDaniel P. Berrangé sdl_cflags="$sdl_cflags $sdl_image_cflags" 3435 a442fe2fSDaniel P. Berrangé sdl_libs="$sdl_libs $sdl_image_libs" 3436 a442fe2fSDaniel P. Berrangé else 3437 a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes" ; then 3438 a442fe2fSDaniel P. Berrangé feature_not_found "sdl_image" "Install SDL Image devel" 3439 a442fe2fSDaniel P. Berrangé else 3440 a442fe2fSDaniel P. Berrangé sdl_image=no 3441 a442fe2fSDaniel P. Berrangé fi 3442 a442fe2fSDaniel P. Berrangé fi 3443 a442fe2fSDaniel P. Berrangé fi 3444 a442fe2fSDaniel P. Berrangé} 3445 a442fe2fSDaniel P. Berrangé 3446 c6093a05SPeter Xuif test "$sdl" != "no" ; then 3447 c6093a05SPeter Xu sdl_probe 3448 fd677642Sthsfi 3449 11d9f695Sbellard 3450 5368a422Saliguoriif test "$sdl" = "yes" ; then 3451 a442fe2fSDaniel P. Berrangé sdl_image_probe 3452 a442fe2fSDaniel P. Berrangéelse 3453 a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes"; then 3454 a442fe2fSDaniel P. Berrangé echo "warning: SDL Image requested, but SDL is not available, disabling" 3455 a442fe2fSDaniel P. Berrangé fi 3456 a442fe2fSDaniel P. Berrangé sdl_image=no 3457 a442fe2fSDaniel P. Berrangéfi 3458 a442fe2fSDaniel P. Berrangé 3459 a442fe2fSDaniel P. Berrangéif test "$sdl" = "yes" ; then 3460 5368a422Saliguori cat > $TMPC <<EOF 3461 5368a422Saliguori#include <SDL.h> 3462 5368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11) 3463 5368a422Saliguori#include <X11/XKBlib.h> 3464 5368a422Saliguori#else 3465 5368a422Saliguori#error No x11 support 3466 5368a422Saliguori#endif 3467 5368a422Saliguoriint main(void) { return 0; } 3468 5368a422SaliguoriEOF 3469 f676c67eSJeremy White if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then 3470 8781595bSGerd Hoffmann need_x11=yes 3471 f676c67eSJeremy White sdl_cflags="$sdl_cflags $x11_cflags" 3472 f676c67eSJeremy White sdl_libs="$sdl_libs $x11_libs" 3473 5368a422Saliguori fi 3474 5368a422Saliguorifi 3475 5368a422Saliguori 3476 8f28f3fbSths########################################## 3477 2da776dbSMichael R. Hines# RDMA needs OpenFabrics libraries 3478 2da776dbSMichael R. Hinesif test "$rdma" != "no" ; then 3479 2da776dbSMichael R. Hines cat > $TMPC <<EOF 3480 2da776dbSMichael R. Hines#include <rdma/rdma_cma.h> 3481 2da776dbSMichael R. Hinesint main(void) { return 0; } 3482 2da776dbSMichael R. HinesEOF 3483 ef6d4ccdSYuval Shaia rdma_libs="-lrdmacm -libverbs -libumad" 3484 2da776dbSMichael R. Hines if compile_prog "" "$rdma_libs" ; then 3485 2da776dbSMichael R. Hines rdma="yes" 3486 ef6d4ccdSYuval Shaia libs_softmmu="$libs_softmmu $rdma_libs" 3487 2da776dbSMichael R. Hines else 3488 2da776dbSMichael R. Hines if test "$rdma" = "yes" ; then 3489 2da776dbSMichael R. Hines error_exit \ 3490 ef6d4ccdSYuval Shaia " OpenFabrics librdmacm/libibverbs/libibumad not present." \ 3491 2da776dbSMichael R. Hines " Your options:" \ 3492 ef6d4ccdSYuval Shaia " (1) Fast: Install infiniband packages (devel) from your distro." \ 3493 2da776dbSMichael R. Hines " (2) Cleanest: Install libraries from www.openfabrics.org" \ 3494 2da776dbSMichael R. Hines " (3) Also: Install softiwarp if you don't have RDMA hardware" 3495 2da776dbSMichael R. Hines fi 3496 2da776dbSMichael R. Hines rdma="no" 3497 2da776dbSMichael R. Hines fi 3498 2da776dbSMichael R. Hinesfi 3499 2da776dbSMichael R. Hines 3500 21ab34c9SMarcel Apfelbaum########################################## 3501 21ab34c9SMarcel Apfelbaum# PVRDMA detection 3502 21ab34c9SMarcel Apfelbaum 3503 21ab34c9SMarcel Apfelbaumcat > $TMPC <<EOF && 3504 21ab34c9SMarcel Apfelbaum#include <sys/mman.h> 3505 21ab34c9SMarcel Apfelbaum 3506 21ab34c9SMarcel Apfelbaumint 3507 21ab34c9SMarcel Apfelbaummain(void) 3508 21ab34c9SMarcel Apfelbaum{ 3509 21ab34c9SMarcel Apfelbaum char buf = 0; 3510 21ab34c9SMarcel Apfelbaum void *addr = &buf; 3511 21ab34c9SMarcel Apfelbaum addr = mremap(addr, 0, 1, MREMAP_MAYMOVE | MREMAP_FIXED); 3512 21ab34c9SMarcel Apfelbaum 3513 21ab34c9SMarcel Apfelbaum return 0; 3514 21ab34c9SMarcel Apfelbaum} 3515 21ab34c9SMarcel ApfelbaumEOF 3516 21ab34c9SMarcel Apfelbaum 3517 21ab34c9SMarcel Apfelbaumif test "$rdma" = "yes" ; then 3518 21ab34c9SMarcel Apfelbaum case "$pvrdma" in 3519 21ab34c9SMarcel Apfelbaum "") 3520 21ab34c9SMarcel Apfelbaum if compile_prog "" ""; then 3521 21ab34c9SMarcel Apfelbaum pvrdma="yes" 3522 21ab34c9SMarcel Apfelbaum else 3523 21ab34c9SMarcel Apfelbaum pvrdma="no" 3524 21ab34c9SMarcel Apfelbaum fi 3525 21ab34c9SMarcel Apfelbaum ;; 3526 21ab34c9SMarcel Apfelbaum "yes") 3527 21ab34c9SMarcel Apfelbaum if ! compile_prog "" ""; then 3528 21ab34c9SMarcel Apfelbaum error_exit "PVRDMA is not supported since mremap is not implemented" 3529 21ab34c9SMarcel Apfelbaum fi 3530 21ab34c9SMarcel Apfelbaum pvrdma="yes" 3531 21ab34c9SMarcel Apfelbaum ;; 3532 21ab34c9SMarcel Apfelbaum "no") 3533 21ab34c9SMarcel Apfelbaum pvrdma="no" 3534 21ab34c9SMarcel Apfelbaum ;; 3535 21ab34c9SMarcel Apfelbaum esac 3536 21ab34c9SMarcel Apfelbaumelse 3537 21ab34c9SMarcel Apfelbaum if test "$pvrdma" = "yes" ; then 3538 21ab34c9SMarcel Apfelbaum error_exit "PVRDMA requires rdma suppport" 3539 21ab34c9SMarcel Apfelbaum fi 3540 21ab34c9SMarcel Apfelbaum pvrdma="no" 3541 21ab34c9SMarcel Apfelbaumfi 3542 95c6bff3SBenoît Canet 3543 ee108585SYuval Shaia# Let's see if enhanced reg_mr is supported 3544 ee108585SYuval Shaiaif test "$pvrdma" = "yes" ; then 3545 ee108585SYuval Shaia 3546 ee108585SYuval Shaiacat > $TMPC <<EOF && 3547 ee108585SYuval Shaia#include <infiniband/verbs.h> 3548 ee108585SYuval Shaia 3549 ee108585SYuval Shaiaint 3550 ee108585SYuval Shaiamain(void) 3551 ee108585SYuval Shaia{ 3552 ee108585SYuval Shaia struct ibv_mr *mr; 3553 ee108585SYuval Shaia struct ibv_pd *pd = NULL; 3554 ee108585SYuval Shaia size_t length = 10; 3555 ee108585SYuval Shaia uint64_t iova = 0; 3556 ee108585SYuval Shaia int access = 0; 3557 ee108585SYuval Shaia void *addr = NULL; 3558 ee108585SYuval Shaia 3559 ee108585SYuval Shaia mr = ibv_reg_mr_iova(pd, addr, length, iova, access); 3560 ee108585SYuval Shaia 3561 ee108585SYuval Shaia ibv_dereg_mr(mr); 3562 ee108585SYuval Shaia 3563 ee108585SYuval Shaia return 0; 3564 ee108585SYuval Shaia} 3565 ee108585SYuval ShaiaEOF 3566 ee108585SYuval Shaia if ! compile_prog "" "-libverbs"; then 3567 ee108585SYuval Shaia QEMU_CFLAGS="$QEMU_CFLAGS -DLEGACY_RDMA_REG_MR" 3568 ee108585SYuval Shaia fi 3569 ee108585SYuval Shaiafi 3570 ee108585SYuval Shaia 3571 95c6bff3SBenoît Canet########################################## 3572 2f9606b3Saliguori# VNC SASL detection 3573 e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_sasl" != "no" ; then 3574 2f9606b3Saliguori cat > $TMPC <<EOF 3575 2f9606b3Saliguori#include <sasl/sasl.h> 3576 2f9606b3Saliguori#include <stdio.h> 3577 2f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; } 3578 2f9606b3SaliguoriEOF 3579 2f9606b3Saliguori # Assuming Cyrus-SASL installed in /usr prefix 3580 bd702ffcSPhilippe Mathieu-Daudé # QEMU defines struct iovec in "qemu/osdep.h", 3581 bd702ffcSPhilippe Mathieu-Daudé # we don't want libsasl to redefine it in <sasl/sasl.h>. 3582 bd702ffcSPhilippe Mathieu-Daudé vnc_sasl_cflags="-DSTRUCT_IOVEC_DEFINED" 3583 2f9606b3Saliguori vnc_sasl_libs="-lsasl2" 3584 52166aa0SJuan Quintela if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then 3585 ea784e3bSJuan Quintela vnc_sasl=yes 3586 fa838301SJuan Quintela libs_softmmu="$vnc_sasl_libs $libs_softmmu" 3587 ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags" 3588 2f9606b3Saliguori else 3589 ea784e3bSJuan Quintela if test "$vnc_sasl" = "yes" ; then 3590 21684af0SStewart Smith feature_not_found "vnc-sasl" "Install Cyrus SASL devel" 3591 ea784e3bSJuan Quintela fi 3592 ea784e3bSJuan Quintela vnc_sasl=no 3593 2f9606b3Saliguori fi 3594 2f9606b3Saliguorifi 3595 2f9606b3Saliguori 3596 2f9606b3Saliguori########################################## 3597 2f6f5c7aSCorentin Chary# VNC JPEG detection 3598 e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_jpeg" != "no" ; then 3599 2f6f5c7aSCorentin Charycat > $TMPC <<EOF 3600 2f6f5c7aSCorentin Chary#include <stdio.h> 3601 2f6f5c7aSCorentin Chary#include <jpeglib.h> 3602 2f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; } 3603 2f6f5c7aSCorentin CharyEOF 3604 2f6f5c7aSCorentin Chary vnc_jpeg_cflags="" 3605 2f6f5c7aSCorentin Chary vnc_jpeg_libs="-ljpeg" 3606 2f6f5c7aSCorentin Chary if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then 3607 2f6f5c7aSCorentin Chary vnc_jpeg=yes 3608 2f6f5c7aSCorentin Chary libs_softmmu="$vnc_jpeg_libs $libs_softmmu" 3609 ca273d58SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags" 3610 2f6f5c7aSCorentin Chary else 3611 2f6f5c7aSCorentin Chary if test "$vnc_jpeg" = "yes" ; then 3612 21684af0SStewart Smith feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel" 3613 2f6f5c7aSCorentin Chary fi 3614 2f6f5c7aSCorentin Chary vnc_jpeg=no 3615 2f6f5c7aSCorentin Chary fi 3616 2f6f5c7aSCorentin Charyfi 3617 2f6f5c7aSCorentin Chary 3618 2f6f5c7aSCorentin Chary########################################## 3619 efe556adSCorentin Chary# VNC PNG detection 3620 e633a5c6SEric Blakeif test "$vnc" = "yes" && test "$vnc_png" != "no" ; then 3621 efe556adSCorentin Charycat > $TMPC <<EOF 3622 efe556adSCorentin Chary//#include <stdio.h> 3623 efe556adSCorentin Chary#include <png.h> 3624 832ce9c2SScott Wood#include <stddef.h> 3625 efe556adSCorentin Charyint main(void) { 3626 efe556adSCorentin Chary png_structp png_ptr; 3627 efe556adSCorentin Chary png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL); 3628 7edc3fedSPeter Maydell return png_ptr != 0; 3629 efe556adSCorentin Chary} 3630 efe556adSCorentin CharyEOF 3631 65d5d3f9SStefan Weil if $pkg_config libpng --exists; then 3632 89138857SStefan Weil vnc_png_cflags=$($pkg_config libpng --cflags) 3633 89138857SStefan Weil vnc_png_libs=$($pkg_config libpng --libs) 3634 9af8025eSBrad else 3635 efe556adSCorentin Chary vnc_png_cflags="" 3636 efe556adSCorentin Chary vnc_png_libs="-lpng" 3637 9af8025eSBrad fi 3638 efe556adSCorentin Chary if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then 3639 efe556adSCorentin Chary vnc_png=yes 3640 efe556adSCorentin Chary libs_softmmu="$vnc_png_libs $libs_softmmu" 3641 9af8025eSBrad QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags" 3642 efe556adSCorentin Chary else 3643 efe556adSCorentin Chary if test "$vnc_png" = "yes" ; then 3644 21684af0SStewart Smith feature_not_found "vnc-png" "Install libpng devel" 3645 efe556adSCorentin Chary fi 3646 efe556adSCorentin Chary vnc_png=no 3647 efe556adSCorentin Chary fi 3648 efe556adSCorentin Charyfi 3649 efe556adSCorentin Chary 3650 efe556adSCorentin Chary########################################## 3651 6a021536SGerd Hoffmann# xkbcommon probe 3652 6a021536SGerd Hoffmannif test "$xkbcommon" != "no" ; then 3653 6a021536SGerd Hoffmann if $pkg_config xkbcommon --exists; then 3654 6a021536SGerd Hoffmann xkbcommon_cflags=$($pkg_config xkbcommon --cflags) 3655 6a021536SGerd Hoffmann xkbcommon_libs=$($pkg_config xkbcommon --libs) 3656 6a021536SGerd Hoffmann xkbcommon=yes 3657 6a021536SGerd Hoffmann else 3658 6a021536SGerd Hoffmann if test "$xkbcommon" = "yes" ; then 3659 6a021536SGerd Hoffmann feature_not_found "xkbcommon" "Install libxkbcommon-devel" 3660 6a021536SGerd Hoffmann fi 3661 6a021536SGerd Hoffmann xkbcommon=no 3662 6a021536SGerd Hoffmann fi 3663 6a021536SGerd Hoffmannfi 3664 6a021536SGerd Hoffmann 3665 76655d6dSaliguori 3666 76655d6dSaliguori########################################## 3667 c1bb86cdSEric Blake# xfsctl() probe, used for file-posix.c 3668 dce512deSChristoph Hellwigif test "$xfs" != "no" ; then 3669 dce512deSChristoph Hellwig cat > $TMPC << EOF 3670 ffc41d10SStefan Weil#include <stddef.h> /* NULL */ 3671 dce512deSChristoph Hellwig#include <xfs/xfs.h> 3672 dce512deSChristoph Hellwigint main(void) 3673 dce512deSChristoph Hellwig{ 3674 dce512deSChristoph Hellwig xfsctl(NULL, 0, 0, NULL); 3675 dce512deSChristoph Hellwig return 0; 3676 dce512deSChristoph Hellwig} 3677 dce512deSChristoph HellwigEOF 3678 dce512deSChristoph Hellwig if compile_prog "" "" ; then 3679 dce512deSChristoph Hellwig xfs="yes" 3680 dce512deSChristoph Hellwig else 3681 dce512deSChristoph Hellwig if test "$xfs" = "yes" ; then 3682 21684af0SStewart Smith feature_not_found "xfs" "Instal xfsprogs/xfslibs devel" 3683 dce512deSChristoph Hellwig fi 3684 dce512deSChristoph Hellwig xfs=no 3685 dce512deSChristoph Hellwig fi 3686 dce512deSChristoph Hellwigfi 3687 dce512deSChristoph Hellwig 3688 dce512deSChristoph Hellwig########################################## 3689 8a16d273Sths# vde libraries probe 3690 dfb278bdSJuan Quintelaif test "$vde" != "no" ; then 3691 4baae0acSJuan Quintela vde_libs="-lvdeplug" 3692 8a16d273Sths cat > $TMPC << EOF 3693 8a16d273Sths#include <libvdeplug.h> 3694 4a7f0e06Spbrookint main(void) 3695 4a7f0e06Spbrook{ 3696 4a7f0e06Spbrook struct vde_open_args a = {0, 0, 0}; 3697 fea08e08SPeter Maydell char s[] = ""; 3698 fea08e08SPeter Maydell vde_open(s, s, &a); 3699 4a7f0e06Spbrook return 0; 3700 4a7f0e06Spbrook} 3701 8a16d273SthsEOF 3702 52166aa0SJuan Quintela if compile_prog "" "$vde_libs" ; then 3703 4baae0acSJuan Quintela vde=yes 3704 dfb278bdSJuan Quintela else 3705 dfb278bdSJuan Quintela if test "$vde" = "yes" ; then 3706 21684af0SStewart Smith feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel" 3707 dfb278bdSJuan Quintela fi 3708 dfb278bdSJuan Quintela vde=no 3709 8a16d273Sths fi 3710 8a16d273Sthsfi 3711 8a16d273Sths 3712 8a16d273Sths########################################## 3713 0a985b37SVincenzo Maffione# netmap support probe 3714 0a985b37SVincenzo Maffione# Apart from looking for netmap headers, we make sure that the host API version 3715 0a985b37SVincenzo Maffione# supports the netmap backend (>=11). The upper bound (15) is meant to simulate 3716 0a985b37SVincenzo Maffione# a minor/major version number. Minor new features will be marked with values up 3717 0a985b37SVincenzo Maffione# to 15, and if something happens that requires a change to the backend we will 3718 0a985b37SVincenzo Maffione# move above 15, submit the backend fixes and modify this two bounds. 3719 58952137SVincenzo Maffioneif test "$netmap" != "no" ; then 3720 58952137SVincenzo Maffione cat > $TMPC << EOF 3721 58952137SVincenzo Maffione#include <inttypes.h> 3722 58952137SVincenzo Maffione#include <net/if.h> 3723 58952137SVincenzo Maffione#include <net/netmap.h> 3724 58952137SVincenzo Maffione#include <net/netmap_user.h> 3725 0a985b37SVincenzo Maffione#if (NETMAP_API < 11) || (NETMAP_API > 15) 3726 0a985b37SVincenzo Maffione#error 3727 0a985b37SVincenzo Maffione#endif 3728 58952137SVincenzo Maffioneint main(void) { return 0; } 3729 58952137SVincenzo MaffioneEOF 3730 58952137SVincenzo Maffione if compile_prog "" "" ; then 3731 58952137SVincenzo Maffione netmap=yes 3732 58952137SVincenzo Maffione else 3733 58952137SVincenzo Maffione if test "$netmap" = "yes" ; then 3734 58952137SVincenzo Maffione feature_not_found "netmap" 3735 58952137SVincenzo Maffione fi 3736 58952137SVincenzo Maffione netmap=no 3737 58952137SVincenzo Maffione fi 3738 58952137SVincenzo Maffionefi 3739 58952137SVincenzo Maffione 3740 58952137SVincenzo Maffione########################################## 3741 47e98658SCorey Bryant# libcap-ng library probe 3742 47e98658SCorey Bryantif test "$cap_ng" != "no" ; then 3743 47e98658SCorey Bryant cap_libs="-lcap-ng" 3744 47e98658SCorey Bryant cat > $TMPC << EOF 3745 47e98658SCorey Bryant#include <cap-ng.h> 3746 47e98658SCorey Bryantint main(void) 3747 47e98658SCorey Bryant{ 3748 47e98658SCorey Bryant capng_capability_to_name(CAPNG_EFFECTIVE); 3749 47e98658SCorey Bryant return 0; 3750 47e98658SCorey Bryant} 3751 47e98658SCorey BryantEOF 3752 47e98658SCorey Bryant if compile_prog "" "$cap_libs" ; then 3753 47e98658SCorey Bryant cap_ng=yes 3754 47e98658SCorey Bryant libs_tools="$cap_libs $libs_tools" 3755 47e98658SCorey Bryant else 3756 47e98658SCorey Bryant if test "$cap_ng" = "yes" ; then 3757 21684af0SStewart Smith feature_not_found "cap_ng" "Install libcap-ng devel" 3758 47e98658SCorey Bryant fi 3759 47e98658SCorey Bryant cap_ng=no 3760 47e98658SCorey Bryant fi 3761 47e98658SCorey Bryantfi 3762 47e98658SCorey Bryant 3763 47e98658SCorey Bryant########################################## 3764 c2de5c91Smalc# Sound support libraries probe 3765 8f28f3fbSths 3766 89138857SStefan Weilaudio_drv_list=$(echo "$audio_drv_list" | sed -e 's/,/ /g') 3767 c2de5c91Smalcfor drv in $audio_drv_list; do 3768 c2de5c91Smalc case $drv in 3769 e42975a1SGerd Hoffmann alsa | try-alsa) 3770 c80a867fSGerd Hoffmann if $pkg_config alsa --exists; then 3771 c80a867fSGerd Hoffmann alsa_libs=$($pkg_config alsa --libs) 3772 478e943fSPaolo Bonzini alsa_cflags=$($pkg_config alsa --cflags) 3773 478e943fSPaolo Bonzini alsa=yes 3774 e42975a1SGerd Hoffmann if test "$drv" = "try-alsa"; then 3775 e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa/alsa/') 3776 e42975a1SGerd Hoffmann fi 3777 e42975a1SGerd Hoffmann else 3778 e42975a1SGerd Hoffmann if test "$drv" = "try-alsa"; then 3779 e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-alsa//') 3780 c80a867fSGerd Hoffmann else 3781 c80a867fSGerd Hoffmann error_exit "$drv check failed" \ 3782 c80a867fSGerd Hoffmann "Make sure to have the $drv libs and headers installed." 3783 c80a867fSGerd Hoffmann fi 3784 e42975a1SGerd Hoffmann fi 3785 c2de5c91Smalc ;; 3786 c2de5c91Smalc 3787 e42975a1SGerd Hoffmann pa | try-pa) 3788 c80a867fSGerd Hoffmann if $pkg_config libpulse --exists; then 3789 478e943fSPaolo Bonzini libpulse=yes 3790 c80a867fSGerd Hoffmann pulse_libs=$($pkg_config libpulse --libs) 3791 478e943fSPaolo Bonzini pulse_cflags=$($pkg_config libpulse --cflags) 3792 e42975a1SGerd Hoffmann if test "$drv" = "try-pa"; then 3793 e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa/pa/') 3794 e42975a1SGerd Hoffmann fi 3795 e42975a1SGerd Hoffmann else 3796 e42975a1SGerd Hoffmann if test "$drv" = "try-pa"; then 3797 e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-pa//') 3798 c80a867fSGerd Hoffmann else 3799 c80a867fSGerd Hoffmann error_exit "$drv check failed" \ 3800 c80a867fSGerd Hoffmann "Make sure to have the $drv libs and headers installed." 3801 c80a867fSGerd Hoffmann fi 3802 e42975a1SGerd Hoffmann fi 3803 b8e59f18Smalc ;; 3804 b8e59f18Smalc 3805 373967b2SGerd Hoffmann sdl) 3806 373967b2SGerd Hoffmann if test "$sdl" = "no"; then 3807 373967b2SGerd Hoffmann error_exit "sdl not found or disabled, can not use sdl audio driver" 3808 373967b2SGerd Hoffmann fi 3809 373967b2SGerd Hoffmann ;; 3810 373967b2SGerd Hoffmann 3811 e42975a1SGerd Hoffmann try-sdl) 3812 e42975a1SGerd Hoffmann if test "$sdl" = "no"; then 3813 e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl//') 3814 e42975a1SGerd Hoffmann else 3815 e42975a1SGerd Hoffmann audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-sdl/sdl/') 3816 e42975a1SGerd Hoffmann fi 3817 e42975a1SGerd Hoffmann ;; 3818 e42975a1SGerd Hoffmann 3819 997e690aSJuan Quintela coreaudio) 3820 b1149911SFam Zheng coreaudio_libs="-framework CoreAudio" 3821 997e690aSJuan Quintela ;; 3822 997e690aSJuan Quintela 3823 a4bf6780SJuan Quintela dsound) 3824 b1149911SFam Zheng dsound_libs="-lole32 -ldxguid" 3825 d5631638Smalc audio_win_int="yes" 3826 a4bf6780SJuan Quintela ;; 3827 a4bf6780SJuan Quintela 3828 a4bf6780SJuan Quintela oss) 3829 b1149911SFam Zheng oss_libs="$oss_lib" 3830 a4bf6780SJuan Quintela ;; 3831 a4bf6780SJuan Quintela 3832 2e445703SGeoffrey McRae jack | try-jack) 3833 2e445703SGeoffrey McRae if $pkg_config jack --exists; then 3834 478e943fSPaolo Bonzini libjack=yes 3835 2e445703SGeoffrey McRae jack_libs=$($pkg_config jack --libs) 3836 2e445703SGeoffrey McRae if test "$drv" = "try-jack"; then 3837 2e445703SGeoffrey McRae audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack/jack/') 3838 2e445703SGeoffrey McRae fi 3839 2e445703SGeoffrey McRae else 3840 2e445703SGeoffrey McRae if test "$drv" = "try-jack"; then 3841 2e445703SGeoffrey McRae audio_drv_list=$(echo "$audio_drv_list" | sed -e 's/try-jack//') 3842 2e445703SGeoffrey McRae else 3843 2e445703SGeoffrey McRae error_exit "$drv check failed" \ 3844 2e445703SGeoffrey McRae "Make sure to have the $drv libs and headers installed." 3845 2e445703SGeoffrey McRae fi 3846 2e445703SGeoffrey McRae fi 3847 2e445703SGeoffrey McRae ;; 3848 2e445703SGeoffrey McRae 3849 e4c63a6aSmalc *) 3850 1c9b2a52Smalc echo "$audio_possible_drivers" | grep -q "\<$drv\>" || { 3851 76ad07a4SPeter Maydell error_exit "Unknown driver '$drv' selected" \ 3852 76ad07a4SPeter Maydell "Possible drivers are: $audio_possible_drivers" 3853 e4c63a6aSmalc } 3854 e4c63a6aSmalc ;; 3855 c2de5c91Smalc esac 3856 c2de5c91Smalcdone 3857 8f28f3fbSths 3858 4d3b6f6eSbalrog########################################## 3859 2e4d9fb1Saurel32# BrlAPI probe 3860 2e4d9fb1Saurel32 3861 4ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then 3862 eb82284fSJuan Quintela brlapi_libs="-lbrlapi" 3863 2e4d9fb1Saurel32 cat > $TMPC << EOF 3864 2e4d9fb1Saurel32#include <brlapi.h> 3865 832ce9c2SScott Wood#include <stddef.h> 3866 2e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); } 3867 2e4d9fb1Saurel32EOF 3868 52166aa0SJuan Quintela if compile_prog "" "$brlapi_libs" ; then 3869 2e4d9fb1Saurel32 brlapi=yes 3870 4ffcedb6SJuan Quintela else 3871 4ffcedb6SJuan Quintela if test "$brlapi" = "yes" ; then 3872 21684af0SStewart Smith feature_not_found "brlapi" "Install brlapi devel" 3873 4ffcedb6SJuan Quintela fi 3874 4ffcedb6SJuan Quintela brlapi=no 3875 eb82284fSJuan Quintela fi 3876 eb82284fSJuan Quintelafi 3877 2e4d9fb1Saurel32 3878 2e4d9fb1Saurel32########################################## 3879 e08bb301SSamuel Thibault# iconv probe 3880 e08bb301SSamuel Thibaultif test "$iconv" != "no" ; then 3881 e08bb301SSamuel Thibault cat > $TMPC << EOF 3882 e08bb301SSamuel Thibault#include <iconv.h> 3883 e08bb301SSamuel Thibaultint main(void) { 3884 e08bb301SSamuel Thibault iconv_t conv = iconv_open("WCHAR_T", "UCS-2"); 3885 e08bb301SSamuel Thibault return conv != (iconv_t) -1; 3886 e08bb301SSamuel Thibault} 3887 e08bb301SSamuel ThibaultEOF 3888 e08bb301SSamuel Thibault iconv_prefix_list="/usr/local:/usr" 3889 e08bb301SSamuel Thibault iconv_lib_list=":-liconv" 3890 e08bb301SSamuel Thibault IFS=: 3891 e08bb301SSamuel Thibault for iconv_prefix in $iconv_prefix_list; do 3892 e08bb301SSamuel Thibault IFS=: 3893 e08bb301SSamuel Thibault iconv_cflags="-I$iconv_prefix/include" 3894 e08bb301SSamuel Thibault iconv_ldflags="-L$iconv_prefix/lib" 3895 e08bb301SSamuel Thibault for iconv_link in $iconv_lib_list; do 3896 e08bb301SSamuel Thibault unset IFS 3897 e08bb301SSamuel Thibault iconv_lib="$iconv_ldflags $iconv_link" 3898 e08bb301SSamuel Thibault echo "looking at iconv in '$iconv_cflags' '$iconv_lib'" >> config.log 3899 e08bb301SSamuel Thibault if compile_prog "$iconv_cflags" "$iconv_lib" ; then 3900 e08bb301SSamuel Thibault iconv_found=yes 3901 e08bb301SSamuel Thibault break 3902 e08bb301SSamuel Thibault fi 3903 e08bb301SSamuel Thibault done 3904 e08bb301SSamuel Thibault if test "$iconv_found" = yes ; then 3905 e08bb301SSamuel Thibault break 3906 e08bb301SSamuel Thibault fi 3907 e08bb301SSamuel Thibault done 3908 e08bb301SSamuel Thibault if test "$iconv_found" = "yes" ; then 3909 e08bb301SSamuel Thibault iconv=yes 3910 e08bb301SSamuel Thibault else 3911 e08bb301SSamuel Thibault if test "$iconv" = "yes" ; then 3912 e08bb301SSamuel Thibault feature_not_found "iconv" "Install iconv devel" 3913 e08bb301SSamuel Thibault fi 3914 e08bb301SSamuel Thibault iconv=no 3915 e08bb301SSamuel Thibault fi 3916 e08bb301SSamuel Thibaultfi 3917 e08bb301SSamuel Thibault 3918 e08bb301SSamuel Thibault########################################## 3919 4d3b6f6eSbalrog# curses probe 3920 e08bb301SSamuel Thibaultif test "$iconv" = "no" ; then 3921 e08bb301SSamuel Thibault # curses will need iconv 3922 e08bb301SSamuel Thibault curses=no 3923 e08bb301SSamuel Thibaultfi 3924 a3605bf6SMichael Tokarevif test "$curses" != "no" ; then 3925 e095e2f3SStefan Weil if test "$mingw32" = "yes" ; then 3926 8ddc5bf9SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncurses 2>/dev/null):" 3927 8ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncurses 2>/dev/null):-lpdcurses" 3928 e095e2f3SStefan Weil else 3929 7c703002SSamuel Thibault curses_inc_list="$($pkg_config --cflags ncursesw 2>/dev/null):-I/usr/include/ncursesw:" 3930 8ddc5bf9SSamuel Thibault curses_lib_list="$($pkg_config --libs ncursesw 2>/dev/null):-lncursesw:-lcursesw" 3931 e095e2f3SStefan Weil fi 3932 c584a6d0SJuan Quintela curses_found=no 3933 4d3b6f6eSbalrog cat > $TMPC << EOF 3934 8ddc5bf9SSamuel Thibault#include <locale.h> 3935 4d3b6f6eSbalrog#include <curses.h> 3936 8ddc5bf9SSamuel Thibault#include <wchar.h> 3937 2f8b7cd5SSamuel Thibault#include <langinfo.h> 3938 ef9a2524SStefan Weilint main(void) { 3939 2f8b7cd5SSamuel Thibault const char *codeset; 3940 8ddc5bf9SSamuel Thibault wchar_t wch = L'w'; 3941 8ddc5bf9SSamuel Thibault setlocale(LC_ALL, ""); 3942 ef9a2524SStefan Weil resize_term(0, 0); 3943 8ddc5bf9SSamuel Thibault addwstr(L"wide chars\n"); 3944 8ddc5bf9SSamuel Thibault addnwstr(&wch, 1); 3945 7c703002SSamuel Thibault add_wch(WACS_DEGREE); 3946 2f8b7cd5SSamuel Thibault codeset = nl_langinfo(CODESET); 3947 2f8b7cd5SSamuel Thibault return codeset != 0; 3948 ef9a2524SStefan Weil} 3949 4d3b6f6eSbalrogEOF 3950 ecbe251fSVadim Evard IFS=: 3951 8ddc5bf9SSamuel Thibault for curses_inc in $curses_inc_list; do 3952 b01a4fd3SPeter Maydell # Make sure we get the wide character prototypes 3953 b01a4fd3SPeter Maydell curses_inc="-DNCURSES_WIDECHAR $curses_inc" 3954 7c703002SSamuel Thibault IFS=: 3955 8ddc5bf9SSamuel Thibault for curses_lib in $curses_lib_list; do 3956 ecbe251fSVadim Evard unset IFS 3957 8ddc5bf9SSamuel Thibault if compile_prog "$curses_inc" "$curses_lib" ; then 3958 c584a6d0SJuan Quintela curses_found=yes 3959 4f78ef9aSJuan Quintela break 3960 4d3b6f6eSbalrog fi 3961 4f78ef9aSJuan Quintela done 3962 7c703002SSamuel Thibault if test "$curses_found" = yes ; then 3963 7c703002SSamuel Thibault break 3964 7c703002SSamuel Thibault fi 3965 8ddc5bf9SSamuel Thibault done 3966 ecbe251fSVadim Evard unset IFS 3967 c584a6d0SJuan Quintela if test "$curses_found" = "yes" ; then 3968 c584a6d0SJuan Quintela curses=yes 3969 c584a6d0SJuan Quintela else 3970 c584a6d0SJuan Quintela if test "$curses" = "yes" ; then 3971 21684af0SStewart Smith feature_not_found "curses" "Install ncurses devel" 3972 c584a6d0SJuan Quintela fi 3973 c584a6d0SJuan Quintela curses=no 3974 c584a6d0SJuan Quintela fi 3975 4f78ef9aSJuan Quintelafi 3976 4d3b6f6eSbalrog 3977 414f0dabSblueswir1########################################## 3978 769ce76dSAlexander Graf# curl probe 3979 a3605bf6SMichael Tokarevif test "$curl" != "no" ; then 3980 65d5d3f9SStefan Weil if $pkg_config libcurl --exists; then 3981 a8bd70adSPaolo Bonzini curlconfig="$pkg_config libcurl" 3982 4e2b0658SPaolo Bonzini else 3983 4e2b0658SPaolo Bonzini curlconfig=curl-config 3984 4e2b0658SPaolo Bonzini fi 3985 769ce76dSAlexander Graf cat > $TMPC << EOF 3986 769ce76dSAlexander Graf#include <curl/curl.h> 3987 0b862cedSPeter Maydellint main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; } 3988 769ce76dSAlexander GrafEOF 3989 89138857SStefan Weil curl_cflags=$($curlconfig --cflags 2>/dev/null) 3990 89138857SStefan Weil curl_libs=$($curlconfig --libs 2>/dev/null) 3991 b1d5a277SJuan Quintela if compile_prog "$curl_cflags" "$curl_libs" ; then 3992 769ce76dSAlexander Graf curl=yes 3993 788c8196SJuan Quintela else 3994 788c8196SJuan Quintela if test "$curl" = "yes" ; then 3995 21684af0SStewart Smith feature_not_found "curl" "Install libcurl devel" 3996 788c8196SJuan Quintela fi 3997 788c8196SJuan Quintela curl=no 3998 769ce76dSAlexander Graf fi 3999 769ce76dSAlexander Graffi # test "$curl" 4000 769ce76dSAlexander Graf 4001 769ce76dSAlexander Graf########################################## 4002 e18df141SAnthony Liguori# glib support probe 4003 a52d28afSPaolo Bonzini 4004 00f2cfbbSDaniel P. Berrangéglib_req_ver=2.48 4005 aa0d1f44SPaolo Bonziniglib_modules=gthread-2.0 4006 aa0d1f44SPaolo Bonziniif test "$modules" = yes; then 4007 a88afc64SGerd Hoffmann glib_modules="$glib_modules gmodule-export-2.0" 4008 aa0d1f44SPaolo Bonzinifi 4009 54cb65d8SEmilio G. Cotaif test "$plugins" = yes; then 4010 54cb65d8SEmilio G. Cota glib_modules="$glib_modules gmodule-2.0" 4011 54cb65d8SEmilio G. Cotafi 4012 e26110cfSFam Zheng 4013 4eaf7202SSameeh Jubran# This workaround is required due to a bug in pkg-config file for glib as it 4014 4eaf7202SSameeh Jubran# doesn't define GLIB_STATIC_COMPILATION for pkg-config --static 4015 4eaf7202SSameeh Jubran 4016 e633a5c6SEric Blakeif test "$static" = yes && test "$mingw32" = yes; then 4017 4eaf7202SSameeh Jubran QEMU_CFLAGS="-DGLIB_STATIC_COMPILATION $QEMU_CFLAGS" 4018 4eaf7202SSameeh Jubranfi 4019 4eaf7202SSameeh Jubran 4020 aa0d1f44SPaolo Bonzinifor i in $glib_modules; do 4021 e26110cfSFam Zheng if $pkg_config --atleast-version=$glib_req_ver $i; then 4022 89138857SStefan Weil glib_cflags=$($pkg_config --cflags $i) 4023 89138857SStefan Weil glib_libs=$($pkg_config --libs $i) 4024 4a058899SMarc-André Lureau QEMU_CFLAGS="$glib_cflags $QEMU_CFLAGS" 4025 14015304SAnthony Liguori LIBS="$glib_libs $LIBS" 4026 e18df141SAnthony Liguori else 4027 e26110cfSFam Zheng error_exit "glib-$glib_req_ver $i is required to compile QEMU" 4028 e26110cfSFam Zheng fi 4029 e26110cfSFam Zhengdone 4030 e26110cfSFam Zheng 4031 f876b765SMarc-André Lureauif $pkg_config --atleast-version=$glib_req_ver gio-2.0; then 4032 f876b765SMarc-André Lureau gio=yes 4033 f876b765SMarc-André Lureau gio_cflags=$($pkg_config --cflags gio-2.0) 4034 f876b765SMarc-André Lureau gio_libs=$($pkg_config --libs gio-2.0) 4035 25a97a56SMarc-André Lureau gdbus_codegen=$($pkg_config --variable=gdbus_codegen gio-2.0) 4036 0dba4897SMarc-André Lureau if [ ! -x "$gdbus_codegen" ]; then 4037 0dba4897SMarc-André Lureau gdbus_codegen= 4038 0dba4897SMarc-André Lureau fi 4039 f876b765SMarc-André Lureauelse 4040 f876b765SMarc-André Lureau gio=no 4041 f876b765SMarc-André Lureaufi 4042 f876b765SMarc-André Lureau 4043 25a97a56SMarc-André Lureauif $pkg_config --atleast-version=$glib_req_ver gio-unix-2.0; then 4044 25a97a56SMarc-André Lureau gio_cflags="$gio_cflags $($pkg_config --cflags gio-unix-2.0)" 4045 25a97a56SMarc-André Lureau gio_libs="$gio_libs $($pkg_config --libs gio-unix-2.0)" 4046 25a97a56SMarc-André Lureaufi 4047 25a97a56SMarc-André Lureau 4048 977a82abSDaniel P. Berrange# Sanity check that the current size_t matches the 4049 977a82abSDaniel P. Berrange# size that glib thinks it should be. This catches 4050 977a82abSDaniel P. Berrange# problems on multi-arch where people try to build 4051 977a82abSDaniel P. Berrange# 32-bit QEMU while pointing at 64-bit glib headers 4052 977a82abSDaniel P. Berrangecat > $TMPC <<EOF 4053 977a82abSDaniel P. Berrange#include <glib.h> 4054 977a82abSDaniel P. Berrange#include <unistd.h> 4055 977a82abSDaniel P. Berrange 4056 977a82abSDaniel P. Berrange#define QEMU_BUILD_BUG_ON(x) \ 4057 977a82abSDaniel P. Berrange typedef char qemu_build_bug_on[(x)?-1:1] __attribute__((unused)); 4058 977a82abSDaniel P. Berrange 4059 977a82abSDaniel P. Berrangeint main(void) { 4060 977a82abSDaniel P. Berrange QEMU_BUILD_BUG_ON(sizeof(size_t) != GLIB_SIZEOF_SIZE_T); 4061 977a82abSDaniel P. Berrange return 0; 4062 977a82abSDaniel P. Berrange} 4063 977a82abSDaniel P. BerrangeEOF 4064 977a82abSDaniel P. Berrange 4065 5919e032SStefan Weilif ! compile_prog "$CFLAGS" "$LIBS" ; then 4066 977a82abSDaniel P. Berrange error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\ 4067 977a82abSDaniel P. Berrange "You probably need to set PKG_CONFIG_LIBDIR"\ 4068 977a82abSDaniel P. Berrange "to point to the right pkg-config files for your"\ 4069 977a82abSDaniel P. Berrange "build target" 4070 977a82abSDaniel P. Berrangefi 4071 977a82abSDaniel P. Berrange 4072 bbbf2e04SJohn Snow# Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage 4073 bbbf2e04SJohn Snowcat > $TMPC << EOF 4074 bbbf2e04SJohn Snow#include <glib.h> 4075 bbbf2e04SJohn Snowint main(void) { return 0; } 4076 bbbf2e04SJohn SnowEOF 4077 bbbf2e04SJohn Snowif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 4078 bbbf2e04SJohn Snow if cc_has_warning_flag "-Wno-unknown-attributes"; then 4079 bbbf2e04SJohn Snow glib_cflags="-Wno-unknown-attributes $glib_cflags" 4080 086d5f75SPaolo Bonzini QEMU_CFLAGS="-Wno-unknown-attributes $CFLAGS" 4081 bbbf2e04SJohn Snow fi 4082 bbbf2e04SJohn Snowfi 4083 bbbf2e04SJohn Snow 4084 9bda600bSEric Blake# Silence clang warnings triggered by glib < 2.57.2 4085 9bda600bSEric Blakecat > $TMPC << EOF 4086 9bda600bSEric Blake#include <glib.h> 4087 9bda600bSEric Blaketypedef struct Foo { 4088 9bda600bSEric Blake int i; 4089 9bda600bSEric Blake} Foo; 4090 9bda600bSEric Blakestatic void foo_free(Foo *f) 4091 9bda600bSEric Blake{ 4092 9bda600bSEric Blake g_free(f); 4093 9bda600bSEric Blake} 4094 9bda600bSEric BlakeG_DEFINE_AUTOPTR_CLEANUP_FUNC(Foo, foo_free); 4095 9bda600bSEric Blakeint main(void) { return 0; } 4096 9bda600bSEric BlakeEOF 4097 9bda600bSEric Blakeif ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then 4098 9bda600bSEric Blake if cc_has_warning_flag "-Wno-unused-function"; then 4099 9bda600bSEric Blake glib_cflags="$glib_cflags -Wno-unused-function" 4100 9bda600bSEric Blake CFLAGS="$CFLAGS -Wno-unused-function" 4101 9bda600bSEric Blake fi 4102 9bda600bSEric Blakefi 4103 9bda600bSEric Blake 4104 6a1f42bdSStefan Weil######################################### 4105 6a1f42bdSStefan Weil# zlib check 4106 6a1f42bdSStefan Weil 4107 6a1f42bdSStefan Weilif test "$zlib" != "no" ; then 4108 6a1f42bdSStefan Weil if $pkg_config --exists zlib; then 4109 6a1f42bdSStefan Weil zlib_cflags=$($pkg_config --cflags zlib) 4110 6a1f42bdSStefan Weil zlib_libs=$($pkg_config --libs zlib) 4111 6a1f42bdSStefan Weil QEMU_CFLAGS="$zlib_cflags $QEMU_CFLAGS" 4112 6a1f42bdSStefan Weil LIBS="$zlib_libs $LIBS" 4113 6a1f42bdSStefan Weil else 4114 6a1f42bdSStefan Weil cat > $TMPC << EOF 4115 6a1f42bdSStefan Weil#include <zlib.h> 4116 6a1f42bdSStefan Weilint main(void) { zlibVersion(); return 0; } 4117 6a1f42bdSStefan WeilEOF 4118 6a1f42bdSStefan Weil if compile_prog "" "-lz" ; then 4119 5e5733e5SMarc-André Lureau zlib_libs=-lz 4120 5e5733e5SMarc-André Lureau LIBS="$LIBS $zlib_libs" 4121 6a1f42bdSStefan Weil else 4122 6a1f42bdSStefan Weil error_exit "zlib check failed" \ 4123 6a1f42bdSStefan Weil "Make sure to have the zlib libs and headers installed." 4124 6a1f42bdSStefan Weil fi 4125 6a1f42bdSStefan Weil fi 4126 6a1f42bdSStefan Weilfi 4127 6a1f42bdSStefan Weil 4128 e26110cfSFam Zheng########################################## 4129 e26110cfSFam Zheng# SHA command probe for modules 4130 e26110cfSFam Zhengif test "$modules" = yes; then 4131 e26110cfSFam Zheng shacmd_probe="sha1sum sha1 shasum" 4132 e26110cfSFam Zheng for c in $shacmd_probe; do 4133 8ccefb91SFam Zheng if has $c; then 4134 e26110cfSFam Zheng shacmd="$c" 4135 e26110cfSFam Zheng break 4136 e26110cfSFam Zheng fi 4137 e26110cfSFam Zheng done 4138 e26110cfSFam Zheng if test "$shacmd" = ""; then 4139 e26110cfSFam Zheng error_exit "one of the checksum commands is required to enable modules: $shacmd_probe" 4140 e26110cfSFam Zheng fi 4141 e18df141SAnthony Liguorifi 4142 e18df141SAnthony Liguori 4143 e18df141SAnthony Liguori########################################## 4144 e2134eb9SGerd Hoffmann# pixman support probe 4145 e2134eb9SGerd Hoffmann 4146 9b52b17bSThomas Huthif test "$softmmu" = "no"; then 4147 74880fe2SRobert Schiele pixman_cflags= 4148 74880fe2SRobert Schiele pixman_libs= 4149 35c4e86cSGerd Hoffmannelif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then 4150 89138857SStefan Weil pixman_cflags=$($pkg_config --cflags pixman-1) 4151 89138857SStefan Weil pixman_libs=$($pkg_config --libs pixman-1) 4152 e2134eb9SGerd Hoffmannelse 4153 c12b6d70SGerd Hoffmann error_exit "pixman >= 0.21.8 not present." \ 4154 c12b6d70SGerd Hoffmann "Please install the pixman devel package." 4155 e2134eb9SGerd Hoffmannfi 4156 e2134eb9SGerd Hoffmann 4157 e2134eb9SGerd Hoffmann########################################## 4158 fe8fc5aeSPaolo Bonzini# libmpathpersist probe 4159 fe8fc5aeSPaolo Bonzini 4160 fe8fc5aeSPaolo Bonziniif test "$mpath" != "no" ; then 4161 1b0578f5SMurilo Opsfelder Araujo # probe for the new API 4162 fe8fc5aeSPaolo Bonzini cat > $TMPC <<EOF 4163 fe8fc5aeSPaolo Bonzini#include <libudev.h> 4164 fe8fc5aeSPaolo Bonzini#include <mpath_persist.h> 4165 fe8fc5aeSPaolo Bonziniunsigned mpath_mx_alloc_len = 1024; 4166 fe8fc5aeSPaolo Bonziniint logsink; 4167 b3f1c8c4SPaolo Bonzinistatic struct config *multipath_conf; 4168 b3f1c8c4SPaolo Bonziniextern struct udev *udev; 4169 b3f1c8c4SPaolo Bonziniextern struct config *get_multipath_config(void); 4170 b3f1c8c4SPaolo Bonziniextern void put_multipath_config(struct config *conf); 4171 b3f1c8c4SPaolo Bonzinistruct udev *udev; 4172 b3f1c8c4SPaolo Bonzinistruct config *get_multipath_config(void) { return multipath_conf; } 4173 b3f1c8c4SPaolo Bonzinivoid put_multipath_config(struct config *conf) { } 4174 b3f1c8c4SPaolo Bonzini 4175 fe8fc5aeSPaolo Bonziniint main(void) { 4176 b3f1c8c4SPaolo Bonzini udev = udev_new(); 4177 b3f1c8c4SPaolo Bonzini multipath_conf = mpath_lib_init(); 4178 fe8fc5aeSPaolo Bonzini return 0; 4179 fe8fc5aeSPaolo Bonzini} 4180 fe8fc5aeSPaolo BonziniEOF 4181 fe8fc5aeSPaolo Bonzini if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 4182 fe8fc5aeSPaolo Bonzini mpathpersist=yes 4183 1b0578f5SMurilo Opsfelder Araujo mpathpersist_new_api=yes 4184 1b0578f5SMurilo Opsfelder Araujo else 4185 1b0578f5SMurilo Opsfelder Araujo # probe for the old API 4186 1b0578f5SMurilo Opsfelder Araujo cat > $TMPC <<EOF 4187 1b0578f5SMurilo Opsfelder Araujo#include <libudev.h> 4188 1b0578f5SMurilo Opsfelder Araujo#include <mpath_persist.h> 4189 1b0578f5SMurilo Opsfelder Araujounsigned mpath_mx_alloc_len = 1024; 4190 1b0578f5SMurilo Opsfelder Araujoint logsink; 4191 1b0578f5SMurilo Opsfelder Araujoint main(void) { 4192 1b0578f5SMurilo Opsfelder Araujo struct udev *udev = udev_new(); 4193 1b0578f5SMurilo Opsfelder Araujo mpath_lib_init(udev); 4194 1b0578f5SMurilo Opsfelder Araujo return 0; 4195 1b0578f5SMurilo Opsfelder Araujo} 4196 1b0578f5SMurilo Opsfelder AraujoEOF 4197 1b0578f5SMurilo Opsfelder Araujo if compile_prog "" "-ludev -lmultipath -lmpathpersist" ; then 4198 1b0578f5SMurilo Opsfelder Araujo mpathpersist=yes 4199 1b0578f5SMurilo Opsfelder Araujo mpathpersist_new_api=no 4200 fe8fc5aeSPaolo Bonzini else 4201 fe8fc5aeSPaolo Bonzini mpathpersist=no 4202 fe8fc5aeSPaolo Bonzini fi 4203 1b0578f5SMurilo Opsfelder Araujo fi 4204 fe8fc5aeSPaolo Bonzinielse 4205 fe8fc5aeSPaolo Bonzini mpathpersist=no 4206 fe8fc5aeSPaolo Bonzinifi 4207 fe8fc5aeSPaolo Bonzini 4208 fe8fc5aeSPaolo Bonzini########################################## 4209 e5d355d1Saliguori# pthread probe 4210 4b29ec41SBradPTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2" 4211 3c529d93Saliguori 4212 e5d355d1Saliguoripthread=no 4213 414f0dabSblueswir1cat > $TMPC << EOF 4214 3c529d93Saliguori#include <pthread.h> 4215 7a42bbe4SStefan Weilstatic void *f(void *p) { return NULL; } 4216 7a42bbe4SStefan Weilint main(void) { 4217 7a42bbe4SStefan Weil pthread_t thread; 4218 7a42bbe4SStefan Weil pthread_create(&thread, 0, f, 0); 4219 7a42bbe4SStefan Weil return 0; 4220 7a42bbe4SStefan Weil} 4221 414f0dabSblueswir1EOF 4222 bd00d539SAndreas Färberif compile_prog "" "" ; then 4223 bd00d539SAndreas Färber pthread=yes 4224 bd00d539SAndreas Färberelse 4225 de65fe0fSSebastian Herbszt for pthread_lib in $PTHREADLIBS_LIST; do 4226 52166aa0SJuan Quintela if compile_prog "" "$pthread_lib" ; then 4227 e5d355d1Saliguori pthread=yes 4228 e3c56761SPeter Portante found=no 4229 e3c56761SPeter Portante for lib_entry in $LIBS; do 4230 e3c56761SPeter Portante if test "$lib_entry" = "$pthread_lib"; then 4231 e3c56761SPeter Portante found=yes 4232 e3c56761SPeter Portante break 4233 e3c56761SPeter Portante fi 4234 e3c56761SPeter Portante done 4235 e3c56761SPeter Portante if test "$found" = "no"; then 4236 5572b539SJuan Quintela LIBS="$pthread_lib $LIBS" 4237 e3c56761SPeter Portante fi 4238 409437e1SDaniel P. Berrange PTHREAD_LIB="$pthread_lib" 4239 de65fe0fSSebastian Herbszt break 4240 414f0dabSblueswir1 fi 4241 de65fe0fSSebastian Herbszt done 4242 bd00d539SAndreas Färberfi 4243 414f0dabSblueswir1 4244 e633a5c6SEric Blakeif test "$mingw32" != yes && test "$pthread" = no; then 4245 76ad07a4SPeter Maydell error_exit "pthread check failed" \ 4246 76ad07a4SPeter Maydell "Make sure to have the pthread libs and headers installed." 4247 e5d355d1Saliguorifi 4248 e5d355d1Saliguori 4249 479a5747SRoman Bolshakov# check for pthread_setname_np with thread id 4250 479a5747SRoman Bolshakovpthread_setname_np_w_tid=no 4251 5c312079SDr. David Alan Gilbertcat > $TMPC << EOF 4252 5c312079SDr. David Alan Gilbert#include <pthread.h> 4253 5c312079SDr. David Alan Gilbert 4254 5c312079SDr. David Alan Gilbertstatic void *f(void *p) { return NULL; } 4255 5c312079SDr. David Alan Gilbertint main(void) 4256 5c312079SDr. David Alan Gilbert{ 4257 5c312079SDr. David Alan Gilbert pthread_t thread; 4258 5c312079SDr. David Alan Gilbert pthread_create(&thread, 0, f, 0); 4259 5c312079SDr. David Alan Gilbert pthread_setname_np(thread, "QEMU"); 4260 5c312079SDr. David Alan Gilbert return 0; 4261 5c312079SDr. David Alan Gilbert} 4262 5c312079SDr. David Alan GilbertEOF 4263 5c312079SDr. David Alan Gilbertif compile_prog "" "$pthread_lib" ; then 4264 479a5747SRoman Bolshakov pthread_setname_np_w_tid=yes 4265 479a5747SRoman Bolshakovfi 4266 479a5747SRoman Bolshakov 4267 479a5747SRoman Bolshakov# check for pthread_setname_np without thread id 4268 479a5747SRoman Bolshakovpthread_setname_np_wo_tid=no 4269 479a5747SRoman Bolshakovcat > $TMPC << EOF 4270 479a5747SRoman Bolshakov#include <pthread.h> 4271 479a5747SRoman Bolshakov 4272 12a9b8d8SThomas Huthstatic void *f(void *p) { pthread_setname_np("QEMU"); return NULL; } 4273 479a5747SRoman Bolshakovint main(void) 4274 479a5747SRoman Bolshakov{ 4275 479a5747SRoman Bolshakov pthread_t thread; 4276 479a5747SRoman Bolshakov pthread_create(&thread, 0, f, 0); 4277 479a5747SRoman Bolshakov return 0; 4278 479a5747SRoman Bolshakov} 4279 479a5747SRoman BolshakovEOF 4280 479a5747SRoman Bolshakovif compile_prog "" "$pthread_lib" ; then 4281 479a5747SRoman Bolshakov pthread_setname_np_wo_tid=yes 4282 5c312079SDr. David Alan Gilbertfi 4283 5c312079SDr. David Alan Gilbert 4284 bf9298b9Saliguori########################################## 4285 f27aaf4bSChristian Brunner# rbd probe 4286 f27aaf4bSChristian Brunnerif test "$rbd" != "no" ; then 4287 f27aaf4bSChristian Brunner cat > $TMPC <<EOF 4288 f27aaf4bSChristian Brunner#include <stdio.h> 4289 ad32e9c0SJosh Durgin#include <rbd/librbd.h> 4290 f27aaf4bSChristian Brunnerint main(void) { 4291 ad32e9c0SJosh Durgin rados_t cluster; 4292 ad32e9c0SJosh Durgin rados_create(&cluster, NULL); 4293 f27aaf4bSChristian Brunner return 0; 4294 f27aaf4bSChristian Brunner} 4295 f27aaf4bSChristian BrunnerEOF 4296 ad32e9c0SJosh Durgin rbd_libs="-lrbd -lrados" 4297 f27aaf4bSChristian Brunner if compile_prog "" "$rbd_libs" ; then 4298 f27aaf4bSChristian Brunner rbd=yes 4299 f27aaf4bSChristian Brunner else 4300 f27aaf4bSChristian Brunner if test "$rbd" = "yes" ; then 4301 21684af0SStewart Smith feature_not_found "rados block device" "Install librbd/ceph devel" 4302 f27aaf4bSChristian Brunner fi 4303 f27aaf4bSChristian Brunner rbd=no 4304 f27aaf4bSChristian Brunner fi 4305 f27aaf4bSChristian Brunnerfi 4306 f27aaf4bSChristian Brunner 4307 f27aaf4bSChristian Brunner########################################## 4308 b10d49d7SPino Toscano# libssh probe 4309 b10d49d7SPino Toscanoif test "$libssh" != "no" ; then 4310 b10d49d7SPino Toscano if $pkg_config --exists libssh; then 4311 b10d49d7SPino Toscano libssh_cflags=$($pkg_config libssh --cflags) 4312 b10d49d7SPino Toscano libssh_libs=$($pkg_config libssh --libs) 4313 b10d49d7SPino Toscano libssh=yes 4314 0a12ec87SRichard W.M. Jones else 4315 b10d49d7SPino Toscano if test "$libssh" = "yes" ; then 4316 b10d49d7SPino Toscano error_exit "libssh required for --enable-libssh" 4317 0a12ec87SRichard W.M. Jones fi 4318 b10d49d7SPino Toscano libssh=no 4319 0a12ec87SRichard W.M. Jones fi 4320 0a12ec87SRichard W.M. Jonesfi 4321 0a12ec87SRichard W.M. Jones 4322 0a12ec87SRichard W.M. Jones########################################## 4323 b10d49d7SPino Toscano# Check for libssh 0.8 4324 b10d49d7SPino Toscano# This is done like this instead of using the LIBSSH_VERSION_* and 4325 b10d49d7SPino Toscano# SSH_VERSION_* macros because some distributions in the past shipped 4326 b10d49d7SPino Toscano# snapshots of the future 0.8 from Git, and those snapshots did not 4327 b10d49d7SPino Toscano# have updated version numbers (still referring to 0.7.0). 4328 9a2d462eSRichard W.M. Jones 4329 b10d49d7SPino Toscanoif test "$libssh" = "yes"; then 4330 9a2d462eSRichard W.M. Jones cat > $TMPC <<EOF 4331 b10d49d7SPino Toscano#include <libssh/libssh.h> 4332 b10d49d7SPino Toscanoint main(void) { return ssh_get_server_publickey(NULL, NULL); } 4333 9a2d462eSRichard W.M. JonesEOF 4334 b10d49d7SPino Toscano if compile_prog "$libssh_cflags" "$libssh_libs"; then 4335 b10d49d7SPino Toscano libssh_cflags="-DHAVE_LIBSSH_0_8 $libssh_cflags" 4336 9a2d462eSRichard W.M. Jones fi 4337 9a2d462eSRichard W.M. Jonesfi 4338 9a2d462eSRichard W.M. Jones 4339 9a2d462eSRichard W.M. Jones########################################## 4340 5c6c3a6cSChristoph Hellwig# linux-aio probe 4341 5c6c3a6cSChristoph Hellwig 4342 5c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then 4343 5c6c3a6cSChristoph Hellwig cat > $TMPC <<EOF 4344 5c6c3a6cSChristoph Hellwig#include <libaio.h> 4345 5c6c3a6cSChristoph Hellwig#include <sys/eventfd.h> 4346 832ce9c2SScott Wood#include <stddef.h> 4347 5c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } 4348 5c6c3a6cSChristoph HellwigEOF 4349 5c6c3a6cSChristoph Hellwig if compile_prog "" "-laio" ; then 4350 5c6c3a6cSChristoph Hellwig linux_aio=yes 4351 5c6c3a6cSChristoph Hellwig else 4352 5c6c3a6cSChristoph Hellwig if test "$linux_aio" = "yes" ; then 4353 21684af0SStewart Smith feature_not_found "linux AIO" "Install libaio devel" 4354 5c6c3a6cSChristoph Hellwig fi 4355 3cfcae3cSLuiz Capitulino linux_aio=no 4356 5c6c3a6cSChristoph Hellwig fi 4357 5c6c3a6cSChristoph Hellwigfi 4358 c10dd856SAarushi Mehta########################################## 4359 c10dd856SAarushi Mehta# linux-io-uring probe 4360 c10dd856SAarushi Mehta 4361 c10dd856SAarushi Mehtaif test "$linux_io_uring" != "no" ; then 4362 c10dd856SAarushi Mehta if $pkg_config liburing; then 4363 c10dd856SAarushi Mehta linux_io_uring_cflags=$($pkg_config --cflags liburing) 4364 c10dd856SAarushi Mehta linux_io_uring_libs=$($pkg_config --libs liburing) 4365 c10dd856SAarushi Mehta linux_io_uring=yes 4366 73fd282eSStefan Hajnoczi 4367 73fd282eSStefan Hajnoczi # io_uring is used in libqemuutil.a where per-file -libs variables are not 4368 73fd282eSStefan Hajnoczi # seen by programs linking the archive. It's not ideal, but just add the 4369 73fd282eSStefan Hajnoczi # library dependency globally. 4370 73fd282eSStefan Hajnoczi LIBS="$linux_io_uring_libs $LIBS" 4371 c10dd856SAarushi Mehta else 4372 c10dd856SAarushi Mehta if test "$linux_io_uring" = "yes" ; then 4373 c10dd856SAarushi Mehta feature_not_found "linux io_uring" "Install liburing devel" 4374 c10dd856SAarushi Mehta fi 4375 c10dd856SAarushi Mehta linux_io_uring=no 4376 c10dd856SAarushi Mehta fi 4377 c10dd856SAarushi Mehtafi 4378 5c6c3a6cSChristoph Hellwig 4379 5c6c3a6cSChristoph Hellwig########################################## 4380 7aaa6a16SPaolo Bonzini# TPM emulation is only on POSIX 4381 3b8acc11SPaolo Bonzini 4382 7aaa6a16SPaolo Bonziniif test "$tpm" = ""; then 4383 7aaa6a16SPaolo Bonzini if test "$mingw32" = "yes"; then 4384 7aaa6a16SPaolo Bonzini tpm=no 4385 3b8acc11SPaolo Bonzini else 4386 7aaa6a16SPaolo Bonzini tpm=yes 4387 7aaa6a16SPaolo Bonzini fi 4388 7aaa6a16SPaolo Bonzinielif test "$tpm" = "yes"; then 4389 7aaa6a16SPaolo Bonzini if test "$mingw32" = "yes" ; then 4390 7aaa6a16SPaolo Bonzini error_exit "TPM emulation only available on POSIX systems" 4391 7aaa6a16SPaolo Bonzini fi 4392 3b8acc11SPaolo Bonzinifi 4393 3b8acc11SPaolo Bonzini 4394 3b8acc11SPaolo Bonzini########################################## 4395 758e8e38SVenkateswararao Jujjuri (JV)# attr probe 4396 758e8e38SVenkateswararao Jujjuri (JV) 4397 ec0d5893SMarc-André Lureaulibattr_libs= 4398 758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then 4399 758e8e38SVenkateswararao Jujjuri (JV) cat > $TMPC <<EOF 4400 758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h> 4401 758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h> 4402 f2338fb4SPavel Borzenkov#ifdef CONFIG_LIBATTR 4403 f2338fb4SPavel Borzenkov#include <attr/xattr.h> 4404 f2338fb4SPavel Borzenkov#else 4405 4f26f2b6SAvi Kivity#include <sys/xattr.h> 4406 f2338fb4SPavel Borzenkov#endif 4407 758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; } 4408 758e8e38SVenkateswararao Jujjuri (JV)EOF 4409 4f26f2b6SAvi Kivity if compile_prog "" "" ; then 4410 4f26f2b6SAvi Kivity attr=yes 4411 4f26f2b6SAvi Kivity # Older distros have <attr/xattr.h>, and need -lattr: 4412 f2338fb4SPavel Borzenkov elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then 4413 758e8e38SVenkateswararao Jujjuri (JV) attr=yes 4414 ec0d5893SMarc-André Lureau libattr_libs="-lattr" 4415 ec0d5893SMarc-André Lureau LIBS="$libattr_libs $LIBS" 4416 4f26f2b6SAvi Kivity libattr=yes 4417 758e8e38SVenkateswararao Jujjuri (JV) else 4418 758e8e38SVenkateswararao Jujjuri (JV) if test "$attr" = "yes" ; then 4419 21684af0SStewart Smith feature_not_found "ATTR" "Install libc6 or libattr devel" 4420 758e8e38SVenkateswararao Jujjuri (JV) fi 4421 758e8e38SVenkateswararao Jujjuri (JV) attr=no 4422 758e8e38SVenkateswararao Jujjuri (JV) fi 4423 758e8e38SVenkateswararao Jujjuri (JV)fi 4424 758e8e38SVenkateswararao Jujjuri (JV) 4425 758e8e38SVenkateswararao Jujjuri (JV)########################################## 4426 bf9298b9Saliguori# iovec probe 4427 bf9298b9Saliguoricat > $TMPC <<EOF 4428 db34f0b3Sblueswir1#include <sys/types.h> 4429 bf9298b9Saliguori#include <sys/uio.h> 4430 db34f0b3Sblueswir1#include <unistd.h> 4431 f91f9beeSStefan Weilint main(void) { return sizeof(struct iovec); } 4432 bf9298b9SaliguoriEOF 4433 bf9298b9Saliguoriiovec=no 4434 52166aa0SJuan Quintelaif compile_prog "" "" ; then 4435 bf9298b9Saliguori iovec=yes 4436 bf9298b9Saliguorifi 4437 bf9298b9Saliguori 4438 f652e6afSaurel32########################################## 4439 ceb42de8Saliguori# preadv probe 4440 ceb42de8Saliguoricat > $TMPC <<EOF 4441 ceb42de8Saliguori#include <sys/types.h> 4442 ceb42de8Saliguori#include <sys/uio.h> 4443 ceb42de8Saliguori#include <unistd.h> 4444 c075a723SBlue Swirlint main(void) { return preadv(0, 0, 0, 0); } 4445 ceb42de8SaliguoriEOF 4446 ceb42de8Saliguoripreadv=no 4447 52166aa0SJuan Quintelaif compile_prog "" "" ; then 4448 ceb42de8Saliguori preadv=yes 4449 ceb42de8Saliguorifi 4450 ceb42de8Saliguori 4451 ceb42de8Saliguori########################################## 4452 f652e6afSaurel32# fdt probe 4453 e169e1e1SPeter Maydell# fdt support is mandatory for at least some target architectures, 4454 e169e1e1SPeter Maydell# so insist on it if we're building those system emulators. 4455 e169e1e1SPeter Maydellfdt_required=no 4456 e169e1e1SPeter Maydellfor target in $target_list; do 4457 e169e1e1SPeter Maydell case $target in 4458 c8c35e5fSYoshinori Sato aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu|mips64el-softmmu|riscv*-softmmu|rx-softmmu) 4459 e169e1e1SPeter Maydell fdt_required=yes 4460 e169e1e1SPeter Maydell ;; 4461 e169e1e1SPeter Maydell esac 4462 e169e1e1SPeter Maydelldone 4463 e169e1e1SPeter Maydell 4464 e169e1e1SPeter Maydellif test "$fdt_required" = "yes"; then 4465 e169e1e1SPeter Maydell if test "$fdt" = "no"; then 4466 e169e1e1SPeter Maydell error_exit "fdt disabled but some requested targets require it." \ 4467 e169e1e1SPeter Maydell "You can turn off fdt only if you also disable all the system emulation" \ 4468 e169e1e1SPeter Maydell "targets which need it (by specifying a cut down --target-list)." 4469 e169e1e1SPeter Maydell fi 4470 e169e1e1SPeter Maydell fdt=yes 4471 7ba4a4d3SPhilippe Mathieu-Daudéelif test "$fdt" != "yes" ; then 4472 7ba4a4d3SPhilippe Mathieu-Daudé fdt=no 4473 e169e1e1SPeter Maydellfi 4474 e169e1e1SPeter Maydell 4475 d599938aSLaurent Vivier# fdt is only required when building softmmu targets 4476 d599938aSLaurent Vivierif test -z "$fdt" -a "$softmmu" != "yes" ; then 4477 d599938aSLaurent Vivier fdt="no" 4478 d599938aSLaurent Vivierfi 4479 d599938aSLaurent Vivier 4480 2df87df7SJuan Quintelaif test "$fdt" != "no" ; then 4481 b41af4baSJuan Quintela fdt_libs="-lfdt" 4482 96ce6545SPeter Crosthwaite # explicitly check for libfdt_env.h as it is missing in some stable installs 4483 6e85fce0SPaul Burton # and test for required functions to make sure we are on a version >= 1.4.2 4484 f652e6afSaurel32 cat > $TMPC << EOF 4485 31ce0adbSThomas Huth#include <libfdt.h> 4486 96ce6545SPeter Crosthwaite#include <libfdt_env.h> 4487 fea35ca4SAlexey Kardashevskiyint main(void) { fdt_check_full(NULL, 0); return 0; } 4488 f652e6afSaurel32EOF 4489 52166aa0SJuan Quintela if compile_prog "" "$fdt_libs" ; then 4490 a540f158SPeter Crosthwaite # system DTC is good - use it 4491 e3971d61SPhilippe Mathieu-Daudé fdt=system 4492 aef45d51SDaniel P. Berrange else 4493 aef45d51SDaniel P. Berrange # have GIT checkout, so activate dtc submodule 4494 aef45d51SDaniel P. Berrange if test -e "${source_path}/.git" ; then 4495 aef45d51SDaniel P. Berrange git_submodules="${git_submodules} dtc" 4496 aef45d51SDaniel P. Berrange fi 4497 aef45d51SDaniel P. Berrange if test -d "${source_path}/dtc/libfdt" || test -e "${source_path}/.git" ; then 4498 e3971d61SPhilippe Mathieu-Daudé fdt=git 4499 a540f158SPeter Crosthwaite mkdir -p dtc 4500 cab00a5aSMichael S. Tsirkin if [ "$pwd_is_source_path" != "y" ] ; then 4501 a540f158SPeter Crosthwaite symlink "$source_path/dtc/Makefile" "dtc/Makefile" 4502 2df87df7SJuan Quintela fi 4503 25211446SPaolo Bonzini fdt_cflags="-I${source_path}/dtc/libfdt" 4504 25211446SPaolo Bonzini fdt_ldflags="-L$PWD/dtc/libfdt" 4505 8a99e9a3SPhilippe Mathieu-Daudé fdt_libs="$fdt_libs" 4506 a540f158SPeter Crosthwaite elif test "$fdt" = "yes" ; then 4507 aef45d51SDaniel P. Berrange # Not a git build & no libfdt found, prompt for system install 4508 aef45d51SDaniel P. Berrange error_exit "DTC (libfdt) version >= 1.4.2 not present." \ 4509 aef45d51SDaniel P. Berrange "Please install the DTC (libfdt) devel package" 4510 a540f158SPeter Crosthwaite else 4511 a540f158SPeter Crosthwaite # don't have and don't want 4512 de3a354aSMichael Walle fdt_libs= 4513 2df87df7SJuan Quintela fdt=no 4514 f652e6afSaurel32 fi 4515 f652e6afSaurel32 fi 4516 aef45d51SDaniel P. Berrangefi 4517 f652e6afSaurel32 4518 a540f158SPeter Crosthwaitelibs_softmmu="$libs_softmmu $fdt_libs" 4519 a540f158SPeter Crosthwaite 4520 20ff075bSMichael Walle########################################## 4521 fb719563SOGAWA Hirofumi# opengl probe (for sdl2, gtk, milkymist-tmu2) 4522 b1546f32SGerd Hoffmann 4523 d52c454aSMarc-André Lureaugbm="no" 4524 d52c454aSMarc-André Lureauif $pkg_config gbm; then 4525 d52c454aSMarc-André Lureau gbm_cflags="$($pkg_config --cflags gbm)" 4526 d52c454aSMarc-André Lureau gbm_libs="$($pkg_config --libs gbm)" 4527 d52c454aSMarc-André Lureau gbm="yes" 4528 d52c454aSMarc-André Lureaufi 4529 d52c454aSMarc-André Lureau 4530 da076ffeSGerd Hoffmannif test "$opengl" != "no" ; then 4531 4939a1dfSMichael Tokarev opengl_pkgs="epoxy gbm" 4532 5f9b1e35SGerd Hoffmann if $pkg_config $opengl_pkgs; then 4533 5f9b1e35SGerd Hoffmann opengl_cflags="$($pkg_config --cflags $opengl_pkgs)" 4534 5f9b1e35SGerd Hoffmann opengl_libs="$($pkg_config --libs $opengl_pkgs)" 4535 da076ffeSGerd Hoffmann opengl=yes 4536 925a0400SGerd Hoffmann if test "$gtk" = "yes" && $pkg_config --exists "$gtkpackage >= 3.16"; then 4537 925a0400SGerd Hoffmann gtk_gl="yes" 4538 925a0400SGerd Hoffmann fi 4539 cc720a5dSGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $opengl_cflags" 4540 20ff075bSMichael Walle else 4541 da076ffeSGerd Hoffmann if test "$opengl" = "yes" ; then 4542 dcf30025SGerd Hoffmann feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs" 4543 20ff075bSMichael Walle fi 4544 f676c67eSJeremy White opengl_cflags="" 4545 da076ffeSGerd Hoffmann opengl_libs="" 4546 da076ffeSGerd Hoffmann opengl=no 4547 20ff075bSMichael Walle fi 4548 20ff075bSMichael Wallefi 4549 20ff075bSMichael Walle 4550 014cb152SGerd Hoffmannif test "$opengl" = "yes"; then 4551 014cb152SGerd Hoffmann cat > $TMPC << EOF 4552 014cb152SGerd Hoffmann#include <epoxy/egl.h> 4553 014cb152SGerd Hoffmann#ifndef EGL_MESA_image_dma_buf_export 4554 014cb152SGerd Hoffmann# error mesa/epoxy lacks support for dmabufs (mesa 10.6+) 4555 014cb152SGerd Hoffmann#endif 4556 014cb152SGerd Hoffmannint main(void) { return 0; } 4557 014cb152SGerd HoffmannEOF 4558 014cb152SGerd Hoffmann if compile_prog "" "" ; then 4559 014cb152SGerd Hoffmann opengl_dmabuf=yes 4560 014cb152SGerd Hoffmann fi 4561 014cb152SGerd Hoffmannfi 4562 c9a12e75SChrysostomos Nanakos 4563 e633a5c6SEric Blakeif test "$opengl" = "yes" && test "$have_x11" = "yes"; then 4564 99e1a93bSPhilippe Mathieu-Daudé for target in $target_list; do 4565 99e1a93bSPhilippe Mathieu-Daudé case $target in 4566 99e1a93bSPhilippe Mathieu-Daudé lm32-softmmu) # milkymist-tmu2 requires X11 and OpenGL 4567 99e1a93bSPhilippe Mathieu-Daudé need_x11=yes 4568 99e1a93bSPhilippe Mathieu-Daudé ;; 4569 99e1a93bSPhilippe Mathieu-Daudé esac 4570 99e1a93bSPhilippe Mathieu-Daudé done 4571 99e1a93bSPhilippe Mathieu-Daudéfi 4572 99e1a93bSPhilippe Mathieu-Daudé 4573 ed279a06SKlim Kireev########################################## 4574 ed279a06SKlim Kireev# libxml2 probe 4575 ed279a06SKlim Kireevif test "$libxml2" != "no" ; then 4576 ed279a06SKlim Kireev if $pkg_config --exists libxml-2.0; then 4577 ed279a06SKlim Kireev libxml2="yes" 4578 ed279a06SKlim Kireev libxml2_cflags=$($pkg_config --cflags libxml-2.0) 4579 ed279a06SKlim Kireev libxml2_libs=$($pkg_config --libs libxml-2.0) 4580 ed279a06SKlim Kireev else 4581 ed279a06SKlim Kireev if test "$libxml2" = "yes"; then 4582 ed279a06SKlim Kireev feature_not_found "libxml2" "Install libxml2 devel" 4583 ed279a06SKlim Kireev fi 4584 ed279a06SKlim Kireev libxml2="no" 4585 ed279a06SKlim Kireev fi 4586 ed279a06SKlim Kireevfi 4587 c9a12e75SChrysostomos Nanakos 4588 eb100396SBharata B Rao########################################## 4589 eb100396SBharata B Rao# glusterfs probe 4590 eb100396SBharata B Raoif test "$glusterfs" != "no" ; then 4591 65d5d3f9SStefan Weil if $pkg_config --atleast-version=3 glusterfs-api; then 4592 e01bee08SBharata B Rao glusterfs="yes" 4593 89138857SStefan Weil glusterfs_cflags=$($pkg_config --cflags glusterfs-api) 4594 89138857SStefan Weil glusterfs_libs=$($pkg_config --libs glusterfs-api) 4595 d85fa9ebSJeff Cody if $pkg_config --atleast-version=4 glusterfs-api; then 4596 d85fa9ebSJeff Cody glusterfs_xlator_opt="yes" 4597 d85fa9ebSJeff Cody fi 4598 65d5d3f9SStefan Weil if $pkg_config --atleast-version=5 glusterfs-api; then 4599 0c14fb47SBharata B Rao glusterfs_discard="yes" 4600 0c14fb47SBharata B Rao fi 4601 7c815372SBharata B Rao if $pkg_config --atleast-version=6 glusterfs-api; then 4602 df3a429aSNiels de Vos glusterfs_fallocate="yes" 4603 7c815372SBharata B Rao glusterfs_zerofill="yes" 4604 7c815372SBharata B Rao fi 4605 e014dbe7SPrasanna Kumar Kalever cat > $TMPC << EOF 4606 e014dbe7SPrasanna Kumar Kalever#include <glusterfs/api/glfs.h> 4607 e014dbe7SPrasanna Kumar Kalever 4608 e014dbe7SPrasanna Kumar Kaleverint 4609 e014dbe7SPrasanna Kumar Kalevermain(void) 4610 e014dbe7SPrasanna Kumar Kalever{ 4611 e014dbe7SPrasanna Kumar Kalever /* new glfs_ftruncate() passes two additional args */ 4612 e014dbe7SPrasanna Kumar Kalever return glfs_ftruncate(NULL, 0, NULL, NULL); 4613 e014dbe7SPrasanna Kumar Kalever} 4614 e014dbe7SPrasanna Kumar KaleverEOF 4615 e014dbe7SPrasanna Kumar Kalever if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then 4616 e014dbe7SPrasanna Kumar Kalever glusterfs_ftruncate_has_stat="yes" 4617 e014dbe7SPrasanna Kumar Kalever fi 4618 0e3b891fSNiels de Vos cat > $TMPC << EOF 4619 0e3b891fSNiels de Vos#include <glusterfs/api/glfs.h> 4620 0e3b891fSNiels de Vos 4621 0e3b891fSNiels de Vos/* new glfs_io_cbk() passes two additional glfs_stat structs */ 4622 0e3b891fSNiels de Vosstatic void 4623 0e3b891fSNiels de Vosglusterfs_iocb(glfs_fd_t *fd, ssize_t ret, struct glfs_stat *prestat, struct glfs_stat *poststat, void *data) 4624 0e3b891fSNiels de Vos{} 4625 0e3b891fSNiels de Vos 4626 0e3b891fSNiels de Vosint 4627 0e3b891fSNiels de Vosmain(void) 4628 0e3b891fSNiels de Vos{ 4629 0e3b891fSNiels de Vos glfs_io_cbk iocb = &glusterfs_iocb; 4630 0e3b891fSNiels de Vos iocb(NULL, 0 , NULL, NULL, NULL); 4631 0e3b891fSNiels de Vos return 0; 4632 0e3b891fSNiels de Vos} 4633 0e3b891fSNiels de VosEOF 4634 0e3b891fSNiels de Vos if compile_prog "$glusterfs_cflags" "$glusterfs_libs" ; then 4635 0e3b891fSNiels de Vos glusterfs_iocb_has_stat="yes" 4636 0e3b891fSNiels de Vos fi 4637 eb100396SBharata B Rao else 4638 eb100396SBharata B Rao if test "$glusterfs" = "yes" ; then 4639 8efc9363SHu Tao feature_not_found "GlusterFS backend support" \ 4640 8efc9363SHu Tao "Install glusterfs-api devel >= 3" 4641 eb100396SBharata B Rao fi 4642 e01bee08SBharata B Rao glusterfs="no" 4643 eb100396SBharata B Rao fi 4644 eb100396SBharata B Raofi 4645 eb100396SBharata B Rao 4646 39386ac7Saurel32# Check for inotify functions when we are building linux-user 4647 3b3f24adSaurel32# emulator. This is done because older glibc versions don't 4648 3b3f24adSaurel32# have syscall stubs for these implemented. In that case we 4649 3b3f24adSaurel32# don't provide them even if kernel supports them. 4650 3b3f24adSaurel32# 4651 3b3f24adSaurel32inotify=no 4652 3b3f24adSaurel32cat > $TMPC << EOF 4653 3b3f24adSaurel32#include <sys/inotify.h> 4654 3b3f24adSaurel32 4655 3b3f24adSaurel32int 4656 3b3f24adSaurel32main(void) 4657 3b3f24adSaurel32{ 4658 3b3f24adSaurel32 /* try to start inotify */ 4659 8690e420Saurel32 return inotify_init(); 4660 3b3f24adSaurel32} 4661 3b3f24adSaurel32EOF 4662 52166aa0SJuan Quintelaif compile_prog "" "" ; then 4663 3b3f24adSaurel32 inotify=yes 4664 3b3f24adSaurel32fi 4665 3b3f24adSaurel32 4666 c05c7a73SRiku Voipioinotify1=no 4667 c05c7a73SRiku Voipiocat > $TMPC << EOF 4668 c05c7a73SRiku Voipio#include <sys/inotify.h> 4669 c05c7a73SRiku Voipio 4670 c05c7a73SRiku Voipioint 4671 c05c7a73SRiku Voipiomain(void) 4672 c05c7a73SRiku Voipio{ 4673 c05c7a73SRiku Voipio /* try to start inotify */ 4674 c05c7a73SRiku Voipio return inotify_init1(0); 4675 c05c7a73SRiku Voipio} 4676 c05c7a73SRiku VoipioEOF 4677 c05c7a73SRiku Voipioif compile_prog "" "" ; then 4678 c05c7a73SRiku Voipio inotify1=yes 4679 c05c7a73SRiku Voipiofi 4680 c05c7a73SRiku Voipio 4681 099d6b0fSRiku Voipio# check if pipe2 is there 4682 099d6b0fSRiku Voipiopipe2=no 4683 099d6b0fSRiku Voipiocat > $TMPC << EOF 4684 099d6b0fSRiku Voipio#include <unistd.h> 4685 099d6b0fSRiku Voipio#include <fcntl.h> 4686 099d6b0fSRiku Voipio 4687 099d6b0fSRiku Voipioint main(void) 4688 099d6b0fSRiku Voipio{ 4689 099d6b0fSRiku Voipio int pipefd[2]; 4690 9bca8162SBruce Rogers return pipe2(pipefd, O_CLOEXEC); 4691 099d6b0fSRiku Voipio} 4692 099d6b0fSRiku VoipioEOF 4693 52166aa0SJuan Quintelaif compile_prog "" "" ; then 4694 099d6b0fSRiku Voipio pipe2=yes 4695 099d6b0fSRiku Voipiofi 4696 099d6b0fSRiku Voipio 4697 40ff6d7eSKevin Wolf# check if accept4 is there 4698 40ff6d7eSKevin Wolfaccept4=no 4699 40ff6d7eSKevin Wolfcat > $TMPC << EOF 4700 40ff6d7eSKevin Wolf#include <sys/socket.h> 4701 40ff6d7eSKevin Wolf#include <stddef.h> 4702 40ff6d7eSKevin Wolf 4703 40ff6d7eSKevin Wolfint main(void) 4704 40ff6d7eSKevin Wolf{ 4705 40ff6d7eSKevin Wolf accept4(0, NULL, NULL, SOCK_CLOEXEC); 4706 40ff6d7eSKevin Wolf return 0; 4707 40ff6d7eSKevin Wolf} 4708 40ff6d7eSKevin WolfEOF 4709 40ff6d7eSKevin Wolfif compile_prog "" "" ; then 4710 40ff6d7eSKevin Wolf accept4=yes 4711 40ff6d7eSKevin Wolffi 4712 40ff6d7eSKevin Wolf 4713 3ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time. 4714 3ce34dfbSvibisreenivasansplice=no 4715 3ce34dfbSvibisreenivasancat > $TMPC << EOF 4716 3ce34dfbSvibisreenivasan#include <unistd.h> 4717 3ce34dfbSvibisreenivasan#include <fcntl.h> 4718 3ce34dfbSvibisreenivasan#include <limits.h> 4719 3ce34dfbSvibisreenivasan 4720 3ce34dfbSvibisreenivasanint main(void) 4721 3ce34dfbSvibisreenivasan{ 4722 66ea0f22SStefan Weil int len, fd = 0; 4723 3ce34dfbSvibisreenivasan len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK); 4724 3ce34dfbSvibisreenivasan splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE); 4725 3ce34dfbSvibisreenivasan return 0; 4726 3ce34dfbSvibisreenivasan} 4727 3ce34dfbSvibisreenivasanEOF 4728 52166aa0SJuan Quintelaif compile_prog "" "" ; then 4729 3ce34dfbSvibisreenivasan splice=yes 4730 3ce34dfbSvibisreenivasanfi 4731 3ce34dfbSvibisreenivasan 4732 dcc38d1cSMarcelo Tosatti########################################## 4733 a99d57bbSWanlong Gao# libnuma probe 4734 a99d57bbSWanlong Gao 4735 a99d57bbSWanlong Gaoif test "$numa" != "no" ; then 4736 a99d57bbSWanlong Gao cat > $TMPC << EOF 4737 a99d57bbSWanlong Gao#include <numa.h> 4738 a99d57bbSWanlong Gaoint main(void) { return numa_available(); } 4739 a99d57bbSWanlong GaoEOF 4740 a99d57bbSWanlong Gao 4741 a99d57bbSWanlong Gao if compile_prog "" "-lnuma" ; then 4742 a99d57bbSWanlong Gao numa=yes 4743 a99d57bbSWanlong Gao libs_softmmu="-lnuma $libs_softmmu" 4744 a99d57bbSWanlong Gao else 4745 a99d57bbSWanlong Gao if test "$numa" = "yes" ; then 4746 a99d57bbSWanlong Gao feature_not_found "numa" "install numactl devel" 4747 a99d57bbSWanlong Gao fi 4748 a99d57bbSWanlong Gao numa=no 4749 a99d57bbSWanlong Gao fi 4750 a99d57bbSWanlong Gaofi 4751 a99d57bbSWanlong Gao 4752 7b01cb97SAlexandre Derumierif test "$tcmalloc" = "yes" && test "$jemalloc" = "yes" ; then 4753 7b01cb97SAlexandre Derumier echo "ERROR: tcmalloc && jemalloc can't be used at the same time" 4754 7b01cb97SAlexandre Derumier exit 1 4755 7b01cb97SAlexandre Derumierfi 4756 7b01cb97SAlexandre Derumier 4757 5a22ab71SYang Zhong# Even if malloc_trim() is available, these non-libc memory allocators 4758 5a22ab71SYang Zhong# do not support it. 4759 5a22ab71SYang Zhongif test "$tcmalloc" = "yes" || test "$jemalloc" = "yes" ; then 4760 5a22ab71SYang Zhong if test "$malloc_trim" = "yes" ; then 4761 5a22ab71SYang Zhong echo "Disabling malloc_trim with non-libc memory allocator" 4762 5a22ab71SYang Zhong fi 4763 5a22ab71SYang Zhong malloc_trim="no" 4764 5a22ab71SYang Zhongfi 4765 5a22ab71SYang Zhong 4766 5a22ab71SYang Zhong####################################### 4767 5a22ab71SYang Zhong# malloc_trim 4768 5a22ab71SYang Zhong 4769 5a22ab71SYang Zhongif test "$malloc_trim" != "no" ; then 4770 5a22ab71SYang Zhong cat > $TMPC << EOF 4771 5a22ab71SYang Zhong#include <malloc.h> 4772 5a22ab71SYang Zhongint main(void) { malloc_trim(0); return 0; } 4773 5a22ab71SYang ZhongEOF 4774 5a22ab71SYang Zhong if compile_prog "" "" ; then 4775 5a22ab71SYang Zhong malloc_trim="yes" 4776 5a22ab71SYang Zhong else 4777 5a22ab71SYang Zhong malloc_trim="no" 4778 5a22ab71SYang Zhong fi 4779 5a22ab71SYang Zhongfi 4780 5a22ab71SYang Zhong 4781 a99d57bbSWanlong Gao########################################## 4782 2847b469SFam Zheng# tcmalloc probe 4783 2847b469SFam Zheng 4784 2847b469SFam Zhengif test "$tcmalloc" = "yes" ; then 4785 2847b469SFam Zheng cat > $TMPC << EOF 4786 2847b469SFam Zheng#include <stdlib.h> 4787 f2dfe54cSLeonid Blochint main(void) { 4788 f2dfe54cSLeonid Bloch void *tmp = malloc(1); 4789 f2dfe54cSLeonid Bloch if (tmp != NULL) { 4790 f2dfe54cSLeonid Bloch return 0; 4791 f2dfe54cSLeonid Bloch } 4792 f2dfe54cSLeonid Bloch return 1; 4793 f2dfe54cSLeonid Bloch} 4794 2847b469SFam ZhengEOF 4795 2847b469SFam Zheng 4796 2847b469SFam Zheng if compile_prog "" "-ltcmalloc" ; then 4797 2847b469SFam Zheng LIBS="-ltcmalloc $LIBS" 4798 2847b469SFam Zheng else 4799 2847b469SFam Zheng feature_not_found "tcmalloc" "install gperftools devel" 4800 2847b469SFam Zheng fi 4801 2847b469SFam Zhengfi 4802 2847b469SFam Zheng 4803 2847b469SFam Zheng########################################## 4804 7b01cb97SAlexandre Derumier# jemalloc probe 4805 7b01cb97SAlexandre Derumier 4806 7b01cb97SAlexandre Derumierif test "$jemalloc" = "yes" ; then 4807 7b01cb97SAlexandre Derumier cat > $TMPC << EOF 4808 7b01cb97SAlexandre Derumier#include <stdlib.h> 4809 f2dfe54cSLeonid Blochint main(void) { 4810 f2dfe54cSLeonid Bloch void *tmp = malloc(1); 4811 f2dfe54cSLeonid Bloch if (tmp != NULL) { 4812 f2dfe54cSLeonid Bloch return 0; 4813 f2dfe54cSLeonid Bloch } 4814 f2dfe54cSLeonid Bloch return 1; 4815 f2dfe54cSLeonid Bloch} 4816 7b01cb97SAlexandre DerumierEOF 4817 7b01cb97SAlexandre Derumier 4818 7b01cb97SAlexandre Derumier if compile_prog "" "-ljemalloc" ; then 4819 7b01cb97SAlexandre Derumier LIBS="-ljemalloc $LIBS" 4820 7b01cb97SAlexandre Derumier else 4821 7b01cb97SAlexandre Derumier feature_not_found "jemalloc" "install jemalloc devel" 4822 7b01cb97SAlexandre Derumier fi 4823 7b01cb97SAlexandre Derumierfi 4824 7b01cb97SAlexandre Derumier 4825 7b01cb97SAlexandre Derumier########################################## 4826 dcc38d1cSMarcelo Tosatti# signalfd probe 4827 dcc38d1cSMarcelo Tosattisignalfd="no" 4828 dcc38d1cSMarcelo Tosatticat > $TMPC << EOF 4829 dcc38d1cSMarcelo Tosatti#include <unistd.h> 4830 dcc38d1cSMarcelo Tosatti#include <sys/syscall.h> 4831 dcc38d1cSMarcelo Tosatti#include <signal.h> 4832 dcc38d1cSMarcelo Tosattiint main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); } 4833 dcc38d1cSMarcelo TosattiEOF 4834 dcc38d1cSMarcelo Tosatti 4835 dcc38d1cSMarcelo Tosattiif compile_prog "" "" ; then 4836 dcc38d1cSMarcelo Tosatti signalfd=yes 4837 dcc38d1cSMarcelo Tosattifi 4838 dcc38d1cSMarcelo Tosatti 4839 d339d766SRichard W.M. Jones# check if optreset global is declared by <getopt.h> 4840 d339d766SRichard W.M. Jonesoptreset="no" 4841 d339d766SRichard W.M. Jonescat > $TMPC << EOF 4842 d339d766SRichard W.M. Jones#include <getopt.h> 4843 d339d766SRichard W.M. Jonesint main(void) { return optreset; } 4844 d339d766SRichard W.M. JonesEOF 4845 d339d766SRichard W.M. Jones 4846 d339d766SRichard W.M. Jonesif compile_prog "" "" ; then 4847 d339d766SRichard W.M. Jones optreset=yes 4848 d339d766SRichard W.M. Jonesfi 4849 d339d766SRichard W.M. Jones 4850 c2882b96SRiku Voipio# check if eventfd is supported 4851 c2882b96SRiku Voipioeventfd=no 4852 c2882b96SRiku Voipiocat > $TMPC << EOF 4853 c2882b96SRiku Voipio#include <sys/eventfd.h> 4854 c2882b96SRiku Voipio 4855 c2882b96SRiku Voipioint main(void) 4856 c2882b96SRiku Voipio{ 4857 55cc7f3eSStefan Weil return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC); 4858 c2882b96SRiku Voipio} 4859 c2882b96SRiku VoipioEOF 4860 c2882b96SRiku Voipioif compile_prog "" "" ; then 4861 c2882b96SRiku Voipio eventfd=yes 4862 c2882b96SRiku Voipiofi 4863 c2882b96SRiku Voipio 4864 751bcc39SMarc-André Lureau# check if memfd is supported 4865 751bcc39SMarc-André Lureaumemfd=no 4866 751bcc39SMarc-André Lureaucat > $TMPC << EOF 4867 75e5b70eSPaolo Bonzini#include <sys/mman.h> 4868 751bcc39SMarc-André Lureau 4869 751bcc39SMarc-André Lureauint main(void) 4870 751bcc39SMarc-André Lureau{ 4871 751bcc39SMarc-André Lureau return memfd_create("foo", MFD_ALLOW_SEALING); 4872 751bcc39SMarc-André Lureau} 4873 751bcc39SMarc-André LureauEOF 4874 751bcc39SMarc-André Lureauif compile_prog "" "" ; then 4875 751bcc39SMarc-André Lureau memfd=yes 4876 751bcc39SMarc-André Lureaufi 4877 751bcc39SMarc-André Lureau 4878 955727d2SCortland Tölva# check for usbfs 4879 955727d2SCortland Tölvahave_usbfs=no 4880 955727d2SCortland Tölvaif test "$linux_user" = "yes"; then 4881 96566d09SThomas Petazzoni cat > $TMPC << EOF 4882 96566d09SThomas Petazzoni#include <linux/usbdevice_fs.h> 4883 96566d09SThomas Petazzoni 4884 96566d09SThomas Petazzoni#ifndef USBDEVFS_GET_CAPABILITIES 4885 96566d09SThomas Petazzoni#error "USBDEVFS_GET_CAPABILITIES undefined" 4886 96566d09SThomas Petazzoni#endif 4887 96566d09SThomas Petazzoni 4888 96566d09SThomas Petazzoni#ifndef USBDEVFS_DISCONNECT_CLAIM 4889 96566d09SThomas Petazzoni#error "USBDEVFS_DISCONNECT_CLAIM undefined" 4890 96566d09SThomas Petazzoni#endif 4891 96566d09SThomas Petazzoni 4892 96566d09SThomas Petazzoniint main(void) 4893 96566d09SThomas Petazzoni{ 4894 96566d09SThomas Petazzoni return 0; 4895 96566d09SThomas Petazzoni} 4896 96566d09SThomas PetazzoniEOF 4897 96566d09SThomas Petazzoni if compile_prog "" ""; then 4898 955727d2SCortland Tölva have_usbfs=yes 4899 955727d2SCortland Tölva fi 4900 955727d2SCortland Tölvafi 4901 751bcc39SMarc-André Lureau 4902 d0927938SUlrich Hecht# check for fallocate 4903 d0927938SUlrich Hechtfallocate=no 4904 d0927938SUlrich Hechtcat > $TMPC << EOF 4905 d0927938SUlrich Hecht#include <fcntl.h> 4906 d0927938SUlrich Hecht 4907 d0927938SUlrich Hechtint main(void) 4908 d0927938SUlrich Hecht{ 4909 d0927938SUlrich Hecht fallocate(0, 0, 0, 0); 4910 d0927938SUlrich Hecht return 0; 4911 d0927938SUlrich Hecht} 4912 d0927938SUlrich HechtEOF 4913 8fb03151SPeter Maydellif compile_prog "" "" ; then 4914 d0927938SUlrich Hecht fallocate=yes 4915 d0927938SUlrich Hechtfi 4916 d0927938SUlrich Hecht 4917 3d4fa43eSKusanagi Kouichi# check for fallocate hole punching 4918 3d4fa43eSKusanagi Kouichifallocate_punch_hole=no 4919 3d4fa43eSKusanagi Kouichicat > $TMPC << EOF 4920 3d4fa43eSKusanagi Kouichi#include <fcntl.h> 4921 3d4fa43eSKusanagi Kouichi#include <linux/falloc.h> 4922 3d4fa43eSKusanagi Kouichi 4923 3d4fa43eSKusanagi Kouichiint main(void) 4924 3d4fa43eSKusanagi Kouichi{ 4925 3d4fa43eSKusanagi Kouichi fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0); 4926 3d4fa43eSKusanagi Kouichi return 0; 4927 3d4fa43eSKusanagi Kouichi} 4928 3d4fa43eSKusanagi KouichiEOF 4929 3d4fa43eSKusanagi Kouichiif compile_prog "" "" ; then 4930 3d4fa43eSKusanagi Kouichi fallocate_punch_hole=yes 4931 3d4fa43eSKusanagi Kouichifi 4932 3d4fa43eSKusanagi Kouichi 4933 b953f075SDenis V. Lunev# check that fallocate supports range zeroing inside the file 4934 b953f075SDenis V. Lunevfallocate_zero_range=no 4935 b953f075SDenis V. Lunevcat > $TMPC << EOF 4936 b953f075SDenis V. Lunev#include <fcntl.h> 4937 b953f075SDenis V. Lunev#include <linux/falloc.h> 4938 b953f075SDenis V. Lunev 4939 b953f075SDenis V. Lunevint main(void) 4940 b953f075SDenis V. Lunev{ 4941 b953f075SDenis V. Lunev fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0); 4942 b953f075SDenis V. Lunev return 0; 4943 b953f075SDenis V. Lunev} 4944 b953f075SDenis V. LunevEOF 4945 b953f075SDenis V. Lunevif compile_prog "" "" ; then 4946 b953f075SDenis V. Lunev fallocate_zero_range=yes 4947 b953f075SDenis V. Lunevfi 4948 b953f075SDenis V. Lunev 4949 ed911435SKevin Wolf# check for posix_fallocate 4950 ed911435SKevin Wolfposix_fallocate=no 4951 ed911435SKevin Wolfcat > $TMPC << EOF 4952 ed911435SKevin Wolf#include <fcntl.h> 4953 ed911435SKevin Wolf 4954 ed911435SKevin Wolfint main(void) 4955 ed911435SKevin Wolf{ 4956 ed911435SKevin Wolf posix_fallocate(0, 0, 0); 4957 ed911435SKevin Wolf return 0; 4958 ed911435SKevin Wolf} 4959 ed911435SKevin WolfEOF 4960 ed911435SKevin Wolfif compile_prog "" "" ; then 4961 ed911435SKevin Wolf posix_fallocate=yes 4962 ed911435SKevin Wolffi 4963 ed911435SKevin Wolf 4964 c727f47dSPeter Maydell# check for sync_file_range 4965 c727f47dSPeter Maydellsync_file_range=no 4966 c727f47dSPeter Maydellcat > $TMPC << EOF 4967 c727f47dSPeter Maydell#include <fcntl.h> 4968 c727f47dSPeter Maydell 4969 c727f47dSPeter Maydellint main(void) 4970 c727f47dSPeter Maydell{ 4971 c727f47dSPeter Maydell sync_file_range(0, 0, 0, 0); 4972 c727f47dSPeter Maydell return 0; 4973 c727f47dSPeter Maydell} 4974 c727f47dSPeter MaydellEOF 4975 8fb03151SPeter Maydellif compile_prog "" "" ; then 4976 c727f47dSPeter Maydell sync_file_range=yes 4977 c727f47dSPeter Maydellfi 4978 c727f47dSPeter Maydell 4979 dace20dcSPeter Maydell# check for linux/fiemap.h and FS_IOC_FIEMAP 4980 dace20dcSPeter Maydellfiemap=no 4981 dace20dcSPeter Maydellcat > $TMPC << EOF 4982 dace20dcSPeter Maydell#include <sys/ioctl.h> 4983 dace20dcSPeter Maydell#include <linux/fs.h> 4984 dace20dcSPeter Maydell#include <linux/fiemap.h> 4985 dace20dcSPeter Maydell 4986 dace20dcSPeter Maydellint main(void) 4987 dace20dcSPeter Maydell{ 4988 dace20dcSPeter Maydell ioctl(0, FS_IOC_FIEMAP, 0); 4989 dace20dcSPeter Maydell return 0; 4990 dace20dcSPeter Maydell} 4991 dace20dcSPeter MaydellEOF 4992 8fb03151SPeter Maydellif compile_prog "" "" ; then 4993 dace20dcSPeter Maydell fiemap=yes 4994 dace20dcSPeter Maydellfi 4995 dace20dcSPeter Maydell 4996 d0927938SUlrich Hecht# check for dup3 4997 d0927938SUlrich Hechtdup3=no 4998 d0927938SUlrich Hechtcat > $TMPC << EOF 4999 d0927938SUlrich Hecht#include <unistd.h> 5000 d0927938SUlrich Hecht 5001 d0927938SUlrich Hechtint main(void) 5002 d0927938SUlrich Hecht{ 5003 d0927938SUlrich Hecht dup3(0, 0, 0); 5004 d0927938SUlrich Hecht return 0; 5005 d0927938SUlrich Hecht} 5006 d0927938SUlrich HechtEOF 5007 78f5d726SJan Kiszkaif compile_prog "" "" ; then 5008 d0927938SUlrich Hecht dup3=yes 5009 d0927938SUlrich Hechtfi 5010 d0927938SUlrich Hecht 5011 4e0c6529SAlex Bligh# check for ppoll support 5012 4e0c6529SAlex Blighppoll=no 5013 4e0c6529SAlex Blighcat > $TMPC << EOF 5014 4e0c6529SAlex Bligh#include <poll.h> 5015 4e0c6529SAlex Bligh 5016 4e0c6529SAlex Blighint main(void) 5017 4e0c6529SAlex Bligh{ 5018 4e0c6529SAlex Bligh struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 }; 5019 4e0c6529SAlex Bligh ppoll(&pfd, 1, 0, 0); 5020 4e0c6529SAlex Bligh return 0; 5021 4e0c6529SAlex Bligh} 5022 4e0c6529SAlex BlighEOF 5023 4e0c6529SAlex Blighif compile_prog "" "" ; then 5024 4e0c6529SAlex Bligh ppoll=yes 5025 4e0c6529SAlex Blighfi 5026 4e0c6529SAlex Bligh 5027 cd758dd0SAlex Bligh# check for prctl(PR_SET_TIMERSLACK , ... ) support 5028 cd758dd0SAlex Blighprctl_pr_set_timerslack=no 5029 cd758dd0SAlex Blighcat > $TMPC << EOF 5030 cd758dd0SAlex Bligh#include <sys/prctl.h> 5031 cd758dd0SAlex Bligh 5032 cd758dd0SAlex Blighint main(void) 5033 cd758dd0SAlex Bligh{ 5034 cd758dd0SAlex Bligh prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0); 5035 cd758dd0SAlex Bligh return 0; 5036 cd758dd0SAlex Bligh} 5037 cd758dd0SAlex BlighEOF 5038 cd758dd0SAlex Blighif compile_prog "" "" ; then 5039 cd758dd0SAlex Bligh prctl_pr_set_timerslack=yes 5040 cd758dd0SAlex Blighfi 5041 cd758dd0SAlex Bligh 5042 3b6edd16SPeter Maydell# check for epoll support 5043 3b6edd16SPeter Maydellepoll=no 5044 3b6edd16SPeter Maydellcat > $TMPC << EOF 5045 3b6edd16SPeter Maydell#include <sys/epoll.h> 5046 3b6edd16SPeter Maydell 5047 3b6edd16SPeter Maydellint main(void) 5048 3b6edd16SPeter Maydell{ 5049 3b6edd16SPeter Maydell epoll_create(0); 5050 3b6edd16SPeter Maydell return 0; 5051 3b6edd16SPeter Maydell} 5052 3b6edd16SPeter MaydellEOF 5053 8fb03151SPeter Maydellif compile_prog "" "" ; then 5054 3b6edd16SPeter Maydell epoll=yes 5055 3b6edd16SPeter Maydellfi 5056 3b6edd16SPeter Maydell 5057 227f0214SPeter Maydell# epoll_create1 is a later addition 5058 227f0214SPeter Maydell# so we must check separately for its presence 5059 3b6edd16SPeter Maydellepoll_create1=no 5060 3b6edd16SPeter Maydellcat > $TMPC << EOF 5061 3b6edd16SPeter Maydell#include <sys/epoll.h> 5062 3b6edd16SPeter Maydell 5063 3b6edd16SPeter Maydellint main(void) 5064 3b6edd16SPeter Maydell{ 5065 19e83f6bSPeter Maydell /* Note that we use epoll_create1 as a value, not as 5066 19e83f6bSPeter Maydell * a function being called. This is necessary so that on 5067 19e83f6bSPeter Maydell * old SPARC glibc versions where the function was present in 5068 19e83f6bSPeter Maydell * the library but not declared in the header file we will 5069 19e83f6bSPeter Maydell * fail the configure check. (Otherwise we will get a compiler 5070 19e83f6bSPeter Maydell * warning but not an error, and will proceed to fail the 5071 19e83f6bSPeter Maydell * qemu compile where we compile with -Werror.) 5072 19e83f6bSPeter Maydell */ 5073 c075a723SBlue Swirl return (int)(uintptr_t)&epoll_create1; 5074 3b6edd16SPeter Maydell} 5075 3b6edd16SPeter MaydellEOF 5076 8fb03151SPeter Maydellif compile_prog "" "" ; then 5077 3b6edd16SPeter Maydell epoll_create1=yes 5078 3b6edd16SPeter Maydellfi 5079 3b6edd16SPeter Maydell 5080 a8fd1abaSPeter Maydell# check for sendfile support 5081 a8fd1abaSPeter Maydellsendfile=no 5082 a8fd1abaSPeter Maydellcat > $TMPC << EOF 5083 a8fd1abaSPeter Maydell#include <sys/sendfile.h> 5084 a8fd1abaSPeter Maydell 5085 a8fd1abaSPeter Maydellint main(void) 5086 a8fd1abaSPeter Maydell{ 5087 a8fd1abaSPeter Maydell return sendfile(0, 0, 0, 0); 5088 a8fd1abaSPeter Maydell} 5089 a8fd1abaSPeter MaydellEOF 5090 a8fd1abaSPeter Maydellif compile_prog "" "" ; then 5091 a8fd1abaSPeter Maydell sendfile=yes 5092 a8fd1abaSPeter Maydellfi 5093 a8fd1abaSPeter Maydell 5094 51834341SRiku Voipio# check for timerfd support (glibc 2.8 and newer) 5095 51834341SRiku Voipiotimerfd=no 5096 51834341SRiku Voipiocat > $TMPC << EOF 5097 51834341SRiku Voipio#include <sys/timerfd.h> 5098 51834341SRiku Voipio 5099 51834341SRiku Voipioint main(void) 5100 51834341SRiku Voipio{ 5101 51834341SRiku Voipio return(timerfd_create(CLOCK_REALTIME, 0)); 5102 51834341SRiku Voipio} 5103 51834341SRiku VoipioEOF 5104 51834341SRiku Voipioif compile_prog "" "" ; then 5105 51834341SRiku Voipio timerfd=yes 5106 51834341SRiku Voipiofi 5107 51834341SRiku Voipio 5108 9af5c906SRiku Voipio# check for setns and unshare support 5109 9af5c906SRiku Voipiosetns=no 5110 9af5c906SRiku Voipiocat > $TMPC << EOF 5111 9af5c906SRiku Voipio#include <sched.h> 5112 9af5c906SRiku Voipio 5113 9af5c906SRiku Voipioint main(void) 5114 9af5c906SRiku Voipio{ 5115 9af5c906SRiku Voipio int ret; 5116 9af5c906SRiku Voipio ret = setns(0, 0); 5117 9af5c906SRiku Voipio ret = unshare(0); 5118 9af5c906SRiku Voipio return ret; 5119 9af5c906SRiku Voipio} 5120 9af5c906SRiku VoipioEOF 5121 9af5c906SRiku Voipioif compile_prog "" "" ; then 5122 9af5c906SRiku Voipio setns=yes 5123 9af5c906SRiku Voipiofi 5124 9af5c906SRiku Voipio 5125 38860a03SAleksandar Markovic# clock_adjtime probe 5126 38860a03SAleksandar Markovicclock_adjtime=no 5127 38860a03SAleksandar Markoviccat > $TMPC <<EOF 5128 38860a03SAleksandar Markovic#include <time.h> 5129 38860a03SAleksandar Markovic 5130 38860a03SAleksandar Markovicint main(void) 5131 38860a03SAleksandar Markovic{ 5132 38860a03SAleksandar Markovic return clock_adjtime(0, 0); 5133 38860a03SAleksandar Markovic} 5134 38860a03SAleksandar MarkovicEOF 5135 38860a03SAleksandar Markovicclock_adjtime=no 5136 38860a03SAleksandar Markovicif compile_prog "" "" ; then 5137 38860a03SAleksandar Markovic clock_adjtime=yes 5138 38860a03SAleksandar Markovicfi 5139 38860a03SAleksandar Markovic 5140 5a03cd00SAleksandar Markovic# syncfs probe 5141 5a03cd00SAleksandar Markovicsyncfs=no 5142 5a03cd00SAleksandar Markoviccat > $TMPC <<EOF 5143 5a03cd00SAleksandar Markovic#include <unistd.h> 5144 5a03cd00SAleksandar Markovic 5145 5a03cd00SAleksandar Markovicint main(void) 5146 5a03cd00SAleksandar Markovic{ 5147 5a03cd00SAleksandar Markovic return syncfs(0); 5148 5a03cd00SAleksandar Markovic} 5149 5a03cd00SAleksandar MarkovicEOF 5150 5a03cd00SAleksandar Markovicsyncfs=no 5151 5a03cd00SAleksandar Markovicif compile_prog "" "" ; then 5152 5a03cd00SAleksandar Markovic syncfs=yes 5153 5a03cd00SAleksandar Markovicfi 5154 5a03cd00SAleksandar Markovic 5155 db37dd89SAleksandar Markovic# check for kcov support (kernel must be 4.4+, compiled with certain options) 5156 db37dd89SAleksandar Markovickcov=no 5157 db37dd89SAleksandar Markovicif check_include sys/kcov.h ; then 5158 db37dd89SAleksandar Markovic kcov=yes 5159 db37dd89SAleksandar Markovicfi 5160 db37dd89SAleksandar Markovic 5161 516e8b7dSPeter Maydell# If we're making warnings fatal, apply this to Sphinx runs as well 5162 516e8b7dSPeter Maydellsphinx_werror="" 5163 516e8b7dSPeter Maydellif test "$werror" = "yes"; then 5164 516e8b7dSPeter Maydell sphinx_werror="-W" 5165 516e8b7dSPeter Maydellfi 5166 516e8b7dSPeter Maydell 5167 5f71eac0SPeter Maydell# Check we have a new enough version of sphinx-build 5168 5f71eac0SPeter Maydellhas_sphinx_build() { 5169 5f71eac0SPeter Maydell # This is a bit awkward but works: create a trivial document and 5170 5f71eac0SPeter Maydell # try to run it with our configuration file (which enforces a 5171 5f71eac0SPeter Maydell # version requirement). This will fail if either 5172 5f71eac0SPeter Maydell # sphinx-build doesn't exist at all or if it is too old. 5173 5f71eac0SPeter Maydell mkdir -p "$TMPDIR1/sphinx" 5174 5f71eac0SPeter Maydell touch "$TMPDIR1/sphinx/index.rst" 5175 988ae6c3SAlex Bennée "$sphinx_build" $sphinx_werror -c "$source_path/docs" \ 5176 988ae6c3SAlex Bennée -b html "$TMPDIR1/sphinx" \ 5177 988ae6c3SAlex Bennée "$TMPDIR1/sphinx/out" >> config.log 2>&1 5178 5f71eac0SPeter Maydell} 5179 5f71eac0SPeter Maydell 5180 cc8ae6deSpbrook# Check if tools are available to build documentation. 5181 a25dba17SJuan Quintelaif test "$docs" != "no" ; then 5182 758b617aSPeter Maydell if has_sphinx_build; then 5183 758b617aSPeter Maydell sphinx_ok=yes 5184 758b617aSPeter Maydell else 5185 758b617aSPeter Maydell sphinx_ok=no 5186 758b617aSPeter Maydell fi 5187 758b617aSPeter Maydell if has makeinfo && has pod2man && test "$sphinx_ok" = "yes"; then 5188 a25dba17SJuan Quintela docs=yes 5189 83a3ab8bSJuan Quintela else 5190 a25dba17SJuan Quintela if test "$docs" = "yes" ; then 5191 758b617aSPeter Maydell if has $sphinx_build && test "$sphinx_ok" != "yes"; then 5192 758b617aSPeter Maydell echo "Warning: $sphinx_build exists but it is either too old or uses too old a Python version" >&2 5193 758b617aSPeter Maydell fi 5194 758b617aSPeter Maydell feature_not_found "docs" "Install texinfo, Perl/perl-podlators and a Python 3 version of python-sphinx" 5195 83a3ab8bSJuan Quintela fi 5196 a25dba17SJuan Quintela docs=no 5197 83a3ab8bSJuan Quintela fi 5198 cc8ae6deSpbrookfi 5199 cc8ae6deSpbrook 5200 f514f41cSStefan Weil# Search for bswap_32 function 5201 6ae9a1f4SJuan Quintelabyteswap_h=no 5202 6ae9a1f4SJuan Quintelacat > $TMPC << EOF 5203 6ae9a1f4SJuan Quintela#include <byteswap.h> 5204 6ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); } 5205 6ae9a1f4SJuan QuintelaEOF 5206 52166aa0SJuan Quintelaif compile_prog "" "" ; then 5207 6ae9a1f4SJuan Quintela byteswap_h=yes 5208 6ae9a1f4SJuan Quintelafi 5209 6ae9a1f4SJuan Quintela 5210 75f13596SStefan Weil# Search for bswap32 function 5211 6ae9a1f4SJuan Quintelabswap_h=no 5212 6ae9a1f4SJuan Quintelacat > $TMPC << EOF 5213 6ae9a1f4SJuan Quintela#include <sys/endian.h> 5214 6ae9a1f4SJuan Quintela#include <sys/types.h> 5215 6ae9a1f4SJuan Quintela#include <machine/bswap.h> 5216 6ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); } 5217 6ae9a1f4SJuan QuintelaEOF 5218 52166aa0SJuan Quintelaif compile_prog "" "" ; then 5219 6ae9a1f4SJuan Quintela bswap_h=yes 5220 6ae9a1f4SJuan Quintelafi 5221 6ae9a1f4SJuan Quintela 5222 da93a1fdSaliguori########################################## 5223 e49ab19fSPeter Lieven# Do we have libiscsi >= 1.9.0 5224 c589b249SRonnie Sahlbergif test "$libiscsi" != "no" ; then 5225 e49ab19fSPeter Lieven if $pkg_config --atleast-version=1.9.0 libiscsi; then 5226 3c33ea96SPaolo Bonzini libiscsi="yes" 5227 ca871ec8SStefan Weil libiscsi_cflags=$($pkg_config --cflags libiscsi) 5228 ca871ec8SStefan Weil libiscsi_libs=$($pkg_config --libs libiscsi) 5229 c589b249SRonnie Sahlberg else 5230 c589b249SRonnie Sahlberg if test "$libiscsi" = "yes" ; then 5231 e49ab19fSPeter Lieven feature_not_found "libiscsi" "Install libiscsi >= 1.9.0" 5232 c589b249SRonnie Sahlberg fi 5233 c589b249SRonnie Sahlberg libiscsi="no" 5234 c589b249SRonnie Sahlberg fi 5235 c589b249SRonnie Sahlbergfi 5236 c589b249SRonnie Sahlberg 5237 c589b249SRonnie Sahlberg########################################## 5238 8bacde8dSNatanael Copa# Do we need libm 5239 8bacde8dSNatanael Copacat > $TMPC << EOF 5240 8bacde8dSNatanael Copa#include <math.h> 5241 f80ea986SAlexey Kardashevskiyint main(int argc, char **argv) { return isnan(sin((double)argc)); } 5242 8bacde8dSNatanael CopaEOF 5243 8bacde8dSNatanael Copaif compile_prog "" "" ; then 5244 8bacde8dSNatanael Copa : 5245 8bacde8dSNatanael Copaelif compile_prog "" "-lm" ; then 5246 8bacde8dSNatanael Copa LIBS="-lm $LIBS" 5247 8bacde8dSNatanael Copaelse 5248 76ad07a4SPeter Maydell error_exit "libm check failed" 5249 8bacde8dSNatanael Copafi 5250 8bacde8dSNatanael Copa 5251 8bacde8dSNatanael Copa########################################## 5252 da93a1fdSaliguori# Do we need librt 5253 8bacde8dSNatanael Copa# uClibc provides 2 versions of clock_gettime(), one with realtime 5254 8bacde8dSNatanael Copa# support and one without. This means that the clock_gettime() don't 5255 8bacde8dSNatanael Copa# need -lrt. We still need it for timer_create() so we check for this 5256 8bacde8dSNatanael Copa# function in addition. 5257 da93a1fdSaliguoricat > $TMPC <<EOF 5258 da93a1fdSaliguori#include <signal.h> 5259 da93a1fdSaliguori#include <time.h> 5260 8bacde8dSNatanael Copaint main(void) { 5261 8bacde8dSNatanael Copa timer_create(CLOCK_REALTIME, NULL, NULL); 5262 8bacde8dSNatanael Copa return clock_gettime(CLOCK_REALTIME, NULL); 5263 8bacde8dSNatanael Copa} 5264 da93a1fdSaliguoriEOF 5265 da93a1fdSaliguori 5266 52166aa0SJuan Quintelaif compile_prog "" "" ; then 5267 07ffa4bdSJuan Quintela : 5268 8bacde8dSNatanael Copa# we need pthread for static linking. use previous pthread test result 5269 18e588b1SRick Liuelif compile_prog "" "$pthread_lib -lrt" ; then 5270 18e588b1SRick Liu LIBS="$LIBS -lrt" 5271 da93a1fdSaliguorifi 5272 da93a1fdSaliguori 5273 d99e97e6SThomas Huth# Check whether we need to link libutil for openpty() 5274 d99e97e6SThomas Huthcat > $TMPC << EOF 5275 d99e97e6SThomas Huthextern int openpty(int *am, int *as, char *name, void *termp, void *winp); 5276 d99e97e6SThomas Huthint main(void) { return openpty(0, 0, 0, 0, 0); } 5277 d99e97e6SThomas HuthEOF 5278 d99e97e6SThomas Huth 5279 9df8b20dSThomas Huthhave_openpty="no" 5280 9df8b20dSThomas Huthif compile_prog "" "" ; then 5281 9df8b20dSThomas Huth have_openpty="yes" 5282 9df8b20dSThomas Huthelse 5283 d99e97e6SThomas Huth if compile_prog "" "-lutil" ; then 5284 6362a53fSJuan Quintela libs_softmmu="-lutil $libs_softmmu" 5285 d99e97e6SThomas Huth libs_tools="-lutil $libs_tools" 5286 9df8b20dSThomas Huth have_openpty="yes" 5287 d99e97e6SThomas Huth fi 5288 6362a53fSJuan Quintelafi 5289 6362a53fSJuan Quintela 5290 de5071c5SBlue Swirl########################################## 5291 cd4ec0b4SGerd Hoffmann# spice probe 5292 cd4ec0b4SGerd Hoffmannif test "$spice" != "no" ; then 5293 cd4ec0b4SGerd Hoffmann cat > $TMPC << EOF 5294 cd4ec0b4SGerd Hoffmann#include <spice.h> 5295 cd4ec0b4SGerd Hoffmannint main(void) { spice_server_new(); return 0; } 5296 cd4ec0b4SGerd HoffmannEOF 5297 710fc4f5SJiri Denemark spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null) 5298 710fc4f5SJiri Denemark spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null) 5299 1b63665cSMarc-André Lureau if $pkg_config --atleast-version=0.12.5 spice-server && \ 5300 65d5d3f9SStefan Weil $pkg_config --atleast-version=0.12.3 spice-protocol && \ 5301 cd4ec0b4SGerd Hoffmann compile_prog "$spice_cflags" "$spice_libs" ; then 5302 cd4ec0b4SGerd Hoffmann spice="yes" 5303 cd4ec0b4SGerd Hoffmann libs_softmmu="$libs_softmmu $spice_libs" 5304 cd4ec0b4SGerd Hoffmann QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags" 5305 cd4ec0b4SGerd Hoffmann else 5306 cd4ec0b4SGerd Hoffmann if test "$spice" = "yes" ; then 5307 8efc9363SHu Tao feature_not_found "spice" \ 5308 1b63665cSMarc-André Lureau "Install spice-server(>=0.12.5) and spice-protocol(>=0.12.3) devel" 5309 cd4ec0b4SGerd Hoffmann fi 5310 cd4ec0b4SGerd Hoffmann spice="no" 5311 cd4ec0b4SGerd Hoffmann fi 5312 cd4ec0b4SGerd Hoffmannfi 5313 cd4ec0b4SGerd Hoffmann 5314 7b02f544SMarc-André Lureau# check for smartcard support 5315 7b02f544SMarc-André Lureauif test "$smartcard" != "no"; then 5316 0f5c642dSMichal Privoznik if $pkg_config --atleast-version=2.5.1 libcacard; then 5317 7b02f544SMarc-André Lureau libcacard_cflags=$($pkg_config --cflags libcacard) 5318 7b02f544SMarc-André Lureau libcacard_libs=$($pkg_config --libs libcacard) 5319 7b02f544SMarc-André Lureau smartcard="yes" 5320 111a38b0SRobert Relyea else 5321 7b02f544SMarc-André Lureau if test "$smartcard" = "yes"; then 5322 7b02f544SMarc-André Lureau feature_not_found "smartcard" "Install libcacard devel" 5323 111a38b0SRobert Relyea fi 5324 7b02f544SMarc-André Lureau smartcard="no" 5325 111a38b0SRobert Relyea fi 5326 111a38b0SRobert Relyeafi 5327 111a38b0SRobert Relyea 5328 2b2325ffSGerd Hoffmann# check for libusb 5329 2b2325ffSGerd Hoffmannif test "$libusb" != "no" ; then 5330 65d5d3f9SStefan Weil if $pkg_config --atleast-version=1.0.13 libusb-1.0; then 5331 2b2325ffSGerd Hoffmann libusb="yes" 5332 ca871ec8SStefan Weil libusb_cflags=$($pkg_config --cflags libusb-1.0) 5333 ca871ec8SStefan Weil libusb_libs=$($pkg_config --libs libusb-1.0) 5334 2b2325ffSGerd Hoffmann else 5335 2b2325ffSGerd Hoffmann if test "$libusb" = "yes"; then 5336 8efc9363SHu Tao feature_not_found "libusb" "Install libusb devel >= 1.0.13" 5337 2b2325ffSGerd Hoffmann fi 5338 2b2325ffSGerd Hoffmann libusb="no" 5339 2b2325ffSGerd Hoffmann fi 5340 2b2325ffSGerd Hoffmannfi 5341 2b2325ffSGerd Hoffmann 5342 69354a83SHans de Goede# check for usbredirparser for usb network redirection support 5343 69354a83SHans de Goedeif test "$usb_redir" != "no" ; then 5344 65d5d3f9SStefan Weil if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then 5345 69354a83SHans de Goede usb_redir="yes" 5346 ca871ec8SStefan Weil usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5) 5347 ca871ec8SStefan Weil usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5) 5348 69354a83SHans de Goede else 5349 69354a83SHans de Goede if test "$usb_redir" = "yes"; then 5350 21684af0SStewart Smith feature_not_found "usb-redir" "Install usbredir devel" 5351 69354a83SHans de Goede fi 5352 69354a83SHans de Goede usb_redir="no" 5353 69354a83SHans de Goede fi 5354 69354a83SHans de Goedefi 5355 69354a83SHans de Goede 5356 cd4ec0b4SGerd Hoffmann########################################## 5357 d9840e25STomoki Sekiyama# check if we have VSS SDK headers for win 5358 d9840e25STomoki Sekiyama 5359 e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no" && \ 5360 e633a5c6SEric Blake test "$vss_win32_sdk" != "no" ; then 5361 d9840e25STomoki Sekiyama case "$vss_win32_sdk" in 5362 690604f6SMichael Roth "") vss_win32_include="-isystem $source_path" ;; 5363 d9840e25STomoki Sekiyama *\ *) # The SDK is installed in "Program Files" by default, but we cannot 5364 d9840e25STomoki Sekiyama # handle path with spaces. So we symlink the headers into ".sdk/vss". 5365 690604f6SMichael Roth vss_win32_include="-isystem $source_path/.sdk/vss" 5366 d9840e25STomoki Sekiyama symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc" 5367 d9840e25STomoki Sekiyama ;; 5368 690604f6SMichael Roth *) vss_win32_include="-isystem $vss_win32_sdk" 5369 d9840e25STomoki Sekiyama esac 5370 d9840e25STomoki Sekiyama cat > $TMPC << EOF 5371 d9840e25STomoki Sekiyama#define __MIDL_user_allocate_free_DEFINED__ 5372 d9840e25STomoki Sekiyama#include <inc/win2003/vss.h> 5373 d9840e25STomoki Sekiyamaint main(void) { return VSS_CTX_BACKUP; } 5374 d9840e25STomoki SekiyamaEOF 5375 d9840e25STomoki Sekiyama if compile_prog "$vss_win32_include" "" ; then 5376 d9840e25STomoki Sekiyama guest_agent_with_vss="yes" 5377 d9840e25STomoki Sekiyama QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include" 5378 315d3184SFam Zheng libs_qga="-lole32 -loleaut32 -lshlwapi -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga" 5379 f33ca81fSMichael Roth qga_vss_provider="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb" 5380 d9840e25STomoki Sekiyama else 5381 d9840e25STomoki Sekiyama if test "$vss_win32_sdk" != "" ; then 5382 d9840e25STomoki Sekiyama echo "ERROR: Please download and install Microsoft VSS SDK:" 5383 d9840e25STomoki Sekiyama echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490" 5384 d9840e25STomoki Sekiyama echo "ERROR: On POSIX-systems, you can extract the SDK headers by:" 5385 d9840e25STomoki Sekiyama echo "ERROR: scripts/extract-vsssdk-headers setup.exe" 5386 d9840e25STomoki Sekiyama echo "ERROR: The headers are extracted in the directory \`inc'." 5387 d9840e25STomoki Sekiyama feature_not_found "VSS support" 5388 d9840e25STomoki Sekiyama fi 5389 d9840e25STomoki Sekiyama guest_agent_with_vss="no" 5390 d9840e25STomoki Sekiyama fi 5391 d9840e25STomoki Sekiyamafi 5392 d9840e25STomoki Sekiyama 5393 d9840e25STomoki Sekiyama########################################## 5394 d9840e25STomoki Sekiyama# lookup Windows platform SDK (if not specified) 5395 d9840e25STomoki Sekiyama# The SDK is needed only to build .tlb (type library) file of guest agent 5396 d9840e25STomoki Sekiyama# VSS provider from the source. It is usually unnecessary because the 5397 d9840e25STomoki Sekiyama# pre-compiled .tlb file is included. 5398 d9840e25STomoki Sekiyama 5399 e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no" && \ 5400 e633a5c6SEric Blake test "$guest_agent_with_vss" = "yes" ; then 5401 d9840e25STomoki Sekiyama if test -z "$win_sdk"; then 5402 d9840e25STomoki Sekiyama programfiles="$PROGRAMFILES" 5403 d9840e25STomoki Sekiyama test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432" 5404 d9840e25STomoki Sekiyama if test -n "$programfiles"; then 5405 d9840e25STomoki Sekiyama win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null 5406 d9840e25STomoki Sekiyama else 5407 d9840e25STomoki Sekiyama feature_not_found "Windows SDK" 5408 d9840e25STomoki Sekiyama fi 5409 d9840e25STomoki Sekiyama elif test "$win_sdk" = "no"; then 5410 d9840e25STomoki Sekiyama win_sdk="" 5411 d9840e25STomoki Sekiyama fi 5412 d9840e25STomoki Sekiyamafi 5413 d9840e25STomoki Sekiyama 5414 d9840e25STomoki Sekiyama########################################## 5415 50cbebb9SMichael Roth# check if mingw environment provides a recent ntddscsi.h 5416 e633a5c6SEric Blakeif test "$mingw32" = "yes" && test "$guest_agent" != "no"; then 5417 50cbebb9SMichael Roth cat > $TMPC << EOF 5418 50cbebb9SMichael Roth#include <windows.h> 5419 50cbebb9SMichael Roth#include <ntddscsi.h> 5420 50cbebb9SMichael Rothint main(void) { 5421 50cbebb9SMichael Roth#if !defined(IOCTL_SCSI_GET_ADDRESS) 5422 50cbebb9SMichael Roth#error Missing required ioctl definitions 5423 50cbebb9SMichael Roth#endif 5424 50cbebb9SMichael Roth SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 }; 5425 50cbebb9SMichael Roth return addr.Lun; 5426 50cbebb9SMichael Roth} 5427 50cbebb9SMichael RothEOF 5428 50cbebb9SMichael Roth if compile_prog "" "" ; then 5429 50cbebb9SMichael Roth guest_agent_ntddscsi=yes 5430 996b9cdcSMatt Hines libs_qga="-lsetupapi -lcfgmgr32 $libs_qga" 5431 50cbebb9SMichael Roth fi 5432 50cbebb9SMichael Rothfi 5433 50cbebb9SMichael Roth 5434 50cbebb9SMichael Roth########################################## 5435 9d9e1521SGerd Hoffmann# virgl renderer probe 5436 9d9e1521SGerd Hoffmann 5437 9d9e1521SGerd Hoffmannif test "$virglrenderer" != "no" ; then 5438 9d9e1521SGerd Hoffmann cat > $TMPC << EOF 5439 9d9e1521SGerd Hoffmann#include <virglrenderer.h> 5440 9d9e1521SGerd Hoffmannint main(void) { virgl_renderer_poll(); return 0; } 5441 9d9e1521SGerd HoffmannEOF 5442 9d9e1521SGerd Hoffmann virgl_cflags=$($pkg_config --cflags virglrenderer 2>/dev/null) 5443 9d9e1521SGerd Hoffmann virgl_libs=$($pkg_config --libs virglrenderer 2>/dev/null) 5444 47479c55SMarc-André Lureau virgl_version=$($pkg_config --modversion virglrenderer 2>/dev/null) 5445 9d9e1521SGerd Hoffmann if $pkg_config virglrenderer >/dev/null 2>&1 && \ 5446 9d9e1521SGerd Hoffmann compile_prog "$virgl_cflags" "$virgl_libs" ; then 5447 9d9e1521SGerd Hoffmann virglrenderer="yes" 5448 9d9e1521SGerd Hoffmann else 5449 9d9e1521SGerd Hoffmann if test "$virglrenderer" = "yes" ; then 5450 9d9e1521SGerd Hoffmann feature_not_found "virglrenderer" 5451 9d9e1521SGerd Hoffmann fi 5452 9d9e1521SGerd Hoffmann virglrenderer="no" 5453 9d9e1521SGerd Hoffmann fi 5454 9d9e1521SGerd Hoffmannfi 5455 9d9e1521SGerd Hoffmann 5456 9d9e1521SGerd Hoffmann########################################## 5457 8ca80760SRichard Henderson# capstone 5458 8ca80760SRichard Henderson 5459 e219c499SRichard Hendersoncase "$capstone" in 5460 e219c499SRichard Henderson "" | yes) 5461 8ca80760SRichard Henderson if $pkg_config capstone; then 5462 e219c499SRichard Henderson capstone=system 5463 e633a5c6SEric Blake elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 5464 e219c499SRichard Henderson capstone=git 5465 e219c499SRichard Henderson elif test -e "${source_path}/capstone/Makefile" ; then 5466 e219c499SRichard Henderson capstone=internal 5467 e219c499SRichard Henderson elif test -z "$capstone" ; then 5468 e219c499SRichard Henderson capstone=no 5469 e219c499SRichard Henderson else 5470 e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel or git submodule" 5471 e219c499SRichard Henderson fi 5472 e219c499SRichard Henderson ;; 5473 e219c499SRichard Henderson 5474 e219c499SRichard Henderson system) 5475 e219c499SRichard Henderson if ! $pkg_config capstone; then 5476 e219c499SRichard Henderson feature_not_found "capstone" "Install capstone devel" 5477 e219c499SRichard Henderson fi 5478 e219c499SRichard Henderson ;; 5479 e219c499SRichard Hendersonesac 5480 e219c499SRichard Henderson 5481 e219c499SRichard Hendersoncase "$capstone" in 5482 e219c499SRichard Henderson git | internal) 5483 e219c499SRichard Henderson if test "$capstone" = git; then 5484 e219c499SRichard Henderson git_submodules="${git_submodules} capstone" 5485 e219c499SRichard Henderson fi 5486 e219c499SRichard Henderson mkdir -p capstone 5487 25211446SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -I${source_path}/capstone/include" 5488 e219c499SRichard Henderson if test "$mingw32" = "yes"; then 5489 e219c499SRichard Henderson LIBCAPSTONE=capstone.lib 5490 e219c499SRichard Henderson else 5491 e219c499SRichard Henderson LIBCAPSTONE=libcapstone.a 5492 e219c499SRichard Henderson fi 5493 25211446SPaolo Bonzini libs_cpu="-L$PWD/capstone -lcapstone $libs_cpu" 5494 e219c499SRichard Henderson ;; 5495 e219c499SRichard Henderson 5496 e219c499SRichard Henderson system) 5497 8ca80760SRichard Henderson QEMU_CFLAGS="$QEMU_CFLAGS $($pkg_config --cflags capstone)" 5498 02f9135bSDaniel P. Berrangé libs_cpu="$($pkg_config --libs capstone) $libs_cpu" 5499 e219c499SRichard Henderson ;; 5500 e219c499SRichard Henderson 5501 e219c499SRichard Henderson no) 5502 e219c499SRichard Henderson ;; 5503 e219c499SRichard Henderson *) 5504 e219c499SRichard Henderson error_exit "Unknown state for capstone: $capstone" 5505 e219c499SRichard Henderson ;; 5506 e219c499SRichard Hendersonesac 5507 8ca80760SRichard Henderson 5508 8ca80760SRichard Henderson########################################## 5509 5f6b9e8fSBlue Swirl# check if we have fdatasync 5510 5f6b9e8fSBlue Swirl 5511 5f6b9e8fSBlue Swirlfdatasync=no 5512 5f6b9e8fSBlue Swirlcat > $TMPC << EOF 5513 5f6b9e8fSBlue Swirl#include <unistd.h> 5514 d1722a27SAlexandre Raymondint main(void) { 5515 d1722a27SAlexandre Raymond#if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0 5516 d1722a27SAlexandre Raymondreturn fdatasync(0); 5517 d1722a27SAlexandre Raymond#else 5518 e172fe11SStefan Weil#error Not supported 5519 d1722a27SAlexandre Raymond#endif 5520 d1722a27SAlexandre Raymond} 5521 5f6b9e8fSBlue SwirlEOF 5522 5f6b9e8fSBlue Swirlif compile_prog "" "" ; then 5523 5f6b9e8fSBlue Swirl fdatasync=yes 5524 5f6b9e8fSBlue Swirlfi 5525 5f6b9e8fSBlue Swirl 5526 94a420b1SStefan Hajnoczi########################################## 5527 e78815a5SAndreas Färber# check if we have madvise 5528 e78815a5SAndreas Färber 5529 e78815a5SAndreas Färbermadvise=no 5530 e78815a5SAndreas Färbercat > $TMPC << EOF 5531 e78815a5SAndreas Färber#include <sys/types.h> 5532 e78815a5SAndreas Färber#include <sys/mman.h> 5533 832ce9c2SScott Wood#include <stddef.h> 5534 e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); } 5535 e78815a5SAndreas FärberEOF 5536 e78815a5SAndreas Färberif compile_prog "" "" ; then 5537 e78815a5SAndreas Färber madvise=yes 5538 e78815a5SAndreas Färberfi 5539 e78815a5SAndreas Färber 5540 e78815a5SAndreas Färber########################################## 5541 e78815a5SAndreas Färber# check if we have posix_madvise 5542 e78815a5SAndreas Färber 5543 e78815a5SAndreas Färberposix_madvise=no 5544 e78815a5SAndreas Färbercat > $TMPC << EOF 5545 e78815a5SAndreas Färber#include <sys/mman.h> 5546 832ce9c2SScott Wood#include <stddef.h> 5547 e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); } 5548 e78815a5SAndreas FärberEOF 5549 e78815a5SAndreas Färberif compile_prog "" "" ; then 5550 e78815a5SAndreas Färber posix_madvise=yes 5551 e78815a5SAndreas Färberfi 5552 e78815a5SAndreas Färber 5553 e78815a5SAndreas Färber########################################## 5554 9bc5a719SAndreas Gustafsson# check if we have posix_memalign() 5555 9bc5a719SAndreas Gustafsson 5556 9bc5a719SAndreas Gustafssonposix_memalign=no 5557 9bc5a719SAndreas Gustafssoncat > $TMPC << EOF 5558 9bc5a719SAndreas Gustafsson#include <stdlib.h> 5559 9bc5a719SAndreas Gustafssonint main(void) { 5560 9bc5a719SAndreas Gustafsson void *p; 5561 9bc5a719SAndreas Gustafsson return posix_memalign(&p, 8, 8); 5562 9bc5a719SAndreas Gustafsson} 5563 9bc5a719SAndreas GustafssonEOF 5564 9bc5a719SAndreas Gustafssonif compile_prog "" "" ; then 5565 9bc5a719SAndreas Gustafsson posix_memalign=yes 5566 9bc5a719SAndreas Gustafssonfi 5567 9bc5a719SAndreas Gustafsson 5568 9bc5a719SAndreas Gustafsson########################################## 5569 0a852417SPaul Durrant# check if we have posix_syslog 5570 0a852417SPaul Durrant 5571 0a852417SPaul Durrantposix_syslog=no 5572 0a852417SPaul Durrantcat > $TMPC << EOF 5573 0a852417SPaul Durrant#include <syslog.h> 5574 0a852417SPaul Durrantint main(void) { openlog("qemu", LOG_PID, LOG_DAEMON); syslog(LOG_INFO, "configure"); return 0; } 5575 0a852417SPaul DurrantEOF 5576 0a852417SPaul Durrantif compile_prog "" "" ; then 5577 0a852417SPaul Durrant posix_syslog=yes 5578 0a852417SPaul Durrantfi 5579 0a852417SPaul Durrant 5580 0a852417SPaul Durrant########################################## 5581 401bc051SPeter Maydell# check if we have sem_timedwait 5582 401bc051SPeter Maydell 5583 401bc051SPeter Maydellsem_timedwait=no 5584 401bc051SPeter Maydellcat > $TMPC << EOF 5585 401bc051SPeter Maydell#include <semaphore.h> 5586 811294b7SDaniel P. Berrangéint main(void) { sem_t s; struct timespec t = {0}; return sem_timedwait(&s, &t); } 5587 401bc051SPeter MaydellEOF 5588 401bc051SPeter Maydellif compile_prog "" "" ; then 5589 401bc051SPeter Maydell sem_timedwait=yes 5590 401bc051SPeter Maydellfi 5591 401bc051SPeter Maydell 5592 401bc051SPeter Maydell########################################## 5593 5c99fa37SKeno Fischer# check if we have strchrnul 5594 5c99fa37SKeno Fischer 5595 5c99fa37SKeno Fischerstrchrnul=no 5596 5c99fa37SKeno Fischercat > $TMPC << EOF 5597 5c99fa37SKeno Fischer#include <string.h> 5598 5c99fa37SKeno Fischerint main(void); 5599 5c99fa37SKeno Fischer// Use a haystack that the compiler shouldn't be able to constant fold 5600 5c99fa37SKeno Fischerchar *haystack = (char*)&main; 5601 5c99fa37SKeno Fischerint main(void) { return strchrnul(haystack, 'x') != &haystack[6]; } 5602 5c99fa37SKeno FischerEOF 5603 5c99fa37SKeno Fischerif compile_prog "" "" ; then 5604 5c99fa37SKeno Fischer strchrnul=yes 5605 5c99fa37SKeno Fischerfi 5606 5c99fa37SKeno Fischer 5607 8a792b03SJiufei Xue######################################### 5608 8a792b03SJiufei Xue# check if we have st_atim 5609 8a792b03SJiufei Xue 5610 8a792b03SJiufei Xuest_atim=no 5611 8a792b03SJiufei Xuecat > $TMPC << EOF 5612 8a792b03SJiufei Xue#include <sys/stat.h> 5613 8a792b03SJiufei Xue#include <stddef.h> 5614 8a792b03SJiufei Xueint main(void) { return offsetof(struct stat, st_atim); } 5615 8a792b03SJiufei XueEOF 5616 8a792b03SJiufei Xueif compile_prog "" "" ; then 5617 8a792b03SJiufei Xue st_atim=yes 5618 8a792b03SJiufei Xuefi 5619 8a792b03SJiufei Xue 5620 5c99fa37SKeno Fischer########################################## 5621 94a420b1SStefan Hajnoczi# check if trace backend exists 5622 94a420b1SStefan Hajnoczi 5623 5b808275SLluís Vilanova$python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null 5624 94a420b1SStefan Hajnocziif test "$?" -ne 0 ; then 5625 5b808275SLluís Vilanova error_exit "invalid trace backends" \ 5626 5b808275SLluís Vilanova "Please choose supported trace backends." 5627 94a420b1SStefan Hajnoczifi 5628 94a420b1SStefan Hajnoczi 5629 7e24e92aSStefan Hajnoczi########################################## 5630 7e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present 5631 5b808275SLluís Vilanovaif have_backend "ust"; then 5632 7e24e92aSStefan Hajnoczi cat > $TMPC << EOF 5633 bf15f63cSMohamad Gebai#include <lttng/tracepoint.h> 5634 7e24e92aSStefan Hajnocziint main(void) { return 0; } 5635 7e24e92aSStefan HajnocziEOF 5636 c79ed23dSFrancis Deslauriers if compile_prog "" "-Wl,--no-as-needed -ldl" ; then 5637 bf15f63cSMohamad Gebai if $pkg_config lttng-ust --exists; then 5638 89138857SStefan Weil lttng_ust_libs=$($pkg_config --libs lttng-ust) 5639 7e24e92aSStefan Hajnoczi else 5640 c79ed23dSFrancis Deslauriers lttng_ust_libs="-llttng-ust -ldl" 5641 bf15f63cSMohamad Gebai fi 5642 bf15f63cSMohamad Gebai if $pkg_config liburcu-bp --exists; then 5643 89138857SStefan Weil urcu_bp_libs=$($pkg_config --libs liburcu-bp) 5644 bf15f63cSMohamad Gebai else 5645 bf15f63cSMohamad Gebai urcu_bp_libs="-lurcu-bp" 5646 bf15f63cSMohamad Gebai fi 5647 bf15f63cSMohamad Gebai 5648 bf15f63cSMohamad Gebai LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS" 5649 bf15f63cSMohamad Gebai else 5650 bf15f63cSMohamad Gebai error_exit "Trace backend 'ust' missing lttng-ust header files" 5651 7e24e92aSStefan Hajnoczi fi 5652 7e24e92aSStefan Hajnoczifi 5653 b3d08c02SDaniel P. Berrange 5654 b3d08c02SDaniel P. Berrange########################################## 5655 b3d08c02SDaniel P. Berrange# For 'dtrace' backend, test if 'dtrace' command is present 5656 5b808275SLluís Vilanovaif have_backend "dtrace"; then 5657 b3d08c02SDaniel P. Berrange if ! has 'dtrace' ; then 5658 76ad07a4SPeter Maydell error_exit "dtrace command is not found in PATH $PATH" 5659 b3d08c02SDaniel P. Berrange fi 5660 c276b17dSDaniel P. Berrange trace_backend_stap="no" 5661 c276b17dSDaniel P. Berrange if has 'stap' ; then 5662 c276b17dSDaniel P. Berrange trace_backend_stap="yes" 5663 c276b17dSDaniel P. Berrange fi 5664 b3d08c02SDaniel P. Berrangefi 5665 b3d08c02SDaniel P. Berrange 5666 7e24e92aSStefan Hajnoczi########################################## 5667 519175a2SAlex Barcelo# check and set a backend for coroutine 5668 d0e2fce5SAneesh Kumar K.V 5669 7c2acc70SPeter Maydell# We prefer ucontext, but it's not always possible. The fallback 5670 33c53c54SDaniel P. Berrange# is sigcontext. On Windows the only valid backend is the Windows 5671 33c53c54SDaniel P. Berrange# specific one. 5672 7c2acc70SPeter Maydell 5673 7c2acc70SPeter Maydellucontext_works=no 5674 d0e2fce5SAneesh Kumar K.Vif test "$darwin" != "yes"; then 5675 d0e2fce5SAneesh Kumar K.V cat > $TMPC << EOF 5676 d0e2fce5SAneesh Kumar K.V#include <ucontext.h> 5677 cdf84806SPeter Maydell#ifdef __stub_makecontext 5678 cdf84806SPeter Maydell#error Ignoring glibc stub makecontext which will always fail 5679 cdf84806SPeter Maydell#endif 5680 75cafad7SStefan Weilint main(void) { makecontext(0, 0, 0); return 0; } 5681 d0e2fce5SAneesh Kumar K.VEOF 5682 d0e2fce5SAneesh Kumar K.V if compile_prog "" "" ; then 5683 7c2acc70SPeter Maydell ucontext_works=yes 5684 d0e2fce5SAneesh Kumar K.V fi 5685 519175a2SAlex Barcelofi 5686 7c2acc70SPeter Maydell 5687 7c2acc70SPeter Maydellif test "$coroutine" = ""; then 5688 7c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 5689 7c2acc70SPeter Maydell coroutine=win32 5690 7c2acc70SPeter Maydell elif test "$ucontext_works" = "yes"; then 5691 7c2acc70SPeter Maydell coroutine=ucontext 5692 519175a2SAlex Barcelo else 5693 7c2acc70SPeter Maydell coroutine=sigaltstack 5694 7c2acc70SPeter Maydell fi 5695 7c2acc70SPeter Maydellelse 5696 7c2acc70SPeter Maydell case $coroutine in 5697 7c2acc70SPeter Maydell windows) 5698 7c2acc70SPeter Maydell if test "$mingw32" != "yes"; then 5699 7c2acc70SPeter Maydell error_exit "'windows' coroutine backend only valid for Windows" 5700 7c2acc70SPeter Maydell fi 5701 7c2acc70SPeter Maydell # Unfortunately the user visible backend name doesn't match the 5702 7c2acc70SPeter Maydell # coroutine-*.c filename for this case, so we have to adjust it here. 5703 7c2acc70SPeter Maydell coroutine=win32 5704 7c2acc70SPeter Maydell ;; 5705 7c2acc70SPeter Maydell ucontext) 5706 7c2acc70SPeter Maydell if test "$ucontext_works" != "yes"; then 5707 7c2acc70SPeter Maydell feature_not_found "ucontext" 5708 7c2acc70SPeter Maydell fi 5709 7c2acc70SPeter Maydell ;; 5710 33c53c54SDaniel P. Berrange sigaltstack) 5711 7c2acc70SPeter Maydell if test "$mingw32" = "yes"; then 5712 7c2acc70SPeter Maydell error_exit "only the 'windows' coroutine backend is valid for Windows" 5713 7c2acc70SPeter Maydell fi 5714 7c2acc70SPeter Maydell ;; 5715 7c2acc70SPeter Maydell *) 5716 76ad07a4SPeter Maydell error_exit "unknown coroutine backend $coroutine" 5717 7c2acc70SPeter Maydell ;; 5718 7c2acc70SPeter Maydell esac 5719 d0e2fce5SAneesh Kumar K.Vfi 5720 d0e2fce5SAneesh Kumar K.V 5721 70c60c08SStefan Hajnocziif test "$coroutine_pool" = ""; then 5722 70c60c08SStefan Hajnoczi coroutine_pool=yes 5723 70c60c08SStefan Hajnoczifi 5724 70c60c08SStefan Hajnoczi 5725 7d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes"; then 5726 7d992e4dSPeter Lieven if test "$coroutine_pool" = "yes"; then 5727 7d992e4dSPeter Lieven echo "WARN: disabling coroutine pool for stack usage debugging" 5728 7d992e4dSPeter Lieven coroutine_pool=no 5729 7d992e4dSPeter Lieven fi 5730 7d992e4dSPeter Lievenfi 5731 7d992e4dSPeter Lieven 5732 1e4f6065SDaniele Buono################################################## 5733 1e4f6065SDaniele Buono# SafeStack 5734 1e4f6065SDaniele Buono 5735 1e4f6065SDaniele Buono 5736 1e4f6065SDaniele Buonoif test "$safe_stack" = "yes"; then 5737 1e4f6065SDaniele Buonocat > $TMPC << EOF 5738 1e4f6065SDaniele Buonoint main(int argc, char *argv[]) 5739 1e4f6065SDaniele Buono{ 5740 1e4f6065SDaniele Buono#if ! __has_feature(safe_stack) 5741 1e4f6065SDaniele Buono#error SafeStack Disabled 5742 1e4f6065SDaniele Buono#endif 5743 1e4f6065SDaniele Buono return 0; 5744 1e4f6065SDaniele Buono} 5745 1e4f6065SDaniele BuonoEOF 5746 1e4f6065SDaniele Buono flag="-fsanitize=safe-stack" 5747 1e4f6065SDaniele Buono # Check that safe-stack is supported and enabled. 5748 1e4f6065SDaniele Buono if compile_prog "-Werror $flag" "$flag"; then 5749 1e4f6065SDaniele Buono # Flag needed both at compilation and at linking 5750 1e4f6065SDaniele Buono QEMU_CFLAGS="$QEMU_CFLAGS $flag" 5751 1e4f6065SDaniele Buono QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 5752 1e4f6065SDaniele Buono else 5753 1e4f6065SDaniele Buono error_exit "SafeStack not supported by your compiler" 5754 1e4f6065SDaniele Buono fi 5755 1e4f6065SDaniele Buono if test "$coroutine" != "ucontext"; then 5756 1e4f6065SDaniele Buono error_exit "SafeStack is only supported by the coroutine backend ucontext" 5757 1e4f6065SDaniele Buono fi 5758 1e4f6065SDaniele Buonoelse 5759 1e4f6065SDaniele Buonocat > $TMPC << EOF 5760 1e4f6065SDaniele Buonoint main(int argc, char *argv[]) 5761 1e4f6065SDaniele Buono{ 5762 1e4f6065SDaniele Buono#if defined(__has_feature) 5763 1e4f6065SDaniele Buono#if __has_feature(safe_stack) 5764 1e4f6065SDaniele Buono#error SafeStack Enabled 5765 1e4f6065SDaniele Buono#endif 5766 1e4f6065SDaniele Buono#endif 5767 1e4f6065SDaniele Buono return 0; 5768 1e4f6065SDaniele Buono} 5769 1e4f6065SDaniele BuonoEOF 5770 1e4f6065SDaniele Buonoif test "$safe_stack" = "no"; then 5771 1e4f6065SDaniele Buono # Make sure that safe-stack is disabled 5772 1e4f6065SDaniele Buono if ! compile_prog "-Werror" ""; then 5773 1e4f6065SDaniele Buono # SafeStack was already enabled, try to explicitly remove the feature 5774 1e4f6065SDaniele Buono flag="-fno-sanitize=safe-stack" 5775 1e4f6065SDaniele Buono if ! compile_prog "-Werror $flag" "$flag"; then 5776 1e4f6065SDaniele Buono error_exit "Configure cannot disable SafeStack" 5777 1e4f6065SDaniele Buono fi 5778 1e4f6065SDaniele Buono QEMU_CFLAGS="$QEMU_CFLAGS $flag" 5779 1e4f6065SDaniele Buono QEMU_LDFLAGS="$QEMU_LDFLAGS $flag" 5780 1e4f6065SDaniele Buono fi 5781 1e4f6065SDaniele Buonoelse # "$safe_stack" = "" 5782 1e4f6065SDaniele Buono # Set safe_stack to yes or no based on pre-existing flags 5783 1e4f6065SDaniele Buono if compile_prog "-Werror" ""; then 5784 1e4f6065SDaniele Buono safe_stack="no" 5785 1e4f6065SDaniele Buono else 5786 1e4f6065SDaniele Buono safe_stack="yes" 5787 1e4f6065SDaniele Buono if test "$coroutine" != "ucontext"; then 5788 1e4f6065SDaniele Buono error_exit "SafeStack is only supported by the coroutine backend ucontext" 5789 1e4f6065SDaniele Buono fi 5790 1e4f6065SDaniele Buono fi 5791 1e4f6065SDaniele Buonofi 5792 1e4f6065SDaniele Buonofi 5793 7d992e4dSPeter Lieven 5794 d0e2fce5SAneesh Kumar K.V########################################## 5795 d2042378SAneesh Kumar K.V# check if we have open_by_handle_at 5796 d2042378SAneesh Kumar K.V 5797 4e1797f9SStefan Weilopen_by_handle_at=no 5798 d2042378SAneesh Kumar K.Vcat > $TMPC << EOF 5799 d2042378SAneesh Kumar K.V#include <fcntl.h> 5800 acc55ba8SStefan Weil#if !defined(AT_EMPTY_PATH) 5801 acc55ba8SStefan Weil# error missing definition 5802 acc55ba8SStefan Weil#else 5803 75cafad7SStefan Weilint main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); } 5804 acc55ba8SStefan Weil#endif 5805 d2042378SAneesh Kumar K.VEOF 5806 d2042378SAneesh Kumar K.Vif compile_prog "" "" ; then 5807 d2042378SAneesh Kumar K.V open_by_handle_at=yes 5808 d2042378SAneesh Kumar K.Vfi 5809 d2042378SAneesh Kumar K.V 5810 e06a765eSHarsh Prateek Bora######################################## 5811 e06a765eSHarsh Prateek Bora# check if we have linux/magic.h 5812 e06a765eSHarsh Prateek Bora 5813 e06a765eSHarsh Prateek Boralinux_magic_h=no 5814 e06a765eSHarsh Prateek Boracat > $TMPC << EOF 5815 e06a765eSHarsh Prateek Bora#include <linux/magic.h> 5816 e06a765eSHarsh Prateek Boraint main(void) { 5817 75cafad7SStefan Weil return 0; 5818 e06a765eSHarsh Prateek Bora} 5819 e06a765eSHarsh Prateek BoraEOF 5820 e06a765eSHarsh Prateek Boraif compile_prog "" "" ; then 5821 e06a765eSHarsh Prateek Bora linux_magic_h=yes 5822 e06a765eSHarsh Prateek Borafi 5823 e06a765eSHarsh Prateek Bora 5824 8ab1bf12SLuiz Capitulino######################################## 5825 541be927SChristian Borntraeger# check if we have valgrind/valgrind.h 5826 3f4349dcSKevin Wolf 5827 3f4349dcSKevin Wolfvalgrind_h=no 5828 3f4349dcSKevin Wolfcat > $TMPC << EOF 5829 3f4349dcSKevin Wolf#include <valgrind/valgrind.h> 5830 3f4349dcSKevin Wolfint main(void) { 5831 3f4349dcSKevin Wolf return 0; 5832 3f4349dcSKevin Wolf} 5833 3f4349dcSKevin WolfEOF 5834 3f4349dcSKevin Wolfif compile_prog "" "" ; then 5835 3f4349dcSKevin Wolf valgrind_h=yes 5836 3f4349dcSKevin Wolffi 5837 3f4349dcSKevin Wolf 5838 3f4349dcSKevin Wolf######################################## 5839 8ab1bf12SLuiz Capitulino# check if environ is declared 5840 8ab1bf12SLuiz Capitulino 5841 8ab1bf12SLuiz Capitulinohas_environ=no 5842 8ab1bf12SLuiz Capitulinocat > $TMPC << EOF 5843 8ab1bf12SLuiz Capitulino#include <unistd.h> 5844 8ab1bf12SLuiz Capitulinoint main(void) { 5845 c075a723SBlue Swirl environ = 0; 5846 8ab1bf12SLuiz Capitulino return 0; 5847 8ab1bf12SLuiz Capitulino} 5848 8ab1bf12SLuiz CapitulinoEOF 5849 8ab1bf12SLuiz Capitulinoif compile_prog "" "" ; then 5850 8ab1bf12SLuiz Capitulino has_environ=yes 5851 8ab1bf12SLuiz Capitulinofi 5852 8ab1bf12SLuiz Capitulino 5853 76a347e1SRichard Henderson######################################## 5854 76a347e1SRichard Henderson# check if cpuid.h is usable. 5855 76a347e1SRichard Henderson 5856 76a347e1SRichard Hendersoncat > $TMPC << EOF 5857 76a347e1SRichard Henderson#include <cpuid.h> 5858 76a347e1SRichard Hendersonint main(void) { 5859 774d566cSPeter Maydell unsigned a, b, c, d; 5860 774d566cSPeter Maydell int max = __get_cpuid_max(0, 0); 5861 774d566cSPeter Maydell 5862 774d566cSPeter Maydell if (max >= 1) { 5863 774d566cSPeter Maydell __cpuid(1, a, b, c, d); 5864 774d566cSPeter Maydell } 5865 774d566cSPeter Maydell 5866 774d566cSPeter Maydell if (max >= 7) { 5867 774d566cSPeter Maydell __cpuid_count(7, 0, a, b, c, d); 5868 774d566cSPeter Maydell } 5869 774d566cSPeter Maydell 5870 76a347e1SRichard Henderson return 0; 5871 76a347e1SRichard Henderson} 5872 76a347e1SRichard HendersonEOF 5873 76a347e1SRichard Hendersonif compile_prog "" "" ; then 5874 76a347e1SRichard Henderson cpuid_h=yes 5875 76a347e1SRichard Hendersonfi 5876 76a347e1SRichard Henderson 5877 5dd89908SRichard Henderson########################################## 5878 5dd89908SRichard Henderson# avx2 optimization requirement check 5879 5dd89908SRichard Henderson# 5880 5dd89908SRichard Henderson# There is no point enabling this if cpuid.h is not usable, 5881 5dd89908SRichard Henderson# since we won't be able to select the new routines. 5882 5dd89908SRichard Henderson 5883 e633a5c6SEric Blakeif test "$cpuid_h" = "yes" && test "$avx2_opt" != "no"; then 5884 5dd89908SRichard Henderson cat > $TMPC << EOF 5885 5dd89908SRichard Henderson#pragma GCC push_options 5886 5dd89908SRichard Henderson#pragma GCC target("avx2") 5887 5dd89908SRichard Henderson#include <cpuid.h> 5888 5dd89908SRichard Henderson#include <immintrin.h> 5889 5dd89908SRichard Hendersonstatic int bar(void *a) { 5890 5dd89908SRichard Henderson __m256i x = *(__m256i *)a; 5891 5dd89908SRichard Henderson return _mm256_testz_si256(x, x); 5892 5dd89908SRichard Henderson} 5893 5dd89908SRichard Hendersonint main(int argc, char *argv[]) { return bar(argv[0]); } 5894 5dd89908SRichard HendersonEOF 5895 5dd89908SRichard Henderson if compile_object "" ; then 5896 5dd89908SRichard Henderson avx2_opt="yes" 5897 86583a07SLiam Merwick else 5898 86583a07SLiam Merwick avx2_opt="no" 5899 5dd89908SRichard Henderson fi 5900 5dd89908SRichard Hendersonfi 5901 5dd89908SRichard Henderson 5902 6b8cd447SRobert Hoo########################################## 5903 6b8cd447SRobert Hoo# avx512f optimization requirement check 5904 6b8cd447SRobert Hoo# 5905 6b8cd447SRobert Hoo# There is no point enabling this if cpuid.h is not usable, 5906 6b8cd447SRobert Hoo# since we won't be able to select the new routines. 5907 6b8cd447SRobert Hoo# by default, it is turned off. 5908 6b8cd447SRobert Hoo# if user explicitly want to enable it, check environment 5909 6b8cd447SRobert Hoo 5910 6b8cd447SRobert Hooif test "$cpuid_h" = "yes" && test "$avx512f_opt" = "yes"; then 5911 6b8cd447SRobert Hoo cat > $TMPC << EOF 5912 6b8cd447SRobert Hoo#pragma GCC push_options 5913 6b8cd447SRobert Hoo#pragma GCC target("avx512f") 5914 6b8cd447SRobert Hoo#include <cpuid.h> 5915 6b8cd447SRobert Hoo#include <immintrin.h> 5916 6b8cd447SRobert Hoostatic int bar(void *a) { 5917 6b8cd447SRobert Hoo __m512i x = *(__m512i *)a; 5918 6b8cd447SRobert Hoo return _mm512_test_epi64_mask(x, x); 5919 6b8cd447SRobert Hoo} 5920 6b8cd447SRobert Hooint main(int argc, char *argv[]) 5921 6b8cd447SRobert Hoo{ 5922 6b8cd447SRobert Hoo return bar(argv[0]); 5923 6b8cd447SRobert Hoo} 5924 6b8cd447SRobert HooEOF 5925 6b8cd447SRobert Hoo if ! compile_object "" ; then 5926 6b8cd447SRobert Hoo avx512f_opt="no" 5927 6b8cd447SRobert Hoo fi 5928 6b8cd447SRobert Hooelse 5929 6b8cd447SRobert Hoo avx512f_opt="no" 5930 6b8cd447SRobert Hoofi 5931 6b8cd447SRobert Hoo 5932 f540166bSRichard Henderson######################################## 5933 f540166bSRichard Henderson# check if __[u]int128_t is usable. 5934 f540166bSRichard Henderson 5935 f540166bSRichard Hendersonint128=no 5936 f540166bSRichard Hendersoncat > $TMPC << EOF 5937 f540166bSRichard Henderson__int128_t a; 5938 f540166bSRichard Henderson__uint128_t b; 5939 f540166bSRichard Hendersonint main (void) { 5940 f540166bSRichard Henderson a = a + b; 5941 f540166bSRichard Henderson b = a * b; 5942 464e3671SPeter Maydell a = a * a; 5943 f540166bSRichard Henderson return 0; 5944 f540166bSRichard Henderson} 5945 f540166bSRichard HendersonEOF 5946 f540166bSRichard Hendersonif compile_prog "" "" ; then 5947 f540166bSRichard Henderson int128=yes 5948 f540166bSRichard Hendersonfi 5949 76a347e1SRichard Henderson 5950 7ebee43eSRichard Henderson######################################### 5951 7ebee43eSRichard Henderson# See if 128-bit atomic operations are supported. 5952 7ebee43eSRichard Henderson 5953 7ebee43eSRichard Hendersonatomic128=no 5954 7ebee43eSRichard Hendersonif test "$int128" = "yes"; then 5955 7ebee43eSRichard Henderson cat > $TMPC << EOF 5956 7ebee43eSRichard Hendersonint main(void) 5957 7ebee43eSRichard Henderson{ 5958 7ebee43eSRichard Henderson unsigned __int128 x = 0, y = 0; 5959 7ebee43eSRichard Henderson y = __atomic_load_16(&x, 0); 5960 7ebee43eSRichard Henderson __atomic_store_16(&x, y, 0); 5961 7ebee43eSRichard Henderson __atomic_compare_exchange_16(&x, &y, x, 0, 0, 0); 5962 7ebee43eSRichard Henderson return 0; 5963 7ebee43eSRichard Henderson} 5964 7ebee43eSRichard HendersonEOF 5965 7ebee43eSRichard Henderson if compile_prog "" "" ; then 5966 7ebee43eSRichard Henderson atomic128=yes 5967 7ebee43eSRichard Henderson fi 5968 7ebee43eSRichard Hendersonfi 5969 7ebee43eSRichard Henderson 5970 e6cd4bb5SRichard Hendersoncmpxchg128=no 5971 e633a5c6SEric Blakeif test "$int128" = yes && test "$atomic128" = no; then 5972 e6cd4bb5SRichard Henderson cat > $TMPC << EOF 5973 e6cd4bb5SRichard Hendersonint main(void) 5974 e6cd4bb5SRichard Henderson{ 5975 e6cd4bb5SRichard Henderson unsigned __int128 x = 0, y = 0; 5976 e6cd4bb5SRichard Henderson __sync_val_compare_and_swap_16(&x, y, x); 5977 e6cd4bb5SRichard Henderson return 0; 5978 e6cd4bb5SRichard Henderson} 5979 e6cd4bb5SRichard HendersonEOF 5980 e6cd4bb5SRichard Henderson if compile_prog "" "" ; then 5981 e6cd4bb5SRichard Henderson cmpxchg128=yes 5982 e6cd4bb5SRichard Henderson fi 5983 e6cd4bb5SRichard Hendersonfi 5984 e6cd4bb5SRichard Henderson 5985 df79b996SRichard Henderson######################################### 5986 df79b996SRichard Henderson# See if 64-bit atomic operations are supported. 5987 df79b996SRichard Henderson# Note that without __atomic builtins, we can only 5988 df79b996SRichard Henderson# assume atomic loads/stores max at pointer size. 5989 df79b996SRichard Henderson 5990 df79b996SRichard Hendersoncat > $TMPC << EOF 5991 df79b996SRichard Henderson#include <stdint.h> 5992 df79b996SRichard Hendersonint main(void) 5993 df79b996SRichard Henderson{ 5994 df79b996SRichard Henderson uint64_t x = 0, y = 0; 5995 df79b996SRichard Henderson#ifdef __ATOMIC_RELAXED 5996 df79b996SRichard Henderson y = __atomic_load_8(&x, 0); 5997 df79b996SRichard Henderson __atomic_store_8(&x, y, 0); 5998 df79b996SRichard Henderson __atomic_compare_exchange_8(&x, &y, x, 0, 0, 0); 5999 df79b996SRichard Henderson __atomic_exchange_8(&x, y, 0); 6000 df79b996SRichard Henderson __atomic_fetch_add_8(&x, y, 0); 6001 df79b996SRichard Henderson#else 6002 df79b996SRichard Henderson typedef char is_host64[sizeof(void *) >= sizeof(uint64_t) ? 1 : -1]; 6003 df79b996SRichard Henderson __sync_lock_test_and_set(&x, y); 6004 df79b996SRichard Henderson __sync_val_compare_and_swap(&x, y, 0); 6005 df79b996SRichard Henderson __sync_fetch_and_add(&x, y); 6006 df79b996SRichard Henderson#endif 6007 df79b996SRichard Henderson return 0; 6008 df79b996SRichard Henderson} 6009 df79b996SRichard HendersonEOF 6010 df79b996SRichard Hendersonif compile_prog "" "" ; then 6011 df79b996SRichard Henderson atomic64=yes 6012 df79b996SRichard Hendersonfi 6013 df79b996SRichard Henderson 6014 26fffe29SEmilio G. Cota######################################### 6015 26fffe29SEmilio G. Cota# See if --dynamic-list is supported by the linker 6016 26fffe29SEmilio G. Cotald_dynamic_list="no" 6017 26fffe29SEmilio G. Cotaif test "$static" = "no" ; then 6018 26fffe29SEmilio G. Cota cat > $TMPTXT <<EOF 6019 26fffe29SEmilio G. Cota{ 6020 26fffe29SEmilio G. Cota foo; 6021 26fffe29SEmilio G. Cota}; 6022 26fffe29SEmilio G. CotaEOF 6023 26fffe29SEmilio G. Cota 6024 26fffe29SEmilio G. Cota cat > $TMPC <<EOF 6025 26fffe29SEmilio G. Cota#include <stdio.h> 6026 26fffe29SEmilio G. Cotavoid foo(void); 6027 26fffe29SEmilio G. Cota 6028 26fffe29SEmilio G. Cotavoid foo(void) 6029 26fffe29SEmilio G. Cota{ 6030 26fffe29SEmilio G. Cota printf("foo\n"); 6031 26fffe29SEmilio G. Cota} 6032 26fffe29SEmilio G. Cota 6033 26fffe29SEmilio G. Cotaint main(void) 6034 26fffe29SEmilio G. Cota{ 6035 26fffe29SEmilio G. Cota foo(); 6036 26fffe29SEmilio G. Cota return 0; 6037 26fffe29SEmilio G. Cota} 6038 26fffe29SEmilio G. CotaEOF 6039 26fffe29SEmilio G. Cota 6040 26fffe29SEmilio G. Cota if compile_prog "" "-Wl,--dynamic-list=$TMPTXT" ; then 6041 26fffe29SEmilio G. Cota ld_dynamic_list="yes" 6042 26fffe29SEmilio G. Cota fi 6043 26fffe29SEmilio G. Cotafi 6044 26fffe29SEmilio G. Cota 6045 26fffe29SEmilio G. Cota######################################### 6046 26fffe29SEmilio G. Cota# See if -exported_symbols_list is supported by the linker 6047 26fffe29SEmilio G. Cota 6048 26fffe29SEmilio G. Cotald_exported_symbols_list="no" 6049 26fffe29SEmilio G. Cotaif test "$static" = "no" ; then 6050 26fffe29SEmilio G. Cota cat > $TMPTXT <<EOF 6051 26fffe29SEmilio G. Cota _foo 6052 26fffe29SEmilio G. CotaEOF 6053 26fffe29SEmilio G. Cota 6054 26fffe29SEmilio G. Cota if compile_prog "" "-Wl,-exported_symbols_list,$TMPTXT" ; then 6055 26fffe29SEmilio G. Cota ld_exported_symbols_list="yes" 6056 26fffe29SEmilio G. Cota fi 6057 26fffe29SEmilio G. Cotafi 6058 26fffe29SEmilio G. Cota 6059 26fffe29SEmilio G. Cotaif test "$plugins" = "yes" && 6060 26fffe29SEmilio G. Cota test "$ld_dynamic_list" = "no" && 6061 26fffe29SEmilio G. Cota test "$ld_exported_symbols_list" = "no" ; then 6062 26fffe29SEmilio G. Cota error_exit \ 6063 26fffe29SEmilio G. Cota "Plugin support requires dynamic linking and specifying a set of symbols " \ 6064 26fffe29SEmilio G. Cota "that are exported to plugins. Unfortunately your linker doesn't " \ 6065 26fffe29SEmilio G. Cota "support the flag (--dynamic-list or -exported_symbols_list) used " \ 6066 26fffe29SEmilio G. Cota "for this purpose. You can't build with --static." 6067 26fffe29SEmilio G. Cotafi 6068 26fffe29SEmilio G. Cota 6069 1e6e9acaSRichard Henderson######################################## 6070 db8aaae8SRichard Henderson# See if __attribute__((alias)) is supported. 6071 db8aaae8SRichard Henderson# This false for Xcode 9, but has been remedied for Xcode 10. 6072 db8aaae8SRichard Henderson# Unfortunately, travis uses Xcode 9 by default. 6073 db8aaae8SRichard Henderson 6074 db8aaae8SRichard Hendersonattralias=no 6075 db8aaae8SRichard Hendersoncat > $TMPC << EOF 6076 db8aaae8SRichard Hendersonint x = 1; 6077 db8aaae8SRichard Hendersonextern const int y __attribute__((alias("x"))); 6078 db8aaae8SRichard Hendersonint main(void) { return 0; } 6079 db8aaae8SRichard HendersonEOF 6080 db8aaae8SRichard Hendersonif compile_prog "" "" ; then 6081 db8aaae8SRichard Henderson attralias=yes 6082 db8aaae8SRichard Hendersonfi 6083 db8aaae8SRichard Henderson 6084 db8aaae8SRichard Henderson######################################## 6085 1e6e9acaSRichard Henderson# check if getauxval is available. 6086 1e6e9acaSRichard Henderson 6087 1e6e9acaSRichard Hendersongetauxval=no 6088 1e6e9acaSRichard Hendersoncat > $TMPC << EOF 6089 1e6e9acaSRichard Henderson#include <sys/auxv.h> 6090 1e6e9acaSRichard Hendersonint main(void) { 6091 1e6e9acaSRichard Henderson return getauxval(AT_HWCAP) == 0; 6092 1e6e9acaSRichard Henderson} 6093 1e6e9acaSRichard HendersonEOF 6094 1e6e9acaSRichard Hendersonif compile_prog "" "" ; then 6095 1e6e9acaSRichard Henderson getauxval=yes 6096 1e6e9acaSRichard Hendersonfi 6097 1e6e9acaSRichard Henderson 6098 fd0e6053SJohn Snow######################################## 6099 fd0e6053SJohn Snow# check if ccache is interfering with 6100 fd0e6053SJohn Snow# semantic analysis of macros 6101 fd0e6053SJohn Snow 6102 5e4dfd3dSJohn Snowunset CCACHE_CPP2 6103 fd0e6053SJohn Snowccache_cpp2=no 6104 fd0e6053SJohn Snowcat > $TMPC << EOF 6105 fd0e6053SJohn Snowstatic const int Z = 1; 6106 fd0e6053SJohn Snow#define fn() ({ Z; }) 6107 fd0e6053SJohn Snow#define TAUT(X) ((X) == Z) 6108 fd0e6053SJohn Snow#define PAREN(X, Y) (X == Y) 6109 fd0e6053SJohn Snow#define ID(X) (X) 6110 fd0e6053SJohn Snowint main(int argc, char *argv[]) 6111 fd0e6053SJohn Snow{ 6112 fd0e6053SJohn Snow int x = 0, y = 0; 6113 fd0e6053SJohn Snow x = ID(x); 6114 fd0e6053SJohn Snow x = fn(); 6115 fd0e6053SJohn Snow fn(); 6116 fd0e6053SJohn Snow if (PAREN(x, y)) return 0; 6117 fd0e6053SJohn Snow if (TAUT(Z)) return 0; 6118 fd0e6053SJohn Snow return 0; 6119 fd0e6053SJohn Snow} 6120 fd0e6053SJohn SnowEOF 6121 fd0e6053SJohn Snow 6122 fd0e6053SJohn Snowif ! compile_object "-Werror"; then 6123 fd0e6053SJohn Snow ccache_cpp2=yes 6124 fd0e6053SJohn Snowfi 6125 fd0e6053SJohn Snow 6126 b553a042SJohn Snow################################################# 6127 b553a042SJohn Snow# clang does not support glibc + FORTIFY_SOURCE. 6128 b553a042SJohn Snow 6129 b553a042SJohn Snowif test "$fortify_source" != "no"; then 6130 b553a042SJohn Snow if echo | $cc -dM -E - | grep __clang__ > /dev/null 2>&1 ; then 6131 b553a042SJohn Snow fortify_source="no"; 6132 e189091fSPeter Maydell elif test -n "$cxx" && has $cxx && 6133 cfcc7c14SJohn Snow echo | $cxx -dM -E - | grep __clang__ >/dev/null 2>&1 ; then 6134 b553a042SJohn Snow fortify_source="no"; 6135 b553a042SJohn Snow else 6136 b553a042SJohn Snow fortify_source="yes" 6137 b553a042SJohn Snow fi 6138 b553a042SJohn Snowfi 6139 b553a042SJohn Snow 6140 1efad060SFam Zheng############################################### 6141 1efad060SFam Zheng# Check if copy_file_range is provided by glibc 6142 1efad060SFam Zhenghave_copy_file_range=no 6143 1efad060SFam Zhengcat > $TMPC << EOF 6144 1efad060SFam Zheng#include <unistd.h> 6145 1efad060SFam Zhengint main(void) { 6146 1efad060SFam Zheng copy_file_range(0, NULL, 0, NULL, 0, 0); 6147 1efad060SFam Zheng return 0; 6148 1efad060SFam Zheng} 6149 1efad060SFam ZhengEOF 6150 1efad060SFam Zhengif compile_prog "" "" ; then 6151 1efad060SFam Zheng have_copy_file_range=yes 6152 1efad060SFam Zhengfi 6153 1efad060SFam Zheng 6154 d2042378SAneesh Kumar K.V########################################## 6155 277abf15SJan Vesely# check if struct fsxattr is available via linux/fs.h 6156 277abf15SJan Vesely 6157 277abf15SJan Veselyhave_fsxattr=no 6158 277abf15SJan Veselycat > $TMPC << EOF 6159 277abf15SJan Vesely#include <linux/fs.h> 6160 277abf15SJan Veselystruct fsxattr foo; 6161 277abf15SJan Veselyint main(void) { 6162 277abf15SJan Vesely return 0; 6163 277abf15SJan Vesely} 6164 277abf15SJan VeselyEOF 6165 277abf15SJan Veselyif compile_prog "" "" ; then 6166 277abf15SJan Vesely have_fsxattr=yes 6167 277abf15SJan Veselyfi 6168 277abf15SJan Vesely 6169 b66e10e4SPeter Maydell########################################## 6170 a40161cbSPaolo Bonzini# check for usable membarrier system call 6171 a40161cbSPaolo Bonziniif test "$membarrier" = "yes"; then 6172 a40161cbSPaolo Bonzini have_membarrier=no 6173 a40161cbSPaolo Bonzini if test "$mingw32" = "yes" ; then 6174 a40161cbSPaolo Bonzini have_membarrier=yes 6175 a40161cbSPaolo Bonzini elif test "$linux" = "yes" ; then 6176 a40161cbSPaolo Bonzini cat > $TMPC << EOF 6177 a40161cbSPaolo Bonzini #include <linux/membarrier.h> 6178 a40161cbSPaolo Bonzini #include <sys/syscall.h> 6179 a40161cbSPaolo Bonzini #include <unistd.h> 6180 a40161cbSPaolo Bonzini #include <stdlib.h> 6181 a40161cbSPaolo Bonzini int main(void) { 6182 a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_QUERY, 0); 6183 a40161cbSPaolo Bonzini syscall(__NR_membarrier, MEMBARRIER_CMD_SHARED, 0); 6184 a40161cbSPaolo Bonzini exit(0); 6185 a40161cbSPaolo Bonzini } 6186 a40161cbSPaolo BonziniEOF 6187 a40161cbSPaolo Bonzini if compile_prog "" "" ; then 6188 a40161cbSPaolo Bonzini have_membarrier=yes 6189 a40161cbSPaolo Bonzini fi 6190 a40161cbSPaolo Bonzini fi 6191 a40161cbSPaolo Bonzini if test "$have_membarrier" = "no"; then 6192 a40161cbSPaolo Bonzini feature_not_found "membarrier" "membarrier system call not available" 6193 a40161cbSPaolo Bonzini fi 6194 a40161cbSPaolo Bonzinielse 6195 a40161cbSPaolo Bonzini # Do not enable it by default even for Mingw32, because it doesn't 6196 a40161cbSPaolo Bonzini # work on Wine. 6197 a40161cbSPaolo Bonzini membarrier=no 6198 a40161cbSPaolo Bonzinifi 6199 a40161cbSPaolo Bonzini 6200 a40161cbSPaolo Bonzini########################################## 6201 b66e10e4SPeter Maydell# check if rtnetlink.h exists and is useful 6202 575b22b1SLaurent Vivierhave_rtnetlink=no 6203 575b22b1SLaurent Viviercat > $TMPC << EOF 6204 575b22b1SLaurent Vivier#include <linux/rtnetlink.h> 6205 575b22b1SLaurent Vivierint main(void) { 6206 575b22b1SLaurent Vivier return IFLA_PROTO_DOWN; 6207 575b22b1SLaurent Vivier} 6208 575b22b1SLaurent VivierEOF 6209 575b22b1SLaurent Vivierif compile_prog "" "" ; then 6210 575b22b1SLaurent Vivier have_rtnetlink=yes 6211 575b22b1SLaurent Vivierfi 6212 575b22b1SLaurent Vivier 6213 6a02c806SStefan Hajnoczi########################################## 6214 6a02c806SStefan Hajnoczi# check for usable AF_VSOCK environment 6215 6a02c806SStefan Hajnoczihave_af_vsock=no 6216 6a02c806SStefan Hajnoczicat > $TMPC << EOF 6217 6a02c806SStefan Hajnoczi#include <errno.h> 6218 6a02c806SStefan Hajnoczi#include <sys/types.h> 6219 6a02c806SStefan Hajnoczi#include <sys/socket.h> 6220 6a02c806SStefan Hajnoczi#if !defined(AF_VSOCK) 6221 6a02c806SStefan Hajnoczi# error missing AF_VSOCK flag 6222 6a02c806SStefan Hajnoczi#endif 6223 6a02c806SStefan Hajnoczi#include <linux/vm_sockets.h> 6224 6a02c806SStefan Hajnocziint main(void) { 6225 6a02c806SStefan Hajnoczi int sock, ret; 6226 6a02c806SStefan Hajnoczi struct sockaddr_vm svm; 6227 6a02c806SStefan Hajnoczi socklen_t len = sizeof(svm); 6228 6a02c806SStefan Hajnoczi sock = socket(AF_VSOCK, SOCK_STREAM, 0); 6229 6a02c806SStefan Hajnoczi ret = getpeername(sock, (struct sockaddr *)&svm, &len); 6230 6a02c806SStefan Hajnoczi if ((ret == -1) && (errno == ENOTCONN)) { 6231 6a02c806SStefan Hajnoczi return 0; 6232 6a02c806SStefan Hajnoczi } 6233 6a02c806SStefan Hajnoczi return -1; 6234 6a02c806SStefan Hajnoczi} 6235 6a02c806SStefan HajnocziEOF 6236 6a02c806SStefan Hajnocziif compile_prog "" "" ; then 6237 6a02c806SStefan Hajnoczi have_af_vsock=yes 6238 6a02c806SStefan Hajnoczifi 6239 6a02c806SStefan Hajnoczi 6240 f0d92b56SLongpeng(Mike)########################################## 6241 f0d92b56SLongpeng(Mike)# check for usable AF_ALG environment 6242 4f67366eSThomas Huthhave_afalg=no 6243 f0d92b56SLongpeng(Mike)cat > $TMPC << EOF 6244 f0d92b56SLongpeng(Mike)#include <errno.h> 6245 f0d92b56SLongpeng(Mike)#include <sys/types.h> 6246 f0d92b56SLongpeng(Mike)#include <sys/socket.h> 6247 f0d92b56SLongpeng(Mike)#include <linux/if_alg.h> 6248 f0d92b56SLongpeng(Mike)int main(void) { 6249 f0d92b56SLongpeng(Mike) int sock; 6250 f0d92b56SLongpeng(Mike) sock = socket(AF_ALG, SOCK_SEQPACKET, 0); 6251 f0d92b56SLongpeng(Mike) return sock; 6252 f0d92b56SLongpeng(Mike)} 6253 f0d92b56SLongpeng(Mike)EOF 6254 f0d92b56SLongpeng(Mike)if compile_prog "" "" ; then 6255 f0d92b56SLongpeng(Mike) have_afalg=yes 6256 f0d92b56SLongpeng(Mike)fi 6257 f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" 6258 f0d92b56SLongpeng(Mike)then 6259 f0d92b56SLongpeng(Mike) if test "$have_afalg" != "yes" 6260 f0d92b56SLongpeng(Mike) then 6261 f0d92b56SLongpeng(Mike) error_exit "AF_ALG requested but could not be detected" 6262 f0d92b56SLongpeng(Mike) fi 6263 f0d92b56SLongpeng(Mike)fi 6264 f0d92b56SLongpeng(Mike) 6265 f0d92b56SLongpeng(Mike) 6266 6969ec6cSJames Clarke################################################# 6267 c97d6d2cSSergio Andres Gomez Del Real# Check to see if we have the Hypervisor framework 6268 d2d08522SPeter Maydellif [ "$darwin" = "yes" ] ; then 6269 c97d6d2cSSergio Andres Gomez Del Real cat > $TMPC << EOF 6270 c97d6d2cSSergio Andres Gomez Del Real#include <Hypervisor/hv.h> 6271 c97d6d2cSSergio Andres Gomez Del Realint main() { return 0;} 6272 c97d6d2cSSergio Andres Gomez Del RealEOF 6273 c97d6d2cSSergio Andres Gomez Del Real if ! compile_object ""; then 6274 c97d6d2cSSergio Andres Gomez Del Real hvf='no' 6275 c97d6d2cSSergio Andres Gomez Del Real else 6276 c97d6d2cSSergio Andres Gomez Del Real hvf='yes' 6277 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-framework Hypervisor $QEMU_LDFLAGS" 6278 c97d6d2cSSergio Andres Gomez Del Real fi 6279 c97d6d2cSSergio Andres Gomez Del Realfi 6280 c97d6d2cSSergio Andres Gomez Del Real 6281 c97d6d2cSSergio Andres Gomez Del Real################################################# 6282 6969ec6cSJames Clarke# Sparc implicitly links with --relax, which is 6283 6969ec6cSJames Clarke# incompatible with -r, so --no-relax should be 6284 6969ec6cSJames Clarke# given. It does no harm to give it on other 6285 6969ec6cSJames Clarke# platforms too. 6286 6969ec6cSJames Clarke 6287 6969ec6cSJames Clarke# Note: the prototype is needed since QEMU_CFLAGS 6288 6969ec6cSJames Clarke# contains -Wmissing-prototypes 6289 6969ec6cSJames Clarkecat > $TMPC << EOF 6290 6969ec6cSJames Clarkeextern int foo(void); 6291 6969ec6cSJames Clarkeint foo(void) { return 0; } 6292 6969ec6cSJames ClarkeEOF 6293 6969ec6cSJames Clarkeif ! compile_object ""; then 6294 6969ec6cSJames Clarke error_exit "Failed to compile object file for LD_REL_FLAGS test" 6295 6969ec6cSJames Clarkefi 6296 7ecf44a5SPaolo Bonzinifor i in '-Wl,-r -Wl,--no-relax' -Wl,-r -r; do 6297 7ecf44a5SPaolo Bonzini if do_cc -nostdlib $i -o $TMPMO $TMPO; then 6298 7ecf44a5SPaolo Bonzini LD_REL_FLAGS=$i 6299 7ecf44a5SPaolo Bonzini break 6300 7ecf44a5SPaolo Bonzini fi 6301 7ecf44a5SPaolo Bonzinidone 6302 7ecf44a5SPaolo Bonziniif test "$modules" = "yes" && test "$LD_REL_FLAGS" = ""; then 6303 7ecf44a5SPaolo Bonzini feature_not_found "modules" "Cannot find how to build relocatable objects" 6304 6969ec6cSJames Clarkefi 6305 6969ec6cSJames Clarke 6306 277abf15SJan Vesely########################################## 6307 4d04351fSChristopher Covington# check for sysmacros.h 6308 4d04351fSChristopher Covington 6309 4d04351fSChristopher Covingtonhave_sysmacros=no 6310 4d04351fSChristopher Covingtoncat > $TMPC << EOF 6311 4d04351fSChristopher Covington#include <sys/sysmacros.h> 6312 4d04351fSChristopher Covingtonint main(void) { 6313 4d04351fSChristopher Covington return makedev(0, 0); 6314 4d04351fSChristopher Covington} 6315 4d04351fSChristopher CovingtonEOF 6316 4d04351fSChristopher Covingtonif compile_prog "" "" ; then 6317 4d04351fSChristopher Covington have_sysmacros=yes 6318 4d04351fSChristopher Covingtonfi 6319 4d04351fSChristopher Covington 6320 4d04351fSChristopher Covington########################################## 6321 49e00a18SAndreas Grapentin# check for _Static_assert() 6322 49e00a18SAndreas Grapentin 6323 49e00a18SAndreas Grapentinhave_static_assert=no 6324 49e00a18SAndreas Grapentincat > $TMPC << EOF 6325 49e00a18SAndreas Grapentin_Static_assert(1, "success"); 6326 49e00a18SAndreas Grapentinint main(void) { 6327 49e00a18SAndreas Grapentin return 0; 6328 49e00a18SAndreas Grapentin} 6329 49e00a18SAndreas GrapentinEOF 6330 49e00a18SAndreas Grapentinif compile_prog "" "" ; then 6331 49e00a18SAndreas Grapentin have_static_assert=yes 6332 49e00a18SAndreas Grapentinfi 6333 49e00a18SAndreas Grapentin 6334 49e00a18SAndreas Grapentin########################################## 6335 e674605fSTomáš Golembiovský# check for utmpx.h, it is missing e.g. on OpenBSD 6336 e674605fSTomáš Golembiovský 6337 e674605fSTomáš Golembiovskýhave_utmpx=no 6338 e674605fSTomáš Golembiovskýcat > $TMPC << EOF 6339 e674605fSTomáš Golembiovský#include <utmpx.h> 6340 e674605fSTomáš Golembiovskýstruct utmpx user_info; 6341 e674605fSTomáš Golembiovskýint main(void) { 6342 e674605fSTomáš Golembiovský return 0; 6343 e674605fSTomáš Golembiovský} 6344 e674605fSTomáš GolembiovskýEOF 6345 e674605fSTomáš Golembiovskýif compile_prog "" "" ; then 6346 e674605fSTomáš Golembiovský have_utmpx=yes 6347 e674605fSTomáš Golembiovskýfi 6348 e674605fSTomáš Golembiovský 6349 e674605fSTomáš Golembiovský########################################## 6350 db1ed1abSRichard Henderson# check for getrandom() 6351 db1ed1abSRichard Henderson 6352 db1ed1abSRichard Hendersonhave_getrandom=no 6353 db1ed1abSRichard Hendersoncat > $TMPC << EOF 6354 db1ed1abSRichard Henderson#include <sys/random.h> 6355 db1ed1abSRichard Hendersonint main(void) { 6356 db1ed1abSRichard Henderson return getrandom(0, 0, GRND_NONBLOCK); 6357 db1ed1abSRichard Henderson} 6358 db1ed1abSRichard HendersonEOF 6359 db1ed1abSRichard Hendersonif compile_prog "" "" ; then 6360 db1ed1abSRichard Henderson have_getrandom=yes 6361 db1ed1abSRichard Hendersonfi 6362 db1ed1abSRichard Henderson 6363 db1ed1abSRichard Henderson########################################## 6364 247724cbSMarc-André Lureau# checks for sanitizers 6365 247724cbSMarc-André Lureau 6366 247724cbSMarc-André Lureauhave_asan=no 6367 247724cbSMarc-André Lureauhave_ubsan=no 6368 d83414e1SMarc-André Lureauhave_asan_iface_h=no 6369 d83414e1SMarc-André Lureauhave_asan_iface_fiber=no 6370 247724cbSMarc-André Lureau 6371 247724cbSMarc-André Lureauif test "$sanitizers" = "yes" ; then 6372 b9f44da2SMarc-André Lureau write_c_skeleton 6373 247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" ""; then 6374 247724cbSMarc-André Lureau have_asan=yes 6375 247724cbSMarc-André Lureau fi 6376 b9f44da2SMarc-André Lureau 6377 b9f44da2SMarc-André Lureau # we could use a simple skeleton for flags checks, but this also 6378 b9f44da2SMarc-André Lureau # detect the static linking issue of ubsan, see also: 6379 b9f44da2SMarc-André Lureau # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84285 6380 b9f44da2SMarc-André Lureau cat > $TMPC << EOF 6381 b9f44da2SMarc-André Lureau#include <stdlib.h> 6382 b9f44da2SMarc-André Lureauint main(void) { 6383 b9f44da2SMarc-André Lureau void *tmp = malloc(10); 6384 f2dfe54cSLeonid Bloch if (tmp != NULL) { 6385 b9f44da2SMarc-André Lureau return *(int *)(tmp + 2); 6386 b9f44da2SMarc-André Lureau } 6387 d1abf3fcSOlaf Hering return 1; 6388 f2dfe54cSLeonid Bloch} 6389 b9f44da2SMarc-André LureauEOF 6390 247724cbSMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=undefined" ""; then 6391 247724cbSMarc-André Lureau have_ubsan=yes 6392 247724cbSMarc-André Lureau fi 6393 d83414e1SMarc-André Lureau 6394 d83414e1SMarc-André Lureau if check_include "sanitizer/asan_interface.h" ; then 6395 d83414e1SMarc-André Lureau have_asan_iface_h=yes 6396 d83414e1SMarc-André Lureau fi 6397 d83414e1SMarc-André Lureau 6398 d83414e1SMarc-André Lureau cat > $TMPC << EOF 6399 d83414e1SMarc-André Lureau#include <sanitizer/asan_interface.h> 6400 d83414e1SMarc-André Lureauint main(void) { 6401 d83414e1SMarc-André Lureau __sanitizer_start_switch_fiber(0, 0, 0); 6402 d83414e1SMarc-André Lureau return 0; 6403 d83414e1SMarc-André Lureau} 6404 d83414e1SMarc-André LureauEOF 6405 d83414e1SMarc-André Lureau if compile_prog "$CPU_CFLAGS -Werror -fsanitize=address" "" ; then 6406 d83414e1SMarc-André Lureau have_asan_iface_fiber=yes 6407 d83414e1SMarc-André Lureau fi 6408 247724cbSMarc-André Lureaufi 6409 247724cbSMarc-André Lureau 6410 247724cbSMarc-André Lureau########################################## 6411 adc28027SAlexander Bulekov# checks for fuzzer 6412 adc28027SAlexander Bulekovif test "$fuzzing" = "yes" ; then 6413 adc28027SAlexander Bulekov write_c_fuzzer_skeleton 6414 dd016265SAlexander Bulekov if compile_prog "$CPU_CFLAGS -Werror -fsanitize=fuzzer" ""; then 6415 adc28027SAlexander Bulekov have_fuzzer=yes 6416 adc28027SAlexander Bulekov fi 6417 adc28027SAlexander Bulekovfi 6418 adc28027SAlexander Bulekov 6419 0aebab04SLingfeng Yang# Thread sanitizer is, for now, much noisier than the other sanitizers; 6420 0aebab04SLingfeng Yang# keep it separate until that is not the case. 6421 0aebab04SLingfeng Yangif test "$tsan" = "yes" && test "$sanitizers" = "yes"; then 6422 0aebab04SLingfeng Yang error_exit "TSAN is not supported with other sanitiziers." 6423 0aebab04SLingfeng Yangfi 6424 0aebab04SLingfeng Yanghave_tsan=no 6425 0aebab04SLingfeng Yanghave_tsan_iface_fiber=no 6426 0aebab04SLingfeng Yangif test "$tsan" = "yes" ; then 6427 0aebab04SLingfeng Yang write_c_skeleton 6428 0aebab04SLingfeng Yang if compile_prog "$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then 6429 0aebab04SLingfeng Yang have_tsan=yes 6430 0aebab04SLingfeng Yang fi 6431 0aebab04SLingfeng Yang cat > $TMPC << EOF 6432 0aebab04SLingfeng Yang#include <sanitizer/tsan_interface.h> 6433 0aebab04SLingfeng Yangint main(void) { 6434 0aebab04SLingfeng Yang __tsan_create_fiber(0); 6435 0aebab04SLingfeng Yang return 0; 6436 0aebab04SLingfeng Yang} 6437 0aebab04SLingfeng YangEOF 6438 0aebab04SLingfeng Yang if compile_prog "$CPU_CFLAGS -Werror -fsanitize=thread" "" ; then 6439 0aebab04SLingfeng Yang have_tsan_iface_fiber=yes 6440 0aebab04SLingfeng Yang fi 6441 0aebab04SLingfeng Yangfi 6442 0aebab04SLingfeng Yang 6443 adc28027SAlexander Bulekov########################################## 6444 17824406SJunyan He# check for libpmem 6445 17824406SJunyan He 6446 17824406SJunyan Heif test "$libpmem" != "no"; then 6447 17824406SJunyan He if $pkg_config --exists "libpmem"; then 6448 17824406SJunyan He libpmem="yes" 6449 17824406SJunyan He libpmem_libs=$($pkg_config --libs libpmem) 6450 17824406SJunyan He libpmem_cflags=$($pkg_config --cflags libpmem) 6451 17824406SJunyan He libs_softmmu="$libs_softmmu $libpmem_libs" 6452 17824406SJunyan He QEMU_CFLAGS="$QEMU_CFLAGS $libpmem_cflags" 6453 17824406SJunyan He else 6454 17824406SJunyan He if test "$libpmem" = "yes" ; then 6455 17824406SJunyan He feature_not_found "libpmem" "Install nvml or pmdk" 6456 17824406SJunyan He fi 6457 17824406SJunyan He libpmem="no" 6458 17824406SJunyan He fi 6459 17824406SJunyan Hefi 6460 17824406SJunyan He 6461 17824406SJunyan He########################################## 6462 21b2eca6SJingqi Liu# check for libdaxctl 6463 21b2eca6SJingqi Liu 6464 21b2eca6SJingqi Liuif test "$libdaxctl" != "no"; then 6465 21b2eca6SJingqi Liu if $pkg_config --atleast-version=57 "libdaxctl"; then 6466 21b2eca6SJingqi Liu libdaxctl="yes" 6467 21b2eca6SJingqi Liu libdaxctl_libs=$($pkg_config --libs libdaxctl) 6468 21b2eca6SJingqi Liu libdaxctl_cflags=$($pkg_config --cflags libdaxctl) 6469 21b2eca6SJingqi Liu libs_softmmu="$libs_softmmu $libdaxctl_libs" 6470 21b2eca6SJingqi Liu QEMU_CFLAGS="$QEMU_CFLAGS $libdaxctl_cflags" 6471 21b2eca6SJingqi Liu else 6472 21b2eca6SJingqi Liu if test "$libdaxctl" = "yes" ; then 6473 21b2eca6SJingqi Liu feature_not_found "libdaxctl" "Install libdaxctl" 6474 21b2eca6SJingqi Liu fi 6475 21b2eca6SJingqi Liu libdaxctl="no" 6476 21b2eca6SJingqi Liu fi 6477 21b2eca6SJingqi Liufi 6478 21b2eca6SJingqi Liu 6479 21b2eca6SJingqi Liu########################################## 6480 675b9b53SMarc-André Lureau# check for slirp 6481 675b9b53SMarc-André Lureau 6482 d599938aSLaurent Vivier# slirp is only required when building softmmu targets 6483 d599938aSLaurent Vivierif test -z "$slirp" -a "$softmmu" != "yes" ; then 6484 d599938aSLaurent Vivier slirp="no" 6485 d599938aSLaurent Vivierfi 6486 d599938aSLaurent Vivier 6487 675b9b53SMarc-André Lureaucase "$slirp" in 6488 675b9b53SMarc-André Lureau "" | yes) 6489 675b9b53SMarc-André Lureau if $pkg_config slirp; then 6490 675b9b53SMarc-André Lureau slirp=system 6491 7c57bdd8SMarc-André Lureau elif test -e "${source_path}/.git" && test $git_update = 'yes' ; then 6492 7c57bdd8SMarc-André Lureau slirp=git 6493 675b9b53SMarc-André Lureau elif test -e "${source_path}/slirp/Makefile" ; then 6494 675b9b53SMarc-André Lureau slirp=internal 6495 675b9b53SMarc-André Lureau elif test -z "$slirp" ; then 6496 675b9b53SMarc-André Lureau slirp=no 6497 675b9b53SMarc-André Lureau else 6498 675b9b53SMarc-André Lureau feature_not_found "slirp" "Install slirp devel or git submodule" 6499 675b9b53SMarc-André Lureau fi 6500 675b9b53SMarc-André Lureau ;; 6501 675b9b53SMarc-André Lureau 6502 675b9b53SMarc-André Lureau system) 6503 675b9b53SMarc-André Lureau if ! $pkg_config slirp; then 6504 675b9b53SMarc-André Lureau feature_not_found "slirp" "Install slirp devel" 6505 675b9b53SMarc-André Lureau fi 6506 675b9b53SMarc-André Lureau ;; 6507 675b9b53SMarc-André Lureauesac 6508 675b9b53SMarc-André Lureau 6509 675b9b53SMarc-André Lureaucase "$slirp" in 6510 7c57bdd8SMarc-André Lureau git | internal) 6511 7c57bdd8SMarc-André Lureau if test "$slirp" = git; then 6512 7c57bdd8SMarc-André Lureau git_submodules="${git_submodules} slirp" 6513 7c57bdd8SMarc-André Lureau fi 6514 675b9b53SMarc-André Lureau mkdir -p slirp 6515 25211446SPaolo Bonzini slirp_cflags="-I${source_path}/slirp/src -I$PWD/slirp/src" 6516 25211446SPaolo Bonzini slirp_libs="-L$PWD/slirp -lslirp" 6517 b965e8c5SPaolo Bonzini if test "$mingw32" = "yes" ; then 6518 b965e8c5SPaolo Bonzini slirp_libs="$slirp_libs -lws2_32 -liphlpapi" 6519 b965e8c5SPaolo Bonzini fi 6520 675b9b53SMarc-André Lureau ;; 6521 675b9b53SMarc-André Lureau 6522 675b9b53SMarc-André Lureau system) 6523 675b9b53SMarc-André Lureau slirp_version=$($pkg_config --modversion slirp 2>/dev/null) 6524 675b9b53SMarc-André Lureau slirp_cflags=$($pkg_config --cflags slirp 2>/dev/null) 6525 675b9b53SMarc-André Lureau slirp_libs=$($pkg_config --libs slirp 2>/dev/null) 6526 675b9b53SMarc-André Lureau ;; 6527 675b9b53SMarc-André Lureau 6528 675b9b53SMarc-André Lureau no) 6529 675b9b53SMarc-André Lureau ;; 6530 675b9b53SMarc-André Lureau *) 6531 675b9b53SMarc-André Lureau error_exit "Unknown state for slirp: $slirp" 6532 675b9b53SMarc-André Lureau ;; 6533 675b9b53SMarc-André Lureauesac 6534 675b9b53SMarc-André Lureau 6535 54e7aac0SAlexey Krasikov########################################## 6536 54e7aac0SAlexey Krasikov# check for usable __NR_keyctl syscall 6537 54e7aac0SAlexey Krasikov 6538 54e7aac0SAlexey Krasikovif test "$linux" = "yes" ; then 6539 54e7aac0SAlexey Krasikov 6540 54e7aac0SAlexey Krasikov have_keyring=no 6541 54e7aac0SAlexey Krasikov cat > $TMPC << EOF 6542 54e7aac0SAlexey Krasikov#include <errno.h> 6543 54e7aac0SAlexey Krasikov#include <asm/unistd.h> 6544 54e7aac0SAlexey Krasikov#include <linux/keyctl.h> 6545 54e7aac0SAlexey Krasikov#include <unistd.h> 6546 54e7aac0SAlexey Krasikovint main(void) { 6547 54e7aac0SAlexey Krasikov return syscall(__NR_keyctl, KEYCTL_READ, 0, NULL, NULL, 0); 6548 54e7aac0SAlexey Krasikov} 6549 54e7aac0SAlexey KrasikovEOF 6550 54e7aac0SAlexey Krasikov if compile_prog "" "" ; then 6551 54e7aac0SAlexey Krasikov have_keyring=yes 6552 54e7aac0SAlexey Krasikov fi 6553 54e7aac0SAlexey Krasikovfi 6554 54e7aac0SAlexey Krasikovif test "$secret_keyring" != "no" 6555 54e7aac0SAlexey Krasikovthen 6556 b418d265SDavid Edmondson if test "$have_keyring" = "yes" 6557 54e7aac0SAlexey Krasikov then 6558 54e7aac0SAlexey Krasikov secret_keyring=yes 6559 54e7aac0SAlexey Krasikov else 6560 54e7aac0SAlexey Krasikov if test "$secret_keyring" = "yes" 6561 54e7aac0SAlexey Krasikov then 6562 54e7aac0SAlexey Krasikov error_exit "syscall __NR_keyctl requested, \ 6563 54e7aac0SAlexey Krasikovbut not implemented on your system" 6564 54e7aac0SAlexey Krasikov else 6565 54e7aac0SAlexey Krasikov secret_keyring=no 6566 54e7aac0SAlexey Krasikov fi 6567 54e7aac0SAlexey Krasikov fi 6568 54e7aac0SAlexey Krasikovfi 6569 54e7aac0SAlexey Krasikov 6570 92500362SAlexey Krasikov########################################## 6571 92500362SAlexey Krasikov# check for usable keyutils.h 6572 92500362SAlexey Krasikov 6573 92500362SAlexey Krasikovif test "$linux" = "yes" ; then 6574 92500362SAlexey Krasikov 6575 92500362SAlexey Krasikov have_keyutils=no 6576 92500362SAlexey Krasikov cat > $TMPC << EOF 6577 92500362SAlexey Krasikov#include <errno.h> 6578 92500362SAlexey Krasikov#include <asm/unistd.h> 6579 92500362SAlexey Krasikov#include <unistd.h> 6580 92500362SAlexey Krasikov#include <sys/types.h> 6581 92500362SAlexey Krasikov#include <keyutils.h> 6582 92500362SAlexey Krasikovint main(void) { 6583 92500362SAlexey Krasikov return request_key("user", NULL, NULL, 0); 6584 92500362SAlexey Krasikov} 6585 92500362SAlexey KrasikovEOF 6586 92500362SAlexey Krasikov if compile_prog "" "-lkeyutils"; then 6587 92500362SAlexey Krasikov have_keyutils=yes 6588 92500362SAlexey Krasikov fi 6589 92500362SAlexey Krasikovfi 6590 92500362SAlexey Krasikov 6591 675b9b53SMarc-André Lureau 6592 675b9b53SMarc-André Lureau########################################## 6593 e86ecd4bSJuan Quintela# End of CC checks 6594 e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs 6595 e86ecd4bSJuan Quintela 6596 d83414e1SMarc-André Lureauwrite_c_skeleton 6597 d83414e1SMarc-André Lureau 6598 1d728c39SBlue Swirlif test "$gcov" = "yes" ; then 6599 bf0e56a3SMarc-André Lureau : 6600 b553a042SJohn Snowelif test "$fortify_source" = "yes" ; then 6601 086d5f75SPaolo Bonzini QEMU_CFLAGS="-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $QEMU_CFLAGS" 6602 086d5f75SPaolo Bonzini debug=no 6603 086d5f75SPaolo Bonzinifi 6604 086d5f75SPaolo Bonziniif test "$debug_info" = "yes"; then 6605 086d5f75SPaolo Bonzini CFLAGS="-g $CFLAGS" 6606 086d5f75SPaolo Bonzini LDFLAGS="-g $LDFLAGS" 6607 086d5f75SPaolo Bonzinifi 6608 a5665051SPaolo Bonziniif test "$debug" = "no"; then 6609 a5665051SPaolo Bonzini CFLAGS="-O2 $CFLAGS" 6610 a5665051SPaolo Bonzinifi 6611 086d5f75SPaolo Bonzini 6612 086d5f75SPaolo Bonzinicase "$ARCH" in 6613 086d5f75SPaolo Bonzinialpha) 6614 086d5f75SPaolo Bonzini # Ensure there's only a single GP 6615 086d5f75SPaolo Bonzini QEMU_CFLAGS="-msmall-data $QEMU_CFLAGS" 6616 086d5f75SPaolo Bonzini;; 6617 086d5f75SPaolo Bonziniesac 6618 086d5f75SPaolo Bonzini 6619 086d5f75SPaolo Bonziniif test "$gprof" = "yes" ; then 6620 086d5f75SPaolo Bonzini QEMU_CFLAGS="-p $QEMU_CFLAGS" 6621 086d5f75SPaolo Bonzini QEMU_LDFLAGS="-p $QEMU_LDFLAGS" 6622 086d5f75SPaolo Bonzinifi 6623 a316e378SJuan Quintela 6624 247724cbSMarc-André Lureauif test "$have_asan" = "yes"; then 6625 db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fsanitize=address $QEMU_CFLAGS" 6626 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fsanitize=address $QEMU_LDFLAGS" 6627 d83414e1SMarc-André Lureau if test "$have_asan_iface_h" = "no" ; then 6628 d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header missing." \ 6629 d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 6630 d83414e1SMarc-André Lureau elif test "$have_asan_iface_fiber" = "no" ; then 6631 d83414e1SMarc-André Lureau echo "ASAN build enabled, but ASAN header is too old." \ 6632 d83414e1SMarc-André Lureau "Without code annotation, the report may be inferior." 6633 d83414e1SMarc-André Lureau fi 6634 247724cbSMarc-André Lureaufi 6635 0aebab04SLingfeng Yangif test "$have_tsan" = "yes" ; then 6636 0aebab04SLingfeng Yang if test "$have_tsan_iface_fiber" = "yes" ; then 6637 0aebab04SLingfeng Yang QEMU_CFLAGS="-fsanitize=thread $QEMU_CFLAGS" 6638 0aebab04SLingfeng Yang QEMU_LDFLAGS="-fsanitize=thread $QEMU_LDFLAGS" 6639 0aebab04SLingfeng Yang else 6640 0aebab04SLingfeng Yang error_exit "Cannot enable TSAN due to missing fiber annotation interface." 6641 0aebab04SLingfeng Yang fi 6642 0aebab04SLingfeng Yangelif test "$tsan" = "yes" ; then 6643 0aebab04SLingfeng Yang error_exit "Cannot enable TSAN due to missing sanitize thread interface." 6644 0aebab04SLingfeng Yangfi 6645 247724cbSMarc-André Lureauif test "$have_ubsan" = "yes"; then 6646 db5adeaaSPaolo Bonzini QEMU_CFLAGS="-fsanitize=undefined $QEMU_CFLAGS" 6647 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-fsanitize=undefined $QEMU_LDFLAGS" 6648 247724cbSMarc-André Lureaufi 6649 247724cbSMarc-André Lureau 6650 6542aa9cSPeter Lieven########################################## 6651 6542aa9cSPeter Lieven# Do we have libnfs 6652 6542aa9cSPeter Lievenif test "$libnfs" != "no" ; then 6653 b7d769c9SPeter Lieven if $pkg_config --atleast-version=1.9.3 libnfs; then 6654 6542aa9cSPeter Lieven libnfs="yes" 6655 6542aa9cSPeter Lieven libnfs_libs=$($pkg_config --libs libnfs) 6656 6542aa9cSPeter Lieven else 6657 6542aa9cSPeter Lieven if test "$libnfs" = "yes" ; then 6658 8efc9363SHu Tao feature_not_found "libnfs" "Install libnfs devel >= 1.9.3" 6659 6542aa9cSPeter Lieven fi 6660 6542aa9cSPeter Lieven libnfs="no" 6661 6542aa9cSPeter Lieven fi 6662 6542aa9cSPeter Lievenfi 6663 1d728c39SBlue Swirl 6664 3efac6ebSTomáš Golembiovský########################################## 6665 3efac6ebSTomáš Golembiovský# Do we have libudev 6666 3efac6ebSTomáš Golembiovskýif test "$libudev" != "no" ; then 6667 3efac6ebSTomáš Golembiovský if $pkg_config libudev && test "$static" != "yes"; then 6668 3efac6ebSTomáš Golembiovský libudev="yes" 6669 3efac6ebSTomáš Golembiovský libudev_libs=$($pkg_config --libs libudev) 6670 3efac6ebSTomáš Golembiovský else 6671 3efac6ebSTomáš Golembiovský libudev="no" 6672 3efac6ebSTomáš Golembiovský fi 6673 3efac6ebSTomáš Golembiovskýfi 6674 3efac6ebSTomáš Golembiovský 6675 6ca026cbSPeter Maydell# Now we've finished running tests it's OK to add -Werror to the compiler flags 6676 6ca026cbSPeter Maydellif test "$werror" = "yes"; then 6677 6ca026cbSPeter Maydell QEMU_CFLAGS="-Werror $QEMU_CFLAGS" 6678 6ca026cbSPeter Maydellfi 6679 6ca026cbSPeter Maydell 6680 0aebab04SLingfeng Yang# Exclude --warn-common with TSan to suppress warnings from the TSan libraries. 6681 0aebab04SLingfeng Yangif test "$solaris" = "no" && test "$tsan" = "no"; then 6682 e86ecd4bSJuan Quintela if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then 6683 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-Wl,--warn-common $QEMU_LDFLAGS" 6684 e86ecd4bSJuan Quintela fi 6685 e86ecd4bSJuan Quintelafi 6686 e86ecd4bSJuan Quintela 6687 94dd53c5SGerd Hoffmann# test if pod2man has --utf8 option 6688 94dd53c5SGerd Hoffmannif pod2man --help | grep -q utf8; then 6689 94dd53c5SGerd Hoffmann POD2MAN="pod2man --utf8" 6690 94dd53c5SGerd Hoffmannelse 6691 94dd53c5SGerd Hoffmann POD2MAN="pod2man" 6692 94dd53c5SGerd Hoffmannfi 6693 94dd53c5SGerd Hoffmann 6694 952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available 6695 952afb71SBlue Swirlif test "$mingw32" = "yes" ; then 6696 952afb71SBlue Swirl for flag in --dynamicbase --no-seh --nxcompat; do 6697 e9a3591fSChristian Borntraeger if ld_has $flag ; then 6698 db5adeaaSPaolo Bonzini QEMU_LDFLAGS="-Wl,$flag $QEMU_LDFLAGS" 6699 952afb71SBlue Swirl fi 6700 952afb71SBlue Swirl done 6701 952afb71SBlue Swirlfi 6702 952afb71SBlue Swirl 6703 7776ea6bSPhilippe Mathieu-Daudé# Disable OpenBSD W^X if available 6704 7776ea6bSPhilippe Mathieu-Daudéif test "$tcg" = "yes" && test "$targetos" = "OpenBSD"; then 6705 7776ea6bSPhilippe Mathieu-Daudé cat > $TMPC <<EOF 6706 7776ea6bSPhilippe Mathieu-Daudé int main(void) { return 0; } 6707 7776ea6bSPhilippe Mathieu-DaudéEOF 6708 7776ea6bSPhilippe Mathieu-Daudé wx_ldflags="-Wl,-z,wxneeded" 6709 7776ea6bSPhilippe Mathieu-Daudé if compile_prog "" "$wx_ldflags"; then 6710 7776ea6bSPhilippe Mathieu-Daudé QEMU_LDFLAGS="$QEMU_LDFLAGS $wx_ldflags" 6711 7776ea6bSPhilippe Mathieu-Daudé fi 6712 7776ea6bSPhilippe Mathieu-Daudéfi 6713 7776ea6bSPhilippe Mathieu-Daudé 6714 10ea68b3SEduardo Habkostqemu_confdir=$sysconfdir$confsuffix 6715 e26110cfSFam Zhengqemu_moddir=$libdir$confsuffix 6716 528ae5b8SEduardo Habkostqemu_datadir=$datadir$confsuffix 6717 834574eaSAnthony Liguoriqemu_localedir="$datadir/locale" 6718 a8260d38SDaniel P. Berrangéqemu_icondir="$datadir/icons" 6719 67ea9546SDaniel P. Berrangéqemu_desktopdir="$datadir/applications" 6720 5a67135aSbellard 6721 e0580342SKamil Rytarowski# We can only support ivshmem if we have eventfd 6722 e0580342SKamil Rytarowskiif [ "$eventfd" = "yes" ]; then 6723 e0580342SKamil Rytarowski ivshmem=yes 6724 e0580342SKamil Rytarowskifi 6725 e0580342SKamil Rytarowski 6726 4b1c11fdSDaniel P. Berrangeif test "$softmmu" = yes ; then 6727 b855f8d1SPaolo Bonzini if test "$linux" = yes; then 6728 7e462613SPaolo Bonzini if test "$virtfs" != no && test "$cap_ng" = yes && test "$attr" = yes ; then 6729 983eef5aSMeador Inge virtfs=yes 6730 983eef5aSMeador Inge else 6731 983eef5aSMeador Inge if test "$virtfs" = yes; then 6732 7e462613SPaolo Bonzini error_exit "VirtFS requires libcap-ng devel and libattr devel" 6733 983eef5aSMeador Inge fi 6734 17500370SAndreas Färber virtfs=no 6735 983eef5aSMeador Inge fi 6736 fe8fc5aeSPaolo Bonzini if test "$mpath" != no && test "$mpathpersist" = yes ; then 6737 fe8fc5aeSPaolo Bonzini mpath=yes 6738 fe8fc5aeSPaolo Bonzini else 6739 fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 6740 fe8fc5aeSPaolo Bonzini error_exit "Multipath requires libmpathpersist devel" 6741 fe8fc5aeSPaolo Bonzini fi 6742 fe8fc5aeSPaolo Bonzini mpath=no 6743 fe8fc5aeSPaolo Bonzini fi 6744 b855f8d1SPaolo Bonzini else 6745 b855f8d1SPaolo Bonzini if test "$virtfs" = yes; then 6746 b855f8d1SPaolo Bonzini error_exit "VirtFS is supported only on Linux" 6747 b855f8d1SPaolo Bonzini fi 6748 b855f8d1SPaolo Bonzini virtfs=no 6749 fe8fc5aeSPaolo Bonzini if test "$mpath" = yes; then 6750 fe8fc5aeSPaolo Bonzini error_exit "Multipath is supported only on Linux" 6751 fe8fc5aeSPaolo Bonzini fi 6752 fe8fc5aeSPaolo Bonzini mpath=no 6753 17bff52bSM. Mohan Kumar fi 6754 ff69fd8cSLaurent Vivierfi 6755 9d6bc27bSMichael Roth 6756 9d6bc27bSMichael Roth# Probe for guest agent support/options 6757 9d6bc27bSMichael Roth 6758 e8ef31a3SMichael Tokarevif [ "$guest_agent" != "no" ]; then 6759 a5125905SLaurent Vivier if [ "$softmmu" = no -a "$want_tools" = no ] ; then 6760 a5125905SLaurent Vivier guest_agent=no 6761 a5125905SLaurent Vivier elif [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then 6762 e8ef31a3SMichael Tokarev guest_agent=yes 6763 e8ef31a3SMichael Tokarev elif [ "$guest_agent" != yes ]; then 6764 e8ef31a3SMichael Tokarev guest_agent=no 6765 e8ef31a3SMichael Tokarev else 6766 e8ef31a3SMichael Tokarev error_exit "Guest agent is not supported on this platform" 6767 ca35f780SPaolo Bonzini fi 6768 4b1c11fdSDaniel P. Berrangefi 6769 ca35f780SPaolo Bonzini 6770 9d6bc27bSMichael Roth# Guest agent Window MSI package 6771 9d6bc27bSMichael Roth 6772 9d6bc27bSMichael Rothif test "$guest_agent" != yes; then 6773 9d6bc27bSMichael Roth if test "$guest_agent_msi" = yes; then 6774 9d6bc27bSMichael Roth error_exit "MSI guest agent package requires guest agent enabled" 6775 9d6bc27bSMichael Roth fi 6776 9d6bc27bSMichael Roth guest_agent_msi=no 6777 9d6bc27bSMichael Rothelif test "$mingw32" != "yes"; then 6778 9d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 6779 9d6bc27bSMichael Roth error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation" 6780 9d6bc27bSMichael Roth fi 6781 9d6bc27bSMichael Roth guest_agent_msi=no 6782 9d6bc27bSMichael Rothelif ! has wixl; then 6783 9d6bc27bSMichael Roth if test "$guest_agent_msi" = "yes"; then 6784 9d6bc27bSMichael Roth error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )" 6785 9d6bc27bSMichael Roth fi 6786 9d6bc27bSMichael Roth guest_agent_msi=no 6787 1a34904eSMichael Rothelse 6788 1a34904eSMichael Roth # we support qemu-ga, mingw32, and wixl: default to MSI enabled if it wasn't 6789 1a34904eSMichael Roth # disabled explicitly 6790 1a34904eSMichael Roth if test "$guest_agent_msi" != "no"; then 6791 1a34904eSMichael Roth guest_agent_msi=yes 6792 1a34904eSMichael Roth fi 6793 9d6bc27bSMichael Rothfi 6794 9d6bc27bSMichael Roth 6795 1a34904eSMichael Rothif test "$guest_agent_msi" = "yes"; then 6796 9d6bc27bSMichael Roth if test "$guest_agent_with_vss" = "yes"; then 6797 9d6bc27bSMichael Roth QEMU_GA_MSI_WITH_VSS="-D InstallVss" 6798 9d6bc27bSMichael Roth fi 6799 9d6bc27bSMichael Roth 6800 9d6bc27bSMichael Roth if test "$QEMU_GA_MANUFACTURER" = ""; then 6801 9d6bc27bSMichael Roth QEMU_GA_MANUFACTURER=QEMU 6802 9d6bc27bSMichael Roth fi 6803 9d6bc27bSMichael Roth 6804 9d6bc27bSMichael Roth if test "$QEMU_GA_DISTRO" = ""; then 6805 9d6bc27bSMichael Roth QEMU_GA_DISTRO=Linux 6806 9d6bc27bSMichael Roth fi 6807 9d6bc27bSMichael Roth 6808 9d6bc27bSMichael Roth if test "$QEMU_GA_VERSION" = ""; then 6809 89138857SStefan Weil QEMU_GA_VERSION=$(cat $source_path/VERSION) 6810 9d6bc27bSMichael Roth fi 6811 9d6bc27bSMichael Roth 6812 89138857SStefan Weil QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=$($pkg_config --variable=prefix glib-2.0)/bin" 6813 9d6bc27bSMichael Roth 6814 9d6bc27bSMichael Roth case "$cpu" in 6815 9d6bc27bSMichael Roth x86_64) 6816 9d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-a x64 -D Arch=64" 6817 9d6bc27bSMichael Roth ;; 6818 9d6bc27bSMichael Roth i386) 6819 9d6bc27bSMichael Roth QEMU_GA_MSI_ARCH="-D Arch=32" 6820 9d6bc27bSMichael Roth ;; 6821 9d6bc27bSMichael Roth *) 6822 9d6bc27bSMichael Roth error_exit "CPU $cpu not supported for building installation package" 6823 9d6bc27bSMichael Roth ;; 6824 9d6bc27bSMichael Roth esac 6825 9d6bc27bSMichael Rothfi 6826 9d6bc27bSMichael Roth 6827 ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler 6828 ca35f780SPaolo Bonziniroms= 6829 e633a5c6SEric Blakeif { test "$cpu" = "i386" || test "$cpu" = "x86_64"; } && \ 6830 e633a5c6SEric Blake test "$targetos" != "Darwin" && test "$targetos" != "SunOS" && \ 6831 e633a5c6SEric Blake test "$softmmu" = yes ; then 6832 e57218b6SPeter Maydell # Different host OS linkers have different ideas about the name of the ELF 6833 c65d5e4eSBrad Smith # emulation. Linux and OpenBSD/amd64 use 'elf_i386'; FreeBSD uses the _fbsd 6834 c65d5e4eSBrad Smith # variant; OpenBSD/i386 uses the _obsd variant; and Windows uses i386pe. 6835 c65d5e4eSBrad Smith for emu in elf_i386 elf_i386_fbsd elf_i386_obsd i386pe; do 6836 e57218b6SPeter Maydell if "$ld" -verbose 2>&1 | grep -q "^[[:space:]]*$emu[[:space:]]*$"; then 6837 e57218b6SPeter Maydell ld_i386_emulation="$emu" 6838 ca35f780SPaolo Bonzini roms="optionrom" 6839 e57218b6SPeter Maydell break 6840 e57218b6SPeter Maydell fi 6841 e57218b6SPeter Maydell done 6842 ca35f780SPaolo Bonzinifi 6843 ca35f780SPaolo Bonzini 6844 2e33c3f8SThomas Huth# Only build s390-ccw bios if we're on s390x and the compiler has -march=z900 6845 9933c305SChristian Borntraegerif test "$cpu" = "s390x" ; then 6846 2e33c3f8SThomas Huth write_c_skeleton 6847 2e33c3f8SThomas Huth if compile_prog "-march=z900" ""; then 6848 9933c305SChristian Borntraeger roms="$roms s390-ccw" 6849 1ef6bfc2SPhilippe Mathieu-Daudé # SLOF is required for building the s390-ccw firmware on s390x, 6850 1ef6bfc2SPhilippe Mathieu-Daudé # since it is using the libnet code from SLOF for network booting. 6851 1ef6bfc2SPhilippe Mathieu-Daudé if test -e "${source_path}/.git" ; then 6852 1ef6bfc2SPhilippe Mathieu-Daudé git_submodules="${git_submodules} roms/SLOF" 6853 1ef6bfc2SPhilippe Mathieu-Daudé fi 6854 9933c305SChristian Borntraeger fi 6855 2e33c3f8SThomas Huthfi 6856 9933c305SChristian Borntraeger 6857 11cde1c8SBruno Dominguez# Check that the C++ compiler exists and works with the C compiler. 6858 11cde1c8SBruno Dominguez# All the QEMU_CXXFLAGS are based on QEMU_CFLAGS. Keep this at the end to don't miss any other that could be added. 6859 11cde1c8SBruno Dominguezif has $cxx; then 6860 11cde1c8SBruno Dominguez cat > $TMPC <<EOF 6861 11cde1c8SBruno Dominguezint c_function(void); 6862 11cde1c8SBruno Dominguezint main(void) { return c_function(); } 6863 11cde1c8SBruno DominguezEOF 6864 11cde1c8SBruno Dominguez 6865 11cde1c8SBruno Dominguez compile_object 6866 11cde1c8SBruno Dominguez 6867 11cde1c8SBruno Dominguez cat > $TMPCXX <<EOF 6868 11cde1c8SBruno Dominguezextern "C" { 6869 11cde1c8SBruno Dominguez int c_function(void); 6870 11cde1c8SBruno Dominguez} 6871 11cde1c8SBruno Dominguezint c_function(void) { return 42; } 6872 11cde1c8SBruno DominguezEOF 6873 11cde1c8SBruno Dominguez 6874 11cde1c8SBruno Dominguez update_cxxflags 6875 11cde1c8SBruno Dominguez 6876 086d5f75SPaolo Bonzini if do_cxx $CXXFLAGS $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $QEMU_LDFLAGS; then 6877 11cde1c8SBruno Dominguez # C++ compiler $cxx works ok with C compiler $cc 6878 11cde1c8SBruno Dominguez : 6879 11cde1c8SBruno Dominguez else 6880 11cde1c8SBruno Dominguez echo "C++ compiler $cxx does not work with C compiler $cc" 6881 11cde1c8SBruno Dominguez echo "Disabling C++ specific optional code" 6882 11cde1c8SBruno Dominguez cxx= 6883 11cde1c8SBruno Dominguez fi 6884 11cde1c8SBruno Dominguezelse 6885 11cde1c8SBruno Dominguez echo "No C++ compiler available; disabling C++ specific optional code" 6886 11cde1c8SBruno Dominguez cxx= 6887 11cde1c8SBruno Dominguezfi 6888 11cde1c8SBruno Dominguez 6889 02d34f62SCole Robinsonecho_version() { 6890 02d34f62SCole Robinson if test "$1" = "yes" ; then 6891 02d34f62SCole Robinson echo "($2)" 6892 02d34f62SCole Robinson fi 6893 02d34f62SCole Robinson} 6894 02d34f62SCole Robinson 6895 50e12060SJan Kiszka# prepend pixman and ftd flags after all config tests are done 6896 50e12060SJan KiszkaQEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS" 6897 8a99e9a3SPhilippe Mathieu-DaudéQEMU_LDFLAGS="$fdt_ldflags $QEMU_LDFLAGS" 6898 50e12060SJan Kiszkalibs_softmmu="$pixman_libs $libs_softmmu" 6899 5ca9388aSGerd Hoffmann 6900 98ec69acSJuan Quintelaconfig_host_mak="config-host.mak" 6901 97a847bcSbellard 6902 dbd99ae3SStefan Weilecho "# Automatically generated by configure - do not modify" >config-all-disas.mak 6903 dbd99ae3SStefan Weil 6904 98ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak 6905 98ec69acSJuan Quintelaecho >> $config_host_mak 6906 98ec69acSJuan Quintela 6907 e6c3b0f7SPaolo Bonziniecho all: >> $config_host_mak 6908 99d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak 6909 99d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak 6910 3aa5d2beSAlon Levyecho "libdir=$libdir" >> $config_host_mak 6911 8bf188aaSMichael Tokarevecho "libexecdir=$libexecdir" >> $config_host_mak 6912 0f94d6daSAlon Levyecho "includedir=$includedir" >> $config_host_mak 6913 99d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak 6914 99d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak 6915 22d07038SEduardo Habkostecho "qemu_confdir=$qemu_confdir" >> $config_host_mak 6916 9afa52ceSEduardo Habkostecho "qemu_datadir=$qemu_datadir" >> $config_host_mak 6917 3d5eecabSGerd Hoffmannecho "qemu_firmwarepath=$firmwarepath" >> $config_host_mak 6918 9afa52ceSEduardo Habkostecho "qemu_docdir=$qemu_docdir" >> $config_host_mak 6919 e26110cfSFam Zhengecho "qemu_moddir=$qemu_moddir" >> $config_host_mak 6920 5a699bbbSLaszlo Ersekif test "$mingw32" = "no" ; then 6921 785c23aeSLuiz Capitulino echo "qemu_localstatedir=$local_statedir" >> $config_host_mak 6922 5a699bbbSLaszlo Ersekfi 6923 f354b1a1SMichael Tokarevecho "qemu_helperdir=$libexecdir" >> $config_host_mak 6924 834574eaSAnthony Liguoriecho "qemu_localedir=$qemu_localedir" >> $config_host_mak 6925 a8260d38SDaniel P. Berrangéecho "qemu_icondir=$qemu_icondir" >> $config_host_mak 6926 67ea9546SDaniel P. Berrangéecho "qemu_desktopdir=$qemu_desktopdir" >> $config_host_mak 6927 02f9135bSDaniel P. Berrangéecho "libs_cpu=$libs_cpu" >> $config_host_mak 6928 f544a488SPaolo Bonziniecho "libs_softmmu=$libs_softmmu" >> $config_host_mak 6929 cc84d63aSDaniel P. Berrangeecho "GIT=$git" >> $config_host_mak 6930 aef45d51SDaniel P. Berrangeecho "GIT_SUBMODULES=$git_submodules" >> $config_host_mak 6931 f62bbee5SDaniel P. Berrangeecho "GIT_UPDATE=$git_update" >> $config_host_mak 6932 804edf29SJuan Quintela 6933 98ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak 6934 727e5283SPaolo Bonzini 6935 777dddc5SAlex Bennéeecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 6936 777dddc5SAlex Bennéeecho "GLIB_LDFLAGS=$glib_ldflags" >> $config_host_mak 6937 777dddc5SAlex Bennée 6938 f3494749SPaolo Bonziniif test "$default_devices" = "yes" ; then 6939 f3494749SPaolo Bonzini echo "CONFIG_MINIKCONF_MODE=--defconfig" >> $config_host_mak 6940 f3494749SPaolo Bonzinielse 6941 f3494749SPaolo Bonzini echo "CONFIG_MINIKCONF_MODE=--allnoconfig" >> $config_host_mak 6942 f3494749SPaolo Bonzinifi 6943 f8393946Saurel32if test "$debug_tcg" = "yes" ; then 6944 2358a494SJuan Quintela echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak 6945 f8393946Saurel32fi 6946 1625af87Saliguoriif test "$strip_opt" = "yes" ; then 6947 52ba784dSHollis Blanchard echo "STRIP=${strip}" >> $config_host_mak 6948 1625af87Saliguorifi 6949 7d13299dSbellardif test "$bigendian" = "yes" ; then 6950 e2542fe2SJuan Quintela echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak 6951 97a847bcSbellardfi 6952 67b915a5Sbellardif test "$mingw32" = "yes" ; then 6953 98ec69acSJuan Quintela echo "CONFIG_WIN32=y" >> $config_host_mak 6954 89138857SStefan Weil rc_version=$(cat $source_path/VERSION) 6955 9fe6de94SBlue Swirl version_major=${rc_version%%.*} 6956 9fe6de94SBlue Swirl rc_version=${rc_version#*.} 6957 9fe6de94SBlue Swirl version_minor=${rc_version%%.*} 6958 9fe6de94SBlue Swirl rc_version=${rc_version#*.} 6959 9fe6de94SBlue Swirl version_subminor=${rc_version%%.*} 6960 9fe6de94SBlue Swirl version_micro=0 6961 9fe6de94SBlue Swirl echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 6962 9fe6de94SBlue Swirl echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak 6963 d9840e25STomoki Sekiyama if test "$guest_agent_with_vss" = "yes" ; then 6964 d9840e25STomoki Sekiyama echo "CONFIG_QGA_VSS=y" >> $config_host_mak 6965 f33ca81fSMichael Roth echo "QGA_VSS_PROVIDER=$qga_vss_provider" >> $config_host_mak 6966 d9840e25STomoki Sekiyama echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak 6967 d9840e25STomoki Sekiyama fi 6968 50cbebb9SMichael Roth if test "$guest_agent_ntddscsi" = "yes" ; then 6969 76dc75caSTomáš Golembiovský echo "CONFIG_QGA_NTDDSCSI=y" >> $config_host_mak 6970 50cbebb9SMichael Roth fi 6971 1a34904eSMichael Roth if test "$guest_agent_msi" = "yes"; then 6972 9dacf32dSYossi Hindin echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak 6973 9dacf32dSYossi Hindin echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak 6974 9dacf32dSYossi Hindin echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak 6975 9dacf32dSYossi Hindin echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak 6976 9dacf32dSYossi Hindin echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak 6977 9dacf32dSYossi Hindin echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak 6978 9dacf32dSYossi Hindin echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak 6979 9dacf32dSYossi Hindin fi 6980 210fa556Spbrookelse 6981 35f4df27SJuan Quintela echo "CONFIG_POSIX=y" >> $config_host_mak 6982 210fa556Spbrookfi 6983 128ab2ffSblueswir1 6984 dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then 6985 dffcb71cSMark McLoughlin echo "CONFIG_LINUX=y" >> $config_host_mak 6986 dffcb71cSMark McLoughlinfi 6987 dffcb71cSMark McLoughlin 6988 83fb7adfSbellardif test "$darwin" = "yes" ; then 6989 98ec69acSJuan Quintela echo "CONFIG_DARWIN=y" >> $config_host_mak 6990 83fb7adfSbellardfi 6991 b29fe3edSmalc 6992 ec530c81Sbellardif test "$solaris" = "yes" ; then 6993 98ec69acSJuan Quintela echo "CONFIG_SOLARIS=y" >> $config_host_mak 6994 ec530c81Sbellardfi 6995 179cf400SAndreas Färberif test "$haiku" = "yes" ; then 6996 179cf400SAndreas Färber echo "CONFIG_HAIKU=y" >> $config_host_mak 6997 179cf400SAndreas Färberfi 6998 97a847bcSbellardif test "$static" = "yes" ; then 6999 98ec69acSJuan Quintela echo "CONFIG_STATIC=y" >> $config_host_mak 7000 97a847bcSbellardfi 7001 1ba16968SStefan Weilif test "$profiler" = "yes" ; then 7002 2358a494SJuan Quintela echo "CONFIG_PROFILER=y" >> $config_host_mak 7003 05c2a3e7Sbellardfi 7004 c932ce31SPaolo Bonziniif test "$want_tools" = "yes" ; then 7005 c932ce31SPaolo Bonzini echo "CONFIG_TOOLS=y" >> $config_host_mak 7006 c932ce31SPaolo Bonzinifi 7007 f15bff25SPaolo Bonziniif test "$guest_agent" = "yes" ; then 7008 f15bff25SPaolo Bonzini echo "CONFIG_GUEST_AGENT=y" >> $config_host_mak 7009 f15bff25SPaolo Bonzinifi 7010 675b9b53SMarc-André Lureauif test "$slirp" != "no"; then 7011 98ec69acSJuan Quintela echo "CONFIG_SLIRP=y" >> $config_host_mak 7012 e2d8830eSBrad echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak 7013 675b9b53SMarc-André Lureau echo "SLIRP_CFLAGS=$slirp_cflags" >> $config_host_mak 7014 675b9b53SMarc-André Lureau echo "SLIRP_LIBS=$slirp_libs" >> $config_host_mak 7015 675b9b53SMarc-André Lureaufi 7016 7c57bdd8SMarc-André Lureauif [ "$slirp" = "git" -o "$slirp" = "internal" ]; then 7017 3b8593eeSMarkus Armbruster echo "config-host.h: slirp/all" >> $config_host_mak 7018 c20709aaSbellardfi 7019 8a16d273Sthsif test "$vde" = "yes" ; then 7020 98ec69acSJuan Quintela echo "CONFIG_VDE=y" >> $config_host_mak 7021 e2ad6f16SFam Zheng echo "VDE_LIBS=$vde_libs" >> $config_host_mak 7022 8a16d273Sthsfi 7023 58952137SVincenzo Maffioneif test "$netmap" = "yes" ; then 7024 58952137SVincenzo Maffione echo "CONFIG_NETMAP=y" >> $config_host_mak 7025 58952137SVincenzo Maffionefi 7026 015a33bdSGongleiif test "$l2tpv3" = "yes" ; then 7027 015a33bdSGonglei echo "CONFIG_L2TPV3=y" >> $config_host_mak 7028 015a33bdSGongleifi 7029 4cc600d2SPaolo Bonziniif test "$gprof" = "yes" ; then 7030 4cc600d2SPaolo Bonzini echo "CONFIG_GPROF=y" >> $config_host_mak 7031 4cc600d2SPaolo Bonzinifi 7032 47e98658SCorey Bryantif test "$cap_ng" = "yes" ; then 7033 a358bca2SPaolo Bonzini echo "CONFIG_LIBCAP_NG=y" >> $config_host_mak 7034 3f99cf57SPaolo Bonzini echo "LIBCAP_NG_LIBS=$cap_libs" >> $config_host_mak 7035 47e98658SCorey Bryantfi 7036 2358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak 7037 0c58ac1cSmalcfor drv in $audio_drv_list; do 7038 1ef1ec2aSGerd Hoffmann def=CONFIG_AUDIO_$(echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]') 7039 ce3dc033SGerd Hoffmann case "$drv" in 7040 051c7d5cSGerd Hoffmann alsa | oss | pa | sdl) 7041 ce3dc033SGerd Hoffmann echo "$def=m" >> $config_host_mak ;; 7042 ce3dc033SGerd Hoffmann *) 7043 ce3dc033SGerd Hoffmann echo "$def=y" >> $config_host_mak ;; 7044 ce3dc033SGerd Hoffmann esac 7045 0c58ac1cSmalcdone 7046 478e943fSPaolo Bonziniif test "$alsa" = "yes" ; then 7047 478e943fSPaolo Bonzini echo "CONFIG_ALSA=y" >> $config_host_mak 7048 478e943fSPaolo Bonzinifi 7049 b1149911SFam Zhengecho "ALSA_LIBS=$alsa_libs" >> $config_host_mak 7050 478e943fSPaolo Bonziniecho "ALSA_CFLAGS=$alsa_cflags" >> $config_host_mak 7051 478e943fSPaolo Bonziniif test "$libpulse" = "yes" ; then 7052 478e943fSPaolo Bonzini echo "CONFIG_LIBPULSE=y" >> $config_host_mak 7053 478e943fSPaolo Bonzinifi 7054 b1149911SFam Zhengecho "PULSE_LIBS=$pulse_libs" >> $config_host_mak 7055 478e943fSPaolo Bonziniecho "PULSE_CFLAGS=$pulse_cflags" >> $config_host_mak 7056 b1149911SFam Zhengecho "COREAUDIO_LIBS=$coreaudio_libs" >> $config_host_mak 7057 b1149911SFam Zhengecho "DSOUND_LIBS=$dsound_libs" >> $config_host_mak 7058 b1149911SFam Zhengecho "OSS_LIBS=$oss_libs" >> $config_host_mak 7059 478e943fSPaolo Bonziniif test "$libjack" = "yes" ; then 7060 478e943fSPaolo Bonzini echo "CONFIG_LIBJACK=y" >> $config_host_mak 7061 478e943fSPaolo Bonzinifi 7062 2e445703SGeoffrey McRaeecho "JACK_LIBS=$jack_libs" >> $config_host_mak 7063 d5631638Smalcif test "$audio_win_int" = "yes" ; then 7064 d5631638Smalc echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak 7065 d5631638Smalcfi 7066 b64ec4e4SFam Zhengecho "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak 7067 b64ec4e4SFam Zhengecho "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak 7068 821601eaSJes Sorensenif test "$vnc" = "yes" ; then 7069 821601eaSJes Sorensen echo "CONFIG_VNC=y" >> $config_host_mak 7070 821601eaSJes Sorensenfi 7071 2f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then 7072 98ec69acSJuan Quintela echo "CONFIG_VNC_SASL=y" >> $config_host_mak 7073 2f9606b3Saliguorifi 7074 2b1ccdf4SMarc-André Lureauecho "SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak 7075 2b1ccdf4SMarc-André Lureauecho "SASL_LIBS=$vnc_sasl_libs" >> $config_host_mak 7076 821601eaSJes Sorensenif test "$vnc_jpeg" = "yes" ; then 7077 2f6f5c7aSCorentin Chary echo "CONFIG_VNC_JPEG=y" >> $config_host_mak 7078 2f6f5c7aSCorentin Charyfi 7079 2b1ccdf4SMarc-André Lureauecho "JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak 7080 2b1ccdf4SMarc-André Lureauecho "JPEG_LIBS=$vnc_jpeg_libs" >> $config_host_mak 7081 821601eaSJes Sorensenif test "$vnc_png" = "yes" ; then 7082 efe556adSCorentin Chary echo "CONFIG_VNC_PNG=y" >> $config_host_mak 7083 efe556adSCorentin Charyfi 7084 2b1ccdf4SMarc-André Lureauecho "PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak 7085 2b1ccdf4SMarc-André Lureauecho "PNG_LIBS=$vnc_png_libs" >> $config_host_mak 7086 6a021536SGerd Hoffmannif test "$xkbcommon" = "yes" ; then 7087 ade60d4fSMarc-André Lureau echo "CONFIG_XKBCOMMON=y" >> $config_host_mak 7088 6a021536SGerd Hoffmann echo "XKBCOMMON_CFLAGS=$xkbcommon_cflags" >> $config_host_mak 7089 6a021536SGerd Hoffmann echo "XKBCOMMON_LIBS=$xkbcommon_libs" >> $config_host_mak 7090 6a021536SGerd Hoffmannfi 7091 dce512deSChristoph Hellwigif test "$xfs" = "yes" ; then 7092 dce512deSChristoph Hellwig echo "CONFIG_XFS=y" >> $config_host_mak 7093 dce512deSChristoph Hellwigfi 7094 89138857SStefan Weilqemu_version=$(head $source_path/VERSION) 7095 98ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak 7096 2358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak 7097 98ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak 7098 2b1f35b9SAlex Bennéeecho "TARGET_DIRS=$target_list" >> $config_host_mak 7099 a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then 7100 98ec69acSJuan Quintela echo "BUILD_DOCS=yes" >> $config_host_mak 7101 cc8ae6deSpbrookfi 7102 17969268SFam Zhengif test "$modules" = "yes"; then 7103 e26110cfSFam Zheng # $shacmd can generate a hash started with digit, which the compiler doesn't 7104 e26110cfSFam Zheng # like as an symbol. So prefix it with an underscore 7105 89138857SStefan Weil echo "CONFIG_STAMP=_$( (echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ )" >> $config_host_mak 7106 17969268SFam Zheng echo "CONFIG_MODULES=y" >> $config_host_mak 7107 17969268SFam Zhengfi 7108 bd83c861SChristian Ehrhardtif test "$module_upgrades" = "yes"; then 7109 bd83c861SChristian Ehrhardt echo "CONFIG_MODULE_UPGRADES=y" >> $config_host_mak 7110 bd83c861SChristian Ehrhardtfi 7111 e633a5c6SEric Blakeif test "$have_x11" = "yes" && test "$need_x11" = "yes"; then 7112 8781595bSGerd Hoffmann echo "CONFIG_X11=y" >> $config_host_mak 7113 8781595bSGerd Hoffmann echo "X11_CFLAGS=$x11_cflags" >> $config_host_mak 7114 8781595bSGerd Hoffmann echo "X11_LIBS=$x11_libs" >> $config_host_mak 7115 8781595bSGerd Hoffmannfi 7116 1ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then 7117 96400a14SGerd Hoffmann echo "CONFIG_SDL=m" >> $config_host_mak 7118 8ad3a7ddSJuan Quintela echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak 7119 8ecc89f6SFam Zheng echo "SDL_LIBS=$sdl_libs" >> $config_host_mak 7120 a442fe2fSDaniel P. Berrangé if test "$sdl_image" = "yes" ; then 7121 a442fe2fSDaniel P. Berrangé echo "CONFIG_SDL_IMAGE=y" >> $config_host_mak 7122 a442fe2fSDaniel P. Berrangé fi 7123 49ecc3faSbellardfi 7124 49ecc3faSbellardif test "$cocoa" = "yes" ; then 7125 98ec69acSJuan Quintela echo "CONFIG_COCOA=y" >> $config_host_mak 7126 49ecc3faSbellardfi 7127 e08bb301SSamuel Thibaultif test "$iconv" = "yes" ; then 7128 e08bb301SSamuel Thibault echo "CONFIG_ICONV=y" >> $config_host_mak 7129 e08bb301SSamuel Thibault echo "ICONV_CFLAGS=$iconv_cflags" >> $config_host_mak 7130 e08bb301SSamuel Thibault echo "ICONV_LIBS=$iconv_lib" >> $config_host_mak 7131 e08bb301SSamuel Thibaultfi 7132 4d3b6f6eSbalrogif test "$curses" = "yes" ; then 7133 2373f7d5SGerd Hoffmann echo "CONFIG_CURSES=m" >> $config_host_mak 7134 2373f7d5SGerd Hoffmann echo "CURSES_CFLAGS=$curses_inc" >> $config_host_mak 7135 2373f7d5SGerd Hoffmann echo "CURSES_LIBS=$curses_lib" >> $config_host_mak 7136 ab4e5602SJan Kiszkafi 7137 099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then 7138 2358a494SJuan Quintela echo "CONFIG_PIPE2=y" >> $config_host_mak 7139 099d6b0fSRiku Voipiofi 7140 40ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then 7141 40ff6d7eSKevin Wolf echo "CONFIG_ACCEPT4=y" >> $config_host_mak 7142 40ff6d7eSKevin Wolffi 7143 3ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then 7144 2358a494SJuan Quintela echo "CONFIG_SPLICE=y" >> $config_host_mak 7145 3ce34dfbSvibisreenivasanfi 7146 c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then 7147 c2882b96SRiku Voipio echo "CONFIG_EVENTFD=y" >> $config_host_mak 7148 c2882b96SRiku Voipiofi 7149 751bcc39SMarc-André Lureauif test "$memfd" = "yes" ; then 7150 751bcc39SMarc-André Lureau echo "CONFIG_MEMFD=y" >> $config_host_mak 7151 751bcc39SMarc-André Lureaufi 7152 955727d2SCortland Tölvaif test "$have_usbfs" = "yes" ; then 7153 955727d2SCortland Tölva echo "CONFIG_USBFS=y" >> $config_host_mak 7154 955727d2SCortland Tölvafi 7155 d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then 7156 d0927938SUlrich Hecht echo "CONFIG_FALLOCATE=y" >> $config_host_mak 7157 d0927938SUlrich Hechtfi 7158 3d4fa43eSKusanagi Kouichiif test "$fallocate_punch_hole" = "yes" ; then 7159 3d4fa43eSKusanagi Kouichi echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak 7160 3d4fa43eSKusanagi Kouichifi 7161 b953f075SDenis V. Lunevif test "$fallocate_zero_range" = "yes" ; then 7162 b953f075SDenis V. Lunev echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak 7163 b953f075SDenis V. Lunevfi 7164 ed911435SKevin Wolfif test "$posix_fallocate" = "yes" ; then 7165 ed911435SKevin Wolf echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak 7166 ed911435SKevin Wolffi 7167 c727f47dSPeter Maydellif test "$sync_file_range" = "yes" ; then 7168 c727f47dSPeter Maydell echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak 7169 c727f47dSPeter Maydellfi 7170 dace20dcSPeter Maydellif test "$fiemap" = "yes" ; then 7171 dace20dcSPeter Maydell echo "CONFIG_FIEMAP=y" >> $config_host_mak 7172 dace20dcSPeter Maydellfi 7173 d0927938SUlrich Hechtif test "$dup3" = "yes" ; then 7174 d0927938SUlrich Hecht echo "CONFIG_DUP3=y" >> $config_host_mak 7175 d0927938SUlrich Hechtfi 7176 4e0c6529SAlex Blighif test "$ppoll" = "yes" ; then 7177 4e0c6529SAlex Bligh echo "CONFIG_PPOLL=y" >> $config_host_mak 7178 4e0c6529SAlex Blighfi 7179 cd758dd0SAlex Blighif test "$prctl_pr_set_timerslack" = "yes" ; then 7180 cd758dd0SAlex Bligh echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak 7181 cd758dd0SAlex Blighfi 7182 3b6edd16SPeter Maydellif test "$epoll" = "yes" ; then 7183 3b6edd16SPeter Maydell echo "CONFIG_EPOLL=y" >> $config_host_mak 7184 3b6edd16SPeter Maydellfi 7185 3b6edd16SPeter Maydellif test "$epoll_create1" = "yes" ; then 7186 3b6edd16SPeter Maydell echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak 7187 3b6edd16SPeter Maydellfi 7188 a8fd1abaSPeter Maydellif test "$sendfile" = "yes" ; then 7189 a8fd1abaSPeter Maydell echo "CONFIG_SENDFILE=y" >> $config_host_mak 7190 a8fd1abaSPeter Maydellfi 7191 51834341SRiku Voipioif test "$timerfd" = "yes" ; then 7192 51834341SRiku Voipio echo "CONFIG_TIMERFD=y" >> $config_host_mak 7193 51834341SRiku Voipiofi 7194 9af5c906SRiku Voipioif test "$setns" = "yes" ; then 7195 9af5c906SRiku Voipio echo "CONFIG_SETNS=y" >> $config_host_mak 7196 9af5c906SRiku Voipiofi 7197 38860a03SAleksandar Markovicif test "$clock_adjtime" = "yes" ; then 7198 38860a03SAleksandar Markovic echo "CONFIG_CLOCK_ADJTIME=y" >> $config_host_mak 7199 38860a03SAleksandar Markovicfi 7200 5a03cd00SAleksandar Markovicif test "$syncfs" = "yes" ; then 7201 5a03cd00SAleksandar Markovic echo "CONFIG_SYNCFS=y" >> $config_host_mak 7202 5a03cd00SAleksandar Markovicfi 7203 db37dd89SAleksandar Markovicif test "$kcov" = "yes" ; then 7204 db37dd89SAleksandar Markovic echo "CONFIG_KCOV=y" >> $config_host_mak 7205 db37dd89SAleksandar Markovicfi 7206 3b3f24adSaurel32if test "$inotify" = "yes" ; then 7207 2358a494SJuan Quintela echo "CONFIG_INOTIFY=y" >> $config_host_mak 7208 3b3f24adSaurel32fi 7209 c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then 7210 c05c7a73SRiku Voipio echo "CONFIG_INOTIFY1=y" >> $config_host_mak 7211 c05c7a73SRiku Voipiofi 7212 401bc051SPeter Maydellif test "$sem_timedwait" = "yes" ; then 7213 401bc051SPeter Maydell echo "CONFIG_SEM_TIMEDWAIT=y" >> $config_host_mak 7214 401bc051SPeter Maydellfi 7215 5c99fa37SKeno Fischerif test "$strchrnul" = "yes" ; then 7216 5c99fa37SKeno Fischer echo "HAVE_STRCHRNUL=y" >> $config_host_mak 7217 5c99fa37SKeno Fischerfi 7218 8a792b03SJiufei Xueif test "$st_atim" = "yes" ; then 7219 8a792b03SJiufei Xue echo "HAVE_STRUCT_STAT_ST_ATIM=y" >> $config_host_mak 7220 8a792b03SJiufei Xuefi 7221 6ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then 7222 6ae9a1f4SJuan Quintela echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak 7223 6ae9a1f4SJuan Quintelafi 7224 6ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then 7225 6ae9a1f4SJuan Quintela echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak 7226 6ae9a1f4SJuan Quintelafi 7227 769ce76dSAlexander Grafif test "$curl" = "yes" ; then 7228 d3399d7cSFam Zheng echo "CONFIG_CURL=m" >> $config_host_mak 7229 b1d5a277SJuan Quintela echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak 7230 6ebc91e5SFam Zheng echo "CURL_LIBS=$curl_libs" >> $config_host_mak 7231 769ce76dSAlexander Graffi 7232 2e4d9fb1Saurel32if test "$brlapi" = "yes" ; then 7233 98ec69acSJuan Quintela echo "CONFIG_BRLAPI=y" >> $config_host_mak 7234 8eca2889SFam Zheng echo "BRLAPI_LIBS=$brlapi_libs" >> $config_host_mak 7235 2e4d9fb1Saurel32fi 7236 a4ccabcfSAnthony Liguoriif test "$gtk" = "yes" ; then 7237 e0fb129cSGerd Hoffmann echo "CONFIG_GTK=m" >> $config_host_mak 7238 a4ccabcfSAnthony Liguori echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak 7239 014cb152SGerd Hoffmann echo "GTK_LIBS=$gtk_libs" >> $config_host_mak 7240 925a0400SGerd Hoffmann if test "$gtk_gl" = "yes" ; then 7241 925a0400SGerd Hoffmann echo "CONFIG_GTK_GL=y" >> $config_host_mak 7242 925a0400SGerd Hoffmann fi 7243 bbbf9bfbSStefan Weilfi 7244 f876b765SMarc-André Lureauif test "$gio" = "yes" ; then 7245 f876b765SMarc-André Lureau echo "CONFIG_GIO=y" >> $config_host_mak 7246 f876b765SMarc-André Lureau echo "GIO_CFLAGS=$gio_cflags" >> $config_host_mak 7247 f876b765SMarc-André Lureau echo "GIO_LIBS=$gio_libs" >> $config_host_mak 7248 25a97a56SMarc-André Lureau echo "GDBUS_CODEGEN=$gdbus_codegen" >> $config_host_mak 7249 f876b765SMarc-André Lureaufi 7250 a1c5e949SDaniel P. Berrangeecho "CONFIG_TLS_PRIORITY=\"$tls_priority\"" >> $config_host_mak 7251 ddbb0d09SDaniel P. Berrangeif test "$gnutls" = "yes" ; then 7252 ddbb0d09SDaniel P. Berrange echo "CONFIG_GNUTLS=y" >> $config_host_mak 7253 a81df1b6SPaolo Bonzini echo "GNUTLS_CFLAGS=$gnutls_cflags" >> $config_host_mak 7254 a81df1b6SPaolo Bonzini echo "GNUTLS_LIBS=$gnutls_libs" >> $config_host_mak 7255 ddbb0d09SDaniel P. Berrangefi 7256 91bfcdb0SDaniel P. Berrangeif test "$gcrypt" = "yes" ; then 7257 91bfcdb0SDaniel P. Berrange echo "CONFIG_GCRYPT=y" >> $config_host_mak 7258 1f923c70SLongpeng(Mike) if test "$gcrypt_hmac" = "yes" ; then 7259 1f923c70SLongpeng(Mike) echo "CONFIG_GCRYPT_HMAC=y" >> $config_host_mak 7260 1f923c70SLongpeng(Mike) fi 7261 62893b67SDaniel P. Berrangefi 7262 91bfcdb0SDaniel P. Berrangeif test "$nettle" = "yes" ; then 7263 91bfcdb0SDaniel P. Berrange echo "CONFIG_NETTLE=y" >> $config_host_mak 7264 becaeb72SRadim Krčmář echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak 7265 a81df1b6SPaolo Bonzini echo "NETTLE_CFLAGS=$nettle_cflags" >> $config_host_mak 7266 a81df1b6SPaolo Bonzini echo "NETTLE_LIBS=$nettle_libs" >> $config_host_mak 7267 ed754746SDaniel P. Berrangefi 7268 e0576942SDaniel P. Berrangéif test "$qemu_private_xts" = "yes" ; then 7269 e0576942SDaniel P. Berrangé echo "CONFIG_QEMU_PRIVATE_XTS=y" >> $config_host_mak 7270 e0576942SDaniel P. Berrangéfi 7271 9a2fd434SDaniel P. Berrangeif test "$tasn1" = "yes" ; then 7272 9a2fd434SDaniel P. Berrange echo "CONFIG_TASN1=y" >> $config_host_mak 7273 9a2fd434SDaniel P. Berrangefi 7274 8953caf3SDaniel P. Berrangeif test "$auth_pam" = "yes" ; then 7275 8953caf3SDaniel P. Berrange echo "CONFIG_AUTH_PAM=y" >> $config_host_mak 7276 8953caf3SDaniel P. Berrangefi 7277 559607eaSDaniel P. Berrangeif test "$have_ifaddrs_h" = "yes" ; then 7278 559607eaSDaniel P. Berrange echo "HAVE_IFADDRS_H=y" >> $config_host_mak 7279 559607eaSDaniel P. Berrangefi 7280 e865b97fSChen Gangif test "$have_drm_h" = "yes" ; then 7281 e865b97fSChen Gang echo "HAVE_DRM_H=y" >> $config_host_mak 7282 e865b97fSChen Gangfi 7283 6b39b063SEric Blakeif test "$have_broken_size_max" = "yes" ; then 7284 6b39b063SEric Blake echo "HAVE_BROKEN_SIZE_MAX=y" >> $config_host_mak 7285 6b39b063SEric Blakefi 7286 9df8b20dSThomas Huthif test "$have_openpty" = "yes" ; then 7287 9df8b20dSThomas Huth echo "HAVE_OPENPTY=y" >> $config_host_mak 7288 9df8b20dSThomas Huthfi 7289 2a4b472cSDavid CARLIERif test "$have_sys_signal_h" = "yes" ; then 7290 2a4b472cSDavid CARLIER echo "HAVE_SYS_SIGNAL_H=y" >> $config_host_mak 7291 2a4b472cSDavid CARLIERfi 7292 277abf15SJan Vesely 7293 277abf15SJan Vesely# Work around a system header bug with some kernel/XFS header 7294 277abf15SJan Vesely# versions where they both try to define 'struct fsxattr': 7295 277abf15SJan Vesely# xfs headers will not try to redefine structs from linux headers 7296 277abf15SJan Vesely# if this macro is set. 7297 277abf15SJan Veselyif test "$have_fsxattr" = "yes" ; then 7298 277abf15SJan Vesely echo "HAVE_FSXATTR=y" >> $config_host_mak 7299 277abf15SJan Veselyfi 7300 1efad060SFam Zhengif test "$have_copy_file_range" = "yes" ; then 7301 1efad060SFam Zheng echo "HAVE_COPY_FILE_RANGE=y" >> $config_host_mak 7302 1efad060SFam Zhengfi 7303 bbbf9bfbSStefan Weilif test "$vte" = "yes" ; then 7304 bbbf9bfbSStefan Weil echo "CONFIG_VTE=y" >> $config_host_mak 7305 a4ccabcfSAnthony Liguori echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak 7306 e0fb129cSGerd Hoffmann echo "VTE_LIBS=$vte_libs" >> $config_host_mak 7307 a4ccabcfSAnthony Liguorifi 7308 9d9e1521SGerd Hoffmannif test "$virglrenderer" = "yes" ; then 7309 9d9e1521SGerd Hoffmann echo "CONFIG_VIRGL=y" >> $config_host_mak 7310 9d9e1521SGerd Hoffmann echo "VIRGL_CFLAGS=$virgl_cflags" >> $config_host_mak 7311 9d9e1521SGerd Hoffmann echo "VIRGL_LIBS=$virgl_libs" >> $config_host_mak 7312 9d9e1521SGerd Hoffmannfi 7313 e37630caSaliguoriif test "$xen" = "yes" ; then 7314 6dbd588aSJan Kiszka echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak 7315 d5b93ddfSAnthony PERARD echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak 7316 e37630caSaliguorifi 7317 5c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then 7318 5c6c3a6cSChristoph Hellwig echo "CONFIG_LINUX_AIO=y" >> $config_host_mak 7319 5c6c3a6cSChristoph Hellwigfi 7320 c10dd856SAarushi Mehtaif test "$linux_io_uring" = "yes" ; then 7321 c10dd856SAarushi Mehta echo "CONFIG_LINUX_IO_URING=y" >> $config_host_mak 7322 c10dd856SAarushi Mehta echo "LINUX_IO_URING_CFLAGS=$linux_io_uring_cflags" >> $config_host_mak 7323 c10dd856SAarushi Mehta echo "LINUX_IO_URING_LIBS=$linux_io_uring_libs" >> $config_host_mak 7324 c10dd856SAarushi Mehtafi 7325 758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then 7326 758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_ATTR=y" >> $config_host_mak 7327 ec0d5893SMarc-André Lureau echo "LIBATTR_LIBS=$libattr_libs" >> $config_host_mak 7328 758e8e38SVenkateswararao Jujjuri (JV)fi 7329 4f26f2b6SAvi Kivityif test "$libattr" = "yes" ; then 7330 4f26f2b6SAvi Kivity echo "CONFIG_LIBATTR=y" >> $config_host_mak 7331 4f26f2b6SAvi Kivityfi 7332 983eef5aSMeador Ingeif test "$virtfs" = "yes" ; then 7333 758e8e38SVenkateswararao Jujjuri (JV) echo "CONFIG_VIRTFS=y" >> $config_host_mak 7334 758e8e38SVenkateswararao Jujjuri (JV)fi 7335 fe8fc5aeSPaolo Bonziniif test "$mpath" = "yes" ; then 7336 fe8fc5aeSPaolo Bonzini echo "CONFIG_MPATH=y" >> $config_host_mak 7337 1b0578f5SMurilo Opsfelder Araujo if test "$mpathpersist_new_api" = "yes"; then 7338 1b0578f5SMurilo Opsfelder Araujo echo "CONFIG_MPATH_NEW_API=y" >> $config_host_mak 7339 1b0578f5SMurilo Opsfelder Araujo fi 7340 fe8fc5aeSPaolo Bonzinifi 7341 5e9be92dSNicholas Bellingerif test "$vhost_scsi" = "yes" ; then 7342 5e9be92dSNicholas Bellinger echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak 7343 5e9be92dSNicholas Bellingerfi 7344 af3bba76SPaolo Bonziniif test "$vhost_net" = "yes" ; then 7345 af3bba76SPaolo Bonzini echo "CONFIG_VHOST_NET=y" >> $config_host_mak 7346 af3bba76SPaolo Bonzinifi 7347 af3bba76SPaolo Bonziniif test "$vhost_net_user" = "yes" ; then 7348 56f41de7SPaolo Bonzini echo "CONFIG_VHOST_NET_USER=y" >> $config_host_mak 7349 03ce5744SNikolay Nikolaevfi 7350 108a6481SCindy Luif test "$vhost_net_vdpa" = "yes" ; then 7351 108a6481SCindy Lu echo "CONFIG_VHOST_NET_VDPA=y" >> $config_host_mak 7352 108a6481SCindy Lufi 7353 042cea27SGongleiif test "$vhost_crypto" = "yes" ; then 7354 042cea27SGonglei echo "CONFIG_VHOST_CRYPTO=y" >> $config_host_mak 7355 042cea27SGongleifi 7356 fc0b9b0eSStefan Hajnocziif test "$vhost_vsock" = "yes" ; then 7357 fc0b9b0eSStefan Hajnoczi echo "CONFIG_VHOST_VSOCK=y" >> $config_host_mak 7358 5fe97d88SStefano Garzarella if test "$vhost_user" = "yes" ; then 7359 5fe97d88SStefano Garzarella echo "CONFIG_VHOST_USER_VSOCK=y" >> $config_host_mak 7360 5fe97d88SStefano Garzarella fi 7361 fc0b9b0eSStefan Hajnoczifi 7362 299e6f19SPaolo Bonziniif test "$vhost_kernel" = "yes" ; then 7363 299e6f19SPaolo Bonzini echo "CONFIG_VHOST_KERNEL=y" >> $config_host_mak 7364 299e6f19SPaolo Bonzinifi 7365 e6a74868SMarc-André Lureauif test "$vhost_user" = "yes" ; then 7366 e6a74868SMarc-André Lureau echo "CONFIG_VHOST_USER=y" >> $config_host_mak 7367 e6a74868SMarc-André Lureaufi 7368 108a6481SCindy Luif test "$vhost_vdpa" = "yes" ; then 7369 108a6481SCindy Lu echo "CONFIG_VHOST_VDPA=y" >> $config_host_mak 7370 108a6481SCindy Lufi 7371 98fc1adaSDr. David Alan Gilbertif test "$vhost_user_fs" = "yes" ; then 7372 98fc1adaSDr. David Alan Gilbert echo "CONFIG_VHOST_USER_FS=y" >> $config_host_mak 7373 98fc1adaSDr. David Alan Gilbertfi 7374 77755340Sthsif test "$blobs" = "yes" ; then 7375 98ec69acSJuan Quintela echo "INSTALL_BLOBS=yes" >> $config_host_mak 7376 77755340Sthsfi 7377 bf9298b9Saliguoriif test "$iovec" = "yes" ; then 7378 2358a494SJuan Quintela echo "CONFIG_IOVEC=y" >> $config_host_mak 7379 bf9298b9Saliguorifi 7380 ceb42de8Saliguoriif test "$preadv" = "yes" ; then 7381 2358a494SJuan Quintela echo "CONFIG_PREADV=y" >> $config_host_mak 7382 ceb42de8Saliguorifi 7383 e3971d61SPhilippe Mathieu-Daudéif test "$fdt" != "no" ; then 7384 3f0855b1SJuan Quintela echo "CONFIG_FDT=y" >> $config_host_mak 7385 4a96337dSPaolo Bonzini echo "FDT_CFLAGS=$fdt_cflags" >> $config_host_mak 7386 4a96337dSPaolo Bonzini echo "FDT_LIBS=$fdt_ldflags $fdt_libs" >> $config_host_mak 7387 f652e6afSaurel32fi 7388 a40161cbSPaolo Bonziniif test "$membarrier" = "yes" ; then 7389 a40161cbSPaolo Bonzini echo "CONFIG_MEMBARRIER=y" >> $config_host_mak 7390 a40161cbSPaolo Bonzinifi 7391 dcc38d1cSMarcelo Tosattiif test "$signalfd" = "yes" ; then 7392 dcc38d1cSMarcelo Tosatti echo "CONFIG_SIGNALFD=y" >> $config_host_mak 7393 dcc38d1cSMarcelo Tosattifi 7394 d339d766SRichard W.M. Jonesif test "$optreset" = "yes" ; then 7395 d339d766SRichard W.M. Jones echo "HAVE_OPTRESET=y" >> $config_host_mak 7396 d339d766SRichard W.M. Jonesfi 7397 b3f6ea7eSPaolo Bonziniif test "$tcg" = "yes"; then 7398 b3f6ea7eSPaolo Bonzini echo "CONFIG_TCG=y" >> $config_host_mak 7399 9195b2c2SStefan Weil if test "$tcg_interpreter" = "yes" ; then 7400 9195b2c2SStefan Weil echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak 7401 9195b2c2SStefan Weil fi 7402 b3f6ea7eSPaolo Bonzinifi 7403 5f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then 7404 5f6b9e8fSBlue Swirl echo "CONFIG_FDATASYNC=y" >> $config_host_mak 7405 5f6b9e8fSBlue Swirlfi 7406 e78815a5SAndreas Färberif test "$madvise" = "yes" ; then 7407 e78815a5SAndreas Färber echo "CONFIG_MADVISE=y" >> $config_host_mak 7408 e78815a5SAndreas Färberfi 7409 e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then 7410 e78815a5SAndreas Färber echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak 7411 e78815a5SAndreas Färberfi 7412 9bc5a719SAndreas Gustafssonif test "$posix_memalign" = "yes" ; then 7413 9bc5a719SAndreas Gustafsson echo "CONFIG_POSIX_MEMALIGN=y" >> $config_host_mak 7414 9bc5a719SAndreas Gustafssonfi 7415 5e5733e5SMarc-André Lureauif test "$zlib" != "no" ; then 7416 5e5733e5SMarc-André Lureau echo "CONFIG_ZLIB=y" >> $config_host_mak 7417 5e5733e5SMarc-André Lureau echo "ZLIB_CFLAGS=$zlib_cflags" >> $config_host_mak 7418 5e5733e5SMarc-André Lureau echo "ZLIB_LIBS=$zlib_libs" >> $config_host_mak 7419 5e5733e5SMarc-André Lureaufi 7420 cd4ec0b4SGerd Hoffmannif test "$spice" = "yes" ; then 7421 cd4ec0b4SGerd Hoffmann echo "CONFIG_SPICE=y" >> $config_host_mak 7422 2634733cSPaolo Bonzini echo "SPICE_CFLAGS=$spice_cflags" >> $config_host_mak 7423 2634733cSPaolo Bonzini echo "SPICE_LIBS=$spice_libs" >> $config_host_mak 7424 cd4ec0b4SGerd Hoffmannfi 7425 cd4ec0b4SGerd Hoffmann 7426 7b02f544SMarc-André Lureauif test "$smartcard" = "yes" ; then 7427 7b02f544SMarc-André Lureau echo "CONFIG_SMARTCARD=y" >> $config_host_mak 7428 7b62bf5aSFam Zheng echo "SMARTCARD_CFLAGS=$libcacard_cflags" >> $config_host_mak 7429 7b62bf5aSFam Zheng echo "SMARTCARD_LIBS=$libcacard_libs" >> $config_host_mak 7430 111a38b0SRobert Relyeafi 7431 111a38b0SRobert Relyea 7432 2b2325ffSGerd Hoffmannif test "$libusb" = "yes" ; then 7433 2b2325ffSGerd Hoffmann echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak 7434 b878b652SFam Zheng echo "LIBUSB_CFLAGS=$libusb_cflags" >> $config_host_mak 7435 b878b652SFam Zheng echo "LIBUSB_LIBS=$libusb_libs" >> $config_host_mak 7436 2b2325ffSGerd Hoffmannfi 7437 2b2325ffSGerd Hoffmann 7438 69354a83SHans de Goedeif test "$usb_redir" = "yes" ; then 7439 69354a83SHans de Goede echo "CONFIG_USB_REDIR=y" >> $config_host_mak 7440 cc7923fcSFam Zheng echo "USB_REDIR_CFLAGS=$usb_redir_cflags" >> $config_host_mak 7441 cc7923fcSFam Zheng echo "USB_REDIR_LIBS=$usb_redir_libs" >> $config_host_mak 7442 69354a83SHans de Goedefi 7443 69354a83SHans de Goede 7444 da076ffeSGerd Hoffmannif test "$opengl" = "yes" ; then 7445 da076ffeSGerd Hoffmann echo "CONFIG_OPENGL=y" >> $config_host_mak 7446 da076ffeSGerd Hoffmann echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak 7447 014cb152SGerd Hoffmann if test "$opengl_dmabuf" = "yes" ; then 7448 014cb152SGerd Hoffmann echo "CONFIG_OPENGL_DMABUF=y" >> $config_host_mak 7449 014cb152SGerd Hoffmann fi 7450 20ff075bSMichael Wallefi 7451 20ff075bSMichael Walle 7452 d52c454aSMarc-André Lureauif test "$gbm" = "yes" ; then 7453 d52c454aSMarc-André Lureau echo "CONFIG_GBM=y" >> $config_host_mak 7454 d52c454aSMarc-André Lureau echo "GBM_LIBS=$gbm_libs" >> $config_host_mak 7455 d52c454aSMarc-André Lureau echo "GBM_CFLAGS=$gbm_cflags" >> $config_host_mak 7456 d52c454aSMarc-André Lureaufi 7457 d52c454aSMarc-André Lureau 7458 d52c454aSMarc-André Lureau 7459 5a22ab71SYang Zhongif test "$malloc_trim" = "yes" ; then 7460 5a22ab71SYang Zhong echo "CONFIG_MALLOC_TRIM=y" >> $config_host_mak 7461 5a22ab71SYang Zhongfi 7462 5a22ab71SYang Zhong 7463 99f2dbd3SLiang Liif test "$avx2_opt" = "yes" ; then 7464 99f2dbd3SLiang Li echo "CONFIG_AVX2_OPT=y" >> $config_host_mak 7465 99f2dbd3SLiang Lifi 7466 99f2dbd3SLiang Li 7467 6b8cd447SRobert Hooif test "$avx512f_opt" = "yes" ; then 7468 6b8cd447SRobert Hoo echo "CONFIG_AVX512F_OPT=y" >> $config_host_mak 7469 6b8cd447SRobert Hoofi 7470 6b8cd447SRobert Hoo 7471 607dacd0Sqiaonuohanif test "$lzo" = "yes" ; then 7472 607dacd0Sqiaonuohan echo "CONFIG_LZO=y" >> $config_host_mak 7473 *708eab42SMarc-André Lureau echo "LZO_LIBS=$lzo_libs" >> $config_host_mak 7474 607dacd0Sqiaonuohanfi 7475 607dacd0Sqiaonuohan 7476 607dacd0Sqiaonuohanif test "$snappy" = "yes" ; then 7477 607dacd0Sqiaonuohan echo "CONFIG_SNAPPY=y" >> $config_host_mak 7478 *708eab42SMarc-André Lureau echo "SNAPPY_LIBS=$snappy_libs" >> $config_host_mak 7479 607dacd0Sqiaonuohanfi 7480 607dacd0Sqiaonuohan 7481 6b383c08SPeter Wuif test "$bzip2" = "yes" ; then 7482 6b383c08SPeter Wu echo "CONFIG_BZIP2=y" >> $config_host_mak 7483 6b383c08SPeter Wu echo "BZIP2_LIBS=-lbz2" >> $config_host_mak 7484 6b383c08SPeter Wufi 7485 6b383c08SPeter Wu 7486 83bc1f97SJulio Faraccoif test "$lzfse" = "yes" ; then 7487 83bc1f97SJulio Faracco echo "CONFIG_LZFSE=y" >> $config_host_mak 7488 83bc1f97SJulio Faracco echo "LZFSE_LIBS=-llzfse" >> $config_host_mak 7489 83bc1f97SJulio Faraccofi 7490 83bc1f97SJulio Faracco 7491 3a678481SJuan Quintelaif test "$zstd" = "yes" ; then 7492 3a678481SJuan Quintela echo "CONFIG_ZSTD=y" >> $config_host_mak 7493 5e5733e5SMarc-André Lureau echo "ZSTD_CFLAGS=$zstd_cflags" >> $config_host_mak 7494 5e5733e5SMarc-André Lureau echo "ZSTD_LIBS=$zstd_libs" >> $config_host_mak 7495 3a678481SJuan Quintelafi 7496 3a678481SJuan Quintela 7497 c589b249SRonnie Sahlbergif test "$libiscsi" = "yes" ; then 7498 d3399d7cSFam Zheng echo "CONFIG_LIBISCSI=m" >> $config_host_mak 7499 6ebc91e5SFam Zheng echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak 7500 6ebc91e5SFam Zheng echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak 7501 c589b249SRonnie Sahlbergfi 7502 c589b249SRonnie Sahlberg 7503 6542aa9cSPeter Lievenif test "$libnfs" = "yes" ; then 7504 4be4879fSColin Lord echo "CONFIG_LIBNFS=m" >> $config_host_mak 7505 4be4879fSColin Lord echo "LIBNFS_LIBS=$libnfs_libs" >> $config_host_mak 7506 6542aa9cSPeter Lievenfi 7507 6542aa9cSPeter Lieven 7508 f794573eSEduardo Otuboif test "$seccomp" = "yes"; then 7509 f794573eSEduardo Otubo echo "CONFIG_SECCOMP=y" >> $config_host_mak 7510 c3883e1fSFam Zheng echo "SECCOMP_CFLAGS=$seccomp_cflags" >> $config_host_mak 7511 c3883e1fSFam Zheng echo "SECCOMP_LIBS=$seccomp_libs" >> $config_host_mak 7512 f794573eSEduardo Otubofi 7513 f794573eSEduardo Otubo 7514 83fb7adfSbellard# XXX: suppress that 7515 7d3505c5Sbellardif [ "$bsd" = "yes" ] ; then 7516 2358a494SJuan Quintela echo "CONFIG_BSD=y" >> $config_host_mak 7517 7d3505c5Sbellardfi 7518 7d3505c5Sbellard 7519 4d9310f4SDaniel P. Berrangeif test "$localtime_r" = "yes" ; then 7520 4d9310f4SDaniel P. Berrange echo "CONFIG_LOCALTIME_R=y" >> $config_host_mak 7521 4d9310f4SDaniel P. Berrangefi 7522 3556c233SPaolo Bonziniif test "$qom_cast_debug" = "yes" ; then 7523 3556c233SPaolo Bonzini echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak 7524 3556c233SPaolo Bonzinifi 7525 f27aaf4bSChristian Brunnerif test "$rbd" = "yes" ; then 7526 d3399d7cSFam Zheng echo "CONFIG_RBD=m" >> $config_host_mak 7527 6ebc91e5SFam Zheng echo "RBD_LIBS=$rbd_libs" >> $config_host_mak 7528 f27aaf4bSChristian Brunnerfi 7529 20ff6c80SAnthony Liguori 7530 7c2acc70SPeter Maydellecho "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak 7531 70c60c08SStefan Hajnocziif test "$coroutine_pool" = "yes" ; then 7532 70c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak 7533 70c60c08SStefan Hajnoczielse 7534 70c60c08SStefan Hajnoczi echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak 7535 70c60c08SStefan Hajnoczifi 7536 d0e2fce5SAneesh Kumar K.V 7537 7d992e4dSPeter Lievenif test "$debug_stack_usage" = "yes" ; then 7538 7d992e4dSPeter Lieven echo "CONFIG_DEBUG_STACK_USAGE=y" >> $config_host_mak 7539 7d992e4dSPeter Lievenfi 7540 7d992e4dSPeter Lieven 7541 f0d92b56SLongpeng(Mike)if test "$crypto_afalg" = "yes" ; then 7542 f0d92b56SLongpeng(Mike) echo "CONFIG_AF_ALG=y" >> $config_host_mak 7543 f0d92b56SLongpeng(Mike)fi 7544 f0d92b56SLongpeng(Mike) 7545 d2042378SAneesh Kumar K.Vif test "$open_by_handle_at" = "yes" ; then 7546 d2042378SAneesh Kumar K.V echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak 7547 d2042378SAneesh Kumar K.Vfi 7548 d2042378SAneesh Kumar K.V 7549 e06a765eSHarsh Prateek Boraif test "$linux_magic_h" = "yes" ; then 7550 e06a765eSHarsh Prateek Bora echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak 7551 e06a765eSHarsh Prateek Borafi 7552 e06a765eSHarsh Prateek Bora 7553 3f4349dcSKevin Wolfif test "$valgrind_h" = "yes" ; then 7554 3f4349dcSKevin Wolf echo "CONFIG_VALGRIND_H=y" >> $config_host_mak 7555 3f4349dcSKevin Wolffi 7556 3f4349dcSKevin Wolf 7557 d83414e1SMarc-André Lureauif test "$have_asan_iface_fiber" = "yes" ; then 7558 d83414e1SMarc-André Lureau echo "CONFIG_ASAN_IFACE_FIBER=y" >> $config_host_mak 7559 d83414e1SMarc-André Lureaufi 7560 d83414e1SMarc-André Lureau 7561 0aebab04SLingfeng Yangif test "$have_tsan" = "yes" && test "$have_tsan_iface_fiber" = "yes" ; then 7562 0aebab04SLingfeng Yang echo "CONFIG_TSAN=y" >> $config_host_mak 7563 0aebab04SLingfeng Yangfi 7564 0aebab04SLingfeng Yang 7565 8ab1bf12SLuiz Capitulinoif test "$has_environ" = "yes" ; then 7566 8ab1bf12SLuiz Capitulino echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak 7567 8ab1bf12SLuiz Capitulinofi 7568 8ab1bf12SLuiz Capitulino 7569 76a347e1SRichard Hendersonif test "$cpuid_h" = "yes" ; then 7570 76a347e1SRichard Henderson echo "CONFIG_CPUID_H=y" >> $config_host_mak 7571 76a347e1SRichard Hendersonfi 7572 76a347e1SRichard Henderson 7573 f540166bSRichard Hendersonif test "$int128" = "yes" ; then 7574 f540166bSRichard Henderson echo "CONFIG_INT128=y" >> $config_host_mak 7575 f540166bSRichard Hendersonfi 7576 f540166bSRichard Henderson 7577 7ebee43eSRichard Hendersonif test "$atomic128" = "yes" ; then 7578 7ebee43eSRichard Henderson echo "CONFIG_ATOMIC128=y" >> $config_host_mak 7579 7ebee43eSRichard Hendersonfi 7580 7ebee43eSRichard Henderson 7581 e6cd4bb5SRichard Hendersonif test "$cmpxchg128" = "yes" ; then 7582 e6cd4bb5SRichard Henderson echo "CONFIG_CMPXCHG128=y" >> $config_host_mak 7583 e6cd4bb5SRichard Hendersonfi 7584 e6cd4bb5SRichard Henderson 7585 df79b996SRichard Hendersonif test "$atomic64" = "yes" ; then 7586 df79b996SRichard Henderson echo "CONFIG_ATOMIC64=y" >> $config_host_mak 7587 df79b996SRichard Hendersonfi 7588 df79b996SRichard Henderson 7589 db8aaae8SRichard Hendersonif test "$attralias" = "yes" ; then 7590 db8aaae8SRichard Henderson echo "CONFIG_ATTRIBUTE_ALIAS=y" >> $config_host_mak 7591 db8aaae8SRichard Hendersonfi 7592 db8aaae8SRichard Henderson 7593 1e6e9acaSRichard Hendersonif test "$getauxval" = "yes" ; then 7594 1e6e9acaSRichard Henderson echo "CONFIG_GETAUXVAL=y" >> $config_host_mak 7595 1e6e9acaSRichard Hendersonfi 7596 1e6e9acaSRichard Henderson 7597 eb100396SBharata B Raoif test "$glusterfs" = "yes" ; then 7598 d3399d7cSFam Zheng echo "CONFIG_GLUSTERFS=m" >> $config_host_mak 7599 6ebc91e5SFam Zheng echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak 7600 6ebc91e5SFam Zheng echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak 7601 eb100396SBharata B Raofi 7602 eb100396SBharata B Rao 7603 d85fa9ebSJeff Codyif test "$glusterfs_xlator_opt" = "yes" ; then 7604 d85fa9ebSJeff Cody echo "CONFIG_GLUSTERFS_XLATOR_OPT=y" >> $config_host_mak 7605 d85fa9ebSJeff Codyfi 7606 d85fa9ebSJeff Cody 7607 0c14fb47SBharata B Raoif test "$glusterfs_discard" = "yes" ; then 7608 0c14fb47SBharata B Rao echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak 7609 0c14fb47SBharata B Raofi 7610 0c14fb47SBharata B Rao 7611 df3a429aSNiels de Vosif test "$glusterfs_fallocate" = "yes" ; then 7612 df3a429aSNiels de Vos echo "CONFIG_GLUSTERFS_FALLOCATE=y" >> $config_host_mak 7613 df3a429aSNiels de Vosfi 7614 df3a429aSNiels de Vos 7615 7c815372SBharata B Raoif test "$glusterfs_zerofill" = "yes" ; then 7616 7c815372SBharata B Rao echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak 7617 7c815372SBharata B Raofi 7618 7c815372SBharata B Rao 7619 e014dbe7SPrasanna Kumar Kaleverif test "$glusterfs_ftruncate_has_stat" = "yes" ; then 7620 e014dbe7SPrasanna Kumar Kalever echo "CONFIG_GLUSTERFS_FTRUNCATE_HAS_STAT=y" >> $config_host_mak 7621 e014dbe7SPrasanna Kumar Kaleverfi 7622 e014dbe7SPrasanna Kumar Kalever 7623 0e3b891fSNiels de Vosif test "$glusterfs_iocb_has_stat" = "yes" ; then 7624 0e3b891fSNiels de Vos echo "CONFIG_GLUSTERFS_IOCB_HAS_STAT=y" >> $config_host_mak 7625 0e3b891fSNiels de Vosfi 7626 0e3b891fSNiels de Vos 7627 b10d49d7SPino Toscanoif test "$libssh" = "yes" ; then 7628 b10d49d7SPino Toscano echo "CONFIG_LIBSSH=m" >> $config_host_mak 7629 b10d49d7SPino Toscano echo "LIBSSH_CFLAGS=$libssh_cflags" >> $config_host_mak 7630 b10d49d7SPino Toscano echo "LIBSSH_LIBS=$libssh_libs" >> $config_host_mak 7631 0a12ec87SRichard W.M. Jonesfi 7632 0a12ec87SRichard W.M. Jones 7633 ed1701c6SDr. David Alan Gilbertif test "$live_block_migration" = "yes" ; then 7634 ed1701c6SDr. David Alan Gilbert echo "CONFIG_LIVE_BLOCK_MIGRATION=y" >> $config_host_mak 7635 ed1701c6SDr. David Alan Gilbertfi 7636 ed1701c6SDr. David Alan Gilbert 7637 3b8acc11SPaolo Bonziniif test "$tpm" = "yes"; then 7638 3cae16dbSPaolo Bonzini echo 'CONFIG_TPM=y' >> $config_host_mak 7639 3b8acc11SPaolo Bonzinifi 7640 3b8acc11SPaolo Bonzini 7641 5b808275SLluís Vilanovaecho "TRACE_BACKENDS=$trace_backends" >> $config_host_mak 7642 5b808275SLluís Vilanovaif have_backend "nop"; then 7643 6d8a764eSLluís echo "CONFIG_TRACE_NOP=y" >> $config_host_mak 7644 22890ab5SPrerna Saxenafi 7645 5b808275SLluís Vilanovaif have_backend "simple"; then 7646 6d8a764eSLluís echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak 7647 6d8a764eSLluís # Set the appropriate trace file. 7648 953ffe0fSAndreas Färber trace_file="\"$trace_file-\" FMT_pid" 7649 9410b56cSPrerna Saxenafi 7650 ed7f5f1dSPaolo Bonziniif have_backend "log"; then 7651 ed7f5f1dSPaolo Bonzini echo "CONFIG_TRACE_LOG=y" >> $config_host_mak 7652 6d8a764eSLluísfi 7653 5b808275SLluís Vilanovaif have_backend "ust"; then 7654 6d8a764eSLluís echo "CONFIG_TRACE_UST=y" >> $config_host_mak 7655 a81df1b6SPaolo Bonzini echo "LTTNG_UST_LIBS=$lttng_ust_libs" >> $config_host_mak 7656 a81df1b6SPaolo Bonzini echo "URCU_BP_LIBS=$urcu_bp_libs" >> $config_host_mak 7657 6d8a764eSLluísfi 7658 5b808275SLluís Vilanovaif have_backend "dtrace"; then 7659 6d8a764eSLluís echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak 7660 6d8a764eSLluís if test "$trace_backend_stap" = "yes" ; then 7661 6d8a764eSLluís echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak 7662 6d8a764eSLluís fi 7663 c276b17dSDaniel P. Berrangefi 7664 5b808275SLluís Vilanovaif have_backend "ftrace"; then 7665 781e9545SEiichi Tsukata if test "$linux" = "yes" ; then 7666 781e9545SEiichi Tsukata echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak 7667 781e9545SEiichi Tsukata else 7668 21684af0SStewart Smith feature_not_found "ftrace(trace backend)" "ftrace requires Linux" 7669 781e9545SEiichi Tsukata fi 7670 781e9545SEiichi Tsukatafi 7671 0a852417SPaul Durrantif have_backend "syslog"; then 7672 0a852417SPaul Durrant if test "$posix_syslog" = "yes" ; then 7673 0a852417SPaul Durrant echo "CONFIG_TRACE_SYSLOG=y" >> $config_host_mak 7674 0a852417SPaul Durrant else 7675 0a852417SPaul Durrant feature_not_found "syslog(trace backend)" "syslog not available" 7676 0a852417SPaul Durrant fi 7677 0a852417SPaul Durrantfi 7678 9410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak 7679 9410b56cSPrerna Saxena 7680 2da776dbSMichael R. Hinesif test "$rdma" = "yes" ; then 7681 2da776dbSMichael R. Hines echo "CONFIG_RDMA=y" >> $config_host_mak 7682 392fb643SFam Zheng echo "RDMA_LIBS=$rdma_libs" >> $config_host_mak 7683 2da776dbSMichael R. Hinesfi 7684 2da776dbSMichael R. Hines 7685 21ab34c9SMarcel Apfelbaumif test "$pvrdma" = "yes" ; then 7686 21ab34c9SMarcel Apfelbaum echo "CONFIG_PVRDMA=y" >> $config_host_mak 7687 21ab34c9SMarcel Apfelbaumfi 7688 21ab34c9SMarcel Apfelbaum 7689 575b22b1SLaurent Vivierif test "$have_rtnetlink" = "yes" ; then 7690 575b22b1SLaurent Vivier echo "CONFIG_RTNETLINK=y" >> $config_host_mak 7691 575b22b1SLaurent Vivierfi 7692 575b22b1SLaurent Vivier 7693 ed279a06SKlim Kireevif test "$libxml2" = "yes" ; then 7694 ed279a06SKlim Kireev echo "CONFIG_LIBXML2=y" >> $config_host_mak 7695 ed279a06SKlim Kireev echo "LIBXML2_CFLAGS=$libxml2_cflags" >> $config_host_mak 7696 ed279a06SKlim Kireev echo "LIBXML2_LIBS=$libxml2_libs" >> $config_host_mak 7697 ed279a06SKlim Kireevfi 7698 ed279a06SKlim Kireev 7699 a6b1d4c0SChanglong Xieif test "$replication" = "yes" ; then 7700 a6b1d4c0SChanglong Xie echo "CONFIG_REPLICATION=y" >> $config_host_mak 7701 a6b1d4c0SChanglong Xiefi 7702 a6b1d4c0SChanglong Xie 7703 6a02c806SStefan Hajnocziif test "$have_af_vsock" = "yes" ; then 7704 6a02c806SStefan Hajnoczi echo "CONFIG_AF_VSOCK=y" >> $config_host_mak 7705 6a02c806SStefan Hajnoczifi 7706 6a02c806SStefan Hajnoczi 7707 4d04351fSChristopher Covingtonif test "$have_sysmacros" = "yes" ; then 7708 4d04351fSChristopher Covington echo "CONFIG_SYSMACROS=y" >> $config_host_mak 7709 4d04351fSChristopher Covingtonfi 7710 4d04351fSChristopher Covington 7711 49e00a18SAndreas Grapentinif test "$have_static_assert" = "yes" ; then 7712 49e00a18SAndreas Grapentin echo "CONFIG_STATIC_ASSERT=y" >> $config_host_mak 7713 49e00a18SAndreas Grapentinfi 7714 49e00a18SAndreas Grapentin 7715 e674605fSTomáš Golembiovskýif test "$have_utmpx" = "yes" ; then 7716 e674605fSTomáš Golembiovský echo "HAVE_UTMPX=y" >> $config_host_mak 7717 e674605fSTomáš Golembiovskýfi 7718 db1ed1abSRichard Hendersonif test "$have_getrandom" = "yes" ; then 7719 db1ed1abSRichard Henderson echo "CONFIG_GETRANDOM=y" >> $config_host_mak 7720 db1ed1abSRichard Hendersonfi 7721 e0580342SKamil Rytarowskiif test "$ivshmem" = "yes" ; then 7722 e0580342SKamil Rytarowski echo "CONFIG_IVSHMEM=y" >> $config_host_mak 7723 e0580342SKamil Rytarowskifi 7724 e219c499SRichard Hendersonif test "$capstone" != "no" ; then 7725 8ca80760SRichard Henderson echo "CONFIG_CAPSTONE=y" >> $config_host_mak 7726 8ca80760SRichard Hendersonfi 7727 ba59fb77SPaolo Bonziniif test "$debug_mutex" = "yes" ; then 7728 ba59fb77SPaolo Bonzini echo "CONFIG_DEBUG_MUTEX=y" >> $config_host_mak 7729 ba59fb77SPaolo Bonzinifi 7730 e0580342SKamil Rytarowski 7731 5c312079SDr. David Alan Gilbert# Hold two types of flag: 7732 5c312079SDr. David Alan Gilbert# CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on 7733 5c312079SDr. David Alan Gilbert# a thread we have a handle to 7734 479a5747SRoman Bolshakov# CONFIG_PTHREAD_SETNAME_NP_W_TID - A way of doing it on a particular 7735 5c312079SDr. David Alan Gilbert# platform 7736 479a5747SRoman Bolshakovif test "$pthread_setname_np_w_tid" = "yes" ; then 7737 5c312079SDr. David Alan Gilbert echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 7738 479a5747SRoman Bolshakov echo "CONFIG_PTHREAD_SETNAME_NP_W_TID=y" >> $config_host_mak 7739 479a5747SRoman Bolshakovelif test "$pthread_setname_np_wo_tid" = "yes" ; then 7740 479a5747SRoman Bolshakov echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak 7741 479a5747SRoman Bolshakov echo "CONFIG_PTHREAD_SETNAME_NP_WO_TID=y" >> $config_host_mak 7742 5c312079SDr. David Alan Gilbertfi 7743 5c312079SDr. David Alan Gilbert 7744 17824406SJunyan Heif test "$libpmem" = "yes" ; then 7745 17824406SJunyan He echo "CONFIG_LIBPMEM=y" >> $config_host_mak 7746 17824406SJunyan Hefi 7747 17824406SJunyan He 7748 21b2eca6SJingqi Liuif test "$libdaxctl" = "yes" ; then 7749 21b2eca6SJingqi Liu echo "CONFIG_LIBDAXCTL=y" >> $config_host_mak 7750 21b2eca6SJingqi Liufi 7751 21b2eca6SJingqi Liu 7752 2f740136SJeff Codyif test "$bochs" = "yes" ; then 7753 2f740136SJeff Cody echo "CONFIG_BOCHS=y" >> $config_host_mak 7754 2f740136SJeff Codyfi 7755 2f740136SJeff Codyif test "$cloop" = "yes" ; then 7756 2f740136SJeff Cody echo "CONFIG_CLOOP=y" >> $config_host_mak 7757 2f740136SJeff Codyfi 7758 2f740136SJeff Codyif test "$dmg" = "yes" ; then 7759 2f740136SJeff Cody echo "CONFIG_DMG=y" >> $config_host_mak 7760 2f740136SJeff Codyfi 7761 2f740136SJeff Codyif test "$qcow1" = "yes" ; then 7762 2f740136SJeff Cody echo "CONFIG_QCOW1=y" >> $config_host_mak 7763 2f740136SJeff Codyfi 7764 2f740136SJeff Codyif test "$vdi" = "yes" ; then 7765 2f740136SJeff Cody echo "CONFIG_VDI=y" >> $config_host_mak 7766 2f740136SJeff Codyfi 7767 2f740136SJeff Codyif test "$vvfat" = "yes" ; then 7768 2f740136SJeff Cody echo "CONFIG_VVFAT=y" >> $config_host_mak 7769 2f740136SJeff Codyfi 7770 2f740136SJeff Codyif test "$qed" = "yes" ; then 7771 2f740136SJeff Cody echo "CONFIG_QED=y" >> $config_host_mak 7772 2f740136SJeff Codyfi 7773 2f740136SJeff Codyif test "$parallels" = "yes" ; then 7774 2f740136SJeff Cody echo "CONFIG_PARALLELS=y" >> $config_host_mak 7775 2f740136SJeff Codyfi 7776 2f740136SJeff Codyif test "$sheepdog" = "yes" ; then 7777 2f740136SJeff Cody echo "CONFIG_SHEEPDOG=y" >> $config_host_mak 7778 2f740136SJeff Codyfi 7779 c9c8b88fSDavid CARLIERif test "$pty_h" = "yes" ; then 7780 c9c8b88fSDavid CARLIER echo "HAVE_PTY_H=y" >> $config_host_mak 7781 c9c8b88fSDavid CARLIERfi 7782 195588ccSDavid CARLIERif test "$have_mlockall" = "yes" ; then 7783 195588ccSDavid CARLIER echo "HAVE_MLOCKALL=y" >> $config_host_mak 7784 195588ccSDavid CARLIERfi 7785 adc28027SAlexander Bulekovif test "$fuzzing" = "yes" ; then 7786 adc28027SAlexander Bulekov if test "$have_fuzzer" = "yes"; then 7787 dd016265SAlexander Bulekov FUZZ_LDFLAGS=" -fsanitize=fuzzer" 7788 dd016265SAlexander Bulekov FUZZ_CFLAGS=" -fsanitize=fuzzer" 7789 086d5f75SPaolo Bonzini QEMU_CFLAGS="$QEMU_CFLAGS -fsanitize=fuzzer-no-link" 7790 adc28027SAlexander Bulekov else 7791 dd016265SAlexander Bulekov error_exit "Your compiler doesn't support -fsanitize=fuzzer" 7792 adc28027SAlexander Bulekov exit 1 7793 adc28027SAlexander Bulekov fi 7794 adc28027SAlexander Bulekovfi 7795 2f740136SJeff Cody 7796 40e8c6f4SAlex Bennéeif test "$plugins" = "yes" ; then 7797 40e8c6f4SAlex Bennée echo "CONFIG_PLUGIN=y" >> $config_host_mak 7798 40e8c6f4SAlex Bennée LIBS="-ldl $LIBS" 7799 26fffe29SEmilio G. Cota # Copy the export object list to the build dir 7800 26fffe29SEmilio G. Cota if test "$ld_dynamic_list" = "yes" ; then 7801 26fffe29SEmilio G. Cota echo "CONFIG_HAS_LD_DYNAMIC_LIST=yes" >> $config_host_mak 7802 26fffe29SEmilio G. Cota ld_symbols=qemu-plugins-ld.symbols 7803 26fffe29SEmilio G. Cota cp "$source_path/plugins/qemu-plugins.symbols" $ld_symbols 7804 26fffe29SEmilio G. Cota elif test "$ld_exported_symbols_list" = "yes" ; then 7805 26fffe29SEmilio G. Cota echo "CONFIG_HAS_LD_EXPORTED_SYMBOLS_LIST=yes" >> $config_host_mak 7806 26fffe29SEmilio G. Cota ld64_symbols=qemu-plugins-ld64.symbols 7807 26fffe29SEmilio G. Cota echo "# Automatically generated by configure - do not modify" > $ld64_symbols 7808 26fffe29SEmilio G. Cota grep 'qemu_' "$source_path/plugins/qemu-plugins.symbols" | sed 's/;//g' | \ 7809 26fffe29SEmilio G. Cota sed -E 's/^[[:space:]]*(.*)/_\1/' >> $ld64_symbols 7810 26fffe29SEmilio G. Cota else 7811 26fffe29SEmilio G. Cota error_exit \ 7812 26fffe29SEmilio G. Cota "If \$plugins=yes, either \$ld_dynamic_list or " \ 7813 26fffe29SEmilio G. Cota "\$ld_exported_symbols_list should have been set to 'yes'." 7814 26fffe29SEmilio G. Cota fi 7815 40e8c6f4SAlex Bennéefi 7816 40e8c6f4SAlex Bennée 7817 f48e590aSAlex Bennéeif test -n "$gdb_bin" ; then 7818 f48e590aSAlex Bennée echo "HAVE_GDB_BIN=$gdb_bin" >> $config_host_mak 7819 f48e590aSAlex Bennéefi 7820 f48e590aSAlex Bennée 7821 54e7aac0SAlexey Krasikovif test "$secret_keyring" = "yes" ; then 7822 54e7aac0SAlexey Krasikov echo "CONFIG_SECRET_KEYRING=y" >> $config_host_mak 7823 92500362SAlexey Krasikov if test "$have_keyutils" = "yes" ; then 7824 92500362SAlexey Krasikov echo "CONFIG_TEST_SECRET_KEYRING=y" >> $config_host_mak 7825 92500362SAlexey Krasikov fi 7826 54e7aac0SAlexey Krasikovfi 7827 54e7aac0SAlexey Krasikov 7828 5b5e3037SPaolo Bonziniif test "$tcg_interpreter" = "yes"; then 7829 25211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/tci $QEMU_INCLUDES" 7830 5b5e3037SPaolo Bonzinielif test "$ARCH" = "sparc64" ; then 7831 25211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/sparc $QEMU_INCLUDES" 7832 5b5e3037SPaolo Bonzinielif test "$ARCH" = "s390x" ; then 7833 25211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/s390 $QEMU_INCLUDES" 7834 e633a5c6SEric Blakeelif test "$ARCH" = "x86_64" || test "$ARCH" = "x32" ; then 7835 25211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/i386 $QEMU_INCLUDES" 7836 40d964b5SRichard Hendersonelif test "$ARCH" = "ppc64" ; then 7837 25211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/ppc $QEMU_INCLUDES" 7838 e633a5c6SEric Blakeelif test "$ARCH" = "riscv32" || test "$ARCH" = "riscv64" ; then 7839 25211446SPaolo Bonzini QEMU_INCLUDES="-I${source_path}/tcg/riscv $QEMU_INCLUDES" 7840 5b5e3037SPaolo Bonzinielse 7841 25211446SPaolo Bonzini QEMU_INCLUDES="-iquote ${source_path}/tcg/${ARCH} $QEMU_INCLUDES" 7842 5b5e3037SPaolo Bonzinifi 7843 5b5e3037SPaolo Bonzini 7844 98ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak 7845 804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak 7846 804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak 7847 1901cb14SBradecho "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak 7848 1901cb14SBradecho "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak 7849 1901cb14SBradecho "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak 7850 21655882SPaolo Bonziniecho "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak 7851 c886edfbSBlue Swirlecho "PYTHON=$python" >> $config_host_mak 7852 2eb054c2SPeter Maydellecho "SPHINX_BUILD=$sphinx_build" >> $config_host_mak 7853 516e8b7dSPeter Maydellecho "SPHINX_WERROR=$sphinx_werror" >> $config_host_mak 7854 39d87c8cSAlex Bennéeecho "GENISOIMAGE=$genisoimage" >> $config_host_mak 7855 a5665051SPaolo Bonziniecho "MESON=$meson" >> $config_host_mak 7856 804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak 7857 a31a8642SMichael S. Tsirkinif $iasl -h > /dev/null 2>&1; then 7858 a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_host_mak 7859 a31a8642SMichael S. Tsirkinfi 7860 83f73fceSTomoki Sekiyamaecho "CXX=$cxx" >> $config_host_mak 7861 3c4a4d0dSPeter Maydellecho "OBJCC=$objcc" >> $config_host_mak 7862 804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak 7863 45d285abSPeter Maydellecho "ARFLAGS=$ARFLAGS" >> $config_host_mak 7864 cdbd727cSRichard Hendersonecho "AS=$as" >> $config_host_mak 7865 5f6f0e27SRichard Hendersonecho "CCAS=$ccas" >> $config_host_mak 7866 3dd46c78SBlue Swirlecho "CPP=$cpp" >> $config_host_mak 7867 804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak 7868 804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak 7869 9f81aeb5SAlistair Francisecho "RANLIB=$ranlib" >> $config_host_mak 7870 4852ee95SStefan Weilecho "NM=$nm" >> $config_host_mak 7871 daa79d9aSAlex Bennéeecho "PKG_CONFIG=$pkg_config_exe" >> $config_host_mak 7872 9fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak 7873 e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak 7874 086d5f75SPaolo Bonziniecho "CXXFLAGS=$CXXFLAGS" >> $config_host_mak 7875 46eef33bSBradecho "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak 7876 a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak 7877 11cde1c8SBruno Dominguezecho "QEMU_CXXFLAGS=$QEMU_CXXFLAGS" >> $config_host_mak 7878 f9728943SPaolo Bonziniecho "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak 7879 a81df1b6SPaolo Bonziniecho "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak 7880 a81df1b6SPaolo Bonziniecho "GLIB_LIBS=$glib_libs" >> $config_host_mak 7881 e39f0062SPaolo Bonziniif test "$sparse" = "yes" ; then 7882 968b4db3SPaolo Bonzini echo "SPARSE_CFLAGS = -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak 7883 e39f0062SPaolo Bonzinifi 7884 8a99e9a3SPhilippe Mathieu-Daudéecho "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak 7885 db5adeaaSPaolo Bonziniecho "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak 7886 6969ec6cSJames Clarkeecho "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak 7887 e57218b6SPeter Maydellecho "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak 7888 73da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak 7889 3e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak 7890 409437e1SDaniel P. Berrangeecho "PTHREAD_LIB=$PTHREAD_LIB" >> $config_host_mak 7891 804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak 7892 17969268SFam Zhengecho "DSOSUF=$DSOSUF" >> $config_host_mak 7893 17969268SFam Zhengecho "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak 7894 f15bff25SPaolo Bonziniecho "LIBS_QGA=$libs_qga" >> $config_host_mak 7895 90246037SDaniel P. Berrangeecho "TASN1_LIBS=$tasn1_libs" >> $config_host_mak 7896 90246037SDaniel P. Berrangeecho "TASN1_CFLAGS=$tasn1_cflags" >> $config_host_mak 7897 94dd53c5SGerd Hoffmannecho "POD2MAN=$POD2MAN" >> $config_host_mak 7898 1d728c39SBlue Swirlif test "$gcov" = "yes" ; then 7899 1d728c39SBlue Swirl echo "CONFIG_GCOV=y" >> $config_host_mak 7900 1d728c39SBlue Swirlfi 7901 804edf29SJuan Quintela 7902 3efac6ebSTomáš Golembiovskýif test "$libudev" != "no"; then 7903 3efac6ebSTomáš Golembiovský echo "CONFIG_LIBUDEV=y" >> $config_host_mak 7904 3efac6ebSTomáš Golembiovský echo "LIBUDEV_LIBS=$libudev_libs" >> $config_host_mak 7905 3efac6ebSTomáš Golembiovskýfi 7906 adc28027SAlexander Bulekovif test "$fuzzing" != "no"; then 7907 adc28027SAlexander Bulekov echo "CONFIG_FUZZ=y" >> $config_host_mak 7908 adc28027SAlexander Bulekov echo "FUZZ_CFLAGS=$FUZZ_CFLAGS" >> $config_host_mak 7909 adc28027SAlexander Bulekov echo "FUZZ_LDFLAGS=$FUZZ_LDFLAGS" >> $config_host_mak 7910 adc28027SAlexander Bulekovfi 7911 3efac6ebSTomáš Golembiovský 7912 05dfa22bSPhilippe Mathieu-Daudéif test "$edk2_blobs" = "yes" ; then 7913 05dfa22bSPhilippe Mathieu-Daudé echo "DECOMPRESS_EDK2_BLOBS=y" >> $config_host_mak 7914 05dfa22bSPhilippe Mathieu-Daudéfi 7915 05dfa22bSPhilippe Mathieu-Daudé 7916 b767d257SMarek Marczykowski-Góreckiif test "$rng_none" = "yes"; then 7917 b767d257SMarek Marczykowski-Górecki echo "CONFIG_RNG_NONE=y" >> $config_host_mak 7918 b767d257SMarek Marczykowski-Góreckifi 7919 b767d257SMarek Marczykowski-Górecki 7920 6efd7517SPeter Maydell# use included Linux headers 7921 6efd7517SPeter Maydellif test "$linux" = "yes" ; then 7922 a307beb6SAndreas Färber mkdir -p linux-headers 7923 6efd7517SPeter Maydell case "$cpu" in 7924 c72b26ecSRichard Henderson i386|x86_64|x32) 7925 08312a63SPeter Maydell linux_arch=x86 7926 6efd7517SPeter Maydell ;; 7927 f8378accSRichard Henderson ppc|ppc64|ppc64le) 7928 08312a63SPeter Maydell linux_arch=powerpc 7929 6efd7517SPeter Maydell ;; 7930 6efd7517SPeter Maydell s390x) 7931 08312a63SPeter Maydell linux_arch=s390 7932 08312a63SPeter Maydell ;; 7933 1f080313SClaudio Fontana aarch64) 7934 1f080313SClaudio Fontana linux_arch=arm64 7935 1f080313SClaudio Fontana ;; 7936 222e7d11SSanjay Lal mips64) 7937 222e7d11SSanjay Lal linux_arch=mips 7938 222e7d11SSanjay Lal ;; 7939 08312a63SPeter Maydell *) 7940 08312a63SPeter Maydell # For most CPUs the kernel architecture name and QEMU CPU name match. 7941 08312a63SPeter Maydell linux_arch="$cpu" 7942 6efd7517SPeter Maydell ;; 7943 6efd7517SPeter Maydell esac 7944 08312a63SPeter Maydell # For non-KVM architectures we will not have asm headers 7945 08312a63SPeter Maydell if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then 7946 08312a63SPeter Maydell symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm 7947 08312a63SPeter Maydell fi 7948 6efd7517SPeter Maydellfi 7949 6efd7517SPeter Maydell 7950 97a847bcSbellardfor target in $target_list; do 7951 97a847bcSbellardtarget_dir="$target" 7952 25be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak 7953 89138857SStefan Weiltarget_name=$(echo $target | cut -d '-' -f 1) 7954 52bf9771Stony.nguyen@bt.comtarget_aligned_only="no" 7955 52bf9771Stony.nguyen@bt.comcase "$target_name" in 7956 52bf9771Stony.nguyen@bt.com alpha|hppa|mips64el|mips64|mipsel|mips|mipsn32|mipsn32el|sh4|sh4eb|sparc|sparc64|sparc32plus|xtensa|xtensaeb) 7957 52bf9771Stony.nguyen@bt.com target_aligned_only="yes" 7958 52bf9771Stony.nguyen@bt.com ;; 7959 52bf9771Stony.nguyen@bt.comesac 7960 97a847bcSbellardtarget_bigendian="no" 7961 c1799a84SPaolo Bonzinicase "$target_name" in 7962 a69dc537SThomas Huth armeb|aarch64_be|hppa|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or1k|ppc|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb) 7963 52bf9771Stony.nguyen@bt.com target_bigendian="yes" 7964 ea2d6a39SJuan Quintela ;; 7965 ea2d6a39SJuan Quintelaesac 7966 97a847bcSbellardtarget_softmmu="no" 7967 997344f3Sbellardtarget_user_only="no" 7968 831b7825Sthstarget_linux_user="no" 7969 84778508Sblueswir1target_bsd_user="no" 7970 9e407a85Spbrookcase "$target" in 7971 c1799a84SPaolo Bonzini ${target_name}-softmmu) 7972 9e407a85Spbrook target_softmmu="yes" 7973 9e407a85Spbrook ;; 7974 c1799a84SPaolo Bonzini ${target_name}-linux-user) 7975 9e407a85Spbrook target_user_only="yes" 7976 9e407a85Spbrook target_linux_user="yes" 7977 9e407a85Spbrook ;; 7978 c1799a84SPaolo Bonzini ${target_name}-bsd-user) 7979 84778508Sblueswir1 target_user_only="yes" 7980 84778508Sblueswir1 target_bsd_user="yes" 7981 84778508Sblueswir1 ;; 7982 9e407a85Spbrook *) 7983 76ad07a4SPeter Maydell error_exit "Target '$target' not recognised" 7984 9e407a85Spbrook exit 1 7985 9e407a85Spbrook ;; 7986 9e407a85Spbrookesac 7987 831b7825Sths 7988 97a847bcSbellardmkdir -p $target_dir 7989 25be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak 7990 97a847bcSbellard 7991 e5fe0c52Spbrookbflt="no" 7992 ca759f9eSAlex Bennéemttcg="no" 7993 89138857SStefan Weilinterp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g") 7994 56aebc89Spbrookgdb_xml_files="" 7995 7ba1e619Saliguori 7996 c1799a84SPaolo BonziniTARGET_ARCH="$target_name" 7997 6acff7daSJuan QuintelaTARGET_BASE_ARCH="" 7998 e6e91b9cSJuan QuintelaTARGET_ABI_DIR="" 7999 e73aae67SJuan Quintela 8000 c1799a84SPaolo Bonzinicase "$target_name" in 8001 2408a527Saurel32 i386) 8002 0a7fa00aSEmilio G. Cota mttcg="yes" 8003 7b0f97baSDoug Gale gdb_xml_files="i386-32bit.xml" 8004 28988117SLaurent Vivier TARGET_SYSTBL_ABI=i386 8005 2408a527Saurel32 ;; 8006 2408a527Saurel32 x86_64) 8007 6acff7daSJuan Quintela TARGET_BASE_ARCH=i386 8008 8d62f35aSLaurent Vivier TARGET_SYSTBL_ABI=common,64 8009 0a7fa00aSEmilio G. Cota mttcg="yes" 8010 7b0f97baSDoug Gale gdb_xml_files="i386-64bit.xml" 8011 2408a527Saurel32 ;; 8012 2408a527Saurel32 alpha) 8013 5ee4f3c2SRichard Henderson mttcg="yes" 8014 6116aea9SLaurent Vivier TARGET_SYSTBL_ABI=common 8015 2408a527Saurel32 ;; 8016 2408a527Saurel32 arm|armeb) 8017 b498c8a0SJuan Quintela TARGET_ARCH=arm 8018 5bcb4986SLaurent Vivier TARGET_SYSTBL_ABI=common,oabi 8019 e5fe0c52Spbrook bflt="yes" 8020 ca759f9eSAlex Bennée mttcg="yes" 8021 c888f7e0SPeter Maydell gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml arm-m-profile.xml" 8022 2408a527Saurel32 ;; 8023 722dd7beSMichael Weiser aarch64|aarch64_be) 8024 722dd7beSMichael Weiser TARGET_ARCH=aarch64 8025 6a49fa95SAlexander Graf TARGET_BASE_ARCH=arm 8026 6a49fa95SAlexander Graf bflt="yes" 8027 ca759f9eSAlex Bennée mttcg="yes" 8028 c888f7e0SPeter Maydell gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml arm-m-profile.xml" 8029 6a49fa95SAlexander Graf ;; 8030 42f3ff00SMichael Rolnik avr) 8031 42f3ff00SMichael Rolnik gdb_xml_files="avr-cpu.xml" 8032 42f3ff00SMichael Rolnik target_compiler=$cross_cc_avr 8033 42f3ff00SMichael Rolnik ;; 8034 2408a527Saurel32 cris) 8035 2408a527Saurel32 ;; 8036 61766fe9SRichard Henderson hppa) 8037 7b93dab5SRichard Henderson mttcg="yes" 8038 9566f4c6SLaurent Vivier TARGET_SYSTBL_ABI=common,32 8039 61766fe9SRichard Henderson ;; 8040 613a22c9SMichael Walle lm32) 8041 613a22c9SMichael Walle ;; 8042 2408a527Saurel32 m68k) 8043 0938cda5Saurel32 bflt="yes" 8044 a976ed3fSKONRAD Frederic gdb_xml_files="cf-core.xml cf-fp.xml m68k-core.xml m68k-fp.xml" 8045 5b85cae9SLaurent Vivier TARGET_SYSTBL_ABI=common 8046 2408a527Saurel32 ;; 8047 877fdc12SEdgar E. Iglesias microblaze|microblazeel) 8048 877fdc12SEdgar E. Iglesias TARGET_ARCH=microblaze 8049 ddf0c4cdSLaurent Vivier TARGET_SYSTBL_ABI=common 8050 72b675caSEdgar E. Iglesias bflt="yes" 8051 be73ef64SEdgar E. Iglesias echo "TARGET_ABI32=y" >> $config_target_mak 8052 72b675caSEdgar E. Iglesias ;; 8053 2408a527Saurel32 mips|mipsel) 8054 0454728cSAleksandar Markovic mttcg="yes" 8055 b498c8a0SJuan Quintela TARGET_ARCH=mips 8056 25be210fSJuan Quintela echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak 8057 c59716fcSLaurent Vivier TARGET_SYSTBL_ABI=o32 8058 2408a527Saurel32 ;; 8059 2408a527Saurel32 mipsn32|mipsn32el) 8060 0454728cSAleksandar Markovic mttcg="yes" 8061 597e2cecSRichard Henderson TARGET_ARCH=mips64 8062 6acff7daSJuan Quintela TARGET_BASE_ARCH=mips 8063 25be210fSJuan Quintela echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak 8064 597e2cecSRichard Henderson echo "TARGET_ABI32=y" >> $config_target_mak 8065 686a0fe4SLaurent Vivier TARGET_SYSTBL_ABI=n32 8066 2408a527Saurel32 ;; 8067 2408a527Saurel32 mips64|mips64el) 8068 a092a955SAlex Bennée mttcg="no" 8069 b498c8a0SJuan Quintela TARGET_ARCH=mips64 8070 6acff7daSJuan Quintela TARGET_BASE_ARCH=mips 8071 25be210fSJuan Quintela echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak 8072 686a0fe4SLaurent Vivier TARGET_SYSTBL_ABI=n64 8073 2408a527Saurel32 ;; 8074 d15a9c23SAnthony Green moxie) 8075 d15a9c23SAnthony Green ;; 8076 e671711cSMarek Vasut nios2) 8077 e671711cSMarek Vasut ;; 8078 4a09d0bbSRichard Henderson or1k) 8079 e67db06eSJia Liu TARGET_ARCH=openrisc 8080 e67db06eSJia Liu TARGET_BASE_ARCH=openrisc 8081 e67db06eSJia Liu ;; 8082 2408a527Saurel32 ppc) 8083 c8b3532dSaurel32 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml" 8084 76a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,32 8085 2408a527Saurel32 ;; 8086 2408a527Saurel32 ppc64) 8087 6acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 8088 e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 8089 76a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,64 8090 f0b0685dSNikunj A Dadhania mttcg=yes 8091 1438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 8092 2408a527Saurel32 ;; 8093 9c35126cSDoug Kwan ppc64le) 8094 9c35126cSDoug Kwan TARGET_ARCH=ppc64 8095 9c35126cSDoug Kwan TARGET_BASE_ARCH=ppc 8096 9c35126cSDoug Kwan TARGET_ABI_DIR=ppc 8097 76a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,64 8098 f0b0685dSNikunj A Dadhania mttcg=yes 8099 1438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 8100 9c35126cSDoug Kwan ;; 8101 2408a527Saurel32 ppc64abi32) 8102 b498c8a0SJuan Quintela TARGET_ARCH=ppc64 8103 6acff7daSJuan Quintela TARGET_BASE_ARCH=ppc 8104 e6e91b9cSJuan Quintela TARGET_ABI_DIR=ppc 8105 76a691f1SLaurent Vivier TARGET_SYSTBL_ABI=common,nospu,32 8106 25be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 8107 1438eff3SAnton Blanchard gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml power-vsx.xml" 8108 2408a527Saurel32 ;; 8109 25fa194bSMichael Clark riscv32) 8110 25fa194bSMichael Clark TARGET_BASE_ARCH=riscv 8111 25fa194bSMichael Clark TARGET_ABI_DIR=riscv 8112 25fa194bSMichael Clark mttcg=yes 8113 ae4a70c0SKeith Packard gdb_xml_files="riscv-32bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-32bit-csr.xml riscv-32bit-virtual.xml" 8114 25fa194bSMichael Clark ;; 8115 25fa194bSMichael Clark riscv64) 8116 25fa194bSMichael Clark TARGET_BASE_ARCH=riscv 8117 25fa194bSMichael Clark TARGET_ABI_DIR=riscv 8118 25fa194bSMichael Clark mttcg=yes 8119 ae4a70c0SKeith Packard gdb_xml_files="riscv-64bit-cpu.xml riscv-32bit-fpu.xml riscv-64bit-fpu.xml riscv-64bit-csr.xml riscv-64bit-virtual.xml" 8120 25fa194bSMichael Clark ;; 8121 c8c35e5fSYoshinori Sato rx) 8122 c8c35e5fSYoshinori Sato TARGET_ARCH=rx 8123 c8c35e5fSYoshinori Sato bflt="yes" 8124 c8c35e5fSYoshinori Sato target_compiler=$cross_cc_rx 8125 c8c35e5fSYoshinori Sato gdb_xml_files="rx-core.xml" 8126 c8c35e5fSYoshinori Sato ;; 8127 2408a527Saurel32 sh4|sh4eb) 8128 b498c8a0SJuan Quintela TARGET_ARCH=sh4 8129 d0c832f6SLaurent Vivier TARGET_SYSTBL_ABI=common 8130 4dbed897Spbrook bflt="yes" 8131 2408a527Saurel32 ;; 8132 2408a527Saurel32 sparc) 8133 bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,32 8134 2408a527Saurel32 ;; 8135 2408a527Saurel32 sparc64) 8136 6acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 8137 bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,64 8138 2408a527Saurel32 ;; 8139 2408a527Saurel32 sparc32plus) 8140 b498c8a0SJuan Quintela TARGET_ARCH=sparc64 8141 6acff7daSJuan Quintela TARGET_BASE_ARCH=sparc 8142 e6e91b9cSJuan Quintela TARGET_ABI_DIR=sparc 8143 bb0cdc03SLaurent Vivier TARGET_SYSTBL_ABI=common,32 8144 25be210fSJuan Quintela echo "TARGET_ABI32=y" >> $config_target_mak 8145 2408a527Saurel32 ;; 8146 24e804ecSAlexander Graf s390x) 8147 318f371dSLaurent Vivier TARGET_SYSTBL_ABI=common,64 8148 63685bc4SDavid Hildenbrand mttcg=yes 8149 86158a2aSChristian Borntraeger gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml s390-cr.xml s390-virt.xml s390-gs.xml" 8150 24e804ecSAlexander Graf ;; 8151 444e06b1SChen Gang tilegx) 8152 444e06b1SChen Gang ;; 8153 5ecaa4edSPeter Crosthwaite tricore) 8154 5ecaa4edSPeter Crosthwaite ;; 8155 d2fbca94SGuan Xuetao unicore32) 8156 d2fbca94SGuan Xuetao ;; 8157 cfa550c6SMax Filippov xtensa|xtensaeb) 8158 cfa550c6SMax Filippov TARGET_ARCH=xtensa 8159 a4a93592SLaurent Vivier TARGET_SYSTBL_ABI=common 8160 02e33e9fSMax Filippov bflt="yes" 8161 9fb40342SMax Filippov mttcg="yes" 8162 cfa550c6SMax Filippov ;; 8163 2408a527Saurel32 *) 8164 76ad07a4SPeter Maydell error_exit "Unsupported target CPU" 8165 2408a527Saurel32 ;; 8166 2408a527Saurel32esac 8167 5e8861a0SPaolo Bonzini# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH 8168 5e8861a0SPaolo Bonziniif [ "$TARGET_BASE_ARCH" = "" ]; then 8169 5e8861a0SPaolo Bonzini TARGET_BASE_ARCH=$TARGET_ARCH 8170 5e8861a0SPaolo Bonzinifi 8171 5e8861a0SPaolo Bonzini 8172 5e8861a0SPaolo Bonzinisymlink "$source_path/Makefile.target" "$target_dir/Makefile" 8173 5e8861a0SPaolo Bonzini 8174 99afc91dSDaniel P. Berrangeupper() { 8175 99afc91dSDaniel P. Berrange echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]' 8176 99afc91dSDaniel P. Berrange} 8177 99afc91dSDaniel P. Berrange 8178 89138857SStefan Weiltarget_arch_name="$(upper $TARGET_ARCH)" 8179 25be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak 8180 c1799a84SPaolo Bonziniecho "TARGET_NAME=$target_name" >> $config_target_mak 8181 25be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak 8182 e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then 8183 e6e91b9cSJuan Quintela TARGET_ABI_DIR=$TARGET_ARCH 8184 e6e91b9cSJuan Quintelafi 8185 25be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak 8186 adfc3e91SStacey Sonif [ "$HOST_VARIANT_DIR" != "" ]; then 8187 adfc3e91SStacey Son echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak 8188 adfc3e91SStacey Sonfi 8189 4d6a835dSLaurent Vivierif [ "$TARGET_SYSTBL_ABI" != "" ]; then 8190 4d6a835dSLaurent Vivier echo "TARGET_SYSTBL_ABI=$TARGET_SYSTBL_ABI" >> $config_target_mak 8191 4d6a835dSLaurent Vivierfi 8192 3b6b7550SPaolo Bonzini 8193 3b6b7550SPaolo Bonziniif supported_xen_target $target; then 8194 25be210fSJuan Quintela echo "CONFIG_XEN=y" >> $config_target_mak 8195 eb6fda0fSAnthony PERARD if test "$xen_pci_passthrough" = yes; then 8196 eb6fda0fSAnthony PERARD echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak" 8197 eb6fda0fSAnthony PERARD fi 8198 432d268cSJun Nakajimafi 8199 3b6b7550SPaolo Bonziniif supported_kvm_target $target; then 8200 25be210fSJuan Quintela echo "CONFIG_KVM=y" >> $config_target_mak 8201 c59249f9SJuan Quintelafi 8202 3b6b7550SPaolo Bonziniif supported_hax_target $target; then 8203 b0cb0a66SVincent Palatin echo "CONFIG_HAX=y" >> $config_target_mak 8204 b0cb0a66SVincent Palatinfi 8205 c97d6d2cSSergio Andres Gomez Del Realif supported_hvf_target $target; then 8206 c97d6d2cSSergio Andres Gomez Del Real echo "CONFIG_HVF=y" >> $config_target_mak 8207 c97d6d2cSSergio Andres Gomez Del Realfi 8208 d661d9a4SJustin Terry (VM)if supported_whpx_target $target; then 8209 d661d9a4SJustin Terry (VM) echo "CONFIG_WHPX=y" >> $config_target_mak 8210 d661d9a4SJustin Terry (VM)fi 8211 52bf9771Stony.nguyen@bt.comif test "$target_aligned_only" = "yes" ; then 8212 52bf9771Stony.nguyen@bt.com echo "TARGET_ALIGNED_ONLY=y" >> $config_target_mak 8213 52bf9771Stony.nguyen@bt.comfi 8214 de83cd02Sbellardif test "$target_bigendian" = "yes" ; then 8215 25be210fSJuan Quintela echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak 8216 97a847bcSbellardfi 8217 97a847bcSbellardif test "$target_softmmu" = "yes" ; then 8218 25be210fSJuan Quintela echo "CONFIG_SOFTMMU=y" >> $config_target_mak 8219 ca759f9eSAlex Bennée if test "$mttcg" = "yes" ; then 8220 ca759f9eSAlex Bennée echo "TARGET_SUPPORTS_MTTCG=y" >> $config_target_mak 8221 ca759f9eSAlex Bennée fi 8222 de83cd02Sbellardfi 8223 997344f3Sbellardif test "$target_user_only" = "yes" ; then 8224 25be210fSJuan Quintela echo "CONFIG_USER_ONLY=y" >> $config_target_mak 8225 a2c80be9SStefan Weil echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak 8226 997344f3Sbellardfi 8227 831b7825Sthsif test "$target_linux_user" = "yes" ; then 8228 25be210fSJuan Quintela echo "CONFIG_LINUX_USER=y" >> $config_target_mak 8229 831b7825Sthsfi 8230 56aebc89Spbrooklist="" 8231 56aebc89Spbrookif test ! -z "$gdb_xml_files" ; then 8232 56aebc89Spbrook for x in $gdb_xml_files; do 8233 56aebc89Spbrook list="$list $source_path/gdb-xml/$x" 8234 56aebc89Spbrook done 8235 25be210fSJuan Quintela echo "TARGET_XML_FILES=$list" >> $config_target_mak 8236 3d0f1517SJuan Quintelafi 8237 de83cd02Sbellard 8238 e633a5c6SEric Blakeif test "$target_user_only" = "yes" && test "$bflt" = "yes"; then 8239 25be210fSJuan Quintela echo "TARGET_HAS_BFLT=y" >> $config_target_mak 8240 e5fe0c52Spbrookfi 8241 84778508Sblueswir1if test "$target_bsd_user" = "yes" ; then 8242 25be210fSJuan Quintela echo "CONFIG_BSD_USER=y" >> $config_target_mak 8243 84778508Sblueswir1fi 8244 5b0753e0Sbellard 8245 d75402b5SAlex Bennée 8246 db5adeaaSPaolo Bonzini# generate QEMU_CFLAGS/QEMU_LDFLAGS for targets 8247 fa282484SJuan Quintela 8248 4afddb55SJuan Quintelacflags="" 8249 fa282484SJuan Quintelaldflags="" 8250 9b8e111fSJuan Quintela 8251 c765fcacSPeter Crosthwaitedisas_config() { 8252 c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> $config_target_mak 8253 c765fcacSPeter Crosthwaite echo "CONFIG_${1}_DIS=y" >> config-all-disas.mak 8254 c765fcacSPeter Crosthwaite} 8255 c765fcacSPeter Crosthwaite 8256 64656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do 8257 64656024SJuan Quintela case "$i" in 8258 64656024SJuan Quintela alpha) 8259 c765fcacSPeter Crosthwaite disas_config "ALPHA" 8260 64656024SJuan Quintela ;; 8261 82295d8aSRichard Henderson aarch64) 8262 82295d8aSRichard Henderson if test -n "${cxx}"; then 8263 c765fcacSPeter Crosthwaite disas_config "ARM_A64" 8264 82295d8aSRichard Henderson fi 8265 82295d8aSRichard Henderson ;; 8266 64656024SJuan Quintela arm) 8267 c765fcacSPeter Crosthwaite disas_config "ARM" 8268 999b53ecSClaudio Fontana if test -n "${cxx}"; then 8269 c765fcacSPeter Crosthwaite disas_config "ARM_A64" 8270 999b53ecSClaudio Fontana fi 8271 64656024SJuan Quintela ;; 8272 42f3ff00SMichael Rolnik avr) 8273 42f3ff00SMichael Rolnik disas_config "AVR" 8274 42f3ff00SMichael Rolnik ;; 8275 64656024SJuan Quintela cris) 8276 c765fcacSPeter Crosthwaite disas_config "CRIS" 8277 64656024SJuan Quintela ;; 8278 429b31a2SRichard Henderson hppa) 8279 429b31a2SRichard Henderson disas_config "HPPA" 8280 429b31a2SRichard Henderson ;; 8281 c72b26ecSRichard Henderson i386|x86_64|x32) 8282 c765fcacSPeter Crosthwaite disas_config "I386" 8283 64656024SJuan Quintela ;; 8284 79368f49SMichael Walle lm32) 8285 c765fcacSPeter Crosthwaite disas_config "LM32" 8286 79368f49SMichael Walle ;; 8287 64656024SJuan Quintela m68k) 8288 c765fcacSPeter Crosthwaite disas_config "M68K" 8289 64656024SJuan Quintela ;; 8290 877fdc12SEdgar E. Iglesias microblaze*) 8291 c765fcacSPeter Crosthwaite disas_config "MICROBLAZE" 8292 64656024SJuan Quintela ;; 8293 64656024SJuan Quintela mips*) 8294 c765fcacSPeter Crosthwaite disas_config "MIPS" 8295 89a955e8SAleksandar Markovic if test -n "${cxx}"; then 8296 89a955e8SAleksandar Markovic disas_config "NANOMIPS" 8297 89a955e8SAleksandar Markovic fi 8298 64656024SJuan Quintela ;; 8299 d15a9c23SAnthony Green moxie*) 8300 c765fcacSPeter Crosthwaite disas_config "MOXIE" 8301 d15a9c23SAnthony Green ;; 8302 e671711cSMarek Vasut nios2) 8303 e671711cSMarek Vasut disas_config "NIOS2" 8304 e671711cSMarek Vasut ;; 8305 4a09d0bbSRichard Henderson or1k) 8306 c765fcacSPeter Crosthwaite disas_config "OPENRISC" 8307 e67db06eSJia Liu ;; 8308 64656024SJuan Quintela ppc*) 8309 c765fcacSPeter Crosthwaite disas_config "PPC" 8310 64656024SJuan Quintela ;; 8311 c4f80543SAlistair Francis riscv*) 8312 25fa194bSMichael Clark disas_config "RISCV" 8313 25fa194bSMichael Clark ;; 8314 c8c35e5fSYoshinori Sato rx) 8315 c8c35e5fSYoshinori Sato disas_config "RX" 8316 c8c35e5fSYoshinori Sato ;; 8317 24e804ecSAlexander Graf s390*) 8318 c765fcacSPeter Crosthwaite disas_config "S390" 8319 64656024SJuan Quintela ;; 8320 64656024SJuan Quintela sh4) 8321 c765fcacSPeter Crosthwaite disas_config "SH4" 8322 64656024SJuan Quintela ;; 8323 64656024SJuan Quintela sparc*) 8324 c765fcacSPeter Crosthwaite disas_config "SPARC" 8325 64656024SJuan Quintela ;; 8326 cfa550c6SMax Filippov xtensa*) 8327 c765fcacSPeter Crosthwaite disas_config "XTENSA" 8328 cfa550c6SMax Filippov ;; 8329 64656024SJuan Quintela esac 8330 64656024SJuan Quinteladone 8331 9195b2c2SStefan Weilif test "$tcg_interpreter" = "yes" ; then 8332 c765fcacSPeter Crosthwaite disas_config "TCI" 8333 9195b2c2SStefan Weilfi 8334 64656024SJuan Quintela 8335 e9a3591fSChristian Borntraeger# Newer kernels on s390 check for an S390_PGSTE program header and 8336 e9a3591fSChristian Borntraeger# enable the pgste page table extensions in that case. This makes 8337 e9a3591fSChristian Borntraeger# the vm.allocate_pgste sysctl unnecessary. We enable this program 8338 e9a3591fSChristian Borntraeger# header if 8339 e9a3591fSChristian Borntraeger# - we build on s390x 8340 e9a3591fSChristian Borntraeger# - we build the system emulation for s390x (qemu-system-s390x) 8341 e9a3591fSChristian Borntraeger# - KVM is enabled 8342 e9a3591fSChristian Borntraeger# - the linker supports --s390-pgste 8343 e633a5c6SEric Blakeif test "$TARGET_ARCH" = "s390x" && test "$target_softmmu" = "yes" && \ 8344 e633a5c6SEric Blake test "$ARCH" = "s390x" && test "$kvm" = "yes"; then 8345 e9a3591fSChristian Borntraeger if ld_has --s390-pgste ; then 8346 e9a3591fSChristian Borntraeger ldflags="-Wl,--s390-pgste $ldflags" 8347 e9a3591fSChristian Borntraeger fi 8348 e9a3591fSChristian Borntraegerfi 8349 e9a3591fSChristian Borntraeger 8350 db5adeaaSPaolo Bonziniecho "QEMU_LDFLAGS+=$ldflags" >> $config_target_mak 8351 25be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak 8352 fa282484SJuan Quintela 8353 97a847bcSbellarddone # for target in $targets 8354 7d13299dSbellard 8355 d52c454aSMarc-André Lureauecho "PIXMAN_CFLAGS=$pixman_cflags" >> $config_host_mak 8356 d52c454aSMarc-André Lureauecho "PIXMAN_LIBS=$pixman_libs" >> $config_host_mak 8357 d52c454aSMarc-André Lureau 8358 e3971d61SPhilippe Mathieu-Daudéif [ "$fdt" = "git" ]; then 8359 3b8593eeSMarkus Armbruster echo "config-host.h: dtc/all" >> $config_host_mak 8360 a540f158SPeter Crosthwaitefi 8361 e219c499SRichard Hendersonif [ "$capstone" = "git" -o "$capstone" = "internal" ]; then 8362 3b8593eeSMarkus Armbruster echo "config-host.h: capstone/all" >> $config_host_mak 8363 e219c499SRichard Hendersonfi 8364 e219c499SRichard Hendersonif test -n "$LIBCAPSTONE"; then 8365 e219c499SRichard Henderson echo "LIBCAPSTONE=$LIBCAPSTONE" >> $config_host_mak 8366 e219c499SRichard Hendersonfi 8367 a540f158SPeter Crosthwaite 8368 a99d57bbSWanlong Gaoif test "$numa" = "yes"; then 8369 a99d57bbSWanlong Gao echo "CONFIG_NUMA=y" >> $config_host_mak 8370 a99d57bbSWanlong Gaofi 8371 a99d57bbSWanlong Gao 8372 fd0e6053SJohn Snowif test "$ccache_cpp2" = "yes"; then 8373 fd0e6053SJohn Snow echo "export CCACHE_CPP2=y" >> $config_host_mak 8374 fd0e6053SJohn Snowfi 8375 fd0e6053SJohn Snow 8376 1e4f6065SDaniele Buonoif test "$safe_stack" = "yes"; then 8377 1e4f6065SDaniele Buono echo "CONFIG_SAFESTACK=y" >> $config_host_mak 8378 1e4f6065SDaniele Buonofi 8379 1e4f6065SDaniele Buono 8380 e29e5c6eSPeter Maydell# If we're using a separate build tree, set it up now. 8381 e29e5c6eSPeter Maydell# DIRS are directories which we simply mkdir in the build tree; 8382 e29e5c6eSPeter Maydell# LINKS are things to symlink back into the source tree 8383 e29e5c6eSPeter Maydell# (these can be both files and directories). 8384 e29e5c6eSPeter Maydell# Caution: do not add files or directories here using wildcards. This 8385 e29e5c6eSPeter Maydell# will result in problems later if a new file matching the wildcard is 8386 e29e5c6eSPeter Maydell# added to the source tree -- nothing will cause configure to be rerun 8387 e29e5c6eSPeter Maydell# so the build tree will be missing the link back to the new file, and 8388 e29e5c6eSPeter Maydell# tests might fail. Prefer to keep the relevant files in their own 8389 e29e5c6eSPeter Maydell# directory and symlink the directory instead. 8390 1cf4323eSThomas HuthDIRS="tests tests/tcg tests/tcg/lm32 tests/qapi-schema tests/qtest/libqos" 8391 1cf4323eSThomas HuthDIRS="$DIRS tests/qtest tests/qemu-iotests tests/vm tests/fp tests/qgraph" 8392 b855f8d1SPaolo BonziniDIRS="$DIRS docs docs/interop fsdev scsi" 8393 744a928cSAlexey KardashevskiyDIRS="$DIRS pc-bios/optionrom pc-bios/s390-ccw" 8394 8db2a4fdSGerd HoffmannDIRS="$DIRS roms/seabios" 8395 2038f8c8SPaolo BonziniLINKS="Makefile" 8396 2038f8c8SPaolo BonziniLINKS="$LINKS tests/tcg/lm32/Makefile po/Makefile" 8397 3941996bSPaolo BonziniLINKS="$LINKS tests/tcg/Makefile.target" 8398 671f760bSEmilio G. CotaLINKS="$LINKS tests/plugin/Makefile" 8399 e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/optionrom/Makefile pc-bios/keymaps" 8400 e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/s390-ccw/Makefile" 8401 8db2a4fdSGerd HoffmannLINKS="$LINKS roms/seabios/Makefile" 8402 e29e5c6eSPeter MaydellLINKS="$LINKS pc-bios/qemu-icon.bmp" 8403 e29e5c6eSPeter MaydellLINKS="$LINKS .gdbinit scripts" # scripts needed by relative path in .gdbinit 8404 39950353SPeter MaydellLINKS="$LINKS tests/acceptance tests/data" 8405 39950353SPeter MaydellLINKS="$LINKS tests/qemu-iotests/check" 8406 8f8fd9edSCleber RosaLINKS="$LINKS python" 8407 753d11f2SRichard Hendersonfor bios_file in \ 8408 753d11f2SRichard Henderson $source_path/pc-bios/*.bin \ 8409 225a9ab8SAlexey Kardashevskiy $source_path/pc-bios/*.lid \ 8410 753d11f2SRichard Henderson $source_path/pc-bios/*.rom \ 8411 753d11f2SRichard Henderson $source_path/pc-bios/*.dtb \ 8412 e89e33e1SDominik Dingel $source_path/pc-bios/*.img \ 8413 753d11f2SRichard Henderson $source_path/pc-bios/openbios-* \ 8414 4e73c781SAlexander Graf $source_path/pc-bios/u-boot.* \ 8415 26ce90fdSLaszlo Ersek $source_path/pc-bios/edk2-*.fd.bz2 \ 8416 753d11f2SRichard Henderson $source_path/pc-bios/palcode-* 8417 753d11f2SRichard Hendersondo 8418 e29e5c6eSPeter Maydell LINKS="$LINKS pc-bios/$(basename $bios_file)" 8419 7ea78b74SJan Kiszkadone 8420 d1807a4fSPaolo Bonzinimkdir -p $DIRS 8421 e29e5c6eSPeter Maydellfor f in $LINKS ; do 8422 cab00a5aSMichael S. Tsirkin if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then 8423 f9245e10SPeter Maydell symlink "$source_path/$f" "$f" 8424 f9245e10SPeter Maydell fi 8425 7d13299dSbellarddone 8426 1ad2134fSPaul Brook 8427 2038f8c8SPaolo Bonzini(for i in $cross_cc_vars; do 8428 2038f8c8SPaolo Bonzini export $i 8429 2038f8c8SPaolo Bonzinidone 8430 afc3a8f9SAlex Bennéeexport target_list source_path use_containers 8431 2038f8c8SPaolo Bonzini$source_path/tests/tcg/configure.sh) 8432 2038f8c8SPaolo Bonzini 8433 c34ebfdcSAnthony Liguori# temporary config to build submodules 8434 8db2a4fdSGerd Hoffmannfor rom in seabios; do 8435 c34ebfdcSAnthony Liguori config_mak=roms/$rom/config.mak 8436 37116c89SStefan Weil echo "# Automatically generated by configure - do not modify" > $config_mak 8437 c34ebfdcSAnthony Liguori echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak 8438 cdbd727cSRichard Henderson echo "AS=$as" >> $config_mak 8439 5f6f0e27SRichard Henderson echo "CCAS=$ccas" >> $config_mak 8440 c34ebfdcSAnthony Liguori echo "CC=$cc" >> $config_mak 8441 c34ebfdcSAnthony Liguori echo "BCC=bcc" >> $config_mak 8442 3dd46c78SBlue Swirl echo "CPP=$cpp" >> $config_mak 8443 c34ebfdcSAnthony Liguori echo "OBJCOPY=objcopy" >> $config_mak 8444 a31a8642SMichael S. Tsirkin echo "IASL=$iasl" >> $config_mak 8445 c34ebfdcSAnthony Liguori echo "LD=$ld" >> $config_mak 8446 9f81aeb5SAlistair Francis echo "RANLIB=$ranlib" >> $config_mak 8447 c34ebfdcSAnthony Liguoridone 8448 c34ebfdcSAnthony Liguori 8449 76c7560aSMax Reitz# set up qemu-iotests in this build directory 8450 76c7560aSMax Reitziotests_common_env="tests/qemu-iotests/common.env" 8451 76c7560aSMax Reitz 8452 76c7560aSMax Reitzecho "# Automatically generated by configure - do not modify" > "$iotests_common_env" 8453 76c7560aSMax Reitzecho >> "$iotests_common_env" 8454 76c7560aSMax Reitzecho "export PYTHON='$python'" >> "$iotests_common_env" 8455 76c7560aSMax Reitz 8456 a5665051SPaolo Bonziniif test "$skip_meson" = no; then 8457 fc929892SMarc-André Lureaucross="config-meson.cross.new" 8458 fc929892SMarc-André Lureaumeson_quote() { 8459 fc929892SMarc-André Lureau echo "['$(echo $* | sed "s/ /','/g")']" 8460 fc929892SMarc-André Lureau} 8461 fc929892SMarc-André Lureau 8462 fc929892SMarc-André Lureauecho "# Automatically generated by configure - do not modify" > $cross 8463 fc929892SMarc-André Lureauecho "[properties]" >> $cross 8464 fc929892SMarc-André Lureautest -z "$cxx" && echo "link_language = 'c'" >> $cross 8465 fc929892SMarc-André Lureauecho "[binaries]" >> $cross 8466 fc929892SMarc-André Lureauecho "c = $(meson_quote $cc)" >> $cross 8467 fc929892SMarc-André Lureautest -n "$cxx" && echo "cpp = $(meson_quote $cxx)" >> $cross 8468 fc929892SMarc-André Lureauecho "ar = $(meson_quote $ar)" >> $cross 8469 fc929892SMarc-André Lureauecho "nm = $(meson_quote $nm)" >> $cross 8470 fc929892SMarc-André Lureauecho "pkgconfig = $(meson_quote $pkg_config_exe)" >> $cross 8471 fc929892SMarc-André Lureauecho "ranlib = $(meson_quote $ranlib)" >> $cross 8472 fc929892SMarc-André Lureauecho "strip = $(meson_quote $strip)" >> $cross 8473 fc929892SMarc-André Lureauecho "windres = $(meson_quote $windres)" >> $cross 8474 fc929892SMarc-André Lureauif test -n "$cross_prefix"; then 8475 fc929892SMarc-André Lureau cross_arg="--cross-file config-meson.cross" 8476 fc929892SMarc-André Lureau # Hack: Meson expects an absolute path for the *build* machine 8477 fc929892SMarc-André Lureau # for the prefix, so add a slash in front of a Windows path that 8478 fc929892SMarc-André Lureau # includes a drive letter. 8479 fc929892SMarc-André Lureau # 8480 fc929892SMarc-André Lureau # See https://github.com/mesonbuild/meson/issues/7577. 8481 fc929892SMarc-André Lureau echo "[host_machine]" >> $cross 8482 fc929892SMarc-André Lureau if test "$mingw32" = "yes" ; then 8483 fc929892SMarc-André Lureau echo "system = 'windows'" >> $cross 8484 fc929892SMarc-André Lureau case $prefix in 8485 fc929892SMarc-André Lureau ?:*) pre_prefix=/ ;; 8486 fc929892SMarc-André Lureau esac 8487 fc929892SMarc-André Lureau fi 8488 fc929892SMarc-André Lureau case "$ARCH" in 8489 fc929892SMarc-André Lureau i386|x86_64) 8490 fc929892SMarc-André Lureau echo "cpu_family = 'x86'" >> $cross 8491 fc929892SMarc-André Lureau ;; 8492 fc929892SMarc-André Lureau ppc64le) 8493 fc929892SMarc-André Lureau echo "cpu_family = 'ppc64'" >> $cross 8494 fc929892SMarc-André Lureau ;; 8495 fc929892SMarc-André Lureau *) 8496 fc929892SMarc-André Lureau echo "cpu_family = '$ARCH'" >> $cross 8497 fc929892SMarc-André Lureau ;; 8498 fc929892SMarc-André Lureau esac 8499 fc929892SMarc-André Lureau echo "cpu = '$cpu'" >> $cross 8500 fc929892SMarc-André Lureau if test "$bigendian" = "yes" ; then 8501 fc929892SMarc-André Lureau echo "endian = 'big'" >> $cross 8502 fc929892SMarc-André Lureau else 8503 fc929892SMarc-André Lureau echo "endian = 'little'" >> $cross 8504 fc929892SMarc-André Lureau fi 8505 fc929892SMarc-André Lureauelse 8506 fc929892SMarc-André Lureau cross_arg="--native-file config-meson.cross" 8507 fc929892SMarc-André Lureaufi 8508 fc929892SMarc-André Lureaumv $cross config-meson.cross 8509 fc929892SMarc-André Lureau 8510 a5665051SPaolo Bonzinirm -rf meson-private meson-info meson-logs 8511 a5665051SPaolo BonziniNINJA=$PWD/ninjatool $meson setup \ 8512 fc929892SMarc-André Lureau --prefix "${pre_prefix}$prefix" \ 8513 fc929892SMarc-André Lureau --libdir "${pre_prefix}$libdir" \ 8514 fc929892SMarc-André Lureau --libexecdir "${pre_prefix}$libexecdir" \ 8515 fc929892SMarc-André Lureau --bindir "${pre_prefix}$bindir" \ 8516 fc929892SMarc-André Lureau --includedir "${pre_prefix}$includedir" \ 8517 fc929892SMarc-André Lureau --datadir "${pre_prefix}$datadir" \ 8518 fc929892SMarc-André Lureau --mandir "${pre_prefix}$mandir" \ 8519 fc929892SMarc-André Lureau --sysconfdir "${pre_prefix}$sysconfdir" \ 8520 fc929892SMarc-André Lureau --localstatedir "${pre_prefix}$local_statedir" \ 8521 a5665051SPaolo Bonzini -Doptimization=$(if test "$debug" = yes; then echo 0; else echo 2; fi) \ 8522 a5665051SPaolo Bonzini -Ddebug=$(if test "$debug_info" = yes; then echo true; else echo false; fi) \ 8523 a5665051SPaolo Bonzini -Dwerror=$(if test "$werror" = yes; then echo true; else echo false; fi) \ 8524 a5665051SPaolo Bonzini -Dstrip=$(if test "$strip_opt" = yes; then echo true; else echo false; fi) \ 8525 da6d48b9SMarc-André Lureau -Db_pie=$(if test "$pie" = yes; then echo true; else echo false; fi) \ 8526 bf0e56a3SMarc-André Lureau -Db_coverage=$(if test "$gcov" = yes; then echo true; else echo false; fi) \ 8527 fc929892SMarc-André Lureau $cross_arg \ 8528 a5665051SPaolo Bonzini "$PWD" "$source_path" 8529 a5665051SPaolo Bonzini 8530 a5665051SPaolo Bonziniif test "$?" -ne 0 ; then 8531 a5665051SPaolo Bonzini error_exit "meson setup failed" 8532 a5665051SPaolo Bonzinifi 8533 a5665051SPaolo Bonzinitouch ninjatool.stamp 8534 a5665051SPaolo Bonzinifi 8535 a5665051SPaolo Bonzini 8536 dc655404SMichael S. Tsirkin# Save the configure command line for later reuse. 8537 dc655404SMichael S. Tsirkincat <<EOD >config.status 8538 dc655404SMichael S. Tsirkin#!/bin/sh 8539 dc655404SMichael S. Tsirkin# Generated by configure. 8540 dc655404SMichael S. Tsirkin# Run this file to recreate the current configuration. 8541 dc655404SMichael S. Tsirkin# Compiler output produced by configure, useful for debugging 8542 dc655404SMichael S. Tsirkin# configure, is in config.log if it exists. 8543 dc655404SMichael S. TsirkinEOD 8544 e811da7fSDaniel P. Berrangé 8545 e811da7fSDaniel P. Berrangépreserve_env() { 8546 e811da7fSDaniel P. Berrangé envname=$1 8547 e811da7fSDaniel P. Berrangé 8548 e811da7fSDaniel P. Berrangé eval envval=\$$envname 8549 e811da7fSDaniel P. Berrangé 8550 e811da7fSDaniel P. Berrangé if test -n "$envval" 8551 e811da7fSDaniel P. Berrangé then 8552 e811da7fSDaniel P. Berrangé echo "$envname='$envval'" >> config.status 8553 e811da7fSDaniel P. Berrangé echo "export $envname" >> config.status 8554 e811da7fSDaniel P. Berrangé else 8555 e811da7fSDaniel P. Berrangé echo "unset $envname" >> config.status 8556 e811da7fSDaniel P. Berrangé fi 8557 e811da7fSDaniel P. Berrangé} 8558 e811da7fSDaniel P. Berrangé 8559 e811da7fSDaniel P. Berrangé# Preserve various env variables that influence what 8560 e811da7fSDaniel P. Berrangé# features/build target configure will detect 8561 e811da7fSDaniel P. Berrangépreserve_env AR 8562 e811da7fSDaniel P. Berrangépreserve_env AS 8563 e811da7fSDaniel P. Berrangépreserve_env CC 8564 e811da7fSDaniel P. Berrangépreserve_env CPP 8565 e811da7fSDaniel P. Berrangépreserve_env CXX 8566 e811da7fSDaniel P. Berrangépreserve_env INSTALL 8567 e811da7fSDaniel P. Berrangépreserve_env LD 8568 e811da7fSDaniel P. Berrangépreserve_env LD_LIBRARY_PATH 8569 e811da7fSDaniel P. Berrangépreserve_env LIBTOOL 8570 e811da7fSDaniel P. Berrangépreserve_env MAKE 8571 e811da7fSDaniel P. Berrangépreserve_env NM 8572 e811da7fSDaniel P. Berrangépreserve_env OBJCOPY 8573 e811da7fSDaniel P. Berrangépreserve_env PATH 8574 e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG 8575 e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG_LIBDIR 8576 e811da7fSDaniel P. Berrangépreserve_env PKG_CONFIG_PATH 8577 e811da7fSDaniel P. Berrangépreserve_env PYTHON 8578 e811da7fSDaniel P. Berrangépreserve_env SDL2_CONFIG 8579 e811da7fSDaniel P. Berrangépreserve_env SMBD 8580 e811da7fSDaniel P. Berrangépreserve_env STRIP 8581 e811da7fSDaniel P. Berrangépreserve_env WINDRES 8582 e811da7fSDaniel P. Berrangé 8583 dc655404SMichael S. Tsirkinprintf "exec" >>config.status 8584 a5665051SPaolo Bonzinifor i in "$0" "$@"; do 8585 a5665051SPaolo Bonzini test "$i" = --skip-meson || printf " '%s'" "$i" >>config.status 8586 a5665051SPaolo Bonzinidone 8587 cf7cc929SDr. David Alan Gilbertecho ' "$@"' >>config.status 8588 dc655404SMichael S. Tsirkinchmod +x config.status 8589 dc655404SMichael S. Tsirkin 8590 8cd05ab6SPeter Maydellrm -r "$TMPDIR1" 8591