--- gforth/configure.in 2007/06/02 14:25:26 1.187 +++ gforth/configure.in 2007/12/16 15:22:05 1.199 @@ -21,7 +21,7 @@ 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.9-20070602],[https://savannah.gnu.org/bugs/?func=addbug&group=gforth]) +AC_INIT([gforth],[0.6.9-20070604],[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. @@ -138,6 +138,7 @@ AC_ARG_VAR(ac_cv_sizeof_int128_t, [sizeo AC_ARG_VAR(ac_cv_sizeof_uint128_t, [sizeof(uint128_t)]) AC_ARG_VAR(ac_cv_c_bigendian, [Is the target big-endian ("yes" or "no")?]) AC_ARG_VAR(no_dynamic_default, [run gforth with --dynamic (0) or --no-dynamic (1) by default]) +AC_ARG_VAR(condbranch_opt, [enable (1) or disable (0) using two dispatches for conditional branches]) AC_ARG_VAR(skipcode, [assembly code for skipping 16 bytes of code]) AC_ARG_VAR(asmcomment, [assembler comment start string]) AC_ARG_VAR(arm_cacheflush, [file containing ARM cacheflush function (without .c)]) @@ -165,6 +166,16 @@ AC_PROG_CC test "$GCC" = "yes" || AC_MSG_ERROR(Gforth uses GNU C extensions and requires GCC 2.0 or higher) +AC_MSG_CHECKING([whether to use two dispatches per conditional branch]) +test x$condbranch_opt = x && +if ($CC -v 2>&1 |grep -q 'gcc version 3'); then + condbranch_opt=0 +else + condbranch_opt=1 +fi +AC_MSG_RESULT($condbranch_opt) +AC_SUBST(condbranch_opt) + AC_SUBST(CC) AC_SUBST(GCC_LD) AC_SUBST(DEBUGFLAG) @@ -229,21 +240,32 @@ case "$host_cpu" in ;; i386) machine=386 - CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem" + CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" ;; i486) machine=386 - CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem -m486" + CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -m486" ;; i*86) machine=386 - CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -fforce-mem" + CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" CFLAGS_1="$CFLAGS" CFLAGS="$CFLAGS -march=pentium" AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486") ;; x86_64) - machine=amd64 + case $CC + in + *-m32*) + machine=386 + CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" + CFLAGS_1="$CFLAGS" + CFLAGS="$CFLAGS -march=athlon64" + ;; + *) + machine=amd64 + ;; + esac ;; ia64*) machine=ia64 @@ -565,16 +587,55 @@ AC_TRY_COMPILE(,,ac_noreorder_blocks=yes CFLAGS="$CFLAGS_1" AC_MSG_RESULT($ac_noreorder_blocks) +# Try if GCC understands -falign-labels=1 +AC_MSG_CHECKING([if $CC understands -falign-labels=1]) +CFLAGS_1="$CFLAGS" +CFLAGS="$CFLAGS -falign-labels=1" +AC_TRY_COMPILE(,,ac_align_labels=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-labels=1",ac_align_labels=no) +CFLAGS="$CFLAGS_1" +AC_MSG_RESULT($ac_align_labels) + +# Try if GCC understands -falign-loops=1 +AC_MSG_CHECKING([if $CC understands -falign-loops=1]) +CFLAGS_1="$CFLAGS" +CFLAGS="$CFLAGS -falign-loops=1" +AC_TRY_COMPILE(,,ac_align_loops=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-loops=1",ac_align_loops=no) +CFLAGS="$CFLAGS_1" +AC_MSG_RESULT($ac_align_loops) + +# Try if GCC understands -falign-jumps=1 +AC_MSG_CHECKING([if $CC understands -falign-jumps=1]) +CFLAGS_1="$CFLAGS" +CFLAGS="$CFLAGS -falign-jumps=1" +AC_TRY_COMPILE(,,ac_align_jumps=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-jumps=1",ac_align_jumps=no) +CFLAGS="$CFLAGS_1" +AC_MSG_RESULT($ac_align_jumps) + # Try if GCC understands __attribute__((unused)) AC_MSG_CHECKING([how to suppress 'unused variable' warnings]) AC_TRY_COMPILE(,[int __attribute__((unused)) foo;], MAYBE_UNUSED='__attribute__((unused))',) AC_DEFINE_UNQUOTED(MAYBE_UNUSED,$MAYBE_UNUSED,[attribute for possibly unused variables]) AC_MSG_RESULT($MAYBE_UNUSED) -AC_CHECK_PROG(asm_fs,asm.fs,arch/$machine/asm.fs,,$srcdir/arch/$machine) +#try if m4 understands -s +AC_MSG_CHECKING([how to invoke m4]) +if m4 -s /dev/null >/dev/null 2>&1; then + M4="m4 -s" +else + M4=m4 +fi +AC_SUBST(M4) +AC_DEFINE_UNQUOTED(M4,"$M4",[How to invoke m4]) +AC_MSG_RESULT($M4) + +echo "machine='$machine'" + +dnl AC_CHECK_PROG(asm_fs,asm.fs,arch/$machine/asm.fs,,$srcdir/arch/$machine) +AC_CHECK_FILE($srcdir/arch/$machine/asm.fs,[asm_fs=arch/$machine/asm.fs],) AC_SUBST(asm_fs) -AC_CHECK_PROG(disasm_fs,disasm.fs,arch/$machine/disasm.fs,,$srcdir/arch/$machine) +dnl AC_CHECK_PROG(disasm_fs,disasm.fs,arch/$machine/disasm.fs,,$srcdir/arch/$machine) +AC_CHECK_FILE($srcdir/arch/$machine/disasm.fs,[disasm_fs=arch/$machine/disasm.fs],) AC_SUBST(disasm_fs) AC_PATH_PROG(INSTALL_INFO,install-info,[echo '>>>>Please make info dir entry:'],$PATH:/sbin:/usr/sbin:/usr/local/sbin) @@ -734,10 +795,14 @@ AC_PROG_LN_S AC_PROG_INSTALL AC_CHECK_PROGS(TEXI2DVI,texi2dvi4a2ps texi2dvi) +dnl MacOS X has a libtool that does something else +AC_CHECK_PROGS(GNU_LIBTOOL,glibtool libtool) + 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(ltdl,lt_dlinit) AC_CHECK_LIB(dl,dlopen) dnl check for libffi 2.x AC_CHECK_LIB(ffi,ffi_call) @@ -802,12 +867,15 @@ vmgen machpc.fs envos.fs engine/Makefile +engine/libcc.h 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]],[[]]) +test -d kernel||mkdir kernel +$srcdir/mkinstalldirs include/gforth/$PACKAGE_VERSION +ln -sf ../../../engine/config.h ../../../engine/libcc.h include/gforth/$PACKAGE_VERSION]],[[PACKAGE_VERSION=$PACKAGE_VERSION]]) AC_OUTPUT