ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/cebix/SheepShaver/src/Unix/configure.in
(Generate patch)

Comparing SheepShaver/src/Unix/configure.in (file contents):
Revision 1.6 by gbeauche, 2003-09-07T14:21:20Z vs.
Revision 1.16 by gbeauche, 2004-01-06T13:24:56Z

# Line 5 | Line 5 | AC_INIT(main_unix.cpp)
5   AC_PREREQ(2.12)
6   AC_CONFIG_HEADER(config.h)
7  
8 + dnl Canonical system information.
9 + AC_CANONICAL_HOST
10 + AC_CANONICAL_TARGET
11 +
12   dnl Options.
13 + AC_ARG_ENABLE(jit,          [  --enable-jit            enable JIT compiler [default=yes]], [WANT_JIT=$enableval], [WANT_JIT=yes])
14   AC_ARG_ENABLE(ppc-emulator, [  --enable-ppc-emulator   use the selected PowerPC emulator [default=auto]], [WANT_EMULATED_PPC=$enableval], [WANT_EMULATED_PPC=auto])
15   AC_ARG_ENABLE(xf86-dga,     [  --enable-xf86-dga       use the XFree86 DGA extension [default=yes]], [WANT_XF86_DGA=$enableval], [WANT_XF86_DGA=yes])
16   AC_ARG_ENABLE(xf86-vidmode, [  --enable-xf86-vidmode   use the XFree86 VidMode extension [default=yes]], [WANT_XF86_VIDMODE=$enableval], [WANT_XF86_VIDMODE=yes])
# Line 43 | Line 48 | fi
48  
49   dnl We use mon if possible.
50   MONSRCS=
51 + case "x$WANT_MON" in
52 + x/* | x.*)
53 +  mon_srcdir=$WANT_MON
54 +  WANT_MON=yes
55 +  ;;
56 + xyes)
57 +  mon_srcdir=../../../mon/src
58 +  ;;
59 + esac
60   if [[ "x$WANT_MON" = "xyes" ]]; then
61    AC_MSG_CHECKING(for mon)
48  mon_srcdir=../../../mon/src
62    if grep mon_init $mon_srcdir/mon.h >/dev/null 2>/dev/null; then
63      AC_MSG_RESULT(yes)
64      AC_DEFINE(ENABLE_MON)
# Line 89 | Line 102 | if [[ "x$EMULATED_PPC" = "xyes" ]]; then
102      ])
103    ])
104    AC_CHECK_FUNCS(pthread_cancel)
105 +  AC_CHECK_FUNCS(pthread_mutexattr_setprotocol)
106 +  AC_CHECK_FUNCS(pthread_mutexattr_settype)
107 +  AC_CHECK_FUNCS(pthread_mutexattr_setpshared)
108 +  if [[ "x$HAVE_PTHREADS" = "xyes" ]]; then
109 +    AC_DEFINE(HAVE_PTHREADS, 1, [Define if pthreads are available.])
110 +  fi
111 + else
112 +  dnl We do have our own pthread_cancel() implementation
113 +  AC_DEFINE(HAVE_PTHREAD_CANCEL, 1, [Define if you have the pthread_cancel function.])
114   fi
115  
116   dnl If POSIX.4 semaphores are not available, we emulate them with pthread mutexes.
# Line 176 | Line 198 | AC_STRUCT_TM
198  
199   dnl Checks for library functions.
200   AC_CHECK_FUNCS(strdup cfmakeraw)
201 < AC_CHECK_FUNCS(nanosleep clock_gettime timer_create)
201 > AC_CHECK_FUNCS(nanosleep)
202   AC_CHECK_FUNCS(sigaction signal)
203   AC_CHECK_FUNCS(mmap mprotect munmap)
204   AC_CHECK_FUNCS(vm_allocate vm_deallocate vm_protect)
205 + dnl We need clock_gettime() for better performance but it may drag
206 + dnl libpthread in, which we don't want for native ppc mode
207 + if [[ "x$EMULATED_PPC" = "xyes" ]]; then
208 +  AC_SEARCH_LIBS(clock_gettime, [rt posix4])
209 +  AC_CHECK_FUNCS(clock_gettime)
210 + fi
211  
212   dnl Select system-dependant sources.
213   if [[ "x$EMULATED_PPC" = "xno" ]]; then
214    SYSSRCS="Linux/paranoia.cpp Linux/sheepthreads.c Linux/asm_linux.S"
187 else
188  SYSSRCS="../kpx_cpu/sheepshaver_glue.cpp \
189        ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp \
190        ../kpx_cpu/src/cpu/ppc/ppc-decode.cpp \
191        ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp"
192  CPPFLAGS="$CPPFLAGS -I../kpx_cpu -I../kpx_cpu/include -I../kpx_cpu/src -I../kpx_cpu/src/cpu"
215   fi
216   SYSSRCS="$SYSSRCS $SEMSRCS $UISRCS $MONSRCS"
217  
# Line 508 | Line 530 | else
530      WANT_VOSF=no
531   fi
532  
533 + dnl Check for GCC 2.7 or higher.
534 + HAVE_GCC27=no
535 + AC_MSG_CHECKING(for GCC 2.7 or higher)
536 + AC_EGREP_CPP(xyes,
537 + [#if __GNUC__ - 1 > 1 || __GNUC_MINOR__ - 1 > 5
538 +  xyes
539 + #endif
540 + ], [AC_MSG_RESULT(yes); HAVE_GCC27=yes], AC_MSG_RESULT(no))
541 +
542 + dnl Check for GCC 3.0 or higher.
543 + HAVE_GCC30=no
544 + AC_MSG_CHECKING(for GCC 3.0 or higher)
545 + AC_EGREP_CPP(xyes,
546 + [#if __GNUC__ >= 3
547 +  xyes
548 + #endif
549 + ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no))
550 +
551 + # Test if the compiler can generate ELF objects
552 + AC_CACHE_CHECK([whether the compiler can generate ELF objects],
553 +  ac_cv_elf_objects, [
554 +  echo 'int i;' > conftest.$ac_ext
555 +  ac_cv_elf_objects=no
556 +  if AC_TRY_EVAL(ac_compile); then
557 +    case `/usr/bin/file conftest.$ac_objext` in
558 +    *"ELF"*)
559 +      ac_cv_elf_objects=yes
560 +      ;;
561 +    esac
562 +  fi
563 +  rm -rf conftest*
564 + ])
565 + ELF_OBJECTS=$ac_cv_elf_objects
566 +
567 + dnl CPU emulator sources
568 + if [[ "x$EMULATED_PPC" = "xyes" ]]; then
569 +  CPUSRCS="\
570 +    ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp \
571 +    ../kpx_cpu/src/cpu/ppc/ppc-decode.cpp \
572 +    ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp \
573 +    ../kpx_cpu/src/cpu/ppc/ppc-translate.cpp"
574 +  CPPFLAGS="$CPPFLAGS -I../kpx_cpu/include -I../kpx_cpu/src"
575 +
576 +  dnl Enable JIT compiler, if possible
577 +  if [[ "x$WANT_JIT" = "xyes" ]]; then
578 +    AC_CACHE_CHECK([whether dyngen can be used],
579 +      ac_cv_use_dyngen, [
580 +      case $host_cpu:$ELF_OBJECTS in
581 +      powerpc:yes)
582 +        ac_cv_use_dyngen=yes
583 +        ;;
584 +      x86_64:yes)
585 +        ac_cv_use_dyngen=yes
586 +        ;;
587 +      i?86:yes)
588 +        ac_cv_use_dyngen=yes
589 +        ;;
590 +      *:*)
591 +        ac_cv_use_dyngen=no
592 +        ;;
593 +      esac
594 +    ])
595 +    if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then
596 +      case $host_cpu in
597 +      i?86)
598 +        DYNGEN_OP_FLAGS="-fomit-frame-pointer -mpreferred-stack-boundary=2"
599 +        if [[ "x$HAVE_GCC30" = "xyes" ]]; then
600 +          DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -falign-functions=0"
601 +        else
602 +          DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -malign-functions=0"
603 +        fi
604 +        ;;
605 +      esac
606 +      DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -finline-limit=10000"
607 +      if [[ "x$HAVE_GCC30" = "xyes" ]]; then
608 +        DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -fno-reorder-blocks -fno-optimize-sibling-calls"
609 +      fi
610 +    else
611 +      WANT_JIT=no
612 +    fi
613 +    AC_TRANSLATE_DEFINE(ENABLE_DYNGEN, $ac_cv_use_dyngen, [Define to enable dyngen engine])
614 +    if [[ "x$WANT_JIT" = "xyes" ]]; then
615 +      DYNGENSRCS="\
616 +        ../kpx_cpu/src/cpu/jit/dyngen.c \
617 +        ../kpx_cpu/src/cpu/jit/cxxdemangle.cpp"
618 +      CPUSRCS="\
619 +        ../kpx_cpu/src/cpu/jit/jit-cache.cpp \
620 +        ../kpx_cpu/src/cpu/jit/basic-dyngen.cpp \
621 +        ../kpx_cpu/src/cpu/ppc/ppc-dyngen.cpp $CPUSRCS"
622 +    fi
623 +  fi
624 +  CPUSRCS="$CPUSRCS ../kpx_cpu/sheepshaver_glue.cpp"
625 + else
626 +  WANT_JIT=no
627 + fi
628 + if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then
629 +  AC_CACHE_CHECK([whether static data regions are executable],
630 +    ac_cv_have_static_data_exec, [
631 +    AC_TRY_RUN([int main(void) {
632 + #if defined(__powerpc__)
633 +      static unsigned int p[8] = {0x4e800020,};
634 +      asm volatile("dcbst 0,%0" : : "r" (p) : "memory");
635 +      asm volatile("sync" : : : "memory");
636 +      asm volatile("icbi 0,%0" : : "r" (p) : "memory");
637 +      asm volatile("sync" : : : "memory");
638 +      asm volatile("isync" : : : "memory");
639 +      ((void (*)(void))p)();
640 +      return 0;
641 + #endif
642 +      return 1;
643 +    }], ac_cv_have_static_data_exec=yes, ac_cv_have_static_data_exec=no,
644 +    dnl When cross-compiling, do not assume anything.
645 +    ac_cv_have_static_data_exec=no
646 +    )
647 +  ])
648 + fi
649 + AC_TRANSLATE_DEFINE(HAVE_STATIC_DATA_EXEC, "$ac_cv_have_static_data_exec",
650 +  [Define if your system marks static data pages as executable.])
651 +
652 + if [[ "x$WANT_JIT" = "xyes" ]]; then
653 +  CPPFLAGS="$CPPFLAGS -DUSE_JIT"
654 + fi
655 +
656   dnl Generate Makefile.
657 + AC_SUBST(DYNGENSRCS)
658 + AC_SUBST(DYNGEN_OP_FLAGS)
659   AC_SUBST(SYSSRCS)
660 + AC_SUBST(CPUSRCS)
661   AC_OUTPUT(Makefile)
662  
663   dnl Print summary.
# Line 519 | Line 667 | echo
667   echo XFree86 DGA support .............. : $WANT_XF86_DGA
668   echo XFree86 VidMode support .......... : $WANT_XF86_VIDMODE
669   echo Using PowerPC emulator ........... : $EMULATED_PPC
670 + echo Enable JIT compiler .............. : $WANT_JIT
671   echo Enable video on SEGV signals ..... : $WANT_VOSF
672   echo ESD sound support ................ : $WANT_ESD
673   echo GTK user interface ............... : $WANT_GTK

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines