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