--- SheepShaver/src/Unix/configure.ac 2004/11/25 19:14:15 1.11 +++ SheepShaver/src/Unix/configure.ac 2005/06/14 06:32:52 1.24 @@ -17,11 +17,19 @@ ulimit -c 0 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(fbdev-dga, [ --enable-fbdev-dga use direct frame buffer access via /dev/fb0 [default=yes]], [WANT_FBDEV_DGA=$enableval], [WANT_FBDEV_DGA=yes]) 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=no]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=no]) +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(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]) +AC_ARG_WITH(gtk, [ --with-gtk use GTK user interface [default=yes]], + [case "$withval" in + gtk1) WANT_GTK="gtk";; + gtk|gtk2) WANT_GTK="$withval";; + yes) WANT_GTK="gtk2 gtk";; + *) WANT_GTK="no";; + esac], + [WANT_GTK="gtk2 gtk"]) AC_ARG_WITH(mon, [ --with-mon use mon as debugger [default=yes]], [WANT_MON=$withval], [WANT_MON=yes]) AC_ARG_WITH(dgcc, [ --with-dgcc=COMPILER use C++ COMPILER to compile synthetic opcodes], [DYNGEN_CC=$withval]) @@ -31,7 +39,7 @@ AC_ARG_ENABLE(addressing, [case "$enableval" in real) WANT_ADDRESSING_MODE="real";; direct) WANT_ADDRESSING_MODE="direct";; - direct,0x*) WANT_ADDRESSING_MODE="direct"; NATMEM_OFFSET=`echo "$enableval" | sed -n '/direct,\(0[[xX]][[0-9A-Fa-f]]*\)/s//\1/p'`;; + direct,0x*) WANT_ADDRESSING_MODE="direct"; NATMEM_OFFSET=`echo "$enableval" | sed -n '/direct,\(0[[xX]][[0-9A-Fa-f]]*\([[UuLl]]\{1,2\}\)\?\)$/s//\1/p'`;; esac], [WANT_ADDRESSING_MODE="real"] ) @@ -48,7 +56,8 @@ AC_PROG_CXX AC_PROG_MAKE_SET AC_PROG_INSTALL AC_PROG_EGREP -AC_CHECK_PROGS(FILE, [file false]) +AC_PATH_PROGS(FILE, [file false]) +AC_PATH_PROG(PERL, [perl]) dnl Check for PowerPC target CPU. HAVE_PPC=no @@ -146,6 +155,8 @@ if [[ "x$WANT_SDL" = "xyes" ]]; then LIBS="$LIBS $sdl_libs" else WANT_SDL=no + WANT_SDL_VIDEO=no + WANT_SDL_AUDIO=no fi SDL_SUPPORT=`echo "$SDL_SUPPORT" | sed -e "s/^ //"` else @@ -153,7 +164,7 @@ else fi dnl We need X11, if not using SDL. -if [[ "x$WANT_SDL" = "xno" ]]; then +if [[ "x$WANT_SDL_VIDEO" != "xyes" ]]; then AC_PATH_XTRA if [[ "x$no_x" = "xyes" ]]; then AC_MSG_ERROR([You need X11 to run SheepShaver.]) @@ -166,7 +177,7 @@ fi dnl We need pthreads on non-PowerPC systems. Try libpthread first, then libc_r (FreeBSD), then PTL. HAVE_PTHREADS=yes case $EMULATED_PPC:$target_os in -no:linux*) +no:linux*|no:netbsd*) dnl We do have our own pthread_cancel() implementation AC_DEFINE(HAVE_PTHREAD_CANCEL, 1, [Define if you have the pthread_cancel function.]) ;; @@ -195,6 +206,16 @@ no:linux*) ;; esac +dnl We use FBDev DGA if possible. +if [[ "x$WANT_FBDEV_DGA" = "xyes" ]]; then + AC_CHECK_HEADER(linux/fb.h, [ + AC_DEFINE(ENABLE_FBDEV_DGA, 1, [Define if using Linux fbdev extension.]) + ], [ + AC_MSG_WARN([Could not find Linux FBDev extension, ignoring --enable-fbdev-dga.]) + WANT_FBDEV_DGA=no + ]) +fi + dnl We use XFree86 DGA if possible. if [[ "x$WANT_XF86_DGA" = "xyes" ]]; then AC_CHECK_LIB(Xxf86dga, XF86DGAQueryExtension, [ @@ -219,7 +240,30 @@ fi dnl We use GTK+ if possible. UISRCS=../dummy/prefs_editor_dummy.cpp -if [[ "x$WANT_GTK" = "xyes" ]]; then +case "x$WANT_GTK" in +xgtk2*) + AM_PATH_GTK_2_0(1.3.15, [ + AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.]) + CFLAGS="$CFLAGS $GTK_CFLAGS" + CXXFLAGS="$CXXFLAGS $GTK_CFLAGS" + LIBS="$LIBS $GTK_LIBS" + UISRCS=prefs_editor_gtk.cpp + WANT_GTK=gtk2 + ], [ + case "x${WANT_GTK}x" in + *gtkx) + AC_MSG_WARN([Could not find GTK+ 2.0, trying with GTK+ 1.2.]) + WANT_GTK=gtk + ;; + *) + AC_MSG_WARN([Could not find GTK+, disabling user interface.]) + WANT_GTK=no + ;; + esac + ]) + ;; +esac +if [[ "x$WANT_GTK" = "xgtk" ]]; then AM_PATH_GTK(1.2.0, [ AC_DEFINE(ENABLE_GTK, 1, [Define if using GTK.]) CFLAGS="$CFLAGS $GTK_CFLAGS" @@ -303,6 +347,7 @@ 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) +AC_CHECK_FUNCS(exp2f log2f exp2 log2 trunc) dnl Darwin seems to define mach_task_self() instead of task_self(). AC_CHECK_FUNCS(mach_task_self task_self) @@ -314,7 +359,7 @@ no:linux*) ;; *:*) AC_SEARCH_LIBS(clock_gettime, [rt posix4]) - AC_CHECK_FUNCS(clock_gettime) + AC_CHECK_FUNCS(clock_gettime clock_nanosleep) ;; esac @@ -397,12 +442,17 @@ linux*) AUDIOSRC=audio_oss_esd.cpp SCSISRC=Linux/scsi_linux.cpp if [[ "x$EMULATED_PPC" = "xno" ]]; then - EXTRASYSSRCS="Linux/paranoia.cpp Linux/sheepthreads.c Linux/asm_linux.S" + EXTRASYSSRCS="Linux/paranoia.cpp Linux/sheepthreads.c ppc_asm.S" + fi + ;; +netbsd*) + if [[ "x$EMULATED_PPC" = "xno" ]]; then + EXTRASYSSRCS="NetBSD/paranoia.cpp NetBSD/sheepthreads.c ppc_asm.S" fi ;; darwin*) if [[ "x$EMULATED_PPC" = "xno" ]]; then - EXTRASYSSRCS="Darwin/paranoia.cpp Linux/asm_linux.S" + EXTRASYSSRCS="Darwin/paranoia.cpp ppc_asm.S" fi if [[ "x$ac_cv_framework_IOKit" = "xyes" ]]; then EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/sys_darwin.cpp" @@ -918,7 +968,10 @@ int main(void) memset(m, 0, ranges[[i]].size); vm_release(m, ranges[[i]].size); if (i == n_ranges - 1) { - printf("0x%08x\n", ofs); + if (sizeof(void *) == 8 && ofs > 0xffffffff) + printf("0x%lxul\n", ofs); + else + printf("0x%08x\n", ofs); return 0; } } @@ -980,7 +1033,7 @@ fi AC_MSG_RESULT($HAVE_ICC) dnl Determine the generated object format -AC_CACHE_CHECK([whether the compiler can generate ELF objects], +AC_CACHE_CHECK([the format of compiler generated objects], ac_cv_object_format, [ echo 'int i;' > conftest.$ac_ext ac_cv_object_format=no @@ -989,6 +1042,9 @@ AC_CACHE_CHECK([whether the compiler can *"ELF"*) ac_cv_object_format=elf ;; + *"Mach-O"*) + ac_cv_object_format=mach + ;; *) ac_cv_object_format=unknown ;; @@ -1021,6 +1077,9 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then i?86:elf) ac_cv_use_dyngen=yes ;; + powerpc:mach) + ac_cv_use_dyngen=yes + ;; *:*) ac_cv_use_dyngen=no ;; @@ -1046,25 +1105,19 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then case $host_cpu in i?86) DYNGEN_OP_FLAGS="-fomit-frame-pointer -mpreferred-stack-boundary=2" - if [[ "x$HAVE_GCC30" = "xyes" ]]; then - DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -falign-functions=0" - else - DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -malign-functions=0" - 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) + powerpc) + if [[ "x$ac_cv_object_format" = "xmach" ]]; then + DYNGEN_OP_FLAGS="-mdynamic-no-pic" + fi ;; esac - DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -finline-limit=10000" + if [[ "x$HAVE_GCC30" = "xyes" ]]; then + DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -falign-functions=0" + else + DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -malign-functions=0" + fi + DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -finline-limit=10000 -fno-exceptions -g0" if [[ "x$HAVE_GCC30" = "xyes" ]]; then DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -fno-reorder-blocks -fno-optimize-sibling-calls" fi @@ -1106,6 +1159,8 @@ if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; ac_cv_have_static_data_exec=no ) ]) +else + ac_cv_use_dyngen=no fi AC_TRANSLATE_DEFINE(HAVE_STATIC_DATA_EXEC, "$ac_cv_have_static_data_exec", [Define if your system marks static data pages as executable.]) @@ -1115,6 +1170,8 @@ if [[ "x$WANT_JIT" = "xyes" ]]; then fi dnl Generate Makefile. +AC_SUBST(PERL) +AC_SUBST(USE_DYNGEN, [$ac_cv_use_dyngen]) AC_SUBST(DYNGENSRCS) AC_SUBST(DYNGEN_CC) AC_SUBST(DYNGEN_OP_FLAGS) @@ -1132,6 +1189,7 @@ echo echo SheepShaver configuration summary: echo echo SDL support ...................... : $SDL_SUPPORT +echo FBDev DGA support ................ : $WANT_FBDEV_DGA echo XFree86 DGA support .............. : $WANT_XF86_DGA echo XFree86 VidMode support .......... : $WANT_XF86_VIDMODE echo Using PowerPC emulator ........... : $EMULATED_PPC