Cygwin support. Only generate NATMEM_OFFSET definitions in Direct Addressing

mode. Merge sshpty.c support detection code from Basilisk II.
This commit is contained in:
gbeauche 2004-11-22 22:51:54 +00:00
parent aa6e44d380
commit a9928fe707

View File

@ -48,6 +48,7 @@ AC_PROG_CXX
AC_PROG_MAKE_SET AC_PROG_MAKE_SET
AC_PROG_INSTALL AC_PROG_INSTALL
AC_PROG_EGREP AC_PROG_EGREP
AC_CHECK_PROGS(FILE, [file false])
dnl Check for PowerPC target CPU. dnl Check for PowerPC target CPU.
HAVE_PPC=no HAVE_PPC=no
@ -124,12 +125,21 @@ fi
if [[ "x$WANT_SDL" = "xyes" ]]; then if [[ "x$WANT_SDL" = "xyes" ]]; then
AC_PATH_PROG(sdl_config, "sdl-config") AC_PATH_PROG(sdl_config, "sdl-config")
if [[ -n "$sdl_config" ]]; then if [[ -n "$sdl_config" ]]; then
sdl_cflags=`$sdl_config --cflags` case $target_os in
if [[ "x$WANT_SDL_STATIC" = "xyes" ]]; then # Special treatment for Cygwin so that we can still use the POSIX layer
sdl_libs=`$sdl_config --static-libs` *cygwin*)
else sdl_cflags="-I`$sdl_config --prefix`/include/SDL"
sdl_libs=`$sdl_config --libs` sdl_libs="-L`$sdl_config --exec-prefix`/lib -lSDL"
fi ;;
*)
sdl_cflags=`$sdl_config --cflags`
if [[ "x$WANT_SDL_STATIC" = "xyes" ]]; then
sdl_libs=`$sdl_config --static-libs`
else
sdl_libs=`$sdl_config --libs`
fi
;;
esac
CFLAGS="$CFLAGS $sdl_cflags" CFLAGS="$CFLAGS $sdl_cflags"
CXXFLAGS="$CXXFLAGS $sdl_cflags" CXXFLAGS="$CXXFLAGS $sdl_cflags"
LIBS="$LIBS $sdl_libs" LIBS="$LIBS $sdl_libs"
@ -240,6 +250,7 @@ AC_SYS_LARGEFILE
dnl Checks for header files. dnl Checks for header files.
AC_HEADER_STDC AC_HEADER_STDC
AC_HEADER_SYS_WAIT AC_HEADER_SYS_WAIT
AC_CHECK_HEADERS(malloc.h)
AC_CHECK_HEADERS(mach/vm_map.h mach/mach_init.h sys/mman.h) AC_CHECK_HEADERS(mach/vm_map.h mach/mach_init.h sys/mman.h)
AC_CHECK_HEADERS(sys/time.h sys/times.h sys/socket.h) AC_CHECK_HEADERS(sys/time.h sys/times.h sys/socket.h)
AC_CHECK_HEADERS(unistd.h fcntl.h byteswap.h dirent.h) AC_CHECK_HEADERS(unistd.h fcntl.h byteswap.h dirent.h)
@ -305,6 +316,50 @@ no:linux*)
;; ;;
esac esac
dnl Check for headers and functions related to pty support (sshpty.c)
dnl From openssh-3.2.2p1 configure.ac
AC_CHECK_HEADERS(strings.h login.h sys/bsdtty.h sys/stat.h util.h pty.h)
AC_CHECK_FUNCS(_getpty vhangup strlcpy)
case "$host" in
*-*-hpux10.26)
disable_ptmx_check=yes
;;
*-*-linux*)
no_dev_ptmx=1
;;
mips-sony-bsd|mips-sony-newsos4)
AC_DEFINE(HAVE_NEWS4, 1, [Define if you are on NEWS-OS (additions from openssh-3.2.2p1, for sshpty.c).])
;;
*-*-sco3.2v4*)
no_dev_ptmx=1
;;
*-*-sco3.2v5*)
no_dev_ptmx=1
;;
*-*-cygwin*)
no_dev_ptmx=1
;;
esac
if test -z "$no_dev_ptmx" ; then
if test "x$disable_ptmx_check" != "xyes" ; then
AC_CHECK_FILE([/dev/ptmx],
[
AC_DEFINE_UNQUOTED(HAVE_DEV_PTMX, 1, [Define if you have /dev/ptmx.])
have_dev_ptmx=1
]
)
fi
fi
AC_CHECK_FILE([/dev/ptc],
[
AC_DEFINE_UNQUOTED(HAVE_DEV_PTS_AND_PTC, 1, [Define if you have /dev/ptc.])
have_dev_ptc=1
]
)
dnl (end of code from openssh-3.2.2p1 configure.ac)
dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES) dnl AC_CHECK_FRAMEWORK($1=NAME, $2=INCLUDES)
AC_DEFUN(AC_CHECK_FRAMEWORK, [ AC_DEFUN(AC_CHECK_FRAMEWORK, [
AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl AS_VAR_PUSHDEF([ac_Framework], [ac_cv_framework_$1])dnl
@ -354,6 +409,9 @@ darwin*)
EXTFSSRC=../MacOSX/extfs_macosx.mm EXTFSSRC=../MacOSX/extfs_macosx.mm
fi fi
;; ;;
cygwin*)
SERIALSRC="../dummy/serial_dummy.cpp"
;;
esac esac
dnl SDL overrides dnl SDL overrides
@ -367,7 +425,14 @@ if [[ "x$WANT_SDL_VIDEO" = "xyes" ]]; then
if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then if [[ "x$ac_cv_framework_Carbon" = "xyes" ]]; then
EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/clip_macosx.cpp" EXTRASYSSRCS="$EXTRASYSSRCS ../MacOSX/clip_macosx.cpp"
else else
EXTRASYSSRCS="$EXTRASYSSRCS ../dummy/clip_dummy.cpp" case "$target_os" in
cygwin*)
EXTRASYSSRCS="$EXTRASYSSRCS ../Windows/clip_windows.cpp"
;;
*)
EXTRASYSSRCS="$EXTRASYSSRCS ../dummy/clip_dummy.cpp"
;;
esac
fi fi
else else
VIDEOSRCS="video_x.cpp" VIDEOSRCS="video_x.cpp"
@ -683,6 +748,30 @@ fi
AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions", AC_TRANSLATE_DEFINE(HAVE_MACH_EXCEPTIONS, "$ac_cv_have_mach_exceptions",
[Define if your system supports Mach exceptions.]) [Define if your system supports Mach exceptions.])
dnl Check if Windows exceptions are supported.
AC_CACHE_CHECK([whether your system supports Windows exceptions],
ac_cv_have_win32_exceptions, [
AC_LANG_SAVE
AC_LANG_CPLUSPLUS
AC_TRY_RUN([
#define HAVE_WIN32_EXCEPTIONS 1
#define CONFIGURE_TEST_SIGSEGV_RECOVERY
#include "vm_alloc.cpp"
#include "sigsegv.cpp"
], [
sigsegv_recovery=win32
ac_cv_have_win32_exceptions=yes
],
ac_cv_have_win32_exceptions=no,
dnl When cross-compiling, do not assume anything.
ac_cv_have_win32_exceptions=no
)
AC_LANG_RESTORE
]
)
AC_TRANSLATE_DEFINE(HAVE_WIN32_EXCEPTIONS, "$ac_cv_have_win32_exceptions",
[Define if your system supports Windows exceptions.])
dnl Otherwise, check if extended signals are supported. dnl Otherwise, check if extended signals are supported.
if [[ -z "$sigsegv_recovery" ]]; then if [[ -z "$sigsegv_recovery" ]]; then
AC_CACHE_CHECK([whether your system supports extended signal handlers], AC_CACHE_CHECK([whether your system supports extended signal handlers],
@ -771,6 +860,12 @@ fi
dnl Check addressing mode to use dnl Check addressing mode to use
AC_MSG_CHECKING([for addressing mode to use]) AC_MSG_CHECKING([for addressing mode to use])
case "$os_target" in
cygwin*)
WANT_ADDRESSING_MODE="direct,cygwin-hack"
NATMEM_OFFSET=
;;
esac
if [[ "$EMULATED_PPC" != "yes" ]]; then if [[ "$EMULATED_PPC" != "yes" ]]; then
if [[ "$WANT_ADDRESSING_MODE" != "real" ]]; then if [[ "$WANT_ADDRESSING_MODE" != "real" ]]; then
AC_MSG_WARN([Running in native PowerPC mode, force use of Real Addressing.]) AC_MSG_WARN([Running in native PowerPC mode, force use of Real Addressing.])
@ -833,23 +928,22 @@ EOF
doit='$CXX conftest.$ac_ext -o conftest.$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS $LIBS $NATMEM_OFFSET_DEF >& AS_MESSAGE_LOG_FD' doit='$CXX conftest.$ac_ext -o conftest.$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS $LIBS $NATMEM_OFFSET_DEF >& AS_MESSAGE_LOG_FD'
if AC_TRY_EVAL(doit); then if AC_TRY_EVAL(doit); then
NATMEM_OFFSET=`./conftest.$ac_exeext` NATMEM_OFFSET=`./conftest.$ac_exeext`
if [[ -z "$NATMEM_OFFSET" ]]; then else
AC_MSG_ERROR([could not determine a sensible NATMEM_OFFSET value]) NATMEM_OFFSET=
else
WANT_ADDRESSING_MODE="direct,$NATMEM_OFFSET"
fi
fi fi
rm -f conftest* rm -f conftest*
AC_LANG_RESTORE AC_LANG_RESTORE
if [[ -z "$NATMEM_OFFSET" ]]; then
AC_MSG_ERROR([could not determine a sensible NATMEM_OFFSET value])
else
WANT_ADDRESSING_MODE="direct,$NATMEM_OFFSET"
AC_DEFINE_UNQUOTED(NATMEM_OFFSET, $NATMEM_OFFSET,
[Define constant offset for Mac address translation])
fi
fi fi
AC_MSG_RESULT($WANT_ADDRESSING_MODE) AC_MSG_RESULT($WANT_ADDRESSING_MODE)
if [[ -z "$NATMEM_OFFSET" ]]; then
NATMEM_OFFSET=0
fi
AC_DEFINE_UNQUOTED(NATMEM_OFFSET, $NATMEM_OFFSET,
[Define constant offset for Mac address translation])
dnl Platform specific binary postprocessor dnl Platform specific binary postprocessor
AC_PATH_PROG(BLESS, "true") AC_PATH_PROG(BLESS, "true")
if [[ "x$ac_cv_pagezero_hack" = "xyes" ]]; then if [[ "x$ac_cv_pagezero_hack" = "xyes" ]]; then
@ -883,25 +977,28 @@ if $CXX -V -v 2>&1 | grep -q "Intel(R) C++ Compiler"; then
fi fi
AC_MSG_RESULT($HAVE_ICC) AC_MSG_RESULT($HAVE_ICC)
dnl Test if the compiler can generate ELF objects dnl Determine the generated object format
AC_CACHE_CHECK([whether the compiler can generate ELF objects], AC_CACHE_CHECK([whether the compiler can generate ELF objects],
ac_cv_elf_objects, [ ac_cv_object_format, [
echo 'int i;' > conftest.$ac_ext echo 'int i;' > conftest.$ac_ext
ac_cv_elf_objects=no ac_cv_object_format=no
if AC_TRY_EVAL(ac_compile); then if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.$ac_objext` in case `/usr/bin/file conftest.$ac_objext` in
*"ELF"*) *"ELF"*)
ac_cv_elf_objects=yes ac_cv_object_format=elf
;;
*)
ac_cv_object_format=unknown
;; ;;
esac esac
fi fi
rm -rf conftest* rm -rf conftest*
]) ])
ELF_OBJECTS=$ac_cv_elf_objects
dnl CPU emulator sources dnl CPU emulator sources
if [[ "x$EMULATED_PPC" = "xyes" ]]; then if [[ "x$EMULATED_PPC" = "xyes" ]]; then
CPUSRCS="\ CPUSRCS="\
../kpx_cpu/src/mathlib/ieeefp.cpp \
../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp \ ../kpx_cpu/src/cpu/ppc/ppc-cpu.cpp \
../kpx_cpu/src/cpu/ppc/ppc-decode.cpp \ ../kpx_cpu/src/cpu/ppc/ppc-decode.cpp \
../kpx_cpu/src/cpu/ppc/ppc-execute.cpp \ ../kpx_cpu/src/cpu/ppc/ppc-execute.cpp \
@ -912,14 +1009,14 @@ if [[ "x$EMULATED_PPC" = "xyes" ]]; then
if [[ "x$WANT_JIT" = "xyes" ]]; then if [[ "x$WANT_JIT" = "xyes" ]]; then
AC_CACHE_CHECK([whether dyngen can be used], AC_CACHE_CHECK([whether dyngen can be used],
ac_cv_use_dyngen, [ ac_cv_use_dyngen, [
case $host_cpu:$ELF_OBJECTS in case $host_cpu:$ac_cv_object_format in
powerpc:yes) powerpc:elf)
ac_cv_use_dyngen=yes ac_cv_use_dyngen=yes
;; ;;
x86_64:yes) x86_64:elf)
ac_cv_use_dyngen=yes ac_cv_use_dyngen=yes
;; ;;
i?86:yes) i?86:elf)
ac_cv_use_dyngen=yes ac_cv_use_dyngen=yes
;; ;;
*:*) *:*)