home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / CLISP / CLISPSRC.TAR / clisp-1995-01-01 / src / makemake.in < prev    next >
Encoding:
Text File  |  1995-01-01  |  73.8 KB  |  2,537 lines

  1. # Konstruktion des Makefiles fⁿrs Compilieren von CLISP
  2. # Bruno Haible 2.9.1991, 14.7.1992, 13.9.1992, 12.10.1992, 27.11.1992
  3.  
  4. # Simple usage:
  5. #        ./makemake [--with-PACKAGE] [debug] > makefile
  6.  
  7. # Advanced usage:
  8. #        ./makemake [--with-PACKAGE] TARGET COMPILER [debug] > makefile
  9. #  where PACKAGE is one of
  10. #        stdwin           the stdwin library
  11. #        newreadline      the new (bash-1.14.1 based) readline library
  12. #        readline         the old (gdb-4.13 based) readline library
  13. #        noreadline       no readline library at all
  14. #        module-stdwin    the stdwin library as a separate module
  15. #        module-queens    the queens function as a separate module
  16. #        dynamic-modules  an alternate way of managing separate modules
  17. #  where TARGET is one of
  18. #        sun3
  19. #        sun4
  20. #        i386      (any other 386 machine, e.g. Linux boxes or Sun386i)
  21. #        i486      (any other 486 machine)
  22. #        mips
  23. #        atari     (ATARI ST microcomputers)
  24. #        amiga     (Amiga 500/1000/2000 microcomputers)
  25. #        acorn     (Acorn Archimedes running RiscOS)
  26. #        dos       (PC or compatible running DOS, using EMX)
  27. #        dosdjgpp  (PC or compatible running DOS, using DJGPP)
  28. #        doswatcom (PC or compatible running DOS, using WATCOM)
  29. #        windows   (PC or compatible running Windows, using EMX and RSXW32)
  30. #        windowswatcom (PC or compatible running Windows, using WATCOM)
  31. #        os2       (PC or compatible running OS/2 2.0)
  32. #  and COMPILER is one of
  33. #        gcc       (GNU C under the name gcc)
  34. #        ansi      (any other ANSI compliant cc)
  35. #        cc        (non-ANSI cc)
  36. #        oldcc     (old and primitive non-ANSI cc)
  37.  
  38. # Examples:
  39. #   makemake > makefile
  40. #   makemake debug > makefile
  41. #   makemake --with-stdwin debug > makefile
  42. #   makemake i386 gcc > make.gcc/makefile
  43. #   makemake i486 gcc > make.gcc/makefile
  44. #   makemake sun4 gcc > make.gcc/makefile
  45. #   makemake sun4 oldcc > make.cc/makefile
  46. #   makemake atari gcc > make.atari/makefile
  47. #   makemake cross atari gcc > make.atari/makefile
  48. #   makemake amiga gcc > make.amiga/makefile
  49. #   makemake acorn ansi > make.acorn.cc/makefile
  50. #   makemake acorn gcc > make.acorn.gcc/makefile
  51. #   makemake dos gcc > make.dos/makefile
  52. #   makemake dosdjgpp gcc > make.dosdjgpp/makefile
  53. #   makemake doswatcom wcl386 > make.doswatcom/makefile
  54. #   makemake windows gcc > make.windows/makefile
  55. #   makemake windowswatcom wcl386 > make.windowswatcom/makefile
  56. #   makemake os2 gcc > make.os2/makefile
  57.  
  58. srcdir='.'
  59. CP='cp -p'
  60. LN_S='ln -s'
  61. GOOD_SH='/bin/sh'
  62.  
  63. # NLS nuisances.
  64. # Needed e.g. for some versions of `tr' so that character classes in `[]' work.
  65. if test "${LC_ALL+set}" = 'set'; then LC_ALL=C ; export LC_ALL ; fi
  66. if test "${LANG+set}"   = 'set'; then LANG=C   ; export LANG   ; fi
  67. if [ `echo ABC | tr '[A-Z]' '[a-z]'` = "abc" ] ; then
  68.   tolower="tr '[A-Z]' '[a-z]'"
  69. else
  70.   tolower="tr A-Z a-z"
  71. fi
  72.  
  73. # Handle --with-... arguments
  74. while test -z "$with_ok"; do
  75.   case "$1" in
  76.     -with-* | --with-*)
  77.       package=`echo "$1"|sed 's/-*with-//'`
  78.       # Delete all the valid chars; see if any are left.
  79.       if test -n "`echo $package|sed 's/[-a-zA-Z0-9_]*//g'`"; then
  80.         echo "makemake: $package: invalid package name" >&2; exit 1
  81.       fi
  82.       eval "with_`echo $package|sed s/-/_/g`=1"
  83.       shift
  84.       ;;
  85.     *) with_ok=1 ;;
  86.   esac
  87. done
  88.  
  89. # HSYS, HSYSOS = host system
  90. # HOS  = host operating system
  91. # TSYS, TSYSOS = target system
  92. # TOS  = target operating system
  93. # CC, CFLAGS, CPP = compiler on host, for host
  94. # XCC, XCFLAGS, XCPP = cross-compiler on host, for target
  95.  
  96. case $# in
  97.   0 | 1)
  98.      # Assume we are on Unix, and target=host (not cross-compiling).
  99.      CROSS=false
  100.      # Some shells (A/UX and OSF/1) need the parentheses around "arch" below.
  101.      HSYS=`((arch) 2>/dev/null || uname -m 2>/dev/null) | $tolower` # system name in lowercase
  102.      HSYSOS=`((uname) 2>/dev/null || arch 2>/dev/null) | $tolower` # OS name in lowercase
  103.      if [ "$HSYS" = 386bsd -o "$HSYS" = sun386 -o "$HSYS" = "386/at" ] ; then
  104.        HSYS='i386'
  105.      fi
  106.      if [ "$HSYS" = "i386 " ] ; then
  107.        # May also check for `uname -v` = "COHERENT "
  108.        HSYS='i386'
  109.        HSYSOS='coherent'
  110.      fi
  111.      if [ "$HSYS" = sun4m ] ; then
  112.        HSYS='sun4'
  113.      fi
  114.      HOS='unix'
  115.      TSYS="$HSYS"
  116.      TSYSOS="$HSYSOS"
  117.      TOS="$HOS"
  118.      COMPILER=??
  119.      # These variables are set by configure:
  120.      srcdir='@srcdir@'                   # either '.' or '../src'
  121.      CP='@CP@'                           # either 'cp -p' or 'cp'
  122.      LN_S='@LN_S@'                       # either 'ln -s' or 'ln'
  123.      GOOD_SH='@GOOD_SH@'                 # either '/bin/sh' or '/bin/ksh' or ''
  124.      CC="@CC@"                           # either 'gcc -O' or 'cc'
  125.      CPP="@CPP@"                         # either $CC' -E' or '/lib/cpp'
  126.      CC_GCC='@CC_GCC@'                   # either true or false
  127.      CC_ANSI='@CC_ANSI@'                 # either true or false
  128.      CC_NEED_CCPAUX='@CC_NEED_CCPAUX@'   # either true or false
  129.      CC_NEED_DEELIF='@CC_NEED_DEELIF@'   # either true or false
  130.      CC_NEED_DEERROR='@CC_NEED_DEERROR@' # either true or false
  131.      CC_NEED_DEEMA='@CC_NEED_DEEMA@'     # either true or false
  132.      CC_NEED_MERGESTRINGS='@CC_NEED_MERGESTRINGS@'   # either true or false
  133.      AS_UNDERSCORE='@AS_UNDERSCORE@'     # either true or false
  134.      RANLIB='@RANLIB@'                   # either 'ranlib' or 'true'
  135.      INSTALL='@INSTALL@'                 # either 'install -c' or 'cp'
  136.      INSTALL_PROGRAM='@INSTALL_PROGRAM@' # either 'install -c' or 'cp'
  137.      INSTALL_DATA='@INSTALL_DATA@'       # either 'install -c -m 644' or 'cp'
  138.      GMALLOC='@GMALLOC@'                 # either 'gmalloc' or ''
  139.      LIBS='@LIBS@'                       # list of system libraries
  140.      X_INCLUDES='@X_INCLUDES@'           # either '-I/usr/somewhere/include' or ''
  141.      X_LIBS='@X_LIBS@'                   # either '-L/usr/somewhere/lib -lX11' or ''
  142.      ;;
  143.   *) if [ "$1" = cross ] ; then
  144.        CROSS=true
  145.        shift
  146.        srcdir='../src'
  147.      else
  148.        CROSS=false
  149.      fi
  150.      TSYS=$1
  151.      COMPILER=$2
  152.      # TSYS should be master or sun3 or sun4 or i386 or i486 or mips or vax or atari or amiga or acorn or dos or dosdjgpp or doswatcom or windows or windowswatcom or os2.
  153.      # COMPILER should be gcc or ansi or cc or oldcc
  154.      if [ $TSYS = atari -o $TSYS = amiga -o $TSYS = acorn -o $TSYS = dos -o $TSYS = os2 ] ; then
  155.        TOS=$TSYS
  156.      else
  157.        if [ $TSYS = dosdjgpp -o $TSYS = doswatcom -o $TSYS = windows -o $TSYS = windowswatcom ] ; then
  158.          TOS='dos'
  159.        else
  160.          TOS='unix'
  161.        fi
  162.      fi
  163.      TSYSOS=$TSYS
  164.      if [ $CROSS = true ] ; then
  165.        HOS='unix'
  166.        HSYS=irrelevant
  167.        HSYSOS=irrelevant
  168.      else
  169.        HOS="$TOS"
  170.        HSYS="$TSYS"
  171.        HSYSOS="$TSYSOS"
  172.      fi
  173.      if [ $TSYS = doswatcom -o $TSYS = windowswatcom ] ; then
  174.        CC=$COMPILER # should be wcl386
  175.        CC_GCC=false
  176.        # CFLAGS='-d2 -ox -j -w4' # full debug info, optimize, char signed!, many warnings
  177.        CFLAGS='-3r -oxet -j -zq -w0 -zp4' # Blake McBride prefers these settings
  178.        CPP="${CC} -p -zq" # preprocess, quietly
  179.        CC_ANSI=true
  180.        CC_NEED_CCPAUX=false
  181.        CC_NEED_DEELIF=false
  182.        CC_NEED_DEERROR=false
  183.        CC_NEED_MERGESTRINGS=false
  184.        AS_UNDERSCORE=false
  185.        CC_NEED_DEEMA=true
  186.      else
  187.        if [ $COMPILER = gcc ] ; then
  188.          CC=gcc
  189.          CC_GCC=true
  190.        else
  191.          CC=cc
  192.          CC_GCC=false
  193.        fi
  194.        CFLAGS='-O'
  195.        CPP="${CC} -E"
  196.        if [ $COMPILER = gcc -o $COMPILER = ansi ] ; then
  197.          CC_ANSI=true
  198.          CC_NEED_CCPAUX=false
  199.          CC_NEED_DEELIF=false
  200.          CC_NEED_DEERROR=false
  201.          CC_NEED_MERGESTRINGS=false
  202.        else
  203.          CC_ANSI=false
  204.          if [ $COMPILER = oldcc ] ; then
  205.            CC_NEED_CCPAUX=true
  206.            CC_NEED_DEELIF=true
  207.            CC_NEED_DEERROR=true
  208.          else
  209.            CC_NEED_CCPAUX=false
  210.            CC_NEED_DEELIF=false
  211.            CC_NEED_DEERROR=false
  212.          fi
  213.          CC_NEED_MERGESTRINGS=true
  214.        fi
  215.        if [ $COMPILER = gcc ] ; then
  216.          # guess that if cross-compiling using gcc, then as preprends underscore
  217.          AS_UNDERSCORE=true
  218.        else
  219.          AS_UNDERSCORE=false
  220.        fi
  221.        CC_NEED_DEEMA=false
  222.      fi
  223.      GMALLOC=''
  224.      LIBS=''
  225.      X_INCLUDES=''
  226.      X_LIBS=''
  227.      shift 2
  228.      ;;
  229. esac
  230.  
  231. if [ $CROSS = true ] ; then
  232.   # We can cross-compile only with GCC 2
  233.   XCC="gcc-${TSYS}"
  234.   XCPP="${XCC} -E"
  235.   XCC_GCC=true
  236.   XCC_ANSI=true
  237.   XCC_NEED_CCPAUX=false
  238.   XCC_NEED_DEELIF=false
  239.   XCC_NEED_DEERROR=false
  240.   XCC_NEED_DEEMA=false
  241.   XCC_NEED_MERGESTRINGS=false
  242. else
  243.   TSYS="$HSYS"
  244.   TOS="$HOS"
  245.   XCC="${CC}"
  246.   XCPP="${CPP}"
  247.   XCC_GCC="${CC_GCC}"
  248.   XCC_ANSI="${CC_ANSI}"
  249.   XCC_NEED_CCPAUX="${CC_NEED_CCPAUX}"
  250.   XCC_NEED_DEELIF="${CC_NEED_DEELIF}"
  251.   XCC_NEED_DEERROR="${CC_NEED_DEERROR}"
  252.   XCC_NEED_DEEMA="${CC_NEED_DEEMA}"
  253.   XCC_NEED_MERGESTRINGS="${CC_NEED_MERGESTRINGS}"
  254. fi
  255. XCC_NEED_DEDEFINED=false
  256. XCC_UNUSABLE_CPP=false
  257.  
  258. # DEBUGGING should be debug or nothing
  259. DEBUGGING=$1
  260.  
  261. if [ $srcdir = . ] ; then
  262.   SRCDIR=''
  263. else
  264.   SRCDIR="${srcdir}/"
  265. fi
  266.  
  267. TESTDIR=stage
  268. TESTSDIR=suite
  269.  
  270. # Main host OS dependencies:
  271.  
  272. # HEXE = extension for executable files on host
  273. if [ $HOS = dos -o $HOS = os2 ] ; then
  274.   HEXE='.exe'
  275. else
  276. if [ $HOS = atari ] ; then
  277.   HEXE='.prg'
  278. else
  279.   HEXE=''
  280. fi
  281. fi
  282.  
  283. # HERE = prefix to ensure that executables are looked up in current directory
  284. if [ $HOS = unix ] ; then
  285.   HERE='./'
  286. else
  287.   if [ $HOS = acorn ] ; then
  288.     HERE='/'
  289.   else
  290.     HERE=''
  291.   fi
  292. fi
  293.  
  294. # PREFIX = prefix for installation directories
  295. # (This should not end in a backslash. Add a space to avoid this.)
  296. if [ $HOS = unix ] ; then
  297.   PREFIX='/usr/local'
  298. else
  299.   PREFIX=''
  300. fi
  301.  
  302. # PARENT = piece of path for parent directory
  303. # NEXT = piece of path for next subdirectory
  304. if [ $HOS = amiga ] ; then
  305.   PARENT='/'
  306. else
  307.   if [ $HOS = acorn ] ; then
  308.     PARENT='^.'
  309.   else
  310.     PARENT='../'
  311.   fi
  312. fi
  313. if [ $HOS = acorn ] ; then
  314.   NEXT='.'
  315. else
  316.   NEXT='/'
  317. fi
  318. if [ $HOS = atari -o $HOS = dos -o $HOS = os2 ] ; then
  319.   # Replace '/' by '\':
  320.   PARENT_=`echo $PARENT | sed -e 's,/,\\\\,g'`
  321.   NEXT_=`echo $NEXT | sed -e 's,/,\\\\,g'`
  322. else
  323.   PARENT_=$PARENT
  324.   NEXT_=$NEXT
  325. fi
  326. # Replace '\' by '\\':
  327. PARENT_2=`echo $PARENT_ | sed -e 's,\\\\,\\\\\\\\,g'`
  328.  
  329. # RM = command for deleting files
  330. if [ $HOS = dos -o $HOS = os2 -o $HOS = atari ] ; then
  331.   RM='del'
  332. else
  333.   if [ $HOS = acorn ] ; then
  334.     RM='remove'
  335.   else
  336.     RM='rm -f'
  337.   fi
  338. fi
  339.  
  340. # CP = command for copying files
  341. if [ $HOS = dos -o $HOS = os2 -o $HOS = atari ] ; then
  342.   CP='copy'
  343. else
  344.   if [ $HOS = acorn ] ; then
  345.     CP='cp ~A~CN'
  346. # else see above
  347.   fi
  348. fi
  349.  
  350. # LN_S = command for copying read-only files
  351. if [ $HOS = dos -o $HOS = os2 -o $HOS = atari ] ; then
  352.   LN_S='copy'
  353. else
  354.   if [ $HOS = acorn ] ; then
  355.     LN_S='cp ~A~CN'
  356. # else see above
  357.   fi
  358. fi
  359.  
  360. # MV = command for renaming files
  361. if [ $HOS = dos -o $HOS = os2 -o $HOS = atari ] ; then
  362.   MV='ren'
  363. else
  364.   if [ $HOS = acorn ] ; then
  365.     MV='cp ~A~CDF'
  366.   else
  367.     MV='mv'
  368.   fi
  369. fi
  370.  
  371. # CAT = command for typing files to stdout
  372. if [ $HOS = dos -o $HOS = os2 -o $HOS = atari ] ; then
  373.   CAT='type'
  374. else
  375.   CAT='cat'
  376. fi
  377.  
  378. # TOUCH = command for pretending files are new
  379. if [ $HOS = acorn ] ; then
  380.   TOUCH='stamp'
  381. else
  382.   TOUCH='touch'
  383. fi
  384.  
  385. # RANLIB = command for finishing libraries
  386. if [ -z "$RANLIB" ] ; then
  387.   RANLIB='ranlib'
  388. fi
  389.  
  390. # INSTALL = command for installing binaries/data
  391. if [ -z "$INSTALL" ] ; then
  392.   INSTALL=$CP
  393.   INSTALL_PROGRAM='$(INSTALL)'
  394.   INSTALL_DATA='$(INSTALL)'
  395. fi
  396.  
  397. # On small systems it's a waste of space to build lisparit0.d.
  398. # We may also have file naming problems on 8+3 character filesystems.
  399. # Anyway, we need it only if debugging is desired.
  400. if [ $HOS = dos -o $HOS = os2 -o $HOS = atari -o $HSYS = amiga -o $HSYS = acorn -o "$HSYSOS" = coherent -o "$DEBUGGING" != debug ] ; then
  401.   LISPARIT='lisparit'
  402. else
  403.   LISPARIT='lisparit0'
  404. fi
  405.  
  406. # Main target OS dependencies:
  407.  
  408. OS_INCLUDES=''
  409. if [ $TSYS = master -o $TOS = unix ] ; then
  410.   OS_INCLUDES=$OS_INCLUDES' unix'
  411.   if [ "$TSYSOS" != coherent ] ; then
  412.     LIBS=$LIBS' -ltermcap'
  413.   else
  414.     LIBS=$LIBS' -lterm'
  415.   fi
  416. fi
  417. if [ $TSYS = master -o $TOS = atari ] ; then
  418.   OS_INCLUDES=$OS_INCLUDES' atari'
  419. fi
  420. if [ $TSYS = master -o $TOS = amiga ] ; then
  421.   OS_INCLUDES=$OS_INCLUDES' amiga'
  422. fi
  423. if [ $TSYS = master -o $TOS = acorn ] ; then
  424.   OS_INCLUDES=$OS_INCLUDES' acorn'
  425. fi
  426. if [ $TSYS = master -o $TOS = dos -o $TOS = os2 ] ; then
  427.   OS_INCLUDES=$OS_INCLUDES' msdos'
  428.   if [ $TSYS = dos -o $TSYS = os2 ] ; then
  429.     LIBS=$LIBS' -ltermcap -lgraph'
  430.     if [ $TSYS = os2 ] ; then
  431.       LIBS=$LIBS' -lvideo'
  432.     fi
  433.   fi
  434.   if [ $TSYS = dosdjgpp ] ; then
  435.     LIBS=$LIBS' -lpc'
  436.   fi
  437.   if [ $TSYS = windows ] ; then
  438.     LIBS=$LIBS' /rsxwin/lib/libwin.a'
  439.   fi
  440. fi
  441.  
  442. if [ $CROSS = true ] ; then
  443.   if [ $TOS = atari ] ; then
  444.     # CHSCONVERT='$(HOME)/cc/convert-to-atari'
  445.     # CHSCONVERT='/usr/local/utils/cv-to-atari'
  446.     CHSCONVERT='./cv_lt_at'
  447.   fi
  448.   if [ $TOS = dos -o $TOS = os2 ] ; then
  449.     # CHSCONVERT='$(HOME)/cc/convert-to-ibmpc'
  450.     # CHSCONVERT='/usr/local/utils/cv-to-ibmpc'
  451.     # CHSCONVERT='recode latin1:ibmpc | crlf-to-nl'
  452.     CHSCONVERT='./cv_lt_pc'
  453.   fi
  454. fi
  455.  
  456. # TEXE = extension for executable files on target
  457. # LEXE = extension for executable file LISP on target
  458. if [ $TOS = dos -o $TOS = os2 ] ; then
  459.   TEXE='.exe'
  460.   LEXE='.exe'
  461. else
  462. if [ $TOS = atari ] ; then
  463.   TEXE='.prg'
  464.   LEXE='.prg'
  465. else
  466. if [ $TOS = acorn ] ; then
  467.   TEXE=''
  468.   LEXE=''
  469. else
  470.   TEXE=''
  471.   LEXE='.run'
  472. fi
  473. fi
  474. fi
  475.  
  476. # TOBJ = extension for compiled modules on target
  477. if [ $TSYS = doswatcom -o $TSYS = windowswatcom ] ; then
  478.   TOBJ='.obj'
  479. else
  480.   TOBJ='.o'
  481. fi
  482.  
  483. # Main compiler dependencies:
  484.  
  485. # INCLUDEDIR = option that specifies another include file directory
  486. if [ $TSYS = doswatcom -o $TSYS = windowswatcom ] ; then
  487.   INCLUDEDIR='-i='
  488. else
  489.   INCLUDEDIR='-I'
  490. fi
  491.  
  492. if [ $XCC_GCC = true ] ; then
  493.  
  494.   XCFLAGS='-W -Wswitch -Wcomment -Wpointer-arith '
  495.   if [ $XCC_ANSI = true ] ; then
  496.     XCFLAGS=$XCFLAGS'-Wimplicit -Wreturn-type '
  497.   fi
  498.   if [ $HOS = dos -o $HOS = os2 ] ; then
  499.     # DOS has a very limited command line length
  500.     XCFLAGS=''
  501.   fi
  502.   if [ "$DEBUGGING" != debug ] ; then
  503.     # Frame-Pointer brauchen wir nicht. Da, wo wir ihn brauchen (in eval.d:
  504.     # interpret_bytecode_()), erzwingen wir ihn durch Benutzung von alloca().
  505.     # Unter Windows darf -fomit-frame-pointer i.a. nicht verwendet werden (da
  506.     # sonst gcc wom÷glich Daten-Pointer nach %ebp legt, was wegen inkompatibler
  507.     # Segmentregister nicht zulΣssig ist). Glⁿcklicherweise ist das bei rsxw32
  508.     # kein Problem, da dort %cs = 0x185F, %ds = %es = %fs = %gs = %ss = 0x1867,
  509.     # insbesondere %ds = %ss.
  510.     XCFLAGS=$XCFLAGS'-fomit-frame-pointer '
  511.   fi
  512.   if [ $TSYS = atari -o $TSYS = amiga ] ; then
  513.     # Register A4 enthΣlt den Stack.
  514.     # Die GCC-Strength-Reduction ist auf dem 68000 nicht problemlos.
  515.     XCFLAGS=$XCFLAGS'-ffixed-a4 -fno-strength-reduce '
  516.   fi
  517.   if [ $TSYS = windows ] ; then
  518.     # Die Include-Files fⁿr MS-Windows 3.1
  519.     XCFLAGS=$XCFLAGS'-I/emx/include.win '
  520.   fi
  521.   if [ $CROSS = false ] ; then
  522.     XCC_GCC_VERSION=`$XCC -v 2>&1 | tail -1 | sed -e 's/.*version //g'`
  523.     case "$XCC_GCC_VERSION" in
  524.       # gcc 2.6 has an option for fast single precision ("float") computation.
  525.       # It is only needed when -traditional is specified.
  526.       2.[6-9]* )
  527.         if [ $XCC_ANSI = false ] ; then
  528.           XCFLAGS=$XCFLAGS'-fallow-single-precision '
  529.         fi
  530.         ;;
  531.       * ) ;;
  532.     esac
  533.   fi
  534.   if [ $TSYS = i386 -o $TSYS = i486 -o $TSYS = dos -o $TSYS = dosdjgpp -o $TSYS = windows -o $TSYS = os2 ] ; then
  535.     # gcc <= 2.3.2 may crash when compiling lisparit with -O2
  536.     # gcc 2.3.3 may produce incorrect code when compiling spvw(SPVW_PURE) with -O -fomit-frame-pointer
  537.     if [ $CROSS = false ] ; then
  538.       XCC_GCC_VERSION=`$XCC -v 2>&1 | tail -1 | sed -e 's/.*version //g'`
  539.       case "$XCC_GCC_VERSION" in
  540.         2.3.[3-9]* | 2.[4-9]* )
  541.           # XCFLAGS=$XCFLAGS'-O2 -fno-omit-frame-pointer' ;;
  542.           # Let's try it nevertheless!
  543.           XCFLAGS=$XCFLAGS'-O2' ;;
  544.         * )
  545.           XCFLAGS=$XCFLAGS'-O' ;;
  546.       esac
  547.     else
  548.       XCFLAGS=$XCFLAGS'-O'
  549.     fi
  550.   else
  551.     XCFLAGS=$XCFLAGS'-O2'
  552.   fi
  553.   if [ $TSYS = sun4 -o $TSYS = acorn ] ; then
  554.     XCLFLAGS='-static'
  555.   else
  556.     XCLFLAGS=''
  557.   fi
  558.   XCC_NOOPTFLAGS=' -O0'
  559.  
  560. else
  561.  
  562.   if [ "$TSYSOS" = coherent ] ; then
  563.     # If one cannot use the default cc preprocessor: Use GNU cpp instead.
  564.     # The Coherent386 cc preprocessor is not usable
  565.     # 1. because of "macro expansion buffer overflow", 2. because it is an
  566.     # ANSI like preprocessor (## and the like) in front of a K&R C compiler.
  567.     XCC_UNUSABLE_CPP=true
  568.     XCPP='../utils/gcc-cccp/cccp -traditional -U__GNUC__'
  569.     if [ "$TSYSOS" = coherent ] ; then
  570.       XCPP="$XCPP -DCOHERENT -D_I386 -D_IEEE"
  571.     fi
  572.     XCC_NEED_CCPAUX=false
  573.     XCC_NEED_DEELIF=false
  574.     XCC_NEED_DEERROR=false
  575.     XCC_NEED_DEDEFINED=false
  576.     XCC_NEED_DEEMA=false
  577.   fi
  578.   if [ $TSYS = doswatcom -o $TSYS = windowswatcom ] ; then
  579.     XCFLAGS="$CFLAGS"
  580.   else
  581.     if [ "$HSYSOS" = hp-ux -o $TSYS = sun4 ] ; then
  582.       # HP's HPPA compilers crash when optimizing.
  583.       # SUN's cc is buggy when optimizing spvw.d, even with only -O1.
  584.       XCFLAGS=''
  585.     else
  586.       XCFLAGS='-O'
  587.     fi
  588.   fi
  589.   if [ $XCC_UNUSABLE_CPP = true ] ; then
  590.     # GNU cpp has restricted command line flags. Pass them only to XCC.
  591.     XCC="$XCC $XCFLAGS"
  592.     XCFLAGS=''
  593.   fi
  594.   XCLFLAGS=''
  595.   # if [ "$COMPILER" = oldcc ] ; then
  596.   # XCPP='gcc -E -P -U__STDC__ -U__GNUC__'
  597.   # TRADDECLFLAGS=' -DFOR_ANSI_PREPROCESSOR -DCUT_U_AND_L'
  598.   # else
  599.   if [ $XCC_ANSI = false ] ; then
  600.     TRADDECLFLAGS=' -DCUT_U_AND_L'
  601.   fi
  602.   # fi
  603.   case $TSYS in mips | ip*)
  604.     # IRIX 4 "cc -ansi" sometimes barfs when a string constant contains one
  605.     # or more quotes('). They must be written as \047.
  606.     TRADDECLFLAGS="${TRADDECLFLAGS} -DQUOTE_QUOTES"
  607.     ANSIDECLFLAGS="${ANSIDECLFLAGS} -DQUOTE_QUOTES"
  608.     TXT2CFLAGS="${TXT2CFLAGS} -DQUOTE_QUOTES"
  609.   esac
  610.   if [ $TSYS = sun4 ] ; then
  611.     XCFLAGS=$XCFLAGS' -dalign -fsingle'
  612.     XCLFLAGS=$XCLFLAGS' -Bstatic'
  613.   fi
  614.   if [ $TSYS = acorn ] ; then
  615.     XCFLAGS=$XCFLAGS' -D__arm -D__riscos -wanp -JUnix: -IUnix:'
  616.     XCLFLAGS=$XCLFLAGS' -LUnix:o.Unixlib'
  617.   fi
  618.   XCC_NOOPTFLAGS=''
  619.  
  620. fi
  621.  
  622. if [ "$DEBUGGING" = debug ] ; then
  623.   if [ $TSYS = sun4 -a $XCC_GCC = true ] ; then
  624.     XCFLAGS=$XCFLAGS' -gstabs'
  625.   else
  626.     XCFLAGS=$XCFLAGS' -g'
  627.   fi
  628. fi
  629.  
  630. if [ $TSYS = windows ] ; then
  631.   XCFLAGS=$XCFLAGS' -DWINDOWS'
  632. fi
  633.  
  634. if [ $TSYS = os2 ] ; then
  635.   XCFLAGS=$XCFLAGS' -DOS2'
  636. fi
  637.  
  638. if [ "$TSYSOS" = coherent ] ; then
  639.   XCFLAGS=$XCFLAGS' -Dunix'
  640. fi
  641.  
  642. if [ $TSYS = i386 -a "$TSYSOS" = "sinix-z" ] ; then # SINIX-Z V5.41
  643.   XCFLAGS=$XCFLAGS' -DSNI -DSVR4 -DUSL'
  644.   LIBS=$LIBS' -lnsl -lsocket'
  645. fi
  646. if [ $TSYS = i386 -a "$TSYSOS" = "unix_sv" ] ; then # Onsite SVR4.2
  647.   XCFLAGS=$XCFLAGS' -DUSL'
  648.   LIBS=$LIBS' -lnsl -lsocket'
  649. fi
  650. if [ $TSYS = i386 -a "$TSYSOS" = linux -a $CROSS = false ] ; then # Linux
  651.   # Generational GC requires Linux 1.1.52 or newer
  652.   UNAME_R=`uname -r | $tolower`
  653.   case "$UNAME_R" in
  654.     0.* | 1.0.* | 1.1.[0-9] | 1.1.[1-4][0-9] | 1.1.5[0-1] )
  655.       XCFLAGS=$XCFLAGS' -DNO_GENERATIONAL_GC' ;;
  656.     *) ;;
  657.   esac
  658. fi
  659.  
  660. if [ $TSYS = sun4 -a $CROSS = false ] ; then
  661.   ARCH_K=`arch -k` # kernel architecture, see arch(1)
  662.   if [ "$ARCH_K" = sun4 -o "$ARCH_K" = sun4c ] ; then
  663.     # sun4 and sun4c support only 29 bit addresses,
  664.     # sun4m supports 32 bit addresses.
  665.     XCFLAGS=$XCFLAGS' -DSUN4_29'
  666.   fi
  667.   # Distinguish good SunOS 4 from the SunOS 5 garbage called "Solaris 2":
  668.   UNAME_S=`uname -s | $tolower`
  669.   UNAME_R=`uname -r | $tolower`
  670.   if [ "$UNAME_S" = sunos ] ; then
  671.     case "$UNAME_R" in
  672.       4*)
  673.         # XCFLAGS=$XCFLAGS' -DUNIX_SUNOS4' # done in unix.d
  674.       ;;
  675.       [5-9]*)
  676.         # XCFLAGS=$XCFLAGS' -DUNIX_SUNOS5' # done in unix.d
  677.         # We need a lot of libraries. To check which libraries are necessary, do
  678.         #   cd /usr/lib
  679.         #   foreach f (lib*.a)
  680.         #   echo $f ; nm $f | grep gethostbyname
  681.         #   end
  682.         # We conclude that
  683.         # - for gethostname() we need libnsl.a,
  684.         # - for connect() and socket() we need libsocket.a,
  685.         # - for these we need libdl_stubs.a and everything required by this one,
  686.         # - a second pass through the libraries is needed to satisfy cyclic
  687.         #   dependencies.
  688.         if test -f /usr/lib/libdl_stubs.a; then
  689.           LIBS=$LIBS' -lnsl -lsocket -ldl_stubs -lnswfiles -lnswnis -lnswnisplus -ltcpip -lswitch -lnswcompat -lstraddr -lintl'
  690.           LIBS=$LIBS' -lnsl -lsocket -ldl_stubs -lnswfiles -lnswnis -lnswnisplus -ltcpip -lswitch -lnswcompat -lstraddr -lintl'
  691.         else
  692.           # Newer versions of Solaris (Solaris 2.2 and newer) don't have
  693.           # libdl_stubs.a any more. This means that you cannot link -static !
  694.           LIBS=$LIBS' -lnsl -lsocket'
  695.           LIBS=$LIBS' -lnsl -lsocket'
  696.           XCLFLAGS=`echo "$XCLFLAGS" | sed -e 's/-B*static//g'`
  697.           SOLARIS_LINKING=1 # Even more hacks needed??
  698.         fi
  699.         BINARY_DISTRIB=1
  700.       ;;
  701.     esac
  702.   fi
  703. fi
  704. if [ "$TSYSOS" = coherent -a $CROSS = false ] ; then
  705.   BINARY_DISTRIB=1
  706. fi
  707. if test -n "$BINARY_DISTRIB"; then
  708.   XCFLAGS=$XCFLAGS' -DUNIX_BINARY_DISTRIB'
  709. fi
  710.  
  711.  
  712. # Other dependencies:
  713.  
  714. if test -n "$with_dynamic_modules"; then
  715.   XCFLAGS="$XCFLAGS -DDYNAMIC_MODULES"
  716. fi
  717.  
  718. if test -n "$with_stdwin"; then
  719.   XCFLAGS="$XCFLAGS -DSTDWIN"
  720.   XCL_STDWINLIB='stdwin/libstdwin.a'
  721.   LIBS=$XCL_STDWINLIB' '$LIBS
  722. else
  723.   XCL_STDWINLIB=''
  724. fi
  725.  
  726. TERMINAL='generic'
  727. READLINELIB=''
  728. XCL_READLINELIB=''
  729. if [ $TOS = unix -a "$TSYSOS" != coherent -o $TOS = dos -a $TSYS != doswatcom -a $TSYS != windows -a $TSYS != windowswatcom -o $TOS = os2 ] ; then
  730.   if test -n "$with_noreadline"; then
  731.     XCFLAGS=$XCFLAGS' -DNO_READLINE'
  732.   else
  733.     TERMINAL='readline'
  734.     READLINELIB='libreadline.a'
  735.     if test -n "$with_newreadline"; then
  736.       READLINEDIR='newreadline'
  737.     else
  738.       READLINEDIR='readline'
  739.     fi
  740.     READLINELIB=$READLINEDIR'/'$READLINELIB
  741.     # Don't put "-lreadline" into LIBS for two reasons:
  742.     # 1. The system may have its own libreadline.a.
  743.     # 2. EMX 0.8h would be looking for readline.a instead of libreadline.a.
  744.     if [ $HOS = unix ] ; then
  745.       # use symbolic link, avoid -L in CFLAGS (doesn't work with Coherent cc)
  746.       XCL_READLINELIB='libreadline.a'
  747.     else
  748.       XCL_READLINELIB=$READLINELIB
  749.     fi
  750.     LIBS=$XCL_READLINELIB' '$LIBS
  751.   fi
  752. fi
  753.  
  754. MODULES='         spvw spvwtabf spvwtabs spvwtabo'
  755. MODULES=$MODULES' eval control'
  756. MODULES=$MODULES' pathname stream'
  757. if [ $TSYS = master -o $TOS = unix ] ; then
  758.   MODULES=$MODULES' socket'
  759. fi
  760. MODULES=$MODULES' io'
  761. MODULES=$MODULES' array hashtabl list package record sequence'
  762. MODULES=$MODULES' charstrg debug error misc predtype symbol '$LISPARIT
  763. if [ $TSYS = master ] || [ $TOS = unix -o $TSYS = dos -o $TSYS = dosdjgpp -o $TSYS = doswatcom -o $TSYS = windows -o $TSYS = windowswatcom -o $TSYS = os2 ] && [ -n "$with_stdwin" ] ; then
  764.   MODULES=$MODULES' stdwin'
  765. fi
  766. if [ $TSYS = master -o $TSYS = amiga ] ; then
  767.   MODULES=$MODULES' rexx'
  768. fi
  769. if [ $TSYS = master -o $TOS = unix -o $TSYS = dos -o $TSYS = dosdjgpp -o $TSYS = doswatcom -o $TSYS = windows -o $TSYS = windowswatcom -o $TSYS = os2 ] ; then
  770.   MODULES=$MODULES' graph'
  771. fi
  772. if [ $TSYS = master -o $TSYS = atari ] ; then
  773.   MODULES=$MODULES' alglobal'
  774. fi
  775. if [ $TSYS = master -o $TSYS = sun4 -a "$DEBUGGING" = debug ] ; then
  776.   MODULES=$MODULES' dbxtypes'
  777. fi
  778. if [ $TSYS = master -o $TOS = unix -o $TSYS = dos -o $TSYS = os2 -o $TSYS = windows -o $TSYS = acorn ] ; then
  779.   MODULES=$MODULES' unixaux'
  780. fi
  781. if [ $TSYS = master -o $TOS = acorn ] ; then
  782.   MODULES=$MODULES' acornaux'
  783. fi
  784. if [ $TSYS = master -o $TSYS = windows -o $TSYS = windowswatcom ] ; then
  785.   MODULES=$MODULES' windows'
  786. fi
  787.  
  788. EVERY_INCLUDES='lispbibl fsubr subr pseudofun constsym constobj '$OS_INCLUDES
  789.  
  790. EVERY_INCLUDES_C=''
  791. for f in $EVERY_INCLUDES ; do
  792.   EVERY_INCLUDES_C=$EVERY_INCLUDES_C' '$f'.c'
  793. done
  794.  
  795. OTHER_INCLUDES=' constpack avl sort'
  796. if [ $TSYS = master -o $TSYS = amiga ] ; then
  797.   OTHER_INCLUDES=$OTHER_INCLUDES' amiga2'
  798. fi
  799. if [ $TSYS = master -o $TSYS = windows -o $TSYS = windowswatcom ] ; then
  800.   OTHER_INCLUDES=$OTHER_INCLUDES' wintext winstat winmain winaux'
  801. fi
  802.  
  803. LISPARIT_SUBFILES=' aridecl arilev0 arilev1 intelem intlog intplus intcomp intbyte intmal intdiv intgcd int2adic intsqrt intprint intread rational'
  804. LISPARIT_SUBFILES=$LISPARIT_SUBFILES' sfloat ffloat dfloat lfloat flo_konv flo_rest realelem realrand realtran compelem comptran'
  805. if [ $LISPARIT = lisparit ] ; then
  806.   LISPARIT_INCLUDES=$LISPARIT_SUBFILES
  807. else
  808.   LISPARIT_INCLUDES=''
  809.   OTHER_INCLUDES=$OTHER_INCLUDES' aridecl arilev0'
  810. fi
  811. LISPARIT_INCLUDES=$LISPARIT_INCLUDES' arilev1c arilev1e arilev1i'
  812.  
  813. EXTRA_MODULES='noreadline main'
  814. if [ $TOS = unix -o $TSYS = dos -o $TSYS = dosdjgpp -o $TSYS = doswatcom -o $TSYS = windows -o $TSYS = windowswatcom -o $TSYS = os2 ] && [ -n "$with_module_stdwin" ] ; then
  815.   EXTRA_MODULES=$EXTRA_MODULES' stdwin'
  816. fi
  817.  
  818. DFILES="$MODULES $EVERY_INCLUDES $OTHER_INCLUDES $LISPARIT_INCLUDES genclisph modules $EXTRA_MODULES"
  819.  
  820. ARI_ASMD=''
  821. ARI_ASMC=''
  822. ARI_ASMS=''
  823. if [ $TSYS = sun3 -o $TSYS = hp300 -o $TSYS = m68k -o $TSYS = mc68040 -o $TSYS = atari -o $TSYS = amiga ] ; then
  824.   ARI_ASMD=$ARI_ASMD' ari68000.mot ari68000.mit ari68000.atari ari68020.mot ari68020.mit'
  825.   if [ $TSYS = sun3 -o $TSYS = hp300 -o $TSYS = m68k -o $TSYS = mc68040 ] ; then
  826.     ARI_ASMS=$ARI_ASMS' ari68020'
  827.   else
  828.     ARI_ASMS=$ARI_ASMS' ari68000'
  829.   fi
  830.   ARI_ASMC=$ARI_ASMS
  831. fi
  832. if [ $TSYS = sun4 ] ; then
  833.   ARI_ASMD=$ARI_ASMD' arisparc'
  834.   ARI_ASMS=$ARI_ASMS' arisparc'
  835. fi
  836. case $TSYS in mips | ip* | sgi | risc | r4000)
  837.   ARI_ASMD=$ARI_ASMD' arimips'
  838.   ARI_ASMS=$ARI_ASMS' arimips'
  839. esac
  840. if [ $TSYS = i386 -o $TSYS = i486 -o $TSYS = dos -o $TSYS = dosdjgpp -o $TSYS = windows -o $TSYS = os2 ] ; then
  841.   ARI_ASMD=$ARI_ASMD' ari80386'
  842.   ARI_ASMS=$ARI_ASMS' ari80386'
  843. fi
  844. case $TSYS in 9000/7* | 9000/8* | hp7*)
  845.   # HP 9000 Series 700, 800
  846.   ARI_ASMD=$ARI_ASMD' arihppa'
  847.   ARI_ASMS=$ARI_ASMS' arihppa'
  848. esac
  849. if [ $TSYS = acorn ] ; then
  850.   ARI_ASMD=$ARI_ASMD' ariarm'
  851.   ARI_ASMS=$ARI_ASMS' ariarm'
  852. fi
  853.  
  854. SP_ASMD=''
  855. SP_ASMS=''
  856. if [ $XCC_GCC = false ] ; then
  857.   if [ $TSYS = sun3 -o $TSYS = hp300 -o $TSYS = m68k -o $TSYS = mc68040 -o $TSYS = atari -o $TSYS = amiga ] ; then
  858.     SP_ASMD=$SP_ASMD' sp68000.mot sp68000.mit'
  859.     SP_ASMS=$SP_ASMS' sp68000'
  860.   fi
  861.   # durch cc_sparc.il ⁿberflⁿssig:
  862.   # if [ $TSYS = sun4 ] ; then
  863.   #   SP_ASMD=$SP_ASMD' spsparc'
  864.   #   SP_ASMS=$SP_ASMS' spsparc'
  865.   # fi
  866.   case $TSYS in mips | ip* | sgi | risc | r4000)
  867.     SP_ASMD=$SP_ASMD' spmips'
  868.     SP_ASMS=$SP_ASMS' spmips'
  869.   esac
  870.   if [ $TSYS = i386 -o $TSYS = i486 -o $TSYS = dos -o $TSYS = dosdjgpp -o $TSYS = windows -o $TSYS = os2 ] ; then
  871.     SP_ASMD=$SP_ASMD' sp80386'
  872.     SP_ASMS=$SP_ASMS' sp80386'
  873.   fi
  874. fi
  875.  
  876. COMMENTS=''
  877.  
  878. CODE='      init defseq backquot defmacro macros1 macros2 defs1 timezone places floatpri type defstruc'
  879. CODE=$CODE' format user1 user2 trace macros3 config compiler defs2 loop clos conditio defs3'
  880. CODE=$CODE' gstream foreign screen stdwin1 stdwin2 rexx editor'
  881.  
  882. DOC='LISP-tutorial CLOS-guide cltl2'
  883.  
  884. TXT_FILES='README clisp.1 clisp.html impnotes.txt'
  885. if [ $CROSS = false -a $HOS = unix ] ; then
  886.   TXT_FILES=$TXT_FILES' distmakefile'
  887. fi
  888.  
  889. OBSOLETE=''
  890.  
  891. # Output the makefile:
  892.  
  893. # echotab line
  894. # outputs a line, preceding it with a tab. cat is needed to output tabs.
  895. if [ "$HSYSOS" != coherent ] ; then
  896. echotab () {
  897. cat <<!!
  898.     $1
  899. !!
  900. }
  901. else
  902. # Coherent's ksh produces error relating to /tmp/sh<pid> files...
  903. echotab () {
  904. echo "\t""$1"
  905. }
  906. fi
  907.  
  908. # echotabpipe line
  909. # outputs a line, split along pipe symbols, preceding with tabs.
  910. if [ $HSYS != acorn ] ; then
  911. echotabpipe() {
  912. echotab "$1"
  913. }
  914. else
  915. echotabpipe() {
  916. line="$1"
  917. junk=''
  918. i=1
  919. while
  920.   linefirst=`echo "$line" | sed -e 's/|.*$//'`
  921.   test "$linefirst" != "$line"
  922. do
  923.   linefirst=`echo "$linefirst" | sed -e 's/[     ]*$//'`
  924.   linerest=`echo "$line" | sed -e 's/^[^|]*|//' | sed -e 's/^[     ]*//'`
  925.   tempfile='TMPPIPE'"$i"
  926.   echotab "$linefirst"" > $tempfile"
  927.   if test -n "$junk"; then
  928.     echotab "\$(RM) $junk"
  929.   fi
  930.   junk="$tempfile"
  931.   i=`expr "$i" + 1`
  932.   line=`echo "$linerest" | sed -e 's/[<>|].*$//' | sed -e 's/[     ]*$//'`" < $tempfile "`echo "$linerest" | sed -e 's/^[^<>|]*//'`
  933. done
  934. echotab "$line"
  935. if test -n "$junk"; then
  936.   echotab "\$(RM) $junk"
  937. fi
  938. }
  939. fi
  940.  
  941. # echolist prefix list suffix prefix
  942. # outputs a list of items, prefixed by backslashes and newlines to break long
  943. # lines.
  944. if [ "$HSYSOS" != coherent ] ; then
  945. echolist () {
  946. line="$1"
  947. for f in $2 ; do
  948.   echo $line" \\"
  949.   line="$4${f}$3"
  950. done
  951. echo $line
  952. }
  953. else
  954. # Coherent's ksh produces funny characters after the newlines, avoid newlines.
  955. if true; then
  956. echolist () {
  957. line="$1"
  958. for f in $2 ; do
  959.   line="$line $4${f}$3"
  960. done
  961. echo $line
  962. }
  963. else
  964. echolist () {
  965. # This would be another possible implementation if "echo -n" were portable.
  966. echo -n "$1"
  967. for f in $2 ; do
  968.   echo -n " $4${f}$3"
  969. done
  970. echo
  971. }
  972. fi
  973. fi
  974.  
  975. # echodummyrule target
  976. # outputs a dummy rule for the given target.
  977. if [ "$HSYSOS" != coherent -a $HSYS != acorn ] ; then
  978. echodummyrule () {
  979. :
  980. }
  981. else
  982. echodummyrule () {
  983. echotab "\$(TOUCH) $1"
  984. }
  985. fi
  986.  
  987. echo "# Makefile for the CLISP binaries"
  988. echo "# DO NOT EDIT! GENERATED AUTOMATICALLY!"
  989. echo
  990. echo '# -------------- Start of configurable section --------------------'
  991. echo
  992. echo '# Directories used by "make install":'
  993. echo "prefix = ${PREFIX}"
  994. echo "exec_prefix = \$(prefix)"
  995. echo "bindir = \$(exec_prefix)${NEXT_}bin"
  996. echo "mandir = \$(exec_prefix)${NEXT_}man"
  997. echo "libdir = \$(exec_prefix)${NEXT_}lib"
  998. echo "lisplibdir = \$(libdir)${NEXT_}lisp"
  999. echo
  1000. echo '# Programs used by "make":'
  1001. if [ $CROSS = true ] ; then
  1002.   echo "CC = ${CC}"
  1003.   echo "CFLAGS = ${CFLAGS}"
  1004.   echo "CPP = ${CPP}"
  1005.   echo "XCC = ${XCC}"
  1006.   echo "XCFLAGS = ${XCFLAGS}"
  1007.   echo "XCPP = ${XCPP}"
  1008.   echo "XCLFLAGS = ${XCLFLAGS}"
  1009.   echo "XLIBS = ${LIBS}"
  1010.   XCC="\$(XCC)"
  1011.   XCFLAGS="\$(XCFLAGS)"
  1012.   XCPP="\$(XCPP)"
  1013.   XCLFLAGS="\$(XCLFLAGS)"
  1014.   LIBS="\$(XLIBS)"
  1015. else
  1016.   echo "CC = ${XCC}"
  1017.   echo "CFLAGS = ${XCFLAGS}"
  1018.   echo "CPP = ${XCPP}"
  1019.   echo "CLFLAGS = ${XCLFLAGS}"
  1020.   echo "LIBS = ${LIBS}"
  1021.   XCC="\$(CC)"
  1022.   XCFLAGS="\$(CFLAGS)"
  1023.   XCPP="\$(CPP)"
  1024.   XCLFLAGS="\$(CLFLAGS)"
  1025.   LIBS="\$(LIBS)"
  1026. fi
  1027. echo "X_LIBS = ${X_LIBS}"
  1028. X_LIBS="\$(X_LIBS)"
  1029. # if [ $TSYS = sun4 -a "$CC" = cc ] ; then
  1030. #   echo "INLINE = /usr/lib/inline"
  1031. # fi
  1032. if [ $HSYS = doswatcom -o $HSYS = windowswatcom ] ; then
  1033.   echo "DISASM = wdisasm -au -s" # -au: Intel/Unix syntax, -s: include source
  1034. fi
  1035. if [ $HSYS = dos -o $HSYS = dosdjgpp -o $TSYS = windows -o $HSYS = os2 ] ; then
  1036.   echo "LD = ld"
  1037. fi
  1038. if [ $TSYS = windows -o $TSYS = windowswatcom ] ; then
  1039.   echo 'RC = wrc -i=d:\watcom95\h\win'
  1040. fi
  1041. if [ $TSYS = windows ] ; then
  1042.   echo 'RSXW32 = \rsxwin\rsxw32.exe'
  1043. fi
  1044. # echotab_to_HEXE command target
  1045. # outputs a `make' statement that executes command and creates target${HEXE}.
  1046. if [ $HSYS != dosdjgpp -a $HSYS != doswatcom -a $HSYS != windowswatcom ] ; then
  1047.   echotab_to_HEXE () {
  1048.   echotab "$1 -o $2${HEXE}"
  1049.   }
  1050. else
  1051.   if [ $HSYS = dosdjgpp ] ; then
  1052.     # echo "COFF2EXE = coff2exe"
  1053.     # would work too, but then all the programs would depend on the environment
  1054.     # variable GO32 and the existence of go32.exe. We prefer to do it this way:
  1055.     echo "COFF2EXE = copy /b c:\djgpp\bin\go32.exe +"
  1056.     echotab_to_HEXE () {
  1057.     echotab "$1 -o $2"
  1058.     echotab "\$(COFF2EXE) $2 $2${HEXE}"
  1059.     echotab "\$(RM) $2"
  1060.     }
  1061.   fi
  1062.   if [ $HSYS = doswatcom -o $HSYS = windowswatcom ] ; then
  1063.     echotab_to_HEXE () {
  1064.     echotab "$1 -fo=$2${HEXE}"
  1065.     }
  1066.   fi
  1067. fi
  1068. if [ -n "$CHSCONVERT" ] ; then
  1069.   echo "CHARSETCONVERT = ${CHSCONVERT}"
  1070.   CHSCONVERT_FILTER=" | \$(CHARSETCONVERT)"
  1071. else
  1072.   CHSCONVERT_FILTER=''
  1073. fi
  1074. echo
  1075. echo "MAKE = make"
  1076. echo "RM = ${RM}"
  1077. echo "CP = ${CP}"
  1078. echo "LN = ${LN_S}"
  1079. echo "MV = ${MV}"
  1080. echo "CAT = ${CAT}"
  1081. echo "TOUCH = ${TOUCH}"
  1082. echo "AR = ar"
  1083. echo "RANLIB = ${RANLIB}"
  1084. echo
  1085. echo '# Programs used by "make install":'
  1086. echo "INSTALL = ${INSTALL}"
  1087. echo "INSTALL_PROGRAM = ${INSTALL_PROGRAM}"
  1088. echo "INSTALL_DATA = ${INSTALL_DATA}"
  1089. echo
  1090. echo '# Programs used by "make distrib":'
  1091. echo
  1092. # Auxiliary routines for linking lisp.a:
  1093. if [ $HOS = unix -a $XCC_GCC = true ] ; then
  1094.   # We need the full libgcc.a in general. But we don't know its location.
  1095.   MAIN_O=''
  1096.   LIBGCC='`'"${XCC} -print-libgcc-file-name"'` # something like /usr/somewhere/libgcc.a'
  1097.   if [ $TSYS = atari -o $TSYS = sun4 ] && [ -z "$with_dynamic_modules" ] ; then
  1098.     # All arithmetic is done inline, only __main must be resolved.
  1099.     MAIN_O=" main${TOBJ}"
  1100.     LIBGCC=''
  1101.   else
  1102.     if [ $CROSS = false ] ; then
  1103.       if [ "$HSYSOS" = linux ] ; then
  1104.         # gcc2 is cc on Linux. Don't need main.o or libgcc.a
  1105.         MAIN_O=''
  1106.         LIBGCC=''
  1107.       fi
  1108.     fi
  1109.   fi
  1110. else
  1111.   MAIN_O=''
  1112.   LIBGCC=''
  1113. fi
  1114. if test -n "$LIBGCC"; then
  1115.   echo "LIBGCC = ${LIBGCC}"
  1116. fi
  1117. if [ "$HSYSOS" = linux -o "$HSYSOS" = 386bsd -o "$HSYSOS" = netbsd ] ; then
  1118.   ROFF_MAN="groff -Tascii -mandoc"
  1119.   ROFF_DVI="groff -Tdvi -mandoc"
  1120. else
  1121.   ROFF_MAN="nroff -man"
  1122.   if [ $HSYS = sun4 -a $CROSS = false ] ; then
  1123.     if [ "$UNAME_S" = sunos ] ; then
  1124.       case "$UNAME_R" in 4*)
  1125.         # SunOS 4
  1126.         ROFF_MAN="nroff -a -man" ;;
  1127.       esac
  1128.     fi
  1129.   fi
  1130. fi
  1131. echo '# formatter for manual page'
  1132. echo "ROFF_MAN = ${ROFF_MAN}"' # try "groff -Tascii -mandoc" or "nroff -man"'
  1133. echo "ROFF_DVI = ${ROFF_DVI}"' # try "groff -Tdvi -mandoc"'
  1134. echo
  1135. echo '# -------------- End of configurable section --------------------'
  1136. echo
  1137. if [ $HOS = unix ] ; then
  1138.   # On some systems (IRIX SVR3 and others) the default shell is csh.
  1139.   echo "SHELL = /bin/sh"
  1140.   echo
  1141. fi
  1142. echo "COMMENT5 = ${HERE}comment5"
  1143.  
  1144. if [ $CC_ANSI = false ] ; then
  1145.   if [ $CC_NEED_DEERROR = true ] ; then
  1146.     CC_NEED_CCPAUX=true
  1147.     if [ $HSYS = sun4 -a "$CC" = cc ] ; then
  1148.       # The Sun4 SunOS4.1 cc claims to support #elif. In fact, not in all cases.
  1149.       CC_NEED_DEELIF=true
  1150.     fi
  1151.   fi
  1152. fi
  1153. if [ $XCC_ANSI = false ] ; then
  1154.   if [ $XCC_NEED_DEERROR = true ] ; then
  1155.     XCC_NEED_CCPAUX=true
  1156.     if [ $TSYS = sun4 -a "$CC" = cc ] ; then
  1157.       # The Sun4 SunOS4.1 cc claims to support #elif. In fact, not in all cases.
  1158.       XCC_NEED_DEELIF=true
  1159.     fi
  1160.   fi
  1161. fi
  1162.  
  1163. if [ $CC_NEED_CCPAUX = true -o $XCC_NEED_CCPAUX = true ] ; then
  1164.   NEED_CCPAUX=true
  1165. else
  1166.   NEED_CCPAUX=false
  1167. fi
  1168. NEED_ANSIDECL=false
  1169. NEED_TRADDECL=false
  1170. if [ $XCC_ANSI = true ] ; then
  1171.   NEED_ANSIDECL=true
  1172.   XDECL_FILTER="| \$(ANSIDECL)"
  1173.   XDECL_DEPENDENCIES=" ansidecl${HEXE}"
  1174. else
  1175.   NEED_TRADDECL=true
  1176.   XDECL_FILTER="\$(TRADDECL)"
  1177.   XDECL_DEPENDENCIES=" traddecl${HEXE}"
  1178. fi
  1179. if [ $CC_NEED_DEELIF = true -o $XCC_NEED_DEELIF = true -o $XCC_NEED_MERGESTRINGS = true ] ; then
  1180.   if [ $CC_ANSI = true ] ; then
  1181.     NEED_ANSIDECL=true
  1182.   else
  1183.     NEED_TRADDECL=true
  1184.   fi
  1185. fi
  1186.  
  1187. if [ $NEED_ANSIDECL = true ] ; then
  1188.   echo "ANSIDECL = ${HERE}ansidecl"
  1189. fi
  1190. if [ $CC_NEED_CCPAUX = true ] ; then
  1191.   CCPAUX='ccpaux'$HEXE
  1192.   CCPAUX_FILTER=' | '$HERE'ccpaux'
  1193. else
  1194.   CCPAUX=''
  1195.   CCPAUX_FILTER=''
  1196. fi
  1197. if [ $XCC_NEED_CCPAUX = true ] ; then
  1198.   XCCPAUX='ccpaux'$HEXE
  1199.   XCCPAUX_FILTER=' | '$HERE'ccpaux'
  1200. else
  1201.   XCCPAUX=''
  1202.   XCCPAUX_FILTER=''
  1203. fi
  1204. if [ $CC_NEED_DEELIF = true ] ; then
  1205.   DEELIF='deelif'$HEXE
  1206.   DEELIF_FILTER=' | '$HERE'deelif'
  1207. else
  1208.   DEELIF=''
  1209.   DEELIF_FILTER=''
  1210. fi
  1211. if [ $XCC_NEED_DEELIF = true ] ; then
  1212.   XDEELIF='deelif'$HEXE
  1213.   XDEELIF_FILTER=' | '$HERE'deelif'
  1214. else
  1215.   XDEELIF=''
  1216.   XDEELIF_FILTER=''
  1217. fi
  1218. if [ $XCC_NEED_DEERROR = true ] ; then
  1219.   DEERROR='deerror'$HEXE
  1220.   DEERROR_FILTER=' | '$HERE'deerror'
  1221. else
  1222.   DEERROR=''
  1223.   DEERROR_FILTER=''
  1224. fi
  1225. if [ $XCC_NEED_DEDEFINED = true ] ; then
  1226.   DEDEFINED='dedefined'$HEXE
  1227.   DEDEFINED_FILTER=' | '$HERE'dedefined'
  1228. else
  1229.   DEDEFINED=''
  1230.   DEDEFINED_FILTER=''
  1231. fi
  1232. if [ $NEED_TRADDECL = true ] ; then
  1233.   TRADDECL_FILTER=' | '$HERE'traddecl'
  1234.   if [ $XCC_ANSI = false ] ; then
  1235.     echo "TRADDECL = ${XCCPAUX_FILTER}${XDEELIF_FILTER}${DEERROR_FILTER}${DEDEFINED_FILTER}${TRADDECL_FILTER}"
  1236.     XDECL_DEPENDENCIES=" ${XCCPAUX} ${XDEELIF} ${DEERROR} ${DEDEFINED} ${XDECL_DEPENDENCIES}"
  1237.   fi
  1238. fi
  1239. if [ $XCC_NEED_DEEMA = true ] ; then
  1240.   if [ $HOS = unix ] ; then
  1241.     echo "DEEMA = sed -e 's/,)/,_EMA_)/g'"
  1242.   else
  1243.     echo "DEEMA = deema"
  1244.     XDECL_DEPENDENCIES="${XDECL_DEPENDENCIES} deema${HEXE}"
  1245.   fi
  1246.   XDECL_FILTER="${XDECL_FILTER} | \$(DEEMA)"
  1247. fi
  1248. if [ $XCC_NEED_MERGESTRINGS = true ] ; then
  1249.   echo "MERGESTRINGS = ${HERE}mergestrings"
  1250. fi
  1251.  
  1252. echo "TXT2C = ${HERE}txt2c"
  1253. if [ $CROSS = true ] ; then
  1254.   TXT2CFLAGS="${TXT2CFLAGS} -DCROSS"
  1255.   TXT_INCLUDES=' lispbibl.h'
  1256. else
  1257.   TXT2CFLAGS="${TXT2CFLAGS}"
  1258.   TXT_INCLUDES=$EVERY_INCLUDES_C
  1259. fi
  1260.  
  1261. if [ $HSYS = sun4 ] ; then
  1262.   echo "TEMPDIR = /usr1/tmp"
  1263. fi
  1264.  
  1265. echo
  1266.  
  1267. echolist "DFILES =" "$DFILES $ARI_ASMD $SP_ASMD" ".d"
  1268. echo
  1269.  
  1270. echolist "CFILES =" "$DFILES $ARI_ASMD $ARI_ASMC $SP_ASMD" ".c"
  1271. echo
  1272.  
  1273. echolist "OBJECTS =" "$MODULES $ARI_ASMS $SP_ASMS $GMALLOC" "${TOBJ}"
  1274. echo
  1275.  
  1276. echolist "LSPFILES =" "$CODE" ".lsp"
  1277. echo
  1278.  
  1279. echolist "FASFILES =" "$CODE" ".fas"
  1280. echo
  1281.  
  1282. echolist "TXTFILES =" "$DOC" ".txt"
  1283. echo
  1284.  
  1285. echolist "TESTLSPFILES =" "$CODE" ".lsp" "${TESTDIR}${NEXT_}"
  1286. echo
  1287.  
  1288. echolist "TESTFASFILES =" "$CODE" ".fas" "${TESTDIR}${NEXT_}"
  1289. echo
  1290.  
  1291. echo
  1292.  
  1293. echo "all : init allc allo lisp${LEXE} interpreted.mem halfcompiled.mem compiled.mem manual"
  1294. echodummyrule all
  1295. echo
  1296.  
  1297. echo
  1298.  
  1299. UTILDIR="${PARENT}utils${NEXT}"
  1300. DOCDIR="${PARENT}doc${NEXT}"
  1301. if [ $HOS = dos -o $HOS = os2 -o $HOS = atari ] ; then
  1302.   # Replace '/' by '\':
  1303.   UTILDIR_=`echo $UTILDIR | sed -e 's,/,\\\\,g'`
  1304.   DOCDIR_=`echo $DOCDIR | sed -e 's,/,\\\\,g'`
  1305. else
  1306.   UTILDIR_=$UTILDIR
  1307.   DOCDIR_=$DOCDIR
  1308. fi
  1309. if [ $CROSS = false ] && [ $HSYS = doswatcom -o $HSYS = windowswatcom ] ; then
  1310.   NEXT_CC="$NEXT_"
  1311.   UTILDIR_CC="$UTILDIR_"
  1312. else
  1313.   NEXT_CC="$NEXT"
  1314.   UTILDIR_CC="$UTILDIR"
  1315. fi
  1316.  
  1317. UTILS=''
  1318. if [ $NEED_CCPAUX = true ] ; then
  1319.   UTILS=$UTILS' ccpaux'
  1320. fi
  1321. UTILS=$UTILS' comment5'
  1322. if [ $CC_NEED_DEELIF = true -o $XCC_NEED_DEELIF = true ] ; then
  1323.   UTILS=$UTILS' deelif'
  1324. fi
  1325. if [ $XCC_NEED_DEERROR = true ] ; then
  1326.   UTILS=$UTILS' deerror'
  1327. fi
  1328. if [ $XCC_NEED_DEDEFINED = true ] ; then
  1329.   UTILS=$UTILS' dedefined'
  1330. fi
  1331. if [ $XCC_ANSI = true ] ; then
  1332.   UTILS=$UTILS' ansidecl'
  1333. fi
  1334. if [ $XCC_ANSI = false ] ; then
  1335.   UTILS=$UTILS' traddecl'
  1336. fi
  1337. if [ $XCC_NEED_DEEMA = true -a $HOS != unix ] ; then
  1338.   UTILS=$UTILS' deema'
  1339. fi
  1340. if [ $XCC_NEED_MERGESTRINGS = true ] ; then
  1341.   UTILS=$UTILS' mergestrings'
  1342. fi
  1343. UTILS=$UTILS' txt2c'
  1344. if [ "$CHSCONVERT" = "./cv_lt_at" ] ; then
  1345.   UTILS=$UTILS' cv_lt_at'
  1346. fi
  1347. if [ "$CHSCONVERT" = "./cv_lt_pc" ] ; then
  1348.   UTILS=$UTILS' cv_lt_pc'
  1349. fi
  1350.  
  1351. line="init :"
  1352. if [ $TOS = unix ] ; then
  1353.   line=$line" machine.h"
  1354. fi
  1355. if [ $XCC_UNUSABLE_CPP = true ] ; then
  1356.   line=$line" ../utils/gcc-cccp/cccp"
  1357. fi
  1358. if [ $CROSS = true ] ; then
  1359.   line=$line" unixconf.h"
  1360. fi
  1361. for util in $UTILS ; do
  1362.   line=$line" ${util}${HEXE}"
  1363. done
  1364. line=$line" \$(DFILES) modules.h"
  1365. if [ $TSYS = sun4 -a "$CC" = cc ] ; then
  1366.   line=$line" cc_sparc.il"
  1367. fi
  1368. echo $line
  1369. echodummyrule init
  1370. echo
  1371. if [ $TOS = unix ] ; then
  1372.   echo "machine.h : ${SRCDIR}machine.c"
  1373.   echotab_to_HEXE "\$(CC) \$(CFLAGS) ${SRCDIR}machine.c" "machine"
  1374.   echotab "${HERE}machine${HEXE} > machine.h"
  1375.   echotab "\$(RM) machine${HEXE}"
  1376.   echo
  1377. fi
  1378. if [ $XCC_UNUSABLE_CPP = true ] ; then
  1379.   echo "../utils/gcc-cccp/cccp :"
  1380.   echotab "cd ../utils/gcc-cccp ; \$(MAKE)"
  1381.   echo
  1382. fi
  1383. if [ $CROSS = true ] ; then
  1384.   echo "unixconf.h :"
  1385.   echotab "if [ ! -f unixconf.h ] ; then \$(TOUCH) unixconf.h ; fi"
  1386.   echo
  1387. fi
  1388. for util in $UTILS ; do
  1389.   if [ $util = ccpaux -o $util = deerror -o $util = deema ] ; then
  1390.     echo "${util}${HEXE} : ${UTILDIR_}${util}.c"
  1391.     echotab_to_HEXE "\$(CC) \$(CFLAGS) ${UTILDIR_CC}${util}.c" "${util}"
  1392.     echo
  1393.   fi
  1394.   if [ $util = dedefined ] ; then
  1395.     echo "${util}${HEXE} : ${UTILDIR_}${util}.c"
  1396.     echotab "\$(LN) ${UTILDIR_}${util}.c ${util}.c"
  1397.     echotab_to_HEXE "\$(CC) \$(CFLAGS) ${util}.c" "${util}"
  1398.     echotab "\$(RM) ${util}.c"
  1399.     echo
  1400.   fi
  1401.   if [ $util = cv_lt_at ] ; then
  1402.     # Only used when $CROSS = true
  1403.     echo "${util}${HEXE} : ../atari/${util}.c"
  1404.     echotab_to_HEXE "\$(CC) \$(CFLAGS) ../atari/${util}.c" "${util}"
  1405.     echo
  1406.   fi
  1407.   if [ $util = cv_lt_pc ] ; then
  1408.     # Only used when $CROSS = true
  1409.     echo "${util}${HEXE} : ../dos/${util}.c"
  1410.     echotab_to_HEXE "\$(CC) \$(CFLAGS) ../dos/${util}.c" "${util}"
  1411.     echo
  1412.   fi
  1413.   if [ $util = txt2c ] ; then
  1414.     echo "${util}${HEXE} : ${UTILDIR_}${util}.c"
  1415.     echotab_to_HEXE "\$(CC) \$(CFLAGS)${TXT2CFLAGS} ${UTILDIR_CC}${util}.c" "${util}"
  1416.     echo
  1417.   fi
  1418.   if [ $util = comment5 ] ; then
  1419.     if [ $CC_NEED_CCPAUX = true ] ; then
  1420.       echo "${util}${HEXE} : ${UTILDIR_}${util}.c ${CCPAUX}"
  1421.       echotab "${HERE}ccpaux${HEXE} < ${UTILDIR_}${util}.c > ${util}.c"
  1422.       echotab_to_HEXE "\$(CC) \$(CFLAGS) ${util}.c" "${util}"
  1423.       echotab "\$(RM) ${util}.c"
  1424.       echo
  1425.       OBSOLETE=$OBSOLETE" ${util}.c"
  1426.     else
  1427.       echo "${util}${HEXE} : ${UTILDIR_}${util}.c"
  1428.       echotab_to_HEXE "\$(CC) \$(CFLAGS) ${UTILDIR_CC}${util}.c" "${util}"
  1429.       echo
  1430.     fi
  1431.   fi
  1432.   if [ $util = ansidecl -o $util = traddecl ] ; then
  1433.     if [ $util = traddecl ] ; then
  1434.       flags="${TRADDECLFLAGS}"
  1435.     fi
  1436.     if [ $util = ansidecl ] ; then
  1437.       flags="${ANSIDECLFLAGS}"
  1438.     fi
  1439.     echo "${util}${HEXE} : ${UTILDIR_}${util}.d comment5${HEXE}"
  1440.     echotab "\$(LN) ${UTILDIR_}${util}.d ${util}.d"
  1441.     echotab "\$(COMMENT5) ${util}.d ${util}.c"
  1442.     echotab "\$(RM) ${util}.d"
  1443.     echotab_to_HEXE "\$(CC) \$(CFLAGS)${flags} ${util}.c" "${util}"
  1444.     echotab "\$(RM) ${util}.c"
  1445.     echo
  1446.     OBSOLETE=$OBSOLETE" ${util}.c"
  1447.   fi
  1448.   if [ $util = deelif -o $util = mergestrings ] ; then
  1449.     if [ $CC_ANSI = true ] ; then
  1450.       echo "${util}${HEXE} : ${UTILDIR_}${util}.d comment5${HEXE} ansidecl${HEXE}"
  1451.       echotab "\$(COMMENT5) ${UTILDIR_}${util}.d | \$(ANSIDECL) > ${util}.c"
  1452.       echotab_to_HEXE "\$(CC) \$(CFLAGS) ${util}.c" "${util}"
  1453.       echotab "\$(RM) ${util}.c"
  1454.       echo
  1455.     else
  1456.       echo "${util}${HEXE} : ${UTILDIR_}${util}.d comment5${HEXE} ${CCPAUX} traddecl${HEXE}"
  1457.       echotab "\$(COMMENT5) ${UTILDIR_}${util}.d${CCPAUX_FILTER}${TRADDECL_FILTER} > ${util}.c"
  1458.       echotab_to_HEXE "\$(CC) \$(CFLAGS) ${util}.c" "${util}"
  1459.       echotab "\$(RM) ${util}.c"
  1460.       echo
  1461.     fi
  1462.     OBSOLETE=$OBSOLETE" ${util}.c"
  1463.   fi
  1464. done
  1465.  
  1466. echo
  1467.  
  1468. if [ $LISPARIT = lisparit0 ] ; then
  1469.   line="${SRCDIR}${LISPARIT}.d :"
  1470.   for f in lisparit $LISPARIT_SUBFILES ; do
  1471.     line=$line" ${SRCDIR}${f}.d"
  1472.   done
  1473.   echo $line
  1474.   echotab "\$(RM) ${SRCDIR}${LISPARIT}.d ${SRCDIR}${LISPARIT}.tmp"
  1475.   # echotab "head -19 ${SRCDIR}lisparit.d > ${SRCDIR}${LISPARIT}.tmp" # not portable!
  1476.   echotab "sed 19q ${SRCDIR}lisparit.d > ${SRCDIR}${LISPARIT}.tmp"
  1477.   for f in $LISPARIT_SUBFILES ; do
  1478.     echotab "\$(CAT) ${SRCDIR}${f}.d >> ${SRCDIR}${LISPARIT}.tmp"
  1479.   done
  1480.   # echotab "tail +53 ${SRCDIR}lisparit.d >> ${SRCDIR}${LISPARIT}.tmp" # maybe not portable
  1481.   echotab "sed 1,52d ${SRCDIR}lisparit.d >> ${SRCDIR}${LISPARIT}.tmp"
  1482.   echotab "\$(MV) ${SRCDIR}${LISPARIT}.tmp ${SRCDIR}${LISPARIT}.d"
  1483.   echo
  1484.   OBSOLETE=$OBSOLETE" ${SRCDIR}${LISPARIT}.tmp"
  1485. fi
  1486.  
  1487. if [ $HOS = unix ] ; then
  1488.   echo "${SRCDIR}version.h : ${SRCDIR}VERSION"
  1489.   echotab "sed -e 's/^/#define VERSION \"/' -e 's/\$\$/\"/' ${SRCDIR}VERSION > ${SRCDIR}version.h"
  1490.   echo
  1491. fi
  1492.  
  1493. if [ -n "${SRCDIR}" ] ; then
  1494.   if [ $HOS = unix ] ; then
  1495.     for f in $DFILES $ARI_ASMD $SP_ASMD ; do
  1496.       echo "${f}.d : ${SRCDIR}${f}.d"
  1497.       echotab "-\$(LN) ${SRCDIR}${f}.d ${f}.d"
  1498.       echo
  1499.     done
  1500.     for f in version.h modules.h module.cc ; do
  1501.       echo "${f} : ${SRCDIR}${f}"
  1502.       echotab "-\$(LN) ${SRCDIR}${f} ${f}"
  1503.       echo
  1504.     done
  1505.     if [ $TSYS = sun4 -a "$CC" = cc ] ; then
  1506.       echo "cc_sparc.il : ${SRCDIR}cc_sparc.il"
  1507.       echotab "-\$(LN) ${SRCDIR}cc_sparc.il cc_sparc.il"
  1508.       echo
  1509.     fi
  1510.     echo
  1511.   fi
  1512. fi
  1513.  
  1514. echo "allc : init \$(CFILES)"
  1515. echodummyrule allc
  1516. echo
  1517.  
  1518. for f in $DFILES ; do
  1519.   echo "${f}.c : ${f}.d comment5${HEXE}${XDECL_DEPENDENCIES}"
  1520.   echotabpipe "\$(COMMENT5) ${f}.d${CHSCONVERT_FILTER} ${XDECL_FILTER} > ${f}.c"
  1521.   echo
  1522. done
  1523.  
  1524. for f in $ARI_ASMD $SP_ASMD ; do
  1525.   echo "${f}.c : ${f}.d comment5${HEXE} ${XCCPAUX} ${XDEELIF}"
  1526.   echotabpipe "\$(COMMENT5) ${f}.d${XCCPAUX_FILTER}${XDEELIF_FILTER} > ${f}.c"
  1527.   echo
  1528. done
  1529.  
  1530. for f in $ARI_ASMS $SP_ASMS ; do
  1531.   case $f in
  1532.     *68*) g="${f}.mit"
  1533.           if [ $TSYS = atari -a "${f}" = ari68000 ] ; then
  1534.             echo "# Change \"${f}.mit\" to \"${f}.atari\" when using \"gcc-atari -mshort\""
  1535.           fi
  1536.           echo "${f}.c : ${g}.c"
  1537.           echotab "\$(LN) ${g}.c ${f}.c"
  1538.           echo
  1539.           ;;
  1540.   esac
  1541. done
  1542.  
  1543. if [ $AS_UNDERSCORE = true ] ; then
  1544.   ASMFLAGS=' -DUNDERSCORE'
  1545. else
  1546.   ASMFLAGS=''
  1547. fi
  1548. if [ $XCC_ANSI = true -a $XCC_GCC = false ] ; then
  1549.   # Remove the line number information etc. and convert "% ecx" back to "%ecx":
  1550.   ASM_FILTER=" | grep -v '^#' | sed 's,% ,%,g'"
  1551. else
  1552.   if [ $AS_UNDERSCORE = false ] ; then
  1553.     # These are the less modern assemblers or SYSV assemblers.
  1554.     # Remove the line number information etc.
  1555.     if [ "$HSYSOS" = coherent ] ; then
  1556.       # Coherent386 make needs a backslash before '#', even within quotes!
  1557.       ASM_FILTER=" | grep -v '^\\#'"
  1558.     else
  1559.       ASM_FILTER=" | grep -v '^#'"
  1560.     fi
  1561.   else
  1562.     ASM_FILTER=''
  1563.   fi
  1564. fi
  1565. for f in $ARI_ASMS $SP_ASMS ; do
  1566.   # The preprocessor barfs on arihppa: "unterminated character constant".
  1567.   # We ignore this:
  1568.   case $f in
  1569.     *hppa) g='-' ;;
  1570.     *)     g='' ;;
  1571.   esac
  1572.   # In ari68020.mit.d the dollars must be replaced:
  1573.   case $f in
  1574.     ari68020*)
  1575.       if [ $AS_UNDERSCORE = false ] ; then
  1576.         h=' | sed -e '"'"'s/\$$/%/g'"'"
  1577.       else
  1578.         h=' | sed -e '"'"'s/\$$//g'"'"
  1579.       fi
  1580.       ;;
  1581.     *) h='' ;;
  1582.   esac
  1583.   echo "${f}.s : ${f}.c"
  1584.   echotab "${g}${XCPP}${ASMFLAGS} ${f}.c${h}${ASM_FILTER} > ${f}.s"
  1585.   echo
  1586. done
  1587.  
  1588. line="allo : allc"
  1589. for f in $MODULES ; do
  1590.   line=$line" ${f}${TOBJ}"
  1591. done
  1592. echo $line
  1593. echodummyrule allo
  1594. echo
  1595.  
  1596. line="alls : allc"
  1597. for f in $MODULES ; do
  1598.   line=$line" ${f}.s"
  1599. done
  1600. echo $line
  1601. echodummyrule alls
  1602. echo
  1603.  
  1604. for f in $MODULES genclisph modules $EXTRA_MODULES ; do
  1605.   depends=$EVERY_INCLUDES
  1606.   if [ $f = spvw -o $f = package ] ; then
  1607.     depends=$depends' constpack'
  1608.   fi
  1609.   if [ $f = spvw ] ; then
  1610.     depends=$depends' avl sort'
  1611.   fi
  1612.   if [ $f = array -o $f = hashtabl -o $f = io -o $f = misc -o $f = package -o $f = spvw -o $f = stream -o $f = graph ] ; then
  1613.     depends=$depends' arilev0'
  1614.   fi
  1615.   if [ $f = spvw -o $f = hashtabl ] ; then
  1616.     depends=$depends' aridecl'
  1617.   fi
  1618.   if [ $f = $LISPARIT ] ; then
  1619.     depends=$depends''$LISPARIT_INCLUDES''$ARI_ASMS
  1620.   fi
  1621.   if [ $f = rexx ] ; then
  1622.     depends=$depends' amiga2'
  1623.   fi
  1624.   if [ $f = windows ] ; then
  1625.     depends=$depends' wintext winstat winmain winaux'
  1626.   fi
  1627.   dependsc=''
  1628.   for g in $depends ; do
  1629.     dependsc=$dependsc' '$g'.c'
  1630.   done
  1631.   if [ $f = spvw ] ; then
  1632.     dependsc=$dependsc' version.h'
  1633.   fi
  1634.   flags=$XCFLAGS
  1635.   if [ $f = stream -o $f = noreadline ] ; then
  1636.     if [ $TERMINAL = readline ] ; then
  1637.       flags=$flags" ${INCLUDEDIR}${SRCDIR}${READLINEDIR}"
  1638.     fi
  1639.   fi
  1640.   if [ $f = stdwin ] ; then
  1641.     flags=$flags" ${INCLUDEDIR}stdwin${NEXT_CC}H"
  1642.   fi
  1643.   if [ $f = graph ] ; then
  1644.     flags=$flags' '$X_INCLUDES
  1645.   fi
  1646.   if [ $f = modules ] ; then
  1647.     if [ $HOS = unix -a $CROSS = false ] ; then
  1648.       dependsc=$dependsc' clisp.h'
  1649.     else
  1650.       flags=$flags' -DNO_CLISP_H'
  1651.     fi
  1652.     dependsc=$dependsc' modules.h'
  1653.   fi
  1654.   if [ $TSYS = sun4 -a "$CC" = cc ] ; then
  1655.     flags2=$flags' cc_sparc.il'
  1656.     dependsc2=' cc_sparc.il'
  1657.   else
  1658.     if [ "$TSYSOS" = coherent -a $f = $LISPARIT -a $XCC_GCC = false ] ; then
  1659.       flags2=$flags' -T0' # avoid "Out of memory" message
  1660.       dependsc2=''
  1661.     else
  1662.       flags2=$flags
  1663.       dependsc2=''
  1664.     fi
  1665.   fi
  1666.   if [ $f = genclisph -a $XCC_GCC = true ] ; then
  1667.     flags2=$flags2' -O0' # no need to optimize this
  1668.   fi
  1669.   if [ $XCC_NEED_MERGESTRINGS = true ] ; then
  1670.     echo "${f}.i : ${f}.c${dependsc}"
  1671.     echotab "(echo \"# 1 \\\"${f}.i\\\"\" ; ${XCPP} ${flags} ${f}.c | \$(MERGESTRINGS)) > ${f}.i"
  1672.     echo
  1673.     # if [ $TSYS = sun4 -a "$CC" = cc ] ; then
  1674.     # # Die .s-Files nach dem Optimieren nochmal durch inline jagen
  1675.     # echo "${f}.s : ${f}.i${dependsc2} il_sparc.il"
  1676.     # echotab "${XCC} ${flags2} -S ${f}.i"
  1677.     # echotab "\$(MV) ${f}.s ${f}.tmp"
  1678.     # echotab "\$(INLINE) -i il_sparc.il < ${f}.tmp > ${f}.s"
  1679.     # echotab "\$(RM) ${f}.tmp"
  1680.     # echo
  1681.     # echo "${f}${TOBJ} : ${f}.s"
  1682.     # echotab "${XCC} -c ${f}.s"
  1683.     # echo
  1684.     # OBSOLETE=$OBSOLETE" ${f}.tmp"
  1685.     # else
  1686.     echo "${f}.s : ${f}.i${dependsc2}"
  1687.     echotab "${XCC} ${flags2} -S ${f}.i"
  1688.     echo
  1689.     echo "${f}${TOBJ} : ${f}.i${dependsc2}"
  1690.     echotab "${XCC} ${flags2} -c ${f}.i"
  1691.     echo
  1692.     # fi
  1693.   else
  1694.     echo "${f}.i : ${f}.c${dependsc}"
  1695.     echotab "${XCPP} ${flags} ${f}.c > ${f}.i"
  1696.     echo
  1697.     if [ $XCC_UNUSABLE_CPP = true ] ; then
  1698.       echo "${f}.s : ${f}.c${dependsc}${dependsc2}"
  1699.       echotab "${XCPP} ${flags} ${f}.c > ${f}.i.c"
  1700.       echotab "${XCC} ${flags2} -S ${f}.i.c"
  1701.       echotab "\$(MV) ${f}.i.s ${f}.s"
  1702.       echotab "\$(RM) ${f}.i.c"
  1703.       echo
  1704.       echo "${f}${TOBJ} : ${f}.c${dependsc}${dependsc2}"
  1705.       echotab "${XCPP} ${flags} ${f}.c > ${f}.i.c"
  1706.       echotab "${XCC} ${flags2} -c ${f}.i.c"
  1707.       echotab "\$(MV) ${f}.i${TOBJ} ${f}${TOBJ}"
  1708.       echotab "\$(RM) ${f}.i.c"
  1709.       echo
  1710.     else
  1711.       if [ $HSYS = doswatcom -o $HSYS = windowswatcom ] ; then
  1712.         echo "${f}.s : ${f}${TOBJ}"
  1713.         echotab "\$(DISASM) ${f}${TOBJ} -l=${f}.s"
  1714.         echo
  1715.       else
  1716.         echo "${f}.s : ${f}.c${dependsc}${dependsc2}"
  1717.         echotab "${XCC} ${flags2} -S ${f}.c"
  1718.         echo
  1719.       fi
  1720.       echo "${f}${TOBJ} : ${f}.c${dependsc}${dependsc2}"
  1721.       echotab "${XCC} ${flags2} -c ${f}.c"
  1722.       echo
  1723.     fi
  1724.   fi
  1725. done
  1726.  
  1727. if [ -n "$with_dynamic_modules" ] ; then
  1728.   modules=''
  1729.   if [ -n "$with_module_stdwin" ] ; then
  1730.     modules=$modules' stdwin'
  1731.   fi
  1732.   for n in $modules ; do
  1733.     depends=$EVERY_INCLUDES
  1734.     dependsc=''
  1735.     for g in $depends ; do
  1736.       dependsc=$dependsc' '$g'.c'
  1737.     done
  1738.     flags=$XCFLAGS
  1739.     if [ $HOS = unix -a $CROSS = false ] ; then
  1740.       dependsc=' clisp.h'
  1741.     else
  1742.       flags=$flags' -DNO_CLISP_H'
  1743.     fi
  1744.     f=$n'_module'
  1745.     echo "${f}.cc : module.cc"
  1746.     echotab "-\$(LN) module.cc ${f}.cc"
  1747.     echo
  1748.     echo "${f}.s : ${f}.cc${dependsc}"
  1749.     echotab "${XCC} ${flags} -DMODULE=${n} -S ${f}.cc"
  1750.     echo
  1751.     echo "${f}${TOBJ} : ${f}.cc${dependsc}"
  1752.     echotab "${XCC} ${flags} -DMODULE=${n} -c ${f}.cc"
  1753.     echo
  1754.   done
  1755. fi
  1756.  
  1757. if test -n "$GMALLOC"; then
  1758.   for f in $GMALLOC ; do
  1759.     echo "${f}${TOBJ} : ${SRCDIR}malloc${NEXT_}${f}.c"
  1760.     echotab "${XCC} ${XCFLAGS} -c ${SRCDIR}malloc${NEXT_}${f}.c -o ${f}${TOBJ}"
  1761.     echo
  1762.   done
  1763. fi
  1764.  
  1765. for f in $ARI_ASMS $SP_ASMS ; do
  1766.   echo "${f}${TOBJ} : ${f}.s"
  1767.   # Call the assembler, preferrably through the C compiler:
  1768.   if [ "$TSYSOS" = coherent -a $XCC_GCC = false ] ; then
  1769.     echotab "as -g ${f}.s"
  1770.   else
  1771.     if [ $f = arihppa ] ; then
  1772.       # Only the native as groks the .SHORTDATA statements in arihppa.d
  1773.       echotab "${XCC} ${XCFLAGS} -c ${f}.s || /bin/as ${f}.s -o ${f}${TOBJ}"
  1774.     else
  1775.       echotab "${XCC} ${XCFLAGS} -c ${f}.s"
  1776.     fi
  1777.   fi
  1778.   echo
  1779. done
  1780.  
  1781. if [ $HOS = unix ] ; then
  1782.   echo "lisp.o : \$(OBJECTS)"
  1783.   echotab "ld -r -o lisp.o \$(OBJECTS)"
  1784.   echotab "chmod a-x lisp.o"
  1785.   echo
  1786.   echo "lisp.a : lisp.o modules.o${MAIN_O}"
  1787.   if test -z "$LIBGCC"; then
  1788.     echotab "\$(AR) rcv lisp.a lisp.o modules.o${MAIN_O}"
  1789.   else
  1790.     echotab "mkdir libgcc"
  1791.     echotab "cd libgcc ; \$(AR) xv \$(LIBGCC)"
  1792.     echotab "\$(AR) rcv lisp.a lisp.o modules.o libgcc/*.o"
  1793.     echotab "\$(RM) -rf libgcc"
  1794.   fi
  1795.   echotab "\$(RANLIB) lisp.a"
  1796.   echo
  1797.   echo "libnoreadline.a : noreadline.o"
  1798.   echotab "\$(AR) rcv libnoreadline.a noreadline.o"
  1799.   echotab "\$(RANLIB) libnoreadline.a"
  1800.   echo
  1801. fi
  1802.  
  1803. if [ -n "$with_stdwin" -o -n "$with_module_stdwin" ] ; then
  1804.   if [ $HOS = unix ] ; then
  1805.     echo "stdwin/libstdwin.a :"
  1806.     echotab "(cd stdwin ; \$(MAKE) libstdwin.a)"
  1807.     echo
  1808.   fi
  1809. fi
  1810.  
  1811. if [ $TERMINAL = readline -a $HOS = unix ] ; then
  1812.  
  1813.   echo "readline_ : libreadline.a readline.tar.Z readline.tar.gz"
  1814.   echodummyrule readline_
  1815.   echo
  1816.   echo "${READLINELIB} :"
  1817.   echotab "(cd ${READLINEDIR} ; \$(MAKE) -r CC='${XCC}' CFLAGS='${XCFLAGS} -DCLISP' RANLIB='\$(RANLIB)')"
  1818.   echo
  1819.   echo "libreadline.a : ${READLINELIB}"
  1820.   echotab "-\$(LN) ${READLINELIB} libreadline.a"
  1821.   echo
  1822.   echo "readline.tar.Z :"
  1823.   echotab "(cd ${SRCDIR} ; tar -cvf - readline | compress -c) > readline.tar.Z"
  1824.   echo
  1825.   echo "readline.tar.gz :"
  1826.   echotab "(cd ${SRCDIR} ; tar -cvf - readline | gzip -c) > readline.tar.gz"
  1827.   echo
  1828.  
  1829.   echo
  1830.  
  1831. fi
  1832.  
  1833. if [ $TSYS = windows -o $TSYS = windowswatcom ] ; then
  1834.   RESOURCE='lisp.res'
  1835.   echo "lisp.res : clispwin.rc clispwin.ico clispwin.cur"
  1836.   echotab "\$(RC) -r clispwin.rc -fo=lisp.res"
  1837.   echo
  1838. else
  1839.   RESOURCE=''
  1840. fi
  1841.  
  1842. echo "lisp${LEXE} : \$(OBJECTS) modules${TOBJ} ${XCL_STDWINLIB} ${XCL_READLINELIB} ${RESOURCE}"
  1843. if [ $HOS != dos -a $HOS != os2 ] ; then
  1844.   if [ $XCC_GCC = true -a -n "$SOLARIS_LINKING" ] ; then
  1845.     # Dynamically linking on Solaris 2.[23] is a pain.
  1846.     LIBGCC_DIR='`'"${XCC} -print-libgcc-file-name"' | sed -e '"'"'s,[^/]*$$,,'"'"'`'
  1847.     echotab "${XCC} ${XCFLAGS} ${XCLFLAGS} \$(OBJECTS) modules${TOBJ} ${LIBS} ${X_LIBS} -o lisp${LEXE} || /usr/ccs/bin/ld -V -dy -Bdynamic -Y P,/usr/ccs/lib:/usr/lib -Qy -o lisp${LEXE} ${LIBGCC_DIR}crt1.o ${LIBGCC_DIR}crti.o /usr/ccs/lib/values-Xa.o ${LIBGCC_DIR}crtbegin.o \$(OBJECTS) modules.o -L${LIBGCC_DIR} -L/usr/ccs/bin ${LIBS} ${X_LIBS} -lgcc -lc ${LIBGCC_DIR}crtend.o ${LIBGCC_DIR}crtn.o -lgcc"
  1848.   else
  1849.     echotab "${XCC} ${XCFLAGS} ${XCLFLAGS} \$(OBJECTS) modules${TOBJ} ${LIBS} ${X_LIBS} -o lisp${LEXE}"
  1850.   fi
  1851.   if [ $HOS = unix ] ; then
  1852.     echotab "-sync"
  1853.   fi
  1854.   echo
  1855. else
  1856.   # DOS has a very limited command line length
  1857.   if [ $HSYS = doswatcom -o $HSYS = windowswatcom ] ; then
  1858.     echotab "\$(RM) lisp${LEXE}"
  1859.     if [ $HSYS = doswatcom ] ; then
  1860.       echotab "${XCC} ${XCFLAGS} -fe=lisp${LEXE} -fd=wcclink.lnk" # generate linker commands
  1861.       echotab "wlink @wcclink.lnk @wcclink.in" # execute linker commands
  1862.     fi
  1863.     if [ $HSYS = windowswatcom ] ; then
  1864.       echotab "${XCC} ${XCFLAGS} -l=win386 -fe=lisp -fd=wcclink.lnk" # generate linker commands
  1865.       echotab "wlink @wcclink.lnk @wcclink.in" # execute linker commands, generate lisp.rex
  1866.       echotab "wbind lisp${LEXE} -R lisp.res" # generate lisp.exe from lisp.rex and lisp.res
  1867.       echotab "\$(RM) lisp.rex"
  1868.     fi
  1869.     echotab "\$(RM) wcclink.lnk"
  1870.   else
  1871.     # XCLFLAGS=$XCLFLAGS' -s' # strip, geht unter emx0.8f nicht mehr
  1872.     if [ $TSYS = windows ] ; then
  1873.       LAOUT='.w32'
  1874.     else
  1875.       LAOUT=''
  1876.     fi
  1877.     echotab "\$(RM) lisp${LAOUT}"
  1878.     echotab "\$(RM) lisp${LEXE}"
  1879.     if true; then
  1880.       echotab "${XCC} ${XCFLAGS} -o lisp${LAOUT} @gcclink.in ${XCLFLAGS} ${LIBS}"
  1881.     else
  1882.       echotab "\$(LD) -o lisp1.o -r spvw.o spvwtabf.o spvwtabs.o spvwtabo.o"
  1883.       echotab "\$(LD) -o lisp2.o -r eval.o control.o pathname.o stream.o io.o"
  1884.       echotab "\$(LD) -o lisp3.o -r array.o hashtabl.o list.o package.o record.o sequence.o"
  1885.       echotab "\$(LD) -o lisp4.o -r charstrg.o debug.o error.o misc.o predtype.o symbol.o"
  1886.       echotab "\$(LD) -o lisp5.o -r lisparit.o graph.o ari80386.o"
  1887.       echotab "${XCC} ${XCFLAGS} -o lisp lisp1.o lisp2.o lisp3.o lisp4.o lisp5.o ${XCLFLAGS} ${LIBS}"
  1888.       echotab "\$(RM) lisp?.o"
  1889.     fi
  1890.     if [ $TSYS = windows ] ; then
  1891.       # Strippen, da wir sowieso nicht debuggen k÷nnen.
  1892.       echotab "strip lisp${LAOUT}"
  1893.       # lisp.exe enthΣlt den Extender und die Ressource und startet lisp.w32.
  1894.       echotab "copy /b \$(RSXW32) lisp${LEXE}"
  1895.       echotab "\$(RC) -t lisp.res lisp${LEXE}"
  1896.     else
  1897.       if [ $HSYS = dosdjgpp ] ; then
  1898.         echotab "strip lisp"
  1899.         echotab "\$(COFF2EXE) lisp lisp${HEXE}"
  1900.       else
  1901.         if [ $TSYS = dos ] ; then
  1902.           echotab "strip lisp"
  1903.           # emx-Option -p hΣlt das untere Megabyte frei, damit EXECUTE geht.
  1904.           #   Bei lisp_1mb.exe nutzen wir dagegen soviel RAM wie m÷glich.
  1905.           # emx-Option -C0 bewirkt, da▀ malloc() bei fehlendem Speicher und
  1906.           #   Plattenplatz NULL liefert, statt es spΣter auf einen Programm-Ausstieg
  1907.           #   wegen "Out of swap space" ankommen zu lassen.
  1908.           # emx-Option -aim bewirkt, da▀ der Zugriff auf die Grafikkarte und
  1909.           #   den Bildschirmspeicher funktioniert.
  1910.           echotab "emxbind -q c:\emx\bin\emx.exe lisp lisp${LEXE} -p -C0 -aim"
  1911.           echotab "emxbind -q c:\emx\bin\emx.exe lisp lisp_1mb${LEXE} -C0 -aim"
  1912.         else
  1913.           # emx-Option -acmi bewirkt, da▀ unter DOS der Zugriff auf den Bildschirm-
  1914.           #   speicher und die Grafikkarten-Ports funktioniert.
  1915.           echotab "emxbind -q c:\emx\bin\emx.exe lisp lisp${LEXE} -p -acmi"
  1916.           # Strippen darf man wegen -lvideo erst hinterher.
  1917.           echotab "emxbind -s lisp${LEXE}"
  1918.         fi
  1919.       fi
  1920.     fi
  1921.   fi
  1922.   echo
  1923. fi
  1924.  
  1925. echo
  1926.  
  1927. echo "alllsp : \$(LSPFILES)"
  1928. echodummyrule alllsp
  1929. echo
  1930.  
  1931. if [ $TOS = atari ] ; then
  1932.   CONFIG=cfgathd
  1933. fi
  1934. if [ $TOS = amiga ] ; then
  1935.   CONFIG=cfgamiga
  1936. fi
  1937. if [ $TOS = acorn ] ; then
  1938.   CONFOG=cfgacorn
  1939. fi
  1940. if [ $TOS = dos -o $TOS = os2 ] ; then
  1941.   CONFIG=cfgdos
  1942. fi
  1943. if [ $TOS = unix -a $CROSS = false ] ; then
  1944.   if [ "$HSYSOS" = sunos ] ; then
  1945.     CONFIG=cfgsunux
  1946.   fi
  1947.   # cfglinux is obsolete now.
  1948.   # if [ "$HSYSOS" = linux ] ; then
  1949.   #   CONFIG=cfglinux
  1950.   # fi
  1951.   if test -z "$CONFIG"; then
  1952.     CONFIG=cfgunix
  1953.   fi
  1954. fi
  1955. for f in $CODE ; do
  1956.   if [ $f = config ] ; then
  1957.     echo "${f}.lsp : ${SRCDIR}${CONFIG}.lsp"
  1958.     echotab "\$(CP) ${SRCDIR}${CONFIG}.lsp ${f}.lsp"
  1959.     echo
  1960.   else
  1961.     if [ -n "${SRCDIR}" ] ; then
  1962.       echo "${f}.lsp : ${SRCDIR}${f}.lsp"
  1963.       echotab "-\$(LN) ${SRCDIR}${f}.lsp ${f}.lsp"
  1964.       echo
  1965.     fi
  1966.   fi
  1967. done
  1968.  
  1969. if [ $CROSS = false ] ; then
  1970.  
  1971.   echo "interpreted.mem : lisp${LEXE} \$(LSPFILES)"
  1972.   if [ $HOS != dos -a $HOS != os2 ] ; then
  1973.     echotab "${HERE}lisp${LEXE} -m 750KW"' -x "(load \"init.lsp\") (sys::%saveinitmem) (exit)"'
  1974.   else
  1975.     echotab "${HERE}lisp${LEXE} -m 750KW < interpreted.in"
  1976.     echotab "-\$(RM) interpreted.mem"
  1977.   fi
  1978.   echotab "\$(MV) lispinit.mem interpreted.mem"
  1979.   echo
  1980.  
  1981. fi
  1982.  
  1983. if [ $CROSS = false ] ; then
  1984.  
  1985.   for f in $CODE ; do
  1986.     echo "${f}.fas : ${f}.lsp lisp${LEXE} interpreted.mem"
  1987.     echotab "${HERE}lisp${LEXE} -m 750KW -M interpreted.mem -q -c ${f}.lsp"
  1988.     echo
  1989.   done
  1990.  
  1991. else
  1992.  
  1993.   for f in $CODE ; do
  1994.     echo "${f}.fas : ${f}.lsp"
  1995.     echotab 'clisp -M cross.mem -q -x "(cross:compile-file \"'"${f}.lsp"'\")"'
  1996.     echo
  1997.   done
  1998.  
  1999. fi
  2000.  
  2001. if [ $CROSS = false ] ; then
  2002.  
  2003.   echo "halfcompiled.mem : lisp${LEXE} \$(LSPFILES) compiler.fas"
  2004.   if [ $HOS != unix ] ; then
  2005.     echotab "-\$(RM) interpreted.mem"
  2006.   fi
  2007.   if [ $HOS != dos -a $HOS != os2 ] ; then
  2008.     echotab "${HERE}lisp${LEXE} -m 750KW"' -x "(load \"init.lsp\") (sys::%saveinitmem) (exit)"'
  2009.   else
  2010.     echotab "${HERE}lisp${LEXE} -m 750KW < interpreted.in"
  2011.   fi
  2012.   echotab "\$(MV) lispinit.mem interpreted.mem"
  2013.   echotab "\$(TOUCH) compiler.fas"
  2014.   if [ $HOS != acorn ] ; then
  2015.     echotab "\$(TOUCH) halfcompiled.mem"
  2016.   else
  2017.     echotab "echo > halfcompiled.mem"
  2018.   fi
  2019.   echo
  2020.  
  2021.   echo "compiled.mem : lisp${LEXE} \$(FASFILES)"
  2022.   if [ $HOS != dos -a $HOS != os2 ] ; then
  2023.     echotab "${HERE}lisp${LEXE}"' -x "(load \"init.fas\") (sys::%saveinitmem) (exit)"'
  2024.   else
  2025.     echotab "${HERE}lisp${LEXE} < compiled.in"
  2026.     echotab "-\$(RM) compiled.mem"
  2027.   fi
  2028.   echotab "\$(MV) lispinit.mem compiled.mem"
  2029.   echo
  2030.  
  2031. fi
  2032.  
  2033. echo
  2034.  
  2035. if [ $CROSS = false ] ; then
  2036.  
  2037.   echo "# Perform self-tests."
  2038.   if [ $HOS = unix ] ; then
  2039.     echo "check : test testsuite"
  2040.   else
  2041.     echo "check : test"
  2042.   fi
  2043.   echodummyrule check
  2044.   echo
  2045.  
  2046.   echo "# Test: recompile \$(LSPFILES) and check if the resulting .mem file has the same length."
  2047.   echo "test : compiled.mem ${TESTDIR} \$(TESTLSPFILES) \$(TESTFASFILES)"
  2048.   if [ $HOS = unix ] ; then
  2049.     for f in $CODE ; do
  2050.       echotab "cmp -s ${f}.fas ${TESTDIR}/${f}.fas"' || (echo "Test failed." ; exit 1)'
  2051.     done
  2052.     echotab 'echo "Test passed."'
  2053.     echo
  2054.   else
  2055.     if [ $HOS = dos -o $HOS = os2 ] ; then
  2056.       echotab "comp *.fas ${TESTDIR}"
  2057.       echotab "REM The test passed if no differences were found."
  2058.       echo
  2059.     else
  2060.       echotab 'echo "Compare the .fas files by hand."'
  2061.       echo
  2062.     fi
  2063.   fi
  2064.  
  2065.   echo "${TESTDIR} :"
  2066.   echotab "-mkdir ${TESTDIR}"
  2067.   echo
  2068.  
  2069.   for f in $CODE ; do
  2070.     echo "${TESTDIR}${NEXT_}${f}.lsp : ${f}.lsp"
  2071.     if [ $HOS = unix ] ; then
  2072.       echotab "cd ${TESTDIR} ; \$(LN) ${PARENT_}${f}.lsp ${f}.lsp"
  2073.     else
  2074.       echotab "\$(LN) ${f}.lsp ${TESTDIR}"
  2075.     fi
  2076.     echo
  2077.   done
  2078.  
  2079.   for f in $CODE ; do
  2080.     echo "${TESTDIR}${NEXT_}${f}.fas : ${TESTDIR}${NEXT_}${f}.lsp lisp${LEXE} compiled.mem"
  2081.     echotab "${HERE}lisp${LEXE} -M compiled.mem -q -c ${TESTDIR}${NEXT}${f}.lsp"
  2082.     echo
  2083.   done
  2084.  
  2085.   echo "compiled2.mem : lisp${LEXE} \$(TESTFASFILES)"
  2086.   echotab "${HERE}lisp${LEXE}"' -x "(cd \"'"${TESTDIR}${NEXT}"'\") (load \"init.fas\") (cd \"'"${PARENT_2}"'\") (sys::%saveinitmem) (exit)"'
  2087.   echotab "-\$(RM) compiled2.mem"
  2088.   echotab "\$(MV) lispinit.mem compiled2.mem"
  2089.   echo
  2090.  
  2091.   echo
  2092.  
  2093.   if [ $HOS = unix ] ; then
  2094.     echo "testsuite : ${TESTSDIR} lisp${LEXE} compiled.mem"
  2095.     echotab "LISP=\""'`pwd`'"/lisp${LEXE} -M "'`pwd`'"/compiled.mem\"; export LISP; cd ${TESTSDIR}; \$(MAKE) LISP=\"\$\$LISP\""
  2096.     echo
  2097.     echo "${TESTSDIR} :"
  2098.     echotab "-mkdir ${TESTSDIR}"
  2099.     echotab "cd ${TESTSDIR} ; \$(LN) ${PARENT_}${PARENT_}tests/Makefile ."
  2100.     echotab "cd ${TESTSDIR} ; \$(LN) ${PARENT_}${PARENT_}tests/*.lsp ."
  2101.     echotab "cd ${TESTSDIR} ; \$(LN) ${PARENT_}${PARENT_}tests/*.tst ."
  2102.     echo
  2103.     echo
  2104.   fi
  2105.  
  2106. fi
  2107.  
  2108. if [ $HOS = unix -a $XCC_GCC = true ] ; then
  2109.   echo "lispbibl.h :${EVERY_INCLUDES_C}"
  2110.   echotab "((${XCPP} ${XCFLAGS} -P lispbibl.c | grep -v \"^ *\$\$\") ; (${XCPP} ${XCFLAGS} -P -dM lispbibl.c | sort) ) > lispbibl.h"
  2111.   echo
  2112.   echo
  2113. fi
  2114.  
  2115. if [ $HOS = unix -a $CROSS = false ] ; then
  2116.   echo "clisp.h : genclisph.o unixconf.h machine.h"
  2117.   echotab_to_HEXE "\$(CC) \$(CFLAGS) genclisph.o" "genclisph"
  2118.   echotab "${HERE}genclisph > clisp1.h"
  2119.   echotab "\$(RM) genclisph${HEXE}"
  2120.   echotab "grep '^#' unixconf.h > clisp2.h"
  2121.   echotab "grep '^#' machine.h > clisp3.h"
  2122.   echotab "sed -e '/#include \"unixconf.h\"/r clisp2.h' -e '/#include \"unixconf.h\"/d' -e '/#include \"machine.h\"/r clisp3.h' -e '/#include \"machine.h\"/d' < clisp1.h > clisp.h"
  2123.   echotab "\$(RM) clisp1.h clisp2.h clisp3.h"
  2124.   echo
  2125.   echo
  2126.   echo "makevars :"
  2127.   echotab "(echo 'CC='\"'\"'\$(CC)'\"'\" ; echo 'CFLAGS='\"'\"'\$(CFLAGS)'\"'\" ; echo 'CLFLAGS='\"'\"'\$(CLFLAGS)'\"'\" ; echo 'LIBS='\"'\"'\$(LIBS)'\"'\" ; echo 'X_LIBS='\"'\"'\$(X_LIBS)'\"'\" ; echo 'RANLIB='\"'\"'\$(RANLIB)'\"'\" ; echo 'FILES='\"'\"'lisp.a libnoreadline.a libreadline.a'\"'\") > makevars"
  2128.   echo
  2129.   for f in clisp-link ; do
  2130.     echo "${f} : ${SRCDIR}${f}.in"
  2131.     echotab "sed -e 's/@with_dynamic_modules@/${with_dynamic_modules}/g' < ${SRCDIR}${f}.in > ${f}"
  2132.     echotab "chmod a+x ${f}"
  2133.     echo
  2134.   done
  2135.   for f in stdwin-link1.sh stdwin-link2.sh ; do
  2136.     if [ -n "${SRCDIR}" ] ; then
  2137.       echo "${f} : ${SRCDIR}${f}"
  2138.       echotab "-\$(LN) ${SRCDIR}${f} ${f}"
  2139.       echo
  2140.     fi
  2141.   done
  2142.   echo
  2143. fi
  2144. OBSOLETE=$OBSOLETE" genclisph${HEXE} clisp1.h clisp2.h clisp3.h"
  2145.  
  2146. if [ $TERMINAL = readline ] ; then
  2147.   manual_readline=' clreadline.3 readline.dvi'
  2148.   manualx_readline=' clreadline.man'
  2149. else
  2150.   manual_readline=''
  2151.   manualx_readline=''
  2152. fi
  2153. echo "manual : ANNOUNCE COPYRIGHT GNU-GPL SUMMARY NEWS README clisp.1 clisp.html impnotes.txt \$(TXTFILES)${manual_readline}"
  2154. echodummyrule manual
  2155. echo
  2156. echo "manualx : manual clisp.man${manualx_readline}"
  2157. echodummyrule manualx
  2158. echo
  2159.  
  2160. for f in ANNOUNCE COPYRIGHT GNU-GPL SUMMARY ; do
  2161.   echo "${f} : ${PARENT_}${f}"
  2162.   echotab "-\$(LN) ${PARENT_}${f} ${f}"
  2163.   echo
  2164. done
  2165.  
  2166. for f in NEWS ; do
  2167.   if [ -n "${SRCDIR}" ] ; then
  2168.     echo "${f} : ${SRCDIR}${f}"
  2169.     echotab "-\$(LN) ${SRCDIR}${f} ${f}"
  2170.     echo
  2171.   fi
  2172. done
  2173.  
  2174. for f in $TXT_FILES ; do
  2175.   echo "${f} : ${SRCDIR}_${f}${TXT_INCLUDES} txt2c${HEXE} ${DEELIF}"
  2176.   echotab "\$(TXT2C) < ${SRCDIR}_${f}${DEELIF_FILTER} > txt.c"
  2177.   if [ $CROSS = false -a $XCC_UNUSABLE_CPP = true ] ; then
  2178.     echotab "${XCPP} ${XCFLAGS} txt.c > txt.i.c"
  2179.     echotab_to_HEXE "${XCC} ${XCFLAGS}${XCC_NOOPTFLAGS} txt.i.c" "txt"
  2180.     echotab "\$(RM) txt.i.c"
  2181.   else
  2182.     echotab_to_HEXE "\$(CC) \$(CFLAGS)${XCC_NOOPTFLAGS} txt.c" "txt"
  2183.   fi
  2184.   line="${HERE}txt"
  2185.   if [ $f = clisp.1 ] ; then
  2186.     if [ $HOS != dos -a $HOS != os2 ] ; then
  2187.       line=$line" | grep -v '^ *\$\$'"
  2188.     else
  2189.       # DOS command line args may not contain spaces. grep.in contains "^ *$"
  2190.       line=$line" | grep -v -f grep.in"
  2191.     fi
  2192.   fi
  2193.   echotab "${line} > ${f}"
  2194.   echotab "\$(RM) txt.c"
  2195.   echotab "\$(RM) txt${HEXE}"
  2196.   echo
  2197. done
  2198. OBSOLETE=$OBSOLETE" txt.c txt${HEXE}"
  2199. if [ $CROSS = false -a $XCC_UNUSABLE_CPP = true ] ; then
  2200.   OBSOLETE=$OBSOLETE" txt.i.c"
  2201. fi
  2202.  
  2203. if [ $TERMINAL = readline ] ; then
  2204.   echo "clreadline.3 : ${SRCDIR}readline${NEXT_}doc${NEXT_}clreadline.3"
  2205.   echotab "-\$(LN) ${SRCDIR}readline${NEXT_}doc${NEXT_}clreadline.3 clreadline.3"
  2206.   echo
  2207. fi
  2208.  
  2209. echo "clisp.man : clisp.1"
  2210. echotab "\$(ROFF_MAN) clisp.1 > clisp.man"
  2211. echo
  2212. echo "clisp.dvi : clisp.1"
  2213. echotab "\$(ROFF_DVI) clisp.1 > clisp.dvi"
  2214. echo
  2215.  
  2216. if [ $TERMINAL = readline ] ; then
  2217.   echo "clreadline.man : clreadline.3"
  2218.   echotab "\$(ROFF_MAN) clreadline.3 > clreadline.man"
  2219.   echo
  2220.   echo "clreadline.dvi : clreadline.3"
  2221.   echotab "\$(ROFF_DVI) clreadline.3 > clreadline.dvi"
  2222.   echo
  2223. fi
  2224.  
  2225. for f in $DOC ; do
  2226.   echo "${f}.txt : ${DOCDIR_}${f}.txt"
  2227.   echotab "-\$(LN) ${DOCDIR_}${f}.txt ${f}.txt"
  2228.   echo
  2229. done
  2230.  
  2231. if [ $TERMINAL = readline ] ; then
  2232.   echo "${SRCDIR}readline${NEXT_}doc${NEXT_}rluserman.dvi :"
  2233.   echotab "cd ${SRCDIR}readline${NEXT_}doc ; \$(MAKE) rluserman.dvi"
  2234.   echo
  2235.   echo "readline.dvi : ${SRCDIR}readline${NEXT_}doc${NEXT_}rluserman.dvi"
  2236.   echotab "-\$(LN) ${SRCDIR}readline${NEXT_}doc${NEXT_}rluserman.dvi readline.dvi"
  2237.   echo
  2238. fi
  2239.  
  2240. echo
  2241.  
  2242. if [ $CROSS = false ] ; then
  2243.   if [ $HOS = unix ] ; then
  2244.     echo "install : install-bin install-man"
  2245.     echodummyrule install
  2246.     echo
  2247.     echo "installdirs : force"
  2248.     echotab "if [ ! -d \$(libdir) ] ; then mkdir \$(libdir) ; fi"
  2249.     echotab "if [ ! -d \$(lisplibdir) ] ; then mkdir \$(lisplibdir) ; fi"
  2250.     echotab "if [ ! -d \$(bindir) ] ; then mkdir \$(bindir) ; fi"
  2251.     echotab "if [ ! -d \$(mandir) ] ; then mkdir \$(mandir) ; fi"
  2252.     echotab "if [ ! -d \$(mandir)/man1 ] ; then mkdir \$(mandir)/man1 ; fi"
  2253.     if [ $TERMINAL = readline ] ; then
  2254.       echotab "if [ ! -d \$(mandir)/man3 ] ; then mkdir \$(mandir)/man3 ; fi"
  2255.     fi
  2256.     echotab "if [ ! -d \$(mandir)/html ] ; then mkdir \$(mandir)/html ; fi"
  2257.     echo
  2258.     echo "install-bin : lisp${LEXE} compiled.mem force"
  2259.     echotab "if [ ! -d \$(libdir) ] ; then mkdir \$(libdir) ; fi"
  2260.     echotab "if [ ! -d \$(lisplibdir) ] ; then mkdir \$(lisplibdir) ; fi"
  2261.     echotab "\$(INSTALL_PROGRAM) lisp${LEXE} \$(lisplibdir)/lisp${LEXE}"
  2262.     echotab "strip \$(lisplibdir)/lisp${LEXE}"
  2263.     echotab "\$(RM) \$(lisplibdir)/lispinit.mem"
  2264.     echotab "\$(INSTALL_DATA) compiled.mem \$(lisplibdir)/lispinit.mem"
  2265.     echotab "if [ ! -d \$(bindir) ] ; then mkdir \$(bindir) ; fi"
  2266.     if test -n "${GOOD_SH}" ; then
  2267.       echotab "(echo '#!${GOOD_SH}' ; echo 'exec \$(lisplibdir)/lisp${LEXE} -M \$(lisplibdir)/lispinit.mem \"\$\$@\"') > \$(bindir)/clisp"
  2268.     else
  2269.       echotab "(echo '#!/bin/sh' ; echo 'if test \$\$# = 0; then' ; echo '  exec \$(lisplibdir)/lisp${LEXE} -M \$(lisplibdir)/lispinit.mem' ; echo 'else' ; echo '  exec \$(lisplibdir)/lisp${LEXE} -M \$(lisplibdir)/lispinit.mem \"\$\$@\"' ; echo 'fi') > \$(bindir)/clisp"
  2270.     fi
  2271.     echotab "chmod a+x \$(bindir)/clisp"
  2272.     echo
  2273.     if [ $TERMINAL = readline ] ; then
  2274.       echo "install-man : clisp.1 clisp.html clreadline.3 force"
  2275.     else
  2276.       echo "install-man : clisp.1 clisp.html force"
  2277.     fi
  2278.     echotab "if [ ! -d \$(mandir) ] ; then mkdir \$(mandir) ; fi"
  2279.     echotab "if [ ! -d \$(mandir)/man1 ] ; then mkdir \$(mandir)/man1 ; fi"
  2280.     echotab "\$(INSTALL_DATA) clisp.1 \$(mandir)/man1/clisp.1"
  2281.     if [ $TERMINAL = readline ] ; then
  2282.       echotab "if [ ! -d \$(mandir)/man3 ] ; then mkdir \$(mandir)/man3 ; fi"
  2283.       echotab "\$(INSTALL_DATA) clreadline.3 \$(mandir)/man3/clreadline.3"
  2284.     fi
  2285.     echotab "if [ ! -d \$(mandir)/html ] ; then mkdir \$(mandir)/html ; fi"
  2286.     echotab "\$(INSTALL_DATA) clisp.html \$(mandir)/html/clisp.html"
  2287.     echo
  2288.     echo
  2289.     echo "installcheck : ${TESTSDIR} force"
  2290.     echotab "cd ${TESTSDIR}; \$(MAKE) LISP=\"\$(bindir)/clisp\""
  2291.     echo
  2292.     echo
  2293.     echo "uninstall : uninstall-bin uninstall-man"
  2294.     echodummyrule uninstall
  2295.     echo
  2296.     echo "uninstall-bin : force"
  2297.     echotab "\$(RM) \$(lisplibdir)/lisp${LEXE}"
  2298.     echotab "\$(RM) \$(lisplibdir)/lispinit.mem"
  2299.     echotab "\$(RM) \$(bindir)/clisp"
  2300.     echo
  2301.     echo "uninstall-man : force"
  2302.     echotab "\$(RM) \$(mandir)/man1/clisp.1"
  2303.     if [ $TERMINAL = readline ] ; then
  2304.       echotab "\$(RM) \$(mandir)/man3/clreadline.3"
  2305.     fi
  2306.     echotab "\$(RM) \$(mandir)/html/clisp.html"
  2307.     echo
  2308.     echo
  2309.   fi
  2310.   if [ $HOS = dos -o $HOS = os2 ] ; then
  2311.     echo "install : install-bin"
  2312.     echodummyrule install
  2313.     echo
  2314.     echo "installdirs : force"
  2315.     echotab "-mkdir \$(libdir)"
  2316.     echotab "-mkdir \$(lisplibdir)"
  2317.     echotab "-mkdir \$(bindir)"
  2318.     echo
  2319.     echo "install-bin : lisp${LEXE} compiled.mem force"
  2320.     echotab "-mkdir \$(libdir)"
  2321.     echotab "-mkdir \$(lisplibdir)"
  2322.     echotab "\$(INSTALL_PROGRAM) lisp${LEXE} \$(lisplibdir)\lisp${LEXE}"
  2323.     echotab "\$(INSTALL_DATA) compiled.mem \$(lisplibdir)\lispinit.mem"
  2324.     echotab "-mkdir \$(bindir)"
  2325.     if [ $HOS = dos ] ; then
  2326.       echotab "echo \$(lisplibdir)\lisp${LEXE} -M \$(lisplibdir)\lispinit.mem %1 %2 %3 %4 %5 %6 %7 %8 %9 > \$(bindir)\clisp.bat"
  2327.     fi
  2328.     if [ $HOS = os2 ] ; then
  2329.       echotab "echo \$(lisplibdir)\lisp${LEXE} -M \$(lisplibdir)\lispinit.mem %1 %2 %3 %4 %5 %6 %7 %8 %9 > \$(bindir)\clisp.cmd"
  2330.     fi
  2331.     echo
  2332.     echo "uninstall : uninstall-bin"
  2333.     echodummyrule uninstall
  2334.     echo
  2335.     echo "uninstall-bin : force"
  2336.     echotab "\$(RM) \$(lisplibdir)/lisp${LEXE}"
  2337.     echotab "\$(RM) \$(lisplibdir)/lispinit.mem"
  2338.     if [ $HOS = dos ] ; then
  2339.       echotab "\$(RM) \$(bindir)/clisp.bat"
  2340.     fi
  2341.     if [ $HOS = os2 ] ; then
  2342.       echotab "\$(RM) \$(bindir)/clisp.cmd"
  2343.     fi
  2344.     echo
  2345.   fi
  2346. fi
  2347.  
  2348. if [ $HOS = unix ] ; then
  2349. cat <<!!
  2350. # Choose one of the packers:
  2351.  
  2352. # Standard Unix packer. Compress afterwards.
  2353. #PACK = tar
  2354. #PACKOPT = -cvf
  2355. #PACKEXT = .tar
  2356.  
  2357. # GNU tar together with compress.
  2358. #PACK = tar
  2359. #PACKOPT = cvfhz
  2360. #PACKEXT = .tar.Z
  2361.  
  2362. # GNU tar together with GNU gzip. Excellent performance.
  2363. PACK = tar
  2364. PACKOPT = cvfhz
  2365. PACKEXT = .tar.z
  2366.  
  2367. # Popular Amiga packer. Good performance.
  2368. #PACK = lha
  2369. #PACKOPT = a
  2370. #PACKEXT = .lzh
  2371.  
  2372. # Popular DOS packer.
  2373. #PACK = zip
  2374. #PACKOPT = -r
  2375. #PACKEXT = .zip
  2376.  
  2377. # Popular Atari packer.
  2378. #PACK = zoo
  2379. #PACKOPT = -add
  2380. #PACKEXT = .zoo
  2381.  
  2382. !!
  2383. echo "# The distribution's top directory"
  2384. if test -f "${SRCDIR}VERSION"; then
  2385.   echo "TOPDIR=clisp-`cat ${SRCDIR}VERSION`"
  2386. else
  2387.   if test -f "src/VERSION"; then
  2388.     echo "TOPDIR=clisp-`cat src/VERSION`"
  2389. else
  2390.     echo "TOPDIR=clisp"
  2391.   fi
  2392. fi
  2393. echo
  2394. if test -z "$BINARY_DISTRIB"; then
  2395.   needs='all lisp.a manualx distmakefile libnoreadline.a libreadline.a clisp-link modules.d modules.c module.cc clisp.h modules.h makevars'
  2396.   if test -n "$with_module_stdwin"; then
  2397.     stdwin_needs=''
  2398.     if test -n "$with_dynamic_modules"; then
  2399.       stdwin_needs=$stdwin_needs' stdwin_module.o'
  2400.     fi
  2401.     stdwin_needs=$stdwin_needs' stdwin.o stdwin/libstdwin.a'
  2402.     needs=$needs''$stdwin_needs' stdwin-link1.sh stdwin-link2.sh'
  2403.   fi
  2404.   echo "distrib : force $needs"
  2405.   echotab "\$(RM) /tmp/clisp\$(PACKEXT)"
  2406.   echotab "mkdir \$(TOPDIR)"
  2407.   echotab "ln ANNOUNCE COPYRIGHT GNU-GPL SUMMARY NEWS README \$(TOPDIR)"
  2408.   echotab "ln distmakefile \$(TOPDIR)/Makefile"
  2409.   echotab "mkdir \$(TOPDIR)/base"
  2410.   echotab "ln lisp.a libnoreadline.a libreadline.a modules.h makevars \$(TOPDIR)/base"
  2411.   echotab "ln compiled.mem \$(TOPDIR)/base/lispinit.mem"
  2412.   echotab "mkdir \$(TOPDIR)/doc"
  2413.   echotab "ln clisp.1 clisp.man clisp.html impnotes.txt \$(TXTFILES)${manual_readline}${manualx_readline} \$(TOPDIR)/doc"
  2414.   echotab "mkdir \$(TOPDIR)/src"
  2415.   echotab "ln \$(LSPFILES) \$(FASFILES) \$(TOPDIR)/src"
  2416.   echotab "mkdir \$(TOPDIR)/linkkit"
  2417.   echotab "ln clisp-link modules.d modules.c module.cc clisp.h \$(TOPDIR)/linkkit"
  2418.   if test -n "$with_module_stdwin"; then
  2419.     echotab "mkdir \$(TOPDIR)/stdwin"
  2420.     echotab "ln${stdwin_needs} stdwin1.lsp stdwin2.lsp \$(TOPDIR)/stdwin"
  2421.     echotab "ln stdwin-link1.sh \$(TOPDIR)/stdwin/link1.sh"
  2422.     echotab "ln stdwin-link2.sh \$(TOPDIR)/stdwin/link2.sh"
  2423.   fi
  2424.   if test -n "$with_module_queens"; then
  2425.     echotab "mkdir \$(TOPDIR)/queens"
  2426.     echotab "ln queens/* \$(TOPDIR)/queens"
  2427.   fi
  2428.   echotab "chmod -R a+rX \$(TOPDIR)"
  2429.   echotab "\$(PACK) \$(PACKOPT) /tmp/clisp\$(PACKEXT) \$(TOPDIR)"
  2430.   echotab "\$(RM) -rf \$(TOPDIR)"
  2431.   echo
  2432. else
  2433.   echo "distrib : force all manualx distmakefile"
  2434.   echotab "\$(RM) /tmp/clisp\$(PACKEXT)"
  2435.   echotab "mkdir \$(TOPDIR)"
  2436.   echotab "ln ANNOUNCE COPYRIGHT GNU-GPL SUMMARY NEWS README \$(TOPDIR)"
  2437.   echotab "ln distmakefile \$(TOPDIR)/Makefile"
  2438.   echotab "mkdir \$(TOPDIR)/base"
  2439.   echotab "cp lisp.run \$(TOPDIR)/base/lisp.run"
  2440.   echotab "strip \$(TOPDIR)/base/lisp.run"
  2441.   echotab "chmod a+x \$(TOPDIR)/base/lisp.run"
  2442.   echotab "ln compiled.mem \$(TOPDIR)/base/lispinit.mem"
  2443.   echotab "mkdir \$(TOPDIR)/doc"
  2444.   echotab "ln clisp.1 clisp.man clisp.html impnotes.txt \$(TXTFILES)${manual_readline}${manualx_readline} \$(TOPDIR)/doc"
  2445.   echotab "mkdir \$(TOPDIR)/src"
  2446.   echotab "ln \$(LSPFILES) \$(FASFILES) \$(TOPDIR)/src"
  2447.   echotab "chmod -R a+rX \$(TOPDIR)"
  2448.   echotab "\$(PACK) \$(PACKOPT) /tmp/clisp\$(PACKEXT) \$(TOPDIR)"
  2449.   echotab "\$(RM) -rf \$(TOPDIR)"
  2450.   echo
  2451. fi
  2452. echo
  2453. fi
  2454.  
  2455. cat <<!!
  2456. # clean0 is harmless: removes only superfluous things: temporary files.
  2457. clean0 : force
  2458.     -\$(RM) core${OBSOLETE}
  2459.  
  2460. # clean1 removes everything that becomes obsolete once lisp${LEXE} is recompiled
  2461. # without changing the bytecode format and the tables in
  2462. # constobj.d, constpack.d, constsym.d, subr.d, fsubr.d, pseudofun.d.
  2463. clean1 : clean0
  2464.     -\$(RM) lispbibl.h clisp.h *.i *.s *${TOBJ} *.a lisp${LEXE} ${TESTDIR}${NEXT}* ${TESTSDIR}${NEXT}*
  2465.     -rmdir ${TESTDIR}
  2466.     -rmdir ${TESTSDIR}
  2467.     -\$(RM) README clisp.1 clisp.html impnotes.txt \$(TXTFILES) clreadline.3 readline.dvi
  2468.  
  2469. # clean2 removes everything that becomes obsolete once lisp${LEXE} is recompiled
  2470. # without changing the bytecode format.
  2471. clean2 : clean1
  2472.     -\$(RM) interpreted.mem halfcompiled.mem compiled.mem compiled2.mem
  2473.  
  2474. # clean3 removes everything that becomes obsolete once lisp${LEXE} is recompiled.
  2475. # It leaves everything generated by "make allc".
  2476. clean3 : clean2
  2477.     -\$(RM) \$(FASFILES) *.lib
  2478.  
  2479. # clean4 removes everything that becomes obsolete
  2480. # when switching to a new version of the C compiler.
  2481. # It leaves everything generated by "make init".
  2482. clean4 : clean3
  2483.     -\$(RM) \$(CFILES)
  2484.  
  2485. # clean5 even undoes "make init".
  2486. !!
  2487. echo "clean5 : clean4"
  2488. if [ -n "${SRCDIR}" ] ; then
  2489.   echotab "-\$(RM) \$(DFILES) modules.h \$(LSPFILES) COPYRIGHT"
  2490. else
  2491.   echotab "-\$(RM) config.lsp"
  2492. fi
  2493. echotab "-\$(RM) comment5${HEXE} ansidecl${HEXE} ccpaux${HEXE} deelif${HEXE} deerror${HEXE} dedefined${HEXE} traddecl${HEXE} deema${HEXE} mergestrings${HEXE} txt2c${HEXE}"
  2494. echo
  2495. cat <<!!
  2496. # clean6 lets us go back to "makemake > makefile".
  2497. clean6 : clean5
  2498.     -\$(RM) makefile
  2499.  
  2500. # clean7 lets us go back to the main "configure".
  2501. clean7 : clean6
  2502.     -\$(RM) config.status config.log config.cache machine.h unixconf.h makemake
  2503.     -\$(RM) readline.tar.Z
  2504. !!
  2505. if [ $TERMINAL = readline ] ; then
  2506. cat <<!!
  2507.     cd ${READLINEDIR} && \$(MAKE) clean
  2508. !!
  2509. fi
  2510. cat <<!!
  2511.  
  2512. # clean8 moreover cleans up the SRCDIR.
  2513. clean8 : clean7
  2514.     -\$(RM) ${SRCDIR}lisparit0.d
  2515.  
  2516. # The normal "start over" command:
  2517. mostlyclean : clean4
  2518.  
  2519. # Clear all files that are built by "make ...":
  2520. clean : clean5
  2521.  
  2522. # Make "clear for distribution":
  2523. distclean : clean7
  2524.  
  2525. # Remove everything that can be generated otherwise:
  2526. realclean : clean8
  2527.  
  2528. !!
  2529.  
  2530. echo
  2531.  
  2532. echo "force:"
  2533. echodummyrule force
  2534.  
  2535. echo
  2536.  
  2537.