]> Git Repo - qemu.git/blob - configure
libcacard: add pc file, install it + includes
[qemu.git] / configure
1 #!/bin/sh
2 #
3 # qemu configure script (c) 2003 Fabrice Bellard
4 #
5 # set temporary file name
6 if test ! -z "$TMPDIR" ; then
7     TMPDIR1="${TMPDIR}"
8 elif test ! -z "$TEMPDIR" ; then
9     TMPDIR1="${TEMPDIR}"
10 else
11     TMPDIR1="/tmp"
12 fi
13
14 TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15 TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16 TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
17
18 # NB: do not call "exit" in the trap handler; this is buggy with some shells;
19 # see <[email protected]>
20 trap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
21 rm -f config.log
22
23 compile_object() {
24   echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
25   $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
26 }
27
28 compile_prog() {
29   local_cflags="$1"
30   local_ldflags="$2"
31   echo $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log
32   $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log 2>&1
33 }
34
35 # symbolically link $1 to $2.  Portable version of "ln -sf".
36 symlink() {
37   rm -f $2
38   ln -s $1 $2
39 }
40
41 # check whether a command is available to this shell (may be either an
42 # executable or a builtin)
43 has() {
44     type "$1" >/dev/null 2>&1
45 }
46
47 # search for an executable in PATH
48 path_of() {
49     local_command="$1"
50     local_ifs="$IFS"
51     local_dir=""
52
53     # pathname has a dir component?
54     if [ "${local_command#*/}" != "$local_command" ]; then
55         if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
56             echo "$local_command"
57             return 0
58         fi
59     fi
60     if [ -z "$local_command" ]; then
61         return 1
62     fi
63
64     IFS=:
65     for local_dir in $PATH; do
66         if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
67             echo "$local_dir/$local_command"
68             IFS="${local_ifs:-$(printf ' \t\n')}"
69             return 0
70         fi
71     done
72     # not found
73     IFS="${local_ifs:-$(printf ' \t\n')}"
74     return 1
75 }
76
77 # default parameters
78 source_path=`dirname "$0"`
79 cpu=""
80 interp_prefix="/usr/gnemul/qemu-%M"
81 static="no"
82 sparc_cpu=""
83 cross_prefix=""
84 audio_drv_list=""
85 audio_card_list="ac97 es1370 sb16 hda"
86 audio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus hda"
87 block_drv_whitelist=""
88 host_cc="gcc"
89 helper_cflags=""
90 libs_softmmu=""
91 libs_tools=""
92 audio_pt_int=""
93 audio_win_int=""
94 cc_i386=i386-pc-linux-gnu-gcc
95
96 target_list=""
97
98 # Default value for a variable defining feature "foo".
99 #  * foo="no"  feature will only be used if --enable-foo arg is given
100 #  * foo=""    feature will be searched for, and if found, will be used
101 #              unless --disable-foo is given
102 #  * foo="yes" this value will only be set by --enable-foo flag.
103 #              feature will searched for,
104 #              if not found, configure exits with error
105 #
106 # Always add --enable-foo and --disable-foo command line args.
107 # Distributions want to ensure that several features are compiled in, and it
108 # is impossible without a --enable-foo that exits if a feature is not found.
109
110 bluez=""
111 brlapi=""
112 curl=""
113 curses=""
114 docs=""
115 fdt=""
116 kvm=""
117 nptl=""
118 sdl=""
119 vnc="yes"
120 sparse="no"
121 uuid=""
122 vde=""
123 vnc_tls=""
124 vnc_sasl=""
125 vnc_jpeg=""
126 vnc_png=""
127 vnc_thread="no"
128 xen=""
129 xen_ctrl_version=""
130 linux_aio=""
131 attr=""
132 vhost_net=""
133 xfs=""
134
135 gprof="no"
136 debug_tcg="no"
137 debug_mon="no"
138 debug="no"
139 strip_opt="yes"
140 bigendian="no"
141 mingw32="no"
142 EXESUF=""
143 prefix="/usr/local"
144 mandir="\${prefix}/share/man"
145 datadir="\${prefix}/share/qemu"
146 docdir="\${prefix}/share/doc/qemu"
147 bindir="\${prefix}/bin"
148 libdir="\${prefix}/lib"
149 includedir="\${prefix}/include"
150 sysconfdir="\${prefix}/etc"
151 confsuffix="/qemu"
152 slirp="yes"
153 fmod_lib=""
154 fmod_inc=""
155 oss_lib=""
156 bsd="no"
157 linux="no"
158 solaris="no"
159 profiler="no"
160 cocoa="no"
161 softmmu="yes"
162 linux_user="no"
163 darwin_user="no"
164 bsd_user="no"
165 guest_base=""
166 uname_release=""
167 io_thread="no"
168 mixemu="no"
169 aix="no"
170 blobs="yes"
171 pkgversion=""
172 check_utests="no"
173 user_pie="no"
174 zero_malloc=""
175 trace_backend="nop"
176 trace_file="trace"
177 spice=""
178 rbd=""
179 smartcard=""
180 smartcard_nss=""
181 opengl=""
182
183 # parse CC options first
184 for opt do
185   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
186   case "$opt" in
187   --cross-prefix=*) cross_prefix="$optarg"
188   ;;
189   --cc=*) CC="$optarg"
190   ;;
191   --source-path=*) source_path="$optarg"
192   ;;
193   --cpu=*) cpu="$optarg"
194   ;;
195   --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
196   ;;
197   --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
198   ;;
199   --sparc_cpu=*)
200     sparc_cpu="$optarg"
201     case $sparc_cpu in
202     v7|v8|v8plus|v8plusa)
203       cpu="sparc"
204     ;;
205     v9)
206       cpu="sparc64"
207     ;;
208     *)
209       echo "undefined SPARC architecture. Exiting";
210       exit 1
211     ;;
212     esac
213   ;;
214   esac
215 done
216 # OS specific
217 # Using uname is really, really broken.  Once we have the right set of checks
218 # we can eliminate it's usage altogether
219
220 cc="${cross_prefix}${CC-gcc}"
221 ar="${cross_prefix}${AR-ar}"
222 objcopy="${cross_prefix}${OBJCOPY-objcopy}"
223 ld="${cross_prefix}${LD-ld}"
224 strip="${cross_prefix}${STRIP-strip}"
225 windres="${cross_prefix}${WINDRES-windres}"
226 pkg_config="${cross_prefix}${PKG_CONFIG-pkg-config}"
227 sdl_config="${cross_prefix}${SDL_CONFIG-sdl-config}"
228
229 # default flags for all hosts
230 QEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
231 CFLAGS="-g $CFLAGS"
232 QEMU_CFLAGS="-Wall -Wundef -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
233 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
234 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
235 QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
236 QEMU_INCLUDES="-I. -I\$(SRC_PATH)"
237 LDFLAGS="-g $LDFLAGS"
238
239 # make source path absolute
240 source_path=`cd "$source_path"; pwd`
241
242 check_define() {
243 cat > $TMPC <<EOF
244 #if !defined($1)
245 #error Not defined
246 #endif
247 int main(void) { return 0; }
248 EOF
249   compile_object
250 }
251
252 if test ! -z "$cpu" ; then
253   # command line argument
254   :
255 elif check_define __i386__ ; then
256   cpu="i386"
257 elif check_define __x86_64__ ; then
258   cpu="x86_64"
259 elif check_define __sparc__ ; then
260   # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
261   # They must be specified using --sparc_cpu
262   if check_define __arch64__ ; then
263     cpu="sparc64"
264   else
265     cpu="sparc"
266   fi
267 elif check_define _ARCH_PPC ; then
268   if check_define _ARCH_PPC64 ; then
269     cpu="ppc64"
270   else
271     cpu="ppc"
272   fi
273 elif check_define __mips__ ; then
274   cpu="mips"
275 elif check_define __ia64__ ; then
276   cpu="ia64"
277 elif check_define __s390__ ; then
278   if check_define __s390x__ ; then
279     cpu="s390x"
280   else
281     cpu="s390"
282   fi
283 else
284   cpu=`uname -m`
285 fi
286
287 case "$cpu" in
288   alpha|cris|ia64|lm32|m68k|microblaze|ppc|ppc64|sparc64|unicore32)
289     cpu="$cpu"
290   ;;
291   i386|i486|i586|i686|i86pc|BePC)
292     cpu="i386"
293   ;;
294   x86_64|amd64)
295     cpu="x86_64"
296   ;;
297   armv*b)
298     cpu="armv4b"
299   ;;
300   armv*l)
301     cpu="armv4l"
302   ;;
303   parisc|parisc64)
304     cpu="hppa"
305   ;;
306   mips*)
307     cpu="mips"
308   ;;
309   s390)
310     cpu="s390"
311   ;;
312   s390x)
313     cpu="s390x"
314   ;;
315   sparc|sun4[cdmuv])
316     cpu="sparc"
317   ;;
318   *)
319     echo "Unsupported CPU = $cpu"
320     exit 1
321   ;;
322 esac
323
324 # OS specific
325 if check_define __linux__ ; then
326   targetos="Linux"
327 elif check_define _WIN32 ; then
328   targetos='MINGW32'
329 elif check_define __OpenBSD__ ; then
330   targetos='OpenBSD'
331 elif check_define __sun__ ; then
332   targetos='SunOS'
333 elif check_define __HAIKU__ ; then
334   targetos='Haiku'
335 else
336   targetos=`uname -s`
337 fi
338
339 case $targetos in
340 CYGWIN*)
341   mingw32="yes"
342   QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
343   audio_possible_drivers="winwave sdl"
344   audio_drv_list="winwave"
345 ;;
346 MINGW32*)
347   mingw32="yes"
348   audio_possible_drivers="winwave dsound sdl fmod"
349   audio_drv_list="winwave"
350 ;;
351 GNU/kFreeBSD)
352   bsd="yes"
353   audio_drv_list="oss"
354   audio_possible_drivers="oss sdl esd pa"
355 ;;
356 FreeBSD)
357   bsd="yes"
358   make="${MAKE-gmake}"
359   audio_drv_list="oss"
360   audio_possible_drivers="oss sdl esd pa"
361   # needed for kinfo_getvmmap(3) in libutil.h
362   LIBS="-lutil $LIBS"
363 ;;
364 DragonFly)
365   bsd="yes"
366   make="${MAKE-gmake}"
367   audio_drv_list="oss"
368   audio_possible_drivers="oss sdl esd pa"
369 ;;
370 NetBSD)
371   bsd="yes"
372   make="${MAKE-gmake}"
373   audio_drv_list="oss"
374   audio_possible_drivers="oss sdl esd"
375   oss_lib="-lossaudio"
376 ;;
377 OpenBSD)
378   bsd="yes"
379   make="${MAKE-gmake}"
380   audio_drv_list="oss"
381   audio_possible_drivers="oss sdl esd"
382   oss_lib="-lossaudio"
383 ;;
384 Darwin)
385   bsd="yes"
386   darwin="yes"
387   # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
388   # run 64-bit userspace code
389   if [ "$cpu" = "i386" ] ; then
390     is_x86_64=`sysctl -n hw.optional.x86_64`
391     [ "$is_x86_64" = "1" ] && cpu=x86_64
392   fi
393   if [ "$cpu" = "x86_64" ] ; then
394     QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
395     LDFLAGS="-arch x86_64 $LDFLAGS"
396   else
397     QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
398   fi
399   darwin_user="yes"
400   cocoa="yes"
401   audio_drv_list="coreaudio"
402   audio_possible_drivers="coreaudio sdl fmod"
403   LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
404   libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
405 ;;
406 SunOS)
407   solaris="yes"
408   make="${MAKE-gmake}"
409   install="${INSTALL-ginstall}"
410   ld="gld"
411   needs_libsunmath="no"
412   solarisrev=`uname -r | cut -f2 -d.`
413   # have to select again, because `uname -m` returns i86pc
414   # even on an x86_64 box.
415   solariscpu=`isainfo -k`
416   if test "${solariscpu}" = "amd64" ; then
417     cpu="x86_64"
418   fi
419   if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
420     if test "$solarisrev" -le 9 ; then
421       if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
422         needs_libsunmath="yes"
423         QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
424         LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
425         LIBS="-lsunmath $LIBS"
426       else
427         echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
428         echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
429         echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
430         echo "Studio 11 can be downloaded from www.sun.com."
431         exit 1
432       fi
433     fi
434   fi
435   if test -f /usr/include/sys/soundcard.h ; then
436     audio_drv_list="oss"
437   fi
438   audio_possible_drivers="oss sdl"
439 # needed for CMSG_ macros in sys/socket.h
440   QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
441 # needed for TIOCWIN* defines in termios.h
442   QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
443   QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
444   LIBS="-lsocket -lnsl -lresolv $LIBS"
445 ;;
446 AIX)
447   aix="yes"
448   make="${MAKE-gmake}"
449 ;;
450 Haiku)
451   haiku="yes"
452   QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
453   LIBS="-lposix_error_mapper -lnetwork $LIBS"
454 ;;
455 *)
456   audio_drv_list="oss"
457   audio_possible_drivers="oss alsa sdl esd pa"
458   linux="yes"
459   linux_user="yes"
460   usb="linux"
461   kvm="yes"
462   vhost_net="yes"
463   if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
464     audio_possible_drivers="$audio_possible_drivers fmod"
465   fi
466 ;;
467 esac
468
469 if [ "$bsd" = "yes" ] ; then
470   if [ "$darwin" != "yes" ] ; then
471     usb="bsd"
472   fi
473   bsd_user="yes"
474 fi
475
476 : ${make=${MAKE-make}}
477 : ${install=${INSTALL-install}}
478
479 if test "$mingw32" = "yes" ; then
480   EXESUF=".exe"
481   QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
482   # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
483   QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
484   LIBS="-lwinmm -lws2_32 -liberty -liphlpapi $LIBS"
485   prefix="c:/Program Files/Qemu"
486   mandir="\${prefix}"
487   datadir="\${prefix}"
488   docdir="\${prefix}"
489   bindir="\${prefix}"
490   sysconfdir="\${prefix}"
491   confsuffix=""
492 fi
493
494 werror=""
495
496 for opt do
497   optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
498   case "$opt" in
499   --help|-h) show_help=yes
500   ;;
501   --version|-V) exec cat $source_path/VERSION
502   ;;
503   --prefix=*) prefix="$optarg"
504   ;;
505   --interp-prefix=*) interp_prefix="$optarg"
506   ;;
507   --source-path=*)
508   ;;
509   --cross-prefix=*)
510   ;;
511   --cc=*)
512   ;;
513   --host-cc=*) host_cc="$optarg"
514   ;;
515   --make=*) make="$optarg"
516   ;;
517   --install=*) install="$optarg"
518   ;;
519   --extra-cflags=*)
520   ;;
521   --extra-ldflags=*)
522   ;;
523   --cpu=*)
524   ;;
525   --target-list=*) target_list="$optarg"
526   ;;
527   --enable-trace-backend=*) trace_backend="$optarg"
528   ;;
529   --with-trace-file=*) trace_file="$optarg"
530   ;;
531   --enable-gprof) gprof="yes"
532   ;;
533   --static)
534     static="yes"
535     LDFLAGS="-static $LDFLAGS"
536   ;;
537   --mandir=*) mandir="$optarg"
538   ;;
539   --bindir=*) bindir="$optarg"
540   ;;
541   --libdir=*) libdir="$optarg"
542   ;;
543   --includedir=*) includedir="$optarg"
544   ;;
545   --datadir=*) datadir="$optarg"
546   ;;
547   --docdir=*) docdir="$optarg"
548   ;;
549   --sysconfdir=*) sysconfdir="$optarg"
550   ;;
551   --disable-sdl) sdl="no"
552   ;;
553   --enable-sdl) sdl="yes"
554   ;;
555   --disable-vnc) vnc="no"
556   ;;
557   --enable-vnc) vnc="yes"
558   ;;
559   --fmod-lib=*) fmod_lib="$optarg"
560   ;;
561   --fmod-inc=*) fmod_inc="$optarg"
562   ;;
563   --oss-lib=*) oss_lib="$optarg"
564   ;;
565   --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
566   ;;
567   --audio-drv-list=*) audio_drv_list="$optarg"
568   ;;
569   --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
570   ;;
571   --enable-debug-tcg) debug_tcg="yes"
572   ;;
573   --disable-debug-tcg) debug_tcg="no"
574   ;;
575   --enable-debug-mon) debug_mon="yes"
576   ;;
577   --disable-debug-mon) debug_mon="no"
578   ;;
579   --enable-debug)
580       # Enable debugging options that aren't excessively noisy
581       debug_tcg="yes"
582       debug_mon="yes"
583       debug="yes"
584       strip_opt="no"
585   ;;
586   --enable-sparse) sparse="yes"
587   ;;
588   --disable-sparse) sparse="no"
589   ;;
590   --disable-strip) strip_opt="no"
591   ;;
592   --disable-vnc-tls) vnc_tls="no"
593   ;;
594   --enable-vnc-tls) vnc_tls="yes"
595   ;;
596   --disable-vnc-sasl) vnc_sasl="no"
597   ;;
598   --enable-vnc-sasl) vnc_sasl="yes"
599   ;;
600   --disable-vnc-jpeg) vnc_jpeg="no"
601   ;;
602   --enable-vnc-jpeg) vnc_jpeg="yes"
603   ;;
604   --disable-vnc-png) vnc_png="no"
605   ;;
606   --enable-vnc-png) vnc_png="yes"
607   ;;
608   --disable-vnc-thread) vnc_thread="no"
609   ;;
610   --enable-vnc-thread) vnc_thread="yes"
611   ;;
612   --disable-slirp) slirp="no"
613   ;;
614   --disable-uuid) uuid="no"
615   ;;
616   --enable-uuid) uuid="yes"
617   ;;
618   --disable-vde) vde="no"
619   ;;
620   --enable-vde) vde="yes"
621   ;;
622   --disable-xen) xen="no"
623   ;;
624   --enable-xen) xen="yes"
625   ;;
626   --disable-brlapi) brlapi="no"
627   ;;
628   --enable-brlapi) brlapi="yes"
629   ;;
630   --disable-bluez) bluez="no"
631   ;;
632   --enable-bluez) bluez="yes"
633   ;;
634   --disable-kvm) kvm="no"
635   ;;
636   --enable-kvm) kvm="yes"
637   ;;
638   --disable-spice) spice="no"
639   ;;
640   --enable-spice) spice="yes"
641   ;;
642   --enable-profiler) profiler="yes"
643   ;;
644   --enable-cocoa)
645       cocoa="yes" ;
646       sdl="no" ;
647       audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
648   ;;
649   --disable-system) softmmu="no"
650   ;;
651   --enable-system) softmmu="yes"
652   ;;
653   --disable-user)
654       linux_user="no" ;
655       bsd_user="no" ;
656       darwin_user="no"
657   ;;
658   --enable-user) ;;
659   --disable-linux-user) linux_user="no"
660   ;;
661   --enable-linux-user) linux_user="yes"
662   ;;
663   --disable-darwin-user) darwin_user="no"
664   ;;
665   --enable-darwin-user) darwin_user="yes"
666   ;;
667   --disable-bsd-user) bsd_user="no"
668   ;;
669   --enable-bsd-user) bsd_user="yes"
670   ;;
671   --enable-guest-base) guest_base="yes"
672   ;;
673   --disable-guest-base) guest_base="no"
674   ;;
675   --enable-user-pie) user_pie="yes"
676   ;;
677   --disable-user-pie) user_pie="no"
678   ;;
679   --enable-uname-release=*) uname_release="$optarg"
680   ;;
681   --sparc_cpu=*)
682   ;;
683   --enable-werror) werror="yes"
684   ;;
685   --disable-werror) werror="no"
686   ;;
687   --disable-curses) curses="no"
688   ;;
689   --enable-curses) curses="yes"
690   ;;
691   --disable-curl) curl="no"
692   ;;
693   --enable-curl) curl="yes"
694   ;;
695   --disable-fdt) fdt="no"
696   ;;
697   --enable-fdt) fdt="yes"
698   ;;
699   --disable-check-utests) check_utests="no"
700   ;;
701   --enable-check-utests) check_utests="yes"
702   ;;
703   --disable-nptl) nptl="no"
704   ;;
705   --enable-nptl) nptl="yes"
706   ;;
707   --enable-mixemu) mixemu="yes"
708   ;;
709   --disable-linux-aio) linux_aio="no"
710   ;;
711   --enable-linux-aio) linux_aio="yes"
712   ;;
713   --disable-attr) attr="no"
714   ;;
715   --enable-attr) attr="yes"
716   ;;
717   --enable-io-thread) io_thread="yes"
718   ;;
719   --disable-blobs) blobs="no"
720   ;;
721   --with-pkgversion=*) pkgversion=" ($optarg)"
722   ;;
723   --disable-docs) docs="no"
724   ;;
725   --enable-docs) docs="yes"
726   ;;
727   --disable-vhost-net) vhost_net="no"
728   ;;
729   --enable-vhost-net) vhost_net="yes"
730   ;;
731   --disable-opengl) opengl="no"
732   ;;
733   --enable-opengl) opengl="yes"
734   ;;
735   --*dir)
736   ;;
737   --disable-rbd) rbd="no"
738   ;;
739   --enable-rbd) rbd="yes"
740   ;;
741   --disable-smartcard) smartcard="no"
742   ;;
743   --enable-smartcard) smartcard="yes"
744   ;;
745   --disable-smartcard-nss) smartcard_nss="no"
746   ;;
747   --enable-smartcard-nss) smartcard_nss="yes"
748   ;;
749   *) echo "ERROR: unknown option $opt"; show_help="yes"
750   ;;
751   esac
752 done
753
754 #
755 # If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
756 # QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
757 #
758 host_guest_base="no"
759 case "$cpu" in
760     sparc) case $sparc_cpu in
761            v7|v8)
762              QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
763            ;;
764            v8plus|v8plusa)
765              QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
766            ;;
767            *) # sparc_cpu not defined in the command line
768              QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
769            esac
770            LDFLAGS="-m32 $LDFLAGS"
771            QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
772            if test "$solaris" = "no" ; then
773              QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
774              helper_cflags="-ffixed-i0"
775            fi
776            ;;
777     sparc64)
778            QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
779            LDFLAGS="-m64 $LDFLAGS"
780            QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
781            if test "$solaris" != "no" ; then
782              QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
783            fi
784            ;;
785     s390)
786            QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
787            LDFLAGS="-m31 $LDFLAGS"
788            host_guest_base="yes"
789            ;;
790     s390x)
791            QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
792            LDFLAGS="-m64 $LDFLAGS"
793            host_guest_base="yes"
794            ;;
795     i386)
796            QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
797            LDFLAGS="-m32 $LDFLAGS"
798            cc_i386='$(CC) -m32'
799            helper_cflags="-fomit-frame-pointer"
800            host_guest_base="yes"
801            ;;
802     x86_64)
803            QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
804            LDFLAGS="-m64 $LDFLAGS"
805            cc_i386='$(CC) -m32'
806            host_guest_base="yes"
807            ;;
808     arm*)
809            host_guest_base="yes"
810            ;;
811     ppc*)
812            host_guest_base="yes"
813            ;;
814     mips*)
815            host_guest_base="yes"
816            ;;
817     ia64*)
818            host_guest_base="yes"
819            ;;
820     hppa*)
821            host_guest_base="yes"
822            ;;
823     unicore32*)
824            host_guest_base="yes"
825            ;;
826 esac
827
828 [ -z "$guest_base" ] && guest_base="$host_guest_base"
829
830
831 default_target_list=""
832
833 # these targets are portable
834 if [ "$softmmu" = "yes" ] ; then
835     default_target_list="\
836 i386-softmmu \
837 x86_64-softmmu \
838 alpha-softmmu \
839 arm-softmmu \
840 cris-softmmu \
841 lm32-softmmu \
842 m68k-softmmu \
843 microblaze-softmmu \
844 microblazeel-softmmu \
845 mips-softmmu \
846 mipsel-softmmu \
847 mips64-softmmu \
848 mips64el-softmmu \
849 ppc-softmmu \
850 ppcemb-softmmu \
851 ppc64-softmmu \
852 sh4-softmmu \
853 sh4eb-softmmu \
854 sparc-softmmu \
855 sparc64-softmmu \
856 s390x-softmmu \
857 "
858 fi
859 # the following are Linux specific
860 if [ "$linux_user" = "yes" ] ; then
861     default_target_list="${default_target_list}\
862 i386-linux-user \
863 x86_64-linux-user \
864 alpha-linux-user \
865 arm-linux-user \
866 armeb-linux-user \
867 cris-linux-user \
868 m68k-linux-user \
869 microblaze-linux-user \
870 microblazeel-linux-user \
871 mips-linux-user \
872 mipsel-linux-user \
873 ppc-linux-user \
874 ppc64-linux-user \
875 ppc64abi32-linux-user \
876 sh4-linux-user \
877 sh4eb-linux-user \
878 sparc-linux-user \
879 sparc64-linux-user \
880 sparc32plus-linux-user \
881 unicore32-linux-user \
882 s390x-linux-user \
883 "
884 fi
885 # the following are Darwin specific
886 if [ "$darwin_user" = "yes" ] ; then
887     default_target_list="$default_target_list i386-darwin-user ppc-darwin-user "
888 fi
889 # the following are BSD specific
890 if [ "$bsd_user" = "yes" ] ; then
891     default_target_list="${default_target_list}\
892 i386-bsd-user \
893 x86_64-bsd-user \
894 sparc-bsd-user \
895 sparc64-bsd-user \
896 "
897 fi
898
899 if test x"$show_help" = x"yes" ; then
900 cat << EOF
901
902 Usage: configure [options]
903 Options: [defaults in brackets after descriptions]
904
905 EOF
906 echo "Standard options:"
907 echo "  --help                   print this message"
908 echo "  --prefix=PREFIX          install in PREFIX [$prefix]"
909 echo "  --interp-prefix=PREFIX   where to find shared libraries, etc."
910 echo "                           use %M for cpu name [$interp_prefix]"
911 echo "  --target-list=LIST       set target list (default: build everything)"
912 echo "Available targets: $default_target_list" | \
913     fold -s -w 53 | sed -e 's/^/                           /'
914 echo ""
915 echo "Advanced options (experts only):"
916 echo "  --source-path=PATH       path of source code [$source_path]"
917 echo "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
918 echo "  --cc=CC                  use C compiler CC [$cc]"
919 echo "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
920 echo "                           build time"
921 echo "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
922 echo "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
923 echo "  --make=MAKE              use specified make [$make]"
924 echo "  --install=INSTALL        use specified install [$install]"
925 echo "  --static                 enable static build [$static]"
926 echo "  --mandir=PATH            install man pages in PATH"
927 echo "  --datadir=PATH           install firmware in PATH"
928 echo "  --docdir=PATH            install documentation in PATH"
929 echo "  --bindir=PATH            install binaries in PATH"
930 echo "  --sysconfdir=PATH        install config in PATH/qemu"
931 echo "  --enable-debug-tcg       enable TCG debugging"
932 echo "  --disable-debug-tcg      disable TCG debugging (default)"
933 echo "  --enable-debug           enable common debug build options"
934 echo "  --enable-sparse          enable sparse checker"
935 echo "  --disable-sparse         disable sparse checker (default)"
936 echo "  --disable-strip          disable stripping binaries"
937 echo "  --disable-werror         disable compilation abort on warning"
938 echo "  --disable-sdl            disable SDL"
939 echo "  --enable-sdl             enable SDL"
940 echo "  --disable-vnc            disable VNC"
941 echo "  --enable-vnc             enable VNC"
942 echo "  --enable-cocoa           enable COCOA (Mac OS X only)"
943 echo "  --audio-drv-list=LIST    set audio drivers list:"
944 echo "                           Available drivers: $audio_possible_drivers"
945 echo "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
946 echo "                           Available cards: $audio_possible_cards"
947 echo "  --block-drv-whitelist=L  set block driver whitelist"
948 echo "                           (affects only QEMU, not qemu-img)"
949 echo "  --enable-mixemu          enable mixer emulation"
950 echo "  --disable-xen            disable xen backend driver support"
951 echo "  --enable-xen             enable xen backend driver support"
952 echo "  --disable-brlapi         disable BrlAPI"
953 echo "  --enable-brlapi          enable BrlAPI"
954 echo "  --disable-vnc-tls        disable TLS encryption for VNC server"
955 echo "  --enable-vnc-tls         enable TLS encryption for VNC server"
956 echo "  --disable-vnc-sasl       disable SASL encryption for VNC server"
957 echo "  --enable-vnc-sasl        enable SASL encryption for VNC server"
958 echo "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
959 echo "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
960 echo "  --disable-vnc-png        disable PNG compression for VNC server (default)"
961 echo "  --enable-vnc-png         enable PNG compression for VNC server"
962 echo "  --disable-vnc-thread     disable threaded VNC server"
963 echo "  --enable-vnc-thread      enable threaded VNC server"
964 echo "  --disable-curses         disable curses output"
965 echo "  --enable-curses          enable curses output"
966 echo "  --disable-curl           disable curl connectivity"
967 echo "  --enable-curl            enable curl connectivity"
968 echo "  --disable-fdt            disable fdt device tree"
969 echo "  --enable-fdt             enable fdt device tree"
970 echo "  --disable-check-utests   disable check unit-tests"
971 echo "  --enable-check-utests    enable check unit-tests"
972 echo "  --disable-bluez          disable bluez stack connectivity"
973 echo "  --enable-bluez           enable bluez stack connectivity"
974 echo "  --disable-slirp          disable SLIRP userspace network connectivity"
975 echo "  --disable-kvm            disable KVM acceleration support"
976 echo "  --enable-kvm             enable KVM acceleration support"
977 echo "  --disable-nptl           disable usermode NPTL support"
978 echo "  --enable-nptl            enable usermode NPTL support"
979 echo "  --enable-system          enable all system emulation targets"
980 echo "  --disable-system         disable all system emulation targets"
981 echo "  --enable-user            enable supported user emulation targets"
982 echo "  --disable-user           disable all user emulation targets"
983 echo "  --enable-linux-user      enable all linux usermode emulation targets"
984 echo "  --disable-linux-user     disable all linux usermode emulation targets"
985 echo "  --enable-darwin-user     enable all darwin usermode emulation targets"
986 echo "  --disable-darwin-user    disable all darwin usermode emulation targets"
987 echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
988 echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
989 echo "  --enable-guest-base      enable GUEST_BASE support for usermode"
990 echo "                           emulation targets"
991 echo "  --disable-guest-base     disable GUEST_BASE support"
992 echo "  --enable-user-pie        build usermode emulation targets as PIE"
993 echo "  --disable-user-pie       do not build usermode emulation targets as PIE"
994 echo "  --fmod-lib               path to FMOD library"
995 echo "  --fmod-inc               path to FMOD includes"
996 echo "  --oss-lib                path to OSS library"
997 echo "  --enable-uname-release=R Return R for uname -r in usermode emulation"
998 echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
999 echo "  --disable-uuid           disable uuid support"
1000 echo "  --enable-uuid            enable uuid support"
1001 echo "  --disable-vde            disable support for vde network"
1002 echo "  --enable-vde             enable support for vde network"
1003 echo "  --disable-linux-aio      disable Linux AIO support"
1004 echo "  --enable-linux-aio       enable Linux AIO support"
1005 echo "  --disable-attr           disables attr and xattr support"
1006 echo "  --enable-attr            enable attr and xattr support"
1007 echo "  --enable-io-thread       enable IO thread"
1008 echo "  --disable-blobs          disable installing provided firmware blobs"
1009 echo "  --enable-docs            enable documentation build"
1010 echo "  --disable-docs           disable documentation build"
1011 echo "  --disable-vhost-net      disable vhost-net acceleration support"
1012 echo "  --enable-vhost-net       enable vhost-net acceleration support"
1013 echo "  --enable-trace-backend=B Set trace backend"
1014 echo "                           Available backends:" $("$source_path"/scripts/tracetool --list-backends)
1015 echo "  --with-trace-file=NAME   Full PATH,NAME of file to store traces"
1016 echo "                           Default:trace-<pid>"
1017 echo "  --disable-spice          disable spice"
1018 echo "  --enable-spice           enable spice"
1019 echo "  --enable-rbd             enable building the rados block device (rbd)"
1020 echo "  --disable-smartcard      disable smartcard support"
1021 echo "  --enable-smartcard       enable smartcard support"
1022 echo "  --disable-smartcard-nss  disable smartcard nss support"
1023 echo "  --enable-smartcard-nss   enable smartcard nss support"
1024 echo ""
1025 echo "NOTE: The object files are built at the place where configure is launched"
1026 exit 1
1027 fi
1028
1029 # check that the C compiler works.
1030 cat > $TMPC <<EOF
1031 int main(void) {}
1032 EOF
1033
1034 if compile_object ; then
1035   : C compiler works ok
1036 else
1037     echo "ERROR: \"$cc\" either does not exist or does not work"
1038     exit 1
1039 fi
1040
1041 gcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
1042 gcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1043 gcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
1044 gcc_flags="-fstack-protector-all -Wendif-labels $gcc_flags"
1045 cat > $TMPC << EOF
1046 int main(void) { return 0; }
1047 EOF
1048 for flag in $gcc_flags; do
1049     if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
1050         QEMU_CFLAGS="$QEMU_CFLAGS $flag"
1051     fi
1052 done
1053
1054 #
1055 # Solaris specific configure tool chain decisions
1056 #
1057 if test "$solaris" = "yes" ; then
1058   if has $install; then
1059     :
1060   else
1061     echo "Solaris install program not found. Use --install=/usr/ucb/install or"
1062     echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
1063     echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
1064     exit 1
1065   fi
1066   if test "`path_of $install`" = "/usr/sbin/install" ; then
1067     echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
1068     echo "try ginstall from the GNU fileutils available from www.blastwave.org"
1069     echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
1070     exit 1
1071   fi
1072   if has ar; then
1073     :
1074   else
1075     echo "Error: No path includes ar"
1076     if test -f /usr/ccs/bin/ar ; then
1077       echo "Add /usr/ccs/bin to your path and rerun configure"
1078     fi
1079     exit 1
1080   fi
1081 fi
1082
1083 if test -z "$target_list" ; then
1084     target_list="$default_target_list"
1085 else
1086     target_list=`echo "$target_list" | sed -e 's/,/ /g'`
1087 fi
1088 if test -z "$target_list" ; then
1089     echo "No targets enabled"
1090     exit 1
1091 fi
1092 # see if system emulation was really requested
1093 case " $target_list " in
1094   *"-softmmu "*) softmmu=yes
1095   ;;
1096   *) softmmu=no
1097   ;;
1098 esac
1099
1100 feature_not_found() {
1101   feature=$1
1102
1103   echo "ERROR"
1104   echo "ERROR: User requested feature $feature"
1105   echo "ERROR: configure was not able to find it"
1106   echo "ERROR"
1107   exit 1;
1108 }
1109
1110 if test -z "$cross_prefix" ; then
1111
1112 # ---
1113 # big/little endian test
1114 cat > $TMPC << EOF
1115 #include <inttypes.h>
1116 int main(int argc, char ** argv){
1117         volatile uint32_t i=0x01234567;
1118         return (*((uint8_t*)(&i))) == 0x67;
1119 }
1120 EOF
1121
1122 if compile_prog "" "" ; then
1123 $TMPE && bigendian="yes"
1124 else
1125 echo big/little test failed
1126 fi
1127
1128 else
1129
1130 # if cross compiling, cannot launch a program, so make a static guess
1131 case "$cpu" in
1132   armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1133     bigendian=yes
1134   ;;
1135 esac
1136
1137 fi
1138
1139 # host long bits test, actually a pointer size test
1140 cat > $TMPC << EOF
1141 int sizeof_pointer_is_8[sizeof(void *) == 8 ? 1 : -1];
1142 EOF
1143 if compile_object; then
1144 hostlongbits=64
1145 else
1146 hostlongbits=32
1147 fi
1148
1149
1150 ##########################################
1151 # NPTL probe
1152
1153 if test "$nptl" != "no" ; then
1154   cat > $TMPC <<EOF
1155 #include <sched.h>
1156 #include <linux/futex.h>
1157 void foo()
1158 {
1159 #if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1160 #error bork
1161 #endif
1162 }
1163 EOF
1164
1165   if compile_object ; then
1166     nptl=yes
1167   else
1168     if test "$nptl" = "yes" ; then
1169       feature_not_found "nptl"
1170     fi
1171     nptl=no
1172   fi
1173 fi
1174
1175 ##########################################
1176 # zlib check
1177
1178 cat > $TMPC << EOF
1179 #include <zlib.h>
1180 int main(void) { zlibVersion(); return 0; }
1181 EOF
1182 if compile_prog "" "-lz" ; then
1183     :
1184 else
1185     echo
1186     echo "Error: zlib check failed"
1187     echo "Make sure to have the zlib libs and headers installed."
1188     echo
1189     exit 1
1190 fi
1191
1192 ##########################################
1193 # xen probe
1194
1195 if test "$xen" != "no" ; then
1196   xen_libs="-lxenstore -lxenctrl -lxenguest"
1197
1198   # Xen unstable
1199   cat > $TMPC <<EOF
1200 #include <xenctrl.h>
1201 #include <xs.h>
1202 #include <stdint.h>
1203 #include <xen/hvm/hvm_info_table.h>
1204 #if !defined(HVM_MAX_VCPUS)
1205 # error HVM_MAX_VCPUS not defined
1206 #endif
1207 int main(void) {
1208   xc_interface *xc;
1209   xs_daemon_open();
1210   xc = xc_interface_open(0, 0, 0);
1211   xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1212   xc_gnttab_open(NULL, 0);
1213   xc_domain_add_to_physmap(0, 0, XENMAPSPACE_gmfn, 0, 0);
1214   return 0;
1215 }
1216 EOF
1217   if compile_prog "" "$xen_libs" ; then
1218     xen_ctrl_version=410
1219     xen=yes
1220
1221   # Xen 4.0.0
1222   elif (
1223       cat > $TMPC <<EOF
1224 #include <xenctrl.h>
1225 #include <xs.h>
1226 #include <stdint.h>
1227 #include <xen/hvm/hvm_info_table.h>
1228 #if !defined(HVM_MAX_VCPUS)
1229 # error HVM_MAX_VCPUS not defined
1230 #endif
1231 int main(void) {
1232   struct xen_add_to_physmap xatp = {
1233     .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1234   };
1235   xs_daemon_open();
1236   xc_interface_open();
1237   xc_gnttab_open();
1238   xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1239   xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1240   return 0;
1241 }
1242 EOF
1243       compile_prog "" "$xen_libs"
1244     ) ; then
1245     xen_ctrl_version=400
1246     xen=yes
1247
1248   # Xen 3.4.0
1249   elif (
1250       cat > $TMPC <<EOF
1251 #include <xenctrl.h>
1252 #include <xs.h>
1253 int main(void) {
1254   struct xen_add_to_physmap xatp = {
1255     .domid = 0, .space = XENMAPSPACE_gmfn, .idx = 0, .gpfn = 0,
1256   };
1257   xs_daemon_open();
1258   xc_interface_open();
1259   xc_gnttab_open();
1260   xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1261   xc_memory_op(0, XENMEM_add_to_physmap, &xatp);
1262   return 0;
1263 }
1264 EOF
1265       compile_prog "" "$xen_libs"
1266     ) ; then
1267     xen_ctrl_version=340
1268     xen=yes
1269
1270   # Xen 3.3.0
1271   elif (
1272       cat > $TMPC <<EOF
1273 #include <xenctrl.h>
1274 #include <xs.h>
1275 int main(void) {
1276   xs_daemon_open();
1277   xc_interface_open();
1278   xc_gnttab_open();
1279   xc_hvm_set_mem_type(0, 0, HVMMEM_ram_ro, 0, 0);
1280   return 0;
1281 }
1282 EOF
1283       compile_prog "" "$xen_libs"
1284     ) ; then
1285     xen_ctrl_version=330
1286     xen=yes
1287
1288   # Xen not found or unsupported
1289   else
1290     if test "$xen" = "yes" ; then
1291       feature_not_found "xen"
1292     fi
1293     xen=no
1294   fi
1295
1296   if test "$xen" = yes; then
1297     libs_softmmu="$xen_libs $libs_softmmu"
1298   fi
1299 fi
1300
1301 ##########################################
1302 # pkg-config probe
1303
1304 if ! has $pkg_config; then
1305   echo warning: proceeding without "$pkg_config" >&2
1306   pkg_config=/bin/false
1307 fi
1308
1309 ##########################################
1310 # libtool probe
1311
1312 if ! has libtool; then
1313     libtool=
1314 else
1315     libtool=libtool
1316 fi
1317
1318 ##########################################
1319 # Sparse probe
1320 if test "$sparse" != "no" ; then
1321   if has cgcc; then
1322     sparse=yes
1323   else
1324     if test "$sparse" = "yes" ; then
1325       feature_not_found "sparse"
1326     fi
1327     sparse=no
1328   fi
1329 fi
1330
1331 ##########################################
1332 # SDL probe
1333
1334 # Look for sdl configuration program (pkg-config or sdl-config).  Try
1335 # sdl-config even without cross prefix, and favour pkg-config over sdl-config.
1336 if test "`basename $sdl_config`" != sdl-config && ! has ${sdl_config}; then
1337   sdl_config=sdl-config
1338 fi
1339
1340 if $pkg_config sdl --modversion >/dev/null 2>&1; then
1341   sdlconfig="$pkg_config sdl"
1342   _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1343 elif has ${sdl_config}; then
1344   sdlconfig="$sdl_config"
1345   _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1346 else
1347   if test "$sdl" = "yes" ; then
1348     feature_not_found "sdl"
1349   fi
1350   sdl=no
1351 fi
1352 if test -n "$cross_prefix" && test "$(basename "$sdlconfig")" = sdl-config; then
1353   echo warning: using "\"$sdlconfig\"" to detect cross-compiled sdl >&2
1354 fi
1355
1356 sdl_too_old=no
1357 if test "$sdl" != "no" ; then
1358   cat > $TMPC << EOF
1359 #include <SDL.h>
1360 #undef main /* We don't want SDL to override our main() */
1361 int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
1362 EOF
1363   sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
1364   if test "$static" = "yes" ; then
1365     sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
1366   else
1367     sdl_libs=`$sdlconfig --libs 2> /dev/null`
1368   fi
1369   if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1370     if test "$_sdlversion" -lt 121 ; then
1371       sdl_too_old=yes
1372     else
1373       if test "$cocoa" = "no" ; then
1374         sdl=yes
1375       fi
1376     fi
1377
1378     # static link with sdl ? (note: sdl.pc's --static --libs is broken)
1379     if test "$sdl" = "yes" -a "$static" = "yes" ; then
1380       if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1381          sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
1382          sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
1383       fi
1384       if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1385         :
1386       else
1387         sdl=no
1388       fi
1389     fi # static link
1390   else # sdl not found
1391     if test "$sdl" = "yes" ; then
1392       feature_not_found "sdl"
1393     fi
1394     sdl=no
1395   fi # sdl compile test
1396 fi
1397
1398 if test "$sdl" = "yes" ; then
1399   cat > $TMPC <<EOF
1400 #include <SDL.h>
1401 #if defined(SDL_VIDEO_DRIVER_X11)
1402 #include <X11/XKBlib.h>
1403 #else
1404 #error No x11 support
1405 #endif
1406 int main(void) { return 0; }
1407 EOF
1408   if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1409     sdl_libs="$sdl_libs -lX11"
1410   fi
1411   if test "$mingw32" = "yes" ; then
1412     sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
1413   fi
1414   libs_softmmu="$sdl_libs $libs_softmmu"
1415 fi
1416
1417 ##########################################
1418 # VNC TLS detection
1419 if test "$vnc" = "yes" -a "$vnc_tls" != "no" ; then
1420   cat > $TMPC <<EOF
1421 #include <gnutls/gnutls.h>
1422 int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1423 EOF
1424   vnc_tls_cflags=`$pkg_config --cflags gnutls 2> /dev/null`
1425   vnc_tls_libs=`$pkg_config --libs gnutls 2> /dev/null`
1426   if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
1427     vnc_tls=yes
1428     libs_softmmu="$vnc_tls_libs $libs_softmmu"
1429   else
1430     if test "$vnc_tls" = "yes" ; then
1431       feature_not_found "vnc-tls"
1432     fi
1433     vnc_tls=no
1434   fi
1435 fi
1436
1437 ##########################################
1438 # VNC SASL detection
1439 if test "$vnc" = "yes" -a "$vnc_sasl" != "no" ; then
1440   cat > $TMPC <<EOF
1441 #include <sasl/sasl.h>
1442 #include <stdio.h>
1443 int main(void) { sasl_server_init(NULL, "qemu"); return 0; }
1444 EOF
1445   # Assuming Cyrus-SASL installed in /usr prefix
1446   vnc_sasl_cflags=""
1447   vnc_sasl_libs="-lsasl2"
1448   if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1449     vnc_sasl=yes
1450     libs_softmmu="$vnc_sasl_libs $libs_softmmu"
1451   else
1452     if test "$vnc_sasl" = "yes" ; then
1453       feature_not_found "vnc-sasl"
1454     fi
1455     vnc_sasl=no
1456   fi
1457 fi
1458
1459 ##########################################
1460 # VNC JPEG detection
1461 if test "$vnc" = "yes" -a "$vnc_jpeg" != "no" ; then
1462 cat > $TMPC <<EOF
1463 #include <stdio.h>
1464 #include <jpeglib.h>
1465 int main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
1466 EOF
1467     vnc_jpeg_cflags=""
1468     vnc_jpeg_libs="-ljpeg"
1469   if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
1470     vnc_jpeg=yes
1471     libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
1472   else
1473     if test "$vnc_jpeg" = "yes" ; then
1474       feature_not_found "vnc-jpeg"
1475     fi
1476     vnc_jpeg=no
1477   fi
1478 fi
1479
1480 ##########################################
1481 # VNC PNG detection
1482 if test "$vnc" = "yes" -a "$vnc_png" != "no" ; then
1483 cat > $TMPC <<EOF
1484 //#include <stdio.h>
1485 #include <png.h>
1486 #include <stddef.h>
1487 int main(void) {
1488     png_structp png_ptr;
1489     png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1490     return 0;
1491 }
1492 EOF
1493     vnc_png_cflags=""
1494     vnc_png_libs="-lpng"
1495   if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
1496     vnc_png=yes
1497     libs_softmmu="$vnc_png_libs $libs_softmmu"
1498   else
1499     if test "$vnc_png" = "yes" ; then
1500       feature_not_found "vnc-png"
1501     fi
1502     vnc_png=no
1503   fi
1504 fi
1505
1506 ##########################################
1507 # fnmatch() probe, used for ACL routines
1508 fnmatch="no"
1509 cat > $TMPC << EOF
1510 #include <fnmatch.h>
1511 int main(void)
1512 {
1513     fnmatch("foo", "foo", 0);
1514     return 0;
1515 }
1516 EOF
1517 if compile_prog "" "" ; then
1518    fnmatch="yes"
1519 fi
1520
1521 ##########################################
1522 # uuid_generate() probe, used for vdi block driver
1523 if test "$uuid" != "no" ; then
1524   uuid_libs="-luuid"
1525   cat > $TMPC << EOF
1526 #include <uuid/uuid.h>
1527 int main(void)
1528 {
1529     uuid_t my_uuid;
1530     uuid_generate(my_uuid);
1531     return 0;
1532 }
1533 EOF
1534   if compile_prog "" "$uuid_libs" ; then
1535     uuid="yes"
1536     libs_softmmu="$uuid_libs $libs_softmmu"
1537     libs_tools="$uuid_libs $libs_tools"
1538   else
1539     if test "$uuid" = "yes" ; then
1540       feature_not_found "uuid"
1541     fi
1542     uuid=no
1543   fi
1544 fi
1545
1546 ##########################################
1547 # xfsctl() probe, used for raw-posix
1548 if test "$xfs" != "no" ; then
1549   cat > $TMPC << EOF
1550 #include <xfs/xfs.h>
1551 int main(void)
1552 {
1553     xfsctl(NULL, 0, 0, NULL);
1554     return 0;
1555 }
1556 EOF
1557   if compile_prog "" "" ; then
1558     xfs="yes"
1559   else
1560     if test "$xfs" = "yes" ; then
1561       feature_not_found "xfs"
1562     fi
1563     xfs=no
1564   fi
1565 fi
1566
1567 ##########################################
1568 # vde libraries probe
1569 if test "$vde" != "no" ; then
1570   vde_libs="-lvdeplug"
1571   cat > $TMPC << EOF
1572 #include <libvdeplug.h>
1573 int main(void)
1574 {
1575     struct vde_open_args a = {0, 0, 0};
1576     vde_open("", "", &a);
1577     return 0;
1578 }
1579 EOF
1580   if compile_prog "" "$vde_libs" ; then
1581     vde=yes
1582     libs_softmmu="$vde_libs $libs_softmmu"
1583     libs_tools="$vde_libs $libs_tools"
1584   else
1585     if test "$vde" = "yes" ; then
1586       feature_not_found "vde"
1587     fi
1588     vde=no
1589   fi
1590 fi
1591
1592 ##########################################
1593 # Sound support libraries probe
1594
1595 audio_drv_probe()
1596 {
1597     drv=$1
1598     hdr=$2
1599     lib=$3
1600     exp=$4
1601     cfl=$5
1602         cat > $TMPC << EOF
1603 #include <$hdr>
1604 int main(void) { $exp }
1605 EOF
1606     if compile_prog "$cfl" "$lib" ; then
1607         :
1608     else
1609         echo
1610         echo "Error: $drv check failed"
1611         echo "Make sure to have the $drv libs and headers installed."
1612         echo
1613         exit 1
1614     fi
1615 }
1616
1617 audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1618 for drv in $audio_drv_list; do
1619     case $drv in
1620     alsa)
1621     audio_drv_probe $drv alsa/asoundlib.h -lasound \
1622         "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1623     libs_softmmu="-lasound $libs_softmmu"
1624     ;;
1625
1626     fmod)
1627     if test -z $fmod_lib || test -z $fmod_inc; then
1628         echo
1629         echo "Error: You must specify path to FMOD library and headers"
1630         echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1631         echo
1632         exit 1
1633     fi
1634     audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1635     libs_softmmu="$fmod_lib $libs_softmmu"
1636     ;;
1637
1638     esd)
1639     audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1640     libs_softmmu="-lesd $libs_softmmu"
1641     audio_pt_int="yes"
1642     ;;
1643
1644     pa)
1645     audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
1646         "pa_simple *s = 0; pa_simple_free(s); return 0;"
1647     libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
1648     audio_pt_int="yes"
1649     ;;
1650
1651     coreaudio)
1652       libs_softmmu="-framework CoreAudio $libs_softmmu"
1653     ;;
1654
1655     dsound)
1656       libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1657       audio_win_int="yes"
1658     ;;
1659
1660     oss)
1661       libs_softmmu="$oss_lib $libs_softmmu"
1662     ;;
1663
1664     sdl|wav)
1665     # XXX: Probes for CoreAudio, DirectSound, SDL(?)
1666     ;;
1667
1668     winwave)
1669       libs_softmmu="-lwinmm $libs_softmmu"
1670       audio_win_int="yes"
1671     ;;
1672
1673     *)
1674     echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1675         echo
1676         echo "Error: Unknown driver '$drv' selected"
1677         echo "Possible drivers are: $audio_possible_drivers"
1678         echo
1679         exit 1
1680     }
1681     ;;
1682     esac
1683 done
1684
1685 ##########################################
1686 # BrlAPI probe
1687
1688 if test "$brlapi" != "no" ; then
1689   brlapi_libs="-lbrlapi"
1690   cat > $TMPC << EOF
1691 #include <brlapi.h>
1692 #include <stddef.h>
1693 int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
1694 EOF
1695   if compile_prog "" "$brlapi_libs" ; then
1696     brlapi=yes
1697     libs_softmmu="$brlapi_libs $libs_softmmu"
1698   else
1699     if test "$brlapi" = "yes" ; then
1700       feature_not_found "brlapi"
1701     fi
1702     brlapi=no
1703   fi
1704 fi
1705
1706 ##########################################
1707 # curses probe
1708 if test "$mingw32" = "yes" ; then
1709     curses_list="-lpdcurses"
1710 else
1711     curses_list="-lncurses -lcurses"
1712 fi
1713
1714 if test "$curses" != "no" ; then
1715   curses_found=no
1716   cat > $TMPC << EOF
1717 #include <curses.h>
1718 #ifdef __OpenBSD__
1719 #define resize_term resizeterm
1720 #endif
1721 int main(void) { resize_term(0, 0); return curses_version(); }
1722 EOF
1723   for curses_lib in $curses_list; do
1724     if compile_prog "" "$curses_lib" ; then
1725       curses_found=yes
1726       libs_softmmu="$curses_lib $libs_softmmu"
1727       break
1728     fi
1729   done
1730   if test "$curses_found" = "yes" ; then
1731     curses=yes
1732   else
1733     if test "$curses" = "yes" ; then
1734       feature_not_found "curses"
1735     fi
1736     curses=no
1737   fi
1738 fi
1739
1740 ##########################################
1741 # curl probe
1742
1743 if $pkg_config libcurl --modversion >/dev/null 2>&1; then
1744   curlconfig="$pkg_config libcurl"
1745 else
1746   curlconfig=curl-config
1747 fi
1748
1749 if test "$curl" != "no" ; then
1750   cat > $TMPC << EOF
1751 #include <curl/curl.h>
1752 int main(void) { curl_easy_init(); curl_multi_setopt(0, 0, 0); return 0; }
1753 EOF
1754   curl_cflags=`$curlconfig --cflags 2>/dev/null`
1755   curl_libs=`$curlconfig --libs 2>/dev/null`
1756   if compile_prog "$curl_cflags" "$curl_libs" ; then
1757     curl=yes
1758     libs_tools="$curl_libs $libs_tools"
1759     libs_softmmu="$curl_libs $libs_softmmu"
1760   else
1761     if test "$curl" = "yes" ; then
1762       feature_not_found "curl"
1763     fi
1764     curl=no
1765   fi
1766 fi # test "$curl"
1767
1768 ##########################################
1769 # check framework probe
1770
1771 if test "$check_utests" != "no" ; then
1772   cat > $TMPC << EOF
1773 #include <check.h>
1774 int main(void) { suite_create("qemu test"); return 0; }
1775 EOF
1776   check_libs=`$pkg_config --libs check`
1777   if compile_prog "" $check_libs ; then
1778     check_utests=yes
1779     libs_tools="$check_libs $libs_tools"
1780   else
1781     if test "$check_utests" = "yes" ; then
1782       feature_not_found "check"
1783     fi
1784     check_utests=no
1785   fi
1786 fi # test "$check_utests"
1787
1788 ##########################################
1789 # bluez support probe
1790 if test "$bluez" != "no" ; then
1791   cat > $TMPC << EOF
1792 #include <bluetooth/bluetooth.h>
1793 int main(void) { return bt_error(0); }
1794 EOF
1795   bluez_cflags=`$pkg_config --cflags bluez 2> /dev/null`
1796   bluez_libs=`$pkg_config --libs bluez 2> /dev/null`
1797   if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1798     bluez=yes
1799     libs_softmmu="$bluez_libs $libs_softmmu"
1800   else
1801     if test "$bluez" = "yes" ; then
1802       feature_not_found "bluez"
1803     fi
1804     bluez="no"
1805   fi
1806 fi
1807
1808 ##########################################
1809 # pthread probe
1810 PTHREADLIBS_LIST="-lpthread -lpthreadGC2"
1811
1812 pthread=no
1813 cat > $TMPC << EOF
1814 #include <pthread.h>
1815 int main(void) { pthread_create(0,0,0,0); return 0; }
1816 EOF
1817 if compile_prog "" "" ; then
1818   pthread=yes
1819 else
1820   for pthread_lib in $PTHREADLIBS_LIST; do
1821     if compile_prog "" "$pthread_lib" ; then
1822       pthread=yes
1823       LIBS="$pthread_lib $LIBS"
1824       break
1825     fi
1826   done
1827 fi
1828
1829 if test "$mingw32" != yes -a "$pthread" = no; then
1830   echo
1831   echo "Error: pthread check failed"
1832   echo "Make sure to have the pthread libs and headers installed."
1833   echo
1834   exit 1
1835 fi
1836
1837 ##########################################
1838 # rbd probe
1839 if test "$rbd" != "no" ; then
1840   cat > $TMPC <<EOF
1841 #include <stdio.h>
1842 #include <rbd/librbd.h>
1843 int main(void) {
1844     rados_t cluster;
1845     rados_create(&cluster, NULL);
1846     return 0;
1847 }
1848 EOF
1849   rbd_libs="-lrbd -lrados"
1850   if compile_prog "" "$rbd_libs" ; then
1851     rbd=yes
1852     libs_tools="$rbd_libs $libs_tools"
1853     libs_softmmu="$rbd_libs $libs_softmmu"
1854   else
1855     if test "$rbd" = "yes" ; then
1856       feature_not_found "rados block device"
1857     fi
1858     rbd=no
1859   fi
1860 fi
1861
1862 ##########################################
1863 # linux-aio probe
1864
1865 if test "$linux_aio" != "no" ; then
1866   cat > $TMPC <<EOF
1867 #include <libaio.h>
1868 #include <sys/eventfd.h>
1869 #include <stddef.h>
1870 int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
1871 EOF
1872   if compile_prog "" "-laio" ; then
1873     linux_aio=yes
1874     libs_softmmu="$libs_softmmu -laio"
1875     libs_tools="$libs_tools -laio"
1876   else
1877     if test "$linux_aio" = "yes" ; then
1878       feature_not_found "linux AIO"
1879     fi
1880     linux_aio=no
1881   fi
1882 fi
1883
1884 ##########################################
1885 # attr probe
1886
1887 if test "$attr" != "no" ; then
1888   cat > $TMPC <<EOF
1889 #include <stdio.h>
1890 #include <sys/types.h>
1891 #include <attr/xattr.h>
1892 int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
1893 EOF
1894   if compile_prog "" "-lattr" ; then
1895     attr=yes
1896     LIBS="-lattr $LIBS"
1897   else
1898     if test "$attr" = "yes" ; then
1899       feature_not_found "ATTR"
1900     fi
1901     attr=no
1902   fi
1903 fi
1904
1905 ##########################################
1906 # iovec probe
1907 cat > $TMPC <<EOF
1908 #include <sys/types.h>
1909 #include <sys/uio.h>
1910 #include <unistd.h>
1911 int main(void) { struct iovec iov; return 0; }
1912 EOF
1913 iovec=no
1914 if compile_prog "" "" ; then
1915   iovec=yes
1916 fi
1917
1918 ##########################################
1919 # preadv probe
1920 cat > $TMPC <<EOF
1921 #include <sys/types.h>
1922 #include <sys/uio.h>
1923 #include <unistd.h>
1924 int main(void) { preadv; }
1925 EOF
1926 preadv=no
1927 if compile_prog "" "" ; then
1928   preadv=yes
1929 fi
1930
1931 ##########################################
1932 # fdt probe
1933 if test "$fdt" != "no" ; then
1934   fdt_libs="-lfdt"
1935   cat > $TMPC << EOF
1936 int main(void) { return 0; }
1937 EOF
1938   if compile_prog "" "$fdt_libs" ; then
1939     fdt=yes
1940   else
1941     if test "$fdt" = "yes" ; then
1942       feature_not_found "fdt"
1943     fi
1944     fdt_libs=
1945     fdt=no
1946   fi
1947 fi
1948
1949 ##########################################
1950 # opengl probe, used by milkymist-tmu2
1951 if test "$opengl" != "no" ; then
1952   opengl_libs="-lGL"
1953   cat > $TMPC << EOF
1954 #include <X11/Xlib.h>
1955 #include <GL/gl.h>
1956 #include <GL/glx.h>
1957 int main(void) { GL_VERSION; return 0; }
1958 EOF
1959   if compile_prog "" "-lGL" ; then
1960     opengl=yes
1961   else
1962     if test "$opengl" = "yes" ; then
1963       feature_not_found "opengl"
1964     fi
1965     opengl_libs=
1966     opengl=no
1967   fi
1968 fi
1969
1970 #
1971 # Check for xxxat() functions when we are building linux-user
1972 # emulator.  This is done because older glibc versions don't
1973 # have syscall stubs for these implemented.
1974 #
1975 atfile=no
1976 cat > $TMPC << EOF
1977 #define _ATFILE_SOURCE
1978 #include <sys/types.h>
1979 #include <fcntl.h>
1980 #include <unistd.h>
1981
1982 int
1983 main(void)
1984 {
1985         /* try to unlink nonexisting file */
1986         return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
1987 }
1988 EOF
1989 if compile_prog "" "" ; then
1990   atfile=yes
1991 fi
1992
1993 # Check for inotify functions when we are building linux-user
1994 # emulator.  This is done because older glibc versions don't
1995 # have syscall stubs for these implemented.  In that case we
1996 # don't provide them even if kernel supports them.
1997 #
1998 inotify=no
1999 cat > $TMPC << EOF
2000 #include <sys/inotify.h>
2001
2002 int
2003 main(void)
2004 {
2005         /* try to start inotify */
2006         return inotify_init();
2007 }
2008 EOF
2009 if compile_prog "" "" ; then
2010   inotify=yes
2011 fi
2012
2013 inotify1=no
2014 cat > $TMPC << EOF
2015 #include <sys/inotify.h>
2016
2017 int
2018 main(void)
2019 {
2020     /* try to start inotify */
2021     return inotify_init1(0);
2022 }
2023 EOF
2024 if compile_prog "" "" ; then
2025   inotify1=yes
2026 fi
2027
2028 # check if utimensat and futimens are supported
2029 utimens=no
2030 cat > $TMPC << EOF
2031 #define _ATFILE_SOURCE
2032 #include <stddef.h>
2033 #include <fcntl.h>
2034
2035 int main(void)
2036 {
2037     utimensat(AT_FDCWD, "foo", NULL, 0);
2038     futimens(0, NULL);
2039     return 0;
2040 }
2041 EOF
2042 if compile_prog "" "" ; then
2043   utimens=yes
2044 fi
2045
2046 # check if pipe2 is there
2047 pipe2=no
2048 cat > $TMPC << EOF
2049 #include <unistd.h>
2050 #include <fcntl.h>
2051
2052 int main(void)
2053 {
2054     int pipefd[2];
2055     pipe2(pipefd, O_CLOEXEC);
2056     return 0;
2057 }
2058 EOF
2059 if compile_prog "" "" ; then
2060   pipe2=yes
2061 fi
2062
2063 # check if accept4 is there
2064 accept4=no
2065 cat > $TMPC << EOF
2066 #include <sys/socket.h>
2067 #include <stddef.h>
2068
2069 int main(void)
2070 {
2071     accept4(0, NULL, NULL, SOCK_CLOEXEC);
2072     return 0;
2073 }
2074 EOF
2075 if compile_prog "" "" ; then
2076   accept4=yes
2077 fi
2078
2079 # check if tee/splice is there. vmsplice was added same time.
2080 splice=no
2081 cat > $TMPC << EOF
2082 #include <unistd.h>
2083 #include <fcntl.h>
2084 #include <limits.h>
2085
2086 int main(void)
2087 {
2088     int len, fd;
2089     len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
2090     splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
2091     return 0;
2092 }
2093 EOF
2094 if compile_prog "" "" ; then
2095   splice=yes
2096 fi
2097
2098 ##########################################
2099 # signalfd probe
2100 signalfd="no"
2101 cat > $TMPC << EOF
2102 #define _GNU_SOURCE
2103 #include <unistd.h>
2104 #include <sys/syscall.h>
2105 #include <signal.h>
2106 int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
2107 EOF
2108
2109 if compile_prog "" "" ; then
2110   signalfd=yes
2111 elif test "$kvm" = "yes" -a "$io_thread" != "yes"; then
2112   echo
2113   echo "ERROR: Host kernel lacks signalfd() support,"
2114   echo "but KVM depends on it when the IO thread is disabled."
2115   echo
2116   exit 1
2117 fi
2118
2119 # check if eventfd is supported
2120 eventfd=no
2121 cat > $TMPC << EOF
2122 #include <sys/eventfd.h>
2123
2124 int main(void)
2125 {
2126     int efd = eventfd(0, 0);
2127     return 0;
2128 }
2129 EOF
2130 if compile_prog "" "" ; then
2131   eventfd=yes
2132 fi
2133
2134 # check for fallocate
2135 fallocate=no
2136 cat > $TMPC << EOF
2137 #include <fcntl.h>
2138
2139 int main(void)
2140 {
2141     fallocate(0, 0, 0, 0);
2142     return 0;
2143 }
2144 EOF
2145 if compile_prog "$ARCH_CFLAGS" "" ; then
2146   fallocate=yes
2147 fi
2148
2149 # check for sync_file_range
2150 sync_file_range=no
2151 cat > $TMPC << EOF
2152 #include <fcntl.h>
2153
2154 int main(void)
2155 {
2156     sync_file_range(0, 0, 0, 0);
2157     return 0;
2158 }
2159 EOF
2160 if compile_prog "$ARCH_CFLAGS" "" ; then
2161   sync_file_range=yes
2162 fi
2163
2164 # check for linux/fiemap.h and FS_IOC_FIEMAP
2165 fiemap=no
2166 cat > $TMPC << EOF
2167 #include <sys/ioctl.h>
2168 #include <linux/fs.h>
2169 #include <linux/fiemap.h>
2170
2171 int main(void)
2172 {
2173     ioctl(0, FS_IOC_FIEMAP, 0);
2174     return 0;
2175 }
2176 EOF
2177 if compile_prog "$ARCH_CFLAGS" "" ; then
2178   fiemap=yes
2179 fi
2180
2181 # check for dup3
2182 dup3=no
2183 cat > $TMPC << EOF
2184 #include <unistd.h>
2185
2186 int main(void)
2187 {
2188     dup3(0, 0, 0);
2189     return 0;
2190 }
2191 EOF
2192 if compile_prog "" "" ; then
2193   dup3=yes
2194 fi
2195
2196 # check for epoll support
2197 epoll=no
2198 cat > $TMPC << EOF
2199 #include <sys/epoll.h>
2200
2201 int main(void)
2202 {
2203     epoll_create(0);
2204     return 0;
2205 }
2206 EOF
2207 if compile_prog "$ARCH_CFLAGS" "" ; then
2208   epoll=yes
2209 fi
2210
2211 # epoll_create1 and epoll_pwait are later additions
2212 # so we must check separately for their presence
2213 epoll_create1=no
2214 cat > $TMPC << EOF
2215 #include <sys/epoll.h>
2216
2217 int main(void)
2218 {
2219     /* Note that we use epoll_create1 as a value, not as
2220      * a function being called. This is necessary so that on
2221      * old SPARC glibc versions where the function was present in
2222      * the library but not declared in the header file we will
2223      * fail the configure check. (Otherwise we will get a compiler
2224      * warning but not an error, and will proceed to fail the
2225      * qemu compile where we compile with -Werror.)
2226      */
2227     epoll_create1;
2228     return 0;
2229 }
2230 EOF
2231 if compile_prog "$ARCH_CFLAGS" "" ; then
2232   epoll_create1=yes
2233 fi
2234
2235 epoll_pwait=no
2236 cat > $TMPC << EOF
2237 #include <sys/epoll.h>
2238
2239 int main(void)
2240 {
2241     epoll_pwait(0, 0, 0, 0, 0);
2242     return 0;
2243 }
2244 EOF
2245 if compile_prog "$ARCH_CFLAGS" "" ; then
2246   epoll_pwait=yes
2247 fi
2248
2249 # Check if tools are available to build documentation.
2250 if test "$docs" != "no" ; then
2251   if has makeinfo && has pod2man; then
2252     docs=yes
2253   else
2254     if test "$docs" = "yes" ; then
2255       feature_not_found "docs"
2256     fi
2257     docs=no
2258   fi
2259 fi
2260
2261 # Search for bswap_32 function
2262 byteswap_h=no
2263 cat > $TMPC << EOF
2264 #include <byteswap.h>
2265 int main(void) { return bswap_32(0); }
2266 EOF
2267 if compile_prog "" "" ; then
2268   byteswap_h=yes
2269 fi
2270
2271 # Search for bswap_32 function
2272 bswap_h=no
2273 cat > $TMPC << EOF
2274 #include <sys/endian.h>
2275 #include <sys/types.h>
2276 #include <machine/bswap.h>
2277 int main(void) { return bswap32(0); }
2278 EOF
2279 if compile_prog "" "" ; then
2280   bswap_h=yes
2281 fi
2282
2283 ##########################################
2284 # Do we need librt
2285 cat > $TMPC <<EOF
2286 #include <signal.h>
2287 #include <time.h>
2288 int main(void) { clockid_t id; return clock_gettime(id, NULL); }
2289 EOF
2290
2291 if compile_prog "" "" ; then
2292   :
2293 elif compile_prog "" "-lrt" ; then
2294   LIBS="-lrt $LIBS"
2295 fi
2296
2297 if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2298         "$aix" != "yes" -a "$haiku" != "yes" ; then
2299     libs_softmmu="-lutil $libs_softmmu"
2300 fi
2301
2302 ##########################################
2303 # check if the compiler defines offsetof
2304
2305 need_offsetof=yes
2306 cat > $TMPC << EOF
2307 #include <stddef.h>
2308 int main(void) { struct s { int f; }; return offsetof(struct s, f); }
2309 EOF
2310 if compile_prog "" "" ; then
2311     need_offsetof=no
2312 fi
2313
2314 ##########################################
2315 # check if the compiler understands attribute warn_unused_result
2316 #
2317 # This could be smarter, but gcc -Werror does not error out even when warning
2318 # about attribute warn_unused_result
2319
2320 gcc_attribute_warn_unused_result=no
2321 cat > $TMPC << EOF
2322 #if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
2323 #error gcc 3.3 or older
2324 #endif
2325 int main(void) { return 0;}
2326 EOF
2327 if compile_prog "" ""; then
2328     gcc_attribute_warn_unused_result=yes
2329 fi
2330
2331 # spice probe
2332 if test "$spice" != "no" ; then
2333   cat > $TMPC << EOF
2334 #include <spice.h>
2335 int main(void) { spice_server_new(); return 0; }
2336 EOF
2337   spice_cflags=$($pkg_config --cflags spice-protocol spice-server 2>/dev/null)
2338   spice_libs=$($pkg_config --libs spice-protocol spice-server 2>/dev/null)
2339   if $pkg_config --atleast-version=0.6.0 spice-server >/dev/null 2>&1 && \
2340      compile_prog "$spice_cflags" "$spice_libs" ; then
2341     spice="yes"
2342     libs_softmmu="$libs_softmmu $spice_libs"
2343     QEMU_CFLAGS="$QEMU_CFLAGS $spice_cflags"
2344   else
2345     if test "$spice" = "yes" ; then
2346       feature_not_found "spice"
2347     fi
2348     spice="no"
2349   fi
2350 fi
2351
2352 # check for libcacard for smartcard support
2353 if test "$smartcard" != "no" ; then
2354     smartcard="yes"
2355     smartcard_cflags=""
2356     # TODO - what's the minimal nss version we support?
2357     if test "$smartcard_nss" != "no"; then
2358         if $pkg_config --atleast-version=3.12.8 nss >/dev/null 2>&1 ; then
2359             smartcard_nss="yes"
2360             smartcard_cflags="-I\$(SRC_PATH)/libcacard"
2361             libcacard_libs=$($pkg_config --libs nss 2>/dev/null)
2362             libcacard_cflags=$($pkg_config --cflags nss 2>/dev/null)
2363             QEMU_CFLAGS="$QEMU_CFLAGS $smartcard_cflags $libcacard_cflags"
2364             LIBS="$libcacard_libs $LIBS"
2365         else
2366             if test "$smartcard_nss" = "yes"; then
2367                 feature_not_found "nss"
2368             fi
2369             smartcard_nss="no"
2370         fi
2371     fi
2372 fi
2373 if test "$smartcard" = "no" ; then
2374     smartcard_nss="no"
2375 fi
2376
2377 ##########################################
2378
2379 ##########################################
2380 # check if we have fdatasync
2381
2382 fdatasync=no
2383 cat > $TMPC << EOF
2384 #include <unistd.h>
2385 int main(void) {
2386 #if defined(_POSIX_SYNCHRONIZED_IO) && _POSIX_SYNCHRONIZED_IO > 0
2387 return fdatasync(0);
2388 #else
2389 #abort Not supported
2390 #endif
2391 }
2392 EOF
2393 if compile_prog "" "" ; then
2394     fdatasync=yes
2395 fi
2396
2397 ##########################################
2398 # check if we have madvise
2399
2400 madvise=no
2401 cat > $TMPC << EOF
2402 #include <sys/types.h>
2403 #include <sys/mman.h>
2404 #include <stddef.h>
2405 int main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
2406 EOF
2407 if compile_prog "" "" ; then
2408     madvise=yes
2409 fi
2410
2411 ##########################################
2412 # check if we have posix_madvise
2413
2414 posix_madvise=no
2415 cat > $TMPC << EOF
2416 #include <sys/mman.h>
2417 #include <stddef.h>
2418 int main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
2419 EOF
2420 if compile_prog "" "" ; then
2421     posix_madvise=yes
2422 fi
2423
2424 ##########################################
2425 # check if trace backend exists
2426
2427 sh "$source_path/scripts/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
2428 if test "$?" -ne 0 ; then
2429   echo
2430   echo "Error: invalid trace backend"
2431   echo "Please choose a supported trace backend."
2432   echo
2433   exit 1
2434 fi
2435
2436 ##########################################
2437 # For 'ust' backend, test if ust headers are present
2438 if test "$trace_backend" = "ust"; then
2439   cat > $TMPC << EOF
2440 #include <ust/tracepoint.h>
2441 #include <ust/marker.h>
2442 int main(void) { return 0; }
2443 EOF
2444   if compile_prog "" "" ; then
2445     LIBS="-lust $LIBS"
2446   else
2447     echo
2448     echo "Error: Trace backend 'ust' missing libust header files"
2449     echo
2450     exit 1
2451   fi
2452 fi
2453
2454 ##########################################
2455 # For 'dtrace' backend, test if 'dtrace' command is present
2456 if test "$trace_backend" = "dtrace"; then
2457   if ! has 'dtrace' ; then
2458     echo
2459     echo "Error: dtrace command is not found in PATH $PATH"
2460     echo
2461     exit 1
2462   fi
2463   trace_backend_stap="no"
2464   if has 'stap' ; then
2465     trace_backend_stap="yes"
2466   fi
2467 fi
2468
2469 ##########################################
2470 # End of CC checks
2471 # After here, no more $cc or $ld runs
2472
2473 if test "$debug" = "no" ; then
2474   CFLAGS="-O2 $CFLAGS"
2475 fi
2476
2477 # Consult white-list to determine whether to enable werror
2478 # by default.  Only enable by default for git builds
2479 z_version=`cut -f3 -d. $source_path/VERSION`
2480
2481 if test -z "$werror" ; then
2482     if test "$z_version" = "50" -a \
2483         "$linux" = "yes" ; then
2484         werror="yes"
2485     else
2486         werror="no"
2487     fi
2488 fi
2489
2490 # Disable zero malloc errors for official releases unless explicitly told to
2491 # enable/disable
2492 if test -z "$zero_malloc" ; then
2493     if test "$z_version" = "50" ; then
2494         zero_malloc="no"
2495     else
2496         zero_malloc="yes"
2497     fi
2498 fi
2499
2500 if test "$werror" = "yes" ; then
2501     QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2502 fi
2503
2504 if test "$solaris" = "no" ; then
2505     if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
2506         LDFLAGS="-Wl,--warn-common $LDFLAGS"
2507     fi
2508 fi
2509
2510 # Use ASLR, no-SEH and DEP if available
2511 if test "$mingw32" = "yes" ; then
2512     for flag in --dynamicbase --no-seh --nxcompat; do
2513         if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
2514             LDFLAGS="-Wl,$flag $LDFLAGS"
2515         fi
2516     done
2517 fi
2518
2519 confdir=$sysconfdir$confsuffix
2520
2521 tools=
2522 if test "$softmmu" = yes ; then
2523   tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
2524   if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
2525       tools="qemu-nbd\$(EXESUF) $tools"
2526     if [ "$check_utests" = "yes" ]; then
2527       tools="check-qint check-qstring check-qdict check-qlist $tools"
2528       tools="check-qfloat check-qjson $tools"
2529     fi
2530   fi
2531 fi
2532
2533 # Mac OS X ships with a broken assembler
2534 roms=
2535 if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
2536         "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
2537         "$softmmu" = yes ; then
2538   roms="optionrom"
2539 fi
2540 if test "$cpu" = "ppc64" -a "$targetos" != "Darwin" ; then
2541   roms="$roms spapr-rtas"
2542 fi
2543
2544 echo "Install prefix    $prefix"
2545 echo "BIOS directory    `eval echo $datadir`"
2546 echo "binary directory  `eval echo $bindir`"
2547 echo "library directory `eval echo $libdir`"
2548 echo "include directory `eval echo $includedir`"
2549 echo "config directory  `eval echo $sysconfdir`"
2550 if test "$mingw32" = "no" ; then
2551 echo "Manual directory  `eval echo $mandir`"
2552 echo "ELF interp prefix $interp_prefix"
2553 fi
2554 echo "Source path       $source_path"
2555 echo "C compiler        $cc"
2556 echo "Host C compiler   $host_cc"
2557 echo "CFLAGS            $CFLAGS"
2558 echo "QEMU_CFLAGS       $QEMU_CFLAGS"
2559 echo "LDFLAGS           $LDFLAGS"
2560 echo "make              $make"
2561 echo "install           $install"
2562 echo "host CPU          $cpu"
2563 echo "host big endian   $bigendian"
2564 echo "target list       $target_list"
2565 echo "tcg debug enabled $debug_tcg"
2566 echo "Mon debug enabled $debug_mon"
2567 echo "gprof enabled     $gprof"
2568 echo "sparse enabled    $sparse"
2569 echo "strip binaries    $strip_opt"
2570 echo "profiler          $profiler"
2571 echo "static build      $static"
2572 echo "-Werror enabled   $werror"
2573 if test "$darwin" = "yes" ; then
2574     echo "Cocoa support     $cocoa"
2575 fi
2576 echo "SDL support       $sdl"
2577 echo "curses support    $curses"
2578 echo "curl support      $curl"
2579 echo "check support     $check_utests"
2580 echo "mingw32 support   $mingw32"
2581 echo "Audio drivers     $audio_drv_list"
2582 echo "Extra audio cards $audio_card_list"
2583 echo "Block whitelist   $block_drv_whitelist"
2584 echo "Mixer emulation   $mixemu"
2585 echo "VNC support       $vnc"
2586 if test "$vnc" = "yes" ; then
2587     echo "VNC TLS support   $vnc_tls"
2588     echo "VNC SASL support  $vnc_sasl"
2589     echo "VNC JPEG support  $vnc_jpeg"
2590     echo "VNC PNG support   $vnc_png"
2591     echo "VNC thread        $vnc_thread"
2592 fi
2593 if test -n "$sparc_cpu"; then
2594     echo "Target Sparc Arch $sparc_cpu"
2595 fi
2596 echo "xen support       $xen"
2597 echo "brlapi support    $brlapi"
2598 echo "bluez  support    $bluez"
2599 echo "Documentation     $docs"
2600 [ ! -z "$uname_release" ] && \
2601 echo "uname -r          $uname_release"
2602 echo "NPTL support      $nptl"
2603 echo "GUEST_BASE        $guest_base"
2604 echo "PIE user targets  $user_pie"
2605 echo "vde support       $vde"
2606 echo "IO thread         $io_thread"
2607 echo "Linux AIO support $linux_aio"
2608 echo "ATTR/XATTR support $attr"
2609 echo "Install blobs     $blobs"
2610 echo "KVM support       $kvm"
2611 echo "fdt support       $fdt"
2612 echo "preadv support    $preadv"
2613 echo "fdatasync         $fdatasync"
2614 echo "madvise           $madvise"
2615 echo "posix_madvise     $posix_madvise"
2616 echo "uuid support      $uuid"
2617 echo "vhost-net support $vhost_net"
2618 echo "Trace backend     $trace_backend"
2619 echo "Trace output file $trace_file-<pid>"
2620 echo "spice support     $spice"
2621 echo "rbd support       $rbd"
2622 echo "xfsctl support    $xfs"
2623 echo "nss used          $smartcard_nss"
2624 echo "OpenGL support    $opengl"
2625
2626 if test $sdl_too_old = "yes"; then
2627 echo "-> Your SDL version is too old - please upgrade to have SDL support"
2628 fi
2629
2630 config_host_mak="config-host.mak"
2631 config_host_ld="config-host.ld"
2632
2633 echo "# Automatically generated by configure - do not modify" > $config_host_mak
2634 printf "# Configured with:" >> $config_host_mak
2635 printf " '%s'" "$0" "$@" >> $config_host_mak
2636 echo >> $config_host_mak
2637
2638 echo all: >> $config_host_mak
2639 echo "prefix=$prefix" >> $config_host_mak
2640 echo "bindir=$bindir" >> $config_host_mak
2641 echo "libdir=$libdir" >> $config_host_mak
2642 echo "includedir=$includedir" >> $config_host_mak
2643 echo "mandir=$mandir" >> $config_host_mak
2644 echo "datadir=$datadir" >> $config_host_mak
2645 echo "sysconfdir=$sysconfdir" >> $config_host_mak
2646 echo "docdir=$docdir" >> $config_host_mak
2647 echo "confdir=$confdir" >> $config_host_mak
2648
2649 case "$cpu" in
2650   i386|x86_64|alpha|cris|hppa|ia64|lm32|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64|unicore32)
2651     ARCH=$cpu
2652   ;;
2653   armv4b|armv4l)
2654     ARCH=arm
2655   ;;
2656 esac
2657 echo "ARCH=$ARCH" >> $config_host_mak
2658 if test "$debug_tcg" = "yes" ; then
2659   echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2660 fi
2661 if test "$debug_mon" = "yes" ; then
2662   echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
2663 fi
2664 if test "$debug" = "yes" ; then
2665   echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
2666 fi
2667 if test "$strip_opt" = "yes" ; then
2668   echo "STRIP=${strip}" >> $config_host_mak
2669 fi
2670 if test "$bigendian" = "yes" ; then
2671   echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
2672 fi
2673 echo "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
2674 if test "$mingw32" = "yes" ; then
2675   echo "CONFIG_WIN32=y" >> $config_host_mak
2676   rc_version=`cat $source_path/VERSION`
2677   version_major=${rc_version%%.*}
2678   rc_version=${rc_version#*.}
2679   version_minor=${rc_version%%.*}
2680   rc_version=${rc_version#*.}
2681   version_subminor=${rc_version%%.*}
2682   version_micro=0
2683   echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
2684   echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
2685 else
2686   echo "CONFIG_POSIX=y" >> $config_host_mak
2687 fi
2688
2689 if test "$linux" = "yes" ; then
2690   echo "CONFIG_LINUX=y" >> $config_host_mak
2691 fi
2692
2693 if test "$darwin" = "yes" ; then
2694   echo "CONFIG_DARWIN=y" >> $config_host_mak
2695 fi
2696
2697 if test "$aix" = "yes" ; then
2698   echo "CONFIG_AIX=y" >> $config_host_mak
2699 fi
2700
2701 if test "$solaris" = "yes" ; then
2702   echo "CONFIG_SOLARIS=y" >> $config_host_mak
2703   echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
2704   if test "$needs_libsunmath" = "yes" ; then
2705     echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
2706   fi
2707 fi
2708 if test "$haiku" = "yes" ; then
2709   echo "CONFIG_HAIKU=y" >> $config_host_mak
2710 fi
2711 if test "$static" = "yes" ; then
2712   echo "CONFIG_STATIC=y" >> $config_host_mak
2713 fi
2714 if test $profiler = "yes" ; then
2715   echo "CONFIG_PROFILER=y" >> $config_host_mak
2716 fi
2717 if test "$slirp" = "yes" ; then
2718   echo "CONFIG_SLIRP=y" >> $config_host_mak
2719   QEMU_INCLUDES="-I\$(SRC_PATH)/slirp $QEMU_INCLUDES"
2720 fi
2721 if test "$vde" = "yes" ; then
2722   echo "CONFIG_VDE=y" >> $config_host_mak
2723 fi
2724 for card in $audio_card_list; do
2725     def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
2726     echo "$def=y" >> $config_host_mak
2727 done
2728 echo "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
2729 for drv in $audio_drv_list; do
2730     def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
2731     echo "$def=y" >> $config_host_mak
2732     if test "$drv" = "fmod"; then
2733         echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
2734     fi
2735 done
2736 if test "$audio_pt_int" = "yes" ; then
2737   echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
2738 fi
2739 if test "$audio_win_int" = "yes" ; then
2740   echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
2741 fi
2742 echo "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
2743 if test "$mixemu" = "yes" ; then
2744   echo "CONFIG_MIXEMU=y" >> $config_host_mak
2745 fi
2746 if test "$vnc" = "yes" ; then
2747   echo "CONFIG_VNC=y" >> $config_host_mak
2748 fi
2749 if test "$vnc_tls" = "yes" ; then
2750   echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2751   echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
2752 fi
2753 if test "$vnc_sasl" = "yes" ; then
2754   echo "CONFIG_VNC_SASL=y" >> $config_host_mak
2755   echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
2756 fi
2757 if test "$vnc_jpeg" = "yes" ; then
2758   echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
2759   echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
2760 fi
2761 if test "$vnc_png" = "yes" ; then
2762   echo "CONFIG_VNC_PNG=y" >> $config_host_mak
2763   echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
2764 fi
2765 if test "$vnc_thread" = "yes" ; then
2766   echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
2767 fi
2768 if test "$fnmatch" = "yes" ; then
2769   echo "CONFIG_FNMATCH=y" >> $config_host_mak
2770 fi
2771 if test "$uuid" = "yes" ; then
2772   echo "CONFIG_UUID=y" >> $config_host_mak
2773 fi
2774 if test "$xfs" = "yes" ; then
2775   echo "CONFIG_XFS=y" >> $config_host_mak
2776 fi
2777 qemu_version=`head $source_path/VERSION`
2778 echo "VERSION=$qemu_version" >>$config_host_mak
2779 echo "PKGVERSION=$pkgversion" >>$config_host_mak
2780 echo "SRC_PATH=$source_path" >> $config_host_mak
2781 echo "TARGET_DIRS=$target_list" >> $config_host_mak
2782 if [ "$docs" = "yes" ] ; then
2783   echo "BUILD_DOCS=yes" >> $config_host_mak
2784 fi
2785 if test "$sdl" = "yes" ; then
2786   echo "CONFIG_SDL=y" >> $config_host_mak
2787   echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
2788 fi
2789 if test "$cocoa" = "yes" ; then
2790   echo "CONFIG_COCOA=y" >> $config_host_mak
2791 fi
2792 if test "$curses" = "yes" ; then
2793   echo "CONFIG_CURSES=y" >> $config_host_mak
2794 fi
2795 if test "$atfile" = "yes" ; then
2796   echo "CONFIG_ATFILE=y" >> $config_host_mak
2797 fi
2798 if test "$utimens" = "yes" ; then
2799   echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
2800 fi
2801 if test "$pipe2" = "yes" ; then
2802   echo "CONFIG_PIPE2=y" >> $config_host_mak
2803 fi
2804 if test "$accept4" = "yes" ; then
2805   echo "CONFIG_ACCEPT4=y" >> $config_host_mak
2806 fi
2807 if test "$splice" = "yes" ; then
2808   echo "CONFIG_SPLICE=y" >> $config_host_mak
2809 fi
2810 if test "$eventfd" = "yes" ; then
2811   echo "CONFIG_EVENTFD=y" >> $config_host_mak
2812 fi
2813 if test "$fallocate" = "yes" ; then
2814   echo "CONFIG_FALLOCATE=y" >> $config_host_mak
2815 fi
2816 if test "$sync_file_range" = "yes" ; then
2817   echo "CONFIG_SYNC_FILE_RANGE=y" >> $config_host_mak
2818 fi
2819 if test "$fiemap" = "yes" ; then
2820   echo "CONFIG_FIEMAP=y" >> $config_host_mak
2821 fi
2822 if test "$dup3" = "yes" ; then
2823   echo "CONFIG_DUP3=y" >> $config_host_mak
2824 fi
2825 if test "$epoll" = "yes" ; then
2826   echo "CONFIG_EPOLL=y" >> $config_host_mak
2827 fi
2828 if test "$epoll_create1" = "yes" ; then
2829   echo "CONFIG_EPOLL_CREATE1=y" >> $config_host_mak
2830 fi
2831 if test "$epoll_pwait" = "yes" ; then
2832   echo "CONFIG_EPOLL_PWAIT=y" >> $config_host_mak
2833 fi
2834 if test "$inotify" = "yes" ; then
2835   echo "CONFIG_INOTIFY=y" >> $config_host_mak
2836 fi
2837 if test "$inotify1" = "yes" ; then
2838   echo "CONFIG_INOTIFY1=y" >> $config_host_mak
2839 fi
2840 if test "$byteswap_h" = "yes" ; then
2841   echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
2842 fi
2843 if test "$bswap_h" = "yes" ; then
2844   echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
2845 fi
2846 if test "$curl" = "yes" ; then
2847   echo "CONFIG_CURL=y" >> $config_host_mak
2848   echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
2849 fi
2850 if test "$brlapi" = "yes" ; then
2851   echo "CONFIG_BRLAPI=y" >> $config_host_mak
2852 fi
2853 if test "$bluez" = "yes" ; then
2854   echo "CONFIG_BLUEZ=y" >> $config_host_mak
2855   echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
2856 fi
2857 if test "$xen" = "yes" ; then
2858   echo "CONFIG_XEN_BACKEND=y" >> $config_host_mak
2859   echo "CONFIG_XEN_CTRL_INTERFACE_VERSION=$xen_ctrl_version" >> $config_host_mak
2860 fi
2861 if test "$io_thread" = "yes" ; then
2862   echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2863 fi
2864 if test "$linux_aio" = "yes" ; then
2865   echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
2866 fi
2867 if test "$attr" = "yes" ; then
2868   echo "CONFIG_ATTR=y" >> $config_host_mak
2869 fi
2870 if test "$linux" = "yes" ; then
2871   if test "$attr" = "yes" ; then
2872     echo "CONFIG_VIRTFS=y" >> $config_host_mak
2873   fi
2874 fi
2875 if test "$blobs" = "yes" ; then
2876   echo "INSTALL_BLOBS=yes" >> $config_host_mak
2877 fi
2878 if test "$iovec" = "yes" ; then
2879   echo "CONFIG_IOVEC=y" >> $config_host_mak
2880 fi
2881 if test "$preadv" = "yes" ; then
2882   echo "CONFIG_PREADV=y" >> $config_host_mak
2883 fi
2884 if test "$fdt" = "yes" ; then
2885   echo "CONFIG_FDT=y" >> $config_host_mak
2886 fi
2887 if test "$signalfd" = "yes" ; then
2888   echo "CONFIG_SIGNALFD=y" >> $config_host_mak
2889 fi
2890 if test "$need_offsetof" = "yes" ; then
2891   echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
2892 fi
2893 if test "$gcc_attribute_warn_unused_result" = "yes" ; then
2894   echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
2895 fi
2896 if test "$fdatasync" = "yes" ; then
2897   echo "CONFIG_FDATASYNC=y" >> $config_host_mak
2898 fi
2899 if test "$madvise" = "yes" ; then
2900   echo "CONFIG_MADVISE=y" >> $config_host_mak
2901 fi
2902 if test "$posix_madvise" = "yes" ; then
2903   echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
2904 fi
2905
2906 if test "$spice" = "yes" ; then
2907   echo "CONFIG_SPICE=y" >> $config_host_mak
2908 fi
2909
2910 if test "$smartcard" = "yes" ; then
2911   echo "CONFIG_SMARTCARD=y" >> $config_host_mak
2912 fi
2913
2914 if test "$smartcard_nss" = "yes" ; then
2915   echo "CONFIG_SMARTCARD_NSS=y" >> $config_host_mak
2916 fi
2917
2918 if test "$opengl" = "yes" ; then
2919   echo "CONFIG_OPENGL=y" >> $config_host_mak
2920 fi
2921
2922 # XXX: suppress that
2923 if [ "$bsd" = "yes" ] ; then
2924   echo "CONFIG_BSD=y" >> $config_host_mak
2925 fi
2926
2927 echo "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2928
2929 if test "$zero_malloc" = "yes" ; then
2930   echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
2931 fi
2932 if test "$rbd" = "yes" ; then
2933   echo "CONFIG_RBD=y" >> $config_host_mak
2934 fi
2935
2936 # USB host support
2937 case "$usb" in
2938 linux)
2939   echo "HOST_USB=linux" >> $config_host_mak
2940 ;;
2941 bsd)
2942   echo "HOST_USB=bsd" >> $config_host_mak
2943 ;;
2944 *)
2945   echo "HOST_USB=stub" >> $config_host_mak
2946 ;;
2947 esac
2948
2949 echo "TRACE_BACKEND=$trace_backend" >> $config_host_mak
2950 if test "$trace_backend" = "simple"; then
2951   echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
2952 fi
2953 # Set the appropriate trace file.
2954 if test "$trace_backend" = "simple"; then
2955   trace_file="\"$trace_file-\" FMT_pid"
2956 fi
2957 if test "$trace_backend" = "dtrace" -a "$trace_backend_stap" = "yes" ; then
2958   echo "CONFIG_SYSTEMTAP_TRACE=y" >> $config_host_mak
2959 fi
2960 echo "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
2961
2962 echo "TOOLS=$tools" >> $config_host_mak
2963 echo "ROMS=$roms" >> $config_host_mak
2964 echo "MAKE=$make" >> $config_host_mak
2965 echo "INSTALL=$install" >> $config_host_mak
2966 echo "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
2967 echo "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
2968 echo "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
2969 echo "CC=$cc" >> $config_host_mak
2970 echo "CC_I386=$cc_i386" >> $config_host_mak
2971 echo "HOST_CC=$host_cc" >> $config_host_mak
2972 echo "AR=$ar" >> $config_host_mak
2973 echo "OBJCOPY=$objcopy" >> $config_host_mak
2974 echo "LD=$ld" >> $config_host_mak
2975 echo "WINDRES=$windres" >> $config_host_mak
2976 echo "LIBTOOL=$libtool" >> $config_host_mak
2977 echo "CFLAGS=$CFLAGS" >> $config_host_mak
2978 echo "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
2979 echo "QEMU_INCLUDES=$QEMU_INCLUDES" >> $config_host_mak
2980 if test "$sparse" = "yes" ; then
2981   echo "CC           := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
2982   echo "HOST_CC      := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
2983   echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2984 fi
2985 echo "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2986 echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
2987 echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
2988 echo "ARLIBS_END=$arlibs_end" >> $config_host_mak
2989 echo "LIBS+=$LIBS" >> $config_host_mak
2990 echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2991 echo "EXESUF=$EXESUF" >> $config_host_mak
2992
2993 # generate list of library paths for linker script
2994
2995 $ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
2996
2997 if test -f ${config_host_ld}~ ; then
2998   if cmp -s $config_host_ld ${config_host_ld}~ ; then
2999     mv ${config_host_ld}~ $config_host_ld
3000   else
3001     rm ${config_host_ld}~
3002   fi
3003 fi
3004
3005 for d in libdis libdis-user; do
3006     mkdir -p $d
3007     symlink $source_path/Makefile.dis $d/Makefile
3008     echo > $d/config.mak
3009 done
3010 if test "$static" = "no" -a "$user_pie" = "yes" ; then
3011   echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
3012 fi
3013
3014 for target in $target_list; do
3015 target_dir="$target"
3016 config_target_mak=$target_dir/config-target.mak
3017 target_arch2=`echo $target | cut -d '-' -f 1`
3018 target_bigendian="no"
3019
3020 case "$target_arch2" in
3021   armeb|lm32|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
3022   target_bigendian=yes
3023   ;;
3024 esac
3025 target_softmmu="no"
3026 target_user_only="no"
3027 target_linux_user="no"
3028 target_darwin_user="no"
3029 target_bsd_user="no"
3030 case "$target" in
3031   ${target_arch2}-softmmu)
3032     target_softmmu="yes"
3033     ;;
3034   ${target_arch2}-linux-user)
3035     if test "$linux" != "yes" ; then
3036       echo "ERROR: Target '$target' is only available on a Linux host"
3037       exit 1
3038     fi
3039     target_user_only="yes"
3040     target_linux_user="yes"
3041     ;;
3042   ${target_arch2}-darwin-user)
3043     if test "$darwin" != "yes" ; then
3044       echo "ERROR: Target '$target' is only available on a Darwin host"
3045       exit 1
3046     fi
3047     target_user_only="yes"
3048     target_darwin_user="yes"
3049     ;;
3050   ${target_arch2}-bsd-user)
3051     if test "$bsd" != "yes" ; then
3052       echo "ERROR: Target '$target' is only available on a BSD host"
3053       exit 1
3054     fi
3055     target_user_only="yes"
3056     target_bsd_user="yes"
3057     ;;
3058   *)
3059     echo "ERROR: Target '$target' not recognised"
3060     exit 1
3061     ;;
3062 esac
3063
3064 mkdir -p $target_dir
3065 mkdir -p $target_dir/fpu
3066 mkdir -p $target_dir/tcg
3067 mkdir -p $target_dir/ide
3068 mkdir -p $target_dir/9pfs
3069 if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
3070   mkdir -p $target_dir/nwfpe
3071 fi
3072 symlink $source_path/Makefile.target $target_dir/Makefile
3073
3074
3075 echo "# Automatically generated by configure - do not modify" > $config_target_mak
3076
3077 bflt="no"
3078 target_nptl="no"
3079 interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
3080 echo "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
3081 gdb_xml_files=""
3082 target_short_alignment=2
3083 target_int_alignment=4
3084 target_long_alignment=4
3085 target_llong_alignment=8
3086 target_libs_softmmu=
3087
3088 TARGET_ARCH="$target_arch2"
3089 TARGET_BASE_ARCH=""
3090 TARGET_ABI_DIR=""
3091
3092 case "$target_arch2" in
3093   i386)
3094     target_phys_bits=64
3095   ;;
3096   x86_64)
3097     TARGET_BASE_ARCH=i386
3098     target_phys_bits=64
3099     target_long_alignment=8
3100   ;;
3101   alpha)
3102     target_phys_bits=64
3103     target_long_alignment=8
3104     target_nptl="yes"
3105   ;;
3106   arm|armeb)
3107     TARGET_ARCH=arm
3108     bflt="yes"
3109     target_nptl="yes"
3110     gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
3111     target_phys_bits=32
3112     target_llong_alignment=4
3113   ;;
3114   cris)
3115     target_nptl="yes"
3116     target_phys_bits=32
3117   ;;
3118   lm32)
3119     target_phys_bits=32
3120     target_libs_softmmu="$opengl_libs"
3121   ;;
3122   m68k)
3123     bflt="yes"
3124     gdb_xml_files="cf-core.xml cf-fp.xml"
3125     target_phys_bits=32
3126     target_int_alignment=2
3127     target_long_alignment=2
3128     target_llong_alignment=2
3129   ;;
3130   microblaze|microblazeel)
3131     TARGET_ARCH=microblaze
3132     bflt="yes"
3133     target_nptl="yes"
3134     target_phys_bits=32
3135     target_libs_softmmu="$fdt_libs"
3136   ;;
3137   mips|mipsel)
3138     TARGET_ARCH=mips
3139     echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
3140     target_nptl="yes"
3141     target_phys_bits=64
3142   ;;
3143   mipsn32|mipsn32el)
3144     TARGET_ARCH=mipsn32
3145     TARGET_BASE_ARCH=mips
3146     echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
3147     target_phys_bits=64
3148   ;;
3149   mips64|mips64el)
3150     TARGET_ARCH=mips64
3151     TARGET_BASE_ARCH=mips
3152     echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
3153     target_phys_bits=64
3154     target_long_alignment=8
3155   ;;
3156   ppc)
3157     gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3158     target_phys_bits=32
3159     target_nptl="yes"
3160     target_libs_softmmu="$fdt_libs"
3161   ;;
3162   ppcemb)
3163     TARGET_BASE_ARCH=ppc
3164     TARGET_ABI_DIR=ppc
3165     gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3166     target_phys_bits=64
3167     target_nptl="yes"
3168     target_libs_softmmu="$fdt_libs"
3169   ;;
3170   ppc64)
3171     TARGET_BASE_ARCH=ppc
3172     TARGET_ABI_DIR=ppc
3173     gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3174     target_phys_bits=64
3175     target_long_alignment=8
3176     target_libs_softmmu="$fdt_libs"
3177   ;;
3178   ppc64abi32)
3179     TARGET_ARCH=ppc64
3180     TARGET_BASE_ARCH=ppc
3181     TARGET_ABI_DIR=ppc
3182     echo "TARGET_ABI32=y" >> $config_target_mak
3183     gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
3184     target_phys_bits=64
3185     target_libs_softmmu="$fdt_libs"
3186   ;;
3187   sh4|sh4eb)
3188     TARGET_ARCH=sh4
3189     bflt="yes"
3190     target_nptl="yes"
3191     target_phys_bits=32
3192   ;;
3193   sparc)
3194     target_phys_bits=64
3195   ;;
3196   sparc64)
3197     TARGET_BASE_ARCH=sparc
3198     target_phys_bits=64
3199     target_long_alignment=8
3200   ;;
3201   sparc32plus)
3202     TARGET_ARCH=sparc64
3203     TARGET_BASE_ARCH=sparc
3204     TARGET_ABI_DIR=sparc
3205     echo "TARGET_ABI32=y" >> $config_target_mak
3206     target_phys_bits=64
3207   ;;
3208   s390x)
3209     target_nptl="yes"
3210     target_phys_bits=64
3211     target_long_alignment=8
3212   ;;
3213   unicore32)
3214     target_phys_bits=32
3215   ;;
3216   *)
3217     echo "Unsupported target CPU"
3218     exit 1
3219   ;;
3220 esac
3221 echo "TARGET_SHORT_ALIGNMENT=$target_short_alignment" >> $config_target_mak
3222 echo "TARGET_INT_ALIGNMENT=$target_int_alignment" >> $config_target_mak
3223 echo "TARGET_LONG_ALIGNMENT=$target_long_alignment" >> $config_target_mak
3224 echo "TARGET_LLONG_ALIGNMENT=$target_llong_alignment" >> $config_target_mak
3225 echo "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
3226 target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
3227 echo "TARGET_$target_arch_name=y" >> $config_target_mak
3228 echo "TARGET_ARCH2=$target_arch2" >> $config_target_mak
3229 # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
3230 if [ "$TARGET_BASE_ARCH" = "" ]; then
3231   TARGET_BASE_ARCH=$TARGET_ARCH
3232 fi
3233 echo "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
3234 if [ "$TARGET_ABI_DIR" = "" ]; then
3235   TARGET_ABI_DIR=$TARGET_ARCH
3236 fi
3237 echo "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
3238 case "$target_arch2" in
3239   i386|x86_64)
3240     if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
3241       target_phys_bits=64
3242       echo "CONFIG_XEN=y" >> $config_target_mak
3243       if test "$cpu" = "i386" -o "$cpu" = "x86_64"; then
3244           echo "CONFIG_XEN_MAPCACHE=y" >> $config_target_mak
3245       fi
3246     fi
3247 esac
3248 case "$target_arch2" in
3249   i386|x86_64|ppcemb|ppc|ppc64|s390x)
3250     # Make sure the target and host cpus are compatible
3251     if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
3252       \( "$target_arch2" = "$cpu" -o \
3253       \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
3254       \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
3255       \( "$target_arch2" = "ppc"    -a "$cpu" = "ppc64" \) -o \
3256       \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc64" \) -o \
3257       \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
3258       \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
3259       echo "CONFIG_KVM=y" >> $config_target_mak
3260       if test $vhost_net = "yes" ; then
3261         echo "CONFIG_VHOST_NET=y" >> $config_target_mak
3262       fi
3263     fi
3264 esac
3265 if test "$target_bigendian" = "yes" ; then
3266   echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
3267 fi
3268 if test "$target_softmmu" = "yes" ; then
3269   echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
3270   echo "CONFIG_SOFTMMU=y" >> $config_target_mak
3271   echo "LIBS+=$libs_softmmu $target_libs_softmmu" >> $config_target_mak
3272   echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
3273   echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
3274 fi
3275 if test "$target_user_only" = "yes" ; then
3276   echo "CONFIG_USER_ONLY=y" >> $config_target_mak
3277 fi
3278 if test "$target_linux_user" = "yes" ; then
3279   echo "CONFIG_LINUX_USER=y" >> $config_target_mak
3280 fi
3281 if test "$target_darwin_user" = "yes" ; then
3282   echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
3283 fi
3284 if test "$smartcard_nss" = "yes" ; then
3285   echo "subdir-$target: subdir-libcacard" >> $config_host_mak
3286   echo "libcacard_libs=$libcacard_libs" >> $config_host_mak
3287   echo "libcacard_cflags=$libcacard_cflags" >> $config_host_mak
3288 fi
3289 list=""
3290 if test ! -z "$gdb_xml_files" ; then
3291   for x in $gdb_xml_files; do
3292     list="$list $source_path/gdb-xml/$x"
3293   done
3294   echo "TARGET_XML_FILES=$list" >> $config_target_mak
3295 fi
3296
3297 if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
3298   echo "TARGET_HAS_BFLT=y" >> $config_target_mak
3299 fi
3300 if test "$target_user_only" = "yes" \
3301         -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
3302   echo "CONFIG_USE_NPTL=y" >> $config_target_mak
3303 fi
3304 if test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
3305   echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
3306 fi
3307 if test "$target_bsd_user" = "yes" ; then
3308   echo "CONFIG_BSD_USER=y" >> $config_target_mak
3309 fi
3310
3311 # generate QEMU_CFLAGS/LDFLAGS for targets
3312
3313 cflags=""
3314 includes=""
3315 ldflags=""
3316
3317 if test "$ARCH" = "sparc64" ; then
3318   includes="-I\$(SRC_PATH)/tcg/sparc $includes"
3319 elif test "$ARCH" = "s390x" ; then
3320   includes="-I\$(SRC_PATH)/tcg/s390 $includes"
3321 elif test "$ARCH" = "x86_64" ; then
3322   includes="-I\$(SRC_PATH)/tcg/i386 $includes"
3323 else
3324   includes="-I\$(SRC_PATH)/tcg/\$(ARCH) $includes"
3325 fi
3326 includes="-I\$(SRC_PATH)/tcg $includes"
3327 includes="-I\$(SRC_PATH)/fpu $includes"
3328
3329 if test "$target_user_only" = "yes" ; then
3330     libdis_config_mak=libdis-user/config.mak
3331 else
3332     libdis_config_mak=libdis/config.mak
3333 fi
3334
3335 for i in $ARCH $TARGET_BASE_ARCH ; do
3336   case "$i" in
3337   alpha)
3338     echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
3339     echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
3340   ;;
3341   arm)
3342     echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
3343     echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
3344   ;;
3345   cris)
3346     echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
3347     echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
3348   ;;
3349   hppa)
3350     echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
3351     echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
3352   ;;
3353   i386|x86_64)
3354     echo "CONFIG_I386_DIS=y"  >> $config_target_mak
3355     echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
3356   ;;
3357   ia64*)
3358     echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
3359     echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
3360   ;;
3361   m68k)
3362     echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
3363     echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
3364   ;;
3365   microblaze*)
3366     echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
3367     echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
3368   ;;
3369   mips*)
3370     echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
3371     echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
3372   ;;
3373   ppc*)
3374     echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
3375     echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
3376   ;;
3377   s390*)
3378     echo "CONFIG_S390_DIS=y"  >> $config_target_mak
3379     echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
3380   ;;
3381   sh4)
3382     echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
3383     echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
3384   ;;
3385   sparc*)
3386     echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
3387     echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
3388   ;;
3389   esac
3390 done
3391
3392 case "$ARCH" in
3393 alpha)
3394   # Ensure there's only a single GP
3395   cflags="-msmall-data $cflags"
3396 ;;
3397 esac
3398
3399 if test "$target_softmmu" = "yes" ; then
3400   case "$TARGET_BASE_ARCH" in
3401   arm)
3402     cflags="-DHAS_AUDIO $cflags"
3403   ;;
3404   lm32)
3405     cflags="-DHAS_AUDIO $cflags"
3406   ;;
3407   i386|mips|ppc)
3408     cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
3409   ;;
3410   esac
3411 fi
3412
3413 if test "$target_user_only" = "yes" -a "$static" = "no" -a \
3414         "$user_pie" = "yes" ; then
3415   cflags="-fpie $cflags"
3416   ldflags="-pie $ldflags"
3417 fi
3418
3419 if test "$target_softmmu" = "yes" -a \( \
3420         "$TARGET_ARCH" = "microblaze" -o \
3421         "$TARGET_ARCH" = "cris" \) ; then
3422   echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3423 fi
3424
3425 if test "$gprof" = "yes" ; then
3426   echo "TARGET_GPROF=yes" >> $config_target_mak
3427   if test "$target_linux_user" = "yes" ; then
3428     cflags="-p $cflags"
3429     ldflags="-p $ldflags"
3430   fi
3431   if test "$target_softmmu" = "yes" ; then
3432     ldflags="-p $ldflags"
3433     echo "GPROF_CFLAGS=-p" >> $config_target_mak
3434   fi
3435 fi
3436
3437 linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
3438 if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3439   case "$ARCH" in
3440   sparc)
3441     # -static is used to avoid g1/g3 usage by the dynamic linker
3442     ldflags="$linker_script -static $ldflags"
3443     ;;
3444   alpha | s390x)
3445     # The default placement of the application is fine.
3446     ;;
3447   *)
3448     ldflags="$linker_script $ldflags"
3449     ;;
3450   esac
3451 fi
3452
3453 # use included Linux headers
3454 if test "$linux" = "yes" ; then
3455   includes="-I\$(SRC_PATH)/linux-headers $includes"
3456   mkdir -p linux-headers
3457   case "$cpu" in
3458   i386|x86_64)
3459     symlink $source_path/linux-headers/asm-x86 linux-headers/asm
3460     ;;
3461   ppcemb|ppc|ppc64)
3462     symlink $source_path/linux-headers/asm-powerpc linux-headers/asm
3463     ;;
3464   s390x)
3465     symlink $source_path/linux-headers/asm-s390 linux-headers/asm
3466     ;;
3467   esac
3468 fi
3469
3470 echo "LDFLAGS+=$ldflags" >> $config_target_mak
3471 echo "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3472 echo "QEMU_INCLUDES+=$includes" >> $config_target_mak
3473
3474 done # for target in $targets
3475
3476 # build tree in object directory in case the source is not in the current directory
3477 DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
3478 DIRS="$DIRS pc-bios/spapr-rtas"
3479 DIRS="$DIRS roms/seabios roms/vgabios"
3480 DIRS="$DIRS fsdev ui"
3481 FILES="Makefile tests/Makefile"
3482 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
3483 FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps"
3484 FILES="$FILES pc-bios/spapr-rtas/Makefile"
3485 FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
3486 for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.rom $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
3487     FILES="$FILES pc-bios/`basename $bios_file`"
3488 done
3489 mkdir -p $DIRS
3490 for f in $FILES ; do
3491     if [ -e "$source_path/$f" ] && ! [ -e "$f" ]; then
3492         symlink "$source_path/$f" "$f"
3493     fi
3494 done
3495
3496 # temporary config to build submodules
3497 for rom in seabios vgabios ; do
3498     config_mak=roms/$rom/config.mak
3499     echo "# Automatically generated by configure - do not modify" > $config_mak
3500     echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
3501     echo "CC=$cc" >> $config_mak
3502     echo "BCC=bcc" >> $config_mak
3503     echo "CPP=${cross_prefix}cpp" >> $config_mak
3504     echo "OBJCOPY=objcopy" >> $config_mak
3505     echo "IASL=iasl" >> $config_mak
3506     echo "LD=$ld" >> $config_mak
3507 done
3508
3509 for hwlib in 32 64; do
3510   d=libhw$hwlib
3511   mkdir -p $d
3512   mkdir -p $d/ide
3513   symlink $source_path/Makefile.hw $d/Makefile
3514   mkdir -p $d/9pfs
3515   echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
3516 done
3517
3518 if [ "$source_path" != `pwd` ]; then
3519     # out of tree build
3520     mkdir -p libcacard
3521     rm -f libcacard/Makefile
3522     symlink "$source_path/libcacard/Makefile" libcacard/Makefile
3523 fi
3524
3525 d=libuser
3526 mkdir -p $d
3527 symlink $source_path/Makefile.user $d/Makefile
3528 if test "$static" = "no" -a "$user_pie" = "yes" ; then
3529   echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
3530 fi
3531
3532 if test "$docs" = "yes" ; then
3533   mkdir -p QMP
3534 fi
This page took 0.222083 seconds and 4 git commands to generate.