--- gforth/configure.in 2008/11/02 17:16:46 1.265 +++ gforth/configure.in 2012/03/17 01:36:03 1.299 @@ -1,6 +1,6 @@ dnl Process this file with autoconf to produce a configure script. -#Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc. +#Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2009,2010,2011 Free Software Foundation, Inc. #This file is part of Gforth. @@ -20,12 +20,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.7.0],[https://savannah.gnu.org/bugs/?func=addbug&group=gforth]) +AC_INIT([gforth],[0.7.9-20120317],[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="November 2, 2008" +UPDATED="March 17, 2012" AC_SUBST(UPDATED) AC_CONFIG_HEADERS(engine/config.h) @@ -70,6 +70,8 @@ if test "$withval" = "yes"; then DEBUGFL GCC_LD="\$(GCC)" EC_MODE="false" +NO_EC="" +NO_CROSS="" EC="" engine2='engine2$(OPT).o' engine_fast2='engine-fast2$(OPT).o' @@ -77,6 +79,7 @@ no_dynamic="" image_i="" signals_o="io.o signals.o" +AC_CANONICAL_HOST AC_ARG_WITH(ec, AC_HELP_STRING([--with-ec=], [ Build gforth for systems without OS.]), @@ -87,6 +90,8 @@ else AC_DEFINE(STANDALONE,,[Define if you want a Gforth without OS]) EC_MODE="true" EC="-ec" + NO_EC="#" + NO_CROSS="#" engine2="" engine_fast2="" no_dynamic="-DNO_DYNAMIC" @@ -96,12 +101,32 @@ else else signals_o="io.o" fi + if test -f "arch/$host_cpu/${withval}/config.sh"; then + source "arch/$host_cpu/${withval}/config.sh" + fi GCC_PATH=$(which $CC) LIB_PATH=${GCC_PATH%/*/*} GCC_LD="\$(LD)" platform=${withval} fi]) +AC_ARG_WITH(cross, + AC_HELP_STRING([--with-cross=], + [ Build gforth using a cross compiler.]), +[if test "$withval" = "no"; then + echo "defining hosted system" +else + echo "defining cross compiled system (${withval})" + if test -f "arch/$host_cpu/${withval}/config.sh"; then + source "arch/$host_cpu/${withval}/config.sh" + fi + GCC_PATH=$(which $CC) + LIB_PATH=${GCC_PATH%/*/*} + platform=${withval} + NO_EC="" + NO_CROSS="#" +fi]) + #variables mentioned in INSTALL AC_ARG_VAR(CC, [The C compiler (must support GNU C 2.x).]) AC_ARG_VAR(FORTHSIZES, [Gforth command line options for the default stack and dictionary sizes (see INSTALL).]) @@ -165,6 +190,8 @@ AC_SUBST(CC) AC_SUBST(GCC_LD) AC_SUBST(DEBUGFLAG) AC_SUBST(EC) +AC_SUBST(NO_EC) +AC_SUBST(NO_CROSS) AC_SUBST(EC_MODE) AC_SUBST(engine2) AC_SUBST(engine_fast2) @@ -193,7 +220,6 @@ AC_MSG_RESULT($ac_export_dynamic) #terminology is a bit unusual here: The host is the system on which #gforth will run; the system on which configure will run is the `build' -AC_CANONICAL_HOST case "$host_cpu" in arm*) machine=arm @@ -236,14 +262,20 @@ case "$host_cpu" in ;; i486) machine=386 - CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -m486" + CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" + CFLAGS_1="$CFLAGS" + CFLAGS="$CFLAGS -march=i486" + AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486") + AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1") ;; i*86) machine=386 CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" CFLAGS_1="$CFLAGS" - CFLAGS="$CFLAGS -march=pentium" + CFLAGS="$CFLAGS -march=pentium -mtune=generic" + AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -march=pentium") AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486") + AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1") ;; x86_64) case $CC @@ -276,6 +308,7 @@ case "$host_cpu" in ;; mips*) machine=mips + AC_LIBOBJ(../arch/mips/check_prim) #dynamic native code has the following problems on MIPS: # #1) J/JAL seems relocatable, but is are only @@ -328,6 +361,7 @@ esac AC_SUBST(host) MAKEINC="" +GFORTH_EXE="true" echo "Check for arch/$machine/$platform/gforth.ld ($EC_MODE)" if test x$EC_MODE = xtrue @@ -343,6 +377,7 @@ then if test -f arch/$machine/$platform/make.inc then MAKEINC="include ../arch/$machine/$platform/make.inc" + GFORTH_EXE="\$(MAKE) -f arch/$machine/$platform/make.inc \$@.exe" fi fi AC_SUBST(MAKEINC) @@ -471,6 +506,31 @@ 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 octabytes]) +ac_cv_octabyte_type_cell=none +case 8 in + $ac_cv_sizeof_int) + ac_cv_octabyte_type_cell=int + ;; + $ac_cv_sizeof_short) + ac_cv_octabyte_type_cell=short + ;; + $ac_cv_sizeof_char) + ac_cv_octabyte_type_cell=char + ;; + $ac_cv_sizeof_long) + ac_cv_octabyte_type_cell=long + ;; + $ac_cv_sizeof_long_long) + ac_cv_octabyte_type_cell="long long" + ;; + $ac_cv_sizeof_intptr_t) + ac_cv_octabyte_type_cell="intptr_t" + ;; +esac +AC_MSG_RESULT($ac_cv_octabyte_type_cell) +AC_DEFINE_UNQUOTED(OCTABYTE_TYPE,$ac_cv_octabyte_type_cell,[an integer type that is 8 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 @@ -608,12 +668,33 @@ AC_TRY_COMPILE(,,ac_align_jumps=yes;ENGI CFLAGS="$CFLAGS_1" AC_MSG_RESULT($ac_align_jumps) +if test -z "$LIBTOOL_CC" +then + LIBTOOL_CC="$CC" + # Try if GCC understands -Wimplicit-function-declaration + AC_MSG_CHECKING([if $CC understands -Wimplicit-function-declaration]) + CFLAGS_1="$CFLAGS" + CFLAGS="$CFLAGS -Wimplicit-function-declaration" + AC_TRY_COMPILE(,,LIBTOOL_CC="$CC -Wimplicit-function-declaration",) + CFLAGS="$CFLAGS_1" + AC_MSG_RESULT($ac_align_jumps) +fi +AC_SUBST(LIBTOOL_CC) + + + # 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) +# Try if GCC understands __thread +AC_MSG_CHECKING([whether gcc understands '__thread']) +AC_TRY_COMPILE(,[extern __thread int foo;],PER_THREAD='__thread',) +AC_DEFINE_UNQUOTED(PER_THREAD,$PER_THREAD,[storage class for thread-local variables]) +AC_MSG_RESULT($PER_THREAD) + #try if m4 understands -s AC_MSG_CHECKING([how to invoke m4]) if m4 -s /dev/null >/dev/null 2>&1; then @@ -624,30 +705,22 @@ fi AC_SUBST(M4) AC_MSG_RESULT($M4) -# Find installed Gforth -AC_MSG_CHECKING([for gforth]) -GFORTH="`cd / && which gforth 2>/dev/null`" -#the "$srcdir" = "." test defends agains the "../" bug in gforth-0.6.2 -(cd / && $GFORTH -e bye >/dev/null 2>/dev/null && test "$srcdir" = ".") || GFORTH="" -if test -z "$GFORTH"; then - PREFORTH='echo "You need to configure with a gforth in \$PATH to build this part" && false' - kernel_anti_dependence='' -else - PREFORTH="$GFORTH -i `cd / && $GFORTH --debug -e bye 2>&1 |grep "Opened image file: "|sed 's/Opened image file: //'`" ; - kernel_anti_dependence='$(kernel_fi)' -fi -AC_SUBST(PREFORTH) -AC_SUBST(kernel_anti_dependence) -AC_MSG_RESULT($PREFORTH) - #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],) +if test x$EC_MODE = xfalse +then + AS_IF([test -f $srcdir/arch/$machine/asm.fs], + [asm_fs=arch/$machine/asm.fs]) +fi AC_SUBST(asm_fs) 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],) +if test x$EC_MODE = xfalse +then + AS_IF([test -f $srcdir/arch/$machine/disasm.fs], + [disasm_fs=arch/$machine/disasm.fs]) +fi AC_SUBST(disasm_fs) AC_PATH_PROG(INSTALL_INFO,install-info,[echo '>>>>Please make info dir entry:'],$PATH:/sbin:/usr/sbin:/usr/local/sbin) @@ -704,14 +777,13 @@ fi AC_CHECK_PROG([MASSAGE_EXE],[chcon],[chcon -t unconfined_execmem_exec_t],[true]) dnl Now a little support for DOS/DJGCC +GFORTHFAST_EXE="$GFORTH_EXE" +GFORTHITC_EXE="$GFORTH_EXE" +GFORTHDITC_EXE="$GFORTH_EXE" AC_SUBST(GFORTH_EXE) -GFORTH_EXE="true" AC_SUBST(GFORTHFAST_EXE) -GFORTHFAST_EXE="true" AC_SUBST(GFORTHITC_EXE) -GFORTHITC_EXE="true" AC_SUBST(GFORTHDITC_EXE) -GFORTHDITC_EXE="true" AC_SUBST(FORTHSIZES) @@ -752,7 +824,11 @@ fi #echo "CFLAGS=$CFLAGS" #echo "ac_link=$ac_link" AC_MSG_CHECKING([if and how we can waste code space]) -if test -z "$skipcode"; then +if test -z "$skipcode" && test x$cross_compiling = xyes; then + # we cannot perform the AC_TRY_RUN check when cross-compiling. + skipcode=no + AC_MSG_RESULT([$skipcode, can't run checks since cross-compiling]) +elif test -z "$skipcode"; then skipcode=no CFLAGS_1="$CFLAGS" CFLAGS="$CFLAGS $ENGINE_FLAGS" @@ -790,7 +866,7 @@ then no_dynamic_default=1 AC_MSG_WARN(Disabling default dynamic native code generation) fi - AC_DEFINE_UNQUOTED(SKIP16,((void)0),statement for skipping 16 bytes) + AC_DEFINE_UNQUOTED(SKIP16,asm(""),statement for skipping 16 bytes) else AC_DEFINE_UNQUOTED(SKIP16,asm("$skipcode"),statement for skipping 16 bytes) fi @@ -821,29 +897,43 @@ AC_PROG_LN_S AC_PROG_INSTALL AC_CHECK_PROGS(TEXI2DVI,texi2dvi4a2ps texi2dvi) +dnl check for the presence of Emacs +AC_CHECK_PROGS(EMACS,emacs xemacs) +test -n "$EMACS" && gforth_elc=gforth.elc +AC_SUBST(gforth_elc) + dnl MacOS X has a libtool that does something else AC_CHECK_PROGS(GNU_LIBTOOL,"glibtool --tag=CC" libtool) -if test -n "$GNU_LIBTOOL"; then +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(rt,clock_gettime) + +if test -n "$GNU_LIBTOOL" -a $ac_cv_lib_ltdl_lt_dlinit = yes; then build_libcc_named=build-libcc-named else build_libcc_named="" + AC_MSG_WARN([No GNU_LIBTOOL found, skip pre-building libcc-based libraries]) fi AC_SUBST(build_libcc_named) -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) +if test -z "$GNU_LIBTOOL"; then + AC_MSG_WARN([No GNU_LIBTOOL found, using "libtool" as name.]) + AC_MSG_WARN([libcc.fs won't work until you have installed (GNU) libtool.]) + GNU_LIBTOOL=libtool +fi + #check for libffi 2.x AC_CHECK_HEADER(ffi.h,FFI_H_NAME=ffi.h,) if test -z "$FFI_H_NAME"; then AC_CHECK_HEADER(ffi/ffi.h,FFI_H_NAME=ffi/ffi.h,) fi AC_SUBST(FFI_H_NAME) -AC_CHECK_LIB(ffi,ffi_call) +AC_CHECK_LIB(ffi,ffi_call,LIBS="$LIBS") if test -n "$FFI_H_NAME" -a $ac_cv_lib_ffi_ffi_call = yes then LIBFFIFLAG="true" @@ -853,7 +943,7 @@ else fi #check for ffcall libraries #unfortunately, these four calls are separated out into a library each. -AC_CHECK_LIB(avcall,__builtin_avcall) +AC_CHECK_LIB(avcall,__builtin_avcall,LIBS="$LIBS") dnl AC_CHECK_LIB(callback,__vacall_r) dnl AC_CHECK_LIB(vacall,vacall) dnl AC_CHECK_LIB(trampoline,alloc_trampoline) @@ -875,7 +965,7 @@ then fi AC_REPLACE_FUNCS(memmove strtoul pow10 strerror strsignal atanh) AC_FUNC_FSEEKO -AC_CHECK_FUNCS(ftello dlopen sys_siglist getrusage nanosleep) +AC_CHECK_FUNCS(ftello dlopen sys_siglist getrusage nanosleep clock_gettime) AC_CHECK_TYPES(stack_t,,,[#include ]) AC_DECL_SYS_SIGLIST AC_CHECK_FUNC(getopt_long,[true],[AC_LIBOBJ(getopt) AC_LIBOBJ(getopt1)]) @@ -883,7 +973,7 @@ AC_CHECK_FUNCS(expm1 log1p) AC_REPLACE_FUNCS(rint 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 alloca.h wchar.h) +AC_CHECK_HEADERS(sys/mman.h fnmatch.h alloca.h wchar.h endian.h) AC_FUNC_FNMATCH test $ac_cv_func_fnmatch_works = yes || AC_LIBOBJ(fnmatch) AC_CHECK_FUNCS(mmap sysconf getpagesize wcwidth) @@ -894,6 +984,30 @@ include_fi=kernl${wordsize}${bytesex}${E AC_SUBST(kernel_fi) AC_SUBST(include_fi) +# Find installed Gforth +AC_MSG_CHECKING([for gforth]) +GFORTH="`cd / && which gforth 2>/dev/null`" +#the "$srcdir" = "." test defends agains the "../" bug in gforth-0.6.2 +(cd / && $GFORTH -e bye >/dev/null 2>/dev/null && test "$srcdir" = ".") || GFORTH="" +if test -z "$GFORTH"; then + PREFORTH='echo "You need to configure with a gforth in \$PATH to build this part" && false' + GFORTHKER='echo "You need to configure with a gforth in \$PATH to build this part" && false' + kernel_anti_dependence='' +else + GFORTH_FI=`cd / && $GFORTH --debug -e bye 2>&1 |grep "Opened image file: "|sed 's/Opened image file: //'` + PREFORTH="$GFORTH -i $GFORTH_FI" ; + KERNLX_FI1=`echo $GFORTH_FI | sed -e s/lib/share/g -e s/gforth.fi/kernl*.fi/g` + KERNLX_FI2=`echo $GFORTH_FI | sed -e s/gforth.fi/kernl*.fi/g` + test -f $KERNLX_FI1 && KERNLX_FI=$KERNLX_FI1 + test -f $KERNLX_FI2 && KERNLX_FI=$KERNLX_FI2 + GFORTHKER="$GFORTH -i `echo $KERNLX_FI`" ; + kernel_anti_dependence='$(kernel_fi)' +fi +AC_SUBST(PREFORTH) +AC_SUBST(GFORTHKER) +AC_SUBST(kernel_anti_dependence) +AC_MSG_RESULT($PREFORTH) + #this breaks bindists #dnl replace srource directory by absolute value #if test $srcdir = "."; then srcdir=`pwd` @@ -908,6 +1022,7 @@ vmgen machpc.fs envos.fs preforth +gforthker engine/Makefile engine/libcc.h doc/version.texi @@ -917,6 +1032,7 @@ chmod +x gforthmi chmod +x vmgen chmod +x build-ec chmod +x preforth +chmod +x gforthker test -d kernel||mkdir kernel if test $srcdir != "."; then ln -sf $srcdir/gforth.el .; fi $srcdir/mkinstalldirs include/gforth/$PACKAGE_VERSION @@ -925,4 +1041,3 @@ ln -sf ../../../engine/config.h ../../.. [PACKAGE_VERSION=$PACKAGE_VERSION machine=$machine]) AC_OUTPUT -