--- gforth/configure.in 2000/08/08 12:37:05 1.71 +++ gforth/configure.in 2002/11/24 21:02:04 1.88 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -#Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. +#Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. #This file is part of Gforth. @@ -16,16 +16,18 @@ dnl Process this file with autoconf to p #You should have received a copy of the GNU General Public License #along with this program; if not, write to the Free Software -#Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. 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.9-20000726) +AM_INIT_AUTOMAKE(gforth,0.5.9-20020901) #snapshots have numbers major.minor.release-YYYYMMDD #note that lexicographic ordering bust be heeded. #I.e., 0.4.1-YYYYMMDD must not exist before 0.4.1! +UPDATED="1 September 2002" +AC_SUBST(UPDATED) AM_CONFIG_HEADER(engine/config.h) #AM_CYGWIN32 @@ -34,19 +36,7 @@ AC_ARG_ENABLE(force-reg, the machine.h file. This can cause a good speedup, but also incorrect code with some gcc versions on some processors (default disabled).], - AC_DEFINE(FORCE_REG)) -dnl this is not quite according to the autoconf manual, it causes a replacement -AC_ARG_ENABLE(direct-threaded, -[ --enable-direct-threaded Force direct threading. This may not work on - some machines and may cause slowdown on others. - (default processor-dependent)], -AC_DEFINE(DIRECT_THREADED)) -AC_ARG_ENABLE(indirect-threaded, -[ --enable-indirect-threaded Force indirect threading. This can cause a - slowdown on some machines. - (default processor-dependent)], -AC_DEFINE(INDIRECT_THREADED)) AC_ARG_WITH(debug, [ --with-debug specifies option -g to compile with debug info (default) @@ -55,6 +45,16 @@ AC_ARG_WITH(debug, debugging informations.], if test "$withval" = "yes"; then DEBUGFLAG=-g; fi) +PEEPHOLE="yes" +AC_ARG_WITH(peephole, +[ --with-peephole Enable peephole optimization (default) + --without-peephole disables peephole optimization. Creates smaller, + but slower images.], +PEEPHOLE="$withval") + +#currently we force direct threading this way. Eventually we should +#setup in the arch and engine files right + CFLAGS=$CFLAGS AC_PROG_CC @@ -139,7 +139,7 @@ if test "$ac_cv_int_type_double_cell" = echo "If you find this unacceptable, ask the GCC maintainers to provide proper" echo 'long longs for your machine (the GCC manual states that they \"are twice as' echo "long as \`long int\'\")." - LIBOBJS="$LIBOBJS dblsub.o" + AC_LIBOBJ(dblsub) AC_DEFINE(BUGGY_LONG_LONG) else AC_DEFINE_UNQUOTED(DOUBLE_CELL_TYPE,$ac_cv_int_type_double_cell) @@ -161,13 +161,9 @@ case "$host_cpu" in hppa*) machine=hppa $srcdir/mkinstalldirs arch/hppa - LIBOBJS="$LIBOBJS ../arch/hppa/cache.o" + AC_LIBOBJ(../arch/hppa/cache) LDFLAGS="$LDFLAGS -Xlinker -N" LIBS="$LIBS -L/lib/pa1.1/" - if test "${enable_direct_threaded+set}" = "" - then - AC_DEFINE(DIRECT_THREADED) - fi ;; sparc*) machine=sparc @@ -175,55 +171,27 @@ case "$host_cpu" in i386) machine=386 CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem" - 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) + i*86) machine=386 CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem" CFLAGS_1="$CFLAGS" - CFLAGS="$CFLAGS -mpentium" + CFLAGS="$CFLAGS -march=pentium" AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486") - if test "${enable_direct_threaded+set}" = "" \ - -a "${enable_indirect_threaded+set}" = "" - then - echo "Using indirect threaded code on Pentium/K5/K6" - AC_DEFINE(INDIRECT_THREADED) - fi ;; - i686) - machine=386 - CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem" - CFLAGS_1="$CFLAGS" - CFLAGS="$CFLAGS -mpentium" - AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486") - if test "${enable_direct_threaded+set}" = "" \ - -a "${enable_indirect_threaded+set}" = "" - then - echo "Using direct threaded code on Athlon/PPro/Pentium II/Pentium III" - AC_DEFINE(DIRECT_THREADED) - fi + ia64*) + machine=ia64 ;; m68k) machine=m68k CFLAGS="$CFLAGS -fomit-frame-pointer" if test "$host_os" = "nextstep3" then - LIBOBJS="$LIBOBJS termios.o" + AC_LIBOBJ(termios) fi ;; mips*) @@ -235,6 +203,8 @@ case "$host_cpu" in AC_TRY_LINK(,,ac_link_mips_t=yes,ac_link_mips_t=no) test $ac_link_mips_t = yes||LDFLAGS=$OLDLDFLAGS AC_MSG_RESULT($ac_link_mips_t) + fixme #dynamically generated code should be in the same 256MB + # region as the text segment; no indirect threading necessary test $ac_link_mips_t = yes||(echo cannot link text and data into same 256M region, using indirect threading; AC_DEFINE(INDIRECT_THREADED)) AC_MSG_CHECKING([whether the linker accepts -D]) OLDLDFLAGS=$LDFLAGS @@ -251,22 +221,9 @@ case "$host_cpu" in power*|rs6000) machine=power $srcdir/mkinstalldirs arch/power - AC_CHECK_FUNC(_sync_cache_range,true,LIBOBJS="$LIBOBJS ../arch/power/_sync_cache_range.o") - #link text segment into first 32MB - AC_MSG_CHECKING([whether the linker accepts --script=arch/power/elf32ppc.x]) - OLDLDFLAGS=$LDFLAGS - #the -L../$srcdir helps when $srcdir is relative - LDFLAGS="$LDFLAGS -L$srcdir -L../$srcdir -Xlinker --script=$srcdir/arch/power/elf32ppc.x" - AC_TRY_LINK(,,ac_link_script=yes,ac_link_script=no) - test $ac_link_script = yes||LDFLAGS=$OLDLDFLAGS - AC_MSG_RESULT($ac_link_script) - AC_MSG_CHECKING([whether the code is in the first 32MB]) - AC_TRY_RUN([main(){label: exit(((unsigned long)&&label)>32000000UL);}],ac_code_under_32=yes,ac_code_under_32=no,ac_code_under_32=no) - AC_MSG_RESULT($ac_code_under_32) - test $ac_code_under_32 = yes||(AC_MSG_WARN([Using indirect threading]); AC_DEFINE(INDIRECT_THREADED)) + AC_CHECK_FUNC(_sync_cache_range,true,AC_LIBOBJ(../arch/power/_sync_cache_range)) ;; *) - echo "No direct threading support for $host_cpu, using indirect threading." echo "Using a generic machine description." 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." @@ -276,6 +233,12 @@ esac AC_SUBST(host) AC_SUBST(ENGINE_FLAGS) +# Try if GCC understands -fno-cross-jump + +CFLAGS_1="$CFLAGS" +CFLAGS="$CFLAGS -fno-cross-jump" +AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1") + AC_CHECK_PROG(asm_fs,asm.fs,arch/$machine/asm.fs,,$srcdir/arch/$machine) AC_SUBST(asm_fs) @@ -285,18 +248,24 @@ AC_SUBST(disasm_fs) case "$host_os" in *win32) EXE=".exe" + DIRSEP="\\" ;; *) EXE="" + DIRSEP="/" ;; esac AC_SUBST(EXE) +AC_SUBST(DIRSEP) +AC_DEFINE_UNQUOTED(DIRSEP,'$DIRSEP') dnl Now a little support for DOS/DJGCC AC_SUBST(GFORTH_EXE) GFORTH_EXE="" AC_SUBST(GFORTHFAST_EXE) GFORTHFAST_EXE="" +AC_SUBST(GFORTHITC_EXE) +GFORTHITC_EXE="" AC_SUBST(GFORTHDITC_EXE) GFORTHDITC_EXE="" @@ -306,6 +275,15 @@ AC_DEFINE_UNQUOTED(PATHSEP,'$PATHSEP') AC_SUBST(FORTHSIZES) +if test "$PEEPHOLE" = "yes" +then + PEEPHOLEFLAG="true" + AC_DEFINE(HAS_PEEPHOLE) +else + PEEPHOLEFLAG="false" +fi +AC_SUBST(PEEPHOLEFLAG) + dnl copy commands for systems that don't have links AC_SUBST(LINK_KERNL) LINK_KERNL="" @@ -345,23 +323,24 @@ fi AC_REPLACE_FUNCS(memmove strtoul pow10 strerror strsignal atanh) AC_CHECK_FUNCS(dlopen sys_siglist getrusage) AC_DECL_SYS_SIGLIST -AC_CHECK_FUNC(getopt_long,true,LIBOBJS="$LIBOBJS getopt.o getopt1.o") +AC_CHECK_FUNC(getopt_long,true,AC_LIBOBJ(getopt.$ac_objext getopt1)) 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 fnmatch.h) AC_FUNC_FNMATCH -test $ac_cv_func_fnmatch_works = yes || LIBOBJS="$LIBOBJS fnmatch.o" +test $ac_cv_func_fnmatch_works = yes || AC_LIBOBJ(fnmatch) AC_CHECK_FUNCS(mmap sysconf getpagesize) AM_PATH_LISPDIR kernel_fi=kernl${wordsize}${bytesex}.fi AC_SUBST(kernel_fi) -dnl replace srource directory by absolute value -if test $srcdir = "."; then srcdir=`pwd` -fi +#this breaks bindists +#dnl replace srource directory by absolute value +#if test $srcdir = "."; then srcdir=`pwd` +#fi AC_SUBST(machine) dnl AC_LINK_FILES(arch/$machine,arch/machine) #no longer needed @@ -369,9 +348,12 @@ AC_OUTPUT([ Makefile Makedist gforthmi +vmgen +machpc.fs engine/Makefile doc/version.texi ], echo timestamp > stamp-h chmod +x gforthmi +chmod +x vmgen test -d kernel||mkdir kernel)