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