dnl Process this file with autoconf to produce a configure script. AC_INIT(engine.c) AC_ARG_ENABLE(force-reg, [ --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)) 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) --without-debug omits the -g switch and creates smaller images on machines where "strip" has problems with gcc style debugging informations.], if test "$withval" = "yes"; then DEBUGFLAG=-g; fi) AC_PROG_CC if test "$GCC" = "yes" then echo "Fine, gcc is available" else cat <<'EOF' Gforth uses the GNU-C extensions for better performance. It does not work with other C compilers. Please install a new version of the GNU-C compiler, and try again. EOF exit 1 fi AC_SUBST(CC) AC_SUBST(GCCLDFLAGS) AC_SUBST(DEBUGFLAG) dnl the following macro produces a warning with autoconf-2.1 AC_CHECK_SIZEOF(char *) case "$ac_cv_sizeof_char_p" in 2) wordsize=16 ;; 4) wordsize=32 ;; 8) wordsize=64 dnl AC_CHECK_SIZEOF(long long) dnl if [ $ac_cv_sizeof_long_long != 16 ] dnl then dnl try the whole thing with -mlonglong128 dnl complain about C compiler and OS vendor dnl fi ;; esac #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 hppa*) mach_h=hppa LIBOBJS="cache.o" LDFLAGS="-Xlinker -N" LIBS="-L/lib/pa1.1/" ;; sparc*) mach_h=sparc ;; i386|i486|i586) mach_h=386 CFLAGS="-fomit-frame-pointer -fforce-addr -fforce-mem" #!! direct/indirect threading switch #!! -m486 flag ;; m68*) mach_h=m68k ;; mips*) mach_h=mips #link text and data segment into the same 256M region! GCCLDFLAGS="-Xlinker -T -Xlinker 10000000 -Xlinker -D -Xlinker 10400000" ;; alpha*) mach_h=alpha echo Very Preliminary Support for Alpha!!! ;; *) echo "No direct threading support for $host_cpu, using indirect threading." echo "Using a generic 32-bit machine description. It will only work if char * AND" echo "long values have 32 bits." 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." mach_h=32bit esac AC_SUBST(host) AC_SUBST(ENGINE_FLAGS) dnl Now a little support for DOS/DJGCC AC_SUBST(MAKE_EXE) MAKE_EXE="" dnl copy commands for systems that don't have links AC_SUBST(LINK_KERNL16L) LINK_KERNL16L="" AC_SUBST(LINK_KERNL16B) LINK_KERNL16B="" AC_SUBST(LINK_KERNL32L) LINK_KERNL32L="" AC_SUBST(LINK_KERNL32B) LINK_KERNL32B="" AC_SUBST(LINK_KERNL64L) LINK_KERNL64L="" AC_SUBST(LINK_KERNL64B) LINK_KERNL64B="" #if test $host_os=dos #then # echo Configuring for DOS!!! # MAKE_EXE="coff2exe gforth" # LINK_KERNL32L='$(CP) kernl32l.fi kernal.fi' #fi dnl the following macro produces a warning with autoconf-2.1 AC_C_BIGENDIAN AC_SUBST(KERNAL) dnl ac_cv_c_bigendian is an undocumented variable of autoconf-2.1 if test $ac_cv_c_bigendian = yes; then bytesex=b KERNAL="kernl16b.fi kernl16l.fi kernl32b.fi kernl32l.fi kernl64b.fi kernl64l.fi" else bytesex=l KERNAL="kernl16l.fi kernl16b.fi kernl32l.fi kernl32b.fi kernl64l.fi kernl64b.fi" fi dnl Checks for programs. AC_PROG_LN_S AC_PROG_INSTALL 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_FUNC_MEMCMP AC_REPLACE_FUNCS(memmove strtoul pow10 strerror strsignal) AC_CHECK_FUNC(getopt_long,getopt_long="",getopt_long="getopt.o getopt1.o") AC_SUBST(getopt_long) 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 kernal_fi=kernl${wordsize}${bytesex}.fi AC_SUBST(kernal_fi) AC_LINK_FILES(${mach_h}.h $kernal_fi,machine.h kernal.fi) AC_OUTPUT(Makefile)