![]() ![]() | ![]() |
Removed unnecessary quoting of tr arguments
1: dnl Process this file with autoconf to produce a configure script. 2: 3: #Copyright (C) 1995,1996,1997,1998,2000,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc. 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 9: #as published by the Free Software Foundation, either version 3 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 18: #along with this program. If not, see http://www.gnu.org/licenses/. 19: 20: 21: dnl We use some automake macros here, 22: dnl but don't use automake for creating Makefile.in 23: AC_INIT([gforth],[0.6.9-20081006],[https://savannah.gnu.org/bugs/?func=addbug&group=gforth]) 24: AC_PREREQ(2.54) 25: #snapshots have numbers major.minor.release-YYYYMMDD 26: #note that lexicographic ordering must be heeded. 27: #I.e., 0.4.1-YYYYMMDD must not exist before 0.4.1! 28: UPDATED="October 10, 2008" 29: AC_SUBST(UPDATED) 30: AC_CONFIG_HEADERS(engine/config.h) 31: 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) 40: AC_SUBST(LTDL_LDLIBS) 41: 42: #suppress the "-g -O2" default 43: test "$CFLAGS" || CFLAGS=-O2 44: 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: 53: AC_SUBST(PROFEXES) 54: AC_SUBST(PROFOBJS) 55: AC_ARG_ENABLE(prof, 56: AC_HELP_STRING([--enable-prof], 57: [ Build gforth-prof, which outputs frequently occuring 58: sequences of primitives.]), 59: ,enable_prof=no) 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' 62: fi 63: 64: AC_ARG_WITH(debug, 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.], 69: if test "$withval" = "yes"; then DEBUGFLAG=-g; fi) 70: 71: GCC_LD="\$(GCC)" 72: EC_MODE="false" 73: EC="" 74: engine2='engine2$(OPT).o' 75: engine_fast2='engine-fast2$(OPT).o' 76: no_dynamic="" 77: image_i="" 78: signals_o="io.o signals.o" 79: 80: AC_ARG_WITH(ec, 81: AC_HELP_STRING([--with-ec=<arch>], 82: [ Build gforth for systems without OS.]), 83: [if test "$withval" = "no"; then 84: echo "defining hosted system" 85: else 86: echo "defining standalone system (${withval})" 87: AC_DEFINE(STANDALONE,,[Define if you want a Gforth without OS]) 88: EC_MODE="true" 89: EC="-ec" 90: engine2="" 91: engine_fast2="" 92: no_dynamic="-DNO_DYNAMIC" 93: image_i="image.i" 94: if test "$withval" != "yes"; then 95: signals_o="io-${withval}.o" 96: else 97: signals_o="io.o" 98: fi 99: GCC_PATH=$(which $CC) 100: LIB_PATH=${GCC_PATH%/*/*} 101: GCC_LD="\$(LD)" 102: platform=${withval} 103: fi]) 104: 105: #variables mentioned in INSTALL 106: AC_ARG_VAR(CC, [The C compiler (must support GNU C 2.x).]) 107: AC_ARG_VAR(FORTHSIZES, [Gforth command line options for the default stack and dictionary sizes (see INSTALL).]) 108: AC_ARG_VAR(STACK_CACHE_REGS, [number of registers in the maximum stack cache state for gforth-fast and gforth-native (default platform-dependent).]) 109: AC_ARG_VAR(STACK_CACHE_DEFAULT_FAST, [number of registers in the default stack cache state for gforth-fast and gforth-native (default 1).]) 110: 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)]) 111: AC_ARG_VAR(LIBCC_BUILD_SRC, [(Additional) libcc interface source files that should be processed on building and installation (default none)]) 112: 113: AC_ARG_VAR(ac_cv_sizeof_char_p, [sizeof(char *)]) 114: AC_ARG_VAR(ac_cv_sizeof_void_p, [sizeof(void *)]) 115: AC_ARG_VAR(ac_cv_sizeof_char, [sizeof(char)]) 116: AC_ARG_VAR(ac_cv_sizeof_short, [sizeof(short)]) 117: AC_ARG_VAR(ac_cv_sizeof_int, [sizeof(int)]) 118: AC_ARG_VAR(ac_cv_sizeof_long, [sizeof(long)]) 119: AC_ARG_VAR(ac_cv_sizeof_long_long, [sizeof(long long)]) 120: AC_ARG_VAR(ac_cv_sizeof_intptr_t, [sizeof(intptr_t)]) 121: AC_ARG_VAR(ac_cv_c_bigendian, [Is the target big-endian ("yes" or "no")?]) 122: AC_ARG_VAR(no_dynamic_default, [run gforth with --dynamic (0) or --no-dynamic (1) by default]) 123: AC_ARG_VAR(condbranch_opt, [enable (1) or disable (0) using two dispatches for conditional branches]) 124: AC_ARG_VAR(skipcode, [assembly code for skipping 16 bytes of code]) 125: AC_ARG_VAR(asmcomment, [assembler comment start string]) 126: AC_ARG_VAR(arm_cacheflush, [file containing ARM cacheflush function (without .c)]) 127: AC_ARG_VAR(LTDL_LIBRARY_PATH, [additional directories for libltdl (for some 64-bit platforms)]) 128: 129: #set up feature test macros, so the tests get them right: 130: # turn on all POSIX, SUSv3, and GNU features if available 131: AC_GNU_SOURCE 132: dnl AC_DEFINE_UNQUOTED([_GNU_SOURCE],1,[feature test macro]) 133: 134: dnl Don't define _POSIX_SOURCE etc. because some OSs (in particular 135: dnl MacOSX) disable some features then (MacOSX checks for _POSIX_SOURCE, 136: dnl but not for _XOPEN_SOURCE) 137: dnl AC_DEFINE_UNQUOTED([_POSIX_SOURCE],1,[feature test macro]) 138: dnl AC_DEFINE_UNQUOTED([_POSIX_C_SOURCE],199506L,[feature test macro]) 139: dnl AC_DEFINE_UNQUOTED([_XOPEN_SOURCE],600,[feature test macro]) 140: # turn on large file support with 64-bit off_t where available 141: AC_SYS_LARGEFILE 142: dnl AC_DEFINE_UNQUOTED([_LARGEFILE_SOURCE],1,[feature test macro]) 143: dnl AC_DEFINE_UNQUOTED([_FILE_OFFSET_BITS],64,[feature test macro]) 144: 145: #currently we force direct threading this way. Eventually we should 146: #setup in the arch and engine files right 147: 148: AC_PROG_CC 149: 150: test "$GCC" = "yes" || AC_MSG_ERROR(Gforth uses GNU C extensions and requires GCC 2.0 or higher) 151: 152: AC_MSG_CHECKING([whether to use two dispatches per conditional branch]) 153: test x$condbranch_opt = x && 154: if ($CC -v 2>&1 |grep 'gcc version 3' >/dev/null); then 155: condbranch_opt=0 156: else 157: condbranch_opt=1 158: fi 159: AC_MSG_RESULT($condbranch_opt) 160: AC_SUBST(condbranch_opt) 161: 162: AC_SUBST(CC) 163: AC_SUBST(GCC_LD) 164: AC_SUBST(DEBUGFLAG) 165: AC_SUBST(EC) 166: AC_SUBST(EC_MODE) 167: AC_SUBST(engine2) 168: AC_SUBST(engine_fast2) 169: AC_SUBST(no_dynamic) 170: AC_SUBST(image_i) 171: AC_SUBST(signals_o) 172: 173: #this is used to disable some (not generally essential) part of the 174: #Makefile that some makes don't grok. It would be better to test for 175: #this specific Makefile feature than the make version. 176: AC_MSG_CHECKING(make type) 177: make_type=`make -n -v 2>&1|grep 'ake'|sed 's/ake .*/ake/'` 178: GNUMAKE='#' 179: test "$make_type" = "GNU Make" && GNUMAKE='' 180: AC_MSG_RESULT($make_type) 181: AC_SUBST(GNUMAKE) 182: 183: AC_MSG_CHECKING([whether the linker accepts -export-dynamic]) 184: OLDLDFLAGS=$LDFLAGS 185: LDFLAGS="$LDFLAGS -export-dynamic" 186: dnl AC_TRY_LINK gives false positive on rs6000-ibm-aix4.2.1.0 187: dnl AC_TRY_LINK(,,ac_export_dynamic=yes,ac_export_dynamic=no) 188: AC_TRY_RUN(main(){exit(0);},ac_export_dynamic=yes,ac_export_dynamic=no,ac_export_dynamic=no) 189: test $ac_export_dynamic = yes|| LDFLAGS=$OLDLDFLAGS 190: AC_MSG_RESULT($ac_export_dynamic) 191: 192: #terminology is a bit unusual here: The host is the system on which 193: #gforth will run; the system on which configure will run is the `build' 194: AC_CANONICAL_HOST 195: case "$host_cpu" in 196: arm*) 197: machine=arm 198: CFLAGS="$CFLAGS -fomit-frame-pointer" 199: if test x$platform = xnxt; then 200: CFLAGS="$CFLAGS -mthumb -mthumb-interwork" 201: fi 202: if test -z $arm_cacheflush; then 203: case "$host_os" in 204: *linux*) 205: arm_cacheflush=arch/arm/cacheflush-linux 206: ;; 207: *) 208: no_dynamic_default=1 209: arm_cacheflush=arch/arm/cacheflush0 210: AC_MSG_WARN([No I-cache flush code known, disabling dynamic native code generation]) 211: ;; 212: esac 213: fi 214: AC_LIBSOURCES([../arch/arm/cacheflush0, dnl 215: ../arch/arm/cacheflush-linux]) 216: AC_LIBOBJ(../$arm_cacheflush) 217: #longer skipcodes lead to problems on ARM, and it uses 218: #only 4-byte alignment anyway 219: test "$skipcode" || skipcode="nop" 220: ;; 221: hppa*) 222: machine=hppa 223: $srcdir/mkinstalldirs arch/hppa 224: AC_LIBOBJ(../arch/hppa/cache) 225: #-N needed for --dynamic <M4U3b.3790$9d.317@news.cpqcorp.net> 226: LDFLAGS="$LDFLAGS -Xlinker -N" 227: LIBS="$LIBS -L/lib/pa1.1/" 228: ;; 229: sparc*) 230: machine=sparc 231: ;; 232: i386) 233: machine=386 234: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" 235: ;; 236: i486) 237: machine=386 238: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr -m486" 239: ;; 240: i*86) 241: machine=386 242: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" 243: CFLAGS_1="$CFLAGS" 244: CFLAGS="$CFLAGS -march=pentium" 245: AC_TRY_COMPILE(,,,CFLAGS="$CFLAGS_1 -m486") 246: ;; 247: x86_64) 248: case $CC 249: in 250: *-m32*) 251: machine=386 252: CFLAGS="$CFLAGS -fomit-frame-pointer -fforce-addr" 253: CFLAGS_1="$CFLAGS" 254: CFLAGS="$CFLAGS -march=athlon64" 255: ;; 256: *) 257: machine=amd64 258: ;; 259: esac 260: ;; 261: ia64*) 262: machine=ia64 263: AC_LIBOBJ(../arch/ia64/flush_icache_block) 264: test "$skipcode" || skipcode="nop.i 0" 265: #".skip 16" passes the test below, 266: # but gives an assembler error in engine 267: ;; 268: m68k) 269: machine=m68k 270: CFLAGS="$CFLAGS -fomit-frame-pointer" 271: if test "$host_os" = "nextstep3" 272: then 273: AC_LIBOBJ(termios) 274: fi 275: ;; 276: mips*) 277: machine=mips 278: #dynamic native code has the following problems on MIPS: 279: # 280: #1) J/JAL seems relocatable, but is are only 281: #relocatable within a 256MB-segment. While we try to 282: #get the linker to arrange this, there is no guarantee 283: #that this will succeed (and if the user uses a lot of 284: #memory, it is likely to fail). 285: # 286: #2) The way we generate dynamic native code may 287: #violate MIPS architectural restrictions (in 288: #particular, the delay slots of LW, MFLO, etc.) 289: # 290: #Therefore we disable dynamic native code by default: 291: if test -z $no_dynamic_default; then 292: no_dynamic_default=1 293: AC_MSG_WARN([Disabling default dynamic native code generation (relocation and delay slot issues)]) 294: fi 295: ;; 296: alpha*) 297: machine=alpha 298: #full IEEE FP support for more uniformity across platforms: 299: CFLAGS="$CFLAGS -mieee" 300: ;; 301: power*|rs6000) 302: machine=power 303: $srcdir/mkinstalldirs arch/power 304: AC_CHECK_FUNC(_sync_cache_range,[true],[AC_LIBOBJ(../arch/power/_sync_cache_range)]) 305: #long long is broken on (at least) gcc-2.95.* for PPC 306: test x$ac_cv_sizeof_long_long = x && 307: ($CC -v 2>&1 |grep 'gcc version 2.95' >/dev/null) && 308: ac_cv_sizeof_long_long=0 309: #The only architecture with enough callee-saved registers 310: test x$STACK_CACHE_REGS = x && STACK_CACHE_REGS=3 311: #or use 2, hardly slower at run-time and starts up faster 312: ;; 313: *) 314: AC_MSG_WARN([Using a generic machine description]) 315: AC_MSG_WARN([Assuming C floats and doubles are IEEE floats and doubles (for SF@ DF@ SF! DF!)]) 316: AC_MSG_WARN([FLUSH-ICACHE will do nothing, so END-CODE may not work properly!]) 317: machine=generic 318: #I-cache flushing would be needed for dynamic code generation 319: if test -z $no_dynamic_default; then 320: no_dynamic_default=1 321: AC_MSG_WARN([No I-cache flush code known, disabling dynamic native code generation]) 322: fi 323: esac 324: AC_SUBST(host) 325: 326: MAKEINC="" 327: 328: echo "Check for arch/$machine/$platform/gforth.ld ($EC_MODE)" 329: if test x$EC_MODE = xtrue 330: then 331: echo "Check for arch/$machine/$platform/gforth.ld" 332: if test -f arch/$machine/$platform/gforth.ld 333: then 334: LDFLAGS="-T ../arch/$machine/$platform/gforth.ld -Map \$@.map -cref --gc-sections $LDFLAGS" 335: if test x$platform = xnxt; then 336: 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" 337: fi 338: fi 339: if test -f arch/$machine/$platform/make.inc 340: then 341: MAKEINC="include ../arch/$machine/$platform/make.inc" 342: fi 343: fi 344: AC_SUBST(MAKEINC) 345: 346: AC_ARG_VAR(STACK_CACHE_REGS, [number of registers in the maximum stack cache state for gforth-fast and gforth-native (default platform-dependent).]) 347: 348: test x$STACK_CACHE_REGS = x && STACK_CACHE_REGS=1 349: AC_DEFINE_UNQUOTED(STACK_CACHE_REGS, $STACK_CACHE_REGS, 350: [number of registers in the maximum stack cache state for gforth-fast and gforth-native]) 351: test x$STACK_CACHE_DEFAULT_FAST = x && STACK_CACHE_DEFAULT_FAST=1 352: AC_DEFINE_UNQUOTED(STACK_CACHE_DEFAULT_FAST, $STACK_CACHE_DEFAULT_FAST, 353: [number of registers in the default stack cache state for gforth-fast and gforth-native]) 354: 355: test x$GCC_PR15242_WORKAROUND = x || 356: AC_DEFINE_UNQUOTED(GCC_PR15242_WORKAROUND, $GCC_PR15242_WORKAROUND, 357: [force (1) or forbid (0) use of a workaround for a gcc performance bug]) 358: 359: dnl the following macro produces a warning with autoconf-2.1 360: AC_CHECK_SIZEOF(char *) 361: case "$ac_cv_sizeof_char_p" in 362: 2) 363: wordsize=16 364: ;; 365: 4) 366: wordsize=32 367: ;; 368: 8) 369: wordsize=64 370: ;; 371: esac 372: 373: AC_CHECK_SIZEOF(void *) 374: case "$ac_cv_sizeof_void_p" in 375: 2) 376: vwordsize=16 377: ;; 378: 4) 379: vwordsize=32 380: ;; 381: 8) 382: vwordsize=64 383: ;; 384: esac 385: 386: AC_CHECK_SIZEOF(char) 387: AC_CHECK_SIZEOF(short) 388: AC_CHECK_SIZEOF(int) 389: AC_CHECK_SIZEOF(long) 390: AC_CHECK_SIZEOF(long long) 391: AC_CHECK_SIZEOF(intptr_t) 392: AC_CHECK_SIZEOF(int128_t) 393: AC_CHECK_SIZEOF(uint128_t) 394: 395: AC_MSG_CHECKING([for a C type for cells]) 396: ac_cv_int_type_cell=none 397: case "$ac_cv_sizeof_char_p" in 398: $ac_cv_sizeof_int) 399: ac_cv_int_type_cell=int 400: ;; 401: $ac_cv_sizeof_short) 402: ac_cv_int_type_cell=short 403: ;; 404: $ac_cv_sizeof_char) 405: ac_cv_int_type_cell=char 406: ;; 407: $ac_cv_sizeof_long) 408: ac_cv_int_type_cell=long 409: ;; 410: $ac_cv_sizeof_long_long) 411: ac_cv_int_type_cell="long long" 412: ;; 413: $ac_cv_sizeof_intptr_t) 414: ac_cv_int_type_cell="intptr_t" 415: ;; 416: esac 417: AC_MSG_RESULT($ac_cv_int_type_cell) 418: AC_DEFINE_UNQUOTED(CELL_TYPE,$ac_cv_int_type_cell,[an integer type that is as long as a pointer]) 419: 420: AC_MSG_CHECKING([for a C type for wydes]) 421: ac_cv_wyde_type_cell=none 422: case 2 in 423: $ac_cv_sizeof_int) 424: ac_cv_wyde_type_cell=int 425: ;; 426: $ac_cv_sizeof_short) 427: ac_cv_wyde_type_cell=short 428: ;; 429: $ac_cv_sizeof_char) 430: ac_cv_wyde_type_cell=char 431: ;; 432: $ac_cv_sizeof_long) 433: ac_cv_wyde_type_cell=long 434: ;; 435: $ac_cv_sizeof_long_long) 436: ac_cv_wyde_type_cell="long long" 437: ;; 438: $ac_cv_sizeof_intptr_t) 439: ac_cv_wyde_type_cell="intptr_t" 440: ;; 441: esac 442: AC_MSG_RESULT($ac_cv_wyde_type_cell) 443: AC_DEFINE_UNQUOTED(WYDE_TYPE,$ac_cv_wyde_type_cell,[an integer type that is 2 bytes long]) 444: 445: AC_MSG_CHECKING([for a C type for tetrabytes]) 446: ac_cv_tetrabyte_type_cell=none 447: case 4 in 448: $ac_cv_sizeof_int) 449: ac_cv_tetrabyte_type_cell=int 450: ;; 451: $ac_cv_sizeof_short) 452: ac_cv_tetrabyte_type_cell=short 453: ;; 454: $ac_cv_sizeof_char) 455: ac_cv_tetrabyte_type_cell=char 456: ;; 457: $ac_cv_sizeof_long) 458: ac_cv_tetrabyte_type_cell=long 459: ;; 460: $ac_cv_sizeof_long_long) 461: ac_cv_tetrabyte_type_cell="long long" 462: ;; 463: $ac_cv_sizeof_intptr_t) 464: ac_cv_tetrabyte_type_cell="intptr_t" 465: ;; 466: esac 467: AC_MSG_RESULT($ac_cv_tetrabyte_type_cell) 468: AC_DEFINE_UNQUOTED(TETRABYTE_TYPE,$ac_cv_tetrabyte_type_cell,[an integer type that is 4 bytes long]) 469: 470: AC_MSG_CHECKING([for a C type for double-cells]) 471: ac_cv_int_type_double_cell=none 472: case `expr 2 '*' "$ac_cv_sizeof_char_p"` in 473: $ac_cv_sizeof_short) 474: ac_cv_int_type_double_cell=short 475: ;; 476: $ac_cv_sizeof_int) 477: ac_cv_int_type_double_cell=int 478: ;; 479: $ac_cv_sizeof_long) 480: ac_cv_int_type_double_cell=long 481: ;; 482: $ac_cv_sizeof_long_long) 483: ac_cv_int_type_double_cell="long long" 484: ;; 485: $ac_cv_sizeof_intptr_t) 486: ac_cv_int_type_double_cell="intptr_t" 487: ;; 488: $ac_cv_sizeof_int128_t) 489: ac_cv_int_type_double_cell="int128_t" 490: ;; 491: esac 492: AC_MSG_RESULT($ac_cv_int_type_double_cell) 493: 494: AC_MSG_CHECKING([for a C type for unsigned double-cells]) 495: ac_cv_int_type_double_ucell=none 496: case `expr 2 '*' "$ac_cv_sizeof_char_p"` in 497: $ac_cv_sizeof_short) 498: ac_cv_int_type_double_ucell="unsigned short" 499: ;; 500: $ac_cv_sizeof_int) 501: ac_cv_int_type_double_ucell="unsigned int" 502: ;; 503: $ac_cv_sizeof_long) 504: ac_cv_int_type_double_ucell="unsigned long" 505: ;; 506: $ac_cv_sizeof_long_long) 507: ac_cv_int_type_double_ucell="unsigned long long" 508: ;; 509: $ac_cv_sizeof_intptr_t) 510: ac_cv_int_type_double_ucell="unsigned intptr_t" 511: ;; 512: $ac_cv_sizeof_uint128_t) 513: ac_cv_int_type_double_ucell="uint128_t" 514: ;; 515: esac 516: AC_MSG_RESULT($ac_cv_int_type_double_ucell) 517: 518: if test "$ac_cv_int_type_double_cell" != none && \ 519: test "$ac_cv_int_type_double_ucell" != none 520: then 521: AC_DEFINE_UNQUOTED(DOUBLE_CELL_TYPE,$ac_cv_int_type_double_cell,[an integer type that is twice as long as a pointer]) 522: AC_DEFINE_UNQUOTED(DOUBLE_UCELL_TYPE,$ac_cv_int_type_double_ucell,[an unsigned integer type that is twice as long as a pointer]) 523: OPTS=-ll 524: else 525: if test "$ac_cv_sizeof_char_p" = 8; then 526: OPTS="-ll -noll" 527: else 528: OPTS=-noll 529: fi 530: fi 531: 532: if grep FORCE_REG arch/$machine/machine.h >/dev/null; then 533: OPTS2='' 534: for i in $OPTS; do OPTS2="$OPTS2 $i-reg"; done 535: OPTS="$OPTS2 $OPTS" 536: else 537: AC_DEFINE_UNQUOTED(FORCE_REG_UNNECESSARY,,[defined if the platform does not need FORCE_REG]) 538: fi 539: AC_SUBST(OPTS) 540: 541: AC_TYPE_OFF_T 542: AC_CHECK_SIZEOF(off_t) 543: test $ac_cv_sizeof_off_t -gt $ac_cv_sizeof_char_p 544: ac_small_off_t=$? 545: AC_DEFINE_UNQUOTED(SMALL_OFF_T,$ac_small_off_t,[1 if off_t fits in a Cell]) 546: 547: ENGINE_FLAGS= 548: AC_SUBST(ENGINE_FLAGS) 549: 550: # Try if GCC understands -fno-gcse 551: 552: AC_MSG_CHECKING([if $CC understands -fno-gcse]) 553: CFLAGS_1="$CFLAGS" 554: CFLAGS="$CFLAGS -fno-gcse" 555: AC_TRY_COMPILE(,,ac_nogcse=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-gcse",ac_nogcse=no) 556: CFLAGS="$CFLAGS_1" 557: AC_MSG_RESULT($ac_nogcse) 558: 559: # Try if GCC understands -fno-strict-aliasing 560: AC_MSG_CHECKING([if $CC understands -fno-strict-aliasing]) 561: CFLAGS_1="$CFLAGS" 562: CFLAGS="$CFLAGS -fno-strict-aliasing" 563: AC_TRY_COMPILE(,,ac_nostrictaliasing=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-strict-aliasing",ac_nostrictaliasing=no) 564: CFLAGS="$CFLAGS_1" 565: AC_MSG_RESULT($ac_nostrictaliasing) 566: 567: # Try if GCC understands -fno-crossjumping 568: AC_MSG_CHECKING([if $CC understands -fno-crossjumping]) 569: CFLAGS_1="$CFLAGS" 570: CFLAGS="$CFLAGS -fno-crossjumping" 571: AC_TRY_COMPILE(,,ac_nocrossjumping=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-crossjumping",ac_nocrossjumping=no) 572: CFLAGS="$CFLAGS_1" 573: AC_MSG_RESULT($ac_nocrossjumping) 574: 575: # Try if GCC understands -fno-reorder-blocks 576: AC_MSG_CHECKING([if $CC understands -fno-reorder-blocks]) 577: CFLAGS_1="$CFLAGS" 578: CFLAGS="$CFLAGS -fno-reorder-blocks" 579: AC_TRY_COMPILE(,,ac_noreorder_blocks=yes;ENGINE_FLAGS="$ENGINE_FLAGS -fno-reorder-blocks",ac_noreorder_blocks=no) 580: CFLAGS="$CFLAGS_1" 581: AC_MSG_RESULT($ac_noreorder_blocks) 582: 583: # Try if GCC understands -falign-labels=1 584: AC_MSG_CHECKING([if $CC understands -falign-labels=1]) 585: CFLAGS_1="$CFLAGS" 586: CFLAGS="$CFLAGS -falign-labels=1" 587: AC_TRY_COMPILE(,,ac_align_labels=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-labels=1",ac_align_labels=no) 588: CFLAGS="$CFLAGS_1" 589: AC_MSG_RESULT($ac_align_labels) 590: 591: # Try if GCC understands -falign-loops=1 592: AC_MSG_CHECKING([if $CC understands -falign-loops=1]) 593: CFLAGS_1="$CFLAGS" 594: CFLAGS="$CFLAGS -falign-loops=1" 595: AC_TRY_COMPILE(,,ac_align_loops=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-loops=1",ac_align_loops=no) 596: CFLAGS="$CFLAGS_1" 597: AC_MSG_RESULT($ac_align_loops) 598: 599: # Try if GCC understands -falign-jumps=1 600: AC_MSG_CHECKING([if $CC understands -falign-jumps=1]) 601: CFLAGS_1="$CFLAGS" 602: CFLAGS="$CFLAGS -falign-jumps=1" 603: AC_TRY_COMPILE(,,ac_align_jumps=yes;ENGINE_FLAGS="$ENGINE_FLAGS -falign-jumps=1",ac_align_jumps=no) 604: CFLAGS="$CFLAGS_1" 605: AC_MSG_RESULT($ac_align_jumps) 606: 607: # Try if GCC understands __attribute__((unused)) 608: AC_MSG_CHECKING([how to suppress 'unused variable' warnings]) 609: AC_TRY_COMPILE(,[int __attribute__((unused)) foo;], MAYBE_UNUSED='__attribute__((unused))',) 610: AC_DEFINE_UNQUOTED(MAYBE_UNUSED,$MAYBE_UNUSED,[attribute for possibly unused variables]) 611: AC_MSG_RESULT($MAYBE_UNUSED) 612: 613: #try if m4 understands -s 614: AC_MSG_CHECKING([how to invoke m4]) 615: if m4 -s /dev/null >/dev/null 2>&1; then 616: M4="m4 -s" 617: else 618: M4=m4 619: fi 620: AC_SUBST(M4) 621: AC_MSG_RESULT($M4) 622: 623: # Find installed Gforth 624: AC_MSG_CHECKING([for gforth]) 625: GFORTH="`cd / && which gforth 2>/dev/null`" 626: (cd / && $GFORTH -e bye >/dev/null 2>/dev/null) || GFORTH="" 627: if test -z "$GFORTH"; then 628: PREFORTH='echo "You need to configure with a gforth in \$PATH to build this part" && false' 629: kernel_anti_dependence='' 630: else 631: PREFORTH="$GFORTH -i `cd / && $GFORTH --debug -e bye 2>&1 |grep "Opened image file: "|sed 's/Opened image file: //'`" ; 632: kernel_anti_dependence='$(kernel_fi)' 633: fi 634: AC_SUBST(PREFORTH) 635: AC_SUBST(kernel_anti_dependence) 636: AC_MSG_RESULT($PREFORTH) 637: 638: #echo "machine='$machine'" 639: 640: dnl AC_CHECK_PROG(asm_fs,asm.fs,arch/$machine/asm.fs,,$srcdir/arch/$machine) 641: AC_CHECK_FILE($srcdir/arch/$machine/asm.fs,[asm_fs=arch/$machine/asm.fs],) 642: AC_SUBST(asm_fs) 643: 644: dnl AC_CHECK_PROG(disasm_fs,disasm.fs,arch/$machine/disasm.fs,,$srcdir/arch/$machine) 645: AC_CHECK_FILE($srcdir/arch/$machine/disasm.fs,[disasm_fs=arch/$machine/disasm.fs],) 646: AC_SUBST(disasm_fs) 647: 648: AC_PATH_PROG(INSTALL_INFO,install-info,[echo '>>>>Please make info dir entry:'],$PATH:/sbin:/usr/sbin:/usr/local/sbin) 649: 650: case "$host_os" in 651: *win32*) 652: # !!!FIXME!!! problems with cygwin and ';' as path separator 653: DIRSEP="\\\\" 654: PATHSEP=";" 655: #we want the builtins of command.com/cmd.exe and its 656: # handling of .com files. 657: #$COMSPEC contains the name of the Windows shell; 658: # the ./ is there, because the bash does not recognize 659: # absolute DOS filenames 660: DEFAULTSYSTEMPREFIX="./$COMSPEC /c " 661: ;; 662: *darwin*) 663: #Darwin uses some funny preprocessor by default; eliminate it: 664: AC_MSG_NOTICE([using -no-cpp-precomp on Darwin]) 665: CFLAGS="$CFLAGS -no-cpp-precomp" 666: DIRSEP="/" 667: PATHSEP=":" 668: DEFAULTSYSTEMPREFIX="" 669: #the following magic value was suggested by 670: #http://mail.python.org/pipermail/pythonmac-sig/2005-October/015190.html 671: AC_DEFINE_UNQUOTED(MACOSX_DEPLOYMENT_TARGET,"10.3",[an environment variable value needed by libtool on some MacOS X versions]) 672: ;; 673: *linux*) 674: DIRSEP="/" 675: PATHSEP=":" 676: DEFAULTSYSTEMPREFIX="" 677: if test -z "$LTDL_LIBRARY_PATH" -a "$wordsize" = 64; then 678: LTDL_LIBRARY_PATH=`/sbin/ldconfig -p |tail -n +2 |sed 's/^.* => //'|sed 's|/[[^/]]*$||'| grep 64 | sort -u | tr '\n' : | sed -e 's/:$//'` 679: fi 680: ;; 681: *) 682: DIRSEP="/" 683: PATHSEP=":" 684: DEFAULTSYSTEMPREFIX="" 685: ;; 686: esac 687: AC_SUBST(DIRSEP) 688: AC_DEFINE_UNQUOTED(DIRSEP,'$DIRSEP',[a directory separator character]) 689: AC_SUBST(PATHSEP) 690: AC_DEFINE_UNQUOTED(PATHSEP,'$PATHSEP',[a path separator character]) 691: AC_SUBST(DEFAULTSYSTEMPREFIX) 692: AC_DEFINE_UNQUOTED(DEFAULTSYSTEMPREFIX,"$DEFAULTSYSTEMPREFIX",[default for environment variable GFORTHSYSTEMPREFIX]) 693: if test -n "$LTDL_LIBRARY_PATH"; then 694: AC_DEFINE_UNQUOTED(LTDL_LIBRARY_PATH,"$LTDL_LIBRARY_PATH",[Define LTDL_LIBRARY_PATH for 64 bit Linux]) 695: fi 696: 697: #work around SELinux brain damage (from Andrew Haley <12t8f3jakb74g2c@news.supernews.com>) 698: #This magic incantation seems to be completely undocumented. 699: AC_CHECK_PROG([MASSAGE_EXE],[chcon],[chcon -t unconfined_execmem_exec_t],[true]) 700: 701: dnl Now a little support for DOS/DJGCC 702: AC_SUBST(GFORTH_EXE) 703: GFORTH_EXE="true" 704: AC_SUBST(GFORTHFAST_EXE) 705: GFORTHFAST_EXE="true" 706: AC_SUBST(GFORTHITC_EXE) 707: GFORTHITC_EXE="true" 708: AC_SUBST(GFORTHDITC_EXE) 709: GFORTHDITC_EXE="true" 710: 711: AC_SUBST(FORTHSIZES) 712: 713: dnl if test "$PEEPHOLE" = "yes" 714: dnl then 715: dnl PEEPHOLEFLAG="true" 716: dnl AC_DEFINE(HAS_PEEPHOLE,,[Define if you want to use peephole optimization]) 717: dnl else 718: dnl PEEPHOLEFLAG="false" 719: dnl fi 720: PEEPHOLEFLAG="true" 721: AC_SUBST(PEEPHOLEFLAG) 722: 723: dnl copy commands for systems that don't have links 724: AC_SUBST(LINK_KERNL) 725: LINK_KERNL="" 726: 727: #if test $host_os=dos 728: #then 729: # echo Configuring for DOS!!! 730: # MAKE_EXE="coff2exe gforth" 731: # LINK_KERNL='$(CP) kernl32l.fi kernel.fi' 732: #fi 733: 734: dnl the following macro produces a warning with autoconf-2.1 735: AC_C_BIGENDIAN 736: AC_SUBST(KERNEL) 737: dnl ac_cv_c_bigendian is an undocumented variable of autoconf-2.1 738: if test $ac_cv_c_bigendian = yes; then 739: bytesex=b 740: KERNEL="kernl16b.fi kernl16l.fi kernl32b.fi kernl32l.fi kernl64b.fi kernl64l.fi" 741: else 742: bytesex=l 743: KERNEL="kernl16l.fi kernl16b.fi kernl32l.fi kernl32b.fi kernl64l.fi kernl64b.fi" 744: fi 745: 746: #check how to do asm(".skip 16") 747: #echo "CFLAGS=$CFLAGS" 748: #echo "ac_link=$ac_link" 749: AC_MSG_CHECKING([if and how we can waste code space]) 750: if test -z "$skipcode"; then 751: skipcode=no 752: CFLAGS_1="$CFLAGS" 753: CFLAGS="$CFLAGS $ENGINE_FLAGS" 754: for i in ".skip 16" ".block 16" ".org .+16" ".=.+16" ".space 16" 755: do 756: AC_TRY_RUN( 757: [int foo(int,int,int); 758: main() 759: { 760: exit(foo(0,0,0)!=16); 761: } 762: int foo(int x, int y, int z) 763: { 764: static void *labels[]={&&label1, &&label2}; 765: if (x) { 766: y++; /* workaround for http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12108 */ 767: label1: 768: asm("$i"); /* or ".space 16" or somesuch */ 769: label2: ; 770: } 771: { 772: if (y) goto *labels[z]; /* workaround for gcc PR12108 */ 773: return labels[1]-labels[0]; 774: } 775: }] 776: ,skipcode=$i; break 777: ,,) 778: done 779: CFLAGS=$CFLAGS_1 780: fi 781: AC_MSG_RESULT($skipcode) 782: if test "$skipcode" = no 783: then 784: if test -z $no_dynamic_default; then 785: no_dynamic_default=1 786: AC_MSG_WARN(Disabling default dynamic native code generation) 787: fi 788: AC_DEFINE_UNQUOTED(SKIP16,((void)0),statement for skipping 16 bytes) 789: else 790: AC_DEFINE_UNQUOTED(SKIP16,asm("$skipcode"),statement for skipping 16 bytes) 791: fi 792: 793: AC_MSG_CHECKING([if and how we can do comments in asm statements]) 794: #the point here is to get asm statements that look different to 795: #gcc's "optimizer" 796: if test -z "$asmcomment"; then 797: asmcomment=no 798: CFLAGS_1="$CFLAGS" 799: CFLAGS="$CFLAGS $ENGINE_FLAGS" 800: for i in '"# "' '"! "' '"; "'; do 801: AC_TRY_COMPILE(,[asm($i"fluffystunk");],asmcomment=$i; break,) 802: done 803: CFLAGS=$CFLAGS_1 804: fi 805: AC_MSG_RESULT($asmcomment) 806: if test "$asmcomment" != no 807: then 808: AC_DEFINE_UNQUOTED(ASMCOMMENT,$asmcomment,[assembler comment start string]) 809: fi 810: 811: test "$no_dynamic_default" || no_dynamic_default=0 812: AC_DEFINE_UNQUOTED(NO_DYNAMIC_DEFAULT,$no_dynamic_default,default value for no_dynamic) 813: 814: dnl Checks for programs. 815: AC_PROG_LN_S 816: AC_PROG_INSTALL 817: AC_CHECK_PROGS(TEXI2DVI,texi2dvi4a2ps texi2dvi) 818: 819: dnl MacOS X has a libtool that does something else 820: AC_CHECK_PROGS(GNU_LIBTOOL,glibtool libtool) 821: 822: dnl Checks for library functions 823: dnl This check is just for making later checks link with libm. 824: dnl using sin here is no good idea since it is built-into gcc and typechecked 825: AC_CHECK_LIB(m,asin) 826: AC_CHECK_LIB(ltdl,lt_dlinit) 827: #check for libffi 2.x 828: AC_CHECK_HEADER(ffi.h,FFI_H_NAME=ffi.h,) 829: if test -z "$FFI_H_NAME"; then 830: AC_CHECK_HEADER(ffi/ffi.h,FFI_H_NAME=ffi/ffi.h,) 831: fi 832: AC_SUBST(FFI_H_NAME) 833: AC_CHECK_LIB(ffi,ffi_call) 834: if test -n "$FFI_H_NAME" -a $ac_cv_lib_ffi_ffi_call = yes 835: then 836: LIBFFIFLAG="true" 837: LIBCC_BUILD_SRC="$LIBCC_BUILD_SRC libffi.fs" 838: else 839: LIBFFIFLAG="false" 840: fi 841: #check for ffcall libraries 842: #unfortunately, these four calls are separated out into a library each. 843: AC_CHECK_LIB(avcall,__builtin_avcall) 844: dnl AC_CHECK_LIB(callback,__vacall_r) 845: dnl AC_CHECK_LIB(vacall,vacall) 846: dnl AC_CHECK_LIB(trampoline,alloc_trampoline) 847: if test $ac_cv_lib_avcall___builtin_avcall = yes; then 848: FFCALLFLAG="true" 849: LIBCC_BUILD_SRC="$LIBCC_BUILD_SRC fflib.fs" 850: else 851: FFCALLFLAG="false" 852: fi 853: if test $LIBFFIFLAG = false -a $FFCALLFLAG = false; then 854: AC_MSG_WARN([The (old) lib.fs foreign function interface needs either libffi or the ffcall libraries]) 855: fi 856: AC_SUBST(LIBFFIFLAG) 857: AC_SUBST(FFCALLFLAG) 858: AC_SUBST(LIBCC_BUILD_SRC) 859: if test "$host_os" != "nextstep3" 860: then 861: AC_FUNC_MEMCMP 862: fi 863: AC_REPLACE_FUNCS(memmove strtoul pow10 strerror strsignal atanh) 864: AC_FUNC_FSEEKO 865: AC_CHECK_FUNCS(ftello dlopen sys_siglist getrusage nanosleep) 866: AC_CHECK_TYPES(stack_t,,,[#include <signal.h>]) 867: AC_DECL_SYS_SIGLIST 868: AC_CHECK_FUNC(getopt_long,[true],[AC_LIBOBJ(getopt) AC_LIBOBJ(getopt1)]) 869: AC_CHECK_FUNCS(expm1 log1p) 870: AC_REPLACE_FUNCS(rint ecvt) 871: dnl No check for select, because our replacement is no good under 872: dnl anything but DOS 873: AC_CHECK_HEADERS(sys/mman.h fnmatch.h alloca.h) 874: AC_FUNC_FNMATCH 875: test $ac_cv_func_fnmatch_works = yes || AC_LIBOBJ(fnmatch) 876: AC_CHECK_FUNCS(mmap sysconf getpagesize) 877: AM_PATH_LISPDIR 878: 879: kernel_fi=kernl${vwordsize}${bytesex}.fi 880: include_fi=kernl${wordsize}${bytesex}${EC}.fi 881: AC_SUBST(kernel_fi) 882: AC_SUBST(include_fi) 883: 884: #this breaks bindists 885: #dnl replace srource directory by absolute value 886: #if test $srcdir = "."; then srcdir=`pwd` 887: #fi 888: 889: AC_SUBST(machine) 890: AC_CONFIG_FILES([ 891: Makefile 892: Makedist 893: gforthmi 894: vmgen 895: machpc.fs 896: envos.fs 897: preforth 898: engine/Makefile 899: engine/libcc.h 900: doc/version.texi 901: build-ec ]) 902: AC_CONFIG_COMMANDS([stamp-h],[[echo timestamp > stamp-h 903: chmod +x gforthmi 904: chmod +x vmgen 905: chmod +x build-ec 906: chmod +x preforth 907: test -d kernel||mkdir kernel 908: $srcdir/mkinstalldirs include/gforth/$PACKAGE_VERSION 909: ln -sf ../../../engine/config.h ../../../engine/libcc.h include/gforth/$PACKAGE_VERSION]],[[PACKAGE_VERSION=$PACKAGE_VERSION]]) 910: AC_OUTPUT 911: