blob: 1da42a1c3daebbca2b54e55caa0c76da33368c29 [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"
bellard7d132992003-03-06 23:23:54 +0000113
114# OS specific
115targetos=`uname -s`
116case $targetos in
bellardc326e0a2005-04-23 18:30:28 +0000117CYGWIN*)
118mingw32="yes"
ths6f30fa82007-01-05 01:00:47 +0000119OS_CFLAGS="-mno-cygwin"
thsdb8d7dd2007-07-12 09:29:18 +0000120if [ "$cpu" = "i386" ] ; then
121 kqemu="yes"
122fi
malcc2de5c92008-06-28 19:13:06 +0000123audio_possible_drivers="sdl"
bellardc326e0a2005-04-23 18:30:28 +0000124;;
bellard67b915a2004-03-31 23:37:16 +0000125MINGW32*)
126mingw32="yes"
thsdb8d7dd2007-07-12 09:29:18 +0000127if [ "$cpu" = "i386" ] ; then
128 kqemu="yes"
129fi
malcc2de5c92008-06-28 19:13:06 +0000130audio_possible_drivers="dsound sdl fmod"
bellard67b915a2004-03-31 23:37:16 +0000131;;
ths5c40d2b2007-06-23 16:03:36 +0000132GNU/kFreeBSD)
malc0c58ac12008-06-25 21:04:05 +0000133audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000134audio_possible_drivers="oss sdl esd pa"
ths5c40d2b2007-06-23 16:03:36 +0000135if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
136 kqemu="yes"
137fi
138;;
bellard7d3505c2004-05-12 19:32:15 +0000139FreeBSD)
140bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000141audio_drv_list="oss"
aurel32f34af522008-08-21 23:03:15 +0000142audio_possible_drivers="oss sdl esd pa"
bellarde99f9062005-07-28 21:45:38 +0000143if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellard07f4ddb2005-04-23 17:44:28 +0000144 kqemu="yes"
145fi
bellard7d3505c2004-05-12 19:32:15 +0000146;;
147NetBSD)
148bsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000149audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000150audio_possible_drivers="oss sdl esd"
bellard7d3505c2004-05-12 19:32:15 +0000151;;
152OpenBSD)
153bsd="yes"
blueswir1128ab2f2008-08-15 18:33:42 +0000154openbsd="yes"
malc0c58ac12008-06-25 21:04:05 +0000155audio_drv_list="oss"
malcc2de5c92008-06-28 19:13:06 +0000156audio_possible_drivers="oss sdl esd"
blueswir12f6a1ab2008-08-21 18:00:53 +0000157oss_lib="-lossaudio"
bellard7d3505c2004-05-12 19:32:15 +0000158;;
bellard83fb7ad2004-07-05 21:25:26 +0000159Darwin)
160bsd="yes"
161darwin="yes"
ths831b7822007-01-18 20:06:33 +0000162darwin_user="yes"
thsfd677642007-01-31 12:10:07 +0000163cocoa="yes"
malc0c58ac12008-06-25 21:04:05 +0000164audio_drv_list="coreaudio"
malcc2de5c92008-06-28 19:13:06 +0000165audio_possible_drivers="coreaudio sdl fmod"
ths6f30fa82007-01-05 01:00:47 +0000166OS_CFLAGS="-mdynamic-no-pic"
thsc2c59c32008-01-08 00:00:20 +0000167OS_LDFLAGS="-framework CoreFoundation -framework IOKit"
bellard83fb7ad2004-07-05 21:25:26 +0000168;;
bellardec530c82006-04-25 22:36:06 +0000169SunOS)
thsc2b84fa2007-02-10 23:21:21 +0000170 solaris="yes"
171 make="gmake"
172 install="ginstall"
ths0475a5c2007-04-01 18:54:44 +0000173 needs_libsunmath="no"
thsc2b84fa2007-02-10 23:21:21 +0000174 solarisrev=`uname -r | cut -f2 -d.`
thsef18c882007-09-16 22:12:39 +0000175 # have to select again, because `uname -m` returns i86pc
176 # even on an x86_64 box.
177 solariscpu=`isainfo -k`
178 if test "${solariscpu}" = "amd64" ; then
179 cpu="x86_64"
180 fi
thsc2b84fa2007-02-10 23:21:21 +0000181 if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
ths0475a5c2007-04-01 18:54:44 +0000182 if test "$solarisrev" -le 9 ; then
183 if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then
184 needs_libsunmath="yes"
185 else
186 echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without"
187 echo "libsunmath from the Sun Studio compilers tools, due to a lack of"
188 echo "C99 math features in libm.so in Solaris 8/x86 and Solaris 9/x86"
189 echo "Studio 11 can be downloaded from www.sun.com."
190 exit 1
191 fi
192 fi
193 if test "$solarisrev" -ge 9 ; then
thsc2b84fa2007-02-10 23:21:21 +0000194 kqemu="yes"
195 fi
ths86b2bd92007-02-11 00:31:33 +0000196 fi
ths6b4d2ba2007-05-13 18:02:43 +0000197 if test -f /usr/include/sys/soundcard.h ; then
malc0c58ac12008-06-25 21:04:05 +0000198 audio_drv_list="oss"
ths6b4d2ba2007-05-13 18:02:43 +0000199 fi
malcc2de5c92008-06-28 19:13:06 +0000200 audio_possible_drivers="oss sdl"
ths86b2bd92007-02-11 00:31:33 +0000201;;
bellard1d14ffa2005-10-30 18:58:22 +0000202*)
malc0c58ac12008-06-25 21:04:05 +0000203audio_drv_list="oss"
malcb8e59f12008-07-02 21:03:08 +0000204audio_possible_drivers="oss alsa sdl esd pa"
bellard5327cf42005-01-10 23:18:50 +0000205linux="yes"
ths831b7822007-01-18 20:06:33 +0000206linux_user="yes"
bellard07f4ddb2005-04-23 17:44:28 +0000207if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then
bellardc9ec1fe2005-02-10 21:55:30 +0000208 kqemu="yes"
malcc2de5c92008-06-28 19:13:06 +0000209 audio_possible_drivers="$audio_possible_drivers fmod"
bellardc9ec1fe2005-02-10 21:55:30 +0000210fi
bellardfb065182004-11-09 23:09:44 +0000211;;
bellard7d132992003-03-06 23:23:54 +0000212esac
213
bellard7d3505c2004-05-12 19:32:15 +0000214if [ "$bsd" = "yes" ] ; then
pbrookb1a550a2006-04-16 13:28:56 +0000215 if [ "$darwin" != "yes" ] ; then
bellard83fb7ad2004-07-05 21:25:26 +0000216 make="gmake"
217 fi
bellard7d3505c2004-05-12 19:32:15 +0000218fi
219
bellard7d132992003-03-06 23:23:54 +0000220# find source path
pbrookad064842006-04-16 12:41:07 +0000221source_path=`dirname "$0"`
balrog59faef32008-02-03 04:22:24 +0000222source_path_used="no"
223workdir=`pwd`
pbrookad064842006-04-16 12:41:07 +0000224if [ -z "$source_path" ]; then
balrog59faef32008-02-03 04:22:24 +0000225 source_path=$workdir
pbrookad064842006-04-16 12:41:07 +0000226else
227 source_path=`cd "$source_path"; pwd`
bellard7d132992003-03-06 23:23:54 +0000228fi
pbrook724db112008-02-03 19:20:13 +0000229[ -f "$workdir/vl.c" ] || source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000230
bellard85aa5182007-11-11 20:17:03 +0000231werror="no"
bellard0d1e2392007-11-11 20:24:30 +0000232# generate compile errors on warnings for development builds
233#if grep cvs $source_path/VERSION > /dev/null 2>&1 ; then
234#werror="yes";
235#fi
bellard85aa5182007-11-11 20:17:03 +0000236
bellard7d132992003-03-06 23:23:54 +0000237for opt do
pbrooka46e4032006-04-29 23:05:22 +0000238 optarg=`expr "x$opt" : 'x[^=]*=\(.*\)'`
bellard7d132992003-03-06 23:23:54 +0000239 case "$opt" in
bellard2efc3262005-12-18 19:14:49 +0000240 --help|-h) show_help=yes
241 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000242 --prefix=*) prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000243 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000244 --interp-prefix=*) interp_prefix="$optarg"
bellard32ce6332003-04-11 00:16:16 +0000245 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000246 --source-path=*) source_path="$optarg"
pbrookad064842006-04-16 12:41:07 +0000247 source_path_used="yes"
bellard7d132992003-03-06 23:23:54 +0000248 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000249 --cross-prefix=*) cross_prefix="$optarg"
bellard7d132992003-03-06 23:23:54 +0000250 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000251 --cc=*) cc="$optarg"
pbrook328a4242006-12-19 03:31:34 +0000252 gcc3_search="no"
bellard7d132992003-03-06 23:23:54 +0000253 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000254 --host-cc=*) host_cc="$optarg"
bellard83469012005-07-23 14:27:54 +0000255 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000256 --make=*) make="$optarg"
bellard7d132992003-03-06 23:23:54 +0000257 ;;
pbrook6a882642006-04-17 13:57:12 +0000258 --install=*) install="$optarg"
259 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000260 --extra-cflags=*) CFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000261 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000262 --extra-ldflags=*) LDFLAGS="$optarg"
bellard7d132992003-03-06 23:23:54 +0000263 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000264 --cpu=*) cpu="$optarg"
bellard7d132992003-03-06 23:23:54 +0000265 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000266 --target-list=*) target_list="$optarg"
bellardde83cd02003-06-15 20:25:43 +0000267 ;;
bellard7d132992003-03-06 23:23:54 +0000268 --enable-gprof) gprof="yes"
269 ;;
bellard43ce4df2003-06-09 19:53:12 +0000270 --static) static="yes"
271 ;;
bellard97a847b2003-08-10 21:36:04 +0000272 --disable-sdl) sdl="no"
273 ;;
pbrookb1a550a2006-04-16 13:28:56 +0000274 --fmod-lib=*) fmod_lib="$optarg"
bellard102a52e2004-11-14 19:57:29 +0000275 ;;
malcc2de5c92008-06-28 19:13:06 +0000276 --fmod-inc=*) fmod_inc="$optarg"
277 ;;
blueswir12f6a1ab2008-08-21 18:00:53 +0000278 --oss-lib=*) oss_lib="$optarg"
279 ;;
malc2fa7d3b2008-07-29 12:58:44 +0000280 --audio-card-list=*) audio_card_list=`echo "$optarg" | sed -e 's/,/ /g'`
malc0c58ac12008-06-25 21:04:05 +0000281 ;;
282 --audio-drv-list=*) audio_drv_list="$optarg"
283 ;;
ths8d5d2d42007-08-25 01:37:51 +0000284 --disable-vnc-tls) vnc_tls="no"
285 ;;
bellard443f1372004-06-04 11:13:20 +0000286 --disable-slirp) slirp="no"
bellard1d14ffa2005-10-30 18:58:22 +0000287 ;;
aliguorie0e6c8c02008-07-23 18:14:33 +0000288 --disable-vde) vde="no"
ths8a16d272008-07-19 09:56:24 +0000289 ;;
bellardc9ec1fe2005-02-10 21:55:30 +0000290 --disable-kqemu) kqemu="no"
bellard1d14ffa2005-10-30 18:58:22 +0000291 ;;
aurel322e4d9fb2008-04-08 06:01:02 +0000292 --disable-brlapi) brlapi="no"
293 ;;
bellard05c2a3e2006-02-08 22:39:17 +0000294 --enable-profiler) profiler="yes"
295 ;;
malcc2de5c92008-06-28 19:13:06 +0000296 --enable-cocoa)
297 cocoa="yes" ;
298 sdl="no" ;
299 audio_drv_list="coreaudio `echo $audio_drv_list | sed s,coreaudio,,g`"
bellard1d14ffa2005-10-30 18:58:22 +0000300 ;;
bellard97ccc682005-07-02 13:32:17 +0000301 --disable-gfx-check) check_gfx="no"
302 ;;
bellard1aff3812005-11-02 22:30:45 +0000303 --disable-gcc-check) check_gcc="no"
304 ;;
pbrookcad25d62006-03-19 16:31:11 +0000305 --disable-system) softmmu="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000306 ;;
pbrookcad25d62006-03-19 16:31:11 +0000307 --enable-system) softmmu="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000308 ;;
ths831b7822007-01-18 20:06:33 +0000309 --disable-linux-user) linux_user="no"
pbrook0a8e90f2006-03-19 14:54:16 +0000310 ;;
ths831b7822007-01-18 20:06:33 +0000311 --enable-linux-user) linux_user="yes"
312 ;;
313 --disable-darwin-user) darwin_user="no"
314 ;;
315 --enable-darwin-user) darwin_user="yes"
pbrook0a8e90f2006-03-19 14:54:16 +0000316 ;;
pbrookc5937222006-05-14 11:30:38 +0000317 --enable-uname-release=*) uname_release="$optarg"
318 ;;
blueswir131422552007-04-16 18:27:06 +0000319 --sparc_cpu=*)
320 sparc_cpu="$optarg"
321 case $sparc_cpu in
322 v7|v8) SP_CFLAGS="-m32 -mcpu=${sparc_cpu} -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
323 target_cpu="sparc"; cpu="sparc" ;;
324 v8plus|v8plusa) SP_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m32"
325 target_cpu="sparc"; cpu="sparc" ;;
326 v9) SP_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_${sparc_cpu}__"; SP_LDFLAGS="-m64"
327 target_cpu="sparc64"; cpu="sparc64" ;;
328 *) echo "undefined SPARC architecture. Exiting";exit 1;;
329 esac
330 ;;
bellard85aa5182007-11-11 20:17:03 +0000331 --enable-werror) werror="yes"
332 ;;
333 --disable-werror) werror="no"
334 ;;
balrog4d3b6f62008-02-10 16:33:14 +0000335 --disable-curses) curses="no"
336 ;;
pbrookbd0c5662008-05-29 14:34:11 +0000337 --disable-nptl) nptl="no"
338 ;;
malc8ff9cbf2008-06-23 18:33:30 +0000339 --enable-mixemu) mixemu="yes"
340 ;;
blueswir1414f0da2008-08-15 18:20:52 +0000341 --disable-aio) aio="no"
342 ;;
balrog7f1559c2007-11-17 10:24:32 +0000343 *) echo "ERROR: unknown option $opt"; show_help="yes"
344 ;;
bellard7d132992003-03-06 23:23:54 +0000345 esac
346done
347
ths6f30fa82007-01-05 01:00:47 +0000348# default flags for all hosts
blueswir15f9981c2008-09-06 17:49:06 +0000349CFLAGS="$CFLAGS -Wall -Wundef -O2 -g -fno-strict-aliasing"
ths6f30fa82007-01-05 01:00:47 +0000350LDFLAGS="$LDFLAGS -g"
bellard85aa5182007-11-11 20:17:03 +0000351if test "$werror" = "yes" ; then
352CFLAGS="$CFLAGS -Werror"
353fi
ths6f30fa82007-01-05 01:00:47 +0000354
blueswir131422552007-04-16 18:27:06 +0000355#
356# If cpu ~= sparc and sparc_cpu hasn't been defined, plug in the right
357# ARCH_CFLAGS/ARCH_LDFLAGS (assume sparc_v8plus for 32-bit and sparc_v9 for 64-bit)
358#
bellard40293e52008-01-31 11:32:10 +0000359case "$cpu" in
blueswir131422552007-04-16 18:27:06 +0000360 sparc) if test -z "$sparc_cpu" ; then
361 ARCH_CFLAGS="-m32 -mcpu=ultrasparc -D__sparc_v8plus__"
362 ARCH_LDFLAGS="-m32"
363 else
364 ARCH_CFLAGS="${SP_CFLAGS}"
365 ARCH_LDFLAGS="${SP_LDFLAGS}"
366 fi
367 ;;
368 sparc64) if test -z "$sparc_cpu" ; then
369 ARCH_CFLAGS="-m64 -mcpu=ultrasparc -D__sparc_v9__"
370 ARCH_LDFLAGS="-m64"
371 else
372 ARCH_CFLAGS="${SP_CFLAGS}"
373 ARCH_LDFLAGS="${SP_LDFLAGS}"
374 fi
375 ;;
ths76d83bd2007-11-18 21:22:10 +0000376 s390)
377 ARCH_CFLAGS="-march=z900"
378 ;;
bellard40293e52008-01-31 11:32:10 +0000379 i386)
380 ARCH_CFLAGS="-m32"
381 ARCH_LDFLAGS="-m32"
382 ;;
383 x86_64)
384 ARCH_CFLAGS="-m64"
385 ARCH_LDFLAGS="-m64"
386 ;;
blueswir131422552007-04-16 18:27:06 +0000387esac
388
pbrookaf5db582006-04-08 14:26:41 +0000389if test x"$show_help" = x"yes" ; then
390cat << EOF
391
392Usage: configure [options]
393Options: [defaults in brackets after descriptions]
394
395EOF
396echo "Standard options:"
397echo " --help print this message"
398echo " --prefix=PREFIX install in PREFIX [$prefix]"
399echo " --interp-prefix=PREFIX where to find shared libraries, etc."
400echo " use %M for cpu name [$interp_prefix]"
401echo " --target-list=LIST set target list [$target_list]"
402echo ""
403echo "kqemu kernel acceleration support:"
404echo " --disable-kqemu disable kqemu support"
pbrookaf5db582006-04-08 14:26:41 +0000405echo ""
406echo "Advanced options (experts only):"
407echo " --source-path=PATH path of source code [$source_path]"
408echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]"
409echo " --cc=CC use C compiler CC [$cc]"
410echo " --host-cc=CC use C compiler CC [$host_cc] for dyngen etc."
411echo " --make=MAKE use specified make [$make]"
pbrook6a882642006-04-17 13:57:12 +0000412echo " --install=INSTALL use specified install [$install]"
pbrookaf5db582006-04-08 14:26:41 +0000413echo " --static enable static build [$static]"
bellard85aa5182007-11-11 20:17:03 +0000414echo " --disable-werror disable compilation abort on warning"
balrogfe8f78e2007-10-31 01:03:28 +0000415echo " --disable-sdl disable SDL"
pbrookaf5db582006-04-08 14:26:41 +0000416echo " --enable-cocoa enable COCOA (Mac OS X only)"
malcc2de5c92008-06-28 19:13:06 +0000417echo " --audio-drv-list=LIST set audio drivers list:"
418echo " Available drivers: $audio_possible_drivers"
419echo " --audio-card-list=LIST set list of additional emulated audio cards"
420echo " Available cards: ac97 adlib cs4231a gus"
malc8ff9cbf2008-06-23 18:33:30 +0000421echo " --enable-mixemu enable mixer emulation"
aurel322e4d9fb2008-04-08 06:01:02 +0000422echo " --disable-brlapi disable BrlAPI"
ths8d5d2d42007-08-25 01:37:51 +0000423echo " --disable-vnc-tls disable TLS encryption for VNC server"
pbrookaf896aa2008-03-23 00:47:42 +0000424echo " --disable-curses disable curses output"
pbrookbd0c5662008-05-29 14:34:11 +0000425echo " --disable-nptl disable usermode NPTL support"
pbrookaf5db582006-04-08 14:26:41 +0000426echo " --enable-system enable all system emulation targets"
427echo " --disable-system disable all system emulation targets"
ths831b7822007-01-18 20:06:33 +0000428echo " --enable-linux-user enable all linux usermode emulation targets"
429echo " --disable-linux-user disable all linux usermode emulation targets"
430echo " --enable-darwin-user enable all darwin usermode emulation targets"
431echo " --disable-darwin-user disable all darwin usermode emulation targets"
pbrookaf5db582006-04-08 14:26:41 +0000432echo " --fmod-lib path to FMOD library"
433echo " --fmod-inc path to FMOD includes"
blueswir12f6a1ab2008-08-21 18:00:53 +0000434echo " --oss-lib path to OSS library"
pbrookc5937222006-05-14 11:30:38 +0000435echo " --enable-uname-release=R Return R for uname -r in usermode emulation"
blueswir131422552007-04-16 18:27:06 +0000436echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9"
aliguorie0e6c8c02008-07-23 18:14:33 +0000437echo " --disable-vde disable support for vde network"
blueswir1414f0da2008-08-15 18:20:52 +0000438echo " --disable-aio disable AIO support"
pbrookaf5db582006-04-08 14:26:41 +0000439echo ""
ths5bf08932006-12-23 00:33:26 +0000440echo "NOTE: The object files are built at the place where configure is launched"
pbrookaf5db582006-04-08 14:26:41 +0000441exit 1
442fi
443
bellard7d132992003-03-06 23:23:54 +0000444cc="${cross_prefix}${cc}"
445ar="${cross_prefix}${ar}"
446strip="${cross_prefix}${strip}"
447
pbrook064aae12006-05-08 00:51:44 +0000448# check that the C compiler works.
449cat > $TMPC <<EOF
450int main(void) {}
451EOF
452
pbrookdb7287e2008-02-03 16:27:13 +0000453if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
pbrook064aae12006-05-08 00:51:44 +0000454 : C compiler works ok
455else
456 echo "ERROR: \"$cc\" either does not exist or does not work"
457 exit 1
bellarda7350fa2006-04-23 14:35:23 +0000458fi
459
aliguoricd01b4a2008-08-21 19:25:45 +0000460# check compiler to see if we're on mingw32
461cat > $TMPC <<EOF
462#include <windows.h>
463#ifndef _WIN32
464#error not windows
465#endif
466int main(void) {}
467EOF
468
469if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
470 mingw32="yes"
471fi
472
bellard67b915a2004-03-31 23:37:16 +0000473if test "$mingw32" = "yes" ; then
bellard5327cf42005-01-10 23:18:50 +0000474 linux="no"
bellard67b915a2004-03-31 23:37:16 +0000475 EXESUF=".exe"
bellard9f059ec2004-11-14 18:59:52 +0000476 oss="no"
aliguoricd01b4a2008-08-21 19:25:45 +0000477 linux_user="no"
478fi
479
480if [ "$bsd" = "yes" -o "$darwin" = "yes" -o "$mingw32" = "yes" ] ; then
481 AIOLIBS=
482else
483 # Some Linux architectures (e.g. s390) don't imply -lpthread automatically.
484 AIOLIBS="-lrt -lpthread"
bellard67b915a2004-03-31 23:37:16 +0000485fi
486
ths5fafdf22007-09-16 21:08:06 +0000487# Check for gcc4, error if pre-gcc4
pbrook328a4242006-12-19 03:31:34 +0000488if test "$check_gcc" = "yes" ; then
489 cat > $TMPC <<EOF
490#if __GNUC__ < 4
491#error gcc3
492#endif
493int main(){return 0;}
494EOF
pbrookdb7287e2008-02-03 16:27:13 +0000495 if "$cc" $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook328a4242006-12-19 03:31:34 +0000496 echo "WARNING: \"$cc\" looks like gcc 4.x"
497 found_compat_cc="no"
498 if test "$gcc3_search" = "yes" ; then
499 echo "Looking for gcc 3.x"
500 for compat_cc in $gcc3_list ; do
balrogd4af3de2007-07-26 20:41:46 +0000501 if "$cross_prefix$compat_cc" --version 2> /dev/null | fgrep '(GCC) 3.' > /dev/null 2>&1 ; then
pbrook328a4242006-12-19 03:31:34 +0000502 echo "Found \"$compat_cc\""
pbrook11244262007-02-27 01:03:41 +0000503 cc="$cross_prefix$compat_cc"
pbrook328a4242006-12-19 03:31:34 +0000504 found_compat_cc="yes"
505 break
506 fi
507 done
508 if test "$found_compat_cc" = "no" ; then
509 echo "gcc 3.x not found!"
510 fi
511 fi
512 if test "$found_compat_cc" = "no" ; then
513 echo "QEMU is known to have problems when compiled with gcc 4.x"
514 echo "It is recommended that you use gcc 3.x to build QEMU"
515 echo "To use this compiler anyway, configure with --disable-gcc-check"
516 exit 1;
517 fi
518 fi
519fi
520
bellardec530c82006-04-25 22:36:06 +0000521#
522# Solaris specific configure tool chain decisions
523#
524if test "$solaris" = "yes" ; then
525 #
526 # gcc for solaris 10/fcs in /usr/sfw/bin doesn't compile qemu correctly
527 # override the check with --disable-gcc-check
ths5fafdf22007-09-16 21:08:06 +0000528 #
bellardec530c82006-04-25 22:36:06 +0000529 if test "$solarisrev" -eq 10 -a "$check_gcc" = "yes" ; then
530 solgcc=`which $cc`
531 if test "$solgcc" = "/usr/sfw/bin/gcc" ; then
532 echo "Solaris 10/FCS gcc in /usr/sfw/bin will not compiled qemu correctly."
533 echo "please get gcc-3.4.3 or later, from www.blastwave.org using pkg-get -i gcc3"
534 echo "or get the latest patch from SunSolve for gcc"
535 exit 1
536 fi
537 fi
538 solinst=`which $install 2> /dev/null | /usr/bin/grep -v "no $install in"`
539 if test -z "$solinst" ; then
540 echo "Solaris install program not found. Use --install=/usr/ucb/install or"
541 echo "install fileutils from www.blastwave.org using pkg-get -i fileutils"
542 echo "to get ginstall which is used by default (which lives in /opt/csw/bin)"
543 exit 1
544 fi
545 if test "$solinst" = "/usr/sbin/install" ; then
546 echo "Error: Solaris /usr/sbin/install is not an appropriate install program."
547 echo "try ginstall from the GNU fileutils available from www.blastwave.org"
548 echo "using pkg-get -i fileutils, or use --install=/usr/ucb/install"
549 exit 1
550 fi
bellardec530c82006-04-25 22:36:06 +0000551 sol_ar=`which ar 2> /dev/null | /usr/bin/grep -v "no ar in"`
552 if test -z "$sol_ar" ; then
553 echo "Error: No path includes ar"
554 if test -f /usr/ccs/bin/ar ; then
555 echo "Add /usr/ccs/bin to your path and rerun configure"
556 fi
557 exit 1
558 fi
ths5fafdf22007-09-16 21:08:06 +0000559fi
bellardec530c82006-04-25 22:36:06 +0000560
561
bellard5327cf42005-01-10 23:18:50 +0000562if test -z "$target_list" ; then
563# these targets are portable
pbrook0a8e90f2006-03-19 14:54:16 +0000564 if [ "$softmmu" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000565 target_list="\
566i386-softmmu \
567x86_64-softmmu \
568arm-softmmu \
569cris-softmmu \
570m68k-softmmu \
571mips-softmmu \
572mipsel-softmmu \
573mips64-softmmu \
574mips64el-softmmu \
575ppc-softmmu \
576ppcemb-softmmu \
577ppc64-softmmu \
578sh4-softmmu \
579sh4eb-softmmu \
580sparc-softmmu \
581"
pbrook0a8e90f2006-03-19 14:54:16 +0000582 fi
bellard5327cf42005-01-10 23:18:50 +0000583# the following are Linux specific
ths831b7822007-01-18 20:06:33 +0000584 if [ "$linux_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000585 target_list="${target_list}\
586i386-linux-user \
587x86_64-linux-user \
588alpha-linux-user \
589arm-linux-user \
590armeb-linux-user \
591cris-linux-user \
592m68k-linux-user \
593mips-linux-user \
594mipsel-linux-user \
595ppc-linux-user \
596ppc64-linux-user \
597ppc64abi32-linux-user \
598sh4-linux-user \
599sh4eb-linux-user \
600sparc-linux-user \
601sparc64-linux-user \
602sparc32plus-linux-user \
603"
ths831b7822007-01-18 20:06:33 +0000604 fi
605# the following are Darwin specific
606 if [ "$darwin_user" = "yes" ] ; then
aurel322408a522008-04-20 20:19:44 +0000607 target_list="$target_list i386-darwin-user ppc-darwin-user"
bellard5327cf42005-01-10 23:18:50 +0000608 fi
bellard6e20a452005-06-05 15:56:02 +0000609else
pbrookb1a550a2006-04-16 13:28:56 +0000610 target_list=`echo "$target_list" | sed -e 's/,/ /g'`
bellard5327cf42005-01-10 23:18:50 +0000611fi
pbrook0a8e90f2006-03-19 14:54:16 +0000612if test -z "$target_list" ; then
613 echo "No targets enabled"
614 exit 1
615fi
bellard5327cf42005-01-10 23:18:50 +0000616
bellard7d132992003-03-06 23:23:54 +0000617if test -z "$cross_prefix" ; then
618
619# ---
620# big/little endian test
621cat > $TMPC << EOF
622#include <inttypes.h>
623int main(int argc, char ** argv){
bellard1d14ffa2005-10-30 18:58:22 +0000624 volatile uint32_t i=0x01234567;
625 return (*((uint8_t*)(&i))) == 0x67;
bellard7d132992003-03-06 23:23:54 +0000626}
627EOF
628
pbrookdb7287e2008-02-03 16:27:13 +0000629if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
bellard7d132992003-03-06 23:23:54 +0000630$TMPE && bigendian="yes"
631else
632echo big/little test failed
633fi
634
635else
636
637# if cross compiling, cannot launch a program, so make a static guess
aurel320938cda2008-04-11 21:36:06 +0000638if test "$cpu" = "armv4b" \
aurel32f54b3f92008-04-12 20:14:54 +0000639 -o "$cpu" = "hppa" \
aurel320938cda2008-04-11 21:36:06 +0000640 -o "$cpu" = "m68k" \
641 -o "$cpu" = "mips" \
642 -o "$cpu" = "mips64" \
643 -o "$cpu" = "powerpc" \
644 -o "$cpu" = "s390" \
645 -o "$cpu" = "sparc" \
646 -o "$cpu" = "sparc64"; then
bellard7d132992003-03-06 23:23:54 +0000647 bigendian="yes"
648fi
649
650fi
651
bellardb6853692005-06-05 17:10:39 +0000652# host long bits test
653hostlongbits="32"
aurel320938cda2008-04-11 21:36:06 +0000654if test "$cpu" = "x86_64" \
655 -o "$cpu" = "alpha" \
656 -o "$cpu" = "ia64" \
657 -o "$cpu" = "sparc64"; then
bellardb6853692005-06-05 17:10:39 +0000658 hostlongbits="64"
659fi
660
malc810260a2008-07-23 19:17:46 +0000661# ppc specific hostlongbits selection
662if test "$cpu" = "powerpc" ; then
663 cat > $TMPC <<EOF
664int main(void){return sizeof(long);}
665EOF
666
667 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null; then
668 $TMPE
669 case $? in
670 4) hostlongbits="32";;
671 8) hostlongbits="64";;
malcba69a082008-07-24 17:51:36 +0000672 *) echo "Couldn't determine bits per long value"; exit 1;;
malc810260a2008-07-23 19:17:46 +0000673 esac
674 else
675 echo hostlongbits test failed
malcba69a082008-07-24 17:51:36 +0000676 exit 1
malc810260a2008-07-23 19:17:46 +0000677 fi
678fi
679
bellarde8cd23d2003-06-25 16:08:13 +0000680# check gcc options support
bellard04369ff2003-03-20 22:33:23 +0000681cat > $TMPC <<EOF
682int main(void) {
bellard04369ff2003-03-20 22:33:23 +0000683}
684EOF
685
pbrookbd0c5662008-05-29 14:34:11 +0000686# Check host NPTL support
687cat > $TMPC <<EOF
688#include <sched.h>
pbrook30813ce2008-06-02 15:45:44 +0000689#include <linux/futex.h>
pbrookbd0c5662008-05-29 14:34:11 +0000690void foo()
691{
692#if !defined(CLONE_SETTLS) || !defined(FUTEX_WAIT)
693#error bork
694#endif
695}
696EOF
697
698if $cc $ARCH_CFLAGS -c -o $TMPO $TMPC 2> /dev/null ; then
699 :
700else
701 nptl="no"
702fi
703
bellard11d9f692004-04-02 20:55:59 +0000704##########################################
705# SDL probe
706
707sdl_too_old=no
708
709if test -z "$sdl" ; then
ths069b0bd2007-07-12 00:27:15 +0000710 sdl_config="sdl-config"
711 sdl=no
712 sdl_static=no
bellard11d9f692004-04-02 20:55:59 +0000713
714cat > $TMPC << EOF
715#include <SDL.h>
716#undef main /* We don't want SDL to override our main() */
717int main( void ) { return SDL_Init (SDL_INIT_VIDEO); }
718EOF
aliguoricd01b4a2008-08-21 19:25:45 +0000719 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
720 _sdlversion=`$sdl_config --version | sed 's/[^0-9]//g'`
721 if test "$_sdlversion" -lt 121 ; then
722 sdl_too_old=yes
723 else
724 if test "$cocoa" = "no" ; then
725 sdl=yes
726 fi
727 fi
728
729 # static link with sdl ?
730 if test "$sdl" = "yes" ; then
731 aa="no"
732 `$sdl_config --static-libs 2>/dev/null | grep \\\-laa > /dev/null` && aa="yes"
733 sdl_static_libs=`$sdl_config --static-libs 2>/dev/null`
734 if [ "$aa" = "yes" ] ; then
735 sdl_static_libs="$sdl_static_libs `aalib-config --static-libs`"
ths069b0bd2007-07-12 00:27:15 +0000736 fi
bellard11d9f692004-04-02 20:55:59 +0000737
aliguoricd01b4a2008-08-21 19:25:45 +0000738 if $cc -o $TMPE ${OS_CFLAGS} `$sdl_config --cflags 2> /dev/null` $TMPC $sdl_static_libs 2> /dev/null; then
739 sdl_static=yes
740 fi
741 fi # static link
742 fi # sdl compile test
bellard11d9f692004-04-02 20:55:59 +0000743else
ths069b0bd2007-07-12 00:27:15 +0000744 # Make sure to disable cocoa if sdl was set
745 if test "$sdl" = "yes" ; then
746 cocoa="no"
malcc2de5c92008-06-28 19:13:06 +0000747 audio_drv_list="`echo $audio_drv_list | sed s,coreaudio,,g`"
ths069b0bd2007-07-12 00:27:15 +0000748 fi
bellarda6e022a2004-04-02 21:55:47 +0000749fi # -z $sdl
bellard11d9f692004-04-02 20:55:59 +0000750
ths8f28f3f2007-01-05 21:25:54 +0000751##########################################
ths8d5d2d42007-08-25 01:37:51 +0000752# VNC TLS detection
753if test "$vnc_tls" = "yes" ; then
aliguoriae6b5e52008-08-06 16:55:50 +0000754cat > $TMPC <<EOF
755#include <gnutls/gnutls.h>
756int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; }
757EOF
758 vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null`
759 vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null`
760 if $cc $ARCH_CFLAGS -o $TMPE ${OS_CFLAGS} $vnc_tls_cflags $TMPC \
761 $vnc_tls_libs 2> /dev/null ; then
762 :
763 else
764 vnc_tls="no"
765 fi
ths8d5d2d42007-08-25 01:37:51 +0000766fi
767
768##########################################
ths8a16d272008-07-19 09:56:24 +0000769# vde libraries probe
770if test "$vde" = "yes" ; then
771 cat > $TMPC << EOF
772#include <libvdeplug.h>
pbrook4a7f0e02008-09-07 16:42:53 +0000773int main(void)
774{
775 struct vde_open_args a = {0, 0, 0};
776 vde_open("", "", &a);
777 return 0;
778}
ths8a16d272008-07-19 09:56:24 +0000779EOF
pbrook4a7f0e02008-09-07 16:42:53 +0000780 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lvdeplug 2> /dev/null ; then
ths8a16d272008-07-19 09:56:24 +0000781 :
782 else
aliguorie0e6c8c02008-07-23 18:14:33 +0000783 vde="no"
ths8a16d272008-07-19 09:56:24 +0000784 fi
785fi
786
787##########################################
malcc2de5c92008-06-28 19:13:06 +0000788# Sound support libraries probe
ths8f28f3f2007-01-05 21:25:54 +0000789
malcc2de5c92008-06-28 19:13:06 +0000790audio_drv_probe()
791{
792 drv=$1
793 hdr=$2
794 lib=$3
795 exp=$4
796 cfl=$5
797 cat > $TMPC << EOF
798#include <$hdr>
799int main(void) { $exp }
ths8f28f3f2007-01-05 21:25:54 +0000800EOF
malcc2de5c92008-06-28 19:13:06 +0000801 if $cc $ARCH_CFLAGS $cfl -o $TMPE $TMPC $lib 2> /dev/null ; then
802 :
803 else
804 echo
805 echo "Error: $drv check failed"
806 echo "Make sure to have the $drv libs and headers installed."
807 echo
808 exit 1
809 fi
810}
811
malc2fa7d3b2008-07-29 12:58:44 +0000812audio_drv_list=`echo "$audio_drv_list" | sed -e 's/,/ /g'`
malcc2de5c92008-06-28 19:13:06 +0000813for drv in $audio_drv_list; do
814 case $drv in
815 alsa)
816 audio_drv_probe $drv alsa/asoundlib.h -lasound \
817 "snd_pcm_t **handle; return snd_pcm_close(*handle);"
818 ;;
819
820 fmod)
821 if test -z $fmod_lib || test -z $fmod_inc; then
822 echo
823 echo "Error: You must specify path to FMOD library and headers"
824 echo "Example: --fmod-inc=/path/include/fmod --fmod-lib=/path/lib/libfmod-3.74.so"
825 echo
826 exit 1
827 fi
828 audio_drv_probe $drv fmod.h $fmod_lib "return FSOUND_GetVersion();" "-I $fmod_inc"
829 ;;
830
831 esd)
832 audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);'
833 ;;
malcb8e59f12008-07-02 21:03:08 +0000834
835 pa)
836 audio_drv_probe $drv pulse/simple.h -lpulse-simple \
837 "pa_simple *s = NULL; pa_simple_free(s); return 0;"
838 ;;
839
blueswir12f6a1ab2008-08-21 18:00:53 +0000840 oss|sdl|core|wav|dsound)
841 # XXX: Probes for CoreAudio, DirectSound, SDL(?)
842 ;;
843
malce4c63a62008-07-19 16:15:16 +0000844 *)
malc1c9b2a52008-07-19 16:57:30 +0000845 echo "$audio_possible_drivers" | grep -q "\<$drv\>" || {
malce4c63a62008-07-19 16:15:16 +0000846 echo
847 echo "Error: Unknown driver '$drv' selected"
848 echo "Possible drivers are: $audio_possible_drivers"
849 echo
850 exit 1
851 }
852 ;;
malcc2de5c92008-06-28 19:13:06 +0000853 esac
854done
ths8f28f3f2007-01-05 21:25:54 +0000855
balrog4d3b6f62008-02-10 16:33:14 +0000856##########################################
aurel322e4d9fb2008-04-08 06:01:02 +0000857# BrlAPI probe
858
859if test -z "$brlapi" ; then
860 brlapi=no
861cat > $TMPC << EOF
862#include <brlapi.h>
863int main( void ) { return brlapi__openConnection (NULL, NULL, NULL); }
864EOF
aurel32a40e56d2008-05-04 00:50:25 +0000865 if $cc ${ARCH_CFLAGS} -o $TMPE ${OS_CFLAGS} $TMPC -lbrlapi 2> /dev/null ; then
aurel322e4d9fb2008-04-08 06:01:02 +0000866 brlapi=yes
867 fi # brlapi compile test
868fi # -z $brlapi
869
870##########################################
balrog4d3b6f62008-02-10 16:33:14 +0000871# curses probe
872
873if test "$curses" = "yes" ; then
874 curses=no
875 cat > $TMPC << EOF
876#include <curses.h>
877int main(void) { return curses_version(); }
878EOF
pbrookaf896aa2008-03-23 00:47:42 +0000879 if $cc $ARCH_CFLAGS -o $TMPE $TMPC -lcurses 2> /dev/null ; then
balrog4d3b6f62008-02-10 16:33:14 +0000880 curses=yes
881 fi
882fi # test "$curses"
883
blueswir1414f0da2008-08-15 18:20:52 +0000884##########################################
885# AIO probe
886if test "$aio" = "yes" ; then
887 aio=no
888 cat > $TMPC << EOF
889#include <aio.h>
890int main(void) { return aio_write(NULL); }
891EOF
892 if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
893 aio=yes
894 fi
895fi
896
pbrookcc8ae6d2006-04-23 17:57:59 +0000897# Check if tools are available to build documentation.
ths6c591862007-05-09 13:55:03 +0000898if [ -x "`which texi2html 2>/dev/null`" ] && \
899 [ -x "`which pod2man 2>/dev/null`" ]; then
pbrookcc8ae6d2006-04-23 17:57:59 +0000900 build_docs="yes"
901fi
902
bellard11d9f692004-04-02 20:55:59 +0000903if test "$mingw32" = "yes" ; then
pbrook308c3592007-02-27 00:52:01 +0000904 if test -z "$prefix" ; then
905 prefix="/c/Program Files/Qemu"
906 fi
907 mansuffix=""
908 datasuffix=""
909 docsuffix=""
910 binsuffix=""
bellard11d9f692004-04-02 20:55:59 +0000911else
pbrook308c3592007-02-27 00:52:01 +0000912 if test -z "$prefix" ; then
913 prefix="/usr/local"
914 fi
915 mansuffix="/share/man"
916 datasuffix="/share/qemu"
917 docsuffix="/share/doc/qemu"
918 binsuffix="/bin"
bellard11d9f692004-04-02 20:55:59 +0000919fi
bellard5a671352003-10-01 00:13:48 +0000920
bellard43ce4df2003-06-09 19:53:12 +0000921echo "Install prefix $prefix"
pbrook308c3592007-02-27 00:52:01 +0000922echo "BIOS directory $prefix$datasuffix"
923echo "binary directory $prefix$binsuffix"
bellard11d9f692004-04-02 20:55:59 +0000924if test "$mingw32" = "no" ; then
pbrook308c3592007-02-27 00:52:01 +0000925echo "Manual directory $prefix$mansuffix"
bellard43ce4df2003-06-09 19:53:12 +0000926echo "ELF interp prefix $interp_prefix"
bellard11d9f692004-04-02 20:55:59 +0000927fi
bellard5a671352003-10-01 00:13:48 +0000928echo "Source path $source_path"
bellard43ce4df2003-06-09 19:53:12 +0000929echo "C compiler $cc"
bellard83469012005-07-23 14:27:54 +0000930echo "Host C compiler $host_cc"
pbrookdb7287e2008-02-03 16:27:13 +0000931echo "ARCH_CFLAGS $ARCH_CFLAGS"
bellard43ce4df2003-06-09 19:53:12 +0000932echo "make $make"
pbrook6a882642006-04-17 13:57:12 +0000933echo "install $install"
bellard43ce4df2003-06-09 19:53:12 +0000934echo "host CPU $cpu"
bellardde83cd02003-06-15 20:25:43 +0000935echo "host big endian $bigendian"
bellard97a847b2003-08-10 21:36:04 +0000936echo "target list $target_list"
bellard43ce4df2003-06-09 19:53:12 +0000937echo "gprof enabled $gprof"
bellard05c2a3e2006-02-08 22:39:17 +0000938echo "profiler $profiler"
bellard43ce4df2003-06-09 19:53:12 +0000939echo "static build $static"
bellard85aa5182007-11-11 20:17:03 +0000940echo "-Werror enabled $werror"
bellard5b0753e2005-03-01 21:37:28 +0000941if test "$darwin" = "yes" ; then
942 echo "Cocoa support $cocoa"
943fi
bellard97a847b2003-08-10 21:36:04 +0000944echo "SDL support $sdl"
bellarde4afee92005-04-26 20:46:24 +0000945if test "$sdl" != "no" ; then
946 echo "SDL static link $sdl_static"
947fi
balrog4d3b6f62008-02-10 16:33:14 +0000948echo "curses support $curses"
bellard67b915a2004-03-31 23:37:16 +0000949echo "mingw32 support $mingw32"
malc0c58ac12008-06-25 21:04:05 +0000950echo "Audio drivers $audio_drv_list"
951echo "Extra audio cards $audio_card_list"
malc8ff9cbf2008-06-23 18:33:30 +0000952echo "Mixer emulation $mixemu"
ths8d5d2d42007-08-25 01:37:51 +0000953echo "VNC TLS support $vnc_tls"
954if test "$vnc_tls" = "yes" ; then
955 echo " TLS CFLAGS $vnc_tls_cflags"
956 echo " TLS LIBS $vnc_tls_libs"
957fi
blueswir131422552007-04-16 18:27:06 +0000958if test -n "$sparc_cpu"; then
959 echo "Target Sparc Arch $sparc_cpu"
960fi
bellard07f4ddb2005-04-23 17:44:28 +0000961echo "kqemu support $kqemu"
aurel322e4d9fb2008-04-08 06:01:02 +0000962echo "brlapi support $brlapi"
pbrookcc8ae6d2006-04-23 17:57:59 +0000963echo "Documentation $build_docs"
pbrookc5937222006-05-14 11:30:38 +0000964[ ! -z "$uname_release" ] && \
965echo "uname -r $uname_release"
pbrookbd0c5662008-05-29 14:34:11 +0000966echo "NPTL support $nptl"
ths8a16d272008-07-19 09:56:24 +0000967echo "vde support $vde"
blueswir1414f0da2008-08-15 18:20:52 +0000968echo "AIO support $aio"
bellard67b915a2004-03-31 23:37:16 +0000969
bellard97a847b2003-08-10 21:36:04 +0000970if test $sdl_too_old = "yes"; then
bellard24b55b92005-03-01 22:30:41 +0000971echo "-> Your SDL version is too old - please upgrade to have SDL support"
bellarde8cd23d2003-06-25 16:08:13 +0000972fi
ths20b40c62007-07-11 23:39:45 +0000973if [ -s /tmp/qemu-$$-sdl-config.log ]; then
974 echo "The error log from compiling the libSDL test is: "
975 cat /tmp/qemu-$$-sdl-config.log
976fi
977rm -f /tmp/qemu-$$-sdl-config.log
bellard24b55b92005-03-01 22:30:41 +0000978#if test "$sdl_static" = "no"; then
979# echo "WARNING: cannot compile statically with SDL - qemu-fast won't have a graphical output"
980#fi
bellard97a847b2003-08-10 21:36:04 +0000981config_mak="config-host.mak"
982config_h="config-host.h"
983
bellard7c1f25b2004-04-22 00:02:08 +0000984#echo "Creating $config_mak and $config_h"
bellard97a847b2003-08-10 21:36:04 +0000985
ths15d9ca02007-07-31 23:07:32 +0000986test -f $config_h && mv $config_h ${config_h}~
987
bellard97a847b2003-08-10 21:36:04 +0000988echo "# Automatically generated by configure - do not modify" > $config_mak
pbrook29517132006-02-09 17:58:47 +0000989echo "# Configured with: $0 $@" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +0000990echo "/* Automatically generated by configure - do not modify */" > $config_h
991
992echo "prefix=$prefix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000993echo "bindir=\${prefix}$binsuffix" >> $config_mak
994echo "mandir=\${prefix}$mansuffix" >> $config_mak
995echo "datadir=\${prefix}$datasuffix" >> $config_mak
ths4ad5b062007-03-03 21:47:02 +0000996echo "docdir=\${prefix}$docsuffix" >> $config_mak
pbrook308c3592007-02-27 00:52:01 +0000997echo "#define CONFIG_QEMU_SHAREDIR \"$prefix$datasuffix\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +0000998echo "MAKE=$make" >> $config_mak
pbrook6a882642006-04-17 13:57:12 +0000999echo "INSTALL=$install" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001000echo "CC=$cc" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001001echo "HOST_CC=$host_cc" >> $config_mak
1002echo "AR=$ar" >> $config_mak
1003echo "STRIP=$strip -s -R .comment -R .note" >> $config_mak
bellard40293e52008-01-31 11:32:10 +00001004# XXX: only use CFLAGS and LDFLAGS ?
1005# XXX: should export HOST_CFLAGS and HOST_LDFLAGS for cross
1006# compilation of dyngen tool (useful for win32 build on Linux host)
ths6f30fa82007-01-05 01:00:47 +00001007echo "OS_CFLAGS=$OS_CFLAGS" >> $config_mak
blueswir131422552007-04-16 18:27:06 +00001008echo "OS_LDFLAGS=$OS_LDFLAGS" >> $config_mak
1009echo "ARCH_CFLAGS=$ARCH_CFLAGS" >> $config_mak
1010echo "ARCH_LDFLAGS=$ARCH_LDFLAGS" >> $config_mak
bellard97a847b2003-08-10 21:36:04 +00001011echo "CFLAGS=$CFLAGS" >> $config_mak
1012echo "LDFLAGS=$LDFLAGS" >> $config_mak
bellard67b915a2004-03-31 23:37:16 +00001013echo "EXESUF=$EXESUF" >> $config_mak
ths70956b72007-03-17 15:00:37 +00001014echo "AIOLIBS=$AIOLIBS" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001015case "$cpu" in
1016 i386)
1017 echo "ARCH=i386" >> $config_mak
1018 echo "#define HOST_I386 1" >> $config_h
1019 ;;
1020 x86_64)
1021 echo "ARCH=x86_64" >> $config_mak
1022 echo "#define HOST_X86_64 1" >> $config_h
1023 ;;
1024 alpha)
1025 echo "ARCH=alpha" >> $config_mak
1026 echo "#define HOST_ALPHA 1" >> $config_h
1027 ;;
1028 armv4b)
1029 echo "ARCH=arm" >> $config_mak
1030 echo "#define HOST_ARM 1" >> $config_h
1031 ;;
1032 armv4l)
1033 echo "ARCH=arm" >> $config_mak
1034 echo "#define HOST_ARM 1" >> $config_h
1035 ;;
1036 cris)
1037 echo "ARCH=cris" >> $config_mak
1038 echo "#define HOST_CRIS 1" >> $config_h
1039 ;;
1040 hppa)
1041 echo "ARCH=hppa" >> $config_mak
1042 echo "#define HOST_HPPA 1" >> $config_h
1043 ;;
1044 ia64)
1045 echo "ARCH=ia64" >> $config_mak
1046 echo "#define HOST_IA64 1" >> $config_h
1047 ;;
1048 m68k)
1049 echo "ARCH=m68k" >> $config_mak
1050 echo "#define HOST_M68K 1" >> $config_h
1051 ;;
1052 mips)
1053 echo "ARCH=mips" >> $config_mak
1054 echo "#define HOST_MIPS 1" >> $config_h
1055 ;;
1056 mips64)
1057 echo "ARCH=mips64" >> $config_mak
1058 echo "#define HOST_MIPS64 1" >> $config_h
1059 ;;
1060 powerpc)
malc810260a2008-07-23 19:17:46 +00001061 if test "$hostlongbits" = "32"; then
1062 echo "ARCH=ppc" >> $config_mak
1063 echo "#define HOST_PPC 1" >> $config_h
1064 else
1065 echo "ARCH=ppc64" >> $config_mak
1066 echo "#define HOST_PPC64 1" >> $config_h
1067 fi
aurel322408a522008-04-20 20:19:44 +00001068 ;;
1069 s390)
1070 echo "ARCH=s390" >> $config_mak
1071 echo "#define HOST_S390 1" >> $config_h
1072 ;;
1073 sparc)
1074 echo "ARCH=sparc" >> $config_mak
1075 echo "#define HOST_SPARC 1" >> $config_h
1076 ;;
1077 sparc64)
1078 echo "ARCH=sparc64" >> $config_mak
1079 echo "#define HOST_SPARC64 1" >> $config_h
1080 ;;
1081 *)
1082 echo "Unsupported CPU = $cpu"
1083 exit 1
1084 ;;
1085esac
bellard7d132992003-03-06 23:23:54 +00001086if test "$bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001087 echo "WORDS_BIGENDIAN=yes" >> $config_mak
1088 echo "#define WORDS_BIGENDIAN 1" >> $config_h
1089fi
bellardb6853692005-06-05 17:10:39 +00001090echo "#define HOST_LONG_BITS $hostlongbits" >> $config_h
bellard67b915a2004-03-31 23:37:16 +00001091if test "$mingw32" = "yes" ; then
1092 echo "CONFIG_WIN32=yes" >> $config_mak
bellard11d9f692004-04-02 20:55:59 +00001093 echo "#define CONFIG_WIN32 1" >> $config_h
pbrook210fa552007-02-27 21:04:49 +00001094else
1095 cat > $TMPC << EOF
1096#include <byteswap.h>
1097int main(void) { return bswap_32(0); }
1098EOF
pbrookdb7287e2008-02-03 16:27:13 +00001099 if $cc $ARCH_CFLAGS -o $TMPE $TMPC 2> /dev/null ; then
pbrook210fa552007-02-27 21:04:49 +00001100 echo "#define HAVE_BYTESWAP_H 1" >> $config_h
1101 fi
bellard67b915a2004-03-31 23:37:16 +00001102fi
blueswir1128ab2f2008-08-15 18:33:42 +00001103
1104if [ "$openbsd" = "yes" ] ; then
1105 echo "#define ENOTSUP 4096" >> $config_h
1106fi
1107
bellard83fb7ad2004-07-05 21:25:26 +00001108if test "$darwin" = "yes" ; then
1109 echo "CONFIG_DARWIN=yes" >> $config_mak
1110 echo "#define CONFIG_DARWIN 1" >> $config_h
1111fi
bellardec530c82006-04-25 22:36:06 +00001112if test "$solaris" = "yes" ; then
1113 echo "CONFIG_SOLARIS=yes" >> $config_mak
bellard38cfa062006-05-01 13:58:07 +00001114 echo "#define HOST_SOLARIS $solarisrev" >> $config_h
ths0475a5c2007-04-01 18:54:44 +00001115 if test "$needs_libsunmath" = "yes" ; then
1116 echo "NEEDS_LIBSUNMATH=yes" >> $config_mak
1117 echo "#define NEEDS_LIBSUNMATH 1" >> $config_h
1118 fi
bellardec530c82006-04-25 22:36:06 +00001119fi
blueswir131422552007-04-16 18:27:06 +00001120if test -n "$sparc_cpu"; then
1121 echo "CONFIG__sparc_${sparc_cpu}__=yes" >> $config_mak
1122 echo "#define __sparc_${sparc_cpu}__ 1" >> $config_h
1123fi
bellard67b915a2004-03-31 23:37:16 +00001124if test "$gdbstub" = "yes" ; then
1125 echo "CONFIG_GDBSTUB=yes" >> $config_mak
1126 echo "#define CONFIG_GDBSTUB 1" >> $config_h
1127fi
bellard97a847b2003-08-10 21:36:04 +00001128if test "$gprof" = "yes" ; then
1129 echo "TARGET_GPROF=yes" >> $config_mak
1130 echo "#define HAVE_GPROF 1" >> $config_h
1131fi
1132if test "$static" = "yes" ; then
1133 echo "CONFIG_STATIC=yes" >> $config_mak
bellard50863472003-10-28 23:04:01 +00001134 echo "#define CONFIG_STATIC 1" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001135fi
bellard05c2a3e2006-02-08 22:39:17 +00001136if test $profiler = "yes" ; then
1137 echo "#define CONFIG_PROFILER 1" >> $config_h
1138fi
bellardc20709a2004-04-21 23:27:19 +00001139if test "$slirp" = "yes" ; then
1140 echo "CONFIG_SLIRP=yes" >> $config_mak
1141 echo "#define CONFIG_SLIRP 1" >> $config_h
1142fi
ths8a16d272008-07-19 09:56:24 +00001143if test "$vde" = "yes" ; then
1144 echo "CONFIG_VDE=yes" >> $config_mak
1145 echo "#define CONFIG_VDE 1" >> $config_h
1146 echo "VDE_LIBS=-lvdeplug" >> $config_mak
1147fi
malc0c58ac12008-06-25 21:04:05 +00001148for card in $audio_card_list; do
pbrookf6e58892008-06-29 01:00:34 +00001149 def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001150 echo "$def=yes" >> $config_mak
1151 echo "#define $def 1" >> $config_h
1152done
1153echo "#define AUDIO_DRIVERS \\" >> $config_h
1154for drv in $audio_drv_list; do
1155 echo " &${drv}_audio_driver, \\" >>$config_h
pbrookf6e58892008-06-29 01:00:34 +00001156 def=CONFIG_`echo $drv | tr '[:lower:]' '[:upper:]'`
malc0c58ac12008-06-25 21:04:05 +00001157 echo "$def=yes" >> $config_mak
malc923e4522008-07-02 18:13:46 +00001158 if test "$drv" = "fmod"; then
malc0c58ac12008-06-25 21:04:05 +00001159 echo "CONFIG_FMOD_LIB=$fmod_lib" >> $config_mak
1160 echo "CONFIG_FMOD_INC=$fmod_inc" >> $config_mak
blueswir12f6a1ab2008-08-21 18:00:53 +00001161 elif test "$drv" = "oss"; then
1162 echo "CONFIG_OSS_LIB=$oss_lib" >> $config_mak
malc0c58ac12008-06-25 21:04:05 +00001163 fi
1164done
1165echo "" >>$config_h
malc8ff9cbf2008-06-23 18:33:30 +00001166if test "$mixemu" = "yes" ; then
1167 echo "CONFIG_MIXEMU=yes" >> $config_mak
1168 echo "#define CONFIG_MIXEMU 1" >> $config_h
1169fi
ths8d5d2d42007-08-25 01:37:51 +00001170if test "$vnc_tls" = "yes" ; then
1171 echo "CONFIG_VNC_TLS=yes" >> $config_mak
1172 echo "CONFIG_VNC_TLS_CFLAGS=$vnc_tls_cflags" >> $config_mak
1173 echo "CONFIG_VNC_TLS_LIBS=$vnc_tls_libs" >> $config_mak
1174 echo "#define CONFIG_VNC_TLS 1" >> $config_h
1175fi
pbrookb1a550a2006-04-16 13:28:56 +00001176qemu_version=`head $source_path/VERSION`
1177echo "VERSION=$qemu_version" >>$config_mak
pbrookd4b8f032006-04-16 13:49:23 +00001178echo "#define QEMU_VERSION \"$qemu_version\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001179
1180echo "SRC_PATH=$source_path" >> $config_mak
pbrookad064842006-04-16 12:41:07 +00001181if [ "$source_path_used" = "yes" ]; then
1182 echo "VPATH=$source_path" >> $config_mak
1183fi
bellard97a847b2003-08-10 21:36:04 +00001184echo "TARGET_DIRS=$target_list" >> $config_mak
pbrookcc8ae6d2006-04-23 17:57:59 +00001185if [ "$build_docs" = "yes" ] ; then
1186 echo "BUILD_DOCS=yes" >> $config_mak
1187fi
bellard49ecc3f2007-11-07 19:25:15 +00001188if test "$static" = "yes"; then
1189 sdl1=$sdl_static
1190else
1191 sdl1=$sdl
1192fi
1193if test "$sdl1" = "yes" ; then
1194 echo "#define CONFIG_SDL 1" >> $config_h
1195 echo "CONFIG_SDL=yes" >> $config_mak
1196 if test "$target_softmmu" = "no" -o "$static" = "yes"; then
1197 echo "SDL_LIBS=$sdl_static_libs" >> $config_mak
1198 else
1199 echo "SDL_LIBS=`$sdl_config --libs`" >> $config_mak
1200 fi
1201 if [ "${aa}" = "yes" ] ; then
1202 echo "SDL_CFLAGS=`$sdl_config --cflags` `aalib-config --cflags`" >> $config_mak
1203 else
1204 echo "SDL_CFLAGS=`$sdl_config --cflags`" >> $config_mak
1205 fi
1206fi
1207if test "$cocoa" = "yes" ; then
balrog4d3b6f62008-02-10 16:33:14 +00001208 echo "#define CONFIG_COCOA 1" >> $config_h
1209 echo "CONFIG_COCOA=yes" >> $config_mak
1210fi
1211if test "$curses" = "yes" ; then
1212 echo "#define CONFIG_CURSES 1" >> $config_h
1213 echo "CONFIG_CURSES=yes" >> $config_mak
1214 echo "CURSES_LIBS=-lcurses" >> $config_mak
bellard49ecc3f2007-11-07 19:25:15 +00001215fi
aurel322e4d9fb2008-04-08 06:01:02 +00001216if test "$brlapi" = "yes" ; then
1217 echo "CONFIG_BRLAPI=yes" >> $config_mak
1218 echo "#define CONFIG_BRLAPI 1" >> $config_h
1219 echo "BRLAPI_LIBS=-lbrlapi" >> $config_mak
1220fi
blueswir1414f0da2008-08-15 18:20:52 +00001221if test "$aio" = "yes" ; then
1222 echo "#define CONFIG_AIO 1" >> $config_h
aliguoria3392f92008-09-11 18:00:19 +00001223 echo "CONFIG_AIO=yes" >> $config_mak
blueswir1414f0da2008-08-15 18:20:52 +00001224fi
bellard97a847b2003-08-10 21:36:04 +00001225
bellard83fb7ad2004-07-05 21:25:26 +00001226# XXX: suppress that
bellard7d3505c2004-05-12 19:32:15 +00001227if [ "$bsd" = "yes" ] ; then
bellard43003042004-05-20 13:23:39 +00001228 echo "#define O_LARGEFILE 0" >> $config_h
bellard43003042004-05-20 13:23:39 +00001229 echo "#define MAP_ANONYMOUS MAP_ANON" >> $config_h
bellard7d3505c2004-05-12 19:32:15 +00001230 echo "#define _BSD 1" >> $config_h
1231fi
1232
pbrookc5937222006-05-14 11:30:38 +00001233echo "#define CONFIG_UNAME_RELEASE \"$uname_release\"" >> $config_h
1234
pbrookc39e3332007-09-22 16:49:14 +00001235tools=
1236if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then
1237 tools="qemu-img\$(EXESUF) $tools"
bellard7a5ca862008-05-27 21:13:40 +00001238 if [ "$linux" = "yes" ] ; then
1239 tools="qemu-nbd\$(EXESUF) $tools"
1240 fi
pbrookc39e3332007-09-22 16:49:14 +00001241fi
1242echo "TOOLS=$tools" >> $config_mak
1243
ths15d9ca02007-07-31 23:07:32 +00001244test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1245
bellard1d14ffa2005-10-30 18:58:22 +00001246for target in $target_list; do
bellard97a847b2003-08-10 21:36:04 +00001247target_dir="$target"
1248config_mak=$target_dir/config.mak
1249config_h=$target_dir/config.h
1250target_cpu=`echo $target | cut -d '-' -f 1`
1251target_bigendian="no"
bellard808c4952004-12-19 23:33:47 +00001252[ "$target_cpu" = "armeb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001253[ "$target_cpu" = "m68k" ] && target_bigendian=yes
1254[ "$target_cpu" = "mips" ] && target_bigendian=yes
1255[ "$target_cpu" = "mipsn32" ] && target_bigendian=yes
1256[ "$target_cpu" = "mips64" ] && target_bigendian=yes
bellard67867302003-11-23 17:05:30 +00001257[ "$target_cpu" = "ppc" ] && target_bigendian=yes
j_mayerd4082e92007-04-24 07:34:03 +00001258[ "$target_cpu" = "ppcemb" ] && target_bigendian=yes
j_mayer22f8a8b2007-10-14 08:38:29 +00001259[ "$target_cpu" = "ppc64" ] && target_bigendian=yes
j_mayere85e7c62007-10-18 19:59:49 +00001260[ "$target_cpu" = "ppc64abi32" ] && target_bigendian=yes
pbrook908f52b2006-06-18 19:16:53 +00001261[ "$target_cpu" = "sh4eb" ] && target_bigendian=yes
aurel320938cda2008-04-11 21:36:06 +00001262[ "$target_cpu" = "sparc" ] && target_bigendian=yes
1263[ "$target_cpu" = "sparc64" ] && target_bigendian=yes
1264[ "$target_cpu" = "sparc32plus" ] && target_bigendian=yes
bellard97a847b2003-08-10 21:36:04 +00001265target_softmmu="no"
bellard997344f2003-10-27 21:10:39 +00001266target_user_only="no"
ths831b7822007-01-18 20:06:33 +00001267target_linux_user="no"
ths831b7822007-01-18 20:06:33 +00001268target_darwin_user="no"
pbrook9e407a82007-05-26 16:38:53 +00001269case "$target" in
1270 ${target_cpu}-softmmu)
1271 target_softmmu="yes"
1272 ;;
1273 ${target_cpu}-linux-user)
1274 target_user_only="yes"
1275 target_linux_user="yes"
1276 ;;
1277 ${target_cpu}-darwin-user)
1278 target_user_only="yes"
1279 target_darwin_user="yes"
1280 ;;
1281 *)
1282 echo "ERROR: Target '$target' not recognised"
1283 exit 1
1284 ;;
1285esac
ths831b7822007-01-18 20:06:33 +00001286
bellard97ccc682005-07-02 13:32:17 +00001287if test "$target_user_only" = "no" -a "$check_gfx" = "yes" \
bellard1d14ffa2005-10-30 18:58:22 +00001288 -a "$sdl" = "no" -a "$cocoa" = "no" ; then
bellard97ccc682005-07-02 13:32:17 +00001289 echo "ERROR: QEMU requires SDL or Cocoa for graphical output"
pbrook9c038502006-04-16 15:19:15 +00001290 echo "To build QEMU without graphical output configure with --disable-gfx-check"
balrog4d3b6f62008-02-10 16:33:14 +00001291 echo "Note that this will disable all output from the virtual graphics card"
1292 echo "except through VNC or curses."
bellard97ccc682005-07-02 13:32:17 +00001293 exit 1;
1294fi
1295
bellard7c1f25b2004-04-22 00:02:08 +00001296#echo "Creating $config_mak, $config_h and $target_dir/Makefile"
bellard97a847b2003-08-10 21:36:04 +00001297
ths15d9ca02007-07-31 23:07:32 +00001298test -f $config_h && mv $config_h ${config_h}~
1299
bellard97a847b2003-08-10 21:36:04 +00001300mkdir -p $target_dir
bellard158142c2005-03-13 16:54:06 +00001301mkdir -p $target_dir/fpu
bellard57fec1f2008-02-01 10:50:11 +00001302mkdir -p $target_dir/tcg
ths831b7822007-01-18 20:06:33 +00001303if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" ; then
bellard69de9272004-02-16 21:40:43 +00001304 mkdir -p $target_dir/nwfpe
1305fi
1306
bellardec530c82006-04-25 22:36:06 +00001307#
1308# don't use ln -sf as not all "ln -sf" over write the file/link
1309#
1310rm -f $target_dir/Makefile
1311ln -s $source_path/Makefile.target $target_dir/Makefile
1312
bellard97a847b2003-08-10 21:36:04 +00001313
1314echo "# Automatically generated by configure - do not modify" > $config_mak
1315echo "/* Automatically generated by configure - do not modify */" > $config_h
1316
1317
1318echo "include ../config-host.mak" >> $config_mak
1319echo "#include \"../config-host.h\"" >> $config_h
bellard1e43adf2003-09-30 20:54:24 +00001320
pbrooke5fe0c52006-06-11 13:32:59 +00001321bflt="no"
blueswir1cb33da52007-10-09 16:34:29 +00001322elfload32="no"
pbrookbd0c5662008-05-29 14:34:11 +00001323target_nptl="no"
bellard1e43adf2003-09-30 20:54:24 +00001324interp_prefix1=`echo "$interp_prefix" | sed "s/%M/$target_cpu/g"`
1325echo "#define CONFIG_QEMU_PREFIX \"$interp_prefix1\"" >> $config_h
bellard97a847b2003-08-10 21:36:04 +00001326
aurel322408a522008-04-20 20:19:44 +00001327case "$target_cpu" in
1328 i386)
1329 echo "TARGET_ARCH=i386" >> $config_mak
1330 echo "#define TARGET_ARCH \"i386\"" >> $config_h
1331 echo "#define TARGET_I386 1" >> $config_h
bellardda260242008-05-30 20:48:25 +00001332 if test $kqemu = "yes" -a "$target_softmmu" = "yes"
aurel322408a522008-04-20 20:19:44 +00001333 then
1334 echo "#define USE_KQEMU 1" >> $config_h
1335 fi
aurel32f2bf0942008-05-05 06:00:27 +00001336 gcc3minver=`$cc --version 2> /dev/null| fgrep "(GCC) 3." | awk '{ print $3 }' | cut -f2 -d.`
pbrook11d1fdb2008-05-23 23:16:42 +00001337 if test -n "$gcc3minver" && test $gcc3minver -gt 3
aurel32f2bf0942008-05-05 06:00:27 +00001338 then
1339 echo "HAVE_GT_GCC_3_3=true" >> $config_mak
1340 else
1341 echo "HAVE_GT_GCC_3_3=false" >> $config_mak
1342 fi
aurel322408a522008-04-20 20:19:44 +00001343 ;;
1344 x86_64)
1345 echo "TARGET_ARCH=x86_64" >> $config_mak
1346 echo "#define TARGET_ARCH \"x86_64\"" >> $config_h
1347 echo "#define TARGET_I386 1" >> $config_h
1348 echo "#define TARGET_X86_64 1" >> $config_h
1349 if test $kqemu = "yes" -a "$target_softmmu" = "yes" -a $cpu = "x86_64"
1350 then
1351 echo "#define USE_KQEMU 1" >> $config_h
1352 fi
1353 ;;
1354 alpha)
1355 echo "TARGET_ARCH=alpha" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001356 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001357 echo "#define TARGET_ARCH \"alpha\"" >> $config_h
1358 echo "#define TARGET_ALPHA 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001359 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001360 ;;
1361 arm|armeb)
1362 echo "TARGET_ARCH=arm" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001363 echo "#define TARGET_ARCH \"arm\"" >> $config_h
1364 echo "#define TARGET_ARM 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001365 bflt="yes"
pbrookbd0c5662008-05-29 14:34:11 +00001366 target_nptl="yes"
aurel322408a522008-04-20 20:19:44 +00001367 ;;
1368 cris)
1369 echo "TARGET_ARCH=cris" >> $config_mak
1370 echo "#define TARGET_ARCH \"cris\"" >> $config_h
1371 echo "#define TARGET_CRIS 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001372 ;;
1373 m68k)
1374 echo "TARGET_ARCH=m68k" >> $config_mak
1375 echo "#define TARGET_ARCH \"m68k\"" >> $config_h
1376 echo "#define TARGET_M68K 1" >> $config_h
1377 bflt="yes"
1378 ;;
1379 mips|mipsel)
1380 echo "TARGET_ARCH=mips" >> $config_mak
1381 echo "#define TARGET_ARCH \"mips\"" >> $config_h
1382 echo "#define TARGET_MIPS 1" >> $config_h
1383 echo "#define TARGET_ABI_MIPSO32 1" >> $config_h
1384 ;;
1385 mipsn32|mipsn32el)
1386 echo "TARGET_ARCH=mipsn32" >> $config_mak
1387 echo "#define TARGET_ARCH \"mipsn32\"" >> $config_h
1388 echo "#define TARGET_MIPS 1" >> $config_h
1389 echo "#define TARGET_ABI_MIPSN32 1" >> $config_h
1390 ;;
1391 mips64|mips64el)
1392 echo "TARGET_ARCH=mips64" >> $config_mak
1393 echo "#define TARGET_ARCH \"mips64\"" >> $config_h
1394 echo "#define TARGET_MIPS 1" >> $config_h
1395 echo "#define TARGET_MIPS64 1" >> $config_h
1396 echo "#define TARGET_ABI_MIPSN64 1" >> $config_h
1397 ;;
1398 ppc)
1399 echo "TARGET_ARCH=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001400 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001401 echo "#define TARGET_ARCH \"ppc\"" >> $config_h
1402 echo "#define TARGET_PPC 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001403 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001404 ;;
1405 ppcemb)
1406 echo "TARGET_ARCH=ppcemb" >> $config_mak
1407 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001408 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001409 echo "#define TARGET_ARCH \"ppcemb\"" >> $config_h
1410 echo "#define TARGET_PPC 1" >> $config_h
1411 echo "#define TARGET_PPCEMB 1" >> $config_h
blueswir1ec5b78c2008-05-10 17:23:18 +00001412 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001413 ;;
1414 ppc64)
1415 echo "TARGET_ARCH=ppc64" >> $config_mak
1416 echo "TARGET_ABI_DIR=ppc" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001417 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001418 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1419 echo "#define TARGET_PPC 1" >> $config_h
1420 echo "#define TARGET_PPC64 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 ppc64abi32)
1424 echo "TARGET_ARCH=ppc64" >> $config_mak
1425 echo "TARGET_ABI_DIR=ppc" >> $config_mak
1426 echo "TARGET_ARCH2=ppc64abi32" >> $config_mak
blueswir1bf6247f2008-05-10 12:27:33 +00001427 echo "CONFIG_DYNGEN_OP=yes" >> $config_mak
aurel322408a522008-04-20 20:19:44 +00001428 echo "#define TARGET_ARCH \"ppc64\"" >> $config_h
1429 echo "#define TARGET_PPC 1" >> $config_h
1430 echo "#define TARGET_PPC64 1" >> $config_h
1431 echo "#define TARGET_ABI32 1" >> $config_h
blueswir1bf6247f2008-05-10 12:27:33 +00001432 echo "#define CONFIG_DYNGEN_OP 1" >> $config_h
aurel322408a522008-04-20 20:19:44 +00001433 ;;
1434 sh4|sh4eb)
1435 echo "TARGET_ARCH=sh4" >> $config_mak
1436 echo "#define TARGET_ARCH \"sh4\"" >> $config_h
1437 echo "#define TARGET_SH4 1" >> $config_h
1438 bflt="yes"
1439 ;;
1440 sparc)
1441 echo "TARGET_ARCH=sparc" >> $config_mak
1442 echo "#define TARGET_ARCH \"sparc\"" >> $config_h
1443 echo "#define TARGET_SPARC 1" >> $config_h
1444 ;;
1445 sparc64)
1446 echo "TARGET_ARCH=sparc64" >> $config_mak
1447 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1448 echo "#define TARGET_SPARC 1" >> $config_h
1449 echo "#define TARGET_SPARC64 1" >> $config_h
1450 elfload32="yes"
1451 ;;
1452 sparc32plus)
1453 echo "TARGET_ARCH=sparc64" >> $config_mak
1454 echo "TARGET_ABI_DIR=sparc" >> $config_mak
1455 echo "TARGET_ARCH2=sparc32plus" >> $config_mak
1456 echo "#define TARGET_ARCH \"sparc64\"" >> $config_h
1457 echo "#define TARGET_SPARC 1" >> $config_h
1458 echo "#define TARGET_SPARC64 1" >> $config_h
1459 echo "#define TARGET_ABI32 1" >> $config_h
1460 ;;
1461 *)
1462 echo "Unsupported target CPU"
1463 exit 1
1464 ;;
1465esac
bellardde83cd02003-06-15 20:25:43 +00001466if test "$target_bigendian" = "yes" ; then
bellard97a847b2003-08-10 21:36:04 +00001467 echo "TARGET_WORDS_BIGENDIAN=yes" >> $config_mak
1468 echo "#define TARGET_WORDS_BIGENDIAN 1" >> $config_h
1469fi
1470if test "$target_softmmu" = "yes" ; then
1471 echo "CONFIG_SOFTMMU=yes" >> $config_mak
1472 echo "#define CONFIG_SOFTMMU 1" >> $config_h
bellardde83cd02003-06-15 20:25:43 +00001473fi
bellard997344f2003-10-27 21:10:39 +00001474if test "$target_user_only" = "yes" ; then
1475 echo "CONFIG_USER_ONLY=yes" >> $config_mak
1476 echo "#define CONFIG_USER_ONLY 1" >> $config_h
1477fi
ths831b7822007-01-18 20:06:33 +00001478if test "$target_linux_user" = "yes" ; then
1479 echo "CONFIG_LINUX_USER=yes" >> $config_mak
1480 echo "#define CONFIG_LINUX_USER 1" >> $config_h
1481fi
1482if test "$target_darwin_user" = "yes" ; then
1483 echo "CONFIG_DARWIN_USER=yes" >> $config_mak
1484 echo "#define CONFIG_DARWIN_USER 1" >> $config_h
1485fi
bellardde83cd02003-06-15 20:25:43 +00001486
aurel320938cda2008-04-11 21:36:06 +00001487if test "$target_cpu" = "arm" \
1488 -o "$target_cpu" = "armeb" \
1489 -o "$target_cpu" = "m68k" \
1490 -o "$target_cpu" = "mips" \
1491 -o "$target_cpu" = "mipsel" \
1492 -o "$target_cpu" = "mipsn32" \
1493 -o "$target_cpu" = "mipsn32el" \
1494 -o "$target_cpu" = "mips64" \
1495 -o "$target_cpu" = "mips64el" \
1496 -o "$target_cpu" = "sparc" \
1497 -o "$target_cpu" = "sparc64" \
1498 -o "$target_cpu" = "sparc32plus"; then
bellard158142c2005-03-13 16:54:06 +00001499 echo "CONFIG_SOFTFLOAT=yes" >> $config_mak
1500 echo "#define CONFIG_SOFTFLOAT 1" >> $config_h
1501fi
pbrooke5fe0c52006-06-11 13:32:59 +00001502if test "$target_user_only" = "yes" -a "$bflt" = "yes"; then
1503 echo "TARGET_HAS_BFLT=yes" >> $config_mak
1504 echo "#define TARGET_HAS_BFLT 1" >> $config_h
1505fi
pbrookbd0c5662008-05-29 14:34:11 +00001506if test "$target_user_only" = "yes" \
1507 -a "$nptl" = "yes" -a "$target_nptl" = "yes"; then
1508 echo "#define USE_NPTL 1" >> $config_h
1509fi
blueswir1cb33da52007-10-09 16:34:29 +00001510# 32 bit ELF loader in addition to native 64 bit loader?
1511if test "$target_user_only" = "yes" -a "$elfload32" = "yes"; then
1512 echo "TARGET_HAS_ELFLOAD32=yes" >> $config_mak
1513 echo "#define TARGET_HAS_ELFLOAD32 1" >> $config_h
1514fi
bellard5b0753e2005-03-01 21:37:28 +00001515
ths15d9ca02007-07-31 23:07:32 +00001516test -f ${config_h}~ && cmp -s $config_h ${config_h}~ && mv ${config_h}~ $config_h
1517
bellard97a847b2003-08-10 21:36:04 +00001518done # for target in $targets
bellard7d132992003-03-06 23:23:54 +00001519
1520# build tree in object directory if source path is different from current one
1521if test "$source_path_used" = "yes" ; then
bellard49ecc3f2007-11-07 19:25:15 +00001522 DIRS="tests tests/cris slirp audio"
bellard7d132992003-03-06 23:23:54 +00001523 FILES="Makefile tests/Makefile"
thse7daa602007-10-08 13:38:27 +00001524 FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit"
edgar_igle1ffb0f2008-03-01 22:23:17 +00001525 FILES="$FILES tests/test-mmap.c"
bellard7d132992003-03-06 23:23:54 +00001526 for dir in $DIRS ; do
1527 mkdir -p $dir
1528 done
bellardec530c82006-04-25 22:36:06 +00001529 # remove the link and recreate it, as not all "ln -sf" overwrite the link
bellard7d132992003-03-06 23:23:54 +00001530 for f in $FILES ; do
bellardec530c82006-04-25 22:36:06 +00001531 rm -f $f
1532 ln -s $source_path/$f $f
bellard7d132992003-03-06 23:23:54 +00001533 done
1534fi
bellard7d132992003-03-06 23:23:54 +00001535
bellard97a847b2003-08-10 21:36:04 +00001536rm -f $TMPO $TMPC $TMPE $TMPS