xref: /openbmc/qemu/configure (revision bd00d539)
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
180ba8681eSLoïc Minier# NB: do not call "exit" in the trap handler; this is buggy with some shells;
190ba8681eSLoïc Minier# see <1285349658-3122-1-git-send-email-loic.minier@linaro.org>
200ba8681eSLoïc Miniertrap "rm -f $TMPC $TMPO $TMPE" EXIT INT QUIT TERM
219ac81bbbSmalc
2252166aa0SJuan Quintelacompile_object() {
23a558ee17SJuan Quintela  $cc $QEMU_CFLAGS -c -o $TMPO $TMPC > /dev/null 2> /dev/null
2452166aa0SJuan Quintela}
2552166aa0SJuan Quintela
2652166aa0SJuan Quintelacompile_prog() {
2752166aa0SJuan Quintela  local_cflags="$1"
2852166aa0SJuan Quintela  local_ldflags="$2"
29a558ee17SJuan Quintela  $cc $QEMU_CFLAGS $local_cflags -o $TMPE $TMPC $LDFLAGS $local_ldflags > /dev/null 2> /dev/null
3052166aa0SJuan Quintela}
3152166aa0SJuan Quintela
320dba6195SLoïc Minier# check whether a command is available to this shell (may be either an
330dba6195SLoïc Minier# executable or a builtin)
340dba6195SLoïc Minierhas() {
350dba6195SLoïc Minier    type "$1" >/dev/null 2>&1
360dba6195SLoïc Minier}
370dba6195SLoïc Minier
380dba6195SLoïc Minier# search for an executable in PATH
390dba6195SLoïc Minierpath_of() {
400dba6195SLoïc Minier    local_command="$1"
410dba6195SLoïc Minier    local_ifs="$IFS"
420dba6195SLoïc Minier    local_dir=""
430dba6195SLoïc Minier
440dba6195SLoïc Minier    # pathname has a dir component?
450dba6195SLoïc Minier    if [ "${local_command#*/}" != "$local_command" ]; then
460dba6195SLoïc Minier        if [ -x "$local_command" ] && [ ! -d "$local_command" ]; then
470dba6195SLoïc Minier            echo "$local_command"
480dba6195SLoïc Minier            return 0
490dba6195SLoïc Minier        fi
500dba6195SLoïc Minier    fi
510dba6195SLoïc Minier    if [ -z "$local_command" ]; then
520dba6195SLoïc Minier        return 1
530dba6195SLoïc Minier    fi
540dba6195SLoïc Minier
550dba6195SLoïc Minier    IFS=:
560dba6195SLoïc Minier    for local_dir in $PATH; do
570dba6195SLoïc Minier        if [ -x "$local_dir/$local_command" ] && [ ! -d "$local_dir/$local_command" ]; then
580dba6195SLoïc Minier            echo "$local_dir/$local_command"
590dba6195SLoïc Minier            IFS="${local_ifs:-$(printf ' \t\n')}"
600dba6195SLoïc Minier            return 0
610dba6195SLoïc Minier        fi
620dba6195SLoïc Minier    done
630dba6195SLoïc Minier    # not found
640dba6195SLoïc Minier    IFS="${local_ifs:-$(printf ' \t\n')}"
650dba6195SLoïc Minier    return 1
660dba6195SLoïc Minier}
670dba6195SLoïc Minier
687d13299dSbellard# default parameters
692ff6b91eSJuan Quintelacpu=""
701e43adfcSbellardinterp_prefix="/usr/gnemul/qemu-%M"
7143ce4dfeSbellardstatic="no"
72ed968ff1SJuan Quintelasparc_cpu=""
737d13299dSbellardcross_prefix=""
747d13299dSbellardcc="gcc"
750c58ac1cSmalcaudio_drv_list=""
764c9b53e3Smalcaudio_card_list="ac97 es1370 sb16"
774c9b53e3Smalcaudio_possible_cards="ac97 es1370 sb16 cs4231a adlib gus"
78eb852011SMarkus Armbrusterblock_drv_whitelist=""
797d13299dSbellardhost_cc="gcc"
807d13299dSbellardar="ar"
817d13299dSbellardmake="make"
826a882643Spbrookinstall="install"
837aa486feSAnthony Liguoriobjcopy="objcopy"
847aa486feSAnthony Liguorild="ld"
8552ba784dSHollis Blanchardstrip="strip"
869fe6de94SBlue Swirlwindres="windres"
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}"
1339fe6de94SBlue Swirlwindres="${cross_prefix}${windres}"
134ac0df51dSaliguori
135be17dc90SMichael S. Tsirkin# default flags for all hosts
136be17dc90SMichael S. TsirkinQEMU_CFLAGS="-fno-strict-aliasing $QEMU_CFLAGS"
137be17dc90SMichael S. TsirkinCFLAGS="-g $CFLAGS"
138be17dc90SMichael S. TsirkinQEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
139be17dc90SMichael S. TsirkinQEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
140be17dc90SMichael S. TsirkinQEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
14184958305SKirill A. ShutemovQEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
142be17dc90SMichael S. TsirkinQEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
143be17dc90SMichael S. TsirkinLDFLAGS="-g $LDFLAGS"
144be17dc90SMichael S. Tsirkin
145a21493e0SBlue Swirlgcc_flags="-Wold-style-declaration -Wold-style-definition -Wtype-limits"
146a21493e0SBlue Swirlgcc_flags="-Wformat-security -Wformat-y2k -Winit-self -Wignored-qualifiers $gcc_flags"
1470b65b9e1SBlue Swirlgcc_flags="-Wmissing-include-dirs -Wempty-body -Wnested-externs $gcc_flags"
148a21493e0SBlue Swirlgcc_flags="-fstack-protector-all $gcc_flags"
149be17dc90SMichael S. Tsirkincat > $TMPC << EOF
150aa527b65SAurelien Jarnoint main(void) { return 0; }
151be17dc90SMichael S. TsirkinEOF
152be17dc90SMichael S. Tsirkinfor flag in $gcc_flags; do
153aa527b65SAurelien Jarno    if compile_prog "-Werror $QEMU_CFLAGS" "-Werror $flag" ; then
154be17dc90SMichael S. Tsirkin	QEMU_CFLAGS="$flag $QEMU_CFLAGS"
155be17dc90SMichael S. Tsirkin    fi
156be17dc90SMichael S. Tsirkindone
157be17dc90SMichael S. Tsirkin
158ac0df51dSaliguori# check that the C compiler works.
159ac0df51dSaliguoricat > $TMPC <<EOF
160ac0df51dSaliguoriint main(void) {}
161ac0df51dSaliguoriEOF
162ac0df51dSaliguori
16352166aa0SJuan Quintelaif compile_object ; then
164ac0df51dSaliguori  : C compiler works ok
165ac0df51dSaliguorielse
166ac0df51dSaliguori    echo "ERROR: \"$cc\" either does not exist or does not work"
167ac0df51dSaliguori    exit 1
168ac0df51dSaliguorifi
169ac0df51dSaliguori
170ac0df51dSaliguoricheck_define() {
171ac0df51dSaliguoricat > $TMPC <<EOF
172ac0df51dSaliguori#if !defined($1)
173ac0df51dSaliguori#error Not defined
174ac0df51dSaliguori#endif
175ac0df51dSaliguoriint main(void) { return 0; }
176ac0df51dSaliguoriEOF
17752166aa0SJuan Quintela  compile_object
178ac0df51dSaliguori}
179ac0df51dSaliguori
1802ff6b91eSJuan Quintelaif test ! -z "$cpu" ; then
1812ff6b91eSJuan Quintela  # command line argument
1822ff6b91eSJuan Quintela  :
1832ff6b91eSJuan Quintelaelif check_define __i386__ ; then
184ac0df51dSaliguori  cpu="i386"
185ac0df51dSaliguorielif check_define __x86_64__ ; then
186ac0df51dSaliguori  cpu="x86_64"
1873aa9bd6cSblueswir1elif check_define __sparc__ ; then
1883aa9bd6cSblueswir1  # We can't check for 64 bit (when gcc is biarch) or V8PLUSA
1893aa9bd6cSblueswir1  # They must be specified using --sparc_cpu
1903aa9bd6cSblueswir1  if check_define __arch64__ ; then
1913aa9bd6cSblueswir1    cpu="sparc64"
1923aa9bd6cSblueswir1  else
1933aa9bd6cSblueswir1    cpu="sparc"
1943aa9bd6cSblueswir1  fi
195fdf7ed96Smalcelif check_define _ARCH_PPC ; then
196fdf7ed96Smalc  if check_define _ARCH_PPC64 ; then
197fdf7ed96Smalc    cpu="ppc64"
198ac0df51dSaliguori  else
199fdf7ed96Smalc    cpu="ppc"
200fdf7ed96Smalc  fi
201afa05235SAurelien Jarnoelif check_define __mips__ ; then
202afa05235SAurelien Jarno  cpu="mips"
203477ba620SAurelien Jarnoelif check_define __ia64__ ; then
204477ba620SAurelien Jarno  cpu="ia64"
205d66ed0eaSAurelien Jarnoelif check_define __s390__ ; then
206d66ed0eaSAurelien Jarno  if check_define __s390x__ ; then
207d66ed0eaSAurelien Jarno    cpu="s390x"
208d66ed0eaSAurelien Jarno  else
209d66ed0eaSAurelien Jarno    cpu="s390"
210d66ed0eaSAurelien Jarno  fi
211fdf7ed96Smalcelse
212fdf7ed96Smalc  cpu=`uname -m`
213ac0df51dSaliguorifi
214ac0df51dSaliguori
2155327cf48Sbellardtarget_list=""
2167d13299dSbellardcase "$cpu" in
217afa05235SAurelien Jarno  alpha|cris|ia64|m68k|microblaze|ppc|ppc64|sparc64)
218ea8f20f8SJuan Quintela    cpu="$cpu"
219ea8f20f8SJuan Quintela  ;;
2207d13299dSbellard  i386|i486|i586|i686|i86pc|BePC)
22197a847bcSbellard    cpu="i386"
2227d13299dSbellard  ;;
223aaa5fa14Saurel32  x86_64|amd64)
224aaa5fa14Saurel32    cpu="x86_64"
225aaa5fa14Saurel32  ;;
226ba68055eSbellard  armv*b)
227808c4954Sbellard    cpu="armv4b"
228808c4954Sbellard  ;;
229ba68055eSbellard  armv*l)
2307d13299dSbellard    cpu="armv4l"
2317d13299dSbellard  ;;
232f54b3f92Saurel32  parisc|parisc64)
233f54b3f92Saurel32    cpu="hppa"
234f54b3f92Saurel32  ;;
235afa05235SAurelien Jarno  mips*)
236afa05235SAurelien Jarno    cpu="mips"
237afa05235SAurelien Jarno  ;;
23824e804ecSAlexander Graf  s390)
239fb3e5849Sbellard    cpu="s390"
240fb3e5849Sbellard  ;;
24124e804ecSAlexander Graf  s390x)
24224e804ecSAlexander Graf    cpu="s390x"
24324e804ecSAlexander Graf  ;;
2443142255cSblueswir1  sparc|sun4[cdmuv])
245ae228531Sbellard    cpu="sparc"
246ae228531Sbellard  ;;
2477d13299dSbellard  *)
248a447d4dcSPaolo Bonzini    echo "Unsupported CPU = $cpu"
249a447d4dcSPaolo Bonzini    exit 1
2507d13299dSbellard  ;;
2517d13299dSbellardesac
252e2d52ad3SJuan Quintela
2533a3fb96dSStefan Weil# Default value for a variable defining feature "foo".
2543a3fb96dSStefan Weil#  * foo="no"  feature will only be used if --enable-foo arg is given
2553a3fb96dSStefan Weil#  * foo=""    feature will be searched for, and if found, will be used
2563a3fb96dSStefan Weil#              unless --disable-foo is given
2573a3fb96dSStefan Weil#  * foo="yes" this value will only be set by --enable-foo flag.
2583a3fb96dSStefan Weil#              feature will searched for,
2593a3fb96dSStefan Weil#              if not found, configure exits with error
260e2d52ad3SJuan Quintela#
2613a3fb96dSStefan Weil# Always add --enable-foo and --disable-foo command line args.
2623a3fb96dSStefan Weil# Distributions want to ensure that several features are compiled in, and it
2633a3fb96dSStefan Weil# is impossible without a --enable-foo that exits if a feature is not found.
264e2d52ad3SJuan Quintela
265a20a6f46SJuan Quintelabluez=""
2664ffcedb6SJuan Quintelabrlapi=""
267788c8196SJuan Quintelacurl=""
268c584a6d0SJuan Quintelacurses=""
269a25dba17SJuan Quinteladocs=""
2702df87df7SJuan Quintelafdt=""
271b31a0277SJuan Quintelakvm=""
272dae5079aSJan Kiszkakvm_para=""
273b0a47e79SJuan Quintelanptl=""
274c4198157SJuan Quintelasdl=""
275dfffc653SJuan Quintelasparse="no"
276ee682d27SStefan Weiluuid=""
277dfb278bdSJuan Quintelavde=""
2781be10ad2SJuan Quintelavnc_tls=""
279ea784e3bSJuan Quintelavnc_sasl=""
2802f6f5c7aSCorentin Charyvnc_jpeg=""
281efe556adSCorentin Charyvnc_png=""
28296763cf9SCorentin Charyvnc_thread="no"
283fc321b4bSJuan Quintelaxen=""
2845c6c3a6cSChristoph Hellwiglinux_aio=""
285758e8e38SVenkateswararao Jujjuri (JV)attr=""
286d5970055SMichael S. Tsirkinvhost_net=""
287dfb278bdSJuan Quintela
2887d13299dSbellardgprof="no"
289f8393946Saurel32debug_tcg="no"
290b4475aa2SLuiz Capitulinodebug_mon="no"
291f3d08ee6SPaul Brookdebug="no"
2921625af87Saliguoristrip_opt="yes"
2937d13299dSbellardbigendian="no"
29467b915a5Sbellardmingw32="no"
29567b915a5SbellardEXESUF=""
296683035deSPaolo Bonziniprefix="/usr/local"
297683035deSPaolo Bonzinimandir="\${prefix}/share/man"
298683035deSPaolo Bonzinidatadir="\${prefix}/share/qemu"
299683035deSPaolo Bonzinidocdir="\${prefix}/share/doc/qemu"
300683035deSPaolo Bonzinibindir="\${prefix}/bin"
301683035deSPaolo Bonzinisysconfdir="\${prefix}/etc"
302683035deSPaolo Bonziniconfsuffix="/qemu"
303443f1376Sbellardslirp="yes"
304102a52e4Sbellardfmod_lib=""
305102a52e4Sbellardfmod_inc=""
3062f6a1ab0Sblueswir1oss_lib=""
307b1a550a0Spbrookbsd="no"
3085327cf48Sbellardlinux="no"
309d2c7c9b8Sblueswir1solaris="no"
31005c2a3e7Sbellardprofiler="no"
3115b0753e0Sbellardcocoa="no"
3120a8e90f4Spbrooksoftmmu="yes"
313831b7825Sthslinux_user="no"
314831b7825Sthsdarwin_user="no"
31584778508Sblueswir1bsd_user="no"
316379f6698SPaul Brookguest_base=""
317c5937220Spbrookuname_release=""
318e5d355d1Saliguoriio_thread="no"
3198ff9cbf7Smalcmixemu="no"
320eac30262Saliguorikerneldir=""
321b29fe3edSmalcaix="no"
322179cf400SAndreas Färberhaiku="no"
32377755340Sthsblobs="yes"
3244a19f1ecSpbrookpkgversion=""
3255495ed11SLuiz Capitulinocheck_utests="no"
32634005a00SKirill A. Shutemovuser_pie="no"
32720ff6c80SAnthony Liguorizero_malloc=""
32894a420b1SStefan Hajnoczitrace_backend="nop"
3299410b56cSPrerna Saxenatrace_file="trace"
3307d13299dSbellard
3317d13299dSbellard# OS specific
332ac0df51dSaliguoriif check_define __linux__ ; then
333ac0df51dSaliguori  targetos="Linux"
334ac0df51dSaliguorielif check_define _WIN32 ; then
335ac0df51dSaliguori  targetos='MINGW32'
336169dc5d3Sblueswir1elif check_define __OpenBSD__ ; then
337169dc5d3Sblueswir1  targetos='OpenBSD'
338169dc5d3Sblueswir1elif check_define __sun__ ; then
339169dc5d3Sblueswir1  targetos='SunOS'
340179cf400SAndreas Färberelif check_define __HAIKU__ ; then
341179cf400SAndreas Färber  targetos='Haiku'
342ac0df51dSaliguorielse
3437d13299dSbellard  targetos=`uname -s`
344ac0df51dSaliguorifi
3450dbfc675SJuan Quintela
3467d13299dSbellardcase $targetos in
347c326e0afSbellardCYGWIN*)
348c326e0afSbellard  mingw32="yes"
349a558ee17SJuan Quintela  QEMU_CFLAGS="-mno-cygwin $QEMU_CFLAGS"
350d5631638Smalc  audio_possible_drivers="winwave sdl"
351d5631638Smalc  audio_drv_list="winwave"
352c326e0afSbellard;;
35367b915a5SbellardMINGW32*)
35467b915a5Sbellard  mingw32="yes"
355d5631638Smalc  audio_possible_drivers="winwave dsound sdl fmod"
356d5631638Smalc  audio_drv_list="winwave"
35767b915a5Sbellard;;
3585c40d2bdSthsGNU/kFreeBSD)
359a167ba50SAurelien Jarno  bsd="yes"
3600c58ac1cSmalc  audio_drv_list="oss"
361f34af52cSaurel32  audio_possible_drivers="oss sdl esd pa"
3625c40d2bdSths;;
3637d3505c5SbellardFreeBSD)
3647d3505c5Sbellard  bsd="yes"
365a167ba50SAurelien Jarno  make="gmake"
3660c58ac1cSmalc  audio_drv_list="oss"
367f34af52cSaurel32  audio_possible_drivers="oss sdl esd pa"
368f01576f1SJuergen Lock  # needed for kinfo_getvmmap(3) in libutil.h
369f01576f1SJuergen Lock  LIBS="-lutil $LIBS"
3707d3505c5Sbellard;;
371c5e97233Sblueswir1DragonFly)
372c5e97233Sblueswir1  bsd="yes"
373a167ba50SAurelien Jarno  make="gmake"
374c5e97233Sblueswir1  audio_drv_list="oss"
375c5e97233Sblueswir1  audio_possible_drivers="oss sdl esd pa"
376c5e97233Sblueswir1;;
3777d3505c5SbellardNetBSD)
3787d3505c5Sbellard  bsd="yes"
379a167ba50SAurelien Jarno  make="gmake"
3800c58ac1cSmalc  audio_drv_list="oss"
381c2de5c91Smalc  audio_possible_drivers="oss sdl esd"
3828ef92a88Sblueswir1  oss_lib="-lossaudio"
3837d3505c5Sbellard;;
3847d3505c5SbellardOpenBSD)
3857d3505c5Sbellard  bsd="yes"
386a167ba50SAurelien Jarno  make="gmake"
3870c58ac1cSmalc  audio_drv_list="oss"
388c2de5c91Smalc  audio_possible_drivers="oss sdl esd"
3892f6a1ab0Sblueswir1  oss_lib="-lossaudio"
3907d3505c5Sbellard;;
39183fb7adfSbellardDarwin)
39283fb7adfSbellard  bsd="yes"
39383fb7adfSbellard  darwin="yes"
3940dbfc675SJuan Quintela  # on Leopard most of the system is 32-bit, so we have to ask the kernel it if we can
3950dbfc675SJuan Quintela  # run 64-bit userspace code
396aab8588aSmalc  if [ "$cpu" = "i386" ] ; then
3971b0f9cc2Saliguori    is_x86_64=`sysctl -n hw.optional.x86_64`
398aab8588aSmalc    [ "$is_x86_64" = "1" ] && cpu=x86_64
3991b0f9cc2Saliguori  fi
4001b0f9cc2Saliguori  if [ "$cpu" = "x86_64" ] ; then
401a558ee17SJuan Quintela    QEMU_CFLAGS="-arch x86_64 $QEMU_CFLAGS"
4020c439cbfSJuan Quintela    LDFLAGS="-arch x86_64 $LDFLAGS"
4031b0f9cc2Saliguori  else
404a558ee17SJuan Quintela    QEMU_CFLAGS="-mdynamic-no-pic $QEMU_CFLAGS"
4051b0f9cc2Saliguori  fi
406831b7825Sths  darwin_user="yes"
407fd677642Sths  cocoa="yes"
4080c58ac1cSmalc  audio_drv_list="coreaudio"
409c2de5c91Smalc  audio_possible_drivers="coreaudio sdl fmod"
4100c439cbfSJuan Quintela  LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS"
4117973f21cSJuan Quintela  libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu"
41283fb7adfSbellard;;
413ec530c81SbellardSunOS)
414ec530c81Sbellard  solaris="yes"
415c2b84fabSths  make="gmake"
416c2b84fabSths  install="ginstall"
417fa58948dSBlue Swirl  ld="gld"
4180475a5caSths  needs_libsunmath="no"
419c2b84fabSths  solarisrev=`uname -r | cut -f2 -d.`
420ef18c883Sths  # have to select again, because `uname -m` returns i86pc
421ef18c883Sths  # even on an x86_64 box.
422ef18c883Sths  solariscpu=`isainfo -k`
423ef18c883Sths  if test "${solariscpu}" = "amd64" ; then
424ef18c883Sths    cpu="x86_64"
425ef18c883Sths  fi
426c2b84fabSths  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
4270475a5caSths    if test "$solarisrev" -le 9 ; then
4280475a5caSths      if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
4290475a5caSths        needs_libsunmath="yes"
430f14bfdf9SJuan Quintela        QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS"
431f14bfdf9SJuan Quintela        LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS"
432f14bfdf9SJuan Quintela        LIBS="-lsunmath $LIBS"
4330475a5caSths      else
4340475a5caSths        echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
4350475a5caSths        echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
4360475a5caSths        echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
4370475a5caSths        echo "Studio 11 can be downloaded from www.sun.com."
4380475a5caSths        exit 1
4390475a5caSths      fi
4400475a5caSths    fi
44186b2bd93Sths  fi
4426b4d2ba1Sths  if test -f /usr/include/sys/soundcard.h ; then
4430c58ac1cSmalc    audio_drv_list="oss"
4446b4d2ba1Sths  fi
445c2de5c91Smalc  audio_possible_drivers="oss sdl"
446d741429aSBlue Swirl# needed for CMSG_ macros in sys/socket.h
447d741429aSBlue Swirl  QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS"
448d741429aSBlue Swirl# needed for TIOCWIN* defines in termios.h
449d741429aSBlue Swirl  QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS"
450a558ee17SJuan Quintela  QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS"
451e174c0bbSJuan Quintela  LIBS="-lsocket -lnsl -lresolv $LIBS"
452ec530c81Sbellard;;
453b29fe3edSmalcAIX)
454b29fe3edSmalc  aix="yes"
455b29fe3edSmalc  make="gmake"
456b29fe3edSmalc;;
457179cf400SAndreas FärberHaiku)
458179cf400SAndreas Färber  haiku="yes"
459179cf400SAndreas Färber  QEMU_CFLAGS="-DB_USE_POSITIVE_POSIX_ERRORS $QEMU_CFLAGS"
460179cf400SAndreas Färber  LIBS="-lposix_error_mapper -lnetwork $LIBS"
461179cf400SAndreas Färber;;
462fb065187Sbellard*)
4630c58ac1cSmalc  audio_drv_list="oss"
464b8e59f18Smalc  audio_possible_drivers="oss alsa sdl esd pa"
4655327cf48Sbellard  linux="yes"
466831b7825Sths  linux_user="yes"
46768063649Sblueswir1  usb="linux"
46807f4ddbfSbellard  if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
469c2de5c91Smalc    audio_possible_drivers="$audio_possible_drivers fmod"
470c9ec1fe4Sbellard  fi
471fb065187Sbellard;;
4727d13299dSbellardesac
4737d13299dSbellard
4747d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
475b1a550a0Spbrook  if [ "$darwin" != "yes" ] ; then
47668063649Sblueswir1    usb="bsd"
47783fb7adfSbellard  fi
47884778508Sblueswir1  bsd_user="yes"
4797d3505c5Sbellardfi
4807d3505c5Sbellard
4813457a3f8SJuan Quintelaif test "$mingw32" = "yes" ; then
4823457a3f8SJuan Quintela  EXESUF=".exe"
483a558ee17SJuan Quintela  QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS"
484e94a7936SStefan Weil  # enable C99/POSIX format strings (needs mingw32-runtime 3.15 or later)
485e94a7936SStefan Weil  QEMU_CFLAGS="-D__USE_MINGW_ANSI_STDIO=1 $QEMU_CFLAGS"
486884044aaSJuan Quintela  LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS"
487683035deSPaolo Bonzini  prefix="c:/Program Files/Qemu"
488683035deSPaolo Bonzini  mandir="\${prefix}"
489683035deSPaolo Bonzini  datadir="\${prefix}"
490683035deSPaolo Bonzini  docdir="\${prefix}"
491683035deSPaolo Bonzini  bindir="\${prefix}"
492683035deSPaolo Bonzini  sysconfdir="\${prefix}"
493683035deSPaolo Bonzini  confsuffix=""
4943457a3f8SJuan Quintelafi
4953457a3f8SJuan Quintela
4967d13299dSbellard# find source path
497ad064840Spbrooksource_path=`dirname "$0"`
49859faef3aSbalrogsource_path_used="no"
49959faef3aSbalrogworkdir=`pwd`
500ad064840Spbrookif [ -z "$source_path" ]; then
50159faef3aSbalrog    source_path=$workdir
502ad064840Spbrookelse
503ad064840Spbrook    source_path=`cd "$source_path"; pwd`
5047d13299dSbellardfi
505724db118Spbrook[ -f "$workdir/vl.c" ] || source_path_used="yes"
5067d13299dSbellard
507487fefdbSAnthony Liguoriwerror=""
50885aa5189Sbellard
5097d13299dSbellardfor opt do
510a46e4035Spbrook  optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
5117d13299dSbellard  case "$opt" in
5122efc3265Sbellard  --help|-h) show_help=yes
5132efc3265Sbellard  ;;
514b1a550a0Spbrook  --prefix=*) prefix="$optarg"
5157d13299dSbellard  ;;
516b1a550a0Spbrook  --interp-prefix=*) interp_prefix="$optarg"
51732ce6337Sbellard  ;;
518b1a550a0Spbrook  --source-path=*) source_path="$optarg"
519ad064840Spbrook  source_path_used="yes"
5207d13299dSbellard  ;;
521ac0df51dSaliguori  --cross-prefix=*)
5227d13299dSbellard  ;;
523ac0df51dSaliguori  --cc=*)
5247d13299dSbellard  ;;
525b1a550a0Spbrook  --host-cc=*) host_cc="$optarg"
52683469015Sbellard  ;;
527b1a550a0Spbrook  --make=*) make="$optarg"
5287d13299dSbellard  ;;
5296a882643Spbrook  --install=*) install="$optarg"
5306a882643Spbrook  ;;
531e2a2ed06SJuan Quintela  --extra-cflags=*)
5327d13299dSbellard  ;;
533e2a2ed06SJuan Quintela  --extra-ldflags=*)
5347d13299dSbellard  ;;
5352ff6b91eSJuan Quintela  --cpu=*)
5367d13299dSbellard  ;;
537b1a550a0Spbrook  --target-list=*) target_list="$optarg"
538de83cd02Sbellard  ;;
53994a420b1SStefan Hajnoczi  --trace-backend=*) trace_backend="$optarg"
54094a420b1SStefan Hajnoczi  ;;
5419410b56cSPrerna Saxena  --trace-file=*) trace_file="$optarg"
5429410b56cSPrerna Saxena  ;;
5437d13299dSbellard  --enable-gprof) gprof="yes"
5447d13299dSbellard  ;;
54579427693SLoïc Minier  --static)
54679427693SLoïc Minier    static="yes"
54779427693SLoïc Minier    LDFLAGS="-static $LDFLAGS"
54843ce4dfeSbellard  ;;
5490b24e75fSPaolo Bonzini  --mandir=*) mandir="$optarg"
5500b24e75fSPaolo Bonzini  ;;
5510b24e75fSPaolo Bonzini  --bindir=*) bindir="$optarg"
5520b24e75fSPaolo Bonzini  ;;
5530b24e75fSPaolo Bonzini  --datadir=*) datadir="$optarg"
5540b24e75fSPaolo Bonzini  ;;
5550b24e75fSPaolo Bonzini  --docdir=*) docdir="$optarg"
5560b24e75fSPaolo Bonzini  ;;
557ca2fb938SAndre Przywara  --sysconfdir=*) sysconfdir="$optarg"
55807381cc1SAnthony Liguori  ;;
55997a847bcSbellard  --disable-sdl) sdl="no"
56097a847bcSbellard  ;;
561c4198157SJuan Quintela  --enable-sdl) sdl="yes"
562c4198157SJuan Quintela  ;;
563b1a550a0Spbrook  --fmod-lib=*) fmod_lib="$optarg"
564102a52e4Sbellard  ;;
565c2de5c91Smalc  --fmod-inc=*) fmod_inc="$optarg"
566c2de5c91Smalc  ;;
5672f6a1ab0Sblueswir1  --oss-lib=*) oss_lib="$optarg"
5682f6a1ab0Sblueswir1  ;;
5692fa7d3bfSmalc  --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
5700c58ac1cSmalc  ;;
5710c58ac1cSmalc  --audio-drv-list=*) audio_drv_list="$optarg"
5720c58ac1cSmalc  ;;
573eb852011SMarkus Armbruster  --block-drv-whitelist=*) block_drv_whitelist=`echo "$optarg" | sed -e 's/,/ /g'`
574eb852011SMarkus Armbruster  ;;
575f8393946Saurel32  --enable-debug-tcg) debug_tcg="yes"
576f8393946Saurel32  ;;
577f8393946Saurel32  --disable-debug-tcg) debug_tcg="no"
578f8393946Saurel32  ;;
579b4475aa2SLuiz Capitulino  --enable-debug-mon) debug_mon="yes"
580b4475aa2SLuiz Capitulino  ;;
581b4475aa2SLuiz Capitulino  --disable-debug-mon) debug_mon="no"
582b4475aa2SLuiz Capitulino  ;;
583f3d08ee6SPaul Brook  --enable-debug)
584f3d08ee6SPaul Brook      # Enable debugging options that aren't excessively noisy
585f3d08ee6SPaul Brook      debug_tcg="yes"
586b4475aa2SLuiz Capitulino      debug_mon="yes"
587f3d08ee6SPaul Brook      debug="yes"
588f3d08ee6SPaul Brook      strip_opt="no"
589f3d08ee6SPaul Brook  ;;
59003b4fe7dSaliguori  --enable-sparse) sparse="yes"
59103b4fe7dSaliguori  ;;
59203b4fe7dSaliguori  --disable-sparse) sparse="no"
59303b4fe7dSaliguori  ;;
5941625af87Saliguori  --disable-strip) strip_opt="no"
5951625af87Saliguori  ;;
5968d5d2d4cSths  --disable-vnc-tls) vnc_tls="no"
5978d5d2d4cSths  ;;
5981be10ad2SJuan Quintela  --enable-vnc-tls) vnc_tls="yes"
5991be10ad2SJuan Quintela  ;;
6002f9606b3Saliguori  --disable-vnc-sasl) vnc_sasl="no"
6012f9606b3Saliguori  ;;
602ea784e3bSJuan Quintela  --enable-vnc-sasl) vnc_sasl="yes"
603ea784e3bSJuan Quintela  ;;
6042f6f5c7aSCorentin Chary  --disable-vnc-jpeg) vnc_jpeg="no"
6052f6f5c7aSCorentin Chary  ;;
6062f6f5c7aSCorentin Chary  --enable-vnc-jpeg) vnc_jpeg="yes"
6072f6f5c7aSCorentin Chary  ;;
608efe556adSCorentin Chary  --disable-vnc-png) vnc_png="no"
609efe556adSCorentin Chary  ;;
610efe556adSCorentin Chary  --enable-vnc-png) vnc_png="yes"
611efe556adSCorentin Chary  ;;
612bd023f95SCorentin Chary  --disable-vnc-thread) vnc_thread="no"
613bd023f95SCorentin Chary  ;;
614bd023f95SCorentin Chary  --enable-vnc-thread) vnc_thread="yes"
615bd023f95SCorentin Chary  ;;
616443f1376Sbellard  --disable-slirp) slirp="no"
617c20709aaSbellard  ;;
618ee682d27SStefan Weil  --disable-uuid) uuid="no"
619ee682d27SStefan Weil  ;;
620ee682d27SStefan Weil  --enable-uuid) uuid="yes"
621ee682d27SStefan Weil  ;;
622e0e6c8c0Saliguori  --disable-vde) vde="no"
6238a16d273Sths  ;;
624dfb278bdSJuan Quintela  --enable-vde) vde="yes"
625dfb278bdSJuan Quintela  ;;
626e37630caSaliguori  --disable-xen) xen="no"
627e37630caSaliguori  ;;
628fc321b4bSJuan Quintela  --enable-xen) xen="yes"
629fc321b4bSJuan Quintela  ;;
6302e4d9fb1Saurel32  --disable-brlapi) brlapi="no"
6312e4d9fb1Saurel32  ;;
6324ffcedb6SJuan Quintela  --enable-brlapi) brlapi="yes"
6334ffcedb6SJuan Quintela  ;;
634fb599c9aSbalrog  --disable-bluez) bluez="no"
635fb599c9aSbalrog  ;;
636a20a6f46SJuan Quintela  --enable-bluez) bluez="yes"
637a20a6f46SJuan Quintela  ;;
6387ba1e619Saliguori  --disable-kvm) kvm="no"
6397ba1e619Saliguori  ;;
640b31a0277SJuan Quintela  --enable-kvm) kvm="yes"
641b31a0277SJuan Quintela  ;;
64205c2a3e7Sbellard  --enable-profiler) profiler="yes"
64305c2a3e7Sbellard  ;;
644c2de5c91Smalc  --enable-cocoa)
645c2de5c91Smalc      cocoa="yes" ;
646c2de5c91Smalc      sdl="no" ;
647c2de5c91Smalc      audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
6485b0753e0Sbellard  ;;
649cad25d69Spbrook  --disable-system) softmmu="no"
6500a8e90f4Spbrook  ;;
651cad25d69Spbrook  --enable-system) softmmu="yes"
6520a8e90f4Spbrook  ;;
6530953a80fSZachary Amsden  --disable-user)
6540953a80fSZachary Amsden      linux_user="no" ;
6550953a80fSZachary Amsden      bsd_user="no" ;
6560953a80fSZachary Amsden      darwin_user="no"
6570953a80fSZachary Amsden  ;;
6580953a80fSZachary Amsden  --enable-user) ;;
659831b7825Sths  --disable-linux-user) linux_user="no"
6600a8e90f4Spbrook  ;;
661831b7825Sths  --enable-linux-user) linux_user="yes"
662831b7825Sths  ;;
663831b7825Sths  --disable-darwin-user) darwin_user="no"
664831b7825Sths  ;;
665831b7825Sths  --enable-darwin-user) darwin_user="yes"
6660a8e90f4Spbrook  ;;
66784778508Sblueswir1  --disable-bsd-user) bsd_user="no"
66884778508Sblueswir1  ;;
66984778508Sblueswir1  --enable-bsd-user) bsd_user="yes"
67084778508Sblueswir1  ;;
671379f6698SPaul Brook  --enable-guest-base) guest_base="yes"
672379f6698SPaul Brook  ;;
673379f6698SPaul Brook  --disable-guest-base) guest_base="no"
674379f6698SPaul Brook  ;;
67534005a00SKirill A. Shutemov  --enable-user-pie) user_pie="yes"
67634005a00SKirill A. Shutemov  ;;
67734005a00SKirill A. Shutemov  --disable-user-pie) user_pie="no"
67834005a00SKirill A. Shutemov  ;;
679c5937220Spbrook  --enable-uname-release=*) uname_release="$optarg"
680c5937220Spbrook  ;;
6813142255cSblueswir1  --sparc_cpu=*)
6823142255cSblueswir1  ;;
68385aa5189Sbellard  --enable-werror) werror="yes"
68485aa5189Sbellard  ;;
68585aa5189Sbellard  --disable-werror) werror="no"
68685aa5189Sbellard  ;;
6874d3b6f6eSbalrog  --disable-curses) curses="no"
6884d3b6f6eSbalrog  ;;
689c584a6d0SJuan Quintela  --enable-curses) curses="yes"
690c584a6d0SJuan Quintela  ;;
691769ce76dSAlexander Graf  --disable-curl) curl="no"
692769ce76dSAlexander Graf  ;;
693788c8196SJuan Quintela  --enable-curl) curl="yes"
694788c8196SJuan Quintela  ;;
6952df87df7SJuan Quintela  --disable-fdt) fdt="no"
6962df87df7SJuan Quintela  ;;
6972df87df7SJuan Quintela  --enable-fdt) fdt="yes"
6982df87df7SJuan Quintela  ;;
6995495ed11SLuiz Capitulino  --disable-check-utests) check_utests="no"
7005495ed11SLuiz Capitulino  ;;
7015495ed11SLuiz Capitulino  --enable-check-utests) check_utests="yes"
7025495ed11SLuiz Capitulino  ;;
703bd0c5661Spbrook  --disable-nptl) nptl="no"
704bd0c5661Spbrook  ;;
705b0a47e79SJuan Quintela  --enable-nptl) nptl="yes"
706b0a47e79SJuan Quintela  ;;
7078ff9cbf7Smalc  --enable-mixemu) mixemu="yes"
7088ff9cbf7Smalc  ;;
7095c6c3a6cSChristoph Hellwig  --disable-linux-aio) linux_aio="no"
7105c6c3a6cSChristoph Hellwig  ;;
7115c6c3a6cSChristoph Hellwig  --enable-linux-aio) linux_aio="yes"
7125c6c3a6cSChristoph Hellwig  ;;
713758e8e38SVenkateswararao Jujjuri (JV)  --disable-attr) attr="no"
714758e8e38SVenkateswararao Jujjuri (JV)  ;;
715758e8e38SVenkateswararao Jujjuri (JV)  --enable-attr) attr="yes"
716758e8e38SVenkateswararao Jujjuri (JV)  ;;
717e5d355d1Saliguori  --enable-io-thread) io_thread="yes"
718e5d355d1Saliguori  ;;
71977755340Sths  --disable-blobs) blobs="no"
72077755340Sths  ;;
721eac30262Saliguori  --kerneldir=*) kerneldir="$optarg"
722eac30262Saliguori  ;;
7234a19f1ecSpbrook  --with-pkgversion=*) pkgversion=" ($optarg)"
7244a19f1ecSpbrook  ;;
725a25dba17SJuan Quintela  --disable-docs) docs="no"
72670ec5dc0SAnthony Liguori  ;;
727a25dba17SJuan Quintela  --enable-docs) docs="yes"
72883a3ab8bSJuan Quintela  ;;
729d5970055SMichael S. Tsirkin  --disable-vhost-net) vhost_net="no"
730d5970055SMichael S. Tsirkin  ;;
731d5970055SMichael S. Tsirkin  --enable-vhost-net) vhost_net="yes"
732d5970055SMichael S. Tsirkin  ;;
7336bde81cbSPaolo Bonzini  --*dir)
7346bde81cbSPaolo Bonzini  ;;
7357f1559c6Sbalrog  *) echo "ERROR: unknown option $opt"; show_help="yes"
7367f1559c6Sbalrog  ;;
7377d13299dSbellard  esac
7387d13299dSbellarddone
7397d13299dSbellard
7403142255cSblueswir1#
7413142255cSblueswir1# If cpu ~= sparc and  sparc_cpu hasn't been defined, plug in the right
742a558ee17SJuan Quintela# QEMU_CFLAGS/LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
7433142255cSblueswir1#
744379f6698SPaul Brookhost_guest_base="no"
74540293e58Sbellardcase "$cpu" in
746ed968ff1SJuan Quintela    sparc) case $sparc_cpu in
747ed968ff1SJuan Quintela           v7|v8)
748a558ee17SJuan Quintela             QEMU_CFLAGS="-mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
749ed968ff1SJuan Quintela           ;;
750ed968ff1SJuan Quintela           v8plus|v8plusa)
751a558ee17SJuan Quintela             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_${sparc_cpu}__ $QEMU_CFLAGS"
752ed968ff1SJuan Quintela           ;;
753ed968ff1SJuan Quintela           *) # sparc_cpu not defined in the command line
754a558ee17SJuan Quintela             QEMU_CFLAGS="-mcpu=ultrasparc -D__sparc_v8plus__ $QEMU_CFLAGS"
755ed968ff1SJuan Quintela           esac
7560c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
757a558ee17SJuan Quintela           QEMU_CFLAGS="-m32 -ffixed-g2 -ffixed-g3 $QEMU_CFLAGS"
758762e8230Sblueswir1           if test "$solaris" = "no" ; then
759a558ee17SJuan Quintela             QEMU_CFLAGS="-ffixed-g1 -ffixed-g6 $QEMU_CFLAGS"
760c81da56eSJuan Quintela             helper_cflags="-ffixed-i0"
761762e8230Sblueswir1           fi
7623142255cSblueswir1           ;;
763ed968ff1SJuan Quintela    sparc64)
764a558ee17SJuan Quintela           QEMU_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__ $QEMU_CFLAGS"
7650c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
766a558ee17SJuan Quintela           QEMU_CFLAGS="-ffixed-g5 -ffixed-g6 -ffixed-g7 $QEMU_CFLAGS"
767ed968ff1SJuan Quintela           if test "$solaris" != "no" ; then
768a558ee17SJuan Quintela             QEMU_CFLAGS="-ffixed-g1 $QEMU_CFLAGS"
769762e8230Sblueswir1           fi
7703142255cSblueswir1           ;;
77176d83bdeSths    s390)
77228d7cc49SRichard Henderson           QEMU_CFLAGS="-m31 -march=z990 $QEMU_CFLAGS"
77328d7cc49SRichard Henderson           LDFLAGS="-m31 $LDFLAGS"
77448bb3750SRichard Henderson           host_guest_base="yes"
77528d7cc49SRichard Henderson           ;;
77628d7cc49SRichard Henderson    s390x)
77728d7cc49SRichard Henderson           QEMU_CFLAGS="-m64 -march=z990 $QEMU_CFLAGS"
77828d7cc49SRichard Henderson           LDFLAGS="-m64 $LDFLAGS"
77948bb3750SRichard Henderson           host_guest_base="yes"
78076d83bdeSths           ;;
78140293e58Sbellard    i386)
782a558ee17SJuan Quintela           QEMU_CFLAGS="-m32 $QEMU_CFLAGS"
7830c439cbfSJuan Quintela           LDFLAGS="-m32 $LDFLAGS"
784c81da56eSJuan Quintela           helper_cflags="-fomit-frame-pointer"
785379f6698SPaul Brook           host_guest_base="yes"
78640293e58Sbellard           ;;
78740293e58Sbellard    x86_64)
788a558ee17SJuan Quintela           QEMU_CFLAGS="-m64 $QEMU_CFLAGS"
7890c439cbfSJuan Quintela           LDFLAGS="-m64 $LDFLAGS"
790379f6698SPaul Brook           host_guest_base="yes"
791379f6698SPaul Brook           ;;
792379f6698SPaul Brook    arm*)
793379f6698SPaul Brook           host_guest_base="yes"
79440293e58Sbellard           ;;
795f6548c0aSmalc    ppc*)
796f6548c0aSmalc           host_guest_base="yes"
797f6548c0aSmalc           ;;
798cc01cc8eSAurelien Jarno    mips*)
799cc01cc8eSAurelien Jarno           host_guest_base="yes"
800cc01cc8eSAurelien Jarno           ;;
801477ba620SAurelien Jarno    ia64*)
802477ba620SAurelien Jarno           host_guest_base="yes"
803477ba620SAurelien Jarno           ;;
804fd76e73aSRichard Henderson    hppa*)
805fd76e73aSRichard Henderson           host_guest_base="yes"
806fd76e73aSRichard Henderson           ;;
8073142255cSblueswir1esac
8083142255cSblueswir1
809379f6698SPaul Brook[ -z "$guest_base" ] && guest_base="$host_guest_base"
810379f6698SPaul Brook
811af5db58eSpbrookif test x"$show_help" = x"yes" ; then
812af5db58eSpbrookcat << EOF
813af5db58eSpbrook
814af5db58eSpbrookUsage: configure [options]
815af5db58eSpbrookOptions: [defaults in brackets after descriptions]
816af5db58eSpbrook
817af5db58eSpbrookEOF
818af5db58eSpbrookecho "Standard options:"
819af5db58eSpbrookecho "  --help                   print this message"
820af5db58eSpbrookecho "  --prefix=PREFIX          install in PREFIX [$prefix]"
821af5db58eSpbrookecho "  --interp-prefix=PREFIX   where to find shared libraries, etc."
822af5db58eSpbrookecho "                           use %M for cpu name [$interp_prefix]"
823af5db58eSpbrookecho "  --target-list=LIST       set target list [$target_list]"
824af5db58eSpbrookecho ""
825af5db58eSpbrookecho "Advanced options (experts only):"
826af5db58eSpbrookecho "  --source-path=PATH       path of source code [$source_path]"
827af5db58eSpbrookecho "  --cross-prefix=PREFIX    use PREFIX for compile tools [$cross_prefix]"
828af5db58eSpbrookecho "  --cc=CC                  use C compiler CC [$cc]"
8290bfe8cc0SPaolo Bonziniecho "  --host-cc=CC             use C compiler CC [$host_cc] for code run at"
8300bfe8cc0SPaolo Bonziniecho "                           build time"
831a558ee17SJuan Quintelaecho "  --extra-cflags=CFLAGS    append extra C compiler flags QEMU_CFLAGS"
832e3fc14c3SJan Kiszkaecho "  --extra-ldflags=LDFLAGS  append extra linker flags LDFLAGS"
833af5db58eSpbrookecho "  --make=MAKE              use specified make [$make]"
8346a882643Spbrookecho "  --install=INSTALL        use specified install [$install]"
835af5db58eSpbrookecho "  --static                 enable static build [$static]"
8360b24e75fSPaolo Bonziniecho "  --mandir=PATH            install man pages in PATH"
8370b24e75fSPaolo Bonziniecho "  --datadir=PATH           install firmware in PATH"
8380b24e75fSPaolo Bonziniecho "  --docdir=PATH            install documentation in PATH"
8390b24e75fSPaolo Bonziniecho "  --bindir=PATH            install binaries in PATH"
8400b24e75fSPaolo Bonziniecho "  --sysconfdir=PATH        install config in PATH/qemu"
841f8393946Saurel32echo "  --enable-debug-tcg       enable TCG debugging"
842f8393946Saurel32echo "  --disable-debug-tcg      disable TCG debugging (default)"
84309695a4aSStefan Weilecho "  --enable-debug           enable common debug build options"
844890b1658Saliguoriecho "  --enable-sparse          enable sparse checker"
845890b1658Saliguoriecho "  --disable-sparse         disable sparse checker (default)"
8461625af87Saliguoriecho "  --disable-strip          disable stripping binaries"
84785aa5189Sbellardecho "  --disable-werror         disable compilation abort on warning"
848fe8f78e4Sbalrogecho "  --disable-sdl            disable SDL"
849c4198157SJuan Quintelaecho "  --enable-sdl             enable SDL"
850af5db58eSpbrookecho "  --enable-cocoa           enable COCOA (Mac OS X only)"
851c2de5c91Smalcecho "  --audio-drv-list=LIST    set audio drivers list:"
852c2de5c91Smalcecho "                           Available drivers: $audio_possible_drivers"
8534c9b53e3Smalcecho "  --audio-card-list=LIST   set list of emulated audio cards [$audio_card_list]"
8544c9b53e3Smalcecho "                           Available cards: $audio_possible_cards"
855eb852011SMarkus Armbrusterecho "  --block-drv-whitelist=L  set block driver whitelist"
856eb852011SMarkus Armbrusterecho "                           (affects only QEMU, not qemu-img)"
8578ff9cbf7Smalcecho "  --enable-mixemu          enable mixer emulation"
858e37630caSaliguoriecho "  --disable-xen            disable xen backend driver support"
859fc321b4bSJuan Quintelaecho "  --enable-xen             enable xen backend driver support"
8602e4d9fb1Saurel32echo "  --disable-brlapi         disable BrlAPI"
8614ffcedb6SJuan Quintelaecho "  --enable-brlapi          enable BrlAPI"
8628d5d2d4cSthsecho "  --disable-vnc-tls        disable TLS encryption for VNC server"
8631be10ad2SJuan Quintelaecho "  --enable-vnc-tls         enable TLS encryption for VNC server"
8642f9606b3Saliguoriecho "  --disable-vnc-sasl       disable SASL encryption for VNC server"
865ea784e3bSJuan Quintelaecho "  --enable-vnc-sasl        enable SASL encryption for VNC server"
8662f6f5c7aSCorentin Charyecho "  --disable-vnc-jpeg       disable JPEG lossy compression for VNC server"
8672f6f5c7aSCorentin Charyecho "  --enable-vnc-jpeg        enable JPEG lossy compression for VNC server"
86896763cf9SCorentin Charyecho "  --disable-vnc-png        disable PNG compression for VNC server (default)"
869efe556adSCorentin Charyecho "  --enable-vnc-png         enable PNG compression for VNC server"
870bd023f95SCorentin Charyecho "  --disable-vnc-thread     disable threaded VNC server"
871bd023f95SCorentin Charyecho "  --enable-vnc-thread      enable threaded VNC server"
872af896aaaSpbrookecho "  --disable-curses         disable curses output"
873c584a6d0SJuan Quintelaecho "  --enable-curses          enable curses output"
874769ce76dSAlexander Grafecho "  --disable-curl           disable curl connectivity"
875788c8196SJuan Quintelaecho "  --enable-curl            enable curl connectivity"
8762df87df7SJuan Quintelaecho "  --disable-fdt            disable fdt device tree"
8772df87df7SJuan Quintelaecho "  --enable-fdt             enable fdt device tree"
8785495ed11SLuiz Capitulinoecho "  --disable-check-utests   disable check unit-tests"
8795495ed11SLuiz Capitulinoecho "  --enable-check-utests    enable check unit-tests"
880fb599c9aSbalrogecho "  --disable-bluez          disable bluez stack connectivity"
881a20a6f46SJuan Quintelaecho "  --enable-bluez           enable bluez stack connectivity"
8827ba1e619Saliguoriecho "  --disable-kvm            disable KVM acceleration support"
883b31a0277SJuan Quintelaecho "  --enable-kvm             enable KVM acceleration support"
884bd0c5661Spbrookecho "  --disable-nptl           disable usermode NPTL support"
885e5934d33SAndre Przywaraecho "  --enable-nptl            enable usermode NPTL support"
886af5db58eSpbrookecho "  --enable-system          enable all system emulation targets"
887af5db58eSpbrookecho "  --disable-system         disable all system emulation targets"
8880953a80fSZachary Amsdenecho "  --enable-user            enable supported user emulation targets"
8890953a80fSZachary Amsdenecho "  --disable-user           disable all user emulation targets"
890831b7825Sthsecho "  --enable-linux-user      enable all linux usermode emulation targets"
891831b7825Sthsecho "  --disable-linux-user     disable all linux usermode emulation targets"
892831b7825Sthsecho "  --enable-darwin-user     enable all darwin usermode emulation targets"
893831b7825Sthsecho "  --disable-darwin-user    disable all darwin usermode emulation targets"
89484778508Sblueswir1echo "  --enable-bsd-user        enable all BSD usermode emulation targets"
89584778508Sblueswir1echo "  --disable-bsd-user       disable all BSD usermode emulation targets"
896379f6698SPaul Brookecho "  --enable-guest-base      enable GUEST_BASE support for usermode"
897379f6698SPaul Brookecho "                           emulation targets"
898379f6698SPaul Brookecho "  --disable-guest-base     disable GUEST_BASE support"
89934005a00SKirill A. Shutemovecho "  --enable-user-pie        build usermode emulation targets as PIE"
90034005a00SKirill A. Shutemovecho "  --disable-user-pie       do not build usermode emulation targets as PIE"
901af5db58eSpbrookecho "  --fmod-lib               path to FMOD library"
902af5db58eSpbrookecho "  --fmod-inc               path to FMOD includes"
9032f6a1ab0Sblueswir1echo "  --oss-lib                path to OSS library"
904c5937220Spbrookecho "  --enable-uname-release=R Return R for uname -r in usermode emulation"
9053142255cSblueswir1echo "  --sparc_cpu=V            Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
906ee682d27SStefan Weilecho "  --disable-uuid           disable uuid support"
907ee682d27SStefan Weilecho "  --enable-uuid            enable uuid support"
908e0e6c8c0Saliguoriecho "  --disable-vde            disable support for vde network"
909dfb278bdSJuan Quintelaecho "  --enable-vde             enable support for vde network"
9105c6c3a6cSChristoph Hellwigecho "  --disable-linux-aio      disable Linux AIO support"
9115c6c3a6cSChristoph Hellwigecho "  --enable-linux-aio       enable Linux AIO support"
912758e8e38SVenkateswararao Jujjuri (JV)echo "  --disable-attr           disables attr and xattr support"
913758e8e38SVenkateswararao Jujjuri (JV)echo "  --enable-attr            enable attr and xattr support"
914e5d355d1Saliguoriecho "  --enable-io-thread       enable IO thread"
91577755340Sthsecho "  --disable-blobs          disable installing provided firmware blobs"
916eac30262Saliguoriecho "  --kerneldir=PATH         look for kernel includes in PATH"
917d2807bc9SDirk Ullrichecho "  --enable-docs            enable documentation build"
918d2807bc9SDirk Ullrichecho "  --disable-docs           disable documentation build"
919d5970055SMichael S. Tsirkinecho "  --disable-vhost-net      disable vhost-net acceleration support"
920d5970055SMichael S. Tsirkinecho "  --enable-vhost-net       enable vhost-net acceleration support"
9217e24e92aSStefan Hajnocziecho "  --trace-backend=B        Trace backend nop simple ust"
9229410b56cSPrerna Saxenaecho "  --trace-file=NAME        Full PATH,NAME of file to store traces"
9239410b56cSPrerna Saxenaecho "                           Default:trace-<pid>"
924af5db58eSpbrookecho ""
9255bf08934Sthsecho "NOTE: The object files are built at the place where configure is launched"
926af5db58eSpbrookexit 1
927af5db58eSpbrookfi
928af5db58eSpbrook
929ec530c81Sbellard#
930ec530c81Sbellard# Solaris specific configure tool chain decisions
931ec530c81Sbellard#
932ec530c81Sbellardif test "$solaris" = "yes" ; then
9336792aa11SLoïc Minier  if has $install; then
9346792aa11SLoïc Minier    :
9356792aa11SLoïc Minier  else
936ec530c81Sbellard    echo "Solaris install program not found. Use --install=/usr/ucb/install or"
937ec530c81Sbellard    echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
938ec530c81Sbellard    echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
939ec530c81Sbellard    exit 1
940ec530c81Sbellard  fi
9416792aa11SLoïc Minier  if test "`path_of $install`" = "/usr/sbin/install" ; then
942ec530c81Sbellard    echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
943ec530c81Sbellard    echo "try ginstall from the GNU fileutils available from www.blastwave.org"
944ec530c81Sbellard    echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
945ec530c81Sbellard    exit 1
946ec530c81Sbellard  fi
9476792aa11SLoïc Minier  if has ar; then
9486792aa11SLoïc Minier    :
9496792aa11SLoïc Minier  else
950ec530c81Sbellard    echo "Error: No path includes ar"
951ec530c81Sbellard    if test -f /usr/ccs/bin/ar ; then
952ec530c81Sbellard      echo "Add /usr/ccs/bin to your path and rerun configure"
953ec530c81Sbellard    fi
954ec530c81Sbellard    exit 1
955ec530c81Sbellard  fi
956ec530c81Sbellardfi
957ec530c81Sbellard
958ec530c81Sbellard
9595327cf48Sbellardif test -z "$target_list" ; then
9605327cf48Sbellard# these targets are portable
9610a8e90f4Spbrook    if [ "$softmmu" = "yes" ] ; then
9622408a527Saurel32        target_list="\
9632408a527Saurel32i386-softmmu \
9642408a527Saurel32x86_64-softmmu \
9652408a527Saurel32arm-softmmu \
9662408a527Saurel32cris-softmmu \
9672408a527Saurel32m68k-softmmu \
96872b675caSEdgar E. Iglesiasmicroblaze-softmmu \
9692408a527Saurel32mips-softmmu \
9702408a527Saurel32mipsel-softmmu \
9712408a527Saurel32mips64-softmmu \
9722408a527Saurel32mips64el-softmmu \
9732408a527Saurel32ppc-softmmu \
9742408a527Saurel32ppcemb-softmmu \
9752408a527Saurel32ppc64-softmmu \
9762408a527Saurel32sh4-softmmu \
9772408a527Saurel32sh4eb-softmmu \
9782408a527Saurel32sparc-softmmu \
9791b64fcaeSIgor V. Kovalenkosparc64-softmmu \
9802408a527Saurel32"
9810a8e90f4Spbrook    fi
9825327cf48Sbellard# the following are Linux specific
983831b7825Sths    if [ "$linux_user" = "yes" ] ; then
9842408a527Saurel32        target_list="${target_list}\
9852408a527Saurel32i386-linux-user \
9862408a527Saurel32x86_64-linux-user \
9872408a527Saurel32alpha-linux-user \
9882408a527Saurel32arm-linux-user \
9892408a527Saurel32armeb-linux-user \
9902408a527Saurel32cris-linux-user \
9912408a527Saurel32m68k-linux-user \
99272b675caSEdgar E. Iglesiasmicroblaze-linux-user \
9932408a527Saurel32mips-linux-user \
9942408a527Saurel32mipsel-linux-user \
9952408a527Saurel32ppc-linux-user \
9962408a527Saurel32ppc64-linux-user \
9972408a527Saurel32ppc64abi32-linux-user \
9982408a527Saurel32sh4-linux-user \
9992408a527Saurel32sh4eb-linux-user \
10002408a527Saurel32sparc-linux-user \
10012408a527Saurel32sparc64-linux-user \
10022408a527Saurel32sparc32plus-linux-user \
10032408a527Saurel32"
1004831b7825Sths    fi
1005831b7825Sths# the following are Darwin specific
1006831b7825Sths    if [ "$darwin_user" = "yes" ] ; then
10072408a527Saurel32        target_list="$target_list i386-darwin-user ppc-darwin-user "
10085327cf48Sbellard    fi
100984778508Sblueswir1# the following are BSD specific
101084778508Sblueswir1    if [ "$bsd_user" = "yes" ] ; then
101184778508Sblueswir1        target_list="${target_list}\
101231fc12dfSblueswir1i386-bsd-user \
101331fc12dfSblueswir1x86_64-bsd-user \
101431fc12dfSblueswir1sparc-bsd-user \
101584778508Sblueswir1sparc64-bsd-user \
101684778508Sblueswir1"
101784778508Sblueswir1    fi
10186e20a45fSbellardelse
1019b1a550a0Spbrook    target_list=`echo "$target_list" | sed -e 's/,/ /g'`
10205327cf48Sbellardfi
10210a8e90f4Spbrookif test -z "$target_list" ; then
10220a8e90f4Spbrook    echo "No targets enabled"
10230a8e90f4Spbrook    exit 1
10240a8e90f4Spbrookfi
1025f55fe278SPaolo Bonzini# see if system emulation was really requested
1026f55fe278SPaolo Bonzinicase " $target_list " in
1027f55fe278SPaolo Bonzini  *"-softmmu "*) softmmu=yes
1028f55fe278SPaolo Bonzini  ;;
1029f55fe278SPaolo Bonzini  *) softmmu=no
1030f55fe278SPaolo Bonzini  ;;
1031f55fe278SPaolo Bonziniesac
10325327cf48Sbellard
1033249247c9SJuan Quintelafeature_not_found() {
1034249247c9SJuan Quintela  feature=$1
1035249247c9SJuan Quintela
1036249247c9SJuan Quintela  echo "ERROR"
1037249247c9SJuan Quintela  echo "ERROR: User requested feature $feature"
10389332f6a2SSebastian Herbszt  echo "ERROR: configure was not able to find it"
1039249247c9SJuan Quintela  echo "ERROR"
1040249247c9SJuan Quintela  exit 1;
1041249247c9SJuan Quintela}
1042249247c9SJuan Quintela
10437d13299dSbellardif test -z "$cross_prefix" ; then
10447d13299dSbellard
10457d13299dSbellard# ---
10467d13299dSbellard# big/little endian test
10477d13299dSbellardcat > $TMPC << EOF
10487d13299dSbellard#include <inttypes.h>
10497d13299dSbellardint main(int argc, char ** argv){
10507d13299dSbellard        volatile uint32_t i=0x01234567;
10517d13299dSbellard        return (*((uint8_t*)(&i))) == 0x67;
10527d13299dSbellard}
10537d13299dSbellardEOF
10547d13299dSbellard
105552166aa0SJuan Quintelaif compile_prog "" "" ; then
10567d13299dSbellard$TMPE && bigendian="yes"
10577d13299dSbellardelse
10587d13299dSbellardecho big/little test failed
10597d13299dSbellardfi
10607d13299dSbellard
10617d13299dSbellardelse
10627d13299dSbellard
10637d13299dSbellard# if cross compiling, cannot launch a program, so make a static guess
1064ea8f20f8SJuan Quintelacase "$cpu" in
106524e804ecSAlexander Graf  armv4b|hppa|m68k|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
1066ea8f20f8SJuan Quintela    bigendian=yes
1067ea8f20f8SJuan Quintela  ;;
1068ea8f20f8SJuan Quintelaesac
10697d13299dSbellard
10707d13299dSbellardfi
10717d13299dSbellard
1072b6853697Sbellard# host long bits test
1073b6853697Sbellardhostlongbits="32"
1074ea8f20f8SJuan Quintelacase "$cpu" in
107524e804ecSAlexander Graf  x86_64|alpha|ia64|sparc64|ppc64|s390x)
1076ea8f20f8SJuan Quintela    hostlongbits=64
1077ea8f20f8SJuan Quintela  ;;
1078ea8f20f8SJuan Quintelaesac
1079b6853697Sbellard
1080b0a47e79SJuan Quintela
1081b0a47e79SJuan Quintela##########################################
1082b0a47e79SJuan Quintela# NPTL probe
1083b0a47e79SJuan Quintela
1084b0a47e79SJuan Quintelaif test "$nptl" != "no" ; then
1085bd0c5661Spbrook  cat > $TMPC <<EOF
1086bd0c5661Spbrook#include <sched.h>
108730813ceaSpbrook#include <linux/futex.h>
1088bd0c5661Spbrookvoid foo()
1089bd0c5661Spbrook{
1090bd0c5661Spbrook#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
1091bd0c5661Spbrook#error bork
1092bd0c5661Spbrook#endif
1093bd0c5661Spbrook}
1094bd0c5661SpbrookEOF
1095bd0c5661Spbrook
109652166aa0SJuan Quintela  if compile_object ; then
1097b0a47e79SJuan Quintela    nptl=yes
1098bd0c5661Spbrook  else
1099b0a47e79SJuan Quintela    if test "$nptl" = "yes" ; then
1100b0a47e79SJuan Quintela      feature_not_found "nptl"
1101b0a47e79SJuan Quintela    fi
1102b0a47e79SJuan Quintela    nptl=no
1103b0a47e79SJuan Quintela  fi
1104bd0c5661Spbrookfi
1105bd0c5661Spbrook
110611d9f695Sbellard##########################################
1107ac62922eSbalrog# zlib check
1108ac62922eSbalrog
1109ac62922eSbalrogcat > $TMPC << EOF
1110ac62922eSbalrog#include <zlib.h>
1111ac62922eSbalrogint main(void) { zlibVersion(); return 0; }
1112ac62922eSbalrogEOF
111352166aa0SJuan Quintelaif compile_prog "" "-lz" ; then
1114ac62922eSbalrog    :
1115ac62922eSbalrogelse
1116ac62922eSbalrog    echo
1117ac62922eSbalrog    echo "Error: zlib check failed"
1118ac62922eSbalrog    echo "Make sure to have the zlib libs and headers installed."
1119ac62922eSbalrog    echo
1120ac62922eSbalrog    exit 1
1121ac62922eSbalrogfi
1122ac62922eSbalrog
1123ac62922eSbalrog##########################################
1124e37630caSaliguori# xen probe
1125e37630caSaliguori
1126fc321b4bSJuan Quintelaif test "$xen" != "no" ; then
1127b2266beeSJuan Quintela  xen_libs="-lxenstore -lxenctrl -lxenguest"
1128e37630caSaliguori  cat > $TMPC <<EOF
1129e37630caSaliguori#include <xenctrl.h>
1130e37630caSaliguori#include <xs.h>
1131df7a607bSChristoph Eggerint main(void) { xs_daemon_open(); xc_interface_open(); return 0; }
1132e37630caSaliguoriEOF
113352166aa0SJuan Quintela  if compile_prog "" "$xen_libs" ; then
1134fc321b4bSJuan Quintela    xen=yes
11353efd632bSJuan Quintela    libs_softmmu="$xen_libs $libs_softmmu"
1136e37630caSaliguori  else
1137fc321b4bSJuan Quintela    if test "$xen" = "yes" ; then
1138fc321b4bSJuan Quintela      feature_not_found "xen"
1139fc321b4bSJuan Quintela    fi
1140fc321b4bSJuan Quintela    xen=no
1141e37630caSaliguori  fi
1142e37630caSaliguorifi
1143e37630caSaliguori
1144e37630caSaliguori##########################################
1145f91672e5SPaolo Bonzini# pkgconfig probe
1146f91672e5SPaolo Bonzini
1147f91672e5SPaolo Bonzinipkgconfig="${cross_prefix}pkg-config"
11480dba6195SLoïc Minierif ! has $pkgconfig; then
1149f91672e5SPaolo Bonzini  # likely not cross compiling, or hope for the best
1150f91672e5SPaolo Bonzini  pkgconfig=pkg-config
1151f91672e5SPaolo Bonzinifi
1152f91672e5SPaolo Bonzini
1153f91672e5SPaolo Bonzini##########################################
1154dfffc653SJuan Quintela# Sparse probe
1155dfffc653SJuan Quintelaif test "$sparse" != "no" ; then
11560dba6195SLoïc Minier  if has cgcc; then
1157dfffc653SJuan Quintela    sparse=yes
1158dfffc653SJuan Quintela  else
1159dfffc653SJuan Quintela    if test "$sparse" = "yes" ; then
1160dfffc653SJuan Quintela      feature_not_found "sparse"
1161dfffc653SJuan Quintela    fi
1162dfffc653SJuan Quintela    sparse=no
1163dfffc653SJuan Quintela  fi
1164dfffc653SJuan Quintelafi
1165dfffc653SJuan Quintela
1166dfffc653SJuan Quintela##########################################
116711d9f695Sbellard# SDL probe
116811d9f695Sbellard
1169fec0e3e8SStefan Weil# Look for sdl configuration program (pkg-config or sdl-config).
1170fec0e3e8SStefan Weil# Prefer variant with cross prefix if cross compiling,
1171fec0e3e8SStefan Weil# and favour pkg-config with sdl over sdl-config.
1172fec0e3e8SStefan Weilif test -n "$cross_prefix" -a $pkgconfig != pkg-config && \
1173fec0e3e8SStefan Weil     $pkgconfig sdl --modversion >/dev/null 2>&1; then
1174fec0e3e8SStefan Weil  sdlconfig="$pkgconfig sdl"
1175fec0e3e8SStefan Weil  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
1176fec0e3e8SStefan Weilelif test -n "$cross_prefix" && has ${cross_prefix}sdl-config; then
1177fec0e3e8SStefan Weil  sdlconfig="${cross_prefix}sdl-config"
1178fec0e3e8SStefan Weil  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1179fec0e3e8SStefan Weilelif $pkgconfig sdl --modversion >/dev/null 2>&1; then
11809316f803SPaolo Bonzini  sdlconfig="$pkgconfig sdl"
11819316f803SPaolo Bonzini  _sdlversion=`$sdlconfig --modversion 2>/dev/null | sed 's/[^0-9]//g'`
11820dba6195SLoïc Minierelif has sdl-config; then
11839316f803SPaolo Bonzini  sdlconfig='sdl-config'
11849316f803SPaolo Bonzini  _sdlversion=`$sdlconfig --version | sed 's/[^0-9]//g'`
1185a0dfd8a4SLoïc Minierelse
1186a0dfd8a4SLoïc Minier  if test "$sdl" = "yes" ; then
1187a0dfd8a4SLoïc Minier    feature_not_found "sdl"
1188a0dfd8a4SLoïc Minier  fi
1189a0dfd8a4SLoïc Minier  sdl=no
11909316f803SPaolo Bonzinifi
119111d9f695Sbellard
11929316f803SPaolo Bonzinisdl_too_old=no
1193c4198157SJuan Quintelaif test "$sdl" != "no" ; then
119411d9f695Sbellard  cat > $TMPC << EOF
119511d9f695Sbellard#include <SDL.h>
119611d9f695Sbellard#undef main /* We don't want SDL to override our main() */
119711d9f695Sbellardint main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
119811d9f695SbellardEOF
11999316f803SPaolo Bonzini  sdl_cflags=`$sdlconfig --cflags 2> /dev/null`
120074f42e18STeLeMan  if test "$static" = "yes" ; then
120174f42e18STeLeMan    sdl_libs=`$sdlconfig --static-libs 2>/dev/null`
120274f42e18STeLeMan  else
12039316f803SPaolo Bonzini    sdl_libs=`$sdlconfig --libs 2> /dev/null`
120474f42e18STeLeMan  fi
120552166aa0SJuan Quintela  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
120611d9f695Sbellard    if test "$_sdlversion" -lt 121 ; then
120711d9f695Sbellard      sdl_too_old=yes
120811d9f695Sbellard    else
1209fd677642Sths      if test "$cocoa" = "no" ; then
121011d9f695Sbellard        sdl=yes
121111d9f695Sbellard      fi
1212fd677642Sths    fi
12137c1f25b4Sbellard
121467c274d3SPaolo Bonzini    # static link with sdl ? (note: sdl.pc's --static --libs is broken)
12151ac88f28SJuan Quintela    if test "$sdl" = "yes" -a "$static" = "yes" ; then
121667c274d3SPaolo Bonzini      if test $? = 0 && echo $sdl_libs | grep -- -laa > /dev/null; then
1217f8aa6c7bSStefan Weil         sdl_libs="$sdl_libs `aalib-config --static-libs 2>/dev/null`"
1218f8aa6c7bSStefan Weil         sdl_cflags="$sdl_cflags `aalib-config --cflags 2>/dev/null`"
121911d9f695Sbellard      fi
122052166aa0SJuan Quintela      if compile_prog "$sdl_cflags" "$sdl_libs" ; then
12211ac88f28SJuan Quintela	:
12221ac88f28SJuan Quintela      else
12231ac88f28SJuan Quintela        sdl=no
12247c1f25b4Sbellard      fi
12257c1f25b4Sbellard    fi # static link
1226c4198157SJuan Quintela  else # sdl not found
1227c4198157SJuan Quintela    if test "$sdl" = "yes" ; then
1228c4198157SJuan Quintela      feature_not_found "sdl"
1229c4198157SJuan Quintela    fi
1230c4198157SJuan Quintela    sdl=no
12317c1f25b4Sbellard  fi # sdl compile test
1232fd677642Sthsfi
123311d9f695Sbellard
12345368a422Saliguoriif test "$sdl" = "yes" ; then
12355368a422Saliguori  cat > $TMPC <<EOF
12365368a422Saliguori#include <SDL.h>
12375368a422Saliguori#if defined(SDL_VIDEO_DRIVER_X11)
12385368a422Saliguori#include <X11/XKBlib.h>
12395368a422Saliguori#else
12405368a422Saliguori#error No x11 support
12415368a422Saliguori#endif
12425368a422Saliguoriint main(void) { return 0; }
12435368a422SaliguoriEOF
124452166aa0SJuan Quintela  if compile_prog "$sdl_cflags" "$sdl_libs" ; then
1245681306dfSJuan Quintela    sdl_libs="$sdl_libs -lX11"
12465368a422Saliguori  fi
124707d9ac44SJuan Quintela  if test "$mingw32" = "yes" ; then
124807d9ac44SJuan Quintela    sdl_libs="`echo $sdl_libs | sed s/-mwindows//g` -mconsole"
124907d9ac44SJuan Quintela  fi
12500705667eSJuan Quintela  libs_softmmu="$sdl_libs $libs_softmmu"
12515368a422Saliguorifi
12525368a422Saliguori
12538f28f3fbSths##########################################
12548d5d2d4cSths# VNC TLS detection
12551be10ad2SJuan Quintelaif test "$vnc_tls" != "no" ; then
1256ae6b5e5aSaliguori  cat > $TMPC <<EOF
1257ae6b5e5aSaliguori#include <gnutls/gnutls.h>
1258ae6b5e5aSaliguoriint main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
1259ae6b5e5aSaliguoriEOF
1260f91672e5SPaolo Bonzini  vnc_tls_cflags=`$pkgconfig --cflags gnutls 2> /dev/null`
1261f91672e5SPaolo Bonzini  vnc_tls_libs=`$pkgconfig --libs gnutls 2> /dev/null`
126252166aa0SJuan Quintela  if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then
12631be10ad2SJuan Quintela    vnc_tls=yes
1264a5e32cc9SJuan Quintela    libs_softmmu="$vnc_tls_libs $libs_softmmu"
1265ae6b5e5aSaliguori  else
12661be10ad2SJuan Quintela    if test "$vnc_tls" = "yes" ; then
12671be10ad2SJuan Quintela      feature_not_found "vnc-tls"
12681be10ad2SJuan Quintela    fi
12691be10ad2SJuan Quintela    vnc_tls=no
12708d5d2d4cSths  fi
12718d5d2d4cSthsfi
12728d5d2d4cSths
12738d5d2d4cSths##########################################
12742f9606b3Saliguori# VNC SASL detection
12753aefa744SJuan Quintelaif test "$vnc_sasl" != "no" ; then
12762f9606b3Saliguori  cat > $TMPC <<EOF
12772f9606b3Saliguori#include <sasl/sasl.h>
12782f9606b3Saliguori#include <stdio.h>
12792f9606b3Saliguoriint main(void) { sasl_server_init(NULL, "qemu"); return 0; }
12802f9606b3SaliguoriEOF
12812f9606b3Saliguori  # Assuming Cyrus-SASL installed in /usr prefix
12822f9606b3Saliguori  vnc_sasl_cflags=""
12832f9606b3Saliguori  vnc_sasl_libs="-lsasl2"
128452166aa0SJuan Quintela  if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then
1285ea784e3bSJuan Quintela    vnc_sasl=yes
1286fa838301SJuan Quintela    libs_softmmu="$vnc_sasl_libs $libs_softmmu"
12872f9606b3Saliguori  else
1288ea784e3bSJuan Quintela    if test "$vnc_sasl" = "yes" ; then
1289ea784e3bSJuan Quintela      feature_not_found "vnc-sasl"
1290ea784e3bSJuan Quintela    fi
1291ea784e3bSJuan Quintela    vnc_sasl=no
12922f9606b3Saliguori  fi
12932f9606b3Saliguorifi
12942f9606b3Saliguori
12952f9606b3Saliguori##########################################
12962f6f5c7aSCorentin Chary# VNC JPEG detection
129796763cf9SCorentin Charyif test "$vnc_jpeg" != "no" ; then
12982f6f5c7aSCorentin Charycat > $TMPC <<EOF
12992f6f5c7aSCorentin Chary#include <stdio.h>
13002f6f5c7aSCorentin Chary#include <jpeglib.h>
13012f6f5c7aSCorentin Charyint main(void) { struct jpeg_compress_struct s; jpeg_create_compress(&s); return 0; }
13022f6f5c7aSCorentin CharyEOF
13032f6f5c7aSCorentin Chary    vnc_jpeg_cflags=""
13042f6f5c7aSCorentin Chary    vnc_jpeg_libs="-ljpeg"
13052f6f5c7aSCorentin Chary  if compile_prog "$vnc_jpeg_cflags" "$vnc_jpeg_libs" ; then
13062f6f5c7aSCorentin Chary    vnc_jpeg=yes
13072f6f5c7aSCorentin Chary    libs_softmmu="$vnc_jpeg_libs $libs_softmmu"
13082f6f5c7aSCorentin Chary  else
13092f6f5c7aSCorentin Chary    if test "$vnc_jpeg" = "yes" ; then
13102f6f5c7aSCorentin Chary      feature_not_found "vnc-jpeg"
13112f6f5c7aSCorentin Chary    fi
13122f6f5c7aSCorentin Chary    vnc_jpeg=no
13132f6f5c7aSCorentin Chary  fi
13142f6f5c7aSCorentin Charyfi
13152f6f5c7aSCorentin Chary
13162f6f5c7aSCorentin Chary##########################################
1317efe556adSCorentin Chary# VNC PNG detection
131896763cf9SCorentin Charyif test "$vnc_png" != "no" ; then
1319efe556adSCorentin Charycat > $TMPC <<EOF
1320efe556adSCorentin Chary//#include <stdio.h>
1321efe556adSCorentin Chary#include <png.h>
1322efe556adSCorentin Charyint main(void) {
1323efe556adSCorentin Chary    png_structp png_ptr;
1324efe556adSCorentin Chary    png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
1325efe556adSCorentin Chary    return 0;
1326efe556adSCorentin Chary}
1327efe556adSCorentin CharyEOF
1328efe556adSCorentin Chary    vnc_png_cflags=""
1329efe556adSCorentin Chary    vnc_png_libs="-lpng"
1330efe556adSCorentin Chary  if compile_prog "$vnc_png_cflags" "$vnc_png_libs" ; then
1331efe556adSCorentin Chary    vnc_png=yes
1332efe556adSCorentin Chary    libs_softmmu="$vnc_png_libs $libs_softmmu"
1333efe556adSCorentin Chary  else
1334efe556adSCorentin Chary    if test "$vnc_png" = "yes" ; then
1335efe556adSCorentin Chary      feature_not_found "vnc-png"
1336efe556adSCorentin Chary    fi
1337efe556adSCorentin Chary    vnc_png=no
1338efe556adSCorentin Chary  fi
1339efe556adSCorentin Charyfi
1340efe556adSCorentin Chary
1341efe556adSCorentin Chary##########################################
134276655d6dSaliguori# fnmatch() probe, used for ACL routines
134376655d6dSaliguorifnmatch="no"
134476655d6dSaliguoricat > $TMPC << EOF
134576655d6dSaliguori#include <fnmatch.h>
134676655d6dSaliguoriint main(void)
134776655d6dSaliguori{
134876655d6dSaliguori    fnmatch("foo", "foo", 0);
134976655d6dSaliguori    return 0;
135076655d6dSaliguori}
135176655d6dSaliguoriEOF
135252166aa0SJuan Quintelaif compile_prog "" "" ; then
135376655d6dSaliguori   fnmatch="yes"
135476655d6dSaliguorifi
135576655d6dSaliguori
135676655d6dSaliguori##########################################
1357ee682d27SStefan Weil# uuid_generate() probe, used for vdi block driver
1358ee682d27SStefan Weilif test "$uuid" != "no" ; then
1359ee682d27SStefan Weil  uuid_libs="-luuid"
1360ee682d27SStefan Weil  cat > $TMPC << EOF
1361ee682d27SStefan Weil#include <uuid/uuid.h>
1362ee682d27SStefan Weilint main(void)
1363ee682d27SStefan Weil{
1364ee682d27SStefan Weil    uuid_t my_uuid;
1365ee682d27SStefan Weil    uuid_generate(my_uuid);
1366ee682d27SStefan Weil    return 0;
1367ee682d27SStefan Weil}
1368ee682d27SStefan WeilEOF
1369ee682d27SStefan Weil  if compile_prog "" "$uuid_libs" ; then
1370ee682d27SStefan Weil    uuid="yes"
1371ee682d27SStefan Weil    libs_softmmu="$uuid_libs $libs_softmmu"
1372ee682d27SStefan Weil    libs_tools="$uuid_libs $libs_tools"
1373ee682d27SStefan Weil  else
1374ee682d27SStefan Weil    if test "$uuid" = "yes" ; then
1375ee682d27SStefan Weil      feature_not_found "uuid"
1376ee682d27SStefan Weil    fi
1377ee682d27SStefan Weil    uuid=no
1378ee682d27SStefan Weil  fi
1379ee682d27SStefan Weilfi
1380ee682d27SStefan Weil
1381ee682d27SStefan Weil##########################################
13828a16d273Sths# vde libraries probe
1383dfb278bdSJuan Quintelaif test "$vde" != "no" ; then
13844baae0acSJuan Quintela  vde_libs="-lvdeplug"
13858a16d273Sths  cat > $TMPC << EOF
13868a16d273Sths#include <libvdeplug.h>
13874a7f0e06Spbrookint main(void)
13884a7f0e06Spbrook{
13894a7f0e06Spbrook    struct vde_open_args a = {0, 0, 0};
13904a7f0e06Spbrook    vde_open("", "", &a);
13914a7f0e06Spbrook    return 0;
13924a7f0e06Spbrook}
13938a16d273SthsEOF
139452166aa0SJuan Quintela  if compile_prog "" "$vde_libs" ; then
13954baae0acSJuan Quintela    vde=yes
13968e02e54cSJuan Quintela    libs_softmmu="$vde_libs $libs_softmmu"
13978e02e54cSJuan Quintela    libs_tools="$vde_libs $libs_tools"
1398dfb278bdSJuan Quintela  else
1399dfb278bdSJuan Quintela    if test "$vde" = "yes" ; then
1400dfb278bdSJuan Quintela      feature_not_found "vde"
1401dfb278bdSJuan Quintela    fi
1402dfb278bdSJuan Quintela    vde=no
14038a16d273Sths  fi
14048a16d273Sthsfi
14058a16d273Sths
14068a16d273Sths##########################################
1407c2de5c91Smalc# Sound support libraries probe
14088f28f3fbSths
1409c2de5c91Smalcaudio_drv_probe()
1410c2de5c91Smalc{
1411c2de5c91Smalc    drv=$1
1412c2de5c91Smalc    hdr=$2
1413c2de5c91Smalc    lib=$3
1414c2de5c91Smalc    exp=$4
1415c2de5c91Smalc    cfl=$5
14168f28f3fbSths        cat > $TMPC << EOF
1417c2de5c91Smalc#include <$hdr>
1418c2de5c91Smalcint main(void) { $exp }
14198f28f3fbSthsEOF
142052166aa0SJuan Quintela    if compile_prog "$cfl" "$lib" ; then
14218f28f3fbSths        :
14228f28f3fbSths    else
14238f28f3fbSths        echo
1424c2de5c91Smalc        echo "Error: $drv check failed"
1425c2de5c91Smalc        echo "Make sure to have the $drv libs and headers installed."
14268f28f3fbSths        echo
14278f28f3fbSths        exit 1
14288f28f3fbSths    fi
1429c2de5c91Smalc}
1430c2de5c91Smalc
14312fa7d3bfSmalcaudio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
1432c2de5c91Smalcfor drv in $audio_drv_list; do
1433c2de5c91Smalc    case $drv in
1434c2de5c91Smalc    alsa)
1435c2de5c91Smalc    audio_drv_probe $drv alsa/asoundlib.h -lasound \
1436c2de5c91Smalc        "snd_pcm_t **handle; return snd_pcm_close(*handle);"
1437a4bf6780SJuan Quintela    libs_softmmu="-lasound $libs_softmmu"
1438c2de5c91Smalc    ;;
1439c2de5c91Smalc
1440c2de5c91Smalc    fmod)
1441c2de5c91Smalc    if test -z $fmod_lib || test -z $fmod_inc; then
1442c2de5c91Smalc        echo
1443c2de5c91Smalc        echo "Error: You must specify path to FMOD library and headers"
1444c2de5c91Smalc        echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
1445c2de5c91Smalc        echo
1446c2de5c91Smalc        exit 1
14478f28f3fbSths    fi
1448c2de5c91Smalc    audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
1449a4bf6780SJuan Quintela    libs_softmmu="$fmod_lib $libs_softmmu"
1450c2de5c91Smalc    ;;
1451c2de5c91Smalc
1452c2de5c91Smalc    esd)
1453c2de5c91Smalc    audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
1454a4bf6780SJuan Quintela    libs_softmmu="-lesd $libs_softmmu"
145567f86e8eSJuan Quintela    audio_pt_int="yes"
1456c2de5c91Smalc    ;;
1457b8e59f18Smalc
1458b8e59f18Smalc    pa)
1459493abda6SAurelien Jarno    audio_drv_probe $drv pulse/simple.h "-lpulse-simple -lpulse" \
1460b8e59f18Smalc        "pa_simple *s = NULL; pa_simple_free(s); return 0;"
1461493abda6SAurelien Jarno    libs_softmmu="-lpulse -lpulse-simple $libs_softmmu"
146267f86e8eSJuan Quintela    audio_pt_int="yes"
1463b8e59f18Smalc    ;;
1464b8e59f18Smalc
1465997e690aSJuan Quintela    coreaudio)
1466997e690aSJuan Quintela      libs_softmmu="-framework CoreAudio $libs_softmmu"
1467997e690aSJuan Quintela    ;;
1468997e690aSJuan Quintela
1469a4bf6780SJuan Quintela    dsound)
1470a4bf6780SJuan Quintela      libs_softmmu="-lole32 -ldxguid $libs_softmmu"
1471d5631638Smalc      audio_win_int="yes"
1472a4bf6780SJuan Quintela    ;;
1473a4bf6780SJuan Quintela
1474a4bf6780SJuan Quintela    oss)
1475a4bf6780SJuan Quintela      libs_softmmu="$oss_lib $libs_softmmu"
1476a4bf6780SJuan Quintela    ;;
1477a4bf6780SJuan Quintela
1478a4bf6780SJuan Quintela    sdl|wav)
14792f6a1ab0Sblueswir1    # XXX: Probes for CoreAudio, DirectSound, SDL(?)
14802f6a1ab0Sblueswir1    ;;
14812f6a1ab0Sblueswir1
1482d5631638Smalc    winwave)
1483d5631638Smalc      libs_softmmu="-lwinmm $libs_softmmu"
1484d5631638Smalc      audio_win_int="yes"
1485d5631638Smalc    ;;
1486d5631638Smalc
1487e4c63a6aSmalc    *)
14881c9b2a52Smalc    echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
1489e4c63a6aSmalc        echo
1490e4c63a6aSmalc        echo "Error: Unknown driver '$drv' selected"
1491e4c63a6aSmalc        echo "Possible drivers are: $audio_possible_drivers"
1492e4c63a6aSmalc        echo
1493e4c63a6aSmalc        exit 1
1494e4c63a6aSmalc    }
1495e4c63a6aSmalc    ;;
1496c2de5c91Smalc    esac
1497c2de5c91Smalcdone
14988f28f3fbSths
14994d3b6f6eSbalrog##########################################
15002e4d9fb1Saurel32# BrlAPI probe
15012e4d9fb1Saurel32
15024ffcedb6SJuan Quintelaif test "$brlapi" != "no" ; then
1503eb82284fSJuan Quintela  brlapi_libs="-lbrlapi"
15042e4d9fb1Saurel32  cat > $TMPC << EOF
15052e4d9fb1Saurel32#include <brlapi.h>
15062e4d9fb1Saurel32int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
15072e4d9fb1Saurel32EOF
150852166aa0SJuan Quintela  if compile_prog "" "$brlapi_libs" ; then
15092e4d9fb1Saurel32    brlapi=yes
1510264606b3SJuan Quintela    libs_softmmu="$brlapi_libs $libs_softmmu"
15114ffcedb6SJuan Quintela  else
15124ffcedb6SJuan Quintela    if test "$brlapi" = "yes" ; then
15134ffcedb6SJuan Quintela      feature_not_found "brlapi"
15144ffcedb6SJuan Quintela    fi
15154ffcedb6SJuan Quintela    brlapi=no
1516eb82284fSJuan Quintela  fi
1517eb82284fSJuan Quintelafi
15182e4d9fb1Saurel32
15192e4d9fb1Saurel32##########################################
15204d3b6f6eSbalrog# curses probe
15214f78ef9aSJuan Quintelacurses_list="-lncurses -lcurses"
15224d3b6f6eSbalrog
1523c584a6d0SJuan Quintelaif test "$curses" != "no" ; then
1524c584a6d0SJuan Quintela  curses_found=no
15254d3b6f6eSbalrog  cat > $TMPC << EOF
15264d3b6f6eSbalrog#include <curses.h>
15275a8ff3aaSblueswir1#ifdef __OpenBSD__
15285a8ff3aaSblueswir1#define resize_term resizeterm
15295a8ff3aaSblueswir1#endif
15305a8ff3aaSblueswir1int main(void) { resize_term(0, 0); return curses_version(); }
15314d3b6f6eSbalrogEOF
15324f78ef9aSJuan Quintela  for curses_lib in $curses_list; do
15334f78ef9aSJuan Quintela    if compile_prog "" "$curses_lib" ; then
1534c584a6d0SJuan Quintela      curses_found=yes
15354f78ef9aSJuan Quintela      libs_softmmu="$curses_lib $libs_softmmu"
15364f78ef9aSJuan Quintela      break
15374d3b6f6eSbalrog    fi
15384f78ef9aSJuan Quintela  done
1539c584a6d0SJuan Quintela  if test "$curses_found" = "yes" ; then
1540c584a6d0SJuan Quintela    curses=yes
1541c584a6d0SJuan Quintela  else
1542c584a6d0SJuan Quintela    if test "$curses" = "yes" ; then
1543c584a6d0SJuan Quintela      feature_not_found "curses"
1544c584a6d0SJuan Quintela    fi
1545c584a6d0SJuan Quintela    curses=no
1546c584a6d0SJuan Quintela  fi
15474f78ef9aSJuan Quintelafi
15484d3b6f6eSbalrog
1549414f0dabSblueswir1##########################################
1550769ce76dSAlexander Graf# curl probe
1551769ce76dSAlexander Graf
15524e2b0658SPaolo Bonziniif $pkgconfig libcurl --modversion >/dev/null 2>&1; then
15534e2b0658SPaolo Bonzini  curlconfig="$pkgconfig libcurl"
15544e2b0658SPaolo Bonzinielse
15554e2b0658SPaolo Bonzini  curlconfig=curl-config
15564e2b0658SPaolo Bonzinifi
15574e2b0658SPaolo Bonzini
1558788c8196SJuan Quintelaif test "$curl" != "no" ; then
1559769ce76dSAlexander Graf  cat > $TMPC << EOF
1560769ce76dSAlexander Graf#include <curl/curl.h>
1561769ce76dSAlexander Grafint main(void) { return curl_easy_init(); }
1562769ce76dSAlexander GrafEOF
15634e2b0658SPaolo Bonzini  curl_cflags=`$curlconfig --cflags 2>/dev/null`
15644e2b0658SPaolo Bonzini  curl_libs=`$curlconfig --libs 2>/dev/null`
1565b1d5a277SJuan Quintela  if compile_prog "$curl_cflags" "$curl_libs" ; then
1566769ce76dSAlexander Graf    curl=yes
1567f0302935SJuan Quintela    libs_tools="$curl_libs $libs_tools"
1568f0302935SJuan Quintela    libs_softmmu="$curl_libs $libs_softmmu"
1569788c8196SJuan Quintela  else
1570788c8196SJuan Quintela    if test "$curl" = "yes" ; then
1571788c8196SJuan Quintela      feature_not_found "curl"
1572788c8196SJuan Quintela    fi
1573788c8196SJuan Quintela    curl=no
1574769ce76dSAlexander Graf  fi
1575769ce76dSAlexander Graffi # test "$curl"
1576769ce76dSAlexander Graf
1577769ce76dSAlexander Graf##########################################
15785495ed11SLuiz Capitulino# check framework probe
15795495ed11SLuiz Capitulino
15805495ed11SLuiz Capitulinoif test "$check_utests" != "no" ; then
15815495ed11SLuiz Capitulino  cat > $TMPC << EOF
15825495ed11SLuiz Capitulino#include <check.h>
15835495ed11SLuiz Capitulinoint main(void) { suite_create("qemu test"); return 0; }
15845495ed11SLuiz CapitulinoEOF
1585f91672e5SPaolo Bonzini  check_libs=`$pkgconfig --libs check`
15865495ed11SLuiz Capitulino  if compile_prog "" $check_libs ; then
15875495ed11SLuiz Capitulino    check_utests=yes
15885495ed11SLuiz Capitulino    libs_tools="$check_libs $libs_tools"
15895495ed11SLuiz Capitulino  else
15905495ed11SLuiz Capitulino    if test "$check_utests" = "yes" ; then
15915495ed11SLuiz Capitulino      feature_not_found "check"
15925495ed11SLuiz Capitulino    fi
15935495ed11SLuiz Capitulino    check_utests=no
15945495ed11SLuiz Capitulino  fi
15955495ed11SLuiz Capitulinofi # test "$check_utests"
15965495ed11SLuiz Capitulino
15975495ed11SLuiz Capitulino##########################################
1598fb599c9aSbalrog# bluez support probe
1599a20a6f46SJuan Quintelaif test "$bluez" != "no" ; then
1600e820e3f4Sbalrog  cat > $TMPC << EOF
1601e820e3f4Sbalrog#include <bluetooth/bluetooth.h>
1602e820e3f4Sbalrogint main(void) { return bt_error(0); }
1603e820e3f4SbalrogEOF
1604f91672e5SPaolo Bonzini  bluez_cflags=`$pkgconfig --cflags bluez 2> /dev/null`
1605f91672e5SPaolo Bonzini  bluez_libs=`$pkgconfig --libs bluez 2> /dev/null`
160652166aa0SJuan Quintela  if compile_prog "$bluez_cflags" "$bluez_libs" ; then
1607a20a6f46SJuan Quintela    bluez=yes
1608e482d56aSJuan Quintela    libs_softmmu="$bluez_libs $libs_softmmu"
1609e820e3f4Sbalrog  else
1610a20a6f46SJuan Quintela    if test "$bluez" = "yes" ; then
1611a20a6f46SJuan Quintela      feature_not_found "bluez"
1612a20a6f46SJuan Quintela    fi
1613e820e3f4Sbalrog    bluez="no"
1614e820e3f4Sbalrog  fi
1615fb599c9aSbalrogfi
1616fb599c9aSbalrog
1617fb599c9aSbalrog##########################################
16187ba1e619Saliguori# kvm probe
1619b31a0277SJuan Quintelaif test "$kvm" != "no" ; then
16207ba1e619Saliguori    cat > $TMPC <<EOF
16217ba1e619Saliguori#include <linux/kvm.h>
16229fd8d8d7Saliguori#if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12
16237ba1e619Saliguori#error Invalid KVM version
16247ba1e619Saliguori#endif
16259fd8d8d7Saliguori#if !defined(KVM_CAP_USER_MEMORY)
16269fd8d8d7Saliguori#error Missing KVM capability KVM_CAP_USER_MEMORY
16279fd8d8d7Saliguori#endif
16289fd8d8d7Saliguori#if !defined(KVM_CAP_SET_TSS_ADDR)
16299fd8d8d7Saliguori#error Missing KVM capability KVM_CAP_SET_TSS_ADDR
16309fd8d8d7Saliguori#endif
16319fd8d8d7Saliguori#if !defined(KVM_CAP_DESTROY_MEMORY_REGION_WORKS)
16329fd8d8d7Saliguori#error Missing KVM capability KVM_CAP_DESTROY_MEMORY_REGION_WORKS
16339fd8d8d7Saliguori#endif
16347ba1e619Saliguoriint main(void) { return 0; }
16357ba1e619SaliguoriEOF
1636eac30262Saliguori  if test "$kerneldir" != "" ; then
1637eac30262Saliguori      kvm_cflags=-I"$kerneldir"/include
16388444eb6eSaliguori      if test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) \
16398444eb6eSaliguori         -a -d "$kerneldir/arch/x86/include" ; then
16408444eb6eSaliguori            kvm_cflags="$kvm_cflags -I$kerneldir/arch/x86/include"
1641406b430dSaliguori	elif test "$cpu" = "ppc" -a -d "$kerneldir/arch/powerpc/include" ; then
1642406b430dSaliguori	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/powerpc/include"
16430e60a699SAlexander Graf	elif test "$cpu" = "s390x" -a -d "$kerneldir/arch/s390/include" ; then
16440e60a699SAlexander Graf	    kvm_cflags="$kvm_cflags -I$kerneldir/arch/s390/include"
16458444eb6eSaliguori        elif test -d "$kerneldir/arch/$cpu/include" ; then
16468444eb6eSaliguori            kvm_cflags="$kvm_cflags -I$kerneldir/arch/$cpu/include"
16478444eb6eSaliguori      fi
1648eac30262Saliguori  else
1649f038e8f7SStefan Weil    kvm_cflags=`$pkgconfig --cflags kvm-kmod 2>/dev/null`
1650eac30262Saliguori  fi
165152166aa0SJuan Quintela  if compile_prog "$kvm_cflags" "" ; then
1652b31a0277SJuan Quintela    kvm=yes
1653dae5079aSJan Kiszka    cat > $TMPC <<EOF
1654dae5079aSJan Kiszka#include <linux/kvm_para.h>
1655dae5079aSJan Kiszkaint main(void) { return 0; }
1656dae5079aSJan KiszkaEOF
1657dae5079aSJan Kiszka    if compile_prog "$kvm_cflags" "" ; then
1658dae5079aSJan Kiszka      kvm_para=yes
1659dae5079aSJan Kiszka    fi
16607ba1e619Saliguori  else
1661b31a0277SJuan Quintela    if test "$kvm" = "yes" ; then
16620dba6195SLoïc Minier      if has awk && has grep; then
1663a558ee17SJuan Quintela        kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \
16649fd8d8d7Saliguori	| grep "error: " \
16659fd8d8d7Saliguori	| awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'`
16669fd8d8d7Saliguori        if test "$kvmerr" != "" ; then
1667b31a0277SJuan Quintela          echo -e "${kvmerr}\n\
1668168ccc11SJan Kiszka      NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \
1669168ccc11SJan Kiszka  recent kvm-kmod from http://sourceforge.net/projects/kvm."
16709fd8d8d7Saliguori        fi
16719fd8d8d7Saliguori      fi
1672b31a0277SJuan Quintela      feature_not_found "kvm"
1673b31a0277SJuan Quintela    fi
1674b31a0277SJuan Quintela    kvm=no
16757ba1e619Saliguori  fi
16767ba1e619Saliguorifi
16777ba1e619Saliguori
16787ba1e619Saliguori##########################################
1679d5970055SMichael S. Tsirkin# test for vhost net
1680d5970055SMichael S. Tsirkin
1681d5970055SMichael S. Tsirkinif test "$vhost_net" != "no"; then
1682d5970055SMichael S. Tsirkin    if test "$kvm" != "no"; then
1683d5970055SMichael S. Tsirkin            cat > $TMPC <<EOF
1684d5970055SMichael S. Tsirkin    #include <linux/vhost.h>
1685d5970055SMichael S. Tsirkin    int main(void) { return 0; }
1686d5970055SMichael S. TsirkinEOF
1687d5970055SMichael S. Tsirkin            if compile_prog "$kvm_cflags" "" ; then
1688d5970055SMichael S. Tsirkin                vhost_net=yes
1689d5970055SMichael S. Tsirkin            else
1690d5970055SMichael S. Tsirkin                if test "$vhost_net" = "yes" ; then
1691d5970055SMichael S. Tsirkin                    feature_not_found "vhost-net"
1692d5970055SMichael S. Tsirkin                fi
1693d5970055SMichael S. Tsirkin                vhost_net=no
1694d5970055SMichael S. Tsirkin            fi
1695d5970055SMichael S. Tsirkin    else
1696d5970055SMichael S. Tsirkin            if test "$vhost_net" = "yes" ; then
16974021d247SAurelien Jarno                echo "NOTE: vhost-net feature requires KVM (--enable-kvm)."
1698d5970055SMichael S. Tsirkin                feature_not_found "vhost-net"
1699d5970055SMichael S. Tsirkin            fi
1700d5970055SMichael S. Tsirkin            vhost_net=no
1701d5970055SMichael S. Tsirkin    fi
1702d5970055SMichael S. Tsirkinfi
1703d5970055SMichael S. Tsirkin
1704d5970055SMichael S. Tsirkin##########################################
1705e5d355d1Saliguori# pthread probe
1706de65fe0fSSebastian HerbsztPTHREADLIBS_LIST="-lpthread -lpthreadGC2"
17073c529d93Saliguori
1708e5d355d1Saliguoripthread=no
1709414f0dabSblueswir1cat > $TMPC << EOF
17103c529d93Saliguori#include <pthread.h>
1711de65fe0fSSebastian Herbsztint main(void) { pthread_create(0,0,0,0); return 0; }
1712414f0dabSblueswir1EOF
1713*bd00d539SAndreas Färberif compile_prog "" "" ; then
1714*bd00d539SAndreas Färber  pthread=yes
1715*bd00d539SAndreas Färberelse
1716de65fe0fSSebastian Herbszt  for pthread_lib in $PTHREADLIBS_LIST; do
171752166aa0SJuan Quintela    if compile_prog "" "$pthread_lib" ; then
1718e5d355d1Saliguori      pthread=yes
17195572b539SJuan Quintela      LIBS="$pthread_lib $LIBS"
1720de65fe0fSSebastian Herbszt      break
1721414f0dabSblueswir1    fi
1722de65fe0fSSebastian Herbszt  done
1723*bd00d539SAndreas Färberfi
1724414f0dabSblueswir1
17254617e593SAnthony Liguoriif test "$mingw32" != yes -a "$pthread" = no; then
17264dd75c70SChristoph Hellwig  echo
17274dd75c70SChristoph Hellwig  echo "Error: pthread check failed"
17284dd75c70SChristoph Hellwig  echo "Make sure to have the pthread libs and headers installed."
17294dd75c70SChristoph Hellwig  echo
17304dd75c70SChristoph Hellwig  exit 1
1731e5d355d1Saliguorifi
1732e5d355d1Saliguori
1733bf9298b9Saliguori##########################################
17345c6c3a6cSChristoph Hellwig# linux-aio probe
17355c6c3a6cSChristoph Hellwig
17365c6c3a6cSChristoph Hellwigif test "$linux_aio" != "no" ; then
17375c6c3a6cSChristoph Hellwig  cat > $TMPC <<EOF
17385c6c3a6cSChristoph Hellwig#include <libaio.h>
17395c6c3a6cSChristoph Hellwig#include <sys/eventfd.h>
17405c6c3a6cSChristoph Hellwigint main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; }
17415c6c3a6cSChristoph HellwigEOF
17425c6c3a6cSChristoph Hellwig  if compile_prog "" "-laio" ; then
17435c6c3a6cSChristoph Hellwig    linux_aio=yes
1744048d179fSPaul Brook    libs_softmmu="$libs_softmmu -laio"
1745048d179fSPaul Brook    libs_tools="$libs_tools -laio"
17465c6c3a6cSChristoph Hellwig  else
17475c6c3a6cSChristoph Hellwig    if test "$linux_aio" = "yes" ; then
17485c6c3a6cSChristoph Hellwig      feature_not_found "linux AIO"
17495c6c3a6cSChristoph Hellwig    fi
17503cfcae3cSLuiz Capitulino    linux_aio=no
17515c6c3a6cSChristoph Hellwig  fi
17525c6c3a6cSChristoph Hellwigfi
17535c6c3a6cSChristoph Hellwig
17545c6c3a6cSChristoph Hellwig##########################################
1755758e8e38SVenkateswararao Jujjuri (JV)# attr probe
1756758e8e38SVenkateswararao Jujjuri (JV)
1757758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" != "no" ; then
1758758e8e38SVenkateswararao Jujjuri (JV)  cat > $TMPC <<EOF
1759758e8e38SVenkateswararao Jujjuri (JV)#include <stdio.h>
1760758e8e38SVenkateswararao Jujjuri (JV)#include <sys/types.h>
1761758e8e38SVenkateswararao Jujjuri (JV)#include <attr/xattr.h>
1762758e8e38SVenkateswararao Jujjuri (JV)int main(void) { getxattr(NULL, NULL, NULL, 0); setxattr(NULL, NULL, NULL, 0, 0); return 0; }
1763758e8e38SVenkateswararao Jujjuri (JV)EOF
1764758e8e38SVenkateswararao Jujjuri (JV)  if compile_prog "" "-lattr" ; then
1765758e8e38SVenkateswararao Jujjuri (JV)    attr=yes
1766758e8e38SVenkateswararao Jujjuri (JV)    LIBS="-lattr $LIBS"
1767758e8e38SVenkateswararao Jujjuri (JV)  else
1768758e8e38SVenkateswararao Jujjuri (JV)    if test "$attr" = "yes" ; then
1769758e8e38SVenkateswararao Jujjuri (JV)      feature_not_found "ATTR"
1770758e8e38SVenkateswararao Jujjuri (JV)    fi
1771758e8e38SVenkateswararao Jujjuri (JV)    attr=no
1772758e8e38SVenkateswararao Jujjuri (JV)  fi
1773758e8e38SVenkateswararao Jujjuri (JV)fi
1774758e8e38SVenkateswararao Jujjuri (JV)
1775758e8e38SVenkateswararao Jujjuri (JV)##########################################
1776bf9298b9Saliguori# iovec probe
1777bf9298b9Saliguoricat > $TMPC <<EOF
1778db34f0b3Sblueswir1#include <sys/types.h>
1779bf9298b9Saliguori#include <sys/uio.h>
1780db34f0b3Sblueswir1#include <unistd.h>
1781bf9298b9Saliguoriint main(void) { struct iovec iov; return 0; }
1782bf9298b9SaliguoriEOF
1783bf9298b9Saliguoriiovec=no
178452166aa0SJuan Quintelaif compile_prog "" "" ; then
1785bf9298b9Saliguori  iovec=yes
1786bf9298b9Saliguorifi
1787bf9298b9Saliguori
1788f652e6afSaurel32##########################################
1789ceb42de8Saliguori# preadv probe
1790ceb42de8Saliguoricat > $TMPC <<EOF
1791ceb42de8Saliguori#include <sys/types.h>
1792ceb42de8Saliguori#include <sys/uio.h>
1793ceb42de8Saliguori#include <unistd.h>
1794ceb42de8Saliguoriint main(void) { preadv; }
1795ceb42de8SaliguoriEOF
1796ceb42de8Saliguoripreadv=no
179752166aa0SJuan Quintelaif compile_prog "" "" ; then
1798ceb42de8Saliguori  preadv=yes
1799ceb42de8Saliguorifi
1800ceb42de8Saliguori
1801ceb42de8Saliguori##########################################
1802f652e6afSaurel32# fdt probe
18032df87df7SJuan Quintelaif test "$fdt" != "no" ; then
1804b41af4baSJuan Quintela  fdt_libs="-lfdt"
1805f652e6afSaurel32  cat > $TMPC << EOF
1806f652e6afSaurel32int main(void) { return 0; }
1807f652e6afSaurel32EOF
180852166aa0SJuan Quintela  if compile_prog "" "$fdt_libs" ; then
1809f652e6afSaurel32    fdt=yes
1810e4782985SJuan Quintela    libs_softmmu="$fdt_libs $libs_softmmu"
18112df87df7SJuan Quintela  else
18122df87df7SJuan Quintela    if test "$fdt" = "yes" ; then
18132df87df7SJuan Quintela      feature_not_found "fdt"
18142df87df7SJuan Quintela    fi
18152df87df7SJuan Quintela    fdt=no
1816f652e6afSaurel32  fi
1817f652e6afSaurel32fi
1818f652e6afSaurel32
18193b3f24adSaurel32#
18203b3f24adSaurel32# Check for xxxat() functions when we are building linux-user
18213b3f24adSaurel32# emulator.  This is done because older glibc versions don't
18223b3f24adSaurel32# have syscall stubs for these implemented.
18233b3f24adSaurel32#
18243b3f24adSaurel32atfile=no
18253b3f24adSaurel32cat > $TMPC << EOF
18263b3f24adSaurel32#define _ATFILE_SOURCE
18273b3f24adSaurel32#include <sys/types.h>
18283b3f24adSaurel32#include <fcntl.h>
18293b3f24adSaurel32#include <unistd.h>
18303b3f24adSaurel32
18313b3f24adSaurel32int
18323b3f24adSaurel32main(void)
18333b3f24adSaurel32{
18343b3f24adSaurel32	/* try to unlink nonexisting file */
18353b3f24adSaurel32	return (unlinkat(AT_FDCWD, "nonexistent_file", 0));
18363b3f24adSaurel32}
18373b3f24adSaurel32EOF
183852166aa0SJuan Quintelaif compile_prog "" "" ; then
18393b3f24adSaurel32  atfile=yes
18403b3f24adSaurel32fi
18413b3f24adSaurel32
184239386ac7Saurel32# Check for inotify functions when we are building linux-user
18433b3f24adSaurel32# emulator.  This is done because older glibc versions don't
18443b3f24adSaurel32# have syscall stubs for these implemented.  In that case we
18453b3f24adSaurel32# don't provide them even if kernel supports them.
18463b3f24adSaurel32#
18473b3f24adSaurel32inotify=no
18483b3f24adSaurel32cat > $TMPC << EOF
18493b3f24adSaurel32#include <sys/inotify.h>
18503b3f24adSaurel32
18513b3f24adSaurel32int
18523b3f24adSaurel32main(void)
18533b3f24adSaurel32{
18543b3f24adSaurel32	/* try to start inotify */
18558690e420Saurel32	return inotify_init();
18563b3f24adSaurel32}
18573b3f24adSaurel32EOF
185852166aa0SJuan Quintelaif compile_prog "" "" ; then
18593b3f24adSaurel32  inotify=yes
18603b3f24adSaurel32fi
18613b3f24adSaurel32
1862c05c7a73SRiku Voipioinotify1=no
1863c05c7a73SRiku Voipiocat > $TMPC << EOF
1864c05c7a73SRiku Voipio#include <sys/inotify.h>
1865c05c7a73SRiku Voipio
1866c05c7a73SRiku Voipioint
1867c05c7a73SRiku Voipiomain(void)
1868c05c7a73SRiku Voipio{
1869c05c7a73SRiku Voipio    /* try to start inotify */
1870c05c7a73SRiku Voipio    return inotify_init1(0);
1871c05c7a73SRiku Voipio}
1872c05c7a73SRiku VoipioEOF
1873c05c7a73SRiku Voipioif compile_prog "" "" ; then
1874c05c7a73SRiku Voipio  inotify1=yes
1875c05c7a73SRiku Voipiofi
1876c05c7a73SRiku Voipio
1877ebc996f3SRiku Voipio# check if utimensat and futimens are supported
1878ebc996f3SRiku Voipioutimens=no
1879ebc996f3SRiku Voipiocat > $TMPC << EOF
1880ebc996f3SRiku Voipio#define _ATFILE_SOURCE
1881ebc996f3SRiku Voipio#define _GNU_SOURCE
1882ebc996f3SRiku Voipio#include <stddef.h>
1883ebc996f3SRiku Voipio#include <fcntl.h>
1884ebc996f3SRiku Voipio
1885ebc996f3SRiku Voipioint main(void)
1886ebc996f3SRiku Voipio{
1887ebc996f3SRiku Voipio    utimensat(AT_FDCWD, "foo", NULL, 0);
1888ebc996f3SRiku Voipio    futimens(0, NULL);
1889ebc996f3SRiku Voipio    return 0;
1890ebc996f3SRiku Voipio}
1891ebc996f3SRiku VoipioEOF
189252166aa0SJuan Quintelaif compile_prog "" "" ; then
1893ebc996f3SRiku Voipio  utimens=yes
1894ebc996f3SRiku Voipiofi
1895ebc996f3SRiku Voipio
1896099d6b0fSRiku Voipio# check if pipe2 is there
1897099d6b0fSRiku Voipiopipe2=no
1898099d6b0fSRiku Voipiocat > $TMPC << EOF
1899099d6b0fSRiku Voipio#define _GNU_SOURCE
1900099d6b0fSRiku Voipio#include <unistd.h>
1901099d6b0fSRiku Voipio#include <fcntl.h>
1902099d6b0fSRiku Voipio
1903099d6b0fSRiku Voipioint main(void)
1904099d6b0fSRiku Voipio{
1905099d6b0fSRiku Voipio    int pipefd[2];
1906099d6b0fSRiku Voipio    pipe2(pipefd, O_CLOEXEC);
1907099d6b0fSRiku Voipio    return 0;
1908099d6b0fSRiku Voipio}
1909099d6b0fSRiku VoipioEOF
191052166aa0SJuan Quintelaif compile_prog "" "" ; then
1911099d6b0fSRiku Voipio  pipe2=yes
1912099d6b0fSRiku Voipiofi
1913099d6b0fSRiku Voipio
191440ff6d7eSKevin Wolf# check if accept4 is there
191540ff6d7eSKevin Wolfaccept4=no
191640ff6d7eSKevin Wolfcat > $TMPC << EOF
191740ff6d7eSKevin Wolf#define _GNU_SOURCE
191840ff6d7eSKevin Wolf#include <sys/socket.h>
191940ff6d7eSKevin Wolf#include <stddef.h>
192040ff6d7eSKevin Wolf
192140ff6d7eSKevin Wolfint main(void)
192240ff6d7eSKevin Wolf{
192340ff6d7eSKevin Wolf    accept4(0, NULL, NULL, SOCK_CLOEXEC);
192440ff6d7eSKevin Wolf    return 0;
192540ff6d7eSKevin Wolf}
192640ff6d7eSKevin WolfEOF
192740ff6d7eSKevin Wolfif compile_prog "" "" ; then
192840ff6d7eSKevin Wolf  accept4=yes
192940ff6d7eSKevin Wolffi
193040ff6d7eSKevin Wolf
19313ce34dfbSvibisreenivasan# check if tee/splice is there. vmsplice was added same time.
19323ce34dfbSvibisreenivasansplice=no
19333ce34dfbSvibisreenivasancat > $TMPC << EOF
19343ce34dfbSvibisreenivasan#define _GNU_SOURCE
19353ce34dfbSvibisreenivasan#include <unistd.h>
19363ce34dfbSvibisreenivasan#include <fcntl.h>
19373ce34dfbSvibisreenivasan#include <limits.h>
19383ce34dfbSvibisreenivasan
19393ce34dfbSvibisreenivasanint main(void)
19403ce34dfbSvibisreenivasan{
19413ce34dfbSvibisreenivasan    int len, fd;
19423ce34dfbSvibisreenivasan    len = tee(STDIN_FILENO, STDOUT_FILENO, INT_MAX, SPLICE_F_NONBLOCK);
19433ce34dfbSvibisreenivasan    splice(STDIN_FILENO, NULL, fd, NULL, len, SPLICE_F_MOVE);
19443ce34dfbSvibisreenivasan    return 0;
19453ce34dfbSvibisreenivasan}
19463ce34dfbSvibisreenivasanEOF
194752166aa0SJuan Quintelaif compile_prog "" "" ; then
19483ce34dfbSvibisreenivasan  splice=yes
19493ce34dfbSvibisreenivasanfi
19503ce34dfbSvibisreenivasan
1951c2882b96SRiku Voipio# check if eventfd is supported
1952c2882b96SRiku Voipioeventfd=no
1953c2882b96SRiku Voipiocat > $TMPC << EOF
1954c2882b96SRiku Voipio#include <sys/eventfd.h>
1955c2882b96SRiku Voipio
1956c2882b96SRiku Voipioint main(void)
1957c2882b96SRiku Voipio{
1958c2882b96SRiku Voipio    int efd = eventfd(0, 0);
1959c2882b96SRiku Voipio    return 0;
1960c2882b96SRiku Voipio}
1961c2882b96SRiku VoipioEOF
1962c2882b96SRiku Voipioif compile_prog "" "" ; then
1963c2882b96SRiku Voipio  eventfd=yes
1964c2882b96SRiku Voipiofi
1965c2882b96SRiku Voipio
1966d0927938SUlrich Hecht# check for fallocate
1967d0927938SUlrich Hechtfallocate=no
1968d0927938SUlrich Hechtcat > $TMPC << EOF
1969d0927938SUlrich Hecht#include <fcntl.h>
1970d0927938SUlrich Hecht
1971d0927938SUlrich Hechtint main(void)
1972d0927938SUlrich Hecht{
1973d0927938SUlrich Hecht    fallocate(0, 0, 0, 0);
1974d0927938SUlrich Hecht    return 0;
1975d0927938SUlrich Hecht}
1976d0927938SUlrich HechtEOF
1977be17dc90SMichael S. Tsirkinif compile_prog "$ARCH_CFLAGS" "" ; then
1978d0927938SUlrich Hecht  fallocate=yes
1979d0927938SUlrich Hechtfi
1980d0927938SUlrich Hecht
1981d0927938SUlrich Hecht# check for dup3
1982d0927938SUlrich Hechtdup3=no
1983d0927938SUlrich Hechtcat > $TMPC << EOF
1984d0927938SUlrich Hecht#include <unistd.h>
1985d0927938SUlrich Hecht
1986d0927938SUlrich Hechtint main(void)
1987d0927938SUlrich Hecht{
1988d0927938SUlrich Hecht    dup3(0, 0, 0);
1989d0927938SUlrich Hecht    return 0;
1990d0927938SUlrich Hecht}
1991d0927938SUlrich HechtEOF
199278f5d726SJan Kiszkaif compile_prog "" "" ; then
1993d0927938SUlrich Hecht  dup3=yes
1994d0927938SUlrich Hechtfi
1995d0927938SUlrich Hecht
1996cc8ae6deSpbrook# Check if tools are available to build documentation.
1997a25dba17SJuan Quintelaif test "$docs" != "no" ; then
199801668d98SStefan Weil  if has makeinfo && has pod2man; then
1999a25dba17SJuan Quintela    docs=yes
200083a3ab8bSJuan Quintela  else
2001a25dba17SJuan Quintela    if test "$docs" = "yes" ; then
2002a25dba17SJuan Quintela      feature_not_found "docs"
200383a3ab8bSJuan Quintela    fi
2004a25dba17SJuan Quintela    docs=no
200583a3ab8bSJuan Quintela  fi
2006cc8ae6deSpbrookfi
2007cc8ae6deSpbrook
2008f514f41cSStefan Weil# Search for bswap_32 function
20096ae9a1f4SJuan Quintelabyteswap_h=no
20106ae9a1f4SJuan Quintelacat > $TMPC << EOF
20116ae9a1f4SJuan Quintela#include <byteswap.h>
20126ae9a1f4SJuan Quintelaint main(void) { return bswap_32(0); }
20136ae9a1f4SJuan QuintelaEOF
201452166aa0SJuan Quintelaif compile_prog "" "" ; then
20156ae9a1f4SJuan Quintela  byteswap_h=yes
20166ae9a1f4SJuan Quintelafi
20176ae9a1f4SJuan Quintela
2018f514f41cSStefan Weil# Search for bswap_32 function
20196ae9a1f4SJuan Quintelabswap_h=no
20206ae9a1f4SJuan Quintelacat > $TMPC << EOF
20216ae9a1f4SJuan Quintela#include <sys/endian.h>
20226ae9a1f4SJuan Quintela#include <sys/types.h>
20236ae9a1f4SJuan Quintela#include <machine/bswap.h>
20246ae9a1f4SJuan Quintelaint main(void) { return bswap32(0); }
20256ae9a1f4SJuan QuintelaEOF
202652166aa0SJuan Quintelaif compile_prog "" "" ; then
20276ae9a1f4SJuan Quintela  bswap_h=yes
20286ae9a1f4SJuan Quintelafi
20296ae9a1f4SJuan Quintela
2030da93a1fdSaliguori##########################################
2031da93a1fdSaliguori# Do we need librt
2032da93a1fdSaliguoricat > $TMPC <<EOF
2033da93a1fdSaliguori#include <signal.h>
2034da93a1fdSaliguori#include <time.h>
2035da93a1fdSaliguoriint main(void) { clockid_t id; return clock_gettime(id, NULL); }
2036da93a1fdSaliguoriEOF
2037da93a1fdSaliguori
203852166aa0SJuan Quintelaif compile_prog "" "" ; then
203907ffa4bdSJuan Quintela  :
204052166aa0SJuan Quintelaelif compile_prog "" "-lrt" ; then
204107ffa4bdSJuan Quintela  LIBS="-lrt $LIBS"
2042da93a1fdSaliguorifi
2043da93a1fdSaliguori
204431ff504dSBlue Swirlif test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \
2045179cf400SAndreas Färber        "$aix" != "yes" -a "$haiku" != "yes" ; then
20466362a53fSJuan Quintela    libs_softmmu="-lutil $libs_softmmu"
20476362a53fSJuan Quintelafi
20486362a53fSJuan Quintela
2049de5071c5SBlue Swirl##########################################
2050de5071c5SBlue Swirl# check if the compiler defines offsetof
2051de5071c5SBlue Swirl
2052de5071c5SBlue Swirlneed_offsetof=yes
2053de5071c5SBlue Swirlcat > $TMPC << EOF
2054de5071c5SBlue Swirl#include <stddef.h>
2055de5071c5SBlue Swirlint main(void) { struct s { int f; }; return offsetof(struct s, f); }
2056de5071c5SBlue SwirlEOF
2057de5071c5SBlue Swirlif compile_prog "" "" ; then
2058de5071c5SBlue Swirl    need_offsetof=no
2059de5071c5SBlue Swirlfi
2060de5071c5SBlue Swirl
20615f6b9e8fSBlue Swirl##########################################
2062747bbdf7SBlue Swirl# check if the compiler understands attribute warn_unused_result
2063747bbdf7SBlue Swirl#
2064747bbdf7SBlue Swirl# This could be smarter, but gcc -Werror does not error out even when warning
2065747bbdf7SBlue Swirl# about attribute warn_unused_result
2066747bbdf7SBlue Swirl
2067747bbdf7SBlue Swirlgcc_attribute_warn_unused_result=no
2068747bbdf7SBlue Swirlcat > $TMPC << EOF
2069747bbdf7SBlue Swirl#if defined(__GNUC__) && (__GNUC__ < 4) && defined(__GNUC_MINOR__) && (__GNUC__ < 4)
2070747bbdf7SBlue Swirl#error gcc 3.3 or older
2071747bbdf7SBlue Swirl#endif
2072747bbdf7SBlue Swirlint main(void) { return 0;}
2073747bbdf7SBlue SwirlEOF
2074747bbdf7SBlue Swirlif compile_prog "" ""; then
2075747bbdf7SBlue Swirl    gcc_attribute_warn_unused_result=yes
2076747bbdf7SBlue Swirlfi
2077747bbdf7SBlue Swirl
2078747bbdf7SBlue Swirl##########################################
20795f6b9e8fSBlue Swirl# check if we have fdatasync
20805f6b9e8fSBlue Swirl
20815f6b9e8fSBlue Swirlfdatasync=no
20825f6b9e8fSBlue Swirlcat > $TMPC << EOF
20835f6b9e8fSBlue Swirl#include <unistd.h>
20845f6b9e8fSBlue Swirlint main(void) { return fdatasync(0); }
20855f6b9e8fSBlue SwirlEOF
20865f6b9e8fSBlue Swirlif compile_prog "" "" ; then
20875f6b9e8fSBlue Swirl    fdatasync=yes
20885f6b9e8fSBlue Swirlfi
20895f6b9e8fSBlue Swirl
209094a420b1SStefan Hajnoczi##########################################
2091e78815a5SAndreas Färber# check if we have madvise
2092e78815a5SAndreas Färber
2093e78815a5SAndreas Färbermadvise=no
2094e78815a5SAndreas Färbercat > $TMPC << EOF
2095e78815a5SAndreas Färber#include <sys/types.h>
2096e78815a5SAndreas Färber#include <sys/mman.h>
2097e78815a5SAndreas Färberint main(void) { return madvise(NULL, 0, MADV_DONTNEED); }
2098e78815a5SAndreas FärberEOF
2099e78815a5SAndreas Färberif compile_prog "" "" ; then
2100e78815a5SAndreas Färber    madvise=yes
2101e78815a5SAndreas Färberfi
2102e78815a5SAndreas Färber
2103e78815a5SAndreas Färber##########################################
2104e78815a5SAndreas Färber# check if we have posix_madvise
2105e78815a5SAndreas Färber
2106e78815a5SAndreas Färberposix_madvise=no
2107e78815a5SAndreas Färbercat > $TMPC << EOF
2108e78815a5SAndreas Färber#include <sys/mman.h>
2109e78815a5SAndreas Färberint main(void) { return posix_madvise(NULL, 0, POSIX_MADV_DONTNEED); }
2110e78815a5SAndreas FärberEOF
2111e78815a5SAndreas Färberif compile_prog "" "" ; then
2112e78815a5SAndreas Färber    posix_madvise=yes
2113e78815a5SAndreas Färberfi
2114e78815a5SAndreas Färber
2115e78815a5SAndreas Färber##########################################
211694a420b1SStefan Hajnoczi# check if trace backend exists
211794a420b1SStefan Hajnoczi
211894a420b1SStefan Hajnoczish "$source_path/tracetool" "--$trace_backend" --check-backend > /dev/null 2> /dev/null
211994a420b1SStefan Hajnocziif test "$?" -ne 0 ; then
212094a420b1SStefan Hajnoczi  echo
212194a420b1SStefan Hajnoczi  echo "Error: invalid trace backend"
212294a420b1SStefan Hajnoczi  echo "Please choose a supported trace backend."
212394a420b1SStefan Hajnoczi  echo
212494a420b1SStefan Hajnoczi  exit 1
212594a420b1SStefan Hajnoczifi
212694a420b1SStefan Hajnoczi
21277e24e92aSStefan Hajnoczi##########################################
21287e24e92aSStefan Hajnoczi# For 'ust' backend, test if ust headers are present
21297e24e92aSStefan Hajnocziif test "$trace_backend" = "ust"; then
21307e24e92aSStefan Hajnoczi  cat > $TMPC << EOF
21317e24e92aSStefan Hajnoczi#include <ust/tracepoint.h>
21327e24e92aSStefan Hajnoczi#include <ust/marker.h>
21337e24e92aSStefan Hajnocziint main(void) { return 0; }
21347e24e92aSStefan HajnocziEOF
21357e24e92aSStefan Hajnoczi  if compile_prog "" "" ; then
21367e24e92aSStefan Hajnoczi    LIBS="-lust $LIBS"
21377e24e92aSStefan Hajnoczi  else
21387e24e92aSStefan Hajnoczi    echo
21397e24e92aSStefan Hajnoczi    echo "Error: Trace backend 'ust' missing libust header files"
21407e24e92aSStefan Hajnoczi    echo
21417e24e92aSStefan Hajnoczi    exit 1
21427e24e92aSStefan Hajnoczi  fi
21437e24e92aSStefan Hajnoczifi
21447e24e92aSStefan Hajnoczi##########################################
2145e86ecd4bSJuan Quintela# End of CC checks
2146e86ecd4bSJuan Quintela# After here, no more $cc or $ld runs
2147e86ecd4bSJuan Quintela
2148e86ecd4bSJuan Quintelaif test "$debug" = "no" ; then
21491156c669SJuan Quintela  CFLAGS="-O2 $CFLAGS"
2150e86ecd4bSJuan Quintelafi
2151a316e378SJuan Quintela
2152e86ecd4bSJuan Quintela# Consult white-list to determine whether to enable werror
2153e86ecd4bSJuan Quintela# by default.  Only enable by default for git builds
2154e86ecd4bSJuan Quintelaz_version=`cut -f3 -d. $source_path/VERSION`
215520ff6c80SAnthony Liguori
215620ff6c80SAnthony Liguoriif test -z "$werror" ; then
2157e86ecd4bSJuan Quintela    if test "$z_version" = "50" -a \
2158e86ecd4bSJuan Quintela        "$linux" = "yes" ; then
2159e86ecd4bSJuan Quintela        werror="yes"
2160e86ecd4bSJuan Quintela    else
2161e86ecd4bSJuan Quintela        werror="no"
2162e86ecd4bSJuan Quintela    fi
2163e86ecd4bSJuan Quintelafi
2164e86ecd4bSJuan Quintela
216520ff6c80SAnthony Liguori# Disable zero malloc errors for official releases unless explicitly told to
216620ff6c80SAnthony Liguori# enable/disable
216720ff6c80SAnthony Liguoriif test -z "$zero_malloc" ; then
216820ff6c80SAnthony Liguori    if test "$z_version" = "50" ; then
216920ff6c80SAnthony Liguori	zero_malloc="no"
217020ff6c80SAnthony Liguori    else
217120ff6c80SAnthony Liguori	zero_malloc="yes"
217220ff6c80SAnthony Liguori    fi
217320ff6c80SAnthony Liguorifi
217420ff6c80SAnthony Liguori
2175e86ecd4bSJuan Quintelaif test "$werror" = "yes" ; then
2176a558ee17SJuan Quintela    QEMU_CFLAGS="-Werror $QEMU_CFLAGS"
2177e86ecd4bSJuan Quintelafi
2178e86ecd4bSJuan Quintela
2179e86ecd4bSJuan Quintelaif test "$solaris" = "no" ; then
2180e86ecd4bSJuan Quintela    if $ld --version 2>/dev/null | grep "GNU ld" >/dev/null 2>/dev/null ; then
21811156c669SJuan Quintela        LDFLAGS="-Wl,--warn-common $LDFLAGS"
2182e86ecd4bSJuan Quintela    fi
2183e86ecd4bSJuan Quintelafi
2184e86ecd4bSJuan Quintela
2185952afb71SBlue Swirl# Use ASLR, no-SEH and DEP if available
2186952afb71SBlue Swirlif test "$mingw32" = "yes" ; then
2187952afb71SBlue Swirl    for flag in --dynamicbase --no-seh --nxcompat; do
2188952afb71SBlue Swirl        if $ld --help 2>/dev/null | grep ".$flag" >/dev/null 2>/dev/null ; then
2189952afb71SBlue Swirl            LDFLAGS="-Wl,$flag $LDFLAGS"
2190952afb71SBlue Swirl        fi
2191952afb71SBlue Swirl    done
2192952afb71SBlue Swirlfi
2193952afb71SBlue Swirl
2194190e9c59SPaolo Bonziniconfdir=$sysconfdir$confsuffix
21955a67135aSbellard
2196ca35f780SPaolo Bonzinitools=
2197ca35f780SPaolo Bonziniif test "$softmmu" = yes ; then
2198ca35f780SPaolo Bonzini  tools="qemu-img\$(EXESUF) qemu-io\$(EXESUF) $tools"
2199ca35f780SPaolo Bonzini  if [ "$linux" = "yes" -o "$bsd" = "yes" -o "$solaris" = "yes" ] ; then
2200ca35f780SPaolo Bonzini      tools="qemu-nbd\$(EXESUF) $tools"
2201ca35f780SPaolo Bonzini    if [ "$check_utests" = "yes" ]; then
2202ca35f780SPaolo Bonzini      tools="check-qint check-qstring check-qdict check-qlist $tools"
2203ca35f780SPaolo Bonzini      tools="check-qfloat check-qjson $tools"
2204ca35f780SPaolo Bonzini    fi
2205ca35f780SPaolo Bonzini  fi
2206ca35f780SPaolo Bonzinifi
2207ca35f780SPaolo Bonzini
2208ca35f780SPaolo Bonzini# Mac OS X ships with a broken assembler
2209ca35f780SPaolo Bonziniroms=
2210ca35f780SPaolo Bonziniif test \( "$cpu" = "i386" -o "$cpu" = "x86_64" \) -a \
2211ca35f780SPaolo Bonzini        "$targetos" != "Darwin" -a "$targetos" != "SunOS" -a \
2212ca35f780SPaolo Bonzini        "$softmmu" = yes ; then
2213ca35f780SPaolo Bonzini  roms="optionrom"
2214ca35f780SPaolo Bonzinifi
2215ca35f780SPaolo Bonzini
2216ca35f780SPaolo Bonzini
22177d13299dSbellardecho "Install prefix    $prefix"
2218f2b9e1e3SPaolo Bonziniecho "BIOS directory    `eval echo $datadir`"
2219f2b9e1e3SPaolo Bonziniecho "binary directory  `eval echo $bindir`"
22201c0fd160SAurelien Jarnoecho "config directory  `eval echo $sysconfdir`"
222111d9f695Sbellardif test "$mingw32" = "no" ; then
2222f2b9e1e3SPaolo Bonziniecho "Manual directory  `eval echo $mandir`"
222343ce4dfeSbellardecho "ELF interp prefix $interp_prefix"
222411d9f695Sbellardfi
22255a67135aSbellardecho "Source path       $source_path"
22267d13299dSbellardecho "C compiler        $cc"
222783469015Sbellardecho "Host C compiler   $host_cc"
22280c439cbfSJuan Quintelaecho "CFLAGS            $CFLAGS"
2229a558ee17SJuan Quintelaecho "QEMU_CFLAGS       $QEMU_CFLAGS"
22300c439cbfSJuan Quintelaecho "LDFLAGS           $LDFLAGS"
22317d13299dSbellardecho "make              $make"
22326a882643Spbrookecho "install           $install"
2233a98fd896Sbellardecho "host CPU          $cpu"
2234de83cd02Sbellardecho "host big endian   $bigendian"
223597a847bcSbellardecho "target list       $target_list"
2236ade25b0dSaurel32echo "tcg debug enabled $debug_tcg"
2237b4475aa2SLuiz Capitulinoecho "Mon debug enabled $debug_mon"
22387d13299dSbellardecho "gprof enabled     $gprof"
223903b4fe7dSaliguoriecho "sparse enabled    $sparse"
22401625af87Saliguoriecho "strip binaries    $strip_opt"
224105c2a3e7Sbellardecho "profiler          $profiler"
224243ce4dfeSbellardecho "static build      $static"
224385aa5189Sbellardecho "-Werror enabled   $werror"
22445b0753e0Sbellardif test "$darwin" = "yes" ; then
22455b0753e0Sbellard    echo "Cocoa support     $cocoa"
22465b0753e0Sbellardfi
224797a847bcSbellardecho "SDL support       $sdl"
22484d3b6f6eSbalrogecho "curses support    $curses"
2249769ce76dSAlexander Grafecho "curl support      $curl"
22505495ed11SLuiz Capitulinoecho "check support     $check_utests"
225167b915a5Sbellardecho "mingw32 support   $mingw32"
22520c58ac1cSmalcecho "Audio drivers     $audio_drv_list"
22530c58ac1cSmalcecho "Extra audio cards $audio_card_list"
2254eb852011SMarkus Armbrusterecho "Block whitelist   $block_drv_whitelist"
22558ff9cbf7Smalcecho "Mixer emulation   $mixemu"
22568d5d2d4cSthsecho "VNC TLS support   $vnc_tls"
22572f9606b3Saliguoriecho "VNC SASL support  $vnc_sasl"
22582f6f5c7aSCorentin Charyecho "VNC JPEG support  $vnc_jpeg"
2259efe556adSCorentin Charyecho "VNC PNG support   $vnc_png"
2260bd023f95SCorentin Charyecho "VNC thread        $vnc_thread"
22613142255cSblueswir1if test -n "$sparc_cpu"; then
22623142255cSblueswir1    echo "Target Sparc Arch $sparc_cpu"
22633142255cSblueswir1fi
2264e37630caSaliguoriecho "xen support       $xen"
22652e4d9fb1Saurel32echo "brlapi support    $brlapi"
2266a20a6f46SJuan Quintelaecho "bluez  support    $bluez"
2267a25dba17SJuan Quintelaecho "Documentation     $docs"
2268c5937220Spbrook[ ! -z "$uname_release" ] && \
2269c5937220Spbrookecho "uname -r          $uname_release"
2270bd0c5661Spbrookecho "NPTL support      $nptl"
2271379f6698SPaul Brookecho "GUEST_BASE        $guest_base"
227234005a00SKirill A. Shutemovecho "PIE user targets  $user_pie"
22738a16d273Sthsecho "vde support       $vde"
2274e5d355d1Saliguoriecho "IO thread         $io_thread"
22755c6c3a6cSChristoph Hellwigecho "Linux AIO support $linux_aio"
2276758e8e38SVenkateswararao Jujjuri (JV)echo "ATTR/XATTR support $attr"
227777755340Sthsecho "Install blobs     $blobs"
2278b31a0277SJuan Quintelaecho "KVM support       $kvm"
2279f652e6afSaurel32echo "fdt support       $fdt"
2280ceb42de8Saliguoriecho "preadv support    $preadv"
22815f6b9e8fSBlue Swirlecho "fdatasync         $fdatasync"
2282e78815a5SAndreas Färberecho "madvise           $madvise"
2283e78815a5SAndreas Färberecho "posix_madvise     $posix_madvise"
2284ee682d27SStefan Weilecho "uuid support      $uuid"
2285d5970055SMichael S. Tsirkinecho "vhost-net support $vhost_net"
228694a420b1SStefan Hajnocziecho "Trace backend     $trace_backend"
22879410b56cSPrerna Saxenaecho "Trace output file $trace_file-<pid>"
228867b915a5Sbellard
228997a847bcSbellardif test $sdl_too_old = "yes"; then
229024b55b96Sbellardecho "-> Your SDL version is too old - please upgrade to have SDL support"
2291e8cd23deSbellardfi
229297a847bcSbellard
229398ec69acSJuan Quintelaconfig_host_mak="config-host.mak"
22944bf6b55bSJuan Quintelaconfig_host_ld="config-host.ld"
229597a847bcSbellard
229698ec69acSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_host_mak
229798ec69acSJuan Quintelaprintf "# Configured with:" >> $config_host_mak
229898ec69acSJuan Quintelaprintf " '%s'" "$0" "$@" >> $config_host_mak
229998ec69acSJuan Quintelaecho >> $config_host_mak
230098ec69acSJuan Quintela
230199d7cc75SPaolo Bonziniecho "prefix=$prefix" >> $config_host_mak
230299d7cc75SPaolo Bonziniecho "bindir=$bindir" >> $config_host_mak
230399d7cc75SPaolo Bonziniecho "mandir=$mandir" >> $config_host_mak
230499d7cc75SPaolo Bonziniecho "datadir=$datadir" >> $config_host_mak
230599d7cc75SPaolo Bonziniecho "sysconfdir=$sysconfdir" >> $config_host_mak
230699d7cc75SPaolo Bonziniecho "docdir=$docdir" >> $config_host_mak
23071dabe05cSPaolo Bonziniecho "confdir=$confdir" >> $config_host_mak
2308804edf29SJuan Quintela
23092408a527Saurel32case "$cpu" in
231024e804ecSAlexander Graf  i386|x86_64|alpha|cris|hppa|ia64|m68k|microblaze|mips|mips64|ppc|ppc64|s390|s390x|sparc|sparc64)
2311e0da9dd3SJuan Quintela    ARCH=$cpu
23122408a527Saurel32  ;;
2313a302c32dSLaurent Desnogues  armv4b|armv4l)
231416dbd14fSJuan Quintela    ARCH=arm
23152408a527Saurel32  ;;
23162408a527Saurel32esac
231798ec69acSJuan Quintelaecho "ARCH=$ARCH" >> $config_host_mak
2318f8393946Saurel32if test "$debug_tcg" = "yes" ; then
23192358a494SJuan Quintela  echo "CONFIG_DEBUG_TCG=y" >> $config_host_mak
2320f8393946Saurel32fi
2321b4475aa2SLuiz Capitulinoif test "$debug_mon" = "yes" ; then
2322b4475aa2SLuiz Capitulino  echo "CONFIG_DEBUG_MONITOR=y" >> $config_host_mak
2323b4475aa2SLuiz Capitulinofi
2324f3d08ee6SPaul Brookif test "$debug" = "yes" ; then
23252358a494SJuan Quintela  echo "CONFIG_DEBUG_EXEC=y" >> $config_host_mak
2326f3d08ee6SPaul Brookfi
23271625af87Saliguoriif test "$strip_opt" = "yes" ; then
232852ba784dSHollis Blanchard  echo "STRIP=${strip}" >> $config_host_mak
23291625af87Saliguorifi
23307d13299dSbellardif test "$bigendian" = "yes" ; then
2331e2542fe2SJuan Quintela  echo "HOST_WORDS_BIGENDIAN=y" >> $config_host_mak
233297a847bcSbellardfi
23332358a494SJuan Quintelaecho "HOST_LONG_BITS=$hostlongbits" >> $config_host_mak
233467b915a5Sbellardif test "$mingw32" = "yes" ; then
233598ec69acSJuan Quintela  echo "CONFIG_WIN32=y" >> $config_host_mak
23369fe6de94SBlue Swirl  rc_version=`cat $source_path/VERSION`
23379fe6de94SBlue Swirl  version_major=${rc_version%%.*}
23389fe6de94SBlue Swirl  rc_version=${rc_version#*.}
23399fe6de94SBlue Swirl  version_minor=${rc_version%%.*}
23409fe6de94SBlue Swirl  rc_version=${rc_version#*.}
23419fe6de94SBlue Swirl  version_subminor=${rc_version%%.*}
23429fe6de94SBlue Swirl  version_micro=0
23439fe6de94SBlue Swirl  echo "CONFIG_FILEVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
23449fe6de94SBlue Swirl  echo "CONFIG_PRODUCTVERSION=$version_major,$version_minor,$version_subminor,$version_micro" >> $config_host_mak
2345210fa556Spbrookelse
234635f4df27SJuan Quintela  echo "CONFIG_POSIX=y" >> $config_host_mak
2347210fa556Spbrookfi
2348128ab2ffSblueswir1
2349dffcb71cSMark McLoughlinif test "$linux" = "yes" ; then
2350dffcb71cSMark McLoughlin  echo "CONFIG_LINUX=y" >> $config_host_mak
2351dffcb71cSMark McLoughlinfi
2352dffcb71cSMark McLoughlin
235383fb7adfSbellardif test "$darwin" = "yes" ; then
235498ec69acSJuan Quintela  echo "CONFIG_DARWIN=y" >> $config_host_mak
235583fb7adfSbellardfi
2356b29fe3edSmalc
2357b29fe3edSmalcif test "$aix" = "yes" ; then
235898ec69acSJuan Quintela  echo "CONFIG_AIX=y" >> $config_host_mak
2359b29fe3edSmalcfi
2360b29fe3edSmalc
2361ec530c81Sbellardif test "$solaris" = "yes" ; then
236298ec69acSJuan Quintela  echo "CONFIG_SOLARIS=y" >> $config_host_mak
23632358a494SJuan Quintela  echo "CONFIG_SOLARIS_VERSION=$solarisrev" >> $config_host_mak
23640475a5caSths  if test "$needs_libsunmath" = "yes" ; then
236575b5a697SJuan Quintela    echo "CONFIG_NEEDS_LIBSUNMATH=y" >> $config_host_mak
23660475a5caSths  fi
2367ec530c81Sbellardfi
2368179cf400SAndreas Färberif test "$haiku" = "yes" ; then
2369179cf400SAndreas Färber  echo "CONFIG_HAIKU=y" >> $config_host_mak
2370179cf400SAndreas Färberfi
237197a847bcSbellardif test "$static" = "yes" ; then
237298ec69acSJuan Quintela  echo "CONFIG_STATIC=y" >> $config_host_mak
237397a847bcSbellardfi
237405c2a3e7Sbellardif test $profiler = "yes" ; then
23752358a494SJuan Quintela  echo "CONFIG_PROFILER=y" >> $config_host_mak
237605c2a3e7Sbellardfi
2377c20709aaSbellardif test "$slirp" = "yes" ; then
237898ec69acSJuan Quintela  echo "CONFIG_SLIRP=y" >> $config_host_mak
2379b6e31c12SJuan Quintela  QEMU_CFLAGS="-I\$(SRC_PATH)/slirp $QEMU_CFLAGS"
2380c20709aaSbellardfi
23818a16d273Sthsif test "$vde" = "yes" ; then
238298ec69acSJuan Quintela  echo "CONFIG_VDE=y" >> $config_host_mak
23838a16d273Sthsfi
23840c58ac1cSmalcfor card in $audio_card_list; do
2385f6e5889eSpbrook    def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
238698ec69acSJuan Quintela    echo "$def=y" >> $config_host_mak
23870c58ac1cSmalcdone
23882358a494SJuan Quintelaecho "CONFIG_AUDIO_DRIVERS=$audio_drv_list" >> $config_host_mak
23890c58ac1cSmalcfor drv in $audio_drv_list; do
2390f6e5889eSpbrook    def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
239198ec69acSJuan Quintela    echo "$def=y" >> $config_host_mak
2392923e4521Smalc    if test "$drv" = "fmod"; then
23937aac6cb1SJuan Quintela        echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak
2394fb065187Sbellard    fi
23950c58ac1cSmalcdone
239667f86e8eSJuan Quintelaif test "$audio_pt_int" = "yes" ; then
239767f86e8eSJuan Quintela  echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak
239867f86e8eSJuan Quintelafi
2399d5631638Smalcif test "$audio_win_int" = "yes" ; then
2400d5631638Smalc  echo "CONFIG_AUDIO_WIN_INT=y" >> $config_host_mak
2401d5631638Smalcfi
2402eb852011SMarkus Armbrusterecho "CONFIG_BDRV_WHITELIST=$block_drv_whitelist" >> $config_host_mak
24038ff9cbf7Smalcif test "$mixemu" = "yes" ; then
240498ec69acSJuan Quintela  echo "CONFIG_MIXEMU=y" >> $config_host_mak
24058ff9cbf7Smalcfi
24068d5d2d4cSthsif test "$vnc_tls" = "yes" ; then
240798ec69acSJuan Quintela  echo "CONFIG_VNC_TLS=y" >> $config_host_mak
2408525061bfSJuan Quintela  echo "VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_host_mak
24098d5d2d4cSthsfi
24102f9606b3Saliguoriif test "$vnc_sasl" = "yes" ; then
241198ec69acSJuan Quintela  echo "CONFIG_VNC_SASL=y" >> $config_host_mak
241260ddf533SJuan Quintela  echo "VNC_SASL_CFLAGS=$vnc_sasl_cflags" >> $config_host_mak
24132f9606b3Saliguorifi
241496763cf9SCorentin Charyif test "$vnc_jpeg" != "no" ; then
24152f6f5c7aSCorentin Chary  echo "CONFIG_VNC_JPEG=y" >> $config_host_mak
24162f6f5c7aSCorentin Chary  echo "VNC_JPEG_CFLAGS=$vnc_jpeg_cflags" >> $config_host_mak
24172f6f5c7aSCorentin Charyfi
241896763cf9SCorentin Charyif test "$vnc_png" != "no" ; then
2419efe556adSCorentin Chary  echo "CONFIG_VNC_PNG=y" >> $config_host_mak
2420efe556adSCorentin Chary  echo "VNC_PNG_CFLAGS=$vnc_png_cflags" >> $config_host_mak
2421efe556adSCorentin Charyfi
242296763cf9SCorentin Charyif test "$vnc_thread" != "no" ; then
2423bd023f95SCorentin Chary  echo "CONFIG_VNC_THREAD=y" >> $config_host_mak
2424bd023f95SCorentin Chary  echo "CONFIG_THREAD=y" >> $config_host_mak
2425bd023f95SCorentin Charyfi
242676655d6dSaliguoriif test "$fnmatch" = "yes" ; then
24272358a494SJuan Quintela  echo "CONFIG_FNMATCH=y" >> $config_host_mak
242876655d6dSaliguorifi
2429ee682d27SStefan Weilif test "$uuid" = "yes" ; then
2430ee682d27SStefan Weil  echo "CONFIG_UUID=y" >> $config_host_mak
2431ee682d27SStefan Weilfi
2432b1a550a0Spbrookqemu_version=`head $source_path/VERSION`
243398ec69acSJuan Quintelaecho "VERSION=$qemu_version" >>$config_host_mak
24342358a494SJuan Quintelaecho "PKGVERSION=$pkgversion" >>$config_host_mak
243598ec69acSJuan Quintelaecho "SRC_PATH=$source_path" >> $config_host_mak
243698ec69acSJuan Quintelaecho "TARGET_DIRS=$target_list" >> $config_host_mak
2437a25dba17SJuan Quintelaif [ "$docs" = "yes" ] ; then
243898ec69acSJuan Quintela  echo "BUILD_DOCS=yes" >> $config_host_mak
2439cc8ae6deSpbrookfi
24401ac88f28SJuan Quintelaif test "$sdl" = "yes" ; then
244198ec69acSJuan Quintela  echo "CONFIG_SDL=y" >> $config_host_mak
24428ad3a7ddSJuan Quintela  echo "SDL_CFLAGS=$sdl_cflags" >> $config_host_mak
244349ecc3faSbellardfi
244449ecc3faSbellardif test "$cocoa" = "yes" ; then
244598ec69acSJuan Quintela  echo "CONFIG_COCOA=y" >> $config_host_mak
244649ecc3faSbellardfi
24474d3b6f6eSbalrogif test "$curses" = "yes" ; then
244898ec69acSJuan Quintela  echo "CONFIG_CURSES=y" >> $config_host_mak
2449ab4e5602SJan Kiszkafi
24503b3f24adSaurel32if test "$atfile" = "yes" ; then
24512358a494SJuan Quintela  echo "CONFIG_ATFILE=y" >> $config_host_mak
24523b3f24adSaurel32fi
2453ebc996f3SRiku Voipioif test "$utimens" = "yes" ; then
24542358a494SJuan Quintela  echo "CONFIG_UTIMENSAT=y" >> $config_host_mak
2455ebc996f3SRiku Voipiofi
2456099d6b0fSRiku Voipioif test "$pipe2" = "yes" ; then
24572358a494SJuan Quintela  echo "CONFIG_PIPE2=y" >> $config_host_mak
2458099d6b0fSRiku Voipiofi
245940ff6d7eSKevin Wolfif test "$accept4" = "yes" ; then
246040ff6d7eSKevin Wolf  echo "CONFIG_ACCEPT4=y" >> $config_host_mak
246140ff6d7eSKevin Wolffi
24623ce34dfbSvibisreenivasanif test "$splice" = "yes" ; then
24632358a494SJuan Quintela  echo "CONFIG_SPLICE=y" >> $config_host_mak
24643ce34dfbSvibisreenivasanfi
2465c2882b96SRiku Voipioif test "$eventfd" = "yes" ; then
2466c2882b96SRiku Voipio  echo "CONFIG_EVENTFD=y" >> $config_host_mak
2467c2882b96SRiku Voipiofi
2468d0927938SUlrich Hechtif test "$fallocate" = "yes" ; then
2469d0927938SUlrich Hecht  echo "CONFIG_FALLOCATE=y" >> $config_host_mak
2470d0927938SUlrich Hechtfi
2471d0927938SUlrich Hechtif test "$dup3" = "yes" ; then
2472d0927938SUlrich Hecht  echo "CONFIG_DUP3=y" >> $config_host_mak
2473d0927938SUlrich Hechtfi
24743b3f24adSaurel32if test "$inotify" = "yes" ; then
24752358a494SJuan Quintela  echo "CONFIG_INOTIFY=y" >> $config_host_mak
24763b3f24adSaurel32fi
2477c05c7a73SRiku Voipioif test "$inotify1" = "yes" ; then
2478c05c7a73SRiku Voipio  echo "CONFIG_INOTIFY1=y" >> $config_host_mak
2479c05c7a73SRiku Voipiofi
24806ae9a1f4SJuan Quintelaif test "$byteswap_h" = "yes" ; then
24816ae9a1f4SJuan Quintela  echo "CONFIG_BYTESWAP_H=y" >> $config_host_mak
24826ae9a1f4SJuan Quintelafi
24836ae9a1f4SJuan Quintelaif test "$bswap_h" = "yes" ; then
24846ae9a1f4SJuan Quintela  echo "CONFIG_MACHINE_BSWAP_H=y" >> $config_host_mak
24856ae9a1f4SJuan Quintelafi
2486769ce76dSAlexander Grafif test "$curl" = "yes" ; then
248798ec69acSJuan Quintela  echo "CONFIG_CURL=y" >> $config_host_mak
2488b1d5a277SJuan Quintela  echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak
2489769ce76dSAlexander Graffi
24902e4d9fb1Saurel32if test "$brlapi" = "yes" ; then
249198ec69acSJuan Quintela  echo "CONFIG_BRLAPI=y" >> $config_host_mak
24922e4d9fb1Saurel32fi
2493fb599c9aSbalrogif test "$bluez" = "yes" ; then
249498ec69acSJuan Quintela  echo "CONFIG_BLUEZ=y" >> $config_host_mak
2495ef7635ecSJuan Quintela  echo "BLUEZ_CFLAGS=$bluez_cflags" >> $config_host_mak
2496fb599c9aSbalrogfi
2497e37630caSaliguoriif test "$xen" = "yes" ; then
24985647eb74SJuan Quintela  echo "CONFIG_XEN=y" >> $config_host_mak
2499e37630caSaliguorifi
2500e5d355d1Saliguoriif test "$io_thread" = "yes" ; then
250198ec69acSJuan Quintela  echo "CONFIG_IOTHREAD=y" >> $config_host_mak
2502bd023f95SCorentin Chary  echo "CONFIG_THREAD=y" >> $config_host_mak
2503e5d355d1Saliguorifi
25045c6c3a6cSChristoph Hellwigif test "$linux_aio" = "yes" ; then
25055c6c3a6cSChristoph Hellwig  echo "CONFIG_LINUX_AIO=y" >> $config_host_mak
25065c6c3a6cSChristoph Hellwigfi
2507758e8e38SVenkateswararao Jujjuri (JV)if test "$attr" = "yes" ; then
2508758e8e38SVenkateswararao Jujjuri (JV)  echo "CONFIG_ATTR=y" >> $config_host_mak
2509758e8e38SVenkateswararao Jujjuri (JV)fi
2510758e8e38SVenkateswararao Jujjuri (JV)if test "$linux" = "yes" ; then
2511758e8e38SVenkateswararao Jujjuri (JV)  if test "$attr" = "yes" ; then
2512758e8e38SVenkateswararao Jujjuri (JV)    echo "CONFIG_VIRTFS=y" >> $config_host_mak
2513758e8e38SVenkateswararao Jujjuri (JV)  fi
2514758e8e38SVenkateswararao Jujjuri (JV)fi
251577755340Sthsif test "$blobs" = "yes" ; then
251698ec69acSJuan Quintela  echo "INSTALL_BLOBS=yes" >> $config_host_mak
251777755340Sthsfi
2518bf9298b9Saliguoriif test "$iovec" = "yes" ; then
25192358a494SJuan Quintela  echo "CONFIG_IOVEC=y" >> $config_host_mak
2520bf9298b9Saliguorifi
2521ceb42de8Saliguoriif test "$preadv" = "yes" ; then
25222358a494SJuan Quintela  echo "CONFIG_PREADV=y" >> $config_host_mak
2523ceb42de8Saliguorifi
2524f652e6afSaurel32if test "$fdt" = "yes" ; then
25253f0855b1SJuan Quintela  echo "CONFIG_FDT=y" >> $config_host_mak
2526f652e6afSaurel32fi
2527de5071c5SBlue Swirlif test "$need_offsetof" = "yes" ; then
2528de5071c5SBlue Swirl  echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak
2529de5071c5SBlue Swirlfi
2530747bbdf7SBlue Swirlif test "$gcc_attribute_warn_unused_result" = "yes" ; then
2531747bbdf7SBlue Swirl  echo "CONFIG_GCC_ATTRIBUTE_WARN_UNUSED_RESULT=y" >> $config_host_mak
2532747bbdf7SBlue Swirlfi
25335f6b9e8fSBlue Swirlif test "$fdatasync" = "yes" ; then
25345f6b9e8fSBlue Swirl  echo "CONFIG_FDATASYNC=y" >> $config_host_mak
25355f6b9e8fSBlue Swirlfi
2536e78815a5SAndreas Färberif test "$madvise" = "yes" ; then
2537e78815a5SAndreas Färber  echo "CONFIG_MADVISE=y" >> $config_host_mak
2538e78815a5SAndreas Färberfi
2539e78815a5SAndreas Färberif test "$posix_madvise" = "yes" ; then
2540e78815a5SAndreas Färber  echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak
2541e78815a5SAndreas Färberfi
254297a847bcSbellard
254383fb7adfSbellard# XXX: suppress that
25447d3505c5Sbellardif [ "$bsd" = "yes" ] ; then
25452358a494SJuan Quintela  echo "CONFIG_BSD=y" >> $config_host_mak
25467d3505c5Sbellardfi
25477d3505c5Sbellard
25482358a494SJuan Quintelaecho "CONFIG_UNAME_RELEASE=\"$uname_release\"" >> $config_host_mak
2549c5937220Spbrook
255020ff6c80SAnthony Liguoriif test "$zero_malloc" = "yes" ; then
255120ff6c80SAnthony Liguori  echo "CONFIG_ZERO_MALLOC=y" >> $config_host_mak
255220ff6c80SAnthony Liguorifi
255320ff6c80SAnthony Liguori
255468063649Sblueswir1# USB host support
255568063649Sblueswir1case "$usb" in
255668063649Sblueswir1linux)
255798ec69acSJuan Quintela  echo "HOST_USB=linux" >> $config_host_mak
255868063649Sblueswir1;;
255968063649Sblueswir1bsd)
256098ec69acSJuan Quintela  echo "HOST_USB=bsd" >> $config_host_mak
256168063649Sblueswir1;;
256268063649Sblueswir1*)
256398ec69acSJuan Quintela  echo "HOST_USB=stub" >> $config_host_mak
256468063649Sblueswir1;;
256568063649Sblueswir1esac
256668063649Sblueswir1
256794a420b1SStefan Hajnocziecho "TRACE_BACKEND=$trace_backend" >> $config_host_mak
256822890ab5SPrerna Saxenaif test "$trace_backend" = "simple"; then
256922890ab5SPrerna Saxena  echo "CONFIG_SIMPLE_TRACE=y" >> $config_host_mak
257022890ab5SPrerna Saxenafi
25719410b56cSPrerna Saxena# Set the appropriate trace file.
25729410b56cSPrerna Saxenaif test "$trace_backend" = "simple"; then
25739410b56cSPrerna Saxena  trace_file="\"$trace_file-%u\""
25749410b56cSPrerna Saxenafi
25759410b56cSPrerna Saxenaecho "CONFIG_TRACE_FILE=$trace_file" >> $config_host_mak
25769410b56cSPrerna Saxena
257798ec69acSJuan Quintelaecho "TOOLS=$tools" >> $config_host_mak
257898ec69acSJuan Quintelaecho "ROMS=$roms" >> $config_host_mak
2579804edf29SJuan Quintelaecho "MAKE=$make" >> $config_host_mak
2580804edf29SJuan Quintelaecho "INSTALL=$install" >> $config_host_mak
2581804edf29SJuan Quintelaecho "INSTALL_DIR=$install -d -m0755 -p" >> $config_host_mak
2582804edf29SJuan Quintelaecho "INSTALL_DATA=$install -m0644 -p" >> $config_host_mak
2583804edf29SJuan Quintelaecho "INSTALL_PROG=$install -m0755 -p" >> $config_host_mak
2584804edf29SJuan Quintelaecho "CC=$cc" >> $config_host_mak
2585804edf29SJuan Quintelaecho "HOST_CC=$host_cc" >> $config_host_mak
2586804edf29SJuan Quintelaif test "$sparse" = "yes" ; then
2587804edf29SJuan Quintela  echo "CC      := REAL_CC=\"\$(CC)\" cgcc"       >> $config_host_mak
2588804edf29SJuan Quintela  echo "HOST_CC := REAL_CC=\"\$(HOST_CC)\" cgcc"  >> $config_host_mak
2589a558ee17SJuan Quintela  echo "QEMU_CFLAGS  += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
2590804edf29SJuan Quintelafi
2591804edf29SJuan Quintelaecho "AR=$ar" >> $config_host_mak
2592804edf29SJuan Quintelaecho "OBJCOPY=$objcopy" >> $config_host_mak
2593804edf29SJuan Quintelaecho "LD=$ld" >> $config_host_mak
25949fe6de94SBlue Swirlecho "WINDRES=$windres" >> $config_host_mak
2595e2a2ed06SJuan Quintelaecho "CFLAGS=$CFLAGS" >> $config_host_mak
2596a558ee17SJuan Quintelaecho "QEMU_CFLAGS=$QEMU_CFLAGS" >> $config_host_mak
2597c81da56eSJuan Quintelaecho "HELPER_CFLAGS=$helper_cflags" >> $config_host_mak
2598e2a2ed06SJuan Quintelaecho "LDFLAGS=$LDFLAGS" >> $config_host_mak
2599a36abbbbSJuan Quintelaecho "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak
2600a36abbbbSJuan Quintelaecho "ARLIBS_END=$arlibs_end" >> $config_host_mak
260173da375eSJuan Quintelaecho "LIBS+=$LIBS" >> $config_host_mak
26023e2e0e6bSJuan Quintelaecho "LIBS_TOOLS+=$libs_tools" >> $config_host_mak
2603804edf29SJuan Quintelaecho "EXESUF=$EXESUF" >> $config_host_mak
2604804edf29SJuan Quintela
26054bf6b55bSJuan Quintela# generate list of library paths for linker script
26064bf6b55bSJuan Quintela
26074bf6b55bSJuan Quintela$ld --verbose -v 2> /dev/null | grep SEARCH_DIR > ${config_host_ld}
26084bf6b55bSJuan Quintela
26094bf6b55bSJuan Quintelaif test -f ${config_host_ld}~ ; then
26104bf6b55bSJuan Quintela  if cmp -s $config_host_ld ${config_host_ld}~ ; then
26114bf6b55bSJuan Quintela    mv ${config_host_ld}~ $config_host_ld
26124bf6b55bSJuan Quintela  else
26134bf6b55bSJuan Quintela    rm ${config_host_ld}~
26144bf6b55bSJuan Quintela  fi
26154bf6b55bSJuan Quintelafi
26164bf6b55bSJuan Quintela
26174d904533SBlue Swirlfor d in libdis libdis-user; do
26184d904533SBlue Swirl    mkdir -p $d
26194d904533SBlue Swirl    rm -f $d/Makefile
26204d904533SBlue Swirl    ln -s $source_path/Makefile.dis $d/Makefile
26214d904533SBlue Swirl    echo > $d/config.mak
26224d904533SBlue Swirldone
2623d44cff22SRichard Hendersonif test "$static" = "no" -a "$user_pie" = "yes" ; then
2624d44cff22SRichard Henderson  echo "QEMU_CFLAGS+=-fpie" > libdis-user/config.mak
2625d44cff22SRichard Hendersonfi
26264d904533SBlue Swirl
262797a847bcSbellardfor target in $target_list; do
262897a847bcSbellardtarget_dir="$target"
262925be210fSJuan Quintelaconfig_target_mak=$target_dir/config-target.mak
2630600309b6SBlue Swirltarget_arch2=`echo $target | cut -d '-' -f 1`
263197a847bcSbellardtarget_bigendian="no"
26321f3d3c8fSJuan Quintela
2633ea2d6a39SJuan Quintelacase "$target_arch2" in
263424e804ecSAlexander Graf  armeb|m68k|microblaze|mips|mipsn32|mips64|ppc|ppcemb|ppc64|ppc64abi32|s390x|sh4eb|sparc|sparc64|sparc32plus)
2635ea2d6a39SJuan Quintela  target_bigendian=yes
2636ea2d6a39SJuan Quintela  ;;
2637ea2d6a39SJuan Quintelaesac
263897a847bcSbellardtarget_softmmu="no"
2639997344f3Sbellardtarget_user_only="no"
2640831b7825Sthstarget_linux_user="no"
2641831b7825Sthstarget_darwin_user="no"
264284778508Sblueswir1target_bsd_user="no"
26439e407a85Spbrookcase "$target" in
2644600309b6SBlue Swirl  ${target_arch2}-softmmu)
26459e407a85Spbrook    target_softmmu="yes"
26469e407a85Spbrook    ;;
2647600309b6SBlue Swirl  ${target_arch2}-linux-user)
26489c7a4202SBlue Swirl    if test "$linux" != "yes" ; then
26499c7a4202SBlue Swirl      echo "ERROR: Target '$target' is only available on a Linux host"
26509c7a4202SBlue Swirl      exit 1
26519c7a4202SBlue Swirl    fi
26529e407a85Spbrook    target_user_only="yes"
26539e407a85Spbrook    target_linux_user="yes"
26549e407a85Spbrook    ;;
2655600309b6SBlue Swirl  ${target_arch2}-darwin-user)
26569c7a4202SBlue Swirl    if test "$darwin" != "yes" ; then
26579c7a4202SBlue Swirl      echo "ERROR: Target '$target' is only available on a Darwin host"
26589c7a4202SBlue Swirl      exit 1
26599c7a4202SBlue Swirl    fi
26609e407a85Spbrook    target_user_only="yes"
2661831b7825Sths    target_darwin_user="yes"
26629e407a85Spbrook    ;;
2663600309b6SBlue Swirl  ${target_arch2}-bsd-user)
26649cf55765SBlue Swirl    if test "$bsd" != "yes" ; then
26659c7a4202SBlue Swirl      echo "ERROR: Target '$target' is only available on a BSD host"
26669c7a4202SBlue Swirl      exit 1
26679c7a4202SBlue Swirl    fi
266884778508Sblueswir1    target_user_only="yes"
266984778508Sblueswir1    target_bsd_user="yes"
267084778508Sblueswir1    ;;
26719e407a85Spbrook  *)
26729e407a85Spbrook    echo "ERROR: Target '$target' not recognised"
26739e407a85Spbrook    exit 1
26749e407a85Spbrook    ;;
26759e407a85Spbrookesac
2676831b7825Sths
267797a847bcSbellardmkdir -p $target_dir
2678158142c2Sbellardmkdir -p $target_dir/fpu
267957fec1feSbellardmkdir -p $target_dir/tcg
268059f2a787SGerd Hoffmannmkdir -p $target_dir/ide
268184778508Sblueswir1if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then
268269de927cSbellard  mkdir -p $target_dir/nwfpe
268369de927cSbellardfi
268469de927cSbellard
2685ec530c81Sbellard#
2686ec530c81Sbellard# don't use ln -sf as not all "ln -sf" over write the file/link
2687ec530c81Sbellard#
2688ec530c81Sbellardrm -f $target_dir/Makefile
2689ec530c81Sbellardln -s $source_path/Makefile.target $target_dir/Makefile
2690ec530c81Sbellard
269197a847bcSbellard
269225be210fSJuan Quintelaecho "# Automatically generated by configure - do not modify" > $config_target_mak
269397a847bcSbellard
2694e5fe0c52Spbrookbflt="no"
2695bd0c5661Spbrooktarget_nptl="no"
2696600309b6SBlue Swirlinterp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_arch2/g"`
26977ee2822cSPaolo Bonziniecho "CONFIG_QEMU_INTERP_PREFIX=\"$interp_prefix1\"" >> $config_target_mak
269856aebc89Spbrookgdb_xml_files=""
26997ba1e619Saliguori
2700938b1eddSJuan QuintelaTARGET_ARCH="$target_arch2"
27016acff7daSJuan QuintelaTARGET_BASE_ARCH=""
2702e6e91b9cSJuan QuintelaTARGET_ABI_DIR=""
2703e73aae67SJuan Quintela
2704600309b6SBlue Swirlcase "$target_arch2" in
27052408a527Saurel32  i386)
27061ad2134fSPaul Brook    target_phys_bits=32
27072408a527Saurel32  ;;
27082408a527Saurel32  x86_64)
27096acff7daSJuan Quintela    TARGET_BASE_ARCH=i386
27101ad2134fSPaul Brook    target_phys_bits=64
27112408a527Saurel32  ;;
27122408a527Saurel32  alpha)
27131ad2134fSPaul Brook    target_phys_bits=64
2714a4b388ffSRichard Henderson    target_nptl="yes"
27152408a527Saurel32  ;;
27162408a527Saurel32  arm|armeb)
2717b498c8a0SJuan Quintela    TARGET_ARCH=arm
2718e5fe0c52Spbrook    bflt="yes"
2719bd0c5661Spbrook    target_nptl="yes"
272056aebc89Spbrook    gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
27211ad2134fSPaul Brook    target_phys_bits=32
27222408a527Saurel32  ;;
27232408a527Saurel32  cris)
2724253bd7f8Sedgar_igl    target_nptl="yes"
27251ad2134fSPaul Brook    target_phys_bits=32
27262408a527Saurel32  ;;
27272408a527Saurel32  m68k)
27280938cda5Saurel32    bflt="yes"
272956aebc89Spbrook    gdb_xml_files="cf-core.xml cf-fp.xml"
27301ad2134fSPaul Brook    target_phys_bits=32
27312408a527Saurel32  ;;
273272b675caSEdgar E. Iglesias  microblaze)
273372b675caSEdgar E. Iglesias    bflt="yes"
273472b675caSEdgar E. Iglesias    target_nptl="yes"
273572b675caSEdgar E. Iglesias    target_phys_bits=32
273672b675caSEdgar E. Iglesias  ;;
27372408a527Saurel32  mips|mipsel)
2738b498c8a0SJuan Quintela    TARGET_ARCH=mips
273925be210fSJuan Quintela    echo "TARGET_ABI_MIPSO32=y" >> $config_target_mak
2740f04dc72fSPaul Brook    target_nptl="yes"
27411ad2134fSPaul Brook    target_phys_bits=64
27422408a527Saurel32  ;;
27432408a527Saurel32  mipsn32|mipsn32el)
2744b498c8a0SJuan Quintela    TARGET_ARCH=mipsn32
27456acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
274625be210fSJuan Quintela    echo "TARGET_ABI_MIPSN32=y" >> $config_target_mak
27471ad2134fSPaul Brook    target_phys_bits=64
27482408a527Saurel32  ;;
27492408a527Saurel32  mips64|mips64el)
2750b498c8a0SJuan Quintela    TARGET_ARCH=mips64
27516acff7daSJuan Quintela    TARGET_BASE_ARCH=mips
275225be210fSJuan Quintela    echo "TARGET_ABI_MIPSN64=y" >> $config_target_mak
27531ad2134fSPaul Brook    target_phys_bits=64
27542408a527Saurel32  ;;
27552408a527Saurel32  ppc)
2756c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
27571ad2134fSPaul Brook    target_phys_bits=32
2758d6630708SNathan Froyd    target_nptl="yes"
27592408a527Saurel32  ;;
27602408a527Saurel32  ppcemb)
27616acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
2762e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
2763c8b3532dSaurel32    gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
27641ad2134fSPaul Brook    target_phys_bits=64
2765d6630708SNathan Froyd    target_nptl="yes"
27662408a527Saurel32  ;;
27672408a527Saurel32  ppc64)
27686acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
2769e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
2770c8b3532dSaurel32    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
27711ad2134fSPaul Brook    target_phys_bits=64
27722408a527Saurel32  ;;
27732408a527Saurel32  ppc64abi32)
2774b498c8a0SJuan Quintela    TARGET_ARCH=ppc64
27756acff7daSJuan Quintela    TARGET_BASE_ARCH=ppc
2776e6e91b9cSJuan Quintela    TARGET_ABI_DIR=ppc
277725be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
2778c8b3532dSaurel32    gdb_xml_files="power64-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
27791ad2134fSPaul Brook    target_phys_bits=64
27802408a527Saurel32  ;;
27812408a527Saurel32  sh4|sh4eb)
2782b498c8a0SJuan Quintela    TARGET_ARCH=sh4
27834dbed897Spbrook    bflt="yes"
27840b6d3ae0Saurel32    target_nptl="yes"
27851ad2134fSPaul Brook    target_phys_bits=32
27862408a527Saurel32  ;;
27872408a527Saurel32  sparc)
27881ad2134fSPaul Brook    target_phys_bits=64
27892408a527Saurel32  ;;
27902408a527Saurel32  sparc64)
27916acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
27921ad2134fSPaul Brook    target_phys_bits=64
27932408a527Saurel32  ;;
27942408a527Saurel32  sparc32plus)
2795b498c8a0SJuan Quintela    TARGET_ARCH=sparc64
27966acff7daSJuan Quintela    TARGET_BASE_ARCH=sparc
2797e6e91b9cSJuan Quintela    TARGET_ABI_DIR=sparc
279825be210fSJuan Quintela    echo "TARGET_ABI32=y" >> $config_target_mak
27991ad2134fSPaul Brook    target_phys_bits=64
28002408a527Saurel32  ;;
280124e804ecSAlexander Graf  s390x)
280224e804ecSAlexander Graf    target_phys_bits=64
280324e804ecSAlexander Graf  ;;
28042408a527Saurel32  *)
2805de83cd02Sbellard    echo "Unsupported target CPU"
2806de83cd02Sbellard    exit 1
28072408a527Saurel32  ;;
28082408a527Saurel32esac
280925be210fSJuan Quintelaecho "TARGET_ARCH=$TARGET_ARCH" >> $config_target_mak
2810053dd92eSJuan Quintelatarget_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`"
281125be210fSJuan Quintelaecho "TARGET_$target_arch_name=y" >> $config_target_mak
281225be210fSJuan Quintelaecho "TARGET_ARCH2=$target_arch2" >> $config_target_mak
281342bc608bSJuan Quintela# TARGET_BASE_ARCH needs to be defined after TARGET_ARCH
28146acff7daSJuan Quintelaif [ "$TARGET_BASE_ARCH" = "" ]; then
28156acff7daSJuan Quintela  TARGET_BASE_ARCH=$TARGET_ARCH
28166acff7daSJuan Quintelafi
281725be210fSJuan Quintelaecho "TARGET_BASE_ARCH=$TARGET_BASE_ARCH" >> $config_target_mak
2818e6e91b9cSJuan Quintelaif [ "$TARGET_ABI_DIR" = "" ]; then
2819e6e91b9cSJuan Quintela  TARGET_ABI_DIR=$TARGET_ARCH
2820e6e91b9cSJuan Quintelafi
282125be210fSJuan Quintelaecho "TARGET_ABI_DIR=$TARGET_ABI_DIR" >> $config_target_mak
28221b0c87fcSJuan Quintelacase "$target_arch2" in
28231b0c87fcSJuan Quintela  i386|x86_64)
28241b0c87fcSJuan Quintela    if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then
282525be210fSJuan Quintela      echo "CONFIG_XEN=y" >> $config_target_mak
28261b0c87fcSJuan Quintela    fi
28271b0c87fcSJuan Quintelaesac
2828c59249f9SJuan Quintelacase "$target_arch2" in
28290e60a699SAlexander Graf  i386|x86_64|ppcemb|ppc|ppc64|s390x)
2830c59249f9SJuan Quintela    # Make sure the target and host cpus are compatible
2831c59249f9SJuan Quintela    if test "$kvm" = "yes" -a "$target_softmmu" = "yes" -a \
2832c59249f9SJuan Quintela      \( "$target_arch2" = "$cpu" -o \
2833c59249f9SJuan Quintela      \( "$target_arch2" = "ppcemb" -a "$cpu" = "ppc" \) -o \
28345f114bc6SAlexander Graf      \( "$target_arch2" = "ppc64"  -a "$cpu" = "ppc" \) -o \
2835c59249f9SJuan Quintela      \( "$target_arch2" = "x86_64" -a "$cpu" = "i386"   \) -o \
2836c59249f9SJuan Quintela      \( "$target_arch2" = "i386"   -a "$cpu" = "x86_64" \) \) ; then
283725be210fSJuan Quintela      echo "CONFIG_KVM=y" >> $config_target_mak
283825be210fSJuan Quintela      echo "KVM_CFLAGS=$kvm_cflags" >> $config_target_mak
2839dae5079aSJan Kiszka      if test "$kvm_para" = "yes"; then
2840dae5079aSJan Kiszka        echo "CONFIG_KVM_PARA=y" >> $config_target_mak
2841dae5079aSJan Kiszka      fi
2842d5970055SMichael S. Tsirkin      if test $vhost_net = "yes" ; then
2843d5970055SMichael S. Tsirkin        echo "CONFIG_VHOST_NET=y" >> $config_target_mak
2844d5970055SMichael S. Tsirkin      fi
2845c59249f9SJuan Quintela    fi
2846c59249f9SJuan Quintelaesac
2847de83cd02Sbellardif test "$target_bigendian" = "yes" ; then
284825be210fSJuan Quintela  echo "TARGET_WORDS_BIGENDIAN=y" >> $config_target_mak
284997a847bcSbellardfi
285097a847bcSbellardif test "$target_softmmu" = "yes" ; then
2851b1aa27c4SPaul Brook  echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_target_mak
285225be210fSJuan Quintela  echo "CONFIG_SOFTMMU=y" >> $config_target_mak
285325be210fSJuan Quintela  echo "LIBS+=$libs_softmmu" >> $config_target_mak
28540e8c9214SAndreas Färber  echo "HWDIR=../libhw$target_phys_bits" >> $config_target_mak
28555791f45bSKirill A. Shutemov  echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak
2856de83cd02Sbellardfi
2857997344f3Sbellardif test "$target_user_only" = "yes" ; then
285825be210fSJuan Quintela  echo "CONFIG_USER_ONLY=y" >> $config_target_mak
2859997344f3Sbellardfi
2860831b7825Sthsif test "$target_linux_user" = "yes" ; then
286125be210fSJuan Quintela  echo "CONFIG_LINUX_USER=y" >> $config_target_mak
2862831b7825Sthsfi
2863831b7825Sthsif test "$target_darwin_user" = "yes" ; then
286425be210fSJuan Quintela  echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
2865831b7825Sthsfi
286656aebc89Spbrooklist=""
286756aebc89Spbrookif test ! -z "$gdb_xml_files" ; then
286856aebc89Spbrook  for x in $gdb_xml_files; do
286956aebc89Spbrook    list="$list $source_path/gdb-xml/$x"
287056aebc89Spbrook  done
287125be210fSJuan Quintela  echo "TARGET_XML_FILES=$list" >> $config_target_mak
28723d0f1517SJuan Quintelafi
2873de83cd02Sbellard
2874f57975fbSJuan Quintelacase "$target_arch2" in
2875990b3e19SRichard Henderson  alpha|arm|armeb|m68k|microblaze|mips|mipsel|mipsn32|mipsn32el|mips64|mips64el|ppc|ppc64|ppc64abi32|ppcemb|s390x|sparc|sparc64|sparc32plus)
287625be210fSJuan Quintela    echo "CONFIG_SOFTFLOAT=y" >> $config_target_mak
2877f57975fbSJuan Quintela    ;;
2878d6b38939SJuan Quintela  *)
287925be210fSJuan Quintela    echo "CONFIG_NOSOFTFLOAT=y" >> $config_target_mak
2880d6b38939SJuan Quintela    ;;
2881f57975fbSJuan Quintelaesac
2882f57975fbSJuan Quintela
2883e5fe0c52Spbrookif test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
288425be210fSJuan Quintela  echo "TARGET_HAS_BFLT=y" >> $config_target_mak
2885e5fe0c52Spbrookfi
2886bd0c5661Spbrookif test "$target_user_only" = "yes" \
2887bd0c5661Spbrook        -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
288825be210fSJuan Quintela  echo "CONFIG_USE_NPTL=y" >> $config_target_mak
2889bd0c5661Spbrookfi
2890379f6698SPaul Brookif test "$target_user_only" = "yes" -a "$guest_base" = "yes"; then
289125be210fSJuan Quintela  echo "CONFIG_USE_GUEST_BASE=y" >> $config_target_mak
2892379f6698SPaul Brookfi
289384778508Sblueswir1if test "$target_bsd_user" = "yes" ; then
289425be210fSJuan Quintela  echo "CONFIG_BSD_USER=y" >> $config_target_mak
289584778508Sblueswir1fi
28965b0753e0Sbellard
28974afddb55SJuan Quintela# generate QEMU_CFLAGS/LDFLAGS for targets
2898fa282484SJuan Quintela
28994afddb55SJuan Quintelacflags=""
2900fa282484SJuan Quintelaldflags=""
29019b8e111fSJuan Quintela
290257ddfbf7SJuan Quintelaif test "$ARCH" = "sparc64" ; then
290357ddfbf7SJuan Quintela  cflags="-I\$(SRC_PATH)/tcg/sparc $cflags"
290424e804ecSAlexander Grafelif test "$ARCH" = "s390x" ; then
290524e804ecSAlexander Graf  cflags="-I\$(SRC_PATH)/tcg/s390 $cflags"
29065d8a4f8fSRichard Hendersonelif test "$ARCH" = "x86_64" ; then
29075d8a4f8fSRichard Henderson  cflags="-I\$(SRC_PATH)/tcg/i386 $cflags"
290857ddfbf7SJuan Quintelaelse
290957ddfbf7SJuan Quintela  cflags="-I\$(SRC_PATH)/tcg/\$(ARCH) $cflags"
291057ddfbf7SJuan Quintelafi
291157ddfbf7SJuan Quintelacflags="-I\$(SRC_PATH)/tcg $cflags"
291257ddfbf7SJuan Quintelacflags="-I\$(SRC_PATH)/fpu $cflags"
291357ddfbf7SJuan Quintela
29144d904533SBlue Swirlif test "$target_user_only" = "yes" ; then
29154d904533SBlue Swirl    libdis_config_mak=libdis-user/config.mak
29164d904533SBlue Swirlelse
29174d904533SBlue Swirl    libdis_config_mak=libdis/config.mak
29184d904533SBlue Swirlfi
29194d904533SBlue Swirl
292064656024SJuan Quintelafor i in $ARCH $TARGET_BASE_ARCH ; do
292164656024SJuan Quintela  case "$i" in
292264656024SJuan Quintela  alpha)
292325be210fSJuan Quintela    echo "CONFIG_ALPHA_DIS=y"  >> $config_target_mak
29244d904533SBlue Swirl    echo "CONFIG_ALPHA_DIS=y"  >> $libdis_config_mak
292564656024SJuan Quintela  ;;
292664656024SJuan Quintela  arm)
292725be210fSJuan Quintela    echo "CONFIG_ARM_DIS=y"  >> $config_target_mak
29284d904533SBlue Swirl    echo "CONFIG_ARM_DIS=y"  >> $libdis_config_mak
292964656024SJuan Quintela  ;;
293064656024SJuan Quintela  cris)
293125be210fSJuan Quintela    echo "CONFIG_CRIS_DIS=y"  >> $config_target_mak
29324d904533SBlue Swirl    echo "CONFIG_CRIS_DIS=y"  >> $libdis_config_mak
293364656024SJuan Quintela  ;;
293464656024SJuan Quintela  hppa)
293525be210fSJuan Quintela    echo "CONFIG_HPPA_DIS=y"  >> $config_target_mak
29364d904533SBlue Swirl    echo "CONFIG_HPPA_DIS=y"  >> $libdis_config_mak
293764656024SJuan Quintela  ;;
293864656024SJuan Quintela  i386|x86_64)
293925be210fSJuan Quintela    echo "CONFIG_I386_DIS=y"  >> $config_target_mak
29404d904533SBlue Swirl    echo "CONFIG_I386_DIS=y"  >> $libdis_config_mak
294164656024SJuan Quintela  ;;
2942903ec55cSAurelien Jarno  ia64*)
2943903ec55cSAurelien Jarno    echo "CONFIG_IA64_DIS=y"  >> $config_target_mak
2944903ec55cSAurelien Jarno    echo "CONFIG_IA64_DIS=y"  >> $libdis_config_mak
2945903ec55cSAurelien Jarno  ;;
294664656024SJuan Quintela  m68k)
294725be210fSJuan Quintela    echo "CONFIG_M68K_DIS=y"  >> $config_target_mak
29484d904533SBlue Swirl    echo "CONFIG_M68K_DIS=y"  >> $libdis_config_mak
294964656024SJuan Quintela  ;;
295064656024SJuan Quintela  microblaze)
295125be210fSJuan Quintela    echo "CONFIG_MICROBLAZE_DIS=y"  >> $config_target_mak
29524d904533SBlue Swirl    echo "CONFIG_MICROBLAZE_DIS=y"  >> $libdis_config_mak
295364656024SJuan Quintela  ;;
295464656024SJuan Quintela  mips*)
295525be210fSJuan Quintela    echo "CONFIG_MIPS_DIS=y"  >> $config_target_mak
29564d904533SBlue Swirl    echo "CONFIG_MIPS_DIS=y"  >> $libdis_config_mak
295764656024SJuan Quintela  ;;
295864656024SJuan Quintela  ppc*)
295925be210fSJuan Quintela    echo "CONFIG_PPC_DIS=y"  >> $config_target_mak
29604d904533SBlue Swirl    echo "CONFIG_PPC_DIS=y"  >> $libdis_config_mak
296164656024SJuan Quintela  ;;
296224e804ecSAlexander Graf  s390*)
296325be210fSJuan Quintela    echo "CONFIG_S390_DIS=y"  >> $config_target_mak
29644d904533SBlue Swirl    echo "CONFIG_S390_DIS=y"  >> $libdis_config_mak
296564656024SJuan Quintela  ;;
296664656024SJuan Quintela  sh4)
296725be210fSJuan Quintela    echo "CONFIG_SH4_DIS=y"  >> $config_target_mak
29684d904533SBlue Swirl    echo "CONFIG_SH4_DIS=y"  >> $libdis_config_mak
296964656024SJuan Quintela  ;;
297064656024SJuan Quintela  sparc*)
297125be210fSJuan Quintela    echo "CONFIG_SPARC_DIS=y"  >> $config_target_mak
29724d904533SBlue Swirl    echo "CONFIG_SPARC_DIS=y"  >> $libdis_config_mak
297364656024SJuan Quintela  ;;
297464656024SJuan Quintela  esac
297564656024SJuan Quinteladone
297664656024SJuan Quintela
29776ee7126fSJuan Quintelacase "$ARCH" in
29786ee7126fSJuan Quintelaalpha)
29796ee7126fSJuan Quintela  # Ensure there's only a single GP
29806ee7126fSJuan Quintela  cflags="-msmall-data $cflags"
29816ee7126fSJuan Quintela;;
29826ee7126fSJuan Quintelaesac
29836ee7126fSJuan Quintela
298455d9c04bSJuan Quintelaif test "$target_softmmu" = "yes" ; then
298555d9c04bSJuan Quintela  case "$TARGET_BASE_ARCH" in
298655d9c04bSJuan Quintela  arm)
298755d9c04bSJuan Quintela    cflags="-DHAS_AUDIO $cflags"
298855d9c04bSJuan Quintela  ;;
298955d9c04bSJuan Quintela  i386|mips|ppc)
299055d9c04bSJuan Quintela    cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags"
299155d9c04bSJuan Quintela  ;;
299255d9c04bSJuan Quintela  esac
299355d9c04bSJuan Quintelafi
299455d9c04bSJuan Quintela
299534005a00SKirill A. Shutemovif test "$target_user_only" = "yes" -a "$static" = "no" -a \
299634005a00SKirill A. Shutemov	"$user_pie" = "yes" ; then
299734005a00SKirill A. Shutemov  cflags="-fpie $cflags"
299834005a00SKirill A. Shutemov  ldflags="-pie $ldflags"
299934005a00SKirill A. Shutemovfi
300034005a00SKirill A. Shutemov
3001471857ddSJuan Quintelaif test "$target_softmmu" = "yes" -a \( \
3002471857ddSJuan Quintela        "$TARGET_ARCH" = "microblaze" -o \
3003471857ddSJuan Quintela        "$TARGET_ARCH" = "cris" \) ; then
300425be210fSJuan Quintela  echo "CONFIG_NEED_MMU=y" >> $config_target_mak
3005471857ddSJuan Quintelafi
3006471857ddSJuan Quintela
3007d02c1db3SJuan Quintelaif test "$gprof" = "yes" ; then
300825be210fSJuan Quintela  echo "TARGET_GPROF=yes" >> $config_target_mak
3009d02c1db3SJuan Quintela  if test "$target_linux_user" = "yes" ; then
3010d02c1db3SJuan Quintela    cflags="-p $cflags"
3011d02c1db3SJuan Quintela    ldflags="-p $ldflags"
3012d02c1db3SJuan Quintela  fi
3013d02c1db3SJuan Quintela  if test "$target_softmmu" = "yes" ; then
3014d02c1db3SJuan Quintela    ldflags="-p $ldflags"
301525be210fSJuan Quintela    echo "GPROF_CFLAGS=-p" >> $config_target_mak
3016d02c1db3SJuan Quintela  fi
3017d02c1db3SJuan Quintelafi
3018d02c1db3SJuan Quintela
30196ee7126fSJuan Quintelalinker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld"
30209b8e111fSJuan Quintelaif test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
3021fa282484SJuan Quintela  case "$ARCH" in
3022fa282484SJuan Quintela  sparc)
3023fa282484SJuan Quintela    # -static is used to avoid g1/g3 usage by the dynamic linker
3024322e5878SJuan Quintela    ldflags="$linker_script -static $ldflags"
3025fa282484SJuan Quintela    ;;
30264d58be06SRichard Henderson  alpha | s390x)
30274d58be06SRichard Henderson    # The default placement of the application is fine.
30284d58be06SRichard Henderson    ;;
3029fd76e73aSRichard Henderson  *)
3030322e5878SJuan Quintela    ldflags="$linker_script $ldflags"
3031fa282484SJuan Quintela    ;;
3032fa282484SJuan Quintela  esac
3033fa282484SJuan Quintelafi
3034fa282484SJuan Quintela
303525be210fSJuan Quintelaecho "LDFLAGS+=$ldflags" >> $config_target_mak
303625be210fSJuan Quintelaecho "QEMU_CFLAGS+=$cflags" >> $config_target_mak
3037fa282484SJuan Quintela
303897a847bcSbellarddone # for target in $targets
30397d13299dSbellard
30407d13299dSbellard# build tree in object directory if source path is different from current one
30417d13299dSbellardif test "$source_path_used" = "yes" ; then
3042e1144d00SMark McLoughlin    DIRS="tests tests/cris slirp audio block net pc-bios/optionrom"
30432d9f27d2SAnthony Liguori    DIRS="$DIRS roms/seabios roms/vgabios"
30443e230dd2SCorentin Chary    DIRS="$DIRS fsdev ui"
30457d13299dSbellard    FILES="Makefile tests/Makefile"
3046e7daa605Sths    FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
3047e1ffb0f1Sedgar_igl    FILES="$FILES tests/test-mmap.c"
30487ea78b74SJan Kiszka    FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x"
30492d9f27d2SAnthony Liguori    FILES="$FILES roms/seabios/Makefile roms/vgabios/Makefile"
30507ea78b74SJan Kiszka    for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do
30517ea78b74SJan Kiszka        FILES="$FILES pc-bios/`basename $bios_file`"
30527ea78b74SJan Kiszka    done
30537d13299dSbellard    for dir in $DIRS ; do
30547d13299dSbellard            mkdir -p $dir
30557d13299dSbellard    done
3056ec530c81Sbellard    # remove the link and recreate it, as not all "ln -sf" overwrite the link
30577d13299dSbellard    for f in $FILES ; do
3058ec530c81Sbellard        rm -f $f
3059ec530c81Sbellard        ln -s $source_path/$f $f
30607d13299dSbellard    done
30617d13299dSbellardfi
30621ad2134fSPaul Brook
3063c34ebfdcSAnthony Liguori# temporary config to build submodules
30642d9f27d2SAnthony Liguorifor rom in seabios vgabios ; do
3065c34ebfdcSAnthony Liguori    config_mak=roms/$rom/config.mak
306637116c89SStefan Weil    echo "# Automatically generated by configure - do not modify" > $config_mak
3067c34ebfdcSAnthony Liguori    echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak
3068c34ebfdcSAnthony Liguori    echo "CC=$cc" >> $config_mak
3069c34ebfdcSAnthony Liguori    echo "BCC=bcc" >> $config_mak
3070c34ebfdcSAnthony Liguori    echo "CPP=${cross_prefix}cpp" >> $config_mak
3071c34ebfdcSAnthony Liguori    echo "OBJCOPY=objcopy" >> $config_mak
3072c34ebfdcSAnthony Liguori    echo "IASL=iasl" >> $config_mak
3073c34ebfdcSAnthony Liguori    echo "HOST_CC=$host_cc" >> $config_mak
3074c34ebfdcSAnthony Liguori    echo "LD=$ld" >> $config_mak
3075c34ebfdcSAnthony Liguoridone
3076c34ebfdcSAnthony Liguori
30771ad2134fSPaul Brookfor hwlib in 32 64; do
30781ad2134fSPaul Brook  d=libhw$hwlib
30791ad2134fSPaul Brook  mkdir -p $d
30809953b2fcSBlue Swirl  mkdir -p $d/ide
30811ad2134fSPaul Brook  rm -f $d/Makefile
30821ad2134fSPaul Brook  ln -s $source_path/Makefile.hw $d/Makefile
308337116c89SStefan Weil  echo "QEMU_CFLAGS+=-DTARGET_PHYS_ADDR_BITS=$hwlib" > $d/config.mak
30841ad2134fSPaul Brookdone
3085add16157SBlue Swirl
3086add16157SBlue Swirld=libuser
3087add16157SBlue Swirlmkdir -p $d
3088add16157SBlue Swirlrm -f $d/Makefile
3089add16157SBlue Swirlln -s $source_path/Makefile.user $d/Makefile
3090299060a0SKirill A. Shutemovif test "$static" = "no" -a "$user_pie" = "yes" ; then
3091299060a0SKirill A. Shutemov  echo "QEMU_CFLAGS+=-fpie" > $d/config.mak
3092299060a0SKirill A. Shutemovfi
3093b40292e7SJan Kiszka
3094b40292e7SJan Kiszkaif test "$docs" = "yes" ; then
3095b40292e7SJan Kiszka  mkdir -p QMP
3096b40292e7SJan Kiszkafi
3097