blob: 826da7c01aeb2f956b7fdad8ac749f0aa42d60a1 [file] [log] [blame]
bellard7d132992003-03-06 23:23:54 +00001#!/bin/sh
2#
bellard3ef693a2003-03-23 20:17:16 +00003# qemu configure script (c) 2003 Fabrice Bellard
bellard7d132992003-03-06 23:23:54 +00004#
5# set temporary file name
6if test ! -z "$TMPDIR" ; then
7 TMPDIR1="${TMPDIR}"
8elif test ! -z "$TEMPDIR" ; then
9 TMPDIR1="${TEMPDIR}"
10else
11 TMPDIR1="/tmp"
12fi
13
bellard3ef693a2003-03-23 20:17:16 +000014TMPC="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.c"
15TMPO="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.o"
16TMPE="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}"
17TMPS="${TMPDIR1}/qemu-conf-${RANDOM}-$$-${RANDOM}.S"
bellard7d132992003-03-06 23:23:54 +000018
19# default parameters
bellard11d9f692004-04-02 20:55:59 +000020prefix=""
bellard1e43adf2003-09-30 20:54:24 +000021interp_prefix="/usr/gnemul/qemu-%M"
bellard43ce4df2003-06-09 19:53:12 +000022static="no"
bellard7d132992003-03-06 23:23:54 +000023cross_prefix=""
24cc="gcc"
pbrook328a4242006-12-19 03:31:34 +000025gcc3_search="yes"
balrogfe8f78e2007-10-31 01:03:28 +000026gcc3_list="gcc-3.4.6 gcc-3.4 gcc34 gcc-3.3.6 gcc-3.3 gcc33 gcc-3.2 gcc32"
malc0c58ac12008-06-25 21:04:05 +000027audio_drv_list=""
28audio_card_list=""
bellard7d132992003-03-06 23:23:54 +000029host_cc="gcc"
30ar="ar"
31make="make"
pbrook6a882642006-04-17 13:57:12 +000032install="install"
bellard7d132992003-03-06 23:23:54 +000033strip="strip"
34cpu=`uname -m`
bellard5327cf42005-01-10 23:18:50 +000035target_list=""
bellard7d132992003-03-06 23:23:54 +000036case "$cpu" in
37 i386|i486|i586|i686|i86pc|BePC)
bellard97a847b2003-08-10 21:36:04 +000038 cpu="i386"
bellard7d132992003-03-06 23:23:54 +000039 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000040 x86_64|amd64)
41 cpu="x86_64"
42 ;;
43 alpha)
44 cpu="alpha"
45 ;;
bellardba680552005-03-13 09:49:52 +000046 armv*b)
bellard808c4952004-12-19 23:33:47 +000047 cpu="armv4b"
48 ;;
bellardba680552005-03-13 09:49:52 +000049 armv*l)
bellard7d132992003-03-06 23:23:54 +000050 cpu="armv4l"
51 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000052 cris)
53 cpu="cris"
bellard7d132992003-03-06 23:23:54 +000054 ;;
aurel32f54b3f92008-04-12 20:14:54 +000055 parisc|parisc64)
56 cpu="hppa"
57 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000058 ia64)
59 cpu="ia64"
60 ;;
61 m68k)
62 cpu="m68k"
bellard7d132992003-03-06 23:23:54 +000063 ;;
64 mips)
65 cpu="mips"
66 ;;
thsfbe4f652007-04-01 11:16:48 +000067 mips64)
68 cpu="mips64"
69 ;;
aurel32aaa5fa12008-04-11 22:04:22 +000070 "Power Macintosh"|ppc|ppc64)
71 cpu="powerpc"
thse7daa602007-10-08 13:38:27 +000072 ;;
ths0e7b8a92007-08-01 00:09:31 +000073 s390*)
bellardfb3e5842003-03-29 17:32:36 +000074 cpu="s390"
75 ;;
blueswir131422552007-04-16 18:27:06 +000076 sparc|sun4[cdmuv])
bellardae228532003-05-13 18:59:59 +000077 cpu="sparc"
78 ;;
79 sparc64)
80 cpu="sparc64"
81 ;;
bellard7d132992003-03-06 23:23:54 +000082 *)
83 cpu="unknown"
84 ;;
85esac
86gprof="no"
87bigendian="no"
bellard67b915a2004-03-31 23:37:16 +000088mingw32="no"
89EXESUF=""
90gdbstub="yes"
bellard443f1372004-06-04 11:13:20 +000091slirp="yes"
aliguorie0e6c8c02008-07-23 18:14:33 +000092vde="yes"
bellard102a52e2004-11-14 19:57:29 +000093fmod_lib=""
94fmod_inc=""
blueswir12f6a1ab2008-08-21 18:00:53 +000095oss_lib=""
ths8d5d2d42007-08-25 01:37:51 +000096vnc_tls="yes"
pbrookb1a550a2006-04-16 13:28:56 +000097bsd="no"
bellard5327cf42005-01-10 23:18:50 +000098linux="no"
bellardc9ec1fe2005-02-10 21:55:30 +000099kqemu="no"
bellard05c2a3e2006-02-08 22:39:17 +0000100profiler="no"
bellard5b0753e2005-03-01 21:37:28 +0000101cocoa="no"
bellard97ccc682005-07-02 13:32:17 +0000102check_gfx="yes"
bellard1aff3812005-11-02 22:30:45 +0000103check_gcc="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000104softmmu="yes"
ths831b7822007-01-18 20:06:33 +0000105linux_user="no"
106darwin_user="no"
pbrookcc8ae6d2006-04-23 17:57:59 +0000107build_docs="no"
pbrookc5937222006-05-14 11:30:38 +0000108uname_release=""
balrog4d3b6f62008-02-10 16:33:14 +0000109curses="yes"
blueswir1414f0da2008-08-15 18:20:52 +0000110aio="yes"
pbrookbd0c5662008-05-29 14:34:11 +0000111nptl="yes"
malc8ff9cbf2008-06-23 18:33:30 +0000112mixemu="no"
balrogfb599c92008-09-28 23:49:55 +0000113bluez="yes"
aliguori27463102008-09-27 20:58:43 +0000114signalfd="no"
115eventfd="no"
bellard7d132992003-03-06 23:23:54 +0000116
117# OS specific
118targetos=`uname -s`
119case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000120CYGWIN*)
121mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000122OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000123if [ "$cpu" = "i386" ] ; then
124 kqemu="yes"
125fi
malcc2de5c92008-06-28 19:13:06 +0000126audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000127;;
bellard67b915a2004-03-31 23:37:16 +0000128MINGW32*)
129mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000130if [ "$cpu" = "i386" ] ; then
131 kqemu="yes"
132fi
malcc2de5c92008-06-28 19:13:06 +0000133audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000134;;
ths5c40d2b2007-06-23 16:03:36 +0000135GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000136audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000137audio_possible_drivers="oss sdl esd pa"
ths5c40d2b2007-06-23 16:03:36 +0000138if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
139 kqemu="yes"
140fi
141;;
bellard7d3505c2004-05-12 19:32:15 +0000142FreeBSD)
143bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000144audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000145audio_possible_drivers="oss sdl esd pa"
bellarde99f9062005-07-28 21:45:38 +0000146if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000147 kqemu="yes"
148fi
bellard7d3505c2004-05-12 19:32:15 +0000149;;
150NetBSD)
151bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000152audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000153audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000154;;
155OpenBSD)
156bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000157openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000158audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000159audio_possible_drivers="oss sdl esd"
blueswir12f6a1ab2008-08-21 18:00:53 +0000160oss_lib="-lossaudio"
bellard7d3505c2004-05-12 19:32:15 +0000161;;
bellard83fb7ad2004-07-05 21:25:26 +0000162Darwin)
163bsd="yes"
164darwin="yes"
ths831b7822007-01-18 20:06:33 +0000165darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000166cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000167audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000168audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000169OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000170OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000171;;
bellardec530c82006-04-25 22:36:06 +0000172SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000173 solaris="yes"
174 make="gmake"
175 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000176 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000177 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000178 # have to select again, because `uname -m` returns i86pc
179 # even on an x86_64 box.
180 solariscpu=`isainfo -k`
181 if test "${solariscpu}" = "amd64" ; then
182 cpu="x86_64"
183 fi
thsc2b84fa2007-02-10 23:21:21 +0000184 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000185 if test "$solarisrev" -le 9 ; then
186 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
187 needs_libsunmath="yes"
188 else
189 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
190 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
191 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
192 echo "Studio 11 can be downloaded from www.sun.com."
193 exit 1
194 fi
195 fi
196 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000197 kqemu="yes"
198 fi
ths86b2bd92007-02-11 00:31:33 +0000199 fi
ths6b4d2ba2007-05-13 18:02:43 +0000200 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000201 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000202 fi
malcc2de5c92008-06-28 19:13:06 +0000203 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000204;;
bellard1d14ffa2005-10-30 18:58:22 +0000205*)
malc0c58ac12008-06-25 21:04:05 +0000206audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000207audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000208linux="yes"
ths831b7822007-01-18 20:06:33 +0000209linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000210if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000211 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000212 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000213fi
bellardfb065182004-11-09 23:09:44 +0000214;;
bellard7d132992003-03-06 23:23:54 +0000215esac
216
bellard7d3505c2004-05-12 19:32:15 +0000217if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000218 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000219 make="gmake"
220 fi
bellard7d3505c2004-05-12 19:32:15 +0000221fi
222
bellard7d132992003-03-06 23:23:54 +0000223# find source path
pbrookad064842006-04-16 12:41:07 +0000224source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000225source_path_used="no"
226workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000227if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000228 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000229else
230 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000231fi
pbrook724db112008-02-03 19:20:13 +0000232[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000233
bellard85aa5182007-11-11 20:17:03 +0000234werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000235# generate compile errors on warnings for development builds
236#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
237#werror="yes";
238#fi
bellard85aa5182007-11-11 20:17:03 +0000239
bellard7d132992003-03-06 23:23:54 +0000240for opt do
pbrooka46e4032006-04-29 23:05:22 +0000241 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000242 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000243 --help|-h) show_help=yes
244 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000245 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000246 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000247 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000248 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000249 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000250 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000251 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000252 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000253 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000254 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000255 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000256 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000257 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000258 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000259 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000260 ;;
pbrook6a882642006-04-17 13:57:12 +0000261 --install=*) install="$optarg"
262 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000263 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000264 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000265 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000266 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000267 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000268 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000269 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000270 ;;
bellard7d132992003-03-06 23:23:54 +0000271 --enable-gprof) gprof="yes"
272 ;;
bellard43ce4df2003-06-09 19:53:12 +0000273 --static) static="yes"
274 ;;
bellard97a847b2003-08-10 21:36:04 +0000275 --disable-sdl) sdl="no"
276 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000277 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000278 ;;
malcc2de5c92008-06-28 19:13:06 +0000279 --fmod-inc=*) fmod_inc="$optarg"
280 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000281 --oss-lib=*) oss_lib="$optarg"
282 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000283 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000284 ;;
285 --audio-drv-list=*) audio_drv_list="$optarg"
286 ;;
ths8d5d2d42007-08-25 01:37:51 +0000287 --disable-vnc-tls) vnc_tls="no"
288 ;;
bellard443f1372004-06-04 11:13:20 +0000289 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000290 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000291 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000292 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000293 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000294 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000295 --disable-brlapi) brlapi="no"
296 ;;
balrogfb599c92008-09-28 23:49:55 +0000297 --disable-bluez) bluez="no"
298 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000299 --enable-profiler) profiler="yes"
300 ;;
malcc2de5c92008-06-28 19:13:06 +0000301 --enable-cocoa)
302 cocoa="yes" ;
303 sdl="no" ;
304 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000305 ;;
bellard97ccc682005-07-02 13:32:17 +0000306 --disable-gfx-check) check_gfx="no"
307 ;;
bellard1aff3812005-11-02 22:30:45 +0000308 --disable-gcc-check) check_gcc="no"
309 ;;
pbrookcad25d62006-03-19 16:31:11 +0000310 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000311 ;;
pbrookcad25d62006-03-19 16:31:11 +0000312 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000313 ;;
ths831b7822007-01-18 20:06:33 +0000314 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000315 ;;
ths831b7822007-01-18 20:06:33 +0000316 --enable-linux-user) linux_user="yes"
317 ;;
318 --disable-darwin-user) darwin_user="no"
319 ;;
320 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000321 ;;
pbrookc5937222006-05-14 11:30:38 +0000322 --enable-uname-release=*) uname_release="$optarg"
323 ;;
blueswir131422552007-04-16 18:27:06 +0000324 --sparc_cpu=*)
325 sparc_cpu="$optarg"
326 case $sparc_cpu in
327 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
328 target_cpu="sparc"; cpu="sparc" ;;
329 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
330 target_cpu="sparc"; cpu="sparc" ;;
331 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
332 target_cpu="sparc64"; cpu="sparc64" ;;
333 *) echo "undefined SPARC architecture. Exiting";exit 1;;
334 esac
335 ;;
bellard85aa5182007-11-11 20:17:03 +0000336 --enable-werror) werror="yes"
337 ;;
338 --disable-werror) werror="no"
339 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000340 --disable-curses) curses="no"
341 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000342 --disable-nptl) nptl="no"
343 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000344 --enable-mixemu) mixemu="yes"
345 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000346 --disable-aio) aio="no"
347 ;;
balrog7f1559c2007-11-17 10:24:32 +0000348 *) echo "ERROR: unknown option $opt"; show_help="yes"
349 ;;
bellard7d132992003-03-06 23:23:54 +0000350 esac
351done
352
ths6f30fa82007-01-05 01:00:47 +0000353# default flags for all hosts
blueswir1ac41a622008-09-14 06:46:31 +0000354CFLAGS="$CFLAGS -O2 -g -fno-strict-aliasing"
355CFLAGS="$CFLAGS -Wall -Wundef -Wendif-labels -Wwrite-strings"
ths6f30fa82007-01-05 01:00:47 +0000356LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000357if test "$werror" = "yes" ; then
358CFLAGS="$CFLAGS -Werror"
359fi
ths6f30fa82007-01-05 01:00:47 +0000360
blueswir149237ac2008-09-17 19:05:19 +0000361if ld --version 2>/dev/null | grep -q "GNU ld" ; then
362 LDFLAGS="$LDFLAGS -Wl,--warn-common"
363fi
364
blueswir131422552007-04-16 18:27:06 +0000365#
366# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
367# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
368#
bellard40293e52008-01-31 11:32:10 +0000369case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000370 sparc) if test -z "$sparc_cpu" ; then
371 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
372 ARCH_LDFLAGS="-m32"
373 else
374 ARCH_CFLAGS="${SP_CFLAGS}"
375 ARCH_LDFLAGS="${SP_LDFLAGS}"
376 fi
377 ;;
378 sparc64) if test -z "$sparc_cpu" ; then
379 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
380 ARCH_LDFLAGS="-m64"
381 else
382 ARCH_CFLAGS="${SP_CFLAGS}"
383 ARCH_LDFLAGS="${SP_LDFLAGS}"
384 fi
385 ;;
ths76d83bd2007-11-18 21:22:10 +0000386 s390)
387 ARCH_CFLAGS="-march=z900"
388 ;;
bellard40293e52008-01-31 11:32:10 +0000389 i386)
390 ARCH_CFLAGS="-m32"
391 ARCH_LDFLAGS="-m32"
392 ;;
393 x86_64)
394 ARCH_CFLAGS="-m64"
395 ARCH_LDFLAGS="-m64"
396 ;;
blueswir131422552007-04-16 18:27:06 +0000397esac
398
pbrookaf5db582006-04-08 14:26:41 +0000399if test x"$show_help" = x"yes" ; then
400cat << EOF
401
402Usage: configure [options]
403Options: [defaults in brackets after descriptions]
404
405EOF
406echo "Standard options:"
407echo " --help print this message"
408echo " --prefix=PREFIX install in PREFIX [$prefix]"
409echo " --interp-prefix=PREFIX where to find shared libraries, etc."
410echo " use %M for cpu name [$interp_prefix]"
411echo " --target-list=LIST set target list [$target_list]"
412echo ""
413echo "kqemu kernel acceleration support:"
414echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000415echo ""
416echo "Advanced options (experts only):"
417echo " --source-path=PATH path of source code [$source_path]"
418echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
419echo " --cc=CC use C compiler CC [$cc]"
420echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
421echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000422echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000423echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000424echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000425echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000426echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000427echo " --audio-drv-list=LIST set audio drivers list:"
428echo " Available drivers: $audio_possible_drivers"
429echo " --audio-card-list=LIST set list of additional emulated audio cards"
430echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000431echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000432echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000433echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000434echo " --disable-curses disable curses output"
balrogfb599c92008-09-28 23:49:55 +0000435echo " --disable-bluez disable bluez stack connectivity"
pbrookbd0c5662008-05-29 14:34:11 +0000436echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000437echo " --enable-system enable all system emulation targets"
438echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000439echo " --enable-linux-user enable all linux usermode emulation targets"
440echo " --disable-linux-user disable all linux usermode emulation targets"
441echo " --enable-darwin-user enable all darwin usermode emulation targets"
442echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000443echo " --fmod-lib path to FMOD library"
444echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000445echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000446echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000447echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000448echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000449echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000450echo ""
ths5bf08932006-12-23 00:33:26 +0000451echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000452exit 1
453fi
454
bellard7d132992003-03-06 23:23:54 +0000455cc="${cross_prefix}${cc}"
456ar="${cross_prefix}${ar}"
457strip="${cross_prefix}${strip}"
458
pbrook064aae12006-05-08 00:51:44 +0000459# check that the C compiler works.
460cat > $TMPC <<EOF
461int main(void) {}
462EOF
463
pbrookdb7287e2008-02-03 16:27:13 +0000464if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000465 : C compiler works ok
466else
467 echo "ERROR: \"$cc\" either does not exist or does not work"
468 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000469fi
470
aliguoricd01b4a2008-08-21 19:25:45 +0000471# check compiler to see if we're on mingw32
472cat > $TMPC <<EOF
473#include <windows.h>
474#ifndef _WIN32
475#error not windows
476#endif
477int main(void) {}
478EOF
479
480if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
481 mingw32="yes"
482fi
483
bellard67b915a2004-03-31 23:37:16 +0000484if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000485 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000486 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000487 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000488 linux_user="no"
489fi
490
aliguori997306f2008-09-26 15:52:17 +0000491if [ "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
aliguoricd01b4a2008-08-21 19:25:45 +0000492 AIOLIBS=
aliguori997306f2008-09-26 15:52:17 +0000493elif [ "$bsd" = "yes" ]; then
494 AIOLIBS="-lpthread"
aliguoricd01b4a2008-08-21 19:25:45 +0000495else
496 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
497 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000498fi
499
ths5fafdf22007-09-16 21:08:06 +0000500# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000501if test "$check_gcc" = "yes" ; then
502 cat > $TMPC <<EOF
503#if __GNUC__ < 4
504#error gcc3
505#endif
506int main(){return 0;}
507EOF
pbrookdb7287e2008-02-03 16:27:13 +0000508 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000509 echo "WARNING: \"$cc\" looks like gcc 4.x"
510 found_compat_cc="no"
511 if test "$gcc3_search" = "yes" ; then
512 echo "Looking for gcc 3.x"
513 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000514 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000515 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000516 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000517 found_compat_cc="yes"
518 break
519 fi
520 done
521 if test "$found_compat_cc" = "no" ; then
522 echo "gcc 3.x not found!"
523 fi
524 fi
525 if test "$found_compat_cc" = "no" ; then
526 echo "QEMU is known to have problems when compiled with gcc 4.x"
527 echo "It is recommended that you use gcc 3.x to build QEMU"
528 echo "To use this compiler anyway, configure with --disable-gcc-check"
529 exit 1;
530 fi
531 fi
532fi
533
bellardec530c82006-04-25 22:36:06 +0000534#
535# Solaris specific configure tool chain decisions
536#
537if test "$solaris" = "yes" ; then
538 #
539 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
540 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000541 #
bellardec530c82006-04-25 22:36:06 +0000542 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
543 solgcc=`which $cc`
544 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
545 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
546 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
547 echo "or get the latest patch from SunSolve for gcc"
548 exit 1
549 fi
550 fi
551 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
552 if test -z "$solinst" ; then
553 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
554 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
555 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
556 exit 1
557 fi
558 if test "$solinst" = "/usr/sbin/install" ; then
559 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
560 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
561 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
562 exit 1
563 fi
bellardec530c82006-04-25 22:36:06 +0000564 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
565 if test -z "$sol_ar" ; then
566 echo "Error: No path includes ar"
567 if test -f /usr/ccs/bin/ar ; then
568 echo "Add /usr/ccs/bin to your path and rerun configure"
569 fi
570 exit 1
571 fi
ths5fafdf22007-09-16 21:08:06 +0000572fi
bellardec530c82006-04-25 22:36:06 +0000573
574
bellard5327cf42005-01-10 23:18:50 +0000575if test -z "$target_list" ; then
576# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000577 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000578 target_list="\
579i386-softmmu \
580x86_64-softmmu \
581arm-softmmu \
582cris-softmmu \
583m68k-softmmu \
584mips-softmmu \
585mipsel-softmmu \
586mips64-softmmu \
587mips64el-softmmu \
588ppc-softmmu \
589ppcemb-softmmu \
590ppc64-softmmu \
591sh4-softmmu \
592sh4eb-softmmu \
593sparc-softmmu \
594"
pbrook0a8e90f2006-03-19 14:54:16 +0000595 fi
bellard5327cf42005-01-10 23:18:50 +0000596# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000597 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000598 target_list="${target_list}\
599i386-linux-user \
600x86_64-linux-user \
601alpha-linux-user \
602arm-linux-user \
603armeb-linux-user \
604cris-linux-user \
605m68k-linux-user \
606mips-linux-user \
607mipsel-linux-user \
608ppc-linux-user \
609ppc64-linux-user \
610ppc64abi32-linux-user \
611sh4-linux-user \
612sh4eb-linux-user \
613sparc-linux-user \
614sparc64-linux-user \
615sparc32plus-linux-user \
616"
ths831b7822007-01-18 20:06:33 +0000617 fi
618# the following are Darwin specific
619 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000620 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000621 fi
bellard6e20a452005-06-05 15:56:02 +0000622else
pbrookb1a550a2006-04-16 13:28:56 +0000623 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000624fi
pbrook0a8e90f2006-03-19 14:54:16 +0000625if test -z "$target_list" ; then
626 echo "No targets enabled"
627 exit 1
628fi
bellard5327cf42005-01-10 23:18:50 +0000629
bellard7d132992003-03-06 23:23:54 +0000630if test -z "$cross_prefix" ; then
631
632# ---
633# big/little endian test
634cat > $TMPC << EOF
635#include <inttypes.h>
636int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000637 volatile uint32_t i=0x01234567;
638 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000639}
640EOF
641
pbrookdb7287e2008-02-03 16:27:13 +0000642if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000643$TMPE && bigendian="yes"
644else
645echo big/little test failed
646fi
647
648else
649
650# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000651if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000652 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000653 -o "$cpu" = "m68k" \
654 -o "$cpu" = "mips" \
655 -o "$cpu" = "mips64" \
656 -o "$cpu" = "powerpc" \
657 -o "$cpu" = "s390" \
658 -o "$cpu" = "sparc" \
659 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000660 bigendian="yes"
661fi
662
663fi
664
bellardb6853692005-06-05 17:10:39 +0000665# host long bits test
666hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000667if test "$cpu" = "x86_64" \
668 -o "$cpu" = "alpha" \
669 -o "$cpu" = "ia64" \
670 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000671 hostlongbits="64"
672fi
673
malc810260a2008-07-23 19:17:46 +0000674# ppc specific hostlongbits selection
675if test "$cpu" = "powerpc" ; then
676 cat > $TMPC <<EOF
677int main(void){return sizeof(long);}
678EOF
679
680 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
681 $TMPE
682 case $? in
683 4) hostlongbits="32";;
684 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000685 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000686 esac
687 else
688 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000689 exit 1
malc810260a2008-07-23 19:17:46 +0000690 fi
691fi
692
bellarde8cd23d2003-06-25 16:08:13 +0000693# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000694cat > $TMPC <<EOF
695int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000696}
697EOF
698
pbrookbd0c5662008-05-29 14:34:11 +0000699# Check host NPTL support
700cat > $TMPC <<EOF
701#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000702#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000703void foo()
704{
705#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
706#error bork
707#endif
708}
709EOF
710
711if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
712 :
713else
714 nptl="no"
715fi
716
bellard11d9f692004-04-02 20:55:59 +0000717##########################################
718# SDL probe
719
720sdl_too_old=no
721
722if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000723 sdl_config="sdl-config"
724 sdl=no
725 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000726
727cat > $TMPC << EOF
728#include <SDL.h>
729#undef main /* We don't want SDL to override our main() */
730int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
731EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000732 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC `$sdl_config --libs 2> /dev/null` 2> /tmp/qemu-$$-sdl-config.log ; then
733 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
734 if test "$_sdlversion" -lt 121 ; then
735 sdl_too_old=yes
736 else
737 if test "$cocoa" = "no" ; then
738 sdl=yes
739 fi
740 fi
741
742 # static link with sdl ?
743 if test "$sdl" = "yes" ; then
744 aa="no"
745 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
746 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
747 if [ "$aa" = "yes" ] ; then
748 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000749 fi
bellard11d9f692004-04-02 20:55:59 +0000750
aliguoricd01b4a2008-08-21 19:25:45 +0000751 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
752 sdl_static=yes
753 fi
754 fi # static link
755 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000756else
ths069b0bd2007-07-12 00:27:15 +0000757 # Make sure to disable cocoa if sdl was set
758 if test "$sdl" = "yes" ; then
759 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000760 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000761 fi
bellarda6e022a2004-04-02 21:55:47 +0000762fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000763
ths8f28f3f2007-01-05 21:25:54 +0000764##########################################
ths8d5d2d42007-08-25 01:37:51 +0000765# VNC TLS detection
766if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000767cat > $TMPC <<EOF
768#include <gnutls/gnutls.h>
769int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
770EOF
771 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
772 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
773 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
774 $vnc_tls_libs 2> /dev/null ; then
775 :
776 else
777 vnc_tls="no"
778 fi
ths8d5d2d42007-08-25 01:37:51 +0000779fi
780
781##########################################
ths8a16d272008-07-19 09:56:24 +0000782# vde libraries probe
783if test "$vde" = "yes" ; then
784 cat > $TMPC << EOF
785#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000786int main(void)
787{
788 struct vde_open_args a = {0, 0, 0};
789 vde_open("", "", &a);
790 return 0;
791}
ths8a16d272008-07-19 09:56:24 +0000792EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000793 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000794 :
795 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000796 vde="no"
ths8a16d272008-07-19 09:56:24 +0000797 fi
798fi
799
800##########################################
malcc2de5c92008-06-28 19:13:06 +0000801# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000802
malcc2de5c92008-06-28 19:13:06 +0000803audio_drv_probe()
804{
805 drv=$1
806 hdr=$2
807 lib=$3
808 exp=$4
809 cfl=$5
810 cat > $TMPC << EOF
811#include <$hdr>
812int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000813EOF
malcc2de5c92008-06-28 19:13:06 +0000814 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
815 :
816 else
817 echo
818 echo "Error: $drv check failed"
819 echo "Make sure to have the $drv libs and headers installed."
820 echo
821 exit 1
822 fi
823}
824
malc2fa7d3b2008-07-29 12:58:44 +0000825audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000826for drv in $audio_drv_list; do
827 case $drv in
828 alsa)
829 audio_drv_probe $drv alsa/asoundlib.h -lasound \
830 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
831 ;;
832
833 fmod)
834 if test -z $fmod_lib || test -z $fmod_inc; then
835 echo
836 echo "Error: You must specify path to FMOD library and headers"
837 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
838 echo
839 exit 1
840 fi
841 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
842 ;;
843
844 esd)
845 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
846 ;;
malcb8e59f12008-07-02 21:03:08 +0000847
848 pa)
849 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
850 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
851 ;;
852
blueswir12f6a1ab2008-08-21 18:00:53 +0000853 oss|sdl|core|wav|dsound)
854 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
855 ;;
856
malce4c63a62008-07-19 16:15:16 +0000857 *)
malc1c9b2a52008-07-19 16:57:30 +0000858 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000859 echo
860 echo "Error: Unknown driver '$drv' selected"
861 echo "Possible drivers are: $audio_possible_drivers"
862 echo
863 exit 1
864 }
865 ;;
malcc2de5c92008-06-28 19:13:06 +0000866 esac
867done
ths8f28f3f2007-01-05 21:25:54 +0000868
balrog4d3b6f62008-02-10 16:33:14 +0000869##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000870# BrlAPI probe
871
872if test -z "$brlapi" ; then
873 brlapi=no
874cat > $TMPC << EOF
875#include <brlapi.h>
876int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
877EOF
aurel32a40e56d2008-05-04 00:50:25 +0000878 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000879 brlapi=yes
880 fi # brlapi compile test
881fi # -z $brlapi
882
883##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000884# curses probe
885
886if test "$curses" = "yes" ; then
887 curses=no
888 cat > $TMPC << EOF
889#include <curses.h>
890int main(void) { return curses_version(); }
891EOF
pbrookaf896aa2008-03-23 00:47:42 +0000892 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000893 curses=yes
894 fi
895fi # test "$curses"
896
blueswir1414f0da2008-08-15 18:20:52 +0000897##########################################
balrogfb599c92008-09-28 23:49:55 +0000898# bluez support probe
899if test "$bluez" = "yes" ; then
900 `pkg-config bluez` || bluez="no"
901fi
902if test "$bluez" = "yes" ; then
903 bluez_cflags=`pkg-config --cflags bluez`
904 bluez_libs=`pkg-config --libs bluez`
905fi
906
907##########################################
blueswir1414f0da2008-08-15 18:20:52 +0000908# AIO probe
909if test "$aio" = "yes" ; then
910 aio=no
911 cat > $TMPC << EOF
912#include <aio.h>
913int main(void) { return aio_write(NULL); }
914EOF
915 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
916 aio=yes
917 fi
918fi
919
aliguori27463102008-09-27 20:58:43 +0000920##########################################
921# signalfd probe
922cat > $TMPC << EOF
923#define _GNU_SOURCE
924#include <unistd.h>
925#include <sys/syscall.h>
926#include <signal.h>
927int main(void) { return syscall(SYS_signalfd, -1, NULL, _NSIG / 8); }
928EOF
929
930if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
931 signalfd=yes
932fi
933
934##########################################
935# eventfd probe
936cat > $TMPC << EOF
937#define _GNU_SOURCE
938#include <unistd.h>
939#include <sys/syscall.h>
940int main(void) { return syscall(SYS_eventfd, 0); }
941EOF
942
943if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
944 eventfd=yes
945fi
946
pbrookcc8ae6d2006-04-23 17:57:59 +0000947# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000948if [ -x "`which texi2html 2>/dev/null`" ] && \
949 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000950 build_docs="yes"
951fi
952
bellard11d9f692004-04-02 20:55:59 +0000953if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000954 if test -z "$prefix" ; then
955 prefix="/c/Program Files/Qemu"
956 fi
957 mansuffix=""
958 datasuffix=""
959 docsuffix=""
960 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000961else
pbrook308c3592007-02-27 00:52:01 +0000962 if test -z "$prefix" ; then
963 prefix="/usr/local"
964 fi
965 mansuffix="/share/man"
966 datasuffix="/share/qemu"
967 docsuffix="/share/doc/qemu"
968 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000969fi
bellard5a671352003-10-01 00:13:48 +0000970
bellard43ce4df2003-06-09 19:53:12 +0000971echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000972echo "BIOS directory $prefix$datasuffix"
973echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000974if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000975echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000976echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000977fi
bellard5a671352003-10-01 00:13:48 +0000978echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000979echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000980echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000981echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000982echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000983echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000984echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000985echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000986echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000987echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000988echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000989echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000990echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000991if test "$darwin" = "yes" ; then
992 echo "Cocoa support $cocoa"
993fi
bellard97a847b2003-08-10 21:36:04 +0000994echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000995if test "$sdl" != "no" ; then
996 echo "SDL static link $sdl_static"
997fi
balrog4d3b6f62008-02-10 16:33:14 +0000998echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000999echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +00001000echo "Audio drivers $audio_drv_list"
1001echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +00001002echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +00001003echo "VNC TLS support $vnc_tls"
1004if test "$vnc_tls" = "yes" ; then
1005 echo " TLS CFLAGS $vnc_tls_cflags"
1006 echo " TLS LIBS $vnc_tls_libs"
1007fi
blueswir131422552007-04-16 18:27:06 +00001008if test -n "$sparc_cpu"; then
1009 echo "Target Sparc Arch $sparc_cpu"
1010fi
bellard07f4ddb2005-04-23 17:44:28 +00001011echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +00001012echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +00001013echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +00001014[ ! -z "$uname_release" ] && \
1015echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +00001016echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +00001017echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +00001018echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +00001019
bellard97a847b2003-08-10 21:36:04 +00001020if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +00001021echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +00001022fi
ths20b40c62007-07-11 23:39:45 +00001023if [ -s /tmp/qemu-$$-sdl-config.log ]; then
1024 echo "The error log from compiling the libSDL test is: "
1025 cat /tmp/qemu-$$-sdl-config.log
1026fi
1027rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +00001028#if test "$sdl_static" = "no"; then
1029# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
1030#fi
bellard97a847b2003-08-10 21:36:04 +00001031config_mak="config-host.mak"
1032config_h="config-host.h"
1033
bellard7c1f25b2004-04-22 00:02:08 +00001034#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +00001035
ths15d9ca02007-07-31 23:07:32 +00001036test -f $config_h && mv $config_h ${config_h}~
1037
bellard97a847b2003-08-10 21:36:04 +00001038echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +00001039echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001040echo "/* Automatically generated by configure - do not modify */" > $config_h
1041
1042echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001043echo "bindir=\${prefix}$binsuffix" >> $config_mak
1044echo "mandir=\${prefix}$mansuffix" >> $config_mak
1045echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +00001046echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +00001047echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001048echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +00001049echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001050echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001051echo "HOST_CC=$host_cc" >> $config_mak
1052echo "AR=$ar" >> $config_mak
1053echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001054# XXX: only use CFLAGS and LDFLAGS ?
1055# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1056# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001057echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001058echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1059echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1060echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001061echo "CFLAGS=$CFLAGS" >> $config_mak
1062echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001063echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001064echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001065case "$cpu" in
1066 i386)
1067 echo "ARCH=i386" >> $config_mak
1068 echo "#define HOST_I386 1" >> $config_h
1069 ;;
1070 x86_64)
1071 echo "ARCH=x86_64" >> $config_mak
1072 echo "#define HOST_X86_64 1" >> $config_h
1073 ;;
1074 alpha)
1075 echo "ARCH=alpha" >> $config_mak
1076 echo "#define HOST_ALPHA 1" >> $config_h
1077 ;;
1078 armv4b)
1079 echo "ARCH=arm" >> $config_mak
1080 echo "#define HOST_ARM 1" >> $config_h
1081 ;;
1082 armv4l)
1083 echo "ARCH=arm" >> $config_mak
1084 echo "#define HOST_ARM 1" >> $config_h
1085 ;;
1086 cris)
1087 echo "ARCH=cris" >> $config_mak
1088 echo "#define HOST_CRIS 1" >> $config_h
1089 ;;
1090 hppa)
1091 echo "ARCH=hppa" >> $config_mak
1092 echo "#define HOST_HPPA 1" >> $config_h
1093 ;;
1094 ia64)
1095 echo "ARCH=ia64" >> $config_mak
1096 echo "#define HOST_IA64 1" >> $config_h
1097 ;;
1098 m68k)
1099 echo "ARCH=m68k" >> $config_mak
1100 echo "#define HOST_M68K 1" >> $config_h
1101 ;;
1102 mips)
1103 echo "ARCH=mips" >> $config_mak
1104 echo "#define HOST_MIPS 1" >> $config_h
1105 ;;
1106 mips64)
1107 echo "ARCH=mips64" >> $config_mak
1108 echo "#define HOST_MIPS64 1" >> $config_h
1109 ;;
1110 powerpc)
malc810260a2008-07-23 19:17:46 +00001111 if test "$hostlongbits" = "32"; then
1112 echo "ARCH=ppc" >> $config_mak
1113 echo "#define HOST_PPC 1" >> $config_h
1114 else
1115 echo "ARCH=ppc64" >> $config_mak
1116 echo "#define HOST_PPC64 1" >> $config_h
1117 fi
aurel322408a522008-04-20 20:19:44 +00001118 ;;
1119 s390)
1120 echo "ARCH=s390" >> $config_mak
1121 echo "#define HOST_S390 1" >> $config_h
1122 ;;
1123 sparc)
1124 echo "ARCH=sparc" >> $config_mak
1125 echo "#define HOST_SPARC 1" >> $config_h
1126 ;;
1127 sparc64)
1128 echo "ARCH=sparc64" >> $config_mak
1129 echo "#define HOST_SPARC64 1" >> $config_h
1130 ;;
1131 *)
1132 echo "Unsupported CPU = $cpu"
1133 exit 1
1134 ;;
1135esac
bellard7d132992003-03-06 23:23:54 +00001136if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001137 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1138 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1139fi
bellardb6853692005-06-05 17:10:39 +00001140echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001141if test "$mingw32" = "yes" ; then
1142 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001143 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001144else
1145 cat > $TMPC << EOF
1146#include <byteswap.h>
1147int main(void) { return bswap_32(0); }
1148EOF
pbrookdb7287e2008-02-03 16:27:13 +00001149 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001150 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1151 fi
bellard67b915a2004-03-31 23:37:16 +00001152fi
blueswir1128ab2f2008-08-15 18:33:42 +00001153
1154if [ "$openbsd" = "yes" ] ; then
1155 echo "#define ENOTSUP 4096" >> $config_h
1156fi
1157
bellard83fb7ad2004-07-05 21:25:26 +00001158if test "$darwin" = "yes" ; then
1159 echo "CONFIG_DARWIN=yes" >> $config_mak
1160 echo "#define CONFIG_DARWIN 1" >> $config_h
1161fi
bellardec530c82006-04-25 22:36:06 +00001162if test "$solaris" = "yes" ; then
1163 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001164 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001165 if test "$needs_libsunmath" = "yes" ; then
1166 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1167 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1168 fi
bellardec530c82006-04-25 22:36:06 +00001169fi
blueswir131422552007-04-16 18:27:06 +00001170if test -n "$sparc_cpu"; then
1171 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1172 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1173fi
bellard67b915a2004-03-31 23:37:16 +00001174if test "$gdbstub" = "yes" ; then
1175 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1176 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1177fi
bellard97a847b2003-08-10 21:36:04 +00001178if test "$gprof" = "yes" ; then
1179 echo "TARGET_GPROF=yes" >> $config_mak
1180 echo "#define HAVE_GPROF 1" >> $config_h
1181fi
1182if test "$static" = "yes" ; then
1183 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001184 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001185fi
bellard05c2a3e2006-02-08 22:39:17 +00001186if test $profiler = "yes" ; then
1187 echo "#define CONFIG_PROFILER 1" >> $config_h
1188fi
bellardc20709a2004-04-21 23:27:19 +00001189if test "$slirp" = "yes" ; then
1190 echo "CONFIG_SLIRP=yes" >> $config_mak
1191 echo "#define CONFIG_SLIRP 1" >> $config_h
1192fi
ths8a16d272008-07-19 09:56:24 +00001193if test "$vde" = "yes" ; then
1194 echo "CONFIG_VDE=yes" >> $config_mak
1195 echo "#define CONFIG_VDE 1" >> $config_h
1196 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1197fi
malc0c58ac12008-06-25 21:04:05 +00001198for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001199 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001200 echo "$def=yes" >> $config_mak
1201 echo "#define $def 1" >> $config_h
1202done
1203echo "#define AUDIO_DRIVERS \\" >> $config_h
1204for drv in $audio_drv_list; do
1205 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001206 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001207 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001208 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001209 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1210 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001211 elif test "$drv" = "oss"; then
1212 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001213 fi
1214done
1215echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001216if test "$mixemu" = "yes" ; then
1217 echo "CONFIG_MIXEMU=yes" >> $config_mak
1218 echo "#define CONFIG_MIXEMU 1" >> $config_h
1219fi
ths8d5d2d42007-08-25 01:37:51 +00001220if test "$vnc_tls" = "yes" ; then
1221 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1222 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1223 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1224 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1225fi
pbrookb1a550a2006-04-16 13:28:56 +00001226qemu_version=`head $source_path/VERSION`
1227echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001228echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001229
1230echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001231if [ "$source_path_used" = "yes" ]; then
1232 echo "VPATH=$source_path" >> $config_mak
1233fi
bellard97a847b2003-08-10 21:36:04 +00001234echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001235if [ "$build_docs" = "yes" ] ; then
1236 echo "BUILD_DOCS=yes" >> $config_mak
1237fi
bellard49ecc3f2007-11-07 19:25:15 +00001238if test "$static" = "yes"; then
1239 sdl1=$sdl_static
1240else
1241 sdl1=$sdl
1242fi
1243if test "$sdl1" = "yes" ; then
1244 echo "#define CONFIG_SDL 1" >> $config_h
1245 echo "CONFIG_SDL=yes" >> $config_mak
1246 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1247 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1248 else
1249 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1250 fi
1251 if [ "${aa}" = "yes" ] ; then
1252 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1253 else
1254 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1255 fi
1256fi
1257if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001258 echo "#define CONFIG_COCOA 1" >> $config_h
1259 echo "CONFIG_COCOA=yes" >> $config_mak
1260fi
1261if test "$curses" = "yes" ; then
1262 echo "#define CONFIG_CURSES 1" >> $config_h
1263 echo "CONFIG_CURSES=yes" >> $config_mak
1264 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001265fi
aurel322e4d9fb2008-04-08 06:01:02 +00001266if test "$brlapi" = "yes" ; then
1267 echo "CONFIG_BRLAPI=yes" >> $config_mak
1268 echo "#define CONFIG_BRLAPI 1" >> $config_h
1269 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1270fi
balrogfb599c92008-09-28 23:49:55 +00001271if test "$bluez" = "yes" ; then
1272 echo "CONFIG_BLUEZ=yes" >> $config_mak
1273 echo "CONFIG_BLUEZ_CFLAGS=$bluez_cflags" >> $config_mak
1274 echo "CONFIG_BLUEZ_LIBS=$bluez_libs" >> $config_mak
1275 echo "#define CONFIG_BLUEZ 1" >> $config_h
1276fi
blueswir1414f0da2008-08-15 18:20:52 +00001277if test "$aio" = "yes" ; then
1278 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001279 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001280fi
aliguori27463102008-09-27 20:58:43 +00001281if test "$signalfd" = "yes" ; then
1282 echo "#define CONFIG_signalfd 1" >> $config_h
1283fi
1284if test "$eventfd" = "yes" ; then
1285 echo "#define CONFIG_eventfd 1" >> $config_h
1286fi
bellard97a847b2003-08-10 21:36:04 +00001287
bellard83fb7ad2004-07-05 21:25:26 +00001288# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001289if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001290 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001291 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001292 echo "#define _BSD 1" >> $config_h
1293fi
1294
pbrookc5937222006-05-14 11:30:38 +00001295echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1296
pbrookc39e3332007-09-22 16:49:14 +00001297tools=
1298if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1299 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001300 if [ "$linux" = "yes" ] ; then
1301 tools="qemu-nbd\$(EXESUF) $tools"
1302 fi
pbrookc39e3332007-09-22 16:49:14 +00001303fi
1304echo "TOOLS=$tools" >> $config_mak
1305
ths15d9ca02007-07-31 23:07:32 +00001306test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1307
bellard1d14ffa2005-10-30 18:58:22 +00001308for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001309target_dir="$target"
1310config_mak=$target_dir/config.mak
1311config_h=$target_dir/config.h
1312target_cpu=`echo $target | cut -d '-' -f 1`
1313target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001314[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001315[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1316[ "$target_cpu" = "mips" ] && target_bigendian=yes
1317[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1318[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001319[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001320[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001321[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001322[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001323[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001324[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1325[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1326[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001327target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001328target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001329target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001330target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001331case "$target" in
1332 ${target_cpu}-softmmu)
1333 target_softmmu="yes"
1334 ;;
1335 ${target_cpu}-linux-user)
1336 target_user_only="yes"
1337 target_linux_user="yes"
1338 ;;
1339 ${target_cpu}-darwin-user)
1340 target_user_only="yes"
1341 target_darwin_user="yes"
1342 ;;
1343 *)
1344 echo "ERROR: Target '$target' not recognised"
1345 exit 1
1346 ;;
1347esac
ths831b7822007-01-18 20:06:33 +00001348
bellard97ccc682005-07-02 13:32:17 +00001349if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001350 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001351 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001352 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001353 echo "Note that this will disable all output from the virtual graphics card"
1354 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001355 exit 1;
1356fi
1357
bellard7c1f25b2004-04-22 00:02:08 +00001358#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001359
ths15d9ca02007-07-31 23:07:32 +00001360test -f $config_h && mv $config_h ${config_h}~
1361
bellard97a847b2003-08-10 21:36:04 +00001362mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001363mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001364mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001365if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001366 mkdir -p $target_dir/nwfpe
1367fi
1368
bellardec530c82006-04-25 22:36:06 +00001369#
1370# don't use ln -sf as not all "ln -sf" over write the file/link
1371#
1372rm -f $target_dir/Makefile
1373ln -s $source_path/Makefile.target $target_dir/Makefile
1374
bellard97a847b2003-08-10 21:36:04 +00001375
1376echo "# Automatically generated by configure - do not modify" > $config_mak
1377echo "/* Automatically generated by configure - do not modify */" > $config_h
1378
1379
1380echo "include ../config-host.mak" >> $config_mak
1381echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001382
pbrooke5fe0c52006-06-11 13:32:59 +00001383bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001384elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001385target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001386interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1387echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001388
aurel322408a522008-04-20 20:19:44 +00001389case "$target_cpu" in
1390 i386)
1391 echo "TARGET_ARCH=i386" >> $config_mak
1392 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1393 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001394 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001395 then
1396 echo "#define USE_KQEMU 1" >> $config_h
1397 fi
aurel32f2bf0942008-05-05 06:00:27 +00001398 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001399 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001400 then
1401 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1402 else
1403 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1404 fi
aurel322408a522008-04-20 20:19:44 +00001405 ;;
1406 x86_64)
1407 echo "TARGET_ARCH=x86_64" >> $config_mak
1408 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1409 echo "#define TARGET_I386 1" >> $config_h
1410 echo "#define TARGET_X86_64 1" >> $config_h
1411 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1412 then
1413 echo "#define USE_KQEMU 1" >> $config_h
1414 fi
1415 ;;
1416 alpha)
1417 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001418 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001419 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1420 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001421 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001422 ;;
1423 arm|armeb)
1424 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001425 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1426 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001427 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001428 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001429 ;;
1430 cris)
1431 echo "TARGET_ARCH=cris" >> $config_mak
1432 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1433 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001434 ;;
1435 m68k)
1436 echo "TARGET_ARCH=m68k" >> $config_mak
1437 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1438 echo "#define TARGET_M68K 1" >> $config_h
1439 bflt="yes"
1440 ;;
1441 mips|mipsel)
1442 echo "TARGET_ARCH=mips" >> $config_mak
1443 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1444 echo "#define TARGET_MIPS 1" >> $config_h
1445 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1446 ;;
1447 mipsn32|mipsn32el)
1448 echo "TARGET_ARCH=mipsn32" >> $config_mak
1449 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1450 echo "#define TARGET_MIPS 1" >> $config_h
1451 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1452 ;;
1453 mips64|mips64el)
1454 echo "TARGET_ARCH=mips64" >> $config_mak
1455 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1456 echo "#define TARGET_MIPS 1" >> $config_h
1457 echo "#define TARGET_MIPS64 1" >> $config_h
1458 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1459 ;;
1460 ppc)
1461 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001462 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001463 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1464 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001465 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001466 ;;
1467 ppcemb)
1468 echo "TARGET_ARCH=ppcemb" >> $config_mak
1469 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001470 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001471 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1472 echo "#define TARGET_PPC 1" >> $config_h
1473 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001474 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001475 ;;
1476 ppc64)
1477 echo "TARGET_ARCH=ppc64" >> $config_mak
1478 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001479 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001480 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1481 echo "#define TARGET_PPC 1" >> $config_h
1482 echo "#define TARGET_PPC64 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001483 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001484 ;;
1485 ppc64abi32)
1486 echo "TARGET_ARCH=ppc64" >> $config_mak
1487 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1488 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001489 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001490 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1491 echo "#define TARGET_PPC 1" >> $config_h
1492 echo "#define TARGET_PPC64 1" >> $config_h
1493 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001494 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001495 ;;
1496 sh4|sh4eb)
1497 echo "TARGET_ARCH=sh4" >> $config_mak
1498 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1499 echo "#define TARGET_SH4 1" >> $config_h
1500 bflt="yes"
aurel320b6d3ae2008-09-15 07:43:43 +00001501 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001502 ;;
1503 sparc)
1504 echo "TARGET_ARCH=sparc" >> $config_mak
1505 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1506 echo "#define TARGET_SPARC 1" >> $config_h
1507 ;;
1508 sparc64)
1509 echo "TARGET_ARCH=sparc64" >> $config_mak
1510 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1511 echo "#define TARGET_SPARC 1" >> $config_h
1512 echo "#define TARGET_SPARC64 1" >> $config_h
1513 elfload32="yes"
1514 ;;
1515 sparc32plus)
1516 echo "TARGET_ARCH=sparc64" >> $config_mak
1517 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1518 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1519 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1520 echo "#define TARGET_SPARC 1" >> $config_h
1521 echo "#define TARGET_SPARC64 1" >> $config_h
1522 echo "#define TARGET_ABI32 1" >> $config_h
1523 ;;
1524 *)
1525 echo "Unsupported target CPU"
1526 exit 1
1527 ;;
1528esac
bellardde83cd02003-06-15 20:25:43 +00001529if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001530 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1531 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1532fi
1533if test "$target_softmmu" = "yes" ; then
1534 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1535 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001536fi
bellard997344f2003-10-27 21:10:39 +00001537if test "$target_user_only" = "yes" ; then
1538 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1539 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1540fi
ths831b7822007-01-18 20:06:33 +00001541if test "$target_linux_user" = "yes" ; then
1542 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1543 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1544fi
1545if test "$target_darwin_user" = "yes" ; then
1546 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1547 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1548fi
bellardde83cd02003-06-15 20:25:43 +00001549
aurel320938cda2008-04-11 21:36:06 +00001550if test "$target_cpu" = "arm" \
1551 -o "$target_cpu" = "armeb" \
1552 -o "$target_cpu" = "m68k" \
1553 -o "$target_cpu" = "mips" \
1554 -o "$target_cpu" = "mipsel" \
1555 -o "$target_cpu" = "mipsn32" \
1556 -o "$target_cpu" = "mipsn32el" \
1557 -o "$target_cpu" = "mips64" \
1558 -o "$target_cpu" = "mips64el" \
1559 -o "$target_cpu" = "sparc" \
1560 -o "$target_cpu" = "sparc64" \
1561 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001562 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1563 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1564fi
pbrooke5fe0c52006-06-11 13:32:59 +00001565if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1566 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1567 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1568fi
pbrookbd0c5662008-05-29 14:34:11 +00001569if test "$target_user_only" = "yes" \
1570 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1571 echo "#define USE_NPTL 1" >> $config_h
1572fi
blueswir1cb33da52007-10-09 16:34:29 +00001573# 32 bit ELF loader in addition to native 64 bit loader?
1574if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1575 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1576 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1577fi
bellard5b0753e2005-03-01 21:37:28 +00001578
ths15d9ca02007-07-31 23:07:32 +00001579test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1580
bellard97a847b2003-08-10 21:36:04 +00001581done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001582
1583# build tree in object directory if source path is different from current one
1584if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001585 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001586 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001587 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001588 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001589 for dir in $DIRS ; do
1590 mkdir -p $dir
1591 done
bellardec530c82006-04-25 22:36:06 +00001592 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001593 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001594 rm -f $f
1595 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001596 done
1597fi
bellard7d132992003-03-06 23:23:54 +00001598
bellard97a847b2003-08-10 21:36:04 +00001599rm -f $TMPO $TMPC $TMPE $TMPS