Annotation of gforth/configure.in, revision 1.292
1.1 anton 1: dnl Process this file with autoconf to produce a configure script.
1.20 anton 2:
1.287 anton 3: #Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008,2009,2010 Free Software Foundation, Inc.
1.20 anton 4:
5: #This file is part of Gforth.
6:
7: #Gforth is free software; you can redistribute it and/or
8: #modify it under the terms of the GNU General Public License
1.201 anton 9: #as published by the Free Software Foundation, either version 3
1.20 anton 10: #of the License, or (at your option) any later version.
11:
12: #This program is distributed in the hope that it will be useful,
13: #but WITHOUT ANY WARRANTY; without even the implied warranty of
14: #MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.#See the
15: #GNU General Public License for more details.
16:
17: #You should have received a copy of the GNU General Public License
1.201 anton 18: #along with this program. If not, see http://www.gnu.org/licenses/.
1.20 anton 19:
1.121 anton 20:
1.34 anton 21: dnl We use some automake macros here,
22: dnl but don't use automake for creating Makefile.in
1.285 pazsan 23: AC_INIT([gforth],[0.7.9-20101227],[https://savannah.gnu.org/bugs/?func=addbug&group=gforth])
1.113 anton 24: AC_PREREQ(2.54)
1.47 anton 25: #snapshots have numbers major.minor.release-YYYYMMDD
1.92 anton 26: #note that lexicographic ordering must be heeded.
1.47 anton 27: #I.e., 0.4.1-YYYYMMDD must not exist before 0.4.1!
1.285 pazsan 28: UPDATED="December 27, 2010"
1.84 anton 29: AC_SUBST(UPDATED)
1.94 anton 30: AC_CONFIG_HEADERS(engine/config.h)
1.14 anton 31:
1.225 anton 32: #remnants from having ltdl as convenience library
33: LTDLDEPS=""
34: LTDLINCL=""
35: LIBLTDL=""
36: LTDL_LDLIBS=""
37: AC_SUBST(LTDLDEPS)
38: AC_SUBST(LTDLINCL)
39: AC_SUBST(LIBLTDL)
1.219 anton 40: AC_SUBST(LTDL_LDLIBS)
41:
1.121 anton 42: #suppress the "-g -O2" default
43: test "$CFLAGS" || CFLAGS=-O2
44:
1.150 pazsan 45: AC_ARG_ENABLE(force-cdiv,
46: AC_HELP_STRING([--enable-force-cdiv],
47: [ Use the native C division - symmetric - instead of
48: floored division (default disabled).]),
49: ,enable_force_cdiv=no)
50: test "$enable_force_cdiv" = "no"||
51: AC_DEFINE(FORCE_CDIV,,[Define if you want to use explicit symmetric division for better performance])
52:
1.149 anton 53: AC_SUBST(PROFEXES)
54: AC_SUBST(PROFOBJS)
1.135 anton 55: AC_ARG_ENABLE(prof,
1.149 anton 56: AC_HELP_STRING([--enable-prof],
57: [ Build gforth-prof, which outputs frequently occuring
58: sequences of primitives.]),
59: ,enable_prof=no)
1.204 anton 60: if test "$enable_prof" != "no"; then
61: PROFEXES='gforth-prof$(OPT)$(EXE)'; PROFOBJS='engine-prof$(OPT).o main-prof$(OPT).o profile$(OPT).o'
1.149 anton 62: fi
1.1 anton 63:
1.9 pazsan 64: AC_ARG_WITH(debug,
1.122 pazsan 65: [ --with-debug specifies option -g to compile with debug info
66: --without-debug omits the -g switch and creates smaller images on
67: machines where "strip" has problems with gcc style
68: debugging informations.],
1.9 pazsan 69: if test "$withval" = "yes"; then DEBUGFLAG=-g; fi)
1.122 pazsan 70:
1.185 pazsan 71: GCC_LD="\$(GCC)"
72: EC_MODE="false"
1.275 pazsan 73: NO_EC=""
1.291 pazsan 74: NO_CROSS=""
1.185 pazsan 75: EC=""
1.204 anton 76: engine2='engine2$(OPT).o'
77: engine_fast2='engine-fast2$(OPT).o'
1.185 pazsan 78: no_dynamic=""
79: image_i=""
80: signals_o="io.o signals.o"
81:
1.275 pazsan 82: AC_CANONICAL_HOST
1.182 pazsan 83: AC_ARG_WITH(ec,
84: AC_HELP_STRING([--with-ec=<arch>],
1.168 pazsan 85: [ Build gforth for systems without OS.]),
1.182 pazsan 86: [if test "$withval" = "no"; then
87: echo "defining hosted system"
88: else
89: echo "defining standalone system (${withval})"
1.168 pazsan 90: AC_DEFINE(STANDALONE,,[Define if you want a Gforth without OS])
1.167 pazsan 91: EC_MODE="true"
1.178 pazsan 92: EC="-ec"
1.275 pazsan 93: NO_EC="#"
1.291 pazsan 94: NO_CROSS="#"
1.178 pazsan 95: engine2=""
96: engine_fast2=""
97: no_dynamic="-DNO_DYNAMIC"
98: image_i="image.i"
1.182 pazsan 99: if test "$withval" != "yes"; then
100: signals_o="io-${withval}.o"
101: else
102: signals_o="io.o"
103: fi
1.275 pazsan 104: if test -f "arch/$host_cpu/${withval}/config.sh"; then
105: source "arch/$host_cpu/${withval}/config.sh"
106: fi
1.183 pazsan 107: GCC_PATH=$(which $CC)
108: LIB_PATH=${GCC_PATH%/*/*}
109: GCC_LD="\$(LD)"
1.184 pazsan 110: platform=${withval}
1.182 pazsan 111: fi])
1.167 pazsan 112:
1.290 pazsan 113: AC_ARG_WITH(cross,
114: AC_HELP_STRING([--with-cross=<arch>],
115: [ Build gforth using a cross compiler.]),
116: [if test "$withval" = "no"; then
117: echo "defining hosted system"
118: else
119: echo "defining cross compiled system (${withval})"
120: if test -f "arch/$host_cpu/${withval}/config.sh"; then
121: source "arch/$host_cpu/${withval}/config.sh"
122: fi
123: GCC_PATH=$(which $CC)
124: LIB_PATH=${GCC_PATH%/*/*}
125: platform=${withval}
1.291 pazsan 126: NO_EC=""
127: NO_CROSS="#"
1.290 pazsan 128: fi])
129:
1.104 anton 130: #variables mentioned in INSTALL
1.203 anton 131: AC_ARG_VAR(CC, [The C compiler (must support GNU C 2.x).])
1.104 anton 132: AC_ARG_VAR(FORTHSIZES, [Gforth command line options for the default stack and dictionary sizes (see INSTALL).])
1.203 anton 133: AC_ARG_VAR(STACK_CACHE_REGS, [number of registers in the maximum stack cache state for gforth-fast and gforth-native (default platform-dependent).])
1.151 anton 134: AC_ARG_VAR(STACK_CACHE_DEFAULT_FAST, [number of registers in the default stack cache state for gforth-fast and gforth-native (default 1).])
1.173 anton 135: AC_ARG_VAR(GCC_PR15242_WORKAROUND, [Force the enabling (1) or disabling (0) of a workaround for a gcc-3.x performance bug (default unset: use workaround for gcc-3.x)])
1.236 anton 136: AC_ARG_VAR(LIBCC_BUILD_SRC, [(Additional) libcc interface source files that should be processed on building and installation (default none)])
1.173 anton 137:
1.104 anton 138: AC_ARG_VAR(ac_cv_sizeof_char_p, [sizeof(char *)])
1.183 pazsan 139: AC_ARG_VAR(ac_cv_sizeof_void_p, [sizeof(void *)])
1.104 anton 140: AC_ARG_VAR(ac_cv_sizeof_char, [sizeof(char)])
141: AC_ARG_VAR(ac_cv_sizeof_short, [sizeof(short)])
142: AC_ARG_VAR(ac_cv_sizeof_int, [sizeof(int)])
143: AC_ARG_VAR(ac_cv_sizeof_long, [sizeof(long)])
144: AC_ARG_VAR(ac_cv_sizeof_long_long, [sizeof(long long)])
145: AC_ARG_VAR(ac_cv_sizeof_intptr_t, [sizeof(intptr_t)])
1.254 anton 146: AC_ARG_VAR(ac_cv_sizeof_int128_t, [sizeof(int128_t)])
147: AC_ARG_VAR(ac_cv_sizeof_uint128_t, [sizeof(uint128_t)])
1.123 anton 148: AC_ARG_VAR(ac_cv_c_bigendian, [Is the target big-endian ("yes" or "no")?])
149: AC_ARG_VAR(no_dynamic_default, [run gforth with --dynamic (0) or --no-dynamic (1) by default])
1.190 anton 150: AC_ARG_VAR(condbranch_opt, [enable (1) or disable (0) using two dispatches for conditional branches])
1.166 anton 151: AC_ARG_VAR(skipcode, [assembly code for skipping 16 bytes of code])
1.174 anton 152: AC_ARG_VAR(asmcomment, [assembler comment start string])
1.175 anton 153: AC_ARG_VAR(arm_cacheflush, [file containing ARM cacheflush function (without .c)])
1.250 anton 154: AC_ARG_VAR(LTDL_LIBRARY_PATH, [additional directories for libltdl (for some 64-bit platforms)])
1.82 anton 155:
1.96 anton 156: #set up feature test macros, so the tests get them right:
157: # turn on all POSIX, SUSv3, and GNU features if available
1.97 anton 158: AC_GNU_SOURCE
159: dnl AC_DEFINE_UNQUOTED([_GNU_SOURCE],1,[feature test macro])
160:
161: dnl Don't define _POSIX_SOURCE etc. because some OSs (in particular
162: dnl MacOSX) disable some features then (MacOSX checks for _POSIX_SOURCE,
163: dnl but not for _XOPEN_SOURCE)
164: dnl AC_DEFINE_UNQUOTED([_POSIX_SOURCE],1,[feature test macro])
165: dnl AC_DEFINE_UNQUOTED([_POSIX_C_SOURCE],199506L,[feature test macro])
166: dnl AC_DEFINE_UNQUOTED([_XOPEN_SOURCE],600,[feature test macro])
1.96 anton 167: # turn on large file support with 64-bit off_t where available
1.105 anton 168: AC_SYS_LARGEFILE
169: dnl AC_DEFINE_UNQUOTED([_LARGEFILE_SOURCE],1,[feature test macro])
170: dnl AC_DEFINE_UNQUOTED([_FILE_OFFSET_BITS],64,[feature test macro])
1.96 anton 171:
1.82 anton 172: #currently we force direct threading this way. Eventually we should
173: #setup in the arch and engine files right
1.16 anton 174:
1.15 pazsan 175: AC_PROG_CC
176:
1.92 anton 177: test "$GCC" = "yes" || AC_MSG_ERROR(Gforth uses GNU C extensions and requires GCC 2.0 or higher)
1.9 pazsan 178:
1.190 anton 179: AC_MSG_CHECKING([whether to use two dispatches per conditional branch])
180: test x$condbranch_opt = x &&
1.238 anton 181: if ($CC -v 2>&1 |grep 'gcc version 3' >/dev/null); then
1.190 anton 182: condbranch_opt=0
183: else
184: condbranch_opt=1
185: fi
186: AC_MSG_RESULT($condbranch_opt)
187: AC_SUBST(condbranch_opt)
188:
1.15 pazsan 189: AC_SUBST(CC)
1.183 pazsan 190: AC_SUBST(GCC_LD)
1.9 pazsan 191: AC_SUBST(DEBUGFLAG)
1.178 pazsan 192: AC_SUBST(EC)
1.275 pazsan 193: AC_SUBST(NO_EC)
1.291 pazsan 194: AC_SUBST(NO_CROSS)
1.167 pazsan 195: AC_SUBST(EC_MODE)
1.178 pazsan 196: AC_SUBST(engine2)
197: AC_SUBST(engine_fast2)
198: AC_SUBST(no_dynamic)
199: AC_SUBST(image_i)
1.179 pazsan 200: AC_SUBST(signals_o)
1.7 anton 201:
1.174 anton 202: #this is used to disable some (not generally essential) part of the
203: #Makefile that some makes don't grok. It would be better to test for
204: #this specific Makefile feature than the make version.
1.128 pazsan 205: AC_MSG_CHECKING(make type)
1.174 anton 206: make_type=`make -n -v 2>&1|grep 'ake'|sed 's/ake .*/ake/'`
1.128 pazsan 207: GNUMAKE='#'
208: test "$make_type" = "GNU Make" && GNUMAKE=''
209: AC_MSG_RESULT($make_type)
210: AC_SUBST(GNUMAKE)
211:
1.50 jwilke 212: AC_MSG_CHECKING([whether the linker accepts -export-dynamic])
213: OLDLDFLAGS=$LDFLAGS
214: LDFLAGS="$LDFLAGS -export-dynamic"
1.69 anton 215: dnl AC_TRY_LINK gives false positive on rs6000-ibm-aix4.2.1.0
216: dnl AC_TRY_LINK(,,ac_export_dynamic=yes,ac_export_dynamic=no)
217: AC_TRY_RUN(main(){exit(0);},ac_export_dynamic=yes,ac_export_dynamic=no,ac_export_dynamic=no)
1.50 jwilke 218: test $ac_export_dynamic = yes|| LDFLAGS=$OLDLDFLAGS
219: AC_MSG_RESULT($ac_export_dynamic)
220:
1.1 anton 221: #terminology is a bit unusual here: The host is the system on which
222: #gforth will run; the system on which configure will run is the `build'
223: case "$host_cpu" in
1.136 anton 224: arm*)
225: machine=arm
226: CFLAGS="$CFLAGS -fomit-frame-pointer"
1.184 pazsan 227: if test x$platform = xnxt; then
1.183 pazsan 228: CFLAGS="$CFLAGS -mthumb -mthumb-interwork"
229: fi
1.175 anton 230: if test -z $arm_cacheflush; then
1.212 dvdkhlng 231: case "$host_os" in
232: *linux*)
1.260 anton 233: AC_LIBOBJ(../arch/arm/cacheflush-linux)
1.212 dvdkhlng 234: ;;
235: *)
236: no_dynamic_default=1
1.260 anton 237: AC_LIBOBJ(../arch/arm/cacheflush0)
1.212 dvdkhlng 238: AC_MSG_WARN([No I-cache flush code known, disabling dynamic native code generation])
239: ;;
240: esac
1.260 anton 241: else
242: AC_LIBOBJ(../$arm_cacheflush)
243: test $srcdir = . || AC_MSG_WARN([setting arm_cacheflush requires building in the source directory])
1.136 anton 244: fi
1.177 anton 245: #longer skipcodes lead to problems on ARM, and it uses
246: #only 4-byte alignment anyway
247: test "$skipcode" || skipcode="nop"
1.136 anton 248: ;;
1.1 anton 249: hppa*)
1.34 anton 250: machine=hppa
1.87 pazsan 251: AC_LIBOBJ(../arch/hppa/cache)
1.134 anton 252: #-N needed for --dynamic <M4U3b.3790$9d.317@news.cpqcorp.net>
253: LDFLAGS="$LDFLAGS -Xlinker -N"
1.47 anton 254: LIBS="$LIBS -L/lib/pa1.1/"
1.1 anton 255: ;;
256: sparc*)
1.34 anton 257: machine=sparc
1.1 anton 258: ;;
1.31 anton 259: i386)
1.34 anton 260: machine=386
1.189 anton 261: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr"
1.31 anton 262: ;;
263: i486)
1.34 anton 264: machine=386
1.282 dvdkhlng 265: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr"
266: CFLAGS_1="$CFLAGS"
267: CFLAGS="$CFLAGS -march=i486"
268: AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486")
269: AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1")
1.31 anton 270: ;;
1.77 anton 271: i*86)
1.34 anton 272: machine=386
1.189 anton 273: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr"
1.56 pazsan 274: CFLAGS_1="$CFLAGS"
1.282 dvdkhlng 275: CFLAGS="$CFLAGS -march=pentium -mtune=generic"
276: AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -march=pentium")
1.56 pazsan 277: AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486")
1.282 dvdkhlng 278: AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1")
1.1 anton 279: ;;
1.133 anton 280: x86_64)
1.192 pazsan 281: case $CC
282: in
283: *-m32*)
284: machine=386
285: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr"
286: CFLAGS_1="$CFLAGS"
287: CFLAGS="$CFLAGS -march=athlon64"
288: ;;
289: *)
290: machine=amd64
291: ;;
292: esac
1.133 anton 293: ;;
1.136 anton 294: ia64*)
295: machine=ia64
296: AC_LIBOBJ(../arch/ia64/flush_icache_block)
297: test "$skipcode" || skipcode="nop.i 0"
298: #".skip 16" passes the test below,
299: # but gives an assembler error in engine
300: ;;
1.26 pazsan 301: m68k)
1.34 anton 302: machine=m68k
1.32 pazsan 303: CFLAGS="$CFLAGS -fomit-frame-pointer"
304: if test "$host_os" = "nextstep3"
305: then
1.87 pazsan 306: AC_LIBOBJ(termios)
1.32 pazsan 307: fi
1.26 pazsan 308: ;;
1.1 anton 309: mips*)
1.34 anton 310: machine=mips
1.281 dvdkhlng 311: AC_LIBOBJ(../arch/mips/check_prim)
1.92 anton 312: #dynamic native code has the following problems on MIPS:
313: #
314: #1) J/JAL seems relocatable, but is are only
315: #relocatable within a 256MB-segment. While we try to
316: #get the linker to arrange this, there is no guarantee
317: #that this will succeed (and if the user uses a lot of
318: #memory, it is likely to fail).
319: #
320: #2) The way we generate dynamic native code may
321: #violate MIPS architectural restrictions (in
322: #particular, the delay slots of LW, MFLO, etc.)
323: #
324: #Therefore we disable dynamic native code by default:
1.255 anton 325: if test -z "$no_dynamic_default"; then
1.136 anton 326: no_dynamic_default=1
327: AC_MSG_WARN([Disabling default dynamic native code generation (relocation and delay slot issues)])
328: fi
1.1 anton 329: ;;
1.9 pazsan 330: alpha*)
1.34 anton 331: machine=alpha
1.58 anton 332: #full IEEE FP support for more uniformity across platforms:
333: CFLAGS="$CFLAGS -mieee"
1.9 pazsan 334: ;;
1.69 anton 335: power*|rs6000)
1.34 anton 336: machine=power
1.138 anton 337: AC_CHECK_FUNC(_sync_cache_range,[true],[AC_LIBOBJ(../arch/power/_sync_cache_range)])
1.103 anton 338: #long long is broken on (at least) gcc-2.95.* for PPC
1.165 anton 339: test x$ac_cv_sizeof_long_long = x &&
1.238 anton 340: ($CC -v 2>&1 |grep 'gcc version 2.95' >/dev/null) &&
1.263 anton 341: ac_cv_sizeof_long_long=0
1.203 anton 342: #The only architecture with enough callee-saved registers
343: test x$STACK_CACHE_REGS = x && STACK_CACHE_REGS=3
344: #or use 2, hardly slower at run-time and starts up faster
1.263 anton 345:
346: #the skipcode that is normally selected below does not
347: #work with gcc-3.[34]
348: test "$skipcode" || skipcode="nop\nnop\nnop\nnop"
1.31 anton 349: ;;
1.1 anton 350: *)
1.92 anton 351: AC_MSG_WARN([Using a generic machine description])
352: AC_MSG_WARN([Assuming C floats and doubles are IEEE floats and doubles (for SF@ DF@ SF! DF!)])
353: AC_MSG_WARN([FLUSH-ICACHE will do nothing, so END-CODE may not work properly!])
1.34 anton 354: machine=generic
1.97 anton 355: #I-cache flushing would be needed for dynamic code generation
1.136 anton 356: if test -z $no_dynamic_default; then
357: no_dynamic_default=1
358: AC_MSG_WARN([No I-cache flush code known, disabling dynamic native code generation])
359: fi
1.1 anton 360: esac
1.10 anton 361: AC_SUBST(host)
1.151 anton 362:
1.184 pazsan 363: MAKEINC=""
1.276 pazsan 364: GFORTH_EXE="true"
1.184 pazsan 365:
366: echo "Check for arch/$machine/$platform/gforth.ld ($EC_MODE)"
1.183 pazsan 367: if test x$EC_MODE = xtrue
368: then
1.184 pazsan 369: echo "Check for arch/$machine/$platform/gforth.ld"
370: if test -f arch/$machine/$platform/gforth.ld
1.183 pazsan 371: then
1.184 pazsan 372: LDFLAGS="-T ../arch/$machine/$platform/gforth.ld -Map \$@.map -cref --gc-sections $LDFLAGS"
373: if test x$platform = xnxt; then
1.183 pazsan 374: LIBS="$LIB_PATH/lib/gcc/arm-elf/$($CC --version | grep GCC | cut -d' ' -f3)/interwork/libgcc.a $LIB_PATH/arm-elf/lib/interwork/libc.a $LIBS"
375: fi
376: fi
1.184 pazsan 377: if test -f arch/$machine/$platform/make.inc
378: then
379: MAKEINC="include ../arch/$machine/$platform/make.inc"
1.276 pazsan 380: GFORTH_EXE="\$(MAKE) -f arch/$machine/$platform/make.inc \$@.exe"
1.184 pazsan 381: fi
1.183 pazsan 382: fi
1.184 pazsan 383: AC_SUBST(MAKEINC)
1.183 pazsan 384:
1.203 anton 385: AC_ARG_VAR(STACK_CACHE_REGS, [number of registers in the maximum stack cache state for gforth-fast and gforth-native (default platform-dependent).])
386:
387: test x$STACK_CACHE_REGS = x && STACK_CACHE_REGS=1
388: AC_DEFINE_UNQUOTED(STACK_CACHE_REGS, $STACK_CACHE_REGS,
389: [number of registers in the maximum stack cache state for gforth-fast and gforth-native])
1.151 anton 390: test x$STACK_CACHE_DEFAULT_FAST = x && STACK_CACHE_DEFAULT_FAST=1
391: AC_DEFINE_UNQUOTED(STACK_CACHE_DEFAULT_FAST, $STACK_CACHE_DEFAULT_FAST,
392: [number of registers in the default stack cache state for gforth-fast and gforth-native])
1.146 pazsan 393:
1.173 anton 394: test x$GCC_PR15242_WORKAROUND = x ||
395: AC_DEFINE_UNQUOTED(GCC_PR15242_WORKAROUND, $GCC_PR15242_WORKAROUND,
396: [force (1) or forbid (0) use of a workaround for a gcc performance bug])
397:
1.103 anton 398: dnl the following macro produces a warning with autoconf-2.1
399: AC_CHECK_SIZEOF(char *)
400: case "$ac_cv_sizeof_char_p" in
401: 2)
402: wordsize=16
403: ;;
404: 4)
405: wordsize=32
406: ;;
407: 8)
408: wordsize=64
409: ;;
410: esac
411:
1.183 pazsan 412: AC_CHECK_SIZEOF(void *)
413: case "$ac_cv_sizeof_void_p" in
414: 2)
415: vwordsize=16
416: ;;
417: 4)
418: vwordsize=32
419: ;;
420: 8)
421: vwordsize=64
422: ;;
423: esac
424:
1.103 anton 425: AC_CHECK_SIZEOF(char)
426: AC_CHECK_SIZEOF(short)
427: AC_CHECK_SIZEOF(int)
428: AC_CHECK_SIZEOF(long)
429: AC_CHECK_SIZEOF(long long)
430: AC_CHECK_SIZEOF(intptr_t)
431: AC_CHECK_SIZEOF(int128_t)
1.144 pazsan 432: AC_CHECK_SIZEOF(uint128_t)
1.103 anton 433:
434: AC_MSG_CHECKING([for a C type for cells])
435: ac_cv_int_type_cell=none
436: case "$ac_cv_sizeof_char_p" in
437: $ac_cv_sizeof_int)
438: ac_cv_int_type_cell=int
439: ;;
440: $ac_cv_sizeof_short)
441: ac_cv_int_type_cell=short
442: ;;
443: $ac_cv_sizeof_char)
444: ac_cv_int_type_cell=char
445: ;;
446: $ac_cv_sizeof_long)
447: ac_cv_int_type_cell=long
448: ;;
449: $ac_cv_sizeof_long_long)
450: ac_cv_int_type_cell="long long"
451: ;;
452: $ac_cv_sizeof_intptr_t)
453: ac_cv_int_type_cell="intptr_t"
454: ;;
455: esac
456: AC_MSG_RESULT($ac_cv_int_type_cell)
457: AC_DEFINE_UNQUOTED(CELL_TYPE,$ac_cv_int_type_cell,[an integer type that is as long as a pointer])
458:
1.153 pazsan 459: AC_MSG_CHECKING([for a C type for wydes])
460: ac_cv_wyde_type_cell=none
461: case 2 in
462: $ac_cv_sizeof_int)
463: ac_cv_wyde_type_cell=int
464: ;;
465: $ac_cv_sizeof_short)
466: ac_cv_wyde_type_cell=short
467: ;;
468: $ac_cv_sizeof_char)
469: ac_cv_wyde_type_cell=char
470: ;;
471: $ac_cv_sizeof_long)
472: ac_cv_wyde_type_cell=long
473: ;;
474: $ac_cv_sizeof_long_long)
475: ac_cv_wyde_type_cell="long long"
476: ;;
477: $ac_cv_sizeof_intptr_t)
478: ac_cv_wyde_type_cell="intptr_t"
479: ;;
480: esac
481: AC_MSG_RESULT($ac_cv_wyde_type_cell)
482: AC_DEFINE_UNQUOTED(WYDE_TYPE,$ac_cv_wyde_type_cell,[an integer type that is 2 bytes long])
483:
484: AC_MSG_CHECKING([for a C type for tetrabytes])
485: ac_cv_tetrabyte_type_cell=none
486: case 4 in
487: $ac_cv_sizeof_int)
488: ac_cv_tetrabyte_type_cell=int
489: ;;
490: $ac_cv_sizeof_short)
491: ac_cv_tetrabyte_type_cell=short
492: ;;
493: $ac_cv_sizeof_char)
494: ac_cv_tetrabyte_type_cell=char
495: ;;
496: $ac_cv_sizeof_long)
497: ac_cv_tetrabyte_type_cell=long
498: ;;
499: $ac_cv_sizeof_long_long)
500: ac_cv_tetrabyte_type_cell="long long"
501: ;;
502: $ac_cv_sizeof_intptr_t)
503: ac_cv_tetrabyte_type_cell="intptr_t"
504: ;;
505: esac
506: AC_MSG_RESULT($ac_cv_tetrabyte_type_cell)
507: AC_DEFINE_UNQUOTED(TETRABYTE_TYPE,$ac_cv_tetrabyte_type_cell,[an integer type that is 4 bytes long])
508:
1.277 pazsan 509: AC_MSG_CHECKING([for a C type for octabytes])
510: ac_cv_octabyte_type_cell=none
511: case 8 in
512: $ac_cv_sizeof_int)
513: ac_cv_octabyte_type_cell=int
514: ;;
515: $ac_cv_sizeof_short)
516: ac_cv_octabyte_type_cell=short
517: ;;
518: $ac_cv_sizeof_char)
519: ac_cv_octabyte_type_cell=char
520: ;;
521: $ac_cv_sizeof_long)
522: ac_cv_octabyte_type_cell=long
523: ;;
524: $ac_cv_sizeof_long_long)
525: ac_cv_octabyte_type_cell="long long"
526: ;;
527: $ac_cv_sizeof_intptr_t)
528: ac_cv_octabyte_type_cell="intptr_t"
529: ;;
530: esac
531: AC_MSG_RESULT($ac_cv_octabyte_type_cell)
532: AC_DEFINE_UNQUOTED(OCTABYTE_TYPE,$ac_cv_octabyte_type_cell,[an integer type that is 8 bytes long])
533:
1.103 anton 534: AC_MSG_CHECKING([for a C type for double-cells])
535: ac_cv_int_type_double_cell=none
536: case `expr 2 '*' "$ac_cv_sizeof_char_p"` in
537: $ac_cv_sizeof_short)
538: ac_cv_int_type_double_cell=short
539: ;;
540: $ac_cv_sizeof_int)
541: ac_cv_int_type_double_cell=int
542: ;;
543: $ac_cv_sizeof_long)
544: ac_cv_int_type_double_cell=long
545: ;;
546: $ac_cv_sizeof_long_long)
547: ac_cv_int_type_double_cell="long long"
548: ;;
549: $ac_cv_sizeof_intptr_t)
550: ac_cv_int_type_double_cell="intptr_t"
551: ;;
1.205 anton 552: $ac_cv_sizeof_int128_t)
1.103 anton 553: ac_cv_int_type_double_cell="int128_t"
554: ;;
555: esac
556: AC_MSG_RESULT($ac_cv_int_type_double_cell)
1.144 pazsan 557:
558: AC_MSG_CHECKING([for a C type for unsigned double-cells])
559: ac_cv_int_type_double_ucell=none
560: case `expr 2 '*' "$ac_cv_sizeof_char_p"` in
561: $ac_cv_sizeof_short)
562: ac_cv_int_type_double_ucell="unsigned short"
563: ;;
564: $ac_cv_sizeof_int)
565: ac_cv_int_type_double_ucell="unsigned int"
566: ;;
567: $ac_cv_sizeof_long)
568: ac_cv_int_type_double_ucell="unsigned long"
569: ;;
570: $ac_cv_sizeof_long_long)
571: ac_cv_int_type_double_ucell="unsigned long long"
572: ;;
573: $ac_cv_sizeof_intptr_t)
574: ac_cv_int_type_double_ucell="unsigned intptr_t"
575: ;;
576: $ac_cv_sizeof_uint128_t)
577: ac_cv_int_type_double_ucell="uint128_t"
578: ;;
579: esac
580: AC_MSG_RESULT($ac_cv_int_type_double_ucell)
581:
1.204 anton 582: if test "$ac_cv_int_type_double_cell" != none && \
583: test "$ac_cv_int_type_double_ucell" != none
1.144 pazsan 584: then
1.103 anton 585: AC_DEFINE_UNQUOTED(DOUBLE_CELL_TYPE,$ac_cv_int_type_double_cell,[an integer type that is twice as long as a pointer])
1.144 pazsan 586: AC_DEFINE_UNQUOTED(DOUBLE_UCELL_TYPE,$ac_cv_int_type_double_ucell,[an unsigned integer type that is twice as long as a pointer])
1.206 anton 587: OPTS=-ll
588: else
1.217 pazsan 589: if test "$ac_cv_sizeof_char_p" = 8; then
1.213 anton 590: OPTS="-ll -noll"
1.206 anton 591: else
592: OPTS=-noll
593: fi
1.103 anton 594: fi
1.207 anton 595:
1.258 anton 596: if grep FORCE_REG $srcdir/arch/$machine/machine.h >/dev/null; then
1.227 pazsan 597: OPTS2=''
598: for i in $OPTS; do OPTS2="$OPTS2 $i-reg"; done
599: OPTS="$OPTS2 $OPTS"
1.223 anton 600: else
601: AC_DEFINE_UNQUOTED(FORCE_REG_UNNECESSARY,,[defined if the platform does not need FORCE_REG])
1.207 anton 602: fi
1.206 anton 603: AC_SUBST(OPTS)
1.103 anton 604:
605: AC_TYPE_OFF_T
606: AC_CHECK_SIZEOF(off_t)
607: test $ac_cv_sizeof_off_t -gt $ac_cv_sizeof_char_p
608: ac_small_off_t=$?
609: AC_DEFINE_UNQUOTED(SMALL_OFF_T,$ac_small_off_t,[1 if off_t fits in a Cell])
1.1 anton 610:
1.109 anton 611: ENGINE_FLAGS=
612: AC_SUBST(ENGINE_FLAGS)
613:
614: # Try if GCC understands -fno-gcse
615:
616: AC_MSG_CHECKING([if $CC understands -fno-gcse])
617: CFLAGS_1="$CFLAGS"
618: CFLAGS="$CFLAGS -fno-gcse"
619: AC_TRY_COMPILE(,,ac_nogcse=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-gcse",ac_nogcse=no)
620: CFLAGS="$CFLAGS_1"
621: AC_MSG_RESULT($ac_nogcse)
622:
623: # Try if GCC understands -fno-strict-aliasing
624: AC_MSG_CHECKING([if $CC understands -fno-strict-aliasing])
625: CFLAGS_1="$CFLAGS"
626: CFLAGS="$CFLAGS -fno-strict-aliasing"
627: AC_TRY_COMPILE(,,ac_nostrictaliasing=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-strict-aliasing",ac_nostrictaliasing=no)
628: CFLAGS="$CFLAGS_1"
629: AC_MSG_RESULT($ac_nostrictaliasing)
630:
1.123 anton 631: # Try if GCC understands -fno-crossjumping
632: AC_MSG_CHECKING([if $CC understands -fno-crossjumping])
1.88 pazsan 633: CFLAGS_1="$CFLAGS"
1.123 anton 634: CFLAGS="$CFLAGS -fno-crossjumping"
1.125 anton 635: AC_TRY_COMPILE(,,ac_nocrossjumping=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-crossjumping",ac_nocrossjumping=no)
1.109 anton 636: CFLAGS="$CFLAGS_1"
1.124 pazsan 637: AC_MSG_RESULT($ac_nocrossjumping)
1.88 pazsan 638:
1.137 pazsan 639: # Try if GCC understands -fno-reorder-blocks
640: AC_MSG_CHECKING([if $CC understands -fno-reorder-blocks])
641: CFLAGS_1="$CFLAGS"
642: CFLAGS="$CFLAGS -fno-reorder-blocks"
643: AC_TRY_COMPILE(,,ac_noreorder_blocks=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-reorder-blocks",ac_noreorder_blocks=no)
644: CFLAGS="$CFLAGS_1"
645: AC_MSG_RESULT($ac_noreorder_blocks)
646:
1.189 anton 647: # Try if GCC understands -falign-labels=1
648: AC_MSG_CHECKING([if $CC understands -falign-labels=1])
649: CFLAGS_1="$CFLAGS"
650: CFLAGS="$CFLAGS -falign-labels=1"
1.194 anton 651: AC_TRY_COMPILE(,,ac_align_labels=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-labels=1",ac_align_labels=no)
1.189 anton 652: CFLAGS="$CFLAGS_1"
653: AC_MSG_RESULT($ac_align_labels)
654:
1.193 anton 655: # Try if GCC understands -falign-loops=1
656: AC_MSG_CHECKING([if $CC understands -falign-loops=1])
657: CFLAGS_1="$CFLAGS"
658: CFLAGS="$CFLAGS -falign-loops=1"
1.194 anton 659: AC_TRY_COMPILE(,,ac_align_loops=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-loops=1",ac_align_loops=no)
1.193 anton 660: CFLAGS="$CFLAGS_1"
661: AC_MSG_RESULT($ac_align_loops)
662:
663: # Try if GCC understands -falign-jumps=1
664: AC_MSG_CHECKING([if $CC understands -falign-jumps=1])
665: CFLAGS_1="$CFLAGS"
666: CFLAGS="$CFLAGS -falign-jumps=1"
1.194 anton 667: AC_TRY_COMPILE(,,ac_align_jumps=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-jumps=1",ac_align_jumps=no)
1.193 anton 668: CFLAGS="$CFLAGS_1"
669: AC_MSG_RESULT($ac_align_jumps)
670:
1.271 anton 671: if test -z "$LIBTOOL_CC"
672: then
673: LIBTOOL_CC="$CC"
674: # Try if GCC understands -Wimplicit-function-declaration
675: AC_MSG_CHECKING([if $CC understands -Wimplicit-function-declaration])
676: CFLAGS_1="$CFLAGS"
677: CFLAGS="$CFLAGS -Wimplicit-function-declaration"
678: AC_TRY_COMPILE(,,LIBTOOL_CC="$CC -Wimplicit-function-declaration",)
679: CFLAGS="$CFLAGS_1"
680: AC_MSG_RESULT($ac_align_jumps)
681: fi
682: AC_SUBST(LIBTOOL_CC)
683:
684:
685:
1.130 anton 686: # Try if GCC understands __attribute__((unused))
687: AC_MSG_CHECKING([how to suppress 'unused variable' warnings])
688: AC_TRY_COMPILE(,[int __attribute__((unused)) foo;], MAYBE_UNUSED='__attribute__((unused))',)
689: AC_DEFINE_UNQUOTED(MAYBE_UNUSED,$MAYBE_UNUSED,[attribute for possibly unused variables])
690: AC_MSG_RESULT($MAYBE_UNUSED)
691:
1.289 anton 692: # Try if GCC understands __thread
693: AC_MSG_CHECKING([whether gcc understands '__thread'])
694: AC_TRY_COMPILE(,[extern __thread int foo;],PER_THREAD='__thread',)
695: AC_DEFINE_UNQUOTED(PER_THREAD,$PER_THREAD,[storage class for thread-local variables])
696: AC_MSG_RESULT($PER_THREAD)
697:
1.195 anton 698: #try if m4 understands -s
699: AC_MSG_CHECKING([how to invoke m4])
1.196 anton 700: if m4 -s /dev/null >/dev/null 2>&1; then
1.195 anton 701: M4="m4 -s"
702: else
703: M4=m4
704: fi
705: AC_SUBST(M4)
706: AC_MSG_RESULT($M4)
707:
1.215 anton 708: #echo "machine='$machine'"
1.191 anton 709:
710: dnl AC_CHECK_PROG(asm_fs,asm.fs,arch/$machine/asm.fs,,$srcdir/arch/$machine)
1.275 pazsan 711: if test x$EC_MODE = xfalse
712: then
1.278 dvdkhlng 713: AS_IF([test -f $srcdir/arch/$machine/asm.fs],
714: [asm_fs=arch/$machine/asm.fs])
1.275 pazsan 715: fi
1.61 anton 716: AC_SUBST(asm_fs)
717:
1.191 anton 718: dnl AC_CHECK_PROG(disasm_fs,disasm.fs,arch/$machine/disasm.fs,,$srcdir/arch/$machine)
1.275 pazsan 719: if test x$EC_MODE = xfalse
720: then
1.278 dvdkhlng 721: AS_IF([test -f $srcdir/arch/$machine/disasm.fs],
722: [disasm_fs=arch/$machine/disasm.fs])
1.275 pazsan 723: fi
1.61 anton 724: AC_SUBST(disasm_fs)
725:
1.116 anton 726: AC_PATH_PROG(INSTALL_INFO,install-info,[echo '>>>>Please make info dir entry:'],$PATH:/sbin:/usr/sbin:/usr/local/sbin)
1.114 anton 727:
1.39 pazsan 728: case "$host_os" in
1.157 pazsan 729: *win32*)
730: # !!!FIXME!!! problems with cygwin and ';' as path separator
1.108 anton 731: DIRSEP="\\\\"
1.127 anton 732: PATHSEP=";"
1.142 anton 733: #we want the builtins of command.com/cmd.exe and its
734: # handling of .com files.
735: #$COMSPEC contains the name of the Windows shell;
736: # the ./ is there, because the bash does not recognize
737: # absolute DOS filenames
738: DEFAULTSYSTEMPREFIX="./$COMSPEC /c "
1.39 pazsan 739: ;;
1.97 anton 740: *darwin*)
741: #Darwin uses some funny preprocessor by default; eliminate it:
1.127 anton 742: AC_MSG_NOTICE([using -no-cpp-precomp on Darwin])
1.120 anton 743: CFLAGS="$CFLAGS -no-cpp-precomp"
1.98 anton 744: DIRSEP="/"
1.127 anton 745: PATHSEP=":"
1.141 anton 746: DEFAULTSYSTEMPREFIX=""
1.243 anton 747: #the following magic value was suggested by
748: #http://mail.python.org/pipermail/pythonmac-sig/2005-October/015190.html
749: AC_DEFINE_UNQUOTED(MACOSX_DEPLOYMENT_TARGET,"10.3",[an environment variable value needed by libtool on some MacOS X versions])
1.98 anton 750: ;;
1.246 pazsan 751: *linux*)
752: DIRSEP="/"
753: PATHSEP=":"
754: DEFAULTSYSTEMPREFIX=""
1.250 anton 755: if test -z "$LTDL_LIBRARY_PATH" -a "$wordsize" = 64; then
1.253 pazsan 756: LTDL_LIBRARY_PATH=`/sbin/ldconfig -p |tail -n +2 |sed 's/^.* => //'|sed 's|/[[^/]]*$||'| grep 64 | sort -u | tr '\n' : | sed -e 's/:$//'`
1.246 pazsan 757: fi
758: ;;
1.39 pazsan 759: *)
1.88 pazsan 760: DIRSEP="/"
1.127 anton 761: PATHSEP=":"
1.141 anton 762: DEFAULTSYSTEMPREFIX=""
1.39 pazsan 763: ;;
764: esac
1.88 pazsan 765: AC_SUBST(DIRSEP)
1.89 pazsan 766: AC_DEFINE_UNQUOTED(DIRSEP,'$DIRSEP',[a directory separator character])
1.127 anton 767: AC_SUBST(PATHSEP)
768: AC_DEFINE_UNQUOTED(PATHSEP,'$PATHSEP',[a path separator character])
1.141 anton 769: AC_SUBST(DEFAULTSYSTEMPREFIX)
770: AC_DEFINE_UNQUOTED(DEFAULTSYSTEMPREFIX,"$DEFAULTSYSTEMPREFIX",[default for environment variable GFORTHSYSTEMPREFIX])
1.250 anton 771: if test -n "$LTDL_LIBRARY_PATH"; then
772: AC_DEFINE_UNQUOTED(LTDL_LIBRARY_PATH,"$LTDL_LIBRARY_PATH",[Define LTDL_LIBRARY_PATH for 64 bit Linux])
773: fi
1.39 pazsan 774:
1.170 anton 775: #work around SELinux brain damage (from Andrew Haley <12t8f3jakb74g2c@news.supernews.com>)
1.172 anton 776: #This magic incantation seems to be completely undocumented.
777: AC_CHECK_PROG([MASSAGE_EXE],[chcon],[chcon -t unconfined_execmem_exec_t],[true])
1.170 anton 778:
1.1 anton 779: dnl Now a little support for DOS/DJGCC
1.276 pazsan 780: GFORTHFAST_EXE="$GFORTH_EXE"
781: GFORTHITC_EXE="$GFORTH_EXE"
782: GFORTHDITC_EXE="$GFORTH_EXE"
1.30 pazsan 783: AC_SUBST(GFORTH_EXE)
1.48 anton 784: AC_SUBST(GFORTHFAST_EXE)
1.83 anton 785: AC_SUBST(GFORTHITC_EXE)
1.30 pazsan 786: AC_SUBST(GFORTHDITC_EXE)
1.27 anton 787:
788: AC_SUBST(FORTHSIZES)
1.24 anton 789:
1.104 anton 790: dnl if test "$PEEPHOLE" = "yes"
791: dnl then
792: dnl PEEPHOLEFLAG="true"
793: dnl AC_DEFINE(HAS_PEEPHOLE,,[Define if you want to use peephole optimization])
794: dnl else
795: dnl PEEPHOLEFLAG="false"
796: dnl fi
797: PEEPHOLEFLAG="true"
1.79 pazsan 798: AC_SUBST(PEEPHOLEFLAG)
799:
1.1 anton 800: dnl copy commands for systems that don't have links
1.29 pazsan 801: AC_SUBST(LINK_KERNL)
802: LINK_KERNL=""
1.1 anton 803:
804: #if test $host_os=dos
805: #then
806: # echo Configuring for DOS!!!
807: # MAKE_EXE="coff2exe gforth"
1.29 pazsan 808: # LINK_KERNL='$(CP) kernl32l.fi kernel.fi'
1.1 anton 809: #fi
810:
811: dnl the following macro produces a warning with autoconf-2.1
812: AC_C_BIGENDIAN
1.23 pazsan 813: AC_SUBST(KERNEL)
1.1 anton 814: dnl ac_cv_c_bigendian is an undocumented variable of autoconf-2.1
1.256 pazsan 815: if test $ac_cv_c_bigendian != no; then
1.1 anton 816: bytesex=b
1.23 pazsan 817: KERNEL="kernl16b.fi kernl16l.fi kernl32b.fi kernl32l.fi kernl64b.fi kernl64l.fi"
1.1 anton 818: else
819: bytesex=l
1.23 pazsan 820: KERNEL="kernl16l.fi kernl16b.fi kernl32l.fi kernl32b.fi kernl64l.fi kernl64b.fi"
1.1 anton 821: fi
822:
1.91 anton 823: #check how to do asm(".skip 16")
1.169 anton 824: #echo "CFLAGS=$CFLAGS"
825: #echo "ac_link=$ac_link"
1.92 anton 826: AC_MSG_CHECKING([if and how we can waste code space])
1.279 dvdkhlng 827: if test -z "$skipcode" && test x$cross_compiling = xyes; then
828: # we cannot perform the AC_TRY_RUN check when cross-compiling.
829: skipcode=no
830: AC_MSG_RESULT([$skipcode, can't run checks since cross-compiling])
831: elif test -z "$skipcode"; then
1.148 anton 832: skipcode=no
833: CFLAGS_1="$CFLAGS"
834: CFLAGS="$CFLAGS $ENGINE_FLAGS"
1.136 anton 835: for i in ".skip 16" ".block 16" ".org .+16" ".=.+16" ".space 16"
836: do
1.91 anton 837: AC_TRY_RUN(
1.136 anton 838: [int foo(int,int,int);
1.91 anton 839: main()
840: {
1.136 anton 841: exit(foo(0,0,0)!=16);
1.91 anton 842: }
1.136 anton 843: int foo(int x, int y, int z)
1.91 anton 844: {
1.136 anton 845: static void *labels[]={&&label1, &&label2};
1.91 anton 846: if (x) {
1.136 anton 847: y++; /* workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12108 */
1.91 anton 848: label1:
1.148 anton 849: asm("$i"); /* or ".space 16" or somesuch */
1.136 anton 850: label2: ;
851: }
852: {
853: if (y) goto *labels[z]; /* workaround for gcc PR12108 */
854: return labels[1]-labels[0];
1.91 anton 855: }
1.136 anton 856: }]
1.92 anton 857: ,skipcode=$i; break
858: ,,)
1.136 anton 859: done
1.148 anton 860: CFLAGS=$CFLAGS_1
1.136 anton 861: fi
1.92 anton 862: AC_MSG_RESULT($skipcode)
863: if test "$skipcode" = no
864: then
1.136 anton 865: if test -z $no_dynamic_default; then
866: no_dynamic_default=1
867: AC_MSG_WARN(Disabling default dynamic native code generation)
868: fi
1.280 dvdkhlng 869: AC_DEFINE_UNQUOTED(SKIP16,asm(""),statement for skipping 16 bytes)
1.92 anton 870: else
871: AC_DEFINE_UNQUOTED(SKIP16,asm("$skipcode"),statement for skipping 16 bytes)
872: fi
1.91 anton 873:
1.174 anton 874: AC_MSG_CHECKING([if and how we can do comments in asm statements])
875: #the point here is to get asm statements that look different to
876: #gcc's "optimizer"
877: if test -z "$asmcomment"; then
878: asmcomment=no
879: CFLAGS_1="$CFLAGS"
880: CFLAGS="$CFLAGS $ENGINE_FLAGS"
1.176 anton 881: for i in '"# "' '"! "' '"; "'; do
1.174 anton 882: AC_TRY_COMPILE(,[asm($i"fluffystunk");],asmcomment=$i; break,)
883: done
884: CFLAGS=$CFLAGS_1
885: fi
886: AC_MSG_RESULT($asmcomment)
887: if test "$asmcomment" != no
888: then
889: AC_DEFINE_UNQUOTED(ASMCOMMENT,$asmcomment,[assembler comment start string])
890: fi
891:
1.136 anton 892: test "$no_dynamic_default" || no_dynamic_default=0
1.92 anton 893: AC_DEFINE_UNQUOTED(NO_DYNAMIC_DEFAULT,$no_dynamic_default,default value for no_dynamic)
1.91 anton 894:
1.1 anton 895: dnl Checks for programs.
896: AC_PROG_LN_S
1.95 anton 897: AC_PROG_INSTALL
1.163 pazsan 898: AC_CHECK_PROGS(TEXI2DVI,texi2dvi4a2ps texi2dvi)
1.1 anton 899:
1.288 anton 900: dnl check for the presence of Emacs
901: AC_CHECK_PROGS(EMACS,emacs xemacs)
902: test -n "$EMACS" && gforth_elc=gforth.elc
903: AC_SUBST(gforth_elc)
904:
1.198 anton 905: dnl MacOS X has a libtool that does something else
1.264 pazsan 906: AC_CHECK_PROGS(GNU_LIBTOOL,"glibtool --tag=CC" libtool)
1.198 anton 907:
1.269 anton 908: dnl Checks for library functions
909: dnl This check is just for making later checks link with libm.
910: dnl using sin here is no good idea since it is built-into gcc and typechecked
911: AC_CHECK_LIB(m,asin)
912: AC_CHECK_LIB(ltdl,lt_dlinit)
913:
914: if test -n "$GNU_LIBTOOL" -a $ac_cv_lib_ltdl_lt_dlinit = yes; then
1.258 anton 915: build_libcc_named=build-libcc-named
916: else
917: build_libcc_named=""
1.274 anton 918: AC_MSG_WARN([No GNU_LIBTOOL found, skip pre-building libcc-based libraries])
1.258 anton 919: fi
920: AC_SUBST(build_libcc_named)
921:
1.274 anton 922:
923: if test -z "$GNU_LIBTOOL"; then
924: AC_MSG_WARN([No GNU_LIBTOOL found, using "libtool" as name.])
925: AC_MSG_WARN([libcc.fs won't work until you have installed (GNU) libtool.])
926: GNU_LIBTOOL=libtool
927: fi
928:
1.235 anton 929: #check for libffi 2.x
1.237 anton 930: AC_CHECK_HEADER(ffi.h,FFI_H_NAME=ffi.h,)
931: if test -z "$FFI_H_NAME"; then
932: AC_CHECK_HEADER(ffi/ffi.h,FFI_H_NAME=ffi/ffi.h,)
933: fi
934: AC_SUBST(FFI_H_NAME)
1.286 pazsan 935: AC_CHECK_LIB(ffi,ffi_call,LIBS="$LIBS")
1.241 anton 936: if test -n "$FFI_H_NAME" -a $ac_cv_lib_ffi_ffi_call = yes
1.235 anton 937: then
938: LIBFFIFLAG="true"
1.236 anton 939: LIBCC_BUILD_SRC="$LIBCC_BUILD_SRC libffi.fs"
1.235 anton 940: else
941: LIBFFIFLAG="false"
942: fi
943: #check for ffcall libraries
944: #unfortunately, these four calls are separated out into a library each.
1.286 pazsan 945: AC_CHECK_LIB(avcall,__builtin_avcall,LIBS="$LIBS")
1.234 pazsan 946: dnl AC_CHECK_LIB(callback,__vacall_r)
947: dnl AC_CHECK_LIB(vacall,vacall)
948: dnl AC_CHECK_LIB(trampoline,alloc_trampoline)
1.235 anton 949: if test $ac_cv_lib_avcall___builtin_avcall = yes; then
950: FFCALLFLAG="true"
1.236 anton 951: LIBCC_BUILD_SRC="$LIBCC_BUILD_SRC fflib.fs"
1.235 anton 952: else
953: FFCALLFLAG="false"
954: fi
955: if test $LIBFFIFLAG = false -a $FFCALLFLAG = false; then
956: AC_MSG_WARN([The (old) lib.fs foreign function interface needs either libffi or the ffcall libraries])
957: fi
958: AC_SUBST(LIBFFIFLAG)
959: AC_SUBST(FFCALLFLAG)
1.236 anton 960: AC_SUBST(LIBCC_BUILD_SRC)
1.32 pazsan 961: if test "$host_os" != "nextstep3"
962: then
963: AC_FUNC_MEMCMP
964: fi
1.25 pazsan 965: AC_REPLACE_FUNCS(memmove strtoul pow10 strerror strsignal atanh)
1.97 anton 966: AC_FUNC_FSEEKO
1.186 anton 967: AC_CHECK_FUNCS(ftello dlopen sys_siglist getrusage nanosleep)
1.111 anton 968: AC_CHECK_TYPES(stack_t,,,[#include <signal.h>])
1.19 anton 969: AC_DECL_SYS_SIGLIST
1.138 anton 970: AC_CHECK_FUNC(getopt_long,[true],[AC_LIBOBJ(getopt) AC_LIBOBJ(getopt1)])
1.90 anton 971: AC_CHECK_FUNCS(expm1 log1p)
972: AC_REPLACE_FUNCS(rint ecvt)
1.1 anton 973: dnl No check for select, because our replacement is no good under
974: dnl anything but DOS
1.277 pazsan 975: AC_CHECK_HEADERS(sys/mman.h fnmatch.h alloca.h wchar.h endian.h)
1.63 anton 976: AC_FUNC_FNMATCH
1.87 pazsan 977: test $ac_cv_func_fnmatch_works = yes || AC_LIBOBJ(fnmatch)
1.255 anton 978: AC_CHECK_FUNCS(mmap sysconf getpagesize wcwidth)
1.34 anton 979: AM_PATH_LISPDIR
1.1 anton 980:
1.183 pazsan 981: kernel_fi=kernl${vwordsize}${bytesex}.fi
1.178 pazsan 982: include_fi=kernl${wordsize}${bytesex}${EC}.fi
1.23 pazsan 983: AC_SUBST(kernel_fi)
1.178 pazsan 984: AC_SUBST(include_fi)
1.50 jwilke 985:
1.292 ! pazsan 986: # Find installed Gforth
! 987: AC_MSG_CHECKING([for gforth])
! 988: GFORTH="`cd / && which gforth 2>/dev/null`"
! 989: #the "$srcdir" = "." test defends agains the "../" bug in gforth-0.6.2
! 990: (cd / && $GFORTH -e bye >/dev/null 2>/dev/null && test "$srcdir" = ".") || GFORTH=""
! 991: if test -z "$GFORTH"; then
! 992: PREFORTH='echo "You need to configure with a gforth in \$PATH to build this part" && false'
! 993: KFORTH='echo "You need to configure with a gforth in \$PATH to build this part" && false'
! 994: kernel_anti_dependence=''
! 995: else
! 996: GFORTH_FI=`cd / && $GFORTH --debug -e bye 2>&1 |grep "Opened image file: "|sed 's/Opened image file: //'`
! 997: PREFORTH="$GFORTH -i $GFORTH_FI" ;
! 998: KERNLX_FI=`echo $GFORTH_FI | sed -e s/lib/share/g -e s/gforth.fi/kernl*.fi/g`
! 999: KFORTH="$GFORTH -i `echo $KERNLX_FI`" ;
! 1000: kernel_anti_dependence='$(kernel_fi)'
! 1001: fi
! 1002: AC_SUBST(PREFORTH)
! 1003: AC_SUBST(KFORTH)
! 1004: AC_SUBST(kernel_anti_dependence)
! 1005: AC_MSG_RESULT($PREFORTH)
! 1006:
1.76 anton 1007: #this breaks bindists
1008: #dnl replace srource directory by absolute value
1009: #if test $srcdir = "."; then srcdir=`pwd`
1010: #fi
1.8 anton 1011:
1.34 anton 1012: AC_SUBST(machine)
1.95 anton 1013: AC_CONFIG_FILES([
1.31 anton 1014: Makefile
1.45 pazsan 1015: Makedist
1.43 anton 1016: gforthmi
1.80 anton 1017: vmgen
1.79 pazsan 1018: machpc.fs
1.159 pazsan 1019: envos.fs
1.223 anton 1020: preforth
1.292 ! pazsan 1021: kforth
1.35 anton 1022: engine/Makefile
1.188 anton 1023: engine/libcc.h
1.161 pazsan 1024: doc/version.texi
1025: build-ec ])
1.95 anton 1026: AC_CONFIG_COMMANDS([stamp-h],[[echo timestamp > stamp-h
1.43 anton 1027: chmod +x gforthmi
1.80 anton 1028: chmod +x vmgen
1.162 pazsan 1029: chmod +x build-ec
1.223 anton 1030: chmod +x preforth
1.292 ! pazsan 1031: chmod +x kforth
1.188 anton 1032: test -d kernel||mkdir kernel
1.258 anton 1033: if test $srcdir != "."; then ln -sf $srcdir/gforth.el .; fi
1.188 anton 1034: $srcdir/mkinstalldirs include/gforth/$PACKAGE_VERSION
1.262 anton 1035: $srcdir/mkinstalldirs arch/$machine
1036: ln -sf ../../../engine/config.h ../../../engine/libcc.h include/gforth/$PACKAGE_VERSION]],
1037: [PACKAGE_VERSION=$PACKAGE_VERSION
1038: machine=$machine])
1.95 anton 1039: AC_OUTPUT
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>