xref: /qemu/configure (revision da1d85e339730effd889978be5ae2caadd01bfa9)
17d13299dSbellard#!/bin/sh
27d13299dSbellard#
33ef693a0Sbellard# qemu configure script (c) 2003 Fabrice Bellard
47d13299dSbellard#
57d13299dSbellard# set temporary file name
67d13299dSbellardif test ! -z "$TMPDIR" ; then
77d13299dSbellard    TMPDIR1="${TMPDIR}"
87d13299dSbellardelif test ! -z "$TEMPDIR" ; then
97d13299dSbellard    TMPDIR1="${TEMPDIR}"
107d13299dSbellardelse
117d13299dSbellard    TMPDIR1="/tmp"
127d13299dSbellardfi
137d13299dSbellard
143ef693a0SbellardTMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
153ef693a0SbellardTMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16a91b857cSmalcTMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.exe"
177d13299dSbellard
184021d247SAurelien Jarnotrap "rm -f $TMPC $TMPO $TMPE ; exit" EXIT INT QUIT TERM
19*da1d85e3SGerd Hoffmannrm -f config.log
209ac81bbbSmalc
2152166aa0SJuan Quintelacompile_object() {
22*da1d85e3SGerd Hoffmann  echo $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log
23*da1d85e3SGerd Hoffmann  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC >> config.log 2>&1
2452166aa0SJuan Quintela}
2552166aa0SJuan Quintela
2652166aa0SJuan Quintelacompile_prog() {
2752166aa0SJuan Quintela  local_cflags="$1"
2852166aa0SJuan Quintela  local_ldflags="$2"
29*da1d85e3SGerd Hoffmann  echo $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log
30*da1d85e3SGerd Hoffmann  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags >> config.log 2>&1
3152166aa0SJuan Quintela}
3252166aa0SJuan Quintela
330dba6195SLoïc Minier# check whether a command is available to this shell (may be either an
340dba6195SLoïc Minier# executable or a builtin)
350dba6195SLoïc Minierhas() {
360dba6195SLoïc Minier    type "$1" >/dev/null 2>&1
370dba6195SLoïc Minier}
380dba6195SLoïc Minier
390dba6195SLoïc Minier# search for an executable in PATH
400dba6195SLoïc Minierpath_of() {
410dba6195SLoïc Minier    local_command="$1"
420dba6195SLoïc Minier    local_ifs="$IFS"
430dba6195SLoïc Minier    local_dir=""
440dba6195SLoïc Minier
450dba6195SLoïc Minier    # pathname has a dir component?
460dba6195SLoïc Minier    if [ "${local_command#*/}" != "$local_command" ]; then
470dba6195SLoïc Minier        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
480dba6195SLoïc Minier            echo "$local_command"
490dba6195SLoïc Minier            return 0
500dba6195SLoïc Minier        fi
510dba6195SLoïc Minier    fi
520dba6195SLoïc Minier    if [ -z "$local_command" ]; then
530dba6195SLoïc Minier        return 1
540dba6195SLoïc Minier    fi
550dba6195SLoïc Minier
560dba6195SLoïc Minier    IFS=:
570dba6195SLoïc Minier    for local_dir in $PATH; do
580dba6195SLoïc Minier        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
590dba6195SLoïc Minier            echo "$local_dir/$local_command"
600dba6195SLoïc Minier            IFS="${local_ifs:-$(printf ' \t\n')}"
610dba6195SLoïc Minier            return 0
620dba6195SLoïc Minier        fi
630dba6195SLoïc Minier    done
640dba6195SLoïc Minier    # not found
650dba6195SLoïc Minier    IFS="${local_ifs:-$(printf ' \t\n')}"
660dba6195SLoïc Minier    return 1
670dba6195SLoïc Minier}
680dba6195SLoïc Minier
697d13299dSbellard# default parameters
702ff6b91eSJuan Quintelacpu=""
711e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M"
7243ce4dfeSbellardstatic="no"
73ed968ff1SJuan Quintelasparc_cpu=""
747d13299dSbellardcross_prefix=""
757d13299dSbellardcc="gcc"
760c58ac1cSmalcaudio_drv_list=""
774c9b53e3Smalcaudio_card_list="ac97 es1370 sb16"
784c9b53e3Smalcaudio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
79eb852011SMarkus Armbrusterblock_drv_whitelist=""
807d13299dSbellardhost_cc="gcc"
817d13299dSbellardar="ar"
827d13299dSbellardmake="make"
836a882643Spbrookinstall="install"
847aa486feSAnthony Liguoriobjcopy="objcopy"
857aa486feSAnthony Liguorild="ld"
8652ba784dSHollis Blanchardstrip="strip"
87c81da56eSJuan Quintelahelper_cflags=""
8873da375eSJuan Quintelalibs_softmmu=""
893e2e0e6bSJuan Quintelalibs_tools=""
9067f86e8eSJuan Quintelaaudio_pt_int=""
91d5631638Smalcaudio_win_int=""
92ac0df51dSaliguori
93ac0df51dSaliguori# parse CC options first
94ac0df51dSaliguorifor opt do
95ac0df51dSaliguori  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
96ac0df51dSaliguori  case "$opt" in
97ac0df51dSaliguori  --cross-prefix=*) cross_prefix="$optarg"
98ac0df51dSaliguori  ;;
99ac0df51dSaliguori  --cc=*) cc="$optarg"
100ac0df51dSaliguori  ;;
1012ff6b91eSJuan Quintela  --cpu=*) cpu="$optarg"
1022ff6b91eSJuan Quintela  ;;
103a558ee17SJuan Quintela  --extra-cflags=*) QEMU_CFLAGS="$optarg $QEMU_CFLAGS"
104e2a2ed06SJuan Quintela  ;;
105e2a2ed06SJuan Quintela  --extra-ldflags=*) LDFLAGS="$optarg $LDFLAGS"
106e2a2ed06SJuan Quintela  ;;
10750e7b1a0SJuan Quintela  --sparc_cpu=*)
10850e7b1a0SJuan Quintela    sparc_cpu="$optarg"
10950e7b1a0SJuan Quintela    case $sparc_cpu in
110ed968ff1SJuan Quintela    v7|v8|v8plus|v8plusa)
11150e7b1a0SJuan Quintela      cpu="sparc"
11250e7b1a0SJuan Quintela    ;;
11350e7b1a0SJuan Quintela    v9)
11450e7b1a0SJuan Quintela      cpu="sparc64"
11550e7b1a0SJuan Quintela    ;;
11650e7b1a0SJuan Quintela    *)
11750e7b1a0SJuan Quintela      echo "undefined SPARC architecture. Exiting";
11850e7b1a0SJuan Quintela      exit 1
11950e7b1a0SJuan Quintela    ;;
12050e7b1a0SJuan Quintela    esac
12150e7b1a0SJuan Quintela  ;;
122ac0df51dSaliguori  esac
123ac0df51dSaliguoridone
124ac0df51dSaliguori# OS specific
125ac0df51dSaliguori# Using uname is really, really broken.  Once we have the right set of checks
126ac0df51dSaliguori# we can eliminate it's usage altogether
127ac0df51dSaliguori
128ac0df51dSaliguoricc="${cross_prefix}${cc}"
129ac0df51dSaliguoriar="${cross_prefix}${ar}"
1307aa486feSAnthony Liguoriobjcopy="${cross_prefix}${objcopy}"
1317aa486feSAnthony Liguorild="${cross_prefix}${ld}"
13252ba784dSHollis Blanchardstrip="${cross_prefix}${strip}"
133ac0df51dSaliguori
134be17dc90SMichael S. Tsirkin# default flags for all hosts
135be17dc90SMichael S. TsirkinQEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
136be17dc90SMichael S. TsirkinCFLAGS="-g $CFLAGS"
137be17dc90SMichael S. TsirkinQEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
138be17dc90SMichael S. TsirkinQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
139be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
14084958305SKirill A. ShutemovQEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
141be17dc90SMichael S. TsirkinQEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
142be17dc90SMichael S. TsirkinLDFLAGS="-g $LDFLAGS"
143be17dc90SMichael S. Tsirkin
144a21493e0SBlue Swirlgcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
145a21493e0SBlue Swirlgcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1460b65b9e1SBlue Swirlgcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
147a21493e0SBlue Swirlgcc_flags="-fstack-protector-all $gcc_flags"
148be17dc90SMichael S. Tsirkincat > $TMPC << EOF
149aa527b65SAurelien Jarnoint main(void) { return 0; }
150be17dc90SMichael S. TsirkinEOF
151be17dc90SMichael S. Tsirkinfor flag in $gcc_flags; do
152aa527b65SAurelien Jarno    if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
153be17dc90SMichael S. Tsirkin	QEMU_CFLAGS="$flag $QEMU_CFLAGS"
154be17dc90SMichael S. Tsirkin    fi
155be17dc90SMichael S. Tsirkindone
156be17dc90SMichael S. Tsirkin
157ac0df51dSaliguori# check that the C compiler works.
158ac0df51dSaliguoricat > $TMPC <<EOF
159ac0df51dSaliguoriint main(void) {}
160ac0df51dSaliguoriEOF
161ac0df51dSaliguori
16252166aa0SJuan Quintelaif compile_object ; then
163ac0df51dSaliguori  : C compiler works ok
164ac0df51dSaliguorielse
165ac0df51dSaliguori    echo "ERROR: \"$cc\" either does not exist or does not work"
166ac0df51dSaliguori    exit 1
167ac0df51dSaliguorifi
168ac0df51dSaliguori
169ac0df51dSaliguoricheck_define() {
170ac0df51dSaliguoricat > $TMPC <<EOF
171ac0df51dSaliguori#if !defined($1)
172ac0df51dSaliguori#error Not defined
173ac0df51dSaliguori#endif
174ac0df51dSaliguoriint main(void) { return 0; }
175ac0df51dSaliguoriEOF
17652166aa0SJuan Quintela  compile_object
177ac0df51dSaliguori}
178ac0df51dSaliguori
1792ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then
1802ff6b91eSJuan Quintela  # command line argument
1812ff6b91eSJuan Quintela  :
1822ff6b91eSJuan Quintelaelif check_define __i386__ ; then
183ac0df51dSaliguori  cpu="i386"
184ac0df51dSaliguorielif check_define __x86_64__ ; then
185ac0df51dSaliguori  cpu="x86_64"
1863aa9bd6cSblueswir1elif check_define __sparc__ ; then
1873aa9bd6cSblueswir1  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
1883aa9bd6cSblueswir1  # They must be specified using --sparc_cpu
1893aa9bd6cSblueswir1  if check_define __arch64__ ; then
1903aa9bd6cSblueswir1    cpu="sparc64"
1913aa9bd6cSblueswir1  else
1923aa9bd6cSblueswir1    cpu="sparc"
1933aa9bd6cSblueswir1  fi
194fdf7ed96Smalcelif check_define _ARCH_PPC ; then
195fdf7ed96Smalc  if check_define _ARCH_PPC64 ; then
196fdf7ed96Smalc    cpu="ppc64"
197ac0df51dSaliguori  else
198fdf7ed96Smalc    cpu="ppc"
199fdf7ed96Smalc  fi
200afa05235SAurelien Jarnoelif check_define __mips__ ; then
201afa05235SAurelien Jarno  cpu="mips"
202477ba620SAurelien Jarnoelif check_define __ia64__ ; then
203477ba620SAurelien Jarno  cpu="ia64"
204d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then
205d66ed0eaSAurelien Jarno  if check_define __s390x__ ; then
206d66ed0eaSAurelien Jarno    cpu="s390x"
207d66ed0eaSAurelien Jarno  else
208d66ed0eaSAurelien Jarno    cpu="s390"
209d66ed0eaSAurelien Jarno  fi
210fdf7ed96Smalcelse
211fdf7ed96Smalc  cpu=`uname -m`
212ac0df51dSaliguorifi
213ac0df51dSaliguori
2145327cf48Sbellardtarget_list=""
2157d13299dSbellardcase "$cpu" in
216afa05235SAurelien Jarno  alpha|cris|ia64|m68k|microblaze|ppc|ppc64|sparc64)
217ea8f20f8SJuan Quintela    cpu="$cpu"
218ea8f20f8SJuan Quintela  ;;
2197d13299dSbellard  i386|i486|i586|i686|i86pc|BePC)
22097a847bcSbellard    cpu="i386"
2217d13299dSbellard  ;;
222aaa5fa14Saurel32  x86_64|amd64)
223aaa5fa14Saurel32    cpu="x86_64"
224aaa5fa14Saurel32  ;;
225ba68055eSbellard  armv*b)
226808c4954Sbellard    cpu="armv4b"
227808c4954Sbellard  ;;
228ba68055eSbellard  armv*l)
2297d13299dSbellard    cpu="armv4l"
2307d13299dSbellard  ;;
231f54b3f92Saurel32  parisc|parisc64)
232f54b3f92Saurel32    cpu="hppa"
233f54b3f92Saurel32  ;;
234afa05235SAurelien Jarno  mips*)
235afa05235SAurelien Jarno    cpu="mips"
236afa05235SAurelien Jarno  ;;
23724e804ecSAlexander Graf  s390)
238fb3e5849Sbellard    cpu="s390"
239fb3e5849Sbellard  ;;
24024e804ecSAlexander Graf  s390x)
24124e804ecSAlexander Graf    cpu="s390x"
24224e804ecSAlexander Graf  ;;
2433142255cSblueswir1  sparc|sun4[cdmuv])
244ae228531Sbellard    cpu="sparc"
245ae228531Sbellard  ;;
2467d13299dSbellard  *)
247a447d4dcSPaolo Bonzini    echo "Unsupported CPU = $cpu"
248a447d4dcSPaolo Bonzini    exit 1
2497d13299dSbellard  ;;
2507d13299dSbellardesac
251e2d52ad3SJuan Quintela
2523a3fb96dSStefan Weil# Default value for a variable defining feature "foo".
2533a3fb96dSStefan Weil#  * foo="no"  feature will only be used if --enable-foo arg is given
2543a3fb96dSStefan Weil#  * foo=""    feature will be searched for, and if found, will be used
2553a3fb96dSStefan Weil#              unless --disable-foo is given
2563a3fb96dSStefan Weil#  * foo="yes" this value will only be set by --enable-foo flag.
2573a3fb96dSStefan Weil#              feature will searched for,
2583a3fb96dSStefan Weil#              if not found, configure exits with error
259e2d52ad3SJuan Quintela#
2603a3fb96dSStefan Weil# Always add --enable-foo and --disable-foo command line args.
2613a3fb96dSStefan Weil# Distributions want to ensure that several features are compiled in, and it
2623a3fb96dSStefan Weil# is impossible without a --enable-foo that exits if a feature is not found.
263e2d52ad3SJuan Quintela
264a20a6f46SJuan Quintelabluez=""
2654ffcedb6SJuan Quintelabrlapi=""
266788c8196SJuan Quintelacurl=""
267c584a6d0SJuan Quintelacurses=""
268a25dba17SJuan Quinteladocs=""
2692df87df7SJuan Quintelafdt=""
270b31a0277SJuan Quintelakvm=""
271dae5079aSJan Kiszkakvm_para=""
272b0a47e79SJuan Quintelanptl=""
273c4198157SJuan Quintelasdl=""
274dfffc653SJuan Quintelasparse="no"
275ee682d27SStefan Weiluuid=""
276dfb278bdSJuan Quintelavde=""
2771be10ad2SJuan Quintelavnc_tls=""
278ea784e3bSJuan Quintelavnc_sasl=""
2792f6f5c7aSCorentin Charyvnc_jpeg=""
280efe556adSCorentin Charyvnc_png=""
28196763cf9SCorentin Charyvnc_thread="no"
282fc321b4bSJuan Quintelaxen=""
2835c6c3a6cSChristoph Hellwiglinux_aio=""
284758e8e38SVenkateswararao Jujjuri (JV)attr=""
285d5970055SMichael S. Tsirkinvhost_net=""
286dfb278bdSJuan Quintela
2877d13299dSbellardgprof="no"
288f8393946Saurel32debug_tcg="no"
289b4475aa2SLuiz Capitulinodebug_mon="no"
290f3d08ee6SPaul Brookdebug="no"
2911625af87Saliguoristrip_opt="yes"
2927d13299dSbellardbigendian="no"
29367b915a5Sbellardmingw32="no"
29467b915a5SbellardEXESUF=""
295683035deSPaolo Bonziniprefix="/usr/local"
296683035deSPaolo Bonzinimandir="\${prefix}/share/man"
297683035deSPaolo Bonzinidatadir="\${prefix}/share/qemu"
298683035deSPaolo Bonzinidocdir="\${prefix}/share/doc/qemu"
299683035deSPaolo Bonzinibindir="\${prefix}/bin"
300683035deSPaolo Bonzinisysconfdir="\${prefix}/etc"
301683035deSPaolo Bonziniconfsuffix="/qemu"
302443f1376Sbellardslirp="yes"
303102a52e4Sbellardfmod_lib=""
304102a52e4Sbellardfmod_inc=""
3052f6a1ab0Sblueswir1oss_lib=""
306b1a550a0Spbrookbsd="no"
3075327cf48Sbellardlinux="no"
308d2c7c9b8Sblueswir1solaris="no"
30905c2a3e7Sbellardprofiler="no"
3105b0753e0Sbellardcocoa="no"
3110a8e90f4Spbrooksoftmmu="yes"
312831b7825Sthslinux_user="no"
313831b7825Sthsdarwin_user="no"
31484778508Sblueswir1bsd_user="no"
315379f6698SPaul Brookguest_base=""
316c5937220Spbrookuname_release=""
317e5d355d1Saliguoriio_thread="no"
3188ff9cbf7Smalcmixemu="no"
319eac30262Saliguorikerneldir=""
320b29fe3edSmalcaix="no"
32177755340Sthsblobs="yes"
3224a19f1ecSpbrookpkgversion=""
3235495ed11SLuiz Capitulinocheck_utests="no"
32434005a00SKirill A. Shutemovuser_pie="no"
32520ff6c80SAnthony Liguorizero_malloc=""
32694a420b1SStefan Hajnoczitrace_backend="nop"
3279410b56cSPrerna Saxenatrace_file="trace"
3287d13299dSbellard
3297d13299dSbellard# OS specific
330ac0df51dSaliguoriif check_define __linux__ ; then
331ac0df51dSaliguori  targetos="Linux"
332ac0df51dSaliguorielif check_define _WIN32 ; then
333ac0df51dSaliguori  targetos='MINGW32'
334169dc5d3Sblueswir1elif check_define __OpenBSD__ ; then
335169dc5d3Sblueswir1  targetos='OpenBSD'
336169dc5d3Sblueswir1elif check_define __sun__ ; then
337169dc5d3Sblueswir1  targetos='SunOS'
338ac0df51dSaliguorielse
3397d13299dSbellard  targetos=`uname -s`
340ac0df51dSaliguorifi
3410dbfc675SJuan Quintela
3427d13299dSbellardcase $targetos in
343c326e0afSbellardCYGWIN*)
344c326e0afSbellard  mingw32="yes"
345a558ee17SJuan Quintela  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
346d5631638Smalc  audio_possible_drivers="winwave sdl"
347d5631638Smalc  audio_drv_list="winwave"
348c326e0afSbellard;;
34967b915a5SbellardMINGW32*)
35067b915a5Sbellard  mingw32="yes"
351d5631638Smalc  audio_possible_drivers="winwave dsound sdl fmod"
352d5631638Smalc  audio_drv_list="winwave"
35367b915a5Sbellard;;
3545c40d2bdSthsGNU/kFreeBSD)
355a167ba50SAurelien Jarno  bsd="yes"
3560c58ac1cSmalc  audio_drv_list="oss"
357f34af52cSaurel32  audio_possible_drivers="oss sdl esd pa"
3585c40d2bdSths;;
3597d3505c5SbellardFreeBSD)
3607d3505c5Sbellard  bsd="yes"
361a167ba50SAurelien Jarno  make="gmake"
3620c58ac1cSmalc  audio_drv_list="oss"
363f34af52cSaurel32  audio_possible_drivers="oss sdl esd pa"
364f01576f1SJuergen Lock  # needed for kinfo_getvmmap(3) in libutil.h
365f01576f1SJuergen Lock  LIBS="-lutil $LIBS"
3667d3505c5Sbellard;;
367c5e97233Sblueswir1DragonFly)
368c5e97233Sblueswir1  bsd="yes"
369a167ba50SAurelien Jarno  make="gmake"
370c5e97233Sblueswir1  audio_drv_list="oss"
371c5e97233Sblueswir1  audio_possible_drivers="oss sdl esd pa"
372c5e97233Sblueswir1;;
3737d3505c5SbellardNetBSD)
3747d3505c5Sbellard  bsd="yes"
375a167ba50SAurelien Jarno  make="gmake"
3760c58ac1cSmalc  audio_drv_list="oss"
377c2de5c91Smalc  audio_possible_drivers="oss sdl esd"
3788ef92a88Sblueswir1  oss_lib="-lossaudio"
3797d3505c5Sbellard;;
3807d3505c5SbellardOpenBSD)
3817d3505c5Sbellard  bsd="yes"
382a167ba50SAurelien Jarno  make="gmake"
3830c58ac1cSmalc  audio_drv_list="oss"
384c2de5c91Smalc  audio_possible_drivers="oss sdl esd"
3852f6a1ab0Sblueswir1  oss_lib="-lossaudio"
3867d3505c5Sbellard;;
38783fb7adfSbellardDarwin)
38883fb7adfSbellard  bsd="yes"
38983fb7adfSbellard  darwin="yes"
3900dbfc675SJuan Quintela  # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
3910dbfc675SJuan Quintela  # run 64-bit userspace code
392aab8588aSmalc  if [ "$cpu" = "i386" ] ; then
3931b0f9cc2Saliguori    is_x86_64=`sysctl -n hw.optional.x86_64`
394aab8588aSmalc    [ "$is_x86_64" = "1" ] && cpu=x86_64
3951b0f9cc2Saliguori  fi
3961b0f9cc2Saliguori  if [ "$cpu" = "x86_64" ] ; then
397a558ee17SJuan Quintela    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
3980c439cbfSJuan Quintela    LDFLAGS="-arch x86_64 $LDFLAGS"
3991b0f9cc2Saliguori  else
400a558ee17SJuan Quintela    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
4011b0f9cc2Saliguori  fi
402831b7825Sths  darwin_user="yes"
403fd677642Sths  cocoa="yes"
4040c58ac1cSmalc  audio_drv_list="coreaudio"
405c2de5c91Smalc  audio_possible_drivers="coreaudio sdl fmod"
4060c439cbfSJuan Quintela  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
4077973f21cSJuan Quintela  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
40883fb7adfSbellard;;
409ec530c81SbellardSunOS)
410ec530c81Sbellard  solaris="yes"
411c2b84fabSths  make="gmake"
412c2b84fabSths  install="ginstall"
413fa58948dSBlue Swirl  ld="gld"
4140475a5caSths  needs_libsunmath="no"
415c2b84fabSths  solarisrev=`uname -r | cut -f2 -d.`
416ef18c883Sths  # have to select again, because `uname -m` returns i86pc
417ef18c883Sths  # even on an x86_64 box.
418ef18c883Sths  solariscpu=`isainfo -k`
419ef18c883Sths  if test "${solariscpu}" = "amd64" ; then
420ef18c883Sths    cpu="x86_64"
421ef18c883Sths  fi
422c2b84fabSths  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
4230475a5caSths    if test "$solarisrev" -le 9 ; then
4240475a5caSths      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
4250475a5caSths        needs_libsunmath="yes"
426f14bfdf9SJuan Quintela        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
427f14bfdf9SJuan Quintela        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
428f14bfdf9SJuan Quintela        LIBS="-lsunmath $LIBS"
4290475a5caSths      else
4300475a5caSths        echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
4310475a5caSths        echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
4320475a5caSths        echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
4330475a5caSths        echo "Studio 11 can be downloaded from www.sun.com."
4340475a5caSths        exit 1
4350475a5caSths      fi
4360475a5caSths    fi
43786b2bd93Sths  fi
4386b4d2ba1Sths  if test -f /usr/include/sys/soundcard.h ; then
4390c58ac1cSmalc    audio_drv_list="oss"
4406b4d2ba1Sths  fi
441c2de5c91Smalc  audio_possible_drivers="oss sdl"
442d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h
443d741429aSBlue Swirl  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
444d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h
445d741429aSBlue Swirl  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
446a558ee17SJuan Quintela  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
447e174c0bbSJuan Quintela  LIBS="-lsocket -lnsl -lresolv $LIBS"
448ec530c81Sbellard;;
449b29fe3edSmalcAIX)
450b29fe3edSmalc  aix="yes"
451b29fe3edSmalc  make="gmake"
452b29fe3edSmalc;;
453fb065187Sbellard*)
4540c58ac1cSmalc  audio_drv_list="oss"
455b8e59f18Smalc  audio_possible_drivers="oss alsa sdl esd pa"
4565327cf48Sbellard  linux="yes"
457831b7825Sths  linux_user="yes"
45868063649Sblueswir1  usb="linux"
45907f4ddbfSbellard  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
460c2de5c91Smalc    audio_possible_drivers="$audio_possible_drivers fmod"
461c9ec1fe4Sbellard  fi
462fb065187Sbellard;;
4637d13299dSbellardesac
4647d13299dSbellard
4657d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
466b1a550a0Spbrook  if [ "$darwin" != "yes" ] ; then
46768063649Sblueswir1    usb="bsd"
46883fb7adfSbellard  fi
46984778508Sblueswir1  bsd_user="yes"
4707d3505c5Sbellardfi
4717d3505c5Sbellard
4723457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then
4733457a3f8SJuan Quintela  EXESUF=".exe"
474a558ee17SJuan Quintela  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
475e94a7936SStefan Weil  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
476e94a7936SStefan Weil  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
477884044aaSJuan Quintela  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
478683035deSPaolo Bonzini  prefix="c:/Program Files/Qemu"
479683035deSPaolo Bonzini  mandir="\${prefix}"
480683035deSPaolo Bonzini  datadir="\${prefix}"
481683035deSPaolo Bonzini  docdir="\${prefix}"
482683035deSPaolo Bonzini  bindir="\${prefix}"
483683035deSPaolo Bonzini  sysconfdir="\${prefix}"
484683035deSPaolo Bonzini  confsuffix=""
4853457a3f8SJuan Quintelafi
4863457a3f8SJuan Quintela
4877d13299dSbellard# find source path
488ad064840Spbrooksource_path=`dirname "$0"`
48959faef3aSbalrogsource_path_used="no"
49059faef3aSbalrogworkdir=`pwd`
491ad064840Spbrookif [ -z "$source_path" ]; then
49259faef3aSbalrog    source_path=$workdir
493ad064840Spbrookelse
494ad064840Spbrook    source_path=`cd "$source_path"; pwd`
4957d13299dSbellardfi
496724db118Spbrook[ -f "$workdir/vl.c" ] || source_path_used="yes"
4977d13299dSbellard
498487fefdbSAnthony Liguoriwerror=""
49985aa5189Sbellard
5007d13299dSbellardfor opt do
501a46e4035Spbrook  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
5027d13299dSbellard  case "$opt" in
5032efc3265Sbellard  --help|-h) show_help=yes
5042efc3265Sbellard  ;;
505b1a550a0Spbrook  --prefix=*) prefix="$optarg"
5067d13299dSbellard  ;;
507b1a550a0Spbrook  --interp-prefix=*) interp_prefix="$optarg"
50832ce6337Sbellard  ;;
509b1a550a0Spbrook  --source-path=*) source_path="$optarg"
510ad064840Spbrook  source_path_used="yes"
5117d13299dSbellard  ;;
512ac0df51dSaliguori  --cross-prefix=*)
5137d13299dSbellard  ;;
514ac0df51dSaliguori  --cc=*)
5157d13299dSbellard  ;;
516b1a550a0Spbrook  --host-cc=*) host_cc="$optarg"
51783469015Sbellard  ;;
518b1a550a0Spbrook  --make=*) make="$optarg"
5197d13299dSbellard  ;;
5206a882643Spbrook  --install=*) install="$optarg"
5216a882643Spbrook  ;;
522e2a2ed06SJuan Quintela  --extra-cflags=*)
5237d13299dSbellard  ;;
524e2a2ed06SJuan Quintela  --extra-ldflags=*)
5257d13299dSbellard  ;;
5262ff6b91eSJuan Quintela  --cpu=*)
5277d13299dSbellard  ;;
528b1a550a0Spbrook  --target-list=*) target_list="$optarg"
529de83cd02Sbellard  ;;
53094a420b1SStefan Hajnoczi  --trace-backend=*) trace_backend="$optarg"
53194a420b1SStefan Hajnoczi  ;;
5329410b56cSPrerna Saxena  --trace-file=*) trace_file="$optarg"
5339410b56cSPrerna Saxena  ;;
5347d13299dSbellard  --enable-gprof) gprof="yes"
5357d13299dSbellard  ;;
53679427693SLoïc Minier  --static)
53779427693SLoïc Minier    static="yes"
53879427693SLoïc Minier    LDFLAGS="-static $LDFLAGS"
53943ce4dfeSbellard  ;;
5400b24e75fSPaolo Bonzini  --mandir=*) mandir="$optarg"
5410b24e75fSPaolo Bonzini  ;;
5420b24e75fSPaolo Bonzini  --bindir=*) bindir="$optarg"
5430b24e75fSPaolo Bonzini  ;;
5440b24e75fSPaolo Bonzini  --datadir=*) datadir="$optarg"
5450b24e75fSPaolo Bonzini  ;;
5460b24e75fSPaolo Bonzini  --docdir=*) docdir="$optarg"
5470b24e75fSPaolo Bonzini  ;;
548ca2fb938SAndre Przywara  --sysconfdir=*) sysconfdir="$optarg"
54907381cc1SAnthony Liguori  ;;
55097a847bcSbellard  --disable-sdl) sdl="no"
55197a847bcSbellard  ;;
552c4198157SJuan Quintela  --enable-sdl) sdl="yes"
553c4198157SJuan Quintela  ;;
554b1a550a0Spbrook  --fmod-lib=*) fmod_lib="$optarg"
555102a52e4Sbellard  ;;
556c2de5c91Smalc  --fmod-inc=*) fmod_inc="$optarg"
557c2de5c91Smalc  ;;
5582f6a1ab0Sblueswir1  --oss-lib=*) oss_lib="$optarg"
5592f6a1ab0Sblueswir1  ;;
5602fa7d3bfSmalc  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
5610c58ac1cSmalc  ;;
5620c58ac1cSmalc  --audio-drv-list=*) audio_drv_list="$optarg"
5630c58ac1cSmalc  ;;
564eb852011SMarkus Armbruster  --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
565eb852011SMarkus Armbruster  ;;
566f8393946Saurel32  --enable-debug-tcg) debug_tcg="yes"
567f8393946Saurel32  ;;
568f8393946Saurel32  --disable-debug-tcg) debug_tcg="no"
569f8393946Saurel32  ;;
570b4475aa2SLuiz Capitulino  --enable-debug-mon) debug_mon="yes"
571b4475aa2SLuiz Capitulino  ;;
572b4475aa2SLuiz Capitulino  --disable-debug-mon) debug_mon="no"
573b4475aa2SLuiz Capitulino  ;;
574f3d08ee6SPaul Brook  --enable-debug)
575f3d08ee6SPaul Brook      # Enable debugging options that aren't excessively noisy
576f3d08ee6SPaul Brook      debug_tcg="yes"
577b4475aa2SLuiz Capitulino      debug_mon="yes"
578f3d08ee6SPaul Brook      debug="yes"
579f3d08ee6SPaul Brook      strip_opt="no"
580f3d08ee6SPaul Brook  ;;
58103b4fe7dSaliguori  --enable-sparse) sparse="yes"
58203b4fe7dSaliguori  ;;
58303b4fe7dSaliguori  --disable-sparse) sparse="no"
58403b4fe7dSaliguori  ;;
5851625af87Saliguori  --disable-strip) strip_opt="no"
5861625af87Saliguori  ;;
5878d5d2d4cSths  --disable-vnc-tls) vnc_tls="no"
5888d5d2d4cSths  ;;
5891be10ad2SJuan Quintela  --enable-vnc-tls) vnc_tls="yes"
5901be10ad2SJuan Quintela  ;;
5912f9606b3Saliguori  --disable-vnc-sasl) vnc_sasl="no"
5922f9606b3Saliguori  ;;
593ea784e3bSJuan Quintela  --enable-vnc-sasl) vnc_sasl="yes"
594ea784e3bSJuan Quintela  ;;
5952f6f5c7aSCorentin Chary  --disable-vnc-jpeg) vnc_jpeg="no"
5962f6f5c7aSCorentin Chary  ;;
5972f6f5c7aSCorentin Chary  --enable-vnc-jpeg) vnc_jpeg="yes"
5982f6f5c7aSCorentin Chary  ;;
599efe556adSCorentin Chary  --disable-vnc-png) vnc_png="no"
600efe556adSCorentin Chary  ;;
601efe556adSCorentin Chary  --enable-vnc-png) vnc_png="yes"
602efe556adSCorentin Chary  ;;
603bd023f95SCorentin Chary  --disable-vnc-thread) vnc_thread="no"
604bd023f95SCorentin Chary  ;;
605bd023f95SCorentin Chary  --enable-vnc-thread) vnc_thread="yes"
606bd023f95SCorentin Chary  ;;
607443f1376Sbellard  --disable-slirp) slirp="no"
608c20709aaSbellard  ;;
609ee682d27SStefan Weil  --disable-uuid) uuid="no"
610ee682d27SStefan Weil  ;;
611ee682d27SStefan Weil  --enable-uuid) uuid="yes"
612ee682d27SStefan Weil  ;;
613e0e6c8c0Saliguori  --disable-vde) vde="no"
6148a16d273Sths  ;;
615dfb278bdSJuan Quintela  --enable-vde) vde="yes"
616dfb278bdSJuan Quintela  ;;
617e37630caSaliguori  --disable-xen) xen="no"
618e37630caSaliguori  ;;
619fc321b4bSJuan Quintela  --enable-xen) xen="yes"
620fc321b4bSJuan Quintela  ;;
6212e4d9fb1Saurel32  --disable-brlapi) brlapi="no"
6222e4d9fb1Saurel32  ;;
6234ffcedb6SJuan Quintela  --enable-brlapi) brlapi="yes"
6244ffcedb6SJuan Quintela  ;;
625fb599c9aSbalrog  --disable-bluez) bluez="no"
626fb599c9aSbalrog  ;;
627a20a6f46SJuan Quintela  --enable-bluez) bluez="yes"
628a20a6f46SJuan Quintela  ;;
6297ba1e619Saliguori  --disable-kvm) kvm="no"
6307ba1e619Saliguori  ;;
631b31a0277SJuan Quintela  --enable-kvm) kvm="yes"
632b31a0277SJuan Quintela  ;;
63305c2a3e7Sbellard  --enable-profiler) profiler="yes"
63405c2a3e7Sbellard  ;;
635c2de5c91Smalc  --enable-cocoa)
636c2de5c91Smalc      cocoa="yes" ;
637c2de5c91Smalc      sdl="no" ;
638c2de5c91Smalc      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
6395b0753e0Sbellard  ;;
640cad25d69Spbrook  --disable-system) softmmu="no"
6410a8e90f4Spbrook  ;;
642cad25d69Spbrook  --enable-system) softmmu="yes"
6430a8e90f4Spbrook  ;;
6440953a80fSZachary Amsden  --disable-user)
6450953a80fSZachary Amsden      linux_user="no" ;
6460953a80fSZachary Amsden      bsd_user="no" ;
6470953a80fSZachary Amsden      darwin_user="no"
6480953a80fSZachary Amsden  ;;
6490953a80fSZachary Amsden  --enable-user) ;;
650831b7825Sths  --disable-linux-user) linux_user="no"
6510a8e90f4Spbrook  ;;
652831b7825Sths  --enable-linux-user) linux_user="yes"
653831b7825Sths  ;;
654831b7825Sths  --disable-darwin-user) darwin_user="no"
655831b7825Sths  ;;
656831b7825Sths  --enable-darwin-user) darwin_user="yes"
6570a8e90f4Spbrook  ;;
65884778508Sblueswir1  --disable-bsd-user) bsd_user="no"
65984778508Sblueswir1  ;;
66084778508Sblueswir1  --enable-bsd-user) bsd_user="yes"
66184778508Sblueswir1  ;;
662379f6698SPaul Brook  --enable-guest-base) guest_base="yes"
663379f6698SPaul Brook  ;;
664379f6698SPaul Brook  --disable-guest-base) guest_base="no"
665379f6698SPaul Brook  ;;
66634005a00SKirill A. Shutemov  --enable-user-pie) user_pie="yes"
66734005a00SKirill A. Shutemov  ;;
66834005a00SKirill A. Shutemov  --disable-user-pie) user_pie="no"
66934005a00SKirill A. Shutemov  ;;
670c5937220Spbrook  --enable-uname-release=*) uname_release="$optarg"
671c5937220Spbrook  ;;
6723142255cSblueswir1  --sparc_cpu=*)
6733142255cSblueswir1  ;;
67485aa5189Sbellard  --enable-werror) werror="yes"
67585aa5189Sbellard  ;;
67685aa5189Sbellard  --disable-werror) werror="no"
67785aa5189Sbellard  ;;
6784d3b6f6eSbalrog  --disable-curses) curses="no"
6794d3b6f6eSbalrog  ;;
680c584a6d0SJuan Quintela  --enable-curses) curses="yes"
681c584a6d0SJuan Quintela  ;;
682769ce76dSAlexander Graf  --disable-curl) curl="no"
683769ce76dSAlexander Graf  ;;
684788c8196SJuan Quintela  --enable-curl) curl="yes"
685788c8196SJuan Quintela  ;;
6862df87df7SJuan Quintela  --disable-fdt) fdt="no"
6872df87df7SJuan Quintela  ;;
6882df87df7SJuan Quintela  --enable-fdt) fdt="yes"
6892df87df7SJuan Quintela  ;;
6905495ed11SLuiz Capitulino  --disable-check-utests) check_utests="no"
6915495ed11SLuiz Capitulino  ;;
6925495ed11SLuiz Capitulino  --enable-check-utests) check_utests="yes"
6935495ed11SLuiz Capitulino  ;;
694bd0c5661Spbrook  --disable-nptl) nptl="no"
695bd0c5661Spbrook  ;;
696b0a47e79SJuan Quintela  --enable-nptl) nptl="yes"
697b0a47e79SJuan Quintela  ;;
6988ff9cbf7Smalc  --enable-mixemu) mixemu="yes"
6998ff9cbf7Smalc  ;;
7005c6c3a6cSChristoph Hellwig  --disable-linux-aio) linux_aio="no"
7015c6c3a6cSChristoph Hellwig  ;;
7025c6c3a6cSChristoph Hellwig  --enable-linux-aio) linux_aio="yes"
7035c6c3a6cSChristoph Hellwig  ;;
704758e8e38SVenkateswararao Jujjuri (JV)  --disable-attr) attr="no"
705758e8e38SVenkateswararao Jujjuri (JV)  ;;
706758e8e38SVenkateswararao Jujjuri (JV)  --enable-attr) attr="yes"
707758e8e38SVenkateswararao Jujjuri (JV)  ;;
708e5d355d1Saliguori  --enable-io-thread) io_thread="yes"
709e5d355d1Saliguori  ;;
71077755340Sths  --disable-blobs) blobs="no"
71177755340Sths  ;;
712eac30262Saliguori  --kerneldir=*) kerneldir="$optarg"
713eac30262Saliguori  ;;
7144a19f1ecSpbrook  --with-pkgversion=*) pkgversion=" ($optarg)"
7154a19f1ecSpbrook  ;;
716a25dba17SJuan Quintela  --disable-docs) docs="no"
71770ec5dc0SAnthony Liguori  ;;
718a25dba17SJuan Quintela  --enable-docs) docs="yes"
71983a3ab8bSJuan Quintela  ;;
720d5970055SMichael S. Tsirkin  --disable-vhost-net) vhost_net="no"
721d5970055SMichael S. Tsirkin  ;;
722d5970055SMichael S. Tsirkin  --enable-vhost-net) vhost_net="yes"
723d5970055SMichael S. Tsirkin  ;;
7246bde81cbSPaolo Bonzini  --*dir)
7256bde81cbSPaolo Bonzini  ;;
7267f1559c6Sbalrog  *) echo "ERROR: unknown option $opt"; show_help="yes"
7277f1559c6Sbalrog  ;;
7287d13299dSbellard  esac
7297d13299dSbellarddone
7307d13299dSbellard
7313142255cSblueswir1#
7323142255cSblueswir1# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
733a558ee17SJuan Quintela# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
7343142255cSblueswir1#
735379f6698SPaul Brookhost_guest_base="no"
73640293e58Sbellardcase "$cpu" in
737ed968ff1SJuan Quintela    sparc) case $sparc_cpu in
738ed968ff1SJuan Quintela           v7|v8)
739a558ee17SJuan Quintela             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
740ed968ff1SJuan Quintela           ;;
741ed968ff1SJuan Quintela           v8plus|v8plusa)
742a558ee17SJuan Quintela             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
743ed968ff1SJuan Quintela           ;;
744ed968ff1SJuan Quintela           *) # sparc_cpu not defined in the command line
745a558ee17SJuan Quintela             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
746ed968ff1SJuan Quintela           esac
7470c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
748a558ee17SJuan Quintela           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
749762e8230Sblueswir1           if test "$solaris" = "no" ; then
750a558ee17SJuan Quintela             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
751c81da56eSJuan Quintela             helper_cflags="-ffixed-i0"
752762e8230Sblueswir1           fi
7533142255cSblueswir1           ;;
754ed968ff1SJuan Quintela    sparc64)
755a558ee17SJuan Quintela           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
7560c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
757a558ee17SJuan Quintela           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
758ed968ff1SJuan Quintela           if test "$solaris" != "no" ; then
759a558ee17SJuan Quintela             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
760762e8230Sblueswir1           fi
7613142255cSblueswir1           ;;
76276d83bdeSths    s390)
76328d7cc49SRichard Henderson           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
76428d7cc49SRichard Henderson           LDFLAGS="-m31 $LDFLAGS"
76548bb3750SRichard Henderson           host_guest_base="yes"
76628d7cc49SRichard Henderson           ;;
76728d7cc49SRichard Henderson    s390x)
76828d7cc49SRichard Henderson           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
76928d7cc49SRichard Henderson           LDFLAGS="-m64 $LDFLAGS"
77048bb3750SRichard Henderson           host_guest_base="yes"
77176d83bdeSths           ;;
77240293e58Sbellard    i386)
773a558ee17SJuan Quintela           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
7740c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
775c81da56eSJuan Quintela           helper_cflags="-fomit-frame-pointer"
776379f6698SPaul Brook           host_guest_base="yes"
77740293e58Sbellard           ;;
77840293e58Sbellard    x86_64)
779a558ee17SJuan Quintela           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
7800c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
781379f6698SPaul Brook           host_guest_base="yes"
782379f6698SPaul Brook           ;;
783379f6698SPaul Brook    arm*)
784379f6698SPaul Brook           host_guest_base="yes"
78540293e58Sbellard           ;;
786f6548c0aSmalc    ppc*)
787f6548c0aSmalc           host_guest_base="yes"
788f6548c0aSmalc           ;;
789cc01cc8eSAurelien Jarno    mips*)
790cc01cc8eSAurelien Jarno           host_guest_base="yes"
791cc01cc8eSAurelien Jarno           ;;
792477ba620SAurelien Jarno    ia64*)
793477ba620SAurelien Jarno           host_guest_base="yes"
794477ba620SAurelien Jarno           ;;
795fd76e73aSRichard Henderson    hppa*)
796fd76e73aSRichard Henderson           host_guest_base="yes"
797fd76e73aSRichard Henderson           ;;
7983142255cSblueswir1esac
7993142255cSblueswir1
800379f6698SPaul Brook[ -z "$guest_base" ] && guest_base="$host_guest_base"
801379f6698SPaul Brook
802af5db58eSpbrookif test x"$show_help" = x"yes" ; then
803af5db58eSpbrookcat << EOF
804af5db58eSpbrook
805af5db58eSpbrookUsage: configure [options]
806af5db58eSpbrookOptions: [defaults in brackets after descriptions]
807af5db58eSpbrook
808af5db58eSpbrookEOF
809af5db58eSpbrookecho "Standard options:"
810af5db58eSpbrookecho "  --help                   print this message"
811af5db58eSpbrookecho "  --prefix=PREFIX          install in PREFIX [$prefix]"
812af5db58eSpbrookecho "  --interp-prefix=PREFIX   where to find shared libraries, etc."
813af5db58eSpbrookecho "                           use %M for cpu name [$interp_prefix]"
814af5db58eSpbrookecho "  --target-list=LIST       set target list [$target_list]"
815af5db58eSpbrookecho ""
816af5db58eSpbrookecho "Advanced options (experts only):"
817af5db58eSpbrookecho "  --source-path=PATH       path of source code [$source_path]"
818af5db58eSpbrookecho "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
819af5db58eSpbrookecho "  --cc=CC                  use C compiler CC [$cc]"
8200bfe8cc0SPaolo Bonziniecho "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
8210bfe8cc0SPaolo Bonziniecho "                           build time"
822a558ee17SJuan Quintelaecho "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
823e3fc14c3SJan Kiszkaecho "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
824af5db58eSpbrookecho "  --make=MAKE              use specified make [$make]"
8256a882643Spbrookecho "  --install=INSTALL        use specified install [$install]"
826af5db58eSpbrookecho "  --static                 enable static build [$static]"
8270b24e75fSPaolo Bonziniecho "  --mandir=PATH            install man pages in PATH"
8280b24e75fSPaolo Bonziniecho "  --datadir=PATH           install firmware in PATH"
8290b24e75fSPaolo Bonziniecho "  --docdir=PATH            install documentation in PATH"
8300b24e75fSPaolo Bonziniecho "  --bindir=PATH            install binaries in PATH"
8310b24e75fSPaolo Bonziniecho "  --sysconfdir=PATH        install config in PATH/qemu"
832f8393946Saurel32echo "  --enable-debug-tcg       enable TCG debugging"
833f8393946Saurel32echo "  --disable-debug-tcg      disable TCG debugging (default)"
83409695a4aSStefan Weilecho "  --enable-debug           enable common debug build options"
835890b1658Saliguoriecho "  --enable-sparse          enable sparse checker"
836890b1658Saliguoriecho "  --disable-sparse         disable sparse checker (default)"
8371625af87Saliguoriecho "  --disable-strip          disable stripping binaries"
83885aa5189Sbellardecho "  --disable-werror         disable compilation abort on warning"
839fe8f78e4Sbalrogecho "  --disable-sdl            disable SDL"
840c4198157SJuan Quintelaecho "  --enable-sdl             enable SDL"
841af5db58eSpbrookecho "  --enable-cocoa           enable COCOA (Mac OS X only)"
842c2de5c91Smalcecho "  --audio-drv-list=LIST    set audio drivers list:"
843c2de5c91Smalcecho "                           Available drivers: $audio_possible_drivers"
8444c9b53e3Smalcecho "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
8454c9b53e3Smalcecho "                           Available cards: $audio_possible_cards"
846eb852011SMarkus Armbrusterecho "  --block-drv-whitelist=L  set block driver whitelist"
847eb852011SMarkus Armbrusterecho "                           (affects only QEMU, not qemu-img)"
8488ff9cbf7Smalcecho "  --enable-mixemu          enable mixer emulation"
849e37630caSaliguoriecho "  --disable-xen            disable xen backend driver support"
850fc321b4bSJuan Quintelaecho "  --enable-xen             enable xen backend driver support"
8512e4d9fb1Saurel32echo "  --disable-brlapi         disable BrlAPI"
8524ffcedb6SJuan Quintelaecho "  --enable-brlapi          enable BrlAPI"
8538d5d2d4cSthsecho "  --disable-vnc-tls        disable TLS encryption for VNC server"
8541be10ad2SJuan Quintelaecho "  --enable-vnc-tls         enable TLS encryption for VNC server"
8552f9606b3Saliguoriecho "  --disable-vnc-sasl       disable SASL encryption for VNC server"
856ea784e3bSJuan Quintelaecho "  --enable-vnc-sasl        enable SASL encryption for VNC server"
8572f6f5c7aSCorentin Charyecho "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
8582f6f5c7aSCorentin Charyecho "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
85996763cf9SCorentin Charyecho "  --disable-vnc-png        disable PNG compression for VNC server (default)"
860efe556adSCorentin Charyecho "  --enable-vnc-png         enable PNG compression for VNC server"
861bd023f95SCorentin Charyecho "  --disable-vnc-thread     disable threaded VNC server"
862bd023f95SCorentin Charyecho "  --enable-vnc-thread      enable threaded VNC server"
863af896aaaSpbrookecho "  --disable-curses         disable curses output"
864c584a6d0SJuan Quintelaecho "  --enable-curses          enable curses output"
865769ce76dSAlexander Grafecho "  --disable-curl           disable curl connectivity"
866788c8196SJuan Quintelaecho "  --enable-curl            enable curl connectivity"
8672df87df7SJuan Quintelaecho "  --disable-fdt            disable fdt device tree"
8682df87df7SJuan Quintelaecho "  --enable-fdt             enable fdt device tree"
8695495ed11SLuiz Capitulinoecho "  --disable-check-utests   disable check unit-tests"
8705495ed11SLuiz Capitulinoecho "  --enable-check-utests    enable check unit-tests"
871fb599c9aSbalrogecho "  --disable-bluez          disable bluez stack connectivity"
872a20a6f46SJuan Quintelaecho "  --enable-bluez           enable bluez stack connectivity"
8737ba1e619Saliguoriecho "  --disable-kvm            disable KVM acceleration support"
874b31a0277SJuan Quintelaecho "  --enable-kvm             enable KVM acceleration support"
875bd0c5661Spbrookecho "  --disable-nptl           disable usermode NPTL support"
876e5934d33SAndre Przywaraecho "  --enable-nptl            enable usermode NPTL support"
877af5db58eSpbrookecho "  --enable-system          enable all system emulation targets"
878af5db58eSpbrookecho "  --disable-system         disable all system emulation targets"
8790953a80fSZachary Amsdenecho "  --enable-user            enable supported user emulation targets"
8800953a80fSZachary Amsdenecho "  --disable-user           disable all user emulation targets"
881831b7825Sthsecho "  --enable-linux-user      enable all linux usermode emulation targets"
882831b7825Sthsecho "  --disable-linux-user     disable all linux usermode emulation targets"
883831b7825Sthsecho "  --enable-darwin-user     enable all darwin usermode emulation targets"
884831b7825Sthsecho "  --disable-darwin-user    disable all darwin usermode emulation targets"
88584778508Sblueswir1echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
88684778508Sblueswir1echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
887379f6698SPaul Brookecho "  --enable-guest-base      enable GUEST_BASE support for usermode"
888379f6698SPaul Brookecho "                           emulation targets"
889379f6698SPaul Brookecho "  --disable-guest-base     disable GUEST_BASE support"
89034005a00SKirill A. Shutemovecho "  --enable-user-pie        build usermode emulation targets as PIE"
89134005a00SKirill A. Shutemovecho "  --disable-user-pie       do not build usermode emulation targets as PIE"
892af5db58eSpbrookecho "  --fmod-lib               path to FMOD library"
893af5db58eSpbrookecho "  --fmod-inc               path to FMOD includes"
8942f6a1ab0Sblueswir1echo "  --oss-lib                path to OSS library"
895c5937220Spbrookecho "  --enable-uname-release=R Return R for uname -r in usermode emulation"
8963142255cSblueswir1echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
897ee682d27SStefan Weilecho "  --disable-uuid           disable uuid support"
898ee682d27SStefan Weilecho "  --enable-uuid            enable uuid support"
899e0e6c8c0Saliguoriecho "  --disable-vde            disable support for vde network"
900dfb278bdSJuan Quintelaecho "  --enable-vde             enable support for vde network"
9015c6c3a6cSChristoph Hellwigecho "  --disable-linux-aio      disable Linux AIO support"
9025c6c3a6cSChristoph Hellwigecho "  --enable-linux-aio       enable Linux AIO support"
903758e8e38SVenkateswararao Jujjuri (JV)echo "  --disable-attr           disables attr and xattr support"
904758e8e38SVenkateswararao Jujjuri (JV)echo "  --enable-attr            enable attr and xattr support"
905e5d355d1Saliguoriecho "  --enable-io-thread       enable IO thread"
90677755340Sthsecho "  --disable-blobs          disable installing provided firmware blobs"
907eac30262Saliguoriecho "  --kerneldir=PATH         look for kernel includes in PATH"
908d2807bc9SDirk Ullrichecho "  --enable-docs            enable documentation build"
909d2807bc9SDirk Ullrichecho "  --disable-docs           disable documentation build"
910d5970055SMichael S. Tsirkinecho "  --disable-vhost-net      disable vhost-net acceleration support"
911d5970055SMichael S. Tsirkinecho "  --enable-vhost-net       enable vhost-net acceleration support"
9127e24e92aSStefan Hajnocziecho "  --trace-backend=B        Trace backend nop simple ust"
9139410b56cSPrerna Saxenaecho "  --trace-file=NAME        Full PATH,NAME of file to store traces"
9149410b56cSPrerna Saxenaecho "                           Default:trace-<pid>"
915af5db58eSpbrookecho ""
9165bf08934Sthsecho "NOTE: The object files are built at the place where configure is launched"
917af5db58eSpbrookexit 1
918af5db58eSpbrookfi
919af5db58eSpbrook
920ec530c81Sbellard#
921ec530c81Sbellard# Solaris specific configure tool chain decisions
922ec530c81Sbellard#
923ec530c81Sbellardif test "$solaris" = "yes" ; then
9246792aa11SLoïc Minier  if has $install; then
9256792aa11SLoïc Minier    :
9266792aa11SLoïc Minier  else
927ec530c81Sbellard    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
928ec530c81Sbellard    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
929ec530c81Sbellard    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
930ec530c81Sbellard    exit 1
931ec530c81Sbellard  fi
9326792aa11SLoïc Minier  if test "`path_of $install`" = "/usr/sbin/install" ; then
933ec530c81Sbellard    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
934ec530c81Sbellard    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
935ec530c81Sbellard    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
936ec530c81Sbellard    exit 1
937ec530c81Sbellard  fi
9386792aa11SLoïc Minier  if has ar; then
9396792aa11SLoïc Minier    :
9406792aa11SLoïc Minier  else
941ec530c81Sbellard    echo "Error: No path includes ar"
942ec530c81Sbellard    if test -f /usr/ccs/bin/ar ; then
943ec530c81Sbellard      echo "Add /usr/ccs/bin to your path and rerun configure"
944ec530c81Sbellard    fi
945ec530c81Sbellard    exit 1
946ec530c81Sbellard  fi
947ec530c81Sbellardfi
948ec530c81Sbellard
949ec530c81Sbellard
9505327cf48Sbellardif test -z "$target_list" ; then
9515327cf48Sbellard# these targets are portable
9520a8e90f4Spbrook    if [ "$softmmu" = "yes" ] ; then
9532408a527Saurel32        target_list="\
9542408a527Saurel32i386-softmmu \
9552408a527Saurel32x86_64-softmmu \
9562408a527Saurel32arm-softmmu \
9572408a527Saurel32cris-softmmu \
9582408a527Saurel32m68k-softmmu \
95972b675caSEdgar E. Iglesiasmicroblaze-softmmu \
9602408a527Saurel32mips-softmmu \
9612408a527Saurel32mipsel-softmmu \
9622408a527Saurel32mips64-softmmu \
9632408a527Saurel32mips64el-softmmu \
9642408a527Saurel32ppc-softmmu \
9652408a527Saurel32ppcemb-softmmu \
9662408a527Saurel32ppc64-softmmu \
9672408a527Saurel32sh4-softmmu \
9682408a527Saurel32sh4eb-softmmu \
9692408a527Saurel32sparc-softmmu \
9701b64fcaeSIgor V. Kovalenkosparc64-softmmu \
9712408a527Saurel32"
9720a8e90f4Spbrook    fi
9735327cf48Sbellard# the following are Linux specific
974831b7825Sths    if [ "$linux_user" = "yes" ] ; then
9752408a527Saurel32        target_list="${target_list}\
9762408a527Saurel32i386-linux-user \
9772408a527Saurel32x86_64-linux-user \
9782408a527Saurel32alpha-linux-user \
9792408a527Saurel32arm-linux-user \
9802408a527Saurel32armeb-linux-user \
9812408a527Saurel32cris-linux-user \
9822408a527Saurel32m68k-linux-user \
98372b675caSEdgar E. Iglesiasmicroblaze-linux-user \
9842408a527Saurel32mips-linux-user \
9852408a527Saurel32mipsel-linux-user \
9862408a527Saurel32ppc-linux-user \
9872408a527Saurel32ppc64-linux-user \
9882408a527Saurel32ppc64abi32-linux-user \
9892408a527Saurel32sh4-linux-user \
9902408a527Saurel32sh4eb-linux-user \
9912408a527Saurel32sparc-linux-user \
9922408a527Saurel32sparc64-linux-user \
9932408a527Saurel32sparc32plus-linux-user \
9942408a527Saurel32"
995831b7825Sths    fi
996831b7825Sths# the following are Darwin specific
997831b7825Sths    if [ "$darwin_user" = "yes" ] ; then
9982408a527Saurel32        target_list="$target_list i386-darwin-user ppc-darwin-user "
9995327cf48Sbellard    fi
100084778508Sblueswir1# the following are BSD specific
100184778508Sblueswir1    if [ "$bsd_user" = "yes" ] ; then
100284778508Sblueswir1        target_list="${target_list}\
100331fc12dfSblueswir1i386-bsd-user \
100431fc12dfSblueswir1x86_64-bsd-user \
100531fc12dfSblueswir1sparc-bsd-user \
100684778508Sblueswir1sparc64-bsd-user \
100784778508Sblueswir1"
100884778508Sblueswir1    fi
10096e20a45fSbellardelse
1010b1a550a0Spbrook    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
10115327cf48Sbellardfi
10120a8e90f4Spbrookif test -z "$target_list" ; then
10130a8e90f4Spbrook    echo "No targets enabled"
10140a8e90f4Spbrook    exit 1
10150a8e90f4Spbrookfi
1016f55fe278SPaolo Bonzini# see if system emulation was really requested
1017f55fe278SPaolo Bonzinicase " $target_list " in
1018f55fe278SPaolo Bonzini  *"-softmmu "*) softmmu=yes
1019f55fe278SPaolo Bonzini  ;;
1020f55fe278SPaolo Bonzini  *) softmmu=no
1021f55fe278SPaolo Bonzini  ;;
1022f55fe278SPaolo Bonziniesac
10235327cf48Sbellard
1024249247c9SJuan Quintelafeature_not_found() {
1025249247c9SJuan Quintela  feature=$1
1026249247c9SJuan Quintela
1027249247c9SJuan Quintela  echo "ERROR"
1028249247c9SJuan Quintela  echo "ERROR: User requested feature $feature"
10299332f6a2SSebastian Herbszt  echo "ERROR: configure was not able to find it"
1030249247c9SJuan Quintela  echo "ERROR"
1031249247c9SJuan Quintela  exit 1;
1032249247c9SJuan Quintela}
1033249247c9SJuan Quintela
10347d13299dSbellardif test -z "$cross_prefix" ; then
10357d13299dSbellard
10367d13299dSbellard# ---
10377d13299dSbellard# big/little endian test
10387d13299dSbellardcat > $TMPC << EOF
10397d13299dSbellard#include <inttypes.h>
10407d13299dSbellardint main(int argc, char ** argv){
10417d13299dSbellard        volatile uint32_t i=0x01234567;
10427d13299dSbellard        return (*((uint8_t*)(&i))) == 0x67;
10437d13299dSbellard}
10447d13299dSbellardEOF
10457d13299dSbellard
104652166aa0SJuan Quintelaif compile_prog "" "" ; then
10477d13299dSbellard$TMPE && bigendian="yes"
10487d13299dSbellardelse
10497d13299dSbellardecho big/little test failed
10507d13299dSbellardfi
10517d13299dSbellard
10527d13299dSbellardelse
10537d13299dSbellard
10547d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess
1055ea8f20f8SJuan Quintelacase "$cpu" in
105624e804ecSAlexander Graf  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1057ea8f20f8SJuan Quintela    bigendian=yes
1058ea8f20f8SJuan Quintela  ;;
1059ea8f20f8SJuan Quintelaesac
10607d13299dSbellard
10617d13299dSbellardfi
10627d13299dSbellard
1063b6853697Sbellard# host long bits test
1064b6853697Sbellardhostlongbits="32"
1065ea8f20f8SJuan Quintelacase "$cpu" in
106624e804ecSAlexander Graf  x86_64|alpha|ia64|sparc64|ppc64|s390x)
1067ea8f20f8SJuan Quintela    hostlongbits=64
1068ea8f20f8SJuan Quintela  ;;
1069ea8f20f8SJuan Quintelaesac
1070b6853697Sbellard
1071b0a47e79SJuan Quintela
1072b0a47e79SJuan Quintela##########################################
1073b0a47e79SJuan Quintela# NPTL probe
1074b0a47e79SJuan Quintela
1075b0a47e79SJuan Quintelaif test "$nptl" != "no" ; then
1076bd0c5661Spbrook  cat > $TMPC <<EOF
1077bd0c5661Spbrook#include <sched.h>
107830813ceaSpbrook#include <linux/futex.h>
1079bd0c5661Spbrookvoid foo()
1080bd0c5661Spbrook{
1081bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1082bd0c5661Spbrook#error bork
1083bd0c5661Spbrook#endif
1084bd0c5661Spbrook}
1085bd0c5661SpbrookEOF
1086bd0c5661Spbrook
108752166aa0SJuan Quintela  if compile_object ; then
1088b0a47e79SJuan Quintela    nptl=yes
1089bd0c5661Spbrook  else
1090b0a47e79SJuan Quintela    if test "$nptl" = "yes" ; then
1091b0a47e79SJuan Quintela      feature_not_found "nptl"
1092b0a47e79SJuan Quintela    fi
1093b0a47e79SJuan Quintela    nptl=no
1094b0a47e79SJuan Quintela  fi
1095bd0c5661Spbrookfi
1096bd0c5661Spbrook
109711d9f695Sbellard##########################################
1098ac62922eSbalrog# zlib check
1099ac62922eSbalrog
1100ac62922eSbalrogcat > $TMPC << EOF
1101ac62922eSbalrog#include <zlib.h>
1102ac62922eSbalrogint main(void) { zlibVersion(); return 0; }
1103ac62922eSbalrogEOF
110452166aa0SJuan Quintelaif compile_prog "" "-lz" ; then
1105ac62922eSbalrog    :
1106ac62922eSbalrogelse
1107ac62922eSbalrog    echo
1108ac62922eSbalrog    echo "Error: zlib check failed"
1109ac62922eSbalrog    echo "Make sure to have the zlib libs and headers installed."
1110ac62922eSbalrog    echo
1111ac62922eSbalrog    exit 1
1112ac62922eSbalrogfi
1113ac62922eSbalrog
1114ac62922eSbalrog##########################################
1115e37630caSaliguori# xen probe
1116e37630caSaliguori
1117fc321b4bSJuan Quintelaif test "$xen" != "no" ; then
1118b2266beeSJuan Quintela  xen_libs="-lxenstore -lxenctrl -lxenguest"
1119e37630caSaliguori  cat > $TMPC <<EOF
1120e37630caSaliguori#include <xenctrl.h>
1121e37630caSaliguori#include <xs.h>
1122df7a607bSChristoph Eggerint main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
1123e37630caSaliguoriEOF
112452166aa0SJuan Quintela  if compile_prog "" "$xen_libs" ; then
1125fc321b4bSJuan Quintela    xen=yes
11263efd632bSJuan Quintela    libs_softmmu="$xen_libs $libs_softmmu"
1127e37630caSaliguori  else
1128fc321b4bSJuan Quintela    if test "$xen" = "yes" ; then
1129fc321b4bSJuan Quintela      feature_not_found "xen"
1130fc321b4bSJuan Quintela    fi
1131fc321b4bSJuan Quintela    xen=no
1132e37630caSaliguori  fi
1133e37630caSaliguorifi
1134e37630caSaliguori
1135e37630caSaliguori##########################################
1136f91672e5SPaolo Bonzini# pkgconfig probe
1137f91672e5SPaolo Bonzini
1138f91672e5SPaolo Bonzinipkgconfig="${cross_prefix}pkg-config"
11390dba6195SLoïc Minierif ! has $pkgconfig; then
1140f91672e5SPaolo Bonzini  # likely not cross compiling, or hope for the best
1141f91672e5SPaolo Bonzini  pkgconfig=pkg-config
1142f91672e5SPaolo Bonzinifi
1143f91672e5SPaolo Bonzini
1144f91672e5SPaolo Bonzini##########################################
1145dfffc653SJuan Quintela# Sparse probe
1146dfffc653SJuan Quintelaif test "$sparse" != "no" ; then
11470dba6195SLoïc Minier  if has cgcc; then
1148dfffc653SJuan Quintela    sparse=yes
1149dfffc653SJuan Quintela  else
1150dfffc653SJuan Quintela    if test "$sparse" = "yes" ; then
1151dfffc653SJuan Quintela      feature_not_found "sparse"
1152dfffc653SJuan Quintela    fi
1153dfffc653SJuan Quintela    sparse=no
1154dfffc653SJuan Quintela  fi
1155dfffc653SJuan Quintelafi
1156dfffc653SJuan Quintela
1157dfffc653SJuan Quintela##########################################
115811d9f695Sbellard# SDL probe
115911d9f695Sbellard
1160fec0e3e8SStefan Weil# Look for sdl configuration program (pkg-config or sdl-config).
1161fec0e3e8SStefan Weil# Prefer variant with cross prefix if cross compiling,
1162fec0e3e8SStefan Weil# and favour pkg-config with sdl over sdl-config.
1163fec0e3e8SStefan Weilif test -n "$cross_prefix" -a $pkgconfig != pkg-config && \
1164fec0e3e8SStefan Weil     $pkgconfig sdl --modversion >/dev/null 2>&1; then
1165fec0e3e8SStefan Weil  sdlconfig="$pkgconfig sdl"
1166fec0e3e8SStefan Weil  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1167fec0e3e8SStefan Weilelif test -n "$cross_prefix" && has ${cross_prefix}sdl-config; then
1168fec0e3e8SStefan Weil  sdlconfig="${cross_prefix}sdl-config"
1169fec0e3e8SStefan Weil  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1170fec0e3e8SStefan Weilelif $pkgconfig sdl --modversion >/dev/null 2>&1; then
11719316f803SPaolo Bonzini  sdlconfig="$pkgconfig sdl"
11729316f803SPaolo Bonzini  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
11730dba6195SLoïc Minierelif has sdl-config; then
11749316f803SPaolo Bonzini  sdlconfig='sdl-config'
11759316f803SPaolo Bonzini  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1176a0dfd8a4SLoïc Minierelse
1177a0dfd8a4SLoïc Minier  if test "$sdl" = "yes" ; then
1178a0dfd8a4SLoïc Minier    feature_not_found "sdl"
1179a0dfd8a4SLoïc Minier  fi
1180a0dfd8a4SLoïc Minier  sdl=no
11819316f803SPaolo Bonzinifi
118211d9f695Sbellard
11839316f803SPaolo Bonzinisdl_too_old=no
1184c4198157SJuan Quintelaif test "$sdl" != "no" ; then
118511d9f695Sbellard  cat > $TMPC << EOF
118611d9f695Sbellard#include <SDL.h>
118711d9f695Sbellard#undef main /* We don't want SDL to override our main() */
118811d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
118911d9f695SbellardEOF
11909316f803SPaolo Bonzini  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
119174f42e18STeLeMan  if test "$static" = "yes" ; then
119274f42e18STeLeMan    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
119374f42e18STeLeMan  else
11949316f803SPaolo Bonzini    sdl_libs=`$sdlconfig --libs 2> /dev/null`
119574f42e18STeLeMan  fi
119652166aa0SJuan Quintela  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
119711d9f695Sbellard    if test "$_sdlversion" -lt 121 ; then
119811d9f695Sbellard      sdl_too_old=yes
119911d9f695Sbellard    else
1200fd677642Sths      if test "$cocoa" = "no" ; then
120111d9f695Sbellard        sdl=yes
120211d9f695Sbellard      fi
1203fd677642Sths    fi
12047c1f25b4Sbellard
120567c274d3SPaolo Bonzini    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
12061ac88f28SJuan Quintela    if test "$sdl" = "yes" -a "$static" = "yes" ; then
120767c274d3SPaolo Bonzini      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1208f8aa6c7bSStefan Weil         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
1209f8aa6c7bSStefan Weil         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
121011d9f695Sbellard      fi
121152166aa0SJuan Quintela      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
12121ac88f28SJuan Quintela	:
12131ac88f28SJuan Quintela      else
12141ac88f28SJuan Quintela        sdl=no
12157c1f25b4Sbellard      fi
12167c1f25b4Sbellard    fi # static link
1217c4198157SJuan Quintela  else # sdl not found
1218c4198157SJuan Quintela    if test "$sdl" = "yes" ; then
1219c4198157SJuan Quintela      feature_not_found "sdl"
1220c4198157SJuan Quintela    fi
1221c4198157SJuan Quintela    sdl=no
12227c1f25b4Sbellard  fi # sdl compile test
1223fd677642Sthsfi
122411d9f695Sbellard
12255368a422Saliguoriif test "$sdl" = "yes" ; then
12265368a422Saliguori  cat > $TMPC <<EOF
12275368a422Saliguori#include <SDL.h>
12285368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11)
12295368a422Saliguori#include <X11/XKBlib.h>
12305368a422Saliguori#else
12315368a422Saliguori#error No x11 support
12325368a422Saliguori#endif
12335368a422Saliguoriint main(void) { return 0; }
12345368a422SaliguoriEOF
123552166aa0SJuan Quintela  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1236681306dfSJuan Quintela    sdl_libs="$sdl_libs -lX11"
12375368a422Saliguori  fi
123807d9ac44SJuan Quintela  if test "$mingw32" = "yes" ; then
123907d9ac44SJuan Quintela    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
124007d9ac44SJuan Quintela  fi
12410705667eSJuan Quintela  libs_softmmu="$sdl_libs $libs_softmmu"
12425368a422Saliguorifi
12435368a422Saliguori
12448f28f3fbSths##########################################
12458d5d2d4cSths# VNC TLS detection
12461be10ad2SJuan Quintelaif test "$vnc_tls" != "no" ; then
1247ae6b5e5aSaliguori  cat > $TMPC <<EOF
1248ae6b5e5aSaliguori#include <gnutls/gnutls.h>
1249ae6b5e5aSaliguoriint main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1250ae6b5e5aSaliguoriEOF
1251f91672e5SPaolo Bonzini  vnc_tls_cflags=`$pkgconfig --cflags gnutls 2> /dev/null`
1252f91672e5SPaolo Bonzini  vnc_tls_libs=`$pkgconfig --libs gnutls 2> /dev/null`
125352166aa0SJuan Quintela  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
12541be10ad2SJuan Quintela    vnc_tls=yes
1255a5e32cc9SJuan Quintela    libs_softmmu="$vnc_tls_libs $libs_softmmu"
1256ae6b5e5aSaliguori  else
12571be10ad2SJuan Quintela    if test "$vnc_tls" = "yes" ; then
12581be10ad2SJuan Quintela      feature_not_found "vnc-tls"
12591be10ad2SJuan Quintela    fi
12601be10ad2SJuan Quintela    vnc_tls=no
12618d5d2d4cSths  fi
12628d5d2d4cSthsfi
12638d5d2d4cSths
12648d5d2d4cSths##########################################
12652f9606b3Saliguori# VNC SASL detection
12663aefa744SJuan Quintelaif test "$vnc_sasl" != "no" ; then
12672f9606b3Saliguori  cat > $TMPC <<EOF
12682f9606b3Saliguori#include <sasl/sasl.h>
12692f9606b3Saliguori#include <stdio.h>
12702f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; }
12712f9606b3SaliguoriEOF
12722f9606b3Saliguori  # Assuming Cyrus-SASL installed in /usr prefix
12732f9606b3Saliguori  vnc_sasl_cflags=""
12742f9606b3Saliguori  vnc_sasl_libs="-lsasl2"
127552166aa0SJuan Quintela  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1276ea784e3bSJuan Quintela    vnc_sasl=yes
1277fa838301SJuan Quintela    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
12782f9606b3Saliguori  else
1279ea784e3bSJuan Quintela    if test "$vnc_sasl" = "yes" ; then
1280ea784e3bSJuan Quintela      feature_not_found "vnc-sasl"
1281ea784e3bSJuan Quintela    fi
1282ea784e3bSJuan Quintela    vnc_sasl=no
12832f9606b3Saliguori  fi
12842f9606b3Saliguorifi
12852f9606b3Saliguori
12862f9606b3Saliguori##########################################
12872f6f5c7aSCorentin Chary# VNC JPEG detection
128896763cf9SCorentin Charyif test "$vnc_jpeg" != "no" ; then
12892f6f5c7aSCorentin Charycat > $TMPC <<EOF
12902f6f5c7aSCorentin Chary#include <stdio.h>
12912f6f5c7aSCorentin Chary#include <jpeglib.h>
12922f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
12932f6f5c7aSCorentin CharyEOF
12942f6f5c7aSCorentin Chary    vnc_jpeg_cflags=""
12952f6f5c7aSCorentin Chary    vnc_jpeg_libs="-ljpeg"
12962f6f5c7aSCorentin Chary  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
12972f6f5c7aSCorentin Chary    vnc_jpeg=yes
12982f6f5c7aSCorentin Chary    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
12992f6f5c7aSCorentin Chary  else
13002f6f5c7aSCorentin Chary    if test "$vnc_jpeg" = "yes" ; then
13012f6f5c7aSCorentin Chary      feature_not_found "vnc-jpeg"
13022f6f5c7aSCorentin Chary    fi
13032f6f5c7aSCorentin Chary    vnc_jpeg=no
13042f6f5c7aSCorentin Chary  fi
13052f6f5c7aSCorentin Charyfi
13062f6f5c7aSCorentin Chary
13072f6f5c7aSCorentin Chary##########################################
1308efe556adSCorentin Chary# VNC PNG detection
130996763cf9SCorentin Charyif test "$vnc_png" != "no" ; then
1310efe556adSCorentin Charycat > $TMPC <<EOF
1311efe556adSCorentin Chary//#include <stdio.h>
1312efe556adSCorentin Chary#include <png.h>
1313efe556adSCorentin Charyint main(void) {
1314efe556adSCorentin Chary    png_structp png_ptr;
1315efe556adSCorentin Chary    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1316efe556adSCorentin Chary    return 0;
1317efe556adSCorentin Chary}
1318efe556adSCorentin CharyEOF
1319efe556adSCorentin Chary    vnc_png_cflags=""
1320efe556adSCorentin Chary    vnc_png_libs="-lpng"
1321efe556adSCorentin Chary  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
1322efe556adSCorentin Chary    vnc_png=yes
1323efe556adSCorentin Chary    libs_softmmu="$vnc_png_libs $libs_softmmu"
1324efe556adSCorentin Chary  else
1325efe556adSCorentin Chary    if test "$vnc_png" = "yes" ; then
1326efe556adSCorentin Chary      feature_not_found "vnc-png"
1327efe556adSCorentin Chary    fi
1328efe556adSCorentin Chary    vnc_png=no
1329efe556adSCorentin Chary  fi
1330efe556adSCorentin Charyfi
1331efe556adSCorentin Chary
1332efe556adSCorentin Chary##########################################
133376655d6dSaliguori# fnmatch() probe, used for ACL routines
133476655d6dSaliguorifnmatch="no"
133576655d6dSaliguoricat > $TMPC << EOF
133676655d6dSaliguori#include <fnmatch.h>
133776655d6dSaliguoriint main(void)
133876655d6dSaliguori{
133976655d6dSaliguori    fnmatch("foo", "foo", 0);
134076655d6dSaliguori    return 0;
134176655d6dSaliguori}
134276655d6dSaliguoriEOF
134352166aa0SJuan Quintelaif compile_prog "" "" ; then
134476655d6dSaliguori   fnmatch="yes"
134576655d6dSaliguorifi
134676655d6dSaliguori
134776655d6dSaliguori##########################################
1348ee682d27SStefan Weil# uuid_generate() probe, used for vdi block driver
1349ee682d27SStefan Weilif test "$uuid" != "no" ; then
1350ee682d27SStefan Weil  uuid_libs="-luuid"
1351ee682d27SStefan Weil  cat > $TMPC << EOF
1352ee682d27SStefan Weil#include <uuid/uuid.h>
1353ee682d27SStefan Weilint main(void)
1354ee682d27SStefan Weil{
1355ee682d27SStefan Weil    uuid_t my_uuid;
1356ee682d27SStefan Weil    uuid_generate(my_uuid);
1357ee682d27SStefan Weil    return 0;
1358ee682d27SStefan Weil}
1359ee682d27SStefan WeilEOF
1360ee682d27SStefan Weil  if compile_prog "" "$uuid_libs" ; then
1361ee682d27SStefan Weil    uuid="yes"
1362ee682d27SStefan Weil    libs_softmmu="$uuid_libs $libs_softmmu"
1363ee682d27SStefan Weil    libs_tools="$uuid_libs $libs_tools"
1364ee682d27SStefan Weil  else
1365ee682d27SStefan Weil    if test "$uuid" = "yes" ; then
1366ee682d27SStefan Weil      feature_not_found "uuid"
1367ee682d27SStefan Weil    fi
1368ee682d27SStefan Weil    uuid=no
1369ee682d27SStefan Weil  fi
1370ee682d27SStefan Weilfi
1371ee682d27SStefan Weil
1372ee682d27SStefan Weil##########################################
13738a16d273Sths# vde libraries probe
1374dfb278bdSJuan Quintelaif test "$vde" != "no" ; then
13754baae0acSJuan Quintela  vde_libs="-lvdeplug"
13768a16d273Sths  cat > $TMPC << EOF
13778a16d273Sths#include <libvdeplug.h>
13784a7f0e06Spbrookint main(void)
13794a7f0e06Spbrook{
13804a7f0e06Spbrook    struct vde_open_args a = {0, 0, 0};
13814a7f0e06Spbrook    vde_open("", "", &a);
13824a7f0e06Spbrook    return 0;
13834a7f0e06Spbrook}
13848a16d273SthsEOF
138552166aa0SJuan Quintela  if compile_prog "" "$vde_libs" ; then
13864baae0acSJuan Quintela    vde=yes
13878e02e54cSJuan Quintela    libs_softmmu="$vde_libs $libs_softmmu"
13888e02e54cSJuan Quintela    libs_tools="$vde_libs $libs_tools"
1389dfb278bdSJuan Quintela  else
1390dfb278bdSJuan Quintela    if test "$vde" = "yes" ; then
1391dfb278bdSJuan Quintela      feature_not_found "vde"
1392dfb278bdSJuan Quintela    fi
1393dfb278bdSJuan Quintela    vde=no
13948a16d273Sths  fi
13958a16d273Sthsfi
13968a16d273Sths
13978a16d273Sths##########################################
1398c2de5c91Smalc# Sound support libraries probe
13998f28f3fbSths
1400c2de5c91Smalcaudio_drv_probe()
1401c2de5c91Smalc{
1402c2de5c91Smalc    drv=$1
1403c2de5c91Smalc    hdr=$2
1404c2de5c91Smalc    lib=$3
1405c2de5c91Smalc    exp=$4
1406c2de5c91Smalc    cfl=$5
14078f28f3fbSths        cat > $TMPC << EOF
1408c2de5c91Smalc#include <$hdr>
1409c2de5c91Smalcint main(void) { $exp }
14108f28f3fbSthsEOF
141152166aa0SJuan Quintela    if compile_prog "$cfl" "$lib" ; then
14128f28f3fbSths        :
14138f28f3fbSths    else
14148f28f3fbSths        echo
1415c2de5c91Smalc        echo "Error: $drv check failed"
1416c2de5c91Smalc        echo "Make sure to have the $drv libs and headers installed."
14178f28f3fbSths        echo
14188f28f3fbSths        exit 1
14198f28f3fbSths    fi
1420c2de5c91Smalc}
1421c2de5c91Smalc
14222fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1423c2de5c91Smalcfor drv in $audio_drv_list; do
1424c2de5c91Smalc    case $drv in
1425c2de5c91Smalc    alsa)
1426c2de5c91Smalc    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1427c2de5c91Smalc        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1428a4bf6780SJuan Quintela    libs_softmmu="-lasound $libs_softmmu"
1429c2de5c91Smalc    ;;
1430c2de5c91Smalc
1431c2de5c91Smalc    fmod)
1432c2de5c91Smalc    if test -z $fmod_lib || test -z $fmod_inc; then
1433c2de5c91Smalc        echo
1434c2de5c91Smalc        echo "Error: You must specify path to FMOD library and headers"
1435c2de5c91Smalc        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1436c2de5c91Smalc        echo
1437c2de5c91Smalc        exit 1
14388f28f3fbSths    fi
1439c2de5c91Smalc    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1440a4bf6780SJuan Quintela    libs_softmmu="$fmod_lib $libs_softmmu"
1441c2de5c91Smalc    ;;
1442c2de5c91Smalc
1443c2de5c91Smalc    esd)
1444c2de5c91Smalc    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1445a4bf6780SJuan Quintela    libs_softmmu="-lesd $libs_softmmu"
144667f86e8eSJuan Quintela    audio_pt_int="yes"
1447c2de5c91Smalc    ;;
1448b8e59f18Smalc
1449b8e59f18Smalc    pa)
1450493abda6SAurelien Jarno    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
1451b8e59f18Smalc        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1452493abda6SAurelien Jarno    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
145367f86e8eSJuan Quintela    audio_pt_int="yes"
1454b8e59f18Smalc    ;;
1455b8e59f18Smalc
1456997e690aSJuan Quintela    coreaudio)
1457997e690aSJuan Quintela      libs_softmmu="-framework CoreAudio $libs_softmmu"
1458997e690aSJuan Quintela    ;;
1459997e690aSJuan Quintela
1460a4bf6780SJuan Quintela    dsound)
1461a4bf6780SJuan Quintela      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1462d5631638Smalc      audio_win_int="yes"
1463a4bf6780SJuan Quintela    ;;
1464a4bf6780SJuan Quintela
1465a4bf6780SJuan Quintela    oss)
1466a4bf6780SJuan Quintela      libs_softmmu="$oss_lib $libs_softmmu"
1467a4bf6780SJuan Quintela    ;;
1468a4bf6780SJuan Quintela
1469a4bf6780SJuan Quintela    sdl|wav)
14702f6a1ab0Sblueswir1    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
14712f6a1ab0Sblueswir1    ;;
14722f6a1ab0Sblueswir1
1473d5631638Smalc    winwave)
1474d5631638Smalc      libs_softmmu="-lwinmm $libs_softmmu"
1475d5631638Smalc      audio_win_int="yes"
1476d5631638Smalc    ;;
1477d5631638Smalc
1478e4c63a6aSmalc    *)
14791c9b2a52Smalc    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1480e4c63a6aSmalc        echo
1481e4c63a6aSmalc        echo "Error: Unknown driver '$drv' selected"
1482e4c63a6aSmalc        echo "Possible drivers are: $audio_possible_drivers"
1483e4c63a6aSmalc        echo
1484e4c63a6aSmalc        exit 1
1485e4c63a6aSmalc    }
1486e4c63a6aSmalc    ;;
1487c2de5c91Smalc    esac
1488c2de5c91Smalcdone
14898f28f3fbSths
14904d3b6f6eSbalrog##########################################
14912e4d9fb1Saurel32# BrlAPI probe
14922e4d9fb1Saurel32
14934ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then
1494eb82284fSJuan Quintela  brlapi_libs="-lbrlapi"
14952e4d9fb1Saurel32  cat > $TMPC << EOF
14962e4d9fb1Saurel32#include <brlapi.h>
14972e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
14982e4d9fb1Saurel32EOF
149952166aa0SJuan Quintela  if compile_prog "" "$brlapi_libs" ; then
15002e4d9fb1Saurel32    brlapi=yes
1501264606b3SJuan Quintela    libs_softmmu="$brlapi_libs $libs_softmmu"
15024ffcedb6SJuan Quintela  else
15034ffcedb6SJuan Quintela    if test "$brlapi" = "yes" ; then
15044ffcedb6SJuan Quintela      feature_not_found "brlapi"
15054ffcedb6SJuan Quintela    fi
15064ffcedb6SJuan Quintela    brlapi=no
1507eb82284fSJuan Quintela  fi
1508eb82284fSJuan Quintelafi
15092e4d9fb1Saurel32
15102e4d9fb1Saurel32##########################################
15114d3b6f6eSbalrog# curses probe
15124f78ef9aSJuan Quintelacurses_list="-lncurses -lcurses"
15134d3b6f6eSbalrog
1514c584a6d0SJuan Quintelaif test "$curses" != "no" ; then
1515c584a6d0SJuan Quintela  curses_found=no
15164d3b6f6eSbalrog  cat > $TMPC << EOF
15174d3b6f6eSbalrog#include <curses.h>
15185a8ff3aaSblueswir1#ifdef __OpenBSD__
15195a8ff3aaSblueswir1#define resize_term resizeterm
15205a8ff3aaSblueswir1#endif
15215a8ff3aaSblueswir1int main(void) { resize_term(0, 0); return curses_version(); }
15224d3b6f6eSbalrogEOF
15234f78ef9aSJuan Quintela  for curses_lib in $curses_list; do
15244f78ef9aSJuan Quintela    if compile_prog "" "$curses_lib" ; then
1525c584a6d0SJuan Quintela      curses_found=yes
15264f78ef9aSJuan Quintela      libs_softmmu="$curses_lib $libs_softmmu"
15274f78ef9aSJuan Quintela      break
15284d3b6f6eSbalrog    fi
15294f78ef9aSJuan Quintela  done
1530c584a6d0SJuan Quintela  if test "$curses_found" = "yes" ; then
1531c584a6d0SJuan Quintela    curses=yes
1532c584a6d0SJuan Quintela  else
1533c584a6d0SJuan Quintela    if test "$curses" = "yes" ; then
1534c584a6d0SJuan Quintela      feature_not_found "curses"
1535c584a6d0SJuan Quintela    fi
1536c584a6d0SJuan Quintela    curses=no
1537c584a6d0SJuan Quintela  fi
15384f78ef9aSJuan Quintelafi
15394d3b6f6eSbalrog
1540414f0dabSblueswir1##########################################
1541769ce76dSAlexander Graf# curl probe
1542769ce76dSAlexander Graf
15434e2b0658SPaolo Bonziniif $pkgconfig libcurl --modversion >/dev/null 2>&1; then
15444e2b0658SPaolo Bonzini  curlconfig="$pkgconfig libcurl"
15454e2b0658SPaolo Bonzinielse
15464e2b0658SPaolo Bonzini  curlconfig=curl-config
15474e2b0658SPaolo Bonzinifi
15484e2b0658SPaolo Bonzini
1549788c8196SJuan Quintelaif test "$curl" != "no" ; then
1550769ce76dSAlexander Graf  cat > $TMPC << EOF
1551769ce76dSAlexander Graf#include <curl/curl.h>
1552769ce76dSAlexander Grafint main(void) { return curl_easy_init(); }
1553769ce76dSAlexander GrafEOF
15544e2b0658SPaolo Bonzini  curl_cflags=`$curlconfig --cflags 2>/dev/null`
15554e2b0658SPaolo Bonzini  curl_libs=`$curlconfig --libs 2>/dev/null`
1556b1d5a277SJuan Quintela  if compile_prog "$curl_cflags" "$curl_libs" ; then
1557769ce76dSAlexander Graf    curl=yes
1558f0302935SJuan Quintela    libs_tools="$curl_libs $libs_tools"
1559f0302935SJuan Quintela    libs_softmmu="$curl_libs $libs_softmmu"
1560788c8196SJuan Quintela  else
1561788c8196SJuan Quintela    if test "$curl" = "yes" ; then
1562788c8196SJuan Quintela      feature_not_found "curl"
1563788c8196SJuan Quintela    fi
1564788c8196SJuan Quintela    curl=no
1565769ce76dSAlexander Graf  fi
1566769ce76dSAlexander Graffi # test "$curl"
1567769ce76dSAlexander Graf
1568769ce76dSAlexander Graf##########################################
15695495ed11SLuiz Capitulino# check framework probe
15705495ed11SLuiz Capitulino
15715495ed11SLuiz Capitulinoif test "$check_utests" != "no" ; then
15725495ed11SLuiz Capitulino  cat > $TMPC << EOF
15735495ed11SLuiz Capitulino#include <check.h>
15745495ed11SLuiz Capitulinoint main(void) { suite_create("qemu test"); return 0; }
15755495ed11SLuiz CapitulinoEOF
1576f91672e5SPaolo Bonzini  check_libs=`$pkgconfig --libs check`
15775495ed11SLuiz Capitulino  if compile_prog "" $check_libs ; then
15785495ed11SLuiz Capitulino    check_utests=yes
15795495ed11SLuiz Capitulino    libs_tools="$check_libs $libs_tools"
15805495ed11SLuiz Capitulino  else
15815495ed11SLuiz Capitulino    if test "$check_utests" = "yes" ; then
15825495ed11SLuiz Capitulino      feature_not_found "check"
15835495ed11SLuiz Capitulino    fi
15845495ed11SLuiz Capitulino    check_utests=no
15855495ed11SLuiz Capitulino  fi
15865495ed11SLuiz Capitulinofi # test "$check_utests"
15875495ed11SLuiz Capitulino
15885495ed11SLuiz Capitulino##########################################
1589fb599c9aSbalrog# bluez support probe
1590a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then
1591e820e3f4Sbalrog  cat > $TMPC << EOF
1592e820e3f4Sbalrog#include <bluetooth/bluetooth.h>
1593e820e3f4Sbalrogint main(void) { return bt_error(0); }
1594e820e3f4SbalrogEOF
1595f91672e5SPaolo Bonzini  bluez_cflags=`$pkgconfig --cflags bluez 2> /dev/null`
1596f91672e5SPaolo Bonzini  bluez_libs=`$pkgconfig --libs bluez 2> /dev/null`
159752166aa0SJuan Quintela  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1598a20a6f46SJuan Quintela    bluez=yes
1599e482d56aSJuan Quintela    libs_softmmu="$bluez_libs $libs_softmmu"
1600e820e3f4Sbalrog  else
1601a20a6f46SJuan Quintela    if test "$bluez" = "yes" ; then
1602a20a6f46SJuan Quintela      feature_not_found "bluez"
1603a20a6f46SJuan Quintela    fi
1604e820e3f4Sbalrog    bluez="no"
1605e820e3f4Sbalrog  fi
1606fb599c9aSbalrogfi
1607fb599c9aSbalrog
1608fb599c9aSbalrog##########################################
16097ba1e619Saliguori# kvm probe
1610b31a0277SJuan Quintelaif test "$kvm" != "no" ; then
16117ba1e619Saliguori    cat > $TMPC <<EOF
16127ba1e619Saliguori#include <linux/kvm.h>
16139fd8d8d7Saliguori#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
16147ba1e619Saliguori#error Invalid KVM version
16157ba1e619Saliguori#endif
16169fd8d8d7Saliguori#if !defined(KVM_CAP_USER_MEMORY)
16179fd8d8d7Saliguori#error Missing KVM capability KVM_CAP_USER_MEMORY
16189fd8d8d7Saliguori#endif
16199fd8d8d7Saliguori#if !defined(KVM_CAP_SET_TSS_ADDR)
16209fd8d8d7Saliguori#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
16219fd8d8d7Saliguori#endif
16229fd8d8d7Saliguori#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
16239fd8d8d7Saliguori#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
16249fd8d8d7Saliguori#endif
16257ba1e619Saliguoriint main(void) { return 0; }
16267ba1e619SaliguoriEOF
1627eac30262Saliguori  if test "$kerneldir" != "" ; then
1628eac30262Saliguori      kvm_cflags=-I"$kerneldir"/include
16298444eb6eSaliguori      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
16308444eb6eSaliguori         -a -d "$kerneldir/arch/x86/include" ; then
16318444eb6eSaliguori            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1632406b430dSaliguori	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1633406b430dSaliguori	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
16340e60a699SAlexander Graf	elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
16350e60a699SAlexander Graf	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
16368444eb6eSaliguori        elif test -d "$kerneldir/arch/$cpu/include" ; then
16378444eb6eSaliguori            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
16388444eb6eSaliguori      fi
1639eac30262Saliguori  else
1640f038e8f7SStefan Weil    kvm_cflags=`$pkgconfig --cflags kvm-kmod 2>/dev/null`
1641eac30262Saliguori  fi
164252166aa0SJuan Quintela  if compile_prog "$kvm_cflags" "" ; then
1643b31a0277SJuan Quintela    kvm=yes
1644dae5079aSJan Kiszka    cat > $TMPC <<EOF
1645dae5079aSJan Kiszka#include <linux/kvm_para.h>
1646dae5079aSJan Kiszkaint main(void) { return 0; }
1647dae5079aSJan KiszkaEOF
1648dae5079aSJan Kiszka    if compile_prog "$kvm_cflags" "" ; then
1649dae5079aSJan Kiszka      kvm_para=yes
1650dae5079aSJan Kiszka    fi
16517ba1e619Saliguori  else
1652b31a0277SJuan Quintela    if test "$kvm" = "yes" ; then
16530dba6195SLoïc Minier      if has awk && has grep; then
1654a558ee17SJuan Quintela        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
16559fd8d8d7Saliguori	| grep "error: " \
16569fd8d8d7Saliguori	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
16579fd8d8d7Saliguori        if test "$kvmerr" != "" ; then
1658b31a0277SJuan Quintela          echo -e "${kvmerr}\n\
1659168ccc11SJan Kiszka      NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
1660168ccc11SJan Kiszka  recent kvm-kmod from http://sourceforge.net/projects/kvm."
16619fd8d8d7Saliguori        fi
16629fd8d8d7Saliguori      fi
1663b31a0277SJuan Quintela      feature_not_found "kvm"
1664b31a0277SJuan Quintela    fi
1665b31a0277SJuan Quintela    kvm=no
16667ba1e619Saliguori  fi
16677ba1e619Saliguorifi
16687ba1e619Saliguori
16697ba1e619Saliguori##########################################
1670d5970055SMichael S. Tsirkin# test for vhost net
1671d5970055SMichael S. Tsirkin
1672d5970055SMichael S. Tsirkinif test "$vhost_net" != "no"; then
1673d5970055SMichael S. Tsirkin    if test "$kvm" != "no"; then
1674d5970055SMichael S. Tsirkin            cat > $TMPC <<EOF
1675d5970055SMichael S. Tsirkin    #include <linux/vhost.h>
1676d5970055SMichael S. Tsirkin    int main(void) { return 0; }
1677d5970055SMichael S. TsirkinEOF
1678d5970055SMichael S. Tsirkin            if compile_prog "$kvm_cflags" "" ; then
1679d5970055SMichael S. Tsirkin                vhost_net=yes
1680d5970055SMichael S. Tsirkin            else
1681d5970055SMichael S. Tsirkin                if test "$vhost_net" = "yes" ; then
1682d5970055SMichael S. Tsirkin                    feature_not_found "vhost-net"
1683d5970055SMichael S. Tsirkin                fi
1684d5970055SMichael S. Tsirkin                vhost_net=no
1685d5970055SMichael S. Tsirkin            fi
1686d5970055SMichael S. Tsirkin    else
1687d5970055SMichael S. Tsirkin            if test "$vhost_net" = "yes" ; then
16884021d247SAurelien Jarno                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
1689d5970055SMichael S. Tsirkin                feature_not_found "vhost-net"
1690d5970055SMichael S. Tsirkin            fi
1691d5970055SMichael S. Tsirkin            vhost_net=no
1692d5970055SMichael S. Tsirkin    fi
1693d5970055SMichael S. Tsirkinfi
1694d5970055SMichael S. Tsirkin
1695d5970055SMichael S. Tsirkin##########################################
1696e5d355d1Saliguori# pthread probe
1697de65fe0fSSebastian HerbsztPTHREADLIBS_LIST="-lpthread -lpthreadGC2"
16983c529d93Saliguori
1699e5d355d1Saliguoripthread=no
1700414f0dabSblueswir1cat > $TMPC << EOF
17013c529d93Saliguori#include <pthread.h>
1702de65fe0fSSebastian Herbsztint main(void) { pthread_create(0,0,0,0); return 0; }
1703414f0dabSblueswir1EOF
1704de65fe0fSSebastian Herbsztfor pthread_lib in $PTHREADLIBS_LIST; do
170552166aa0SJuan Quintela  if compile_prog "" "$pthread_lib" ; then
1706e5d355d1Saliguori    pthread=yes
17075572b539SJuan Quintela    LIBS="$pthread_lib $LIBS"
1708de65fe0fSSebastian Herbszt    break
1709414f0dabSblueswir1  fi
1710de65fe0fSSebastian Herbsztdone
1711414f0dabSblueswir1
17124617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then
17134dd75c70SChristoph Hellwig  echo
17144dd75c70SChristoph Hellwig  echo "Error: pthread check failed"
17154dd75c70SChristoph Hellwig  echo "Make sure to have the pthread libs and headers installed."
17164dd75c70SChristoph Hellwig  echo
17174dd75c70SChristoph Hellwig  exit 1
1718e5d355d1Saliguorifi
1719e5d355d1Saliguori
1720bf9298b9Saliguori##########################################
17215c6c3a6cSChristoph Hellwig# linux-aio probe
17225c6c3a6cSChristoph Hellwig
17235c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then
17245c6c3a6cSChristoph Hellwig  cat > $TMPC <<EOF
17255c6c3a6cSChristoph Hellwig#include <libaio.h>
17265c6c3a6cSChristoph Hellwig#include <sys/eventfd.h>
17275c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
17285c6c3a6cSChristoph HellwigEOF
17295c6c3a6cSChristoph Hellwig  if compile_prog "" "-laio" ; then
17305c6c3a6cSChristoph Hellwig    linux_aio=yes
1731048d179fSPaul Brook    libs_softmmu="$libs_softmmu -laio"
1732048d179fSPaul Brook    libs_tools="$libs_tools -laio"
17335c6c3a6cSChristoph Hellwig  else
17345c6c3a6cSChristoph Hellwig    if test "$linux_aio" = "yes" ; then
17355c6c3a6cSChristoph Hellwig      feature_not_found "linux AIO"
17365c6c3a6cSChristoph Hellwig    fi
17373cfcae3cSLuiz Capitulino    linux_aio=no
17385c6c3a6cSChristoph Hellwig  fi
17395c6c3a6cSChristoph Hellwigfi
17405c6c3a6cSChristoph Hellwig
17415c6c3a6cSChristoph Hellwig##########################################
1742758e8e38SVenkateswararao Jujjuri (JV)# attr probe
1743758e8e38SVenkateswararao Jujjuri (JV)
1744758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then
1745758e8e38SVenkateswararao Jujjuri (JV)  cat > $TMPC <<EOF
1746758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h>
1747758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h>
1748758e8e38SVenkateswararao Jujjuri (JV)#include <attr/xattr.h>
1749758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
1750758e8e38SVenkateswararao Jujjuri (JV)EOF
1751758e8e38SVenkateswararao Jujjuri (JV)  if compile_prog "" "-lattr" ; then
1752758e8e38SVenkateswararao Jujjuri (JV)    attr=yes
1753758e8e38SVenkateswararao Jujjuri (JV)    LIBS="-lattr $LIBS"
1754758e8e38SVenkateswararao Jujjuri (JV)  else
1755758e8e38SVenkateswararao Jujjuri (JV)    if test "$attr" = "yes" ; then
1756758e8e38SVenkateswararao Jujjuri (JV)      feature_not_found "ATTR"
1757758e8e38SVenkateswararao Jujjuri (JV)    fi
1758758e8e38SVenkateswararao Jujjuri (JV)    attr=no
1759758e8e38SVenkateswararao Jujjuri (JV)  fi
1760758e8e38SVenkateswararao Jujjuri (JV)fi
1761758e8e38SVenkateswararao Jujjuri (JV)
1762758e8e38SVenkateswararao Jujjuri (JV)##########################################
1763bf9298b9Saliguori# iovec probe
1764bf9298b9Saliguoricat > $TMPC <<EOF
1765db34f0b3Sblueswir1#include <sys/types.h>
1766bf9298b9Saliguori#include <sys/uio.h>
1767db34f0b3Sblueswir1#include <unistd.h>
1768bf9298b9Saliguoriint main(void) { struct iovec iov; return 0; }
1769bf9298b9SaliguoriEOF
1770bf9298b9Saliguoriiovec=no
177152166aa0SJuan Quintelaif compile_prog "" "" ; then
1772bf9298b9Saliguori  iovec=yes
1773bf9298b9Saliguorifi
1774bf9298b9Saliguori
1775f652e6afSaurel32##########################################
1776ceb42de8Saliguori# preadv probe
1777ceb42de8Saliguoricat > $TMPC <<EOF
1778ceb42de8Saliguori#include <sys/types.h>
1779ceb42de8Saliguori#include <sys/uio.h>
1780ceb42de8Saliguori#include <unistd.h>
1781ceb42de8Saliguoriint main(void) { preadv; }
1782ceb42de8SaliguoriEOF
1783ceb42de8Saliguoripreadv=no
178452166aa0SJuan Quintelaif compile_prog "" "" ; then
1785ceb42de8Saliguori  preadv=yes
1786ceb42de8Saliguorifi
1787ceb42de8Saliguori
1788ceb42de8Saliguori##########################################
1789f652e6afSaurel32# fdt probe
17902df87df7SJuan Quintelaif test "$fdt" != "no" ; then
1791b41af4baSJuan Quintela  fdt_libs="-lfdt"
1792f652e6afSaurel32  cat > $TMPC << EOF
1793f652e6afSaurel32int main(void) { return 0; }
1794f652e6afSaurel32EOF
179552166aa0SJuan Quintela  if compile_prog "" "$fdt_libs" ; then
1796f652e6afSaurel32    fdt=yes
1797e4782985SJuan Quintela    libs_softmmu="$fdt_libs $libs_softmmu"
17982df87df7SJuan Quintela  else
17992df87df7SJuan Quintela    if test "$fdt" = "yes" ; then
18002df87df7SJuan Quintela      feature_not_found "fdt"
18012df87df7SJuan Quintela    fi
18022df87df7SJuan Quintela    fdt=no
1803f652e6afSaurel32  fi
1804f652e6afSaurel32fi
1805f652e6afSaurel32
18063b3f24adSaurel32#
18073b3f24adSaurel32# Check for xxxat() functions when we are building linux-user
18083b3f24adSaurel32# emulator.  This is done because older glibc versions don't
18093b3f24adSaurel32# have syscall stubs for these implemented.
18103b3f24adSaurel32#
18113b3f24adSaurel32atfile=no
18123b3f24adSaurel32cat > $TMPC << EOF
18133b3f24adSaurel32#define _ATFILE_SOURCE
18143b3f24adSaurel32#include <sys/types.h>
18153b3f24adSaurel32#include <fcntl.h>
18163b3f24adSaurel32#include <unistd.h>
18173b3f24adSaurel32
18183b3f24adSaurel32int
18193b3f24adSaurel32main(void)
18203b3f24adSaurel32{
18213b3f24adSaurel32	/* try to unlink nonexisting file */
18223b3f24adSaurel32	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
18233b3f24adSaurel32}
18243b3f24adSaurel32EOF
182552166aa0SJuan Quintelaif compile_prog "" "" ; then
18263b3f24adSaurel32  atfile=yes
18273b3f24adSaurel32fi
18283b3f24adSaurel32
182939386ac7Saurel32# Check for inotify functions when we are building linux-user
18303b3f24adSaurel32# emulator.  This is done because older glibc versions don't
18313b3f24adSaurel32# have syscall stubs for these implemented.  In that case we
18323b3f24adSaurel32# don't provide them even if kernel supports them.
18333b3f24adSaurel32#
18343b3f24adSaurel32inotify=no
18353b3f24adSaurel32cat > $TMPC << EOF
18363b3f24adSaurel32#include <sys/inotify.h>
18373b3f24adSaurel32
18383b3f24adSaurel32int
18393b3f24adSaurel32main(void)
18403b3f24adSaurel32{
18413b3f24adSaurel32	/* try to start inotify */
18428690e420Saurel32	return inotify_init();
18433b3f24adSaurel32}
18443b3f24adSaurel32EOF
184552166aa0SJuan Quintelaif compile_prog "" "" ; then
18463b3f24adSaurel32  inotify=yes
18473b3f24adSaurel32fi
18483b3f24adSaurel32
1849c05c7a73SRiku Voipioinotify1=no
1850c05c7a73SRiku Voipiocat > $TMPC << EOF
1851c05c7a73SRiku Voipio#include <sys/inotify.h>
1852c05c7a73SRiku Voipio
1853c05c7a73SRiku Voipioint
1854c05c7a73SRiku Voipiomain(void)
1855c05c7a73SRiku Voipio{
1856c05c7a73SRiku Voipio    /* try to start inotify */
1857c05c7a73SRiku Voipio    return inotify_init1(0);
1858c05c7a73SRiku Voipio}
1859c05c7a73SRiku VoipioEOF
1860c05c7a73SRiku Voipioif compile_prog "" "" ; then
1861c05c7a73SRiku Voipio  inotify1=yes
1862c05c7a73SRiku Voipiofi
1863c05c7a73SRiku Voipio
1864ebc996f3SRiku Voipio# check if utimensat and futimens are supported
1865ebc996f3SRiku Voipioutimens=no
1866ebc996f3SRiku Voipiocat > $TMPC << EOF
1867ebc996f3SRiku Voipio#define _ATFILE_SOURCE
1868ebc996f3SRiku Voipio#define _GNU_SOURCE
1869ebc996f3SRiku Voipio#include <stddef.h>
1870ebc996f3SRiku Voipio#include <fcntl.h>
1871ebc996f3SRiku Voipio
1872ebc996f3SRiku Voipioint main(void)
1873ebc996f3SRiku Voipio{
1874ebc996f3SRiku Voipio    utimensat(AT_FDCWD, "foo", NULL, 0);
1875ebc996f3SRiku Voipio    futimens(0, NULL);
1876ebc996f3SRiku Voipio    return 0;
1877ebc996f3SRiku Voipio}
1878ebc996f3SRiku VoipioEOF
187952166aa0SJuan Quintelaif compile_prog "" "" ; then
1880ebc996f3SRiku Voipio  utimens=yes
1881ebc996f3SRiku Voipiofi
1882ebc996f3SRiku Voipio
1883099d6b0fSRiku Voipio# check if pipe2 is there
1884099d6b0fSRiku Voipiopipe2=no
1885099d6b0fSRiku Voipiocat > $TMPC << EOF
1886099d6b0fSRiku Voipio#define _GNU_SOURCE
1887099d6b0fSRiku Voipio#include <unistd.h>
1888099d6b0fSRiku Voipio#include <fcntl.h>
1889099d6b0fSRiku Voipio
1890099d6b0fSRiku Voipioint main(void)
1891099d6b0fSRiku Voipio{
1892099d6b0fSRiku Voipio    int pipefd[2];
1893099d6b0fSRiku Voipio    pipe2(pipefd, O_CLOEXEC);
1894099d6b0fSRiku Voipio    return 0;
1895099d6b0fSRiku Voipio}
1896099d6b0fSRiku VoipioEOF
189752166aa0SJuan Quintelaif compile_prog "" "" ; then
1898099d6b0fSRiku Voipio  pipe2=yes
1899099d6b0fSRiku Voipiofi
1900099d6b0fSRiku Voipio
190140ff6d7eSKevin Wolf# check if accept4 is there
190240ff6d7eSKevin Wolfaccept4=no
190340ff6d7eSKevin Wolfcat > $TMPC << EOF
190440ff6d7eSKevin Wolf#define _GNU_SOURCE
190540ff6d7eSKevin Wolf#include <sys/socket.h>
190640ff6d7eSKevin Wolf#include <stddef.h>
190740ff6d7eSKevin Wolf
190840ff6d7eSKevin Wolfint main(void)
190940ff6d7eSKevin Wolf{
191040ff6d7eSKevin Wolf    accept4(0, NULL, NULL, SOCK_CLOEXEC);
191140ff6d7eSKevin Wolf    return 0;
191240ff6d7eSKevin Wolf}
191340ff6d7eSKevin WolfEOF
191440ff6d7eSKevin Wolfif compile_prog "" "" ; then
191540ff6d7eSKevin Wolf  accept4=yes
191640ff6d7eSKevin Wolffi
191740ff6d7eSKevin Wolf
19183ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time.
19193ce34dfbSvibisreenivasansplice=no
19203ce34dfbSvibisreenivasancat > $TMPC << EOF
19213ce34dfbSvibisreenivasan#define _GNU_SOURCE
19223ce34dfbSvibisreenivasan#include <unistd.h>
19233ce34dfbSvibisreenivasan#include <fcntl.h>
19243ce34dfbSvibisreenivasan#include <limits.h>
19253ce34dfbSvibisreenivasan
19263ce34dfbSvibisreenivasanint main(void)
19273ce34dfbSvibisreenivasan{
19283ce34dfbSvibisreenivasan    int len, fd;
19293ce34dfbSvibisreenivasan    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
19303ce34dfbSvibisreenivasan    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
19313ce34dfbSvibisreenivasan    return 0;
19323ce34dfbSvibisreenivasan}
19333ce34dfbSvibisreenivasanEOF
193452166aa0SJuan Quintelaif compile_prog "" "" ; then
19353ce34dfbSvibisreenivasan  splice=yes
19363ce34dfbSvibisreenivasanfi
19373ce34dfbSvibisreenivasan
1938c2882b96SRiku Voipio# check if eventfd is supported
1939c2882b96SRiku Voipioeventfd=no
1940c2882b96SRiku Voipiocat > $TMPC << EOF
1941c2882b96SRiku Voipio#include <sys/eventfd.h>
1942c2882b96SRiku Voipio
1943c2882b96SRiku Voipioint main(void)
1944c2882b96SRiku Voipio{
1945c2882b96SRiku Voipio    int efd = eventfd(0, 0);
1946c2882b96SRiku Voipio    return 0;
1947c2882b96SRiku Voipio}
1948c2882b96SRiku VoipioEOF
1949c2882b96SRiku Voipioif compile_prog "" "" ; then
1950c2882b96SRiku Voipio  eventfd=yes
1951c2882b96SRiku Voipiofi
1952c2882b96SRiku Voipio
1953d0927938SUlrich Hecht# check for fallocate
1954d0927938SUlrich Hechtfallocate=no
1955d0927938SUlrich Hechtcat > $TMPC << EOF
1956d0927938SUlrich Hecht#include <fcntl.h>
1957d0927938SUlrich Hecht
1958d0927938SUlrich Hechtint main(void)
1959d0927938SUlrich Hecht{
1960d0927938SUlrich Hecht    fallocate(0, 0, 0, 0);
1961d0927938SUlrich Hecht    return 0;
1962d0927938SUlrich Hecht}
1963d0927938SUlrich HechtEOF
1964be17dc90SMichael S. Tsirkinif compile_prog "$ARCH_CFLAGS" "" ; then
1965d0927938SUlrich Hecht  fallocate=yes
1966d0927938SUlrich Hechtfi
1967d0927938SUlrich Hecht
1968d0927938SUlrich Hecht# check for dup3
1969d0927938SUlrich Hechtdup3=no
1970d0927938SUlrich Hechtcat > $TMPC << EOF
1971d0927938SUlrich Hecht#include <unistd.h>
1972d0927938SUlrich Hecht
1973d0927938SUlrich Hechtint main(void)
1974d0927938SUlrich Hecht{
1975d0927938SUlrich Hecht    dup3(0, 0, 0);
1976d0927938SUlrich Hecht    return 0;
1977d0927938SUlrich Hecht}
1978d0927938SUlrich HechtEOF
197978f5d726SJan Kiszkaif compile_prog "" "" ; then
1980d0927938SUlrich Hecht  dup3=yes
1981d0927938SUlrich Hechtfi
1982d0927938SUlrich Hecht
1983cc8ae6deSpbrook# Check if tools are available to build documentation.
1984a25dba17SJuan Quintelaif test "$docs" != "no" ; then
198501668d98SStefan Weil  if has makeinfo && has pod2man; then
1986a25dba17SJuan Quintela    docs=yes
198783a3ab8bSJuan Quintela  else
1988a25dba17SJuan Quintela    if test "$docs" = "yes" ; then
1989a25dba17SJuan Quintela      feature_not_found "docs"
199083a3ab8bSJuan Quintela    fi
1991a25dba17SJuan Quintela    docs=no
199283a3ab8bSJuan Quintela  fi
1993cc8ae6deSpbrookfi
1994cc8ae6deSpbrook
1995f514f41cSStefan Weil# Search for bswap_32 function
19966ae9a1f4SJuan Quintelabyteswap_h=no
19976ae9a1f4SJuan Quintelacat > $TMPC << EOF
19986ae9a1f4SJuan Quintela#include <byteswap.h>
19996ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); }
20006ae9a1f4SJuan QuintelaEOF
200152166aa0SJuan Quintelaif compile_prog "" "" ; then
20026ae9a1f4SJuan Quintela  byteswap_h=yes
20036ae9a1f4SJuan Quintelafi
20046ae9a1f4SJuan Quintela
2005f514f41cSStefan Weil# Search for bswap_32 function
20066ae9a1f4SJuan Quintelabswap_h=no
20076ae9a1f4SJuan Quintelacat > $TMPC << EOF
20086ae9a1f4SJuan Quintela#include <sys/endian.h>
20096ae9a1f4SJuan Quintela#include <sys/types.h>
20106ae9a1f4SJuan Quintela#include <machine/bswap.h>
20116ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); }
20126ae9a1f4SJuan QuintelaEOF
201352166aa0SJuan Quintelaif compile_prog "" "" ; then
20146ae9a1f4SJuan Quintela  bswap_h=yes
20156ae9a1f4SJuan Quintelafi
20166ae9a1f4SJuan Quintela
2017da93a1fdSaliguori##########################################
2018da93a1fdSaliguori# Do we need librt
2019da93a1fdSaliguoricat > $TMPC <<EOF
2020da93a1fdSaliguori#include <signal.h>
2021da93a1fdSaliguori#include <time.h>
2022da93a1fdSaliguoriint main(void) { clockid_t id; return clock_gettime(id, NULL); }
2023da93a1fdSaliguoriEOF
2024da93a1fdSaliguori
202552166aa0SJuan Quintelaif compile_prog "" "" ; then
202607ffa4bdSJuan Quintela  :
202752166aa0SJuan Quintelaelif compile_prog "" "-lrt" ; then
202807ffa4bdSJuan Quintela  LIBS="-lrt $LIBS"
2029da93a1fdSaliguorifi
2030da93a1fdSaliguori
203131ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
20326362a53fSJuan Quintela        "$aix" != "yes" ; then
20336362a53fSJuan Quintela    libs_softmmu="-lutil $libs_softmmu"
20346362a53fSJuan Quintelafi
20356362a53fSJuan Quintela
2036de5071c5SBlue Swirl##########################################
2037de5071c5SBlue Swirl# check if the compiler defines offsetof
2038de5071c5SBlue Swirl
2039de5071c5SBlue Swirlneed_offsetof=yes
2040de5071c5SBlue Swirlcat > $TMPC << EOF
2041de5071c5SBlue Swirl#include <stddef.h>
2042de5071c5SBlue Swirlint main(void) { struct s { int f; }; return offsetof(struct s, f); }
2043de5071c5SBlue SwirlEOF
2044de5071c5SBlue Swirlif compile_prog "" "" ; then
2045de5071c5SBlue Swirl    need_offsetof=no
2046de5071c5SBlue Swirlfi
2047de5071c5SBlue Swirl
20485f6b9e8fSBlue Swirl##########################################
2049747bbdf7SBlue Swirl# check if the compiler understands attribute warn_unused_result
2050747bbdf7SBlue Swirl#
2051747bbdf7SBlue Swirl# This could be smarter, but gcc -Werror does not error out even when warning
2052747bbdf7SBlue Swirl# about attribute warn_unused_result
2053747bbdf7SBlue Swirl
2054747bbdf7SBlue Swirlgcc_attribute_warn_unused_result=no
2055747bbdf7SBlue Swirlcat > $TMPC << EOF
2056747bbdf7SBlue Swirl#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
2057747bbdf7SBlue Swirl#error gcc 3.3 or older
2058747bbdf7SBlue Swirl#endif
2059747bbdf7SBlue Swirlint main(void) { return 0;}
2060747bbdf7SBlue SwirlEOF
2061747bbdf7SBlue Swirlif compile_prog "" ""; then
2062747bbdf7SBlue Swirl    gcc_attribute_warn_unused_result=yes
2063747bbdf7SBlue Swirlfi
2064747bbdf7SBlue Swirl
2065747bbdf7SBlue Swirl##########################################
20665f6b9e8fSBlue Swirl# check if we have fdatasync
20675f6b9e8fSBlue Swirl
20685f6b9e8fSBlue Swirlfdatasync=no
20695f6b9e8fSBlue Swirlcat > $TMPC << EOF
20705f6b9e8fSBlue Swirl#include <unistd.h>
20715f6b9e8fSBlue Swirlint main(void) { return fdatasync(0); }
20725f6b9e8fSBlue SwirlEOF
20735f6b9e8fSBlue Swirlif compile_prog "" "" ; then
20745f6b9e8fSBlue Swirl    fdatasync=yes
20755f6b9e8fSBlue Swirlfi
20765f6b9e8fSBlue Swirl
207794a420b1SStefan Hajnoczi##########################################
207894a420b1SStefan Hajnoczi# check if trace backend exists
207994a420b1SStefan Hajnoczi
208094a420b1SStefan Hajnoczish "$source_path/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
208194a420b1SStefan Hajnocziif test "$?" -ne 0 ; then
208294a420b1SStefan Hajnoczi  echo
208394a420b1SStefan Hajnoczi  echo "Error: invalid trace backend"
208494a420b1SStefan Hajnoczi  echo "Please choose a supported trace backend."
208594a420b1SStefan Hajnoczi  echo
208694a420b1SStefan Hajnoczi  exit 1
208794a420b1SStefan Hajnoczifi
208894a420b1SStefan Hajnoczi
20897e24e92aSStefan Hajnoczi##########################################
20907e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present
20917e24e92aSStefan Hajnocziif test "$trace_backend" = "ust"; then
20927e24e92aSStefan Hajnoczi  cat > $TMPC << EOF
20937e24e92aSStefan Hajnoczi#include <ust/tracepoint.h>
20947e24e92aSStefan Hajnoczi#include <ust/marker.h>
20957e24e92aSStefan Hajnocziint main(void) { return 0; }
20967e24e92aSStefan HajnocziEOF
20977e24e92aSStefan Hajnoczi  if compile_prog "" "" ; then
20987e24e92aSStefan Hajnoczi    LIBS="-lust $LIBS"
20997e24e92aSStefan Hajnoczi  else
21007e24e92aSStefan Hajnoczi    echo
21017e24e92aSStefan Hajnoczi    echo "Error: Trace backend 'ust' missing libust header files"
21027e24e92aSStefan Hajnoczi    echo
21037e24e92aSStefan Hajnoczi    exit 1
21047e24e92aSStefan Hajnoczi  fi
21057e24e92aSStefan Hajnoczifi
21067e24e92aSStefan Hajnoczi##########################################
2107e86ecd4bSJuan Quintela# End of CC checks
2108e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs
2109e86ecd4bSJuan Quintela
2110e86ecd4bSJuan Quintelaif test "$debug" = "no" ; then
21111156c669SJuan Quintela  CFLAGS="-O2 $CFLAGS"
2112e86ecd4bSJuan Quintelafi
2113a316e378SJuan Quintela
2114e86ecd4bSJuan Quintela# Consult white-list to determine whether to enable werror
2115e86ecd4bSJuan Quintela# by default.  Only enable by default for git builds
2116e86ecd4bSJuan Quintelaz_version=`cut -f3 -d. $source_path/VERSION`
211720ff6c80SAnthony Liguori
211820ff6c80SAnthony Liguoriif test -z "$werror" ; then
2119e86ecd4bSJuan Quintela    if test "$z_version" = "50" -a \
2120e86ecd4bSJuan Quintela        "$linux" = "yes" ; then
2121e86ecd4bSJuan Quintela        werror="yes"
2122e86ecd4bSJuan Quintela    else
2123e86ecd4bSJuan Quintela        werror="no"
2124e86ecd4bSJuan Quintela    fi
2125e86ecd4bSJuan Quintelafi
2126e86ecd4bSJuan Quintela
212720ff6c80SAnthony Liguori# Disable zero malloc errors for official releases unless explicitly told to
212820ff6c80SAnthony Liguori# enable/disable
212920ff6c80SAnthony Liguoriif test -z "$zero_malloc" ; then
213020ff6c80SAnthony Liguori    if test "$z_version" = "50" ; then
213120ff6c80SAnthony Liguori	zero_malloc="no"
213220ff6c80SAnthony Liguori    else
213320ff6c80SAnthony Liguori	zero_malloc="yes"
213420ff6c80SAnthony Liguori    fi
213520ff6c80SAnthony Liguorifi
213620ff6c80SAnthony Liguori
2137e86ecd4bSJuan Quintelaif test "$werror" = "yes" ; then
2138a558ee17SJuan Quintela    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2139e86ecd4bSJuan Quintelafi
2140e86ecd4bSJuan Quintela
2141e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then
2142e86ecd4bSJuan Quintela    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
21431156c669SJuan Quintela        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2144e86ecd4bSJuan Quintela    fi
2145e86ecd4bSJuan Quintelafi
2146e86ecd4bSJuan Quintela
2147952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available
2148952afb71SBlue Swirlif test "$mingw32" = "yes" ; then
2149952afb71SBlue Swirl    for flag in --dynamicbase --no-seh --nxcompat; do
2150952afb71SBlue Swirl        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
2151952afb71SBlue Swirl            LDFLAGS="-Wl,$flag $LDFLAGS"
2152952afb71SBlue Swirl        fi
2153952afb71SBlue Swirl    done
2154952afb71SBlue Swirlfi
2155952afb71SBlue Swirl
2156190e9c59SPaolo Bonziniconfdir=$sysconfdir$confsuffix
21575a67135aSbellard
2158ca35f780SPaolo Bonzinitools=
2159ca35f780SPaolo Bonziniif test "$softmmu" = yes ; then
2160ca35f780SPaolo Bonzini  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
2161ca35f780SPaolo Bonzini  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
2162ca35f780SPaolo Bonzini      tools="qemu-nbd\$(EXESUF) $tools"
2163ca35f780SPaolo Bonzini    if [ "$check_utests" = "yes" ]; then
2164ca35f780SPaolo Bonzini      tools="check-qint check-qstring check-qdict check-qlist $tools"
2165ca35f780SPaolo Bonzini      tools="check-qfloat check-qjson $tools"
2166ca35f780SPaolo Bonzini    fi
2167ca35f780SPaolo Bonzini  fi
2168ca35f780SPaolo Bonzinifi
2169ca35f780SPaolo Bonzini
2170ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler
2171ca35f780SPaolo Bonziniroms=
2172ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
2173ca35f780SPaolo Bonzini        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
2174ca35f780SPaolo Bonzini        "$softmmu" = yes ; then
2175ca35f780SPaolo Bonzini  roms="optionrom"
2176ca35f780SPaolo Bonzinifi
2177ca35f780SPaolo Bonzini
2178ca35f780SPaolo Bonzini
21797d13299dSbellardecho "Install prefix    $prefix"
2180f2b9e1e3SPaolo Bonziniecho "BIOS directory    `eval echo $datadir`"
2181f2b9e1e3SPaolo Bonziniecho "binary directory  `eval echo $bindir`"
21821c0fd160SAurelien Jarnoecho "config directory  `eval echo $sysconfdir`"
218311d9f695Sbellardif test "$mingw32" = "no" ; then
2184f2b9e1e3SPaolo Bonziniecho "Manual directory  `eval echo $mandir`"
218543ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
218611d9f695Sbellardfi
21875a67135aSbellardecho "Source path       $source_path"
21887d13299dSbellardecho "C compiler        $cc"
218983469015Sbellardecho "Host C compiler   $host_cc"
21900c439cbfSJuan Quintelaecho "CFLAGS            $CFLAGS"
2191a558ee17SJuan Quintelaecho "QEMU_CFLAGS       $QEMU_CFLAGS"
21920c439cbfSJuan Quintelaecho "LDFLAGS           $LDFLAGS"
21937d13299dSbellardecho "make              $make"
21946a882643Spbrookecho "install           $install"
2195a98fd896Sbellardecho "host CPU          $cpu"
2196de83cd02Sbellardecho "host big endian   $bigendian"
219797a847bcSbellardecho "target list       $target_list"
2198ade25b0dSaurel32echo "tcg debug enabled $debug_tcg"
2199b4475aa2SLuiz Capitulinoecho "Mon debug enabled $debug_mon"
22007d13299dSbellardecho "gprof enabled     $gprof"
220103b4fe7dSaliguoriecho "sparse enabled    $sparse"
22021625af87Saliguoriecho "strip binaries    $strip_opt"
220305c2a3e7Sbellardecho "profiler          $profiler"
220443ce4dfeSbellardecho "static build      $static"
220585aa5189Sbellardecho "-Werror enabled   $werror"
22065b0753e0Sbellardif test "$darwin" = "yes" ; then
22075b0753e0Sbellard    echo "Cocoa support     $cocoa"
22085b0753e0Sbellardfi
220997a847bcSbellardecho "SDL support       $sdl"
22104d3b6f6eSbalrogecho "curses support    $curses"
2211769ce76dSAlexander Grafecho "curl support      $curl"
22125495ed11SLuiz Capitulinoecho "check support     $check_utests"
221367b915a5Sbellardecho "mingw32 support   $mingw32"
22140c58ac1cSmalcecho "Audio drivers     $audio_drv_list"
22150c58ac1cSmalcecho "Extra audio cards $audio_card_list"
2216eb852011SMarkus Armbrusterecho "Block whitelist   $block_drv_whitelist"
22178ff9cbf7Smalcecho "Mixer emulation   $mixemu"
22188d5d2d4cSthsecho "VNC TLS support   $vnc_tls"
22192f9606b3Saliguoriecho "VNC SASL support  $vnc_sasl"
22202f6f5c7aSCorentin Charyecho "VNC JPEG support  $vnc_jpeg"
2221efe556adSCorentin Charyecho "VNC PNG support   $vnc_png"
2222bd023f95SCorentin Charyecho "VNC thread        $vnc_thread"
22233142255cSblueswir1if test -n "$sparc_cpu"; then
22243142255cSblueswir1    echo "Target Sparc Arch $sparc_cpu"
22253142255cSblueswir1fi
2226e37630caSaliguoriecho "xen support       $xen"
22272e4d9fb1Saurel32echo "brlapi support    $brlapi"
2228a20a6f46SJuan Quintelaecho "bluez  support    $bluez"
2229a25dba17SJuan Quintelaecho "Documentation     $docs"
2230c5937220Spbrook[ ! -z "$uname_release" ] && \
2231c5937220Spbrookecho "uname -r          $uname_release"
2232bd0c5661Spbrookecho "NPTL support      $nptl"
2233379f6698SPaul Brookecho "GUEST_BASE        $guest_base"
223434005a00SKirill A. Shutemovecho "PIE user targets  $user_pie"
22358a16d273Sthsecho "vde support       $vde"
2236e5d355d1Saliguoriecho "IO thread         $io_thread"
22375c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio"
2238758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr"
223977755340Sthsecho "Install blobs     $blobs"
2240b31a0277SJuan Quintelaecho "KVM support       $kvm"
2241f652e6afSaurel32echo "fdt support       $fdt"
2242ceb42de8Saliguoriecho "preadv support    $preadv"
22435f6b9e8fSBlue Swirlecho "fdatasync         $fdatasync"
2244ee682d27SStefan Weilecho "uuid support      $uuid"
2245d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net"
224694a420b1SStefan Hajnocziecho "Trace backend     $trace_backend"
22479410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>"
224867b915a5Sbellard
224997a847bcSbellardif test $sdl_too_old = "yes"; then
225024b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
2251e8cd23deSbellardfi
225297a847bcSbellard
225398ec69acSJuan Quintelaconfig_host_mak="config-host.mak"
22544bf6b55bSJuan Quintelaconfig_host_ld="config-host.ld"
225597a847bcSbellard
225698ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak
225798ec69acSJuan Quintelaprintf "# Configured with:" >> $config_host_mak
225898ec69acSJuan Quintelaprintf " '%s'" "$0" "$@" >> $config_host_mak
225998ec69acSJuan Quintelaecho >> $config_host_mak
226098ec69acSJuan Quintela
226199d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak
226299d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak
226399d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak
226499d7cc75SPaolo Bonziniecho "datadir=$datadir" >> $config_host_mak
226599d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak
226699d7cc75SPaolo Bonziniecho "docdir=$docdir" >> $config_host_mak
22671dabe05cSPaolo Bonziniecho "confdir=$confdir" >> $config_host_mak
2268804edf29SJuan Quintela
22692408a527Saurel32case "$cpu" in
227024e804ecSAlexander Graf  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
2271e0da9dd3SJuan Quintela    ARCH=$cpu
22722408a527Saurel32  ;;
2273a302c32dSLaurent Desnogues  armv4b|armv4l)
227416dbd14fSJuan Quintela    ARCH=arm
22752408a527Saurel32  ;;
22762408a527Saurel32esac
227798ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak
2278f8393946Saurel32if test "$debug_tcg" = "yes" ; then
22792358a494SJuan Quintela  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2280f8393946Saurel32fi
2281b4475aa2SLuiz Capitulinoif test "$debug_mon" = "yes" ; then
2282b4475aa2SLuiz Capitulino  echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
2283b4475aa2SLuiz Capitulinofi
2284f3d08ee6SPaul Brookif test "$debug" = "yes" ; then
22852358a494SJuan Quintela  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
2286f3d08ee6SPaul Brookfi
22871625af87Saliguoriif test "$strip_opt" = "yes" ; then
228852ba784dSHollis Blanchard  echo "STRIP=${strip}" >> $config_host_mak
22891625af87Saliguorifi
22907d13299dSbellardif test "$bigendian" = "yes" ; then
2291e2542fe2SJuan Quintela  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
229297a847bcSbellardfi
22932358a494SJuan Quintelaecho "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
229467b915a5Sbellardif test "$mingw32" = "yes" ; then
229598ec69acSJuan Quintela  echo "CONFIG_WIN32=y" >> $config_host_mak
2296210fa556Spbrookelse
229735f4df27SJuan Quintela  echo "CONFIG_POSIX=y" >> $config_host_mak
2298210fa556Spbrookfi
2299128ab2ffSblueswir1
2300dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then
2301dffcb71cSMark McLoughlin  echo "CONFIG_LINUX=y" >> $config_host_mak
2302dffcb71cSMark McLoughlinfi
2303dffcb71cSMark McLoughlin
230483fb7adfSbellardif test "$darwin" = "yes" ; then
230598ec69acSJuan Quintela  echo "CONFIG_DARWIN=y" >> $config_host_mak
230683fb7adfSbellardfi
2307b29fe3edSmalc
2308b29fe3edSmalcif test "$aix" = "yes" ; then
230998ec69acSJuan Quintela  echo "CONFIG_AIX=y" >> $config_host_mak
2310b29fe3edSmalcfi
2311b29fe3edSmalc
2312ec530c81Sbellardif test "$solaris" = "yes" ; then
231398ec69acSJuan Quintela  echo "CONFIG_SOLARIS=y" >> $config_host_mak
23142358a494SJuan Quintela  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
23150475a5caSths  if test "$needs_libsunmath" = "yes" ; then
231675b5a697SJuan Quintela    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
23170475a5caSths  fi
2318ec530c81Sbellardfi
231997a847bcSbellardif test "$static" = "yes" ; then
232098ec69acSJuan Quintela  echo "CONFIG_STATIC=y" >> $config_host_mak
232197a847bcSbellardfi
232205c2a3e7Sbellardif test $profiler = "yes" ; then
23232358a494SJuan Quintela  echo "CONFIG_PROFILER=y" >> $config_host_mak
232405c2a3e7Sbellardfi
2325c20709aaSbellardif test "$slirp" = "yes" ; then
232698ec69acSJuan Quintela  echo "CONFIG_SLIRP=y" >> $config_host_mak
2327b6e31c12SJuan Quintela  QEMU_CFLAGS="-I\$(SRC_PATH)/slirp $QEMU_CFLAGS"
2328c20709aaSbellardfi
23298a16d273Sthsif test "$vde" = "yes" ; then
233098ec69acSJuan Quintela  echo "CONFIG_VDE=y" >> $config_host_mak
23318a16d273Sthsfi
23320c58ac1cSmalcfor card in $audio_card_list; do
2333f6e5889eSpbrook    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
233498ec69acSJuan Quintela    echo "$def=y" >> $config_host_mak
23350c58ac1cSmalcdone
23362358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
23370c58ac1cSmalcfor drv in $audio_drv_list; do
2338f6e5889eSpbrook    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
233998ec69acSJuan Quintela    echo "$def=y" >> $config_host_mak
2340923e4521Smalc    if test "$drv" = "fmod"; then
23417aac6cb1SJuan Quintela        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
2342fb065187Sbellard    fi
23430c58ac1cSmalcdone
234467f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then
234567f86e8eSJuan Quintela  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
234667f86e8eSJuan Quintelafi
2347d5631638Smalcif test "$audio_win_int" = "yes" ; then
2348d5631638Smalc  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
2349d5631638Smalcfi
2350eb852011SMarkus Armbrusterecho "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
23518ff9cbf7Smalcif test "$mixemu" = "yes" ; then
235298ec69acSJuan Quintela  echo "CONFIG_MIXEMU=y" >> $config_host_mak
23538ff9cbf7Smalcfi
23548d5d2d4cSthsif test "$vnc_tls" = "yes" ; then
235598ec69acSJuan Quintela  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2356525061bfSJuan Quintela  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
23578d5d2d4cSthsfi
23582f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then
235998ec69acSJuan Quintela  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
236060ddf533SJuan Quintela  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
23612f9606b3Saliguorifi
236296763cf9SCorentin Charyif test "$vnc_jpeg" != "no" ; then
23632f6f5c7aSCorentin Chary  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
23642f6f5c7aSCorentin Chary  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
23652f6f5c7aSCorentin Charyfi
236696763cf9SCorentin Charyif test "$vnc_png" != "no" ; then
2367efe556adSCorentin Chary  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
2368efe556adSCorentin Chary  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
2369efe556adSCorentin Charyfi
237096763cf9SCorentin Charyif test "$vnc_thread" != "no" ; then
2371bd023f95SCorentin Chary  echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
2372bd023f95SCorentin Chary  echo "CONFIG_THREAD=y" >> $config_host_mak
2373bd023f95SCorentin Charyfi
237476655d6dSaliguoriif test "$fnmatch" = "yes" ; then
23752358a494SJuan Quintela  echo "CONFIG_FNMATCH=y" >> $config_host_mak
237676655d6dSaliguorifi
2377ee682d27SStefan Weilif test "$uuid" = "yes" ; then
2378ee682d27SStefan Weil  echo "CONFIG_UUID=y" >> $config_host_mak
2379ee682d27SStefan Weilfi
2380b1a550a0Spbrookqemu_version=`head $source_path/VERSION`
238198ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak
23822358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak
238398ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak
238498ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak
2385a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then
238698ec69acSJuan Quintela  echo "BUILD_DOCS=yes" >> $config_host_mak
2387cc8ae6deSpbrookfi
23881ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then
238998ec69acSJuan Quintela  echo "CONFIG_SDL=y" >> $config_host_mak
23908ad3a7ddSJuan Quintela  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
239149ecc3faSbellardfi
239249ecc3faSbellardif test "$cocoa" = "yes" ; then
239398ec69acSJuan Quintela  echo "CONFIG_COCOA=y" >> $config_host_mak
239449ecc3faSbellardfi
23954d3b6f6eSbalrogif test "$curses" = "yes" ; then
239698ec69acSJuan Quintela  echo "CONFIG_CURSES=y" >> $config_host_mak
2397ab4e5602SJan Kiszkafi
23983b3f24adSaurel32if test "$atfile" = "yes" ; then
23992358a494SJuan Quintela  echo "CONFIG_ATFILE=y" >> $config_host_mak
24003b3f24adSaurel32fi
2401ebc996f3SRiku Voipioif test "$utimens" = "yes" ; then
24022358a494SJuan Quintela  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
2403ebc996f3SRiku Voipiofi
2404099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then
24052358a494SJuan Quintela  echo "CONFIG_PIPE2=y" >> $config_host_mak
2406099d6b0fSRiku Voipiofi
240740ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then
240840ff6d7eSKevin Wolf  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
240940ff6d7eSKevin Wolffi
24103ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then
24112358a494SJuan Quintela  echo "CONFIG_SPLICE=y" >> $config_host_mak
24123ce34dfbSvibisreenivasanfi
2413c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then
2414c2882b96SRiku Voipio  echo "CONFIG_EVENTFD=y" >> $config_host_mak
2415c2882b96SRiku Voipiofi
2416d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then
2417d0927938SUlrich Hecht  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
2418d0927938SUlrich Hechtfi
2419d0927938SUlrich Hechtif test "$dup3" = "yes" ; then
2420d0927938SUlrich Hecht  echo "CONFIG_DUP3=y" >> $config_host_mak
2421d0927938SUlrich Hechtfi
24223b3f24adSaurel32if test "$inotify" = "yes" ; then
24232358a494SJuan Quintela  echo "CONFIG_INOTIFY=y" >> $config_host_mak
24243b3f24adSaurel32fi
2425c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then
2426c05c7a73SRiku Voipio  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
2427c05c7a73SRiku Voipiofi
24286ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then
24296ae9a1f4SJuan Quintela  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
24306ae9a1f4SJuan Quintelafi
24316ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then
24326ae9a1f4SJuan Quintela  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
24336ae9a1f4SJuan Quintelafi
2434769ce76dSAlexander Grafif test "$curl" = "yes" ; then
243598ec69acSJuan Quintela  echo "CONFIG_CURL=y" >> $config_host_mak
2436b1d5a277SJuan Quintela  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
2437769ce76dSAlexander Graffi
24382e4d9fb1Saurel32if test "$brlapi" = "yes" ; then
243998ec69acSJuan Quintela  echo "CONFIG_BRLAPI=y" >> $config_host_mak
24402e4d9fb1Saurel32fi
2441fb599c9aSbalrogif test "$bluez" = "yes" ; then
244298ec69acSJuan Quintela  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2443ef7635ecSJuan Quintela  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
2444fb599c9aSbalrogfi
2445e37630caSaliguoriif test "$xen" = "yes" ; then
24465647eb74SJuan Quintela  echo "CONFIG_XEN=y" >> $config_host_mak
2447e37630caSaliguorifi
2448e5d355d1Saliguoriif test "$io_thread" = "yes" ; then
244998ec69acSJuan Quintela  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2450bd023f95SCorentin Chary  echo "CONFIG_THREAD=y" >> $config_host_mak
2451e5d355d1Saliguorifi
24525c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then
24535c6c3a6cSChristoph Hellwig  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
24545c6c3a6cSChristoph Hellwigfi
2455758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then
2456758e8e38SVenkateswararao Jujjuri (JV)  echo "CONFIG_ATTR=y" >> $config_host_mak
2457758e8e38SVenkateswararao Jujjuri (JV)fi
2458758e8e38SVenkateswararao Jujjuri (JV)if test "$linux" = "yes" ; then
2459758e8e38SVenkateswararao Jujjuri (JV)  if test "$attr" = "yes" ; then
2460758e8e38SVenkateswararao Jujjuri (JV)    echo "CONFIG_VIRTFS=y" >> $config_host_mak
2461758e8e38SVenkateswararao Jujjuri (JV)  fi
2462758e8e38SVenkateswararao Jujjuri (JV)fi
246377755340Sthsif test "$blobs" = "yes" ; then
246498ec69acSJuan Quintela  echo "INSTALL_BLOBS=yes" >> $config_host_mak
246577755340Sthsfi
2466bf9298b9Saliguoriif test "$iovec" = "yes" ; then
24672358a494SJuan Quintela  echo "CONFIG_IOVEC=y" >> $config_host_mak
2468bf9298b9Saliguorifi
2469ceb42de8Saliguoriif test "$preadv" = "yes" ; then
24702358a494SJuan Quintela  echo "CONFIG_PREADV=y" >> $config_host_mak
2471ceb42de8Saliguorifi
2472f652e6afSaurel32if test "$fdt" = "yes" ; then
24733f0855b1SJuan Quintela  echo "CONFIG_FDT=y" >> $config_host_mak
2474f652e6afSaurel32fi
2475de5071c5SBlue Swirlif test "$need_offsetof" = "yes" ; then
2476de5071c5SBlue Swirl  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
2477de5071c5SBlue Swirlfi
2478747bbdf7SBlue Swirlif test "$gcc_attribute_warn_unused_result" = "yes" ; then
2479747bbdf7SBlue Swirl  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
2480747bbdf7SBlue Swirlfi
24815f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then
24825f6b9e8fSBlue Swirl  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
24835f6b9e8fSBlue Swirlfi
248497a847bcSbellard
248583fb7adfSbellard# XXX: suppress that
24867d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
24872358a494SJuan Quintela  echo "CONFIG_BSD=y" >> $config_host_mak
24887d3505c5Sbellardfi
24897d3505c5Sbellard
24902358a494SJuan Quintelaecho "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2491c5937220Spbrook
249220ff6c80SAnthony Liguoriif test "$zero_malloc" = "yes" ; then
249320ff6c80SAnthony Liguori  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
249420ff6c80SAnthony Liguorifi
249520ff6c80SAnthony Liguori
249668063649Sblueswir1# USB host support
249768063649Sblueswir1case "$usb" in
249868063649Sblueswir1linux)
249998ec69acSJuan Quintela  echo "HOST_USB=linux" >> $config_host_mak
250068063649Sblueswir1;;
250168063649Sblueswir1bsd)
250298ec69acSJuan Quintela  echo "HOST_USB=bsd" >> $config_host_mak
250368063649Sblueswir1;;
250468063649Sblueswir1*)
250598ec69acSJuan Quintela  echo "HOST_USB=stub" >> $config_host_mak
250668063649Sblueswir1;;
250768063649Sblueswir1esac
250868063649Sblueswir1
250994a420b1SStefan Hajnocziecho "TRACE_BACKEND=$trace_backend" >> $config_host_mak
251022890ab5SPrerna Saxenaif test "$trace_backend" = "simple"; then
251122890ab5SPrerna Saxena  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
251222890ab5SPrerna Saxenafi
25139410b56cSPrerna Saxena# Set the appropriate trace file.
25149410b56cSPrerna Saxenaif test "$trace_backend" = "simple"; then
25159410b56cSPrerna Saxena  trace_file="\"$trace_file-%u\""
25169410b56cSPrerna Saxenafi
25179410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
25189410b56cSPrerna Saxena
251998ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak
252098ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak
2521804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak
2522804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak
2523804edf29SJuan Quintelaecho "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
2524804edf29SJuan Quintelaecho "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
2525804edf29SJuan Quintelaecho "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
2526804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak
2527804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak
2528804edf29SJuan Quintelaif test "$sparse" = "yes" ; then
2529804edf29SJuan Quintela  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
2530804edf29SJuan Quintela  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
2531a558ee17SJuan Quintela  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2532804edf29SJuan Quintelafi
2533804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak
2534804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak
2535804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak
2536e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak
2537a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
2538c81da56eSJuan Quintelaecho "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2539e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak
2540a36abbbbSJuan Quintelaecho "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
2541a36abbbbSJuan Quintelaecho "ARLIBS_END=$arlibs_end" >> $config_host_mak
254273da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak
25433e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2544804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak
2545804edf29SJuan Quintela
25464bf6b55bSJuan Quintela# generate list of library paths for linker script
25474bf6b55bSJuan Quintela
25484bf6b55bSJuan Quintela$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
25494bf6b55bSJuan Quintela
25504bf6b55bSJuan Quintelaif test -f ${config_host_ld}~ ; then
25514bf6b55bSJuan Quintela  if cmp -s $config_host_ld ${config_host_ld}~ ; then
25524bf6b55bSJuan Quintela    mv ${config_host_ld}~ $config_host_ld
25534bf6b55bSJuan Quintela  else
25544bf6b55bSJuan Quintela    rm ${config_host_ld}~
25554bf6b55bSJuan Quintela  fi
25564bf6b55bSJuan Quintelafi
25574bf6b55bSJuan Quintela
25584d904533SBlue Swirlfor d in libdis libdis-user; do
25594d904533SBlue Swirl    mkdir -p $d
25604d904533SBlue Swirl    rm -f $d/Makefile
25614d904533SBlue Swirl    ln -s $source_path/Makefile.dis $d/Makefile
25624d904533SBlue Swirl    echo > $d/config.mak
25634d904533SBlue Swirldone
2564d44cff22SRichard Hendersonif test "$static" = "no" -a "$user_pie" = "yes" ; then
2565d44cff22SRichard Henderson  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
2566d44cff22SRichard Hendersonfi
25674d904533SBlue Swirl
256897a847bcSbellardfor target in $target_list; do
256997a847bcSbellardtarget_dir="$target"
257025be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak
2571600309b6SBlue Swirltarget_arch2=`echo $target | cut -d '-' -f 1`
257297a847bcSbellardtarget_bigendian="no"
25731f3d3c8fSJuan Quintela
2574ea2d6a39SJuan Quintelacase "$target_arch2" in
257524e804ecSAlexander Graf  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
2576ea2d6a39SJuan Quintela  target_bigendian=yes
2577ea2d6a39SJuan Quintela  ;;
2578ea2d6a39SJuan Quintelaesac
257997a847bcSbellardtarget_softmmu="no"
2580997344f3Sbellardtarget_user_only="no"
2581831b7825Sthstarget_linux_user="no"
2582831b7825Sthstarget_darwin_user="no"
258384778508Sblueswir1target_bsd_user="no"
25849e407a85Spbrookcase "$target" in
2585600309b6SBlue Swirl  ${target_arch2}-softmmu)
25869e407a85Spbrook    target_softmmu="yes"
25879e407a85Spbrook    ;;
2588600309b6SBlue Swirl  ${target_arch2}-linux-user)
25899c7a4202SBlue Swirl    if test "$linux" != "yes" ; then
25909c7a4202SBlue Swirl      echo "ERROR: Target '$target' is only available on a Linux host"
25919c7a4202SBlue Swirl      exit 1
25929c7a4202SBlue Swirl    fi
25939e407a85Spbrook    target_user_only="yes"
25949e407a85Spbrook    target_linux_user="yes"
25959e407a85Spbrook    ;;
2596600309b6SBlue Swirl  ${target_arch2}-darwin-user)
25979c7a4202SBlue Swirl    if test "$darwin" != "yes" ; then
25989c7a4202SBlue Swirl      echo "ERROR: Target '$target' is only available on a Darwin host"
25999c7a4202SBlue Swirl      exit 1
26009c7a4202SBlue Swirl    fi
26019e407a85Spbrook    target_user_only="yes"
2602831b7825Sths    target_darwin_user="yes"
26039e407a85Spbrook    ;;
2604600309b6SBlue Swirl  ${target_arch2}-bsd-user)
26059cf55765SBlue Swirl    if test "$bsd" != "yes" ; then
26069c7a4202SBlue Swirl      echo "ERROR: Target '$target' is only available on a BSD host"
26079c7a4202SBlue Swirl      exit 1
26089c7a4202SBlue Swirl    fi
260984778508Sblueswir1    target_user_only="yes"
261084778508Sblueswir1    target_bsd_user="yes"
261184778508Sblueswir1    ;;
26129e407a85Spbrook  *)
26139e407a85Spbrook    echo "ERROR: Target '$target' not recognised"
26149e407a85Spbrook    exit 1
26159e407a85Spbrook    ;;
26169e407a85Spbrookesac
2617831b7825Sths
261897a847bcSbellardmkdir -p $target_dir
2619158142c2Sbellardmkdir -p $target_dir/fpu
262057fec1feSbellardmkdir -p $target_dir/tcg
262159f2a787SGerd Hoffmannmkdir -p $target_dir/ide
262284778508Sblueswir1if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
262369de927cSbellard  mkdir -p $target_dir/nwfpe
262469de927cSbellardfi
262569de927cSbellard
2626ec530c81Sbellard#
2627ec530c81Sbellard# don't use ln -sf as not all "ln -sf" over write the file/link
2628ec530c81Sbellard#
2629ec530c81Sbellardrm -f $target_dir/Makefile
2630ec530c81Sbellardln -s $source_path/Makefile.target $target_dir/Makefile
2631ec530c81Sbellard
263297a847bcSbellard
263325be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak
263497a847bcSbellard
2635e5fe0c52Spbrookbflt="no"
2636bd0c5661Spbrooktarget_nptl="no"
2637600309b6SBlue Swirlinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
26387ee2822cSPaolo Bonziniecho "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
263956aebc89Spbrookgdb_xml_files=""
26407ba1e619Saliguori
2641938b1eddSJuan QuintelaTARGET_ARCH="$target_arch2"
26426acff7daSJuan QuintelaTARGET_BASE_ARCH=""
2643e6e91b9cSJuan QuintelaTARGET_ABI_DIR=""
2644e73aae67SJuan Quintela
2645600309b6SBlue Swirlcase "$target_arch2" in
26462408a527Saurel32  i386)
26471ad2134fSPaul Brook    target_phys_bits=32
26482408a527Saurel32  ;;
26492408a527Saurel32  x86_64)
26506acff7daSJuan Quintela    TARGET_BASE_ARCH=i386
26511ad2134fSPaul Brook    target_phys_bits=64
26522408a527Saurel32  ;;
26532408a527Saurel32  alpha)
26541ad2134fSPaul Brook    target_phys_bits=64
2655a4b388ffSRichard Henderson    target_nptl="yes"
26562408a527Saurel32  ;;
26572408a527Saurel32  arm|armeb)
2658b498c8a0SJuan Quintela    TARGET_ARCH=arm
2659e5fe0c52Spbrook    bflt="yes"
2660bd0c5661Spbrook    target_nptl="yes"
266156aebc89Spbrook    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
26621ad2134fSPaul Brook    target_phys_bits=32
26632408a527Saurel32  ;;
26642408a527Saurel32  cris)
2665253bd7f8Sedgar_igl    target_nptl="yes"
26661ad2134fSPaul Brook    target_phys_bits=32
26672408a527Saurel32  ;;
26682408a527Saurel32  m68k)
26690938cda5Saurel32    bflt="yes"
267056aebc89Spbrook    gdb_xml_files="cf-core.xml cf-fp.xml"
26711ad2134fSPaul Brook    target_phys_bits=32
26722408a527Saurel32  ;;
267372b675caSEdgar E. Iglesias  microblaze)
267472b675caSEdgar E. Iglesias    bflt="yes"
267572b675caSEdgar E. Iglesias    target_nptl="yes"
267672b675caSEdgar E. Iglesias    target_phys_bits=32
267772b675caSEdgar E. Iglesias  ;;
26782408a527Saurel32  mips|mipsel)
2679b498c8a0SJuan Quintela    TARGET_ARCH=mips
268025be210fSJuan Quintela    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
2681f04dc72fSPaul Brook    target_nptl="yes"
26821ad2134fSPaul Brook    target_phys_bits=64
26832408a527Saurel32  ;;
26842408a527Saurel32  mipsn32|mipsn32el)
2685b498c8a0SJuan Quintela    TARGET_ARCH=mipsn32
26866acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
268725be210fSJuan Quintela    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
26881ad2134fSPaul Brook    target_phys_bits=64
26892408a527Saurel32  ;;
26902408a527Saurel32  mips64|mips64el)
2691b498c8a0SJuan Quintela    TARGET_ARCH=mips64
26926acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
269325be210fSJuan Quintela    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
26941ad2134fSPaul Brook    target_phys_bits=64
26952408a527Saurel32  ;;
26962408a527Saurel32  ppc)
2697c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
26981ad2134fSPaul Brook    target_phys_bits=32
2699d6630708SNathan Froyd    target_nptl="yes"
27002408a527Saurel32  ;;
27012408a527Saurel32  ppcemb)
27026acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
2703e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
2704c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
27051ad2134fSPaul Brook    target_phys_bits=64
2706d6630708SNathan Froyd    target_nptl="yes"
27072408a527Saurel32  ;;
27082408a527Saurel32  ppc64)
27096acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
2710e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
2711c8b3532dSaurel32    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
27121ad2134fSPaul Brook    target_phys_bits=64
27132408a527Saurel32  ;;
27142408a527Saurel32  ppc64abi32)
2715b498c8a0SJuan Quintela    TARGET_ARCH=ppc64
27166acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
2717e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
271825be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
2719c8b3532dSaurel32    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
27201ad2134fSPaul Brook    target_phys_bits=64
27212408a527Saurel32  ;;
27222408a527Saurel32  sh4|sh4eb)
2723b498c8a0SJuan Quintela    TARGET_ARCH=sh4
27244dbed897Spbrook    bflt="yes"
27250b6d3ae0Saurel32    target_nptl="yes"
27261ad2134fSPaul Brook    target_phys_bits=32
27272408a527Saurel32  ;;
27282408a527Saurel32  sparc)
27291ad2134fSPaul Brook    target_phys_bits=64
27302408a527Saurel32  ;;
27312408a527Saurel32  sparc64)
27326acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
27331ad2134fSPaul Brook    target_phys_bits=64
27342408a527Saurel32  ;;
27352408a527Saurel32  sparc32plus)
2736b498c8a0SJuan Quintela    TARGET_ARCH=sparc64
27376acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
2738e6e91b9cSJuan Quintela    TARGET_ABI_DIR=sparc
273925be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
27401ad2134fSPaul Brook    target_phys_bits=64
27412408a527Saurel32  ;;
274224e804ecSAlexander Graf  s390x)
274324e804ecSAlexander Graf    target_phys_bits=64
274424e804ecSAlexander Graf  ;;
27452408a527Saurel32  *)
2746de83cd02Sbellard    echo "Unsupported target CPU"
2747de83cd02Sbellard    exit 1
27482408a527Saurel32  ;;
27492408a527Saurel32esac
275025be210fSJuan Quintelaecho "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
2751053dd92eSJuan Quintelatarget_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
275225be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak
275325be210fSJuan Quintelaecho "TARGET_ARCH2=$target_arch2" >> $config_target_mak
275442bc608bSJuan Quintela# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
27556acff7daSJuan Quintelaif [ "$TARGET_BASE_ARCH" = "" ]; then
27566acff7daSJuan Quintela  TARGET_BASE_ARCH=$TARGET_ARCH
27576acff7daSJuan Quintelafi
275825be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
2759e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then
2760e6e91b9cSJuan Quintela  TARGET_ABI_DIR=$TARGET_ARCH
2761e6e91b9cSJuan Quintelafi
276225be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
27631b0c87fcSJuan Quintelacase "$target_arch2" in
27641b0c87fcSJuan Quintela  i386|x86_64)
27651b0c87fcSJuan Quintela    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
276625be210fSJuan Quintela      echo "CONFIG_XEN=y" >> $config_target_mak
27671b0c87fcSJuan Quintela    fi
27681b0c87fcSJuan Quintelaesac
2769c59249f9SJuan Quintelacase "$target_arch2" in
27700e60a699SAlexander Graf  i386|x86_64|ppcemb|ppc|ppc64|s390x)
2771c59249f9SJuan Quintela    # Make sure the target and host cpus are compatible
2772c59249f9SJuan Quintela    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
2773c59249f9SJuan Quintela      \( "$target_arch2" = "$cpu" -o \
2774c59249f9SJuan Quintela      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
27755f114bc6SAlexander Graf      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
2776c59249f9SJuan Quintela      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
2777c59249f9SJuan Quintela      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
277825be210fSJuan Quintela      echo "CONFIG_KVM=y" >> $config_target_mak
277925be210fSJuan Quintela      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
2780dae5079aSJan Kiszka      if test "$kvm_para" = "yes"; then
2781dae5079aSJan Kiszka        echo "CONFIG_KVM_PARA=y" >> $config_target_mak
2782dae5079aSJan Kiszka      fi
2783d5970055SMichael S. Tsirkin      if test $vhost_net = "yes" ; then
2784d5970055SMichael S. Tsirkin        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
2785d5970055SMichael S. Tsirkin      fi
2786c59249f9SJuan Quintela    fi
2787c59249f9SJuan Quintelaesac
2788de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
278925be210fSJuan Quintela  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
279097a847bcSbellardfi
279197a847bcSbellardif test "$target_softmmu" = "yes" ; then
2792b1aa27c4SPaul Brook  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
279325be210fSJuan Quintela  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
279425be210fSJuan Quintela  echo "LIBS+=$libs_softmmu" >> $config_target_mak
27950e8c9214SAndreas Färber  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
27965791f45bSKirill A. Shutemov  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
2797de83cd02Sbellardfi
2798997344f3Sbellardif test "$target_user_only" = "yes" ; then
279925be210fSJuan Quintela  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
2800997344f3Sbellardfi
2801831b7825Sthsif test "$target_linux_user" = "yes" ; then
280225be210fSJuan Quintela  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
2803831b7825Sthsfi
2804831b7825Sthsif test "$target_darwin_user" = "yes" ; then
280525be210fSJuan Quintela  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
2806831b7825Sthsfi
280756aebc89Spbrooklist=""
280856aebc89Spbrookif test ! -z "$gdb_xml_files" ; then
280956aebc89Spbrook  for x in $gdb_xml_files; do
281056aebc89Spbrook    list="$list $source_path/gdb-xml/$x"
281156aebc89Spbrook  done
281225be210fSJuan Quintela  echo "TARGET_XML_FILES=$list" >> $config_target_mak
28133d0f1517SJuan Quintelafi
2814de83cd02Sbellard
2815f57975fbSJuan Quintelacase "$target_arch2" in
2816990b3e19SRichard Henderson  alpha|arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|s390x|sparc|sparc64|sparc32plus)
281725be210fSJuan Quintela    echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
2818f57975fbSJuan Quintela    ;;
2819d6b38939SJuan Quintela  *)
282025be210fSJuan Quintela    echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
2821d6b38939SJuan Quintela    ;;
2822f57975fbSJuan Quintelaesac
2823f57975fbSJuan Quintela
2824e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
282525be210fSJuan Quintela  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
2826e5fe0c52Spbrookfi
2827bd0c5661Spbrookif test "$target_user_only" = "yes" \
2828bd0c5661Spbrook        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
282925be210fSJuan Quintela  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
2830bd0c5661Spbrookfi
2831379f6698SPaul Brookif test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
283225be210fSJuan Quintela  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
2833379f6698SPaul Brookfi
283484778508Sblueswir1if test "$target_bsd_user" = "yes" ; then
283525be210fSJuan Quintela  echo "CONFIG_BSD_USER=y" >> $config_target_mak
283684778508Sblueswir1fi
28375b0753e0Sbellard
28384afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets
2839fa282484SJuan Quintela
28404afddb55SJuan Quintelacflags=""
2841fa282484SJuan Quintelaldflags=""
28429b8e111fSJuan Quintela
284357ddfbf7SJuan Quintelaif test "$ARCH" = "sparc64" ; then
284457ddfbf7SJuan Quintela  cflags="-I\$(SRC_PATH)/tcg/sparc $cflags"
284524e804ecSAlexander Grafelif test "$ARCH" = "s390x" ; then
284624e804ecSAlexander Graf  cflags="-I\$(SRC_PATH)/tcg/s390 $cflags"
28475d8a4f8fSRichard Hendersonelif test "$ARCH" = "x86_64" ; then
28485d8a4f8fSRichard Henderson  cflags="-I\$(SRC_PATH)/tcg/i386 $cflags"
284957ddfbf7SJuan Quintelaelse
285057ddfbf7SJuan Quintela  cflags="-I\$(SRC_PATH)/tcg/\$(ARCH) $cflags"
285157ddfbf7SJuan Quintelafi
285257ddfbf7SJuan Quintelacflags="-I\$(SRC_PATH)/tcg $cflags"
285357ddfbf7SJuan Quintelacflags="-I\$(SRC_PATH)/fpu $cflags"
285457ddfbf7SJuan Quintela
28554d904533SBlue Swirlif test "$target_user_only" = "yes" ; then
28564d904533SBlue Swirl    libdis_config_mak=libdis-user/config.mak
28574d904533SBlue Swirlelse
28584d904533SBlue Swirl    libdis_config_mak=libdis/config.mak
28594d904533SBlue Swirlfi
28604d904533SBlue Swirl
286164656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do
286264656024SJuan Quintela  case "$i" in
286364656024SJuan Quintela  alpha)
286425be210fSJuan Quintela    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
28654d904533SBlue Swirl    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
286664656024SJuan Quintela  ;;
286764656024SJuan Quintela  arm)
286825be210fSJuan Quintela    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
28694d904533SBlue Swirl    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
287064656024SJuan Quintela  ;;
287164656024SJuan Quintela  cris)
287225be210fSJuan Quintela    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
28734d904533SBlue Swirl    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
287464656024SJuan Quintela  ;;
287564656024SJuan Quintela  hppa)
287625be210fSJuan Quintela    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
28774d904533SBlue Swirl    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
287864656024SJuan Quintela  ;;
287964656024SJuan Quintela  i386|x86_64)
288025be210fSJuan Quintela    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
28814d904533SBlue Swirl    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
288264656024SJuan Quintela  ;;
2883903ec55cSAurelien Jarno  ia64*)
2884903ec55cSAurelien Jarno    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
2885903ec55cSAurelien Jarno    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
2886903ec55cSAurelien Jarno  ;;
288764656024SJuan Quintela  m68k)
288825be210fSJuan Quintela    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
28894d904533SBlue Swirl    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
289064656024SJuan Quintela  ;;
289164656024SJuan Quintela  microblaze)
289225be210fSJuan Quintela    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
28934d904533SBlue Swirl    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
289464656024SJuan Quintela  ;;
289564656024SJuan Quintela  mips*)
289625be210fSJuan Quintela    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
28974d904533SBlue Swirl    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
289864656024SJuan Quintela  ;;
289964656024SJuan Quintela  ppc*)
290025be210fSJuan Quintela    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
29014d904533SBlue Swirl    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
290264656024SJuan Quintela  ;;
290324e804ecSAlexander Graf  s390*)
290425be210fSJuan Quintela    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
29054d904533SBlue Swirl    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
290664656024SJuan Quintela  ;;
290764656024SJuan Quintela  sh4)
290825be210fSJuan Quintela    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
29094d904533SBlue Swirl    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
291064656024SJuan Quintela  ;;
291164656024SJuan Quintela  sparc*)
291225be210fSJuan Quintela    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
29134d904533SBlue Swirl    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
291464656024SJuan Quintela  ;;
291564656024SJuan Quintela  esac
291664656024SJuan Quinteladone
291764656024SJuan Quintela
29186ee7126fSJuan Quintelacase "$ARCH" in
29196ee7126fSJuan Quintelaalpha)
29206ee7126fSJuan Quintela  # Ensure there's only a single GP
29216ee7126fSJuan Quintela  cflags="-msmall-data $cflags"
29226ee7126fSJuan Quintela;;
29236ee7126fSJuan Quintelaesac
29246ee7126fSJuan Quintela
292555d9c04bSJuan Quintelaif test "$target_softmmu" = "yes" ; then
292655d9c04bSJuan Quintela  case "$TARGET_BASE_ARCH" in
292755d9c04bSJuan Quintela  arm)
292855d9c04bSJuan Quintela    cflags="-DHAS_AUDIO $cflags"
292955d9c04bSJuan Quintela  ;;
293055d9c04bSJuan Quintela  i386|mips|ppc)
293155d9c04bSJuan Quintela    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
293255d9c04bSJuan Quintela  ;;
293355d9c04bSJuan Quintela  esac
293455d9c04bSJuan Quintelafi
293555d9c04bSJuan Quintela
293634005a00SKirill A. Shutemovif test "$target_user_only" = "yes" -a "$static" = "no" -a \
293734005a00SKirill A. Shutemov	"$user_pie" = "yes" ; then
293834005a00SKirill A. Shutemov  cflags="-fpie $cflags"
293934005a00SKirill A. Shutemov  ldflags="-pie $ldflags"
294034005a00SKirill A. Shutemovfi
294134005a00SKirill A. Shutemov
2942471857ddSJuan Quintelaif test "$target_softmmu" = "yes" -a \( \
2943471857ddSJuan Quintela        "$TARGET_ARCH" = "microblaze" -o \
2944471857ddSJuan Quintela        "$TARGET_ARCH" = "cris" \) ; then
294525be210fSJuan Quintela  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
2946471857ddSJuan Quintelafi
2947471857ddSJuan Quintela
2948d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then
294925be210fSJuan Quintela  echo "TARGET_GPROF=yes" >> $config_target_mak
2950d02c1db3SJuan Quintela  if test "$target_linux_user" = "yes" ; then
2951d02c1db3SJuan Quintela    cflags="-p $cflags"
2952d02c1db3SJuan Quintela    ldflags="-p $ldflags"
2953d02c1db3SJuan Quintela  fi
2954d02c1db3SJuan Quintela  if test "$target_softmmu" = "yes" ; then
2955d02c1db3SJuan Quintela    ldflags="-p $ldflags"
295625be210fSJuan Quintela    echo "GPROF_CFLAGS=-p" >> $config_target_mak
2957d02c1db3SJuan Quintela  fi
2958d02c1db3SJuan Quintelafi
2959d02c1db3SJuan Quintela
29606ee7126fSJuan Quintelalinker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
29619b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
2962fa282484SJuan Quintela  case "$ARCH" in
2963fa282484SJuan Quintela  sparc)
2964fa282484SJuan Quintela    # -static is used to avoid g1/g3 usage by the dynamic linker
2965322e5878SJuan Quintela    ldflags="$linker_script -static $ldflags"
2966fa282484SJuan Quintela    ;;
29674d58be06SRichard Henderson  alpha | s390x)
29684d58be06SRichard Henderson    # The default placement of the application is fine.
29694d58be06SRichard Henderson    ;;
2970fd76e73aSRichard Henderson  *)
2971322e5878SJuan Quintela    ldflags="$linker_script $ldflags"
2972fa282484SJuan Quintela    ;;
2973fa282484SJuan Quintela  esac
2974fa282484SJuan Quintelafi
2975fa282484SJuan Quintela
297625be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak
297725be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak
2978fa282484SJuan Quintela
297997a847bcSbellarddone # for target in $targets
29807d13299dSbellard
29817d13299dSbellard# build tree in object directory if source path is different from current one
29827d13299dSbellardif test "$source_path_used" = "yes" ; then
2983e1144d00SMark McLoughlin    DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
29842d9f27d2SAnthony Liguori    DIRS="$DIRS roms/seabios roms/vgabios"
29853e230dd2SCorentin Chary    DIRS="$DIRS fsdev ui"
29867d13299dSbellard    FILES="Makefile tests/Makefile"
2987e7daa605Sths    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
2988e1ffb0f1Sedgar_igl    FILES="$FILES tests/test-mmap.c"
29897ea78b74SJan Kiszka    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
29902d9f27d2SAnthony Liguori    FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
29917ea78b74SJan Kiszka    for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
29927ea78b74SJan Kiszka        FILES="$FILES pc-bios/`basename $bios_file`"
29937ea78b74SJan Kiszka    done
29947d13299dSbellard    for dir in $DIRS ; do
29957d13299dSbellard            mkdir -p $dir
29967d13299dSbellard    done
2997ec530c81Sbellard    # remove the link and recreate it, as not all "ln -sf" overwrite the link
29987d13299dSbellard    for f in $FILES ; do
2999ec530c81Sbellard        rm -f $f
3000ec530c81Sbellard        ln -s $source_path/$f $f
30017d13299dSbellard    done
30027d13299dSbellardfi
30031ad2134fSPaul Brook
3004c34ebfdcSAnthony Liguori# temporary config to build submodules
30052d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do
3006c34ebfdcSAnthony Liguori    config_mak=roms/$rom/config.mak
300737116c89SStefan Weil    echo "# Automatically generated by configure - do not modify" > $config_mak
3008c34ebfdcSAnthony Liguori    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
3009c34ebfdcSAnthony Liguori    echo "CC=$cc" >> $config_mak
3010c34ebfdcSAnthony Liguori    echo "BCC=bcc" >> $config_mak
3011c34ebfdcSAnthony Liguori    echo "CPP=${cross_prefix}cpp" >> $config_mak
3012c34ebfdcSAnthony Liguori    echo "OBJCOPY=objcopy" >> $config_mak
3013c34ebfdcSAnthony Liguori    echo "IASL=iasl" >> $config_mak
3014c34ebfdcSAnthony Liguori    echo "HOST_CC=$host_cc" >> $config_mak
3015c34ebfdcSAnthony Liguori    echo "LD=$ld" >> $config_mak
3016c34ebfdcSAnthony Liguoridone
3017c34ebfdcSAnthony Liguori
30181ad2134fSPaul Brookfor hwlib in 32 64; do
30191ad2134fSPaul Brook  d=libhw$hwlib
30201ad2134fSPaul Brook  mkdir -p $d
30219953b2fcSBlue Swirl  mkdir -p $d/ide
30221ad2134fSPaul Brook  rm -f $d/Makefile
30231ad2134fSPaul Brook  ln -s $source_path/Makefile.hw $d/Makefile
302437116c89SStefan Weil  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
30251ad2134fSPaul Brookdone
3026add16157SBlue Swirl
3027add16157SBlue Swirld=libuser
3028add16157SBlue Swirlmkdir -p $d
3029add16157SBlue Swirlrm -f $d/Makefile
3030add16157SBlue Swirlln -s $source_path/Makefile.user $d/Makefile
3031299060a0SKirill A. Shutemovif test "$static" = "no" -a "$user_pie" = "yes" ; then
3032299060a0SKirill A. Shutemov  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
3033299060a0SKirill A. Shutemovfi
3034b40292e7SJan Kiszka
3035b40292e7SJan Kiszkaif test "$docs" = "yes" ; then
3036b40292e7SJan Kiszka  mkdir -p QMP
3037b40292e7SJan Kiszkafi
3038