--- gforth/configure.in 2007/04/22 20:06:25 1.184 +++ gforth/configure.in 2007/12/16 15:22:05 1.199 @@ -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.9-20070401],[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. #I.e., 0.4.1-YYYYMMDD must not exist before 0.4.1! -UPDATED="April 09, 2006" +UPDATED="June 02, 2007" AC_SUBST(UPDATED) AC_CONFIG_HEADERS(engine/config.h) @@ -86,19 +86,20 @@ dnl --without-peephole disables peepho dnl but slower images.], dnl PEEPHOLE="$withval") +GCC_LD="\$(GCC)" +EC_MODE="false" +EC="" +engine2="engine2.o" +engine_fast2="engine-fast2.o" +no_dynamic="" +image_i="" +signals_o="io.o signals.o" + AC_ARG_WITH(ec, AC_HELP_STRING([--with-ec=], [ Build gforth for systems without OS.]), [if test "$withval" = "no"; then echo "defining hosted system" - EC_MODE="false" - EC="" - engine2="engine2.o" - engine_fast2="engine-fast2.o" - no_dynamic="" - image_i="" - signals_o="io.o signals.o" - GCC_LD="\$(GCC)" else echo "defining standalone system (${withval})" AC_DEFINE(STANDALONE,,[Define if you want a Gforth without OS]) @@ -137,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)]) @@ -164,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) @@ -228,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 @@ -564,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) @@ -733,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) @@ -768,7 +834,7 @@ then fi AC_REPLACE_FUNCS(memmove strtoul pow10 strerror strsignal atanh) AC_FUNC_FSEEKO -AC_CHECK_FUNCS(ftello dlopen sys_siglist getrusage) +AC_CHECK_FUNCS(ftello dlopen sys_siglist getrusage nanosleep) AC_CHECK_TYPES(stack_t,,,[#include ]) AC_DECL_SYS_SIGLIST AC_CHECK_FUNC(getopt_long,[true],[AC_LIBOBJ(getopt) AC_LIBOBJ(getopt1)]) @@ -801,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