--- SheepShaver/src/Unix/configure.in 2004/01/18 22:12:24 1.17 +++ SheepShaver/src/Unix/configure.in 2004/02/20 17:21:08 1.19 @@ -18,6 +18,7 @@ AC_ARG_ENABLE(vosf, [ --enable- 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(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]) dnl Checks for programs. AC_PROG_CC @@ -182,6 +183,9 @@ 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_HEADER(mmintrin.h, [have_mmintrin_h=yes]) +AC_CHECK_HEADER(xmmintrin.h, [have_xmmintrin_h=yes]) +AC_CHECK_HEADER(emmintrin.h, [have_emmintrin_h=yes]) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_BIGENDIAN @@ -647,6 +651,14 @@ AC_EGREP_CPP(xyes, #endif ], [AC_MSG_RESULT(yes); HAVE_GCC30=yes], AC_MSG_RESULT(no)) +dnl Check for ICC. +AC_MSG_CHECKING(for ICC) +HAVE_ICC=no +if $CXX -V -v 2>&1 | grep -q "Intel(R) C++ Compiler"; then + HAVE_ICC=yes +fi +AC_MSG_RESULT($HAVE_ICC) + # Test if the compiler can generate ELF objects AC_CACHE_CHECK([whether the compiler can generate ELF objects], ac_cv_elf_objects, [ @@ -690,6 +702,22 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then ac_cv_use_dyngen=no ;; esac + dnl Check for a suitable synthetic opcodes compiler (icc is faking itself as gcc 3.2.2) + if [[ -z "$DYNGEN_CC" ]]; then + if [[ "x$HAVE_GCC27" = "xyes" -a "x$HAVE_ICC" = "xno" ]]; then + DYNGEN_CC=$CXX + else + for p in /usr/bin /usr/local/bin; do + gxx="$p/g++" + if [[ -x "$gxx" ]]; then + DYNGEN_CC="$gxx" + fi + done + fi + fi + if [[ -z "$DYNGEN_CC" ]] || ! { echo '#include ' | $DYNGEN_CC -xc++ -c -o /dev/null - >& /dev/null; }; then + ac_cv_use_dyngen=no + fi ]) if [[ "x$ac_cv_use_dyngen" = "xyes" ]]; then case $host_cpu in @@ -700,6 +728,15 @@ 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 ;; esac DYNGEN_OP_FLAGS="$DYNGEN_OP_FLAGS -finline-limit=10000" @@ -754,6 +791,7 @@ fi dnl Generate Makefile. AC_SUBST(DYNGENSRCS) +AC_SUBST(DYNGEN_CC) AC_SUBST(DYNGEN_OP_FLAGS) AC_SUBST(SYSSRCS) AC_SUBST(CPUSRCS)