virtio-net: unbreak any layout
[qemu/cris-port.git] / configure
blobcc0338ddbd1400ed8e5b30af53e1129358e19f2c
1 #!/bin/sh
3 # qemu configure script (c) 2003 Fabrice Bellard
6 # Unset some variables known to interfere with behavior of common tools,
7 # just as autoconf does.
8 CLICOLOR_FORCE= GREP_OPTIONS=
9 unset CLICOLOR_FORCE GREP_OPTIONS
11 # Temporary directory used for files created while
12 # configure runs. Since it is in the build directory
13 # we can safely blow away any previous version of it
14 # (and we need not jump through hoops to try to delete
15 # it when configure exits.)
16 TMPDIR1="config-temp"
17 rm -rf "${TMPDIR1}"
18 mkdir -p "${TMPDIR1}"
19 if [ $? -ne 0 ]; then
20 echo "ERROR: failed to create temporary directory"
21 exit 1
24 TMPB="qemu-conf"
25 TMPC="${TMPDIR1}/${TMPB}.c"
26 TMPO="${TMPDIR1}/${TMPB}.o"
27 TMPCXX="${TMPDIR1}/${TMPB}.cxx"
28 TMPL="${TMPDIR1}/${TMPB}.lo"
29 TMPA="${TMPDIR1}/lib${TMPB}.la"
30 TMPE="${TMPDIR1}/${TMPB}.exe"
32 rm -f config.log
34 # Print a helpful header at the top of config.log
35 echo "# QEMU configure log $(date)" >> config.log
36 printf "# Configured with:" >> config.log
37 printf " '%s'" "$0" "$@" >> config.log
38 echo >> config.log
39 echo "#" >> config.log
41 error_exit() {
42 echo
43 echo "ERROR: $1"
44 while test -n "$2"; do
45 echo " $2"
46 shift
47 done
48 echo
49 exit 1
52 do_compiler() {
53 # Run the compiler, capturing its output to the log. First argument
54 # is compiler binary to execute.
55 local compiler="$1"
56 shift
57 echo $compiler "$@" >> config.log
58 $compiler "$@" >> config.log 2>&1 || return $?
59 # Test passed. If this is an --enable-werror build, rerun
60 # the test with -Werror and bail out if it fails. This
61 # makes warning-generating-errors in configure test code
62 # obvious to developers.
63 if test "$werror" != "yes"; then
64 return 0
66 # Don't bother rerunning the compile if we were already using -Werror
67 case "$*" in
68 *-Werror*)
69 return 0
71 esac
72 echo $compiler -Werror "$@" >> config.log
73 $compiler -Werror "$@" >> config.log 2>&1 && return $?
74 error_exit "configure test passed without -Werror but failed with -Werror." \
75 "This is probably a bug in the configure script. The failing command" \
76 "will be at the bottom of config.log." \
77 "You can run configure with --disable-werror to bypass this check."
80 do_cc() {
81 do_compiler "$cc" "$@"
84 do_cxx() {
85 do_compiler "$cxx" "$@"
88 update_cxxflags() {
89 # Set QEMU_CXXFLAGS from QEMU_CFLAGS by filtering out those
90 # options which some versions of GCC's C++ compiler complain about
91 # because they only make sense for C programs.
92 QEMU_CXXFLAGS=
93 for arg in $QEMU_CFLAGS; do
94 case $arg in
95 -Wstrict-prototypes|-Wmissing-prototypes|-Wnested-externs|\
96 -Wold-style-declaration|-Wold-style-definition|-Wredundant-decls)
99 QEMU_CXXFLAGS=${QEMU_CXXFLAGS:+$QEMU_CXXFLAGS }$arg
101 esac
102 done
105 compile_object() {
106 local_cflags="$1"
107 do_cc $QEMU_CFLAGS $local_cflags -c -o $TMPO $TMPC
110 compile_prog() {
111 local_cflags="$1"
112 local_ldflags="$2"
113 do_cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags
116 do_libtool() {
117 local mode=$1
118 shift
119 # Run the compiler, capturing its output to the log.
120 echo $libtool $mode --tag=CC $cc "$@" >> config.log
121 $libtool $mode --tag=CC $cc "$@" >> config.log 2>&1 || return $?
122 # Test passed. If this is an --enable-werror build, rerun
123 # the test with -Werror and bail out if it fails. This
124 # makes warning-generating-errors in configure test code
125 # obvious to developers.
126 if test "$werror" != "yes"; then
127 return 0
129 # Don't bother rerunning the compile if we were already using -Werror
130 case "$*" in
131 *-Werror*)
132 return 0
134 esac
135 echo $libtool $mode --tag=CC $cc -Werror "$@" >> config.log
136 $libtool $mode --tag=CC $cc -Werror "$@" >> config.log 2>&1 && return $?
137 error_exit "configure test passed without -Werror but failed with -Werror." \
138 "This is probably a bug in the configure script. The failing command" \
139 "will be at the bottom of config.log." \
140 "You can run configure with --disable-werror to bypass this check."
143 libtool_prog() {
144 do_libtool --mode=compile $QEMU_CFLAGS -c -fPIE -DPIE -o $TMPO $TMPC || return $?
145 do_libtool --mode=link $LDFLAGS -o $TMPA $TMPL -rpath /usr/local/lib
148 # symbolically link $1 to $2. Portable version of "ln -sf".
149 symlink() {
150 rm -rf "$2"
151 mkdir -p "$(dirname "$2")"
152 ln -s "$1" "$2"
155 # check whether a command is available to this shell (may be either an
156 # executable or a builtin)
157 has() {
158 type "$1" >/dev/null 2>&1
161 # search for an executable in PATH
162 path_of() {
163 local_command="$1"
164 local_ifs="$IFS"
165 local_dir=""
167 # pathname has a dir component?
168 if [ "${local_command#*/}" != "$local_command" ]; then
169 if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
170 echo "$local_command"
171 return 0
174 if [ -z "$local_command" ]; then
175 return 1
178 IFS=:
179 for local_dir in $PATH; do
180 if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
181 echo "$local_dir/$local_command"
182 IFS="${local_ifs:-$(printf ' \t\n')}"
183 return 0
185 done
186 # not found
187 IFS="${local_ifs:-$(printf ' \t\n')}"
188 return 1
191 have_backend () {
192 echo "$trace_backends" | grep "$1" >/dev/null
195 # default parameters
196 source_path=`dirname "$0"`
197 cpu=""
198 iasl="iasl"
199 interp_prefix="/usr/gnemul/qemu-%M"
200 static="no"
201 cross_prefix=""
202 audio_drv_list=""
203 block_drv_rw_whitelist=""
204 block_drv_ro_whitelist=""
205 host_cc="cc"
206 libs_softmmu=""
207 libs_tools=""
208 audio_pt_int=""
209 audio_win_int=""
210 cc_i386=i386-pc-linux-gnu-gcc
211 libs_qga=""
212 debug_info="yes"
213 stack_protector=""
215 # Don't accept a target_list environment variable.
216 unset target_list
218 # Default value for a variable defining feature "foo".
219 # * foo="no" feature will only be used if --enable-foo arg is given
220 # * foo="" feature will be searched for, and if found, will be used
221 # unless --disable-foo is given
222 # * foo="yes" this value will only be set by --enable-foo flag.
223 # feature will searched for,
224 # if not found, configure exits with error
226 # Always add --enable-foo and --disable-foo command line args.
227 # Distributions want to ensure that several features are compiled in, and it
228 # is impossible without a --enable-foo that exits if a feature is not found.
230 bluez=""
231 brlapi=""
232 curl=""
233 curses=""
234 docs=""
235 fdt=""
236 netmap="no"
237 pixman=""
238 sdl=""
239 sdlabi="1.2"
240 virtfs=""
241 vnc="yes"
242 sparse="no"
243 uuid=""
244 vde=""
245 vnc_tls=""
246 vnc_sasl=""
247 vnc_jpeg=""
248 vnc_png=""
249 xen=""
250 xen_ctrl_version=""
251 xen_pci_passthrough=""
252 linux_aio=""
253 cap_ng=""
254 attr=""
255 libattr=""
256 xfs=""
258 vhost_net="no"
259 vhost_scsi="no"
260 kvm="no"
261 rdma=""
262 gprof="no"
263 debug_tcg="no"
264 debug="no"
265 strip_opt="yes"
266 tcg_interpreter="no"
267 bigendian="no"
268 mingw32="no"
269 gcov="no"
270 gcov_tool="gcov"
271 EXESUF=""
272 DSOSUF=".so"
273 LDFLAGS_SHARED="-shared"
274 modules="no"
275 prefix="/usr/local"
276 mandir="\${prefix}/share/man"
277 datadir="\${prefix}/share"
278 qemu_docdir="\${prefix}/share/doc/qemu"
279 bindir="\${prefix}/bin"
280 libdir="\${prefix}/lib"
281 libexecdir="\${prefix}/libexec"
282 includedir="\${prefix}/include"
283 sysconfdir="\${prefix}/etc"
284 local_statedir="\${prefix}/var"
285 confsuffix="/qemu"
286 slirp="yes"
287 oss_lib=""
288 bsd="no"
289 linux="no"
290 solaris="no"
291 profiler="no"
292 cocoa="no"
293 softmmu="yes"
294 linux_user="no"
295 bsd_user="no"
296 guest_base="yes"
297 aix="no"
298 blobs="yes"
299 pkgversion=""
300 pie=""
301 zero_malloc=""
302 qom_cast_debug="yes"
303 trace_backends="nop"
304 trace_file="trace"
305 spice=""
306 rbd=""
307 smartcard_nss=""
308 libusb=""
309 usb_redir=""
310 opengl=""
311 zlib="yes"
312 lzo=""
313 snappy=""
314 bzip2=""
315 guest_agent=""
316 guest_agent_with_vss="no"
317 guest_agent_ntddscsi="no"
318 guest_agent_msi=""
319 vss_win32_sdk=""
320 win_sdk="no"
321 want_tools="yes"
322 libiscsi=""
323 libnfs=""
324 coroutine=""
325 coroutine_pool=""
326 seccomp=""
327 glusterfs=""
328 glusterfs_discard="no"
329 glusterfs_zerofill="no"
330 archipelago="no"
331 gtk=""
332 gtkabi=""
333 gnutls=""
334 gnutls_hash=""
335 vte=""
336 tpm="yes"
337 libssh2=""
338 vhdx=""
339 numa=""
340 tcmalloc="no"
342 # parse CC options first
343 for opt do
344 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
345 case "$opt" in
346 --cross-prefix=*) cross_prefix="$optarg"
348 --cc=*) CC="$optarg"
350 --cxx=*) CXX="$optarg"
352 --source-path=*) source_path="$optarg"
354 --cpu=*) cpu="$optarg"
356 --extra-cflags=*) QEMU_CFLAGS="$QEMU_CFLAGS $optarg"
357 EXTRA_CFLAGS="$optarg"
359 --extra-ldflags=*) LDFLAGS="$LDFLAGS $optarg"
360 EXTRA_LDFLAGS="$optarg"
362 --enable-debug-info) debug_info="yes"
364 --disable-debug-info) debug_info="no"
366 esac
367 done
368 # OS specific
369 # Using uname is really, really broken. Once we have the right set of checks
370 # we can eliminate its usage altogether.
372 # Preferred compiler:
373 # ${CC} (if set)
374 # ${cross_prefix}gcc (if cross-prefix specified)
375 # system compiler
376 if test -z "${CC}${cross_prefix}"; then
377 cc="$host_cc"
378 else
379 cc="${CC-${cross_prefix}gcc}"
382 if test -z "${CXX}${cross_prefix}"; then
383 cxx="c++"
384 else
385 cxx="${CXX-${cross_prefix}g++}"
388 ar="${AR-${cross_prefix}ar}"
389 as="${AS-${cross_prefix}as}"
390 cpp="${CPP-$cc -E}"
391 objcopy="${OBJCOPY-${cross_prefix}objcopy}"
392 ld="${LD-${cross_prefix}ld}"
393 libtool="${LIBTOOL-${cross_prefix}libtool}"
394 nm="${NM-${cross_prefix}nm}"
395 strip="${STRIP-${cross_prefix}strip}"
396 windres="${WINDRES-${cross_prefix}windres}"
397 pkg_config_exe="${PKG_CONFIG-${cross_prefix}pkg-config}"
398 query_pkg_config() {
399 "${pkg_config_exe}" ${QEMU_PKG_CONFIG_FLAGS} "$@"
401 pkg_config=query_pkg_config
402 sdl_config="${SDL_CONFIG-${cross_prefix}sdl-config}"
403 sdl2_config="${SDL2_CONFIG-${cross_prefix}sdl2-config}"
405 # If the user hasn't specified ARFLAGS, default to 'rv', just as make does.
406 ARFLAGS="${ARFLAGS-rv}"
408 # default flags for all hosts
409 QEMU_CFLAGS="-fno-strict-aliasing -fno-common $QEMU_CFLAGS"
410 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
411 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
412 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
413 QEMU_INCLUDES="-I. -I\$(SRC_PATH) -I\$(SRC_PATH)/include"
414 if test "$debug_info" = "yes"; then
415 CFLAGS="-g $CFLAGS"
416 LDFLAGS="-g $LDFLAGS"
419 # make source path absolute
420 source_path=`cd "$source_path"; pwd`
422 # running configure in the source tree?
423 # we know that's the case if configure is there.
424 if test -f "./configure"; then
425 pwd_is_source_path="y"
426 else
427 pwd_is_source_path="n"
430 check_define() {
431 cat > $TMPC <<EOF
432 #if !defined($1)
433 #error $1 not defined
434 #endif
435 int main(void) { return 0; }
437 compile_object
440 check_include() {
441 cat > $TMPC <<EOF
442 #include <$1>
443 int main(void) { return 0; }
445 compile_object
448 write_c_skeleton() {
449 cat > $TMPC <<EOF
450 int main(void) { return 0; }
454 if check_define __linux__ ; then
455 targetos="Linux"
456 elif check_define _WIN32 ; then
457 targetos='MINGW32'
458 elif check_define __OpenBSD__ ; then
459 targetos='OpenBSD'
460 elif check_define __sun__ ; then
461 targetos='SunOS'
462 elif check_define __HAIKU__ ; then
463 targetos='Haiku'
464 else
465 targetos=`uname -s`
468 # Some host OSes need non-standard checks for which CPU to use.
469 # Note that these checks are broken for cross-compilation: if you're
470 # cross-compiling to one of these OSes then you'll need to specify
471 # the correct CPU with the --cpu option.
472 case $targetos in
473 Darwin)
474 # on Leopard most of the system is 32-bit, so we have to ask the kernel if we can
475 # run 64-bit userspace code.
476 # If the user didn't specify a CPU explicitly and the kernel says this is
477 # 64 bit hw, then assume x86_64. Otherwise fall through to the usual detection code.
478 if test -z "$cpu" && test "$(sysctl -n hw.optional.x86_64)" = "1"; then
479 cpu="x86_64"
482 SunOS)
483 # `uname -m` returns i86pc even on an x86_64 box, so default based on isainfo
484 if test -z "$cpu" && test "$(isainfo -k)" = "amd64"; then
485 cpu="x86_64"
487 esac
489 if test ! -z "$cpu" ; then
490 # command line argument
492 elif check_define __i386__ ; then
493 cpu="i386"
494 elif check_define __x86_64__ ; then
495 if check_define __ILP32__ ; then
496 cpu="x32"
497 else
498 cpu="x86_64"
500 elif check_define __sparc__ ; then
501 if check_define __arch64__ ; then
502 cpu="sparc64"
503 else
504 cpu="sparc"
506 elif check_define _ARCH_PPC ; then
507 if check_define _ARCH_PPC64 ; then
508 cpu="ppc64"
509 else
510 cpu="ppc"
512 elif check_define __mips__ ; then
513 cpu="mips"
514 elif check_define __ia64__ ; then
515 cpu="ia64"
516 elif check_define __s390__ ; then
517 if check_define __s390x__ ; then
518 cpu="s390x"
519 else
520 cpu="s390"
522 elif check_define __arm__ ; then
523 cpu="arm"
524 elif check_define __aarch64__ ; then
525 cpu="aarch64"
526 elif check_define __hppa__ ; then
527 cpu="hppa"
528 else
529 cpu=`uname -m`
532 ARCH=
533 # Normalise host CPU name and set ARCH.
534 # Note that this case should only have supported host CPUs, not guests.
535 case "$cpu" in
536 ia64|ppc|ppc64|s390|s390x|sparc64|x32)
537 cpu="$cpu"
539 i386|i486|i586|i686|i86pc|BePC)
540 cpu="i386"
542 x86_64|amd64)
543 cpu="x86_64"
545 armv*b|armv*l|arm)
546 cpu="arm"
548 aarch64)
549 cpu="aarch64"
551 mips*)
552 cpu="mips"
554 sparc|sun4[cdmuv])
555 cpu="sparc"
558 # This will result in either an error or falling back to TCI later
559 ARCH=unknown
561 esac
562 if test -z "$ARCH"; then
563 ARCH="$cpu"
566 # OS specific
568 # host *BSD for user mode
569 HOST_VARIANT_DIR=""
571 case $targetos in
572 CYGWIN*)
573 mingw32="yes"
574 QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
575 audio_possible_drivers="sdl"
576 audio_drv_list="sdl"
578 MINGW32*)
579 mingw32="yes"
580 audio_possible_drivers="dsound sdl"
581 if check_include dsound.h; then
582 audio_drv_list="dsound"
583 else
584 audio_drv_list=""
587 GNU/kFreeBSD)
588 bsd="yes"
589 audio_drv_list="oss"
590 audio_possible_drivers="oss sdl pa"
592 FreeBSD)
593 bsd="yes"
594 make="${MAKE-gmake}"
595 audio_drv_list="oss"
596 audio_possible_drivers="oss sdl pa"
597 # needed for kinfo_getvmmap(3) in libutil.h
598 LIBS="-lutil $LIBS"
599 netmap="" # enable netmap autodetect
600 HOST_VARIANT_DIR="freebsd"
602 DragonFly)
603 bsd="yes"
604 make="${MAKE-gmake}"
605 audio_drv_list="oss"
606 audio_possible_drivers="oss sdl pa"
607 HOST_VARIANT_DIR="dragonfly"
609 NetBSD)
610 bsd="yes"
611 make="${MAKE-gmake}"
612 audio_drv_list="oss"
613 audio_possible_drivers="oss sdl"
614 oss_lib="-lossaudio"
615 HOST_VARIANT_DIR="netbsd"
617 OpenBSD)
618 bsd="yes"
619 make="${MAKE-gmake}"
620 audio_drv_list="sdl"
621 audio_possible_drivers="sdl"
622 HOST_VARIANT_DIR="openbsd"
624 Darwin)
625 bsd="yes"
626 darwin="yes"
627 LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
628 if [ "$cpu" = "x86_64" ] ; then
629 QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
630 LDFLAGS="-arch x86_64 $LDFLAGS"
632 cocoa="yes"
633 audio_drv_list="coreaudio"
634 audio_possible_drivers="coreaudio sdl"
635 LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
636 libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
637 # Disable attempts to use ObjectiveC features in os/object.h since they
638 # won't work when we're compiling with gcc as a C compiler.
639 QEMU_CFLAGS="-DOS_OBJECT_USE_OBJC=0 $QEMU_CFLAGS"
640 HOST_VARIANT_DIR="darwin"
642 SunOS)
643 solaris="yes"
644 make="${MAKE-gmake}"
645 install="${INSTALL-ginstall}"
646 ld="gld"
647 smbd="${SMBD-/usr/sfw/sbin/smbd}"
648 needs_libsunmath="no"
649 solarisrev=`uname -r | cut -f2 -d.`
650 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
651 if test "$solarisrev" -le 9 ; then
652 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
653 needs_libsunmath="yes"
654 QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
655 LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
656 LIBS="-lsunmath $LIBS"
657 else
658 error_exit "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" \
659 "libsunmath from the Sun Studio compilers tools, due to a lack of" \
660 "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86" \
661 "Studio 11 can be downloaded from www.sun.com."
665 if test -f /usr/include/sys/soundcard.h ; then
666 audio_drv_list="oss"
668 audio_possible_drivers="oss sdl"
669 # needed for CMSG_ macros in sys/socket.h
670 QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
671 # needed for TIOCWIN* defines in termios.h
672 QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
673 QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
674 solarisnetlibs="-lsocket -lnsl -lresolv"
675 LIBS="$solarisnetlibs $LIBS"
676 libs_qga="$solarisnetlibs $libs_qga"
678 AIX)
679 aix="yes"
680 make="${MAKE-gmake}"
682 Haiku)
683 haiku="yes"
684 QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
685 LIBS="-lposix_error_mapper -lnetwork $LIBS"
688 audio_drv_list="oss"
689 audio_possible_drivers="oss alsa sdl pa"
690 linux="yes"
691 linux_user="yes"
692 kvm="yes"
693 vhost_net="yes"
694 vhost_scsi="yes"
695 QEMU_INCLUDES="-I\$(SRC_PATH)/linux-headers -I$(pwd)/linux-headers $QEMU_INCLUDES"
697 esac
699 if [ "$bsd" = "yes" ] ; then
700 if [ "$darwin" != "yes" ] ; then
701 bsd_user="yes"
705 : ${make=${MAKE-make}}
706 : ${install=${INSTALL-install}}
707 : ${python=${PYTHON-python}}
708 : ${smbd=${SMBD-/usr/sbin/smbd}}
710 # Default objcc to clang if available, otherwise use CC
711 if has clang; then
712 objcc=clang
713 else
714 objcc="$cc"
717 if test "$mingw32" = "yes" ; then
718 EXESUF=".exe"
719 DSOSUF=".dll"
720 QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
721 # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
722 QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
723 LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
724 write_c_skeleton;
725 if compile_prog "" "-liberty" ; then
726 LIBS="-liberty $LIBS"
728 prefix="c:/Program Files/QEMU"
729 mandir="\${prefix}"
730 datadir="\${prefix}"
731 qemu_docdir="\${prefix}"
732 bindir="\${prefix}"
733 sysconfdir="\${prefix}"
734 local_statedir=
735 confsuffix=""
736 libs_qga="-lws2_32 -lwinmm -lpowrprof -liphlpapi $libs_qga"
739 werror=""
741 for opt do
742 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
743 case "$opt" in
744 --help|-h) show_help=yes
746 --version|-V) exec cat $source_path/VERSION
748 --prefix=*) prefix="$optarg"
750 --interp-prefix=*) interp_prefix="$optarg"
752 --source-path=*)
754 --cross-prefix=*)
756 --cc=*)
758 --host-cc=*) host_cc="$optarg"
760 --cxx=*)
762 --iasl=*) iasl="$optarg"
764 --objcc=*) objcc="$optarg"
766 --make=*) make="$optarg"
768 --install=*) install="$optarg"
770 --python=*) python="$optarg"
772 --gcov=*) gcov_tool="$optarg"
774 --smbd=*) smbd="$optarg"
776 --extra-cflags=*)
778 --extra-ldflags=*)
780 --enable-debug-info)
782 --disable-debug-info)
784 --enable-modules)
785 modules="yes"
787 --cpu=*)
789 --target-list=*) target_list="$optarg"
791 --enable-trace-backends=*) trace_backends="$optarg"
793 # XXX: backwards compatibility
794 --enable-trace-backend=*) trace_backends="$optarg"
796 --with-trace-file=*) trace_file="$optarg"
798 --enable-gprof) gprof="yes"
800 --enable-gcov) gcov="yes"
802 --static)
803 static="yes"
804 LDFLAGS="-static $LDFLAGS"
805 QEMU_PKG_CONFIG_FLAGS="--static $QEMU_PKG_CONFIG_FLAGS"
807 --mandir=*) mandir="$optarg"
809 --bindir=*) bindir="$optarg"
811 --libdir=*) libdir="$optarg"
813 --libexecdir=*) libexecdir="$optarg"
815 --includedir=*) includedir="$optarg"
817 --datadir=*) datadir="$optarg"
819 --with-confsuffix=*) confsuffix="$optarg"
821 --docdir=*) qemu_docdir="$optarg"
823 --sysconfdir=*) sysconfdir="$optarg"
825 --localstatedir=*) local_statedir="$optarg"
827 --sbindir=*|--sharedstatedir=*|\
828 --oldincludedir=*|--datarootdir=*|--infodir=*|--localedir=*|\
829 --htmldir=*|--dvidir=*|--pdfdir=*|--psdir=*)
830 # These switches are silently ignored, for compatibility with
831 # autoconf-generated configure scripts. This allows QEMU's
832 # configure to be used by RPM and similar macros that set
833 # lots of directory switches by default.
835 --with-system-pixman) pixman="system"
837 --without-system-pixman) pixman="internal"
839 --without-pixman) pixman="none"
841 --disable-sdl) sdl="no"
843 --enable-sdl) sdl="yes"
845 --with-sdlabi=*) sdlabi="$optarg"
847 --disable-qom-cast-debug) qom_cast_debug="no"
849 --enable-qom-cast-debug) qom_cast_debug="yes"
851 --disable-virtfs) virtfs="no"
853 --enable-virtfs) virtfs="yes"
855 --disable-vnc) vnc="no"
857 --enable-vnc) vnc="yes"
859 --oss-lib=*) oss_lib="$optarg"
861 --audio-drv-list=*) audio_drv_list="$optarg"
863 --block-drv-rw-whitelist=*|--block-drv-whitelist=*) block_drv_rw_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
865 --block-drv-ro-whitelist=*) block_drv_ro_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
867 --enable-debug-tcg) debug_tcg="yes"
869 --disable-debug-tcg) debug_tcg="no"
871 --enable-debug)
872 # Enable debugging options that aren't excessively noisy
873 debug_tcg="yes"
874 debug="yes"
875 strip_opt="no"
877 --enable-sparse) sparse="yes"
879 --disable-sparse) sparse="no"
881 --disable-strip) strip_opt="no"
883 --disable-vnc-tls) vnc_tls="no"
885 --enable-vnc-tls) vnc_tls="yes"
887 --disable-vnc-sasl) vnc_sasl="no"
889 --enable-vnc-sasl) vnc_sasl="yes"
891 --disable-vnc-jpeg) vnc_jpeg="no"
893 --enable-vnc-jpeg) vnc_jpeg="yes"
895 --disable-vnc-png) vnc_png="no"
897 --enable-vnc-png) vnc_png="yes"
899 --disable-slirp) slirp="no"
901 --disable-uuid) uuid="no"
903 --enable-uuid) uuid="yes"
905 --disable-vde) vde="no"
907 --enable-vde) vde="yes"
909 --disable-netmap) netmap="no"
911 --enable-netmap) netmap="yes"
913 --disable-xen) xen="no"
915 --enable-xen) xen="yes"
917 --disable-xen-pci-passthrough) xen_pci_passthrough="no"
919 --enable-xen-pci-passthrough) xen_pci_passthrough="yes"
921 --disable-brlapi) brlapi="no"
923 --enable-brlapi) brlapi="yes"
925 --disable-bluez) bluez="no"
927 --enable-bluez) bluez="yes"
929 --disable-kvm) kvm="no"
931 --enable-kvm) kvm="yes"
933 --disable-tcg-interpreter) tcg_interpreter="no"
935 --enable-tcg-interpreter) tcg_interpreter="yes"
937 --disable-cap-ng) cap_ng="no"
939 --enable-cap-ng) cap_ng="yes"
941 --disable-spice) spice="no"
943 --enable-spice) spice="yes"
945 --disable-libiscsi) libiscsi="no"
947 --enable-libiscsi) libiscsi="yes"
949 --disable-libnfs) libnfs="no"
951 --enable-libnfs) libnfs="yes"
953 --enable-profiler) profiler="yes"
955 --disable-cocoa) cocoa="no"
957 --enable-cocoa)
958 cocoa="yes" ;
959 sdl="no" ;
960 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
962 --disable-system) softmmu="no"
964 --enable-system) softmmu="yes"
966 --disable-user)
967 linux_user="no" ;
968 bsd_user="no" ;
970 --enable-user) ;;
971 --disable-linux-user) linux_user="no"
973 --enable-linux-user) linux_user="yes"
975 --disable-bsd-user) bsd_user="no"
977 --enable-bsd-user) bsd_user="yes"
979 --enable-guest-base) guest_base="yes"
981 --disable-guest-base) guest_base="no"
983 --enable-pie) pie="yes"
985 --disable-pie) pie="no"
987 --enable-werror) werror="yes"
989 --disable-werror) werror="no"
991 --enable-stack-protector) stack_protector="yes"
993 --disable-stack-protector) stack_protector="no"
995 --disable-curses) curses="no"
997 --enable-curses) curses="yes"
999 --disable-curl) curl="no"
1001 --enable-curl) curl="yes"
1003 --disable-fdt) fdt="no"
1005 --enable-fdt) fdt="yes"
1007 --disable-linux-aio) linux_aio="no"
1009 --enable-linux-aio) linux_aio="yes"
1011 --disable-attr) attr="no"
1013 --enable-attr) attr="yes"
1015 --disable-blobs) blobs="no"
1017 --with-pkgversion=*) pkgversion=" ($optarg)"
1019 --with-coroutine=*) coroutine="$optarg"
1021 --disable-coroutine-pool) coroutine_pool="no"
1023 --enable-coroutine-pool) coroutine_pool="yes"
1025 --disable-docs) docs="no"
1027 --enable-docs) docs="yes"
1029 --disable-vhost-net) vhost_net="no"
1031 --enable-vhost-net) vhost_net="yes"
1033 --disable-vhost-scsi) vhost_scsi="no"
1035 --enable-vhost-scsi) vhost_scsi="yes"
1037 --disable-opengl) opengl="no"
1039 --enable-opengl) opengl="yes"
1041 --disable-rbd) rbd="no"
1043 --enable-rbd) rbd="yes"
1045 --disable-xfsctl) xfs="no"
1047 --enable-xfsctl) xfs="yes"
1049 --disable-smartcard-nss) smartcard_nss="no"
1051 --enable-smartcard-nss) smartcard_nss="yes"
1053 --disable-libusb) libusb="no"
1055 --enable-libusb) libusb="yes"
1057 --disable-usb-redir) usb_redir="no"
1059 --enable-usb-redir) usb_redir="yes"
1061 --disable-zlib-test) zlib="no"
1063 --disable-lzo) lzo="no"
1065 --enable-lzo) lzo="yes"
1067 --disable-snappy) snappy="no"
1069 --enable-snappy) snappy="yes"
1071 --disable-bzip2) bzip2="no"
1073 --enable-bzip2) bzip2="yes"
1075 --enable-guest-agent) guest_agent="yes"
1077 --disable-guest-agent) guest_agent="no"
1079 --enable-guest-agent-msi) guest_agent_msi="yes"
1081 --disable-guest-agent-msi) guest_agent_msi="no"
1083 --with-vss-sdk) vss_win32_sdk=""
1085 --with-vss-sdk=*) vss_win32_sdk="$optarg"
1087 --without-vss-sdk) vss_win32_sdk="no"
1089 --with-win-sdk) win_sdk=""
1091 --with-win-sdk=*) win_sdk="$optarg"
1093 --without-win-sdk) win_sdk="no"
1095 --enable-tools) want_tools="yes"
1097 --disable-tools) want_tools="no"
1099 --enable-seccomp) seccomp="yes"
1101 --disable-seccomp) seccomp="no"
1103 --disable-glusterfs) glusterfs="no"
1105 --enable-glusterfs) glusterfs="yes"
1107 --disable-archipelago) archipelago="no"
1109 --enable-archipelago) archipelago="yes"
1111 --disable-virtio-blk-data-plane|--enable-virtio-blk-data-plane)
1112 echo "$0: $opt is obsolete, virtio-blk data-plane is always on" >&2
1114 --disable-gtk) gtk="no"
1116 --enable-gtk) gtk="yes"
1118 --disable-gnutls) gnutls="no"
1120 --enable-gnutls) gnutls="yes"
1122 --enable-rdma) rdma="yes"
1124 --disable-rdma) rdma="no"
1126 --with-gtkabi=*) gtkabi="$optarg"
1128 --disable-vte) vte="no"
1130 --enable-vte) vte="yes"
1132 --disable-tpm) tpm="no"
1134 --enable-tpm) tpm="yes"
1136 --disable-libssh2) libssh2="no"
1138 --enable-libssh2) libssh2="yes"
1140 --enable-vhdx) vhdx="yes"
1142 --disable-vhdx) vhdx="no"
1144 --disable-numa) numa="no"
1146 --enable-numa) numa="yes"
1148 --disable-tcmalloc) tcmalloc="no"
1150 --enable-tcmalloc) tcmalloc="yes"
1153 echo "ERROR: unknown option $opt"
1154 echo "Try '$0 --help' for more information"
1155 exit 1
1157 esac
1158 done
1160 if ! has $python; then
1161 error_exit "Python not found. Use --python=/path/to/python"
1164 # Note that if the Python conditional here evaluates True we will exit
1165 # with status 1 which is a shell 'false' value.
1166 if ! $python -c 'import sys; sys.exit(sys.version_info < (2,4) or sys.version_info >= (3,))'; then
1167 error_exit "Cannot use '$python', Python 2.4 or later is required." \
1168 "Note that Python 3 or later is not yet supported." \
1169 "Use --python=/path/to/python to specify a supported Python."
1172 # The -B switch was added in Python 2.6.
1173 # If it is supplied, compiled files are not written.
1174 # Use it for Python versions which support it.
1175 if $python -B -c 'import sys; sys.exit(0)' 2>/dev/null; then
1176 python="$python -B"
1179 case "$cpu" in
1180 ppc)
1181 CPU_CFLAGS="-m32"
1182 LDFLAGS="-m32 $LDFLAGS"
1184 ppc64)
1185 CPU_CFLAGS="-m64"
1186 LDFLAGS="-m64 $LDFLAGS"
1188 sparc)
1189 LDFLAGS="-m32 $LDFLAGS"
1190 CPU_CFLAGS="-m32 -mcpu=ultrasparc"
1192 sparc64)
1193 LDFLAGS="-m64 $LDFLAGS"
1194 CPU_CFLAGS="-m64 -mcpu=ultrasparc"
1196 s390)
1197 CPU_CFLAGS="-m31"
1198 LDFLAGS="-m31 $LDFLAGS"
1200 s390x)
1201 CPU_CFLAGS="-m64"
1202 LDFLAGS="-m64 $LDFLAGS"
1204 i386)
1205 CPU_CFLAGS="-m32"
1206 LDFLAGS="-m32 $LDFLAGS"
1207 cc_i386='$(CC) -m32'
1209 x86_64)
1210 CPU_CFLAGS="-m64"
1211 LDFLAGS="-m64 $LDFLAGS"
1212 cc_i386='$(CC) -m32'
1214 x32)
1215 CPU_CFLAGS="-mx32"
1216 LDFLAGS="-mx32 $LDFLAGS"
1217 cc_i386='$(CC) -m32'
1219 # No special flags required for other host CPUs
1220 esac
1222 QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
1223 EXTRA_CFLAGS="$CPU_CFLAGS $EXTRA_CFLAGS"
1225 default_target_list=""
1227 mak_wilds=""
1229 if [ "$softmmu" = "yes" ]; then
1230 mak_wilds="${mak_wilds} $source_path/default-configs/*-softmmu.mak"
1232 if [ "$linux_user" = "yes" ]; then
1233 mak_wilds="${mak_wilds} $source_path/default-configs/*-linux-user.mak"
1235 if [ "$bsd_user" = "yes" ]; then
1236 mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
1239 for config in $mak_wilds; do
1240 default_target_list="${default_target_list} $(basename "$config" .mak)"
1241 done
1243 if test x"$show_help" = x"yes" ; then
1244 cat << EOF
1246 Usage: configure [options]
1247 Options: [defaults in brackets after descriptions]
1249 Standard options:
1250 --help print this message
1251 --prefix=PREFIX install in PREFIX [$prefix]
1252 --interp-prefix=PREFIX where to find shared libraries, etc.
1253 use %M for cpu name [$interp_prefix]
1254 --target-list=LIST set target list (default: build everything)
1255 $(echo Available targets: $default_target_list | \
1256 fold -s -w 53 | sed -e 's/^/ /')
1258 Advanced options (experts only):
1259 --source-path=PATH path of source code [$source_path]
1260 --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]
1261 --cc=CC use C compiler CC [$cc]
1262 --iasl=IASL use ACPI compiler IASL [$iasl]
1263 --host-cc=CC use C compiler CC [$host_cc] for code run at
1264 build time
1265 --cxx=CXX use C++ compiler CXX [$cxx]
1266 --objcc=OBJCC use Objective-C compiler OBJCC [$objcc]
1267 --extra-cflags=CFLAGS append extra C compiler flags QEMU_CFLAGS
1268 --extra-ldflags=LDFLAGS append extra linker flags LDFLAGS
1269 --make=MAKE use specified make [$make]
1270 --install=INSTALL use specified install [$install]
1271 --python=PYTHON use specified python [$python]
1272 --smbd=SMBD use specified smbd [$smbd]
1273 --static enable static build [$static]
1274 --mandir=PATH install man pages in PATH
1275 --datadir=PATH install firmware in PATH$confsuffix
1276 --docdir=PATH install documentation in PATH$confsuffix
1277 --bindir=PATH install binaries in PATH
1278 --libdir=PATH install libraries in PATH
1279 --sysconfdir=PATH install config in PATH$confsuffix
1280 --localstatedir=PATH install local state in PATH (set at runtime on win32)
1281 --with-confsuffix=SUFFIX suffix for QEMU data inside datadir/libdir/sysconfdir [$confsuffix]
1282 --enable-debug enable common debug build options
1283 --disable-strip disable stripping binaries
1284 --disable-werror disable compilation abort on warning
1285 --disable-stack-protector disable compiler-provided stack protection
1286 --audio-drv-list=LIST set audio drivers list:
1287 Available drivers: $audio_possible_drivers
1288 --block-drv-whitelist=L Same as --block-drv-rw-whitelist=L
1289 --block-drv-rw-whitelist=L
1290 set block driver read-write whitelist
1291 (affects only QEMU, not qemu-img)
1292 --block-drv-ro-whitelist=L
1293 set block driver read-only whitelist
1294 (affects only QEMU, not qemu-img)
1295 --enable-trace-backends=B Set trace backend
1296 Available backends: $($python $source_path/scripts/tracetool.py --list-backends)
1297 --with-trace-file=NAME Full PATH,NAME of file to store traces
1298 Default:trace-<pid>
1299 --disable-slirp disable SLIRP userspace network connectivity
1300 --enable-tcg-interpreter enable TCG with bytecode interpreter (TCI)
1301 --oss-lib path to OSS library
1302 --cpu=CPU Build for host CPU [$cpu]
1303 --with-coroutine=BACKEND coroutine backend. Supported options:
1304 gthread, ucontext, sigaltstack, windows
1305 --enable-gcov enable test coverage analysis with gcov
1306 --gcov=GCOV use specified gcov [$gcov_tool]
1307 --disable-blobs disable installing provided firmware blobs
1308 --with-vss-sdk=SDK-path enable Windows VSS support in QEMU Guest Agent
1309 --with-win-sdk=SDK-path path to Windows Platform SDK (to build VSS .tlb)
1311 Optional features, enabled with --enable-FEATURE and
1312 disabled with --disable-FEATURE, default is enabled if available:
1314 system all system emulation targets
1315 user supported user emulation targets
1316 linux-user all linux usermode emulation targets
1317 bsd-user all BSD usermode emulation targets
1318 guest-base GUEST_BASE support for usermode emulation targets
1319 docs build documentation
1320 guest-agent build the QEMU Guest Agent
1321 guest-agent-msi build guest agent Windows MSI installation package
1322 pie Position Independent Executables
1323 modules modules support
1324 debug-tcg TCG debugging (default is disabled)
1325 debug-info debugging information
1326 sparse sparse checker
1328 gnutls GNUTLS cryptography support
1329 sdl SDL UI
1330 --with-sdlabi select preferred SDL ABI 1.2 or 2.0
1331 gtk gtk UI
1332 --with-gtkabi select preferred GTK ABI 2.0 or 3.0
1333 vte vte support for the gtk UI
1334 curses curses UI
1335 vnc VNC UI support
1336 vnc-tls TLS encryption for VNC server
1337 vnc-sasl SASL encryption for VNC server
1338 vnc-jpeg JPEG lossy compression for VNC server
1339 vnc-png PNG compression for VNC server
1340 vnc-ws Websockets support for VNC server
1341 cocoa Cocoa UI (Mac OS X only)
1342 virtfs VirtFS
1343 xen xen backend driver support
1344 xen-pci-passthrough
1345 brlapi BrlAPI (Braile)
1346 curl curl connectivity
1347 fdt fdt device tree
1348 bluez bluez stack connectivity
1349 kvm KVM acceleration support
1350 rdma RDMA-based migration support
1351 uuid uuid support
1352 vde support for vde network
1353 netmap support for netmap network
1354 linux-aio Linux AIO support
1355 cap-ng libcap-ng support
1356 attr attr and xattr support
1357 vhost-net vhost-net acceleration support
1358 spice spice
1359 rbd rados block device (rbd)
1360 libiscsi iscsi support
1361 libnfs nfs support
1362 smartcard-nss smartcard nss support
1363 libusb libusb (for usb passthrough)
1364 usb-redir usb network redirection support
1365 lzo support of lzo compression library
1366 snappy support of snappy compression library
1367 bzip2 support of bzip2 compression library
1368 (for reading bzip2-compressed dmg images)
1369 seccomp seccomp support
1370 coroutine-pool coroutine freelist (better performance)
1371 glusterfs GlusterFS backend
1372 archipelago Archipelago backend
1373 tpm TPM support
1374 libssh2 ssh block device support
1375 vhdx support for the Microsoft VHDX image format
1376 numa libnuma support
1377 tcmalloc tcmalloc support
1379 NOTE: The object files are built at the place where configure is launched
1381 exit 0
1384 # Now we have handled --enable-tcg-interpreter and know we're not just
1385 # printing the help message, bail out if the host CPU isn't supported.
1386 if test "$ARCH" = "unknown"; then
1387 if test "$tcg_interpreter" = "yes" ; then
1388 echo "Unsupported CPU = $cpu, will use TCG with TCI (experimental)"
1389 ARCH=tci
1390 else
1391 error_exit "Unsupported CPU = $cpu, try --enable-tcg-interpreter"
1395 # Consult white-list to determine whether to enable werror
1396 # by default. Only enable by default for git builds
1397 z_version=`cut -f3 -d. $source_path/VERSION`
1399 if test -z "$werror" ; then
1400 if test -d "$source_path/.git" -a \
1401 "$linux" = "yes" ; then
1402 werror="yes"
1403 else
1404 werror="no"
1408 # check that the C compiler works.
1409 write_c_skeleton;
1410 if compile_object ; then
1411 : C compiler works ok
1412 else
1413 error_exit "\"$cc\" either does not exist or does not work"
1416 # Check that the C++ compiler exists and works with the C compiler
1417 if has $cxx; then
1418 cat > $TMPC <<EOF
1419 int c_function(void);
1420 int main(void) { return c_function(); }
1423 compile_object
1425 cat > $TMPCXX <<EOF
1426 extern "C" {
1427 int c_function(void);
1429 int c_function(void) { return 42; }
1432 update_cxxflags
1434 if do_cxx $QEMU_CXXFLAGS -o $TMPE $TMPCXX $TMPO $LDFLAGS; then
1435 # C++ compiler $cxx works ok with C compiler $cc
1437 else
1438 echo "C++ compiler $cxx does not work with C compiler $cc"
1439 echo "Disabling C++ specific optional code"
1440 cxx=
1442 else
1443 echo "No C++ compiler available; disabling C++ specific optional code"
1444 cxx=
1447 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1448 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1449 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1450 gcc_flags="-Wendif-labels $gcc_flags"
1451 gcc_flags="-Wno-initializer-overrides $gcc_flags"
1452 gcc_flags="-Wno-string-plus-int $gcc_flags"
1453 # Note that we do not add -Werror to gcc_flags here, because that would
1454 # enable it for all configure tests. If a configure test failed due
1455 # to -Werror this would just silently disable some features,
1456 # so it's too error prone.
1458 cc_has_warning_flag() {
1459 write_c_skeleton;
1461 # Use the positive sense of the flag when testing for -Wno-wombat
1462 # support (gcc will happily accept the -Wno- form of unknown
1463 # warning options).
1464 optflag="$(echo $1 | sed -e 's/^-Wno-/-W/')"
1465 compile_prog "-Werror $optflag" ""
1468 for flag in $gcc_flags; do
1469 if cc_has_warning_flag $flag ; then
1470 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1472 done
1474 if test "$stack_protector" != "no"; then
1475 gcc_flags="-fstack-protector-strong -fstack-protector-all"
1476 sp_on=0
1477 for flag in $gcc_flags; do
1478 # We need to check both a compile and a link, since some compiler
1479 # setups fail only on a .c->.o compile and some only at link time
1480 if do_cc $QEMU_CFLAGS -Werror $flag -c -o $TMPO $TMPC &&
1481 compile_prog "-Werror $flag" ""; then
1482 QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1483 LIBTOOLFLAGS="$LIBTOOLFLAGS -Wc,$flag"
1484 sp_on=1
1485 break
1487 done
1488 if test "$stack_protector" = yes; then
1489 if test $sp_on = 0; then
1490 error_exit "Stack protector not supported"
1495 # Workaround for http://gcc.gnu.org/PR55489. Happens with -fPIE/-fPIC and
1496 # large functions that use global variables. The bug is in all releases of
1497 # GCC, but it became particularly acute in 4.6.x and 4.7.x. It is fixed in
1498 # 4.7.3 and 4.8.0. We should be able to delete this at the end of 2013.
1499 cat > $TMPC << EOF
1500 #if __GNUC__ == 4 && (__GNUC_MINOR__ == 6 || (__GNUC_MINOR__ == 7 && __GNUC_PATCHLEVEL__ <= 2))
1501 int main(void) { return 0; }
1502 #else
1503 #error No bug in this compiler.
1504 #endif
1506 if compile_prog "-Werror -fno-gcse" "" ; then
1507 TRANSLATE_OPT_CFLAGS=-fno-gcse
1510 if test "$static" = "yes" ; then
1511 if test "$modules" = "yes" ; then
1512 error_exit "static and modules are mutually incompatible"
1514 if test "$pie" = "yes" ; then
1515 error_exit "static and pie are mutually incompatible"
1516 else
1517 pie="no"
1521 # Unconditional check for compiler __thread support
1522 cat > $TMPC << EOF
1523 static __thread int tls_var;
1524 int main(void) { return tls_var; }
1527 if ! compile_prog "-Werror" "" ; then
1528 error_exit "Your compiler does not support the __thread specifier for " \
1529 "Thread-Local Storage (TLS). Please upgrade to a version that does."
1532 if test "$pie" = ""; then
1533 case "$cpu-$targetos" in
1534 i386-Linux|x86_64-Linux|x32-Linux|i386-OpenBSD|x86_64-OpenBSD)
1537 pie="no"
1539 esac
1542 if test "$pie" != "no" ; then
1543 cat > $TMPC << EOF
1545 #ifdef __linux__
1546 # define THREAD __thread
1547 #else
1548 # define THREAD
1549 #endif
1551 static THREAD int tls_var;
1553 int main(void) { return tls_var; }
1556 if compile_prog "-fPIE -DPIE" "-pie"; then
1557 QEMU_CFLAGS="-fPIE -DPIE $QEMU_CFLAGS"
1558 LDFLAGS="-pie $LDFLAGS"
1559 pie="yes"
1560 if compile_prog "" "-Wl,-z,relro -Wl,-z,now" ; then
1561 LDFLAGS="-Wl,-z,relro -Wl,-z,now $LDFLAGS"
1563 else
1564 if test "$pie" = "yes"; then
1565 error_exit "PIE not available due to missing toolchain support"
1566 else
1567 echo "Disabling PIE due to missing toolchain support"
1568 pie="no"
1572 if compile_prog "-Werror -fno-pie" "-nopie"; then
1573 CFLAGS_NOPIE="-fno-pie"
1574 LDFLAGS_NOPIE="-nopie"
1578 # check for broken gcc and libtool in RHEL5
1579 if test -n "$libtool" -a "$pie" != "no" ; then
1580 cat > $TMPC <<EOF
1582 void *f(unsigned char *buf, int len);
1583 void *g(unsigned char *buf, int len);
1585 void *
1586 f(unsigned char *buf, int len)
1588 return (void*)0L;
1591 void *
1592 g(unsigned char *buf, int len)
1594 return f(buf, len);
1598 if ! libtool_prog; then
1599 echo "Disabling libtool due to broken toolchain support"
1600 libtool=
1604 ##########################################
1605 # __sync_fetch_and_and requires at least -march=i486. Many toolchains
1606 # use i686 as default anyway, but for those that don't, an explicit
1607 # specification is necessary
1609 if test "$cpu" = "i386"; then
1610 cat > $TMPC << EOF
1611 static int sfaa(int *ptr)
1613 return __sync_fetch_and_and(ptr, 0);
1616 int main(void)
1618 int val = 42;
1619 val = __sync_val_compare_and_swap(&val, 0, 1);
1620 sfaa(&val);
1621 return val;
1624 if ! compile_prog "" "" ; then
1625 QEMU_CFLAGS="-march=i486 $QEMU_CFLAGS"
1629 #########################################
1630 # Solaris specific configure tool chain decisions
1632 if test "$solaris" = "yes" ; then
1633 if has $install; then
1635 else
1636 error_exit "Solaris install program not found. Use --install=/usr/ucb/install or" \
1637 "install fileutils from www.blastwave.org using pkg-get -i fileutils" \
1638 "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1640 if test "`path_of $install`" = "/usr/sbin/install" ; then
1641 error_exit "Solaris /usr/sbin/install is not an appropriate install program." \
1642 "try ginstall from the GNU fileutils available from www.blastwave.org" \
1643 "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1645 if has ar; then
1647 else
1648 if test -f /usr/ccs/bin/ar ; then
1649 error_exit "No path includes ar" \
1650 "Add /usr/ccs/bin to your path and rerun configure"
1652 error_exit "No path includes ar"
1656 if test -z "${target_list+xxx}" ; then
1657 target_list="$default_target_list"
1658 else
1659 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1662 # Check that we recognised the target name; this allows a more
1663 # friendly error message than if we let it fall through.
1664 for target in $target_list; do
1665 case " $default_target_list " in
1666 *" $target "*)
1669 error_exit "Unknown target name '$target'"
1671 esac
1672 done
1674 # see if system emulation was really requested
1675 case " $target_list " in
1676 *"-softmmu "*) softmmu=yes
1678 *) softmmu=no
1680 esac
1682 feature_not_found() {
1683 feature=$1
1684 remedy=$2
1686 error_exit "User requested feature $feature" \
1687 "configure was not able to find it." \
1688 "$remedy"
1691 # ---
1692 # big/little endian test
1693 cat > $TMPC << EOF
1694 short big_endian[] = { 0x4269, 0x4765, 0x4e64, 0x4961, 0x4e00, 0, };
1695 short little_endian[] = { 0x694c, 0x7454, 0x654c, 0x6e45, 0x6944, 0x6e41, 0, };
1696 extern int foo(short *, short *);
1697 int main(int argc, char *argv[]) {
1698 return foo(big_endian, little_endian);
1702 if compile_object ; then
1703 if grep -q BiGeNdIaN $TMPO ; then
1704 bigendian="yes"
1705 elif grep -q LiTtLeEnDiAn $TMPO ; then
1706 bigendian="no"
1707 else
1708 echo big/little test failed
1710 else
1711 echo big/little test failed
1714 ##########################################
1715 # L2TPV3 probe
1717 cat > $TMPC <<EOF
1718 #include <sys/socket.h>
1719 #include <linux/ip.h>
1720 int main(void) { return sizeof(struct mmsghdr); }
1722 if compile_prog "" "" ; then
1723 l2tpv3=yes
1724 else
1725 l2tpv3=no
1728 ##########################################
1729 # pkg-config probe
1731 if ! has "$pkg_config_exe"; then
1732 error_exit "pkg-config binary '$pkg_config_exe' not found"
1735 ##########################################
1736 # NPTL probe
1738 if test "$linux_user" = "yes"; then
1739 cat > $TMPC <<EOF
1740 #include <sched.h>
1741 #include <linux/futex.h>
1742 int main(void) {
1743 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1744 #error bork
1745 #endif
1746 return 0;
1749 if ! compile_object ; then
1750 feature_not_found "nptl" "Install glibc and linux kernel headers."
1754 ##########################################
1755 # zlib check
1757 if test "$zlib" != "no" ; then
1758 cat > $TMPC << EOF
1759 #include <zlib.h>
1760 int main(void) { zlibVersion(); return 0; }
1762 if compile_prog "" "-lz" ; then
1764 else
1765 error_exit "zlib check failed" \
1766 "Make sure to have the zlib libs and headers installed."
1769 LIBS="$LIBS -lz"
1771 ##########################################
1772 # lzo check
1774 if test "$lzo" != "no" ; then
1775 cat > $TMPC << EOF
1776 #include <lzo/lzo1x.h>
1777 int main(void) { lzo_version(); return 0; }
1779 if compile_prog "" "-llzo2" ; then
1780 libs_softmmu="$libs_softmmu -llzo2"
1781 lzo="yes"
1782 else
1783 if test "$lzo" = "yes"; then
1784 feature_not_found "liblzo2" "Install liblzo2 devel"
1786 lzo="no"
1790 ##########################################
1791 # snappy check
1793 if test "$snappy" != "no" ; then
1794 cat > $TMPC << EOF
1795 #include <snappy-c.h>
1796 int main(void) { snappy_max_compressed_length(4096); return 0; }
1798 if compile_prog "" "-lsnappy" ; then
1799 libs_softmmu="$libs_softmmu -lsnappy"
1800 snappy="yes"
1801 else
1802 if test "$snappy" = "yes"; then
1803 feature_not_found "libsnappy" "Install libsnappy devel"
1805 snappy="no"
1809 ##########################################
1810 # bzip2 check
1812 if test "$bzip2" != "no" ; then
1813 cat > $TMPC << EOF
1814 #include <bzlib.h>
1815 int main(void) { BZ2_bzlibVersion(); return 0; }
1817 if compile_prog "" "-lbz2" ; then
1818 bzip2="yes"
1819 else
1820 if test "$bzip2" = "yes"; then
1821 feature_not_found "libbzip2" "Install libbzip2 devel"
1823 bzip2="no"
1827 ##########################################
1828 # libseccomp check
1830 if test "$seccomp" != "no" ; then
1831 if test "$cpu" = "i386" || test "$cpu" = "x86_64" &&
1832 $pkg_config --atleast-version=2.1.1 libseccomp; then
1833 libs_softmmu="$libs_softmmu `$pkg_config --libs libseccomp`"
1834 QEMU_CFLAGS="$QEMU_CFLAGS `$pkg_config --cflags libseccomp`"
1835 seccomp="yes"
1836 else
1837 if test "$seccomp" = "yes"; then
1838 feature_not_found "libseccomp" "Install libseccomp devel >= 2.1.1"
1840 seccomp="no"
1843 ##########################################
1844 # xen probe
1846 if test "$xen" != "no" ; then
1847 xen_libs="-lxenstore -lxenctrl -lxenguest"
1849 # First we test whether Xen headers and libraries are available.
1850 # If no, we are done and there is no Xen support.
1851 # If yes, more tests are run to detect the Xen version.
1853 # Xen (any)
1854 cat > $TMPC <<EOF
1855 #include <xenctrl.h>
1856 int main(void) {
1857 return 0;
1860 if ! compile_prog "" "$xen_libs" ; then
1861 # Xen not found
1862 if test "$xen" = "yes" ; then
1863 feature_not_found "xen" "Install xen devel"
1865 xen=no
1867 # Xen unstable
1868 elif
1869 cat > $TMPC <<EOF &&
1870 #include <xenctrl.h>
1871 #include <xenstore.h>
1872 #include <stdint.h>
1873 #include <xen/hvm/hvm_info_table.h>
1874 #if !defined(HVM_MAX_VCPUS)
1875 # error HVM_MAX_VCPUS not defined
1876 #endif
1877 int main(void) {
1878 xc_interface *xc;
1879 xs_daemon_open();
1880 xc = xc_interface_open(0, 0, 0);
1881 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1882 xc_gnttab_open(NULL, 0);
1883 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1884 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1885 xc_hvm_create_ioreq_server(xc, 0, 0, NULL);
1886 return 0;
1889 compile_prog "" "$xen_libs"
1890 then
1891 xen_ctrl_version=450
1892 xen=yes
1894 elif
1895 cat > $TMPC <<EOF &&
1896 #include <xenctrl.h>
1897 #include <xenstore.h>
1898 #include <stdint.h>
1899 #include <xen/hvm/hvm_info_table.h>
1900 #if !defined(HVM_MAX_VCPUS)
1901 # error HVM_MAX_VCPUS not defined
1902 #endif
1903 int main(void) {
1904 xc_interface *xc;
1905 xs_daemon_open();
1906 xc = xc_interface_open(0, 0, 0);
1907 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1908 xc_gnttab_open(NULL, 0);
1909 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1910 xc_hvm_inject_msi(xc, 0, 0xf0000000, 0x00000000);
1911 return 0;
1914 compile_prog "" "$xen_libs"
1915 then
1916 xen_ctrl_version=420
1917 xen=yes
1919 elif
1920 cat > $TMPC <<EOF &&
1921 #include <xenctrl.h>
1922 #include <xs.h>
1923 #include <stdint.h>
1924 #include <xen/hvm/hvm_info_table.h>
1925 #if !defined(HVM_MAX_VCPUS)
1926 # error HVM_MAX_VCPUS not defined
1927 #endif
1928 int main(void) {
1929 xs_daemon_open();
1930 xc_interface_open(0, 0, 0);
1931 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1932 xc_gnttab_open(NULL, 0);
1933 xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1934 return 0;
1937 compile_prog "" "$xen_libs"
1938 then
1939 xen_ctrl_version=410
1940 xen=yes
1942 # Xen 4.0.0
1943 elif
1944 cat > $TMPC <<EOF &&
1945 #include <xenctrl.h>
1946 #include <xs.h>
1947 #include <stdint.h>
1948 #include <xen/hvm/hvm_info_table.h>
1949 #if !defined(HVM_MAX_VCPUS)
1950 # error HVM_MAX_VCPUS not defined
1951 #endif
1952 int main(void) {
1953 struct xen_add_to_physmap xatp = {
1954 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1956 xs_daemon_open();
1957 xc_interface_open();
1958 xc_gnttab_open();
1959 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1960 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1961 return 0;
1964 compile_prog "" "$xen_libs"
1965 then
1966 xen_ctrl_version=400
1967 xen=yes
1969 # Xen 3.4.0
1970 elif
1971 cat > $TMPC <<EOF &&
1972 #include <xenctrl.h>
1973 #include <xs.h>
1974 int main(void) {
1975 struct xen_add_to_physmap xatp = {
1976 .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1978 xs_daemon_open();
1979 xc_interface_open();
1980 xc_gnttab_open();
1981 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1982 xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1983 return 0;
1986 compile_prog "" "$xen_libs"
1987 then
1988 xen_ctrl_version=340
1989 xen=yes
1991 # Xen 3.3.0
1992 elif
1993 cat > $TMPC <<EOF &&
1994 #include <xenctrl.h>
1995 #include <xs.h>
1996 int main(void) {
1997 xs_daemon_open();
1998 xc_interface_open();
1999 xc_gnttab_open();
2000 xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
2001 return 0;
2004 compile_prog "" "$xen_libs"
2005 then
2006 xen_ctrl_version=330
2007 xen=yes
2009 # Xen version unsupported
2010 else
2011 if test "$xen" = "yes" ; then
2012 feature_not_found "xen (unsupported version)" "Install supported xen (e.g. 4.0, 3.4, 3.3)"
2014 xen=no
2017 if test "$xen" = yes; then
2018 libs_softmmu="$xen_libs $libs_softmmu"
2022 if test "$xen_pci_passthrough" != "no"; then
2023 if test "$xen" = "yes" && test "$linux" = "yes" &&
2024 test "$xen_ctrl_version" -ge 340; then
2025 xen_pci_passthrough=yes
2026 else
2027 if test "$xen_pci_passthrough" = "yes"; then
2028 if test "$xen_ctrl_version" -lt 340; then
2029 error_exit "User requested feature Xen PCI Passthrough" \
2030 "This feature does not work with Xen 3.3"
2032 error_exit "User requested feature Xen PCI Passthrough" \
2033 " but this feature requires /sys from Linux"
2035 xen_pci_passthrough=no
2039 ##########################################
2040 # libtool probe
2042 if ! has $libtool; then
2043 libtool=
2046 # MacOSX ships with a libtool which isn't the GNU one; weed this
2047 # out by checking whether libtool supports the --version switch
2048 if test -n "$libtool"; then
2049 if ! "$libtool" --version >/dev/null 2>&1; then
2050 libtool=
2054 ##########################################
2055 # Sparse probe
2056 if test "$sparse" != "no" ; then
2057 if has cgcc; then
2058 sparse=yes
2059 else
2060 if test "$sparse" = "yes" ; then
2061 feature_not_found "sparse" "Install sparse binary"
2063 sparse=no
2067 ##########################################
2068 # X11 probe
2069 x11_cflags=
2070 x11_libs=-lX11
2071 if $pkg_config --exists "x11"; then
2072 x11_cflags=`$pkg_config --cflags x11`
2073 x11_libs=`$pkg_config --libs x11`
2076 ##########################################
2077 # GTK probe
2079 if test "$gtkabi" = ""; then
2080 # The GTK ABI was not specified explicitly, so try whether 2.0 is available.
2081 # Use 3.0 as a fallback if that is available.
2082 if $pkg_config --exists "gtk+-2.0 >= 2.18.0"; then
2083 gtkabi=2.0
2084 elif $pkg_config --exists "gtk+-3.0 >= 3.0.0"; then
2085 gtkabi=3.0
2086 else
2087 gtkabi=2.0
2091 if test "$gtk" != "no"; then
2092 gtkpackage="gtk+-$gtkabi"
2093 gtkx11package="gtk+-x11-$gtkabi"
2094 if test "$gtkabi" = "3.0" ; then
2095 gtkversion="3.0.0"
2096 else
2097 gtkversion="2.18.0"
2099 if $pkg_config --exists "$gtkpackage >= $gtkversion"; then
2100 gtk_cflags=`$pkg_config --cflags $gtkpackage`
2101 gtk_libs=`$pkg_config --libs $gtkpackage`
2102 if $pkg_config --exists "$gtkx11package >= $gtkversion"; then
2103 gtk_cflags="$gtk_cflags $x11_cflags"
2104 gtk_libs="$gtk_libs $x11_libs"
2106 libs_softmmu="$gtk_libs $libs_softmmu"
2107 gtk="yes"
2108 elif test "$gtk" = "yes"; then
2109 feature_not_found "gtk" "Install gtk2 or gtk3 devel"
2110 else
2111 gtk="no"
2116 ##########################################
2117 # GNUTLS probe
2119 gnutls_gcrypt=no
2120 gnutls_nettle=no
2121 if test "$gnutls" != "no"; then
2122 if $pkg_config --exists "gnutls"; then
2123 gnutls_cflags=`$pkg_config --cflags gnutls`
2124 gnutls_libs=`$pkg_config --libs gnutls`
2125 libs_softmmu="$gnutls_libs $libs_softmmu"
2126 libs_tools="$gnutls_libs $libs_tools"
2127 QEMU_CFLAGS="$QEMU_CFLAGS $gnutls_cflags"
2128 gnutls="yes"
2130 # gnutls_hash_init requires >= 2.9.10
2131 if $pkg_config --exists "gnutls >= 2.9.10"; then
2132 gnutls_hash="yes"
2133 else
2134 gnutls_hash="no"
2137 if $pkg_config --exists 'gnutls >= 3.0'; then
2138 gnutls_gcrypt=no
2139 gnutls_nettle=yes
2140 elif $pkg_config --exists 'gnutls >= 2.12'; then
2141 case `$pkg_config --libs --static gnutls` in
2142 *gcrypt*)
2143 gnutls_gcrypt=yes
2144 gnutls_nettle=no
2146 *nettle*)
2147 gnutls_gcrypt=no
2148 gnutls_nettle=yes
2151 gnutls_gcrypt=yes
2152 gnutls_nettle=no
2154 esac
2155 else
2156 gnutls_gcrypt=yes
2157 gnutls_nettle=no
2159 elif test "$gnutls" = "yes"; then
2160 feature_not_found "gnutls" "Install gnutls devel"
2161 else
2162 gnutls="no"
2163 gnutls_hash="no"
2165 else
2166 gnutls_hash="no"
2169 if test "$gnutls_gcrypt" != "no"; then
2170 if has "libgcrypt-config"; then
2171 gcrypt_cflags=`libgcrypt-config --cflags`
2172 gcrypt_libs=`libgcrypt-config --libs`
2173 libs_softmmu="$gcrypt_libs $libs_softmmu"
2174 libs_tools="$gcrypt_libs $libs_tools"
2175 QEMU_CFLAGS="$QEMU_CFLAGS $gcrypt_cflags"
2176 else
2177 feature_not_found "gcrypt" "Install gcrypt devel"
2182 if test "$gnutls_nettle" != "no"; then
2183 if $pkg_config --exists "nettle"; then
2184 nettle_cflags=`$pkg_config --cflags nettle`
2185 nettle_libs=`$pkg_config --libs nettle`
2186 nettle_version=`$pkg_config --modversion nettle`
2187 libs_softmmu="$nettle_libs $libs_softmmu"
2188 libs_tools="$nettle_libs $libs_tools"
2189 QEMU_CFLAGS="$QEMU_CFLAGS $nettle_cflags"
2190 else
2191 feature_not_found "nettle" "Install nettle devel"
2196 ##########################################
2197 # VTE probe
2199 if test "$vte" != "no"; then
2200 if test "$gtkabi" = "3.0"; then
2201 vtepackage="vte-2.90"
2202 vteversion="0.32.0"
2203 else
2204 vtepackage="vte"
2205 vteversion="0.24.0"
2207 if $pkg_config --exists "$vtepackage >= $vteversion"; then
2208 vte_cflags=`$pkg_config --cflags $vtepackage`
2209 vte_libs=`$pkg_config --libs $vtepackage`
2210 libs_softmmu="$vte_libs $libs_softmmu"
2211 vte="yes"
2212 elif test "$vte" = "yes"; then
2213 if test "$gtkabi" = "3.0"; then
2214 feature_not_found "vte" "Install libvte-2.90 devel"
2215 else
2216 feature_not_found "vte" "Install libvte devel"
2218 else
2219 vte="no"
2223 ##########################################
2224 # SDL probe
2226 # Look for sdl configuration program (pkg-config or sdl-config). Try
2227 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
2229 if test $sdlabi = "2.0"; then
2230 sdl_config=$sdl2_config
2231 sdlname=sdl2
2232 sdlconfigname=sdl2_config
2233 else
2234 sdlname=sdl
2235 sdlconfigname=sdl_config
2238 if test "`basename $sdl_config`" != $sdlconfigname && ! has ${sdl_config}; then
2239 sdl_config=$sdlconfigname
2242 if $pkg_config $sdlname --exists; then
2243 sdlconfig="$pkg_config $sdlname"
2244 _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
2245 elif has ${sdl_config}; then
2246 sdlconfig="$sdl_config"
2247 _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
2248 else
2249 if test "$sdl" = "yes" ; then
2250 feature_not_found "sdl" "Install SDL devel"
2252 sdl=no
2254 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
2255 echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
2258 sdl_too_old=no
2259 if test "$sdl" != "no" ; then
2260 cat > $TMPC << EOF
2261 #include <SDL.h>
2262 #undef main /* We don't want SDL to override our main() */
2263 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
2265 sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
2266 if test "$static" = "yes" ; then
2267 sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
2268 else
2269 sdl_libs=`$sdlconfig --libs 2> /dev/null`
2271 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2272 if test "$_sdlversion" -lt 121 ; then
2273 sdl_too_old=yes
2274 else
2275 if test "$cocoa" = "no" ; then
2276 sdl=yes
2280 # static link with sdl ? (note: sdl.pc's --static --libs is broken)
2281 if test "$sdl" = "yes" -a "$static" = "yes" ; then
2282 if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
2283 sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
2284 sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
2286 if compile_prog "$sdl_cflags" "$sdl_libs" ; then
2288 else
2289 sdl=no
2291 fi # static link
2292 else # sdl not found
2293 if test "$sdl" = "yes" ; then
2294 feature_not_found "sdl" "Install SDL devel"
2296 sdl=no
2297 fi # sdl compile test
2300 if test "$sdl" = "yes" ; then
2301 cat > $TMPC <<EOF
2302 #include <SDL.h>
2303 #if defined(SDL_VIDEO_DRIVER_X11)
2304 #include <X11/XKBlib.h>
2305 #else
2306 #error No x11 support
2307 #endif
2308 int main(void) { return 0; }
2310 if compile_prog "$sdl_cflags $x11_cflags" "$sdl_libs $x11_libs" ; then
2311 sdl_cflags="$sdl_cflags $x11_cflags"
2312 sdl_libs="$sdl_libs $x11_libs"
2314 libs_softmmu="$sdl_libs $libs_softmmu"
2317 ##########################################
2318 # RDMA needs OpenFabrics libraries
2319 if test "$rdma" != "no" ; then
2320 cat > $TMPC <<EOF
2321 #include <rdma/rdma_cma.h>
2322 int main(void) { return 0; }
2324 rdma_libs="-lrdmacm -libverbs"
2325 if compile_prog "" "$rdma_libs" ; then
2326 rdma="yes"
2327 libs_softmmu="$libs_softmmu $rdma_libs"
2328 else
2329 if test "$rdma" = "yes" ; then
2330 error_exit \
2331 " OpenFabrics librdmacm/libibverbs not present." \
2332 " Your options:" \
2333 " (1) Fast: Install infiniband packages from your distro." \
2334 " (2) Cleanest: Install libraries from www.openfabrics.org" \
2335 " (3) Also: Install softiwarp if you don't have RDMA hardware"
2337 rdma="no"
2341 ##########################################
2342 # VNC TLS/WS detection
2343 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
2344 cat > $TMPC <<EOF
2345 #include <gnutls/gnutls.h>
2346 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
2348 vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
2349 vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
2350 if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
2351 if test "$vnc_tls" != "no" ; then
2352 vnc_tls=yes
2354 libs_softmmu="$vnc_tls_libs $libs_softmmu"
2355 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_tls_cflags"
2356 else
2357 if test "$vnc_tls" = "yes" ; then
2358 feature_not_found "vnc-tls" "Install gnutls devel"
2360 vnc_tls=no
2364 ##########################################
2365 # VNC SASL detection
2366 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
2367 cat > $TMPC <<EOF
2368 #include <sasl/sasl.h>
2369 #include <stdio.h>
2370 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
2372 # Assuming Cyrus-SASL installed in /usr prefix
2373 vnc_sasl_cflags=""
2374 vnc_sasl_libs="-lsasl2"
2375 if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
2376 vnc_sasl=yes
2377 libs_softmmu="$vnc_sasl_libs $libs_softmmu"
2378 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_sasl_cflags"
2379 else
2380 if test "$vnc_sasl" = "yes" ; then
2381 feature_not_found "vnc-sasl" "Install Cyrus SASL devel"
2383 vnc_sasl=no
2387 ##########################################
2388 # VNC JPEG detection
2389 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
2390 cat > $TMPC <<EOF
2391 #include <stdio.h>
2392 #include <jpeglib.h>
2393 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
2395 vnc_jpeg_cflags=""
2396 vnc_jpeg_libs="-ljpeg"
2397 if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
2398 vnc_jpeg=yes
2399 libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
2400 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_jpeg_cflags"
2401 else
2402 if test "$vnc_jpeg" = "yes" ; then
2403 feature_not_found "vnc-jpeg" "Install libjpeg-turbo devel"
2405 vnc_jpeg=no
2409 ##########################################
2410 # VNC PNG detection
2411 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
2412 cat > $TMPC <<EOF
2413 //#include <stdio.h>
2414 #include <png.h>
2415 #include <stddef.h>
2416 int main(void) {
2417 png_structp png_ptr;
2418 png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
2419 return png_ptr != 0;
2422 if $pkg_config libpng --exists; then
2423 vnc_png_cflags=`$pkg_config libpng --cflags`
2424 vnc_png_libs=`$pkg_config libpng --libs`
2425 else
2426 vnc_png_cflags=""
2427 vnc_png_libs="-lpng"
2429 if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
2430 vnc_png=yes
2431 libs_softmmu="$vnc_png_libs $libs_softmmu"
2432 QEMU_CFLAGS="$QEMU_CFLAGS $vnc_png_cflags"
2433 else
2434 if test "$vnc_png" = "yes" ; then
2435 feature_not_found "vnc-png" "Install libpng devel"
2437 vnc_png=no
2441 ##########################################
2442 # fnmatch() probe, used for ACL routines
2443 fnmatch="no"
2444 cat > $TMPC << EOF
2445 #include <fnmatch.h>
2446 int main(void)
2448 fnmatch("foo", "foo", 0);
2449 return 0;
2452 if compile_prog "" "" ; then
2453 fnmatch="yes"
2456 ##########################################
2457 # uuid_generate() probe, used for vdi block driver
2458 # Note that on some systems (notably MacOSX) no extra library
2459 # need be linked to get the uuid functions.
2460 if test "$uuid" != "no" ; then
2461 uuid_libs="-luuid"
2462 cat > $TMPC << EOF
2463 #include <uuid/uuid.h>
2464 int main(void)
2466 uuid_t my_uuid;
2467 uuid_generate(my_uuid);
2468 return 0;
2471 if compile_prog "" "" ; then
2472 uuid="yes"
2473 elif compile_prog "" "$uuid_libs" ; then
2474 uuid="yes"
2475 libs_softmmu="$uuid_libs $libs_softmmu"
2476 libs_tools="$uuid_libs $libs_tools"
2477 else
2478 if test "$uuid" = "yes" ; then
2479 feature_not_found "uuid" "Install libuuid devel"
2481 uuid=no
2485 if test "$vhdx" = "yes" ; then
2486 if test "$uuid" = "no" ; then
2487 error_exit "uuid required for VHDX support"
2489 elif test "$vhdx" != "no" ; then
2490 if test "$uuid" = "yes" ; then
2491 vhdx=yes
2492 else
2493 vhdx=no
2497 ##########################################
2498 # xfsctl() probe, used for raw-posix
2499 if test "$xfs" != "no" ; then
2500 cat > $TMPC << EOF
2501 #include <stddef.h> /* NULL */
2502 #include <xfs/xfs.h>
2503 int main(void)
2505 xfsctl(NULL, 0, 0, NULL);
2506 return 0;
2509 if compile_prog "" "" ; then
2510 xfs="yes"
2511 else
2512 if test "$xfs" = "yes" ; then
2513 feature_not_found "xfs" "Instal xfsprogs/xfslibs devel"
2515 xfs=no
2519 ##########################################
2520 # vde libraries probe
2521 if test "$vde" != "no" ; then
2522 vde_libs="-lvdeplug"
2523 cat > $TMPC << EOF
2524 #include <libvdeplug.h>
2525 int main(void)
2527 struct vde_open_args a = {0, 0, 0};
2528 char s[] = "";
2529 vde_open(s, s, &a);
2530 return 0;
2533 if compile_prog "" "$vde_libs" ; then
2534 vde=yes
2535 libs_softmmu="$vde_libs $libs_softmmu"
2536 libs_tools="$vde_libs $libs_tools"
2537 else
2538 if test "$vde" = "yes" ; then
2539 feature_not_found "vde" "Install vde (Virtual Distributed Ethernet) devel"
2541 vde=no
2545 ##########################################
2546 # netmap support probe
2547 # Apart from looking for netmap headers, we make sure that the host API version
2548 # supports the netmap backend (>=11). The upper bound (15) is meant to simulate
2549 # a minor/major version number. Minor new features will be marked with values up
2550 # to 15, and if something happens that requires a change to the backend we will
2551 # move above 15, submit the backend fixes and modify this two bounds.
2552 if test "$netmap" != "no" ; then
2553 cat > $TMPC << EOF
2554 #include <inttypes.h>
2555 #include <net/if.h>
2556 #include <net/netmap.h>
2557 #include <net/netmap_user.h>
2558 #if (NETMAP_API < 11) || (NETMAP_API > 15)
2559 #error
2560 #endif
2561 int main(void) { return 0; }
2563 if compile_prog "" "" ; then
2564 netmap=yes
2565 else
2566 if test "$netmap" = "yes" ; then
2567 feature_not_found "netmap"
2569 netmap=no
2573 ##########################################
2574 # libcap-ng library probe
2575 if test "$cap_ng" != "no" ; then
2576 cap_libs="-lcap-ng"
2577 cat > $TMPC << EOF
2578 #include <cap-ng.h>
2579 int main(void)
2581 capng_capability_to_name(CAPNG_EFFECTIVE);
2582 return 0;
2585 if compile_prog "" "$cap_libs" ; then
2586 cap_ng=yes
2587 libs_tools="$cap_libs $libs_tools"
2588 else
2589 if test "$cap_ng" = "yes" ; then
2590 feature_not_found "cap_ng" "Install libcap-ng devel"
2592 cap_ng=no
2596 ##########################################
2597 # Sound support libraries probe
2599 audio_drv_probe()
2601 drv=$1
2602 hdr=$2
2603 lib=$3
2604 exp=$4
2605 cfl=$5
2606 cat > $TMPC << EOF
2607 #include <$hdr>
2608 int main(void) { $exp }
2610 if compile_prog "$cfl" "$lib" ; then
2612 else
2613 error_exit "$drv check failed" \
2614 "Make sure to have the $drv libs and headers installed."
2618 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
2619 for drv in $audio_drv_list; do
2620 case $drv in
2621 alsa)
2622 audio_drv_probe $drv alsa/asoundlib.h -lasound \
2623 "return snd_pcm_close((snd_pcm_t *)0);"
2624 libs_softmmu="-lasound $libs_softmmu"
2628 audio_drv_probe $drv pulse/mainloop.h "-lpulse" \
2629 "pa_mainloop *m = 0; pa_mainloop_free (m); return 0;"
2630 libs_softmmu="-lpulse $libs_softmmu"
2631 audio_pt_int="yes"
2634 coreaudio)
2635 libs_softmmu="-framework CoreAudio $libs_softmmu"
2638 dsound)
2639 libs_softmmu="-lole32 -ldxguid $libs_softmmu"
2640 audio_win_int="yes"
2643 oss)
2644 libs_softmmu="$oss_lib $libs_softmmu"
2647 sdl|wav)
2648 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
2652 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
2653 error_exit "Unknown driver '$drv' selected" \
2654 "Possible drivers are: $audio_possible_drivers"
2657 esac
2658 done
2660 ##########################################
2661 # BrlAPI probe
2663 if test "$brlapi" != "no" ; then
2664 brlapi_libs="-lbrlapi"
2665 cat > $TMPC << EOF
2666 #include <brlapi.h>
2667 #include <stddef.h>
2668 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
2670 if compile_prog "" "$brlapi_libs" ; then
2671 brlapi=yes
2672 libs_softmmu="$brlapi_libs $libs_softmmu"
2673 else
2674 if test "$brlapi" = "yes" ; then
2675 feature_not_found "brlapi" "Install brlapi devel"
2677 brlapi=no
2681 ##########################################
2682 # curses probe
2683 if test "$curses" != "no" ; then
2684 if test "$mingw32" = "yes" ; then
2685 curses_list="-lpdcurses"
2686 else
2687 curses_list="$($pkg_config --libs ncurses 2>/dev/null):-lncurses:-lcurses"
2689 curses_found=no
2690 cat > $TMPC << EOF
2691 #include <curses.h>
2692 int main(void) {
2693 const char *s = curses_version();
2694 resize_term(0, 0);
2695 return s != 0;
2698 IFS=:
2699 for curses_lib in $curses_list; do
2700 unset IFS
2701 if compile_prog "" "$curses_lib" ; then
2702 curses_found=yes
2703 libs_softmmu="$curses_lib $libs_softmmu"
2704 break
2706 done
2707 unset IFS
2708 if test "$curses_found" = "yes" ; then
2709 curses=yes
2710 else
2711 if test "$curses" = "yes" ; then
2712 feature_not_found "curses" "Install ncurses devel"
2714 curses=no
2718 ##########################################
2719 # curl probe
2720 if test "$curl" != "no" ; then
2721 if $pkg_config libcurl --exists; then
2722 curlconfig="$pkg_config libcurl"
2723 else
2724 curlconfig=curl-config
2726 cat > $TMPC << EOF
2727 #include <curl/curl.h>
2728 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
2730 curl_cflags=`$curlconfig --cflags 2>/dev/null`
2731 curl_libs=`$curlconfig --libs 2>/dev/null`
2732 if compile_prog "$curl_cflags" "$curl_libs" ; then
2733 curl=yes
2734 else
2735 if test "$curl" = "yes" ; then
2736 feature_not_found "curl" "Install libcurl devel"
2738 curl=no
2740 fi # test "$curl"
2742 ##########################################
2743 # bluez support probe
2744 if test "$bluez" != "no" ; then
2745 cat > $TMPC << EOF
2746 #include <bluetooth/bluetooth.h>
2747 int main(void) { return bt_error(0); }
2749 bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
2750 bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
2751 if compile_prog "$bluez_cflags" "$bluez_libs" ; then
2752 bluez=yes
2753 libs_softmmu="$bluez_libs $libs_softmmu"
2754 else
2755 if test "$bluez" = "yes" ; then
2756 feature_not_found "bluez" "Install bluez-libs/libbluetooth devel"
2758 bluez="no"
2762 ##########################################
2763 # glib support probe
2765 glib_req_ver=2.22
2766 glib_modules=gthread-2.0
2767 if test "$modules" = yes; then
2768 glib_modules="$glib_modules gmodule-2.0"
2771 for i in $glib_modules; do
2772 if $pkg_config --atleast-version=$glib_req_ver $i; then
2773 glib_cflags=`$pkg_config --cflags $i`
2774 glib_libs=`$pkg_config --libs $i`
2775 CFLAGS="$glib_cflags $CFLAGS"
2776 LIBS="$glib_libs $LIBS"
2777 libs_qga="$glib_libs $libs_qga"
2778 else
2779 error_exit "glib-$glib_req_ver $i is required to compile QEMU"
2781 done
2783 # g_test_trap_subprocess added in 2.38. Used by some tests.
2784 glib_subprocess=yes
2785 if ! $pkg_config --atleast-version=2.38 glib-2.0; then
2786 glib_subprocess=no
2789 # Silence clang 3.5.0 warnings about glib attribute __alloc_size__ usage
2790 cat > $TMPC << EOF
2791 #include <glib.h>
2792 int main(void) { return 0; }
2794 if ! compile_prog "$glib_cflags -Werror" "$glib_libs" ; then
2795 if cc_has_warning_flag "-Wno-unknown-attributes"; then
2796 glib_cflags="-Wno-unknown-attributes $glib_cflags"
2797 CFLAGS="-Wno-unknown-attributes $CFLAGS"
2801 ##########################################
2802 # SHA command probe for modules
2803 if test "$modules" = yes; then
2804 shacmd_probe="sha1sum sha1 shasum"
2805 for c in $shacmd_probe; do
2806 if has $c; then
2807 shacmd="$c"
2808 break
2810 done
2811 if test "$shacmd" = ""; then
2812 error_exit "one of the checksum commands is required to enable modules: $shacmd_probe"
2816 ##########################################
2817 # pixman support probe
2819 if test "$pixman" = ""; then
2820 if test "$want_tools" = "no" -a "$softmmu" = "no"; then
2821 pixman="none"
2822 elif $pkg_config --atleast-version=0.21.8 pixman-1 > /dev/null 2>&1; then
2823 pixman="system"
2824 else
2825 pixman="internal"
2828 if test "$pixman" = "none"; then
2829 if test "$want_tools" != "no" -o "$softmmu" != "no"; then
2830 error_exit "pixman disabled but system emulation or tools build" \
2831 "enabled. You can turn off pixman only if you also" \
2832 "disable all system emulation targets and the tools" \
2833 "build with '--disable-tools --disable-system'."
2835 pixman_cflags=
2836 pixman_libs=
2837 elif test "$pixman" = "system"; then
2838 # pixman version has been checked above
2839 pixman_cflags=`$pkg_config --cflags pixman-1`
2840 pixman_libs=`$pkg_config --libs pixman-1`
2841 else
2842 if test ! -d ${source_path}/pixman/pixman; then
2843 error_exit "pixman >= 0.21.8 not present. Your options:" \
2844 " (1) Preferred: Install the pixman devel package (any recent" \
2845 " distro should have packages as Xorg needs pixman too)." \
2846 " (2) Fetch the pixman submodule, using:" \
2847 " git submodule update --init pixman"
2849 mkdir -p pixman/pixman
2850 pixman_cflags="-I\$(SRC_PATH)/pixman/pixman -I\$(BUILD_DIR)/pixman/pixman"
2851 pixman_libs="-L\$(BUILD_DIR)/pixman/pixman/.libs -lpixman-1"
2854 ##########################################
2855 # libcap probe
2857 if test "$cap" != "no" ; then
2858 cat > $TMPC <<EOF
2859 #include <stdio.h>
2860 #include <sys/capability.h>
2861 int main(void) { cap_t caps; caps = cap_init(); return caps != NULL; }
2863 if compile_prog "" "-lcap" ; then
2864 cap=yes
2865 else
2866 cap=no
2870 ##########################################
2871 # pthread probe
2872 PTHREADLIBS_LIST="-pthread -lpthread -lpthreadGC2"
2874 pthread=no
2875 cat > $TMPC << EOF
2876 #include <pthread.h>
2877 static void *f(void *p) { return NULL; }
2878 int main(void) {
2879 pthread_t thread;
2880 pthread_create(&thread, 0, f, 0);
2881 return 0;
2884 if compile_prog "" "" ; then
2885 pthread=yes
2886 else
2887 for pthread_lib in $PTHREADLIBS_LIST; do
2888 if compile_prog "" "$pthread_lib" ; then
2889 pthread=yes
2890 found=no
2891 for lib_entry in $LIBS; do
2892 if test "$lib_entry" = "$pthread_lib"; then
2893 found=yes
2894 break
2896 done
2897 if test "$found" = "no"; then
2898 LIBS="$pthread_lib $LIBS"
2900 break
2902 done
2905 if test "$mingw32" != yes -a "$pthread" = no; then
2906 error_exit "pthread check failed" \
2907 "Make sure to have the pthread libs and headers installed."
2910 # check for pthread_setname_np
2911 pthread_setname_np=no
2912 cat > $TMPC << EOF
2913 #include <pthread.h>
2915 static void *f(void *p) { return NULL; }
2916 int main(void)
2918 pthread_t thread;
2919 pthread_create(&thread, 0, f, 0);
2920 pthread_setname_np(thread, "QEMU");
2921 return 0;
2924 if compile_prog "" "$pthread_lib" ; then
2925 pthread_setname_np=yes
2928 ##########################################
2929 # rbd probe
2930 if test "$rbd" != "no" ; then
2931 cat > $TMPC <<EOF
2932 #include <stdio.h>
2933 #include <rbd/librbd.h>
2934 int main(void) {
2935 rados_t cluster;
2936 rados_create(&cluster, NULL);
2937 return 0;
2940 rbd_libs="-lrbd -lrados"
2941 if compile_prog "" "$rbd_libs" ; then
2942 rbd=yes
2943 else
2944 if test "$rbd" = "yes" ; then
2945 feature_not_found "rados block device" "Install librbd/ceph devel"
2947 rbd=no
2951 ##########################################
2952 # libssh2 probe
2953 min_libssh2_version=1.2.8
2954 if test "$libssh2" != "no" ; then
2955 if $pkg_config --atleast-version=$min_libssh2_version libssh2; then
2956 libssh2_cflags=`$pkg_config libssh2 --cflags`
2957 libssh2_libs=`$pkg_config libssh2 --libs`
2958 libssh2=yes
2959 else
2960 if test "$libssh2" = "yes" ; then
2961 error_exit "libssh2 >= $min_libssh2_version required for --enable-libssh2"
2963 libssh2=no
2967 ##########################################
2968 # libssh2_sftp_fsync probe
2970 if test "$libssh2" = "yes"; then
2971 cat > $TMPC <<EOF
2972 #include <stdio.h>
2973 #include <libssh2.h>
2974 #include <libssh2_sftp.h>
2975 int main(void) {
2976 LIBSSH2_SESSION *session;
2977 LIBSSH2_SFTP *sftp;
2978 LIBSSH2_SFTP_HANDLE *sftp_handle;
2979 session = libssh2_session_init ();
2980 sftp = libssh2_sftp_init (session);
2981 sftp_handle = libssh2_sftp_open (sftp, "/", 0, 0);
2982 libssh2_sftp_fsync (sftp_handle);
2983 return 0;
2986 # libssh2_cflags/libssh2_libs defined in previous test.
2987 if compile_prog "$libssh2_cflags" "$libssh2_libs" ; then
2988 QEMU_CFLAGS="-DHAS_LIBSSH2_SFTP_FSYNC $QEMU_CFLAGS"
2992 ##########################################
2993 # linux-aio probe
2995 if test "$linux_aio" != "no" ; then
2996 cat > $TMPC <<EOF
2997 #include <libaio.h>
2998 #include <sys/eventfd.h>
2999 #include <stddef.h>
3000 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
3002 if compile_prog "" "-laio" ; then
3003 linux_aio=yes
3004 else
3005 if test "$linux_aio" = "yes" ; then
3006 feature_not_found "linux AIO" "Install libaio devel"
3008 linux_aio=no
3012 ##########################################
3013 # TPM passthrough is only on x86 Linux
3015 if test "$targetos" = Linux && test "$cpu" = i386 -o "$cpu" = x86_64; then
3016 tpm_passthrough=$tpm
3017 else
3018 tpm_passthrough=no
3021 ##########################################
3022 # attr probe
3024 if test "$attr" != "no" ; then
3025 cat > $TMPC <<EOF
3026 #include <stdio.h>
3027 #include <sys/types.h>
3028 #ifdef CONFIG_LIBATTR
3029 #include <attr/xattr.h>
3030 #else
3031 #include <sys/xattr.h>
3032 #endif
3033 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
3035 if compile_prog "" "" ; then
3036 attr=yes
3037 # Older distros have <attr/xattr.h>, and need -lattr:
3038 elif compile_prog "-DCONFIG_LIBATTR" "-lattr" ; then
3039 attr=yes
3040 LIBS="-lattr $LIBS"
3041 libattr=yes
3042 else
3043 if test "$attr" = "yes" ; then
3044 feature_not_found "ATTR" "Install libc6 or libattr devel"
3046 attr=no
3050 ##########################################
3051 # iovec probe
3052 cat > $TMPC <<EOF
3053 #include <sys/types.h>
3054 #include <sys/uio.h>
3055 #include <unistd.h>
3056 int main(void) { return sizeof(struct iovec); }
3058 iovec=no
3059 if compile_prog "" "" ; then
3060 iovec=yes
3063 ##########################################
3064 # preadv probe
3065 cat > $TMPC <<EOF
3066 #include <sys/types.h>
3067 #include <sys/uio.h>
3068 #include <unistd.h>
3069 int main(void) { return preadv(0, 0, 0, 0); }
3071 preadv=no
3072 if compile_prog "" "" ; then
3073 preadv=yes
3076 ##########################################
3077 # fdt probe
3078 # fdt support is mandatory for at least some target architectures,
3079 # so insist on it if we're building those system emulators.
3080 fdt_required=no
3081 for target in $target_list; do
3082 case $target in
3083 aarch64*-softmmu|arm*-softmmu|ppc*-softmmu|microblaze*-softmmu)
3084 fdt_required=yes
3086 esac
3087 done
3089 if test "$fdt_required" = "yes"; then
3090 if test "$fdt" = "no"; then
3091 error_exit "fdt disabled but some requested targets require it." \
3092 "You can turn off fdt only if you also disable all the system emulation" \
3093 "targets which need it (by specifying a cut down --target-list)."
3095 fdt=yes
3098 if test "$fdt" != "no" ; then
3099 fdt_libs="-lfdt"
3100 # explicitly check for libfdt_env.h as it is missing in some stable installs
3101 # and test for required functions to make sure we are on a version >= 1.4.0
3102 cat > $TMPC << EOF
3103 #include <libfdt.h>
3104 #include <libfdt_env.h>
3105 int main(void) { fdt_get_property_by_offset(0, 0, 0); return 0; }
3107 if compile_prog "" "$fdt_libs" ; then
3108 # system DTC is good - use it
3109 fdt=yes
3110 elif test -d ${source_path}/dtc/libfdt ; then
3111 # have submodule DTC - use it
3112 fdt=yes
3113 dtc_internal="yes"
3114 mkdir -p dtc
3115 if [ "$pwd_is_source_path" != "y" ] ; then
3116 symlink "$source_path/dtc/Makefile" "dtc/Makefile"
3117 symlink "$source_path/dtc/scripts" "dtc/scripts"
3119 fdt_cflags="-I\$(SRC_PATH)/dtc/libfdt"
3120 fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs"
3121 elif test "$fdt" = "yes" ; then
3122 # have neither and want - prompt for system/submodule install
3123 error_exit "DTC (libfdt) version >= 1.4.0 not present. Your options:" \
3124 " (1) Preferred: Install the DTC (libfdt) devel package" \
3125 " (2) Fetch the DTC submodule, using:" \
3126 " git submodule update --init dtc"
3127 else
3128 # don't have and don't want
3129 fdt_libs=
3130 fdt=no
3134 libs_softmmu="$libs_softmmu $fdt_libs"
3136 ##########################################
3137 # opengl probe (for sdl2, milkymist-tmu2)
3139 # GLX probe, used by milkymist-tmu2
3140 # this is temporary, code will be switched to egl mid-term.
3141 cat > $TMPC << EOF
3142 #include <X11/Xlib.h>
3143 #include <GL/gl.h>
3144 #include <GL/glx.h>
3145 int main(void) { glBegin(0); glXQueryVersion(0,0,0); return 0; }
3147 if compile_prog "" "-lGL -lX11" ; then
3148 have_glx=yes
3149 else
3150 have_glx=no
3153 if test "$opengl" != "no" ; then
3154 opengl_pkgs="gl glesv2 epoxy egl"
3155 if $pkg_config $opengl_pkgs x11 && test "$have_glx" = "yes"; then
3156 opengl_cflags="$($pkg_config --cflags $opengl_pkgs) $x11_cflags"
3157 opengl_libs="$($pkg_config --libs $opengl_pkgs) $x11_libs"
3158 opengl=yes
3159 else
3160 if test "$opengl" = "yes" ; then
3161 feature_not_found "opengl" "Please install opengl (mesa) devel pkgs: $opengl_pkgs"
3163 opengl_cflags=""
3164 opengl_libs=""
3165 opengl=no
3170 ##########################################
3171 # archipelago probe
3172 if test "$archipelago" != "no" ; then
3173 cat > $TMPC <<EOF
3174 #include <stdio.h>
3175 #include <xseg/xseg.h>
3176 #include <xseg/protocol.h>
3177 int main(void) {
3178 xseg_initialize();
3179 return 0;
3182 archipelago_libs=-lxseg
3183 if compile_prog "" "$archipelago_libs"; then
3184 archipelago="yes"
3185 libs_tools="$archipelago_libs $libs_tools"
3186 libs_softmmu="$archipelago_libs $libs_softmmu"
3188 echo "WARNING: Please check the licenses of QEMU and libxseg carefully."
3189 echo "GPLv3 versions of libxseg may not be compatible with QEMU's"
3190 echo "license and therefore prevent redistribution."
3191 echo
3192 echo "To disable Archipelago, use --disable-archipelago"
3193 else
3194 if test "$archipelago" = "yes" ; then
3195 feature_not_found "Archipelago backend support" "Install libxseg devel"
3197 archipelago="no"
3202 ##########################################
3203 # glusterfs probe
3204 if test "$glusterfs" != "no" ; then
3205 if $pkg_config --atleast-version=3 glusterfs-api; then
3206 glusterfs="yes"
3207 glusterfs_cflags=`$pkg_config --cflags glusterfs-api`
3208 glusterfs_libs=`$pkg_config --libs glusterfs-api`
3209 if $pkg_config --atleast-version=5 glusterfs-api; then
3210 glusterfs_discard="yes"
3212 if $pkg_config --atleast-version=6 glusterfs-api; then
3213 glusterfs_zerofill="yes"
3215 else
3216 if test "$glusterfs" = "yes" ; then
3217 feature_not_found "GlusterFS backend support" \
3218 "Install glusterfs-api devel >= 3"
3220 glusterfs="no"
3224 # Check for inotify functions when we are building linux-user
3225 # emulator. This is done because older glibc versions don't
3226 # have syscall stubs for these implemented. In that case we
3227 # don't provide them even if kernel supports them.
3229 inotify=no
3230 cat > $TMPC << EOF
3231 #include <sys/inotify.h>
3234 main(void)
3236 /* try to start inotify */
3237 return inotify_init();
3240 if compile_prog "" "" ; then
3241 inotify=yes
3244 inotify1=no
3245 cat > $TMPC << EOF
3246 #include <sys/inotify.h>
3249 main(void)
3251 /* try to start inotify */
3252 return inotify_init1(0);
3255 if compile_prog "" "" ; then
3256 inotify1=yes
3259 # check if utimensat and futimens are supported
3260 utimens=no
3261 cat > $TMPC << EOF
3262 #define _ATFILE_SOURCE
3263 #include <stddef.h>
3264 #include <fcntl.h>
3265 #include <sys/stat.h>
3267 int main(void)
3269 utimensat(AT_FDCWD, "foo", NULL, 0);
3270 futimens(0, NULL);
3271 return 0;
3274 if compile_prog "" "" ; then
3275 utimens=yes
3278 # check if pipe2 is there
3279 pipe2=no
3280 cat > $TMPC << EOF
3281 #include <unistd.h>
3282 #include <fcntl.h>
3284 int main(void)
3286 int pipefd[2];
3287 return pipe2(pipefd, O_CLOEXEC);
3290 if compile_prog "" "" ; then
3291 pipe2=yes
3294 # check if accept4 is there
3295 accept4=no
3296 cat > $TMPC << EOF
3297 #include <sys/socket.h>
3298 #include <stddef.h>
3300 int main(void)
3302 accept4(0, NULL, NULL, SOCK_CLOEXEC);
3303 return 0;
3306 if compile_prog "" "" ; then
3307 accept4=yes
3310 # check if tee/splice is there. vmsplice was added same time.
3311 splice=no
3312 cat > $TMPC << EOF
3313 #include <unistd.h>
3314 #include <fcntl.h>
3315 #include <limits.h>
3317 int main(void)
3319 int len, fd = 0;
3320 len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
3321 splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
3322 return 0;
3325 if compile_prog "" "" ; then
3326 splice=yes
3329 ##########################################
3330 # libnuma probe
3332 if test "$numa" != "no" ; then
3333 cat > $TMPC << EOF
3334 #include <numa.h>
3335 int main(void) { return numa_available(); }
3338 if compile_prog "" "-lnuma" ; then
3339 numa=yes
3340 libs_softmmu="-lnuma $libs_softmmu"
3341 else
3342 if test "$numa" = "yes" ; then
3343 feature_not_found "numa" "install numactl devel"
3345 numa=no
3349 ##########################################
3350 # tcmalloc probe
3352 if test "$tcmalloc" = "yes" ; then
3353 cat > $TMPC << EOF
3354 #include <stdlib.h>
3355 int main(void) { malloc(1); return 0; }
3358 if compile_prog "" "-ltcmalloc" ; then
3359 LIBS="-ltcmalloc $LIBS"
3360 else
3361 feature_not_found "tcmalloc" "install gperftools devel"
3365 ##########################################
3366 # signalfd probe
3367 signalfd="no"
3368 cat > $TMPC << EOF
3369 #include <unistd.h>
3370 #include <sys/syscall.h>
3371 #include <signal.h>
3372 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
3375 if compile_prog "" "" ; then
3376 signalfd=yes
3379 # check if eventfd is supported
3380 eventfd=no
3381 cat > $TMPC << EOF
3382 #include <sys/eventfd.h>
3384 int main(void)
3386 return eventfd(0, EFD_NONBLOCK | EFD_CLOEXEC);
3389 if compile_prog "" "" ; then
3390 eventfd=yes
3393 # check for fallocate
3394 fallocate=no
3395 cat > $TMPC << EOF
3396 #include <fcntl.h>
3398 int main(void)
3400 fallocate(0, 0, 0, 0);
3401 return 0;
3404 if compile_prog "" "" ; then
3405 fallocate=yes
3408 # check for fallocate hole punching
3409 fallocate_punch_hole=no
3410 cat > $TMPC << EOF
3411 #include <fcntl.h>
3412 #include <linux/falloc.h>
3414 int main(void)
3416 fallocate(0, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE, 0, 0);
3417 return 0;
3420 if compile_prog "" "" ; then
3421 fallocate_punch_hole=yes
3424 # check that fallocate supports range zeroing inside the file
3425 fallocate_zero_range=no
3426 cat > $TMPC << EOF
3427 #include <fcntl.h>
3428 #include <linux/falloc.h>
3430 int main(void)
3432 fallocate(0, FALLOC_FL_ZERO_RANGE, 0, 0);
3433 return 0;
3436 if compile_prog "" "" ; then
3437 fallocate_zero_range=yes
3440 # check for posix_fallocate
3441 posix_fallocate=no
3442 cat > $TMPC << EOF
3443 #include <fcntl.h>
3445 int main(void)
3447 posix_fallocate(0, 0, 0);
3448 return 0;
3451 if compile_prog "" "" ; then
3452 posix_fallocate=yes
3455 # check for sync_file_range
3456 sync_file_range=no
3457 cat > $TMPC << EOF
3458 #include <fcntl.h>
3460 int main(void)
3462 sync_file_range(0, 0, 0, 0);
3463 return 0;
3466 if compile_prog "" "" ; then
3467 sync_file_range=yes
3470 # check for linux/fiemap.h and FS_IOC_FIEMAP
3471 fiemap=no
3472 cat > $TMPC << EOF
3473 #include <sys/ioctl.h>
3474 #include <linux/fs.h>
3475 #include <linux/fiemap.h>
3477 int main(void)
3479 ioctl(0, FS_IOC_FIEMAP, 0);
3480 return 0;
3483 if compile_prog "" "" ; then
3484 fiemap=yes
3487 # check for dup3
3488 dup3=no
3489 cat > $TMPC << EOF
3490 #include <unistd.h>
3492 int main(void)
3494 dup3(0, 0, 0);
3495 return 0;
3498 if compile_prog "" "" ; then
3499 dup3=yes
3502 # check for ppoll support
3503 ppoll=no
3504 cat > $TMPC << EOF
3505 #include <poll.h>
3507 int main(void)
3509 struct pollfd pfd = { .fd = 0, .events = 0, .revents = 0 };
3510 ppoll(&pfd, 1, 0, 0);
3511 return 0;
3514 if compile_prog "" "" ; then
3515 ppoll=yes
3518 # check for prctl(PR_SET_TIMERSLACK , ... ) support
3519 prctl_pr_set_timerslack=no
3520 cat > $TMPC << EOF
3521 #include <sys/prctl.h>
3523 int main(void)
3525 prctl(PR_SET_TIMERSLACK, 1, 0, 0, 0);
3526 return 0;
3529 if compile_prog "" "" ; then
3530 prctl_pr_set_timerslack=yes
3533 # check for epoll support
3534 epoll=no
3535 cat > $TMPC << EOF
3536 #include <sys/epoll.h>
3538 int main(void)
3540 epoll_create(0);
3541 return 0;
3544 if compile_prog "" "" ; then
3545 epoll=yes
3548 # epoll_create1 and epoll_pwait are later additions
3549 # so we must check separately for their presence
3550 epoll_create1=no
3551 cat > $TMPC << EOF
3552 #include <sys/epoll.h>
3554 int main(void)
3556 /* Note that we use epoll_create1 as a value, not as
3557 * a function being called. This is necessary so that on
3558 * old SPARC glibc versions where the function was present in
3559 * the library but not declared in the header file we will
3560 * fail the configure check. (Otherwise we will get a compiler
3561 * warning but not an error, and will proceed to fail the
3562 * qemu compile where we compile with -Werror.)
3564 return (int)(uintptr_t)&epoll_create1;
3567 if compile_prog "" "" ; then
3568 epoll_create1=yes
3571 epoll_pwait=no
3572 cat > $TMPC << EOF
3573 #include <sys/epoll.h>
3575 int main(void)
3577 epoll_pwait(0, 0, 0, 0, 0);
3578 return 0;
3581 if compile_prog "" "" ; then
3582 epoll_pwait=yes
3585 # check for sendfile support
3586 sendfile=no
3587 cat > $TMPC << EOF
3588 #include <sys/sendfile.h>
3590 int main(void)
3592 return sendfile(0, 0, 0, 0);
3595 if compile_prog "" "" ; then
3596 sendfile=yes
3599 # check for timerfd support (glibc 2.8 and newer)
3600 timerfd=no
3601 cat > $TMPC << EOF
3602 #include <sys/timerfd.h>
3604 int main(void)
3606 return(timerfd_create(CLOCK_REALTIME, 0));
3609 if compile_prog "" "" ; then
3610 timerfd=yes
3613 # check for setns and unshare support
3614 setns=no
3615 cat > $TMPC << EOF
3616 #include <sched.h>
3618 int main(void)
3620 int ret;
3621 ret = setns(0, 0);
3622 ret = unshare(0);
3623 return ret;
3626 if compile_prog "" "" ; then
3627 setns=yes
3630 # Check if tools are available to build documentation.
3631 if test "$docs" != "no" ; then
3632 if has makeinfo && has pod2man; then
3633 docs=yes
3634 else
3635 if test "$docs" = "yes" ; then
3636 feature_not_found "docs" "Install texinfo and Perl/perl-podlators"
3638 docs=no
3642 # Search for bswap_32 function
3643 byteswap_h=no
3644 cat > $TMPC << EOF
3645 #include <byteswap.h>
3646 int main(void) { return bswap_32(0); }
3648 if compile_prog "" "" ; then
3649 byteswap_h=yes
3652 # Search for bswap32 function
3653 bswap_h=no
3654 cat > $TMPC << EOF
3655 #include <sys/endian.h>
3656 #include <sys/types.h>
3657 #include <machine/bswap.h>
3658 int main(void) { return bswap32(0); }
3660 if compile_prog "" "" ; then
3661 bswap_h=yes
3664 ##########################################
3665 # Do we have libiscsi >= 1.9.0
3666 if test "$libiscsi" != "no" ; then
3667 if $pkg_config --atleast-version=1.9.0 libiscsi; then
3668 libiscsi="yes"
3669 libiscsi_cflags=$($pkg_config --cflags libiscsi)
3670 libiscsi_libs=$($pkg_config --libs libiscsi)
3671 else
3672 if test "$libiscsi" = "yes" ; then
3673 feature_not_found "libiscsi" "Install libiscsi >= 1.9.0"
3675 libiscsi="no"
3679 ##########################################
3680 # Do we need libm
3681 cat > $TMPC << EOF
3682 #include <math.h>
3683 int main(int argc, char **argv) { return isnan(sin((double)argc)); }
3685 if compile_prog "" "" ; then
3687 elif compile_prog "" "-lm" ; then
3688 LIBS="-lm $LIBS"
3689 libs_qga="-lm $libs_qga"
3690 else
3691 error_exit "libm check failed"
3694 ##########################################
3695 # Do we need librt
3696 # uClibc provides 2 versions of clock_gettime(), one with realtime
3697 # support and one without. This means that the clock_gettime() don't
3698 # need -lrt. We still need it for timer_create() so we check for this
3699 # function in addition.
3700 cat > $TMPC <<EOF
3701 #include <signal.h>
3702 #include <time.h>
3703 int main(void) {
3704 timer_create(CLOCK_REALTIME, NULL, NULL);
3705 return clock_gettime(CLOCK_REALTIME, NULL);
3709 if compile_prog "" "" ; then
3711 # we need pthread for static linking. use previous pthread test result
3712 elif compile_prog "" "$pthread_lib -lrt" ; then
3713 LIBS="$LIBS -lrt"
3714 libs_qga="$libs_qga -lrt"
3717 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
3718 "$aix" != "yes" -a "$haiku" != "yes" ; then
3719 libs_softmmu="-lutil $libs_softmmu"
3722 ##########################################
3723 # spice probe
3724 if test "$spice" != "no" ; then
3725 cat > $TMPC << EOF
3726 #include <spice.h>
3727 int main(void) { spice_server_new(); return 0; }
3729 spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
3730 spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
3731 if $pkg_config --atleast-version=0.12.0 spice-server && \
3732 $pkg_config --atleast-version=0.12.3 spice-protocol && \
3733 compile_prog "$spice_cflags" "$spice_libs" ; then
3734 spice="yes"
3735 libs_softmmu="$libs_softmmu $spice_libs"
3736 QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
3737 spice_protocol_version=$($pkg_config --modversion spice-protocol)
3738 spice_server_version=$($pkg_config --modversion spice-server)
3739 else
3740 if test "$spice" = "yes" ; then
3741 feature_not_found "spice" \
3742 "Install spice-server(>=0.12.0) and spice-protocol(>=0.12.3) devel"
3744 spice="no"
3748 # check for libcacard for smartcard support
3749 smartcard_cflags=""
3750 # TODO - what's the minimal nss version we support?
3751 if test "$smartcard_nss" != "no"; then
3752 cat > $TMPC << EOF
3753 #include <pk11pub.h>
3754 int main(void) { PK11_FreeSlot(0); return 0; }
3756 # FIXME: do not include $glib_* in here
3757 nss_libs="$($pkg_config --libs nss 2>/dev/null) $glib_libs"
3758 nss_cflags="$($pkg_config --cflags nss 2>/dev/null) $glib_cflags"
3759 test_cflags="$nss_cflags"
3760 # The header files in nss < 3.13.3 have a bug which causes them to
3761 # emit a warning. If we're going to compile QEMU with -Werror, then
3762 # test that the headers don't have this bug. Otherwise we would pass
3763 # the configure test but fail to compile QEMU later.
3764 if test "$werror" = "yes"; then
3765 test_cflags="-Werror $test_cflags"
3767 if test -n "$libtool" &&
3768 $pkg_config --atleast-version=3.12.8 nss && \
3769 compile_prog "$test_cflags" "$nss_libs"; then
3770 smartcard_nss="yes"
3771 else
3772 if test "$smartcard_nss" = "yes"; then
3773 feature_not_found "nss" "Install nss devel >= 3.12.8"
3775 smartcard_nss="no"
3779 # check for libusb
3780 if test "$libusb" != "no" ; then
3781 if $pkg_config --atleast-version=1.0.13 libusb-1.0; then
3782 libusb="yes"
3783 libusb_cflags=$($pkg_config --cflags libusb-1.0)
3784 libusb_libs=$($pkg_config --libs libusb-1.0)
3785 QEMU_CFLAGS="$QEMU_CFLAGS $libusb_cflags"
3786 libs_softmmu="$libs_softmmu $libusb_libs"
3787 else
3788 if test "$libusb" = "yes"; then
3789 feature_not_found "libusb" "Install libusb devel >= 1.0.13"
3791 libusb="no"
3795 # check for usbredirparser for usb network redirection support
3796 if test "$usb_redir" != "no" ; then
3797 if $pkg_config --atleast-version=0.6 libusbredirparser-0.5; then
3798 usb_redir="yes"
3799 usb_redir_cflags=$($pkg_config --cflags libusbredirparser-0.5)
3800 usb_redir_libs=$($pkg_config --libs libusbredirparser-0.5)
3801 QEMU_CFLAGS="$QEMU_CFLAGS $usb_redir_cflags"
3802 libs_softmmu="$libs_softmmu $usb_redir_libs"
3803 else
3804 if test "$usb_redir" = "yes"; then
3805 feature_not_found "usb-redir" "Install usbredir devel"
3807 usb_redir="no"
3811 ##########################################
3812 # check if we have VSS SDK headers for win
3814 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$vss_win32_sdk" != "no" ; then
3815 case "$vss_win32_sdk" in
3816 "") vss_win32_include="-I$source_path" ;;
3817 *\ *) # The SDK is installed in "Program Files" by default, but we cannot
3818 # handle path with spaces. So we symlink the headers into ".sdk/vss".
3819 vss_win32_include="-I$source_path/.sdk/vss"
3820 symlink "$vss_win32_sdk/inc" "$source_path/.sdk/vss/inc"
3822 *) vss_win32_include="-I$vss_win32_sdk"
3823 esac
3824 cat > $TMPC << EOF
3825 #define __MIDL_user_allocate_free_DEFINED__
3826 #include <inc/win2003/vss.h>
3827 int main(void) { return VSS_CTX_BACKUP; }
3829 if compile_prog "$vss_win32_include" "" ; then
3830 guest_agent_with_vss="yes"
3831 QEMU_CFLAGS="$QEMU_CFLAGS $vss_win32_include"
3832 libs_qga="-lole32 -loleaut32 -lshlwapi -luuid -lstdc++ -Wl,--enable-stdcall-fixup $libs_qga"
3833 else
3834 if test "$vss_win32_sdk" != "" ; then
3835 echo "ERROR: Please download and install Microsoft VSS SDK:"
3836 echo "ERROR: http://www.microsoft.com/en-us/download/details.aspx?id=23490"
3837 echo "ERROR: On POSIX-systems, you can extract the SDK headers by:"
3838 echo "ERROR: scripts/extract-vsssdk-headers setup.exe"
3839 echo "ERROR: The headers are extracted in the directory \`inc'."
3840 feature_not_found "VSS support"
3842 guest_agent_with_vss="no"
3846 ##########################################
3847 # lookup Windows platform SDK (if not specified)
3848 # The SDK is needed only to build .tlb (type library) file of guest agent
3849 # VSS provider from the source. It is usually unnecessary because the
3850 # pre-compiled .tlb file is included.
3852 if test "$mingw32" = "yes" -a "$guest_agent" != "no" -a "$guest_agent_with_vss" = "yes" ; then
3853 if test -z "$win_sdk"; then
3854 programfiles="$PROGRAMFILES"
3855 test -n "$PROGRAMW6432" && programfiles="$PROGRAMW6432"
3856 if test -n "$programfiles"; then
3857 win_sdk=$(ls -d "$programfiles/Microsoft SDKs/Windows/v"* | tail -1) 2>/dev/null
3858 else
3859 feature_not_found "Windows SDK"
3861 elif test "$win_sdk" = "no"; then
3862 win_sdk=""
3866 ##########################################
3867 # check if mingw environment provides a recent ntddscsi.h
3868 if test "$mingw32" = "yes" -a "$guest_agent" != "no"; then
3869 cat > $TMPC << EOF
3870 #include <windows.h>
3871 #include <ntddscsi.h>
3872 int main(void) {
3873 #if !defined(IOCTL_SCSI_GET_ADDRESS)
3874 #error Missing required ioctl definitions
3875 #endif
3876 SCSI_ADDRESS addr = { .Lun = 0, .TargetId = 0, .PathId = 0 };
3877 return addr.Lun;
3880 if compile_prog "" "" ; then
3881 guest_agent_ntddscsi=yes
3882 libs_qga="-lsetupapi $libs_qga"
3886 ##########################################
3887 # Guest agent Window MSI package
3889 if test "$guest_agent" != yes; then
3890 if test "$guest_agent_msi" = yes; then
3891 error_exit "MSI guest agent package requires guest agent enabled"
3893 guest_agent_msi=no
3894 elif test "$mingw32" != "yes"; then
3895 if test "$guest_agent_msi" = "yes"; then
3896 error_exit "MSI guest agent package is available only for MinGW Windows cross-compilation"
3898 guest_agent_msi=no
3899 elif ! has wixl; then
3900 if test "$guest_agent_msi" = "yes"; then
3901 error_exit "MSI guest agent package requires wixl tool installed ( usually from msitools package )"
3903 guest_agent_msi=no
3906 if test "$guest_agent_msi" != "no"; then
3907 if test "$guest_agent_with_vss" = "yes"; then
3908 QEMU_GA_MSI_WITH_VSS="-D InstallVss"
3911 if test "$QEMU_GA_MANUFACTURER" = ""; then
3912 QEMU_GA_MANUFACTURER=QEMU
3915 if test "$QEMU_GA_DISTRO" = ""; then
3916 QEMU_GA_DISTRO=Linux
3919 if test "$QEMU_GA_VERSION" = ""; then
3920 QEMU_GA_VERSION=`cat $source_path/VERSION`
3923 QEMU_GA_MSI_MINGW_DLL_PATH="-D Mingw_dlls=`$pkg_config --variable=prefix glib-2.0`/bin"
3925 case "$cpu" in
3926 x86_64)
3927 QEMU_GA_MSI_ARCH="-a x64 -D Arch=64"
3929 i386)
3930 QEMU_GA_MSI_ARCH="-D Arch=32"
3933 error_exit "CPU $cpu not supported for building installation package"
3935 esac
3938 ##########################################
3939 # check if we have fdatasync
3941 fdatasync=no
3942 cat > $TMPC << EOF
3943 #include <unistd.h>
3944 int main(void) {
3945 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
3946 return fdatasync(0);
3947 #else
3948 #error Not supported
3949 #endif
3952 if compile_prog "" "" ; then
3953 fdatasync=yes
3956 ##########################################
3957 # check if we have madvise
3959 madvise=no
3960 cat > $TMPC << EOF
3961 #include <sys/types.h>
3962 #include <sys/mman.h>
3963 #include <stddef.h>
3964 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
3966 if compile_prog "" "" ; then
3967 madvise=yes
3970 ##########################################
3971 # check if we have posix_madvise
3973 posix_madvise=no
3974 cat > $TMPC << EOF
3975 #include <sys/mman.h>
3976 #include <stddef.h>
3977 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
3979 if compile_prog "" "" ; then
3980 posix_madvise=yes
3983 ##########################################
3984 # check if we have usable SIGEV_THREAD_ID
3986 sigev_thread_id=no
3987 cat > $TMPC << EOF
3988 #include <signal.h>
3989 int main(void) {
3990 struct sigevent ev;
3991 ev.sigev_notify = SIGEV_THREAD_ID;
3992 ev._sigev_un._tid = 0;
3993 asm volatile("" : : "g"(&ev));
3994 return 0;
3997 if compile_prog "" "" ; then
3998 sigev_thread_id=yes
4001 ##########################################
4002 # check if trace backend exists
4004 $python "$source_path/scripts/tracetool.py" "--backends=$trace_backends" --check-backends > /dev/null 2> /dev/null
4005 if test "$?" -ne 0 ; then
4006 error_exit "invalid trace backends" \
4007 "Please choose supported trace backends."
4010 ##########################################
4011 # For 'ust' backend, test if ust headers are present
4012 if have_backend "ust"; then
4013 cat > $TMPC << EOF
4014 #include <lttng/tracepoint.h>
4015 int main(void) { return 0; }
4017 if compile_prog "" "" ; then
4018 if $pkg_config lttng-ust --exists; then
4019 lttng_ust_libs=`$pkg_config --libs lttng-ust`
4020 else
4021 lttng_ust_libs="-llttng-ust"
4023 if $pkg_config liburcu-bp --exists; then
4024 urcu_bp_libs=`$pkg_config --libs liburcu-bp`
4025 else
4026 urcu_bp_libs="-lurcu-bp"
4029 LIBS="$lttng_ust_libs $urcu_bp_libs $LIBS"
4030 libs_qga="$lttng_ust_libs $urcu_bp_libs $libs_qga"
4031 else
4032 error_exit "Trace backend 'ust' missing lttng-ust header files"
4036 ##########################################
4037 # For 'dtrace' backend, test if 'dtrace' command is present
4038 if have_backend "dtrace"; then
4039 if ! has 'dtrace' ; then
4040 error_exit "dtrace command is not found in PATH $PATH"
4042 trace_backend_stap="no"
4043 if has 'stap' ; then
4044 trace_backend_stap="yes"
4048 ##########################################
4049 # check and set a backend for coroutine
4051 # We prefer ucontext, but it's not always possible. The fallback
4052 # is sigcontext. gthread is not selectable except explicitly, because
4053 # it is not functional enough to run QEMU proper. (It is occasionally
4054 # useful for debugging purposes.) On Windows the only valid backend
4055 # is the Windows-specific one.
4057 ucontext_works=no
4058 if test "$darwin" != "yes"; then
4059 cat > $TMPC << EOF
4060 #include <ucontext.h>
4061 #ifdef __stub_makecontext
4062 #error Ignoring glibc stub makecontext which will always fail
4063 #endif
4064 int main(void) { makecontext(0, 0, 0); return 0; }
4066 if compile_prog "" "" ; then
4067 ucontext_works=yes
4071 if test "$coroutine" = ""; then
4072 if test "$mingw32" = "yes"; then
4073 coroutine=win32
4074 elif test "$ucontext_works" = "yes"; then
4075 coroutine=ucontext
4076 else
4077 coroutine=sigaltstack
4079 else
4080 case $coroutine in
4081 windows)
4082 if test "$mingw32" != "yes"; then
4083 error_exit "'windows' coroutine backend only valid for Windows"
4085 # Unfortunately the user visible backend name doesn't match the
4086 # coroutine-*.c filename for this case, so we have to adjust it here.
4087 coroutine=win32
4089 ucontext)
4090 if test "$ucontext_works" != "yes"; then
4091 feature_not_found "ucontext"
4094 gthread|sigaltstack)
4095 if test "$mingw32" = "yes"; then
4096 error_exit "only the 'windows' coroutine backend is valid for Windows"
4100 error_exit "unknown coroutine backend $coroutine"
4102 esac
4105 if test "$coroutine_pool" = ""; then
4106 if test "$coroutine" = "gthread"; then
4107 coroutine_pool=no
4108 else
4109 coroutine_pool=yes
4112 if test "$coroutine" = "gthread" -a "$coroutine_pool" = "yes"; then
4113 error_exit "'gthread' coroutine backend does not support pool (use --disable-coroutine-pool)"
4116 ##########################################
4117 # check if we have open_by_handle_at
4119 open_by_handle_at=no
4120 cat > $TMPC << EOF
4121 #include <fcntl.h>
4122 #if !defined(AT_EMPTY_PATH)
4123 # error missing definition
4124 #else
4125 int main(void) { struct file_handle fh; return open_by_handle_at(0, &fh, 0); }
4126 #endif
4128 if compile_prog "" "" ; then
4129 open_by_handle_at=yes
4132 ########################################
4133 # check if we have linux/magic.h
4135 linux_magic_h=no
4136 cat > $TMPC << EOF
4137 #include <linux/magic.h>
4138 int main(void) {
4139 return 0;
4142 if compile_prog "" "" ; then
4143 linux_magic_h=yes
4146 ########################################
4147 # check whether we can disable warning option with a pragma (this is needed
4148 # to silence warnings in the headers of some versions of external libraries).
4149 # This test has to be compiled with -Werror as otherwise an unknown pragma is
4150 # only a warning.
4152 # If we can't selectively disable warning in the code, disable -Werror so that
4153 # the build doesn't fail anyway.
4155 pragma_disable_unused_but_set=no
4156 cat > $TMPC << EOF
4157 #pragma GCC diagnostic push
4158 #pragma GCC diagnostic ignored "-Wunused-but-set-variable"
4159 #pragma GCC diagnostic ignored "-Wstrict-prototypes"
4160 #pragma GCC diagnostic pop
4162 int main(void) {
4163 return 0;
4166 if compile_prog "-Werror" "" ; then
4167 pragma_diagnostic_available=yes
4168 else
4169 werror=no
4172 ########################################
4173 # check if we have valgrind/valgrind.h
4175 valgrind_h=no
4176 cat > $TMPC << EOF
4177 #include <valgrind/valgrind.h>
4178 int main(void) {
4179 return 0;
4182 if compile_prog "" "" ; then
4183 valgrind_h=yes
4186 ########################################
4187 # check if environ is declared
4189 has_environ=no
4190 cat > $TMPC << EOF
4191 #include <unistd.h>
4192 int main(void) {
4193 environ = 0;
4194 return 0;
4197 if compile_prog "" "" ; then
4198 has_environ=yes
4201 ########################################
4202 # check if cpuid.h is usable.
4204 cpuid_h=no
4205 cat > $TMPC << EOF
4206 #include <cpuid.h>
4207 int main(void) {
4208 unsigned a, b, c, d;
4209 int max = __get_cpuid_max(0, 0);
4211 if (max >= 1) {
4212 __cpuid(1, a, b, c, d);
4215 if (max >= 7) {
4216 __cpuid_count(7, 0, a, b, c, d);
4219 return 0;
4222 if compile_prog "" "" ; then
4223 cpuid_h=yes
4226 ########################################
4227 # check if __[u]int128_t is usable.
4229 int128=no
4230 cat > $TMPC << EOF
4231 #if defined(__clang_major__) && defined(__clang_minor__)
4232 # if ((__clang_major__ < 3) || (__clang_major__ == 3) && (__clang_minor__ < 2))
4233 # error __int128_t does not work in CLANG before 3.2
4234 # endif
4235 #endif
4236 __int128_t a;
4237 __uint128_t b;
4238 int main (void) {
4239 a = a + b;
4240 b = a * b;
4241 a = a * a;
4242 return 0;
4245 if compile_prog "" "" ; then
4246 int128=yes
4249 ########################################
4250 # check if getauxval is available.
4252 getauxval=no
4253 cat > $TMPC << EOF
4254 #include <sys/auxv.h>
4255 int main(void) {
4256 return getauxval(AT_HWCAP) == 0;
4259 if compile_prog "" "" ; then
4260 getauxval=yes
4263 ########################################
4264 # check if ccache is interfering with
4265 # semantic analysis of macros
4267 ccache_cpp2=no
4268 cat > $TMPC << EOF
4269 static const int Z = 1;
4270 #define fn() ({ Z; })
4271 #define TAUT(X) ((X) == Z)
4272 #define PAREN(X, Y) (X == Y)
4273 #define ID(X) (X)
4274 int main(int argc, char *argv[])
4276 int x = 0, y = 0;
4277 x = ID(x);
4278 x = fn();
4279 fn();
4280 if (PAREN(x, y)) return 0;
4281 if (TAUT(Z)) return 0;
4282 return 0;
4286 if ! compile_object "-Werror"; then
4287 ccache_cpp2=yes
4290 ##########################################
4291 # End of CC checks
4292 # After here, no more $cc or $ld runs
4294 if test "$gcov" = "yes" ; then
4295 CFLAGS="-fprofile-arcs -ftest-coverage -g $CFLAGS"
4296 LDFLAGS="-fprofile-arcs -ftest-coverage $LDFLAGS"
4297 elif test "$debug" = "no" ; then
4298 CFLAGS="-O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 $CFLAGS"
4301 ##########################################
4302 # Do we have libnfs
4303 if test "$libnfs" != "no" ; then
4304 if $pkg_config --atleast-version=1.9.3 libnfs; then
4305 libnfs="yes"
4306 libnfs_libs=$($pkg_config --libs libnfs)
4307 LIBS="$LIBS $libnfs_libs"
4308 else
4309 if test "$libnfs" = "yes" ; then
4310 feature_not_found "libnfs" "Install libnfs devel >= 1.9.3"
4312 libnfs="no"
4316 # Disable zero malloc errors for official releases unless explicitly told to
4317 # enable/disable
4318 if test -z "$zero_malloc" ; then
4319 if test "$z_version" = "50" ; then
4320 zero_malloc="no"
4321 else
4322 zero_malloc="yes"
4326 # Now we've finished running tests it's OK to add -Werror to the compiler flags
4327 if test "$werror" = "yes"; then
4328 QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
4331 if test "$solaris" = "no" ; then
4332 if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
4333 LDFLAGS="-Wl,--warn-common $LDFLAGS"
4337 # test if pod2man has --utf8 option
4338 if pod2man --help | grep -q utf8; then
4339 POD2MAN="pod2man --utf8"
4340 else
4341 POD2MAN="pod2man"
4344 # Use ASLR, no-SEH and DEP if available
4345 if test "$mingw32" = "yes" ; then
4346 for flag in --dynamicbase --no-seh --nxcompat; do
4347 if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
4348 LDFLAGS="-Wl,$flag $LDFLAGS"
4350 done
4353 qemu_confdir=$sysconfdir$confsuffix
4354 qemu_moddir=$libdir$confsuffix
4355 qemu_datadir=$datadir$confsuffix
4356 qemu_localedir="$datadir/locale"
4358 tools=""
4359 if test "$want_tools" = "yes" ; then
4360 tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
4361 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
4362 tools="qemu-nbd\$(EXESUF) $tools"
4365 if test "$softmmu" = yes ; then
4366 if test "$virtfs" != no ; then
4367 if test "$cap" = yes && test "$linux" = yes && test "$attr" = yes ; then
4368 virtfs=yes
4369 tools="$tools fsdev/virtfs-proxy-helper\$(EXESUF)"
4370 else
4371 if test "$virtfs" = yes; then
4372 error_exit "VirtFS is supported only on Linux and requires libcap-devel and libattr-devel"
4374 virtfs=no
4378 if [ "$guest_agent" != "no" ]; then
4379 if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" -o "$mingw32" = "yes" ] ; then
4380 tools="qemu-ga\$(EXESUF) $tools"
4381 if [ "$mingw32" = "yes" -a "$guest_agent_with_vss" = "yes" ]; then
4382 tools="qga/vss-win32/qga-vss.dll qga/vss-win32/qga-vss.tlb $tools"
4384 guest_agent=yes
4385 elif [ "$guest_agent" != yes ]; then
4386 guest_agent=no
4387 else
4388 error_exit "Guest agent is not supported on this platform"
4392 # Mac OS X ships with a broken assembler
4393 roms=
4394 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
4395 "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
4396 "$softmmu" = yes ; then
4397 roms="optionrom"
4399 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
4400 roms="$roms spapr-rtas"
4403 if test "$cpu" = "s390x" ; then
4404 roms="$roms s390-ccw"
4407 # Probe for the need for relocating the user-only binary.
4408 if test "$pie" = "no" ; then
4409 textseg_addr=
4410 case "$cpu" in
4411 arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
4412 # ??? Rationale for choosing this address
4413 textseg_addr=0x60000000
4415 mips)
4416 # A 256M aligned address, high in the address space, with enough
4417 # room for the code_gen_buffer above it before the stack.
4418 textseg_addr=0x60000000
4420 esac
4421 if [ -n "$textseg_addr" ]; then
4422 cat > $TMPC <<EOF
4423 int main(void) { return 0; }
4425 textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
4426 if ! compile_prog "" "$textseg_ldflags"; then
4427 # In case ld does not support -Ttext-segment, edit the default linker
4428 # script via sed to set the .text start addr. This is needed on FreeBSD
4429 # at least.
4430 $ld --verbose | sed \
4431 -e '1,/==================================================/d' \
4432 -e '/==================================================/,$d' \
4433 -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
4434 -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
4435 textseg_ldflags="-Wl,-T../config-host.ld"
4440 # prepend pixman and ftd flags after all config tests are done
4441 QEMU_CFLAGS="$pixman_cflags $fdt_cflags $QEMU_CFLAGS"
4442 libs_softmmu="$pixman_libs $libs_softmmu"
4444 echo "Install prefix $prefix"
4445 echo "BIOS directory `eval echo $qemu_datadir`"
4446 echo "binary directory `eval echo $bindir`"
4447 echo "library directory `eval echo $libdir`"
4448 echo "module directory `eval echo $qemu_moddir`"
4449 echo "libexec directory `eval echo $libexecdir`"
4450 echo "include directory `eval echo $includedir`"
4451 echo "config directory `eval echo $sysconfdir`"
4452 if test "$mingw32" = "no" ; then
4453 echo "local state directory `eval echo $local_statedir`"
4454 echo "Manual directory `eval echo $mandir`"
4455 echo "ELF interp prefix $interp_prefix"
4456 else
4457 echo "local state directory queried at runtime"
4458 echo "Windows SDK $win_sdk"
4460 echo "Source path $source_path"
4461 echo "C compiler $cc"
4462 echo "Host C compiler $host_cc"
4463 echo "C++ compiler $cxx"
4464 echo "Objective-C compiler $objcc"
4465 echo "ARFLAGS $ARFLAGS"
4466 echo "CFLAGS $CFLAGS"
4467 echo "QEMU_CFLAGS $QEMU_CFLAGS"
4468 echo "LDFLAGS $LDFLAGS"
4469 echo "make $make"
4470 echo "install $install"
4471 echo "python $python"
4472 if test "$slirp" = "yes" ; then
4473 echo "smbd $smbd"
4475 echo "module support $modules"
4476 echo "host CPU $cpu"
4477 echo "host big endian $bigendian"
4478 echo "target list $target_list"
4479 echo "tcg debug enabled $debug_tcg"
4480 echo "gprof enabled $gprof"
4481 echo "sparse enabled $sparse"
4482 echo "strip binaries $strip_opt"
4483 echo "profiler $profiler"
4484 echo "static build $static"
4485 if test "$darwin" = "yes" ; then
4486 echo "Cocoa support $cocoa"
4488 echo "pixman $pixman"
4489 echo "SDL support $sdl"
4490 echo "GTK support $gtk"
4491 echo "GNUTLS support $gnutls"
4492 echo "GNUTLS hash $gnutls_hash"
4493 echo "GNUTLS gcrypt $gnutls_gcrypt"
4494 echo "GNUTLS nettle $gnutls_nettle ${gnutls_nettle+($nettle_version)}"
4495 echo "VTE support $vte"
4496 echo "curses support $curses"
4497 echo "curl support $curl"
4498 echo "mingw32 support $mingw32"
4499 echo "Audio drivers $audio_drv_list"
4500 echo "Block whitelist (rw) $block_drv_rw_whitelist"
4501 echo "Block whitelist (ro) $block_drv_ro_whitelist"
4502 echo "VirtFS support $virtfs"
4503 echo "VNC support $vnc"
4504 if test "$vnc" = "yes" ; then
4505 echo "VNC TLS support $vnc_tls"
4506 echo "VNC SASL support $vnc_sasl"
4507 echo "VNC JPEG support $vnc_jpeg"
4508 echo "VNC PNG support $vnc_png"
4510 if test -n "$sparc_cpu"; then
4511 echo "Target Sparc Arch $sparc_cpu"
4513 echo "xen support $xen"
4514 if test "$xen" = "yes" ; then
4515 echo "xen ctrl version $xen_ctrl_version"
4517 echo "brlapi support $brlapi"
4518 echo "bluez support $bluez"
4519 echo "Documentation $docs"
4520 echo "GUEST_BASE $guest_base"
4521 echo "PIE $pie"
4522 echo "vde support $vde"
4523 echo "netmap support $netmap"
4524 echo "Linux AIO support $linux_aio"
4525 echo "ATTR/XATTR support $attr"
4526 echo "Install blobs $blobs"
4527 echo "KVM support $kvm"
4528 echo "RDMA support $rdma"
4529 echo "TCG interpreter $tcg_interpreter"
4530 echo "fdt support $fdt"
4531 echo "preadv support $preadv"
4532 echo "fdatasync $fdatasync"
4533 echo "madvise $madvise"
4534 echo "posix_madvise $posix_madvise"
4535 echo "sigev_thread_id $sigev_thread_id"
4536 echo "uuid support $uuid"
4537 echo "libcap-ng support $cap_ng"
4538 echo "vhost-net support $vhost_net"
4539 echo "vhost-scsi support $vhost_scsi"
4540 echo "Trace backends $trace_backends"
4541 if test "$trace_backend" = "simple"; then
4542 echo "Trace output file $trace_file-<pid>"
4544 if test "$spice" = "yes"; then
4545 echo "spice support $spice ($spice_protocol_version/$spice_server_version)"
4546 else
4547 echo "spice support $spice"
4549 echo "rbd support $rbd"
4550 echo "xfsctl support $xfs"
4551 echo "nss used $smartcard_nss"
4552 echo "libusb $libusb"
4553 echo "usb net redir $usb_redir"
4554 echo "OpenGL support $opengl"
4555 echo "libiscsi support $libiscsi"
4556 echo "libnfs support $libnfs"
4557 echo "build guest agent $guest_agent"
4558 echo "QGA VSS support $guest_agent_with_vss"
4559 echo "QGA w32 disk info $guest_agent_ntddscsi"
4560 echo "seccomp support $seccomp"
4561 echo "coroutine backend $coroutine"
4562 echo "coroutine pool $coroutine_pool"
4563 echo "GlusterFS support $glusterfs"
4564 echo "Archipelago support $archipelago"
4565 echo "gcov $gcov_tool"
4566 echo "gcov enabled $gcov"
4567 echo "TPM support $tpm"
4568 echo "libssh2 support $libssh2"
4569 echo "TPM passthrough $tpm_passthrough"
4570 echo "QOM debugging $qom_cast_debug"
4571 echo "vhdx $vhdx"
4572 echo "lzo support $lzo"
4573 echo "snappy support $snappy"
4574 echo "bzip2 support $bzip2"
4575 echo "NUMA host support $numa"
4576 echo "tcmalloc support $tcmalloc"
4578 if test "$sdl_too_old" = "yes"; then
4579 echo "-> Your SDL version is too old - please upgrade to have SDL support"
4582 config_host_mak="config-host.mak"
4584 echo "# Automatically generated by configure - do not modify" >config-all-disas.mak
4586 echo "# Automatically generated by configure - do not modify" > $config_host_mak
4587 echo >> $config_host_mak
4589 echo all: >> $config_host_mak
4590 echo "prefix=$prefix" >> $config_host_mak
4591 echo "bindir=$bindir" >> $config_host_mak
4592 echo "libdir=$libdir" >> $config_host_mak
4593 echo "libexecdir=$libexecdir" >> $config_host_mak
4594 echo "includedir=$includedir" >> $config_host_mak
4595 echo "mandir=$mandir" >> $config_host_mak
4596 echo "sysconfdir=$sysconfdir" >> $config_host_mak
4597 echo "qemu_confdir=$qemu_confdir" >> $config_host_mak
4598 echo "qemu_datadir=$qemu_datadir" >> $config_host_mak
4599 echo "qemu_docdir=$qemu_docdir" >> $config_host_mak
4600 echo "qemu_moddir=$qemu_moddir" >> $config_host_mak
4601 if test "$mingw32" = "no" ; then
4602 echo "qemu_localstatedir=$local_statedir" >> $config_host_mak
4604 echo "qemu_helperdir=$libexecdir" >> $config_host_mak
4605 echo "extra_cflags=$EXTRA_CFLAGS" >> $config_host_mak
4606 echo "extra_ldflags=$EXTRA_LDFLAGS" >> $config_host_mak
4607 echo "qemu_localedir=$qemu_localedir" >> $config_host_mak
4608 echo "libs_softmmu=$libs_softmmu" >> $config_host_mak
4610 echo "ARCH=$ARCH" >> $config_host_mak
4612 if test "$debug_tcg" = "yes" ; then
4613 echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
4615 if test "$strip_opt" = "yes" ; then
4616 echo "STRIP=${strip}" >> $config_host_mak
4618 if test "$bigendian" = "yes" ; then
4619 echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
4621 if test "$mingw32" = "yes" ; then
4622 echo "CONFIG_WIN32=y" >> $config_host_mak
4623 rc_version=`cat $source_path/VERSION`
4624 version_major=${rc_version%%.*}
4625 rc_version=${rc_version#*.}
4626 version_minor=${rc_version%%.*}
4627 rc_version=${rc_version#*.}
4628 version_subminor=${rc_version%%.*}
4629 version_micro=0
4630 echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4631 echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
4632 if test "$guest_agent_with_vss" = "yes" ; then
4633 echo "CONFIG_QGA_VSS=y" >> $config_host_mak
4634 echo "WIN_SDK=\"$win_sdk\"" >> $config_host_mak
4636 if test "$guest_agent_ntddscsi" = "yes" ; then
4637 echo "CONFIG_QGA_NTDDDISK=y" >> $config_host_mak
4639 if test "$guest_agent_msi" != "no"; then
4640 echo "QEMU_GA_MSI_ENABLED=yes" >> $config_host_mak
4641 echo "QEMU_GA_MSI_MINGW_DLL_PATH=${QEMU_GA_MSI_MINGW_DLL_PATH}" >> $config_host_mak
4642 echo "QEMU_GA_MSI_WITH_VSS=${QEMU_GA_MSI_WITH_VSS}" >> $config_host_mak
4643 echo "QEMU_GA_MSI_ARCH=${QEMU_GA_MSI_ARCH}" >> $config_host_mak
4644 echo "QEMU_GA_MANUFACTURER=${QEMU_GA_MANUFACTURER}" >> $config_host_mak
4645 echo "QEMU_GA_DISTRO=${QEMU_GA_DISTRO}" >> $config_host_mak
4646 echo "QEMU_GA_VERSION=${QEMU_GA_VERSION}" >> $config_host_mak
4648 else
4649 echo "CONFIG_POSIX=y" >> $config_host_mak
4652 if test "$linux" = "yes" ; then
4653 echo "CONFIG_LINUX=y" >> $config_host_mak
4656 if test "$darwin" = "yes" ; then
4657 echo "CONFIG_DARWIN=y" >> $config_host_mak
4660 if test "$aix" = "yes" ; then
4661 echo "CONFIG_AIX=y" >> $config_host_mak
4664 if test "$solaris" = "yes" ; then
4665 echo "CONFIG_SOLARIS=y" >> $config_host_mak
4666 echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
4667 if test "$needs_libsunmath" = "yes" ; then
4668 echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
4671 if test "$haiku" = "yes" ; then
4672 echo "CONFIG_HAIKU=y" >> $config_host_mak
4674 if test "$static" = "yes" ; then
4675 echo "CONFIG_STATIC=y" >> $config_host_mak
4677 if test "$profiler" = "yes" ; then
4678 echo "CONFIG_PROFILER=y" >> $config_host_mak
4680 if test "$slirp" = "yes" ; then
4681 echo "CONFIG_SLIRP=y" >> $config_host_mak
4682 echo "CONFIG_SMBD_COMMAND=\"$smbd\"" >> $config_host_mak
4684 if test "$vde" = "yes" ; then
4685 echo "CONFIG_VDE=y" >> $config_host_mak
4687 if test "$netmap" = "yes" ; then
4688 echo "CONFIG_NETMAP=y" >> $config_host_mak
4690 if test "$l2tpv3" = "yes" ; then
4691 echo "CONFIG_L2TPV3=y" >> $config_host_mak
4693 if test "$cap_ng" = "yes" ; then
4694 echo "CONFIG_LIBCAP=y" >> $config_host_mak
4696 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
4697 for drv in $audio_drv_list; do
4698 def=CONFIG_`echo $drv | LC_ALL=C tr '[a-z]' '[A-Z]'`
4699 echo "$def=y" >> $config_host_mak
4700 done
4701 if test "$audio_pt_int" = "yes" ; then
4702 echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
4704 if test "$audio_win_int" = "yes" ; then
4705 echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
4707 echo "CONFIG_BDRV_RW_WHITELIST=$block_drv_rw_whitelist" >> $config_host_mak
4708 echo "CONFIG_BDRV_RO_WHITELIST=$block_drv_ro_whitelist" >> $config_host_mak
4709 if test "$vnc" = "yes" ; then
4710 echo "CONFIG_VNC=y" >> $config_host_mak
4712 if test "$vnc_tls" = "yes" ; then
4713 echo "CONFIG_VNC_TLS=y" >> $config_host_mak
4715 if test "$vnc_sasl" = "yes" ; then
4716 echo "CONFIG_VNC_SASL=y" >> $config_host_mak
4718 if test "$vnc_jpeg" = "yes" ; then
4719 echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
4721 if test "$vnc_png" = "yes" ; then
4722 echo "CONFIG_VNC_PNG=y" >> $config_host_mak
4724 if test "$fnmatch" = "yes" ; then
4725 echo "CONFIG_FNMATCH=y" >> $config_host_mak
4727 if test "$uuid" = "yes" ; then
4728 echo "CONFIG_UUID=y" >> $config_host_mak
4730 if test "$xfs" = "yes" ; then
4731 echo "CONFIG_XFS=y" >> $config_host_mak
4733 qemu_version=`head $source_path/VERSION`
4734 echo "VERSION=$qemu_version" >>$config_host_mak
4735 echo "PKGVERSION=$pkgversion" >>$config_host_mak
4736 echo "SRC_PATH=$source_path" >> $config_host_mak
4737 echo "TARGET_DIRS=$target_list" >> $config_host_mak
4738 if [ "$docs" = "yes" ] ; then
4739 echo "BUILD_DOCS=yes" >> $config_host_mak
4741 if test "$modules" = "yes"; then
4742 # $shacmd can generate a hash started with digit, which the compiler doesn't
4743 # like as an symbol. So prefix it with an underscore
4744 echo "CONFIG_STAMP=_`(echo $qemu_version; echo $pkgversion; cat $0) | $shacmd - | cut -f1 -d\ `" >> $config_host_mak
4745 echo "CONFIG_MODULES=y" >> $config_host_mak
4747 if test "$sdl" = "yes" ; then
4748 echo "CONFIG_SDL=y" >> $config_host_mak
4749 echo "CONFIG_SDLABI=$sdlabi" >> $config_host_mak
4750 echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
4752 if test "$cocoa" = "yes" ; then
4753 echo "CONFIG_COCOA=y" >> $config_host_mak
4755 if test "$curses" = "yes" ; then
4756 echo "CONFIG_CURSES=y" >> $config_host_mak
4758 if test "$utimens" = "yes" ; then
4759 echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
4761 if test "$pipe2" = "yes" ; then
4762 echo "CONFIG_PIPE2=y" >> $config_host_mak
4764 if test "$accept4" = "yes" ; then
4765 echo "CONFIG_ACCEPT4=y" >> $config_host_mak
4767 if test "$splice" = "yes" ; then
4768 echo "CONFIG_SPLICE=y" >> $config_host_mak
4770 if test "$eventfd" = "yes" ; then
4771 echo "CONFIG_EVENTFD=y" >> $config_host_mak
4773 if test "$fallocate" = "yes" ; then
4774 echo "CONFIG_FALLOCATE=y" >> $config_host_mak
4776 if test "$fallocate_punch_hole" = "yes" ; then
4777 echo "CONFIG_FALLOCATE_PUNCH_HOLE=y" >> $config_host_mak
4779 if test "$fallocate_zero_range" = "yes" ; then
4780 echo "CONFIG_FALLOCATE_ZERO_RANGE=y" >> $config_host_mak
4782 if test "$posix_fallocate" = "yes" ; then
4783 echo "CONFIG_POSIX_FALLOCATE=y" >> $config_host_mak
4785 if test "$sync_file_range" = "yes" ; then
4786 echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
4788 if test "$fiemap" = "yes" ; then
4789 echo "CONFIG_FIEMAP=y" >> $config_host_mak
4791 if test "$dup3" = "yes" ; then
4792 echo "CONFIG_DUP3=y" >> $config_host_mak
4794 if test "$ppoll" = "yes" ; then
4795 echo "CONFIG_PPOLL=y" >> $config_host_mak
4797 if test "$prctl_pr_set_timerslack" = "yes" ; then
4798 echo "CONFIG_PRCTL_PR_SET_TIMERSLACK=y" >> $config_host_mak
4800 if test "$epoll" = "yes" ; then
4801 echo "CONFIG_EPOLL=y" >> $config_host_mak
4803 if test "$epoll_create1" = "yes" ; then
4804 echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
4806 if test "$epoll_pwait" = "yes" ; then
4807 echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
4809 if test "$sendfile" = "yes" ; then
4810 echo "CONFIG_SENDFILE=y" >> $config_host_mak
4812 if test "$timerfd" = "yes" ; then
4813 echo "CONFIG_TIMERFD=y" >> $config_host_mak
4815 if test "$setns" = "yes" ; then
4816 echo "CONFIG_SETNS=y" >> $config_host_mak
4818 if test "$inotify" = "yes" ; then
4819 echo "CONFIG_INOTIFY=y" >> $config_host_mak
4821 if test "$inotify1" = "yes" ; then
4822 echo "CONFIG_INOTIFY1=y" >> $config_host_mak
4824 if test "$byteswap_h" = "yes" ; then
4825 echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
4827 if test "$bswap_h" = "yes" ; then
4828 echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
4830 if test "$curl" = "yes" ; then
4831 echo "CONFIG_CURL=m" >> $config_host_mak
4832 echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
4833 echo "CURL_LIBS=$curl_libs" >> $config_host_mak
4835 if test "$brlapi" = "yes" ; then
4836 echo "CONFIG_BRLAPI=y" >> $config_host_mak
4838 if test "$bluez" = "yes" ; then
4839 echo "CONFIG_BLUEZ=y" >> $config_host_mak
4840 echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
4842 if test "$glib_subprocess" = "yes" ; then
4843 echo "CONFIG_HAS_GLIB_SUBPROCESS_TESTS=y" >> $config_host_mak
4845 echo "GLIB_CFLAGS=$glib_cflags" >> $config_host_mak
4846 if test "$gtk" = "yes" ; then
4847 echo "CONFIG_GTK=y" >> $config_host_mak
4848 echo "CONFIG_GTKABI=$gtkabi" >> $config_host_mak
4849 echo "GTK_CFLAGS=$gtk_cflags" >> $config_host_mak
4851 if test "$gnutls" = "yes" ; then
4852 echo "CONFIG_GNUTLS=y" >> $config_host_mak
4854 if test "$gnutls_hash" = "yes" ; then
4855 echo "CONFIG_GNUTLS_HASH=y" >> $config_host_mak
4857 if test "$gnutls_gcrypt" = "yes" ; then
4858 echo "CONFIG_GNUTLS_GCRYPT=y" >> $config_host_mak
4860 if test "$gnutls_nettle" = "yes" ; then
4861 echo "CONFIG_GNUTLS_NETTLE=y" >> $config_host_mak
4862 echo "CONFIG_NETTLE_VERSION_MAJOR=${nettle_version%%.*}" >> $config_host_mak
4864 if test "$vte" = "yes" ; then
4865 echo "CONFIG_VTE=y" >> $config_host_mak
4866 echo "VTE_CFLAGS=$vte_cflags" >> $config_host_mak
4868 if test "$xen" = "yes" ; then
4869 echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
4870 echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
4872 if test "$linux_aio" = "yes" ; then
4873 echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
4875 if test "$attr" = "yes" ; then
4876 echo "CONFIG_ATTR=y" >> $config_host_mak
4878 if test "$libattr" = "yes" ; then
4879 echo "CONFIG_LIBATTR=y" >> $config_host_mak
4881 if test "$virtfs" = "yes" ; then
4882 echo "CONFIG_VIRTFS=y" >> $config_host_mak
4884 if test "$vhost_scsi" = "yes" ; then
4885 echo "CONFIG_VHOST_SCSI=y" >> $config_host_mak
4887 if test "$vhost_net" = "yes" ; then
4888 echo "CONFIG_VHOST_NET_USED=y" >> $config_host_mak
4890 if test "$blobs" = "yes" ; then
4891 echo "INSTALL_BLOBS=yes" >> $config_host_mak
4893 if test "$iovec" = "yes" ; then
4894 echo "CONFIG_IOVEC=y" >> $config_host_mak
4896 if test "$preadv" = "yes" ; then
4897 echo "CONFIG_PREADV=y" >> $config_host_mak
4899 if test "$fdt" = "yes" ; then
4900 echo "CONFIG_FDT=y" >> $config_host_mak
4902 if test "$signalfd" = "yes" ; then
4903 echo "CONFIG_SIGNALFD=y" >> $config_host_mak
4905 if test "$tcg_interpreter" = "yes" ; then
4906 echo "CONFIG_TCG_INTERPRETER=y" >> $config_host_mak
4908 if test "$fdatasync" = "yes" ; then
4909 echo "CONFIG_FDATASYNC=y" >> $config_host_mak
4911 if test "$madvise" = "yes" ; then
4912 echo "CONFIG_MADVISE=y" >> $config_host_mak
4914 if test "$posix_madvise" = "yes" ; then
4915 echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
4917 if test "$sigev_thread_id" = "yes" ; then
4918 echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak
4921 if test "$spice" = "yes" ; then
4922 echo "CONFIG_SPICE=y" >> $config_host_mak
4925 if test "$smartcard_nss" = "yes" ; then
4926 echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
4927 echo "NSS_LIBS=$nss_libs" >> $config_host_mak
4928 echo "NSS_CFLAGS=$nss_cflags" >> $config_host_mak
4931 if test "$libusb" = "yes" ; then
4932 echo "CONFIG_USB_LIBUSB=y" >> $config_host_mak
4935 if test "$usb_redir" = "yes" ; then
4936 echo "CONFIG_USB_REDIR=y" >> $config_host_mak
4939 if test "$opengl" = "yes" ; then
4940 echo "CONFIG_OPENGL=y" >> $config_host_mak
4941 echo "OPENGL_CFLAGS=$opengl_cflags" >> $config_host_mak
4942 echo "OPENGL_LIBS=$opengl_libs" >> $config_host_mak
4945 if test "$lzo" = "yes" ; then
4946 echo "CONFIG_LZO=y" >> $config_host_mak
4949 if test "$snappy" = "yes" ; then
4950 echo "CONFIG_SNAPPY=y" >> $config_host_mak
4953 if test "$bzip2" = "yes" ; then
4954 echo "CONFIG_BZIP2=y" >> $config_host_mak
4955 echo "BZIP2_LIBS=-lbz2" >> $config_host_mak
4958 if test "$libiscsi" = "yes" ; then
4959 echo "CONFIG_LIBISCSI=m" >> $config_host_mak
4960 echo "LIBISCSI_CFLAGS=$libiscsi_cflags" >> $config_host_mak
4961 echo "LIBISCSI_LIBS=$libiscsi_libs" >> $config_host_mak
4964 if test "$libnfs" = "yes" ; then
4965 echo "CONFIG_LIBNFS=y" >> $config_host_mak
4968 if test "$seccomp" = "yes"; then
4969 echo "CONFIG_SECCOMP=y" >> $config_host_mak
4972 # XXX: suppress that
4973 if [ "$bsd" = "yes" ] ; then
4974 echo "CONFIG_BSD=y" >> $config_host_mak
4977 if test "$zero_malloc" = "yes" ; then
4978 echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
4980 if test "$qom_cast_debug" = "yes" ; then
4981 echo "CONFIG_QOM_CAST_DEBUG=y" >> $config_host_mak
4983 if test "$rbd" = "yes" ; then
4984 echo "CONFIG_RBD=m" >> $config_host_mak
4985 echo "RBD_CFLAGS=$rbd_cflags" >> $config_host_mak
4986 echo "RBD_LIBS=$rbd_libs" >> $config_host_mak
4989 echo "CONFIG_COROUTINE_BACKEND=$coroutine" >> $config_host_mak
4990 if test "$coroutine_pool" = "yes" ; then
4991 echo "CONFIG_COROUTINE_POOL=1" >> $config_host_mak
4992 else
4993 echo "CONFIG_COROUTINE_POOL=0" >> $config_host_mak
4996 if test "$open_by_handle_at" = "yes" ; then
4997 echo "CONFIG_OPEN_BY_HANDLE=y" >> $config_host_mak
5000 if test "$linux_magic_h" = "yes" ; then
5001 echo "CONFIG_LINUX_MAGIC_H=y" >> $config_host_mak
5004 if test "$pragma_diagnostic_available" = "yes" ; then
5005 echo "CONFIG_PRAGMA_DIAGNOSTIC_AVAILABLE=y" >> $config_host_mak
5008 if test "$valgrind_h" = "yes" ; then
5009 echo "CONFIG_VALGRIND_H=y" >> $config_host_mak
5012 if test "$has_environ" = "yes" ; then
5013 echo "CONFIG_HAS_ENVIRON=y" >> $config_host_mak
5016 if test "$cpuid_h" = "yes" ; then
5017 echo "CONFIG_CPUID_H=y" >> $config_host_mak
5020 if test "$int128" = "yes" ; then
5021 echo "CONFIG_INT128=y" >> $config_host_mak
5024 if test "$getauxval" = "yes" ; then
5025 echo "CONFIG_GETAUXVAL=y" >> $config_host_mak
5028 if test "$glusterfs" = "yes" ; then
5029 echo "CONFIG_GLUSTERFS=m" >> $config_host_mak
5030 echo "GLUSTERFS_CFLAGS=$glusterfs_cflags" >> $config_host_mak
5031 echo "GLUSTERFS_LIBS=$glusterfs_libs" >> $config_host_mak
5034 if test "$glusterfs_discard" = "yes" ; then
5035 echo "CONFIG_GLUSTERFS_DISCARD=y" >> $config_host_mak
5038 if test "$glusterfs_zerofill" = "yes" ; then
5039 echo "CONFIG_GLUSTERFS_ZEROFILL=y" >> $config_host_mak
5042 if test "$archipelago" = "yes" ; then
5043 echo "CONFIG_ARCHIPELAGO=m" >> $config_host_mak
5044 echo "ARCHIPELAGO_LIBS=$archipelago_libs" >> $config_host_mak
5047 if test "$libssh2" = "yes" ; then
5048 echo "CONFIG_LIBSSH2=m" >> $config_host_mak
5049 echo "LIBSSH2_CFLAGS=$libssh2_cflags" >> $config_host_mak
5050 echo "LIBSSH2_LIBS=$libssh2_libs" >> $config_host_mak
5053 if test "$vhdx" = "yes" ; then
5054 echo "CONFIG_VHDX=y" >> $config_host_mak
5057 # USB host support
5058 if test "$libusb" = "yes"; then
5059 echo "HOST_USB=libusb legacy" >> $config_host_mak
5060 else
5061 echo "HOST_USB=stub" >> $config_host_mak
5064 # TPM passthrough support?
5065 if test "$tpm" = "yes"; then
5066 echo 'CONFIG_TPM=$(CONFIG_SOFTMMU)' >> $config_host_mak
5067 if test "$tpm_passthrough" = "yes"; then
5068 echo "CONFIG_TPM_PASSTHROUGH=y" >> $config_host_mak
5072 echo "TRACE_BACKENDS=$trace_backends" >> $config_host_mak
5073 if have_backend "nop"; then
5074 echo "CONFIG_TRACE_NOP=y" >> $config_host_mak
5076 if have_backend "simple"; then
5077 echo "CONFIG_TRACE_SIMPLE=y" >> $config_host_mak
5078 # Set the appropriate trace file.
5079 trace_file="\"$trace_file-\" FMT_pid"
5081 if have_backend "stderr"; then
5082 echo "CONFIG_TRACE_STDERR=y" >> $config_host_mak
5084 if have_backend "ust"; then
5085 echo "CONFIG_TRACE_UST=y" >> $config_host_mak
5087 if have_backend "dtrace"; then
5088 echo "CONFIG_TRACE_DTRACE=y" >> $config_host_mak
5089 if test "$trace_backend_stap" = "yes" ; then
5090 echo "CONFIG_TRACE_SYSTEMTAP=y" >> $config_host_mak
5093 if have_backend "ftrace"; then
5094 if test "$linux" = "yes" ; then
5095 echo "CONFIG_TRACE_FTRACE=y" >> $config_host_mak
5096 else
5097 feature_not_found "ftrace(trace backend)" "ftrace requires Linux"
5100 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
5102 if test "$rdma" = "yes" ; then
5103 echo "CONFIG_RDMA=y" >> $config_host_mak
5106 # Hold two types of flag:
5107 # CONFIG_THREAD_SETNAME_BYTHREAD - we've got a way of setting the name on
5108 # a thread we have a handle to
5109 # CONFIG_PTHREAD_SETNAME_NP - A way of doing it on a particular
5110 # platform
5111 if test "$pthread_setname_np" = "yes" ; then
5112 echo "CONFIG_THREAD_SETNAME_BYTHREAD=y" >> $config_host_mak
5113 echo "CONFIG_PTHREAD_SETNAME_NP=y" >> $config_host_mak
5116 if test "$tcg_interpreter" = "yes"; then
5117 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/tci $QEMU_INCLUDES"
5118 elif test "$ARCH" = "sparc64" ; then
5119 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/sparc $QEMU_INCLUDES"
5120 elif test "$ARCH" = "s390x" ; then
5121 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/s390 $QEMU_INCLUDES"
5122 elif test "$ARCH" = "x86_64" -o "$ARCH" = "x32" ; then
5123 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/i386 $QEMU_INCLUDES"
5124 elif test "$ARCH" = "ppc64" ; then
5125 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/ppc $QEMU_INCLUDES"
5126 else
5127 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg/\$(ARCH) $QEMU_INCLUDES"
5129 QEMU_INCLUDES="-I\$(SRC_PATH)/tcg $QEMU_INCLUDES"
5131 echo "TOOLS=$tools" >> $config_host_mak
5132 echo "ROMS=$roms" >> $config_host_mak
5133 echo "MAKE=$make" >> $config_host_mak
5134 echo "INSTALL=$install" >> $config_host_mak
5135 echo "INSTALL_DIR=$install -d -m 0755" >> $config_host_mak
5136 echo "INSTALL_DATA=$install -c -m 0644" >> $config_host_mak
5137 if test -n "$libtool"; then
5138 echo "INSTALL_PROG=\$(LIBTOOL) --mode=install $install -c -m 0755" >> $config_host_mak
5139 echo "INSTALL_LIB=\$(LIBTOOL) --mode=install $install -c -m 0644" >> $config_host_mak
5140 else
5141 echo "INSTALL_PROG=$install -c -m 0755" >> $config_host_mak
5142 echo "INSTALL_LIB=$install -c -m 0644" >> $config_host_mak
5144 echo "PYTHON=$python" >> $config_host_mak
5145 echo "CC=$cc" >> $config_host_mak
5146 if $iasl -h > /dev/null 2>&1; then
5147 echo "IASL=$iasl" >> $config_host_mak
5149 echo "CC_I386=$cc_i386" >> $config_host_mak
5150 echo "HOST_CC=$host_cc" >> $config_host_mak
5151 echo "CXX=$cxx" >> $config_host_mak
5152 echo "OBJCC=$objcc" >> $config_host_mak
5153 echo "AR=$ar" >> $config_host_mak
5154 echo "ARFLAGS=$ARFLAGS" >> $config_host_mak
5155 echo "AS=$as" >> $config_host_mak
5156 echo "CPP=$cpp" >> $config_host_mak
5157 echo "OBJCOPY=$objcopy" >> $config_host_mak
5158 echo "LD=$ld" >> $config_host_mak
5159 echo "NM=$nm" >> $config_host_mak
5160 echo "WINDRES=$windres" >> $config_host_mak
5161 echo "LIBTOOL=$libtool" >> $config_host_mak
5162 echo "CFLAGS=$CFLAGS" >> $config_host_mak
5163 echo "CFLAGS_NOPIE=$CFLAGS_NOPIE" >> $config_host_mak
5164 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
5165 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
5166 if test "$sparse" = "yes" ; then
5167 echo "CC := REAL_CC=\"\$(CC)\" cgcc" >> $config_host_mak
5168 echo "CPP := REAL_CC=\"\$(CPP)\" cgcc" >> $config_host_mak
5169 echo "CXX := REAL_CC=\"\$(CXX)\" cgcc" >> $config_host_mak
5170 echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc" >> $config_host_mak
5171 echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
5173 if test "$cross_prefix" != ""; then
5174 echo "AUTOCONF_HOST := --host=${cross_prefix%-}" >> $config_host_mak
5175 else
5176 echo "AUTOCONF_HOST := " >> $config_host_mak
5178 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
5179 echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
5180 echo "LIBTOOLFLAGS=$LIBTOOLFLAGS" >> $config_host_mak
5181 echo "LIBS+=$LIBS" >> $config_host_mak
5182 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
5183 echo "EXESUF=$EXESUF" >> $config_host_mak
5184 echo "DSOSUF=$DSOSUF" >> $config_host_mak
5185 echo "LDFLAGS_SHARED=$LDFLAGS_SHARED" >> $config_host_mak
5186 echo "LIBS_QGA+=$libs_qga" >> $config_host_mak
5187 echo "POD2MAN=$POD2MAN" >> $config_host_mak
5188 echo "TRANSLATE_OPT_CFLAGS=$TRANSLATE_OPT_CFLAGS" >> $config_host_mak
5189 if test "$gcov" = "yes" ; then
5190 echo "CONFIG_GCOV=y" >> $config_host_mak
5191 echo "GCOV=$gcov_tool" >> $config_host_mak
5194 # use included Linux headers
5195 if test "$linux" = "yes" ; then
5196 mkdir -p linux-headers
5197 case "$cpu" in
5198 i386|x86_64|x32)
5199 linux_arch=x86
5201 ppcemb|ppc|ppc64)
5202 linux_arch=powerpc
5204 s390x)
5205 linux_arch=s390
5207 aarch64)
5208 linux_arch=arm64
5210 mips64)
5211 linux_arch=mips
5214 # For most CPUs the kernel architecture name and QEMU CPU name match.
5215 linux_arch="$cpu"
5217 esac
5218 # For non-KVM architectures we will not have asm headers
5219 if [ -e "$source_path/linux-headers/asm-$linux_arch" ]; then
5220 symlink "$source_path/linux-headers/asm-$linux_arch" linux-headers/asm
5224 for target in $target_list; do
5225 target_dir="$target"
5226 config_target_mak=$target_dir/config-target.mak
5227 target_name=`echo $target | cut -d '-' -f 1`
5228 target_bigendian="no"
5230 case "$target_name" in
5231 armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|moxie|or32|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus|xtensaeb)
5232 target_bigendian=yes
5234 esac
5235 target_softmmu="no"
5236 target_user_only="no"
5237 target_linux_user="no"
5238 target_bsd_user="no"
5239 case "$target" in
5240 ${target_name}-softmmu)
5241 target_softmmu="yes"
5243 ${target_name}-linux-user)
5244 if test "$linux" != "yes" ; then
5245 error_exit "Target '$target' is only available on a Linux host"
5247 target_user_only="yes"
5248 target_linux_user="yes"
5250 ${target_name}-bsd-user)
5251 if test "$bsd" != "yes" ; then
5252 error_exit "Target '$target' is only available on a BSD host"
5254 target_user_only="yes"
5255 target_bsd_user="yes"
5258 error_exit "Target '$target' not recognised"
5259 exit 1
5261 esac
5263 mkdir -p $target_dir
5264 echo "# Automatically generated by configure - do not modify" > $config_target_mak
5266 bflt="no"
5267 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_name/g"`
5268 gdb_xml_files=""
5270 TARGET_ARCH="$target_name"
5271 TARGET_BASE_ARCH=""
5272 TARGET_ABI_DIR=""
5274 case "$target_name" in
5275 i386)
5277 x86_64)
5278 TARGET_BASE_ARCH=i386
5280 alpha)
5282 arm|armeb)
5283 TARGET_ARCH=arm
5284 bflt="yes"
5285 gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5287 aarch64)
5288 TARGET_BASE_ARCH=arm
5289 bflt="yes"
5290 gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
5292 cris)
5294 lm32)
5296 m68k)
5297 bflt="yes"
5298 gdb_xml_files="cf-core.xml cf-fp.xml"
5300 microblaze|microblazeel)
5301 TARGET_ARCH=microblaze
5302 bflt="yes"
5304 mips|mipsel)
5305 TARGET_ARCH=mips
5306 echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
5308 mipsn32|mipsn32el)
5309 TARGET_ARCH=mips64
5310 TARGET_BASE_ARCH=mips
5311 echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
5312 echo "TARGET_ABI32=y" >> $config_target_mak
5314 mips64|mips64el)
5315 TARGET_ARCH=mips64
5316 TARGET_BASE_ARCH=mips
5317 echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
5319 moxie)
5321 or32)
5322 TARGET_ARCH=openrisc
5323 TARGET_BASE_ARCH=openrisc
5325 ppc)
5326 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5328 ppcemb)
5329 TARGET_BASE_ARCH=ppc
5330 TARGET_ABI_DIR=ppc
5331 gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5333 ppc64)
5334 TARGET_BASE_ARCH=ppc
5335 TARGET_ABI_DIR=ppc
5336 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5338 ppc64le)
5339 TARGET_ARCH=ppc64
5340 TARGET_BASE_ARCH=ppc
5341 TARGET_ABI_DIR=ppc
5342 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5344 ppc64abi32)
5345 TARGET_ARCH=ppc64
5346 TARGET_BASE_ARCH=ppc
5347 TARGET_ABI_DIR=ppc
5348 echo "TARGET_ABI32=y" >> $config_target_mak
5349 gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
5351 sh4|sh4eb)
5352 TARGET_ARCH=sh4
5353 bflt="yes"
5355 sparc)
5357 sparc64)
5358 TARGET_BASE_ARCH=sparc
5360 sparc32plus)
5361 TARGET_ARCH=sparc64
5362 TARGET_BASE_ARCH=sparc
5363 TARGET_ABI_DIR=sparc
5364 echo "TARGET_ABI32=y" >> $config_target_mak
5366 s390x)
5367 gdb_xml_files="s390x-core64.xml s390-acr.xml s390-fpr.xml s390-vx.xml"
5369 tricore)
5371 unicore32)
5373 xtensa|xtensaeb)
5374 TARGET_ARCH=xtensa
5377 error_exit "Unsupported target CPU"
5379 esac
5380 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
5381 if [ "$TARGET_BASE_ARCH" = "" ]; then
5382 TARGET_BASE_ARCH=$TARGET_ARCH
5385 symlink "$source_path/Makefile.target" "$target_dir/Makefile"
5387 upper() {
5388 echo "$@"| LC_ALL=C tr '[a-z]' '[A-Z]'
5391 target_arch_name="`upper $TARGET_ARCH`"
5392 echo "TARGET_$target_arch_name=y" >> $config_target_mak
5393 echo "TARGET_NAME=$target_name" >> $config_target_mak
5394 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
5395 if [ "$TARGET_ABI_DIR" = "" ]; then
5396 TARGET_ABI_DIR=$TARGET_ARCH
5398 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
5399 if [ "$HOST_VARIANT_DIR" != "" ]; then
5400 echo "HOST_VARIANT_DIR=$HOST_VARIANT_DIR" >> $config_target_mak
5402 case "$target_name" in
5403 i386|x86_64)
5404 if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
5405 echo "CONFIG_XEN=y" >> $config_target_mak
5406 if test "$xen_pci_passthrough" = yes; then
5407 echo "CONFIG_XEN_PCI_PASSTHROUGH=y" >> "$config_target_mak"
5412 esac
5413 case "$target_name" in
5414 aarch64|arm|i386|x86_64|ppcemb|ppc|ppc64|s390x|mipsel|mips)
5415 # Make sure the target and host cpus are compatible
5416 if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
5417 \( "$target_name" = "$cpu" -o \
5418 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc" \) -o \
5419 \( "$target_name" = "ppc64" -a "$cpu" = "ppc" \) -o \
5420 \( "$target_name" = "ppc" -a "$cpu" = "ppc64" \) -o \
5421 \( "$target_name" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
5422 \( "$target_name" = "mipsel" -a "$cpu" = "mips" \) -o \
5423 \( "$target_name" = "x86_64" -a "$cpu" = "i386" \) -o \
5424 \( "$target_name" = "i386" -a "$cpu" = "x86_64" \) -o \
5425 \( "$target_name" = "x86_64" -a "$cpu" = "x32" \) -o \
5426 \( "$target_name" = "i386" -a "$cpu" = "x32" \) \) ; then
5427 echo "CONFIG_KVM=y" >> $config_target_mak
5428 if test "$vhost_net" = "yes" ; then
5429 echo "CONFIG_VHOST_NET=y" >> $config_target_mak
5432 esac
5433 if test "$target_bigendian" = "yes" ; then
5434 echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
5436 if test "$target_softmmu" = "yes" ; then
5437 echo "CONFIG_SOFTMMU=y" >> $config_target_mak
5439 if test "$target_user_only" = "yes" ; then
5440 echo "CONFIG_USER_ONLY=y" >> $config_target_mak
5441 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
5443 if test "$target_linux_user" = "yes" ; then
5444 echo "CONFIG_LINUX_USER=y" >> $config_target_mak
5446 list=""
5447 if test ! -z "$gdb_xml_files" ; then
5448 for x in $gdb_xml_files; do
5449 list="$list $source_path/gdb-xml/$x"
5450 done
5451 echo "TARGET_XML_FILES=$list" >> $config_target_mak
5454 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
5455 echo "TARGET_HAS_BFLT=y" >> $config_target_mak
5457 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
5458 echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
5460 if test "$target_bsd_user" = "yes" ; then
5461 echo "CONFIG_BSD_USER=y" >> $config_target_mak
5464 # generate QEMU_CFLAGS/LDFLAGS for targets
5466 cflags=""
5467 ldflags=""
5469 for i in $ARCH $TARGET_BASE_ARCH ; do
5470 case "$i" in
5471 alpha)
5472 echo "CONFIG_ALPHA_DIS=y" >> $config_target_mak
5473 echo "CONFIG_ALPHA_DIS=y" >> config-all-disas.mak
5475 aarch64)
5476 if test -n "${cxx}"; then
5477 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5478 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5481 arm)
5482 echo "CONFIG_ARM_DIS=y" >> $config_target_mak
5483 echo "CONFIG_ARM_DIS=y" >> config-all-disas.mak
5484 if test -n "${cxx}"; then
5485 echo "CONFIG_ARM_A64_DIS=y" >> $config_target_mak
5486 echo "CONFIG_ARM_A64_DIS=y" >> config-all-disas.mak
5489 cris)
5490 echo "CONFIG_CRIS_DIS=y" >> $config_target_mak
5491 echo "CONFIG_CRIS_DIS=y" >> config-all-disas.mak
5493 hppa)
5494 echo "CONFIG_HPPA_DIS=y" >> $config_target_mak
5495 echo "CONFIG_HPPA_DIS=y" >> config-all-disas.mak
5497 i386|x86_64|x32)
5498 echo "CONFIG_I386_DIS=y" >> $config_target_mak
5499 echo "CONFIG_I386_DIS=y" >> config-all-disas.mak
5501 ia64*)
5502 echo "CONFIG_IA64_DIS=y" >> $config_target_mak
5503 echo "CONFIG_IA64_DIS=y" >> config-all-disas.mak
5505 lm32)
5506 echo "CONFIG_LM32_DIS=y" >> $config_target_mak
5507 echo "CONFIG_LM32_DIS=y" >> config-all-disas.mak
5509 m68k)
5510 echo "CONFIG_M68K_DIS=y" >> $config_target_mak
5511 echo "CONFIG_M68K_DIS=y" >> config-all-disas.mak
5513 microblaze*)
5514 echo "CONFIG_MICROBLAZE_DIS=y" >> $config_target_mak
5515 echo "CONFIG_MICROBLAZE_DIS=y" >> config-all-disas.mak
5517 mips*)
5518 echo "CONFIG_MIPS_DIS=y" >> $config_target_mak
5519 echo "CONFIG_MIPS_DIS=y" >> config-all-disas.mak
5521 moxie*)
5522 echo "CONFIG_MOXIE_DIS=y" >> $config_target_mak
5523 echo "CONFIG_MOXIE_DIS=y" >> config-all-disas.mak
5525 or32)
5526 echo "CONFIG_OPENRISC_DIS=y" >> $config_target_mak
5527 echo "CONFIG_OPENRISC_DIS=y" >> config-all-disas.mak
5529 ppc*)
5530 echo "CONFIG_PPC_DIS=y" >> $config_target_mak
5531 echo "CONFIG_PPC_DIS=y" >> config-all-disas.mak
5533 s390*)
5534 echo "CONFIG_S390_DIS=y" >> $config_target_mak
5535 echo "CONFIG_S390_DIS=y" >> config-all-disas.mak
5537 sh4)
5538 echo "CONFIG_SH4_DIS=y" >> $config_target_mak
5539 echo "CONFIG_SH4_DIS=y" >> config-all-disas.mak
5541 sparc*)
5542 echo "CONFIG_SPARC_DIS=y" >> $config_target_mak
5543 echo "CONFIG_SPARC_DIS=y" >> config-all-disas.mak
5545 xtensa*)
5546 echo "CONFIG_XTENSA_DIS=y" >> $config_target_mak
5547 echo "CONFIG_XTENSA_DIS=y" >> config-all-disas.mak
5549 esac
5550 done
5551 if test "$tcg_interpreter" = "yes" ; then
5552 echo "CONFIG_TCI_DIS=y" >> $config_target_mak
5553 echo "CONFIG_TCI_DIS=y" >> config-all-disas.mak
5556 case "$ARCH" in
5557 alpha)
5558 # Ensure there's only a single GP
5559 cflags="-msmall-data $cflags"
5561 esac
5563 if test "$gprof" = "yes" ; then
5564 echo "TARGET_GPROF=yes" >> $config_target_mak
5565 if test "$target_linux_user" = "yes" ; then
5566 cflags="-p $cflags"
5567 ldflags="-p $ldflags"
5569 if test "$target_softmmu" = "yes" ; then
5570 ldflags="-p $ldflags"
5571 echo "GPROF_CFLAGS=-p" >> $config_target_mak
5575 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
5576 ldflags="$ldflags $textseg_ldflags"
5579 echo "LDFLAGS+=$ldflags" >> $config_target_mak
5580 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
5582 done # for target in $targets
5584 if [ "$pixman" = "internal" ]; then
5585 echo "config-host.h: subdir-pixman" >> $config_host_mak
5588 if test "$rdma" = "yes" ; then
5589 echo "CONFIG_RDMA=y" >> $config_host_mak
5592 if [ "$dtc_internal" = "yes" ]; then
5593 echo "config-host.h: subdir-dtc" >> $config_host_mak
5596 if test "$numa" = "yes"; then
5597 echo "CONFIG_NUMA=y" >> $config_host_mak
5600 if test "$ccache_cpp2" = "yes"; then
5601 echo "export CCACHE_CPP2=y" >> $config_host_mak
5604 # build tree in object directory in case the source is not in the current directory
5605 DIRS="tests tests/tcg tests/tcg/cris tests/tcg/lm32 tests/libqos tests/qapi-schema tests/tcg/xtensa tests/qemu-iotests"
5606 DIRS="$DIRS fsdev"
5607 DIRS="$DIRS pc-bios/optionrom pc-bios/spapr-rtas pc-bios/s390-ccw"
5608 DIRS="$DIRS roms/seabios roms/vgabios"
5609 DIRS="$DIRS qapi-generated"
5610 FILES="Makefile tests/tcg/Makefile qdict-test-data.txt"
5611 FILES="$FILES tests/tcg/cris/Makefile tests/tcg/cris/.gdbinit"
5612 FILES="$FILES tests/tcg/lm32/Makefile tests/tcg/xtensa/Makefile po/Makefile"
5613 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
5614 FILES="$FILES pc-bios/spapr-rtas/Makefile"
5615 FILES="$FILES pc-bios/s390-ccw/Makefile"
5616 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
5617 FILES="$FILES pc-bios/qemu-icon.bmp"
5618 for bios_file in \
5619 $source_path/pc-bios/*.bin \
5620 $source_path/pc-bios/*.aml \
5621 $source_path/pc-bios/*.rom \
5622 $source_path/pc-bios/*.dtb \
5623 $source_path/pc-bios/*.img \
5624 $source_path/pc-bios/openbios-* \
5625 $source_path/pc-bios/u-boot.* \
5626 $source_path/pc-bios/palcode-*
5628 FILES="$FILES pc-bios/`basename $bios_file`"
5629 done
5630 for test_file in `find $source_path/tests/acpi-test-data -type f`
5632 FILES="$FILES tests/acpi-test-data`echo $test_file | sed -e 's/.*acpi-test-data//'`"
5633 done
5634 mkdir -p $DIRS
5635 for f in $FILES ; do
5636 if [ -e "$source_path/$f" ] && [ "$pwd_is_source_path" != "y" ]; then
5637 symlink "$source_path/$f" "$f"
5639 done
5641 # temporary config to build submodules
5642 for rom in seabios vgabios ; do
5643 config_mak=roms/$rom/config.mak
5644 echo "# Automatically generated by configure - do not modify" > $config_mak
5645 echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
5646 echo "AS=$as" >> $config_mak
5647 echo "CC=$cc" >> $config_mak
5648 echo "BCC=bcc" >> $config_mak
5649 echo "CPP=$cpp" >> $config_mak
5650 echo "OBJCOPY=objcopy" >> $config_mak
5651 echo "IASL=$iasl" >> $config_mak
5652 echo "LD=$ld" >> $config_mak
5653 done
5655 # set up qemu-iotests in this build directory
5656 iotests_common_env="tests/qemu-iotests/common.env"
5657 iotests_check="tests/qemu-iotests/check"
5659 echo "# Automatically generated by configure - do not modify" > "$iotests_common_env"
5660 echo >> "$iotests_common_env"
5661 echo "export PYTHON='$python'" >> "$iotests_common_env"
5663 if [ ! -e "$iotests_check" ]; then
5664 symlink "$source_path/$iotests_check" "$iotests_check"
5667 # Save the configure command line for later reuse.
5668 cat <<EOD >config.status
5669 #!/bin/sh
5670 # Generated by configure.
5671 # Run this file to recreate the current configuration.
5672 # Compiler output produced by configure, useful for debugging
5673 # configure, is in config.log if it exists.
5675 printf "exec" >>config.status
5676 printf " '%s'" "$0" "$@" >>config.status
5677 echo >>config.status
5678 chmod +x config.status
5680 rm -r "$TMPDIR1"