--- SheepShaver/src/Unix/configure.in 2004/02/20 17:33:27 1.20 +++ SheepShaver/src/Unix/configure.in 2004/06/22 22:41:44 1.25 @@ -13,7 +13,7 @@ dnl Options. AC_ARG_ENABLE(jit, [ --enable-jit enable JIT compiler [default=yes]], [WANT_JIT=$enableval], [WANT_JIT=yes]) AC_ARG_ENABLE(ppc-emulator, [ --enable-ppc-emulator use the selected PowerPC emulator [default=auto]], [WANT_EMULATED_PPC=$enableval], [WANT_EMULATED_PPC=auto]) AC_ARG_ENABLE(xf86-dga, [ --enable-xf86-dga use the XFree86 DGA extension [default=yes]], [WANT_XF86_DGA=$enableval], [WANT_XF86_DGA=yes]) -AC_ARG_ENABLE(xf86-vidmode, [ --enable-xf86-vidmode use the XFree86 VidMode extension [default=yes]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=yes]) +AC_ARG_ENABLE(xf86-vidmode, [ --enable-xf86-vidmode use the XFree86 VidMode extension [default=no]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=no]) AC_ARG_ENABLE(vosf, [ --enable-vosf enable video on SEGV signals [default=yes]], [WANT_VOSF=$enableval], [WANT_VOSF=yes]) AC_ARG_WITH(esd, [ --with-esd support ESD for sound under Linux/FreeBSD [default=yes]], [WANT_ESD=$withval], [WANT_ESD=yes]) AC_ARG_WITH(gtk, [ --with-gtk use GTK user interface [default=yes]], [WANT_GTK=$withval], [WANT_GTK=yes]) @@ -183,9 +183,7 @@ AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(mach/vm_map.h mach/mach_init.h sys/mman.h) AC_CHECK_HEADERS(sys/time.h sys/times.h) AC_CHECK_HEADERS(unistd.h fcntl.h byteswap.h) -AC_CHECK_HEADERS(mmintrin.h, [have_mmintrin_h=yes]) -AC_CHECK_HEADERS(xmmintrin.h, [have_xmmintrin_h=yes]) -AC_CHECK_HEADERS(emmintrin.h, [have_emmintrin_h=yes]) +AC_CHECK_HEADERS(linux/if.h linux/if_tun.h net/if.h net/if_tun.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN @@ -226,6 +224,7 @@ AC_CHECK_FUNCS(nanosleep) AC_CHECK_FUNCS(sigaction signal) AC_CHECK_FUNCS(mmap mprotect munmap) AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect) +AC_CHECK_FUNCS(posix_memalign memalign valloc) dnl Darwin seems to define mach_task_self() instead of task_self(). AC_CHECK_FUNCS(mach_task_self task_self) @@ -275,6 +274,29 @@ AC_DEFUN(AC_TRANSLATE_DEFINE, [ fi ]) +dnl Check that the host supports TUN/TAP devices +AC_CACHE_CHECK([whether TUN/TAP is supported], + ac_cv_tun_tap_support, [ + AC_TRY_COMPILE([ + #if defined(HAVE_LINUX_IF_H) && defined(HAVE_LINUX_IF_TUN_H) + #include + #include + #endif + #if defined(HAVE_NET_IF_H) && defined(HAVE_NET_IF_TUN_H) + #include + #include + #endif + ], [ + struct ifreq ifr; + memset(&ifr, 0, sizeof(ifr)); + ifr.ifr_flags = IFF_TAP | IFF_NO_PI; + ], + ac_cv_tun_tap_support=yes, ac_cv_tun_tap_support=no + ) +]) +AC_TRANSLATE_DEFINE(ENABLE_TUNTAP, "$ac_cv_tun_tap_support", + [Define if your system supports TUN/TAP devices.]) + dnl Various checks if the system supports vm_allocate() and the like functions. have_mach_vm=no if [[ "x$ac_cv_func_vm_allocate" = "xyes" -a "x$ac_cv_func_vm_deallocate" = "xyes" -a \ @@ -528,10 +550,8 @@ AC_CACHE_CHECK([whether your system supp #define CONFIGURE_TEST_SIGSEGV_RECOVERY #include "vm_alloc.cpp" #include "sigsegv.cpp" - ], [ - sigsegv_recovery=mach - ac_cv_have_mach_exceptions=yes ], + ac_cv_have_mach_exceptions=yes, ac_cv_have_mach_exceptions=no, dnl When cross-compiling, do not assume anything. ac_cv_have_mach_exceptions=no @@ -539,6 +559,9 @@ AC_CACHE_CHECK([whether your system supp AC_LANG_RESTORE ] ) +if [[ "$ac_cv_have_mach_exceptions" = "yes" ]]; then + sigsegv_recovery=mach +fi AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions", [Define if your system supports Mach exceptions.]) @@ -553,10 +576,8 @@ if [[ -z "$sigsegv_recovery" ]]; then #define CONFIGURE_TEST_SIGSEGV_RECOVERY #include "vm_alloc.cpp" #include "sigsegv.cpp" - ], [ - sigsegv_recovery=siginfo - ac_cv_have_extended_signals=yes ], + ac_cv_have_extended_signals=yes, ac_cv_have_extended_signals=no, dnl When cross-compiling, do not assume anything. ac_cv_have_extended_signals=no @@ -564,6 +585,9 @@ if [[ -z "$sigsegv_recovery" ]]; then AC_LANG_RESTORE ] ) + if [[ "$ac_cv_have_extended_signals" = "yes" ]]; then + sigsegv_recovery=siginfo + fi AC_TRANSLATE_DEFINE(HAVE_SIGINFO_T, "$ac_cv_have_extended_signals", [Define if your system support extended signals.]) fi @@ -579,16 +603,17 @@ if [[ -z "$sigsegv_recovery" ]]; then #define CONFIGURE_TEST_SIGSEGV_RECOVERY #include "vm_alloc.cpp" #include "sigsegv.cpp" - ], [ - sigsegv_recovery=sigcontext - ac_cv_have_sigcontext_hack=yes ], + ac_cv_have_sigcontext_hack=yes, ac_cv_have_sigcontext_hack=no, dnl When cross-compiling, do not assume anything. ac_cv_have_sigcontext_hack=no ) AC_LANG_RESTORE ]) + if [[ "$ac_cv_have_sigcontext_hack" = "yes" ]]; then + sigsegv_recovery=sigcontext + fi AC_TRANSLATE_DEFINE(HAVE_SIGCONTEXT_SUBTERFUGE, "$ac_cv_have_sigcontext_hack", [Define if we know a hack to replace siginfo_t->si_addr member.]) fi @@ -617,6 +642,14 @@ dnl Can we do Video on SEGV Signals ? CAN_VOSF=no if [[ -n "$sigsegv_recovery" ]]; then CAN_VOSF=yes + case $target_os in + darwin*) + dnl Signal handlers in darwin are way too slow since the whole + dnl machine state (GPRs, FPRs, VRs) is forcibly saved. + dnl In other words, VOSF is slower than static window refreshes. + CAN_VOSF=no + ;; + esac fi dnl Enable VOSF screen updates with this feature is requested and feasible @@ -728,15 +761,17 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then else DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -malign-functions=0" fi - if [[ "x$have_mmintrin_h" = "xyes" ]]; then - DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -mmmx" - fi - if [[ "x$have_xmmintrin_h" = "xyes" ]]; then - DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -msse" - fi - if [[ "x$have_emmintrin_h" = "xyes" ]]; then - DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -msse2" - fi + saved_CPPFLAGS=$CPPFLAGS + CPPFLAGS="$CPPFLAGS -mmmx" + AC_CHECK_HEADERS(mmintrin.h, [DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -mmmx"]) + CPPFLAGS="$CPPFLAGS -msse" + AC_CHECK_HEADERS(xmmintrin.h, [DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -msse"]) + CPPFLAGS="$CPPFLAGS -msse2" + AC_CHECK_HEADERS(emmintrin.h, [DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -msse2"]) + CPPFLAGS=$saved_CPPFLAGS + ;; + x86_64) + AC_CHECK_HEADERS(mmintrin.h xmmintrin.h emmintrin.h) ;; esac DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -finline-limit=10000"