--- gforth/configure.in 2005/01/23 09:55:12 1.147 +++ gforth/configure.in 2007/01/05 13:36:06 1.165 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -#Copyright (C) 1995,1996,1997,1998,2000,2003,2004 Free Software Foundation, Inc. +#Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006 Free Software Foundation, Inc. #This file is part of Gforth. @@ -21,12 +21,12 @@ dnl Process this file with autoconf to p dnl We use some automake macros here, dnl but don't use automake for creating Makefile.in -AC_INIT([gforth],[0.6.2-20030910],[https://savannah.gnu.org/bugs/?func=addbug&group=gforth]) +AC_INIT([gforth],[0.6.2-20060527],[https://savannah.gnu.org/bugs/?func=addbug&group=gforth]) AC_PREREQ(2.54) #snapshots have numbers major.minor.release-YYYYMMDD #note that lexicographic ordering must be heeded. #I.e., 0.4.1-YYYYMMDD must not exist before 0.4.1! -UPDATED="September 10, 2003" +UPDATED="April 09, 2006" AC_SUBST(UPDATED) AC_CONFIG_HEADERS(engine/config.h) @@ -34,19 +34,24 @@ AC_CONFIG_HEADERS(engine/config.h) test "$CFLAGS" || CFLAGS=-O2 AC_ARG_ENABLE(force-reg, -[ --enable-force-reg Use explicit register declarations if they appear in + AC_HELP_STRING([--enable-force-reg], + [ Use explicit register declarations if they appear in 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,,[Define if you want to use explicit register declarations for better performance or for more convenient CODE words (does not work with all GCC versions on all machines)])) + some processors (default disabled).]), + ,enable_force_reg=no) +test "$enable_force_reg" = "no"|| + AC_DEFINE(FORCE_REG,,[Define if you want to use explicit register declarations for better performance or for more convenient CODE words (does not work with all GCC versions on all machines)]) + AC_ARG_ENABLE(force-ll, -[ --enable-force-ll Use explicit long long declarations if they appear in + AC_HELP_STRING([--enable-force-ll], + [ Use explicit long long declarations if they appear in 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_LL,,[Define if you want to use explicit long long declarations for better performance (does not work with all GCC versions on all machines)])) -AC_SUBST(PROFEXES) -AC_SUBST(PROFOBJS) + some processors (default disabled).]), + ,enable_force_ll=no) +test "$enable_force_ll" = "no"|| + AC_DEFINE(FORCE_LL,,[Define if you want to use explicit long long declarations for better performance (does not work with all GCC versions on all machines)]) AC_ARG_ENABLE(gcc-pr15242-workaround, AC_HELP_STRING([--disable-gcc-pr15242-workaround],[Disables @@ -59,10 +64,24 @@ test "$enable_gcc_pr15242_workaround" = AC_DEFINE(GCC_PR15242_WORKAROUND,,[Define if you want to get dynamic code generation on gccs affected by PR15242]) +AC_ARG_ENABLE(force-cdiv, + AC_HELP_STRING([--enable-force-cdiv], + [ Use the native C division - symmetric - instead of + floored division (default disabled).]), + ,enable_force_cdiv=no) +test "$enable_force_cdiv" = "no"|| + AC_DEFINE(FORCE_CDIV,,[Define if you want to use explicit symmetric division for better performance]) + +AC_SUBST(PROFEXES) +AC_SUBST(PROFOBJS) AC_ARG_ENABLE(prof, -[ --enable-prof Build gforth-prof, which outputs frequently occuring - sequences of primitives.], -PROFEXES="gforth-prof\$(EXE)"; PROFOBJS="engine-prof.o main-prof.o profile.o") + AC_HELP_STRING([--enable-prof], + [ Build gforth-prof, which outputs frequently occuring + sequences of primitives.]), + ,enable_prof=no) +if test "$enable_prof" = "no"; then + PROFEXES="gforth-prof\$(EXE)"; PROFOBJS="engine-prof.o main-prof.o profile.o" +fi AC_ARG_WITH(debug, [ --with-debug specifies option -g to compile with debug info @@ -81,6 +100,7 @@ dnl PEEPHOLE="$withval") #variables mentioned in INSTALL AC_ARG_VAR(CC, [The C compiler (must support GNU C 2.x); gcc-2.95 recommended.]) AC_ARG_VAR(FORTHSIZES, [Gforth command line options for the default stack and dictionary sizes (see INSTALL).]) +AC_ARG_VAR(STACK_CACHE_DEFAULT_FAST, [number of registers in the default stack cache state for gforth-fast and gforth-native (default 1).]) AC_ARG_VAR(ac_cv_sizeof_char_p, [sizeof(char *)]) AC_ARG_VAR(ac_cv_sizeof_char, [sizeof(char)]) AC_ARG_VAR(ac_cv_sizeof_short, [sizeof(short)]) @@ -121,7 +141,7 @@ AC_SUBST(CC) AC_SUBST(DEBUGFLAG) AC_MSG_CHECKING(make type) -make_type=`make -v 2>&1|grep 'ake version'|sed 's/ version .*//'` +make_type=`make -v 2>&1|grep 'ake'|sed 's/ake .*/ake/'` GNUMAKE='#' test "$make_type" = "GNU Make" && GNUMAKE='' @@ -225,7 +245,9 @@ case "$host_cpu" in $srcdir/mkinstalldirs arch/power AC_CHECK_FUNC(_sync_cache_range,[true],[AC_LIBOBJ(../arch/power/_sync_cache_range)]) #long long is broken on (at least) gcc-2.95.* for PPC - test x$ac_cv_sizeof_long_long = x && ac_cv_sizeof_long_long=0 + test x$ac_cv_sizeof_long_long = x && + ($CC -v 2>&1 |grep -q 'gcc version 2.95') && + ac_cv_sizeof_long_long=0 ;; *) AC_MSG_WARN([Using a generic machine description]) @@ -240,6 +262,10 @@ case "$host_cpu" in esac AC_SUBST(host) +test x$STACK_CACHE_DEFAULT_FAST = x && STACK_CACHE_DEFAULT_FAST=1 +AC_DEFINE_UNQUOTED(STACK_CACHE_DEFAULT_FAST, $STACK_CACHE_DEFAULT_FAST, + [number of registers in the default stack cache state for gforth-fast and gforth-native]) + if test "${enable_force_ll+set}" = set; then ac_includes_default="$ac_includes_default #include \"arch/generic/128bit.h\"" @@ -296,6 +322,62 @@ esac AC_MSG_RESULT($ac_cv_int_type_cell) AC_DEFINE_UNQUOTED(CELL_TYPE,$ac_cv_int_type_cell,[an integer type that is as long as a pointer]) +AC_MSG_CHECKING([for a C type for wydes]) +ac_cv_wyde_type_cell=none +case 2 in + $ac_cv_sizeof_int) + ac_cv_wyde_type_cell=int + ;; + $ac_cv_sizeof_short) + ac_cv_wyde_type_cell=short + ;; + $ac_cv_sizeof_char) + ac_cv_wyde_type_cell=char + ;; + $ac_cv_sizeof_long) + ac_cv_wyde_type_cell=long + ;; + $ac_cv_sizeof_long_long) + ac_cv_wyde_type_cell="long long" + ;; + $ac_cv_sizeof_intptr_t) + ac_cv_wyde_type_cell="intptr_t" + ;; + $ac_cv_sizeof_int128_t) + ac_cv_wyde_type_cell="int128_t" + ;; +esac +AC_MSG_RESULT($ac_cv_wyde_type_cell) +AC_DEFINE_UNQUOTED(WYDE_TYPE,$ac_cv_wyde_type_cell,[an integer type that is 2 bytes long]) + +AC_MSG_CHECKING([for a C type for tetrabytes]) +ac_cv_tetrabyte_type_cell=none +case 4 in + $ac_cv_sizeof_int) + ac_cv_tetrabyte_type_cell=int + ;; + $ac_cv_sizeof_short) + ac_cv_tetrabyte_type_cell=short + ;; + $ac_cv_sizeof_char) + ac_cv_tetrabyte_type_cell=char + ;; + $ac_cv_sizeof_long) + ac_cv_tetrabyte_type_cell=long + ;; + $ac_cv_sizeof_long_long) + ac_cv_tetrabyte_type_cell="long long" + ;; + $ac_cv_sizeof_intptr_t) + ac_cv_tetrabyte_type_cell="intptr_t" + ;; + $ac_cv_sizeof_int128_t) + ac_cv_tetrabyte_type_cell="int128_t" + ;; +esac +AC_MSG_RESULT($ac_cv_tetrabyte_type_cell) +AC_DEFINE_UNQUOTED(TETRABYTE_TYPE,$ac_cv_tetrabyte_type_cell,[an integer type that is 4 bytes long]) + AC_MSG_CHECKING([for a C type for double-cells]) ac_cv_int_type_double_cell=none case `expr 2 '*' "$ac_cv_sizeof_char_p"` in @@ -412,7 +494,8 @@ AC_SUBST(disasm_fs) AC_PATH_PROG(INSTALL_INFO,install-info,[echo '>>>>Please make info dir entry:'],$PATH:/sbin:/usr/sbin:/usr/local/sbin) case "$host_os" in - *win32|cygwin) + *win32*) + # !!!FIXME!!! problems with cygwin and ';' as path separator DIRSEP="\\\\" PATHSEP=";" #we want the builtins of command.com/cmd.exe and its @@ -489,8 +572,13 @@ else fi #check how to do asm(".skip 16") +echo "CFLAGS=$CFLAGS" +echo "ac_link=$ac_link" AC_MSG_CHECKING([if and how we can waste code space]) if test -z "$skipcode"; then + skipcode=no + CFLAGS_1="$CFLAGS" + CFLAGS="$CFLAGS $ENGINE_FLAGS" for i in ".skip 16" ".block 16" ".org .+16" ".=.+16" ".space 16" do AC_TRY_RUN( @@ -505,7 +593,7 @@ int foo(int x, int y, int z) if (x) { y++; /* workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12108 */ label1: - asm(".skip 16"); /* or ".space 16" or somesuch */ + asm("$i"); /* or ".space 16" or somesuch */ label2: ; } { @@ -516,6 +604,7 @@ int foo(int x, int y, int z) ,skipcode=$i; break ,,) done + CFLAGS=$CFLAGS_1 fi AC_MSG_RESULT($skipcode) if test "$skipcode" = no @@ -535,22 +624,35 @@ AC_DEFINE_UNQUOTED(NO_DYNAMIC_DEFAULT,$n dnl Checks for programs. AC_PROG_LN_S AC_PROG_INSTALL +AC_CHECK_PROGS(TEXI2DVI,texi2dvi4a2ps texi2dvi) 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_CHECK_LIB(dl,dlopen) +dnl check for libffi 2.x +AC_CHECK_LIB(ffi,ffi_call) +if test $ac_cv_lib_ffi_ffi_call = yes +then +LIBFFIFLAG="true" +FFCALLFLAG="false" +OLDCALLFLAG="false" +AC_DEFINE(HAS_LIBFFI,,[define this if you want to use the ffcall interface with libffi 2.0]) +else dnl check for ffcall libraries dnl unfortunately, these four calls are separated out into a library each. AC_CHECK_LIB(avcall,__builtin_avcall) AC_CHECK_LIB(callback,__vacall_r) AC_CHECK_LIB(vacall,vacall) AC_CHECK_LIB(trampoline,alloc_trampoline) +LIBFFIFLAG="false" FFCALLFLAG="false" OLDCALLFLAG="true" test $ac_cv_lib_avcall___builtin_avcall = yes && FFCALLFLAG="true" && OLDCALLFLAG="false" && AC_DEFINE(HAS_FFCALL,,[define this if you want to use the ffcall libraries]) test $ac_cv_lib_avcall___builtin_avcall = no && AC_DEFINE(HAS_OLDCALL,,[define this if you want to use the old call libraries]) +fi +AC_SUBST(LIBFFIFLAG) AC_SUBST(FFCALLFLAG) AC_SUBST(OLDCALLFLAG) if test "$host_os" != "nextstep3" @@ -588,11 +690,14 @@ Makedist gforthmi vmgen machpc.fs +envos.fs engine/Makefile -doc/version.texi ]) +doc/version.texi +build-ec ]) AC_CONFIG_COMMANDS([stamp-h],[[echo timestamp > stamp-h chmod +x gforthmi chmod +x vmgen +chmod +x build-ec test -d kernel||mkdir kernel]],[[]]) AC_OUTPUT