--- gforth/configure.in 1997/03/25 23:27:12 1.30 +++ gforth/configure.in 1998/12/08 22:02:38 1.41 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -#Copyright (C) 1995,1996 Free Software Foundation, Inc. +#Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. #This file is part of Gforth. @@ -18,8 +18,13 @@ dnl Process this file with autoconf to p #along with this program; if not, write to the Free Software #Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -AC_INIT(engine.c) -AC_CONFIG_HEADER(config.h) +AC_INIT(engine/engine.c) + +dnl We use some automake macros here, +dnl but don't use automake for creating Makefile.in +AM_INIT_AUTOMAKE(gforth,0.4.0) +AM_CONFIG_HEADER(engine/config.h) +AM_CYGWIN32 AC_ARG_ENABLE(force-reg, [ --enable-force-reg Use explicit register declarations if they appear in @@ -64,7 +69,6 @@ EOF fi AC_SUBST(CC) -AC_SUBST(GCCLDFLAGS) AC_SUBST(DEBUGFLAG) dnl the following macro produces a warning with autoconf-2.1 @@ -81,6 +85,7 @@ case "$ac_cv_sizeof_char_p" in ;; esac +AC_CHECK_SIZEOF(char) AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) @@ -88,11 +93,14 @@ AC_CHECK_SIZEOF(long long) ac_cv_int_type_cell=none case "$ac_cv_sizeof_char_p" in + $ac_cv_sizeof_int) + ac_cv_int_type_cell=int + ;; $ac_cv_sizeof_short) ac_cv_int_type_cell=short ;; - $ac_cv_sizeof_int) - ac_cv_int_type_cell=int + $ac_cv_sizeof_char) + ac_cv_int_type_cell=char ;; $ac_cv_sizeof_long) ac_cv_int_type_cell=long @@ -139,31 +147,72 @@ fi AC_CANONICAL_HOST case "$host_cpu" in hppa*) - mach_h=hppa - LIBOBJS="cache.o" + machine=hppa + LIBOBJS="$LIBOBJS ../arch/hppa/cache.o" LDFLAGS="-Xlinker -N" LIBS="-L/lib/pa1.1/" + if test "${enable_direct_threaded+set}" = "" + then + AC_DEFINE(DIRECT_THREADED) + fi ;; sparc*) - mach_h=sparc + machine=sparc ;; - i386|i486|i586) - mach_h=386 + i386) + machine=386 CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem" - #!! direct/indirect threading switch - #!! -m486 flag + if test "${enable_direct_threaded+set}" = "" \ + -a "${enable_indirect_threaded+set}" = "" + then + echo "Using direct threaded code on 386" + AC_DEFINE(DIRECT_THREADED) + fi + ;; + i486) + machine=386 + CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem -m486" + if test "${enable_direct_threaded+set}" = "" \ + -a "${enable_indirect_threaded+set}" = "" + then + echo "Using direct threaded code on 486" + AC_DEFINE(DIRECT_THREADED) + fi + ;; + i586|i686) + machine=386 + CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem -m486" + if test "${enable_direct_threaded+set}" = "" \ + -a "${enable_indirect_threaded+set}" = "" + then + echo "Using indirect threaded code on Pentium and up" + AC_DEFINE(INDIRECT_THREADED) + fi ;; m68k) - mach_h=m68k - CFLAGS="$CFLAGS -fomit-frame-pointer -traditional-cpp" + machine=m68k + CFLAGS="$CFLAGS -fomit-frame-pointer" + if test "$host_os" = "nextstep3" + then + LIBOBJS="$LIBOBJS termios.o" + fi ;; mips*) - mach_h=mips + machine=mips #link text and data segment into the same 256M region! - GCCLDFLAGS="-Xlinker -T -Xlinker 10000000 -Xlinker -D -Xlinker 10400000" + AC_MSG_CHECKING([whether the linker accepts -D]) + OLDLDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Xlinker -T -Xlinker 10000000 -Xlinker -D -Xlinker 10400000" + AC_TRY_LINK(,,ac_link_mips_d=yes,ac_link_mips_d=no) + test $ac_link_mips_d = yes||LDFLAGS="$OLDLDFLAGS -Xlinker -T -Xlinker 10000000" + AC_MSG_RESULT($ac_link_mips_d) ;; alpha*) - mach_h=alpha + machine=alpha + ;; + power*) + machine=power + AC_CHECK_FUNC(_sync_cache_range,true,LIBOBJS="$LIBOBJS ../arch/power/_sync_cache_range.o") ;; *) echo "No direct threading support for $host_cpu, using indirect threading." @@ -171,11 +220,21 @@ case "$host_cpu" in echo "I'll assume that C floats and doubles are represented by IEEE single and" echo "double numbers. If this is not so, SF@ etc. will not work correctly." echo "FLUSH-ICACHE will do nothing, so END-CODE may not work properly!" - mach_h=32bit + machine=generic esac AC_SUBST(host) AC_SUBST(ENGINE_FLAGS) +case "$host_os" in + *win32) + EXE=".exe" + ;; + *) + EXE="" + ;; +esac +AC_SUBST(EXE) + dnl Now a little support for DOS/DJGCC AC_SUBST(GFORTH_EXE) GFORTH_EXE="" @@ -213,28 +272,37 @@ fi dnl Checks for programs. AC_PROG_LN_S -AC_PROG_INSTALL +dnl AM_PROG_INSTALL #performed by AM_INIT_AUTOMAKE dnl Checks for library functions dnl This check is just for making later checks link with libm. dnl using sin here is no good idea since it is built-into gcc and typechecked AC_CHECK_LIB(m,asin) -AC_FUNC_MEMCMP +AC_CHECK_FUNCS(dlopen) +AC_CHECK_LIB(dl,dlopen) +AC_CHECK_LIB(kernel32,GetModuleHandle) +if test "$host_os" != "nextstep3" +then + AC_FUNC_MEMCMP +fi AC_REPLACE_FUNCS(memmove strtoul pow10 strerror strsignal atanh) AC_CHECK_FUNCS(sys_siglist) AC_DECL_SYS_SIGLIST -AC_CHECK_FUNC(getopt_long,getopt_long="",getopt_long="getopt.o getopt1.o") -AC_SUBST(getopt_long) +AC_CHECK_FUNC(getopt_long,true,LIBOBJS="$LIBOBJS getopt.o getopt1.o") AC_CHECK_FUNCS(rint expm1 log1p) AC_REPLACE_FUNCS(ecvt) dnl No check for select, because our replacement is no good under dnl anything but DOS AC_CHECK_HEADERS(sys/mman.h) AC_CHECK_FUNCS(mmap sysconf getpagesize) +AM_PATH_LISPDIR kernel_fi=kernl${wordsize}${bytesex}.fi AC_SUBST(kernel_fi) -AC_LINK_FILES(${mach_h}.h $kernel_fi,machine.h kernel.fi) -AC_OUTPUT(Makefile,echo timestamp > stamp-h) - +AC_SUBST(machine) +dnl AC_LINK_FILES(arch/$machine,arch/machine) #no longer needed +AC_OUTPUT([ +Makefile +engine/Makefile +doc/version.texi ],echo timestamp > stamp-h)