X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=configure;h=e0a2874a49ad038e32d792b1dcc0e024faa4bb53;hb=9332f6a2e25cbd9c93b0ab8e46d9f5774d620478;hp=e0ef054514d13e24dbbc55bdaf0d5d0538ee7212;hpb=471857dd01fe7aac2b7c6cccd17dbdc49b37994a;p=qemu diff --git a/configure b/configure index e0ef054..e0a2874 100755 --- a/configure +++ b/configure @@ -46,6 +46,8 @@ objcopy="objcopy" ld="ld" helper_cflags="" libs_softmmu="" +libs_tools="" +audio_pt_int="" # parse CC options first for opt do @@ -164,26 +166,47 @@ case "$cpu" in cpu="unknown" ;; esac -brlapi="yes" + +# Default value for a variable defining feature "foo" +# * foo="no", feature will only be used if --enable-foo arg is given +# * foo="", feature will be searched for, and if found, will be used +# * foo="yes", this value vill only be set by --enable-foo flag. +# feature will searched for, if not found, configure exits with error +# +# Always add --enable-foo and --disable-foo command line args. Distributions want +# to ensure that several features are compiled in, and it is impossible without a +# --enable-foo that exits if feature is not found + +bluez="" +brlapi="" +curl="" +curses="" +docs="" +fdt="" +kvm="" +nptl="" +sdl="" +sparse="no" +vde="" +vnc_tls="" +vnc_sasl="" +xen="" +linux_aio="" + gprof="no" debug_tcg="no" debug="no" -sparse="no" strip_opt="yes" bigendian="no" mingw32="no" EXESUF="" slirp="yes" -vde="yes" fmod_lib="" fmod_inc="" oss_lib="" -vnc_tls="yes" -vnc_sasl="yes" bsd="no" linux="no" solaris="no" -kqemu="no" profiler="no" cocoa="no" softmmu="yes" @@ -191,24 +214,15 @@ linux_user="no" darwin_user="no" bsd_user="no" guest_base="" -build_docs="yes" uname_release="" -curses="yes" -curl="yes" -pthread="yes" -aio="yes" io_thread="no" -nptl="yes" mixemu="no" -bluez="yes" -kvm="no" kerneldir="" aix="no" blobs="yes" -fdt="yes" -sdl="yes" -xen="yes" pkgversion="" +check_utests="no" +user_pie="no" # OS specific if check_define __linux__ ; then @@ -236,26 +250,16 @@ MINGW32*) GNU/kFreeBSD) audio_drv_list="oss" audio_possible_drivers="oss sdl esd pa" - if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then - kqemu="yes" - fi ;; FreeBSD) bsd="yes" audio_drv_list="oss" audio_possible_drivers="oss sdl esd pa" - if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then - kqemu="yes" - fi ;; DragonFly) bsd="yes" audio_drv_list="oss" audio_possible_drivers="oss sdl esd pa" - if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then - kqemu="yes" - fi - aio="no" ;; NetBSD) bsd="yes" @@ -289,6 +293,7 @@ Darwin) audio_drv_list="coreaudio" audio_possible_drivers="coreaudio sdl fmod" LDFLAGS="-framework CoreFoundation -framework IOKit $LDFLAGS" + libs_softmmu="-F/System/Library/Frameworks -framework Cocoa -framework IOKit $libs_softmmu" ;; SunOS) solaris="yes" @@ -306,6 +311,9 @@ SunOS) if test "$solarisrev" -le 9 ; then if test -f /opt/SUNWspro/prod/lib/libsunmath.so.1; then needs_libsunmath="yes" + QEMU_CFLAGS="-I/opt/SUNWspro/prod/include/cc $QEMU_CFLAGS" + LDFLAGS="-L/opt/SUNWspro/prod/lib -R/opt/SUNWspro/prod/lib $LDFLAGS" + LIBS="-lsunmath $LIBS" else echo "QEMU will not link correctly on Solaris 8/X86 or 9/x86 without" echo "libsunmath from the Sun Studio compilers tools, due to a lack of" @@ -314,14 +322,15 @@ SunOS) exit 1 fi fi - if test "$solarisrev" -ge 9 ; then - kqemu="yes" - fi fi if test -f /usr/include/sys/soundcard.h ; then audio_drv_list="oss" fi audio_possible_drivers="oss sdl" +# needed for CMSG_ macros in sys/socket.h + QEMU_CFLAGS="-D_XOPEN_SOURCE=600 $QEMU_CFLAGS" +# needed for TIOCWIN* defines in termios.h + QEMU_CFLAGS="-D__EXTENSIONS__ $QEMU_CFLAGS" QEMU_CFLAGS="-std=gnu99 $QEMU_CFLAGS" LIBS="-lsocket -lnsl -lresolv $LIBS" ;; @@ -335,9 +344,7 @@ AIX) linux="yes" linux_user="yes" usb="linux" - kvm="yes" if [ "$cpu" = "i386" -o "$cpu" = "x86_64" ] ; then - kqemu="yes" audio_possible_drivers="$audio_possible_drivers fmod" fi ;; @@ -352,9 +359,6 @@ if [ "$bsd" = "yes" ] ; then fi if test "$mingw32" = "yes" ; then - if [ "$cpu" = "i386" ] ; then - kqemu="yes" - fi EXESUF=".exe" QEMU_CFLAGS="-DWIN32_LEAN_AND_MEAN -DWINVER=0x501 $QEMU_CFLAGS" LIBS="-lwinmm -lws2_32 -liphlpapi $LIBS" @@ -409,6 +413,8 @@ for opt do ;; --disable-sdl) sdl="no" ;; + --enable-sdl) sdl="yes" + ;; --fmod-lib=*) fmod_lib="$optarg" ;; --fmod-inc=*) fmod_inc="$optarg" @@ -437,22 +443,34 @@ for opt do ;; --disable-vnc-tls) vnc_tls="no" ;; + --enable-vnc-tls) vnc_tls="yes" + ;; --disable-vnc-sasl) vnc_sasl="no" ;; + --enable-vnc-sasl) vnc_sasl="yes" + ;; --disable-slirp) slirp="no" ;; --disable-vde) vde="no" ;; - --disable-kqemu) kqemu="no" + --enable-vde) vde="yes" ;; --disable-xen) xen="no" ;; + --enable-xen) xen="yes" + ;; --disable-brlapi) brlapi="no" ;; + --enable-brlapi) brlapi="yes" + ;; --disable-bluez) bluez="no" ;; + --enable-bluez) bluez="yes" + ;; --disable-kvm) kvm="no" ;; + --enable-kvm) kvm="yes" + ;; --enable-profiler) profiler="yes" ;; --enable-cocoa) @@ -464,6 +482,12 @@ for opt do ;; --enable-system) softmmu="yes" ;; + --disable-user) + linux_user="no" ; + bsd_user="no" ; + darwin_user="no" + ;; + --enable-user) ;; --disable-linux-user) linux_user="no" ;; --enable-linux-user) linux_user="yes" @@ -480,6 +504,10 @@ for opt do ;; --disable-guest-base) guest_base="no" ;; + --enable-user-pie) user_pie="yes" + ;; + --disable-user-pie) user_pie="no" + ;; --enable-uname-release=*) uname_release="$optarg" ;; --sparc_cpu=*) @@ -490,15 +518,29 @@ for opt do ;; --disable-curses) curses="no" ;; + --enable-curses) curses="yes" + ;; --disable-curl) curl="no" ;; + --enable-curl) curl="yes" + ;; + --disable-fdt) fdt="no" + ;; + --enable-fdt) fdt="yes" + ;; + --disable-check-utests) check_utests="no" + ;; + --enable-check-utests) check_utests="yes" + ;; --disable-nptl) nptl="no" ;; + --enable-nptl) nptl="yes" + ;; --enable-mixemu) mixemu="yes" ;; - --disable-pthread) pthread="no" + --disable-linux-aio) linux_aio="no" ;; - --disable-aio) aio="no" + --enable-linux-aio) linux_aio="yes" ;; --enable-io-thread) io_thread="yes" ;; @@ -508,7 +550,9 @@ for opt do ;; --with-pkgversion=*) pkgversion=" ($optarg)" ;; - --disable-docs) build_docs="no" + --disable-docs) docs="no" + ;; + --enable-docs) docs="yes" ;; *) echo "ERROR: unknown option $opt"; show_help="yes" ;; @@ -584,9 +628,6 @@ echo " --interp-prefix=PREFIX where to find shared libraries, etc." echo " use %M for cpu name [$interp_prefix]" echo " --target-list=LIST set target list [$target_list]" echo "" -echo "kqemu kernel acceleration support:" -echo " --disable-kqemu disable kqemu support" -echo "" echo "Advanced options (experts only):" echo " --source-path=PATH path of source code [$source_path]" echo " --cross-prefix=PREFIX use PREFIX for compile tools [$cross_prefix]" @@ -605,6 +646,7 @@ echo " --disable-sparse disable sparse checker (default)" echo " --disable-strip disable stripping binaries" echo " --disable-werror disable compilation abort on warning" echo " --disable-sdl disable SDL" +echo " --enable-sdl enable SDL" echo " --enable-cocoa enable COCOA (Mac OS X only)" echo " --audio-drv-list=LIST set audio drivers list:" echo " Available drivers: $audio_possible_drivers" @@ -612,16 +654,31 @@ echo " --audio-card-list=LIST set list of emulated audio cards [$audio_card_l echo " Available cards: $audio_possible_cards" echo " --enable-mixemu enable mixer emulation" echo " --disable-xen disable xen backend driver support" +echo " --enable-xen enable xen backend driver support" echo " --disable-brlapi disable BrlAPI" +echo " --enable-brlapi enable BrlAPI" echo " --disable-vnc-tls disable TLS encryption for VNC server" +echo " --enable-vnc-tls enable TLS encryption for VNC server" echo " --disable-vnc-sasl disable SASL encryption for VNC server" +echo " --enable-vnc-sasl enable SASL encryption for VNC server" echo " --disable-curses disable curses output" +echo " --enable-curses enable curses output" echo " --disable-curl disable curl connectivity" +echo " --enable-curl enable curl connectivity" +echo " --disable-fdt disable fdt device tree" +echo " --enable-fdt enable fdt device tree" +echo " --disable-check-utests disable check unit-tests" +echo " --enable-check-utests enable check unit-tests" echo " --disable-bluez disable bluez stack connectivity" +echo " --enable-bluez enable bluez stack connectivity" echo " --disable-kvm disable KVM acceleration support" +echo " --enable-kvm enable KVM acceleration support" echo " --disable-nptl disable usermode NPTL support" +echo " --enable-nptl disable usermode NPTL support" echo " --enable-system enable all system emulation targets" echo " --disable-system disable all system emulation targets" +echo " --enable-user enable supported user emulation targets" +echo " --disable-user disable all user emulation targets" echo " --enable-linux-user enable all linux usermode emulation targets" echo " --disable-linux-user disable all linux usermode emulation targets" echo " --enable-darwin-user enable all darwin usermode emulation targets" @@ -631,14 +688,17 @@ echo " --disable-bsd-user disable all BSD usermode emulation targets" echo " --enable-guest-base enable GUEST_BASE support for usermode" echo " emulation targets" echo " --disable-guest-base disable GUEST_BASE support" +echo " --enable-user-pie build usermode emulation targets as PIE" +echo " --disable-user-pie do not build usermode emulation targets as PIE" echo " --fmod-lib path to FMOD library" echo " --fmod-inc path to FMOD includes" echo " --oss-lib path to OSS library" echo " --enable-uname-release=R Return R for uname -r in usermode emulation" echo " --sparc_cpu=V Build qemu for Sparc architecture v7, v8, v8plus, v8plusa, v9" echo " --disable-vde disable support for vde network" -echo " --disable-pthread disable pthread support" -echo " --disable-aio disable AIO support" +echo " --enable-vde enable support for vde network" +echo " --disable-linux-aio disable Linux AIO support" +echo " --enable-linux-aio enable Linux AIO support" echo " --enable-io-thread enable IO thread" echo " --disable-blobs disable installing provided firmware blobs" echo " --kerneldir=PATH look for kernel includes in PATH" @@ -647,10 +707,6 @@ echo "NOTE: The object files are built at the place where configure is launched" exit 1 fi -if test ! -x "$(which cgcc 2>/dev/null)"; then - sparse="no" -fi - # # Solaris specific configure tool chain decisions # @@ -746,6 +802,16 @@ if test -z "$target_list" ; then exit 1 fi +feature_not_found() { + feature=$1 + + echo "ERROR" + echo "ERROR: User requested feature $feature" + echo "ERROR: configure was not able to find it" + echo "ERROR" + exit 1; +} + if test -z "$cross_prefix" ; then # --- @@ -783,8 +849,12 @@ case "$cpu" in ;; esac -# Check host NPTL support -cat > $TMPC < $TMPC < #include void foo() @@ -795,10 +865,14 @@ void foo() } EOF -if compile_object ; then - : -else - nptl="no" + if compile_object ; then + nptl=yes + else + if test "$nptl" = "yes" ; then + feature_not_found "nptl" + fi + nptl=no + fi fi ########################################## @@ -821,7 +895,7 @@ fi ########################################## # xen probe -if test "$xen" = "yes" ; then +if test "$xen" != "no" ; then xen_libs="-lxenstore -lxenctrl -lxenguest" cat > $TMPC < @@ -829,9 +903,26 @@ if test "$xen" = "yes" ; then int main(void) { xs_daemon_open(); xc_interface_open(); return 0; } EOF if compile_prog "" "$xen_libs" ; then + xen=yes libs_softmmu="$xen_libs $libs_softmmu" else - xen="no" + if test "$xen" = "yes" ; then + feature_not_found "xen" + fi + xen=no + fi +fi + +########################################## +# Sparse probe +if test "$sparse" != "no" ; then + if test -x "$(which cgcc 2>/dev/null)"; then + sparse=yes + else + if test "$sparse" = "yes" ; then + feature_not_found "sparse" + fi + sparse=no fi fi @@ -840,8 +931,7 @@ fi sdl_too_old=no -if test "$sdl" = "yes" ; then - sdl=no +if test "$sdl" != "no" ; then cat > $TMPC << EOF #include #undef main /* We don't want SDL to override our main() */ @@ -872,6 +962,11 @@ EOF sdl=no fi fi # static link + else # sdl not found + if test "$sdl" = "yes" ; then + feature_not_found "sdl" + fi + sdl=no fi # sdl compile test fi @@ -896,36 +991,44 @@ fi ########################################## # VNC TLS detection -if test "$vnc_tls" = "yes" ; then -cat > $TMPC < $TMPC < int main(void) { gnutls_session_t s; gnutls_init(&s, GNUTLS_SERVER); return 0; } EOF - vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null` - vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null` - if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then - libs_softmmu="$vnc_tls_libs $libs_softmmu" - else - vnc_tls="no" + vnc_tls_cflags=`pkg-config --cflags gnutls 2> /dev/null` + vnc_tls_libs=`pkg-config --libs gnutls 2> /dev/null` + if compile_prog "$vnc_tls_cflags" "$vnc_tls_libs" ; then + vnc_tls=yes + libs_softmmu="$vnc_tls_libs $libs_softmmu" + else + if test "$vnc_tls" = "yes" ; then + feature_not_found "vnc-tls" fi + vnc_tls=no + fi fi ########################################## # VNC SASL detection -if test "$vnc_sasl" = "yes" ; then -cat > $TMPC < $TMPC < #include int main(void) { sasl_server_init(NULL, "qemu"); return 0; } EOF - # Assuming Cyrus-SASL installed in /usr prefix - vnc_sasl_cflags="" - vnc_sasl_libs="-lsasl2" - if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then - libs_softmmu="$vnc_sasl_libs $libs_softmmu" - else - vnc_sasl="no" + # Assuming Cyrus-SASL installed in /usr prefix + vnc_sasl_cflags="" + vnc_sasl_libs="-lsasl2" + if compile_prog "$vnc_sasl_cflags" "$vnc_sasl_libs" ; then + vnc_sasl=yes + libs_softmmu="$vnc_sasl_libs $libs_softmmu" + else + if test "$vnc_sasl" = "yes" ; then + feature_not_found "vnc-sasl" fi + vnc_sasl=no + fi fi ########################################## @@ -945,8 +1048,7 @@ fi ########################################## # vde libraries probe -if test "$vde" = "yes" ; then - vde=no +if test "$vde" != "no" ; then vde_libs="-lvdeplug" cat > $TMPC << EOF #include @@ -959,6 +1061,13 @@ int main(void) EOF if compile_prog "" "$vde_libs" ; then vde=yes + libs_softmmu="$vde_libs $libs_softmmu" + libs_tools="$vde_libs $libs_tools" + else + if test "$vde" = "yes" ; then + feature_not_found "vde" + fi + vde=no fi fi @@ -1011,12 +1120,14 @@ for drv in $audio_drv_list; do esd) audio_drv_probe $drv esd.h -lesd 'return esd_play_stream(0, 0, "", 0);' libs_softmmu="-lesd $libs_softmmu" + audio_pt_int="yes" ;; pa) audio_drv_probe $drv pulse/simple.h -lpulse-simple \ "pa_simple *s = NULL; pa_simple_free(s); return 0;" libs_softmmu="-lpulse-simple $libs_softmmu" + audio_pt_int="yes" ;; coreaudio) @@ -1050,8 +1161,7 @@ done ########################################## # BrlAPI probe -if test "$brlapi" = "yes" ; then - brlapi=no +if test "$brlapi" != "no" ; then brlapi_libs="-lbrlapi" cat > $TMPC << EOF #include @@ -1060,13 +1170,20 @@ EOF if compile_prog "" "$brlapi_libs" ; then brlapi=yes libs_softmmu="$brlapi_libs $libs_softmmu" + else + if test "$brlapi" = "yes" ; then + feature_not_found "brlapi" + fi + brlapi=no fi fi ########################################## # curses probe +curses_list="-lncurses -lcurses" -if test "$curses" = "yes" ; then +if test "$curses" != "no" ; then + curses_found=no cat > $TMPC << EOF #include #ifdef __OpenBSD__ @@ -1074,20 +1191,27 @@ if test "$curses" = "yes" ; then #endif int main(void) { resize_term(0, 0); return curses_version(); } EOF - if compile_prog "" "-lncurses" ; then - libs_softmmu="-lncurses $libs_softmmu" - elif compile_prog "" "-lcurses" ; then - libs_softmmu="-lcurses $libs_softmmu" + for curses_lib in $curses_list; do + if compile_prog "" "$curses_lib" ; then + curses_found=yes + libs_softmmu="$curses_lib $libs_softmmu" + break + fi + done + if test "$curses_found" = "yes" ; then + curses=yes else + if test "$curses" = "yes" ; then + feature_not_found "curses" + fi curses=no fi -fi # test "$curses" +fi ########################################## # curl probe -if test "$curl" = "yes" ; then - curl=no +if test "$curl" != "no" ; then cat > $TMPC << EOF #include int main(void) { return curl_easy_init(); } @@ -1096,15 +1220,39 @@ EOF curl_libs=`curl-config --libs 2>/dev/null` if compile_prog "$curl_cflags" "$curl_libs" ; then curl=yes + libs_tools="$curl_libs $libs_tools" + libs_softmmu="$curl_libs $libs_softmmu" + else + if test "$curl" = "yes" ; then + feature_not_found "curl" + fi + curl=no fi fi # test "$curl" ########################################## +# check framework probe + +if test "$check_utests" != "no" ; then + cat > $TMPC << EOF +#include +int main(void) { suite_create("qemu test"); return 0; } +EOF + check_libs=`pkg-config --libs check` + if compile_prog "" $check_libs ; then + check_utests=yes + libs_tools="$check_libs $libs_tools" + else + if test "$check_utests" = "yes" ; then + feature_not_found "check" + fi + check_utests=no + fi +fi # test "$check_utests" + +########################################## # bluez support probe -if test "$bluez" = "yes" ; then - `pkg-config bluez 2> /dev/null` || bluez="no" -fi -if test "$bluez" = "yes" ; then +if test "$bluez" != "no" ; then cat > $TMPC << EOF #include int main(void) { return bt_error(0); } @@ -1112,15 +1260,19 @@ EOF bluez_cflags=`pkg-config --cflags bluez 2> /dev/null` bluez_libs=`pkg-config --libs bluez 2> /dev/null` if compile_prog "$bluez_cflags" "$bluez_libs" ; then + bluez=yes libs_softmmu="$bluez_libs $libs_softmmu" else + if test "$bluez" = "yes" ; then + feature_not_found "bluez" + fi bluez="no" fi fi ########################################## # kvm probe -if test "$kvm" = "yes" ; then +if test "$kvm" != "no" ; then cat > $TMPC < #if !defined(KVM_API_VERSION) || KVM_API_VERSION < 12 || KVM_API_VERSION > 12 @@ -1151,20 +1303,23 @@ EOF kvm_cflags="" fi if compile_prog "$kvm_cflags" "" ; then - : + kvm=yes else - kvm="no"; - if [ -x "`which awk 2>/dev/null`" ] && \ - [ -x "`which grep 2>/dev/null`" ]; then - kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \ + if test "$kvm" = "yes" ; then + if [ -x "`which awk 2>/dev/null`" ] && \ + [ -x "`which grep 2>/dev/null`" ]; then + kvmerr=`LANG=C $cc $QEMU_CFLAGS -o $TMPE $kvm_cflags $TMPC 2>&1 \ | grep "error: " \ | awk -F "error: " '{if (NR>1) printf(", "); printf("%s",$2);}'` - if test "$kvmerr" != "" ; then - kvm="no - (${kvmerr})\n\ - NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \ -recent kvm-kmod from http://sourceforge.net/projects/kvm." + if test "$kvmerr" != "" ; then + echo -e "${kvmerr}\n\ + NOTE: To enable KVM support, update your kernel to 2.6.29+ or install \ + recent kvm-kmod from http://sourceforge.net/projects/kvm." + fi fi + feature_not_found "kvm" fi + kvm=no fi fi @@ -1172,24 +1327,46 @@ fi # pthread probe PTHREADLIBS_LIST="-lpthread -lpthreadGC2" -if test "$pthread" = yes; then - pthread=no +pthread=no cat > $TMPC << EOF #include int main(void) { pthread_create(0,0,0,0); return 0; } EOF - for pthread_lib in $PTHREADLIBS_LIST; do - if compile_prog "" "$pthread_lib" ; then - pthread=yes - LIBS="$pthread_lib $LIBS" - break - fi - done +for pthread_lib in $PTHREADLIBS_LIST; do + if compile_prog "" "$pthread_lib" ; then + pthread=yes + LIBS="$pthread_lib $LIBS" + break + fi +done + +if test "$mingw32" != yes -a "$pthread" = no; then + echo + echo "Error: pthread check failed" + echo "Make sure to have the pthread libs and headers installed." + echo + exit 1 fi -if test "$pthread" = no; then - aio=no - io_thread=no +########################################## +# linux-aio probe +AIOLIBS="" + +if test "$linux_aio" != "no" ; then + cat > $TMPC < +#include +int main(void) { io_setup(0, NULL); io_set_eventfd(NULL, 0); eventfd(0, 0); return 0; } +EOF + if compile_prog "" "-laio" ; then + linux_aio=yes + LIBS="$LIBS -laio" + else + if test "$linux_aio" = "yes" ; then + feature_not_found "linux AIO" + fi + linux_aio=no + fi fi ########################################## @@ -1220,8 +1397,7 @@ fi ########################################## # fdt probe -if test "$fdt" = "yes" ; then - fdt=no +if test "$fdt" != "no" ; then fdt_libs="-lfdt" cat > $TMPC << EOF int main(void) { return 0; } @@ -1229,6 +1405,11 @@ EOF if compile_prog "" "$fdt_libs" ; then fdt=yes libs_softmmu="$fdt_libs $libs_softmmu" + else + if test "$fdt" = "yes" ; then + feature_not_found "fdt" + fi + fdt=no fi fi @@ -1332,9 +1513,32 @@ if compile_prog "" "" ; then splice=yes fi +# check if eventfd is supported +eventfd=no +cat > $TMPC << EOF +#include + +int main(void) +{ + int efd = eventfd(0, 0); + return 0; +} +EOF +if compile_prog "" "" ; then + eventfd=yes +fi + # Check if tools are available to build documentation. -if test "$build_docs" = "yes" -a \( ! -x "`which texi2html 2>/dev/null`" -o ! -x "`which pod2man 2>/dev/null`" \) ; then - build_docs="no" +if test "$docs" != "no" ; then + if test -x "`which texi2html 2>/dev/null`" -a \ + -x "`which pod2man 2>/dev/null`" ; then + docs=yes + else + if test "$docs" = "yes" ; then + feature_not_found "docs" + fi + docs=no + fi fi # Search for bsawp_32 function @@ -1392,7 +1596,7 @@ if check_linker_flags --whole-archive --no-whole-archive ; then arlibs_end="-Wl,--no-whole-archive" elif check_linker_flags -z,allextract -z,defaultextract ; then # Solaris ld - arlibs_begin"=-Wl,-z,allextract" + arlibs_begin="-Wl,-z,allextract" arlibs_end="-Wl,-z,defaultextract" elif check_linker_flags -all_load ; then # Mac OS X @@ -1404,11 +1608,23 @@ else exit 1 fi -if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaries" != yes -a \ +if test "$darwin" != "yes" -a "$mingw32" != "yes" -a "$solaris" != yes -a \ "$aix" != "yes" ; then libs_softmmu="-lutil $libs_softmmu" fi +########################################## +# check if the compiler defines offsetof + +need_offsetof=yes +cat > $TMPC << EOF +#include +int main(void) { struct s { int f; }; return offsetof(struct s, f); } +EOF +if compile_prog "" "" ; then + need_offsetof=no +fi + # End of CC checks # After here, no more $cc or $ld runs @@ -1496,36 +1712,30 @@ fi echo "SDL support $sdl" echo "curses support $curses" echo "curl support $curl" +echo "check support $check_utests" echo "mingw32 support $mingw32" echo "Audio drivers $audio_drv_list" echo "Extra audio cards $audio_card_list" echo "Mixer emulation $mixemu" echo "VNC TLS support $vnc_tls" -if test "$vnc_tls" = "yes" ; then - echo " TLS CFLAGS $vnc_tls_cflags" - echo " TLS LIBS $vnc_tls_libs" -fi echo "VNC SASL support $vnc_sasl" -if test "$vnc_sasl" = "yes" ; then - echo " SASL CFLAGS $vnc_sasl_cflags" - echo " SASL LIBS $vnc_sasl_libs" -fi if test -n "$sparc_cpu"; then echo "Target Sparc Arch $sparc_cpu" fi -echo "kqemu support $kqemu" echo "xen support $xen" echo "brlapi support $brlapi" -echo "Documentation $build_docs" +echo "bluez support $bluez" +echo "Documentation $docs" [ ! -z "$uname_release" ] && \ echo "uname -r $uname_release" echo "NPTL support $nptl" echo "GUEST_BASE $guest_base" +echo "PIE user targets $user_pie" echo "vde support $vde" -echo "AIO support $aio" echo "IO thread $io_thread" +echo "Linux AIO support $linux_aio" echo "Install blobs $blobs" -echo -e "KVM support $kvm" +echo "KVM support $kvm" echo "fdt support $fdt" echo "preadv support $preadv" @@ -1604,10 +1814,10 @@ if test $profiler = "yes" ; then fi if test "$slirp" = "yes" ; then echo "CONFIG_SLIRP=y" >> $config_host_mak + CFLAGS="-I\$(SRC_PATH)/slirp $CFLAGS" fi if test "$vde" = "yes" ; then echo "CONFIG_VDE=y" >> $config_host_mak - echo "VDE_LIBS=$vde_libs" >> $config_host_mak fi for card in $audio_card_list; do def=CONFIG_`echo $card | tr '[:lower:]' '[:upper:]'` @@ -1621,6 +1831,9 @@ for drv in $audio_drv_list; do echo "FMOD_CFLAGS=-I$fmod_inc" >> $config_host_mak fi done +if test "$audio_pt_int" = "yes" ; then + echo "CONFIG_AUDIO_PT_INT=y" >> $config_host_mak +fi if test "$mixemu" = "yes" ; then echo "CONFIG_MIXEMU=y" >> $config_host_mak fi @@ -1643,7 +1856,7 @@ if [ "$source_path_used" = "yes" ]; then echo "VPATH=$source_path" >> $config_host_mak fi echo "TARGET_DIRS=$target_list" >> $config_host_mak -if [ "$build_docs" = "yes" ] ; then +if [ "$docs" = "yes" ] ; then echo "BUILD_DOCS=yes" >> $config_host_mak fi if test "$sdl" = "yes" ; then @@ -1668,6 +1881,9 @@ fi if test "$splice" = "yes" ; then echo "CONFIG_SPLICE=y" >> $config_host_mak fi +if test "$eventfd" = "yes" ; then + echo "CONFIG_EVENTFD=y" >> $config_host_mak +fi if test "$inotify" = "yes" ; then echo "CONFIG_INOTIFY=y" >> $config_host_mak fi @@ -1680,7 +1896,6 @@ fi if test "$curl" = "yes" ; then echo "CONFIG_CURL=y" >> $config_host_mak echo "CURL_CFLAGS=$curl_cflags" >> $config_host_mak - echo "CURL_LIBS=$curl_libs" >> $config_host_mak fi if test "$brlapi" = "yes" ; then echo "CONFIG_BRLAPI=y" >> $config_host_mak @@ -1692,12 +1907,12 @@ fi if test "$xen" = "yes" ; then echo "CONFIG_XEN=y" >> $config_host_mak fi -if test "$aio" = "yes" ; then - echo "CONFIG_AIO=y" >> $config_host_mak -fi if test "$io_thread" = "yes" ; then echo "CONFIG_IOTHREAD=y" >> $config_host_mak fi +if test "$linux_aio" = "yes" ; then + echo "CONFIG_LINUX_AIO=y" >> $config_host_mak +fi if test "$blobs" = "yes" ; then echo "INSTALL_BLOBS=yes" >> $config_host_mak fi @@ -1710,6 +1925,9 @@ fi if test "$fdt" = "yes" ; then echo "CONFIG_FDT=y" >> $config_host_mak fi +if test "$need_offsetof" = "yes" ; then + echo "CONFIG_NEED_OFFSETOF=y" >> $config_host_mak +fi # XXX: suppress that if [ "$bsd" = "yes" ] ; then @@ -1736,6 +1954,11 @@ if test `expr "$target_list" : ".*softmmu.*"` != 0 ; then tools="qemu-img\$(EXESUF) $tools" if [ "$linux" = "yes" ] ; then tools="qemu-nbd\$(EXESUF) qemu-io\$(EXESUF) $tools" + if [ "$check_utests" = "yes" ]; then + tools="check-qint check-qstring check-qdict $tools" + fi + elif test "$mingw32" = "yes" ; then + tools="qemu-io\$(EXESUF) $tools" fi fi echo "TOOLS=$tools" >> $config_host_mak @@ -1775,11 +1998,12 @@ echo "LDFLAGS=$LDFLAGS" >> $config_host_mak echo "ARLIBS_BEGIN=$arlibs_begin" >> $config_host_mak echo "ARLIBS_END=$arlibs_end" >> $config_host_mak echo "LIBS+=$LIBS" >> $config_host_mak +echo "LIBS_TOOLS+=$libs_tools" >> $config_host_mak echo "EXESUF=$EXESUF" >> $config_host_mak echo "/* Automatically generated by configure - do not modify */" > $config_host_h -$SHELL $source_path/create_config < $config_host_mak >> $config_host_h +/bin/sh $source_path/create_config < $config_host_mak >> $config_host_h if test -f ${config_host_h}~ ; then if cmp -s $config_host_h ${config_host_h}~ ; then @@ -1846,6 +2070,7 @@ test -f $config_h && mv $config_h ${config_h}~ mkdir -p $target_dir mkdir -p $target_dir/fpu mkdir -p $target_dir/tcg +mkdir -p $target_dir/ide if test "$target" = "arm-linux-user" -o "$target" = "armeb-linux-user" -o "$target" = "arm-bsd-user" -o "$target" = "armeb-bsd-user" ; then mkdir -p $target_dir/nwfpe fi @@ -1975,6 +2200,8 @@ case "$target_arch2" in ;; esac echo "TARGET_ARCH=$TARGET_ARCH" >> $config_mak +target_arch_name="`echo $TARGET_ARCH | tr '[:lower:]' '[:upper:]'`" +echo "TARGET_$target_arch_name=y" >> $config_mak echo "TARGET_ARCH2=$target_arch2" >> $config_mak # TARGET_BASE_ARCH needs to be defined after TARGET_ARCH if [ "$TARGET_BASE_ARCH" = "" ]; then @@ -1993,10 +2220,6 @@ case "$target_arch2" in if test "$xen" = "yes" -a "$target_softmmu" = "yes" ; then echo "CONFIG_XEN=y" >> $config_mak fi - if test $kqemu = "yes" -a "$target_softmmu" = "yes" - then - echo "CONFIG_KQEMU=y" >> $config_mak - fi esac case "$target_arch2" in i386|x86_64|ppcemb|ppc|ppc64) @@ -2011,15 +2234,15 @@ case "$target_arch2" in echo "KVM_CFLAGS=$kvm_cflags" >> $config_mak fi esac -echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak echo "TARGET_PHYS_ADDR_BITS=$target_phys_bits" >> $config_mak -echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak if test "$target_bigendian" = "yes" ; then echo "TARGET_WORDS_BIGENDIAN=y" >> $config_mak fi if test "$target_softmmu" = "yes" ; then echo "CONFIG_SOFTMMU=y" >> $config_mak echo "LIBS+=$libs_softmmu" >> $config_mak + echo "HWLIB=../libhw$target_phys_bits/libqemuhw$target_phys_bits.a" >> $config_mak + echo "subdir-$target: subdir-libhw$target_phys_bits" >> $config_host_mak fi if test "$target_user_only" = "yes" ; then echo "CONFIG_USER_ONLY=y" >> $config_mak @@ -2078,6 +2301,47 @@ fi cflags="-I\$(SRC_PATH)/tcg $cflags" cflags="-I\$(SRC_PATH)/fpu $cflags" +for i in $ARCH $TARGET_BASE_ARCH ; do + case "$i" in + alpha) + echo "CONFIG_ALPHA_DIS=y" >> $config_mak + ;; + arm) + echo "CONFIG_ARM_DIS=y" >> $config_mak + ;; + cris) + echo "CONFIG_CRIS_DIS=y" >> $config_mak + ;; + hppa) + echo "CONFIG_HPPA_DIS=y" >> $config_mak + ;; + i386|x86_64) + echo "CONFIG_I386_DIS=y" >> $config_mak + ;; + m68k) + echo "CONFIG_M68K_DIS=y" >> $config_mak + ;; + microblaze) + echo "CONFIG_MICROBLAZE_DIS=y" >> $config_mak + ;; + mips*) + echo "CONFIG_MIPS_DIS=y" >> $config_mak + ;; + ppc*) + echo "CONFIG_PPC_DIS=y" >> $config_mak + ;; + s390) + echo "CONFIG_S390_DIS=y" >> $config_mak + ;; + sh4) + echo "CONFIG_SH4_DIS=y" >> $config_mak + ;; + sparc*) + echo "CONFIG_SPARC_DIS=y" >> $config_mak + ;; + esac +done + case "$ARCH" in alpha) # Ensure there's only a single GP @@ -2088,6 +2352,23 @@ ia64) ;; esac +if test "$target_softmmu" = "yes" ; then + case "$TARGET_BASE_ARCH" in + arm) + cflags="-DHAS_AUDIO $cflags" + ;; + i386|mips|ppc) + cflags="-DHAS_AUDIO -DHAS_AUDIO_CHOICE $cflags" + ;; + esac +fi + +if test "$target_user_only" = "yes" -a "$static" = "no" -a \ + "$user_pie" = "yes" ; then + cflags="-fpie $cflags" + ldflags="-pie $ldflags" +fi + if test "$target_softmmu" = "yes" -a \( \ "$TARGET_ARCH" = "microblaze" -o \ "$TARGET_ARCH" = "cris" \) ; then @@ -2102,22 +2383,13 @@ if test "$gprof" = "yes" ; then fi if test "$target_softmmu" = "yes" ; then ldflags="-p $ldflags" + echo "GPROF_CFLAGS=-p" >> $config_mak fi fi linker_script="-Wl,-T../config-host.ld -Wl,-T,\$(SRC_PATH)/\$(ARCH).ld" if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then case "$ARCH" in - i386) - if test "$gprof" = "yes" -o "$static" = "yes" ; then - ldflags="$linker_script $ldflags" - else - # WARNING: this LDFLAGS is _very_ tricky : qemu is an ELF shared object - # that the kernel ELF loader considers as an executable. I think this - # is the simplest way to make it self virtualizable! - ldflags="-Wl,-shared $ldflags" - fi - ;; sparc) # -static is used to avoid g1/g3 usage by the dynamic linker ldflags="$linker_script -static $ldflags" @@ -2125,7 +2397,7 @@ if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then ia64) ldflags="-Wl,-G0 $linker_script -static $ldflags" ;; - x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64) + i386|x86_64|ppc|ppc64|s390|sparc64|alpha|arm|m68k|mips|mips64) ldflags="$linker_script $ldflags" ;; esac @@ -2144,7 +2416,7 @@ echo "QEMU_CFLAGS+=$cflags" >> $config_mak echo "/* Automatically generated by configure - do not modify */" > $config_h echo "#include \"../config-host.h\"" >> $config_h -$SHELL $source_path/create_config < $config_mak >> $config_h +/bin/sh $source_path/create_config < $config_mak >> $config_h if test -f ${config_h}~ ; then if cmp -s $config_h ${config_h}~ ; then @@ -2159,10 +2431,12 @@ done # for target in $targets # build tree in object directory if source path is different from current one if test "$source_path_used" = "yes" ; then DIRS="tests tests/cris slirp audio block pc-bios/optionrom" + DIRS="$DIRS roms/pcbios roms/seabios roms/vgabios" FILES="Makefile tests/Makefile" FILES="$FILES tests/cris/Makefile tests/cris/.gdbinit" FILES="$FILES tests/test-mmap.c" FILES="$FILES pc-bios/optionrom/Makefile pc-bios/keymaps pc-bios/video.x" + FILES="$FILES roms/pcbios/Makefile roms/seabios/Makefile roms/vgabios/Makefile" for bios_file in $source_path/pc-bios/*.bin $source_path/pc-bios/*.dtb $source_path/pc-bios/openbios-*; do FILES="$FILES pc-bios/`basename $bios_file`" done @@ -2176,6 +2450,20 @@ if test "$source_path_used" = "yes" ; then done fi +# temporary config to build submodules +for rom in seabios vgabios pcbios; do + config_mak=roms/$rom/config.mak + echo "# Automatically generated by configure - do not modify" >> $config_mak + echo "SRC_PATH=$source_path/roms/$rom" >> $config_mak + echo "CC=$cc" >> $config_mak + echo "BCC=bcc" >> $config_mak + echo "CPP=${cross_prefix}cpp" >> $config_mak + echo "OBJCOPY=objcopy" >> $config_mak + echo "IASL=iasl" >> $config_mak + echo "HOST_CC=$host_cc" >> $config_mak + echo "LD=$ld" >> $config_mak +done + for hwlib in 32 64; do d=libhw$hwlib mkdir -p $d