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